annotate widgets/ExpandWidget.cpp @ 71:a1ce307bab17

update data.pro
author lbajardsilogic
date Wed, 13 Jun 2007 13:44:59 +0000
parents a5175615d153
children c5387d9e572a
rev   line source
lbajardsilogic@7 1
lbajardsilogic@7 2 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
lbajardsilogic@7 3
lbajardsilogic@7 4 /*
lbajardsilogic@7 5 Sound Access
lbajardsilogic@7 6 EASAIER client application.
lbajardsilogic@7 7 Silogic 2007. Benoit Rigolleau.
lbajardsilogic@7 8
lbajardsilogic@7 9 This program is free software; you can redistribute it and/or
lbajardsilogic@7 10 modify it under the terms of the GNU General Public License as
lbajardsilogic@7 11 published by the Free Software Foundation; either version 2 of the
lbajardsilogic@7 12 License, or (at your option) any later version. See the file
lbajardsilogic@7 13 COPYING included with this distribution for more information.
lbajardsilogic@7 14 */
lbajardsilogic@7 15
lbajardsilogic@7 16 #include <QSizePolicy>
lbajardsilogic@7 17 #include <QIcon>
lbajardsilogic@7 18
lbajardsilogic@7 19 #include "ExpandWidget.h"
lbajardsilogic@7 20
lbajardsilogic@7 21
lbajardsilogic@7 22
lbajardsilogic@7 23 ExpandWidget::ExpandWidget(QWidget *parent) : QSplitter(parent){
lbajardsilogic@7 24 m_paneClosed = 0;
lbajardsilogic@7 25 m_button = new QPushButton();
lbajardsilogic@7 26 m_button->setSizePolicy(QSizePolicy::Fixed,QSizePolicy::Fixed);
lbajardsilogic@7 27 m_paneClosed = false;
lbajardsilogic@7 28
lbajardsilogic@7 29 setWidgetLocation(ExpandWidget::Location_Left);
lbajardsilogic@7 30
lbajardsilogic@7 31 connect(m_button,SIGNAL(clicked()),this,SLOT(changePaneSate()));
lbajardsilogic@7 32 }
lbajardsilogic@7 33
lbajardsilogic@7 34 void ExpandWidget::refreshButtonIcone(){
lbajardsilogic@7 35 switch(m_widgetLocation){
lbajardsilogic@7 36 case ExpandWidget::Location_Bottom:
lbajardsilogic@7 37 if(m_paneClosed){
lbajardsilogic@7 38 m_button->setIcon(QIcon(":icons/top.png"));
lbajardsilogic@7 39 }else{
lbajardsilogic@7 40 m_button->setIcon(QIcon(":icons/bottom.png"));
lbajardsilogic@7 41 }
lbajardsilogic@7 42 break;
lbajardsilogic@7 43 case ExpandWidget::Location_Top:
lbajardsilogic@7 44 if(m_paneClosed){
lbajardsilogic@7 45 m_button->setIcon(QIcon(":icons/bottom.png"));
lbajardsilogic@7 46 }else{
lbajardsilogic@7 47 m_button->setIcon(QIcon(":icons/top.png"));
lbajardsilogic@7 48 }
lbajardsilogic@7 49 break;
lbajardsilogic@7 50 case ExpandWidget::Location_Left:
lbajardsilogic@7 51 if(m_paneClosed){
lbajardsilogic@7 52 m_button->setIcon(QIcon(":icons/right.png"));
lbajardsilogic@7 53 }else{
lbajardsilogic@7 54 m_button->setIcon(QIcon(":icons/left.png"));
lbajardsilogic@7 55 }
lbajardsilogic@7 56
lbajardsilogic@7 57 break;
lbajardsilogic@7 58 case ExpandWidget::Location_Right:
lbajardsilogic@7 59 default :
lbajardsilogic@7 60 if(m_paneClosed){
lbajardsilogic@7 61 m_button->setIcon(QIcon(":icons/left.png"));
lbajardsilogic@7 62 }else{
lbajardsilogic@7 63 m_button->setIcon(QIcon(":icons/right.png"));
lbajardsilogic@7 64 }
lbajardsilogic@7 65 break;
lbajardsilogic@7 66 }
lbajardsilogic@7 67 }
lbajardsilogic@7 68
lbajardsilogic@7 69
lbajardsilogic@7 70 void ExpandWidget::setWidgetLocation(ExpandWidget::Location newWidgetLocation){
lbajardsilogic@7 71
lbajardsilogic@7 72 m_widgetLocation = newWidgetLocation;
lbajardsilogic@7 73
lbajardsilogic@7 74 switch(m_widgetLocation){
lbajardsilogic@7 75 case ExpandWidget::Location_Bottom:
lbajardsilogic@7 76 case ExpandWidget::Location_Top:
lbajardsilogic@7 77 this->setOrientation(Qt::Vertical);
lbajardsilogic@7 78 m_button->setFixedSize(50,8);
lbajardsilogic@7 79 break;
lbajardsilogic@7 80 case ExpandWidget::Location_Left:
lbajardsilogic@7 81 case ExpandWidget::Location_Right:
lbajardsilogic@7 82 default :
lbajardsilogic@7 83 this->setOrientation(Qt::Horizontal);
lbajardsilogic@7 84 m_button->setFixedSize(8,50);
lbajardsilogic@7 85 break;
lbajardsilogic@7 86 }
lbajardsilogic@7 87 refreshButtonIcone();
lbajardsilogic@7 88 }
lbajardsilogic@7 89
lbajardsilogic@7 90 void ExpandWidget::setPanes(QWidget *newCenterPane, QWidget *newOtherPane){
lbajardsilogic@7 91
lbajardsilogic@7 92 m_centerPane = newCenterPane;
lbajardsilogic@7 93 m_otherPane = newOtherPane;
lbajardsilogic@7 94
lbajardsilogic@7 95
lbajardsilogic@7 96 newCenterPane->setParent(this);
lbajardsilogic@7 97 newOtherPane->setParent(this);
lbajardsilogic@7 98
lbajardsilogic@7 99 QWidget *widgetAux = new QWidget;
lbajardsilogic@7 100 QLayout *lay;
lbajardsilogic@7 101 // only to center the button
lbajardsilogic@7 102 QWidget *widgetForBtn = new QWidget;
lbajardsilogic@7 103 QHBoxLayout *layForBtn = new QHBoxLayout();
lbajardsilogic@7 104 layForBtn->setMargin(0);
lbajardsilogic@7 105 layForBtn->setSpacing(0);
lbajardsilogic@7 106 widgetForBtn->setMaximumHeight(8);
lbajardsilogic@7 107
lbajardsilogic@7 108
lbajardsilogic@7 109 switch(m_widgetLocation){
lbajardsilogic@7 110 case ExpandWidget::Location_Bottom:
lbajardsilogic@7 111 lay = new QVBoxLayout();
lbajardsilogic@7 112 lay->setMargin(0);
lbajardsilogic@7 113 lay->setSpacing(0);
lbajardsilogic@7 114 lay->addWidget(m_centerPane);
lbajardsilogic@7 115
lbajardsilogic@7 116 // this code is only to center the button.
lbajardsilogic@7 117 layForBtn->addStretch();
lbajardsilogic@7 118 layForBtn->addWidget(m_button);
lbajardsilogic@7 119 layForBtn->addStretch();
lbajardsilogic@7 120 widgetForBtn->setLayout(layForBtn);
lbajardsilogic@7 121 lay->addWidget(widgetForBtn);
lbajardsilogic@7 122
lbajardsilogic@7 123 widgetAux->setLayout(lay);
lbajardsilogic@7 124 this->addWidget(widgetAux);
lbajardsilogic@7 125 this->addWidget(m_otherPane);
lbajardsilogic@7 126 break;
lbajardsilogic@7 127 case ExpandWidget::Location_Top:
lbajardsilogic@7 128 lay = new QVBoxLayout();
lbajardsilogic@7 129 lay->setMargin(0);
lbajardsilogic@7 130 lay->setSpacing(0);
lbajardsilogic@7 131
lbajardsilogic@7 132 // this code is only for center the button.
lbajardsilogic@7 133 layForBtn->addStretch();
lbajardsilogic@7 134 layForBtn->addWidget(m_button);
lbajardsilogic@7 135 layForBtn->addStretch();
lbajardsilogic@7 136 widgetForBtn->setLayout(layForBtn);
lbajardsilogic@7 137
lbajardsilogic@7 138 lay->addWidget(widgetForBtn);
lbajardsilogic@7 139 lay->addWidget(m_centerPane);
lbajardsilogic@7 140 widgetAux->setLayout(lay);
lbajardsilogic@7 141 this->addWidget(m_otherPane);
lbajardsilogic@7 142 this->addWidget(widgetAux);
lbajardsilogic@7 143 break;
lbajardsilogic@7 144 case ExpandWidget::Location_Left:
lbajardsilogic@7 145 lay = new QHBoxLayout();
lbajardsilogic@7 146 lay->setMargin(0);
lbajardsilogic@7 147 lay->setSpacing(0);
lbajardsilogic@7 148 lay->addWidget(m_button);
lbajardsilogic@7 149 lay->addWidget(m_centerPane);
lbajardsilogic@7 150 widgetAux->setLayout(lay);
lbajardsilogic@7 151 this->addWidget(m_otherPane);
lbajardsilogic@7 152 this->addWidget(widgetAux);
lbajardsilogic@7 153 break;
lbajardsilogic@7 154 case ExpandWidget::Location_Right:
lbajardsilogic@7 155 default :
lbajardsilogic@7 156 lay = new QHBoxLayout();
lbajardsilogic@7 157 lay->setMargin(0);
lbajardsilogic@7 158 lay->setSpacing(0);
lbajardsilogic@7 159 lay->addWidget(m_centerPane);
lbajardsilogic@7 160 lay->addWidget(m_button);
lbajardsilogic@7 161 widgetAux->setLayout(lay);
lbajardsilogic@7 162 this->addWidget(widgetAux);
lbajardsilogic@7 163 this->addWidget(m_otherPane);
lbajardsilogic@7 164 break;
lbajardsilogic@7 165 }
lbajardsilogic@7 166 }
lbajardsilogic@7 167
lbajardsilogic@7 168
lbajardsilogic@7 169 void ExpandWidget::changePaneSate(){
lbajardsilogic@7 170 if(&m_paneClosed!=0 ){
lbajardsilogic@7 171 m_otherPane->setVisible(m_paneClosed);
lbajardsilogic@7 172 }
lbajardsilogic@7 173 m_paneClosed = !m_paneClosed;
lbajardsilogic@7 174 refreshButtonIcone();
lbajardsilogic@7 175 }
lbajardsilogic@7 176
lbajardsilogic@7 177