rt-thread-official/examples/module/ftk_app/ftk_demo/demo_statusbar.c

67 lines
1.4 KiB
C

#include "ftk.h"
#include <time.h>
#define IDC_TIME_ITEM 2000
static Ret update_time(void* ctx)
{
char text[10] = {0};
FtkWidget* item = NULL;
FtkWidget* panel = NULL;
time_t now = time(0);
struct tm* t = localtime(&now);
panel = ftk_default_status_panel();
ftk_snprintf(text, sizeof(text)-1, "%2d:%2d", t->tm_hour, t->tm_min);
item = ftk_widget_lookup(panel, IDC_TIME_ITEM);
ftk_widget_set_text(item, text);
ftk_logd("%s: %s\n", __func__, text);
return RET_OK;
}
#ifdef FTK_AS_PLUGIN
#include "ftk_app_demo.h"
FTK_HIDE int FTK_MAIN(int argc, char* argv[]);
FtkApp* ftk_app_demo_statusbar_create()
{
return ftk_app_demo_create(_("status_bar"), ftk_main);
}
#else
#define FTK_HIDE extern
#endif /*FTK_AS_PLUGIN*/
FTK_HIDE int FTK_MAIN(int argc, char* argv[])
{
FtkSource* timer = NULL;
FtkWidget* win = NULL;
FtkWidget* item = NULL;
FtkWidget* panel = NULL;
FTK_INIT(argc, argv);
/*create a time widget in statusbar.*/
panel = ftk_default_status_panel();
item = ftk_status_item_create(panel, -2, 60);
ftk_widget_set_id(item, IDC_TIME_ITEM);
ftk_widget_show(item, 1);
win = ftk_app_window_create();
ftk_widget_set_text(win, "Hello FTK!");
ftk_widget_show(win, 1);
FTK_QUIT_WHEN_WIDGET_CLOSE(win);
update_time(NULL);
timer = ftk_source_timer_create(60000, update_time, NULL);
ftk_main_loop_add_source(ftk_default_main_loop(), timer);
FTK_RUN();
return 0;
}