lbajardsilogic@83: /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */ lbajardsilogic@83: lbajardsilogic@83: /* Sound Access lbajardsilogic@83: EASAIER client application. lbajardsilogic@83: Silogic 2007. Laure Bajard. lbajardsilogic@83: lbajardsilogic@83: This program is free software; you can redistribute it and/or lbajardsilogic@83: modify it under the terms of the GNU General Public License as lbajardsilogic@83: published by the Free Software Foundation; either version 2 of the lbajardsilogic@83: License, or (at your option) any later version. See the file lbajardsilogic@83: COPYING included with this distribution for more information. lbajardsilogic@83: */ lbajardsilogic@83: lbajardsilogic@232: #include lbajardsilogic@232: lbajardsilogic@83: #include "Slider.h" lbajardsilogic@83: lbajardsilogic@232: Slider::Slider(QWidget *parent) : QWidget(parent) , lbajardsilogic@206: m_showTooltip(true) lbajardsilogic@206: { lbajardsilogic@232: QHBoxLayout *mainlayout = new QHBoxLayout(); lbajardsilogic@232: mainlayout->setMargin(0); lbajardsilogic@232: lbajardsilogic@232: m_slider = new QSlider(Qt::Horizontal); lbajardsilogic@232: lbajardsilogic@232: m_label = new QLabel; lbajardsilogic@232: connect(m_slider, SIGNAL(valueChanged(int)), m_label, SLOT(setNum(int))); lbajardsilogic@232: m_label->setNum(value()); lbajardsilogic@232: lbajardsilogic@232: mainlayout->addWidget(m_slider); lbajardsilogic@232: mainlayout->addWidget(m_label); lbajardsilogic@232: lbajardsilogic@232: setLayout(mainlayout); lbajardsilogic@232: lbajardsilogic@232: connect(m_slider, SIGNAL(valueChanged(int)), lbajardsilogic@206: this, SLOT(updateToolTip())); lbajardsilogic@232: lbajardsilogic@232: connect(m_slider, SIGNAL(valueChanged(int)), lbajardsilogic@232: this, SIGNAL(valueChanged(int))); lbajardsilogic@232: lbajardsilogic@206: } lbajardsilogic@206: lbajardsilogic@232: Slider::Slider(Qt::Orientation orientation, QWidget * parent) : QWidget(parent) , lbajardsilogic@206: m_showTooltip(true) lbajardsilogic@206: { lbajardsilogic@232: QGridLayout *mainlayout = new QGridLayout(); lbajardsilogic@232: mainlayout->setMargin(0); lbajardsilogic@232: lbajardsilogic@232: m_slider = new QSlider(orientation); lbajardsilogic@232: lbajardsilogic@232: m_label = new QLabel; lbajardsilogic@232: connect(m_slider, SIGNAL(valueChanged(int)), m_label, SLOT(setNum(int))); lbajardsilogic@232: m_label->setNum(value()); lbajardsilogic@232: lbajardsilogic@232: if (orientation == Qt::Horizontal) lbajardsilogic@232: { lbajardsilogic@232: mainlayout->addWidget(m_slider, 0, 0); lbajardsilogic@232: mainlayout->addWidget(m_label, 0, 1); lbajardsilogic@232: } else { lbajardsilogic@232: mainlayout->addWidget(m_slider, 0, 0); lbajardsilogic@232: mainlayout->addWidget(m_label, 1, 0); lbajardsilogic@232: } lbajardsilogic@232: lbajardsilogic@232: setLayout(mainlayout); lbajardsilogic@232: lbajardsilogic@232: connect(m_slider, SIGNAL(valueChanged(int)), lbajardsilogic@206: this, SLOT(updateToolTip())); lbajardsilogic@232: lbajardsilogic@232: connect(m_slider, SIGNAL(valueChanged(int)), lbajardsilogic@232: this, SIGNAL(valueChanged(int))); lbajardsilogic@232: } lbajardsilogic@232: lbajardsilogic@232: void Slider::setOrientation(Qt::Orientation or) lbajardsilogic@232: { lbajardsilogic@232: QLayout * cur_layout = layout(); lbajardsilogic@232: delete cur_layout; lbajardsilogic@232: lbajardsilogic@232: QGridLayout *mainlayout = new QGridLayout(); lbajardsilogic@232: mainlayout->setMargin(0); lbajardsilogic@232: lbajardsilogic@232: m_slider->setOrientation(or); lbajardsilogic@232: lbajardsilogic@232: if (or == Qt::Horizontal) lbajardsilogic@232: { lbajardsilogic@232: mainlayout->addWidget(m_slider, 0, 0); lbajardsilogic@232: mainlayout->addWidget(m_label, 0, 1); lbajardsilogic@232: } else { lbajardsilogic@232: mainlayout->addWidget(m_slider, 0, 0); lbajardsilogic@232: mainlayout->addWidget(m_label, 1, 0); lbajardsilogic@232: } lbajardsilogic@232: lbajardsilogic@232: this->setLayout(mainlayout); lbajardsilogic@232: lbajardsilogic@206: } lbajardsilogic@206: lbajardsilogic@83: Slider::~Slider() lbajardsilogic@83: { lbajardsilogic@83: } lbajardsilogic@83: lbajardsilogic@83: void lbajardsilogic@83: Slider::enterEvent(QEvent *e) lbajardsilogic@83: { lbajardsilogic@232: QWidget::enterEvent(e); lbajardsilogic@83: QPalette palette; lbajardsilogic@83: palette.setColor(QPalette::Button,palette.color(QPalette::Highlight)); lbajardsilogic@83: setPalette(palette); lbajardsilogic@83: emit mouseEntered(); lbajardsilogic@83: } lbajardsilogic@83: lbajardsilogic@83: void lbajardsilogic@83: Slider::leaveEvent(QEvent *e) lbajardsilogic@83: { lbajardsilogic@232: QWidget::enterEvent(e); lbajardsilogic@83: QPalette palette; lbajardsilogic@83: setPalette(palette); lbajardsilogic@83: emit mouseLeft(); lbajardsilogic@206: } lbajardsilogic@206: lbajardsilogic@206: void Slider::setShowToolTip(bool show) lbajardsilogic@206: { lbajardsilogic@206: m_showTooltip = show; lbajardsilogic@206: /*m_noMappedUpdate = true; lbajardsilogic@206: updateMappedValue(value()); lbajardsilogic@206: m_noMappedUpdate = false;*/ lbajardsilogic@206: updateToolTip(); lbajardsilogic@206: } lbajardsilogic@206: lbajardsilogic@206: void Slider::updateToolTip() lbajardsilogic@206: { lbajardsilogic@206: if (m_showTooltip) { lbajardsilogic@206: QString name = objectName(); lbajardsilogic@206: QString unit = ""; lbajardsilogic@206: QString text; lbajardsilogic@206: //if (m_rangeMapper) unit = m_rangeMapper->getUnit(); lbajardsilogic@206: if (name != "") { lbajardsilogic@206: text = tr("%1: %2%3").arg(name).arg(value()).arg(unit); lbajardsilogic@206: } else { lbajardsilogic@206: text = tr("%2%3").arg(value()).arg(unit); lbajardsilogic@206: } lbajardsilogic@206: setToolTip(text); lbajardsilogic@206: } benoitrigolleau@277: } benoitrigolleau@277: benoitrigolleau@277: void Slider::useLabel(bool val){ benoitrigolleau@277: if(val){ benoitrigolleau@277: connect(m_slider, SIGNAL(valueChanged(int)), m_label, SLOT(setNum(int))); benoitrigolleau@277: m_label->setVisible(true); benoitrigolleau@277: }else{ benoitrigolleau@277: disconnect(m_slider, SIGNAL(valueChanged(int)), m_label, SLOT(setNum(int))); benoitrigolleau@277: m_label->setVisible(false); benoitrigolleau@277: m_label->setText(""); benoitrigolleau@277: } lbajardsilogic@83: }