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

Annotation of /infoscreen/mainview.cpp

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.20