source: tspsg/src/mainwindow.h @ bd4553fa91

0.1.4.170-beta2-bb10
Last change on this file since bd4553fa91 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: 5.0 KB
Line 
1/*!
2 * \file mainwindow.h
3 * \author Copyright &copy; 2007-2011 Lёppa <contacts[at]oleksii[dot]name>
4 *
5 *  $Id$
6 *  $URL$
7 *
8 * \brief Defines MainWindow class.
9 *
10 *  <b>TSPSG: TSP Solver and Generator</b>
11 *
12 *  This file is part of TSPSG.
13 *
14 *  TSPSG is free software: you can redistribute it and/or modify
15 *  it under the terms of the GNU General Public License as published by
16 *  the Free Software Foundation, either version 3 of the License, or
17 *  (at your option) any later version.
18 *
19 *  TSPSG is distributed in the hope that it will be useful,
20 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
21 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
22 *  GNU General Public License for more details.
23 *
24 *  You should have received a copy of the GNU General Public License
25 *  along with TSPSG.  If not, see <http://www.gnu.org/licenses/>.
26 */
27
28#ifndef MAINWINDOW_H
29#define MAINWINDOW_H
30
31#include "globals.h"
32
33#include "ui_mainwindow.h"
34#include "settingsdialog.h"
35
36#include "tspmodel.h"
37
38#ifdef Q_WS_WIN32
39    // Forward declaration. A real one is in shobjidl.h
40    struct ITaskbarList3;
41#endif
42
43using namespace TSPSolver;
44
45/*!
46 * \brief Class for handling Main Window UI and logic.
47 * \author Copyright &copy; 2007-2011 Lёppa <contacts[at]oleksii[dot]name>
48 */
49class MainWindow: public QMainWindow, Ui::MainWindow
50{
51    Q_OBJECT
52
53public:
54    MainWindow(QWidget *parent = 0);
55    ~MainWindow();
56
57private slots:
58// Actions
59    void actionFileNewTriggered();
60    void actionFileOpenTriggered();
61    bool actionFileSaveTriggered();
62    void actionFileSaveAsTaskTriggered();
63    void actionFileSaveAsSolutionTriggered();
64#ifndef QT_NO_PRINTDIALOG
65    void actionFilePrintPreviewTriggered();
66    void actionFilePageSetupTriggered();
67    void actionFilePrintTriggered();
68#endif // QT_NO_PRINTDIALOG
69    void actionSettingsPreferencesTriggered();
70    void actionSettingsLanguageAutodetectTriggered(bool checked);
71    void groupSettingsLanguageListTriggered(QAction *action);
72    void actionSettingsStyleSystemTriggered(bool checked);
73    void groupSettingsStyleListTriggered(QAction *action);
74#ifndef HANDHELD
75    void actionSettingsToolbarsConfigureTriggered();
76#endif // HANDHELD
77    void actionHelpOnlineSupportTriggered();
78    void actionHelpReportBugTriggered();
79    void actionHelpCheck4UpdatesTriggered();
80    void actionHelpAboutTriggered();
81// Buttons
82    void buttonBackToTaskClicked();
83    void buttonRandomClicked();
84    void buttonSolveClicked();
85
86    void dataChanged();
87    void dataChanged(const QModelIndex &tl, const QModelIndex &br);
88#ifdef Q_WS_WINCE_WM
89    void changeEvent(QEvent *ev);
90    void desktopResized(int screen);
91#endif // Q_WS_WINCE_WM
92    void numCitiesChanged(int nCities);
93#ifndef QT_NO_PRINTER
94    void printPreview(QPrinter *printer);
95#endif // QT_NO_PRINTER
96#ifdef Q_WS_WIN32
97    void solverRoutePartFound(int n);
98#endif // Q_WS_WIN32
99    void spinCitiesValueChanged(int nCities);
100
101private:
102    QString fileName;
103    QActionGroup *groupSettingsLanguageList;
104    QActionGroup *groupSettingsStyleList;
105#ifndef HANDHELD
106    QAction *actionSettingsToolbarsConfigure;
107    QtToolBarManager *toolBarManager;
108#endif // HANDHELD
109#ifndef QT_NO_PRINTER
110    QPrinter *printer;
111#ifndef QT_NO_PRINTDIALOG
112    QAction *actionFilePrintPreview;
113    QAction *actionFilePageSetup;
114    QAction *actionFilePrint;
115#endif // QT_NO_PRINTDIALOG
116#endif // QT_NO_PRINTER
117    QAction *actionHelpCheck4Updates;
118#ifdef Q_WS_S60
119    QAction *actionRightSoftKey;
120#endif
121    QSettings *settings;
122    CTSPModel *tspmodel;
123#ifdef Q_WS_WINCE_WM
124    QRect currentGeometry;
125#endif // Q_WS_WINCE_WM
126
127#ifdef Q_WS_WIN32
128    ITaskbarList3 *tl;
129#endif // Q_WS_WIN32
130
131    // The solution graph SVG
132    QPicture graph;
133
134    // Formats
135    QTextTableFormat fmt_table;
136    QTextBlockFormat fmt_paragraph,
137        fmt_lastparagraph,
138        fmt_cell;
139    QTextCharFormat fmt_default,
140        fmt_selected,
141        fmt_alternate,
142        fmt_altlist;
143
144    void check4Updates(bool silent = false);
145    void closeEvent(QCloseEvent *ev);
146    void dragEnterEvent(QDragEnterEvent *ev);
147    void drawNode(QPainter &pic, int nstep, bool left = false, SStep *step = NULL);
148    void dropEvent(QDropEvent *ev);
149    void initDocStyleSheet();
150    void loadLangList();
151    bool loadLanguage(const QString &lang = QString());
152    void loadStyleList();
153    void loadToolbarList();
154    bool maybeSave();
155    void outputMatrix(QTextCursor &cur, const TMatrix &matrix);
156    void outputMatrix(QTextCursor &cur, const SStep &step);
157    void retranslateUi(bool all = true);
158    bool saveTask();
159    void setFileName(const QString &fileName = tr("Untitled") + ".tspt");
160    void setupUi();
161    void toggleSolutionActions(bool enable = true);
162    void toggleTranclucency(bool enable);
163};
164
165#ifdef Q_WS_S60
166// A quickly hacked QMessageBox for Symbian that supports three buttons.
167class QSMessageBox: public QMessageBox {
168    Q_OBJECT
169private slots:
170    void cancel();
171    void discard();
172public:
173    QSMessageBox(QWidget *parent = 0);
174};
175#endif // Q_WS_S60
176
177#endif // MAINWINDOW_H
Note: See TracBrowser for help on using the repository browser.