Exemple #1
0
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);
    }
  }
}
Exemple #2
0
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;
}
Exemple #3
0
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();
    }