PreferencesDialog::PreferencesDialog(QWidget* parent) : QDialog( parent ) , Object( __class_name ) { setupUi( this ); setWindowTitle( trUtf8( "Preferences" ) ); setWindowIcon( QPixmap( Skin::getImagePath() + "/icon16.png" ) ); setMinimumSize( width(), height() ); Preferences *pPref = Preferences::get_instance(); pPref->loadPreferences( false ); // reload user's preferences driverComboBox->clear(); driverComboBox->addItem( "Auto" ); #ifdef H2CORE_HAVE_JACK driverComboBox->addItem( "Jack" ); #endif #ifdef H2CORE_HAVE_ALSA driverComboBox->addItem( "Alsa" ); #endif #ifdef H2CORE_HAVE_OSS driverComboBox->addItem( "Oss" ); #endif #ifdef H2CORE_HAVE_PORTAUDIO driverComboBox->addItem( "PortAudio" ); #endif #ifdef H2CORE_HAVE_COREAUDIO driverComboBox->addItem( "CoreAudio" ); #endif #ifdef H2CORE_HAVE_PULSEAUDIO driverComboBox->addItem( "PulseAudio" ); #endif if( driverComboBox->findText(pPref->m_sAudioDriver) > -1){ driverComboBox->setCurrentIndex(driverComboBox->findText(pPref->m_sAudioDriver)); } else { driverInfoLbl->setText("Select your Audio Driver"); ERRORLOG( "Unknown midi input from preferences [" + pPref->m_sAudioDriver + "]" ); } m_pMidiDriverComboBox->clear(); #ifdef H2CORE_HAVE_ALSA m_pMidiDriverComboBox->addItem( "ALSA" ); #endif #ifdef H2CORE_HAVE_PORTMIDI m_pMidiDriverComboBox->addItem( "PortMidi" ); #endif #ifdef H2CORE_HAVE_COREMIDI m_pMidiDriverComboBox->addItem( "CoreMidi" ); #endif #ifdef H2CORE_HAVE_JACK m_pMidiDriverComboBox->addItem( "JackMidi" ); #endif if( m_pMidiDriverComboBox->findText(pPref->m_sMidiDriver) > -1){ m_pMidiDriverComboBox->setCurrentIndex(m_pMidiDriverComboBox->findText(pPref->m_sMidiDriver)); } else { driverInfoLbl->setText("Select your Midi Driver"); ERRORLOG( "Unknown midi input from preferences [" + pPref->m_sMidiDriver + "]" ); } m_pIgnoreNoteOffCheckBox->setChecked( pPref->m_bMidiNoteOffIgnore ); updateDriverInfo(); // metronome volume uint metronomeVol = (uint)( pPref->m_fMetronomeVolume * 100.0 ); metronomeVolumeSpinBox->setValue(metronomeVol); // max voices maxVoicesTxt->setValue( pPref->m_nMaxNotes ); // JACK trackOutsCheckBox->setChecked( pPref->m_bJackTrackOuts ); connect(trackOutsCheckBox, SIGNAL(toggled(bool)), this, SLOT(toggleTrackOutsCheckBox( bool ))); connectDefaultsCheckBox->setChecked( pPref->m_bJackConnectDefaults ); trackOutputComboBox->setCurrentIndex( pPref->m_nJackTrackOutputMode ); //~ JACK bufferSizeSpinBox->setValue( pPref->m_nBufferSize ); switch ( pPref->m_nSampleRate ) { case 44100: sampleRateComboBox->setCurrentIndex( 0 ); break; case 48000: sampleRateComboBox->setCurrentIndex( 1 ); break; case 88200: sampleRateComboBox->setCurrentIndex( 2 ); break; case 96000: sampleRateComboBox->setCurrentIndex( 3 ); break; default: ERRORLOG( QString("Wrong samplerate: %1").arg( pPref->m_nSampleRate ) ); } resampleComboBox->setCurrentIndex( (int) AudioEngine::get_instance()->get_sampler()->getInterpolateMode() ); // Appearance tab QString applicationFamily = pPref->getApplicationFontFamily(); int applicationPointSize = pPref->getApplicationFontPointSize(); QFont applicationFont( applicationFamily, applicationPointSize ); applicationFontLbl->setFont( applicationFont ); applicationFontLbl->setText( applicationFamily + QString(" %1").arg( applicationPointSize ) ); QString mixerFamily = pPref->getMixerFontFamily(); int mixerPointSize = pPref->getMixerFontPointSize(); QFont mixerFont( mixerFamily, mixerPointSize ); mixerFontLbl->setFont( mixerFont ); mixerFontLbl->setText( mixerFamily + QString(" %1").arg( mixerPointSize ) ); float falloffSpeed = pPref->getMixerFalloffSpeed(); if (falloffSpeed == FALLOFF_SLOW) { mixerFalloffComboBox->setCurrentIndex(0); } else if (falloffSpeed == FALLOFF_NORMAL) { mixerFalloffComboBox->setCurrentIndex(1); } else if (falloffSpeed == FALLOFF_FAST) { mixerFalloffComboBox->setCurrentIndex(2); } else { ERRORLOG( QString("PreferencesDialog: wrong mixerFalloff value = %1").arg(falloffSpeed) ); } uiLayoutComboBox->setCurrentIndex( pPref->getDefaultUILayout() ); // Style QStringList list = QStyleFactory::keys(); uint i = 0; for ( QStringList::Iterator it = list.begin(); it != list.end(); it++) { styleComboBox->addItem( *it ); //INFOLOG( "QT Stile: " + *it ); //string sStyle = (*it).latin1(); QString sStyle = (*it); if (sStyle == pPref->getQTStyle() ) { styleComboBox->setCurrentIndex( i ); } i++; } //SongEditor coloring int coloringMethod = pPref->getColoringMethod(); int coloringMethodAuxValue = pPref->getColoringMethodAuxValue(); coloringMethodCombo->clear(); coloringMethodCombo->addItem(trUtf8("Automatic")); coloringMethodCombo->addItem(trUtf8("Steps")); coloringMethodCombo->addItem(trUtf8("Fixed")); coloringMethodAuxSpinBox->setMaximum(300); coloringMethodCombo->setCurrentIndex( coloringMethod ); coloringMethodAuxSpinBox->setValue( coloringMethodAuxValue ); coloringMethodCombo_currentIndexChanged( coloringMethod ); connect(coloringMethodCombo, SIGNAL(currentIndexChanged(int)), this, SLOT( coloringMethodCombo_currentIndexChanged(int) )); // midi tab midiPortChannelComboBox->setEnabled( false ); midiPortComboBox->setEnabled( false ); // list midi output ports midiPortComboBox->clear(); midiPortComboBox->addItem( "None" ); if ( Hydrogen::get_instance()->getMidiInput() ) { std::vector<QString> midiOutList = Hydrogen::get_instance()->getMidiInput()->getOutputPortList(); if ( midiOutList.size() != 0 ) { midiPortComboBox->setEnabled( true ); midiPortChannelComboBox->setEnabled( true ); } for (uint i = 0; i < midiOutList.size(); i++) { QString sPortName = midiOutList[i]; midiPortComboBox->addItem( sPortName ); if ( sPortName == pPref->m_sMidiPortName ) { midiPortComboBox->setCurrentIndex( i + 1 ); } } } if ( pPref->m_nMidiChannelFilter == -1 ) { midiPortChannelComboBox->setCurrentIndex( 0 ); } else { midiPortChannelComboBox->setCurrentIndex( pPref->m_nMidiChannelFilter + 1 ); } // General tab restoreLastUsedSongCheckbox->setChecked( pPref->isRestoreLastSongEnabled() ); restoreLastUsedPlaylistCheckbox->setChecked( pPref->isRestoreLastPlaylistEnabled() ); //restore the right m_bsetlash value if ( pPref->m_brestartLash == true ){ if (pPref->m_bsetLash == false ){ pPref->m_bsetLash = true ; pPref->m_brestartLash = false; } } useLashCheckbox->setChecked( pPref->m_bsetLash ); sBcountOffset->setValue( pPref->m_countOffset ); sBstartOffset->setValue( pPref->m_startOffset ); sBmaxBars->setValue( pPref->getMaxBars() ); QString pathtoRubberband = pPref->m_rubberBandCLIexecutable; rubberbandLineEdit->setText( pathtoRubberband ); #ifdef H2CORE_HAVE_RUBBERBAND pathToRubberbandExLable->hide(); rubberbandLineEdit->hide(); #endif m_bNeedDriverRestart = false; connect(m_pMidiDriverComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT( onMidiDriverComboBoxIndexChanged(int) )); }
void HydrogenApp::setupSinglePanedInterface() { Preferences *pPref = Preferences::get_instance(); int uiLayout = pPref->getDefaultUILayout(); // MAINFORM WindowProperties mainFormProp = pPref->getMainFormProperties(); m_pMainForm->resize( mainFormProp.width, mainFormProp.height ); m_pMainForm->move( mainFormProp.x, mainFormProp.y ); pSplitter = new QSplitter( NULL ); pSplitter->setOrientation( Qt::Vertical ); pSplitter->setOpaqueResize( true ); pTab = new QTabWidget( NULL ); // SONG EDITOR if( uiLayout == Preferences::UI_LAYOUT_SINGLE_PANE) m_pSongEditorPanel = new SongEditorPanel( pSplitter ); else m_pSongEditorPanel = new SongEditorPanel( pTab ); WindowProperties songEditorProp = pPref->getSongEditorProperties(); m_pSongEditorPanel->resize( songEditorProp.width, songEditorProp.height ); if( uiLayout == Preferences::UI_LAYOUT_TABBED) pTab->addTab( m_pSongEditorPanel, trUtf8("Song Editor") ); // this HBox will contain the InstrumentRack and the Pattern editor QWidget *pSouthPanel = new QWidget( pSplitter ); QHBoxLayout *pEditorHBox = new QHBoxLayout(); pEditorHBox->setSpacing( 5 ); pEditorHBox->setMargin( 0 ); pSouthPanel->setLayout( pEditorHBox ); // INSTRUMENT RACK m_pInstrumentRack = new InstrumentRack( NULL ); if( uiLayout == Preferences::UI_LAYOUT_TABBED ){ pTab->setMovable( false ); pTab->setTabsClosable( false ); pTab->addTab( pSouthPanel, trUtf8( "Instrument + Pattern") ); } // PATTERN EDITOR m_pPatternEditorPanel = new PatternEditorPanel( NULL ); WindowProperties patternEditorProp = pPref->getPatternEditorProperties(); m_pPatternEditorPanel->resize( patternEditorProp.width, patternEditorProp.height ); pEditorHBox->addWidget( m_pPatternEditorPanel ); pEditorHBox->addWidget( m_pInstrumentRack ); // PLayer control m_pPlayerControl = new PlayerControl( NULL ); QWidget *mainArea = new QWidget( m_pMainForm ); // this is the main widget m_pMainForm->setCentralWidget( mainArea ); // LAYOUT!! QVBoxLayout *pMainVBox = new QVBoxLayout(); pMainVBox->setSpacing( 5 ); pMainVBox->setMargin( 0 ); pMainVBox->addWidget( m_pPlayerControl ); if( uiLayout == Preferences::UI_LAYOUT_SINGLE_PANE) pMainVBox->addWidget( pSplitter ); else { pMainVBox->addWidget( pTab ); } mainArea->setLayout( pMainVBox ); // MIXER m_pMixer = new Mixer(0); WindowProperties mixerProp = pPref->getMixerProperties(); m_pMixer->resize( mixerProp.width, mixerProp.height ); m_pMixer->move( mixerProp.x, mixerProp.y ); if( uiLayout == Preferences::UI_LAYOUT_TABBED){ pTab->addTab(m_pMixer,trUtf8("Mixer")); } m_pMixer->updateMixer(); if ( mixerProp.visible && uiLayout == Preferences::UI_LAYOUT_SINGLE_PANE ) { m_pMixer->show(); } else { m_pMixer->hide(); } // HELP BROWSER QString sDocPath = H2Core::Filesystem::doc_dir(); QString sDocURI = sDocPath + "/manual.html"; m_pHelpBrowser = new SimpleHTMLBrowser( NULL, sDocPath, sDocURI, SimpleHTMLBrowser::MANUAL ); #ifdef H2CORE_HAVE_LADSPA // LADSPA FX for (uint nFX = 0; nFX < MAX_FX; nFX++) { m_pLadspaFXProperties[nFX] = new LadspaFXProperties( NULL, nFX ); m_pLadspaFXProperties[nFX]->hide(); WindowProperties prop = pPref->getLadspaProperties(nFX); m_pLadspaFXProperties[nFX]->move( prop.x, prop.y ); if ( prop.visible ) { m_pLadspaFXProperties[nFX]->show(); } else { m_pLadspaFXProperties[nFX]->hide(); } } #endif if( uiLayout == Preferences::UI_LAYOUT_TABBED){ pTab->setCurrentIndex( Preferences::get_instance()->getLastOpenTab() ); QObject::connect(pTab, SIGNAL(currentChanged(int)),this,SLOT(currentTabChanged(int))); }