more work
[qnetwalk-mobile:qnetwalk-mobile.git] / mainwindow.h
1
2 //  qnetwalk/mainwindow.h
3 //  Copyright (C) 2004-2008, Andi Peredri <andi@ukr.net>
4 //  Ported to Symbian by Ahmad Mushtaq <ahmad.mushtaq@gmail.com>
5
6 #ifndef MAINWINDOW_H
7 #define MAINWINDOW_H
8
9 #include <QMainWindow>
10 #include <QList>
11 #include <QTime>
12
13 class Cell;
14 class QAction;
15 class QSound;
16 class QMenu;
17 class QLabel;
18 class QPushButton;
19 class MyDialog;
20
21 #if defined(Q_OS_SYMBIAN)
22 class MTouchFeedback;
23 #endif
24
25 class MainWindow : public QMainWindow
26 {
27     Q_OBJECT
28 public:
29     MainWindow();
30     virtual ~MainWindow();
31     virtual QMenu * createPopupMenu();
32 protected:
33     virtual void closeEvent(QCloseEvent *);
34     virtual void keyPressEvent(QKeyEvent *);
35     virtual void timerEvent (QTimerEvent *);
36     virtual bool event(QEvent *event);
37 private:
38     enum Skill { Novice, Normal, Expert, Master };
39     enum BoardSize
40     {
41         NoviceBoardSize = 6,
42         NormalBoardSize = 7,
43         ExpertBoardSize = 8,
44         MasterBoardSize = 8
45     };
46     enum
47     {
48         NumHighscores   = 10,
49         MinimumNumCells = 20
50     };
51     typedef QList<Cell *> CellList;
52 private slots:
53     void  help();
54     void  about();
55     void  newGame();
56     void  noRotation();
57     void  startRotation();
58     void  finishRotation();
59     void  openHomepage();
60     void  showHighscores();
61     void  triggeredSkill(QAction *);
62     void  showMenu();
63     void  soundToggled(bool);
64     void  pauseGame();
65     void  resumeGame();
66     void  touch();
67 private:
68     Cell * uCell(Cell * cell, bool wrap) const;
69     Cell * dCell(Cell * cell, bool wrap) const;
70     Cell * lCell(Cell * cell, bool wrap) const;
71     Cell * rCell(Cell * cell, bool wrap) const;
72     bool   isGameOver();
73     bool   updateConnections();
74     void   setSkill(int s);
75     void   addRandomDir(CellList & list);
76     void   addHighscore(int score);
77     void   dialog(const QString & caption, const QString & text);
78     void   updateNumberOfMoves(int);
79     void   updateTimeElapsed(int);
80 private:
81     int          skill;
82     bool         wrapped;
83     Cell *       root;
84     Cell *       board[MasterBoardSize * MasterBoardSize];
85     QSound *     clickSound;
86     QSound *     connectSound;
87     QSound *     startSound;
88     QSound *     turnSound;
89     QSound *     winSound;
90     QSound *     backgroudMusic;
91     QString      user;
92     QStringList  highscores;
93     QMenu*       menu;
94     QMenu*       skillMenu;
95     QLabel*      movesLabel;
96     QLabel*      timeLabel;
97     int          numberOfMoves;
98     int          timerId;
99     QTime        gameStartTime;
100     MyDialog*    myDialog;
101     QPushButton* soundToggleButton;
102     QLabel*      infoLabel;
103     QLabel*      skillLabel;
104
105 #ifdef Q_OS_SYMBIAN
106     MTouchFeedback* touchFeedback;
107 #endif
108 };
109
110 #endif
111