1 #include <QtGui>
2 #include <QFileDialog>
3 #include <QMessageBox>
4 #include <QStyleFactory>
5
6 #include "preferencesdialog.h"
7 #include "ui_preferencesdialog.h"
8 #include "mainwindow.h"
9 #include "macros.h"
10 #include "qchdmansettings.h"
11
12 extern QtChdmanGuiSettings *globalConfig;
13 extern MainWindow *mainWindow;
14
PreferencesDialog(QWidget * parent)15 PreferencesDialog::PreferencesDialog(QWidget *parent) :
16 QDialog(parent),
17 ui(new Ui::PreferencesDialog)
18 {
19 ui->setupUi(this);
20 setModal(true);
21 ui->comboBoxStyle->addItems(QStyleFactory::keys());
22 restoreSettings();
23 }
24
~PreferencesDialog()25 PreferencesDialog::~PreferencesDialog()
26 {
27 delete ui;
28 }
29
initialSetup()30 void PreferencesDialog::initialSetup()
31 {
32 ui->tabWidget->setCurrentWidget(ui->tabPaths);
33 ui->lineEditChdmanBinary->setFocus();
34 exec();
35 }
36
applySettings()37 void PreferencesDialog::applySettings()
38 {
39 // GUI
40 QString lang = ui->comboBoxLanguage->currentText();
41 globalConfig->setPreferencesLanguage(lang.mid(lang.indexOf("(") + 1, 2));
42 globalConfig->setPreferencesGuiStyle(ui->comboBoxStyle->currentText());
43 qApp->setStyle(globalConfig->preferencesGuiStyle());
44 globalConfig->setPreferencesAppFont(ui->fontComboBoxAppFont->currentFont().toString());
45 globalConfig->setPreferencesAppFontSize(ui->spinBoxAppFontSize->value());
46 QFont f;
47 f.fromString(globalConfig->preferencesAppFont());
48 f.setPointSize(globalConfig->preferencesAppFontSize());
49 qApp->setFont(f);
50 globalConfig->setPreferencesLogFont(ui->fontComboBoxLogFont->currentFont().toString());
51 globalConfig->setPreferencesLogFontSize(ui->spinBoxLogFontSize->value());
52 globalConfig->setPreferencesEditorFont(ui->fontComboBoxEditorFont->currentFont().toString());
53 globalConfig->setPreferencesEditorFontSize(ui->spinBoxEditorFontSize->value());
54 globalConfig->setPreferencesShowHelpTexts(ui->checkBoxShowProjectHelp->isChecked());
55 globalConfig->setPreferencesMaximizeWindows(ui->checkBoxMaximizeWindows->isChecked());
56 globalConfig->setPreferencesNativeFileDialogs(ui->checkBoxNativeFileDialogs->isChecked());
57 globalConfig->setPreferencesLogChannelNames(ui->checkBoxLogChannelNames->isChecked());
58
59 // Paths
60 globalConfig->setPreferencesChdmanBinary(ui->lineEditChdmanBinary->text());
61 QFileInfo chdmanInfo(ui->lineEditChdmanBinary->text());
62 if ( chdmanInfo.exists() && chdmanInfo.isExecutable() )
63 ui->labelChdmanWarningPixmap->hide();
64 else
65 ui->labelChdmanWarningPixmap->show();
66 globalConfig->setPreferencesPreferredCHDInputPath(ui->lineEditPreferredCHDInputPath->text());
67 globalConfig->setPreferencesPreferredInputPath(ui->lineEditPreferredInputPath->text());
68 globalConfig->setPreferencesPreferredCHDOutputPath(ui->lineEditPreferredCHDOutputPath->text());
69 globalConfig->setPreferencesPreferredOutputPath(ui->lineEditPreferredOutputPath->text());
70
71 mainWindow->applySettings();
72 }
73
on_pushButtonOk_clicked()74 void PreferencesDialog::on_pushButtonOk_clicked()
75 {
76 applySettings();
77 }
78
on_pushButtonApply_clicked()79 void PreferencesDialog::on_pushButtonApply_clicked()
80 {
81 applySettings();
82 adjustSize();
83 }
84
on_pushButtonCancel_clicked()85 void PreferencesDialog::on_pushButtonCancel_clicked()
86 {
87 restoreSettings();
88 }
89
on_toolButtonBrowseChdmanBinary_clicked()90 void PreferencesDialog::on_toolButtonBrowseChdmanBinary_clicked()
91 {
92 QString s = QFileDialog::getOpenFileName(this, tr("Choose CHDMAN binary"), ui->lineEditChdmanBinary->text(), tr("All files (*)"), 0, globalConfig->preferencesNativeFileDialogs() ? (QFileDialog::Options)0 : QFileDialog::DontUseNativeDialog);
93 if ( !s.isNull() )
94 ui->lineEditChdmanBinary->setText(s);
95 }
96
on_toolButtonBrowsePreferredCHDInputPath_clicked()97 void PreferencesDialog::on_toolButtonBrowsePreferredCHDInputPath_clicked()
98 {
99 QString s = QFileDialog::getExistingDirectory(this, tr("Choose preferred CHD input path"), ui->lineEditPreferredCHDInputPath->text(), globalConfig->preferencesNativeFileDialogs() ? (QFileDialog::Options)0 : QFileDialog::DontUseNativeDialog);
100 if ( !s.isNull() )
101 ui->lineEditPreferredCHDInputPath->setText(s);
102 }
103
on_toolButtonBrowsePreferredInputPath_clicked()104 void PreferencesDialog::on_toolButtonBrowsePreferredInputPath_clicked()
105 {
106 QString s = QFileDialog::getExistingDirectory(this, tr("Choose preferred non-CHD input path"), ui->lineEditPreferredInputPath->text(), globalConfig->preferencesNativeFileDialogs() ? (QFileDialog::Options)0 : QFileDialog::DontUseNativeDialog);
107 if ( !s.isNull() )
108 ui->lineEditPreferredInputPath->setText(s);
109 }
110
on_toolButtonBrowsePreferredCHDOutputPath_clicked()111 void PreferencesDialog::on_toolButtonBrowsePreferredCHDOutputPath_clicked()
112 {
113 QString s = QFileDialog::getExistingDirectory(this, tr("Choose preferred CHD output path"), ui->lineEditPreferredCHDOutputPath->text(), globalConfig->preferencesNativeFileDialogs() ? (QFileDialog::Options)0 : QFileDialog::DontUseNativeDialog);
114 if ( !s.isNull() )
115 ui->lineEditPreferredCHDOutputPath->setText(s);
116 }
117
on_toolButtonBrowsePreferredOutputPath_clicked()118 void PreferencesDialog::on_toolButtonBrowsePreferredOutputPath_clicked()
119 {
120 QString s = QFileDialog::getExistingDirectory(this, tr("Choose preferred non-CHD output path"), ui->lineEditPreferredOutputPath->text(), globalConfig->preferencesNativeFileDialogs() ? (QFileDialog::Options)0 : QFileDialog::DontUseNativeDialog);
121 if ( !s.isNull() )
122 ui->lineEditPreferredOutputPath->setText(s);
123 }
124
restoreSettings()125 void PreferencesDialog::restoreSettings()
126 {
127 // GUI
128 QString lang = globalConfig->preferencesLanguage();
129 int i = ui->comboBoxLanguage->findText("(" + lang + ")", Qt::MatchEndsWith);
130 if ( i >= 0 )
131 ui->comboBoxLanguage->setCurrentIndex(i);
132 else
133 ui->comboBoxLanguage->setCurrentIndex(ui->comboBoxLanguage->findText("(us)", Qt::MatchEndsWith));
134
135 i = ui->comboBoxStyle->findText(globalConfig->preferencesGuiStyle());
136 if ( i >= 0 )
137 ui->comboBoxStyle->setCurrentIndex(i);
138 QFont f;
139 if ( !f.fromString(globalConfig->preferencesAppFont()) )
140 f = qApp->font();
141 ui->fontComboBoxAppFont->setCurrentFont(f);
142 ui->spinBoxAppFontSize->setValue(globalConfig->preferencesAppFontSize());
143 if ( !f.fromString(globalConfig->preferencesLogFont()) )
144 f = qApp->font();
145 ui->fontComboBoxLogFont->setCurrentFont(f);
146 ui->spinBoxLogFontSize->setValue(globalConfig->preferencesLogFontSize());
147 if ( !f.fromString(globalConfig->preferencesEditorFont()) )
148 f = qApp->font();
149 ui->fontComboBoxEditorFont->setCurrentFont(f);
150 ui->spinBoxEditorFontSize->setValue(globalConfig->preferencesEditorFontSize());
151 ui->checkBoxShowProjectHelp->setChecked(globalConfig->preferencesShowHelpTexts());
152 ui->checkBoxMaximizeWindows->setChecked(globalConfig->preferencesMaximizeWindows());
153 ui->checkBoxNativeFileDialogs->setChecked(globalConfig->preferencesNativeFileDialogs());
154 ui->checkBoxLogChannelNames->setChecked(globalConfig->preferencesLogChannelNames());
155
156 // Paths
157 ui->lineEditChdmanBinary->setText(globalConfig->preferencesChdmanBinary());
158 QFileInfo chdmanInfo(ui->lineEditChdmanBinary->text());
159 if ( chdmanInfo.exists() && chdmanInfo.isExecutable() )
160 ui->labelChdmanWarningPixmap->hide();
161 else
162 ui->labelChdmanWarningPixmap->show();
163 ui->lineEditPreferredCHDInputPath->setText(globalConfig->preferencesPreferredCHDInputPath());
164 ui->lineEditPreferredInputPath->setText(globalConfig->preferencesPreferredInputPath());
165 ui->lineEditPreferredCHDOutputPath->setText(globalConfig->preferencesPreferredCHDOutputPath());
166 ui->lineEditPreferredOutputPath->setText(globalConfig->preferencesPreferredOutputPath());
167 }
168
showEvent(QShowEvent * e)169 void PreferencesDialog::showEvent(QShowEvent *e)
170 {
171 adjustSize();
172 QDialog::showEvent(e);
173 }
174