2 * Copyright 2012 Samsung Electronics Co., Ltd
4 * Licensed under the Flora License, Version 1.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.tizenopensource.org/license
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
18 #include "gl-gridview.h"
19 #include "gl-ui-util.h"
21 #include "gl-albums.h"
22 #include "gl-db-handler.h"
23 #include "gl-ext-ug-load.h"
24 #include "gl-ext-exec.h"
26 /* Icon swallowed to part "elm.swallow.icon" */
27 #define GL_GRID_ICON_SIZE 156
28 #define GL_GRID_TOUCH_RANGE 20
30 #define GL_PHOTOFRAME_STYLE_VIDEO_BOOKMARK "default_layout_video_bookmark"
31 #define GL_PHOTOFRAME_STYLE_VIDEO "default_layout_video"
32 #define GL_PHOTOFRAME_STYLE_DEFAULT "default_layout"
33 #define GL_GENGRID_ITEM_STYLE_THUMBNAIL "gallery/thumbnail_view"
37 _gl_grid_drag_up(void *data, Evas_Object * obj, void *event_info)
42 _gl_grid_drag_right(void *data, Evas_Object * obj, void *event_info)
47 _gl_grid_drag_down(void *data, Evas_Object * obj, void *event_info)
52 _gl_grid_drag_left(void *data, Evas_Object * obj, void *event_info)
57 _gl_grid_drag_stop(void *data, Evas_Object * obj, void *event_info)
62 _gl_grid_selected(void *data, Evas_Object * obj, void *event_info)
67 _gl_grid_unselected(void *data, Evas_Object * obj, void *event_info)
72 _gl_grid_clicked(void *data, Evas_Object * obj, void *event_info)
77 _gl_grid_longpress(void *data, Evas_Object * obj, void *event_info)
82 _gl_grid_sel_icon(void *data)
85 gl_grid_sel_cb(data, NULL, NULL);
89 _gl_grid_item_check_changed(void *data, Evas_Object * obj, void *event_info)
93 gl_item *gitem = (gl_item *) data;
95 gl_appdata *ad = (gl_appdata *)gitem->ad;
96 int view_mode = gl_get_view_mode(ad);
99 if (view_mode != GL_VIEW_THUMBS_EDIT)
102 Eina_Bool checked = elm_check_state_get(obj);
103 gitem->checked = checked;
106 gl_dbg("Append:%s", gitem->item->file_url);
107 gl_db_selected_list_append(ad, gitem);
111 gl_dbg("Remove:%s", gitem->item->file_url);
112 gl_db_selected_list_remove(ad, gitem);
115 /* Display selectioninfo */
116 int cnt = gl_db_selected_list_count(ad);
117 gl_ui_create_selinfo(ad, ad->gridinfo.edit_layout,
118 ad->gridinfo.nf_it_edit, ad->gridinfo.thumbs_cnt,
123 _gl_grid_shrink_resp_cb(void *data, Evas_Object * obj,
124 const char *emission, const char *source)
129 _gl_grid_sel_icon(data);
130 edje_object_signal_callback_del(obj, "shrink,expand,done", "bg",
131 _gl_grid_shrink_resp_cb);
135 _gl_grid_get_content(void *data, Evas_Object * obj, const char *part)
138 GL_CHECK_NULL(strlen(part));
140 gl_item *gitem = (gl_item *) data;
141 GL_CHECK_NULL(gitem->item);
142 GL_CHECK_NULL(gitem->ad);
143 gl_appdata *ad = (gl_appdata *)gitem->ad;
144 int view_mode = gl_get_view_mode(ad);
145 int item_size = ad->gridinfo.icon_size;
147 if (!strcmp(part, "elm.swallow.icon"))
149 Evas_Object *layout = elm_layout_add(obj);
150 GL_CHECK_NULL(layout);
151 Evas_Object *bg = elm_bg_add(obj);
153 elm_bg_load_size_set(bg, item_size, item_size);
155 int all_cnt = ad->maininfo.medias_cnt;
157 /* Only one photo in a album */
159 if (all_cnt < 2 && gitem->item->type == MINFO_ITEM_IMAGE) {
160 path = _GETICON(gitem->item->file_url);
161 if (gl_is_image_valid(ad, path) == false)
162 path = _GETICON(gitem->item->thumb_url);
163 elm_bg_file_set(bg, path, NULL);
165 path = _gl_get_thumb(ad, gitem->item->file_url,
166 &gitem->item->thumb_url);
168 elm_bg_file_set(bg, path, NULL);
172 elm_bg_file_set(bg, gitem->item->thumb_url,
177 evas_object_size_hint_max_set(bg, item_size, item_size);
178 evas_object_size_hint_aspect_set(bg, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
179 evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
180 evas_object_size_hint_align_set(bg, EVAS_HINT_FILL, EVAS_HINT_FILL);
182 if (gitem->item->type == MINFO_ITEM_VIDEO)
185 // Set bookmark icon.
186 if (gitem->item->meta_info == NULL ||
187 gitem->item->meta_info->video_info == NULL)
193 bk_len = g_list_length(gitem->item->meta_info->video_info->bookmarks);
197 elm_layout_theme_set(layout, GL_CLASS_GENGRID,
198 GL_GRP_PHOTOFRAME, GL_PHOTOFRAME_STYLE_VIDEO_BOOKMARK);
202 elm_layout_theme_set(layout, GL_CLASS_GENGRID,
203 GL_GRP_PHOTOFRAME, GL_PHOTOFRAME_STYLE_VIDEO);
205 elm_object_part_content_set(layout, "elm.swallow.icon", bg);
209 Evas_Object *icon = elm_icon_add(obj);
210 elm_icon_file_set(icon, GL_THUMB_BOOKMARK, NULL);
211 evas_object_show(icon);
212 elm_object_part_content_set(layout, "elm.swallow.bookmarkicon", icon);
216 /* Running time of the video */
217 if (gitem->item->meta_info &&
218 gitem->item->meta_info->video_info)
220 char ret_str[GL_FILE_PATH_LEN_MAX] = { 0, };
221 unsigned int v_dur = gitem->item->meta_info->video_info->duration;
222 int duration = floor(v_dur / GL_TIME_MSEC_PER_SEC);
228 if (duration >= GL_TIME_SEC_PER_HOUR)
230 dur_sec = duration % GL_TIME_SEC_PER_MIN;
231 tmp = floor(duration / GL_TIME_SEC_PER_MIN);
232 dur_min = tmp % GL_TIME_MIN_PER_HOUR;
233 dur_hr = floor(tmp / GL_TIME_MIN_PER_HOUR);
235 else if (duration >= GL_TIME_SEC_PER_MIN)
238 dur_min = floor(duration / GL_TIME_SEC_PER_MIN);
239 dur_sec = duration % GL_TIME_SEC_PER_MIN;
245 dur_sec = duration % GL_TIME_SEC_PER_MIN;
248 snprintf(ret_str, sizeof(ret_str),
249 "%02d:%02d:%02d", dur_hr, dur_min, dur_sec);
250 ret_str[strlen(ret_str)] = '\0';
251 elm_object_part_text_set(layout, "elm.text", ret_str);
256 elm_layout_theme_set(layout, GL_CLASS_GENGRID,
257 GL_GRP_PHOTOFRAME, GL_PHOTOFRAME_STYLE_DEFAULT);
258 elm_object_part_content_set(layout, "elm.swallow.icon", bg);
261 evas_object_show(layout);
262 evas_object_event_callback_add(layout,
263 EVAS_CALLBACK_MOUSE_DOWN, gl_grid_item_mouse_down, gitem);
264 evas_object_event_callback_add(layout,
265 EVAS_CALLBACK_MOUSE_UP, gl_grid_item_mouse_up, gitem);
269 else if (!strcmp(part, "elm.swallow.end") &&
270 (view_mode == GL_VIEW_THUMBS_EDIT))
272 Evas_Object *ck = NULL;
274 ck = elm_check_add(obj);
276 elm_object_style_set(ck, GL_CHECKBOX_STYLE_GRID);
277 evas_object_propagate_events_set(ck, EINA_FALSE);
279 gitem->check_obj = ck;
280 elm_check_state_set(ck, gitem->checked);
282 evas_object_smart_callback_add(ck, "changed",
283 _gl_grid_item_check_changed, data);
284 evas_object_show(ck);
293 _gl_grid_create_items(void *data, Evas_Object * parent)
295 GL_CHECK_FALSE(data);
296 gl_appdata *ad = (gl_appdata *)data;
299 gl_item *gitem = NULL;
301 /* Get all medias count of current album */
302 int cnt = ad->maininfo.medias_cnt;
303 gl_dbg("List count : %d gv_mode : %d", cnt, ad->gridinfo.grid_view_mode);
305 ad->gridinfo.thumbgic.item_style = GL_GENGRID_ITEM_STYLE_THUMBNAIL;
306 ad->gridinfo.thumbgic.func.text_get = NULL;
307 ad->gridinfo.thumbgic.func.content_get = _gl_grid_get_content;
309 elm_gengrid_clear(parent);
310 for (i = 1; i <= cnt; i++)
312 gl_db_get_item_by_index(ad, i, false, &gitem);
313 if (gitem == NULL || gitem->item == NULL ||
314 gitem->item->uuid == NULL) {
315 gl_dbgE("Invalid gitem. continue...");
319 if (!gitem->item->file_url)
321 gl_dbg("file_url is invalid.");
322 ret = minfo_delete_media_id(ad->maininfo.db_handle,
328 gl_db_selected_list_remove(ad, gitem);
329 gl_db_item_list_remove(ad, gitem);
336 if (ad->gridinfo.back_to_normal)
337 gitem->checked = false;
339 if (ad->gridinfo.grid_view_mode == GL_GRID_IMAGES &&
340 gitem->item->type != MINFO_ITEM_IMAGE)
343 gitem->elm_item = elm_gengrid_item_append(parent,
344 &(ad->gridinfo.thumbgic),
349 gitem->sequence = item_cnt;
353 elm_gengrid_select_mode_set(parent, ELM_OBJECT_SELECT_MODE_NONE);
355 ad->gridinfo.thumbs_cnt = item_cnt;
356 ad->gridinfo.back_to_normal = false;
369 gl_grid_item_mouse_down(void *data, Evas * e,
370 Evas_Object * obj, void *event_info)
373 GL_CHECK(event_info);
375 gl_item *gitem = (gl_item *) data;
377 gl_appdata *ad = (gl_appdata *)gitem->ad;
378 Evas_Event_Mouse_Down *ev = (Evas_Event_Mouse_Down *) event_info;
380 ad->gridinfo.touch_info.x = ev->output.x;
381 ad->gridinfo.touch_info.y = ev->output.y;
383 if (ad->uginfo.ug_called_by_me == NULL)
385 edje_object_signal_emit(_EDJ(obj), "mouse,down,shrink", "bg");
386 ad->gridinfo.touch_info.b_pressed = true;
391 gl_grid_item_mouse_up(void *data, Evas * e,
392 Evas_Object * obj, void *event_info)
395 gl_item *gitem = (gl_item *) data;
397 gl_appdata *ad = (gl_appdata *)gitem->ad;
399 if (!event_info || !obj)
404 Evas_Event_Mouse_Up *ev = event_info;
405 if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD ||
406 ev->event_flags & EVAS_EVENT_FLAG_ON_SCROLL)
410 if ((abs(ad->gridinfo.touch_info.x - ev->output.x) > GL_GRID_TOUCH_RANGE) ||
411 (abs(ad->gridinfo.touch_info.y - ev->output.y) > GL_GRID_TOUCH_RANGE))
418 if (ad->gridinfo.touch_info.b_pressed)
420 edje_object_signal_emit(_EDJ(obj), "mouse,up,expand", "bg");
421 edje_object_signal_callback_add(_EDJ(obj),
422 "shrink,expand,done", "bg", _gl_grid_shrink_resp_cb, data);
423 ad->gridinfo.touch_info.b_pressed = false;
428 if (ad->gridinfo.touch_info.b_pressed)
430 edje_object_signal_emit(_EDJ(obj), "mouse,up,expand", "bg");
431 ad->gridinfo.touch_info.b_pressed = false;
436 _gl_grid_set_view_property(Evas_Object * gv)
438 elm_gengrid_align_set(gv, 0.5, 0.0);
439 // vertical scrolling
440 elm_gengrid_horizontal_set(gv, EINA_FALSE);
441 elm_gengrid_bounce_set(gv, EINA_FALSE, EINA_TRUE);
442 elm_gengrid_multi_select_set(gv, EINA_TRUE);
444 evas_object_smart_callback_add(gv, "selected", _gl_grid_selected, NULL);
445 evas_object_smart_callback_add(gv, "unselected", _gl_grid_unselected, NULL);
446 evas_object_smart_callback_add(gv, "clicked", _gl_grid_clicked, NULL);
447 evas_object_smart_callback_add(gv, "longpressed", _gl_grid_longpress, NULL);
448 evas_object_smart_callback_add(gv, "drag,start,up", _gl_grid_drag_up, NULL);
449 evas_object_smart_callback_add(gv, "drag,start,right", _gl_grid_drag_right, NULL);
450 evas_object_smart_callback_add(gv, "drag,start,down", _gl_grid_drag_down, NULL);
451 evas_object_smart_callback_add(gv, "drag,start,left", _gl_grid_drag_left, NULL);
452 evas_object_smart_callback_add(gv, "drag,stop", _gl_grid_drag_stop, NULL);
453 evas_object_size_hint_weight_set(gv, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
459 * Set new view to all/image_grid_view.
461 * b_noc, true: it's nocontents view, false: normal view.
463 static int _gl_grid_set_view(void *data, Evas_Object *view, bool b_noc)
465 GL_CHECK_VAL(data, -1);
466 gl_appdata *ad = (gl_appdata *)data;
467 gl_grid_mode view_mode = ad->gridinfo.grid_view_mode;
471 ad->gridinfo.all_view = view;
473 gl_grid_set_nocontents(ad, view);
475 gl_grid_set_nocontents(ad, NULL);
478 ad->gridinfo.image_view = view;
480 gl_grid_set_nocontents(ad, view);
482 gl_grid_set_nocontents(ad, NULL);
492 gl_grid_sel_cb(void *data, Evas_Object * obj, void *event_info)
495 gl_item *gitem = (gl_item *) data;
496 GL_CHECK(gitem->item);
497 GL_CHECK(gitem->item->file_url);
498 GL_CHECK(strlen(gitem->item->file_url));
500 gl_appdata *ad = (gl_appdata *)gitem->ad;
501 int view_mode = gl_get_view_mode(ad);
504 if (view_mode != GL_VIEW_THUMBS)
509 if (gitem->item->type == MINFO_ITEM_IMAGE ||
510 gitem->item->type == MINFO_ITEM_VIDEO)
512 gl_dbg("Loading UG-IMAGE(VIDEO)-VIEWER");
513 gl_ext_load_iv_ug(ad, gitem);
518 * When select album, show first (GL_FIRST_VIEW_END_POS+1) medias.
519 * Then use idler to get other medias from DB and appened
521 * In order to reduce transit time of first show of thumbnails view.
522 * Cause most of time is spent for getting records from DB,
523 * so we get first (GL_FIRST_VIEW_END_POS+1) items and show thumbnails view,
524 * it will accelerate view show.
527 gl_grid_idler_append_items(void *data)
529 GL_CHECK_VAL(data, -1);
530 gl_appdata *ad = (gl_appdata *)data;
531 GL_CHECK_VAL(ad->albuminfo.current_album, -1);
532 GL_CHECK_VAL(ad->gridinfo.all_view, -1);
535 gl_item *gitem = NULL;
536 /* Get all medias count of current album */
537 int cnt = ad->maininfo.medias_cnt;
540 gl_dbg("First view medias count: %d; girdview mode: %d",
541 cnt, ad->gridinfo.grid_view_mode);
542 if (ad->maininfo.medias_cnt != (GL_FIRST_VIEW_END_POS + 1))
544 gl_dbg("No any more items, return!");
547 /* Get other items from DB */
548 ret = gl_db_get_item_list(ad, ad->albuminfo.current_album,
549 (GL_FIRST_VIEW_END_POS + 1),
550 GL_GET_UNTIL_LAST_RECORD);
551 gl_dbg("\n\n############gl_db_get_item_list Error code: %d#################\n", ret);
554 gl_dbg("gl_db_get_item_list ERROR, return!");
558 cnt = ad->maininfo.medias_cnt;
559 gl_dbg("Grid view all medias count: %d", cnt);
561 if (ad->gridinfo.grid_view_mode != GL_GRID_ALL)
563 /* Event gridview mode is wrong, we still need to get other records */
564 gl_dbg("Gridview mode is wrong, return!");
568 /* From (GL_FIRST_VIEW_END_POS + 2)th item to last one */
569 i = GL_FIRST_VIEW_END_POS + 2;
571 for (; i <= cnt; i++)
573 gl_db_get_item_by_index(ad, i, false, &gitem);
574 if (gitem == NULL || gitem->item == NULL ||
575 gitem->item->uuid == NULL ) {
576 gl_dbgE("Invalid gitem, continue...");
580 if (!gitem->item->file_url)
582 gl_dbg("file_url is invalid.");
583 minfo_delete_media_id(ad->maininfo.db_handle, gitem->item->uuid);
584 gl_db_selected_list_remove(ad, gitem);
585 gl_db_item_list_remove(ad, gitem);
592 if (ad->gridinfo.grid_view_mode == GL_GRID_IMAGES &&
593 gitem->item->type != MINFO_ITEM_IMAGE)
596 gitem->elm_item = elm_gengrid_item_append(ad->gridinfo.all_view,
597 &(ad->gridinfo.thumbgic),
602 gitem->sequence = item_cnt + GL_FIRST_VIEW_END_POS + 1;
605 gl_dbg("\n\n<<<<<<<<Use idler to append other medias--Done<<<<<<<<<\n");
612 ad->gridinfo.thumbs_cnt = item_cnt + GL_FIRST_VIEW_END_POS + 1;
613 gl_dbg("All count appended: %d", ad->gridinfo.thumbs_cnt);
618 Evas_Object *gl_grid_create_view(void *data, Evas_Object * parent, gl_grid_mode mode)
620 GL_CHECK_NULL(parent);
622 gl_appdata *ad = (gl_appdata *)data;
623 Evas_Object *grid = NULL;
627 ad->gridinfo.grid_view_mode = mode;
628 grid = elm_gengrid_add(ad->maininfo.navi_bar);
629 double scale_factor = ad->maininfo.win_scale;
630 gl_dbg("Own scale: %f, elm_config_scale_get =%f", scale_factor, elm_config_scale_get());
631 icon_size = (int)(GL_GRID_ICON_SIZE * scale_factor);
632 item_w = (int)(GL_GRID_ITEM_SIZE_W * scale_factor);
633 item_h = (int)(GL_GRID_ITEM_SIZE_H * scale_factor);
635 if (!_gl_grid_create_items(ad, grid)) {
636 evas_object_del(grid);
638 Evas_Object *noc = gl_ui_create_nocontents_full(ad);
639 gl_grid_set_nocontents(ad, noc);
640 evas_object_show(noc);
643 gl_dbg("gl_grid_item_cnt : %d", ad->gridinfo.thumbs_cnt);
644 if (ad->gridinfo.thumbs_cnt == GL_GRID_ITEM_ZOOM_LEVEL_01_CNT) {
645 icon_size *= GL_GRID_ITEM_ZOOM_LEVEL_01;
646 item_w *= GL_GRID_ITEM_ZOOM_LEVEL_01;
647 item_h *= GL_GRID_ITEM_ZOOM_LEVEL_01;
648 } else if (ad->gridinfo.thumbs_cnt <= GL_GRID_ITEM_ZOOM_LEVEL_02_CNT) {
649 icon_size *= GL_GRID_ITEM_ZOOM_LEVEL_02;
650 item_w *= GL_GRID_ITEM_ZOOM_LEVEL_02;
651 item_h *= GL_GRID_ITEM_ZOOM_LEVEL_02;
654 ad->gridinfo.icon_size = icon_size;
655 gl_grid_set_nocontents(ad, NULL);
656 evas_object_show(grid);
659 elm_gengrid_item_size_set(grid, item_w, item_h);
660 gl_dbg("Gengrid item width: %d, height: %d, icon size: %d.", item_w,
663 _gl_grid_set_view_property(grid);
669 gl_grid_change_to_edit(void *data)
671 GL_CHECK_VAL(data, -1);
672 gl_appdata *ad = (gl_appdata *)data;
673 GL_CHECK_VAL(ad->gridinfo.edit_view, -1);
675 int view_mode = gl_get_view_mode(ad);
678 if (view_mode != GL_VIEW_THUMBS_EDIT)
680 gl_dbg("Error: not in edit mode");
684 b_ret = _gl_grid_create_items(ad, ad->gridinfo.edit_view);
685 gl_grid_set_item_size(ad, NULL);
688 gl_dbgE("Create items failed!");
696 gl_grid_change_to_view(void *data)
698 GL_CHECK_VAL(data, -1);
699 gl_appdata *ad = (gl_appdata *)data;
701 int gridview_mode = ad->gridinfo.grid_view_mode;
704 if (ad->gridinfo.all_view == NULL
705 && ad->gridinfo.image_view == NULL)
707 gl_dbg("Error : Any gridview doesn't exist");
711 ad->gridinfo.back_to_normal = true; // back from edit mode, save state.
713 if (gridview_mode == GL_GRID_ALL)
714 b_ret = _gl_grid_create_items(ad, ad->gridinfo.all_view);
715 else if (gridview_mode == GL_GRID_IMAGES)
716 b_ret = _gl_grid_create_items(ad, ad->gridinfo.image_view);
717 gl_grid_set_item_size(ad, NULL);
720 gl_dbgE("Create items failed!");
728 * Get all/image_grid_view.
730 * True returned if it's normal view, if it's nocontents view return false.
732 bool gl_grid_get_view(void *data, Evas_Object **view)
734 GL_CHECK_FALSE(data);
735 gl_appdata *ad = (gl_appdata *)data;
736 gl_grid_mode view_mode = ad->gridinfo.grid_view_mode;
737 Evas_Object *gv = NULL;
742 gv = ad->gridinfo.all_view;
743 if (gv && ad->gridinfo.all_nocontents == NULL)
747 gv = ad->gridinfo.image_view;
748 if (gv && ad->gridinfo.image_nocontents == NULL)
757 gl_dbg("Previous view is Nocontents...");
766 /* Assign new value to all/image_grid_nocontents */
767 int gl_grid_set_nocontents(void *data, Evas_Object *noc)
769 GL_CHECK_VAL(data, -1);
770 gl_appdata *ad = (gl_appdata *)data;
771 gl_grid_mode view_mode = ad->gridinfo.grid_view_mode;
775 ad->gridinfo.all_nocontents = noc;
778 ad->gridinfo.image_nocontents = noc;
787 int gl_grid_update_items_cnt(void *data, int new_cnt)
789 GL_CHECK_VAL(data, -1);
790 gl_appdata *ad = (gl_appdata *)data;
792 gl_dbg("gridview display item count=%d", new_cnt);
793 ad->gridinfo.updated_thumbs_cnt = new_cnt;
798 int gl_grid_set_item_size(void *data, Evas_Object * gridview)
800 GL_CHECK_VAL(data, -1);
801 gl_appdata *ad = (gl_appdata *)data;
802 int icon_size = (int)(GL_GRID_ICON_SIZE * ad->maininfo.win_scale);
803 int item_w = (int)(GL_GRID_ITEM_SIZE_W * ad->maininfo.win_scale);
804 int item_h = (int)(GL_GRID_ITEM_SIZE_H * ad->maininfo.win_scale);
806 Evas_Object *gv = NULL;
807 int view_mode = gl_get_view_mode(ad);
813 if (view_mode == GL_VIEW_THUMBS_EDIT) {
815 gv = ad->gridinfo.edit_view;
817 b_view = gl_grid_get_view(ad, &gv);
820 if (!b_view || !gv) {
821 gl_dbgE("gridview is invalid!");
826 if (ad->gridinfo.updated_thumbs_cnt <= 0) {
827 cnt = ad->gridinfo.thumbs_cnt;
829 cnt = ad->gridinfo.updated_thumbs_cnt;
830 ad->gridinfo.updated_thumbs_cnt = 0;
833 if (cnt == GL_GRID_ITEM_ZOOM_LEVEL_01_CNT) {
834 icon_size *= GL_GRID_ITEM_ZOOM_LEVEL_01;
835 item_w *= GL_GRID_ITEM_ZOOM_LEVEL_01;
836 item_h *= GL_GRID_ITEM_ZOOM_LEVEL_01;
837 } else if (cnt <= GL_GRID_ITEM_ZOOM_LEVEL_02_CNT) {
838 icon_size *= GL_GRID_ITEM_ZOOM_LEVEL_02;
839 item_w *= GL_GRID_ITEM_ZOOM_LEVEL_02;
840 item_h *= GL_GRID_ITEM_ZOOM_LEVEL_02;
843 ad->gridinfo.icon_size = icon_size;
844 elm_gengrid_item_size_set(gv, item_w, item_h);
845 gl_dbg("Gengrid item width: %d, height: %d, icon size: %d.", item_w,
851 gl_grid_update_items(void *data)
853 GL_CHECK_FALSE(data);
854 gl_appdata *ad = (gl_appdata *)data;
855 Eina_Bool res = EINA_FALSE;
856 Evas_Object *gv = NULL;
857 int view_mode = gl_get_view_mode(ad);
861 if (view_mode == GL_VIEW_THUMBS_EDIT)
863 gl_dbg("\n\nEdit_Mode\n");
864 gv = ad->gridinfo.edit_view;
868 b_view = gl_grid_get_view(ad, &gv);
872 res = _gl_grid_create_items(ad, gv);
875 gl_dbg("_gl_grid_create_items() return false...");
876 evas_object_hide(gv);
878 _gl_grid_set_view(ad, NULL, false);
879 Evas_Object *noc = gl_ui_create_nocontents_full(ad);
880 evas_object_show(noc);
881 _gl_grid_set_view(ad, noc, true);
883 elm_object_part_content_unset(ad->gridinfo.layout, "elm.swallow.view");
884 elm_object_part_content_set(ad->gridinfo.layout, "elm.swallow.view",
889 gl_grid_set_item_size(ad, gv);
894 gl_dbg("Remove nocontents view.");
895 evas_object_hide(gv);
897 _gl_grid_set_view(ad, NULL, false);
899 int view_m = ad->gridinfo.grid_view_mode;
901 Evas_Object *view = NULL;
902 view = gl_grid_create_view(ad, ad->maininfo.navi_bar, view_m);
903 if ((view_m == GL_GRID_IMAGES &&
904 ad->gridinfo.image_nocontents) ||
905 (view_m == GL_GRID_ALL &&
906 ad->gridinfo.all_nocontents))
909 /* No nocotents removed, gridview created, enable edit button */
911 gl_ui_disable_toolbar_item(ad, false,
916 _gl_grid_set_view(ad, view, b_noc);
918 elm_object_part_content_unset(ad->gridinfo.layout, "elm.swallow.view");
919 elm_object_part_content_set(ad->gridinfo.layout, "elm.swallow.view", view);
926 gl_grid_clear_view(void *data)
928 GL_CHECK_VAL(data, -1);
929 gl_appdata *ad = (gl_appdata *)data;
931 if (ad->gridinfo.all_view != NULL)
933 evas_object_del(ad->gridinfo.all_view);
934 ad->gridinfo.all_view = NULL;
937 if (ad->gridinfo.image_view != NULL)
939 evas_object_del(ad->gridinfo.image_view);
940 ad->gridinfo.image_view = NULL;
943 ad->gridinfo.all_nocontents = NULL;
944 ad->gridinfo.image_nocontents = NULL;
946 ad->gridinfo.edit_it = NULL;