ftk_app_demo.c 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. #include "ftk_app_demo.h"
  2. typedef struct _PrivInfo
  3. {
  4. char* name;
  5. FtkMain ftk_main;
  6. FtkBitmap* icon;
  7. }PrivInfo;
  8. static FtkBitmap* ftk_app_demo_get_icon(FtkApp* thiz)
  9. {
  10. DECL_PRIV(thiz, priv);
  11. return_val_if_fail(priv != NULL, NULL);
  12. return priv->icon;
  13. }
  14. static const char* ftk_app_demo_get_name(FtkApp* thiz)
  15. {
  16. DECL_PRIV(thiz, priv);
  17. return_val_if_fail(priv != NULL, NULL);
  18. return priv->name;
  19. }
  20. static Ret ftk_app_demo_run(FtkApp* thiz, int argc, char* argv[])
  21. {
  22. DECL_PRIV(thiz, priv);
  23. return_val_if_fail(priv != NULL, RET_FAIL);
  24. priv->ftk_main(argc, argv);
  25. return RET_OK;
  26. }
  27. static void ftk_app_demo_destroy(FtkApp* thiz)
  28. {
  29. if(thiz != NULL)
  30. {
  31. DECL_PRIV(thiz, priv);
  32. FTK_FREE(priv->name);
  33. ftk_bitmap_unref(priv->icon);
  34. FTK_FREE(thiz);
  35. }
  36. return;
  37. }
  38. FtkApp* ftk_app_demo_create(const char* name, FtkMain ftk_main)
  39. {
  40. FtkApp* thiz = FTK_ZALLOC(sizeof(FtkApp) + sizeof(PrivInfo));
  41. if(thiz != NULL)
  42. {
  43. DECL_PRIV(thiz, priv);
  44. priv->ftk_main = ftk_main;
  45. priv->name = ftk_strdup(name);
  46. priv->icon = ftk_theme_load_image(ftk_default_theme(), "flag-32"FTK_STOCK_IMG_SUFFIX);
  47. thiz->get_icon = ftk_app_demo_get_icon;
  48. thiz->get_name = ftk_app_demo_get_name;
  49. thiz->run = ftk_app_demo_run;
  50. thiz->destroy = ftk_app_demo_destroy;
  51. }
  52. return thiz;
  53. }