/[projects]/infoscreen/mainview.cpp
ViewVC logotype

Annotation of /infoscreen/mainview.cpp

Parent Directory Parent Directory | Revision Log Revision Log


Revision 532 - (hide annotations) (download)
Thu Jan 7 16:44:17 2010 UTC (14 years, 4 months ago) by torben
Original Path: infoscreen/MainView.cpp
File size: 3279 byte(s)
exit application when a key is pressed
1 torben 509 #include "MainView.h"
2 torben 512 #include <QApplication>
3 torben 510 #include <QPushButton>
4 torben 512 #include <QLabel>
5 torben 510 #include <QVBoxLayout>
6 torben 509
7 torben 510 #include <QTimer>
8    
9 torben 512 #include "MyWebView.h"
10 torben 515 #include "clientsiderender.h"
11 torben 524 #include "pictureview.h"
12 torben 527 #include "videoview.h"
13 torben 511
14 torben 528 #include "httpwrapper.h"
15    
16    
17 torben 509 MainView::MainView(QWidget* parent)
18     : QWidget(parent)
19     {
20 torben 516 this->resize(400,400);
21 torben 512 this->setWindowState( Qt::WindowFullScreen );
22 torben 532 this->grabKeyboard();
23 torben 516
24 torben 526 qApp->setOverrideCursor( QCursor( Qt::BlankCursor) );
25 torben 510
26 torben 515 render = new ClientSideRender(this);
27 torben 517 render->setVisible( false );
28 torben 524
29 torben 515 web = new MyWebView(this);
30 torben 524 web->setVisible( false);
31 torben 511
32 torben 524 picture = new PictureView(this);
33 torben 529 picture->setVisible( false );
34 torben 517
35 torben 527 video = new VideoView(this);
36     video->setVisible(false);
37 torben 517
38 torben 510 QVBoxLayout* layout = new QVBoxLayout();
39 torben 515 layout->addWidget(web,1);
40     layout->addWidget(render,1);
41 torben 524 layout->addWidget(picture,1);
42 torben 527 layout->addWidget(video,1);
43 torben 510 layout->addStretch();
44     layout->setContentsMargins(0,0,0,0);
45 torben 515 setLayout(layout);
46 torben 510
47 torben 528
48    
49 torben 510 QTimer* timer = new QTimer(this);
50     connect(timer, SIGNAL(timeout() ), this, SLOT(onTimer() ));
51 torben 528 timer->start(100);
52 torben 517
53 torben 509 }
54    
55 torben 532 void MainView::keyPressEvent ( QKeyEvent* event )
56     {
57     Q_UNUSED(event);
58     qApp->quit();
59     }
60 torben 509
61     void MainView::onTimer()
62     {
63 torben 512 screenManager.timerTick();
64 torben 524
65 torben 528 readXml();
66 torben 527
67 torben 528 switchScreens();
68     }
69 torben 527
70 torben 524
71 torben 528 bool MainView::readXml()
72     {
73     const int TIMEOUT = 30*60*1000; // 30 minutter
74     if ( lastXml.isNull() || lastXml.elapsed() > TIMEOUT) {
75 torben 529
76 torben 528 xmlHandler.readXml( "http://infoscreen.sundhedhorsens.dk/infoscreen/screen_xml.php?screen_id=1" );
77 torben 527
78 torben 528 lastXml = QTime::currentTime();
79    
80     screenItems = xmlHandler.getScreenSet();
81    
82     if ( currentItemIdx >= screenItems.size() )
83     currentItemIdx = screenItems.size()-1; //avoid overflow
84    
85    
86     return true;
87     } else {
88     return false;
89 torben 524 }
90 torben 509 }
91 torben 528
92     void MainView::switchScreens()
93     {
94    
95     if (lastScreenSwitch.isNull() || lastScreenSwitch.elapsed() > (currentItem.runtime*1000)) {
96    
97 torben 529 QTime now = QTime::currentTime();
98 torben 528 if (lastScreenSwitch.isNull())
99 torben 529 currentItemIdx = -1;
100    
101     bool found = false;
102     int tries = 0;
103    
104 torben 531 if (screenItems.size() > 0) { //only try if we have a any screens
105     while (found == false && tries <= screenItems.size()) { //find next with valid display time
106     tries++;
107     currentItemIdx = (currentItemIdx+1) % screenItems.size();
108     currentItem = screenItems.at(currentItemIdx);
109 torben 529
110 torben 531 if (currentItem.start <= now && now <= currentItem.stop )
111     found = true;
112     }
113 torben 529 }
114    
115     if (found) {
116    
117     if (currentItem.module == "info_image") {
118     ensureVisible(picture);
119    
120     picture->loadFromUrl( currentItem.url );
121    
122     }
123    
124    
125     } else {
126     qDebug() << "no screen";
127     hideAll();
128     }
129 torben 528 lastScreenSwitch = QTime::currentTime();
130 torben 529
131 torben 528 }
132     }
133 torben 529
134     void MainView::ensureVisible(QWidget* widget)
135     {
136     if (! widget->isVisible()) {
137     hideAll();
138     widget->setVisible(true);
139     }
140     }
141    
142     void MainView::hideAll()
143     {
144     render->setVisible( false );
145     web->setVisible( false);
146     picture->setVisible( false );
147     video->setVisible(false);
148     }

  ViewVC Help
Powered by ViewVC 1.1.20