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);
|
benoitrigolleau@159
|
44 m_button = new RadialLNFButton(QIcon(), text);
|
lbajardsilogic@7
|
45 m_button->setMaximumHeight(m_btnHeight);
|
lbajardsilogic@7
|
46 m_button->setSizePolicy(QSizePolicy::Preferred,QSizePolicy::Fixed);
|
benoitrigolleau@88
|
47
|
benoitrigolleau@88
|
48 QPalette palette;
|
benoitrigolleau@88
|
49 palette.setColor(QPalette::Button, palette.color(QPalette::Button).dark(110)); //palette.color(QPalette::Highlight) palette.color(QPalette::Active, QPalette::Base).dark(110)
|
benoitrigolleau@88
|
50 m_button->setPalette(palette);
|
benoitrigolleau@88
|
51
|
lbajardsilogic@7
|
52 m_layout->addWidget(m_button);
|
lbajardsilogic@7
|
53 m_layout->addWidget(newWidget);
|
lbajardsilogic@7
|
54 m_widget = newWidget;
|
lbajardsilogic@7
|
55 connect(m_button,SIGNAL(clicked()),this,SLOT(changeSate()));
|
lbajardsilogic@7
|
56
|
lbajardsilogic@7
|
57 this->setLayout(m_layout);
|
lbajardsilogic@7
|
58 refreshButtonIcone();
|
lbajardsilogic@7
|
59
|
lbajardsilogic@7
|
60 }
|
lbajardsilogic@7
|
61
|
lbajardsilogic@7
|
62 void PrivateWidget::refreshButtonIcone(){
|
lbajardsilogic@7
|
63 if(m_closed){
|
lbajardsilogic@7
|
64 m_button->setIcon(QIcon(":icons/right.png"));
|
lbajardsilogic@7
|
65 }else{
|
lbajardsilogic@7
|
66 m_button->setIcon(QIcon(":icons/bottom.png"));
|
lbajardsilogic@7
|
67 }
|
lbajardsilogic@7
|
68 }
|
lbajardsilogic@7
|
69
|
lbajardsilogic@7
|
70
|
lbajardsilogic@7
|
71 void PrivateWidget::changeSate(){
|
lbajardsilogic@7
|
72 if(&m_widget!=0 ){
|
lbajardsilogic@7
|
73 m_widget->setVisible(m_closed);
|
lbajardsilogic@7
|
74 if(!m_closed){
|
lbajardsilogic@7
|
75 this->setMaximumHeight(m_btnHeight);
|
lbajardsilogic@7
|
76 }
|
lbajardsilogic@7
|
77 else{
|
lbajardsilogic@7
|
78 this->setMaximumHeight(m_widget->maximumHeight() + m_button->maximumHeight());
|
lbajardsilogic@7
|
79 }
|
lbajardsilogic@7
|
80
|
lbajardsilogic@7
|
81 }
|
lbajardsilogic@7
|
82 m_closed = !m_closed;
|
lbajardsilogic@7
|
83 refreshButtonIcone();
|
lbajardsilogic@7
|
84 }
|
lbajardsilogic@7
|
85
|
lbajardsilogic@7
|
86 /* end PrivateWidget Implementation**********************/
|
lbajardsilogic@7
|
87
|
lbajardsilogic@7
|
88
|
lbajardsilogic@7
|
89
|
lbajardsilogic@7
|
90
|
lbajardsilogic@7
|
91
|
lbajardsilogic@7
|
92 AdvancedToolBox::AdvancedToolBox(QWidget *parent) : QWidget(parent){
|
lbajardsilogic@7
|
93 m_splitter = new QSplitter;
|
lbajardsilogic@7
|
94 m_splitter->setOrientation(Qt::Vertical);
|
lbajardsilogic@7
|
95
|
lbajardsilogic@7
|
96 QVBoxLayout *layout= new QVBoxLayout;
|
lbajardsilogic@7
|
97 layout->setMargin(0);
|
lbajardsilogic@7
|
98 layout->setSpacing(0);
|
lbajardsilogic@7
|
99 layout->addWidget(m_splitter);
|
lbajardsilogic@7
|
100 layout->addStretch();
|
lbajardsilogic@7
|
101 this->setLayout(layout);
|
lbajardsilogic@7
|
102 }
|
lbajardsilogic@7
|
103
|
lbajardsilogic@7
|
104 void AdvancedToolBox::addItem( const QString &text,QWidget *newItem ){
|
lbajardsilogic@7
|
105 m_splitter->addWidget(new PrivateWidget(this,text,newItem));
|
lbajardsilogic@7
|
106
|
lbajardsilogic@7
|
107 }
|
lbajardsilogic@7
|
108
|
lbajardsilogic@7
|
109 void AdvancedToolBox::insertItem ( int index, const QString &text,QWidget *newItem ){
|
lbajardsilogic@7
|
110 m_splitter->insertWidget(index,new PrivateWidget(this,text,newItem));
|
lbajardsilogic@7
|
111 }
|
lbajardsilogic@7
|
112
|
lbajardsilogic@7
|
113 void AdvancedToolBox::removeItem( int index ){
|
lbajardsilogic@50
|
114 QWidget *w = m_splitter->widget(index);
|
lbajardsilogic@50
|
115 if (w)
|
lbajardsilogic@50
|
116 delete w;
|
lbajardsilogic@7
|
117 }
|
lbajardsilogic@7
|
118
|