annotate widgets/AdvancedToolBox.cpp @ 282:d9319859a4cf tip

(none)
author benoitrigolleau
date Fri, 31 Oct 2008 11:00:24 +0000
parents 685e31447355
children
rev   line source
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