add zoombar in zoom view 19/37619/4
authorJehun Lim <jehun.lim@samsung.com>
Wed, 1 Apr 2015 08:30:21 +0000 (17:30 +0900)
committerJehun Lim <jehun.lim@samsung.com>
Thu, 2 Apr 2015 01:44:38 +0000 (10:44 +0900)
Change-Id: I8efa835d5ace07b7306215df679f2bb83c48996d
Signed-off-by: Jehun Lim <jehun.lim@samsung.com>
CMakeLists.txt
include/common/define.h
include/common/menudef.h
include/view/photo-viewer/ZoomCtxPopup.h [deleted file]
include/view/photo-viewer/photoviewer_view.h
include/view/photo-viewer/zoom_view.h
res/edc/views/zoom_view.edc
src/common/menudef.cpp
src/view/photo-viewer/ZoomCtxPopup.cpp [deleted file]
src/view/photo-viewer/photoviewer_view.cpp
src/view/photo-viewer/zoom_view.cpp

index f880bca..9fc592d 100644 (file)
@@ -69,7 +69,6 @@ src/view/gallery-view/SourceCtxPopup.cpp
 src/view/ctxtmenu-view/ctxtmenu_view.cpp
 src/view/photo-viewer/photoviewer_view.cpp
 src/view/photo-viewer/SettingCtxPopup.cpp
-src/view/photo-viewer/ZoomCtxPopup.cpp
 src/view/photo-viewer/zoom_view.cpp
 src/view/video-player/video_player.cpp
 src/data/mediadata.cpp
index f4bf39a..edf32ae 100644 (file)
@@ -73,6 +73,8 @@
 #define PART_FUNC_BTN "function.button"
 #define PART_RELCONT_TXT "related_content.text"
 #define PART_RELCONT "related_content"
+#define PART_TEXT "text"
+#define PART_SLIDER "slider"
 #define PART_UPARROW "uparrow"
 #define PART_DOWNARROW "downarrow"
 #define PART_LEFTARROW "leftarrow"
 #define SIG_ACTIVATED "activated"
 #define SIG_REALIZED "realized"
 #define SIG_UNREALIZED "unrealized"
+#define SIG_CHANGED "changed"
 #define SIG_SHOW "show"
 #define SIG_HIDE "hide"
 #define SIG_MENU_SHOW "menu,show"
 #define SIZE_BOX_PAD_H 0
 #define SIZE_BTN_LABEL_WIDTH 103
 #define SIZE_CONTENT_LABEL_WIDTH 550
+#define SIZE_LABEL_ZOOM_LEVEL_WIDTH 100
 
 #define SIZE_PREVIEWBAR_ITEM_W 135
 
index b118538..19d487c 100644 (file)
@@ -23,7 +23,6 @@
 #define SORT_TEXT_SIZE 4
 #define MENUITEM_SIZE 3
 #define MAX_PHOTO_ICONS 6
-#define MAX_ZOOM_BTNS 3
 #define MAX_SETTING_BTNS 2
 #define MAX_SPEED_BTNS 3
 #define MAX_EFFECT_BTNS 3
@@ -63,12 +62,6 @@ enum e_event_type {
        E_TYPE_EVENT_INFO
 };
 
-enum zoom_level {
-       E_ZOOM_ORIGINAL = 0,
-       E_ZOOM_X2,
-       E_ZOOM_X4
-};
-
 extern const char *sourcetext[SOURCE_TEXT_SIZE];
 
 extern const char *sorttext[SORT_TEXT_SIZE];
@@ -81,16 +74,12 @@ extern const char *photo_icon_style[MAX_PHOTO_ICONS];
 
 extern const char *tooltip_text[MAX_PHOTO_ICONS];
 
-extern const char *zoom_text[MAX_ZOOM_BTNS];
-
 extern const char *speed_text[MAX_SPEED_BTNS];
 
 extern const char *sort_btn_id[SORT_TEXT_SIZE];
 
 extern const char *source_btn_id[SOURCE_TEXT_SIZE];
 
-extern const char *zoom_btn_id[MAX_ZOOM_BTNS];
-
 extern const char *speed_btn_id[MAX_SPEED_BTNS];
 
 extern const char *layout_type[MAX_LAYOUT];
