/apps/filemanager/ftk_app_file_browser.c

http://ftk.googlecode.com/ · C · 70 lines · 57 code · 13 blank · 0 comment · 9 complexity · bf49167a3504a184382f98a5b1da6ad9 MD5 · raw file

  1. #include "ftk_file_browser.h"
  2. #include "ftk_app_file_browser.h"
  3. typedef struct _PrivInfo
  4. {
  5. FtkBitmap* icon;
  6. }PrivInfo;
  7. static FtkBitmap* ftk_app_file_browser_get_icon(FtkApp* thiz)
  8. {
  9. DECL_PRIV(thiz, priv);
  10. const char* name="filem.png";
  11. char file_name[FTK_MAX_PATH + 1] = {0};
  12. return_val_if_fail(priv != NULL, NULL);
  13. if(priv->icon != NULL) return priv->icon;
  14. snprintf(file_name, FTK_MAX_PATH, "%s/icons/%s", APP_DATA_DIR, name);
  15. priv->icon = ftk_bitmap_factory_load(ftk_default_bitmap_factory(), file_name);
  16. if(priv->icon != NULL) return priv->icon;
  17. snprintf(file_name, FTK_MAX_PATH, "%s/icons/%s", APP_LOCAL_DATA_DIR, name);
  18. priv->icon = ftk_bitmap_factory_load(ftk_default_bitmap_factory(), file_name);
  19. return priv->icon;
  20. }
  21. static const char* ftk_app_file_browser_get_name(FtkApp* thiz)
  22. {
  23. return _("File Browser");
  24. }
  25. static Ret ftk_app_file_browser_run(FtkApp* thiz, int argc, char* argv[])
  26. {
  27. FtkWidget* win = ftk_file_browser_create(FTK_FILE_BROWER_APP);
  28. ftk_window_set_animation_hint(win, "app_main_window");
  29. ftk_file_browser_set_path(win, "./");
  30. ftk_file_browser_load(win);
  31. #ifdef HAS_MAIN
  32. FTK_QUIT_WHEN_WIDGET_CLOSE(win);
  33. #endif
  34. return RET_OK;
  35. }
  36. static void ftk_app_file_browser_destroy(FtkApp* thiz)
  37. {
  38. if(thiz != NULL)
  39. {
  40. DECL_PRIV(thiz, priv);
  41. ftk_bitmap_unref(priv->icon);
  42. FTK_FREE(thiz);
  43. }
  44. return;
  45. }
  46. FtkApp* ftk_app_file_browser_create(void)
  47. {
  48. FtkApp* thiz = FTK_ZALLOC(sizeof(FtkApp) + sizeof(PrivInfo));
  49. if(thiz != NULL)
  50. {
  51. thiz->run = ftk_app_file_browser_run;
  52. thiz->get_icon = ftk_app_file_browser_get_icon;
  53. thiz->get_name = ftk_app_file_browser_get_name;
  54. thiz->destroy = ftk_app_file_browser_destroy;
  55. }
  56. return thiz;
  57. }