void VCSlider::slotInputValueChanged(quint32 universe, quint32 channel, uchar value) { /* Don't let input data thru in design mode */ if (mode() == Doc::Design) return; if (inputSource() == QLCInputSource(universe, channel)) { if (isButton(universe, channel) == true) { // Check value here so that value == 0 won't end up in the else branch if (value > 0) slotTapButtonClicked(); } else { /* Scale from input value range to this slider's range */ float val; val = SCALE((float) value, (float) 0, (float) UCHAR_MAX, (float) m_slider->minimum(), (float) m_slider->maximum()); if (m_slider->invertedAppearance() == true) m_slider->setValue(m_slider->maximum() - (int) val); else m_slider->setValue((int) val); } } }
VCDockSlider::VCDockSlider(QWidget* parent, t_bus_id bus) : QFrame(parent) { m_updateOnly = false; m_busLowLimit = 0; m_busHighLimit = 5; setupUi(this); layout()->setMargin(0); setBusID(bus); setFrameStyle(QFrame::StyledPanel | QFrame::Sunken); // Receive bus name change signals connect(Bus::emitter(), SIGNAL(nameChanged(t_bus_id, const QString&)), this, SLOT(slotBusNameChanged(t_bus_id, const QString&))); // Receive bus value change signals connect(Bus::emitter(), SIGNAL(valueChanged(t_bus_id, t_bus_value)), this, SLOT(slotBusValueChanged(t_bus_id, t_bus_value))); /* Slider dragging */ connect(m_slider, SIGNAL(valueChanged(int)), this, SLOT(slotSliderValueChanged(int))); /* Tap button clicks */ connect(m_tapButton, SIGNAL(clicked()), this, SLOT(slotTapButtonClicked())); m_time.start(); }
void VCSlider::init() { setCaption(""); /* Main VBox */ m_vbox = new QVBoxLayout(this); m_vbox->setMargin(10); m_vbox->setSpacing(10); /* Top label */ m_topLabel = new QLabel(this); m_vbox->addWidget(m_topLabel); m_topLabel->setAlignment(AlignCenter); /* Slider & its HBox */ m_hbox = new QHBoxLayout(m_vbox); m_hbox->insertSpacing(-1, 10); m_slider = new QSlider(this); m_hbox->addWidget(m_slider); m_slider->setRange(KDefaultBusLowLimit * KFrequency, KDefaultBusHighLimit * KFrequency); m_slider->setPageStep(1); connect(m_slider, SIGNAL(sliderPressed()), this, SLOT(slotSliderPressed())); connect(m_slider, SIGNAL(valueChanged(int)), this, SLOT(slotSliderValueChanged(int))); connect(m_slider, SIGNAL(sliderReleased()), this, SLOT(slotSliderReleased())); m_hbox->insertSpacing(-1, 10); /* Tap button */ m_tapButton = new QPushButton(this); m_vbox->addWidget(m_tapButton); connect(m_tapButton, SIGNAL(clicked()), this, SLOT(slotTapButtonClicked())); m_time = new QTime(); /* Bottom label */ m_bottomLabel = new QLabel(this); m_vbox->addWidget(m_bottomLabel); m_bottomLabel->setAlignment(AlignCenter); m_bottomLabel->hide(); resize(QPoint(60, 220)); /* Initialize to bus mode by default */ setBus(KBusIDDefaultFade); setSliderMode(Bus); setSliderValue(0); slotSliderValueChanged(0); /* Update the slider according to current mode */ slotModeChanged(_app->mode()); }
int VCSlider::qt_metacall(QMetaObject::Call _c, int _id, void **_a) { _id = VCWidget::qt_metacall(_c, _id, _a); if (_id < 0) return _id; if (_c == QMetaObject::InvokeMetaMethod) { switch (_id) { case 0: slotModeChanged((*reinterpret_cast< Doc::Mode(*)>(_a[1]))); break; case 1: slotBusValueChanged((*reinterpret_cast< quint32(*)>(_a[1])),(*reinterpret_cast< quint32(*)>(_a[2]))); break; case 2: slotBusNameChanged((*reinterpret_cast< quint32(*)>(_a[1])),(*reinterpret_cast< const QString(*)>(_a[2]))); break; case 3: slotFixtureRemoved((*reinterpret_cast< t_fixture_id(*)>(_a[1]))); break; case 4: slotSliderMoved((*reinterpret_cast< int(*)>(_a[1]))); break; case 5: slotTapButtonClicked(); break; case 6: slotInputValueChanged((*reinterpret_cast< quint32(*)>(_a[1])),(*reinterpret_cast< quint32(*)>(_a[2])),(*reinterpret_cast< uchar(*)>(_a[3]))); break; default: ; } _id -= 7; } return _id; }
VCSlider::VCSlider(QWidget* parent, Doc* doc, OutputMap* outputMap, InputMap* inputMap, MasterTimer* masterTimer) : VCWidget(parent, doc, outputMap, inputMap, masterTimer) { /* Set the class name "VCSlider" as the object name as well */ setObjectName(VCSlider::staticMetaObject.className()); m_hbox = NULL; m_topLabel = NULL; m_slider = NULL; m_bottomLabel = NULL; m_tapButton = NULL; m_sliderMode = Bus; m_valueDisplayStyle = ExactValue; m_levelLowLimit = 0; m_levelHighLimit = UCHAR_MAX; m_bus = Bus::defaultFade(); m_busLowLimit = KDefaultBusLowLimit; m_busHighLimit = KDefaultBusHighLimit; m_levelValue = 0; m_levelValueChanged = false; m_playbackFunction = Function::invalidId(); m_playbackValue = 0; m_playbackValueChanged = false; m_time = NULL; setCaption(QString()); setFrameStyle(KVCFrameStyleSunken); /* Main VBox */ new QVBoxLayout(this); /* Top label */ m_topLabel = new QLabel(this); layout()->addWidget(m_topLabel); m_topLabel->setAlignment(Qt::AlignHCenter); /* Slider's HBox |stretch|slider|stretch| */ m_hbox = new QHBoxLayout(); layout()->addItem(m_hbox); /* Put stretchable space before the slider (to its left side) */ m_hbox->addStretch(); /* The slider */ m_slider = new QSlider(this); m_slider->setStyle(App::saneStyle()); m_hbox->addWidget(m_slider); m_slider->setRange(KDefaultBusLowLimit * MasterTimer::frequency(), KDefaultBusHighLimit * MasterTimer::frequency()); m_slider->setPageStep(1); m_slider->setInvertedAppearance(false); connect(m_slider, SIGNAL(valueChanged(int)), this, SLOT(slotSliderMoved(int))); m_externalMovement = false; /* Put stretchable space after the slider (to its right side) */ m_hbox->addStretch(); /* Tap button */ m_tapButton = new QPushButton(this); layout()->addWidget(m_tapButton); connect(m_tapButton, SIGNAL(clicked()), this, SLOT(slotTapButtonClicked())); m_time = new QTime(); /* Bottom label */ m_bottomLabel = new QLabel(this); layout()->addWidget(m_bottomLabel); m_bottomLabel->setAlignment(Qt::AlignCenter); m_bottomLabel->hide(); setMinimumSize(VCSlider::defaultSize); resize(VCSlider::defaultSize); /* Initialize to bus mode by default */ setInvertedAppearance(true); setBus(Bus::defaultFade()); setSliderMode(Bus); /* Update the slider according to current mode */ slotModeChanged(mode()); /* Listen to fixture removals so that LevelChannels can be removed when they no longer point to an existing fixture->channel */ connect(m_doc, SIGNAL(fixtureRemoved(quint32)), this, SLOT(slotFixtureRemoved(quint32))); }
VCSlider::VCSlider(QWidget* parent) : VCWidget(parent) { /* Set the class name "VCSlider" as the object name as well */ setObjectName(VCSlider::staticMetaObject.className()); m_hbox = NULL; m_topLabel = NULL; m_slider = NULL; m_bottomLabel = NULL; m_tapButton = NULL; m_sliderMode = Bus; m_valueDisplayStyle = ExactValue; m_levelLowLimit = 0; m_levelHighLimit = 255; m_bus = Bus::defaultFade(); m_busLowLimit = KDefaultBusLowLimit; m_busHighLimit = KDefaultBusHighLimit; m_sliderValue = 0; m_time = NULL; setCaption(QString::null); setFrameStyle(KVCFrameStyleSunken); /* Main VBox */ new QVBoxLayout(this); /* Top label */ m_topLabel = new QLabel(this); layout()->addWidget(m_topLabel); m_topLabel->setAlignment(Qt::AlignHCenter); /* Slider's HBox |stretch|slider|stretch| */ m_hbox = new QHBoxLayout(); layout()->addItem(m_hbox); /* Put stretchable space before the slider (to its left side) */ m_hbox->addStretch(); /* The slider */ m_slider = new QSlider(this); m_slider->setStyle(App::saneStyle()); m_hbox->addWidget(m_slider); m_slider->setRange(KDefaultBusLowLimit * KFrequency, KDefaultBusHighLimit * KFrequency); m_slider->setPageStep(1); m_slider->setInvertedAppearance(false); connect(m_slider, SIGNAL(valueChanged(int)), this, SLOT(slotSliderMoved(int))); /* Put stretchable space after the slider (to its right side) */ m_hbox->addStretch(); /* Tap button */ m_tapButton = new QPushButton(this); layout()->addWidget(m_tapButton); connect(m_tapButton, SIGNAL(clicked()), this, SLOT(slotTapButtonClicked())); m_time = new QTime(); /* Bottom label */ m_bottomLabel = new QLabel(this); layout()->addWidget(m_bottomLabel); m_bottomLabel->setAlignment(Qt::AlignCenter); m_bottomLabel->hide(); resize(QPoint(60, 220)); /* Initialize to bus mode by default */ setBus(Bus::defaultFade()); setSliderMode(Bus); setSliderValue(0); slotSliderMoved(0); setInvertedAppearance(true); /* Update the slider according to current mode */ slotModeChanged(_app->mode()); }
VCSlider::VCSlider(QWidget* parent, Doc* doc) : VCWidget(parent, doc) { /* Set the class name "VCSlider" as the object name as well */ setObjectName(VCSlider::staticMetaObject.className()); m_hbox = NULL; m_topLabel = NULL; m_slider = NULL; m_knob = NULL; m_bottomLabel = NULL; m_tapButton = NULL; m_valueDisplayStyle = ExactValue; m_levelLowLimit = 0; m_levelHighLimit = UCHAR_MAX; m_levelValue = 0; m_levelValueChanged = false; m_playbackFunction = Function::invalidId(); m_playbackValue = 0; m_playbackValueChanged = false; m_time = NULL; m_widgetMode = WSlider; setType(VCWidget::SliderWidget); setCaption(QString()); setFrameStyle(KVCFrameStyleSunken); /* Main VBox */ new QVBoxLayout(this); /* Top label */ m_topLabel = new QLabel(this); m_topLabel->setAlignment(Qt::AlignHCenter); layout()->addWidget(m_topLabel); /* Slider's HBox |stretch|slider|stretch| */ m_hbox = new QHBoxLayout(); /* Put stretchable space before the slider (to its left side) */ m_hbox->addStretch(); /* The slider */ m_slider = new ClickAndGoSlider(this); m_hbox->addWidget(m_slider); m_slider->setRange(0, 255); m_slider->setPageStep(1); m_slider->setInvertedAppearance(false); m_slider->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Expanding); m_slider->setMinimumWidth(32); m_slider->setMaximumWidth(80); m_slider->setStyleSheet(sliderStyleSheet); connect(m_slider, SIGNAL(valueChanged(int)), this, SLOT(slotSliderMoved(int))); m_externalMovement = false; /* Put stretchable space after the slider (to its right side) */ m_hbox->addStretch(); layout()->addItem(m_hbox); /* Tap button */ m_tapButton = new QPushButton(this); layout()->addWidget(m_tapButton); connect(m_tapButton, SIGNAL(clicked()), this, SLOT(slotTapButtonClicked())); m_time = new QTime(); /* Click & Go button */ m_cngType = ClickAndGoWidget::None; m_cngButton = new QToolButton(this); m_cngButton->setFixedSize(48, 48); m_cngButton->setIconSize(QSize(42, 42)); m_menu = new QMenu(this); QWidgetAction* action = new QWidgetAction(this); m_cngWidget = new ClickAndGoWidget(); action->setDefaultWidget(m_cngWidget); m_menu->addAction(action); m_cngButton->setMenu(m_menu); m_cngButton->setPopupMode(QToolButton::InstantPopup); layout()->addWidget(m_cngButton); layout()->setAlignment(m_cngButton, Qt::AlignHCenter); m_cngButton->hide(); connect(m_cngWidget, SIGNAL(levelChanged(uchar)), this, SLOT(slotClickAndGoLevelChanged(uchar))); connect(m_cngWidget, SIGNAL(colorChanged(QRgb)), this, SLOT(slotClickAndGoColorChanged(QRgb))); connect(m_cngWidget, SIGNAL(levelAndPresetChanged(uchar,QImage)), this, SLOT(slotClickAndGoLevelAndPresetChanged(uchar, QImage))); /* Bottom label */ m_bottomLabel = new QLabel(this); layout()->addWidget(m_bottomLabel); m_bottomLabel->setAlignment(Qt::AlignCenter); m_bottomLabel->setWordWrap(true); m_bottomLabel->hide(); setMinimumSize(20, 20); QSettings settings; QVariant var = settings.value(SETTINGS_SLIDER_SIZE); if (var.isValid() == true) resize(var.toSize()); else resize(VCSlider::defaultSize); /* Initialize to playback mode by default */ setInvertedAppearance(false); setSliderMode(Playback); /* Update the slider according to current mode */ slotModeChanged(mode()); /* Listen to fixture removals so that LevelChannels can be removed when they no longer point to an existing fixture->channel */ connect(m_doc, SIGNAL(fixtureRemoved(quint32)), this, SLOT(slotFixtureRemoved(quint32))); }