2 * Common Source code project : GUI
3 * (C) 2015 K.Ohta <whatisthis.sowhat _at_ gmail.com>
6 * Jan 14, 2015 : Initial
8 * [qt -> gui -> status bar]
11 #include <QtCore/QVariant>
14 #include <QHBoxLayout>
17 #include <QGraphicsView>
20 #include "menuclasses.h"
27 void Ui_MainWindow::initStatusBar(void)
31 statusUpdateTimer = new QTimer;
32 messagesStatusBar = new QLabel;
33 //dummyStatusArea1 = new QWidget;
34 QSize size1, size2, size3;
36 // QHBoxLayout *layout = new QHBoxLayout();
38 //statusbar->addWidget(layout, 0);
39 messagesStatusBar->setFixedWidth(400);
40 statusbar->addPermanentWidget(messagesStatusBar, 0);
41 messagesStatusBar->font().setPointSize(12);
42 dummyStatusArea1 = new QWidget;
43 statusbar->addPermanentWidget(dummyStatusArea1, 1);
45 #if defined(USE_FD1) && defined(USE_QD1) && defined(USE_TAPE)
46 wfactor = (1280 - 400 - 100 - 100) / (MAX_FD + MAX_QD);
47 #elif defined(USE_FD1) && defined(USE_TAPE)
48 wfactor = (1280 - 400 - 100 - 100) / MAX_FD;
49 #elif defined(USE_QD1) && defined(USE_TAPE)
50 wfactor = (1280 - 400 - 100 - 100) / MAX_QD;
51 #elif defined(USE_FD1)
52 wfactor = (1280 - 400 - 100) / MAX_FD;
53 #elif defined(USE_QD1)
54 wfactor = (1280 - 400 - 100) / MAX_QD;
55 #elif defined(USE_QD1) && defined(USE_FD1)
56 wfactor = (1280 - 400 - 100) / (MAX_QD + MAX_FD);
62 for(i = 0; i < MAX_FD; i++) osd_str_fd[i].clear();
65 for(i = 0; i < 2; i++) osd_str_qd[i].clear();
71 osd_led_data = 0x00000000;
75 for(i = 0; i < MAX_FD; i++) { // Will Fix
76 fd_StatusBar[i] = new QLabel;
77 fd_StatusBar[i]->font().setPointSize(12);
78 fd_StatusBar[i]->setFixedWidth((wfactor > 200) ? 200 : wfactor);
79 // fd_StatusBar[i]->setAlignment(Qt::AlignRight);
80 statusbar->addPermanentWidget(fd_StatusBar[i]);
84 for(i = 0; i < MAX_QD; i++) {
85 qd_StatusBar[i] = new QLabel;
86 qd_StatusBar[i]->font().setPointSize(12);
87 qd_StatusBar[i]->setFixedWidth((wfactor > 150) ? 150 : wfactor);
88 // qd_StatusBar[i]->setAlignment(Qt::AlignRight);
89 statusbar->addPermanentWidget(qd_StatusBar[i]);
93 cmt_StatusBar = new QLabel;
94 cmt_StatusBar->setFixedWidth(100);
95 cmt_StatusBar->font().setPointSize(12);
96 statusbar->addPermanentWidget(cmt_StatusBar);
98 dummyStatusArea2 = new QWidget;
99 dummyStatusArea2->setFixedWidth(100);
100 #ifdef USE_LED_DEVICE
101 for(i = 0; i < USE_LED_DEVICE; i++) {
102 flags_led[i] = false;
103 flags_led_bak[i] = false;
105 led_graphicsView = new QGraphicsView(dummyStatusArea2);
107 led_gScene = new QGraphicsScene(0.0f, 0.0f, (float)dummyStatusArea2->width(), (float)dummyStatusArea2->height());
109 QBrush bbrush(QColor(Qt::black));
110 led_graphicsView->setBackgroundBrush(bbrush);
111 connect(this, SIGNAL(sig_led_update(QRectF)), led_graphicsView, SLOT(updateSceneRect(QRectF)));
113 QBrush rbrush(QColor(Qt::red));
114 float bitwidth = (float)dummyStatusArea2->width() / ((float)USE_LED_DEVICE * 2.0);
115 float start = -(float)dummyStatusArea2->width() / 2.0f + bitwidth * 3.0f;
117 pen.setColor(Qt::black);
118 led_gScene->addRect(0, 0,
119 -(float)dummyStatusArea2->width(),
120 (float)dummyStatusArea2->height(),
122 for(i = 0; i < USE_LED_DEVICE; i++) {
124 pen.setColor(Qt::red);
125 led_leds[i] = led_gScene->addEllipse(start,
126 (float)dummyStatusArea2->height() / 3.0f,
127 bitwidth - 2.0f, bitwidth - 2.0f,
129 start = start + bitwidth * 1.5f;
133 statusbar->addPermanentWidget(dummyStatusArea2, 0);
134 // statusbar->addWidget(dummyStatusArea2);
135 connect(statusUpdateTimer, SIGNAL(timeout()), this, SLOT(redraw_status_bar()));
136 statusUpdateTimer->start(33);
137 #ifdef USE_LED_DEVICE
138 ledUpdateTimer = new QTimer;
139 connect(statusUpdateTimer, SIGNAL(timeout()), this, SLOT(redraw_leds()));
140 statusUpdateTimer->start(5);
144 void Ui_MainWindow::resize_statusbar(int w, int h)
148 double height, width;
153 int qd_width, fd_width;
156 nowSize = messagesStatusBar->size();
157 height = (double)(nowSize.height());
158 width = (double)(nowSize.width());
159 scaleFactor = (double)w / 1280.0;
161 statusbar->setFixedWidth(w);
162 pt = (int)(14.0 * scaleFactor);
164 sfactor = (int)(400.0 * scaleFactor);
165 messagesStatusBar->setFixedWidth((int)(400.0 * scaleFactor));
166 messagesStatusBar->font().setPointSize(pt);
168 #if defined(USE_FD1) && defined(USE_QD1) && defined(USE_TAPE)
169 wfactor = (1280 - 400 - 100 - 100) / (MAX_FD + MAX_QD);
170 #elif defined(USE_FD1) && defined(USE_TAPE)
171 wfactor = (1280 - 400 - 100 - 100) / MAX_FD;
172 #elif defined(USE_QD1) && defined(USE_TAPE)
173 wfactor = (1280 - 400 - 100 - 100) / MAX_QD;
174 #elif defined(USE_FD1)
175 wfactor = (1280 - 400 - 100) / MAX_FD;
176 #elif defined(USE_QD1)
177 wfactor = (1280 - 400 - 100) / MAX_QD;
178 #elif defined(USE_QD1) && defined(USE_FD1)
179 wfactor = (1280 - 400 - 100) / (MAX_QD + MAX_FD);
185 if(fd_width > 200) fd_width = 200;
186 if(fd_width < 50) fd_width = 50;
187 if(qd_width > 150) qd_width = 150;
188 if(qd_width < 50) qd_width = 50;
191 ww = (int)(scaleFactor * (double)fd_width);
192 for(i = 0; i < MAX_FD; i++) { // Will Fix
193 fd_StatusBar[i]->font().setPointSize(pt);
194 fd_StatusBar[i]->setFixedWidth(ww);
199 ww = (int)(scaleFactor * (double)fd_width);
200 for(i = 0; i < MAX_QD; i++) { // Will Fix
201 qd_StatusBar[i]->font().setPointSize(pt);
202 qd_StatusBar[i]->setFixedWidth(ww);
207 cmt_StatusBar->setFixedWidth((int)(100.0 * scaleFactor));
208 cmt_StatusBar->font().setPointSize(pt);
209 sfactor += (int)(100.0 * scaleFactor);
211 #ifdef USE_LED_DEVICE
212 led_graphicsView->setFixedWidth((int)(100.0 * scaleFactor));
214 dummyStatusArea2->setFixedWidth((int)(108.0 * scaleFactor));
215 sfactor += (int)(100.0 * scaleFactor);
216 sfactor = (int)(1280.0 * scaleFactor) - sfactor;
218 dummyStatusArea1->setVisible(true);
220 dummyStatusArea1->setVisible(false);
223 dummyStatusArea1->setFixedWidth(sfactor);
224 #ifdef USE_LED_DEVICE
227 QBrush rbrush(QColor(Qt::red));
228 QBrush bbrush(QColor(Qt::black));
229 float bitwidth = (float)dummyStatusArea2->width() / ((float)USE_LED_DEVICE * 2.0);
230 float start = -(float)dummyStatusArea2->width() / 2.0f + bitwidth * 3.0f;
234 pen.setColor(Qt::black);
235 led_gScene->addRect(0, 0,
236 -(float)dummyStatusArea2->width(),
237 (float)dummyStatusArea2->height(),
239 for(i = 0; i < USE_LED_DEVICE; i++) {
241 pen.setColor(Qt::red);
242 led_leds[i] = led_gScene->addEllipse(start,
243 (float)dummyStatusArea2->height() / 3.0f,
244 bitwidth - 2.0f, bitwidth - 2.0f,
246 start = start + bitwidth * 1.5f;
253 #ifdef USE_LED_DEVICE
254 void Ui_MainWindow::do_recv_data_led(quint32 d)
256 osd_led_data = (uint32_t)d;
259 void Ui_MainWindow::redraw_leds(void)
263 float bitwidth = (float)dummyStatusArea2->width() / ((float)USE_LED_DEVICE * 2.0);
264 float start = -(float)dummyStatusArea2->width() + bitwidth * 4.0f;
265 drawflags = osd_led_data;
267 for(i = 0; i < USE_LED_DEVICE; i++) {
268 flags_led[i] = ((drawflags & (1 << i)) != 0);
269 if(led_leds[i] != NULL) {
271 led_leds[i]->setVisible(true);
273 led_leds[i]->setVisible(false);
276 emit sig_led_update(QRectF(start,
277 0.0f, bitwidth * 2.0f, bitwidth * 2.0f));
278 start = start + bitwidth * 1.5f;
280 led_graphicsView->setScene(led_gScene);
285 void Ui_MainWindow::do_change_osd_qd(int drv, QString tmpstr)
287 if((drv < 0) || (drv > 1)) return;
288 osd_str_qd[drv] = tmpstr;
293 void Ui_MainWindow::do_change_osd_fd(int drv, QString tmpstr)
295 if((drv < 0) || (drv >= MAX_FD)) return;
296 osd_str_fd[drv] = tmpstr;
299 #if defined(USE_TAPE)
300 void Ui_MainWindow::do_change_osd_cmt(QString tmpstr)
302 osd_str_cmt = tmpstr;
306 void Ui_MainWindow::redraw_status_bar(void)
312 for(i = 0; i < MAX_FD; i++) {
313 if(osd_str_fd[i] != fd_StatusBar[i]->text()) fd_StatusBar[i]->setText(osd_str_fd[i]);
317 for(i = 0; i < MAX_QD; i++) {
318 if(osd_str_qd[i] != qd_StatusBar[i]->text()) qd_StatusBar[i]->setText(osd_str_qd[i]);
322 if(osd_str_cmt != cmt_StatusBar->text()) cmt_StatusBar->setText(osd_str_cmt);
327 void Ui_MainWindow::message_status_bar(QString str)
330 if(messagesStatusBar == NULL) return;
331 if(str != messagesStatusBar->text()) messagesStatusBar->setText(str);