Squashed commit of the following:
authorJisung Ahn <jcastle.ahn@samsung.com>
Mon, 10 Dec 2012 06:54:43 +0000 (15:54 +0900)
committerJisung Ahn <jcastle.ahn@samsung.com>
Mon, 10 Dec 2012 06:54:43 +0000 (15:54 +0900)
commit 0a66296a06d4f1ae3765885fce408343f9504cc4
Author: Jisung Ahn <jcastle.ahn@samsung.com>
Date:   Mon Dec 10 15:48:35 2012 +0900

    add zoom

    Change-Id: I0e3c053c45a99d28a2297185c6447c45efac2b7c

commit ac50230e4772dc0a78a9f022a547c7b9952f1852
Author: Jisung Ahn <jcastle.ahn@samsung.com>
Date:   Fri Dec 7 16:51:12 2012 +0900

    zoom cont

    Change-Id: I400e1b69fda05797f51ef781927c9d0f95b563a0

commit e2e2a23f6e0b31c88a123461f16d7767ba9f74a0
Author: Jisung Ahn <jcastle.ahn@samsung.com>
Date:   Fri Dec 7 11:36:40 2012 +0900

    add zoom slider

    Change-Id: I5ac43311409feb5afa84315616e020c817ca9da3

Change-Id: I81c6234b865cab40294d81cebac3f7880305f1c9

include/ivug-define.h [changed mode: 0644->0755]
main/layout/ivug-main.edc [changed mode: 0644->0755]
main/src/include/ivug-main-view.h [changed mode: 0644->0755]
main/src/include/ivug-slider.h [changed mode: 0644->0755]
main/src/slider/ivug-slider-priv.h [changed mode: 0644->0755]
main/src/slider/ivug-slider.cpp
main/src/view/ivug-main-view.cpp [changed mode: 0644->0755]

old mode 100644 (file)
new mode 100755 (executable)
index 2ef31ee..3179a20
@@ -46,12 +46,6 @@ ADD_DEFINITIONS("-D_USE_MEDIAINFO_STRINGID_")
 
 #define USE_NEW_DB_API
 
-//#define USE_FACE
-//#define USE_ALLSHARE
-//#define USE_MOTION
-//#define USE_PTP
-//#define USE_THUMBLIST
-//#define USE_SCROLLER
-//#define USE_DRM_EXT
-//#define USE_WEBALBUM
+#define ZOOM_LEVEL_STEP (0.7)
+#define ZOOM_LEVEL_MAX (4)
 
old mode 100644 (file)
new mode 100755 (executable)
index 9e54aa4..6eede85
@@ -19,6 +19,9 @@
 
 #include "ivug-theme.edc"
 
