X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;ds=sidebyside;f=src%2Fkdenlivesettingsdialog.cpp;h=2a1ccaa273666fa9a23532b041a4d6140d27720b;hb=39434a7d8e88af758bb19bb7a47891f5f1c77179;hp=a04edb0f420052eeb69647d2acd8caa72c3580cb;hpb=54e87a639b798dd37554301ef22cff58aef795e2;p=kdenlive diff --git a/src/kdenlivesettingsdialog.cpp b/src/kdenlivesettingsdialog.cpp index a04edb0f..2a1ccaa2 100644 --- a/src/kdenlivesettingsdialog.cpp +++ b/src/kdenlivesettingsdialog.cpp @@ -27,9 +27,11 @@ #include #include #include +#include #include #include +#include #include #include @@ -41,19 +43,20 @@ KdenliveSettingsDialog::KdenliveSettingsDialog(QWidget * parent) : - KConfigDialog(parent, "settings", KdenliveSettings::self()) + KConfigDialog(parent, "settings", KdenliveSettings::self()), + m_modified(false) { QWidget *p1 = new QWidget; m_configMisc.setupUi(p1); - page1 = addPage(p1, i18n("Misc"), "configure"); + m_page1 = addPage(p1, i18n("Misc"), "configure"); // Hide multi tab option until Kdenlive really supports it m_configMisc.kcfg_activatetabs->setVisible(false); QWidget *p3 = new QWidget; m_configDisplay.setupUi(p3); - page3 = addPage(p3, i18n("Display"), "video-display"); + m_page3 = addPage(p3, i18n("Display"), "video-display"); QWidget *p2 = new QWidget; m_configEnv.setupUi(p2); @@ -66,12 +69,11 @@ KdenliveSettingsDialog::KdenliveSettingsDialog(QWidget * parent) : m_configEnv.projecturl->lineEdit()->setObjectName("kcfg_defaultprojectfolder"); m_configEnv.capturefolderurl->setMode(KFile::Directory); m_configEnv.capturefolderurl->lineEdit()->setObjectName("kcfg_capturefolder"); - page2 = addPage(p2, i18n("Environment"), "terminal"); + m_page2 = addPage(p2, i18n("Environment"), "application-x-executable-script"); - m_captureFolder = KdenliveSettings::capturefolder(); QWidget *p4 = new QWidget; m_configCapture.setupUi(p4); - page4 = addPage(p4, i18n("Capture"), "audio-card"); + m_page4 = addPage(p4, i18n("Capture"), "media-record"); m_configCapture.tabWidget->setCurrentIndex(KdenliveSettings::defaultcapture()); QWidget *p5 = new QWidget; @@ -85,11 +87,18 @@ KdenliveSettingsDialog::KdenliveSettingsDialog(QWidget * parent) : m_configShuttle.kcfg_enableshuttle->hide(); m_configShuttle.kcfg_enableshuttle->setDisabled(true); #endif /* NO_JOGSHUTTLE */ - page5 = addPage(p5, i18n("JogShuttle"), "input-mouse"); + m_page5 = addPage(p5, i18n("JogShuttle"), "input-mouse"); QWidget *p6 = new QWidget; m_configSdl.setupUi(p6); - page6 = addPage(p6, i18n("Playback"), "audio-card"); + m_page6 = addPage(p6, i18n("Playback"), "media-playback-start"); + + QWidget *p7 = new QWidget; + m_configTranscode.setupUi(p7); + m_page7 = addPage(p7, i18n("Transcode"), "edit-copy"); + connect(m_configTranscode.button_add, SIGNAL(clicked()), this, SLOT(slotAddTranscode())); + connect(m_configTranscode.button_delete, SIGNAL(clicked()), this, SLOT(slotDeleteTranscode())); + connect(m_configTranscode.profiles_list, SIGNAL(itemChanged(QTreeWidgetItem *, int)), this, SLOT(slotDialogModified())); QStringList actions; actions << i18n("Do nothing"); @@ -126,6 +135,7 @@ KdenliveSettingsDialog::KdenliveSettingsDialog(QWidget * parent) : connect(m_configCapture.kcfg_rmd_capture_type, SIGNAL(currentIndexChanged(int)), this, SLOT(slotUpdateRmdRegionStatus())); slotUpdateRmdRegionStatus(); + loadTranscodeProfiles(); //HACK: check dvgrab version, because only dvgrab >= 3.3 supports @@ -149,7 +159,7 @@ KdenliveSettingsDialog::KdenliveSettingsDialog(QWidget * parent) : kDebug() << "// FOUND DVGRAB VERSION: " << dvgrabVersion; } - if (versionCheck) delete versionCheck; + delete versionCheck; if (dvgrabVersion < 3.3) { KdenliveSettings::setFirewiretimestamp(false); m_configCapture.kcfg_firewiretimestamp->setEnabled(false); @@ -205,7 +215,7 @@ void KdenliveSettingsDialog::initDevices() m_configSdl.kcfg_audio_driver->addItem(i18n("ARTS daemon"), "artsc"); if (!KdenliveSettings::audiodrivername().isEmpty()) - for (int i = 1;i < m_configSdl.kcfg_audio_driver->count(); i++) { + for (int i = 1; i < m_configSdl.kcfg_audio_driver->count(); i++) { if (m_configSdl.kcfg_audio_driver->itemData(i).toString() == KdenliveSettings::audiodrivername()) { m_configSdl.kcfg_audio_driver->setCurrentIndex(i); KdenliveSettings::setAudio_driver((uint) i); @@ -289,22 +299,29 @@ void KdenliveSettingsDialog::showPage(int page, int option) { switch (page) { case 1: - setCurrentPage(page1); + setCurrentPage(m_page1); break; case 2: - setCurrentPage(page2); + setCurrentPage(m_page2); break; case 3: - setCurrentPage(page3); + setCurrentPage(m_page3); break; case 4: - setCurrentPage(page4); + setCurrentPage(m_page4); m_configCapture.tabWidget->setCurrentIndex(option); break; case 5: - setCurrentPage(page5); + setCurrentPage(m_page5); break; - + case 6: + setCurrentPage(m_page6); + break; + case 7: + setCurrentPage(m_page7); + break; + default: + setCurrentPage(m_page1); } } @@ -384,7 +401,8 @@ void KdenliveSettingsDialog::rebuildVideo4Commands() void KdenliveSettingsDialog::updateSettings() { - kDebug() << "// // // KCONFIG UPDATE called"; + //kDebug() << "// // // KCONFIG UPDATE called"; + m_defaultProfile = m_configMisc.kcfg_profiles_list->currentText(); KdenliveSettings::setDefault_profile(m_defaultPath); @@ -438,7 +456,17 @@ void KdenliveSettingsDialog::updateSettings() updatePreview = true; } - KConfigDialog::updateSettings(); + if (m_modified) { + // The transcoding profiles were modified, save. + m_modified = false; + saveTranscodeProfiles(); + } + +#if KDE_IS_VERSION(4,3,0) + KConfigDialog::settingsChangedSlot(); +#endif + + //KConfigDialog::updateSettings(); if (resetProfile) emit doResetProfile(); if (updatePreview) emit updatePreviewSettings(); } @@ -463,6 +491,71 @@ void KdenliveSettingsDialog::slotCheckAlsaDriver() m_configSdl.kcfg_audio_device->setEnabled(value == "alsa"); } +void KdenliveSettingsDialog::loadTranscodeProfiles() +{ + KSharedConfigPtr config = KSharedConfig::openConfig("kdenlivetranscodingrc"); + KConfigGroup transConfig(config, "Transcoding"); + // read the entries + m_configTranscode.profiles_list->blockSignals(true); + QMap< QString, QString > profiles = transConfig.entryMap(); + QMapIterator i(profiles); + while (i.hasNext()) { + i.next(); + QTreeWidgetItem *item = new QTreeWidgetItem(m_configTranscode.profiles_list, QStringList() << i.key() << i.value()); + item->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsEditable); + } + m_configTranscode.profiles_list->blockSignals(false); +} + +void KdenliveSettingsDialog::saveTranscodeProfiles() +{ + KSharedConfigPtr config = KSharedConfig::openConfig("kdenlivetranscodingrc"); + //KSharedConfigPtr config = KGlobal::config(); + KConfigGroup transConfig(config, "Transcoding"); + // read the entries + transConfig.deleteGroup(); + int max = m_configTranscode.profiles_list->topLevelItemCount(); + for (int i = 0; i < max; i++) { + QTreeWidgetItem *item = m_configTranscode.profiles_list->topLevelItem(i); + transConfig.writeEntry(item->text(0), item->text(1)); + } + config->sync(); +} + +void KdenliveSettingsDialog::slotAddTranscode() +{ + QTreeWidgetItem *item = new QTreeWidgetItem(m_configTranscode.profiles_list, QStringList() << i18n("Name") << i18n("Parameters")); + item->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsEditable); + m_configTranscode.profiles_list->setCurrentItem(item); + m_configTranscode.profiles_list->editItem(item); + slotDialogModified(); +} + +void KdenliveSettingsDialog::slotDeleteTranscode() +{ + QTreeWidgetItem *item = m_configTranscode.profiles_list->currentItem(); + if (item == NULL) return; + delete item; + slotDialogModified(); +} + +void KdenliveSettingsDialog::slotDialogModified() +{ + m_modified = true; +#if KDE_IS_VERSION(4,3,0) + KConfigDialog::updateButtons(); +#endif +} + +//virtual +bool KdenliveSettingsDialog::hasChanged() +{ + if (m_modified) return true; + return KConfigDialog::hasChanged(); +} + + + #include "kdenlivesettingsdialog.moc"