source: tspsg/src/settingsdialog.cpp @ c039ebbe82

0.1.4.170-beta2-bb10
Last change on this file since c039ebbe82 was ccdffe3a5f, checked in by Oleksii Serdiuk, 12 years ago

Removed printing related items from menu as there's no printer.

Made dialogs to be shown maximized.

  • Property mode set to 100644
File size: 19.5 KB
RevLine 
[1babbd6ba3]1/*
2 *  TSPSG: TSP Solver and Generator
[bfe1e5e2ea]3 *  Copyright (C) 2007-2011 Lёppa <contacts[at]oleksii[dot]name>
[1babbd6ba3]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);
[8f2427aaf0]78    box->insertLayout(box->indexOf(cbGenerateGraph) + 2, hbox);
79    connect(cbGenerateGraph, 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
[8f2427aaf0]149        cbUseTranslucency->setStatusTip(tr("Make Main Window background translucent"));
[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);
[8f2427aaf0]176    labelHint->setMinimumSize(QSize(250, 28));
177    labelHint->setMaximumSize(QSize(QWIDGETSIZE_MAX, 28));
[9eb63a1598]178    labelHint->setTextFormat(Qt::PlainText);
[1babbd6ba3]179//      labelHint->setAlignment(Qt::AlignLeft | Qt::AlignTop);
[9eb63a1598]180    labelHint->setWordWrap(true);
[1babbd6ba3]181#ifndef QT_NO_STATUSTIP
[9eb63a1598]182    labelHint->setStatusTip(tr("Hover mouse pointer over dialog elements to get additional help"));
[1babbd6ba3]183#endif // QT_NO_STATUSTIP
184
[9eb63a1598]185    lineVertical = new QFrame(this);
186    lineVertical->setObjectName("lineVertical");
187    lineVertical->setFrameShadow(QFrame::Plain);
188    lineVertical->setFrameShape(QFrame::VLine);
189    lineVertical->setLineWidth(2);
[1babbd6ba3]190
[9eb63a1598]191    // Top line
192    hbox = new QHBoxLayout();
193    hbox->addWidget(imgIcon);
194    hbox->addWidget(lineVertical);
195    hbox->addWidget(bgWhite);
[e26679937d]196
[9eb63a1598]197    box = static_cast<QBoxLayout *>(tabGeneral->layout());
198    box->insertWidget(box->indexOf(cbUseNativeDialogs) + 1, cbSaveState);
[b8a2a118c4]199#ifndef HANDHELD
[9eb63a1598]200    if (QtWin::isCompositionEnabled())
201        box->insertWidget(box->indexOf(cbUseNativeDialogs) + 1, cbUseTranslucency);
[b8a2a118c4]202#endif // HANDHELD
[1babbd6ba3]203
[9eb63a1598]204    // Inserting label for hints to the bottom part (with grey bg)
205    buttons->insertWidget(buttons->indexOf(buttonHelp) + 1, labelHint, 1);
[1babbd6ba3]206
[9eb63a1598]207    // Central layout
208    vbox = new QVBoxLayout(this);
209    vbox->setMargin(0);
210    vbox->setSpacing(0);
211    vbox->addLayout(hbox);
212    vbox->addWidget(bgGrey);
213    setLayout(vbox);
[1babbd6ba3]214#endif // HANDHELD
215
[97e90f9be6]216#ifdef Q_WS_WINCE_WM
[9eb63a1598]217    // We need to react to SIP show/hide and resize the window appropriately
218    connect(QApplication::desktop(), SIGNAL(workAreaResized(int)), SLOT(desktopResized(int)));
[97e90f9be6]219#endif // Q_WS_WINCE_WM
[9eb63a1598]220    connect(spinRandMin, SIGNAL(valueChanged(int)), SLOT(spinRandMinValueChanged(int)));
221    connect(buttonFont, SIGNAL(clicked()), SLOT(buttonFontClicked()));
222    connect(buttonColor, SIGNAL(clicked()), SLOT(buttonColorClicked()));
223    setWindowFlags(windowFlags() ^ Qt::WindowContextHelpButtonHint);
[9adbc413c7]224#if !defined(QT_NO_STATUSTIP) && !defined(HANDHELD)
[9eb63a1598]225    // Setting initial text of dialog hint label to own status tip text.
226    labelHint->setText(labelHint->statusTip());
[1babbd6ba3]227#endif // HANDHELD
228
[9eb63a1598]229    settings = new QSettings(QSettings::IniFormat, QSettings::UserScope, "TSPSG", "tspsg", this);
230    settings->remove("SettingsReset");
[1babbd6ba3]231
[9eb63a1598]232    cbAutosize->setChecked(settings->value("Autosize", DEF_AUTOSIZE).toBool());
233    cbSaveLastUsed->setChecked(settings->value("SaveLastUsed", DEF_SAVE_LAST_USED).toBool());
234    cbUseNativeDialogs->setChecked(settings->value("UseNativeDialogs", DEF_USE_NATIVE_DIALOGS).toBool());
[b8a2a118c4]235#ifndef HANDHELD
[9eb63a1598]236    if (QtWin::isCompositionEnabled())
237        cbUseTranslucency->setChecked(settings->value("UseTranslucency", DEF_USE_TRANSLUCENCY).toBool());
[b8a2a118c4]238#endif // HANDHELD
[1babbd6ba3]239#ifndef HANDHELD
[9eb63a1598]240    cbSaveState->setChecked(settings->value("SavePos", DEF_SAVEPOS).toBool());
[1babbd6ba3]241#endif // HANDHELD
[9eb63a1598]242    if (cbCheck4Updates != NULL) {
243        settings->beginGroup("Check4Updates");
244        cbCheck4Updates->setChecked(settings->value("Enabled", DEF_CHECK_FOR_UPDATES).toBool());
245        spinUpdateCheckInterval->setValue(settings->value("Interval", DEF_UPDATE_CHECK_INTERVAL).toInt());
246        settings->endGroup();
247        spinUpdateCheckInterval->setEnabled(cbCheck4Updates->isChecked());
248    }
249
250    settings->beginGroup("Task");
251    cbSymmetricMode->setChecked(settings->value("SymmetricMode", DEF_SYMMETRIC_MODE).toBool());
252    spinFractionalAccuracy->setValue(settings->value("FractionalAccuracy", DEF_FRACTIONAL_ACCURACY).toInt());
253    spinRandMin->setMaximum(MAX_RAND_VALUE);
254    spinRandMin->setValue(settings->value("RandMin",DEF_RAND_MIN).toInt());
255    spinRandMax->setMaximum(MAX_RAND_VALUE);
256    spinRandMax->setValue(settings->value("RandMax",DEF_RAND_MAX).toInt());
257    cbFractionalRandom->setChecked(settings->value("FractionalRandom", DEF_FRACTIONAL_RANDOM).toBool());
258    settings->endGroup();
259
260    settings->beginGroup("Output");
[8f2427aaf0]261    cbGenerateGraph->setChecked(settings->value("GenerateGraph", DEF_GENERATE_GRAPH).toBool());
[20015b41e7]262
[e26679937d]263#ifndef QT_NO_PRINTER
[8f2427aaf0]264    cbHQGraph->setEnabled(cbGenerateGraph->isChecked());
265    cbHQGraph->setChecked(settings->value("HQGraph", DEF_HQ_GRAPH).toBool());
[e26679937d]266#endif
267
[20015b41e7]268#if !defined(NOSVG) && (QT_VERSION >= 0x040500)
[9eb63a1598]269    comboGraphImageFormat->addItem("svg");
[20015b41e7]270#endif // NOSVG && QT_VERSION >= 0x040500
[9eb63a1598]271    // We create whitelist of formats, supported by the most popular web browsers according to
272    //  http://en.wikipedia.org/wiki/Comparison_of_web_browsers#Image_format_support
273    //  + TIFF format (there are plugins to support it).
[20015b41e7]274QStringList whitelist;
[9eb63a1598]275    whitelist << "bmp" << "jpeg" << "png" << "tiff" << "xbm";
276    foreach (QByteArray format, QImageWriter::supportedImageFormats()) {
277        if (whitelist.contains(format))
278            comboGraphImageFormat->addItem(format);
279    }
280    comboGraphImageFormat->model()->sort(0);
281    comboGraphImageFormat->setCurrentIndex(comboGraphImageFormat->findText(settings->value("GraphImageFormat", DEF_GRAPH_IMAGE_FORMAT).toString(), Qt::MatchFixedString));
282    if (comboGraphImageFormat->currentIndex() < 0)
283        comboGraphImageFormat->setCurrentIndex(comboGraphImageFormat->findText(DEF_GRAPH_IMAGE_FORMAT, Qt::MatchFixedString));
[8f2427aaf0]284    labelGraphImageFormat->setEnabled(cbGenerateGraph->isChecked());
285    comboGraphImageFormat->setEnabled(cbGenerateGraph->isChecked());
286    cbEmbedGraphIntoHTML->setChecked(settings->value("EmbedGraphIntoHTML", DEF_EMBED_GRAPH_INTO_HTML).toBool());
287    cbEmbedGraphIntoHTML->setEnabled(cbGenerateGraph->isChecked());
[9eb63a1598]288
289    cbShowMatrix->setChecked(settings->value("ShowMatrix", DEF_SHOW_MATRIX).toBool());
290    cbCitiesLimit->setEnabled(cbShowMatrix->isChecked());
291    cbCitiesLimit->setChecked(settings->value("UseShowMatrixLimit", DEF_USE_SHOW_MATRIX_LIMIT && cbShowMatrix->isChecked()).toBool());
292    spinCitiesLimit->setEnabled(cbShowMatrix->isChecked() && cbCitiesLimit->isChecked());
293    spinCitiesLimit->setValue(settings->value("ShowMatrixLimit", DEF_SHOW_MATRIX_LIMIT).toInt());
294    spinCitiesLimit->setMaximum(MAX_NUM_CITIES);
295    cbScrollToEnd->setChecked(settings->value("ScrollToEnd", DEF_SCROLL_TO_END).toBool());
296
297    font = qvariant_cast<QFont>(settings->value("Font", QFont(DEF_FONT_FACE, DEF_FONT_SIZE)));
298    color = qvariant_cast<QColor>(settings->value("Colors/Text", DEF_TEXT_COLOR));
299    settings->endGroup();
[1babbd6ba3]300
[e51c78af27]301#ifdef HANDHELD
[9eb63a1598]302    setWindowState(Qt::WindowMaximized);
[e51c78af27]303#else
[9eb63a1598]304    adjustSize();
[97e90f9be6]305#endif // Q_WS_WINCE_WM
[1babbd6ba3]306}
307
308/*!
309 * \brief Indicates whether or not the font color has been changed.
310 * \return \c true if font color changed, otherwise \c false.
311 */
312bool SettingsDialog::colorChanged() const
313{
[9eb63a1598]314    return _newColor;
[1babbd6ba3]315}
316
317/*!
318 * \brief Indicates whether or not the font properties have been changed.
319 * \return \c true if font properties changed, otherwise \c false.
320 */
321bool SettingsDialog::fontChanged() const
322{
[9eb63a1598]323    return _newFont;
[1babbd6ba3]324}
325
326/*!
327 * \brief Indicates whether and how the translucency setting was changed
328 * \retval -1 the translucency was \em disabled.
[8f2427aaf0]329 * \retval  0 the translucency <em>didn't change</em>.
[1babbd6ba3]330 * \retval  1 the translucency was \em enabled.
331 */
332qint8 SettingsDialog::translucencyChanged() const
333{
[9eb63a1598]334    return _translucency;
[1babbd6ba3]335}
336
337/* Privates **********************************************************/
338
339void SettingsDialog::accept()
340{
[9eb63a1598]341    if (QApplication::keyboardModifiers() & Qt::ShiftModifier) {
342        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) {
343            _newFont = (font != QFont(DEF_FONT_FACE, DEF_FONT_SIZE));
344            _newColor = (color != DEF_TEXT_COLOR);
345            settings->remove("");
346            settings->setValue("SettingsReset", true);
347            QDialog::accept();
348            QMessageBox::information(this->parentWidget(), tr("Settings Reset"), tr("All settings where successfully reset to their defaults.\nIt is recommended to restart the application now."));
349            return;
350        } else
351            return;
352    }
353    settings->setValue("Autosize", cbAutosize->isChecked());
354    settings->setValue("SaveLastUsed", cbSaveLastUsed->isChecked());
355    settings->setValue("UseNativeDialogs", cbUseNativeDialogs->isChecked());
[b8a2a118c4]356#ifndef HANDHELD
[9eb63a1598]357    if (QtWin::isCompositionEnabled()) {
[1babbd6ba3]358bool old = settings->value("UseTranslucency", DEF_USE_TRANSLUCENCY).toBool();
[9eb63a1598]359        if ((!old && cbUseTranslucency->isChecked()) || (old && !cbUseTranslucency->isChecked())) {
360            _translucency = old ? -1 : 1;
361        } else
362            _translucency = 0;
363        settings->setValue("UseTranslucency", cbUseTranslucency->isChecked());
364    }
365    settings->setValue("SavePos", cbSaveState->isChecked());
[ac76a6a753]366#endif // HANDHELD
[9eb63a1598]367    if (cbCheck4Updates != NULL) {
368        settings->beginGroup("Check4Updates");
369        settings->setValue("Enabled", cbCheck4Updates->isChecked());
370        if (cbCheck4Updates->isChecked())
371            settings->setValue("Interval", spinUpdateCheckInterval->value());
372        settings->endGroup();
373    }
374
375    settings->beginGroup("Task");
376    settings->setValue("SymmetricMode", cbSymmetricMode->isChecked());
377    settings->setValue("FractionalAccuracy", spinFractionalAccuracy->value());
378    settings->setValue("RandMin", spinRandMin->value());
379    settings->setValue("RandMax", spinRandMax->value());
380    settings->setValue("FractionalRandom", cbFractionalRandom->isChecked());
381    settings->endGroup();
382
383    settings->beginGroup("Output");
[8f2427aaf0]384    settings->setValue("GenerateGraph", cbGenerateGraph->isChecked());
385    if (cbGenerateGraph->isChecked()) {
[e26679937d]386#ifndef QT_NO_PRINTER
[8f2427aaf0]387        settings->setValue("HQGraph", cbHQGraph->isChecked());
[e26679937d]388#endif
[8f2427aaf0]389        if (cbGenerateGraph->isChecked()) {
390            if (comboGraphImageFormat->currentIndex() >= 0)
391                settings->setValue("GraphImageFormat", comboGraphImageFormat->currentText());
392            else
393                settings->setValue("GraphImageFormat", DEF_GRAPH_IMAGE_FORMAT);
394        }
395        settings->setValue("EmbedGraphIntoHTML", cbEmbedGraphIntoHTML->isChecked());
[9eb63a1598]396    }
397    settings->setValue("ShowMatrix", cbShowMatrix->isChecked());
398    settings->setValue("UseShowMatrixLimit", cbShowMatrix->isChecked() && cbCitiesLimit->isChecked());
399    if (cbCitiesLimit->isChecked())
400        settings->setValue("ShowMatrixLimit", spinCitiesLimit->value());
401    settings->setValue("ScrollToEnd", cbScrollToEnd->isChecked());
402    if (_newFont)
403        settings->setValue("Font", font);
404    if (_newColor)
405        settings->setValue("Colors/Text", color);
406    settings->endGroup();
407    QDialog::accept();
[1babbd6ba3]408}
409
410void SettingsDialog::buttonColorClicked()
411{
412QColor color = QColorDialog::getColor(this->color,this);
[9eb63a1598]413    if (color.isValid() && (this->color != color)) {
414        this->color = color;
415        _newColor = true;
416    }
[1babbd6ba3]417}
418
419void SettingsDialog::buttonFontClicked()
420{
[ccdffe3a5f]421    QFontDialog fd(font, this);
422#ifdef Q_OS_BLACKBERRY
423    fd.setWindowState(Qt::WindowMaximized);
424#endif
425    if ((fd.exec() != QDialog::Accepted) || (fd.selectedFont() == font))
426        return;
427    font = fd.selectedFont();
428    _newFont = true;
[1babbd6ba3]429}
430
[97e90f9be6]431#ifdef Q_WS_WINCE_WM
[1babbd6ba3]432void SettingsDialog::desktopResized(int screen)
433{
[9eb63a1598]434    if (screen != 0)
435        return;
[1babbd6ba3]436
437QRect availableGeometry = QApplication::desktop()->availableGeometry(0);
[9eb63a1598]438    if (currentGeometry != availableGeometry) {
439        QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
440        /*!
441         * \hack HACK: This hack checks whether \link QDesktopWidget::availableGeometry() availableGeometry()\endlink's \c top + \c hegiht = \link QDesktopWidget::screenGeometry() screenGeometry()\endlink's \c height.
442         *  If \c true, the window gets maximized. If we used \c setGeometry() in this case, the bottom of the
443         *  window would end up being behind the soft buttons. Is this a bug in Qt or Windows Mobile?
444         */
445        if ((availableGeometry.top() + availableGeometry.height()) == QApplication::desktop()->screenGeometry().height()) {
446            setWindowState(windowState() | Qt::WindowMaximized);
447        } else {
448            if (windowState() & Qt::WindowMaximized)
449                setWindowState(windowState() ^ Qt::WindowMaximized);
450            setGeometry(availableGeometry);
451        }
452        currentGeometry = availableGeometry;
453        QApplication::restoreOverrideCursor();
454    }
[1babbd6ba3]455}
456
457void SettingsDialog::showEvent(QShowEvent *ev)
458{
[9eb63a1598]459    desktopResized(0);
[1babbd6ba3]460
[9eb63a1598]461    QWidget::showEvent(ev);
[1babbd6ba3]462}
[97e90f9be6]463#endif // Q_WS_WINCE_WM
[1babbd6ba3]464
465void SettingsDialog::spinRandMinValueChanged(int val) {
[9eb63a1598]466    spinRandMax->setMinimum(val);
[1babbd6ba3]467}
468
[9adbc413c7]469#if !defined(QT_NO_STATUSTIP) && !defined(HANDHELD)
[1babbd6ba3]470bool SettingsDialog::event(QEvent *ev)
471{
[9eb63a1598]472    // Checking for StatusTip event and if tip text is not empty string
473    // setting it as text of the dialog hint label. Otherwise, setting
474    // dialog hint label text to own status tip text.
475    if (ev->type() == QEvent::StatusTip) {
[1babbd6ba3]476QString tip = static_cast<QStatusTipEvent *>(ev)->tip();
[9eb63a1598]477        if (tip.length() != 0)
478            labelHint->setText(tip);
479        else
480            labelHint->setText(labelHint->statusTip());
481        return true;
482    } else
483        return QDialog::event(ev);
[1babbd6ba3]484}
485#endif // HANDHELD
Note: See TracBrowser for help on using the repository browser.