+void KdenliveSettingsDialog::loadTranscodeProfiles()
+{
+ KSharedConfigPtr config = KSharedConfig::openConfig("kdenlivetranscodingrc", KConfig::CascadeConfig);
+ KConfigGroup transConfig(config, "Transcoding");
+ // read the entries
+ m_configTranscode.profiles_list->blockSignals(true);
+ m_configTranscode.profiles_list->clear();
+ QMap< QString, QString > profiles = transConfig.entryMap();
+ QMapIterator<QString, QString> i(profiles);
+ while (i.hasNext()) {
+ i.next();
+ QListWidgetItem *item = new QListWidgetItem(i.key());
+ QString data = i.value();
+ if (data.contains(';')) item->setToolTip(data.section(';', 1, 1));
+ item->setData(Qt::UserRole, data);
+ m_configTranscode.profiles_list->addItem(item);
+ //item->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsEditable);
+ }
+ m_configTranscode.profiles_list->blockSignals(false);
+ m_configTranscode.profiles_list->setCurrentRow(0);
+}
+
+void KdenliveSettingsDialog::saveTranscodeProfiles()
+{
+ KSharedConfigPtr config = KSharedConfig::openConfig("kdenlivetranscodingrc", KConfig::CascadeConfig);
+ //KSharedConfigPtr config = KGlobal::config();
+ KConfigGroup transConfig(config, "Transcoding");
+ // read the entries
+ transConfig.deleteGroup();
+ int max = m_configTranscode.profiles_list->count();
+ for (int i = 0; i < max; ++i) {
+ QListWidgetItem *item = m_configTranscode.profiles_list->item(i);
+ transConfig.writeEntry(item->text(), item->data(Qt::UserRole).toString());
+ }
+ config->sync();
+}
+
+void KdenliveSettingsDialog::slotAddTranscode()
+{
+ if (!m_configTranscode.profiles_list->findItems(m_configTranscode.profile_name->text(), Qt::MatchExactly).isEmpty()) {
+ KMessageBox::sorry(this, i18n("A profile with that name already exists"));
+ return;
+ }
+ QListWidgetItem *item = new QListWidgetItem(m_configTranscode.profile_name->text());
+ QString data = m_configTranscode.profile_parameters->toPlainText();
+ data.append(" %1." + m_configTranscode.profile_extension->text());
+ data.append(';');
+ if (!m_configTranscode.profile_description->text().isEmpty())
+ data.append(m_configTranscode.profile_description->text());
+ if (m_configTranscode.profile_audioonly->isChecked()) data.append(";audio");
+ item->setData(Qt::UserRole, data);
+ m_configTranscode.profiles_list->addItem(item);
+ m_configTranscode.profiles_list->setCurrentItem(item);
+ slotDialogModified();
+}
+
+void KdenliveSettingsDialog::slotUpdateTranscodingProfile()
+{
+ QListWidgetItem *item = m_configTranscode.profiles_list->currentItem();
+ if (!item) return;
+ m_configTranscode.button_update->setEnabled(false);
+ item->setText(m_configTranscode.profile_name->text());
+ QString data = m_configTranscode.profile_parameters->toPlainText();
+ data.append(" %1." + m_configTranscode.profile_extension->text());
+ data.append(';');
+ if (!m_configTranscode.profile_description->text().isEmpty())
+ data.append(m_configTranscode.profile_description->text());
+ if (m_configTranscode.profile_audioonly->isChecked()) data.append(";audio");
+ item->setData(Qt::UserRole, data);
+ slotDialogModified();
+}
+
+void KdenliveSettingsDialog::slotDeleteTranscode()
+{
+ QListWidgetItem *item = m_configTranscode.profiles_list->currentItem();
+ if (item == NULL) return;
+ delete item;
+ slotDialogModified();
+}
+
+void KdenliveSettingsDialog::slotEnableTranscodeUpdate()
+{
+ if (!m_configTranscode.profile_box->isEnabled()) return;
+ bool allow = true;
+ if (m_configTranscode.profile_name->text().isEmpty() || m_configTranscode.profile_extension->text().isEmpty()) allow = false;
+ m_configTranscode.button_update->setEnabled(allow);
+}
+
+void KdenliveSettingsDialog::slotSetTranscodeProfile()
+{
+ m_configTranscode.profile_box->setEnabled(false);
+ m_configTranscode.button_update->setEnabled(false);
+ m_configTranscode.profile_name->clear();
+ m_configTranscode.profile_description->clear();
+ m_configTranscode.profile_extension->clear();
+ m_configTranscode.profile_parameters->clear();
+ m_configTranscode.profile_audioonly->setChecked(false);
+ QListWidgetItem *item = m_configTranscode.profiles_list->currentItem();
+ if (!item) {
+ return;
+ }
+ m_configTranscode.profile_name->setText(item->text());
+ QString data = item->data(Qt::UserRole).toString();
+ if (data.contains(';')) {
+ m_configTranscode.profile_description->setText(data.section(';', 1, 1));
+ if (data.section(';', 2, 2) == "audio") m_configTranscode.profile_audioonly->setChecked(true);
+ data = data.section(';', 0, 0).simplified();
+ }
+ m_configTranscode.profile_extension->setText(data.section('.', -1));
+ m_configTranscode.profile_parameters->setPlainText(data.section(' ', 0, -2));
+ m_configTranscode.profile_box->setEnabled(true);
+}
+
+void KdenliveSettingsDialog::slotShuttleModified()
+{
+#ifdef USE_JOGSHUTTLE
+ QStringList actions;
+ actions << "monitor_pause"; // the Job rest position action.
+ foreach (KComboBox* button, m_shuttle_buttons) {
+ actions << m_mappable_actions[button->currentText()];
+ }
+ QString maps = JogShuttleConfig::actionMap(actions);
+ m_shuttleModified = KdenliveSettings::shuttlebuttons() != maps;
+#endif
+ KConfigDialog::updateButtons();
+}
+
+void KdenliveSettingsDialog::slotDialogModified()
+{
+ m_modified = true;
+ KConfigDialog::updateButtons();
+}
+
+//virtual
+bool KdenliveSettingsDialog::hasChanged()
+{
+ if (m_modified || m_shuttleModified) return true;
+ return KConfigDialog::hasChanged();
+}
+
+void KdenliveSettingsDialog::slotUpdatev4lDevice()
+{
+ QString device = m_configCapture.kcfg_detectedv4ldevices->itemData(m_configCapture.kcfg_detectedv4ldevices->currentIndex()).toString();
+ if (!device.isEmpty()) m_configCapture.kcfg_video4vdevice->setText(device);
+ QString info = m_configCapture.kcfg_detectedv4ldevices->itemData(m_configCapture.kcfg_detectedv4ldevices->currentIndex(), Qt::UserRole + 1).toString();
+
+ m_configCapture.kcfg_v4l_format->blockSignals(true);
+ m_configCapture.kcfg_v4l_format->clear();
+
+ QString vl4ProfilePath = KStandardDirs::locateLocal("appdata", "profiles/video4linux");
+ if (QFile::exists(vl4ProfilePath)) {
+ m_configCapture.kcfg_v4l_format->addItem(i18n("Current settings"));
+ }
+
+ QStringList pixelformats = info.split('>', QString::SkipEmptyParts);
+ QString itemSize;
+ QString pixelFormat;
+ QStringList itemRates;
+ for (int i = 0; i < pixelformats.count(); ++i) {
+ QString format = pixelformats.at(i).section(':', 0, 0);
+ QStringList sizes = pixelformats.at(i).split(':', QString::SkipEmptyParts);
+ pixelFormat = sizes.takeFirst();
+ for (int j = 0; j < sizes.count(); j++) {
+ itemSize = sizes.at(j).section('=', 0, 0);
+ itemRates = sizes.at(j).section('=', 1, 1).split(',', QString::SkipEmptyParts);
+ for (int k = 0; k < itemRates.count(); k++) {
+ m_configCapture.kcfg_v4l_format->addItem('[' + format + "] " + itemSize + " (" + itemRates.at(k) + ')', QStringList() << format << itemSize.section('x', 0, 0) << itemSize.section('x', 1, 1) << itemRates.at(k).section('/', 0, 0) << itemRates.at(k).section('/', 1, 1));
+ }
+ }
+ }
+ m_configCapture.kcfg_v4l_format->blockSignals(false);
+ slotUpdatev4lCaptureProfile();
+}
+
+void KdenliveSettingsDialog::slotUpdatev4lCaptureProfile()
+{
+ QStringList info = m_configCapture.kcfg_v4l_format->itemData(m_configCapture.kcfg_v4l_format->currentIndex(), Qt::UserRole).toStringList();
+ if (info.isEmpty()) {
+ // No auto info, display the current ones
+ loadCurrentV4lProfileInfo();
+ return;
+ }
+ m_configCapture.p_size->setText(info.at(1) + 'x' + info.at(2));
+ m_configCapture.p_fps->setText(info.at(3) + '/' + info.at(4));
+ m_configCapture.p_aspect->setText("1/1");
+ m_configCapture.p_display->setText(info.at(1) + '/' + info.at(2));
+ m_configCapture.p_colorspace->setText(ProfilesDialog::getColorspaceDescription(601));
+ m_configCapture.p_progressive->setText(i18n("Progressive"));
+
+ QString vl4ProfilePath = KStandardDirs::locateLocal("appdata", "profiles/video4linux");
+ if (!QFile::exists(vl4ProfilePath)) saveCurrentV4lProfile();
+}