diff --git a/include/view/photo-viewer/ZoomCtxPopup.h b/include/view/photo-viewer/ZoomCtxPopup.h
deleted file mode 100644 (file)
index 0056cce..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
-* Copyright (c) 2014 Samsung Electronics Co., Ltd All Rights Reserved
-*
-* Licensed under the Apache License, Version 2.0 (the License);
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an AS IS BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-
-#ifndef __ZOOM_CTXPOPUP_H__
-#define __ZOOM_CTXPOPUP_H__
-
-struct SSetCallbackPair;
-
-class CZoomCtxPopup : public CCtxPopup {
-private:
-       SSetCallbackPair *SetCb;
-
-protected:
-       virtual void t_OnConfiguration(void);
-       virtual void t_OnBtnClicked(Evas_Object *obj, void *ev);
-
-public:
-       void RegisterSetCallback(void (*cb)(void *cookie, int zoom_level), void *cookie);
-};
-
-#endif
index bc52efb..696502a 100644 (file)
@@ -67,7 +67,6 @@ private:
                        const char *emission, const char *source);
 
        static void sm_CbSettingCtxPopupSelected(void *cookie, CCtxPopup *instance, const char *text);
-       static void sm_CbZoomCtxPopupSelected(void *cookie, CCtxPopup *instance, const char *text);
 
        static int sm_CbSlideshowSpeed(void *cookie);
        static void sm_CbSetSlideshowSpeed(void *cookie, int speed);
