class CVideoSlider :
public CListenerMgr,
+ public IKeyDownListener,
+ public IKeyUpListener,
public IMouseMoveListener,
public IMouseDownListener,
public IMouseUpListener,
SSliderData *m;
private:
+ void m_SeekStart(Evas_Object *obj);
+ void m_SeekEnd(Evas_Object *obj);
+
+private:
static Eina_Bool sm_CbTimer(void *dt);
+ static void sm_SeekCb(void *dt);
public:
CVideoSlider(void) :
+ IKeyDownListener(this),
+ IKeyUpListener(this),
IMouseMoveListener(this),
IMouseDownListener(this),
IMouseUpListener(this),
void Pause(void);
/* Listeners */
+ virtual void OnKeyDown(int id, Evas *e, Evas_Object *obj,
+ Evas_Event_Key_Down *ev);
+ virtual void OnKeyUp(int id, Evas *e, Evas_Object *obj,
+ Evas_Event_Key_Up *ev);
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,
#define TIME_STR_START "00:00:00"
#define TIME_INTERVAL 0.1
-#define SLIDER_STEP 0.05
+#define SLIDER_DEFAULT 0.05
+#define SLIDER_STEP 0.03
struct SSliderData {
Evas_Object *base;
sec / 3600, (sec % 3600) / 60, sec % 60);
}
-static void _slider_seek_completed(void *dt)
+void CVideoSlider::sm_SeekCb(void *dt)
{
SSliderData *data;
char str[32];
elm_slider_value_set(m->slider, position);
elm_slider_min_max_set(m->slider, 0, duration);
+ elm_slider_step_set(m->slider, SLIDER_STEP);
_get_timestr(str, sizeof(str), duration);
elm_object_part_text_set(m->base, PART_CURTIME_TEXT, TIME_STR_START);
elm_slider_indicator_show_on_focus_set(slider, EINA_FALSE);
elm_object_style_set(slider, STYLE_SLIDER);
elm_slider_horizontal_set(slider, EINA_TRUE);
- elm_slider_step_set(slider, SLIDER_STEP);
+ elm_slider_step_set(slider, SLIDER_DEFAULT);
- Connect(slider, -1, TYPE_MOUSE_MOVE | TYPE_MOUSE_DOWN | TYPE_MOUSE_UP |
+ Connect(slider, -1, TYPE_KEY_DOWN | TYPE_KEY_UP |
+ TYPE_MOUSE_MOVE | TYPE_MOUSE_DOWN | TYPE_MOUSE_UP |
TYPE_FOCUSED | TYPE_UNFOCUSED | TYPE_CHANGED);
elm_object_part_content_set(base, PART_SLIDER, slider);
m = NULL;
}
-void CVideoSlider::OnMouseDown(int id, Evas *e, Evas_Object *obj,
- Evas_Event_Mouse_Down *ev)
+void CVideoSlider::m_SeekStart(Evas_Object *obj)
{
update_action action;
CViewMgr::GetInstance()->UpdateView(VIEW_ID_PLAYER, (void *)&action);
}
-void CVideoSlider::OnMouseUp(int id, Evas *e, Evas_Object *obj,
- Evas_Event_Mouse_Up *ev)
+void CVideoSlider::m_SeekEnd(Evas_Object *obj)
{
int v;
v = elm_slider_value_get(obj);
- m->player->SetPosition(v, _slider_seek_completed, m);
+ m->player->SetPosition(v, sm_SeekCb, m);
+}
+
+void CVideoSlider::OnKeyDown(int id, Evas *e, Evas_Object *obj,
+ Evas_Event_Key_Down *ev)
+{
+ if (strcmp(ev->keyname, KEY_RIGHT) &&
+ strcmp(ev->keyname, KEY_LEFT))
+ return;
+
+ m_SeekStart(obj);
+}
+
+void CVideoSlider::OnKeyUp(int id, Evas *e, Evas_Object *obj,
+ Evas_Event_Key_Up *ev)
+{
+ if (strcmp(ev->keyname, KEY_RIGHT) &&
+ strcmp(ev->keyname, KEY_LEFT))
+ return;
+
+ m_SeekEnd(obj);
+}
+
+void CVideoSlider::OnMouseDown(int id, Evas *e, Evas_Object *obj,
+ Evas_Event_Mouse_Down *ev)
+{
+ m_SeekStart(obj);
+}
+
+void CVideoSlider::OnMouseUp(int id, Evas *e, Evas_Object *obj,
+ Evas_Event_Mouse_Up *ev)
+{
+ m_SeekEnd(obj);
}
void CVideoSlider::OnMouseMove(int id, Evas *e, Evas_Object *obj,
void CVideoSlider::OnChanged(int id, Evas_Object *obj)
{
+ char str[32];
+ int v;
+
+ v = elm_slider_value_get(obj);
+ _get_timestr(str, sizeof(str), v);
+ elm_object_part_text_set(m->base, PART_CURTIME_TEXT, str);
}