slider: convert to class 16/35316/3
authorMinkyu Kang <mk7.kang@samsung.com>
Thu, 12 Feb 2015 02:55:00 +0000 (11:55 +0900)
committerMinkyu Kang <mk7.kang@samsung.com>
Thu, 12 Feb 2015 06:30:29 +0000 (15:30 +0900)
Change-Id: I58f2dea674a265f468873522d820645349a65b0b
Signed-off-by: Minkyu Kang <mk7.kang@samsung.com>
include/slider.h
include/view_player.h
src/slider.cpp
src/view_player.cpp

index c07bd83..a89da17 100644 (file)
 #ifndef __SLIDER_H__
 #define __SLIDER_H__
 
-struct slider_data;
+struct SSliderData;
 
-/**
- * Init slider data
- *
- * @return the pointer of allocated slider_data struct
- */
-struct slider_data *slider_init(void);
+class CVideoSlider :
+       public CListenerMgr,
+       public IMouseMoveListener,
+       public IMouseDownListener,
+       public IMouseUpListener,
+       public IFocusedListener,
+       public IUnfocusedListener,
+       public IChangedListener {
+private:
+       SSliderData *m;
 
-/**
- * Fini slider data
- *
- * @param data the pointer of slider_data struct
- */
-void slider_fini(struct slider_data *data);
+private:
+       void m_SetTimer(void);
+       int m_GetEventTypes(void);
 
-/**
- * Add a slider bar
- *
- * @param data the pointer of slider_data struct
- * @param base the base object of slider layout
- * @param player the pointer of playermgr struct
- * @return if success EINA_TRUE is returned otherwise will return EINA_FALSE
- */
-Eina_Bool slider_add_bar(struct slider_data *data, Evas_Object *base,
-               struct playermgr *player);
+private:
+       static Eina_Bool sm_CbTimer(void *dt);
 
-/**
- * Reset the slider data
- *
- * @param data the pointer of slider_data struct
- * @param duration duration time of video file
- */
-void slider_reset(struct slider_data *data, int duration);
+public:
+       CVideoSlider(void) :
+               IMouseMoveListener(this),
+               IMouseDownListener(this),
+               IMouseUpListener(this),
+               IFocusedListener(this),
+               IUnfocusedListener(this),
+               IChangedListener(this), m(0) {}
+       virtual ~CVideoSlider(void) {}
 
-/**
- * Resume the slider timer
- *
- * @param data the pointer of slider_data struct
- */
-void slider_resume(struct slider_data *data);
+       /**
+        * Create the slider
+        *
+        * @param base the base object of slider layout
+        * @param player the pointer of playermgr struct
+        * @return if success true is returned otherwise will return false
+        */
+       bool Create(Evas_Object *base, playermgr *player);
 
-/**
- * Pause the slider timer
- *
- * @param data the pointer of slider_data struct
- */
-void slider_pause(struct slider_data *data);
+       /**
+        * Destroy the slider
+        */
+       void Destroy(void);
+
+       /**
+        * Reset the slider
+        *
+        * @param duration duration time of video file
+        */
+       void Reset(int duration);
+
+       /**
+        * Resume the slider timer
+        */
+       void Resume(void);
+
+       /**
+        * Pause the slider timer
+        */
+       void Pause(void);
+
+       /* Listeners */
+       virtual void OnMouseMove(int id, Evas *e, Evas_Object *obj,
+                       Evas_Event_Mouse_Move *ev);
+       virtual void OnMouseDown(int id, Evas *e, Evas_Object *obj,
+                       Evas_Event_Mouse_Down *ev);
+       virtual void OnMouseUp(int id, Evas *e, Evas_Object *obj,
+                       Evas_Event_Mouse_Up *ev);
+       virtual void OnFocused(int id, Evas_Object *obj, Elm_Object_Item *item);
+       virtual void OnUnfocused(int id, Evas_Object *obj, Elm_Object_Item *item);
+       virtual void OnChanged(int id, Evas_Object *obj);
+};
 
 #endif
index 838d249..2dc5cfb 100644 (file)
@@ -25,17 +25,25 @@ struct SPlayerParam {
        const char *playlist;
 };
 
