diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2011-10-04 18:19:15 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2011-10-04 18:19:15 +0000 |
| commit | 899a15f90c2845cd44e0e6aa1dc4eae5dcc68f2b (patch) | |
| tree | e81614170ef7ea506acf809e125990cf2adff348 /src/plugins/General/converter/converterdialog.cpp | |
| parent | 4e1820f359a8e50cfc48274cb45753a9d8d6307b (diff) | |
| download | qmmp-899a15f90c2845cd44e0e6aa1dc4eae5dcc68f2b.tar.gz qmmp-899a15f90c2845cd44e0e6aa1dc4eae5dcc68f2b.tar.bz2 qmmp-899a15f90c2845cd44e0e6aa1dc4eae5dcc68f2b.zip | |
converter: added preset editor
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@2378 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/plugins/General/converter/converterdialog.cpp')
| -rw-r--r-- | src/plugins/General/converter/converterdialog.cpp | 93 |
1 files changed, 85 insertions, 8 deletions
diff --git a/src/plugins/General/converter/converterdialog.cpp b/src/plugins/General/converter/converterdialog.cpp index df3db7aa5..125d7e035 100644 --- a/src/plugins/General/converter/converterdialog.cpp +++ b/src/plugins/General/converter/converterdialog.cpp @@ -24,6 +24,7 @@ #include <qmmpui/playlistitem.h> #include <qmmpui/metadataformatter.h> #include <qmmpui/filedialog.h> +#include "preseteditor.h" #include "converterdialog.h" ConverterDialog::ConverterDialog(QList <PlayListItem *> items, QWidget *parent) : QDialog(parent) @@ -47,6 +48,8 @@ ConverterDialog::ConverterDialog(QList <PlayListItem *> items, QWidget *parent) ui.outFileEdit->setText(settings.value("file_name","%p - %t").toString()); settings.endGroup(); createMenus(); + readPresets(":/default_converter_preset"); + readPresets(QDir::homePath() + "/.qmmp/converterrc"); } QStringList ConverterDialog::selectedUrls() const @@ -75,6 +78,22 @@ void ConverterDialog::accept() settings.setValue("out_dir", ui.outDirEdit->text()); settings.value("file_name", ui.outFileEdit->text()); settings.endGroup(); + + QSettings preset_settings(QDir::homePath() + "/.qmmp/converterrc", QSettings::IniFormat); + preset_settings.clear(); + for(int i = 0; i < ui.presetComboBox->count(); ++i) + { + QString name = ui.presetComboBox->itemText(i); + QVariantMap data = ui.presetComboBox->itemData(i).toMap(); + if(data["read_only"].toBool()) + continue; + preset_settings.beginGroup(name); + preset_settings.setValue("ext", data["ext"].toString()); + preset_settings.setValue("command", data["command"].toString()); + preset_settings.setValue("use_16bit", data["use_16bit"].toBool()); + preset_settings.setValue("tags", data["tags"].toBool()); + preset_settings.endGroup(); + } QDialog::accept(); } @@ -92,7 +111,6 @@ void ConverterDialog::createMenus() fileNameMenu->addAction(tr("Duration"))->setData("%l"); fileNameMenu->addAction(tr("Disc number"))->setData("%D"); fileNameMenu->addAction(tr("File name"))->setData("%f"); - fileNameMenu->addAction(tr("File path"))->setData("%F"); fileNameMenu->addAction(tr("Year"))->setData("%y"); fileNameMenu->addAction(tr("Condition"))->setData("%if(%p&%t,%p - %t,%f)"); ui.fileNameButton->setMenu(fileNameMenu); @@ -100,9 +118,9 @@ void ConverterDialog::createMenus() connect(fileNameMenu, SIGNAL(triggered(QAction *)), SLOT(addTitleString(QAction *))); QMenu *presetMenu = new QMenu(this); - presetMenu->addAction(tr("Create"), this, SLOT(copyPreset())); + presetMenu->addAction(tr("Create"), this, SLOT(createPreset())); presetMenu->addAction(tr("Edit"), this, SLOT(editPreset())); - presetMenu->addAction(tr("Copy"), this, SLOT(copyPreset())); + presetMenu->addAction(tr("Create a copy"), this, SLOT(copyPreset())); presetMenu->addAction(tr("Delete"), this, SLOT(deletePreset())); ui.presetButton->setMenu(presetMenu); ui.presetButton->setPopupMode(QToolButton::InstantPopup); @@ -118,25 +136,84 @@ void ConverterDialog::addTitleString(QAction *a) void ConverterDialog::createPreset() { - + PresetEditor *editor = new PresetEditor(QString(), QVariantMap(), this); + if(editor->exec() == QDialog::Accepted) + { + QString name = uniqueName(editor->name()); + QVariantMap data = editor->data(); + if(!name.isEmpty() && data["ext"].isValid() && data["command"].isValid()) + ui.presetComboBox->addItem (name, data); + } + editor->deleteLater(); } void ConverterDialog::editPreset() { - + if(ui.presetComboBox->currentIndex() == -1) + return; + int index = ui.presetComboBox->currentIndex(); + if(ui.presetComboBox->itemData(index).toMap()["read_only"].toBool()) + return; + PresetEditor *editor = new PresetEditor(ui.presetComboBox->currentText(), + ui.presetComboBox->itemData(index).toMap(), this); + if(editor->exec() == QDialog::Accepted) + { + QString name = uniqueName(editor->name()); + QVariantMap data = editor->data(); + if(!name.isEmpty() && data["ext"].isValid() && data["command"].isValid()) + { + ui.presetComboBox->setItemText(index, name); + ui.presetComboBox->setItemData(index, data); + } + } + editor->deleteLater(); } void ConverterDialog::copyPreset() { - + if(ui.presetComboBox->currentIndex() == -1) + return; + int index = ui.presetComboBox->currentIndex(); + QString name = ui.presetComboBox->currentText(); + QVariant data = ui.presetComboBox->itemData(index); + ui.presetComboBox->addItem (uniqueName(name), data); } void ConverterDialog::deletePreset() { - + if(ui.presetComboBox->currentIndex() == -1) + return; + if(ui.presetComboBox->itemData(ui.presetComboBox->currentIndex()).toMap()["read_only"].toBool()) + return; + ui.presetComboBox->removeItem(ui.presetComboBox->currentIndex()); } -void ConverterDialog::readSettings() +void ConverterDialog::readPresets(const QString &path) { + QSettings settings(path, QSettings::IniFormat); + foreach(QString group_name, settings.childGroups()) + { + settings.beginGroup(group_name); + QVariantMap data; + data.insert("ext", settings.value("ext").toString()); + data.insert("command", settings.value("command").toString()); + data.insert("use_16bit", settings.value("use_16bit").toBool()); + data.insert("tags", settings.value("tags").toBool()); + data.insert("read_only", path.startsWith(":/")); + ui.presetComboBox->addItem (group_name, data); + settings.endGroup(); + } +} +QString ConverterDialog::uniqueName(const QString &name) +{ + QString unique_name = name; + int i = 0; + forever + { + if(ui.presetComboBox->findText(unique_name) == -1) + break; + unique_name = name + QString("_%1").arg(++i); + } + return unique_name; } |
