#include <KConfigDialogManager>
#include <kde_file.h>
#include <KIO/NetAccess>
+#include <kdeversion.h>
#include <QDir>
#include <QTimer>
+#include <QTreeWidgetItem>
#include <stdlib.h>
#include <stdio.h>
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);
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;
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");
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
kDebug() << "// FOUND DVGRAB VERSION: " << dvgrabVersion;
}
- if (versionCheck) delete versionCheck;
+ delete versionCheck;
if (dvgrabVersion < 3.3) {
KdenliveSettings::setFirewiretimestamp(false);
m_configCapture.kcfg_firewiretimestamp->setEnabled(false);
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);
{
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);
}
}
void KdenliveSettingsDialog::updateSettings()
{
- kDebug() << "// // // KCONFIG UPDATE called";
+ //kDebug() << "// // // KCONFIG UPDATE called";
+
m_defaultProfile = m_configMisc.kcfg_profiles_list->currentText();
KdenliveSettings::setDefault_profile(m_defaultPath);
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();
}
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<QString, QString> 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"