+#define NAVI_VIEW_HEIGHT       120
+#define CTRL_VIEW_HEIGHT       114
+
 collections {
 group {
        name: "mainview";
@@ -235,7 +238,229 @@ group {
                                        color: 0 0 0 0;
                                        visible : 1;
                                }
+                       }
+
+                       part {
+                               name: "zoom_slider_area";
+                               type: SWALLOW;
+                               scale : 1;
+                               mouse_events:1;
+                               description {
+                                       state: "default" 0.0;
+                                       visible : 1;
+                                       min : 375 100;
+                                       fixed : 0 1;
+                                       color: 255 0 0 255;
+                                       rel1{ relative : 0.5 0.0; to_y:"controlbar_area";}
+                                       rel2{ relative : 0.5 0.0; to_y:"controlbar_area";}
+                                       align: 0.5 1.0;
+                               }
+                               description {
+                                       state: "hide" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 0;
+                               }
+                       }
+
+#define ICON_ZOOM_GAP  50
+
+#define ICON_ZOOM_IN           "00_zoom_in.png"
+#define ICON_ZOOM_IN_PRESS     "00_zoom_in_press.png"
+#define ICON_ZOOM_OUT          "00_zoom_out.png"
+#define ICON_ZOOM_OUT_PRESS    "00_zoom_out_press.png"
+
+                       part { name: "mainview.btn_zoom_out";
+                                       set {
+                                               name: "zoom_out_images";
+
+                                               image {
+                                                       image: ICON_ZOOM_OUT COMP;
+                                                       size: 56 56 56 56;
+                                               }
+
+                                               image {
+                                                       image: ICON_ZOOM_OUT_PRESS COMP;
+                                                       size: 56 56 56 56;
+                                               }
+
+                                       }
+
+                                       type: IMAGE;
+                                       scale: 1;
+                                       mouse_events: 1;
+                                       description {
+                                               visible: 1;
+                                               fixed: 1 1;
+                                               min: 56 56;
+                                               state: "default" 0.0;
+                                               align: 1.0 0.0;
+                                               /*rel1 { relative: ((238+28)/720) 1.0;
+                                                        offset: 0.0 -56-CTRL_VIEW_HEIGHT-10;}
+                                               rel2 { relative: ((238+28)/720) 1.0;
+                                                        offset: 0.0 -56-CTRL_VIEW_HEIGHT-10;}*/
+                                               rel1 { relative: 0.0 1.0;
+                                                       to_x: "zoom_slider_area";
+                                                       offset: 0.0 -56-CTRL_VIEW_HEIGHT-20;}
+                                               rel2 { relative: 0.0 1.0;
+                                                       to_x: "zoom_slider_area";
+                                                       offset: 0.0 -56-CTRL_VIEW_HEIGHT-20;}
+                                               image.normal: ICON_ZOOM_OUT;
+                                       }
+
+                                       description {
+                                               state: "show" 0.0;
+                                               inherit: "default" 0.0;
+                                               visible: 1;
+                                               image.normal: ICON_ZOOM_OUT;
+                                       }
+
+                                       description {
+                                               state: "pressed" 0.0;
+                                               inherit: "default" 0.0;
+                                               visible: 1;
+                                               image.normal: ICON_ZOOM_OUT_PRESS;
+                                       }
+
+                                       description {
+                                               state: "hide" 0.0;
+                                               inherit: "default" 0.0;
+                                               visible: 0;
+                                       }
 
+                                       description {
+                                               state: "disabled" 0.0;
+                                               inherit: "default" 0.0;
+                                               visible: 1;
+                                               image.normal: ICON_ZOOM_OUT;
+                                               color: 170 170 170 255;
+                                       }
+                       }
+
+                       part { name: "mainview.btn_zoom_in";
+                                       set {
+                                               name: "zoom_in_images";
+
+                                               image {
+                                                       image: ICON_ZOOM_IN COMP;
+                                                       size: 56 56 56 56;
+                                               }
+
+                                               image {
+                                                       image: ICON_ZOOM_IN_PRESS COMP;
+                                                       size: 56 56 56 56;
+                                               }
+
+                                       }
+
+                                       type: IMAGE;
+                                       scale: 1;
+                                       mouse_events: 1;
+                                       description {
+                                               visible: 1;
+                                               fixed: 1 1;
+                                               min: 56 56;
+                                               state: "default" 0.0;
+                                               align: 0.0 0.0;
+                                               /*rel1 { relative: ((720-238-28)/720) 1.0;
+                                                        offset: 0.0 -56-CTRL_VIEW_HEIGHT-10;}
+                                               rel2 { relative: ((720-238-28)/720) 1.0;
+                                                        offset: 0.0 -56-CTRL_VIEW_HEIGHT-10;}*/
+                                               rel1 { relative: 1.0 1.0;
+                                                       to_x: "zoom_slider_area";
+                                                       offset: 0.0 -56-CTRL_VIEW_HEIGHT-20;}
+                                               rel2 { relative: 1.0 1.0;
+                                                       to_x: "zoom_slider_area";
+                                                       offset: 0.0 -56-CTRL_VIEW_HEIGHT-20;}
+                                               image.normal: ICON_ZOOM_IN;
+                                       }
+
+                                       description {
+                                               state: "show" 0.0;
+                                               inherit: "default" 0.0;
+                                               visible: 1;
+                                               image.normal: ICON_ZOOM_IN;
+                                       }
+
+                                       description {
+                                               state: "pressed" 0.0;
+                                               inherit: "default" 0.0;
+                                               visible: 1;
+                                               image.normal: ICON_ZOOM_IN_PRESS;
+                                       }
+
+                                       description {
+                                               state: "hide" 0.0;
+                                               inherit: "default" 0.0;
+                                               visible: 0;
+                                       }
+
+                                       description {
+                                               state: "disabled" 0.0;
+                                               inherit: "default" 0.0;
+                                               visible: 1;
+                                               image.normal: ICON_ZOOM_IN;
+                                               color: 170 170 170 255;
+                                       }
+                       }
+
+                       part {
+                               name: "zoom_out_blocker";
+                               type: RECT;
+                               scale: 1;
+                               repeat_events: 0;
+                               mouse_events: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 0;
+                                       rel1 { relative: 0 0; to: "mainview.btn_zoom_out";}
+                                       rel2 { relative: 1 1; to: "mainview.btn_zoom_out";}
+                                       color: 0 0 0 0;
+                               }
+                               description {
+                                       state: "disabled" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                               }
+                               description {
+                                       state: "show" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                               }
+                               description {
+                                       state: "hide" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 0;
+                               }
+                       }
+
+                       part {
+                               name: "zoom_in_blocker";
+                               type: RECT;
+                               scale: 1;
+                               repeat_events: 0;
+                               mouse_events: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 0;
+                                       rel1 { relative: 0 0; to: "mainview.btn_zoom_in";}
+                                       rel2 { relative: 1 1; to: "mainview.btn_zoom_in";}
+                                       color: 0 0 0 0;
+                               }
+                               description {
+                                       state: "disabled" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                               }
+                               description {
+                                       state: "show" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                               }
+                               description {
+                                       state: "hide" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 0;
+                               }
                        }
                }
                programs {
@@ -254,6 +479,123 @@ group {
                                target: "thumblist";
                                target: "thumblist_bg";
                        }
+                       program {
+                               name: "hide_zoom_slider";
+                               signal: "elm,state,zoom_slider,hide";
+                               source: "elm";
+                               action: STATE_SET "hide" 0.0;
+                               target: "zoom_slider_area";
+                       }
+                       program {
+                               name: "show_zoom_slider";
+                               signal: "elm,state,zoom_slider,show";
+                               source: "elm";
+                               action: STATE_SET "default" 0.0;
+                               target: "zoom_slider_area";
+                       }
+                       program {
+                               name: "hide_btn_zoom_out";
+                               signal: "elm,state,btn_zoom_out,hide";
+                               source: "elm";
+                               action: STATE_SET "hide" 0.0;
+                               target: "mainview.btn_zoom_out";
+                               target: "zoom_out_blocker";
+                       }
+                       program {
+                               name: "show_btn_zoom_out";
+                               signal: "elm,state,btn_zoom_out,show";
+                               source: "elm";
+                               action: STATE_SET "show" 0.0;
+                               target: "mainview.btn_zoom_out";
+                               target: "zoom_out_blocker";
+                       }
+                       program {
+                               name: "btn_zoom_out_mouse_down";
+                               signal: "mouse,down,1";
+                               source: "mainview.btn_zoom_out";
+                               action: STATE_SET "pressed" 0.0;
+                               target: "mainview.btn_zoom_out";
+                       }
+                       program {
+                               name: "btn_zoom_out_mouse_up";
+                               signal: "mouse,up,1";
+                               source: "mainview.btn_zoom_out";
+                               after: "show_btn_zoom_out";
+                       }
+                       program {
+                               name: "btn_zoom_out_clicked";
+                               signal: "mouse,clicked,1";
+                               source: "mainview.btn_zoom_out";
+                               action: SIGNAL_EMIT "mainview,zoom_out,clicked" "";
+                       }
+
+                       program {
+                               name: "hide_btn_zoom_in";
+                               signal: "elm,state,btn_zoom_in,hide";
+                               source: "elm";
+                               action: STATE_SET "hide" 0.0;
+                               target: "mainview.btn_zoom_in";
+                               target: "zoom_in_blocker";
+                       }
+                       program {
+                               name: "show_btn_zoom_in";
+                               signal: "elm,state,btn_zoom_in,show";
+                               source: "elm";
+                               action: STATE_SET "show" 0.0;
+                               target: "mainview.btn_zoom_in";
+                               target: "zoom_in_blocker";
+                       }
+                       program {
+                               name: "btn_zoom_in_mouse_down";
+                               signal: "mouse,down,1";
+                               source: "mainview.btn_zoom_in";
+                               action: STATE_SET "pressed" 0.0;
+                               target: "mainview.btn_zoom_in";
+                       }
+                       program {
+                               name: "btn_zoom_in_mouse_up";
+                               signal: "mouse,up,1";
+                               source: "mainview.btn_zoom_in";
+                               after: "show_btn_zoom_in";
+                       }
+                       program {
+                               name: "btn_zoom_in_clicked";
+                               signal: "mouse,clicked,1";
+                               source: "mainview.btn_zoom_in";
+                               action: SIGNAL_EMIT "mainview,zoom_in,clicked" "";
+                       }
+                       program {
+                               name: "enable_btn_zoom_out";
+                               signal: "elm,state,btn_zoom_out,enable";
+                               source: "elm";
+                               action: STATE_SET "default" 0.0;
+                               target: "zoom_out_blocker";
+                               target: "mainview.btn_zoom_out";
+                       }
+                       program {
+                               name: "disable_btn_zoom_out";
+                               signal: "elm,state,btn_zoom_out,disable";
+                               source: "elm";
+                               action: STATE_SET "disabled" 0.0;
+                               target: "zoom_out_blocker";
+                               target: "mainview.btn_zoom_out";
+                       }
+                       program {
+                               name: "enable_btn_zoom_in";
+                               signal: "elm,state,btn_zoom_in,enable";
+                               source: "elm";
+                               action: STATE_SET "default" 0.0;
+                               target: "zoom_in_blocker";
+                               target: "mainview.btn_zoom_in";
+                       }
+                       program {
+                               name: "disable_btn_zoom_in";
+                               signal: "elm,state,btn_zoom_in,disable";
+                               source: "elm";
+                               action: STATE_SET "disabled" 0.0;
+                               target: "zoom_in_blocker";
+                               target: "mainview.btn_zoom_in";
+                       }
                }
 
        }
