connect(m_configCapture.kcfg_detectedv4ldevices, SIGNAL(currentIndexChanged(int)), this, SLOT(slotUpdatev4lDevice()));
connect(m_configCapture.kcfg_v4l_format, SIGNAL(currentIndexChanged(int)), this, SLOT(slotUpdatev4lCaptureProfile()));
connect(m_configCapture.kcfg_v4l_captureaudio, SIGNAL(toggled(bool)), m_configCapture.kcfg_v4l_alsadevice, SLOT(setEnabled(bool)));
+ connect(m_configCapture.config_v4l, SIGNAL(clicked()), this, SLOT(slotEditVideo4LinuxProfile()));
slotUpdatev4lDevice();
#endif
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"));
+ if (QFile::exists(vl4ProfilePath)) {
+ m_configCapture.kcfg_v4l_format->addItem(i18n("Current settings"));
+ }
QStringList pixelformats = info.split(">", QString::SkipEmptyParts);
QString itemSize;
//
}
+void KdenliveSettingsDialog::slotEditVideo4LinuxProfile()
+{
+ QString vl4ProfilePath = KStandardDirs::locateLocal("appdata", "profiles/video4linux");
+ ProfilesDialog *w = new ProfilesDialog(vl4ProfilePath);
+ if (w->exec() == QDialog::Accepted) {
+ // save and update profile
+ loadCurrentV4lProfileInfo();
+ }
+ delete w;
+}
+
#include "kdenlivesettingsdialog.moc"
connect(m_view.size_w, SIGNAL(valueChanged(int)), this, SLOT(slotProfileEdited()));
}
+
+ProfilesDialog::ProfilesDialog(QString profilePath, QWidget * parent) :
+ QDialog(parent),
+ m_profileIsModified(false),
+ m_isCustomProfile(true),
+ m_customProfilePath(profilePath)
+{
+ m_view.setupUi(this);
+
+ // Fill colorspace list (see mlt_profile.h)
+ m_view.colorspace->addItem(getColorspaceDescription(601), 601);
+ m_view.colorspace->addItem(getColorspaceDescription(709), 709);
+ m_view.colorspace->addItem(getColorspaceDescription(240), 240);
+ m_view.colorspace->addItem(getColorspaceDescription(0), 0);
+
+ QStringList profilesFilter;
+ profilesFilter << "*";
+
+ m_view.button_save->setIcon(KIcon("document-save"));
+ m_view.button_save->setToolTip(i18n("Save profile"));
+ m_view.button_create->setHidden(true);
+ m_view.profiles_list->setHidden(true);
+ m_view.button_delete->setHidden(true);
+ m_view.button_default->setHidden(true);
+ m_view.description->setEnabled(false);
+
+ slotUpdateDisplay(profilePath);
+ connect(m_view.button_save, SIGNAL(clicked()), this, SLOT(slotSaveProfile()));
+
+ connect(m_view.description, SIGNAL(textChanged(const QString &)), this, SLOT(slotProfileEdited()));
+ connect(m_view.frame_num, SIGNAL(valueChanged(int)), this, SLOT(slotProfileEdited()));
+ connect(m_view.frame_den, SIGNAL(valueChanged(int)), this, SLOT(slotProfileEdited()));
+ connect(m_view.aspect_num, SIGNAL(valueChanged(int)), this, SLOT(slotProfileEdited()));
+ connect(m_view.aspect_den, SIGNAL(valueChanged(int)), this, SLOT(slotProfileEdited()));
+ connect(m_view.display_num, SIGNAL(valueChanged(int)), this, SLOT(slotProfileEdited()));
+ connect(m_view.display_den, SIGNAL(valueChanged(int)), this, SLOT(slotProfileEdited()));
+ connect(m_view.progressive, SIGNAL(stateChanged(int)), this, SLOT(slotProfileEdited()));
+ connect(m_view.size_h, SIGNAL(valueChanged(int)), this, SLOT(slotProfileEdited()));
+ connect(m_view.size_w, SIGNAL(valueChanged(int)), this, SLOT(slotProfileEdited()));
+}
+
void ProfilesDialog::slotProfileEdited()
{
m_profileIsModified = true;
bool ProfilesDialog::slotSaveProfile()
{
+ if (!m_customProfilePath.isEmpty()) {
+ saveProfile(m_customProfilePath);
+ return true;
+ }
const QString profileDesc = m_view.description->text();
int ix = m_view.profiles_list->findText(profileDesc);
if (ix != -1) {
}
-void ProfilesDialog::slotUpdateDisplay()
+void ProfilesDialog::slotUpdateDisplay(QString currentProfile)
{
if (askForSave() == false) {
m_view.profiles_list->blockSignals(true);
}
m_selectedProfileIndex = m_view.profiles_list->currentIndex();
- QString currentProfile = m_view.profiles_list->itemData(m_view.profiles_list->currentIndex()).toString();
+ if (currentProfile.isEmpty()) currentProfile = m_view.profiles_list->itemData(m_view.profiles_list->currentIndex()).toString();
m_isCustomProfile = currentProfile.contains('/');
m_view.button_create->setEnabled(true);
m_view.button_delete->setEnabled(m_isCustomProfile);
public:
ProfilesDialog(QWidget * parent = 0);
+ /** @brief Using this constructor, the dialog only allows editing one profile. */
+ ProfilesDialog(QString profilePath, QWidget * parent = 0);
void fillList(const QString selectedProfile = QString());
static QMap< QString, QString > getSettingsForProfile(const QString profileName);
virtual void closeEvent(QCloseEvent *event);
private slots:
- void slotUpdateDisplay();
+ void slotUpdateDisplay(QString currentProfile = QString());
void slotCreateProfile();
bool slotSaveProfile();
void slotDeleteProfile();
int m_selectedProfileIndex;
bool m_profileIsModified;
bool m_isCustomProfile;
+ /** @brief If we are in single profile editing, should contain the path for this profile. */
+ QString m_customProfilePath;
void saveProfile(const QString path);
bool askForSave();
};