[TASM-8144] Fix lock screen mini controller issues 00/90500/1
authorRavi Kiran K N <ravi.kiran@samsung.com>
Fri, 30 Sep 2016 09:13:10 +0000 (14:43 +0530)
committerRavi Kiran K N <ravi.kiran@samsung.com>
Fri, 30 Sep 2016 09:13:10 +0000 (14:43 +0530)
1. Hide mini control when unlocked with paused state in lock screen
2. Hide minicontrol after 2 mins in paused state in lock screen

Change-Id: I994333058934ea8a4c1ae17d1893c4e0410c85e0
Signed-off-by: Ravi Kiran K N <ravi.kiran@samsung.com>
playview/src/common/include/vp-play-config.h
playview/src/common/vp-play-config.c
playview/src/view/include/vp-play-view-priv.h
playview/src/view/vp-play-normal-view.c
playview/src/vp-play-view.c
playview/src/widget/include/vp-play-lockscreenmc.h
playview/src/widget/vp-play-lockscreenmc.c

index 8b908ab..f901262 100644 (file)
@@ -81,6 +81,7 @@ bool vp_play_config_get_wifi_direct_active_status(bool *bConnect);
 bool vp_play_config_get_lcd_off_state(bool *bLCDOff);
 
 bool vp_play_config_set_rotate_state_key_changed_cb(system_settings_changed_cb pFunc, void *pUserData);
+bool vp_play_config_set_lock_state_key_changed_cb(system_settings_changed_cb pFunc, void *pUserData);
 bool vp_play_config_ignore_rotate_state_key_changed_cb(void);
 bool vp_play_config_set_battery_charge_state_key_changed_cb(runtime_info_changed_cb pFunc, void *pUserData);
 bool vp_play_config_ignore_battery_charge_state_key_changed_cb(void);
index 3a0ffa5..0fe7bdd 100644 (file)
@@ -354,6 +354,18 @@ bool vp_play_config_set_rotate_state_key_changed_cb(system_settings_changed_cb p
        return TRUE;
 }
 
+bool vp_play_config_set_lock_state_key_changed_cb(system_settings_changed_cb pFunc, void *pUserData)
+{
+       int nErr = -1;
+       nErr = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_LOCK_STATE, pFunc, pUserData);
+       if (nErr != SYSTEM_SETTINGS_ERROR_NONE) {
+               VideoLogError("failed to register lock state callback [0x%x]", nErr);
+               return FALSE;
+       }
+
+       return TRUE;
+}
+
 bool vp_play_config_ignore_rotate_state_key_changed_cb()
 {
        int nErr = -1;
index 13af70c..84fe31a 100644 (file)
@@ -163,7 +163,9 @@ typedef struct _PlayView {
        Evas_Object *lockmini_layout;
        Evas_Object *lsicon_icon;
        Ecore_Timer *lockmini_button_timer;
+       Ecore_Timer *lockmini_idle_timer;
        bool lockmini_visible;
+       bool lockmini_hide;
        bool b_lockmini_show;
 
 } PlayView;
index 15927be..5de99f1 100644 (file)
@@ -7212,6 +7212,14 @@ static bool _vp_play_normal_view_play_start(NormalView *pNormalView, bool bCheck
                VideoLogWarning("pPlayView is NULL");
                return FALSE;
        }
+
+       vp_mm_player_state_t nState = vp_play_normal_view_get_player_state(pPlayView);
+       pPlayView->lockmini_hide = FALSE;
+       if (pPlayView->b_lockmini_show && nState == VP_MM_PLAYER_STATE_PAUSED) {
+               /* Screen unlocked in paused state. So, hide lockscreen minicontrol */
+               pPlayView->lockmini_hide = TRUE;
+       }
+
        if (pNormalView->pZoomGuide) {
                vp_zoom_guide_destroy(pNormalView->pZoomGuide);
                pNormalView->pZoomGuide = NULL;
index a668f5d..ba91376 100644 (file)
@@ -732,6 +732,10 @@ static Eina_Bool __vp_play_view_event_key_down_cb(void *pUserData, int nType, vo
                                VideoLogDebug("Lock feature disabled");
                        }
 
+                       vp_mm_player_state_t nState = vp_play_normal_view_get_player_state(pPlayView);
+                       if (nState == VP_MM_PLAYER_STATE_PLAYING && pPlayView->win_lockmini)
+                               vp_lockscreenmini_show(pPlayView);
+
                        return EINA_TRUE;
                }
        } else if (!strcmp(pKeyEvent->keyname, VP_KEY_CANCLE) || !strcmp(pKeyEvent->keyname, "Esc")) {
@@ -1014,6 +1018,51 @@ static void __vp_play_view_rotate_lock_key_changed_cb(system_settings_key_e key,
        }
 }
 
