VCSpeedDial::VCSpeedDial(QWidget* parent, Doc* doc) : VCWidget(parent, doc) , m_currentFactor(1) , m_resetFactorOnDialChange(false) , m_absoluteValueMin(0) , m_absoluteValueMax(1000 * 10) { setFrameStyle(KVCFrameStyleSunken); QVBoxLayout* vBox = new QVBoxLayout(this); vBox->setMargin(0); QHBoxLayout* speedDialHBox = new QHBoxLayout(); vBox->addLayout(speedDialHBox); m_dial = new SpeedDial(this); speedDialHBox->addWidget(m_dial); connect(m_dial, SIGNAL(valueChanged(int)), this, SLOT(slotDialValueChanged())); connect(m_dial, SIGNAL(tapped()), this, SLOT(slotDialTapped())); m_factoredValue = m_dial->value(); setType(VCWidget::SpeedDialWidget); setCaption(tr("Duration")); QSettings settings; QVariant var = settings.value(SETTINGS_SPEEDDIAL_SIZE); if (var.isValid() == true) resize(var.toSize()); else resize(VCSpeedDial::defaultSize); var = settings.value(SETTINGS_SPEEDDIAL_VALUE); if (var.isValid() == true) m_dial->setValue(var.toUInt()); // Multiplier, factor, divider and reset box QHBoxLayout* multFactorDivHBox = new QHBoxLayout(); m_divButton = new QToolButton(); m_divButton->setIconSize(QSize(32, 32)); m_divButton->setIcon(QIcon(":/back.png")); m_divButton->setToolTip(tr("Divide the current time by 2")); connect(m_divButton, SIGNAL(clicked()), this, SLOT(slotDiv())); multFactorDivHBox->addWidget(m_divButton, Qt::AlignVCenter | Qt::AlignLeft); QVBoxLayout* labelsVboxBox = new QVBoxLayout(); m_multDivLabel = new QLabel(); m_multDivLabel->setAlignment(Qt::AlignCenter); m_multDivLabel->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); labelsVboxBox->addWidget(m_multDivLabel, Qt::AlignVCenter | Qt::AlignLeft); m_multDivResultLabel = new QLabel(); m_multDivResultLabel->setAlignment(Qt::AlignCenter); m_multDivResultLabel->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); m_multDivResultLabel->setBackgroundRole(QPalette::BrightText); labelsVboxBox->addWidget(m_multDivResultLabel); multFactorDivHBox->addLayout(labelsVboxBox); m_multButton = new QToolButton(); m_multButton->setIconSize(QSize(32, 32)); m_multButton->setIcon(QIcon(":/forward.png")); m_multButton->setToolTip(tr("Multiply the current time by 2")); connect(m_multButton, SIGNAL(clicked()), this, SLOT(slotMult())); multFactorDivHBox->addWidget(m_multButton, Qt::AlignVCenter | Qt::AlignLeft); m_multDivResetButton = new QToolButton(); m_multDivResetButton->setIconSize(QSize(32, 32)); m_multDivResetButton->setIcon(QIcon(":/fileclose.png")); m_multDivResetButton->setToolTip(tr("Reset the current factor to 1x")); connect(m_multDivResetButton, SIGNAL(clicked()), this, SLOT(slotMultDivReset())); multFactorDivHBox->addWidget(m_multDivResetButton); vBox->addLayout(multFactorDivHBox); // Update labels slotMultDivChanged(); // Apply button m_applyButton = new QPushButton(); m_applyButton->setStyleSheet(presetBtnSS.arg("#DDDDDD")); m_applyButton->setText(tr("Apply")); m_applyButton->setToolTip(tr("Send the current value to the function now")); connect(m_applyButton, SIGNAL(clicked()), this, SLOT(slotFactoredValueChanged())); vBox->addWidget(m_applyButton); // Presets m_presetsLayout = new FlowLayout(3); vBox->addLayout(m_presetsLayout); // Don't show Infinite button: it's handled by presets setVisibilityMask(SpeedDial::defaultVisibilityMask() & ~SpeedDial::Infinite); /* Update timer */ m_updateTimer = new QTimer(this); connect(m_updateTimer, SIGNAL(timeout()), this, SLOT(slotUpdate())); m_updateTimer->setSingleShot(true); slotModeChanged(m_doc->mode()); setLiveEdit(m_liveEdit); }
void CSVRender::WorldspaceWidget::elementSelectionChanged() { setVisibilityMask (getVisibilityMask()); flagAsModified(); updateOverlay(); }
SpeedDial::SpeedDial(QWidget* parent) : QGroupBox(parent) , m_timer(new QTimer(this)) , m_dial(NULL) , m_hrs(NULL) , m_min(NULL) , m_sec(NULL) , m_ms(NULL) , m_focus(NULL) , m_previousDialValue(0) , m_preventSignals(false) , m_value(0) , m_tapTick(false) , m_tapTime(NULL) , m_tapTickTimer(NULL) , m_tapTickElapseTimer(NULL) , m_visibilityMask(DEFAULT_VISIBILITY_MASK) { new QVBoxLayout(this); layout()->setSpacing(0); layout()->setMargin(2); QHBoxLayout* topHBox = new QHBoxLayout(); QVBoxLayout* pmVBox1 = new QVBoxLayout(); QVBoxLayout* taVBox3 = new QVBoxLayout(); layout()->addItem(topHBox); m_plus = new QToolButton(this); m_plus->setIconSize(QSize(32, 32)); m_plus->setIcon(QIcon(":/edit_add.png")); pmVBox1->addWidget(m_plus, Qt::AlignVCenter | Qt::AlignLeft); connect(m_plus, SIGNAL(pressed()), this, SLOT(slotPlusMinus())); connect(m_plus, SIGNAL(released()), this, SLOT(slotPlusMinus())); m_minus = new QToolButton(this); m_minus->setIconSize(QSize(32, 32)); m_minus->setIcon(QIcon(":/edit_remove.png")); pmVBox1->addWidget(m_minus, Qt::AlignVCenter | Qt::AlignLeft); connect(m_minus, SIGNAL(pressed()), this, SLOT(slotPlusMinus())); connect(m_minus, SIGNAL(released()), this, SLOT(slotPlusMinus())); topHBox->addItem(pmVBox1); m_dial = new QDial(this); m_dial->setWrapping(true); m_dial->setNotchesVisible(true); m_dial->setNotchTarget(15); m_dial->setTracking(true); topHBox->addWidget(m_dial); connect(m_dial, SIGNAL(valueChanged(int)), this, SLOT(slotDialChanged(int))); m_tap = new QPushButton(tr("Tap"), this); m_tap->setStyleSheet(tapDefaultSS); m_tap->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Expanding); taVBox3->addWidget(m_tap); connect(m_tap, SIGNAL(clicked()), this, SLOT(slotTapClicked())); topHBox->addItem (taVBox3); QHBoxLayout* timeHBox = new QHBoxLayout(); layout()->addItem(timeHBox); m_hrs = new FocusSpinBox(this); m_hrs->setRange(0, HRS_MAX); m_hrs->setSuffix("h"); m_hrs->setButtonSymbols(QSpinBox::NoButtons); m_hrs->setToolTip(tr("Hours")); timeHBox->addWidget(m_hrs); connect(m_hrs, SIGNAL(valueChanged(int)), this, SLOT(slotHoursChanged())); connect(m_hrs, SIGNAL(focusGained()), this, SLOT(slotSpinFocusGained())); m_min = new FocusSpinBox(this); m_min->setRange(0, MIN_MAX); m_min->setSuffix("m"); m_min->setButtonSymbols(QSpinBox::NoButtons); m_min->setToolTip(tr("Minutes")); timeHBox->addWidget(m_min); connect(m_min, SIGNAL(valueChanged(int)), this, SLOT(slotMinutesChanged())); connect(m_min, SIGNAL(focusGained()), this, SLOT(slotSpinFocusGained())); m_sec = new FocusSpinBox(this); m_sec->setRange(0, SEC_MAX); m_sec->setSuffix("s"); m_sec->setButtonSymbols(QSpinBox::NoButtons); m_sec->setToolTip(tr("Seconds")); timeHBox->addWidget(m_sec); connect(m_sec, SIGNAL(valueChanged(int)), this, SLOT(slotSecondsChanged())); connect(m_sec, SIGNAL(focusGained()), this, SLOT(slotSpinFocusGained())); m_ms = new FocusSpinBox(this); m_ms->setRange(0, MS_MAX); m_ms->setSuffix("ms"); m_ms->setButtonSymbols(QSpinBox::NoButtons); m_ms->setToolTip(tr("Milliseconds")); timeHBox->addWidget(m_ms); connect(m_ms, SIGNAL(valueChanged(int)), this, SLOT(slotMSChanged())); connect(m_ms, SIGNAL(focusGained()), this, SLOT(slotSpinFocusGained())); m_infiniteCheck = new QCheckBox(this); m_infiniteCheck->setText(tr("Infinite")); layout()->addWidget(m_infiniteCheck); connect(m_infiniteCheck, SIGNAL(toggled(bool)), this, SLOT(slotInfiniteChecked(bool))); m_focus = m_ms; m_dial->setRange(m_focus->minimum(), m_focus->maximum()); m_dial->setSingleStep(m_focus->singleStep()); m_timer->setInterval(TIMER_HOLD); connect(m_timer, SIGNAL(timeout()), this, SLOT(slotPlusMinusTimeout())); m_tapTickElapseTimer = new QTimer(); #if QT_VERSION >= QT_VERSION_CHECK(5, 0, 0) m_tapTickElapseTimer->setTimerType(Qt::PreciseTimer); #endif m_tapTickElapseTimer->setSingleShot(true); connect(m_tapTickElapseTimer, SIGNAL(timeout()), this, SLOT(slotTapTimeout())); //Hide elements according to current visibility mask setVisibilityMask(m_visibilityMask); }