void TraktorF1MK2::processButtons(const Transfer& input_) { bool shiftPressed(isButtonPressed(input_, Button::Shift)); Device::Button changedButton(Device::Button::Unknown); bool buttonPressed(false); for (int i = 0; i < kF1MK2_buttonsDataSize - 1; i++) // Skip the last byte (encoder value) { for (int k = 0; k < 8; k++) { uint8_t btn = (i * 8) + k; Button currentButton(static_cast<Button>(btn)); if (currentButton == Button::Shift) { continue; } buttonPressed = isButtonPressed(input_, currentButton); if (buttonPressed != m_buttonStates[btn]) { m_buttonStates[btn] = buttonPressed; changedButton = deviceButton(currentButton); if (changedButton != Device::Button::Unknown) { if (currentButton >= Button::Pad8 && currentButton <= Button::Pad9) { keyChanged(btn, buttonPressed ? 1.0 : 0.0, shiftPressed); } else { buttonChanged(changedButton, buttonPressed, shiftPressed); } } } } } // encoder uint8_t currentValue = input_.data()[kF1MK2_buttonsDataSize]; if (currentValue != m_encoderValue) { bool valueIncreased = ((static_cast<uint8_t>(m_encoderValue) < currentValue) || ((m_encoderValue == 0xff) && (currentValue == 0x00))) && (!((m_encoderValue == 0x0) && (currentValue == 0xff))); m_encoderValue = currentValue; encoderChanged(0, valueIncreased, shiftPressed); } // pots/faders for (uint8_t potIndex = 0, i = kF1MK2_buttonsDataSize + 1; potIndex < 8; i += 2, potIndex++) { unsigned value = (input_.data()[i]) | (input_.data()[i + 1] << 8); if (m_potentiometersValues[potIndex] != value) { m_potentiometersValues[potIndex] = value; controlChanged(potIndex, value / 1024.0, shiftPressed); } } }
bool OptionsDetailed::setCurrentConversionOptions( const ConversionOptions *conversionOptions ) { if( !conversionOptions ) return false; cFormat->setCurrentIndex( cFormat->findText(conversionOptions->codecName) ); formatChanged( cFormat->currentText() ); if( conversionOptions->codecName != "wav" ) { cPlugin->setCurrentIndex( cPlugin->findText(conversionOptions->pluginName) ); encoderChanged( cPlugin->currentText() ); } outputDirectory->setMode( (OutputDirectory::Mode)conversionOptions->outputDirectoryMode ); outputDirectory->setDirectory( conversionOptions->outputDirectory ); cReplayGain->setChecked( conversionOptions->replaygain ); bool succeeded = true; if( conversionOptions->codecName == "wav" ) succeeded = true; else if( wPlugin ) succeeded = wPlugin->setCurrentConversionOptions( conversionOptions ); else succeeded = false; QStringList usedFilter; foreach( const FilterOptions *filterOptions, conversionOptions->filterOptions ) { bool filterSucceeded = false; for( int i=0; i<wFilter.size(); i++ ) { FilterWidget *widget = wFilter.keys().at(i); FilterPlugin *plugin = wFilter.values().at(i); if( widget && plugin && filterOptions->pluginName == plugin->name() ) { filterSucceeded = widget->setCurrentFilterOptions( filterOptions ); usedFilter.append( filterOptions->pluginName ); break; } } if( !filterSucceeded ) succeeded = false; } // if a filter is disabled, its FilterOptions is 0 thus it won't be added to ConversionOptions, but we need to update the widget so it won't show false data for( int i=0; i<wFilter.size(); i++ ) { FilterWidget *widget = wFilter.keys().at(i); FilterPlugin *plugin = wFilter.values().at(i); if( widget && plugin && !usedFilter.contains(plugin->name()) ) { widget->setCurrentFilterOptions( 0 ); } } return succeeded; }
void OptionsDetailed::formatChanged( const QString& format ) { const QString oldEncoder = cPlugin->currentText(); cPlugin->clear(); //if( format != "wav" ) // TODO make it nicer if wav is selected for( int i=0; i<config->data.backends.codecs.count(); i++ ) { if( config->data.backends.codecs.at(i).codecName == format ) { cPlugin->addItems( config->data.backends.codecs.at(i).encoders ); } } cPlugin->setCurrentIndex( 0 ); if( cPlugin->currentText() != oldEncoder ) { encoderChanged( cPlugin->currentText() ); } else if( wPlugin ) { wPlugin->setCurrentFormat( cFormat->currentText() ); } lPlugin->setShown( format != "wav" ); cPlugin->setShown( format != "wav" ); pConfigurePlugin->setShown( format != "wav" ); if( wPlugin ) wPlugin->setShown( format != "wav" ); QStringList errorList; cReplayGain->setEnabled( config->pluginLoader()->canReplayGain(cFormat->currentText(),currentPlugin,&errorList) ); if( !cReplayGain->isEnabled() ) { QPalette notificationPalette = cReplayGain->palette(); notificationPalette.setColor( QPalette::Disabled, QPalette::WindowText, QColor(174,127,130) ); cReplayGain->setPalette( notificationPalette ); if( !errorList.isEmpty() ) { errorList.prepend( i18n("Replay Gain is not supported for the %1 file format.\nPossible solutions are listed below.",cFormat->currentText()) ); } else { errorList += i18n("Replay Gain is not supported for the %1 file format.\nPlease check your distribution's package manager in order to install an additional Replay Gain plugin.",cFormat->currentText()); } cReplayGain->setToolTip( errorList.join("\n\n") ); } else { cReplayGain->setToolTip( i18n("Replay Gain tags can tell your music player how loud a track is\nso it can adjust the volume to play all tracks with equal loudness.") ); } somethingChanged(); }
void ConfigDialog::init() { setFaceType(KConfigDialog::List); KConfig *cfg = Settings::self()->config(); QWidget *generalPage = new QWidget(this); ui_settings.setupUi(generalPage); updateEncoderCombo(); ui_settings.encoderCombo->setCurrentItem(Settings::encoderName(), false); connect(ui_settings.encoderCombo, SIGNAL(currentIndexChanged(QString)), this, SLOT(encoderChanged())); RecordItNow::ConfigPage *pluginPage = new PluginConfig(m_pluginManager, cfg, this); RecordItNow::ConfigPage *mousePage = new MouseConfig(cfg, this); RecordItNow::ConfigPage *zoomPage = new ZoomConfig(cfg, this); RecordItNow::ConfigPage *timelinePage = new TimelineConfig(cfg, this); RecordItNow::ConfigPage *shortcutsPage = new ShortcutsConfig(m_collection, cfg, this); RecordItNow::ConfigPage *framePage = new FrameConfig(cfg, this); RecordItNow::ConfigPage *keyboardPage = new KeyboardConfig(cfg, this); m_pageList.append(pluginPage); m_pageList.append(mousePage); m_pageList.append(zoomPage); m_pageList.append(timelinePage); m_pageList.append(shortcutsPage); m_pageList.append(framePage); m_pageList.append(keyboardPage); addPage(generalPage, i18n("RecordItNow"), "configure"); addPage(pluginPage, i18n("Plugins"), "preferences-plugin"); addPage(framePage, i18nc("Widget to select a screen area", "Frame"), "draw-rectangle"); addPage(mousePage, i18n("Mouse"), "input-mouse"); addPage(keyboardPage, i18n("Keyboard"), "input-keyboard"); addPage(zoomPage, i18n("Zoom"), "zoom-in"); addPage(timelinePage, i18n("Timeline"), "recorditnow-timeline"); addPage(shortcutsPage, i18n("Shortcuts"), "configure-shortcuts"); connect(this, SIGNAL(finished(int)), this, SLOT(configFinished(int))); foreach (RecordItNow::ConfigPage *page, m_pageList) { connect(page, SIGNAL(configChanged()), this, SLOT(pageConfigChanged())); page->loadConfig(); }