demo_statusbar.c 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. #include "ftk.h"
  2. #include <time.h>
  3. #define IDC_TIME_ITEM 2000
  4. static Ret update_time(void* ctx)
  5. {
  6. char text[10] = {0};
  7. FtkWidget* item = NULL;
  8. FtkWidget* panel = NULL;
  9. time_t now = time(0);
  10. struct tm* t = localtime(&now);
  11. panel = ftk_default_status_panel();
  12. ftk_snprintf(text, sizeof(text)-1, "%2d:%2d", t->tm_hour, t->tm_min);
  13. item = ftk_widget_lookup(panel, IDC_TIME_ITEM);
  14. ftk_widget_set_text(item, text);
  15. ftk_logd("%s: %s\n", __func__, text);
  16. return RET_OK;
  17. }
  18. #ifdef FTK_AS_PLUGIN
  19. #include "ftk_app_demo.h"
  20. FTK_HIDE int FTK_MAIN(int argc, char* argv[]);
  21. FtkApp* ftk_app_demo_statusbar_create()
  22. {
  23. return ftk_app_demo_create(_("status_bar"), ftk_main);
  24. }
  25. #else
  26. #define FTK_HIDE extern
  27. #endif /*FTK_AS_PLUGIN*/
  28. FTK_HIDE int FTK_MAIN(int argc, char* argv[])
  29. {
  30. FtkSource* timer = NULL;
  31. FtkWidget* win = NULL;
  32. FtkWidget* item = NULL;
  33. FtkWidget* panel = NULL;
  34. FTK_INIT(argc, argv);
  35. /*create a time widget in statusbar.*/
  36. panel = ftk_default_status_panel();
  37. item = ftk_status_item_create(panel, -2, 60);
  38. ftk_widget_set_id(item, IDC_TIME_ITEM);
  39. ftk_widget_show(item, 1);
  40. win = ftk_app_window_create();
  41. ftk_widget_set_text(win, "Hello FTK!");
  42. ftk_widget_show(win, 1);
  43. FTK_QUIT_WHEN_WIDGET_CLOSE(win);
  44. update_time(NULL);
  45. timer = ftk_source_timer_create(60000, update_time, NULL);
  46. ftk_main_loop_add_source(ftk_default_main_loop(), timer);
  47. FTK_RUN();
  48. return 0;
  49. }