add update function for photoviewer view and contextual menu view 35/35435/3
authorJehun Lim <jehun.lim@samsung.com>
Sat, 14 Feb 2015 05:46:13 +0000 (14:46 +0900)
committerMinkyu Kang <mk7.kang@samsung.com>
Mon, 16 Feb 2015 10:39:55 +0000 (19:39 +0900)
Change-Id: I30fc2814ca86d228ae82bf173e4dc509c390df00
Signed-off-by: Jehun Lim <jehun.lim@samsung.com>
include/common/define.h
include/view/ctxtmenu-view/ctxtmenu_view.h
include/view/photo-viewer/photoviewer_view.h
src/main.cpp
src/view/ctxtmenu-view/ctxtmenu_view.cpp
src/view/gallery-view/gallery_view.cpp
src/view/photo-viewer/photoviewer_view.cpp
src/view/photo-viewer/zoom_view.cpp

index 2aaee24..0a8aef4 100644 (file)
 #define PADDING_BOX 50
 
 #define POSITION_ZOOM_POPUP_X 1200
-#define POSITION_ZOOM_POPUP_Y 650
+#define POSITION_ZOOM_POPUP_Y 903
 
 #define POSITION_SETTING_POPUP_X 1040
-#define POSITION_SETTING_POPUP_Y 650
+#define POSITION_SETTING_POPUP_Y 903
 
 #define POSITION_SORT_POPUP_X 1296
 #define POSITION_SORT_POPUP_Y 155
index 5d625be..6e2224f 100644 (file)
@@ -28,6 +28,7 @@ private:
 protected:
        virtual void t_OnShow(void);
        virtual void t_OnHide(void);
+       virtual void t_OnUpdate(void *data);
        virtual void t_OnPause(void);
        virtual void t_OnResume(void);
 
@@ -52,6 +53,7 @@ private:
        void m_PlayBtnSelected(void);
 
        bool m_DrawGengrid(void);
+       bool m_DrawGengridItems(void);
 
        bool m_LoadContentThumbnail(void);
 
index a8cbf31..92df937 100644 (file)
@@ -27,6 +27,7 @@ private:
 protected:
        virtual void t_OnShow(void);
        virtual void t_OnHide(void);
+       virtual void t_OnUpdate(void *data);
        virtual void t_OnPause(void);
        virtual void t_OnResume(void);
 
index 743a7d9..7aebd5d 100644 (file)
@@ -69,6 +69,18 @@ private:
        CPhotoZoomView *pPhotoZoomView;
        CCtxtMenuView *pCtxtMenuView;
 
+private:
+
+       static void sm_CbPushView(void *cookie, CBaseView *pHideView, CBaseView *pShowView)
+       {
+               const char *viewId = pShowView->ViewId();
+
+               if (strcmp(viewId, VIEW_CTXT_MENU) && pHideView) {
+                       if (pHideView->FlagCreate())
+                               pHideView->Hide();
+               }
+       }
+
 protected:
 
        void t_RemoveArglist(void)
@@ -263,6 +275,12 @@ public:
                vmgr->AddView(pPhotoZoomView);
                vmgr->AddView(pCtxtMenuView);
 
+               CViewMgr::SCallback cb;
+               cb.cookie = this;
+               cb.cbPushView = sm_CbPushView;
+               cb.cbPopView = NULL;
+               vmgr->AddCallback(&cb);
+
                if (!vmgr->PushView(VIEW_GALLERY, ad.arglist)) {
                        _ERR("ViewMgr push failed");
                        elm_exit();
index 1390673..c284bd5 100644 (file)
@@ -364,85 +364,6 @@ void CCtxtMenuView::m_PlayBtnSelected(void)
        video_player_play(vd);
 }
 
