delete previous photocam image after loading new image 37/38937/1
authorJehun Lim <jehun.lim@samsung.com>
Mon, 27 Apr 2015 02:03:52 +0000 (11:03 +0900)
committerJaeun Choi <jaeun12.choi@samsung.com>
Thu, 30 Apr 2015 16:35:15 +0000 (01:35 +0900)
Change-Id: I52c649fd89b1ced7c3185c80b55395987a85d038

include/view/photo-viewer/photoviewer_view.h
src/view/photo-viewer/photoviewer_view.cpp

index fe0677a..9eda50e 100644 (file)
@@ -68,6 +68,13 @@ private:
 
        static void sm_CbCtxPopupSelected(void *cookie,
                        CContextPopup *instance, const char *text);
+       static void sm_CbPhotocamLoaded(void *data, Evas_Object *obj,
+                       void *event_info);
+       static void sm_CbPhotocamLoadedDetail(void *data, Evas_Object *obj,
+                       void *event_info);
+       void m_OnPhotocamLoaded(Evas_Object *obj);
+       void m_OnPhotocamLoadedDetail(Evas_Object *obj);
+
        void m_OnCtxPopupSelected(CContextPopup *instance, const char *text);
 
        static Eina_Bool sm_CbTimerTooltip(void *cookie);
index 98b7944..8fef4c0 100644 (file)
@@ -72,6 +72,7 @@ struct SPhotoViewerView {
        int current_idx;
 
        Evas_Object *photocam;
+       Evas_Object *loading;
 
        Evas_Object *pvbar_box;
        Evas_Object *pvbar_scr;
@@ -103,6 +104,7 @@ struct SPhotoViewerView {
                totalcount = 0;
 
                photocam = NULL;
+               loading = NULL;
                tooltip_timer = NULL;
 
                slideshow_timer = NULL;
@@ -381,6 +383,42 @@ void CPhotoViewerView::m_OnRotateBtnClicked(Evas_Object *obj,
                evas_object_del(image);
 }
 
+void CPhotoViewerView::sm_CbPhotocamLoaded(void *data, Evas_Object *obj, void *event_info)
+{
+       CPhotoViewerView *root = (CPhotoViewerView *)data;
+
+       if (!root)
+               return;
+
+       root->m_OnPhotocamLoaded(obj);
+}
+
+void CPhotoViewerView::sm_CbPhotocamLoadedDetail(void *data, Evas_Object *obj, void *event_info)
+{
+       CPhotoViewerView *root = (CPhotoViewerView *)data;
+
+       if (!root)
+               return;
+
+       root->m_OnPhotocamLoadedDetail(obj);
+}
+
+void CPhotoViewerView::m_OnPhotocamLoaded(Evas_Object *obj)
+{
+       if (m->photocam != m->loading) {
+               if (m->photocam) evas_object_del(m->photocam);
+               m->photocam = obj;
+       }
+
+       elm_object_part_content_set(Base(), PART_CONTENTAREA, obj);
+
+}
+
+void CPhotoViewerView::m_OnPhotocamLoadedDetail(Evas_Object *obj)
+{
+       m->loading = NULL;
+}
+
 Eina_Bool CPhotoViewerView::sm_CbTimerTooltip(void *cookie)
 {
        CPhotoViewerView *root = (CPhotoViewerView *)cookie;
@@ -468,25 +506,39 @@ bool CPhotoViewerView::m_DrawContentArea(CMediaInfo *minfo)
        if (!file_path)
                return false;
 
-       if (m->photocam)
-               evas_object_del(m->photocam);
+       if (m->loading) {
+               elm_photocam_file_set(m->loading, file_path);
 
-       m->photocam = elm_photocam_add(Base());
-       if (!m->photocam)
-               return false;
+               elm_photocam_image_size_get(m->loading, &width, &height);
+               if (height > width)
+                       elm_photocam_zoom_mode_set(m->loading,
+                                       ELM_PHOTOCAM_ZOOM_MODE_AUTO_FIT);
+               else
+                       elm_photocam_zoom_mode_set(m->loading,
+                                       ELM_PHOTOCAM_ZOOM_MODE_AUTO_FILL);
+       }
+       else {
+               m->loading = elm_photocam_add(Base());
+               if (!m->loading)
+                       return false;
 
-       elm_photocam_file_set(m->photocam, file_path);
-       elm_photocam_image_size_get(m->photocam, &width, &height);
-       if (height > width)
-               elm_photocam_zoom_mode_set(m->photocam,
-                               ELM_PHOTOCAM_ZOOM_MODE_AUTO_FIT);
-       else
-               elm_photocam_zoom_mode_set(m->photocam,
-                               ELM_PHOTOCAM_ZOOM_MODE_AUTO_FILL);
-       elm_object_focus_allow_set(m->photocam, EINA_FALSE);
-       elm_scroller_policy_set(m->photocam,
-                       ELM_SCROLLER_POLICY_AUTO, ELM_SCROLLER_POLICY_AUTO);
-       elm_object_part_content_set(Base(), PART_CONTENTAREA, m->photocam);
+               evas_object_smart_callback_add(m->loading, "loaded", sm_CbPhotocamLoaded, this);
+               evas_object_smart_callback_add(m->loading, "loaded,detail", sm_CbPhotocamLoadedDetail, this);
+
+               elm_photocam_file_set(m->loading, file_path);
+
+               elm_photocam_image_size_get(m->loading, &width, &height);
+               if (height > width)
+                       elm_photocam_zoom_mode_set(m->loading,
+                                       ELM_PHOTOCAM_ZOOM_MODE_AUTO_FIT);
+               else
+                       elm_photocam_zoom_mode_set(m->loading,
+                                       ELM_PHOTOCAM_ZOOM_MODE_AUTO_FILL);
+
+               elm_object_focus_allow_set(m->loading, EINA_FALSE);
+               elm_scroller_policy_set(m->loading,
+                               ELM_SCROLLER_POLICY_AUTO, ELM_SCROLLER_POLICY_AUTO);
+       }
 
        return true;
 }