apply CMediaContentDbUpdateListener and CUsbConnectionListener 32/35332/1 submit/tizen_tv/20150212.104411
authorJehun Lim <jehun.lim@samsung.com>
Thu, 12 Feb 2015 07:55:04 +0000 (16:55 +0900)
committerJehun Lim <jehun.lim@samsung.com>
Thu, 12 Feb 2015 07:56:17 +0000 (16:56 +0900)
Change-Id: Ic72e48dc8f08cf706f65e6334c68a5ac138a738d
Signed-off-by: Jehun Lim <jehun.lim@samsung.com>
include/view/gallery-view/gallery_view.h
src/data/eventinfo.cpp
src/data/folderinfo.cpp
src/data/mediadata.cpp
src/main.cpp
src/view/gallery-view/gallery_view.cpp
src/view/gallery-view/layout_all.cpp
src/view/gallery-view/layout_events.cpp
src/view/gallery-view/layout_folder.cpp

index b5866d2..7ac9664 100644 (file)
@@ -64,7 +64,8 @@ struct layout_data {
 
 class CGalleryView : public CBaseView, CListenerMgr,
        IKeyDownListener, IMouseClickedListener,
-       IMouseMoveListener, IFocusedListener, IUnfocusedListener {
+       IMouseMoveListener, IFocusedListener, IUnfocusedListener,
+       CMediaContentDbUpdateListener, CUsbConnectionListener {
 private:
        struct SGalleryView *m;
 
@@ -137,6 +138,8 @@ public:
        virtual void OnMouseMove(int id, Evas *e, Evas_Object *obj, Evas_Event_Mouse_Move *ev);
        virtual void OnFocused(int id, Evas_Object *obj, Elm_Object_Item *item);
        virtual void OnUnfocused(int id, Evas_Object *obj, Elm_Object_Item *item);
+       virtual void OnConnect(void);
+       virtual void OnUpdated(const SEntity *entity);
 };
 
 #endif
index 1d51070..8001aff 100644 (file)
@@ -69,7 +69,12 @@ void CEventInfo::m_DeleteMediaList(void)
        minfo = NULL;
        EINA_LIST_FREE(m->medialist, obj) {
                minfo = (CMediaInfo *)obj;
-               minfo->Destroy();
+
+               if (minfo->Type() == E_MEDIA_IMAGE)
+                       ((CImageInfo *)minfo)->Destroy();
+               else if (minfo->Type() == E_MEDIA_IMAGE)
+                       ((CVideoInfo *)minfo)->Destroy();
+
                delete minfo;
        }
 
@@ -100,10 +105,24 @@ Eina_List *CEventInfo::MediaList(void)
 
 bool CEventInfo::SetMediaInfo(CMediaInfo *minfo)
 {
+       CMediaInfo *nminfo;
+
        if (!m)
                return false;
 
-       m->medialist = eina_list_append(m->medialist, minfo);
+       nminfo = NULL;
+
+       if (minfo->Type() == E_MEDIA_IMAGE) {
+               nminfo = new CImageInfo;
+               ((CImageInfo *)nminfo)->Create();
+               ((CImageInfo *)nminfo)->Duplicate(minfo);
+       } else if (minfo->Type() == E_MEDIA_VIDEO) {
+               nminfo = new CVideoInfo;
+               ((CVideoInfo *)nminfo)->Create();
+               ((CVideoInfo *)nminfo)->Duplicate(minfo);
+       }
+
+       m->medialist = eina_list_append(m->medialist, nminfo);
 
        return true;
 }
index 3eacb75..2ba81d2 100644 (file)
@@ -70,7 +70,12 @@ void CFolderInfo::m_DeleteMediaList(void)
        minfo = NULL;
        EINA_LIST_FREE(m->medialist, obj) {
                minfo = (CMediaInfo *)obj;
-               minfo->Destroy();
+
+               if (minfo->Type() == E_MEDIA_IMAGE)
+                       ((CImageInfo *)minfo)->Destroy();
+               else if (minfo->Type() == E_MEDIA_IMAGE)
+                       ((CVideoInfo *)minfo)->Destroy();
+
                delete minfo;
        }
 
index 5d62ffc..5bac667 100644 (file)
@@ -102,11 +102,19 @@ void CMediadata::m_DeleteMediaList(int type)
        minfo = NULL;
        EINA_LIST_FREE(medialist, obj) {
                minfo = (CMediaInfo *)obj;
-               minfo->Destroy();
+
+               if (minfo->Type() == E_MEDIA_IMAGE)
+                       ((CImageInfo *)minfo)->Destroy();
+               else if (minfo->Type() == E_MEDIA_IMAGE)
+                       ((CVideoInfo *)minfo)->Destroy();
+
                delete minfo;
        }
 
-       medialist = NULL;
+       if (type == E_TYPE_MEDIA)
+               m->medialist = NULL;
+       else if (type == E_TYPE_FOLDER_MEDIA)
+               m->folder_medialist = NULL;
 }
 
 void CMediadata::DestroyMediaList(void)
@@ -196,19 +204,25 @@ bool CMediadata::m_DestroyFilter(filter_h filter)
 
 void CMediadata::m_GetMediaList(void)
 {
-       CFolderInfo *finfo;
-       CMediaInfo *minfo;
-       Eina_List *l1, *l2;
-       Eina_List *medialist;
-       void *obj, *obj2;
+       CMediaInfo *minfo, *nminfo;
+       Eina_List *l;
+       void *obj;
 
-       EINA_LIST_FOREACH(m->folderlist, l1, obj) {
-               finfo = (CFolderInfo *)obj;
-               medialist = finfo->MediaList();
-               EINA_LIST_FOREACH(medialist, l2, obj2) {
-                       minfo = (CMediaInfo *)obj2;
-                       m->medialist = eina_list_append(m->medialist, minfo);
+       nminfo = NULL;
+       EINA_LIST_FOREACH(m->folder_medialist, l, obj) {
+               minfo = (CMediaInfo *)obj;
+
+               if (minfo->Type() == E_MEDIA_IMAGE) {
+                       nminfo = new CImageInfo;
+                       ((CImageInfo *)nminfo)->Create();
+                       ((CImageInfo *)nminfo)->Duplicate(minfo);
+               } else if (minfo->Type() == E_MEDIA_VIDEO) {
+                       nminfo = new CVideoInfo;
+                       ((CVideoInfo *)nminfo)->Create();
+                       ((CVideoInfo *)nminfo)->Duplicate(minfo);
                }
+
+               m->medialist = eina_list_append(m->medialist, nminfo);
        }
 }
 
@@ -558,8 +572,9 @@ bool CMediadata::m_HandleEachFolderInfo(media_folder_h folder)
                goto error;
        }
 
-       //fd->list = eina_list_clone(data->item_list);
        finfo->SetMediaList(m->folder_medialist);
+       m_GetMediaList();
+
        m_DeleteMediaList(E_TYPE_FOLDER_MEDIA);
 
        m->folderlist = eina_list_append(m->folderlist, finfo);
@@ -652,9 +667,6 @@ bool CMediadata::CreateMediaList(int source_type, int media)
                return false;
        }
 
-       if (m->folderlist)
-               m_GetMediaList();
-
        if (m->medialist)
                m_GetEventList();
 
index 93a8cee..90b224c 100644 (file)
@@ -29,6 +29,8 @@
 #include "ExtNameInfo.h"
 #include "InputHandler.h"
 #include "SortMgr.h"
+#include "MediaContentDbListener.h"
+#include "UsbConnectionListener.h"
 #include "timeout_handler.h"
 #include "mediainfo.h"
 #include "mediadata.h"
index d24fc97..436cf82 100644 (file)
@@ -20,6 +20,8 @@
 #include <media_content.h>
 #include <InputHandler.h>
 #include <ExtNameInfo.h>
+#include <MediaContentDbListener.h>
+#include <UsbConnectionListener.h>
 #include "util.h"
 #include "menudef.h"
 #include "AppCommon.h"
@@ -114,85 +116,6 @@ struct SGalleryView {
        ~SGalleryView() {}
 };
 
-#if 0
-void CGalleryView::sm_CbUsbConnected(usb_device_h usb_device, char *action, void *dt)
-{
-       CGalleryView *root = (CGalleryView *)dt;
-
-       root->m_UsbConnected(action);
-}
-
-void CGalleryView::m_UsbConnected(char *action)
-{
-       if (m->source_type == E_SOURCE_TV)
-               return;
-
-       if (!strcmp(action, "added") || !strcmp(action, "removed"))
-               m_DrawNotifyPopup(_(TEXT_LOADING_MEDIA));
-}
-
-void CGalleryView::sm_CbMediaUpdate(media_content_error_e error,
-       int pid, media_content_db_update_item_type_e update_item,
-       media_content_db_update_type_e update_type,
-       media_content_type_e media_type,
-       char *uuid, char *path, char *mime_type, void *dt)
-{
-       CGalleryView *root = (CGalleryView *)dt;
-
-       root->m_MediaUpdate();
-}
-
-void CGalleryView::m_MediaUpdate(void)
-{
-       CViewMgr *vmgr;
-
-       _INFO("Media Files Updated, Source - %d Connected usb - %d",
-                       m->source_type, mediadata_connected_usb());
-
-       if (m->source_type == E_SOURCE_TV)
-               return;
-
-       if (m->source_type == E_SOURCE_ALL) {
-               if (mediadata_connected_usb() > 0)
-                       m->source_type = E_SOURCE_USB;
-               else
-                       return;
-       } else if (m->source_type == E_SOURCE_USB) {
-               if (mediadata_connected_usb() == 0)
-                       m->source_type = E_SOURCE_ALL;
-               else
-                       return;
-       }
-
-       vmgr = CViewMgr::GetInstance();
-       if (!vmgr)
-               return;
-
-       if (vmgr->CheckTop(VIEW_PHOTO_VIEWER))
-               vmgr->PopView();
-       else if (vmgr->CheckTop(VIEW_PHOTO_ZOOM)) {
-               vmgr->PopView();
-               vmgr->PopView();
-       }
-
-       DestroyCtxpopup();
-
-       mediadata_destroy_mediafiles_list(m->media_list);
-
-       m->media_list = mediadata_create_mediafiles_list(
-                       m->source_type, m->arglist->media_type);
-
-       DrawContentArea(m->current_layout);
-
-       if (m->source_type == E_SOURCE_ALL)
-               elm_object_text_set(m->sourcebtn, _(sourcetext[0]));
-       else if (m->source_type == E_SOURCE_USB)
-               elm_object_text_set(m->sourcebtn, _(sourcetext[2]));
-
-       m_DestroyNotifyPopup();
-}
-#endif
-
 void CGalleryView::m_DestroyNotifyPopup(void)
 {
        if (m->transit) {
@@ -829,11 +752,8 @@ bool CGalleryView::Create(void *data)
        m->pLayoutMgr->RegisterCallback(CLayoutMgr::CONDITION_LAYOUT_SHOW_NOTIFY, sm_CbLayoutShown, m);
 
        m->pMediadata = new CMediadata;
-       if (!m->pMediadata->Create()) {
-               evas_object_del(m->base);
-               free(m);
-               return false;
-       }
+       if (!m->pMediadata->Create())
+               goto error;
 
        if (!elm_layout_file_set(m->base, EDJEFILE, GRP_GALLERY_VIEW)) {
                m->pMediadata->Destroy();
@@ -849,10 +769,10 @@ bool CGalleryView::Create(void *data)
 
        evas_object_data_set(m->base, PRIV_DATA, m);
 
-#if 0
-       mediadata_set_updated_cb(sm_CbMediaUpdate, this);
-       mediadata_usb_set_connected_cb(sm_CbUsbConnected, this);
-#endif
+       if (!CMediaContentDbUpdateListener::Create())
+               goto error;
+       if (!CUsbConnectionListener::Create())
+               goto error;
 
        if (!m_DrawItems()) {
                m->pMediadata->Destroy();
@@ -878,6 +798,9 @@ void CGalleryView::Destroy(void)
 
        CBaseView::Destroy();
 
+       CMediaContentDbUpdateListener::Destroy();
+       CUsbConnectionListener::Destroy();
+
        m->pMediadata->DestroyMediaList();
 
        m->pMediadata->Destroy();
@@ -1118,3 +1041,59 @@ void CGalleryView::OnUnfocused(int id, Evas_Object *obj, Elm_Object_Item *item)
                break;
        }
 }
+
+void CGalleryView::OnConnect(void)
+{
+       if (m->source_type == E_SOURCE_TV)
+               return;
+
+       m_DrawNotifyPopup(_(TEXT_LOADING_MEDIA));
+}
+
+void CGalleryView::OnUpdated(const SEntity *entity)
+{
+       CViewMgr *vmgr;
+
+       if (m->source_type == E_SOURCE_TV)
+               return;
+
+       if (m->source_type == E_SOURCE_ALL) {
+               if (FlagConnected())
+                       m->source_type = E_SOURCE_USB;
+               else
+                       return;
+       } else if (m->source_type == E_SOURCE_USB) {
+               if (!FlagConnected())
+                       m->source_type = E_SOURCE_ALL;
+               else
+                       return;
+       }
+
+       vmgr = CViewMgr::GetInstance();
+       if (!vmgr)
+               return;
+
+       if (vmgr->CheckTop(VIEW_PHOTO_VIEWER))
+               vmgr->PopView();
+       else if (vmgr->CheckTop(VIEW_PHOTO_ZOOM)) {
+               vmgr->PopView();
+               vmgr->PopView();
+       }
+
+       m_DestroyCtxpopup();
+
+       m->pMediadata->DestroyMediaList();
+
+       if (!m->pMediadata->CreateMediaList(
+                               m->source_type, m->arglist->media_type))
+               return;
+
+       m_DrawContentArea(m->current_layout);
+
+       if (m->source_type == E_SOURCE_ALL)
+               elm_object_text_set(m->sourcebtn, _(sourcetext[0]));
+       else if (m->source_type == E_SOURCE_USB)
+               elm_object_text_set(m->sourcebtn, _(sourcetext[2]));
+
+       m_DestroyNotifyPopup();
+}
index 0a3978b..2777e4b 100644 (file)
@@ -33,6 +33,8 @@
 #include "LayoutMgr.h"
 #include "BaseLayout.h"
 #include "Sort.h"
+#include "MediaContentDbListener.h"
+#include "UsbConnectionListener.h"
 #include "video_player.h"
 #include "gallery_view.h"
 #include "layout_all.h"
index aea71de..ee39d85 100644 (file)
@@ -30,6 +30,8 @@
 #include "ViewMgr.h"
 #include "InputHandler.h"
 #include "Sort.h"
+#include "MediaContentDbListener.h"
+#include "UsbConnectionListener.h"
 #include "video_player.h"
 #include "BaseLayout.h"
 #include "LayoutMgr.h"
index 067cff4..b49f9ba 100644 (file)
@@ -31,6 +31,8 @@
 #include "LayoutMgr.h"
 #include "InputHandler.h"
 #include "Sort.h"
+#include "MediaContentDbListener.h"
+#include "UsbConnectionListener.h"
 #include "layout_all.h"
 #include "layout_folder.h"
 #include "gallery_view.h"