aboutsummaryrefslogtreecommitdiff
path: root/src/plugins/General/fileops/settingsdialog.cpp
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2009-05-09 19:22:00 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2009-05-09 19:22:00 +0000
commit08de867fc96c121b518523fb2e832f9c80539f01 (patch)
tree49b05a4382c610ef1360fab89144cc857e1014a2 /src/plugins/General/fileops/settingsdialog.cpp
parent5c583bfdd4a74273576867191d0145227a5d63d7 (diff)
downloadqmmp-08de867fc96c121b518523fb2e832f9c80539f01.tar.gz
qmmp-08de867fc96c121b518523fb2e832f9c80539f01.tar.bz2
qmmp-08de867fc96c121b518523fb2e832f9c80539f01.zip
updated fileops plugin, fixed file dialog bugs
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@934 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/plugins/General/fileops/settingsdialog.cpp')
-rw-r--r--src/plugins/General/fileops/settingsdialog.cpp104
1 files changed, 102 insertions, 2 deletions
diff --git a/src/plugins/General/fileops/settingsdialog.cpp b/src/plugins/General/fileops/settingsdialog.cpp
index 57872e7b7..92c221497 100644
--- a/src/plugins/General/fileops/settingsdialog.cpp
+++ b/src/plugins/General/fileops/settingsdialog.cpp
@@ -21,8 +21,10 @@
#include <QSettings>
#include <QCheckBox>
#include <QComboBox>
+#include <QMenu>
#include <qmmp/qmmp.h>
+#include <qmmpui/filedialog.h>
#include "fileops.h"
#include "settingsdialog.h"
@@ -64,6 +66,13 @@ SettingsDialog::SettingsDialog(QWidget *parent)
ui.tableWidget->setItem (i, 2, item);
}
settings.endGroup();
+ connect (ui.tableWidget, SIGNAL(currentItemChanged (QTableWidgetItem *, QTableWidgetItem *)),
+ SLOT(updateLineEdits()));
+ updateLineEdits();
+ connect (ui.destinationEdit, SIGNAL(textChanged (const QString&)), SLOT(changeDestination(const QString&)));
+ connect (ui.patternEdit, SIGNAL(textChanged (const QString&)), SLOT(changePattern(const QString&)));
+ connect (ui.destButton, SIGNAL(clicked()), SLOT(selectDirectory()));
+ createMenus();
}
@@ -73,8 +82,32 @@ SettingsDialog::~SettingsDialog()
void SettingsDialog::accept()
{
QSettings settings(Qmmp::configFile(), QSettings::IniFormat);
- //settings.beginGroup("CUE");
- //settings.setValue("encoding", ui.cueEncComboBox->currentText());
+ settings.beginGroup("FileOps");
+ //remove unused keys
+ int count = settings.value("count", 0).toInt();
+ for (int i = ui.tableWidget->rowCount() - 1; i < count; ++i)
+ {
+ settings.remove (QString("enabled_%1").arg(i));
+ settings.remove (QString("action_%1").arg(i));
+ settings.remove (QString("name_%1").arg(i));
+ settings.remove (QString("pattern_%1").arg(i));
+ settings.remove (QString("destination_%1").arg(i));
+ }
+ //save actions
+ settings.setValue("count", ui.tableWidget->rowCount());
+ for (int i = 0; i < ui.tableWidget->rowCount(); ++i)
+ {
+ QCheckBox *checkBox = qobject_cast<QCheckBox *>(ui.tableWidget->cellWidget (i, 0));
+ settings.setValue (QString("enabled_%1").arg(i), checkBox->isChecked());
+
+ QComboBox *comboBox = qobject_cast<QComboBox *>(ui.tableWidget->cellWidget (i, 1));
+ settings.setValue (QString("action_%1").arg(i), comboBox->itemData (comboBox->currentIndex()));
+
+ ActionItem *item = (ActionItem *) ui.tableWidget->item(i,2);
+ settings.setValue (QString("name_%1").arg(i), item->text());
+ settings.setValue (QString("pattern_%1").arg(i), item->pattern());
+ settings.setValue (QString("destination_%1").arg(i), item->destination());
+ }
settings.endGroup();
QDialog::accept();
}
@@ -108,3 +141,70 @@ void SettingsDialog::deleteAction()
if (ui.tableWidget->currentRow () >= 0)
ui.tableWidget->removeRow (ui.tableWidget->currentRow ());
}
+
+void SettingsDialog::updateLineEdits()
+{
+ if (ui.tableWidget->currentRow () >= 0)
+ {
+ ActionItem *item = (ActionItem *) ui.tableWidget->item(ui.tableWidget->currentRow (), 2);
+ ui.destinationEdit->setText(item->destination());
+ ui.patternEdit->setText(item->pattern());
+ }
+ else
+ {
+ ui.destinationEdit->clear();
+ ui.patternEdit->clear();
+ }
+}
+
+void SettingsDialog::changeDestination(const QString &dest)
+{
+ if (ui.tableWidget->currentRow () >= 0)
+ {
+ ActionItem *item = (ActionItem *) ui.tableWidget->item(ui.tableWidget->currentRow (), 2);
+ item->setDestination(dest);
+ }
+}
+
+void SettingsDialog::changePattern(const QString &pattern)
+{
+ if (ui.tableWidget->currentRow () >= 0)
+ {
+ ActionItem *item = (ActionItem *) ui.tableWidget->item(ui.tableWidget->currentRow (), 2);
+ item->setPattern(pattern);
+ }
+}
+
+void SettingsDialog::createMenus()
+{
+ QMenu *menu = new QMenu(this);
+ menu->addAction(tr("Artist"))->setData("%p");
+ menu->addAction(tr("Album"))->setData("%a");
+ menu->addAction(tr("Title"))->setData("%t");
+ menu->addAction(tr("Tracknumber"))->setData("%n");
+ menu->addAction(tr("Genre"))->setData("%g");
+ menu->addAction(tr("Filename"))->setData("%f");
+ menu->addAction(tr("Filepath"))->setData("%F");
+ menu->addAction(tr("Date"))->setData("%d");
+ menu->addAction(tr("Year"))->setData("%y");
+ menu->addAction(tr("Comment"))->setData("%c");
+ ui.patternButton->setMenu(menu);
+ ui.patternButton->setPopupMode(QToolButton::InstantPopup);
+ connect(menu, SIGNAL(triggered (QAction *)), SLOT(addTitleString( QAction *)));
+}
+
+void SettingsDialog::addTitleString(QAction *a)
+{
+ if (ui.patternEdit->cursorPosition () < 1)
+ ui.patternEdit->insert(a->data().toString());
+ else
+ ui.patternEdit->insert("_"+a->data().toString());
+}
+
+void SettingsDialog::selectDirectory()
+{
+ QString dir = FileDialog::getExistingDirectory(this, tr("Choose a directory"),
+ ui.destinationEdit->text());
+ if(!dir.isEmpty())
+ ui.destinationEdit->setText(dir);
+}