lbajardsilogic@7
|
1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
|
lbajardsilogic@7
|
2
|
lbajardsilogic@7
|
3 /*
|
lbajardsilogic@7
|
4 Sound Access
|
lbajardsilogic@7
|
5 EASAIER client application.
|
lbajardsilogic@7
|
6 Silogic 2007. Benoit Rigolleau.
|
lbajardsilogic@7
|
7
|
lbajardsilogic@7
|
8 This program is free software; you can redistribute it and/or
|
lbajardsilogic@7
|
9 modify it under the terms of the GNU General Public License as
|
lbajardsilogic@7
|
10 published by the Free Software Foundation; either version 2 of the
|
lbajardsilogic@7
|
11 License, or (at your option) any later version. See the file
|
lbajardsilogic@7
|
12 COPYING included with this distribution for more information.
|
lbajardsilogic@7
|
13 */
|
lbajardsilogic@7
|
14
|
lbajardsilogic@7
|
15 #include <QSizePolicy>
|
lbajardsilogic@7
|
16 #include <QIcon>
|
lbajardsilogic@7
|
17
|
lbajardsilogic@7
|
18 #include "AdvancedToolBox.h"
|
lbajardsilogic@7
|
19
|
lbajardsilogic@7
|
20
|
lbajardsilogic@7
|
21 /** PrivateWidget implementation*************************/
|
lbajardsilogic@7
|
22
|
lbajardsilogic@7
|
23 PrivateWidget::PrivateWidget(QWidget *parent, const QString &text,QWidget *newWidget){
|
lbajardsilogic@7
|
24 m_closed=false;
|
lbajardsilogic@7
|
25 m_layout=0;
|
lbajardsilogic@7
|
26 m_button=0;
|
lbajardsilogic@7
|
27 if(newWidget!=0){
|
lbajardsilogic@7
|
28 addWidget(text,newWidget);
|
lbajardsilogic@7
|
29 }
|
lbajardsilogic@7
|
30 }
|
lbajardsilogic@7
|
31
|
lbajardsilogic@7
|
32 void PrivateWidget::addWidget( const QString &text,QWidget *newWidget ){
|
lbajardsilogic@7
|
33
|
lbajardsilogic@7
|
34 if (m_layout!=0){
|
lbajardsilogic@7
|
35 delete m_layout;
|
lbajardsilogic@7
|
36 }
|
lbajardsilogic@7
|
37 if (m_button!=0){
|
lbajardsilogic@7
|
38 delete m_button;
|
lbajardsilogic@7
|
39 }
|
lbajardsilogic@7
|
40
|
lbajardsilogic@7
|
41 m_layout = new QVBoxLayout;
|
lbajardsilogic@7
|
42 m_layout->setMargin(0);
|
lbajardsilogic@7
|
43 m_layout->setSpacing(0);
|
lbajardsilogic@7
|
44 m_button = new QPushButton(QIcon(), text);
|
lbajardsilogic@7
|
45 m_button->setMaximumHeight(m_btnHeight);
|
lbajardsilogic@7
|
46 m_button->setSizePolicy(QSizePolicy::Preferred,QSizePolicy::Fixed);
|
lbajardsilogic@7
|
47 m_layout->addWidget(m_button);
|
lbajardsilogic@7
|
48 m_layout->addWidget(newWidget);
|
lbajardsilogic@7
|
49 m_widget = newWidget;
|
lbajardsilogic@7
|
50 connect(m_button,SIGNAL(clicked()),this,SLOT(changeSate()));
|
lbajardsilogic@7
|
51
|
lbajardsilogic@7
|
52 this->setLayout(m_layout);
|
lbajardsilogic@7
|
53 refreshButtonIcone();
|
lbajardsilogic@7
|
54
|
lbajardsilogic@7
|
55 }
|
lbajardsilogic@7
|
56
|
lbajardsilogic@7
|
57 void PrivateWidget::refreshButtonIcone(){
|
lbajardsilogic@7
|
58 if(m_closed){
|
lbajardsilogic@7
|
59 m_button->setIcon(QIcon(":icons/right.png"));
|
lbajardsilogic@7
|
60 }else{
|
lbajardsilogic@7
|
61 m_button->setIcon(QIcon(":icons/bottom.png"));
|
lbajardsilogic@7
|
62 }
|
lbajardsilogic@7
|
63 }
|
lbajardsilogic@7
|
64
|
lbajardsilogic@7
|
65
|
lbajardsilogic@7
|
66 void PrivateWidget::changeSate(){
|
lbajardsilogic@7
|
67 if(&m_widget!=0 ){
|
lbajardsilogic@7
|
68 m_widget->setVisible(m_closed);
|
lbajardsilogic@7
|
69 if(!m_closed){
|
lbajardsilogic@7
|
70 this->setMaximumHeight(m_btnHeight);
|
lbajardsilogic@7
|
71 }
|
lbajardsilogic@7
|
72 else{
|
lbajardsilogic@7
|
73 this->setMaximumHeight(m_widget->maximumHeight() + m_button->maximumHeight());
|
lbajardsilogic@7
|
74 }
|
lbajardsilogic@7
|
75
|
lbajardsilogic@7
|
76 }
|
lbajardsilogic@7
|
77 m_closed = !m_closed;
|
lbajardsilogic@7
|
78 refreshButtonIcone();
|
lbajardsilogic@7
|
79 }
|
lbajardsilogic@7
|
80
|
lbajardsilogic@7
|
81 /* end PrivateWidget Implementation**********************/
|
lbajardsilogic@7
|
82
|
lbajardsilogic@7
|
83
|
lbajardsilogic@7
|
84
|
lbajardsilogic@7
|
85
|
lbajardsilogic@7
|
86
|
lbajardsilogic@7
|
87 AdvancedToolBox::AdvancedToolBox(QWidget *parent) : QWidget(parent){
|
lbajardsilogic@7
|
88 m_splitter = new QSplitter;
|
lbajardsilogic@7
|
89 m_splitter->setOrientation(Qt::Vertical);
|
lbajardsilogic@7
|
90
|
lbajardsilogic@7
|
91 QVBoxLayout *layout= new QVBoxLayout;
|
lbajardsilogic@7
|
92 layout->setMargin(0);
|
lbajardsilogic@7
|
93 layout->setSpacing(0);
|
lbajardsilogic@7
|
94 layout->addWidget(m_splitter);
|
lbajardsilogic@7
|
95 layout->addStretch();
|
lbajardsilogic@7
|
96 this->setLayout(layout);
|
lbajardsilogic@7
|
97 }
|
lbajardsilogic@7
|
98
|
lbajardsilogic@7
|
99 void AdvancedToolBox::addItem( const QString &text,QWidget *newItem ){
|
lbajardsilogic@7
|
100 m_splitter->addWidget(new PrivateWidget(this,text,newItem));
|
lbajardsilogic@7
|
101
|
lbajardsilogic@7
|
102 }
|
lbajardsilogic@7
|
103
|
lbajardsilogic@7
|
104 void AdvancedToolBox::insertItem ( int index, const QString &text,QWidget *newItem ){
|
lbajardsilogic@7
|
105 m_splitter->insertWidget(index,new PrivateWidget(this,text,newItem));
|
lbajardsilogic@7
|
106 }
|
lbajardsilogic@7
|
107
|
lbajardsilogic@7
|
108 void AdvancedToolBox::removeItem( int index ){
|
lbajardsilogic@7
|
109 delete m_splitter->widget(index);
|
lbajardsilogic@7
|
110 }
|
lbajardsilogic@7
|
111
|