-bool CCtxtMenuView::m_DrawGengrid(void)
-{
-       Elm_Gengrid_Item_Class *ic_photo, *ic_video;
-       Eina_List *l;
-       Evas_Object *grid;
-       Elm_Object_Item *it = NULL;
-       CMediaInfo *minfo;
-       const char *sel_name, *name;
-       char *sel_date, *date;
-       void *obj;
-
-       grid = m->grid;
-       if (!grid)
-               return false;
-
-       minfo = m->vd->minfo;
-       if (!minfo)
-               return false;
-
-       elm_gengrid_clear(grid);
-
-       ic_photo = _get_itemclass(MEDIA_IMAGE);
-       if (!ic_photo)
-               return false;
-
-       ic_video = _get_itemclass(MEDIA_VIDEO);
-       if (!ic_video)
-               return false;
-
-       sel_name = minfo->Name();
-       if (!sel_name)
-               goto err;
-
-       sel_date = _get_mediadata_date(minfo);
-       if (!sel_date)
-               goto err;
-
-       EINA_LIST_FOREACH(m->vd->media_list, l, obj) {
-               minfo = (CMediaInfo*)obj;
-
-               name = minfo->Name();
-               if (!name || !strcmp(sel_name, name))
-                       continue;
-
-               date = _get_mediadata_date(minfo);
-               if (!date)
-                       continue;
-
-               if (strcmp(sel_date, date)) {
-                       free(date);
-                       continue;
-               }
-
-               if (minfo->Type() == MEDIA_IMAGE) {
-                       it = elm_gengrid_item_append(grid, ic_photo,
-                                       minfo, NULL, NULL);
-               } else if (minfo->Type() == MEDIA_VIDEO) {
-                       it = elm_gengrid_item_append(grid, ic_video,
-                                       minfo, NULL, NULL);
-               }
-               elm_object_item_data_set(it, minfo);
-
-               free(date);
-       }
-
-       _free_itemclass(ic_photo);
-       _free_itemclass(ic_video);
-
-       free(sel_date);
-
-       return true;
-
-err:
-       _free_itemclass(ic_photo);
-       _free_itemclass(ic_video);
-
-       return false;
-}
-
 bool CCtxtMenuView::m_LoadContentThumbnail(void)
 {
        Evas_Object *photocam;
@@ -600,15 +521,12 @@ bool CCtxtMenuView::m_DrawSelectedContent(void)
        return true;
 }
 
-
-bool CCtxtMenuView::m_DrawRelatedContent(void)
+bool CCtxtMenuView::m_DrawGengrid(void)
 {
        Evas_Object *grid;
-       CMediaInfo *minfo;
 
-       minfo = m->vd->minfo;
-       if (!minfo)
-               return false;
+       if (m->grid)
+               return true;
 
        grid = elm_gengrid_add(m->base);
        if (!grid) {
@@ -625,24 +543,117 @@ bool CCtxtMenuView::m_DrawRelatedContent(void)
                        elm_config_scale_get() * CTXT_MENU_GENGRID_ITEM_SIZE_W,
                        elm_config_scale_get() * CTXT_MENU_GENGRID_ITEM_SIZE_H);
 
-       m->grid = grid;
-
-       if (!m_DrawGengrid()) {
-               evas_object_del(grid);
-               return false;
-       }
-
        Connect(grid, CTXT_MENU_GRID, TYPE_MOUSE_MOVE |
                        TYPE_REALIZED | TYPE_UNREALIZED | TYPE_ACTIVATED);
 
-       evas_object_show(grid);
-
        elm_object_part_text_set(m->base,
                        PART_RELCONT_TXT, _(TEXT_RELATED_CONTENT));
        elm_object_part_content_set(m->base, PART_RELCONT, grid);
 
        elm_object_focus_next_object_set(grid, grid, ELM_FOCUS_LEFT);
 
+       m->grid = grid;
+
+       return true;
+}
+
+bool CCtxtMenuView::m_DrawGengridItems(void)
+{
+       Elm_Gengrid_Item_Class *ic_photo, *ic_video;
+       Eina_List *l;
+       Evas_Object *grid;
+       Elm_Object_Item *it = NULL;
+       CMediaInfo *minfo;
+       const char *sel_name, *name;
+       char *sel_date, *date;
+       void *obj;
+
+       grid = m->grid;
+       if (!grid)
+               return false;
+
+       minfo = m->vd->minfo;
+       if (!minfo)
+               return false;
+
+       elm_gengrid_clear(grid);
+
+       ic_photo = _get_itemclass(MEDIA_IMAGE);
+       if (!ic_photo)
+               return false;
+
+       ic_video = _get_itemclass(MEDIA_VIDEO);
+       if (!ic_video)
+               return false;
+
+       sel_name = minfo->Name();
+       if (!sel_name)
+               goto err;
+
+       sel_date = _get_mediadata_date(minfo);
+       if (!sel_date)
+               goto err;
+
+       EINA_LIST_FOREACH(m->vd->media_list, l, obj) {
+               minfo = (CMediaInfo*)obj;
+
+               name = minfo->Name();
+               if (!name || !strcmp(sel_name, name))
+                       continue;
+
+               date = _get_mediadata_date(minfo);
+               if (!date)
+                       continue;
+
+               if (strcmp(sel_date, date)) {
+                       free(date);
+                       continue;
+               }
+
+               if (minfo->Type() == MEDIA_IMAGE) {
+                       it = elm_gengrid_item_append(grid, ic_photo,
+                                       minfo, NULL, NULL);
+               } else if (minfo->Type() == MEDIA_VIDEO) {
+                       it = elm_gengrid_item_append(grid, ic_video,
+                                       minfo, NULL, NULL);
+               }
+               elm_object_item_data_set(it, minfo);
+
+               free(date);
+       }
+
+       _free_itemclass(ic_photo);
+       _free_itemclass(ic_video);
+
+       free(sel_date);
+
+       return true;
+
+err:
+       _free_itemclass(ic_photo);
+       _free_itemclass(ic_video);
+
+       return false;
+}
+
+bool CCtxtMenuView::m_DrawRelatedContent(void)
+{
+       CMediaInfo *minfo;
+
+       minfo = m->vd->minfo;
+       if (!minfo)
+               return false;
+
+       if (!m_DrawGengrid())
+               return false;
+
+       if (!m_DrawGengridItems()) {
+               evas_object_del(m->grid);
+               return false;
+       }
+
+       evas_object_show(m->grid);
+
        return true;
 }
 
