From 3e5bdc8c8030037335f13dd4b93f23e103bd30f6 Mon Sep 17 00:00:00 2001 From: apio Date: Mon, 9 Oct 2023 22:05:30 +0200 Subject: [PATCH] apps: Add clock --- apps/CMakeLists.txt | 2 ++ apps/clock.cpp | 40 +++++++++++++++++++++++ apps/taskbar.cpp | 3 ++ base/usr/share/icons/32x32/app-clock.tga | Bin 0 -> 4140 bytes 4 files changed, 45 insertions(+) create mode 100644 apps/clock.cpp create mode 100644 base/usr/share/icons/32x32/app-clock.tga diff --git a/apps/CMakeLists.txt b/apps/CMakeLists.txt index 1aa3f138..f2a98141 100644 --- a/apps/CMakeLists.txt +++ b/apps/CMakeLists.txt @@ -47,3 +47,5 @@ luna_app(taskbar.cpp taskbar) target_link_libraries(taskbar PUBLIC ui) luna_app(2048.cpp 2048) target_link_libraries(2048 PUBLIC ui) +luna_app(clock.cpp clock) +target_link_libraries(clock PUBLIC ui) diff --git a/apps/clock.cpp b/apps/clock.cpp new file mode 100644 index 00000000..296683cc --- /dev/null +++ b/apps/clock.cpp @@ -0,0 +1,40 @@ +#include +#include +#include + +ui::Label* g_label; + +void update_time() +{ + time_t t = time(NULL); + struct tm* tp = localtime(&t); + + static char buf[2048]; + strftime(buf, sizeof(buf), "%H:%M:%S", tp); + + g_label->set_text(StringView { buf }); + + os::EventLoop::the().register_timer(1, update_time); + + ui::App::the().main_window()->draw(); +} + +Result luna_main(int argc, char** argv) +{ + ui::App app; + TRY(app.init(argc, argv)); + + auto* window = TRY(ui::Window::create(ui::Rect { 500, 400, 100, 50 })); + app.set_main_window(window); + + window->set_title("Clock"); + window->set_background(ui::GRAY); + + g_label = TRY(make("00:00:00", ui::BLACK, ui::VerticalAlignment::Center, ui::HorizontalAlignment::Center, + ui::Font::default_bold_font())); + window->set_main_widget(*g_label); + + update_time(); + + return app.run(); +} diff --git a/apps/taskbar.cpp b/apps/taskbar.cpp index 2e894c33..6d9c1d92 100644 --- a/apps/taskbar.cpp +++ b/apps/taskbar.cpp @@ -62,6 +62,9 @@ Result luna_main(int argc, char** argv) StringView gol_command[] = { "/usr/bin/gol" }; TRY(create_widget_group_for_app(layout, { gol_command, 1 }, "/usr/share/icons/32x32/app-gol.tga")); + StringView clock_command[] = { "/usr/bin/clock" }; + TRY(create_widget_group_for_app(layout, { clock_command, 1 }, "/usr/share/icons/32x32/app-clock.tga")); + window->draw(); return app.run(); diff --git a/base/usr/share/icons/32x32/app-clock.tga b/base/usr/share/icons/32x32/app-clock.tga new file mode 100644 index 0000000000000000000000000000000000000000..f8a0af235867a4241286b4796764b243a7bdceb2 GIT binary patch literal 4140 zcmeH{-3r1m426qN;-xqG783@d;2+-mSU&7*z$0Br(~~+ua2+FSa&o>ku!XP)Sj!Nv z6?Su+C%{f%c-#l=X8T)p8dJ-)`j`4N29qoKdGZz~`V4YcG#=bYYxzoz;lFevUuIKd zd-yHy@F_o^4RdB_7`Ao(oDDzt*CO<_sByF$d}>^&L(9aRmG3nVVOUG+DdnQi`}<3u zOM1y$Y^hnjc@0d&ysqtqVJ)qvl#4#}KL8#UTWZiT5qw4q&6Iq2dSZ<)b&sD%%dmfe z|BZKG&kmhuu8bDGp2+wz8V@tqGX9n(_iNc({#LDpW%XFBv}SosQA=6r^Az5*$A3=X Te7tnm{?s4#>)W>9b(`=67pUPo literal 0 HcmV?d00001