aboutsummaryrefslogtreecommitdiffstats
path: root/settingsdialog.cpp
diff options
context:
space:
mode:
authornils <nils@34ebc366-c3a9-4b3c-9f84-69acf7962910>2010-11-13 22:57:40 +0000
committernils <nils@34ebc366-c3a9-4b3c-9f84-69acf7962910>2010-11-13 22:57:40 +0000
commit37959dfeffdc6af312b0ed70a6e9330e994b85ce (patch)
treeb3053dec66a061f522e8ef0648cc234269c71eca /settingsdialog.cpp
parentupdate static build on linux (diff)
downloadgpg4usb-37959dfeffdc6af312b0ed70a6e9330e994b85ce.tar.gz
gpg4usb-37959dfeffdc6af312b0ed70a6e9330e994b85ce.zip
tabbed settings dialog, but it has to be cleaned up
git-svn-id: http://cpunk.de/svn/src/gpg4usb/trunk@388 34ebc366-c3a9-4b3c-9f84-69acf7962910
Diffstat (limited to 'settingsdialog.cpp')
-rwxr-xr-xsettingsdialog.cpp411
1 files changed, 256 insertions, 155 deletions
diff --git a/settingsdialog.cpp b/settingsdialog.cpp
index 6cd357b..f76b367 100755
--- a/settingsdialog.cpp
+++ b/settingsdialog.cpp
@@ -30,72 +30,59 @@
#include <QApplication>
#include <QDir>
#include <QTranslator>
+#include <QtGui>
class QLabel;
class QButtonGroup;
class QGroupBox;
-SettingsDialog::SettingsDialog(QWidget *parent)
+ SettingsDialog::SettingsDialog(QWidget *parent)
: QDialog(parent)
{
- setWindowTitle(tr("Settings"));
- resize(500, 200);
- setModal(true);
- /*****************************************
- * Icon-Size-Box
- *****************************************/
- iconSizeBox = new QGroupBox(tr("Iconsize"));
- iconSizeGroup = new QButtonGroup();
- iconSizeSmall = new QRadioButton(tr("small"));
- iconSizeMedium = new QRadioButton(tr("medium"));
- iconSizeLarge = new QRadioButton(tr("large"));
+ tabWidget = new QTabWidget;
+ generalTab = new GeneralTab;
+ appearanceTab = new AppearanceTab;
+ mimeTab = new MimeTab;
- iconSizeGroup->addButton(iconSizeSmall, 1);
- iconSizeGroup->addButton(iconSizeMedium, 2);
- iconSizeGroup->addButton(iconSizeLarge, 3);
+ tabWidget->addTab(generalTab, tr("General"));
+ tabWidget->addTab(appearanceTab, tr("Appearance"));
+ tabWidget->addTab(mimeTab, tr("PGP/Mime"));
- iconSizeBoxLayout = new QHBoxLayout();
- iconSizeBoxLayout->addWidget(iconSizeSmall);
- iconSizeBoxLayout->addWidget(iconSizeMedium);
- iconSizeBoxLayout->addWidget(iconSizeLarge);
+ buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok
+ | QDialogButtonBox::Cancel);
- iconSizeBox->setLayout(iconSizeBoxLayout);
+ connect(buttonBox, SIGNAL(accepted()), this, SLOT(accept()));
+ connect(buttonBox, SIGNAL(rejected()), this, SLOT(reject()));
- /*****************************************
- * Icon-Style-Box
- *****************************************/
- iconStyleBox = new QGroupBox(tr("Iconstyle"));
- iconStyleGroup = new QButtonGroup();
- iconTextButton = new QRadioButton(tr("just text"));
- iconIconsButton = new QRadioButton(tr("just icons"));
- iconAllButton = new QRadioButton(tr("text and icons"));
+ QVBoxLayout *mainLayout = new QVBoxLayout;
+ mainLayout->addWidget(tabWidget);
+ mainLayout->addWidget(buttonBox);
+ setLayout(mainLayout);
- iconStyleGroup->addButton(iconTextButton, 1);
- iconStyleGroup->addButton(iconIconsButton, 2);
- iconStyleGroup->addButton(iconAllButton, 3);
+ setWindowTitle(tr("Tab Dialog"));
- iconStyleBoxLayout = new QHBoxLayout();
- iconStyleBoxLayout->addWidget(iconTextButton);
- iconStyleBoxLayout->addWidget(iconIconsButton);
- iconStyleBoxLayout->addWidget(iconAllButton);
+ exec();
+}
- iconStyleBox->setLayout(iconStyleBoxLayout);
+ GeneralTab::GeneralTab(QWidget *parent)
+ : QWidget(parent)
+ {
/*****************************************
- * Window-Size-Box
+ * remember Password-Box
*****************************************/
- windowSizeBox = new QGroupBox(tr("Windowstate"));
- windowSizeBoxLayout = new QHBoxLayout();
- windowSizeCheckBox = new QCheckBox(tr("Save window size and position on exit."), this);
- windowSizeBoxLayout->addWidget(windowSizeCheckBox);
- windowSizeBox->setLayout(windowSizeBoxLayout);
+ QGroupBox *rememberPasswordBox = new QGroupBox(tr("Remember Password"));
+ QHBoxLayout *rememberPasswordBoxLayout = new QHBoxLayout();
+ rememberPasswordCheckBox = new QCheckBox(tr("Remember password until closing gpg4usb"), this);
+ rememberPasswordBoxLayout->addWidget(rememberPasswordCheckBox);
+ rememberPasswordBox->setLayout(rememberPasswordBoxLayout);
/*****************************************
* Save-Checked-Keys-Box
*****************************************/
- saveCheckedKeysBox = new QGroupBox(tr("Save Checked Keys"));
- saveCheckedKeysBoxLayout = new QHBoxLayout();
+ QGroupBox *saveCheckedKeysBox = new QGroupBox(tr("Save Checked Keys"));
+ QHBoxLayout *saveCheckedKeysBoxLayout = new QHBoxLayout();
saveCheckedKeysCheckBox = new QCheckBox(tr("Save checked private keys on exit and restore them on next start."), this);
saveCheckedKeysBoxLayout->addWidget(saveCheckedKeysCheckBox);
saveCheckedKeysBox->setLayout(saveCheckedKeysBoxLayout);
@@ -104,29 +91,68 @@ SettingsDialog::SettingsDialog(QWidget *parent)
* Language Select Box
*****************************************/
QGroupBox *langBox = new QGroupBox(tr("Language"));
- QVBoxLayout *vbox2 = new QVBoxLayout();
+ QVBoxLayout *langBoxLayout = new QVBoxLayout();
langSelectBox = new QComboBox;
- lang = listLanguages();
+ lang = listLanguages();
foreach(QString l , lang) {
langSelectBox->addItem(l);
}
- vbox2->addWidget(langSelectBox);
+ langBoxLayout->addWidget(langSelectBox);
QLabel *langNote = new QLabel(tr("Language change is applied after restarting program."));
- vbox2->addWidget(langNote);
- langBox->setLayout(vbox2);
+ langBoxLayout->addWidget(langNote);
+ langBox->setLayout(langBoxLayout);
- /*****************************************
+ QVBoxLayout *mainLayout = new QVBoxLayout;
+ mainLayout->addWidget(rememberPasswordBox);
+ mainLayout->addWidget(saveCheckedKeysBox);
+ mainLayout->addWidget(langBox);
+ setSettings();
+ mainLayout->addStretch(1);
+ setLayout(mainLayout);
+ }
+
+
+// http://www.informit.com/articles/article.aspx?p=1405555&seqNum=3
+QHash<QString, QString> GeneralTab::listLanguages()
+{
+ QHash<QString, QString> languages;
+
+ languages.insert("", tr("System Default"));
+
+ QString appPath = qApp->applicationDirPath();
+ QDir qmDir = QDir(appPath + "/ts/");
+ QStringList fileNames =
+ qmDir.entryList(QStringList("gpg4usb_*.qm"));
+
+ for (int i = 0; i < fileNames.size(); ++i) {
+ QString locale = fileNames[i];
+ locale.remove(0, locale.indexOf('_') + 1);
+ locale.chop(3);
+
+ QTranslator translator;
+ translator.load(fileNames[i], qmDir.absolutePath());
+ QString language = translator.translate("SettingsDialog",
+ "English");
+ languages.insert(locale, language);
+ }
+ return languages;
+}
+
+
+ MimeTab::MimeTab(QWidget *parent)
+ : QWidget(parent)
+ {
+ /*****************************************
* MIME-Parsing-Box
*****************************************/
- mimeParseBox = new QGroupBox(tr("MIME-parsing (Experimental)"));
- mimeParseBoxLayout = new QVBoxLayout();
+ QGroupBox *mimeParseBox = new QGroupBox(tr("MIME-parsing (Experimental)"));
+ QVBoxLayout *mimeParseBoxLayout = new QVBoxLayout();
+
mimeParseCheckBox = new QCheckBox(tr("Try to split attachments from PGP-MIME ecrypted messages."), this);
- mimeParseBoxLayout->addWidget(mimeParseCheckBox);
mimeQPCheckBox = new QCheckBox(tr("Try to recognize quoted printable."), this);
- mimeParseBoxLayout->addWidget(mimeQPCheckBox);
mimeOpenAttachmentCheckBox = new QCheckBox(tr("Enable opening with external applications."
"\nRead statustip carefully for further information."), this);
mimeOpenAttachmentCheckBox->setToolTip(tr("Open attachments with default application for the filetype. "
@@ -138,44 +164,182 @@ SettingsDialog::SettingsDialog(QWidget *parent)
/*
* Here could be something like Qstring("?"), or an icon with an ?, with the action "show tooltip"
*/
+ mimeParseBoxLayout->addWidget(mimeParseCheckBox);
mimeParseBoxLayout->addWidget(mimeOpenAttachmentCheckBox);
+ mimeParseBoxLayout->addWidget(mimeQPCheckBox);
mimeParseBox->setLayout(mimeParseBoxLayout);
- /*****************************************
- * remember Password-Box
- *****************************************/
- rememberPasswordBox = new QGroupBox(tr("Remember Password"));
- rememberPasswordBoxLayout = new QHBoxLayout();
- rememberPasswordCheckBox = new QCheckBox(tr("Remember password until closing gpg4usb"), this);
- rememberPasswordBoxLayout->addWidget(rememberPasswordCheckBox);
- rememberPasswordBox->setLayout(rememberPasswordBoxLayout);
+ QVBoxLayout *mainLayout = new QVBoxLayout;
+ mainLayout->addWidget(mimeParseBox);
+ mainLayout->addStretch(1);
+ setLayout(mainLayout);
+ setSettings();
+ }
+
+ AppearanceTab::AppearanceTab(QWidget *parent)
+ : QWidget(parent)
+ {
+ /*****************************************
+ * Icon-Size-Box
+ *****************************************/
+ QGroupBox *iconSizeBox = new QGroupBox(tr("Iconsize"));
+ iconSizeGroup = new QButtonGroup();
+ iconSizeSmall = new QRadioButton(tr("small"));
+ iconSizeMedium = new QRadioButton(tr("medium"));
+ iconSizeLarge = new QRadioButton(tr("large"));
+
+ iconSizeGroup->addButton(iconSizeSmall, 1);
+ iconSizeGroup->addButton(iconSizeMedium, 2);
+ iconSizeGroup->addButton(iconSizeLarge, 3);
+
+ QHBoxLayout *iconSizeBoxLayout = new QHBoxLayout();
+ iconSizeBoxLayout->addWidget(iconSizeSmall);
+ iconSizeBoxLayout->addWidget(iconSizeMedium);
+ iconSizeBoxLayout->addWidget(iconSizeLarge);
+
+ iconSizeBox->setLayout(iconSizeBoxLayout);
+
+ /*****************************************
+ * Icon-Style-Box
+ *****************************************/
+ QGroupBox *iconStyleBox = new QGroupBox(tr("Iconstyle"));
+ iconStyleGroup = new QButtonGroup();
+ iconTextButton = new QRadioButton(tr("just text"));
+ iconIconsButton = new QRadioButton(tr("just icons"));
+ iconAllButton = new QRadioButton(tr("text and icons"));
+
+ iconStyleGroup->addButton(iconTextButton, 1);
+ iconStyleGroup->addButton(iconIconsButton, 2);
+ iconStyleGroup->addButton(iconAllButton, 3);
+
+ QHBoxLayout *iconStyleBoxLayout = new QHBoxLayout();
+ iconStyleBoxLayout->addWidget(iconTextButton);
+ iconStyleBoxLayout->addWidget(iconIconsButton);
+ iconStyleBoxLayout->addWidget(iconAllButton);
+
+ iconStyleBox->setLayout(iconStyleBoxLayout);
+
+ /*****************************************
+ * Window-Size-Box
+ *****************************************/
+ QGroupBox *windowSizeBox = new QGroupBox(tr("Windowstate"));
+ QHBoxLayout *windowSizeBoxLayout = new QHBoxLayout();
+ windowSizeCheckBox = new QCheckBox(tr("Save window size and position on exit."), this);
+ windowSizeBoxLayout->addWidget(windowSizeCheckBox);
+ windowSizeBox->setLayout(windowSizeBoxLayout);
+
+ QVBoxLayout *mainLayout = new QVBoxLayout;
+// layout->addWidget(topLabel);
+// layout->addWidget(applicationsListBox);
+// layout->addWidget(alwaysCheckBox);
+ mainLayout->addWidget(iconSizeBox);
+ mainLayout->addWidget(iconStyleBox);
+ mainLayout->addWidget(windowSizeBox);
+ setSettings();
+ setLayout(mainLayout);
+ }
+
+ void GeneralTab::setSettings()
+ {
+ QSettings settings;
+ // Keysaving
+ if (settings.value("keys/keySave").toBool()) saveCheckedKeysCheckBox->setCheckState(Qt::Checked);
+
+ // Remember Password
+ if (settings.value("general/rememberPassword").toBool()) rememberPasswordCheckBox->setCheckState(Qt::Checked);
+
+ //Language setting
+ QString langKey = settings.value("int/lang").toString();
+ QString langValue = lang.value(langKey);
+ qDebug() << langKey << langValue ;
+ if (langKey != "") {
+ langSelectBox->setCurrentIndex(langSelectBox->findText(langValue));
+ }
+ }
+
+ void AppearanceTab::setSettings()
+ {
+ QSettings settings;
+
+ //Iconsize
+ QSize iconSize = settings.value("toolbar/iconsize", QSize(32, 32)).toSize();
+ switch (iconSize.height()) {
+ case 12: iconSizeSmall->setChecked(true);
+ break;
+ case 24:iconSizeMedium->setChecked(true);
+ break;
+ case 32:iconSizeLarge->setChecked(true);
+ break;
+ }
+ // Iconstyle
+ Qt::ToolButtonStyle iconStyle = static_cast<Qt::ToolButtonStyle>(settings.value("toolbar/iconstyle", Qt::ToolButtonTextUnderIcon).toUInt());
+ switch (iconStyle) {
+ case Qt::ToolButtonTextOnly: iconTextButton->setChecked(true);
+ break;
+ case Qt::ToolButtonIconOnly:iconIconsButton->setChecked(true);
+ break;
+ case Qt::ToolButtonTextUnderIcon:iconAllButton->setChecked(true);
+ break;
+ default:
+ break;
+ }
+
+ // Window Save and Position
+ if (settings.value("window/windowSave").toBool()) windowSizeCheckBox->setCheckState(Qt::Checked);
+
+ }
+
+ void MimeTab::setSettings()
+ {
+ QSettings settings;
+
+ // MIME-Parsing
+ if (settings.value("mime/parsemime").toBool()) mimeParseCheckBox->setCheckState(Qt::Checked);
+
+ // Qouted Printable
+ if (settings.value("mime/parseQP").toBool()) mimeQPCheckBox->setCheckState(Qt::Checked);
+
+ // Open Attachments with external app
+ if (settings.value("mime/openAttachment").toBool()) mimeOpenAttachmentCheckBox->setCheckState(Qt::Checked);
+ }
+
+ void GeneralTab::applySettings()
+ {
+ QSettings settings;
+ settings.setValue("keys/keySave", saveCheckedKeysCheckBox->isChecked());
+ // TODO: clear passwordCache instantly on unset rememberPassword
+ settings.setValue("general/rememberPassword", rememberPasswordCheckBox->isChecked());
+ settings.setValue("int/lang", lang.key(langSelectBox->currentText()));
+qDebug() << lang.key(langSelectBox->currentText());
+foreach (QString l,lang){qDebug() << l;}
+ }
+
+ void AppearanceTab::applySettings()
+ {
+ QSettings settings;
+ switch (iconStyleGroup->checkedId()) {
+ case 1: settings.setValue("toolbar/iconstyle", Qt::ToolButtonTextOnly);
+ break;
+ case 2:settings.setValue("toolbar/iconstyle", Qt::ToolButtonIconOnly);
+ break;
+ case 3:settings.setValue("toolbar/iconstyle", Qt::ToolButtonTextUnderIcon);
+ break;
+ }
- /*****************************************
- * Button-Box
- *****************************************/
- buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel);
- connect(buttonBox, SIGNAL(accepted()), this, SLOT(applySettings()));
- connect(buttonBox, SIGNAL(rejected()), this, SLOT(reject()));
+ settings.setValue("window/windowSave", windowSizeCheckBox->isChecked());
- /*****************************************
- * Main V-Box
- *****************************************/
- vbox = new QVBoxLayout();
- vbox->addWidget(iconSizeBox);
- vbox->addWidget(iconStyleBox);
- vbox->addWidget(windowSizeBox);
- vbox->addWidget(saveCheckedKeysBox);
- vbox->addWidget(mimeParseBox);
- vbox->addWidget(rememberPasswordBox);
- vbox->addWidget(langBox);
- vbox->addWidget(buttonBox);
- setLayout(vbox);
+ }
- setSettings();
- exec();
-}
+ void MimeTab::applySettings()
+ {
+ QSettings settings;
+ settings.setValue("mime/parsemime" , mimeParseCheckBox->isChecked());
+ settings.setValue("mime/parseQP" , mimeQPCheckBox->isChecked());
+ settings.setValue("mime/openAttachment" , mimeOpenAttachmentCheckBox->isChecked());
+
+ }
-/**********************************
+ /**********************************
* Read the settings from config
* and set the buttons and checkboxes
* appropriately
@@ -184,52 +348,17 @@ void SettingsDialog::setSettings()
{
QSettings settings;
- //Iconsize
- QSize iconSize = settings.value("toolbar/iconsize", QSize(32, 32)).toSize();
- switch (iconSize.height()) {
- case 12: iconSizeSmall->setChecked(true);
- break;
- case 24:iconSizeMedium->setChecked(true);
- break;
- case 32:iconSizeLarge->setChecked(true);
- break;
- }
-
- // Iconstyle
- Qt::ToolButtonStyle iconStyle = static_cast<Qt::ToolButtonStyle>(settings.value("toolbar/iconstyle", Qt::ToolButtonTextUnderIcon).toUInt());
- switch (iconStyle) {
- case Qt::ToolButtonTextOnly: iconTextButton->setChecked(true);
- break;
- case Qt::ToolButtonIconOnly:iconIconsButton->setChecked(true);
- break;
- case Qt::ToolButtonTextUnderIcon:iconAllButton->setChecked(true);
- break;
- default:
- break;
- }
-
- // Window Save and Position
- if (settings.value("window/windowSave").toBool()) windowSizeCheckBox->setCheckState(Qt::Checked);
- // Keysaving
- if (settings.value("keys/keySave").toBool()) saveCheckedKeysCheckBox->setCheckState(Qt::Checked);
- // Remember Password
- if (settings.value("general/rememberPassword").toBool()) rememberPasswordCheckBox->setCheckState(Qt::Checked);
- // MIME-Parsing
- if (settings.value("mime/parsemime").toBool()) mimeParseCheckBox->setCheckState(Qt::Checked);
-
- // Qouted Printable
- if (settings.value("mime/parseQP").toBool()) mimeQPCheckBox->setCheckState(Qt::Checked);
-
- // Open Attachments with external app
- if (settings.value("mime/openAttachment").toBool()) mimeOpenAttachmentCheckBox->setCheckState(Qt::Checked);
+}
- //Language setting
- QString langKey = settings.value("int/lang").toString();
- QString langValue = lang.value(langKey);
- langSelectBox->setCurrentIndex(langSelectBox->findText(langValue));
+void SettingsDialog::accept()
+{
+ generalTab->applySettings();
+ mimeTab->applySettings();
+ appearanceTab->applySettings();
+ close();
}
/***********************************
@@ -239,36 +368,8 @@ void SettingsDialog::setSettings()
void SettingsDialog::applySettings()
{
QSettings settings;
- //settings.setValue("geometry", saveGeometry());
-
- switch (iconSizeGroup->checkedId()) {
- case 1: settings.setValue("toolbar/iconsize", QSize(12, 12));
- break;
- case 2:settings.setValue("toolbar/iconsize", QSize(24, 24));
- break;
- case 3:settings.setValue("toolbar/iconsize", QSize(32, 32));
- break;
- }
-
- switch (iconStyleGroup->checkedId()) {
- case 1: settings.setValue("toolbar/iconstyle", Qt::ToolButtonTextOnly);
- break;
- case 2:settings.setValue("toolbar/iconstyle", Qt::ToolButtonIconOnly);
- break;
- case 3:settings.setValue("toolbar/iconstyle", Qt::ToolButtonTextUnderIcon);
- break;
- }
-
- settings.setValue("window/windowSave", windowSizeCheckBox->isChecked());
- settings.setValue("keys/keySave", saveCheckedKeysCheckBox->isChecked());
- // TODO: clear passwordCache instantly on unset rememberPassword
- settings.setValue("general/rememberPassword", rememberPasswordCheckBox->isChecked());
- settings.setValue("mime/parsemime" , mimeParseCheckBox->isChecked());
- settings.setValue("mime/parseQP" , mimeQPCheckBox->isChecked());
- settings.setValue("mime/openAttachment" , mimeOpenAttachmentCheckBox->isChecked());
- settings.setValue("int/lang", lang.key(langSelectBox->currentText()));
accept();
}