X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fengineer%2Fmainwindow.cpp;h=51abbfd771e2993075223329303970ed989ae6b3;hb=d6516b0d9faa26fe6c64000c34f8d820f91ac479;hp=5fdda1d2a4d1c875a0281b44057bf07120be9451;hpb=5a02a4f42dfc5dc6b4daef5fc02431bdfb2968d8;p=r2c2.git diff --git a/source/engineer/mainwindow.cpp b/source/engineer/mainwindow.cpp index 5fdda1d..51abbfd 100644 --- a/source/engineer/mainwindow.cpp +++ b/source/engineer/mainwindow.cpp @@ -1,7 +1,11 @@ #include +#include +#include "libr2c2/clock.h" #include "libr2c2/driver.h" +#include "clockdialog.h" #include "engineer.h" #include "mainwindow.h" +#include "telemetrydialog.h" #include "trainlistdialog.h" using namespace std; @@ -17,12 +21,15 @@ MainWindow::MainWindow(Engineer &e): ind_off = dynamic_cast(get_item(widgets, "ind_off")); ind_halt = dynamic_cast(get_item(widgets, "ind_halt")); lbl_status = dynamic_cast(get_item(widgets, "lbl_status")); + lbl_clock = dynamic_cast(get_item(widgets, "lbl_clock")); dynamic_cast(get_item(widgets, "btn_on"))->signal_clicked.connect(sigc::mem_fun(this, &MainWindow::on_clicked)); dynamic_cast(get_item(widgets, "btn_off"))->signal_clicked.connect(sigc::mem_fun(this, &MainWindow::off_clicked)); dynamic_cast(get_item(widgets, "btn_halt"))->signal_clicked.connect(sigc::mem_fun(this, &MainWindow::halt_clicked)); dynamic_cast(get_item(widgets, "btn_trains"))->signal_clicked.connect(sigc::mem_fun(this, &MainWindow::trains_clicked)); + dynamic_cast(get_item(widgets, "btn_telemetry"))->signal_clicked.connect(sigc::mem_fun(this, &MainWindow::telemetry_clicked)); dynamic_cast(get_item(widgets, "btn_quit"))->signal_clicked.connect(sigc::mem_fun(this, &MainWindow::quit_clicked)); + dynamic_cast(get_item(widgets, "btn_clock"))->signal_clicked.connect(sigc::mem_fun(this, &MainWindow::clock_clicked)); R2C2::Driver &driver = engineer.get_layout().get_driver(); if(driver.get_power()) @@ -32,6 +39,9 @@ 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::update_clock)); + engineer.get_layout().get_clock().signal_discontinuity.connect(sigc::mem_fun(this, &MainWindow::update_clock)); } void MainWindow::set_status_text(const string &txt) @@ -61,11 +71,23 @@ void MainWindow::trains_clicked() find_ancestor()->add(*dlg); } +void MainWindow::telemetry_clicked() +{ + TelemetryDialog *dlg = new TelemetryDialog(engineer); + find_ancestor()->add(*dlg); +} + void MainWindow::quit_clicked() { engineer.quit(); } +void MainWindow::clock_clicked() +{ + ClockDialog *dlg = new ClockDialog(engineer); + find_ancestor()->add(*dlg); +} + void MainWindow::power_event(bool p) { ind_on->set_active(p); @@ -76,3 +98,12 @@ void MainWindow::halt_event(bool h) { ind_halt->set_active(h); } + +void MainWindow::update_clock() +{ + 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)); +}