+ return layout;
+}
+
+static void
+_gl_selected_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ Evas_Object *nf = (Evas_Object *)data;
+ Elm_Object_Item *it = (Elm_Object_Item *)event_info;
+ elm_genlist_item_selected_set(it, EINA_FALSE);
+
+ Evas_Object *layout = create_layout(nf, (char *)eina_list_nth(jsonFiles, (elm_genlist_item_index_get(it) - 1)));
+ elm_naviframe_item_push(nf, NULL, NULL, NULL, layout, NULL);
+}
+
+static char *
+_gl_text_get(void *data, Evas_Object *obj, const char *part)
+{
+ ItemData *id = (ItemData *) data;
+ char *str = (char *)eina_list_nth(jsonFiles, id->index);
+ return strdup(str);
+}
+
+static void
+_gl_del(void *data, Evas_Object *obj)
+{
+}
+
+EAPI_MAIN int
+elm_main(int argc EINA_UNUSED, char **argv EINA_UNUSED)
+{
+ Evas_Object *win, *nf, *genlist;
+ Elm_Genlist_Item_Class *itc = elm_genlist_item_class_new();
+ ItemData *itemData;
+ DIR *dir;
+ struct dirent *ent;
+ int i, fileCount = 0;
+
+ if (argc > 1) {
+ if (!strcmp(argv[1], "--disable-render"))
+ renderMode = false;
+ }
+
+ //WIN
+ elm_policy_set(ELM_POLICY_QUIT, ELM_POLICY_QUIT_LAST_WINDOW_CLOSED);
+ win = elm_win_util_standard_add("lottie", "LottieViewer");
+ elm_win_autodel_set(win, EINA_TRUE);
+ evas_object_resize(win, 500, 700);
+ evas_object_show(win);
+
+ //NAVIFRAME
+ nf = elm_naviframe_add(win);
+ evas_object_size_hint_weight_set(nf, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_win_resize_object_add(win, nf);
+ evas_object_show(nf);
+
+ //GENLIST
+ genlist = elm_genlist_add(nf);
+ elm_genlist_mode_set(genlist, ELM_LIST_COMPRESS);
+ evas_object_smart_callback_add(genlist, "selected", _gl_selected_cb, nf);
+
+ itc->item_style = "default";
+ itc->func.text_get = _gl_text_get;
+ itc->func.del = _gl_del;
+
+ std::string rscPath = DEMO_DIR;
+
+ dir = opendir(rscPath.c_str());
+ while ((ent = readdir(dir)) != NULL) {
+ if (!strncmp(ent->d_name + (strlen(ent->d_name) - 4), "json", 4)) {
+ jsonFiles = eina_list_append(jsonFiles, strdup(ent->d_name));
+ fileCount++;
+ }
+ }
+ closedir(dir);
+
+ for (i = 0; i < fileCount; i++) {
+ itemData = (ItemData *)calloc(sizeof(ItemData), 1);
+ itemData->index = i;
+ elm_genlist_item_append(genlist, itc, (void *)itemData, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
+ }
+
+ elm_naviframe_item_push(nf, "Lottie Viewer", NULL, NULL, genlist, NULL);
+