+static Eina_Bool _vp_lockscreenmini_hide_video_mini_controller(void *pUserData)
+{
+       if (!pUserData) {
+               VideoLogError("pUserData is NULL");
+               return EINA_FALSE;
+       }
+
+       PlayView *pPlayView = (PlayView *)pUserData;
+
+       if (pPlayView->lockmini_visible) {
+               vp_lockscreenmini_hide(pPlayView);
+       }
+       pPlayView->lockmini_idle_timer = NULL;
+       return EINA_FALSE;
+}
+
+
+static void __vp_play_view_lock_state_key_changed_cb(system_settings_key_e key, void *pUserData)
+{
+       if (!pUserData) {
+               VideoLogError("pUserData is NULL");
+               return;
+       }
+
+       PlayView *pPlayView = (PlayView *)pUserData;
+       int lock_state = SYSTEM_SETTINGS_LOCK_STATE_UNLOCK;
+
+       if (key == SYSTEM_SETTINGS_KEY_LOCK_STATE) {
+               system_settings_get_value_int(key, &lock_state);
+               vp_mm_player_state_t nState = vp_play_normal_view_get_player_state(pPlayView);
+
+               if (lock_state == SYSTEM_SETTINGS_LOCK_STATE_UNLOCK && pPlayView->lockmini_hide) {
+                       /* Hide Lock Screen Handle */
+                       VP_EVAS_TIMER_DEL(pPlayView->lockmini_idle_timer);
+                       if (pPlayView->b_lockmini_show) {
+                               vp_lockscreenmini_hide(pPlayView);
+                       }
+               } else if (lock_state == SYSTEM_SETTINGS_LOCK_STATE_LOCK && nState == VP_MM_PLAYER_STATE_PAUSED) {
+                       /* Starting Timer */
+                       VP_EVAS_TIMER_DEL(pPlayView->lockmini_idle_timer);
+                       pPlayView->lockmini_idle_timer = ecore_timer_add((2 * 60), _vp_lockscreenmini_hide_video_mini_controller, pPlayView);
+               }
+       }
+}
+
 static void __vp_play_view_wifi_key_changed_cb(wifi_connection_state_e state, wifi_ap_h ap, void *user_data)
 {
        VideoLogError("not supported");
@@ -2000,6 +2049,8 @@ bool vp_play_view_realize(play_view_handle pViewHandle)
                }
        }
        vp_play_config_set_rotate_state_key_changed_cb(__vp_play_view_rotate_lock_key_changed_cb, (void *)pPlayView);
+       vp_play_config_set_lock_state_key_changed_cb(__vp_play_view_lock_state_key_changed_cb, (void *)pPlayView);
+
        if (pPlayView->bWifi) {
                vp_play_config_set_wifi_state_key_changed_cb(__vp_play_view_wifi_key_changed_cb, (void *)pPlayView);
        }
index 65831ec..7fb5bcf 100644 (file)
@@ -37,7 +37,7 @@ enum vp_lc_controller_button_type {
 };
 
 int vp_lockscreenmini_create(PlayView *pPlayView);
-//int mp_lockscreenmini_hide(struct appdata *ad);
+int vp_lockscreenmini_hide(PlayView *pPlayView);
 int vp_lockscreenmini_show(PlayView *pPlayView);
 int vp_lockscreenmini_destroy(PlayView *pPlayView);
 void vp_lockscreenmini_update_control(PlayView *pPlayView);
index 580f470..8b742b6 100644 (file)
@@ -24,6 +24,8 @@
 #include <minicontrol-type.h>
 #include <device/display.h>
 #include <device/callback.h>
+#include <system_settings.h>
+
 
 #include "vp-play-type-define.h"
 #include "vp-play-string-define.h"
@@ -71,6 +73,7 @@ static time_t release_time;
 static Evas_Object *_load_edj(Evas_Object * parent, const char *file, const char *group);
 static void _load_lockscreenmini(PlayView *pPlayView);
 static void _vp_lockscreenmini_update_layout(PlayView *pPlayView, bool landscape);
+static Eina_Bool _vp_lockscreenmini_hide_video_mini_controller(void *pUserData);
 
 //static bool _mp_lockscreenmini_is_long_press()
 //{
@@ -219,16 +222,10 @@ int vp_lockscreenmini_show(PlayView *pPlayView)
                VideoLogError("pPlayView->win_lockmini is NULL");
                return -1;
        }
-       //MP_CHECK_VAL(!pPlayView->is_lcd_off, -1);
 
        pPlayView->b_lockmini_show = TRUE;
        vp_lockscreenmini_update(pPlayView);
 
-//     FILE *fp = fopen(MP_LSCR_CONTROL, "w");
-//     if (fp) {
-//             fclose(fp);
-//     }
-
        evas_object_show(pPlayView->win_lockmini);
        return 0;
 }
