int gl_tag_unset_rename(void *data);
Evas_Object *gl_tag_create_view(void *data, Evas_Object * parent);
int gl_tag_update_view(void *data);
-int gl_tag_update_realized_view(void *data);
int _gl_tag_comeback_from_view(void *data);
bool _gl_tags_sel_home_tag(void *data, const char *tag_id);
int _gl_tags_reset_view(void *data, const char *tag_id, const char *aul_type);
void _gl_ui_slideshow_cb(void *data, Evas_Object *obj, void *event_info);
void _gl_ui_edit_cb(void *data, Evas_Object *obj, void *event_info);
int _gl_ui_set_btns_text(Elm_Object_Item *nf_it, char *btn_text, char *btn_text2);
+int _gl_ui_reset_scroller_pos(Evas_Object *obj);
+int _gl_ui_del_scroller_pos(Evas_Object *obj);
+int _gl_ui_save_scroller_pos(Evas_Object *obj);
+int _gl_ui_restore_scroller_pos(Evas_Object *obj);
#ifdef _cplusplus
}
return 0;
}
+/* Free data after layout deleted */
+static void __gl_albums_sel_delete_layout_cb(void *data, Evas *e,
+ Evas_Object *obj, void *ei)
+{
+ gl_dbg("Delete layout ---");
+ GL_CHECK(data);
+ gl_appdata *ad = (gl_appdata *)data;
+ _gl_ui_del_scroller_pos(ad->albuminfo.select_view);
+ gl_dbg("Delete layout +++");
+}
+
int _gl_albums_sel_create_view(void *data)
{
GL_CHECK_VAL(data, -1);
evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND,
EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(layout, EVAS_HINT_FILL, EVAS_HINT_FILL);
-
+ /* Register delete callback */
+ evas_object_event_callback_add(layout, EVAS_CALLBACK_DEL,
+ __gl_albums_sel_delete_layout_cb, data);
/* Save view mode */
int pre_view_m = gl_get_view_mode(data);
/* Set view mode of Select album */
gl_dbgW("Empty album, return!");
return;
}
+ _gl_ui_save_scroller_pos(obj);
gl_albums_sel_album(album_item);
}
}
ck = elm_object_item_part_content_get(album_item->item,
GL_TILE_CHECKBOX);
_gl_albums_update_check_state(ad, album_item, ck, false);
-
+ _gl_ui_save_scroller_pos(ad->albuminfo.albums_view);
if(ad->maininfo.rename_album_job) {
ecore_job_del(ad->maininfo.rename_album_job);
ad->maininfo.rename_album_job = NULL;
gl_dbg("");
gl_ctrl_disable_tab_event(ad, true);
- /* Clear albums view */
- elm_gengrid_clear(parent);
+
+ if (elm_gengrid_items_count(parent) > 0) {
+ /* Save scroller position before clearing gengrid */
+ _gl_ui_save_scroller_pos(parent);
+ /* Clear albums view */
+ elm_gengrid_clear(parent);
+ }
if (gl_get_view_mode(ad) == GL_VIEW_ALBUMS_EDIT)
ad->albuminfo.albumgic.item_style = GL_GENGRID_STYLE_ALBUM_EDIT_VIEW;
}
gl_dbg_launch(" for:elm_gengrid_item_append:end");
+ /* Restore previous position of scroller */
+ _gl_ui_restore_scroller_pos(parent);
ad->albuminfo.albums_cnt = item_cnt;
gl_ctrl_disable_tab_event(ad, false);
evas_object_smart_callback_add(grid, "realized", _gl_albums_realized,
data);
evas_object_show(grid);
+ _gl_ui_reset_scroller_pos(grid);
return grid;
}
if (view_mode == GL_VIEW_ALBUMS_SELECT) {
if (ad->albuminfo.albums_cnt == 0) {
gl_dbgE("None albums!");
+ _gl_ui_del_scroller_pos(grid);
evas_object_del(grid);
grid = _gl_nocontents_create(ad);
} else {
/* show no contents none album exists */
if (gl_check_gallery_empty(ad)) {
+ _gl_ui_del_scroller_pos(grid);
evas_object_del(grid);
grid = NULL;
gl_set_view_mode(ad, GL_VIEW_ALBUMS);
/* changed to show no contents if needed */
if (gl_check_gallery_empty(ad)) {
- if (ad->albuminfo.albums_view)
+ if (ad->albuminfo.albums_view) {
+ _gl_ui_del_scroller_pos(ad->albuminfo.albums_view);
evas_object_del(ad->albuminfo.albums_view);
+ }
/* Set the grid view mode for creating nocontents view */
ad->gridinfo.view_mode = GL_THUMB_ALBUMS;
Evas_Object *old_view = NULL;
old_view = elm_object_part_content_unset(ad->ctrlinfo.ctrlbar_view_ly,
"contents");
+ _gl_ui_del_scroller_pos(old_view);
evas_object_del(old_view);
elm_object_part_content_set(ad->ctrlinfo.ctrlbar_view_ly,
"contents", noc);
if (gl_check_gallery_empty(ad)) {
/* Set the grid view mode for creating nocontents view */
ad->gridinfo.view_mode = GL_THUMB_ALBUMS;
+ _gl_ui_del_scroller_pos(ad->albuminfo.albums_view);
evas_object_del(ad->albuminfo.albums_view);
Evas_Object *noc = _gl_nocontents_create(ad);
Evas_Object *old_view = NULL;
old_view = elm_object_part_content_unset(ad->ctrlinfo.ctrlbar_view_ly,
"contents");
+ _gl_ui_del_scroller_pos(old_view);
evas_object_del(old_view);
elm_object_part_content_set(ad->ctrlinfo.ctrlbar_view_ly,
"contents", noc);
elm_genlist_item_selected_set(gen_item, EINA_FALSE);
if (elm_genlist_item_flip_get(gen_item))
return;
+
+ /* Save scroller position before clearing gengrid */
+ _gl_ui_save_scroller_pos(obj);
if (ad->taginfo.rename_item) {
gl_tag_unset_rename(ad);
return;
int view_mode = gl_get_view_mode(ad);
gl_dbg("view_mode: %d.", view_mode);
- elm_genlist_clear(genlist);
+ if (elm_genlist_items_count(genlist) > 0) {
+ /* Save scroller position before clearing gengrid */
+ _gl_ui_save_scroller_pos(genlist);
+ /* Clear old view */
+ elm_genlist_clear(genlist);
+ }
if (view_mode == GL_VIEW_TAGS) {
ad->taginfo.taglic.item_style = GL_GENLIST_ITEM_STYLE_TAGS;
item_cnt++;
}
+ /* Restore previous position of scroller */
+ _gl_ui_restore_scroller_pos(genlist);
ad->taginfo.tags_cnt = item_cnt;
evas_object_smart_callback_add(genlist, "selected", _gl_tag_list_sel,
NULL);
return 0;
}
+/* Free data after layout deleted */
+static void __gl_tags_delete_layout_cb(void *data, Evas *e, Evas_Object *obj,
+ void *ei)
+{
+ gl_dbg("Delete layout ---");
+ GL_CHECK(data);
+ gl_appdata *ad = (gl_appdata *)data;
+ _gl_ui_del_scroller_pos(ad->taginfo.tags_view);
+ gl_dbg("Delete layout +++");
+}
+
Evas_Object *gl_tag_create_view(void *data, Evas_Object *parent)
{
GL_CHECK_NULL(data);
evas_object_size_hint_weight_set(genlist, EVAS_HINT_EXPAND,
EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(genlist, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ _gl_ui_reset_scroller_pos(genlist);
Eina_List *tag_elist = NULL;
_gl_data_get_tag_list(ad, &tag_elist);
else
gl_dbgE("Favorites tag would be displayed at least!");
+ /* Register delete callback */
+ evas_object_event_callback_add(parent, EVAS_CALLBACK_DEL,
+ __gl_tags_delete_layout_cb, data);
+
return genlist;
}
return 0;
}
-/* Update all realized items */
-int gl_tag_update_realized_view(void *data)
-{
- GL_CHECK_VAL(data, -1);
- gl_appdata *ad = (gl_appdata *)data;
- int view_mode = gl_get_view_mode(ad);
- Evas_Object *view_obj = NULL;
- const Elm_Object_Item *mode_it = NULL;
- gl_dbg("view_mode: %d.", view_mode);
-
- if (view_mode == GL_VIEW_TAGS) {
- GL_CHECK_VAL(ad->taginfo.tags_view, -1);
- view_obj = ad->taginfo.tags_view;
- mode_it = elm_genlist_decorated_item_get(view_obj);
- } else if (view_mode == GL_VIEW_TAGS_EDIT) {
- GL_CHECK_VAL(ad->ctrlinfo.ctrlbar_edit_view, -1);
- view_obj = ad->ctrlinfo.ctrlbar_edit_view;
- }
-
- Eina_List *list = NULL;
- Eina_List *l = NULL;
- Elm_Object_Item *it = NULL;
- list = elm_genlist_realized_items_get(view_obj);
- EINA_LIST_FOREACH(list, l, it) {
- if (elm_genlist_item_flip_get(it)) {
- gl_dbg("Flip item.");
- continue;
- } else if (mode_it && mode_it == it) {
- gl_dbg("Sweep item.");
- continue;
- }
- elm_genlist_item_update(it);
- }
-
- return 0;
-}
-
/*
* back to tags list view
*/
return 0;
}
+/* Free data after layout deleted */
+static void __gl_thumbs_sel_delete_layout_cb(void *data, Evas *e,
+ Evas_Object *obj, void *ei)
+{
+ gl_dbg("Delete layout ---");
+ GL_CHECK(data);
+ gl_appdata *ad = (gl_appdata *)data;
+ _gl_ui_del_scroller_pos(ad->gridinfo.select_view);
+ gl_dbg("Delete layout +++");
+}
+
/**
* Album selected for adding tags to photo
*/
evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND,
EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(layout, EVAS_HINT_FILL, EVAS_HINT_FILL);
-
+ /* Register delete callback */
+ evas_object_event_callback_add(layout, EVAS_CALLBACK_DEL,
+ __gl_thumbs_sel_delete_layout_cb, data);
/* Save view mode */
int pre_view_m = gl_get_view_mode(data);
/* Set new view mode */
static void __gl_thumbs_sel_cb(void *data, Evas_Object *obj, void *event_info)
{
+ _gl_ui_save_scroller_pos(obj);
__gl_thumbs_open_file(data);
}
ad->gridinfo.thumbgic.func.text_get = NULL;
ad->gridinfo.thumbgic.func.content_get = __gl_thumbs_get_content;
- elm_gengrid_clear(parent);
+ if (elm_gengrid_items_count(parent) > 0) {
+ /* Save scroller position before clearing gengrid */
+ _gl_ui_save_scroller_pos(parent);
+ elm_gengrid_clear(parent);
+ }
+
for (i = 1; i <= cnt; i++) {
_gl_data_get_item_by_index(ad, i, false, &gitem);
if (gitem == NULL || gitem->item == NULL ||
}
+ _gl_ui_restore_scroller_pos(parent);
ad->gridinfo.thumbs_cnt = item_cnt;
ad->gridinfo.back_to_normal = false;
/* Set grid view type */
__gl_thumbs_set_type(ad);
+ _gl_ui_reset_scroller_pos(grid);
int view_mode = gl_get_view_mode(ad);
if (!__gl_thumbs_create_items(ad, grid)) {
+ _gl_ui_del_scroller_pos(grid);
evas_object_del(grid);
grid = NULL;
Evas_Object *noc = _gl_nocontents_create(ad);
if (!res) {
gl_dbg("__gl_thumbs_create_items() return false...");
evas_object_hide(gv);
+ _gl_ui_del_scroller_pos(gv);
evas_object_del(gv);
__gl_thumbs_set_view(ad, NULL, false);
Evas_Object *noc = _gl_nocontents_create(ad);
} else {
gl_dbg("Remove nocontents view.");
evas_object_hide(gv);
+ _gl_ui_del_scroller_pos(gv);
evas_object_del(gv);
__gl_thumbs_set_view(ad, NULL, false);
bool b_noc = false;
_gl_thumbs_del_append_idler(data);
if (ad->gridinfo.all_grid_view != NULL) {
+ _gl_ui_del_scroller_pos(ad->gridinfo.all_grid_view);
_gl_thumbs_clear_cbs(ad->gridinfo.all_grid_view);
evas_object_del(ad->gridinfo.all_grid_view);
ad->gridinfo.all_grid_view = NULL;
return elm_object_item_part_content_get(_nf_it, part);
}
+int _gl_ui_reset_scroller_pos(Evas_Object *obj)
+{
+ GL_CHECK_VAL(obj, -1);
+ evas_object_data_set(obj, "prev_scroller_x", (void *)0);
+ evas_object_data_set(obj, "prev_scroller_y", (void *)0);
+ evas_object_data_set(obj, "prev_scroller_w", (void *)0);
+ evas_object_data_set(obj, "prev_scroller_h", (void *)0);
+ return 0;
+}
+
+int _gl_ui_del_scroller_pos(Evas_Object *obj)
+{
+ GL_CHECK_VAL(obj, -1);
+ evas_object_data_del(obj, "prev_scroller_x");
+ evas_object_data_del(obj, "prev_scroller_y");
+ evas_object_data_del(obj, "prev_scroller_w");
+ evas_object_data_del(obj, "prev_scroller_h");
+ return 0;
+}
+
+int _gl_ui_save_scroller_pos(Evas_Object *obj)
+{
+ GL_CHECK_VAL(obj, -1);
+ Evas_Coord x = 0;
+ Evas_Coord y = 0;
+ Evas_Coord w = 0;
+ Evas_Coord h = 0;
+
+ elm_scroller_region_get(obj, &x, &y, &w, &h);
+ gl_dbg("(%dx%d), (%dx%d)", x, y, w, h);
+ evas_object_data_set(obj, "prev_scroller_x", (void *)x);
+ evas_object_data_set(obj, "prev_scroller_y", (void *)y);
+ evas_object_data_set(obj, "prev_scroller_w", (void *)w);
+ evas_object_data_set(obj, "prev_scroller_h", (void *)h);
+ return 0;
+}
+
+int _gl_ui_restore_scroller_pos(Evas_Object *obj)
+{
+ GL_CHECK_VAL(obj, -1);
+ Evas_Coord x = 0;
+ Evas_Coord y = 0;
+ Evas_Coord w = 0;
+ Evas_Coord h = 0;
+
+ x = (Evas_Coord)evas_object_data_get(obj, "prev_scroller_x");
+ y = (Evas_Coord)evas_object_data_get(obj, "prev_scroller_y");
+ w = (Evas_Coord)evas_object_data_get(obj, "prev_scroller_w");
+ h = (Evas_Coord)evas_object_data_get(obj, "prev_scroller_h");
+ gl_dbg("(%dx%d), (%dx%d)", x, y, w, h);
+ if (w > 0 && h > 0)
+ elm_scroller_region_show(obj, x, y, w, h);
+ return 0;
+}
+
GL_CHECK_FALSE(dst);
GL_CHECK_FALSE(gitem);
/* Move thumb first */
- if (_gl_local_data_move_media(gitem->item, dst) < 0) {
- gl_dbgE("Move media thumbnail failed!");
- return EINA_FALSE;
+ if (_gl_fs_move(src, dst)) {
+ if (_gl_local_data_move_media(gitem->item, dst) < 0) {
+ gl_dbgE("Move media thumbnail failed!");
+ return EINA_FALSE;
+ }
+ return EINA_TRUE;
}
- return _gl_fs_move(src, dst);
+ return EINA_FALSE;
}
#ifdef _USE_ROTATE_BG
if (ad->ctrlinfo.tab_mode == GL_CTRL_TAB_TAGS)
_gl_data_update_item_list(ad);
else
- __gl_refresh_albums_list(ad, true, false);
+ __gl_refresh_albums_list(ad, false, false);
memset(ad->albuminfo.dest_folder, 0x00, GL_DIR_PATH_LEN_MAX);
} else if (view_mode == GL_VIEW_TAGS ||
view_mode == GL_VIEW_TAGS_EDIT) {
/* Update genlist changed to tab Tags */
- gl_tag_update_realized_view(ad);
+ gl_tag_update_view(data);
} else if (view_mode == GL_VIEW_THUMBS) {
/* Albums list should be updated first in tab Albums*/
if (ad->ctrlinfo.tab_mode == GL_CTRL_TAB_TAGS) {
} else if (mode == GL_NAVI_TAGS) {
gl_dbg("GL_NAVI_TAGS");
/* disable 'edit' button */
- ad->taginfo.b_edit_disable = false;
+ ad->taginfo.b_edit_disable = true;
}else if (mode == GL_NAVI_THUMBS) {
gl_dbg("GL_NAVI_THUMBS");
/* disable 'edit' button */
_gl_ui_disable_btn(ad->gridinfo.edit_btn);
+ _gl_ui_disable_btn(ad->gridinfo.slideshow_btn);
/* Check title button */
if (ad->ctrlinfo.tab_mode == GL_CTRL_TAB_TAGS)
_gl_ui_show_add_btn(ad);