index 13a2d72..6a65e29 100644 (file)
@@ -25,7 +25,8 @@ struct zoom_data {
 
 class CPhotoZoomView : public CBaseView,
        IMouseClickedListener, IMouseMoveListener,
-       IMouseDownListener, IMouseUpListener, ITimeoutListener {
+       IMouseDownListener, IMouseUpListener, IChangedListener,
+       ITimeoutListener {
 private:
        struct SPhotoZoomView *m;
 
@@ -34,7 +35,9 @@ private:
        Eina_Bool m_OnTimer(void);
 
        static void sm_CbContentMoved(void *dt, Evas_Object *obj, void *event_info);
-       void m_OnContentMoved(Evas_Object *obj);
+       void m_OnContentMoved(void);
+
+       void m_OnSliderChanged(void);
 
        void m_UpdateArrow(void);
        void m_UpdateZoomNavi(void);
@@ -42,6 +45,7 @@ private:
        void m_GetZoomNaviRatio(void);
        bool m_MoveZoomNaviImg(void);
        void m_MoveZoomNavi(Evas_Coord_Point coord);
+       bool m_DrawSlider(void);
        bool m_DrawArrow(void);
        bool m_DrawContent(void);
        void m_AddMouseEventCallback(void);
@@ -61,7 +65,8 @@ protected:
 public:
        CPhotoZoomView(const char *szViewId) : CBaseView(szViewId),
                IMouseClickedListener(this), IMouseMoveListener(this),
-               IMouseDownListener(this), IMouseUpListener(this), m(0) {}
+               IMouseDownListener(this), IMouseUpListener(this),
+               IChangedListener(this), m(0) {}
        virtual ~CPhotoZoomView() {}
 
        virtual bool Create(void *data);
@@ -79,6 +84,7 @@ public:
        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 OnChanged(int id, Evas_Object *obj);
 };
 
 
index 7c93508..e4aa127 100644 (file)
@@ -40,14 +40,14 @@ group {
                        description {
                                state, "default" 0.0;
                                rel2.relative, 0.0 0.0;
-                               min, 170 128;
+                               min, 140 110;
                                align, 0.0 0.0;
                                color, 255 255 255 255;
                        }
                        description {
                                state, "hide" 0.0;
                                inherit, "default" 0.0;
-                               color, 255 255 255 76;
+                               color, 255 255 255 80;
                        }
                }
                part {
@@ -75,7 +75,7 @@ group {
                        scale: 1;
                        description {
                                state: "default" 0.0;
-                               min: 130 87;
+                               min: 100 70;
                                rel1 {
                                        to: "padding_rect";
                                        relative: 1.0 1.0;
@@ -94,8 +94,8 @@ group {
                        }
                }
                part {
-                       name: "part_text";
-                       type: TEXT;
+                       name: PART_TEXT;
+                       type: SWALLOW;
                        clip_to, "clip.rect";
                        scale: 1;
                        description {
@@ -106,14 +106,47 @@ group {
                                rel2 {
                                        to: "round_rectangle";
                                }
-                               text {
-                                       font: FONT_STYLE_SANS_MEDIUM;
-                                       size: 40;
-                               }
+                               min: 100 70;
                                color: 255 255 255 255;
                        }
                }
                part {
+                       name, "clip.slider";
+                       type, RECT;
+                       scale, 1;
+                       description {
+                               state, "default" 0.0;
+                               rel1 {
+                                       to: PART_TEXT;
+                                       relative: 0.0 1.0;
+                               }
+                               rel2.to: PART_TEXT;
+                               min: 100 200;
+                               align: 0.5 0.0;
+                       }
+                       description {
+                               state, "hide" 0.0;
+                               inherit, "default" 0.0;
+                               visible, 0;
+                       }
+               }
+               part {
+                       name: PART_SLIDER;
+                       type: SWALLOW;
+                       clip_to: "clip.slider";
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               rel1 {
+                                       to: PART_TEXT;
+                                       relative: 0.0 1.0;
+                               }
+                               rel2.to: PART_TEXT;
+                               min: 100 200;
+                               align: 0.5 0.0;
+                       }
+               }
+               part {
                        name, "clip.uparrow";
                        type, RECT;
                        scale, 1;
@@ -401,6 +434,7 @@ group {
                        source, "";
                        action, STATE_SET "hide" 0.0;
                        target, "clip.rect";
+                       target, "clip.slider";
                        target, "clip.uparrow";
                        target, "clip.downarrow";
                        target, "clip.leftarrow";
@@ -414,6 +448,7 @@ group {
                        source, "";
                        action, STATE_SET "default" 0.0;
                        target, "clip.rect";
+                       target, "clip.slider";
                        target, "clip.zoom_navi";
                        transition, LINEAR 0.15;
                        after, "show,done";
index c7df2ba..a1b2a9c 100644 (file)
@@ -32,12 +32,6 @@ const char *source_btn_id[SOURCE_TEXT_SIZE] = {
        "usb"
 };
 
-const char *zoom_btn_id[MAX_ZOOM_BTNS] = {
-       "original",
-       "x2",
-       "x4"
-};
-
 const char *speed_btn_id[MAX_SPEED_BTNS] = {
        "normal",
        "slow",
@@ -68,12 +62,6 @@ const char *tooltip_text[MAX_PHOTO_ICONS] = {
        N_("Rotate"),
 };
 
-const char *zoom_text[MAX_ZOOM_BTNS] = {
-       N_("Original"),
-       N_("x 2"),
-       N_("x 4")
-};
-
 const char *speed_text[MAX_SPEED_BTNS] = {
        N_("Normal"),
        N_("Slow"),
diff --git a/src/view/photo-viewer/ZoomCtxPopup.cpp b/src/view/photo-viewer/ZoomCtxPopup.cpp
deleted file mode 100644 (file)
index 0104380..0000000
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
-* Copyright (c) 2014 Samsung Electronics Co., Ltd All Rights Reserved
-*
-* Licensed under the Apache License, Version 2.0 (the License);
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an AS IS BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-
-#include <Elementary.h>
-#include <Ecore.h>
-#include <app.h>
-#include <InputHandler.h>
-#include <ExtNameInfo.h>
-#include <BaseView.h>
-#include <BaseLayout.h>
-#include <CtxPopup.h>
-#include "ZoomCtxPopup.h"
-#include "define.h"
-#include "menudef.h"
-
-#define BTN_ID "BTN_ID"
-
-struct SSetCallbackPair {
-       void (*cb)(void *cookie, int sort);
-       void *cookie;
-};
-
-void CZoomCtxPopup::RegisterSetCallback(void (*cb)(void *cookie, int zoom_level), void *cookie)
-{
-       SetCb = new SSetCallbackPair;
-       if (!SetCb)
-               return;
-
-       SetCb->cb = cb;
-       SetCb->cookie = cookie;
-}
-
-void CZoomCtxPopup::t_OnConfiguration(void)
-{
-       t_SetList(zoom_text, MAX_ZOOM_BTNS, E_ZOOM_ORIGINAL,
-                       CCtxPopup::TOPBTN_BASE, zoom_btn_id,
-                       POSITION_ZOOM_POPUP_X, POSITION_ZOOM_POPUP_Y,
-                       NULL,
-                       STYLE_BTN_SHORTTEXT, STYLE_BTN_SHORTTEXT, STYLE_BTN_SHORTTEXT);
-}
-
-void CZoomCtxPopup::t_OnBtnClicked(Evas_Object *obj, void  *ev)
-{
-       if (!obj)
-               return;
-
-       int i;
-       const char *current_id;
-
-       current_id = (const char *)evas_object_data_get(obj, BTN_ID);
-       if (!current_id)
-               return;
-
-       for (i = 0; i < MAX_ZOOM_BTNS; i++) {
-               if (!strcmp(zoom_btn_id[i], current_id))
-                       break;
-       }
-
-       if (i == MAX_ZOOM_BTNS)
-               return;
-
-       SetCb->cb(SetCb->cookie, i);
-       CCtxPopup::t_OnBtnClicked(obj, ev);
-}
index 6c2ee7f..9d42ff3 100644 (file)
@@ -33,7 +33,6 @@
 #include "photoviewer_view.h"
 #include "zoom_view.h"
 #include "SettingCtxPopup.h"
-#include "ZoomCtxPopup.h"
 
 #define MAX_PREVIEWBAR_IMG 7
 #define PREVIEWBAR_CENTER_IDX 3
@@ -327,21 +326,11 @@ void CPhotoViewerView::sm_CbZoomBtnClicked(void *dt, Evas_Object *obj,
 void CPhotoViewerView::m_OnZoomBtnClicked(Evas_Object *obj,
                const char *emission, const char *source)
 {
-       if (m->pCtxPopup && m->pCtxPopup->FlagCreate())
-               return;
-
-       elm_object_signal_emit(obj, "elm,action,highlight", "elm");
-
-       CZoomCtxPopup::SCallback cb;
-       cb.cookie = m;
-       cb.onSelected = sm_CbZoomCtxPopupSelected;
-
-       CZoomCtxPopup *pCtxPopup = new CZoomCtxPopup;
-       pCtxPopup->RegisterSetCallback(sm_CbSetZoomLevel, m);
-       m->pCtxPopup = pCtxPopup;
-       pCtxPopup->Create(m->base, &cb);
+       if (m->tooltip_timer)
+               m_OnTimerTooltip();
 
-       m_OnTimerTooltip();
+       if (!CViewMgr::GetInstance()->PushView(VIEW_PHOTO_ZOOM, m->vd->minfo))
+               _ERR("VIEW_PHOTO_ZOOM view create failed");
 }
 
 
@@ -448,38 +437,6 @@ Eina_Bool CPhotoViewerView::m_OnTimerPreviewBar(void)
        return ECORE_CALLBACK_CANCEL;
 }
 
-void CPhotoViewerView::sm_CbZoomCtxPopupSelected(void *cookie,
-               CCtxPopup *instance, const char *text)
-{
-       struct zoom_data *zd;
-
-       SPhotoViewerView *m = (SPhotoViewerView *)cookie;
-       if (!m)
-               return;
-
-       switch (m->zoom_level) {
-       case E_ZOOM_X2:
-       case E_ZOOM_X4:
-               zd = (struct zoom_data *)calloc(1, sizeof(*zd));
-               if (!zd)
-                       return;
-               zd->minfo = m->vd->minfo;
-               zd->zoom_level = m->zoom_level;
-
-               m->pCtxPopup->Destroy();
-               delete m->pCtxPopup;
-               m->pCtxPopup = NULL;
-
-               if (!CViewMgr::GetInstance()->PushView(VIEW_PHOTO_ZOOM, zd))
-                       _ERR("VIEW_PHOTO_ZOOM view create failed");
-               break;
-
-       case E_ZOOM_ORIGINAL:
-       default:
-               break;
-       }
-}
-
 void CPhotoViewerView::sm_CbSettingCtxPopupSelected(void *cookie,
                CCtxPopup *instance, const char *text)
 {
@@ -970,16 +927,6 @@ Eina_Bool CPhotoViewerView::OnFocus(void)
        return ECORE_CALLBACK_CANCEL;
 }
 
-
-void CPhotoViewerView::sm_CbSetZoomLevel(void *cookie, int zoom_level)
-{
-       SPhotoViewerView *m = (SPhotoViewerView *)cookie;
-       if (!m)
-               return;
-
-       m->zoom_level = zoom_level;
-}
-
 int CPhotoViewerView::sm_CbSlideshowSpeed(void *cookie)
 {
        SPhotoViewerView *m = (SPhotoViewerView *)cookie;
index a1f7905..016e048 100644 (file)
 #define BORDER_SIZE 3
 #define RECT_BORDER_SIZE 5
 
+#define SLIDER_MIN_VALUE 0.1
+#define SLIDER_MAX_VALUE 4.0
+#define SLIDER_INIT_VALUE 2.0
+#define SLIDER_MOVE_SIZE 0.1
+
 #define IMAGE_UPARROW IMAGEDIR"/ico_photozoom_arrow_up.png"
 #define IMAGE_DOWNARROW IMAGEDIR"/ico_photozoom_arrow_down.png"
 #define IMAGE_LEFTARROW IMAGEDIR"/ico_photozoom_arrow_left.png"
@@ -47,6 +52,7 @@
 
 enum EObjectType {
        ZOOM_VIEW = 0,
+       ZOOM_SLIDER,
        ZOOM_ARROW,
        ZOOM_NAVI,
        ZOOM_NAVI_RECT
@@ -58,6 +64,7 @@ struct SPhotoZoomView {
 
        Evas_Object *eoPhotocam;
        Evas_Object *eoPhotocamNavi;
+       Evas_Object *eoSlider;
        double ratio;
 
        Evas_Object *eoBorder;
@@ -69,7 +76,7 @@ struct SPhotoZoomView {
        Eina_Bool timeout;
        int prev_event;
 
-       struct zoom_data *data;
+       CMediaInfo *minfo;
 
        Ecore_Timer *timer;
 
@@ -96,7 +103,6 @@ struct SPhotoZoomView {
                timeout = EINA_FALSE;
                prev_event = 0;;
 
-               data = NULL;
                timer = NULL;
        }
        ~SPhotoZoomView() {}
@@ -117,19 +123,25 @@ Eina_Bool CPhotoZoomView::sm_CbTimer(void *data)
 
 Eina_Bool CPhotoZoomView::m_OnTimer(void)
 {
+       Evas_Object *lbl;
+       char buf[256];
+
        ecore_timer_del(m->timer);
        m->timer = NULL;
 
        elm_photocam_zoom_mode_set(m->eoPhotocam,
                ELM_PHOTOCAM_ZOOM_MODE_MANUAL);
-       if (m->data->zoom_level == E_ZOOM_X2) {
-               elm_photocam_zoom_set(m->eoPhotocam, ZOOM_VALUE_X2);
-               elm_object_part_text_set(m->eoBase, "part_text", "X2");
-       }
-       else if (m->data->zoom_level == E_ZOOM_X4) {
-               elm_photocam_zoom_set(m->eoPhotocam, ZOOM_VALUE_X4);
-               elm_object_part_text_set(m->eoBase, "part_text", "X4");
-       }
+       elm_photocam_zoom_set(m->eoPhotocam, ZOOM_VALUE_X2);
+
+       lbl = elm_label_add(m->eoBase);
+       if (!lbl)
+               return false;
+
+       snprintf(buf, sizeof(buf), "<font_size=30>X 2.0</font_size>");
+
+       elm_object_text_set(lbl, buf);
+       evas_object_size_hint_min_set(lbl, SIZE_LABEL_ZOOM_LEVEL_WIDTH, 0);
+       elm_object_part_content_set(m->eoBase, PART_TEXT, lbl);
 
        if (!m_MoveZoomNaviImg())
                return ECORE_CALLBACK_CANCEL;
@@ -147,11 +159,11 @@ void CPhotoZoomView::sm_CbContentMoved(void *dt, Evas_Object *obj, void *event_i
        CPhotoZoomView *root = (CPhotoZoomView*)dt;
 
        if (root)
-               root->m_OnContentMoved(obj);
+               root->m_OnContentMoved();
 }
 
 
-void CPhotoZoomView::m_OnContentMoved(Evas_Object *obj)
+void CPhotoZoomView::m_OnContentMoved(void)
 {
        m_UpdateArrow();
        m_UpdateZoomNavi();
@@ -160,6 +172,32 @@ void CPhotoZoomView::m_OnContentMoved(Evas_Object *obj)
 }
 
 
+void CPhotoZoomView::m_OnSliderChanged(void)
+{
+       Evas_Object *lbl;
+       double val;
+       double zoom_level;
+       char buf[256];
+
+       val = elm_slider_value_get(m->eoSlider);
+
+       zoom_level = 1 / val;
+       elm_photocam_zoom_set(m->eoPhotocam, zoom_level);
+
+       lbl = elm_object_part_content_get(m->eoBase, PART_TEXT);
+       if (!lbl)
+               return;
+
+       snprintf(buf, sizeof(buf), "<font_size=30>X %.1f</font_size>", val);
+
+       elm_object_text_set(lbl, buf);
+       evas_object_size_hint_min_set(lbl, SIZE_LABEL_ZOOM_LEVEL_WIDTH, 0);
+       elm_object_part_content_set(m->eoBase, PART_TEXT, lbl);
+
+       m_OnContentMoved();
+}
+
+
 void CPhotoZoomView::m_UpdateArrow(void)
 {
        int x, y, w, h;
@@ -276,6 +314,31 @@ void CPhotoZoomView::m_MoveZoomNavi(Evas_Coord_Point coord)
        elm_photocam_image_region_show(m->eoPhotocam, xp, yp, wp, hp);
 }
 
+bool CPhotoZoomView::m_DrawSlider(void)
+{
+       m->eoSlider = elm_slider_add(m->eoBase);
+       if (!m->eoSlider)
+               return false;
+
+       elm_slider_horizontal_set(m->eoSlider, EINA_FALSE);
+
+       elm_slider_min_max_set(m->eoSlider, SLIDER_MIN_VALUE, SLIDER_MAX_VALUE);
+       elm_slider_step_set(m->eoSlider, SLIDER_MOVE_SIZE);
+       elm_slider_indicator_show_set(m->eoSlider, EINA_FALSE);
+
+       elm_slider_value_set(m->eoSlider, SLIDER_INIT_VALUE);
+
+       evas_object_show(m->eoSlider);
+
+       elm_object_part_content_set(m->eoBase, PART_SLIDER, m->eoSlider);
+
+       elm_object_focus_allow_set(m->eoSlider, EINA_FALSE);
+
+       Connect(m->eoSlider, ZOOM_SLIDER, TYPE_CHANGED);
+
+       return true;
+}
+
 bool CPhotoZoomView::m_DrawArrow(void)
 {
        m->arrow.eoUp = elm_image_add(m->eoBase);
@@ -319,10 +382,10 @@ bool CPhotoZoomView::m_DrawContent(void)
        const char *file_path;
        CMediaInfo *minfo;
 
-       if (!m->eoBase || !m->data || !m->data->minfo)
+       if (!m->eoBase || !m->minfo)
                return false;
 
-       minfo = m->data->minfo;
+       minfo = m->minfo;
 
        file_path = minfo->Path();
        if (!file_path)
@@ -335,12 +398,17 @@ bool CPhotoZoomView::m_DrawContent(void)
        elm_photocam_file_set(m->eoPhotocam, file_path);
        elm_photocam_paused_set(m->eoPhotocam, EINA_TRUE);
 
-       elm_scroller_policy_set(m->eoPhotocam, ELM_SCROLLER_POLICY_AUTO, ELM_SCROLLER_POLICY_AUTO);
+       elm_scroller_policy_set(m->eoPhotocam, ELM_SCROLLER_POLICY_AUTO,
+                                       ELM_SCROLLER_POLICY_AUTO);
 
-       evas_object_smart_callback_add(m->eoPhotocam, SIG_SCROLL, sm_CbContentMoved, this);
+       evas_object_smart_callback_add(m->eoPhotocam, SIG_SCROLL,
+                                       sm_CbContentMoved, this);
 
        elm_object_part_content_set(m->eoBase, PART_CONTENTAREA, m->eoPhotocam);
 
+       if (!m_DrawSlider())
+               return false;
+
        if (!m_DrawArrow())
                return false;
 
@@ -349,8 +417,10 @@ bool CPhotoZoomView::m_DrawContent(void)
 
 void CPhotoZoomView::m_AddMouseEventCallback(void)
 {
-       Connect(m->eoPhotocamNavi, ZOOM_NAVI, TYPE_MOUSE_DOWN | TYPE_MOUSE_UP | TYPE_MOUSE_MOVE);
-       Connect(m->eoRect, ZOOM_NAVI_RECT, TYPE_MOUSE_DOWN | TYPE_MOUSE_UP | TYPE_MOUSE_MOVE);
+       Connect(m->eoPhotocamNavi, ZOOM_NAVI, TYPE_MOUSE_DOWN |
+                                       TYPE_MOUSE_UP | TYPE_MOUSE_MOVE);
+       Connect(m->eoRect, ZOOM_NAVI_RECT, TYPE_MOUSE_DOWN |
+                                       TYPE_MOUSE_UP | TYPE_MOUSE_MOVE);
 }
 
 bool CPhotoZoomView::m_DrawZoomNavi(void)
@@ -360,10 +430,10 @@ bool CPhotoZoomView::m_DrawZoomNavi(void)
        const char *file_path;
        CMediaInfo *minfo;
 
-       if (!m->data || !m->eoBase || !m->data->minfo)
+       if (!m->eoBase || !m->minfo)
                return false;
 
-       minfo = m->data->minfo;
+       minfo = m->minfo;
 
        file_path = minfo->Path();
        if (!file_path)
@@ -397,7 +467,8 @@ bool CPhotoZoomView::m_DrawZoomNavi(void)
 
        elm_photocam_file_set(m->eoPhotocamNavi, file_path);
        elm_photocam_paused_set(m->eoPhotocamNavi, EINA_TRUE);
-       elm_photocam_zoom_mode_set(m->eoPhotocamNavi, ELM_PHOTOCAM_ZOOM_MODE_AUTO_FIT);
+       elm_photocam_zoom_mode_set(m->eoPhotocamNavi,
+                                       ELM_PHOTOCAM_ZOOM_MODE_AUTO_FIT);
 
        elm_object_focus_allow_set(m->eoPhotocamNavi, EINA_FALSE);
 
@@ -409,8 +480,12 @@ bool CPhotoZoomView::m_DrawZoomNavi(void)
 
        evas_object_image_file_set(m->eoRect, IMAGE_ZOOM_NAVI_RECT, NULL);
        evas_object_image_filled_set(m->eoRect, EINA_TRUE);
-       evas_object_image_border_set(m->eoRect, RECT_BORDER_SIZE, RECT_BORDER_SIZE, RECT_BORDER_SIZE, RECT_BORDER_SIZE);
-       evas_object_image_border_center_fill_set(m->eoRect, EVAS_BORDER_FILL_NONE);
+       evas_object_image_border_set(m->eoRect, RECT_BORDER_SIZE,
+                                               RECT_BORDER_SIZE,
+                                               RECT_BORDER_SIZE,
+                                               RECT_BORDER_SIZE);
+       evas_object_image_border_center_fill_set(m->eoRect,
+                                               EVAS_BORDER_FILL_NONE);
 
        evas_object_color_set(m->eoRect, 255, 255, 255, 196);
 
@@ -483,7 +558,7 @@ bool CPhotoZoomView::Create(void *data)
                goto error;
 
        m->eoWin = eoWin;
-       m->data = (struct zoom_data *)data;
+       m->minfo = (CMediaInfo *)data;
 
        if (!m_DrawContent())
                goto error;
@@ -520,9 +595,6 @@ void CPhotoZoomView::Destroy(void)
 
        CBaseView::Destroy();
 
-       if (m->data)
-               free(m->data);
-
        m->cTimeout.Destroy();
        evas_object_del(m->eoBase);
 
@@ -541,8 +613,6 @@ Evas_Object* CPhotoZoomView::Base(void)
 
 void CPhotoZoomView::m_ViewKeyDown(Evas_Event_Key_Down *ev)
 {
-       int height, width;
-
        if (m->timeout)
                return;
 
@@ -552,39 +622,6 @@ void CPhotoZoomView::m_ViewKeyDown(Evas_Event_Key_Down *ev)
                !strcmp(ev->keyname, KEY_BACK_REMOTE)) {
                CViewMgr::GetInstance()->PopView();
                return;
-       } else if (!strcmp(ev->keyname, KEY_ENTER) ||
-               !strcmp(ev->keyname, KEY_ENTER_REMOTE)) {
-
-               elm_photocam_image_size_get(m->eoPhotocam, &width, &height);
-               if (m->data->zoom_level == E_ZOOM_X2) {
-
-                       m->data->zoom_level = E_ZOOM_X4;
-                       elm_photocam_zoom_mode_set(m->eoPhotocam,
-                               ELM_PHOTOCAM_ZOOM_MODE_MANUAL);
-                       elm_photocam_zoom_set(m->eoPhotocam, ZOOM_VALUE_X4);
-
-                       elm_object_part_text_set(m->eoBase, "part_text", "X4");
-
-               }
-               else if (m->data->zoom_level == E_ZOOM_X4) {
-
-                       m->data->zoom_level = E_ZOOM_ORIGINAL;
-                       if (height > width)
-                               elm_photocam_zoom_mode_set(m->eoPhotocam,
-                               ELM_PHOTOCAM_ZOOM_MODE_AUTO_FIT);
-                       else
-                               elm_photocam_zoom_mode_set(m->eoPhotocam,
-                               ELM_PHOTOCAM_ZOOM_MODE_AUTO_FILL);
-                       elm_object_part_text_set(m->eoBase, "part_text", "Org.");
-
-               }
-               else if (m->data->zoom_level == E_ZOOM_ORIGINAL) {
-
-                       m->data->zoom_level = E_ZOOM_X2;
-                       elm_photocam_zoom_mode_set(m->eoPhotocam, ELM_PHOTOCAM_ZOOM_MODE_MANUAL);
-                       elm_photocam_zoom_set(m->eoPhotocam, ZOOM_VALUE_X2);
-                       elm_object_part_text_set(m->eoBase, "part_text", "X2");
-               }
        }
 
        if (m->prev_event == EVAS_CALLBACK_KEY_DOWN)
@@ -593,7 +630,8 @@ void CPhotoZoomView::m_ViewKeyDown(Evas_Event_Key_Down *ev)
        m->prev_event = EVAS_CALLBACK_KEY_DOWN;
 }
 
-void CPhotoZoomView::OnKeyDown(int id, Evas *e, Evas_Object *obj, Evas_Event_Key_Down *ev)
+void CPhotoZoomView::OnKeyDown(int id, Evas *e, Evas_Object *obj,
+                       Evas_Event_Key_Down *ev)
 {
        switch (id) {
        case ZOOM_VIEW:
@@ -605,7 +643,8 @@ void CPhotoZoomView::OnKeyDown(int id, Evas *e, Evas_Object *obj, Evas_Event_Key
 }
 
 
-void CPhotoZoomView::OnKeyUp(int id, Evas *e, Evas_Object *obj, Evas_Event_Key_Up *ev)
+void CPhotoZoomView::OnKeyUp(int id, Evas *e, Evas_Object *obj,
+                       Evas_Event_Key_Up *ev)
 {
        switch (id) {
        case ZOOM_VIEW:
@@ -654,7 +693,8 @@ void CPhotoZoomView::OnMouseClicked(int id, Evas_Object *obj)
        }
 }
 
-void CPhotoZoomView::OnMouseMove(int id, Evas *e, Evas_Object *obj, Evas_Event_Mouse_Move *ev)
+void CPhotoZoomView::OnMouseMove(int id, Evas *e, Evas_Object *obj,
+                       Evas_Event_Mouse_Move *ev)
 {
        switch (id) {
        case ZOOM_NAVI:
@@ -670,7 +710,8 @@ void CPhotoZoomView::OnMouseMove(int id, Evas *e, Evas_Object *obj, Evas_Event_M
        }
 }
 
-void CPhotoZoomView::OnMouseDown(int id, Evas *e, Evas_Object *obj, Evas_Event_Mouse_Down *ev)
+void CPhotoZoomView::OnMouseDown(int id, Evas *e, Evas_Object *obj,
+                       Evas_Event_Mouse_Down *ev)
 {
        switch (id) {
        case ZOOM_NAVI:
@@ -697,6 +738,17 @@ void CPhotoZoomView::OnMouseUp(int id, Evas *e, Evas_Object *obj, Evas_Event_Mou
        }
 }
 
+void CPhotoZoomView::OnChanged(int id, Evas_Object *obj)
+{
+       switch (id) {
+       case ZOOM_SLIDER:
+               m_OnSliderChanged();
+               break;
+       default:
+               break;
+       }
+}
+
 void CPhotoZoomView::OnTimeout(void)
 {
        elm_object_signal_emit(m->eoBase, SIG_HIDE, "");