source: tspsg/src/settingsdialog.cpp @ b8a2a118c4

0.1.4.170-beta2-bb10appveyorimgbotreadme
Last change on this file since b8a2a118c4 was b8a2a118c4, checked in by Oleksii Serdiuk, 13 years ago
  • Translucency effect is now available on all desktop platforms. No check for its support by window system is made at this moment. Blur is only available in Windows Vista or higher.
  • Property mode set to 100644
File size: 19.2 KB
RevLine 
[1babbd6ba3]1/*
2 *  TSPSG: TSP Solver and Generator
3 *  Copyright (C) 2007-2010 Lёppa <contacts[at]oleksii[dot]name>
4 *
5 *  $Id$
6 *  $URL$
7 *
8 *  This file is part of TSPSG.
9 *
10 *  TSPSG is free software: you can redistribute it and/or modify
11 *  it under the terms of the GNU General Public License as published by
12 *  the Free Software Foundation, either version 3 of the License, or
13 *  (at your option) any later version.
14 *
15 *  TSPSG is distributed in the hope that it will be useful,
16 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
17 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18 *  GNU General Public License for more details.
19 *
20 *  You should have received a copy of the GNU General Public License
21 *  along with TSPSG.  If not, see <http://www.gnu.org/licenses/>.
22 */
23
24#include "settingsdialog.h"
25
26/*!
27 * \brief Class constructor.
28 * \param parent Settings Dialog parent widget.
29 *
30 * Initializes Settings Dialog and creates its layout based on target OS.
31 */
32SettingsDialog::SettingsDialog(QWidget *parent)
[9eb63a1598]33    : QDialog(parent), _newFont(false), _newColor(false), _translucency(0)
[1babbd6ba3]34{
[9eb63a1598]35    setupUi(this);
[1babbd6ba3]36
[9eb63a1598]37    setWindowIcon(GET_ICON("preferences-system"));
[3cadf24d00]38
[9eb63a1598]39    buttonBox->button(QDialogButtonBox::Ok)->setIcon(GET_ICON("dialog-ok"));
[9adbc413c7]40#ifndef QT_NO_STATUSTIP
[9eb63a1598]41    buttonBox->button(QDialogButtonBox::Ok)->setStatusTip(tr("Save new preferences"));
[9adbc413c7]42#endif
[9eb63a1598]43    buttonBox->button(QDialogButtonBox::Ok)->setCursor(QCursor(Qt::PointingHandCursor));
44    buttonBox->button(QDialogButtonBox::Cancel)->setIcon(GET_ICON("dialog-cancel"));
[9adbc413c7]45#ifndef QT_NO_STATUSTIP
[9eb63a1598]46    buttonBox->button(QDialogButtonBox::Cancel)->setStatusTip(tr("Close without saving preferences"));
[9adbc413c7]47#endif
[9eb63a1598]48    buttonBox->button(QDialogButtonBox::Cancel)->setCursor(QCursor(Qt::PointingHandCursor));
[1babbd6ba3]49
[9eb63a1598]50    buttonColor->setIcon(GET_ICON("format-text-color"));
51    buttonFont->setIcon(GET_ICON("preferences-desktop-font"));
52    buttonHelp->setIcon(GET_ICON("help-hint"));
[3cadf24d00]53
[317ba0432e]54QPalette p = bgWhite->palette();
[9eb63a1598]55    p.setColor(QPalette::Window, p.color(QPalette::Base));
56    bgWhite->setPalette(p);
[317ba0432e]57
[9eb63a1598]58    p = lineHorizontal->palette();
59    p.setColor(QPalette::Window, p.color(QPalette::Text));
60    lineHorizontal->setPalette(p);
[317ba0432e]61
[0007f69c46]62// Layout helpers
63QBoxLayout *box;
64QHBoxLayout *hbox;
[e26679937d]65#ifndef QT_NO_PRINTER
[9eb63a1598]66    cbHQGraph = new QCheckBox(bgWhite);
67    cbHQGraph->setObjectName("cbHQGraph");
[e26679937d]68#ifndef QT_NO_STATUSTIP
[9eb63a1598]69    cbHQGraph->setStatusTip(tr("Higher quality graph looks much better when printing but uglier on the screen"));
[e26679937d]70#endif // QT_NO_STATUSTIP
[9eb63a1598]71    cbHQGraph->setText(tr("Draw solution graph in higher quality"));
72    cbHQGraph->setCursor(QCursor(Qt::PointingHandCursor));
73
74    box = static_cast<QBoxLayout *>(tabOutput->layout());
75    hbox = new QHBoxLayout();
76    hbox->addSpacing(10);
77    hbox->addWidget(cbHQGraph);
78    box->insertLayout(box->indexOf(cbShowGraph) + 1, hbox);
79    connect(cbShowGraph, SIGNAL(toggled(bool)), cbHQGraph, SLOT(setEnabled(bool)));
[e26679937d]80#endif
81
[9eb63a1598]82    if (hasUpdater()) {
83        cbCheck4Updates = new QCheckBox(bgWhite);
84        cbCheck4Updates->setObjectName("cbCheck4Updates");
[f5c945d7ac]85#ifndef QT_NO_STATUSTIP
[9eb63a1598]86        cbCheck4Updates->setStatusTip(tr("Automatically check for updates at the given interval"));
[f5c945d7ac]87#endif // QT_NO_STATUSTIP
[9eb63a1598]88        cbCheck4Updates->setText(tr("Check for updates every"));
89        cbCheck4Updates->setCursor(QCursor(Qt::PointingHandCursor));
[f5c945d7ac]90
[9eb63a1598]91        spinUpdateCheckInterval = new QSpinBox(bgWhite);
92        spinUpdateCheckInterval->setObjectName("spinUpdateCheckInterval");
[f5c945d7ac]93#ifndef QT_NO_STATUSTIP
[9eb63a1598]94        spinUpdateCheckInterval->setStatusTip(tr("Minimal interval at which to check for updates"));
[f5c945d7ac]95#endif // QT_NO_STATUSTIP
[9eb63a1598]96        spinUpdateCheckInterval->setSuffix(tr(" days", "Don't forget a space at the beginning!"));
97        spinUpdateCheckInterval->setRange(1, 365);
98        spinUpdateCheckInterval->setCursor(QCursor(Qt::PointingHandCursor));
99
100        connect(cbCheck4Updates, SIGNAL(toggled(bool)), spinUpdateCheckInterval, SLOT(setEnabled(bool)));
101
102        box = static_cast<QBoxLayout *>(tabGeneral->layout());
103        hbox = new QHBoxLayout();
104        hbox->setSpacing(0);
105        hbox->addWidget(cbCheck4Updates);
106        hbox->addWidget(spinUpdateCheckInterval);
107        hbox->addStretch();
108        box->insertLayout(box->indexOf(cbUseNativeDialogs) + 1, hbox);
109    } else
110        cbCheck4Updates = NULL;
[f5c945d7ac]111
[1babbd6ba3]112#ifdef HANDHELD
113QVBoxLayout *vbox1; // Layout helper
114
[97e90f9be6]115#ifdef Q_WS_WINCE_WM
[9eb63a1598]116    // On screens with small height when SIP is shown and the window is resized
117    // there is not enought space for all elements.
118    // So we show the scrollbars to be able to access them.
[1babbd6ba3]119QScrollArea *scrollArea = new QScrollArea(this);
[9eb63a1598]120    scrollArea->setFrameShape(QFrame::NoFrame);
121    scrollArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
122    scrollArea->setWidgetResizable(true);
123    scrollArea->setWidget(bgWhite);
[1babbd6ba3]124#else
[9eb63a1598]125    buttons->insertStretch(buttons->indexOf(buttonHelp) + 1);
[97e90f9be6]126#endif // Q_WS_WINCE_WM
[1babbd6ba3]127
[9eb63a1598]128    bgWhite->layout()->setMargin(0);
[1babbd6ba3]129
[9eb63a1598]130    // Central layout
131    vbox1 = new QVBoxLayout(this);
132    vbox1->setMargin(0);
133    vbox1->setSpacing(0);
[97e90f9be6]134#ifdef Q_WS_WINCE_WM
[9eb63a1598]135    vbox1->addWidget(scrollArea);
[1babbd6ba3]136#else
[9eb63a1598]137    vbox1->addWidget(bgWhite);
[97e90f9be6]138#endif // Q_WS_WINCE_WM
[9eb63a1598]139    vbox1->addWidget(bgGrey);
140    setLayout(vbox1);
[1babbd6ba3]141#else // HANDHELD
[0007f69c46]142QVBoxLayout *vbox; // Layout helper
[1babbd6ba3]143
[b8a2a118c4]144#ifndef HANDHELD
[9eb63a1598]145    if (QtWin::isCompositionEnabled()) {
146        cbUseTranslucency = new QCheckBox(bgWhite);
147        cbUseTranslucency->setObjectName("cbUseTranslucency");
[1babbd6ba3]148#ifndef QT_NO_STATUSTIP
[9eb63a1598]149        cbUseTranslucency->setStatusTip(tr("Use translucent effect on the Main Window under Windows Vista and 7"));
[1babbd6ba3]150#endif // QT_NO_STATUSTIP
[9eb63a1598]151        cbUseTranslucency->setText(tr("Use translucency effects"));
152        cbUseTranslucency->setCursor(QCursor(Qt::PointingHandCursor));
153    }
[b8a2a118c4]154#endif // HANDHELD
[1babbd6ba3]155
[9eb63a1598]156    cbSaveState = new QCheckBox(bgWhite);
157    cbSaveState->setObjectName("cbSaveState");
[1babbd6ba3]158#ifndef QT_NO_STATUSTIP
[9eb63a1598]159    cbSaveState->setStatusTip(tr("Restore main window state and position on application restart"));
[1babbd6ba3]160#endif // QT_NO_STATUSTIP
[9eb63a1598]161    cbSaveState->setText(tr("Save main window state and position"));
162    cbSaveState->setCursor(QCursor(Qt::PointingHandCursor));
163
164    imgIcon = new QLabel(this);
165    imgIcon->setObjectName("imgIcon");
166    imgIcon->setSizePolicy(QSizePolicy::Fixed,QSizePolicy::Expanding);
167    imgIcon->setFrameShape(QFrame::NoFrame);
168    imgIcon->setPixmap(GET_ICON("preferences-system").pixmap(128, 128));
169    imgIcon->setStyleSheet("background-color: #0080C0; padding-top: 11px;");
170    imgIcon->setAlignment(Qt::AlignTop | Qt::AlignHCenter);
171    imgIcon->setMinimumWidth(150);
172
173    labelHint = new QLabel(bgGrey);
174    labelHint->setObjectName("labelHint");
175    labelHint->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Preferred);
[1babbd6ba3]176//      labelHint->setMinimumSize(QSize(190,28));
[9eb63a1598]177    labelHint->setMinimumSize(QSize(0,28));
178    labelHint->setMaximumSize(QSize(QWIDGETSIZE_MAX,28));
179    labelHint->setTextFormat(Qt::PlainText);
[1babbd6ba3]180//      labelHint->setAlignment(Qt::AlignLeft | Qt::AlignTop);
[9eb63a1598]181    labelHint->setWordWrap(true);
[1babbd6ba3]182#ifndef QT_NO_STATUSTIP
[9eb63a1598]183    labelHint->setStatusTip(tr("Hover mouse pointer over dialog elements to get additional help"));
[1babbd6ba3]184#endif // QT_NO_STATUSTIP
185
[9eb63a1598]186    lineVertical = new QFrame(this);
187    lineVertical->setObjectName("lineVertical");
188    lineVertical->setFrameShadow(QFrame::Plain);
189    lineVertical->setFrameShape(QFrame::VLine);
190    lineVertical->setLineWidth(2);
[1babbd6ba3]191
[9eb63a1598]192    // Top line
193    hbox = new QHBoxLayout();
194    hbox->addWidget(imgIcon);
195    hbox->addWidget(lineVertical);
196    hbox->addWidget(bgWhite);
[e26679937d]197
[9eb63a1598]198    box = static_cast<QBoxLayout *>(tabGeneral->layout());
199    box->insertWidget(box->indexOf(cbUseNativeDialogs) + 1, cbSaveState);
[b8a2a118c4]200#ifndef HANDHELD
[9eb63a1598]201    if (QtWin::isCompositionEnabled())
202        box->insertWidget(box->indexOf(cbUseNativeDialogs) + 1, cbUseTranslucency);
[b8a2a118c4]203#endif // HANDHELD
[1babbd6ba3]204
[9eb63a1598]205    // Inserting label for hints to the bottom part (with grey bg)
206    buttons->insertWidget(buttons->indexOf(buttonHelp) + 1, labelHint, 1);
[1babbd6ba3]207
[9eb63a1598]208    // Central layout
209    vbox = new QVBoxLayout(this);
210    vbox->setMargin(0);
211    vbox->setSpacing(0);
212    vbox->addLayout(hbox);
213    vbox->addWidget(bgGrey);
214    setLayout(vbox);
[1babbd6ba3]215#endif // HANDHELD
216
[97e90f9be6]217#ifdef Q_WS_WINCE_WM
[9eb63a1598]218    // We need to react to SIP show/hide and resize the window appropriately
219    connect(QApplication::desktop(), SIGNAL(workAreaResized(int)), SLOT(desktopResized(int)));
[97e90f9be6]220#endif // Q_WS_WINCE_WM
[9eb63a1598]221    connect(spinRandMin, SIGNAL(valueChanged(int)), SLOT(spinRandMinValueChanged(int)));
222    connect(buttonFont, SIGNAL(clicked()), SLOT(buttonFontClicked()));
223    connect(buttonColor, SIGNAL(clicked()), SLOT(buttonColorClicked()));
224    setWindowFlags(windowFlags() ^ Qt::WindowContextHelpButtonHint);
[9adbc413c7]225#if !defined(QT_NO_STATUSTIP) && !defined(HANDHELD)
[9eb63a1598]226    // Setting initial text of dialog hint label to own status tip text.
227    labelHint->setText(labelHint->statusTip());
[1babbd6ba3]228#endif // HANDHELD
229
[9eb63a1598]230    settings = new QSettings(QSettings::IniFormat, QSettings::UserScope, "TSPSG", "tspsg", this);
231    settings->remove("SettingsReset");
[1babbd6ba3]232
[9eb63a1598]233    cbAutosize->setChecked(settings->value("Autosize", DEF_AUTOSIZE).toBool());
234    cbSaveLastUsed->setChecked(settings->value("SaveLastUsed", DEF_SAVE_LAST_USED).toBool());
235    cbUseNativeDialogs->setChecked(settings->value("UseNativeDialogs", DEF_USE_NATIVE_DIALOGS).toBool());
[b8a2a118c4]236#ifndef HANDHELD
[9eb63a1598]237    if (QtWin::isCompositionEnabled())
238        cbUseTranslucency->setChecked(settings->value("UseTranslucency", DEF_USE_TRANSLUCENCY).toBool());
[b8a2a118c4]239#endif // HANDHELD
[1babbd6ba3]240#ifndef HANDHELD
[9eb63a1598]241    cbSaveState->setChecked(settings->value("SavePos", DEF_SAVEPOS).toBool());
[1babbd6ba3]242#endif // HANDHELD
[9eb63a1598]243    if (cbCheck4Updates != NULL) {
244        settings->beginGroup("Check4Updates");
245        cbCheck4Updates->setChecked(settings->value("Enabled", DEF_CHECK_FOR_UPDATES).toBool());
246        spinUpdateCheckInterval->setValue(settings->value("Interval", DEF_UPDATE_CHECK_INTERVAL).toInt());
247        settings->endGroup();
248        spinUpdateCheckInterval->setEnabled(cbCheck4Updates->isChecked());
249    }
250
251    settings->beginGroup("Task");
252    cbSymmetricMode->setChecked(settings->value("SymmetricMode", DEF_SYMMETRIC_MODE).toBool());
253    spinFractionalAccuracy->setValue(settings->value("FractionalAccuracy", DEF_FRACTIONAL_ACCURACY).toInt());
254    spinRandMin->setMaximum(MAX_RAND_VALUE);
255    spinRandMin->setValue(settings->value("RandMin",DEF_RAND_MIN).toInt());
256    spinRandMax->setMaximum(MAX_RAND_VALUE);
257    spinRandMax->setValue(settings->value("RandMax",DEF_RAND_MAX).toInt());
258    cbFractionalRandom->setChecked(settings->value("FractionalRandom", DEF_FRACTIONAL_RANDOM).toBool());
259    settings->endGroup();
260
261    settings->beginGroup("Output");
262    cbShowGraph->setChecked(settings->value("ShowGraph", DEF_SHOW_GRAPH).toBool());
[20015b41e7]263
[e26679937d]264#ifndef QT_NO_PRINTER
[9eb63a1598]265    cbHQGraph->setEnabled(cbShowGraph->isChecked());
266    cbHQGraph->setChecked(settings->value("HQGraph", DEF_HQ_GRAPH && cbShowGraph->isChecked()).toBool());
[e26679937d]267#endif
268
[20015b41e7]269#if !defined(NOSVG) && (QT_VERSION >= 0x040500)
[9eb63a1598]270    comboGraphImageFormat->addItem("svg");
[20015b41e7]271#endif // NOSVG && QT_VERSION >= 0x040500
[9eb63a1598]272    // We create whitelist of formats, supported by the most popular web browsers according to
273    //  http://en.wikipedia.org/wiki/Comparison_of_web_browsers#Image_format_support
274    //  + TIFF format (there are plugins to support it).
[20015b41e7]275QStringList whitelist;
[9eb63a1598]276    whitelist << "bmp" << "jpeg" << "png" << "tiff" << "xbm";
277    foreach (QByteArray format, QImageWriter::supportedImageFormats()) {
278        if (whitelist.contains(format))
279            comboGraphImageFormat->addItem(format);
280    }
281    comboGraphImageFormat->model()->sort(0);
282    comboGraphImageFormat->setCurrentIndex(comboGraphImageFormat->findText(settings->value("GraphImageFormat", DEF_GRAPH_IMAGE_FORMAT).toString(), Qt::MatchFixedString));
283    if (comboGraphImageFormat->currentIndex() < 0)
284        comboGraphImageFormat->setCurrentIndex(comboGraphImageFormat->findText(DEF_GRAPH_IMAGE_FORMAT, Qt::MatchFixedString));
285    labelGraphImageFormat->setEnabled(cbShowGraph->isChecked());
286    comboGraphImageFormat->setEnabled(cbShowGraph->isChecked());
287
288    cbShowMatrix->setChecked(settings->value("ShowMatrix", DEF_SHOW_MATRIX).toBool());
289    cbCitiesLimit->setEnabled(cbShowMatrix->isChecked());
290    cbCitiesLimit->setChecked(settings->value("UseShowMatrixLimit", DEF_USE_SHOW_MATRIX_LIMIT && cbShowMatrix->isChecked()).toBool());
291    spinCitiesLimit->setEnabled(cbShowMatrix->isChecked() && cbCitiesLimit->isChecked());
292    spinCitiesLimit->setValue(settings->value("ShowMatrixLimit", DEF_SHOW_MATRIX_LIMIT).toInt());
293    spinCitiesLimit->setMaximum(MAX_NUM_CITIES);
294    cbScrollToEnd->setChecked(settings->value("ScrollToEnd", DEF_SCROLL_TO_END).toBool());
295
296    font = qvariant_cast<QFont>(settings->value("Font", QFont(DEF_FONT_FACE, DEF_FONT_SIZE)));
297    color = qvariant_cast<QColor>(settings->value("Colors/Text", DEF_TEXT_COLOR));
298    settings->endGroup();
[1babbd6ba3]299
[e51c78af27]300#ifdef HANDHELD
[9eb63a1598]301    setWindowState(Qt::WindowMaximized);
[e51c78af27]302#else
[9eb63a1598]303    adjustSize();
[97e90f9be6]304#endif // Q_WS_WINCE_WM
[1babbd6ba3]305}
306
307/*!
308 * \brief Indicates whether or not the font color has been changed.
309 * \return \c true if font color changed, otherwise \c false.
310 */
311bool SettingsDialog::colorChanged() const
312{
[9eb63a1598]313    return _newColor;
[1babbd6ba3]314}
315
316/*!
317 * \brief Indicates whether or not the font properties have been changed.
318 * \return \c true if font properties changed, otherwise \c false.
319 */
320bool SettingsDialog::fontChanged() const
321{
[9eb63a1598]322    return _newFont;
[1babbd6ba3]323}
324
325/*!
326 * \brief Indicates whether and how the translucency setting was changed
327 * \retval -1 the translucency was \em disabled.
328 * \retval  0 the translucency was <em>not changed</em>.
329 * \retval  1 the translucency was \em enabled.
330 */
331qint8 SettingsDialog::translucencyChanged() const
332{
[9eb63a1598]333    return _translucency;
[1babbd6ba3]334}
335
336/* Privates **********************************************************/
337
338void SettingsDialog::accept()
339{
[9eb63a1598]340    if (QApplication::keyboardModifiers() & Qt::ShiftModifier) {
341        if (QMessageBox::question(this, tr("Settings Reset"), tr("Do you really want to <b>reset all application settings to their defaults</b>?"), QMessageBox::RestoreDefaults | QMessageBox::Cancel) == QMessageBox::RestoreDefaults) {
342            _newFont = (font != QFont(DEF_FONT_FACE, DEF_FONT_SIZE));
343            _newColor = (color != DEF_TEXT_COLOR);
344            settings->remove("");
345            settings->setValue("SettingsReset", true);
346            QDialog::accept();
347            QMessageBox::information(this->parentWidget(), tr("Settings Reset"), tr("All settings where successfully reset to their defaults.\nIt is recommended to restart the application now."));
348            return;
349        } else
350            return;
351    }
352    settings->setValue("Autosize", cbAutosize->isChecked());
353    settings->setValue("SaveLastUsed", cbSaveLastUsed->isChecked());
354    settings->setValue("UseNativeDialogs", cbUseNativeDialogs->isChecked());
[b8a2a118c4]355#ifndef HANDHELD
[9eb63a1598]356    if (QtWin::isCompositionEnabled()) {
[1babbd6ba3]357bool old = settings->value("UseTranslucency", DEF_USE_TRANSLUCENCY).toBool();
[9eb63a1598]358        if ((!old && cbUseTranslucency->isChecked()) || (old && !cbUseTranslucency->isChecked())) {
359            _translucency = old ? -1 : 1;
360        } else
361            _translucency = 0;
362        settings->setValue("UseTranslucency", cbUseTranslucency->isChecked());
363    }
364    settings->setValue("SavePos", cbSaveState->isChecked());
[ac76a6a753]365#endif // HANDHELD
[9eb63a1598]366    if (cbCheck4Updates != NULL) {
367        settings->beginGroup("Check4Updates");
368        settings->setValue("Enabled", cbCheck4Updates->isChecked());
369        if (cbCheck4Updates->isChecked())
370            settings->setValue("Interval", spinUpdateCheckInterval->value());
371        settings->endGroup();
372    }
373
374    settings->beginGroup("Task");
375    settings->setValue("SymmetricMode", cbSymmetricMode->isChecked());
376    settings->setValue("FractionalAccuracy", spinFractionalAccuracy->value());
377    settings->setValue("RandMin", spinRandMin->value());
378    settings->setValue("RandMax", spinRandMax->value());
379    settings->setValue("FractionalRandom", cbFractionalRandom->isChecked());
380    settings->endGroup();
381
382    settings->beginGroup("Output");
383    settings->setValue("ShowGraph", cbShowGraph->isChecked());
[e26679937d]384#ifndef QT_NO_PRINTER
[9eb63a1598]385    settings->setValue("HQGraph", cbShowGraph->isChecked() && cbHQGraph->isChecked());
[e26679937d]386#endif
[9eb63a1598]387    if (cbShowGraph->isChecked()) {
388        if (comboGraphImageFormat->currentIndex() >= 0)
389            settings->setValue("GraphImageFormat", comboGraphImageFormat->currentText());
390        else
391            settings->setValue("GraphImageFormat", DEF_GRAPH_IMAGE_FORMAT);
392    }
393    settings->setValue("ShowMatrix", cbShowMatrix->isChecked());
394    settings->setValue("UseShowMatrixLimit", cbShowMatrix->isChecked() && cbCitiesLimit->isChecked());
395    if (cbCitiesLimit->isChecked())
396        settings->setValue("ShowMatrixLimit", spinCitiesLimit->value());
397    settings->setValue("ScrollToEnd", cbScrollToEnd->isChecked());
398    if (_newFont)
399        settings->setValue("Font", font);
400    if (_newColor)
401        settings->setValue("Colors/Text", color);
402    settings->endGroup();
403    QDialog::accept();
[1babbd6ba3]404}
405
406void SettingsDialog::buttonColorClicked()
407{
408QColor color = QColorDialog::getColor(this->color,this);
[9eb63a1598]409    if (color.isValid() && (this->color != color)) {
410        this->color = color;
411        _newColor = true;
412    }
[1babbd6ba3]413}
414
415void SettingsDialog::buttonFontClicked()
416{
417bool ok;
418QFont font = QFontDialog::getFont(&ok,this->font,this);
[9eb63a1598]419    if (ok && (this->font != font)) {
420        this->font = font;
421        _newFont = true;
422    }
[1babbd6ba3]423}
424
[97e90f9be6]425#ifdef Q_WS_WINCE_WM
[1babbd6ba3]426void SettingsDialog::desktopResized(int screen)
427{
[9eb63a1598]428    if (screen != 0)
429        return;
[1babbd6ba3]430
431QRect availableGeometry = QApplication::desktop()->availableGeometry(0);
[9eb63a1598]432    if (currentGeometry != availableGeometry) {
433        QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
434        /*!
435         * \hack HACK: This hack checks whether \link QDesktopWidget::availableGeometry() availableGeometry()\endlink's \c top + \c hegiht = \link QDesktopWidget::screenGeometry() screenGeometry()\endlink's \c height.
436         *  If \c true, the window gets maximized. If we used \c setGeometry() in this case, the bottom of the
437         *  window would end up being behind the soft buttons. Is this a bug in Qt or Windows Mobile?
438         */
439        if ((availableGeometry.top() + availableGeometry.height()) == QApplication::desktop()->screenGeometry().height()) {
440            setWindowState(windowState() | Qt::WindowMaximized);
441        } else {
442            if (windowState() & Qt::WindowMaximized)
443                setWindowState(windowState() ^ Qt::WindowMaximized);
444            setGeometry(availableGeometry);
445        }
446        currentGeometry = availableGeometry;
447        QApplication::restoreOverrideCursor();
448    }
[1babbd6ba3]449}
450
451void SettingsDialog::showEvent(QShowEvent *ev)
452{
[9eb63a1598]453    desktopResized(0);
[1babbd6ba3]454
[9eb63a1598]455    QWidget::showEvent(ev);
[1babbd6ba3]456}
[97e90f9be6]457#endif // Q_WS_WINCE_WM
[1babbd6ba3]458
459void SettingsDialog::spinRandMinValueChanged(int val) {
[9eb63a1598]460    spinRandMax->setMinimum(val);
[1babbd6ba3]461}
462
[9adbc413c7]463#if !defined(QT_NO_STATUSTIP) && !defined(HANDHELD)
[1babbd6ba3]464bool SettingsDialog::event(QEvent *ev)
465{
[9eb63a1598]466    // Checking for StatusTip event and if tip text is not empty string
467    // setting it as text of the dialog hint label. Otherwise, setting
468    // dialog hint label text to own status tip text.
469    if (ev->type() == QEvent::StatusTip) {
[1babbd6ba3]470QString tip = static_cast<QStatusTipEvent *>(ev)->tip();
[9eb63a1598]471        if (tip.length() != 0)
472            labelHint->setText(tip);
473        else
474            labelHint->setText(labelHint->statusTip());
475        return true;
476    } else
477        return QDialog::event(ev);
[1babbd6ba3]478}
479#endif // HANDHELD
Note: See TracBrowser for help on using the repository browser.