Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- static char *
- item_label_get(void *data, Evas_Object *obj, const char *part)
- {
- Eina_List *list, l;
- Eina_Compare_Cb cmp_func = (Eina_Compare_Cb)strcmp;
- char song_dir[256];
- char *song;
- int i, len;
- i = 0;
- len = 0;
- snprintf(song_dir, sizeof(song_dir), "%s/.config/eW2C/songs", getenv("HOME"));
- list = ecore_file_ls(song_dir);
- if (list == NULL)
- {
- eina_list_free (list);
- return NULL;
- }
- list = eina_list_sort(list, 0, cmp_func);
- list = eina_list_nth_list(list, (int)(long) data);
- song = eina_list_data_get(list);
- len = strlen(song);
- for (i = 0; i < strlen(song); i++)
- {
- /* Find songs with '.txt' extensions. */
- if ((song[i] == '.') && (song[i + 1] == 't') &&
- (song[i + 2] == 'x') && (song[i + 3] == 't'))
- {
- song[i] = '\0';
- break;
- } /* Find songs with '.pro' extensions. */
- else if ((song[i] == '.') && (song[i + 1] == 'p') &&
- (song[i + 2] == 'r') && (song[i + 3] == 'o'))
- {
- song[i] = '\0';
- break;
- } /* Find songs with '.chopro' extensions. */
- else if ((song[i] == '.') && (song[i + 1] == 'c') &&
- (song[i + 2] == 'h') && (song[i + 3] == 'o') &&
- (song[i + 4] == 'p') && (song[i + 5] == 'r') &&
- (song[i + 6] == 'o'))
- {
- song[i] = '\0';
- break;
- } /* Find songs with '.chordpro' extensions. */
- else if ((song[i] == '.') && (song[i + 1] == 'c') &&
- (song[i + 2] == 'h') && (song[i + 3] == 'o') &&
- (song[i + 4] == 'r') && (song[i + 5] == 'd') &&
- (song[i + 6] == 'p') && (song[i + 7] == 'r') &&
- (song[i + 8] == 'o'))
- {
- song[i] = '\0';
- break;
- }
- }
- eina_list_free(list);
- if (i < len)
- {
- return strdup(song);
- }
- else
- {
- return NULL;
- }
- }
- static void
- append_item_cb(int count, Evas_Object *song_list)
- {
- Elm_Genlist_Item_Class *item_class = NULL;
- int i, lc;
- Elm_Object_Item *it;
- if (item_class == NULL)
- {
- item_class = elm_genlist_item_class_new();
- item_class -> item_style = "default";
- item_class -> func.text_get = item_label_get;
- item_class -> func.content_get = NULL;
- item_class -> func.state_get = NULL;
- item_class -> func.del = NULL;
- }
- if (count != -1)
- {
- /* Append items. */
- for (i = 0; i < count; i++)
- {
- it = elm_genlist_item_append(song_list,
- item_class,
- (void *)(long)i,
- NULL,
- ELM_GENLIST_ITEM_NONE,
- item_sel_cb,
- NULL);
- }
- }
- lc = elm_genlist_items_count(song_list);
- it = elm_genlist_first_item_get(song_list);
- for (i = 0; i < lc; i++)
- {
- const char *label = elm_object_item_part_text_get(it, "elm.text");
- printf("Total of %i items in list\n", lc);
- if (label == NULL)
- {
- elm_object_item_del(it);
- it = elm_genlist_first_item_get(song_list);
- lc = elm_genlist_items_count(song_list);
- printf("%s is #%i in list and should be removed\n", label, i);
- }
- else
- {
- it = elm_genlist_item_next_get(song_list);
- printf("%s should not be removed\n", label);
- }
- }
- }
- int
- song_list(Evas_Object *main_box)
- {
- Ecore_File_Monitor *mon;
- Evas_Object *song_list;
- char song_dir[256];
- int count;
- count = song_count();
- song_list = elm_genlist_add(elm_object_parent_widget_get(main_box));
- snprintf(song_dir, sizeof(song_dir), "%s/.config/eW2C/songs", getenv("HOME"));
- append_item_cb(count, song_list);
- mon = ecore_file_monitor_add(song_dir, ecore_monitor_cb, song_list);
- elm_box_pack_start(main_box, song_list);
- evas_object_size_hint_weight_set(song_list, 0.6, EVAS_HINT_EXPAND);
- evas_object_size_hint_align_set(song_list, EVAS_HINT_FILL, EVAS_HINT_FILL);
- evas_object_smart_callback_add(song_list, "activated", activated_cb, NULL);
- evas_object_resize(song_list, 100, 400);
- evas_object_show(song_list);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement