benoitrigolleau@56: benoitrigolleau@56: /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */ benoitrigolleau@56: benoitrigolleau@56: /* benoitrigolleau@56: Sound Access benoitrigolleau@56: EASAIER client application. benoitrigolleau@56: Silogic 2007. Benoit Rigolleau. benoitrigolleau@56: benoitrigolleau@56: This program is free software; you can redistribute it and/or benoitrigolleau@56: modify it under the terms of the GNU General Public License as benoitrigolleau@56: published by the Free Software Foundation; either version 2 of the benoitrigolleau@56: License, or (at your option) any later version. See the file benoitrigolleau@56: COPYING included with this distribution for more information. benoitrigolleau@56: */ benoitrigolleau@56: benoitrigolleau@56: #include "ItemLayerList.h" benoitrigolleau@56: benoitrigolleau@56: #include "data/model/LayerItemModel.h" benoitrigolleau@58: #include "layer/Layer.h" benoitrigolleau@58: #include "base/PlayParameters.h" benoitrigolleau@56: benoitrigolleau@56: #include benoitrigolleau@56: benoitrigolleau@56: #include benoitrigolleau@56: #include benoitrigolleau@56: benoitrigolleau@58: benoitrigolleau@56: ItemLayerList::ItemLayerList(QWidget *parent) : GenericItemList(parent){ benoitrigolleau@56: setAcceptDrops(true); benoitrigolleau@56: benoitrigolleau@56: /* Init all variables*/ benoitrigolleau@58: m_labelIcon = new QLabel; benoitrigolleau@58: m_labelName = new QLabel; benoitrigolleau@58: m_checkBoxShow = new QCheckBox; benoitrigolleau@58: m_checkBoxPlay = new QCheckBox; benoitrigolleau@58: m_layoutMain = new QHBoxLayout; benoitrigolleau@133: benoitrigolleau@56: benoitrigolleau@56: /* set the correct widget parameters*/ benoitrigolleau@58: m_labelIcon->setMaximumSize(25,25); benoitrigolleau@56: //labelIcon->setPixmap(QIcon(":icons/layerViewer_btn_config.png").pixmap(20)); benoitrigolleau@56: benoitrigolleau@58: m_labelName->setMaximumHeight(25); benoitrigolleau@56: //labelName->setText("ljdh lksdf hl"); benoitrigolleau@56: benoitrigolleau@58: m_checkBoxShow->setLayoutDirection(Qt::RightToLeft); benoitrigolleau@58: m_checkBoxShow->setMaximumSize(30,30); benoitrigolleau@56: //checkBox1->setText(""); benoitrigolleau@58: m_checkBoxShow->setAutoFillBackground(true); benoitrigolleau@60: QPalette palette; benoitrigolleau@60: palette.setColor(QPalette::Button,palette.color(QPalette::Background)); benoitrigolleau@60: m_checkBoxShow->setPalette(palette); benoitrigolleau@56: benoitrigolleau@58: m_checkBoxPlay->setMaximumSize(20,30); benoitrigolleau@56: benoitrigolleau@58: m_layoutMain->setSpacing(5); benoitrigolleau@58: m_layoutMain->setMargin(0); benoitrigolleau@56: benoitrigolleau@56: this->setMaximumHeight(30); benoitrigolleau@56: this->setMinimumHeight(30); benoitrigolleau@56: this->setFrameStyle(QFrame::Panel | QFrame::Raised); benoitrigolleau@56: this->setLineWidth(1); benoitrigolleau@56: benoitrigolleau@56: /* build the interface*/ benoitrigolleau@58: m_layoutMain->addWidget(m_checkBoxShow); benoitrigolleau@58: m_layoutMain->addWidget(m_checkBoxPlay); benoitrigolleau@58: m_layoutMain->addWidget(m_labelIcon); benoitrigolleau@58: m_layoutMain->addWidget(m_labelName); benoitrigolleau@56: benoitrigolleau@56: /*add the main layout in this widget*/ benoitrigolleau@58: this->setLayout(m_layoutMain); benoitrigolleau@56: benoitrigolleau@56: connect(this, SIGNAL(doubleClicked()), this, SLOT(openPropertyBox())); benoitrigolleau@56: } benoitrigolleau@56: benoitrigolleau@133: ItemLayerList::~ItemLayerList(){ benoitrigolleau@133: /*if(m_propertyBox){ benoitrigolleau@133: m_propertyBox->close(); benoitrigolleau@133: delete m_propertyBox; benoitrigolleau@133: }*/ benoitrigolleau@133: } benoitrigolleau@133: benoitrigolleau@56: void ItemLayerList::setIcon(QString &icon){ benoitrigolleau@58: m_labelIcon->setPixmap(QIcon(icon).pixmap(25)); benoitrigolleau@56: } benoitrigolleau@56: benoitrigolleau@56: void ItemLayerList::setName(QString &name){ benoitrigolleau@58: m_labelName->setText(name); benoitrigolleau@56: } benoitrigolleau@56: benoitrigolleau@56: void ItemLayerList::setColor(QColor &color){ benoitrigolleau@56: QPalette palette; benoitrigolleau@56: palette.setColor(QPalette::Button,color); benoitrigolleau@58: m_checkBoxShow->setPalette(palette); benoitrigolleau@56: } benoitrigolleau@56: benoitrigolleau@58: void ItemLayerList::changeCheckBoxShowState(bool state){ benoitrigolleau@58: m_checkBoxShow->setChecked(state); benoitrigolleau@56: } benoitrigolleau@56: benoitrigolleau@58: void ItemLayerList::changeCheckBoxPlayState(bool state){ benoitrigolleau@58: m_checkBoxPlay->setChecked(state); benoitrigolleau@56: } benoitrigolleau@56: benoitrigolleau@56: void ItemLayerList::setPropertyBox(PropertyBox *box){ benoitrigolleau@56: m_propertyBox = box; benoitrigolleau@57: if(m_propertyBox!=0){ benoitrigolleau@58: benoitrigolleau@58: m_container = m_propertyBox->container(); benoitrigolleau@58: benoitrigolleau@58: benoitrigolleau@58: updateCheckboxs(); benoitrigolleau@61: updateColor(); benoitrigolleau@58: connect(m_checkBoxShow,SIGNAL(stateChanged(int)),m_propertyBox,SLOT(layerVisibilityChanged(int))); benoitrigolleau@57: connect(m_propertyBox, SIGNAL(showLayer(bool)), this, SLOT(showLayer(bool))); benoitrigolleau@57: } benoitrigolleau@57: benoitrigolleau@57: //connect(); benoitrigolleau@56: } benoitrigolleau@56: benoitrigolleau@56: void ItemLayerList::configAction(){ benoitrigolleau@56: if(m_propertyBox!=0){ lbajardsilogic@183: m_propertyBox->showNormal(); benoitrigolleau@56: } benoitrigolleau@56: } benoitrigolleau@56: benoitrigolleau@56: benoitrigolleau@56: /*********SLOTS ************/ benoitrigolleau@56: void ItemLayerList::openPropertyBox(){ benoitrigolleau@56: ItemLayerList::configAction(); benoitrigolleau@56: } benoitrigolleau@56: benoitrigolleau@57: void ItemLayerList::showLayer(bool value){ benoitrigolleau@58: changeCheckBoxShowState(value); benoitrigolleau@57: } benoitrigolleau@56: benoitrigolleau@99: void ItemLayerList::playAudibleChanged(bool value){ benoitrigolleau@99: changeCheckBoxPlayState(value); benoitrigolleau@99: } benoitrigolleau@99: benoitrigolleau@99: benoitrigolleau@58: void ItemLayerList::updateCheckboxs(){ benoitrigolleau@58: Layer *layer = dynamic_cast(m_container); benoitrigolleau@58: if (layer) { benoitrigolleau@58: m_checkBoxShow->setEnabled(true); benoitrigolleau@58: m_checkBoxShow->setChecked(true); benoitrigolleau@58: benoitrigolleau@58: disconnect(layer, SIGNAL(modelReplaced()), benoitrigolleau@58: this, SLOT(updateCheckboxs())); benoitrigolleau@58: connect(layer, SIGNAL(modelReplaced()), benoitrigolleau@58: this, SLOT(updateCheckboxs())); benoitrigolleau@60: benoitrigolleau@60: disconnect(layer, SIGNAL(layerParametersChanged()), benoitrigolleau@60: this,SLOT(updateColor())); benoitrigolleau@60: connect(layer, SIGNAL(layerParametersChanged()), benoitrigolleau@60: this,SLOT(updateColor())); benoitrigolleau@60: benoitrigolleau@58: }else{ benoitrigolleau@58: m_checkBoxShow->setEnabled(false); benoitrigolleau@58: } benoitrigolleau@58: PlayParameters *params = m_container->getPlayParameters(); benoitrigolleau@56: benoitrigolleau@58: if(params){ benoitrigolleau@58: m_checkBoxPlay->setEnabled(true); benoitrigolleau@58: m_checkBoxPlay->setChecked(!params->isPlayMuted()); benoitrigolleau@58: benoitrigolleau@99: connect(params, SIGNAL(playAudibleChanged(bool)),this, SLOT(playAudibleChanged(bool))); benoitrigolleau@58: connect(m_checkBoxPlay, SIGNAL(stateChanged(int)),params, SLOT(setPlayAudible(int))); benoitrigolleau@58: }else{ benoitrigolleau@58: m_checkBoxPlay->setEnabled(false); benoitrigolleau@58: } benoitrigolleau@58: } benoitrigolleau@58: benoitrigolleau@60: void ItemLayerList::updateColor(){ benoitrigolleau@60: Layer *layer = dynamic_cast(m_container); benoitrigolleau@60: if (layer) { benoitrigolleau@60: QPalette palette; benoitrigolleau@61: palette.setColor(QPalette::Button,layer->getBaseColour()); benoitrigolleau@60: m_checkBoxShow->setPalette(palette); benoitrigolleau@60: } benoitrigolleau@60: } benoitrigolleau@58: benoitrigolleau@58: benoitrigolleau@58: benoitrigolleau@58: benoitrigolleau@58: benoitrigolleau@58: benoitrigolleau@60: