]> git.tdb.fi Git - r2c2.git/blobdiff - source/engineer/mainwindow.cpp
Display the current time in the main window
[r2c2.git] / source / engineer / mainwindow.cpp
index 5fdda1d2a4d1c875a0281b44057bf07120be9451..22c65d11b2a53d000d1d0f7adb9029bf0a5306b8 100644 (file)
@@ -1,4 +1,6 @@
 #include <msp/gltk/button.h>
+#include <msp/strings/format.h>
+#include "libr2c2/clock.h"
 #include "libr2c2/driver.h"
 #include "engineer.h"
 #include "mainwindow.h"
@@ -17,6 +19,7 @@ MainWindow::MainWindow(Engineer &e):
        ind_off = dynamic_cast<GLtk::Indicator *>(get_item(widgets, "ind_off"));
        ind_halt = dynamic_cast<GLtk::Indicator *>(get_item(widgets, "ind_halt"));
        lbl_status = dynamic_cast<GLtk::Label *>(get_item(widgets, "lbl_status"));
+       lbl_clock = dynamic_cast<GLtk::Label *>(get_item(widgets, "lbl_clock"));
 
        dynamic_cast<GLtk::Button *>(get_item(widgets, "btn_on"))->signal_clicked.connect(sigc::mem_fun(this, &MainWindow::on_clicked));
        dynamic_cast<GLtk::Button *>(get_item(widgets, "btn_off"))->signal_clicked.connect(sigc::mem_fun(this, &MainWindow::off_clicked));
@@ -32,6 +35,8 @@ MainWindow::MainWindow(Engineer &e):
 
        driver.signal_power.connect(sigc::mem_fun(this, &MainWindow::power_event));
        driver.signal_halt.connect(sigc::mem_fun(this, &MainWindow::halt_event));
+
+       engineer.get_layout().get_clock().signal_minute.connect(sigc::mem_fun(this, &MainWindow::clock_minute));
 }
 
 void MainWindow::set_status_text(const string &txt)
@@ -76,3 +81,12 @@ void MainWindow::halt_event(bool h)
 {
        ind_halt->set_active(h);
 }
+
+void MainWindow::clock_minute()
+{
+       const Time::TimeDelta &time = engineer.get_layout().get_clock().get_current_time();
+       unsigned minute = time/Time::min;
+       unsigned hour = minute/60;
+       minute %= 60;
+       lbl_clock->set_text(format("%02d:%02d", hour, minute));
+}