@@ -681,7 +692,6 @@ bool CCtxtMenuView::m_DrawFuncBtn(void)
        int i, size;
        char btn_title[256];
 
-
        minfo = m->vd->minfo;
        if (!minfo)
                return false;
@@ -696,6 +706,9 @@ bool CCtxtMenuView::m_DrawFuncBtn(void)
        elm_box_padding_set(box, SIZE_BOX_PAD_W * elm_config_scale_get(),
                        SIZE_BOX_PAD_H * elm_config_scale_get());
 
+       for (i = 0; i < MAX_FUNC_BTN; i++)
+               m->func_btn[i] = NULL;
+
        btn_info = m_GetBtnInfo(&size);
        ly = NULL;
        for (i = 0; i < size; i++) {
@@ -843,6 +856,11 @@ void CCtxtMenuView::t_OnShow(void)
        ASSERT(m);
 
        evas_object_show(m->base);
+
+       if (evas_object_above_get(m->base))
+               evas_object_raise(m->base);
+
+       t_OnResume();
 }
 
 void CCtxtMenuView::t_OnHide(void)
@@ -850,8 +868,25 @@ void CCtxtMenuView::t_OnHide(void)
        ASSERT(m);
 
        evas_object_hide(m->base);
+
+       t_OnPause();
 }
 
+void CCtxtMenuView::t_OnUpdate(void *data)
+{
+       ASSERT(m);
+
+       m->vd = (struct view_data *)data;
+
+       if (!m_DrawSelectedContent())
+               return;
+
+       if (!m_DrawRelatedContent())
+               return;
+
+       if (!m_DrawFuncBtn())
+               return;
+}
 
 void CCtxtMenuView::t_OnPause(void)
 {
index 436cf82..bdc7b39 100644 (file)
@@ -827,6 +827,8 @@ void CGalleryView::t_OnShow(void)
        ASSERT(m);
 
        evas_object_show(m->base);
+
+       t_OnResume();
 }
 
 void CGalleryView::t_OnHide(void)
@@ -834,6 +836,8 @@ void CGalleryView::t_OnHide(void)
        ASSERT(m);
 
        evas_object_hide(m->base);
+
+       t_OnPause();
 }
 
 void CGalleryView::t_OnPause(void)
index 36be60d..d8e62cd 100644 (file)
@@ -607,7 +607,7 @@ bool CPhotoViewerView::m_DrawBottomArea(void)
                "zoom",
                "rotate"
        };
-       
+
        if (!m->base)
                return false;
 