+enum update_action {
+       ACTION_HIDE,
+       ACTION_SHOW,
+       ACTION_RESUME,
+       ACTION_PAUSE,
+       ACTION_INIT
+};
+
 class CPlayerView : public CBaseView {
 private:
        SPlayerView *m;
 
 private:
-       void m_PlayerInit(SPlayerParam *param);
+       void m_ControlInit(SPlayerParam *param);
        bool m_UiInit(void);
        bool m_AddControls(void);
        void m_UpdateInfoBar(void);
        void m_UpdateInfoBar(struct mediadata *md);
-       bool m_PlayVideo(void);
+       bool m_PlayerInit(void);
        void m_ShowBar(void);
        void m_HideBar(void);
 
index e6e74b5..0f34fa3 100644 (file)
 #include <Elementary.h>
 #include <Eina.h>
 #include <dbg.h>
+#include <AppCommon.h>
+#include <ViewMgr.h>
+#include <BaseView.h>
 #include <InputHandler.h>
 #include "define.h"
 #include "playermgr.h"
 #include "slider.h"
+#include "view_player.h"
 
 #define TIME_STR_START "00:00:00"
 #define TIME_INTERVAL 0.1
 #define SLIDER_STEP 0.05
 
-struct slider_data;
-
-class CSliderHandler :
-       public CListenerMgr,
-       public IMouseMoveListener,
-       public IFocusedListener,
-       public IUnfocusedListener,
-       public IChangedListener {
-
-private:
-       slider_data *m;
-
-public:
-       CSliderHandler(slider_data *dt) :
-               IMouseMoveListener(this),
-               IFocusedListener(this),
-               IUnfocusedListener(this),
-               IChangedListener(this) {
-               m = dt;
-       }
-       virtual void OnMouseMove(int id, Evas *e, Evas_Object *obj,
-                       Evas_Event_Mouse_Move *ev);
-       virtual void OnFocused(int id, Evas_Object *obj, Elm_Object_Item *item);
-       virtual void OnUnfocused(int id, Evas_Object *obj, Elm_Object_Item *item);
-       virtual void OnChanged(int id, Evas_Object *obj);
-       int GetEventTypes(void);
-};
-
-struct slider_data {
+struct SSliderData {
        Evas_Object *base;
        Evas_Object *slider;
        Ecore_Timer *timer;
        struct playermgr *player;
-       CSliderHandler *handler;
 };
 
 static void _get_timestr(char *str, int size, unsigned int ms)
@@ -74,38 +49,39 @@ static void _get_timestr(char *str, int size, unsigned int ms)
 
 static void _slider_seek_completed(void *dt)
 {
-       struct slider_data *data;
+       SSliderData *data;
        char str[32];
        int pos, r;
+       update_action action;
 
        if (!dt)
                return;
 
-       data = (slider_data *)dt;
+       data = (SSliderData *)dt;
 
        r = playermgr_get_position(data->player, &pos);
        if (r < 0) {
                _ERR("Get Position Failed");
-               slider_resume(data);
                return;
        }
 
        _get_timestr(str, sizeof(str), pos);
        elm_object_part_text_set(data->base, PART_CURTIME_TEXT, str);
 
-       slider_resume(data);
+       action = ACTION_RESUME;
+       CViewMgr::GetInstance()->UpdateView(VIEW_ID_PLAYER, (void *)&action);
 }
 
-static Eina_Bool _slider_timer_cb(void *dt)
+Eina_Bool CVideoSlider::sm_CbTimer(void *dt)
 {
-       struct slider_data *data;
+       SSliderData *data;
        int pos, r;
        char str[32];
 
        if (!dt)
                return ECORE_CALLBACK_CANCEL;
 
-       data = (slider_data *)dt;
+       data = (SSliderData *)dt;
 
        if (!data->player)
                goto error;
@@ -127,71 +103,70 @@ error:
        return ECORE_CALLBACK_CANCEL;
 }
 
-static void _slider_set_timer(struct slider_data *data)
+void CVideoSlider::m_SetTimer(void)
 {
-       if (data->timer)
-               ecore_timer_reset(data->timer);
+       ASSERT(m);
+
+       if (m->timer)
+               ecore_timer_reset(m->timer);
        else
-               data->timer = ecore_timer_add(TIME_INTERVAL,
-                               _slider_timer_cb, data);
+               m->timer = ecore_timer_add(TIME_INTERVAL, sm_CbTimer, m);
 }
 
-void slider_pause(struct slider_data *data)
+void CVideoSlider::Pause(void)
 {
-       if (!data)
-               return;
+       ASSERT(m);
 
-       if (data->timer)
-               ecore_timer_freeze(data->timer);
+       if (m->timer)
+               ecore_timer_freeze(m->timer);
 }
 
-void slider_resume(struct slider_data *data)
+void CVideoSlider::Resume(void)
 {
-       if (!data)
-               return;
+       ASSERT(m);
 
-       if (data->timer)
-               ecore_timer_thaw(data->timer);
+       if (m->timer)
+               ecore_timer_thaw(m->timer);
 }
 
-void slider_reset(struct slider_data *data, int duration)
+void CVideoSlider::Reset(int duration)
 {
-       char str[32];
+       ASSERT(m);
 
-       if (!data)
-               return;
+       char str[32];
 
-       ecore_timer_del(data->timer);
-       data->timer = ecore_timer_add(TIME_INTERVAL, _slider_timer_cb, data);
+       ecore_timer_del(m->timer);
+       m->timer = ecore_timer_add(TIME_INTERVAL, sm_CbTimer, m);
 
-       elm_slider_value_set(data->slider, 0);
-       elm_slider_min_max_set(data->slider, 0, duration);
+       elm_slider_value_set(m->slider, 0);
+       elm_slider_min_max_set(m->slider, 0, duration);
 
        _get_timestr(str, sizeof(str), duration);
-       elm_object_part_text_set(data->base, PART_CURTIME_TEXT, TIME_STR_START);
-       elm_object_part_text_set(data->base, PART_TOTALTIME_TEXT, str);
+       elm_object_part_text_set(m->base, PART_CURTIME_TEXT, TIME_STR_START);
+       elm_object_part_text_set(m->base, PART_TOTALTIME_TEXT, str);
 }
 
-Eina_Bool slider_add_bar(struct slider_data *data, Evas_Object *base,
-               struct playermgr *player)
+bool CVideoSlider::Create(Evas_Object *base, playermgr *player)
 {
+       ASSERT(!m);
+
        Evas_Object *slider;
-       CSliderHandler *handler;
 
-       if (!data || !base) {
+       if (!base) {
                _ERR("invalid parameter");
-               return EINA_FALSE;
+               return false;
        }
 
-       if (data->slider) {
-               _slider_set_timer(data);
-               return EINA_TRUE;
+       m = new SSliderData;
+       if (!m) {
+               _ERR("failed to add slider");
+               return false;
        }
 
        slider = elm_slider_add(base);
        if (!slider) {
                _ERR("failed to add slider");
-               return EINA_FALSE;
+               return true;
        }
 
        elm_slider_indicator_show_set(slider, EINA_FALSE);
@@ -200,49 +175,49 @@ Eina_Bool slider_add_bar(struct slider_data *data, Evas_Object *base,
        elm_slider_horizontal_set(slider, EINA_TRUE);
        elm_slider_step_set(slider, SLIDER_STEP);
 
-       handler = data->handler;
-       handler->Connect(slider, -1, handler->GetEventTypes());
+       Connect(slider, -1, m_GetEventTypes());
 
        elm_object_part_content_set(base, PART_SLIDER, slider);
 
-       data->base = base;
-       data->slider = slider;
-       data->player = player;
+       m->base = base;
+       m->slider = slider;
+       m->player = player;
 
        if (player)
-               _slider_set_timer(data);
+               m_SetTimer();
        else
                elm_object_focus_allow_set(slider, EINA_FALSE);
 
-       return EINA_TRUE;
+       return true;
 }
 
-void slider_fini(struct slider_data *data)
+void CVideoSlider::Destroy(void)
 {
-       if (!data)
-               return;
+       ecore_timer_del(m->timer);
 
-       ecore_timer_del(data->timer);
-       delete data->handler;
-       free(data);
+       delete m;
+       m = NULL;
 }
 
-struct slider_data *slider_init(void)
+void CVideoSlider::OnMouseDown(int id, Evas *e, Evas_Object *obj,
+                       Evas_Event_Mouse_Down *ev)
 {
-       struct slider_data *data;
+       update_action action;
 
-       data = (slider_data *)calloc(1, sizeof(*data));
-       if (!data) {
-               _ERR("allocation fail");
-               return NULL;
-       }
+       action = ACTION_PAUSE;
+       CViewMgr::GetInstance()->UpdateView(VIEW_ID_PLAYER, (void *)&action);
+}
 
-       data->handler = new CSliderHandler(data);
+void CVideoSlider::OnMouseUp(int id, Evas *e, Evas_Object *obj,
+                       Evas_Event_Mouse_Up *ev)
+{
+       int v;
 
-       return data;
+       v = elm_slider_value_get(obj);
+       playermgr_set_position(m->player, v, _slider_seek_completed, m);
 }
 
-void CSliderHandler::OnMouseMove(int id, Evas *e, Evas_Object *obj,
+void CVideoSlider::OnMouseMove(int id, Evas *e, Evas_Object *obj,
                        Evas_Event_Mouse_Move *ev)
 {
        if (!obj)
@@ -252,30 +227,22 @@ void CSliderHandler::OnMouseMove(int id, Evas *e, Evas_Object *obj,
                elm_object_focus_set(obj, EINA_TRUE);
 }
 
-void CSliderHandler::OnFocused(int id, Evas_Object *obj, Elm_Object_Item *item)
+void CVideoSlider::OnFocused(int id, Evas_Object *obj, Elm_Object_Item *item)
 {
        elm_object_signal_emit(m->base, SIG_SLIDER_FOCUS, "");
 }
 
-void CSliderHandler::OnUnfocused(int id, Evas_Object *obj, Elm_Object_Item *item)
+void CVideoSlider::OnUnfocused(int id, Evas_Object *obj, Elm_Object_Item *item)
 {
        elm_object_signal_emit(m->base, SIG_SLIDER_UNFOCUS, "");
 }
 
-void CSliderHandler::OnChanged(int id, Evas_Object *obj)
+void CVideoSlider::OnChanged(int id, Evas_Object *obj)
 {
-       int v, r;
-
-       slider_pause(m);
-
-       v = elm_slider_value_get(obj);
-       r = playermgr_set_position(m->player, v, _slider_seek_completed, m);
-       if (r < 0)
-               slider_resume(m);
 }
 
-int CSliderHandler::GetEventTypes(void)
+int CVideoSlider::m_GetEventTypes(void)
 {
-       return TYPE_MOUSE_MOVE | TYPE_FOCUSED |
-               TYPE_UNFOCUSED | TYPE_CHANGED;
+       return TYPE_MOUSE_MOVE | TYPE_MOUSE_DOWN | TYPE_MOUSE_UP |
+               TYPE_FOCUSED | TYPE_UNFOCUSED | TYPE_CHANGED;
 }
index 38f04db..81967de 100644 (file)
@@ -21,6 +21,7 @@
 #include <AppCommon.h>
 #include <ViewMgr.h>
 #include <BaseView.h>
+#include <InputHandler.h>
 #include <dbg.h>
 #include "define.h"
 #include "i18n.h"
@@ -51,12 +52,6 @@ static const char *_control_name[] = {
        "settings"
 };
 
-enum update_action {
-       ACTION_HIDE,
-       ACTION_SHOW,
-       ACTION_PLAY
-};
-
 typedef void (*btn_event_cb)(void *dt);
 
 struct SPlayerView {
@@ -67,7 +62,8 @@ struct SPlayerView {
        struct playermgr *player;
        struct control_data *control;
        struct volume_data *volume;
-       struct slider_data *slider;
+
+       CVideoSlider *slider;
 
        struct timeout_handler *timeout_handle;
        bool bar_hidden;
@@ -162,7 +158,7 @@ void CPlayerView::m_UpdateInfoBar(struct mediadata *md)
        elm_object_part_text_set(m->base, PART_RESOLUTIONTEXT, buf);
 }
 
-bool CPlayerView::m_PlayVideo(void)
+bool CPlayerView::m_PlayerInit(void)
 {
        struct mediadata *md;
        const char *path;
@@ -180,7 +176,7 @@ bool CPlayerView::m_PlayVideo(void)
                mediadata_destroy(md);
        }
 
-       slider_reset(m->slider, m->duration);
+       m->slider->Reset(m->duration);
        control_signal_emit(m->control, E_PLAYPAUSE_BTN, SIG_SET_PAUSE, "");
 
        if (m->bar_hidden) {
@@ -204,7 +200,7 @@ void CPlayerView::sm_EvtRewindBtn(void *dt)
        r = playermgr_set_rew(data->player, data->duration);
 
        if (r > 0) {
-               slider_pause(data->slider);
+               data->slider->Pause();
                control_signal_emit(data->control, E_PLAYPAUSE_BTN,
                                SIG_SET_PLAY, "");
        }
@@ -223,7 +219,7 @@ void CPlayerView::sm_EvtForwardBtn(void *dt)
        r = playermgr_set_ff(data->player, data->duration);
 
        if (r > 0) {
-               slider_pause(data->slider);
+               data->slider->Pause();
                control_signal_emit(data->control, E_PLAYPAUSE_BTN,
                                SIG_SET_PLAY, "");
        }
@@ -242,7 +238,7 @@ void CPlayerView::sm_EvtPrevBtn(void *dt)
        playermgr_stop_ffrew(data->player);
        playermgr_set_prev_video(data->player);
 
-       action = ACTION_PLAY;
+       action = ACTION_INIT;
        CViewMgr::GetInstance()->UpdateView(data->id, (void *)&action);
 }
 
@@ -259,7 +255,7 @@ void CPlayerView::sm_EvtNextBtn(void *dt)
        playermgr_stop_ffrew(data->player);
        playermgr_set_next_video(data->player, EINA_TRUE);
 
-       action = ACTION_PLAY;
+       action = ACTION_INIT;
        CViewMgr::GetInstance()->UpdateView(data->id, (void *)&action);
 }
 
@@ -305,7 +301,7 @@ void CPlayerView::sm_EvtPlayBtn(void *dt)
        if (playermgr_get_ffrew(data->player)) {
                playermgr_stop_ffrew(data->player);
                playermgr_resume(data->player);
-               slider_resume(data->slider);
+               data->slider->Resume();
                return;
        }
 
@@ -316,12 +312,12 @@ void CPlayerView::sm_EvtPlayBtn(void *dt)
        switch (state) {
        case PLAYER_STATE_PLAYING:
                playermgr_pause(data->player);
-               slider_pause(data->slider);
+               data->slider->Pause();
                break;
 
        case PLAYER_STATE_PAUSED:
                playermgr_resume(data->player);
-               slider_resume(data->slider);
+               data->slider->Resume();
                break;
        default:
                break;
@@ -373,7 +369,7 @@ void CPlayerView::sm_CbPlayComplete(void *dt)
        if (!r)
                elm_exit();
 
-       action = ACTION_PLAY;
+       action = ACTION_INIT;
        CViewMgr::GetInstance()->UpdateView(data->id, (void *)&action);
 }
 
@@ -397,7 +393,7 @@ void CPlayerView::m_ShowBar(void)
        if (m->bar_hidden) {
                elm_object_signal_emit(m->base, SIG_SHOW_VIEW, "");
                m->bar_hidden = false;
-               slider_resume(m->slider);
+               m->slider->Resume();
        }
 }
 
@@ -406,7 +402,7 @@ void CPlayerView::m_HideBar(void)
        elm_object_signal_emit(m->base, SIG_HIDE_VIEW, "");
        m->bar_hidden = true;
 
-       slider_pause(m->slider);
+       m->slider->Pause();
        control_hide(m->control);
 }
 
@@ -505,7 +501,7 @@ bool CPlayerView::m_AddControls(void)
 
        control_handler_init(m->control, sm_EvtControlBtn, m);
 
-       if (!slider_add_bar(m->slider, m->base, m->player))
+       if (!m->slider->Create(m->base, m->player))
                return false;
 
        if (!volume_add_bar(m->volume, m->win))
@@ -540,7 +536,7 @@ Eina_Bool CPlayerView::sm_CbDrawAnimation(void *dt)
        return ECORE_CALLBACK_CANCEL;
 }
 
-void CPlayerView::m_PlayerInit(SPlayerParam *param)
+void CPlayerView::m_ControlInit(SPlayerParam *param)
 {
        int r;
 
@@ -563,7 +559,7 @@ void CPlayerView::m_PlayerInit(SPlayerParam *param)
        if (!m->volume)
                _ERR("volume init failed");
 
-       m->slider = slider_init();
+       m->slider = new CVideoSlider;
        if (!m->slider)
                _ERR("slider init failed");
 }
@@ -622,7 +618,7 @@ bool CPlayerView::Create(void *data)
        m->win = win;
        m->error = false;
 
-       m_PlayerInit((SPlayerParam *)data);
+       m_ControlInit((SPlayerParam *)data);
 
        r = m_UiInit();
        if (!r) {
@@ -631,7 +627,7 @@ bool CPlayerView::Create(void *data)
                return false;
        }
 
-       if (!m_PlayVideo()) {
+       if (!m_PlayerInit()) {
                _ERR("failed to play video");
                m->error = true;
 
@@ -673,13 +669,15 @@ void CPlayerView::Destroy(void)
        playermgr_fini(m->player);
 
        volume_fini(m->volume);
-       slider_fini(m->slider);
        control_fini(m->control);
 
        timeout_handler_fini(m->timeout_handle);
 
        free(m->id);
 
+       m->slider->Destroy();
+       delete m->slider;
+
        delete m;
        m = NULL;
 }
@@ -724,8 +722,16 @@ void CPlayerView::t_OnUpdate(void *dt)
        case ACTION_SHOW:
                m_ShowBar();
                break;
-       case ACTION_PLAY:
-               m_PlayVideo();
+       case ACTION_RESUME:
+               playermgr_resume(m->player);
+               m->slider->Resume();
+               break;
+       case ACTION_PAUSE:
+               playermgr_pause(m->player);
+               m->slider->Pause();
+               break;
+       case ACTION_INIT:
+               m_PlayerInit();
                break;
        }
 }