@@ -309,6 +306,8 @@ static void _vp_lockscreenmini_play_pause_btn_clicked_cb(void *data, Evas_Object
                VideoLogError("pPlayView is NULL");
                return;
        }
+       int lock_state = SYSTEM_SETTINGS_LOCK_STATE_UNLOCK;
+       system_settings_get_value_int(SYSTEM_SETTINGS_KEY_LOCK_STATE, &lock_state);
 
        vp_mm_player_state_t nState = vp_play_normal_view_get_player_state(pPlayView);
        VideoLogInfo("nState:%d", nState);
@@ -317,10 +316,18 @@ static void _vp_lockscreenmini_play_pause_btn_clicked_cb(void *data, Evas_Object
                edje_object_signal_emit(elm_layout_edje_get(pPlayView->lockmini_layout), "play_btn_invisible", "play_btn");
                edje_object_signal_emit(elm_layout_edje_get(pPlayView->lockmini_layout), "pause_btn_visible", "pause_btn");
                vp_play_normal_view_on_controller_button_press(pPlayView->pNormalView, LC_CONTROLLER_PAUSE_BUTTON);
+
+               system_settings_get_value_int(SYSTEM_SETTINGS_KEY_LOCK_STATE, &lock_state);
+               if (lock_state == SYSTEM_SETTINGS_LOCK_STATE_LOCK) {
+                       VP_EVAS_TIMER_DEL(pPlayView->lockmini_idle_timer);
+                       pPlayView->lockmini_idle_timer = ecore_timer_add((2 * 60), _vp_lockscreenmini_hide_video_mini_controller, pPlayView);
+               }
+
        } else {
                edje_object_signal_emit(elm_layout_edje_get(pPlayView->lockmini_layout), "play_btn_visible", "play_btn");
                edje_object_signal_emit(elm_layout_edje_get(pPlayView->lockmini_layout), "pause_btn_invisible", "pause_btn");
                vp_play_normal_view_on_controller_button_press(pPlayView->pNormalView, LC_CONTROLLER_PLAY_BUTTON);
+               VP_EVAS_TIMER_DEL(pPlayView->lockmini_idle_timer);
        }
 }
 
@@ -536,6 +543,20 @@ _vp_lockscreenmini_title_set(PlayView *pPlayView)
        evas_object_show(label);
 }
 
+static Eina_Bool _vp_lockscreenmini_hide_video_mini_controller(void *pUserData)
+{
+       if (!pUserData) {
+               VideoLogError("pUserData is NULL");
+               return EINA_FALSE;
+       }
+
+       PlayView *pPlayView = (PlayView *)pUserData;
+       vp_lockscreenmini_hide(pPlayView);
+       pPlayView->lockmini_idle_timer = NULL;
+       return EINA_FALSE;
+}
+
+
 void vp_lockscreenmini_update(PlayView *pPlayView)
 {
        if (!pPlayView) {
@@ -560,22 +581,19 @@ void vp_lockscreenmini_update(PlayView *pPlayView)
 
 }
 
-//int
-//mp_lockscreenmini_hide(struct appdata *pPlayView)
-//{
-//     VideoLogDebug("lockscreenmini view hide!!\n");
-//     mp_retvm_if(pPlayView == NULL, -1, "appdata is NULL");
-//     MP_CHECK_VAL(pPlayView->win_lockmini, -1);
-//
-//     evas_object_hide(pPlayView->win_lockmini);
-//     pPlayView->b_lockmini_show = FALSE;
-//
-//     mp_ecore_timer_del(pPlayView->lockmini_progress_timer);
-//     mp_ecore_timer_del(pPlayView->lockmini_button_timer);
-//
-//     return 0;
-//
-//}
+int vp_lockscreenmini_hide(PlayView *pPlayView)
+{
+       if(!pPlayView || !pPlayView->win_lockmini)
+               return -1;
+
+       evas_object_hide(pPlayView->win_lockmini);
+       pPlayView->b_lockmini_show = FALSE;
+
+       VP_EVAS_TIMER_DEL(pPlayView->lockmini_button_timer);
+
+       return 0;
+}
+
 
 int
 vp_lockscreenmini_destroy(PlayView *pPlayView)
@@ -596,9 +614,9 @@ vp_lockscreenmini_destroy(PlayView *pPlayView)
 
        evas_object_hide(pPlayView->win_lockmini);
        VP_EVAS_TIMER_DEL(pPlayView->lockmini_button_timer);
+       VP_EVAS_TIMER_DEL(pPlayView->lockmini_idle_timer);
        pPlayView->lockmini_visible = false;
 
-//     ecore_file_remove(MP_LSCR_CONTROL);
        return 0;
 }