@@ -620,10 +620,10 @@ bool CPhotoViewerView::m_DrawBottomArea(void)
                }
 
                snprintf(buf, sizeof(buf), "part_btn%d", i);
-               elm_object_part_content_set(m->base,
-                               buf, m->btn[i]);
+               elm_object_part_content_set(m->base, buf, m->btn[i]);
 
-               elm_object_signal_callback_add(m->btn[i], "btn,anim,finish", _source_name[i], _edje_callback_function[i], this);
+               elm_object_signal_callback_add(m->btn[i], "btn,anim,finish",
+                               _source_name[i], _edje_callback_function[i], this);
 
                Connect(m->btn[i], PHOTOVIEWER_BTN,
                                TYPE_KEY_DOWN | TYPE_CLICKED |
@@ -716,6 +716,7 @@ bool CPhotoViewerView::Create(void *data)
        m = new SPhotoViewerView;
        if (!m)
                return false;
+
        m->base = elm_layout_add(win);
        if (!m->base) {
                delete m;
@@ -788,6 +789,8 @@ void CPhotoViewerView::t_OnShow(void)
        ASSERT(m);
 
        evas_object_show(m->base);
+
+       t_OnResume();
 }
 
 void CPhotoViewerView::t_OnHide(void)
@@ -795,13 +798,31 @@ void CPhotoViewerView::t_OnHide(void)
        ASSERT(m);
 
        evas_object_hide(m->base);
+
+       t_OnPause();
 }
 
 
+void CPhotoViewerView::t_OnUpdate(void *data)
+{
+       ASSERT(m);
+
+       m->vd = (struct view_data *)data;
+       m->totalcount = eina_list_count(m->vd->media_list);
+
+       if (!m_DrawContentArea(m->vd->minfo))
+               return;
+
+       if (!m_DrawTopArea(m->vd->minfo))
+               return;
+}
+
 void CPhotoViewerView::t_OnPause(void)
 {
        ASSERT(m);
 
+       elm_object_tooltip_hide(m->focusedbtn);
+
        if (m->slideshow_timer)
                ecore_timer_freeze(m->slideshow_timer);
 
@@ -818,6 +839,14 @@ void CPhotoViewerView::t_OnResume(void)
        m->cTimeoutHandler.Resume();
 
        elm_object_focus_set(m->focusedbtn, EINA_TRUE);
+
+       elm_object_tooltip_show(m->focusedbtn);
+       if (m->tooltip_timer)
+               ecore_timer_reset(m->tooltip_timer);
+       else {
+               m->tooltip_timer = ecore_timer_add(TIMEOUT_TOOLTIP,
+                                       sm_CbTimerTooltip, this);
+       }
 }
 
 
@@ -865,6 +894,7 @@ Eina_Bool CPhotoViewerView::OnEvent(int type, void *event_info)
                }
                else if (!strcmp(ev->keyname, KEY_MENU)) {
                        CViewMgr::GetInstance()->PushView(VIEW_CTXT_MENU, m->vd);
+                       t_OnPause();
                        return EINA_FALSE;
                }
                else
@@ -886,8 +916,10 @@ void CPhotoViewerView::OnKeyDown(int id, Evas *e, Evas_Object *obj, Evas_Event_K
        case PHOTOVIEWER_BTN:
                if (!strcmp(ev->keyname, KEY_BACK))
                        CViewMgr::GetInstance()->PopView();
-               else if (!strcmp(ev->keyname, KEY_MENU))
+               else if (!strcmp(ev->keyname, KEY_MENU)) {
                        CViewMgr::GetInstance()->PushView(VIEW_CTXT_MENU, m->vd);
+                       t_OnPause();
+               }
 
                break;
        case PHOTOVIEWER_CTXPOPUP:
index 6336e26..8939d4c 100644 (file)
@@ -429,6 +429,8 @@ void CPhotoZoomView::t_OnShow(void)
 
        elm_object_focus_allow_set(m->eoBase, EINA_TRUE);
        elm_object_focus_set(m->eoBase, EINA_TRUE);
+
+       t_OnResume();
 }
 
 
@@ -437,6 +439,8 @@ void CPhotoZoomView::t_OnHide(void)
        ASSERT(m);
 
        evas_object_hide(m->eoBase);
+
+       t_OnPause();
 }