summaryrefslogtreecommitdiffstats
path: root/utils/themeeditor/gui/preferencesdialog.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'utils/themeeditor/gui/preferencesdialog.cpp')
-rw-r--r--utils/themeeditor/gui/preferencesdialog.cpp206
1 files changed, 206 insertions, 0 deletions
diff --git a/utils/themeeditor/gui/preferencesdialog.cpp b/utils/themeeditor/gui/preferencesdialog.cpp
new file mode 100644
index 0000000000..8cd9665779
--- /dev/null
+++ b/utils/themeeditor/gui/preferencesdialog.cpp
@@ -0,0 +1,206 @@
+/***************************************************************************
+ * __________ __ ___.
+ * Open \______ \ ____ ____ | | _\_ |__ _______ ___
+ * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
+ * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
+ * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
+ * \/ \/ \/ \/ \/
+ * $Id$
+ *
+ * Copyright (C) 2010 Robert Bieber
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ****************************************************************************/
+
+#include "preferencesdialog.h"
+#include "ui_preferencesdialog.h"
+
+#include <QSettings>
+#include <QColorDialog>
+
+PreferencesDialog::PreferencesDialog(QWidget *parent) :
+ QDialog(parent),
+ ui(new Ui::PreferencesDialog)
+{
+ ui->setupUi(this);
+ setupUI();
+ loadSettings();
+}
+
+PreferencesDialog::~PreferencesDialog()
+{
+ delete ui;
+}
+
+void PreferencesDialog::loadSettings()
+{
+ loadColors();
+ loadFont();
+}
+
+void PreferencesDialog::loadColors()
+{
+
+ QSettings settings;
+
+ /* The list of buttons from the SkinHighlighter group */
+
+ settings.beginGroup("SkinHighlighter");
+
+ commentColor = settings.value("commentColor",
+ QColor(0, 180, 0)).value<QColor>();
+ setButtonColor(ui->commentButton, commentColor);
+
+ escapedColor = settings.value("escapedColor",
+ QColor(120,120,120)).value<QColor>();
+ setButtonColor(ui->escapedButton, escapedColor);
+
+ conditionalColor = settings.value("conditionalColor",
+ QColor(0, 0, 180)).value<QColor>();
+ setButtonColor(ui->conditionalButton, conditionalColor);
+
+ tagColor = settings.value("tagColor",
+ QColor(180, 0, 0)).value<QColor>();
+ setButtonColor(ui->tagButton, tagColor);
+
+ settings.endGroup();
+
+ /* Buttons from the editor group */
+ settings.beginGroup("SkinDocument");
+
+ fgColor = settings.value("fgColor", Qt::black).value<QColor>();
+ setButtonColor(ui->fgButton, fgColor);
+
+ bgColor = settings.value("bgColor", Qt::white).value<QColor>();
+ setButtonColor(ui->bgButton, bgColor);
+
+ errorColor = settings.value("errorColor", Qt::red).value<QColor>();
+ setButtonColor(ui->errorButton, errorColor);
+
+ settings.endGroup();
+}
+
+void PreferencesDialog::loadFont()
+{
+ QSettings settings;
+ settings.beginGroup("SkinDocument");
+
+ QFont def("Monospace");
+ def.setStyleHint(QFont::TypeWriter);
+
+ QVariant family = settings.value("fontFamily", def);
+ int size = settings.value("fontSize", 12).toInt();
+
+ settings.endGroup();
+
+ ui->fontSelect->setCurrentFont(family.value<QFont>());
+ ui->fontSize->setValue(size);
+
+}
+
+void PreferencesDialog::saveSettings()
+{
+ saveColors();
+ saveFont();
+}
+
+void PreferencesDialog::saveColors()
+{
+ QSettings settings;
+
+ /* Saving the editor colors */
+ settings.beginGroup("SkinDocument");
+
+ settings.setValue("fgColor", fgColor);
+ settings.setValue("bgColor", bgColor);
+ settings.setValue("errorColor", errorColor);
+
+ settings.endGroup();
+
+ /* Saving the highlighting colors */
+ settings.beginGroup("SkinHighlighter");
+
+ settings.setValue("tagColor", tagColor);
+ settings.setValue("commentColor", commentColor);
+ settings.setValue("conditionalColor", conditionalColor);
+ settings.setValue("escapedColor", escapedColor);
+
+ settings.endGroup();
+}
+
+void PreferencesDialog::saveFont()
+{
+ QSettings settings;
+ settings.beginGroup("SkinDocument");
+
+ settings.setValue("fontFamily", ui->fontSelect->currentFont());
+ settings.setValue("fontSize", ui->fontSize->value());
+
+ settings.endGroup();
+}
+
+void PreferencesDialog::setupUI()
+{
+ /* Connecting color buttons */
+ QList<QPushButton*> buttons;
+ buttons.append(ui->bgButton);
+ buttons.append(ui->fgButton);
+ buttons.append(ui->commentButton);
+ buttons.append(ui->tagButton);
+ buttons.append(ui->conditionalButton);
+ buttons.append(ui->escapedButton);
+ buttons.append(ui->errorButton);
+
+ for(int i = 0; i < buttons.count(); i++)
+ QObject::connect(buttons[i], SIGNAL(pressed()),
+ this, SLOT(colorClicked()));
+}
+
+void PreferencesDialog::colorClicked()
+{
+ QColor* toEdit = 0, newColor;
+
+ if(QObject::sender() == ui->bgButton)
+ toEdit = &bgColor;
+ else if(QObject::sender() == ui->fgButton)
+ toEdit = &fgColor;
+ else if(QObject::sender() == ui->commentButton)
+ toEdit = &commentColor;
+ else if(QObject::sender() == ui->tagButton)
+ toEdit = &tagColor;
+ else if(QObject::sender() == ui->conditionalButton)
+ toEdit = &conditionalColor;
+ else if(QObject::sender() == ui->escapedButton)
+ toEdit = &escapedColor;
+ else if(QObject::sender() == ui->errorButton)
+ toEdit = &errorColor;
+
+ if(!toEdit)
+ return;
+
+ newColor = QColorDialog::getColor(*toEdit, this);
+ if (newColor.isValid())
+ {
+ *toEdit = newColor;
+ setButtonColor(dynamic_cast<QPushButton*>(QObject::sender()), *toEdit);
+ }
+}
+
+void PreferencesDialog::accept()
+{
+ saveSettings();
+ QDialog::accept();
+}
+
+void PreferencesDialog::reject()
+{
+ loadSettings();
+ QDialog::reject();
+}