Updated the web pages
[ghostsoverboard] / seaview.cpp
1 /**************************************************************************
2         Ghosts Overboard - a game for Maemo 5
3
4         Copyright (C) 2011  Heli Hyvättinen
5
6         This file is part of Ghosts Overboard
7
8         Ghosts Overboard is free software: you can redistribute it and/or modify
9         it under the terms of the GNU General Public License as published by
10         the Free Software Foundation, either version 2 of the License, or
11         (at your option) any later version.
12
13         This program is distributed in the hope that it will be useful,
14         but WITHOUT ANY WARRANTY; without even the implied warranty of
15         MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16         GNU General Public License for more details.
17
18         You should have received a copy of the GNU General Public License
19         along with this program.  If not, see <http://www.gnu.org/licenses/>.
20
21 **************************************************************************/
22
23 #include "seaview.h"
24
25 #include <QEvent>
26 #include <QTimer>
27
28 SeaView::SeaView(QWidget *parent) :
29     QGraphicsView(parent)
30 {
31
32
33     setWindowTitle("Ghosts Overboard");
34
35     pScene_ = new SeaScene ();
36
37
38     setScene(pScene_);
39
40
41     connect(this,SIGNAL(screenTapped()),pScene_,SLOT(handleScreenTapped()));
42     connect(this,SIGNAL(goingBackgroung()),pScene_,SLOT(forcePause()));
43     connect(this,SIGNAL(goingForeground()),pScene_,SLOT(softContinue()));
44
45     connect(pScene_,SIGNAL(minimizeRequested()),this,SLOT(showNormal()));
46     connect(pScene_,SIGNAL(fullscreenRequested()),this,SLOT(showFullScreen()));
47
48     showFullScreen();
49
50
51
52     //the boundaries of the scene are set to match the size of the view window, which is not
53     //available in the constructor --> timer needed
54     QTimer::singleShot(100,this,SLOT(initializeBoundaries()));
55
56 }
57
58 void  SeaView::mousePressEvent(QMouseEvent *event)
59 {
60
61     QGraphicsView::mousePressEvent(event);
62     emit screenTapped();
63
64
65 }
66
67 bool SeaView::event(QEvent *event)
68 {
69     if (!event)
70         return false;
71
72     switch (event->type())
73     {
74         //pause if app goes to background
75         case QEvent::WindowDeactivate:
76
77             emit goingBackgroung();
78             break;
79
80         //un-pause if app gomes back to foreground unless it was paused before going to background
81         case QEvent::WindowActivate:
82
83             emit goingForeground();
84             break;
85
86         //Just to keep the compiler from complaining...
87         default:
88             break;
89
90      }
91
92
93
94     //pass the event to the ancestor for handling
95     return QGraphicsView::event(event);
96
97  }
98
99
100 void SeaView::initializeBoundaries()
101 {
102         //the boundaries of the scene are set to match the size of the view window, and
103         //the view is set to show exactly the whole scene area
104
105     //this occasionally gives a tiny scene, so using a fixed size fit for N900/Maemo5 until a fix is found
106
107 //    QPoint topleft (0,0);
108 //    QSize windowsize = pView_->size();
109 //    QRectF rectangle (topleft,windowsize);
110
111     QRectF rectangle(0,0,800,480);
112
113     pScene_->setSceneRect(rectangle);
114     setSceneRect(rectangle);
115
116 //     qDebug() << "Initialized boundaries" << rectangle.right() << rectangle.bottom() << pView_->width() << pView_->height();
117
118     pScene_->restartLevel();
119 }
120