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;
}
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;
}
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)
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);
}
}
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);
return false;
}
- if (m->folderlist)
- m_GetMediaList();
-
if (m->medialist)
m_GetEventList();
#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"
~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) {
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();
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();
CBaseView::Destroy();
+ CMediaContentDbUpdateListener::Destroy();
+ CUsbConnectionListener::Destroy();
+
m->pMediadata->DestroyMediaList();
m->pMediadata->Destroy();
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();
+}