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
|