old mode 100644 (file)
new mode 100755 (executable)
index f817f8e..2f1688d
@@ -108,6 +108,9 @@ typedef struct {
 
        Evas_Object* selectioninfo;
 
+       Evas_Object *zoom_slider;
+       int zoom_level;
+
 /*
    |------------------|
    | navi_bar            |
@@ -144,8 +147,6 @@ typedef struct {
        Evas_Object* longpress_popup;           //long press popup
        bool bLongpressEnd;
 
-       Evas_Object *best_icon;
-
 // child view.
        Ivug_NameView *pNameView;
        Ivug_SetAsView *pSetAsView;
old mode 100644 (file)
new mode 100755 (executable)
index 1787eb2..6c5af19
@@ -133,6 +133,18 @@ ivug_slider_image_rotate(Evas_Object* obj, int angle);
 void
 ivug_slider_set_menu_visibility(Evas_Object* obj, Eina_Bool bVisible);
 
+unsigned int
+ivug_slider_zoom_level_get(Evas_Object *obj);
+
+void
+ivug_slider_zoom_in(Evas_Object *obj);
+
+void
+ivug_slider_zoom_out(Evas_Object *obj);
+
+void
+ivug_slider_zoom_reset(Evas_Object *obj);
+
 #ifdef __cplusplus
 }
 #endif
old mode 100644 (file)
new mode 100755 (executable)
index df3ced4..22cba44
@@ -121,6 +121,8 @@ typedef struct Smart_Data
        Ecore_Idler *load_idler;
        Ecore_Idler *item_load_idler;
 
+       unsigned int zoom_level;
+
 #ifdef USE_CALC_JOB
        Ecore_Job *calc_job;
 #endif
index 1949d45..a4fd73f 100755 (executable)
@@ -816,6 +816,8 @@ _ivug_slider_slide_shift(struct Smart_Data *sd, shift_direction_t direction)
                return;
        }
 
+       sd->zoom_level = 0;     //reset zoom level
+
        Media_Item *item = NULL;
        Slide_Item *NewItem = NULL;
 
@@ -1288,3 +1290,89 @@ void ivug_slider_dump_photocam(Evas_Object* obj)
 
 }
 
+unsigned int
+ivug_slider_zoom_level_get(Evas_Object *obj)
+{
+       IV_ASSERT(obj != NULL);
+       struct Smart_Data *sd = (struct Smart_Data *) evas_object_smart_data_get(obj);
+
+       MSG_SLIDER_HIGH("Slider zoom level");
+
+       return sd->zoom_level;
+}
+
+void
+ivug_slider_zoom_in(Evas_Object *obj)
+{
+       IV_ASSERT(obj != NULL);
+       struct Smart_Data *sd = (struct Smart_Data *) evas_object_smart_data_get(obj);
+
+       MSG_SLIDER_HIGH("Slider zoom in");
+
+       if(sd->zoom_level > ZOOM_LEVEL_MAX)
+       {
+               MSG_MAIN_ERROR("zoom_level is %d", sd->zoom_level);
+               return;
+       }
+
+       Slide_Item *si = sd->slide[CENTER_SLIDE];
+
+       double zoom = 0.0;
+       Evas_Coord ix = 0, iy = 0, iw = 0, ih = 0;
+
+       evas_object_geometry_get(si->photocam, &ix, &iy, &iw, &ih);
+
+       zoom = ivug_slider_item_zoom_get(si);
+       zoom *= ZOOM_LEVEL_STEP;
+       ivug_slider_item_zoom_set(si, zoom, iw/2, ih/2);
+
+       ivug_slider_item_hold_set(si, EINA_FALSE);
+
+       sd->zoom_level++;
+}
+
+void
+ivug_slider_zoom_out(Evas_Object *obj)
+{
+       IV_ASSERT(obj != NULL);
+       struct Smart_Data *sd = (struct Smart_Data *) evas_object_smart_data_get(obj);
+
+       MSG_SLIDER_HIGH("Slider zoom in");
+
+       if(sd->zoom_level == 0)
+       {
+               MSG_MAIN_ERROR("zoom_level is 0");
+               return;
+       }
+
+       Slide_Item *si = sd->slide[CENTER_SLIDE];
+
+       double zoom = 0.0;
+       Evas_Coord ix = 0, iy= 0, iw= 0, ih= 0;
+
+       evas_object_geometry_get(si->photocam, &ix, &iy, &iw, &ih);
+
+       zoom = ivug_slider_item_zoom_get(si);
+       zoom /= ZOOM_LEVEL_STEP;
+       ivug_slider_item_zoom_set(si, zoom, iw/2, ih/2);
+
+       ivug_slider_item_hold_set(si, EINA_FALSE);
+
+       sd->zoom_level--;
+}
+
+void
+ivug_slider_zoom_reset(Evas_Object *obj)
+{
+       IV_ASSERT(obj != NULL);
+       struct Smart_Data *sd = (struct Smart_Data *) evas_object_smart_data_get(obj);
+
+       MSG_SLIDER_HIGH("Slider zoom in");
+
+       sd->zoom_level = 0;
+
+       Slide_Item *si = sd->slide[CENTER_SLIDE];
+
+       ivug_slider_item_zoom_reset(si, EINA_FALSE, 0, 0);
+}
+
old mode 100644 (file)
new mode 100755 (executable)
index b523831..28ea235
@@ -242,6 +242,11 @@ static void _on_resize(void *data, Evas *e, Evas_Object *obj, void *event_info)
                evas_object_del(pMainView->ctx_popup);
                pMainView->ctx_popup = NULL;
        }
+
+       ivug_slider_zoom_reset(pMainView->slider);
+
+       pMainView->zoom_level = 1;
+       elm_slider_value_set(pMainView->zoom_slider, 1.0);
 }
 
 static void
@@ -306,7 +311,33 @@ void _ivug_main_on_mmc_state_changed(keynode_t* node, void *data)
        }
 }
 
+static void _show_zoom_icon(void *data)
+{
+       ivug_ret_if(!data);
+
+       MSG_MAIN_ERROR("_show_zoom_icon");
+
+       Ivug_MainView *pMainView = (Ivug_MainView *)data;
 
+       /*unsigned int zoom_level = ivug_slider_zoom_level_get(pMainView->slider);
+       if(zoom_level == 0)
+       {
+               edje_object_signal_emit(_EDJ(pMainView->empty_layout), "elm,state,btn_zoom_out,disable","elm");
+               edje_object_signal_emit(_EDJ(pMainView->empty_layout), "elm,state,btn_zoom_in,enable","elm");
+       }
+       else if(zoom_level == ZOOM_LEVEL_MAX)
+       {
+               edje_object_signal_emit(_EDJ(pMainView->empty_layout), "elm,state,btn_zoom_in,disable","elm");
+               edje_object_signal_emit(_EDJ(pMainView->empty_layout), "elm,state,btn_zoom_out,enable","elm");
+       }
+       else*/
+       {
+               edje_object_signal_emit(_EDJ(pMainView->empty_layout), "elm,state,btn_zoom_out,enable","elm");
+               edje_object_signal_emit(_EDJ(pMainView->empty_layout), "elm,state,btn_zoom_in,enable","elm");
+       }
+
+       edje_object_signal_emit(_EDJ(pMainView->empty_layout), "elm,state,zoom_slider,show","elm");
+}
 
 static void _update_main_view(Ivug_MainView *pMainView)
 {
@@ -327,6 +358,8 @@ static void _update_main_view(Ivug_MainView *pMainView)
 
        PERF_CHECK_END(LVL6, "Set menu title");
 
+       _show_zoom_icon(pMainView);
+
        return;
 }
 
