support pause/resume the application 31/44831/2
authorMinkyu Kang <mk7.kang@samsung.com>
Tue, 28 Jul 2015 08:54:46 +0000 (17:54 +0900)
committerMinkyu Kang <mk7.kang@samsung.com>
Wed, 29 Jul 2015 09:44:04 +0000 (18:44 +0900)
Change-Id: I4ff3613332fd5c5494529f4194487ef5a96a04a8
Signed-off-by: Minkyu Kang <mk7.kang@samsung.com>
include/view.h
src/layout/gallery.c
src/layout/movie.c
src/layout/music.c
src/main.c
src/util/progressbar.c
src/view/base.c
src/view/mplayer.c
src/view/viewer.c

index c6e85a1..ad62dd6 100644 (file)
@@ -37,7 +37,8 @@ enum update_type {
        UPDATE_CONTENT = 0,
        UPDATE_FOCUS,
        UPDATE_PLAY_INFO,
-       UPDATE_PLAYER
+       UPDATE_PLAYER,
+       UPDATE_RESUME,
 };
 
 #endif /* __AIR_MEDIAHUB_VIEW_H__ */
index edd7268..d1855a2 100644 (file)
@@ -429,6 +429,10 @@ static void _update(void *layout_data, int update_type, void *data)
                listmgr_focus_content_list(priv->listmgr, vdata->index, update);
 
                break;
+       case UPDATE_RESUME:
+               listmgr_focus_content_list(priv->listmgr,
+                               priv->cur_index, false);
+               break;
        default:
                break;
        }
index 71a04b9..49c30fd 100644 (file)
@@ -605,6 +605,10 @@ static void _update(void *layout_data, int update_type, void *data)
                listmgr_focus_play_info(priv->listmgr);
                _update_recent_item(priv, vdata->index);
                break;
+       case UPDATE_RESUME:
+               listmgr_focus_content_list(priv->listmgr,
+                               priv->cur_index, false);
+               break;
        default:
                break;
        }
index 98c7571..49db424 100644 (file)
@@ -571,6 +571,10 @@ static void _update(void *layout_data, int update_type, void *data)
        case UPDATE_FOCUS:
                listmgr_focus_play_info(priv->listmgr);
                break;
+       case UPDATE_RESUME:
+               listmgr_focus_content_list(priv->listmgr,
+                               priv->cur_index, false);
+               break;
        default:
                break;
        }
index 7140ece..fd898d2 100644 (file)
@@ -131,12 +131,12 @@ static void _app_control(app_control_h app_control, void *data)
 
 static void _pause(void *data)
 {
-
+       viewmgr_pause();
 }
 
 static void _resume(void *data)
 {
-
+       viewmgr_resume();
 }
 
 int main(int argc, char **argv)
index 3623016..ec1512c 100644 (file)
@@ -129,6 +129,9 @@ void progressbar_stop(struct progressbar *m)
 
        ecore_timer_del(m->timer);
        m->timer = NULL;
+
+       elm_slider_value_set(m->slider, 0);
+       _update_progress_info(m, 0);
 }
 
 void progressbar_pause(struct progressbar *m)
index 9e50dd9..cdd62b8 100644 (file)
@@ -39,6 +39,7 @@ struct _priv {
        layoutmgr *lmgr;
 
        int current_layout;
+       bool showed;
 };
 
 struct _menu_item {
@@ -239,6 +240,7 @@ static Evas_Object *_create(Evas_Object *win, void *data)
 
        priv->win = win;
        priv->base = base;
+       priv->showed = false;
 
        if (!_draw_items(priv)) {
                _ERR("failed to draw items");
@@ -272,6 +274,7 @@ static void _show(void *view_data)
        priv = view_data;
 
        evas_object_show(priv->base);
+       priv->showed = true;
 }
 
 static void _hide(void *view_data)
@@ -286,6 +289,7 @@ static void _hide(void *view_data)
        priv = view_data;
 
        evas_object_hide(priv->base);
+       priv->showed = false;
 }
 
 static void _update(void *view_data, int update_type, void *data)
@@ -311,6 +315,30 @@ static void _update(void *view_data, int update_type, void *data)
                        update_type, vdata);
 }
 
+static void _pause(void *view_data)
+{
+       viewmgr_update_view(VIEW_MPLAYER, UPDATE_PLAYER, NULL);
+}
+
+static void _resume(void *view_data)
+{
+       struct _priv *priv;
+
+       if (!view_data) {
+               _ERR("failed to get view data");
+               return;
+       }
+
+       priv = view_data;
+
+       if (!priv->showed)
+               return;
+
+       layoutmgr_update_layout(priv->lmgr,
+                       g_menu_item[priv->current_layout].layout_id,
+                       UPDATE_RESUME, NULL);
+}
+
 static void _destroy(void *view_data)
 {
        struct _priv *priv;
@@ -343,6 +371,8 @@ static view_class _vclass = {
        .show = _show,
        .hide = _hide,
        .update = _update,
+       .pause = _pause,
+       .resume = _resume,
        .destroy = _destroy,
 };
 
index a981523..24f129d 100644 (file)
@@ -536,10 +536,10 @@ static void _list_selected(int id, void *data,
        priv = data;
        index = elm_genlist_item_index_get(it) - 1;
 
-       if (priv->playlist.cur != index) {
+       if (priv->playlist.cur != index)
                _mplayer_set_current(priv, index);
-               _player_play(priv);
-       }
+
+       _player_play(priv);
 }
 
 static void _list_realized(int id, void *data,
@@ -837,6 +837,20 @@ static void _update(void *view_data, int update_type, void *data)
        }
 }
 
+static void _pause(void *view_data)
+{
+       struct _priv *priv;
+
+       if (!view_data) {
+               _ERR("failed to get view data");
+               return;
+       }
+
+       priv = view_data;
+
+       _player_stop(priv);
+}
+
 static void _destroy(void *view_data)
 {
        struct _priv *priv;
@@ -879,6 +893,7 @@ static view_class _vclass = {
        .show = _show,
        .hide = _hide,
        .update = _update,
+       .pause = _pause,
        .destroy = _destroy,
 };
 
index f913e09..351b82b 100644 (file)
@@ -972,17 +972,35 @@ static void _update(void *view_data, int update_type, void *data)
                return;
        }
 
-       if (!data) {
-               _ERR("invalid parameter");
+       priv = view_data;
+       vdata = data;
+
+       switch (update_type) {
+       case UPDATE_CONTENT:
+               if (!vdata)
+                       break;
+
+               priv->playlist.list = vdata->list;
+               priv->playlist.cur = vdata->index;
+               priv->playlist.dir = DIR_NONE;
+               break;
+       default:
+               break;
+       }
+}
+
+static void _pause(void *view_data)
+{
+       struct _priv *priv;
+
+       if (!view_data) {
+               _ERR("failed to get view data");
                return;
        }
 
        priv = view_data;
-       vdata = data;
 
-       priv->playlist.list = vdata->list;
-       priv->playlist.cur = vdata->index;
-       priv->playlist.dir = DIR_NONE;
+       _pop_view(priv);
 }
 
 static void _destroy(void *view_data)
@@ -1013,6 +1031,7 @@ static view_class _vclass = {
        .show = _show,
        .hide = _hide,
        .update = _update,
+       .pause = _pause,
        .destroy = _destroy,
 };