diff --git a/DbTernaryClock.pro b/DbTernaryClock.pro new file mode 100644 index 0000000..ce6bd43 --- /dev/null +++ b/DbTernaryClock.pro @@ -0,0 +1,19 @@ +QT += core gui widgets + +DBLIBS += dbgui + +TARGET = ternaryclock + +PROJECT_ROOT = .. + +SOURCES += main.cpp + +HEADERS += + +FORMS += + +RESOURCES += + +TRANSLATIONS += + +include($${PROJECT_ROOT}/app.pri) diff --git a/main.cpp b/main.cpp new file mode 100644 index 0000000..08d3638 --- /dev/null +++ b/main.cpp @@ -0,0 +1,93 @@ +#include +#include +#include +#include +#include + +#include "ledindicator.h" + +enum class LightState +{ + State1 = 0, + State2 = 1, + State3 = 2 +}; + +int main(int argc, char **argv) +{ + QApplication app(argc, argv); + + QWidget widget; + LedIndicator *leds[11]; + + { + auto layout = new QHBoxLayout(&widget); + + for(std::size_t i = 0; i < 11; i++) + { + leds[i] = new LedIndicator(&widget); + layout->addWidget(leds[i]); + + if(i == 2 || i == 6) + layout->addSpacing(50); + } + + widget.setLayout(layout); + } + + QTimer timer; + timer.setInterval(100); + QObject::connect(&timer, &QTimer::timeout, [leds](){ + const auto time = QTime::currentTime(); + auto hour = time.hour(); + auto minute = time.minute(); + auto second = time.second(); + + LightState states[11]; + + for(int i = 0; i < 3; i++) + { + auto digit = hour % 3; + hour -= digit; + hour /= 3; + states[2 - i] = LightState(digit); + } + + for(int i = 0; i < 4; i++) + { + auto digit = minute % 3; + minute -= digit; + minute /= 3; + states[6 - i] = LightState(digit); + } + + for(int i = 0; i < 4; i++) + { + auto digit = second % 3; + second -= digit; + second /= 3; + states[10 - i] = LightState(digit); + } + + for(std::size_t i = 0; i < 11; i++) + { + switch(states[i]) + { + case LightState::State1: + leds[i]->setColor(Qt::red); + break; + case LightState::State2: + leds[i]->setColor(Qt::green); + break; + case LightState::State3: + leds[i]->setColor(Qt::blue); + break; + } + } + }); + + widget.show(); + timer.start(); + + return app.exec(); +}