diff options
Diffstat (limited to 'src/layout/gallery.c')
-rw-r--r-- | src/layout/gallery.c | 28 |
1 files changed, 27 insertions, 1 deletions
diff --git a/src/layout/gallery.c b/src/layout/gallery.c index de3bf61..7ba53eb 100644 --- a/src/layout/gallery.c +++ b/src/layout/gallery.c @@ -59,6 +59,8 @@ struct _priv { Eina_List *media_list; int view_mode; + int source_type; + struct grid_data *gdata; struct locmgr *locmgr; @@ -126,6 +128,8 @@ static void _clear_content_list(struct _priv *priv) priv->media_list = NULL; } + elm_object_part_text_set(priv->layout, PART_NOCONTENT, ""); + listmgr_clear_content_list(priv->listmgr); } @@ -220,7 +224,7 @@ static bool _create_utils(struct _priv *priv) int i; for (i = 0; i < E_DATA_MAX; i++) { - dmgr = datamgr_create(i, GALLERY_MEDIA_COND, E_SOURCE_ALL); + dmgr = datamgr_create(i, GALLERY_MEDIA_COND, E_SOURCE_INTERNAL); if (!dmgr) { _ERR("failed to create datamgr"); _destroy_datamgr(priv); @@ -380,6 +384,7 @@ static void _update(void *layout_data, int update_type, void *data) { struct view_update_data *vdata; struct _priv *priv; + struct datamgr *dmgr; int mode; if (!layout_data) { @@ -442,6 +447,27 @@ static void _update(void *layout_data, int update_type, void *data) priv->view_mode = mode; _update_content_list(priv); break; + case UPDATE_SOURCE_TYPE: + if (!data) { + _ERR("invalid argument"); + return; + } + + vdata = data; + mode = vdata->index; + + if (mode == priv->source_type) + return; + + priv->source_type = mode; + + dmgr = priv->dmgr[E_DATA_MEDIA]; + dmgr->ops->set_source(dmgr->handle, mode); + + _clear_content_list(priv); + + _update_content_list(priv); + break; default: break; } |