@@ -756,18 +789,13 @@ _on_slider_item_changed(void *data, Evas_Object *obj, void *event_info)
 
        Media_Data *mdata = ivug_medialist_get_data(ivug_slider_item_data_get(sitem));
 
-       if(pMainView->best_icon)
-       {
-               evas_object_del(pMainView->best_icon);
-               pMainView->best_icon = NULL;
-       }
-
-
        if(mdata->bIsDRMContent == true && ivug_drm_get_forwarding_info(mdata->filepath) == false)
        {
                elm_object_disabled_set(pMainView->btn_share, EINA_TRUE);
        }
 
+       pMainView->zoom_level = 1;
+       elm_slider_value_set(pMainView->zoom_slider, 1.0);
 }
 
 
@@ -1069,6 +1097,97 @@ _on_slideshow_finished(void *data, Evas_Object *obj, void *event_info)
        ivug_main_view_show_menu_bar(pMainView);
 }
 
+static void
+_ivug_main_view_zoom_out_cb(void *data, Evas_Object *obj, const char *emission, const char *source)
+{
+       ivug_ret_if(!obj);
+       ivug_ret_if(!data);
+
+       MSG_MAIN_ERROR("_ivug_main_view_zoom_out_cb");
+
+       Ivug_MainView *pMainView = (Ivug_MainView *)data;
+
+       int value = (int)elm_slider_value_get(pMainView->zoom_slider);
+
+       if(value > 1)
+       {
+               ivug_main_view_del_hide_timer(pMainView);
+
+               ivug_slider_zoom_out(pMainView->slider);
+               pMainView->zoom_level--;
+               elm_slider_value_set(pMainView->zoom_slider, value-1.0);
+
+               ivug_main_view_set_hide_timer(pMainView);
+       }
+
+       _show_zoom_icon(data);
+}
+
+static void
+_ivug_main_view_zoom_in_cb(void *data, Evas_Object *obj, const char *emission, const char *source)
+{
+       ivug_ret_if(!obj);
+       ivug_ret_if(!data);
+
+       MSG_MAIN_ERROR("_ivug_main_view_zoom_in_cb");
+
+       Ivug_MainView *pMainView = (Ivug_MainView *)data;
+
+       int value = (int)elm_slider_value_get(pMainView->zoom_slider);
+
+       if(value <= ZOOM_LEVEL_MAX)
+       {
+               ivug_main_view_del_hide_timer(pMainView);
+
+               ivug_slider_zoom_in(pMainView->slider);
+               pMainView->zoom_level++;
+               elm_slider_value_set(pMainView->zoom_slider, value+1.0);
+
+               ivug_main_view_set_hide_timer(pMainView);
+       }
+
+       _show_zoom_icon(data);
+}
+
+static void _zoom_slider_change_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       Ivug_MainView *pMainView = (Ivug_MainView *)data;
+
+       int value = (int)elm_slider_value_get(pMainView->zoom_slider);
+
+       MSG_MAIN_HIGH("value = %d", value);
+
+       while(pMainView->zoom_level > 0
+               && pMainView->zoom_level <= ZOOM_LEVEL_MAX+1
+               && value != pMainView->zoom_level)
+       {
+               if(value > pMainView->zoom_level)
+               {
+                       ivug_slider_zoom_in(pMainView->slider);
+                       pMainView->zoom_level++;
+               }
+               else if(value < pMainView->zoom_level)
+               {
+                       ivug_slider_zoom_out(pMainView->slider);
+                       pMainView->zoom_level--;
+               }
+       }
+}
+
+static void _zoom_slider_start_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       Ivug_MainView *pMainView = (Ivug_MainView *)data;
+
+       ivug_main_view_del_hide_timer(pMainView);
+}
+
+static void _zoom_slider_end_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       Ivug_MainView *pMainView = (Ivug_MainView *)data;
+
+       ivug_main_view_set_hide_timer(pMainView);
+}
+
 Ivug_MainView *
 ivug_main_view_create(Evas_Object* parent, ivug_mode mode, ivug_view_by view_by)
 {
@@ -1188,6 +1307,20 @@ ivug_main_view_create(Evas_Object* parent, ivug_mode mode, ivug_view_by view_by)
 
        PERF_CHECK_END(LVL2, "ivug_slider_add");
 
+       Evas_Object *slider = elm_slider_add(pMainView->empty_layout);
+       elm_slider_indicator_format_set(slider, "%1.0f");
+       elm_slider_min_max_set(slider, 1, 5);
+       elm_slider_value_set(slider, 1);
+
+       evas_object_smart_callback_add(slider, "changed", _zoom_slider_change_cb, pMainView);
+       evas_object_smart_callback_add(slider, "slider,drag,start", _zoom_slider_start_cb, pMainView);
+       evas_object_smart_callback_add(slider, "slider,drag,stop", _zoom_slider_end_cb, pMainView);
+
+       elm_object_part_content_set(pMainView->empty_layout, "zoom_slider_area", slider);       //swallow
+
+       pMainView->zoom_slider = slider;
+       pMainView->zoom_level = 1;
+
        if (pMainView->mode != IVUG_MODE_DISPLAY)
        {
                PERF_CHECK_BEGIN(LVL2, "ivug_button_add");
@@ -1236,6 +1369,20 @@ ivug_main_view_create(Evas_Object* parent, ivug_mode mode, ivug_view_by view_by)
 
        evas_object_event_callback_add(pMainView->layout, EVAS_CALLBACK_RESIZE, _on_resize, pMainView);
 
+       // zoom icon
+       edje_object_signal_callback_add(_EDJ(pMainView->empty_layout),
+                                       "mainview,zoom_out,clicked",
+                                       "",
+                                       _ivug_main_view_zoom_out_cb,
+                                       (void *)pMainView);
+       edje_object_signal_callback_add(_EDJ(pMainView->empty_layout),
+                                       "mainview,zoom_in,clicked",
+                                       "",
+                                       _ivug_main_view_zoom_in_cb,
+                                       (void *)pMainView);
+
+       _show_zoom_icon(pMainView);
+
        pMainView->keydown_handler = ecore_event_handler_add(ECORE_EVENT_KEY_DOWN, _on_key_down, (void *)pMainView);
 
        {
@@ -1437,6 +1584,11 @@ ivug_main_view_destroy(Ivug_MainView *pMainView)
                pMainView->exit_timer = NULL;
        }
 
+       if ( pMainView->zoom_slider )
+       {
+               evas_object_del(pMainView->zoom_slider);
+               pMainView->zoom_slider = NULL;
+       }
 
        MSG_MAIN_HIGH("Unregister system notifications");
 
@@ -1485,40 +1637,14 @@ void ivug_main_view_set_hide_timer(Ivug_MainView *pMainView)
 {
        IV_ASSERT(pMainView != NULL);
 
-       pMainView->hide_count++;
-       MSG_MAIN_HIGH("hide_count = %d", pMainView->hide_count);
-       if(pMainView->hide_count < 0)
-       {
-               return ;
-       }
-
-       if(pMainView->mode == IVUG_MODE_DISPLAY || pMainView->mode == IVUG_MODE_SETAS)
-       {
-               return;
-       }
-
-       if(pMainView->bShowMenu == EINA_TRUE)
-       {
-               if(pMainView->hide_timer)
-               {
-                       ecore_timer_del(pMainView->hide_timer);
-               }
-               pMainView->hide_timer = ecore_timer_add(MENUBAR_TIMEOUT_SEC, _on_hide_timer_expired, (void *)pMainView);
-       }
+       return;
 }
 
 void ivug_main_view_del_hide_timer(Ivug_MainView *pMainView)
 {
        IV_ASSERT(pMainView != NULL);
 
-       pMainView->hide_count--;
-       MSG_MAIN_HIGH("hide_count = %d", pMainView->hide_count);
-
-       if(pMainView->hide_timer)
-       {
-               ecore_timer_del(pMainView->hide_timer);
-               pMainView->hide_timer = NULL;
-       }
+       return;
 }
 
 void
@@ -1606,6 +1732,11 @@ ivug_main_view_hide_menu_bar(Ivug_MainView *pMainView)
        elm_naviframe_item_title_visible_set(pMainView->navi_it, EINA_FALSE);
        elm_object_item_signal_emit(pMainView->navi_it, "elm,state,toolbar,close", "");
 
+       // zoom icon
+       edje_object_signal_emit(_EDJ(pMainView->empty_layout), "elm,state,btn_zoom_out,hide","elm");
+       edje_object_signal_emit(_EDJ(pMainView->empty_layout), "elm,state,btn_zoom_in,hide","elm");
+       edje_object_signal_emit(_EDJ(pMainView->empty_layout), "elm,state,zoom_slider,hide","elm");
+
        ivug_slider_set_menu_visibility(pMainView->slider, EINA_FALSE);
 
 }