source: tests/embedded/embedded.cpp@ 1003

Last change on this file since 1003 was 1003, checked in by Dmitry A. Kuminov, 14 years ago

tests: Added embedded test case.

File size: 2.4 KB
Line 
1#include <os2.h>
2
3#include <QDebug>
4#include <QtGui>
5
6class VideoWidget : public QFrame
7{
8public:
9
10 VideoWidget()
11 {
12 layout = new QHBoxLayout (this);
13 layout->setContentsMargins (0, 0, 0, 0);
14 setLayout (layout);
15 stable = 0;
16 show();
17 }
18
19 WId request()
20 {
21 stable = new QWidget();
22 QPalette plt = palette();
23 plt.setColor (QPalette::Window, Qt::black);
24 stable->setPalette (plt);
25 stable->setAutoFillBackground (true);
26 stable->setAttribute (Qt::WA_PaintOnScreen, true);
27
28 layout->addWidget (stable);
29
30 return stable->winId();
31 }
32
33 void release()
34 {
35 layout->removeWidget (stable);
36 stable->deleteLater();
37 stable = 0;
38
39 updateGeometry();
40 }
41
42 QHBoxLayout *layout;
43 QWidget *stable;
44};
45
46class MainWindow : public QMainWindow
47{
48public:
49
50 MainWindow()
51 {
52 QWidget *main = new QWidget();
53 setCentralWidget (main);
54 QVBoxLayout *mainLayout = new QVBoxLayout (main);
55 main->setContentsMargins (0, 0, 0, 0);
56 mainLayout->setSpacing (0);
57 mainLayout->setMargin (0);
58
59 QStackedWidget *stackCentralW = new QStackedWidget (main);
60
61 stackCentralW->addWidget (new QLabel ("Background"));
62
63 videoWidget = new VideoWidget();
64 stackCentralW->addWidget (videoWidget);
65
66 mainLayout->insertWidget (1, stackCentralW);
67
68 mainLayout->insertWidget (2, new QLabel ("Controls"));
69
70 stackCentralW->setCurrentWidget (videoWidget);
71
72 id = videoWidget->request();
73
74 startTimer (1000);
75 }
76
77 void timerEvent (QTimerEvent *)
78 {
79 qDebug() << "*** timer" << qDebugFmtHex (id);
80 HWND hwnd = id;
81 HPS hps = WinGetPS (hwnd);
82 if (hps)
83 {
84 RECTL rcl;
85// WinQueryWindowRect (hwnd, &rcl);
86
87 rcl.xLeft = 0;
88 rcl.yBottom = 0;
89 rcl.xRight = videoWidget->size().width();
90 rcl.yTop = videoWidget->size().height();
91
92 qDebug() << rcl.xRight << rcl.yTop;
93
94 WinDrawBorder (hps, &rcl, 3, 3, CLR_RED, CLR_DARKGREEN, DB_INTERIOR);
95
96 WinReleasePS (hps);
97 }
98 }
99
100 VideoWidget *videoWidget;
101 WId id;
102};
103
104
105int main (int argc, char **argv)
106{
107 QApplication app (argc, argv);
108 MainWindow window;
109 window.resize (400, 300);
110 window.show();
111 return app.exec();
112}
Note: See TracBrowser for help on using the repository browser.