src/view/photo-viewer/zoom_view.cpp
src/view/video-player/video_player.cpp
src/data/mediadata.cpp
-src/data/imagedata.cpp
-src/data/videodata.cpp
-src/data/eventdata.cpp
+src/data/mediainfo.cpp
+src/data/imageinfo.cpp
+src/data/videoinfo.cpp
+src/data/eventinfo.cpp
+src/data/folderinfo.cpp
src/util/util.cpp
src/util/timeout_handler.cpp
src/common/menudef.cpp
#define MAX_SPEED_BTNS 3
#define MAX_EFFECT_BTNS 3
#define MAX_LAYOUT 3
+#define MAX_SORT_ID 4
#define TEXT_GALLERY N_("GALLERY")
#define TEXT_RETURN N_("Return")
#define TEXT_NOCONTENTAREA2 N_("There is no photo & video in the selected source.")
#define TEXT_LOADING_MEDIA N_("Updating...")
+enum e_sorting_files {
+ E_SORT_DATE_DESC = 0,
+ E_SORT_DATE_ASC,
+ E_SORT_A_Z,
+ E_SORT_Z_A,
+ E_SORT_MAX
+};
+
+enum e_source_type {
+ E_SOURCE_ALL = 0,
+ E_SOURCE_TV,
+ E_SOURCE_USB
+};
+
+enum e_media_type {
+ E_MEDIA_IMAGE = 0,
+ E_MEDIA_VIDEO,
+ E_MEDIA_IMAGE_VIDEO
+};
+
+enum e_event_type {
+ E_TYPE_EVENT_NO_INFO = 0,
+ E_TYPE_EVENT_INFO
+};
+
enum zoom_level {
E_ZOOM_ORIGINAL = 0,
E_ZOOM_X2,
extern const char *layout_type[MAX_LAYOUT];
+extern const char *sort_id[MAX_SORT_ID];
+
#endif
* limitations under the License.
*/
-#ifndef __EVENTDATA_H__
-#define __EVENTDATA_H__
+#ifndef __EVENTINFO_H__
+#define __EVENTINFO_H__
-#include "mediadata.h"
-#include "imagedata.h"
-#include "videodata.h"
+class CEventInfo : public CExtNameInfo {
+private:
+ struct SEventInfo *m;
-enum event_type {
- E_TYPE_EVENT_NO_INFO = 0,
- E_TYPE_EVENT_INFO
-};
+private:
+ void m_DeleteMediaList(void);
+
+public:
+ CEventInfo() : m(0) {};
+ virtual ~CEventInfo() {};
-struct eventdata;
+ bool Create(void);
+ virtual void Destroy(void);
-void eventdata_destroy_list(Eina_List *events_list);
-Eina_List *eventdata_create_list(
- Eina_List *mediafiles_list, int sort);
+ CMediaInfo *MediaInfo(void);
+ Eina_List *MediaList(void);
-int eventdata_get_type(struct eventdata *ed);
-Eina_List *eventdata_get_listinfo(struct eventdata *ed);
-struct mediadata *eventdata_get_mediadata(struct eventdata *ed);
-const char *eventdata_get_eventname(struct eventdata *ed);
+ bool SetMediaInfo(CMediaInfo *minfo);
+ bool SetMediaList(Eina_List *medialist);
+
+ bool Duplicate(CNameInfo *obj);
+};
#endif
* limitations under the License.
*/
-#ifndef __VIDEODATA_H__
-#define __VIDEODATA_H__
+#ifndef __FOLDERINFO_H__
+#define __FOLDERINFO_H__
-#include <media_content.h>
+class CFolderInfo : public CExtNameInfo {
+private:
+ struct SFolderInfo *m;
-struct videodata;
+private:
+ void m_DeleteMediaList(void);
-struct videodata *videodata_create(media_info_h media_h);
+public:
+ CFolderInfo() : m(0) {};
+ virtual ~CFolderInfo() {};
-void videodata_destroy(struct videodata *video_info);
+ bool Create(void);
+ virtual void Destroy(void);
-int videodata_get_duration(const struct videodata *video_info);
-int videodata_get_played_position(const struct videodata *video_info);
-const char *videodata_get_date_taken(const struct videodata *video_info);
+ Eina_List *MediaList(void);
+
+ bool SetMediaList(Eina_List *medialist);
+
+ bool Duplicate(CNameInfo *obj);
+};
#endif
* limitations under the License.
*/
-#ifndef __IMAGEDATA_H__
-#define __IMAGEDATA_H__
+#ifndef __IMAGEINFO_H__
+#define __IMAGEINFO_H__
-#include <media_content.h>
+class CImageInfo : public CMediaInfo {
+private:
+ struct SImageInfo *m;
-struct imagedata;
+public:
+ CImageInfo() : m(0) {};
+ virtual ~CImageInfo() {};
-struct imagedata *imagedata_create(media_info_h media_h);
+ bool Create(void);
+ void Destroy(void);
-void imagedata_destroy(struct imagedata *image_info);
+ int Width(void);
+ int Height(void);
+ int Orientation(void);
-image_meta_h imagedata_get_handle(const struct imagedata *image_info);
-int imagedata_get_width(const struct imagedata *image_info);
-int imagedata_get_height(const struct imagedata *image_info);
-int imagedata_get_orientation(const struct imagedata *image_info);
-int imagedata_get_iso(const struct imagedata *image_info);
-const char *imagedata_get_model(const struct imagedata *image_info);
+ bool SetWidth(int width);
+ bool SetHeight(int height);
+ bool SetOrientation(int orientation);
+
+ bool Duplicate(CNameInfo *obj);
+};
#endif
#ifndef __MEDIADATA_H__
#define __MEDIADATA_H__
-#include <media_content.h>
-//#include <usb-device.h>
-#include "imagedata.h"
-#include "videodata.h"
+class CMediadata {
+private:
+ struct SMediadata *m;
-struct mediadata;
-struct folderdata;
+private:
+ static bool sm_CbEachMediaInfo(media_info_h media_h, void *dt);
+ bool m_HandleEachMediaInfo(media_info_h media_h);
-enum e_sorting_files {
- E_SORT_DATE_DESC = 0,
- E_SORT_DATE_ASC,
- E_SORT_A_Z,
- E_SORT_Z_A,
- E_SORT_MAX
-};
+ static bool sm_CbEachFolderInfo(media_folder_h folder, void *dt);
+ bool m_HandleEachFolderInfo(media_folder_h folder);
-enum e_source_type {
- E_SOURCE_ALL = 0,
- E_SOURCE_TV,
- E_SOURCE_USB
-};
+ bool m_HandleEachImageInfo(media_info_h media_h, CMediaInfo *minfo);
+ bool m_HandleEachVideoInfo(media_info_h media_h, CMediaInfo *minfo);
-enum e_media_type {
- E_MEDIA_IMAGE_VIDEO = 0,
- E_MEDIA_IMAGE,
- E_MEDIA_VIDEO
-};
+ void m_GetEventList(void);
+ void m_GetMediaList(void);
-int mediadata_init();
-int mediadata_fini();
+ void m_DeleteFolderList(void);
+ void m_DeleteEventList(void);
+ void m_DeleteMediaList(int type);
-Eina_List *mediadata_create_mediafiles_list(
- int source_type, int media);
-void mediadata_destroy_mediafiles_list(Eina_List *list);
+ bool m_CreateFilter(filter_h *filter, int type);
+ bool m_DestroyFilter(filter_h filter);
-Eina_List *mediadata_get_filelist(Eina_List *list);
+public:
+ CMediadata() : m(0) {};
+ ~CMediadata() {};
-const char *mediadata_get_displayname(struct mediadata *md);
-const char *mediadata_get_mediaid(struct mediadata *md);
-unsigned long long mediadata_get_size(struct mediadata *md);
-const char *mediadata_get_thumbnailpath(struct mediadata *md);
-const char *mediadata_get_filepath(struct mediadata *md);
-const char *mediadata_get_locationtag(struct mediadata *md);
-int mediadata_get_type(struct mediadata *md);
-int mediadata_get_source(struct mediadata *md);
-time_t mediadata_get_modifiedtime(struct mediadata *md);
-time_t mediadata_get_createdtime(struct mediadata *md);
+ bool Create(void);
+ void Destroy(void);
-void mediadata_set_updated_cb(media_content_db_update_cb cb, void *data);
-void mediadata_unset_updated_cb();
+ bool CreateMediaList(int source_type, int media);
+ void DestroyMediaList(void);
-/*
-void mediadata_usb_set_connected_cb(usb_connected_cb cb, void *data);
-void mediadata_usb_unset_connected_cb();
-int mediadata_connected_usb();
-*/
-const struct imagedata *mediadata_get_image_info(struct mediadata *md);
-const struct videodata *mediadata_get_video_info(struct mediadata *md);
-
-const char *folderdata_get_name(struct folderdata *fd);
-time_t folderdata_get_modifiedtime(struct folderdata *fd);
-Eina_List *folderdata_get_listinfo(struct folderdata *fd);
-
-int mediadata_update_to_db(struct mediadata *md);
-
-time_t mediadata_get_time_t(struct mediadata *md);
+ Eina_List *MediaList(void);
+ Eina_List *EventList(void);
+ Eina_List *FolderList(void);
+};
#endif
--- /dev/null
+/*
+ * Copyright (c) 2014 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+*/
+
+#ifndef __MEDIAINFO_H__
+#define __MEDIAINFO_H__
+
+class CMediaInfo : public CExtNameInfo {
+private:
+ struct SMediaInfo *m;
+
+public:
+ CMediaInfo() : m(0) {};
+ virtual ~CMediaInfo() {};
+
+ bool Create(void);
+ virtual void Destroy(void);
+
+ char *LocationTag(void);
+ time_t CreatedTime(void);
+ time_t Time(void);
+ int Source(void);
+
+ bool SetLocationTag(const char *location_tag);
+ bool SetCreatedTime(time_t created_time);
+ bool SetSource(int source);
+
+ bool Duplicate(CNameInfo *obj);
+};
+
+#endif
--- /dev/null
+/*
+ * Copyright (c) 2014 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+*/
+
+#ifndef __VIDEOINFO_H__
+#define __VIDEOINFO_H__
+
+class CVideoInfo : public CMediaInfo {
+private:
+ struct SVideoInfo *m;
+
+public:
+ CVideoInfo() : m(0) {};
+ virtual ~CVideoInfo() {};
+
+ bool Create(void);
+ virtual void Destroy(void);
+
+ int Duration(void);
+ int PlayedPosition(void);
+
+ bool SetDuration(int duration);
+ bool SetPlayedPosition(int played_position);
+
+ bool Duplicate(CNameInfo *obj);
+};
+
+#endif
#ifndef __UTIL_H__
#define __UTIL_H__
-
#include <dbg.h>
#include <define.h>
#include <stdbool.h>
#include <Elementary.h>
-
Evas_Object *util_ui_add_box(Evas_Object *base);
Evas_Object *util_ui_add_button(Evas_Object *base);
void util_ui_set_focus_directions(Evas_Object **btn, int itemcount, bool is_horizontal);
char *util_get_time_string(int ms);
Eina_List *util_create_media_list(Eina_List *media_list, int type);
-
#endif
static void _free_itemclass(Elm_Gengrid_Item_Class *ic);
static Elm_Gengrid_Item_Class *_get_itemclass(int type);
- static char *_get_mediadata_date(struct mediadata *md);
+ static char *_get_mediadata_date(CMediaInfo *minfo);
static void sm_CbGridActivated(void *cookie, Elm_Object_Item *it,
const char *emission, const char *source);
static void sm_CbAllLayoutSort(void *cookie, int sort);
static void sm_CbAllLayoutHide(void *cookie);
static void sm_CbGetSignalFromLayout(void *cookie, int sig);
+ static Eina_List *sm_CbGetMediaList(void *cookie);
private:
void m_DrawNotifyPopup(const char *text);
void m_SendResultToApp(const char *filepath);
void m_CreateCtxtMenu(void);
- Eina_List *m_SortList(Eina_List *list, int sort);
+ Eina_List *m_SortList(void);
Evas_Object *m_DrawGengrid(Evas_Object *layout);
bool m_DrawGengridItems(void);
Evas_Object *m_DrawGengrid(Evas_Object *layout);
bool m_DrawGengridItems(void);
+ Eina_List *m_SortList(void);
+
public:
CEventLayout(const char *pLayoutId) : CBaseLayout(pLayoutId),
IKeyDownListener(this), IMouseMoveListener(this),
void SetFocusCallback(void (*cb)(void *cookie), void *cookie);
void SetSortCallback(void (*cb)(void *cookie, int sort), void *cookie);
void SetSendSigCallback(void(*cb)(void *cookie, int sig), void *cookie);
+ void SetMediaListCallback(Eina_List *(*cb)(void *cookie), void *cookie);
void DirectLaunch(const char *id);
void Focus(void);
Evas_Object *m_DrawGengrid(Evas_Object *layout);
bool m_DrawGengridItems(void);
+ Eina_List *m_SortList(void);
+
public:
CFolderLayout(const char *pLayoutId) : CBaseLayout(pLayoutId),
IKeyDownListener(this), IMouseMoveListener(this),
void SetFocusCallback(void (*cb)(void *cookie), void *cookie);
void SetSortCallback(void (*cb)(void *cookie, int sort), void *cookie);
void SetSendSigCallback(void(*cb)(void *cookie, int sig), void *cookie);
+ void SetMediaListCallback(Eina_List *(*cb)(void *cookie), void *cookie);
void DirectLaunch(const char *id);
void Focus(void);
const char *style, int selected_index,
int position_x, int position_y);
void m_DestroyCtxpopup(void);
- bool m_DrawContentArea(struct mediadata *md);
- bool m_DrawTopArea(struct mediadata *md);
+ bool m_DrawContentArea(CMediaInfo *minfo);
+ bool m_DrawTopArea(CMediaInfo *minfo);
bool m_DrawBottomArea(void);
bool m_DrawItems(void);
void m_HandleZoomFunction(const char *btn_id);
#define __ZOOM_VIEW_H__
struct zoom_data {
- struct mediadata *md;
+ CMediaInfo *minfo;
int zoom_level;
};
struct view_data {
Eina_List *media_list;
- struct mediadata *md;
+ CMediaInfo *minfo;
};
#endif
"LAYOUT_EVENT",
"LAYOUT_FOLDER"
};
+
+const char *sort_id[MAX_SORT_ID] = {
+ "SORT_BY_DATE_DES",
+ "SORT_BY_DATE_ASC",
+ "SORT_BY_NAME_AZ",
+ "SORT_BY_NAME_ZA"
+};
+++ /dev/null
-/*
- * Copyright (c) 2014 Samsung Electronics Co., Ltd All Rights Reserved
- *
- * Licensed under the Apache License, Version 2.0 (the License);
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-*/
-
-#include <Elementary.h>
-#include <Eina.h>
-#include "eventdata.h"
-#include "util.h"
-
-struct eventdata {
- int type;
- union {
- struct {
- char *event_name;
- time_t event_time;
- Eina_List *media_list;
- };
- struct mediadata *md;
- };
-};
-
-void eventdata_destroy_list(Eina_List *events_list)
-{
- struct eventdata *event_info;
- void *obj;
-
- if (!events_list)
- return;
-
- EINA_LIST_FREE(events_list, obj) {
- event_info = (struct eventdata *)obj;
-
- if (event_info->type == E_TYPE_EVENT_INFO)
- free(event_info->event_name);
- free(event_info);
- }
-}
-
-static int _compare_cb_asc(const void *data1,
- const void *data2)
-{
- const struct eventdata *e1;
- const struct eventdata *e2;
-
- if (!data1 || !data2)
- return -1;
-
- e1 = (struct eventdata *)data1;
- e2 = (struct eventdata *)data2;
-
- if (e2->event_time < e1->event_time)
- return 1;
-
- return -1;
-}
-
-static int _compare_cb_desc(const void *data1,
- const void *data2)
-{
- const struct eventdata *e1;
- const struct eventdata *e2;
-
- if (!data1 || !data2)
- return -1;
-
- e1 = (struct eventdata *)data1;
- e2 = (struct eventdata *)data2;
-
- if (e2->event_time > e1->event_time)
- return 1;
-
- return -1;
-}
-
-static int _compare_cb_a_z(const void *data1,
- const void *data2)
-{
- const struct eventdata *e1;
- const struct eventdata *e2;
-
- if (!data1 || !data2)
- return -1;
-
- e1 = (struct eventdata *)data1;
- e2 = (struct eventdata *)data2;
-
- if (!e1->event_name || !e2->event_name)
- return -1;
-
- return strcasecmp(e1->event_name, e2->event_name);
-}
-
-static int _compare_cb_z_a(const void *data1,
- const void *data2)
-{
- const struct eventdata *e1;
- const struct eventdata *e2;
-
- if (!data1 || !data2)
- return -1;
-
- e1 = (struct eventdata *)data1;
- e2 = (struct eventdata *)data2;
-
- if (!e1->event_name || !e2->event_name)
- return -1;
-
- return strcasecmp(e2->event_name, e1->event_name);
-}
-
-Eina_List *eventdata_create_list(Eina_List *mediafiles_list, int sort)
-{
- struct mediadata *md;
- Eina_List *l1, *l2;
- Eina_List *events_list = NULL;
- Eina_List *events_list1 = NULL;
- Eina_List *events_list2 = NULL;
- char *date_taken;
- struct eventdata *event_info;
- bool bevent_found;
- time_t timeval;
- struct tm tm;
- char buf[32];
- void *obj, *obj2;
- Eina_Compare_Cb _compare_cb_func[] = {
- _compare_cb_desc,
- _compare_cb_asc,
- _compare_cb_a_z,
- _compare_cb_z_a
- };
-
- if (!mediafiles_list)
- return NULL;
-
- EINA_LIST_FOREACH(mediafiles_list, l1, obj) {
- md = (struct mediadata *)obj;
-
- date_taken = NULL;
- timeval = mediadata_get_createdtime(md);
- if (timeval > 0) {
- localtime_r(&timeval, &tm);
- strftime(buf, sizeof(buf), "%Y.%m.%d", &tm);
- date_taken = strdup(buf);
- } else {
- timeval = mediadata_get_modifiedtime(md);
- if (timeval > 0) {
- localtime_r(&timeval, &tm);
- strftime(buf, sizeof(buf), "%Y.%m.%d", &tm);
- date_taken = strdup(buf);
- }
- }
-
- if (!date_taken) {
-
- event_info = (struct eventdata *)calloc(
- 1, sizeof(*event_info));
- if (!event_info)
- goto error;
-
- event_info->type = E_TYPE_EVENT_NO_INFO;
- event_info->md = md;
- events_list1 = eina_list_append(
- events_list1, event_info);
-
- } else {
-
- bevent_found = false;
- EINA_LIST_FOREACH(events_list2, l2, obj2) {
- event_info = (struct eventdata *)obj2;
-
- if (!strcmp(event_info->event_name,
- date_taken)) {
- event_info->media_list =
- eina_list_append(
- event_info->media_list,
- md);
- bevent_found = true;
- break;
- }
- }
-
- if (!bevent_found) {
- event_info = (struct eventdata *)calloc(
- 1, sizeof(*event_info));
- if (!event_info)
- goto error;
-
- event_info->type = E_TYPE_EVENT_INFO;
- event_info->event_name = strdup(date_taken);
- event_info->event_time = timeval;
- event_info->media_list = eina_list_append(
- event_info->media_list, md);
- events_list2 = eina_list_append(
- events_list2, event_info);
- }
- free(date_taken);
- }
- }
-
- if (events_list2 && sort < E_SORT_MAX)
- events_list2 = eina_list_sort(events_list2,
- 0, _compare_cb_func[sort]);
-
- if (!events_list1)
- events_list = events_list2;
- else if (!events_list2)
- events_list = events_list1;
- else
- events_list = eina_list_merge(events_list2, events_list1);
-
- return events_list;
-
-error:
- free(date_taken);
- eventdata_destroy_list(events_list1);
- eventdata_destroy_list(events_list2);
-
- return NULL;
-}
-
-
-int eventdata_get_type(struct eventdata *ed)
-{
- if (!ed)
- return -1;
-
- return ed->type;
-}
-
-struct mediadata *eventdata_get_mediadata(struct eventdata *ed)
-{
- if (!ed)
- return NULL;
-
- return ed->md;
-}
-
-Eina_List *eventdata_get_listinfo(struct eventdata *ed)
-{
- if (!ed)
- return NULL;
-
- return ed->media_list;
-}
-
-const char *eventdata_get_eventname(struct eventdata *ed)
-{
- if (!ed)
- return NULL;
-
- return ed->event_name;
-}
--- /dev/null
+/*
+ * Copyright (c) 2014 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+*/
+
+#include <Elementary.h>
+#include <Eina.h>
+#include <ExtNameInfo.h>
+#include "menudef.h"
+#include "mediainfo.h"
+#include "imageinfo.h"
+#include "videoinfo.h"
+#include "eventinfo.h"
+#include "util.h"
+
+struct SEventInfo {
+ Eina_List *medialist;
+};
+
+bool CEventInfo::Create(void)
+{
+ if (m)
+ return false;
+
+ m = new SEventInfo();
+ if (!m)
+ return false;
+
+ if (!CExtNameInfo::Create()) {
+ delete m;
+ m = NULL;
+ return false;
+ }
+
+ return true;
+}
+
+
+void CEventInfo::Destroy(void)
+{
+ if (!m)
+ return;
+
+ CExtNameInfo::Destroy();
+
+ m_DeleteMediaList();
+
+ delete m;
+
+ m = NULL;
+}
+
+void CEventInfo::m_DeleteMediaList(void)
+{
+ CMediaInfo *minfo;
+ void *obj;
+
+ minfo = NULL;
+ EINA_LIST_FREE(m->medialist, obj) {
+ minfo = (CMediaInfo *)obj;
+ minfo->Destroy();
+ delete minfo;
+ }
+
+ m->medialist = NULL;
+}
+
+CMediaInfo *CEventInfo::MediaInfo(void)
+{
+ CMediaInfo *minfo;
+
+ if (!m)
+ return NULL;
+
+ minfo = (CMediaInfo *)eina_list_data_get(m->medialist);
+ if (!minfo)
+ return NULL;
+
+ return minfo;
+}
+
+Eina_List *CEventInfo::MediaList(void)
+{
+ if (!m)
+ return NULL;
+
+ return m->medialist;
+}
+
+bool CEventInfo::SetMediaInfo(CMediaInfo *minfo)
+{
+ if (!m)
+ return false;
+
+ m->medialist = eina_list_append(m->medialist, minfo);
+
+ return true;
+}
+
+bool CEventInfo::SetMediaList(Eina_List *medialist)
+{
+ CMediaInfo *minfo, *nminfo;
+ Eina_List *l;
+ void *obj;
+
+ if (!m)
+ return false;
+
+ nminfo = NULL;
+ EINA_LIST_FOREACH(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);
+ }
+
+ return true;
+}
+
+bool CEventInfo::Duplicate(CNameInfo *obj)
+{
+ if (!m)
+ return false;
+
+ CEventInfo *dst = (CEventInfo *)obj;
+
+ if (!CExtNameInfo::Duplicate(obj))
+ return false;
+
+ if (!SetMediaList(dst->MediaList()))
+ return false;
+
+ return true;
+}
--- /dev/null
+/*
+ * Copyright (c) 2014 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+*/
+
+#include <Elementary.h>
+#include <Eina.h>
+#include <ExtNameInfo.h>
+#include "menudef.h"
+#include "folderinfo.h"
+#include "mediainfo.h"
+#include "imageinfo.h"
+#include "videoinfo.h"
+#include "util.h"
+
+struct SFolderInfo {
+ Eina_List *medialist;
+};
+
+bool CFolderInfo::Create(void)
+{
+ if (m)
+ return false;
+
+ m = new SFolderInfo();
+ if (!m) {
+ _ERR("FolderInfo Create Failed");
+ return false;
+ }
+
+ if (!CExtNameInfo::Create()) {
+ delete m;
+ m = NULL;
+ return false;
+ }
+
+ return true;
+}
+
+void CFolderInfo::Destroy(void)
+{
+ if (!m)
+ return;
+
+ CExtNameInfo::Destroy();
+
+ m_DeleteMediaList();
+
+ delete m;
+
+ m = NULL;
+}
+
+void CFolderInfo::m_DeleteMediaList(void)
+{
+ CMediaInfo *minfo;
+ void *obj;
+
+ minfo = NULL;
+ EINA_LIST_FREE(m->medialist, obj) {
+ minfo = (CMediaInfo *)obj;
+ minfo->Destroy();
+ delete minfo;
+ }
+
+ m->medialist = NULL;
+}
+
+Eina_List *CFolderInfo::MediaList(void)
+{
+ if (!m)
+ return NULL;
+
+ return m->medialist;
+}
+
+bool CFolderInfo::SetMediaList(Eina_List *medialist)
+{
+ CMediaInfo *minfo, *nminfo;
+ Eina_List *l;
+ void *obj;
+
+ if (!m)
+ return false;
+
+ nminfo = NULL;
+ EINA_LIST_FOREACH(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);
+ }
+
+ return true;
+}
+
+bool CFolderInfo::Duplicate(CNameInfo *obj)
+{
+ if (!m)
+ return false;
+
+ CFolderInfo *dst = (CFolderInfo *)obj;
+
+ if (!CExtNameInfo::Duplicate(obj))
+ return false;
+
+ if (!SetMediaList(dst->MediaList()))
+ return false;
+
+ return true;
+}
+++ /dev/null
-/*
- * Copyright (c) 2014 Samsung Electronics Co., Ltd All Rights Reserved
- *
- * Licensed under the Apache License, Version 2.0 (the License);
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-*/
-
-#include <Elementary.h>
-#include <Eina.h>
-#include "imagedata.h"
-#include "util.h"
-
-struct imagedata {
- int width;
- int height;
- int orientation;
- int iso;
- char *model;
-};
-
-void imagedata_destroy(struct imagedata *image_info)
-{
- if (!image_info)
- return;
-
- free(image_info);
-}
-
-struct imagedata *imagedata_create(media_info_h media_h)
-{
- int ret;
- struct imagedata *image_info;
- image_meta_h image_h = NULL;
-
- if (!media_h)
- return false;
-
- image_info = (struct imagedata *)calloc(1, sizeof(*image_info));
- if (!image_info)
- return NULL;
-
- ret = media_info_get_image(media_h, &image_h);
- if (ret != MEDIA_CONTENT_ERROR_NONE || !image_h) {
- _ERR("Media image handle fetch error");
- goto error;
- }
-
- if (image_meta_get_orientation(image_h,
- (media_content_orientation_e *)&(
- image_info->orientation)) !=
- MEDIA_CONTENT_ERROR_NONE) {
- _ERR("Image meta get orientation error");
- goto error;
- }
-
- if (image_meta_get_width(image_h, &(image_info->width)) !=
- MEDIA_CONTENT_ERROR_NONE) {
- _ERR("Image meta get width error");
- goto error;
- }
-
- if (image_meta_get_height(image_h, &(image_info->height)) !=
- MEDIA_CONTENT_ERROR_NONE) {
- _ERR("Image meta get height error");
- goto error;
- }
-
-#if 0
- if (image_meta_get_iso(image_h, &(image_info->iso)) !=
- MEDIA_CONTENT_ERROR_NONE) {
- _ERR("Image meta get iso error");
- goto error;
- }
-
- if (image_meta_get_model(image_h, &(image_info->model)) !=
- MEDIA_CONTENT_ERROR_NONE) {
- _ERR("Image meta get model error");
- goto error;
- }
-#endif
-
- if (image_meta_destroy(image_h) != MEDIA_CONTENT_ERROR_NONE) {
- _ERR("Image meta destroy error");
- goto error;
- }
-
- return image_info;
-
-error:
- image_meta_destroy(image_h);
- imagedata_destroy(image_info);
-
- return NULL;
-}
-
-int imagedata_get_width(const struct imagedata *image_info)
-{
- if (!image_info)
- return -1;
-
- return image_info->width;
-}
-
-int imagedata_get_height(const struct imagedata *image_info)
-{
- if (!image_info)
- return -1;
-
- return image_info->height;
-}
-
-int imagedata_get_orientation(const struct imagedata *image_info)
-{
- if (!image_info)
- return -1;
-
- return image_info->orientation;
-}
-
-int imagedata_get_iso(const struct imagedata *image_info)
-{
- if (!image_info)
- return -1;
-
- return image_info->iso;
-}
-
-const char *imagedata_get_model(const struct imagedata *image_info)
-{
- if (!image_info)
- return NULL;
-
- return image_info->model;
-}
--- /dev/null
+/*
+ * Copyright (c) 2014 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+*/
+
+#include <Elementary.h>
+#include <Eina.h>
+#include <media_content.h>
+#include <ExtNameInfo.h>
+#include "mediainfo.h"
+#include "imageinfo.h"
+#include "util.h"
+
+struct SImageInfo {
+ int width;
+ int height;
+ int orientation;
+};
+
+bool CImageInfo::Create(void)
+{
+ if (m)
+ return false;
+
+ m = new SImageInfo();
+ if (!m) {
+ _ERR("ImageInfo Create Failed");
+ return false;
+ }
+
+ if (!CMediaInfo::Create()) {
+ delete m;
+ m = NULL;
+ return false;
+ }
+
+ return true;
+}
+
+void CImageInfo::Destroy(void)
+{
+ if (!m)
+ return;
+
+ CMediaInfo::Destroy();
+
+ delete m;
+
+ m = NULL;
+}
+
+int CImageInfo::Width(void)
+{
+ if (!m)
+ return -1;
+
+ return m->width;
+}
+
+int CImageInfo::Height(void)
+{
+ if (!m)
+ return -1;
+
+ return m->height;
+}
+
+int CImageInfo::Orientation(void)
+{
+ if (!m)
+ return -1;
+
+ return m->orientation;
+}
+
+bool CImageInfo::SetWidth(int width)
+{
+ if (!m)
+ return false;
+
+ m->width = width;
+
+ return true;
+}
+
+bool CImageInfo::SetHeight(int height)
+{
+ if (!m)
+ return false;
+
+ m->height = height;
+
+ return true;
+}
+
+bool CImageInfo::SetOrientation(int orientation)
+{
+ if (!m)
+ return false;
+
+ m->orientation = orientation;
+
+ return true;
+}
+
+bool CImageInfo::Duplicate(CNameInfo *obj)
+{
+ if (!m)
+ return false;
+
+ CImageInfo *dst = (CImageInfo *)obj;
+
+ if (!CMediaInfo::Duplicate(obj))
+ return false;
+
+ if (!SetWidth(dst->Width()))
+ return false;
+ if (!SetHeight(dst->Height()))
+ return false;
+ if (!SetOrientation(dst->Orientation()))
+ return false;
+
+ return true;
+}
#include <Elementary.h>
#include <Eina.h>
-#include <mediadata.h>
+#include <media_content.h>
+#include <ExtNameInfo.h>
+#include "define.h"
+#include "mediainfo.h"
+#include "eventinfo.h"
+#include "folderinfo.h"
+#include "imageinfo.h"
+#include "videoinfo.h"
+#include "mediadata.h"
+#include "menudef.h"
#include "util.h"
#define MEDIA_CONDITION_IMAGE_VIDEO "(MEDIA_TYPE=0 OR MEDIA_TYPE=1)"
#define MEDIA_CONDITION_IMAGE "(MEDIA_TYPE=0)"
#define MEDIA_CONDITION_VIDEO "(MEDIA_TYPE=1)"
-struct mediadata {
- media_info_h media_h;
-
- char *display_name;
- char *media_id;
- int type;
- unsigned long long size;
- char *thumbnail_path;
- char *file_path;
- char *location_tag;
- time_t last_modified_time;
- time_t created_time;
- int source;
-
- char *folder_uuid;
- union {
- struct imagedata *image_info;
- struct videodata *video_info;
- };
-};
-
-struct folderdata {
- char *folder_name;
- time_t folder_modified_time;
- Eina_List *list;
-};
-
-struct _data {
+struct SMediadata {
filter_h filter;
- Eina_List *item_list;
- Eina_List *folder_list;
+ Eina_List *folderlist;
+ Eina_List *folder_medialist;
+ Eina_List *eventlist;
+ Eina_List *medialist;
int media;
int source_type;
};
E_FILTER_TYPE_NONE
};
-int mediadata_init(void)
+enum {
+ E_TYPE_MEDIA = 0,
+ E_TYPE_FOLDER_MEDIA
+};
+
+void CMediadata::m_DeleteFolderList(void)
{
- int ret = -1;
+ CFolderInfo *finfo;
+ void *obj;
- if (g_ref_count > 0) {
- g_ref_count++;
- return -1;
+ finfo = NULL;
+ EINA_LIST_FREE(m->folderlist, obj) {
+ finfo = (CFolderInfo *)obj;
+ finfo->Destroy();
+ delete finfo;
}
-#if 0
- usb_device_init();
-#endif
- ret = media_content_connect();
- if (ret != MEDIA_CONTENT_ERROR_NONE) {
- _ERR("Media Content Connect Failed");
- return -1;
- }
+ m->folderlist = NULL;
+}
- g_ref_count++;
+void CMediadata::m_DeleteEventList(void)
+{
+ CEventInfo *einfo;
+ void *obj;
+
+ einfo = NULL;
+ EINA_LIST_FREE(m->eventlist, obj) {
+ einfo = (CEventInfo *)obj;
+ einfo->Destroy();
+ delete einfo;
+ }
- return 0;
+ m->eventlist = NULL;
}
-int mediadata_fini(void)
+void CMediadata::m_DeleteMediaList(int type)
{
- int ret = -1;
-
- if (g_ref_count <= 0)
- return -1;
+ CMediaInfo *minfo;
+ Eina_List *medialist;
+ void *obj;
- g_ref_count--;
+ if (type == E_TYPE_MEDIA)
+ medialist = m->medialist;
+ else if (type == E_TYPE_FOLDER_MEDIA)
+ medialist = m->folder_medialist;
+ else {
+ _ERR("Wrong MediaInfo Type");
+ return;
+ }
- if (g_ref_count == 0) {
-#if 0
- usb_device_fini();
-#endif
- ret = media_content_disconnect();
- if (ret != MEDIA_CONTENT_ERROR_NONE) {
- _ERR("Media Content Connect Failed");
- return -1;
- }
+ minfo = NULL;
+ EINA_LIST_FREE(medialist, obj) {
+ minfo = (CMediaInfo *)obj;
+ minfo->Destroy();
+ delete minfo;
}
- return 0;
+ medialist = NULL;
+}
+
+void CMediadata::DestroyMediaList(void)
+{
+ if (m->folderlist)
+ m_DeleteFolderList();
+
+ if (m->eventlist)
+ m_DeleteEventList();
+
+ if (m->medialist)
+ m_DeleteMediaList(E_TYPE_MEDIA);
+
+ if (m->folder_medialist)
+ m_DeleteMediaList(E_TYPE_FOLDER_MEDIA);
}
-static int _create_filter(filter_h *filter,
- int source_type, int type, int media)
+bool CMediadata::m_CreateFilter(filter_h *filter, int type)
{
filter_h tmp_filter;
media_content_order_e order;
int ret = media_filter_create(&tmp_filter);
if (ret != MEDIA_CONTENT_ERROR_NONE) {
_ERR("Media Filter Creation Failed");
- return -1;
+ return false;
}
- if (media == E_MEDIA_IMAGE)
+ if (m->media == E_MEDIA_IMAGE)
mediatype = MEDIA_CONDITION_IMAGE;
- else if (media == E_MEDIA_VIDEO)
+ else if (m->media == E_MEDIA_VIDEO)
mediatype = MEDIA_CONDITION_VIDEO;
else
mediatype = MEDIA_CONDITION_IMAGE_VIDEO;
- switch (source_type) {
-
+ switch (m->source_type) {
case E_SOURCE_TV:
snprintf(buf, sizeof(buf), "%s AND (MEDIA_STORAGE_TYPE=0)",
- mediatype);
+ mediatype);
break;
case E_SOURCE_USB:
snprintf(buf, sizeof(buf), "%s AND (MEDIA_STORAGE_TYPE=1)",
- mediatype);
+ mediatype);
break;
case E_SOURCE_ALL:
if (type == E_FILTER_TYPE_FOLDER) {
media_filter_set_condition(tmp_filter, buf,
- MEDIA_CONTENT_COLLATE_DEFAULT);
- } else {
+ MEDIA_CONTENT_COLLATE_DEFAULT);
+ }
+ else {
media_filter_set_condition(tmp_filter,
- mediatype,
- MEDIA_CONTENT_COLLATE_DEFAULT);
+ mediatype,
+ MEDIA_CONTENT_COLLATE_DEFAULT);
}
order = MEDIA_CONTENT_ORDER_DESC;
keyword = MEDIA_MODIFIED_TIME;
media_filter_set_order(tmp_filter, order,
- keyword, MEDIA_CONTENT_COLLATE_NOCASE);
+ keyword, MEDIA_CONTENT_COLLATE_NOCASE);
+
*filter = tmp_filter;
- return 0;
+ return true;
}
-static int _destroy_filter(filter_h filter)
+bool CMediadata::m_DestroyFilter(filter_h filter)
{
- if (!filter)
- return -1;
-
if (media_filter_destroy(filter) != MEDIA_CONTENT_ERROR_NONE) {
_ERR("Filter destroy failed");
- return -1;
+ return false;
}
- return 0;
+ return true;
+}
+
+void CMediadata::m_GetMediaList(void)
+{
+ CFolderInfo *finfo;
+ CMediaInfo *minfo;
+ Eina_List *l1, *l2;
+ Eina_List *medialist;
+ void *obj, *obj2;
+
+ 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);
+ }
+ }
}
-static void _free_mediadata_item(struct mediadata *md)
+void CMediadata::m_GetEventList(void)
{
- if (!md)
- return;
+ CEventInfo *einfo;
+ CMediaInfo *minfo;
+ Eina_List *l1, *l2;
+ Eina_List *eventlist;
+ char *date_taken;
+ bool bevent_found;
+ time_t timeval;
+ struct tm tm;
+ char buf[32];
+ void *obj, *obj2;
- if (md->media_h)
- media_info_destroy(md->media_h);
+ eventlist = NULL;
+ date_taken = NULL;
+ EINA_LIST_FOREACH(m->medialist, l1, obj) {
+ minfo = (CMediaInfo *)obj;
+
+ date_taken = NULL;
+ timeval = minfo->Time();
+ if (timeval > 0) {
+ localtime_r(&timeval, &tm);
+ strftime(buf, sizeof(buf), "%Y.%m.%d", &tm);
+ date_taken = strdup(buf);
+ }
- free(md->display_name);
- free(md->media_id);
- free(md->thumbnail_path);
- free(md->file_path);
- free(md->location_tag);
+ if (!date_taken) {
+ einfo = new CEventInfo;
+ einfo->Create();
+ if (!einfo)
+ goto error;
- if (md->type == MEDIA_CONTENT_TYPE_IMAGE)
- imagedata_destroy(md->image_info);
- else if (md->type == MEDIA_CONTENT_TYPE_VIDEO)
- videodata_destroy(md->video_info);
+ einfo->SetType(E_TYPE_EVENT_NO_INFO);
+ einfo->SetName(NULL);
+ einfo->SetModifiedTime(0);
+ einfo->SetMediaInfo(minfo);
- free(md);
+ eventlist = eina_list_append(eventlist, einfo);
+ }
+ else {
+ bevent_found = false;
+ EINA_LIST_FOREACH(eventlist, l2, obj2) {
+ einfo = (CEventInfo *)obj2;
+
+ if (!strcmp(einfo->Name(), date_taken)) {
+ einfo->SetMediaInfo(minfo);
+ bevent_found = true;
+ break;
+ }
+ }
+
+ if (!bevent_found) {
+ einfo = new CEventInfo;
+ einfo->Create();
+ if (!einfo)
+ goto error;
+
+ einfo->SetType(E_TYPE_EVENT_INFO);
+ einfo->SetName(date_taken);
+ einfo->SetModifiedTime(timeval);
+ einfo->SetMediaInfo(minfo);
+
+ eventlist = eina_list_append(eventlist, einfo);
+ }
+ free(date_taken);
+ }
+ }
+
+ m->eventlist = eventlist;
+
+ return;
+
+error:
+ free(date_taken);
+ m_DeleteEventList();
}
-static inline void _free_mediadata_list(Eina_List *list)
+bool CMediadata::m_HandleEachImageInfo(media_info_h media_h, CMediaInfo *minfo)
{
- void *obj;
- struct mediadata *md;
- EINA_LIST_FREE(list, obj) {
- md = (struct mediadata *)obj;
- _free_mediadata_item(md);
+ int val;
+ image_meta_h image_h;
+
+ if (media_info_get_image(media_h, &image_h) !=
+ MEDIA_CONTENT_ERROR_NONE) {
+ _ERR("Media Image Handle Fetch Error");
+ return false;
+ }
+
+ if (image_meta_get_width(image_h, &val) !=
+ MEDIA_CONTENT_ERROR_NONE) {
+ _ERR("Image meta get width error");
+ return false;
+ }
+ ((CImageInfo *)minfo)->SetWidth(val);
+
+ if (image_meta_get_height(image_h, &val) !=
+ MEDIA_CONTENT_ERROR_NONE) {
+ _ERR("Image meta get height error");
+ return false;
+ }
+ ((CImageInfo *)minfo)->SetHeight(val);
+
+ if (image_meta_get_orientation(image_h,
+ (media_content_orientation_e *)&val) !=
+ MEDIA_CONTENT_ERROR_NONE) {
+ _ERR("Image meta get orientation error");
+ return false;
}
+ ((CImageInfo *)minfo)->SetOrientation(val);
+
+ if (image_meta_destroy(image_h) != MEDIA_CONTENT_ERROR_NONE) {
+ _ERR("Image meta destroy error");
+ return false;
+ }
+
+ return true;
}
-static bool _get_each_media_info(media_info_h media_h, void *dt)
+bool CMediadata::m_HandleEachVideoInfo(media_info_h media_h, CMediaInfo *minfo)
{
- struct _data *data;
- struct mediadata *md;
+ int val;
+ video_meta_h video_h;
- if (!dt)
- return false;;
+ if (media_info_get_video(media_h, &video_h) !=
+ MEDIA_CONTENT_ERROR_NONE || !video_h) {
+ _ERR("Media video handle fetch error");
+ return false;
+ }
- data = (struct _data *)dt;
+ if (video_meta_get_duration(video_h, &val) !=
+ MEDIA_CONTENT_ERROR_NONE) {
+ _ERR("video meta get duration error");
+ return false;
+ }
+ ((CVideoInfo *)minfo)->SetDuration(val);
- md = (struct mediadata *)calloc(1, sizeof(*md));
- if (!md)
+ if (video_meta_get_played_position(video_h, &val) !=
+ MEDIA_CONTENT_ERROR_NONE) {
+ _ERR("video meta get played position error");
return false;
+ }
+ ((CVideoInfo *)minfo)->SetPlayedPosition(val);
- if (media_info_clone(&(md->media_h), media_h) !=
- MEDIA_CONTENT_ERROR_NONE) {
- _ERR("Media Clone error");
- goto error;
+ if (video_meta_destroy(video_h) != MEDIA_CONTENT_ERROR_NONE) {
+ _ERR("video meta destroy error");
+ return false;
}
- if (media_info_get_media_id(media_h, &(md->media_id)) !=
- MEDIA_CONTENT_ERROR_NONE) {
+ return true;
+}
+
+bool CMediadata::sm_CbEachMediaInfo(media_info_h media_h, void *dt)
+{
+ CMediadata *root = (CMediadata *)dt;
+
+ if (!root)
+ return false;
+
+ return root->m_HandleEachMediaInfo(media_h);
+}
+
+bool CMediadata::m_HandleEachMediaInfo(media_info_h media_h)
+{
+ CMediaInfo *minfo;
+ char *buf;
+ int val;
+ int type;
+
+ minfo = NULL;
+
+ if (media_info_get_media_type(media_h,
+ (media_content_type_e *)&type) !=
+ MEDIA_CONTENT_ERROR_NONE) {
+ _ERR("Media type Fetch error");
+ return false;
+ }
+
+ if (type == MEDIA_CONTENT_TYPE_IMAGE) {
+ minfo = new CImageInfo;
+ if (!minfo) {
+ _ERR("MediaInfo Create Failed");
+ return false;
+ }
+ ((CImageInfo *)minfo)->Create();
+
+ if (!m_HandleEachImageInfo(media_h, minfo))
+ goto error;
+ }
+ else if (type == MEDIA_CONTENT_TYPE_VIDEO) {
+ minfo = new CVideoInfo;
+ if (!minfo) {
+ _ERR("MediaInfo Create Failed");
+ return false;
+ }
+ ((CVideoInfo *)minfo)->Create();
+
+ if (!m_HandleEachVideoInfo(media_h, minfo))
+ goto error;
+ }
+
+ if (media_info_get_media_id(media_h, &buf) !=
+ MEDIA_CONTENT_ERROR_NONE) {
_ERR("Media ID Fetch error");
goto error;
}
+ minfo->SetId(buf);
- if (media_info_get_display_name(media_h, &(md->display_name)) !=
- MEDIA_CONTENT_ERROR_NONE) {
- _ERR("Media display name Fetch error");
+ if (media_info_get_display_name(media_h, &buf) !=
+ MEDIA_CONTENT_ERROR_NONE) {
+ _ERR("Media display nam))e Fetch error");
goto error;
}
+ minfo->SetName(buf);
- if (media_info_get_size(media_h, &(md->size)) !=
- MEDIA_CONTENT_ERROR_NONE) {
+ if (media_info_get_size(media_h, (unsigned long long *)&val) !=
+ MEDIA_CONTENT_ERROR_NONE) {
_ERR("Media size Fetch error");
goto error;
}
+ minfo->SetSize(val);
- if (media_info_get_file_path(media_h, &(md->file_path))
- != MEDIA_CONTENT_ERROR_NONE) {
+ if (media_info_get_file_path(media_h, &buf)
+ != MEDIA_CONTENT_ERROR_NONE) {
_ERR("Media file path Fetch error");
goto error;
}
+ minfo->SetPath(buf);
- if (media_info_get_media_type(media_h,
- (media_content_type_e *)&(md->type)) !=
- MEDIA_CONTENT_ERROR_NONE) {
- _ERR("Media type Fetch error");
- goto error;
- }
-
- if (media_info_get_thumbnail_path(media_h, &(md->thumbnail_path)) !=
- MEDIA_CONTENT_ERROR_NONE) {
+ if (media_info_get_thumbnail_path(media_h, &buf) !=
+ MEDIA_CONTENT_ERROR_NONE) {
_ERR("Media thumbnail path Fetch error");
goto error;
}
+ minfo->SetThumbnailPath(buf);
- if (media_info_get_modified_time(media_h, &(md->last_modified_time)) !=
- MEDIA_CONTENT_ERROR_NONE) {
+ if (media_info_get_modified_time(media_h, (time_t *)&val) !=
+ MEDIA_CONTENT_ERROR_NONE) {
_ERR("Media modified time Fetch error");
goto error;
}
+ minfo->SetModifiedTime(val);
- if (media_info_get_modified_time(media_h, &(md->created_time)) !=
- MEDIA_CONTENT_ERROR_NONE) {
+ if (media_info_get_modified_time(media_h, (time_t *)&val) !=
+ MEDIA_CONTENT_ERROR_NONE) {
_ERR("Media created time Fetch error");
goto error;
}
+ minfo->SetCreatedTime(val);
- if (media_info_get_location_tag(media_h, &(md->location_tag)) !=
- MEDIA_CONTENT_ERROR_NONE) {
+ if (media_info_get_location_tag(media_h, &buf) !=
+ MEDIA_CONTENT_ERROR_NONE) {
_ERR("Media location tag Fetch error");
goto error;
}
+ minfo->SetLocationTag(buf);
if (media_info_get_storage_type(media_h,
- (media_content_storage_e *)&(md->source)) !=
- MEDIA_CONTENT_ERROR_NONE) {
+ (media_content_storage_e *)&val) !=
+ MEDIA_CONTENT_ERROR_NONE) {
_ERR("Media location tag Fetch error");
goto error;
}
+ minfo->SetSource(val);
- /* Get Image and video specific information */
- if (md->type == MEDIA_CONTENT_TYPE_IMAGE) {
-
- md->image_info = imagedata_create(media_h);
- if (!md->image_info)
- goto error;
-
- } else if (md->type == MEDIA_CONTENT_TYPE_VIDEO) {
+ minfo->SetType(type);
- md->video_info = videodata_create(media_h);
- if (!md->video_info)
- goto error;
- }
-
- data->item_list = eina_list_append(data->item_list, md);
+ m->folder_medialist = eina_list_append(m->folder_medialist, minfo);
return true;
error:
_ERR("Erroring in reading mediadata");
- _free_mediadata_item(md);
+
+ if (type == MEDIA_CONTENT_TYPE_IMAGE)
+ ((CImageInfo *)minfo)->Destroy();
+ else if (type == MEDIA_CONTENT_TYPE_VIDEO)
+ ((CVideoInfo *)minfo)->Destroy();
+
+ delete minfo;
return false;
}
-static bool _get_each_folder_info(media_folder_h folder, void *dt)
+bool CMediadata::sm_CbEachFolderInfo(media_folder_h folder, void *dt)
+{
+ CMediadata *root = (CMediadata *)dt;
+
+ if (!root)
+ return false;
+
+ return root->m_HandleEachFolderInfo(folder);
+}
+
+bool CMediadata::m_HandleEachFolderInfo(media_folder_h folder)
{
+ CFolderInfo *finfo;
char *uuid;
+ char *buf;
+ int val;
int ret = -1;
- struct _data *data;
filter_h filter;
- struct folderdata *fd;
-
- if (!dt)
- return false;
- data = (struct _data *)dt;
+ finfo = new CFolderInfo;
- fd = (struct folderdata *)calloc(1, sizeof(*fd));
- if (!fd)
+ finfo->Create();
+ if (!finfo) {
+ _ERR("FolderInfo Create Failed");
return false;
+ }
uuid = NULL;
- _create_filter(&filter, data->source_type,
- E_FILTER_TYPE_NONE, data->media);
+ m_CreateFilter(&filter, E_FILTER_TYPE_NONE);
- if (media_folder_get_name(folder, &(fd->folder_name)) !=
- MEDIA_CONTENT_ERROR_NONE) {
+ if (media_folder_get_name(folder, &buf) !=
+ MEDIA_CONTENT_ERROR_NONE) {
_ERR("Media folder id Fetch error");
goto error;
}
+ finfo->SetName(buf);
- if (media_folder_get_modified_time(folder, &(fd->folder_modified_time))
- != MEDIA_CONTENT_ERROR_NONE) {
+ if (media_folder_get_modified_time(folder, (time_t *)&val)
+ != MEDIA_CONTENT_ERROR_NONE) {
_ERR("Media folder modified time Fetch error");
goto error;
}
+ finfo->SetModifiedTime(val);
if (media_folder_get_folder_id(folder, &uuid)
- != MEDIA_CONTENT_ERROR_NONE) {
+ != MEDIA_CONTENT_ERROR_NONE) {
_ERR("Media folder id Fetch error");
goto error;
}
ret = media_folder_foreach_media_from_db(uuid, filter,
- _get_each_media_info, data);
+ sm_CbEachMediaInfo, (void *)this);
if (ret != MEDIA_CONTENT_ERROR_NONE) {
if (ret == MEDIA_CONTENT_ERROR_DB_FAILED)
_ERR("MEDIA CONTENT ERROR DB FAILED");
goto error;
}
- fd->list = eina_list_clone(data->item_list);
- eina_list_free(data->item_list);
- data->item_list = NULL;
- data->folder_list = eina_list_append(data->folder_list, fd);
+ //fd->list = eina_list_clone(data->item_list);
+ finfo->SetMediaList(m->folder_medialist);
+ m_DeleteMediaList(E_TYPE_FOLDER_MEDIA);
- _destroy_filter(filter);
+ m->folderlist = eina_list_append(m->folderlist, finfo);
+
+ m_DestroyFilter(filter);
free(uuid);
return true;
error:
_ERR("Error in creating Media list");
- _destroy_filter(filter);
- free(fd);
+ m_DestroyFilter(filter);
+ finfo->Destroy();
+ delete finfo;
free(uuid);
- mediadata_destroy_mediafiles_list(data->folder_list);
+ DestroyMediaList();
return false;
}
-Eina_List *mediadata_create_mediafiles_list(
- int source_type, int media)
+bool CMediadata::Create(void)
{
- int ret = -1;
- struct _data *data;
- Eina_List *folder_list;
+ if (m)
+ return false;
- data = (struct _data *)calloc(1, sizeof(*data));
- if (!data)
- return NULL;
+ int ret;
- data->source_type = source_type;
- data->media = media;
+ m = new SMediadata();
+ if (!m) {
+ _ERR("m Create Failed");
+ return false;
+ }
- _create_filter(&data->filter,
- source_type, E_FILTER_TYPE_FOLDER, media);
+ if (g_ref_count > 0) {
+ g_ref_count++;
+ return false;
+ }
- ret = media_folder_foreach_folder_from_db(data->filter,
- _get_each_folder_info, data);
+ ret = media_content_connect();
if (ret != MEDIA_CONTENT_ERROR_NONE) {
- _ERR("Failed to read from folders");
- _destroy_filter(data->filter);
- free(data);
- return NULL;
+ _ERR("Media Content Connect Failed");
+ return false;
}
- _destroy_filter(data->filter);
- folder_list = eina_list_clone(data->folder_list);
-
- eina_list_free(data->folder_list);
- free(data);
-
- return folder_list;
-}
-
-void mediadata_destroy_mediafiles_list(Eina_List *list)
-{
- struct folderdata *fd;
- void *obj;
-
- if (!list)
- return;
-
- EINA_LIST_FREE(list, obj) {
- fd = (struct folderdata *)obj;
- free(fd->folder_name);
+ g_ref_count++;
- _free_mediadata_list(fd->list);
- fd->list = NULL;
- }
+ return true;
}
-#if 0
-void mediadata_usb_set_connected_cb(usb_connected_cb cb, void *data)
+void CMediadata::Destroy(void)
{
- if (!cb)
+ if (!m)
return;
- usb_set_connected_cb(cb, data);
-}
-
-void mediadata_usb_unset_connected_cb(void)
-{
- usb_unset_connected_cb();
-}
-
-int mediadata_connected_usb(void)
-{
- return usb_get_connected_device_number(USB_MASS_STORAGE);
-}
-#endif
+ int ret;
-void mediadata_set_updated_cb(media_content_db_update_cb cb, void *data)
-{
- if (!cb)
+ if (g_ref_count <= 0)
return;
- media_content_set_db_updated_cb(cb, data);
-}
-
-void mediadata_unset_updated_cb(void)
-{
- media_content_unset_db_updated_cb();
-}
-
-Eina_List *mediadata_get_filelist(Eina_List *list)
-{
- Eina_List *filelist = NULL;
- Eina_List *l1, *l2;
- struct folderdata *fd;
- struct mediadata *md;
- void *obj, *obj2;
+ g_ref_count--;
- if (!list)
- return NULL;
+ if (g_ref_count == 0) {
+ m_DeleteFolderList();
+ m_DeleteEventList();
+ m_DeleteMediaList(E_TYPE_MEDIA);
+ m_DeleteMediaList(E_TYPE_FOLDER_MEDIA);
- EINA_LIST_FOREACH(list, l1, obj) {
- fd = (struct folderdata *)obj;
- EINA_LIST_FOREACH(fd->list, l2, obj2) {
- md = (struct mediadata *)obj2;
- filelist = eina_list_append(filelist, md);
- }
+ ret = media_content_disconnect();
+ if (ret != MEDIA_CONTENT_ERROR_NONE)
+ _ERR("Media Content Connect Failed");
}
- return filelist;
-
-}
-
-const char *folderdata_get_name(struct folderdata *fd)
-{
- if (!fd)
- return NULL;
-
- return fd->folder_name;
-}
-
-time_t folderdata_get_modifiedtime(struct folderdata *fd)
-{
- if (!fd)
- return -1;
-
- return fd->folder_modified_time;
-}
-
-Eina_List *folderdata_get_listinfo(struct folderdata *fd)
-{
- if (!fd)
- return NULL;
-
- return fd->list;
+ delete m;
}
-const char *mediadata_get_displayname(struct mediadata *md)
+bool CMediadata::CreateMediaList(int source_type, int media)
{
- if (!md)
- return NULL;
+ int ret;
- return md->display_name;
-}
-
-const char *mediadata_get_mediaid(struct mediadata *md)
-{
- if (!md)
- return NULL;
+ m->source_type = source_type;
+ m->media = media;
- return md->media_id;
-}
+ m_CreateFilter(&m->filter, E_FILTER_TYPE_FOLDER);
-unsigned long long mediadata_get_size(struct mediadata *md)
-{
- if (!md)
- return -1;
+ ret = media_folder_foreach_folder_from_db(m->filter,
+ sm_CbEachFolderInfo, (void *)this);
+ if (ret != MEDIA_CONTENT_ERROR_NONE) {
+ _ERR("Failed to read from folders");
+ m_DestroyFilter(m->filter);
+ return false;
+ }
- return md->size;
-}
+ if (m->folderlist)
+ m_GetMediaList();
-const char *mediadata_get_thumbnailpath(struct mediadata *md)
-{
- if (!md)
- return NULL;
+ if (m->medialist)
+ m_GetEventList();
- return md->thumbnail_path;
-}
+ m_DestroyFilter(m->filter);
-const char *mediadata_get_filepath(struct mediadata *md)
-{
- if (!md)
- return NULL;
-
- return md->file_path;
+ return true;
}
-const char *mediadata_get_locationtag(struct mediadata *md)
+Eina_List *CMediadata::MediaList(void)
{
- if (!md)
+ if (!m)
return NULL;
- return md->location_tag;
-}
-
-int mediadata_get_type(struct mediadata *md)
-{
- if (!md)
- return -1;
-
- return md->type;
-}
-
-int mediadata_get_source(struct mediadata *md)
-{
- int source = E_SOURCE_TV;
-
- if (!md)
- return -1;
-
- if (md->source == MEDIA_CONTENT_STORAGE_INTERNAL)
- source = E_SOURCE_TV;
- else if (md->source == MEDIA_CONTENT_STORAGE_EXTERNAL)
- source = E_SOURCE_USB;
-
- return source;
-}
-
-time_t mediadata_get_modifiedtime(struct mediadata *md)
-{
- if (!md)
- return -1;
-
- return md->last_modified_time;
+ return m->medialist;
}
-time_t mediadata_get_createdtime(struct mediadata *md)
+Eina_List *CMediadata::EventList(void)
{
- if (!md)
- return -1;
-
- return md->created_time;
-}
-
-const struct imagedata *mediadata_get_image_info(struct mediadata *md)
-{
- if (!md)
+ if (!m)
return NULL;
- return md->image_info;
+ return m->eventlist;
}
-const struct videodata *mediadata_get_video_info(struct mediadata *md)
+Eina_List *CMediadata::FolderList(void)
{
- if (!md)
+ if (!m)
return NULL;
- return md->video_info;
-}
-
-int mediadata_update_to_db(struct mediadata *md)
-{
- if (!md)
- return -1;
-
- return media_info_update_to_db(md->media_h);
-}
-
-time_t mediadata_get_time_t(struct mediadata *md)
-{
- time_t timeval;
-
- if (!md)
- return -1;
-
- timeval = mediadata_get_createdtime(md);
- if (timeval < 0)
- timeval = mediadata_get_modifiedtime(md);
-
- return timeval;
+ return m->folderlist;
}
--- /dev/null
+/*
+ * Copyright (c) 2014 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+*/
+
+#include <Elementary.h>
+#include <Eina.h>
+#include <media_content_type.h>
+#include <ExtNameInfo.h>
+#include "mediainfo.h"
+#include "menudef.h"
+#include "util.h"
+
+struct SMediaInfo {
+ char *location_tag;
+ time_t created_time;
+ int source;
+};
+
+bool CMediaInfo::Create(void)
+{
+ if (m)
+ return false;
+
+ m = new SMediaInfo();
+ if (!m) {
+ _ERR("MediaInfo Create Failed");
+ return false;
+ }
+
+ if (!CExtNameInfo::Create()) {
+ delete m;
+ m = NULL;
+ return false;
+ }
+
+ return true;
+}
+
+void CMediaInfo::Destroy(void)
+{
+ if (!m)
+ return;
+
+ CExtNameInfo::Destroy();
+
+ delete[] m->location_tag;
+ delete m;
+
+ m = NULL;
+}
+
+char *CMediaInfo::LocationTag(void)
+{
+ if (!m)
+ return NULL;
+
+ return m->location_tag;
+}
+
+time_t CMediaInfo::CreatedTime(void)
+{
+ if (!m)
+ return -1;
+
+ return m->created_time;
+}
+
+time_t CMediaInfo::Time(void)
+{
+ time_t timeval;
+
+ if (!m)
+ return -1;
+
+ timeval = CreatedTime();
+ if (timeval < 0)
+ timeval = ModifiedTime();
+
+ return timeval;
+}
+
+int CMediaInfo::Source(void)
+{
+ int source = E_SOURCE_TV;
+
+ if (!m)
+ return -1;
+
+ if (m->source == MEDIA_CONTENT_STORAGE_INTERNAL)
+ source = E_SOURCE_TV;
+ else if (m->source == MEDIA_CONTENT_STORAGE_EXTERNAL)
+ source = E_SOURCE_USB;
+
+ return source;
+}
+
+bool CMediaInfo::SetLocationTag(const char *location_tag)
+{
+ if (!m)
+ return false;
+
+ delete[] m->location_tag;
+ m->location_tag = NULL;
+
+ if (location_tag) {
+ m->location_tag = t_Clone(location_tag);
+ if (!m->location_tag)
+ return false;
+ }
+
+ return true;
+}
+
+bool CMediaInfo::SetCreatedTime(time_t created_time)
+{
+ if (!m)
+ return false;
+
+ m->created_time = created_time;
+
+ return true;
+}
+
+bool CMediaInfo::SetSource(int source)
+{
+ if (!m)
+ return false;
+
+ m->source = source;
+
+ return true;
+}
+
+bool CMediaInfo::Duplicate(CNameInfo *obj)
+{
+ if (!m)
+ return false;
+
+ CMediaInfo *dst = (CMediaInfo *)obj;
+
+ if (!CExtNameInfo::Duplicate(obj))
+ return false;
+
+ if (!SetLocationTag(dst->LocationTag()))
+ return false;
+ if (!SetCreatedTime(dst->CreatedTime()))
+ return false;
+ if (!SetSource(dst->Source()))
+ return false;
+
+ return true;
+}
+++ /dev/null
-/*
- * Copyright (c) 2014 Samsung Electronics Co., Ltd All Rights Reserved
- *
- * Licensed under the Apache License, Version 2.0 (the License);
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-*/
-
-#include <Elementary.h>
-#include <Eina.h>
-#include "videodata.h"
-#include "util.h"
-
-struct videodata {
- int duration;
- int played_position;
-};
-
-void videodata_destroy(struct videodata *video_info)
-{
- free(video_info);
-}
-
-struct videodata *videodata_create(media_info_h media_h)
-{
- int ret;
- struct videodata *video_info = NULL;
- video_meta_h video_h = NULL;
-
- if (!media_h)
- return NULL;
-
- ret = media_info_get_video(media_h, &video_h);
- if (ret != MEDIA_CONTENT_ERROR_NONE || !video_h) {
- _ERR("Media video handle fetch error");
- goto error;
- }
-
- video_info = (struct videodata *)calloc(1, sizeof(*video_info));
- if (!video_info)
- goto error;
-
- if (video_meta_get_duration(video_h, &(video_info->duration)) !=
- MEDIA_CONTENT_ERROR_NONE) {
- _ERR("video meta get duration error");
- goto error;
- }
-
- if (video_meta_get_played_position(video_h,
- &(video_info->played_position)) !=
- MEDIA_CONTENT_ERROR_NONE) {
- _ERR("video meta get played position error");
- goto error;
- }
-
- if (video_meta_destroy(video_h) != MEDIA_CONTENT_ERROR_NONE) {
- _ERR("video meta destroy error");
- goto error;
- }
-
- return video_info;
-
-error:
- video_meta_destroy(video_h);
- videodata_destroy(video_info);
-
- return NULL;
-}
-
-int videodata_get_duration(const struct videodata *video_info)
-{
- if (!video_info)
- return -1;
-
- return video_info->duration;
-}
-
-int videodata_get_played_position(const struct videodata *video_info)
-{
- if (!video_info)
- return -1;
-
- return video_info->played_position;
-}
--- /dev/null
+/*
+ * Copyright (c) 2014 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+*/
+
+#include <Elementary.h>
+#include <Eina.h>
+#include <media_content.h>
+#include <ExtNameInfo.h>
+#include "mediainfo.h"
+#include "videoinfo.h"
+#include "util.h"
+
+struct SVideoInfo {
+ int duration;
+ int played_position;
+};
+
+bool CVideoInfo::Create(void)
+{
+ if (m)
+ return false;
+
+ m = new SVideoInfo();
+ if (!m) {
+ _ERR("VideoInfo Create Failed");
+ return false;
+ }
+
+ if (!CMediaInfo::Create()) {
+ delete m;
+ m = NULL;
+ return false;
+ }
+
+ return true;
+}
+
+void CVideoInfo::Destroy(void)
+{
+ if (!m)
+ return;
+
+ CMediaInfo::Destroy();
+
+ delete m;
+
+ m = NULL;
+}
+
+int CVideoInfo::Duration(void)
+{
+ if (!m)
+ return false;
+
+ return m->duration;
+}
+
+int CVideoInfo::PlayedPosition(void)
+{
+ if (!m)
+ return false;
+
+ return m->played_position;
+}
+
+bool CVideoInfo::SetDuration(int duration)
+{
+ if (!m)
+ return false;
+
+ m->duration = duration;
+
+ return true;
+}
+
+bool CVideoInfo::SetPlayedPosition(int played_position)
+{
+ if (!m)
+ return false;
+
+ m->played_position = played_position;
+
+ return true;
+}
+
+bool CVideoInfo::Duplicate(CNameInfo *obj)
+{
+ if (!m)
+ return false;
+
+ CVideoInfo *dst = (CVideoInfo *)obj;
+
+ if (!CMediaInfo::Duplicate(obj))
+ return false;
+
+ if (!SetDuration(dst->Duration()))
+ return false;
+ if (!SetPlayedPosition(dst->PlayedPosition()))
+ return false;
+
+ return true;
+}
#include <Elementary.h>
#include <appsvc.h>
#include <app.h>
-#include "mediadata.h"
+#include <media_content.h>
+#include "define.h"
+#include "menudef.h"
#include "util.h"
#include "i18n.h"
#include "BaseApp.h"
#include "BaseView.h"
#include "ViewMgr.h"
#include "BaseLayout.h"
+#include "ExtNameInfo.h"
#include "InputHandler.h"
+#include "SortMgr.h"
#include "timeout_handler.h"
+#include "mediainfo.h"
+#include "mediadata.h"
#include "gallery_view.h"
#include "photoviewer_view.h"
#include "zoom_view.h"
virtual void OnTerminate(void)
{
+ CSortMgr::Finalize();
CViewMgr::Finalize();
delete pGalleryView;
elm_exit();
}
+ CSortMgr::Initialize();
+
pGalleryView = new CGalleryView(VIEW_GALLERY);
pPhotoViewerView = new CPhotoViewerView(VIEW_PHOTO_VIEWER);
pPhotoZoomView = new CPhotoZoomView(VIEW_PHOTO_ZOOM);
* limitations under the License.
*/
+#include <media_content.h>
#include <util.h>
+#include "ExtNameInfo.h"
+#include "mediainfo.h"
#include "mediadata.h"
Evas_Object *util_ui_add_box(Evas_Object *base)
int util_get_media_count(Eina_List *list, int type)
{
Eina_List *l;
- struct mediadata *md;
+ CMediaInfo *minfo;
int count;
void *obj;
count = 0;
EINA_LIST_FOREACH(list, l, obj) {
- md = (struct mediadata *)obj;
+ minfo = (CMediaInfo *)obj;
- if (mediadata_get_type(md) == type)
+ if (minfo->Type() == type)
count++;
}
Eina_List *util_create_media_list(Eina_List *media_list, int type)
{
Eina_List *l, *new_list;
- struct mediadata *md;
+ CMediaInfo *minfo;
void *obj;
if (!media_list)
new_list = NULL;
EINA_LIST_FOREACH(media_list, l, obj) {
- md = (struct mediadata *)obj;
+ minfo = (CMediaInfo *)obj;
- if (type == mediadata_get_type(md))
- new_list = eina_list_append(new_list, md);
+ if (type == minfo->Type())
+ new_list = eina_list_append(new_list, minfo);
}
return new_list;
#include <Elementary.h>
#include <Eina.h>
#include <app.h>
+#include <media_content.h>
#include "util.h"
#include <InputHandler.h>
#include "menudef.h"
#include "timeout_handler.h"
+#include "ExtNameInfo.h"
+#include "mediainfo.h"
+#include "videoinfo.h"
#include "mediadata.h"
#include "viewdata.h"
#include "AppCommon.h"
int s_GetMediaIndex(Eina_List *list, int type, const char *name)
{
Eina_List *l;
- struct mediadata *md;
+ CMediaInfo *minfo;
int idx;
void *obj;
idx = 0;
EINA_LIST_FOREACH(list, l, obj) {
- md = (struct mediadata *)obj;
+ minfo = (CMediaInfo *)obj;
- if (mediadata_get_type(md) == type)
+ if (minfo->Type() == type)
idx++;
- if (!strcmp(name, mediadata_get_displayname(md)))
+ if (!strcmp(name, minfo->Name()))
break;
}
char *CCtxtMenuView::sm_CbGridTextGet(void *data, Evas_Object *obj, const char *part)
{
const char *display_name;
- struct mediadata *md;
- const struct videodata *video_info;
+ CMediaInfo *minfo;
int duration;
if (!data || !part)
return NULL;
- md = (struct mediadata*)data;
+ minfo = (CMediaInfo*)data;
if (!strcmp(part, "elm.text")) {
- display_name = mediadata_get_displayname(md);
+ display_name = minfo->Name();
if (!display_name)
return NULL;
return strdup(display_name);
} else if (!strcmp(part, "elm.text.playtime")) {
- video_info = mediadata_get_video_info(md);
- if (!video_info)
- return NULL;
-
- duration = videodata_get_duration(video_info);
+ duration = ((CVideoInfo *)minfo)->Duration();
return util_get_time_string(duration);
}
Evas_Object *CCtxtMenuView::sm_CbGridContentGet(void *data,
Evas_Object *obj, const char *part)
{
- struct mediadata *md;
+ CMediaInfo *minfo;
const char *thumbpath;
Evas_Object *image, *ic;
if (!data || !obj || !part)
return NULL;
- md = (struct mediadata*)data;
+ minfo = (CMediaInfo*)data;
if (!strcmp(part, PART_ELM_SWALLOWICON)) {
- thumbpath = mediadata_get_thumbnailpath(md);
+ thumbpath = minfo->ThumbnailPath();
if (!thumbpath) {
ic = elm_icon_add(obj);
if (!ic)
return NULL;
- elm_icon_thumb_set(ic,
- mediadata_get_filepath(md), NULL);
+ elm_icon_thumb_set(ic, minfo->Path(), NULL);
elm_image_aspect_fixed_set(ic, EINA_FALSE);
return ic;
return ic;
}
-char *CCtxtMenuView::_get_mediadata_date(struct mediadata *md)
+char *CCtxtMenuView::_get_mediadata_date(CMediaInfo *minfo)
{
char buf[20];
time_t timeval;
struct tm tm;
- if (!md)
+ if (!minfo)
return NULL;
- timeval = mediadata_get_createdtime(md);
+ timeval = minfo->Time();
if (timeval > 0) {
localtime_r(&timeval, &tm);
strftime(buf, sizeof(buf), "%Y.%m.%d", &tm);
- } else {
- timeval = mediadata_get_modifiedtime(md);
- if (timeval > 0) {
- localtime_r(&timeval, &tm);
- strftime(buf, sizeof(buf), "%Y.%m.%d", &tm);
- } else
- return NULL;
- }
+ } else
+ return NULL;
return strdup(buf);
}
void CCtxtMenuView::m_OnGridActivated(Elm_Object_Item *it,
const char *emission, const char *source)
{
- struct mediadata *md;
+ CMediaInfo *minfo;
int type;
struct view_data *vd;
if (!it)
return;
- md = (struct mediadata*)elm_object_item_data_get(it);
- if (!md)
+ minfo = (CMediaInfo*)elm_object_item_data_get(it);
+ if (!minfo)
return;
- type = mediadata_get_type(md);
+ type = minfo->Type();
vd = (struct view_data *)calloc(1, sizeof(*vd));
if (!vd)
return;
vd->media_list = util_create_media_list(m->vd->media_list, type);
- vd->md = md;
+ vd->minfo = minfo;
if (type == MEDIA_VIDEO)
video_player_play(vd);
void CCtxtMenuView::m_SlideshowBtnSelected(void)
{
- struct mediadata *md;
+ CMediaInfo *minfo;
struct view_data *vd;
- md = m->vd->md;
- if (!md)
+ minfo = m->vd->minfo;
+ if (!minfo)
return;
vd = (struct view_data *)calloc(1, sizeof(*vd));
return;
vd->media_list = util_create_media_list(m->vd->media_list, MEDIA_IMAGE);
- vd->md = md;
+ vd->minfo = minfo;
CViewMgr::GetInstance()->PushView(VIEW_PHOTO_VIEWER, vd);
}
void CCtxtMenuView::m_PlayBtnSelected(void)
{
- struct mediadata *md;
+ CMediaInfo *minfo;
struct view_data *vd;
- md = m->vd->md;
- if (!md)
+ minfo = m->vd->minfo;
+ if (!minfo)
return;
vd = (struct view_data *)calloc(1, sizeof(*vd));
vd->media_list = util_create_media_list(
m->vd->media_list, MEDIA_VIDEO);
- vd->md = md;
+ vd->minfo = minfo;
video_player_play(vd);
}
Eina_List *l;
Evas_Object *grid;
Elm_Object_Item *it = NULL;
- struct mediadata *md;
+ CMediaInfo *minfo;
const char *sel_name, *name;
char *sel_date, *date;
void *obj;
if (!grid)
return false;
- md = m->vd->md;
- if (!md)
+ minfo = m->vd->minfo;
+ if (!minfo)
return false;
elm_gengrid_clear(grid);
if (!ic_video)
return false;
- sel_name = mediadata_get_displayname(md);
+ sel_name = minfo->Name();
if (!sel_name)
goto err;
- sel_date = _get_mediadata_date(md);
+ sel_date = _get_mediadata_date(minfo);
if (!sel_date)
goto err;
EINA_LIST_FOREACH(m->vd->media_list, l, obj) {
- md = (struct mediadata*)obj;
+ minfo = (CMediaInfo*)obj;
- name = mediadata_get_displayname(md);
+ name = minfo->Name();
if (!name || !strcmp(sel_name, name))
continue;
- date = _get_mediadata_date(md);
+ date = _get_mediadata_date(minfo);
if (!date)
continue;
continue;
}
- if (mediadata_get_type(md) == MEDIA_IMAGE) {
+ if (minfo->Type() == MEDIA_IMAGE) {
it = elm_gengrid_item_append(grid, ic_photo,
- md, NULL, NULL);
- } else if (mediadata_get_type(md) == MEDIA_VIDEO) {
+ minfo, NULL, NULL);
+ } else if (minfo->Type() == MEDIA_VIDEO) {
it = elm_gengrid_item_append(grid, ic_video,
- md, NULL, NULL);
+ minfo, NULL, NULL);
}
- elm_object_item_data_set(it, md);
+ elm_object_item_data_set(it, minfo);
free(date);
}
Evas_Object *photocam;
int type;
const char *thumbpath;
- struct mediadata *md;
+ CMediaInfo *minfo;
photocam = elm_photocam_add(m->base);
if (!photocam) {
return false;
}
- md = m->vd->md;
- if (!md)
+ minfo = m->vd->minfo;
+ if (!minfo)
return false;
- type = mediadata_get_type(md);
+ type = minfo->Type();
switch (type) {
case MEDIA_VIDEO:
- thumbpath = mediadata_get_thumbnailpath(md);
+ thumbpath = minfo->ThumbnailPath();
if (thumbpath)
elm_photocam_file_set(photocam, thumbpath);
break;
case MEDIA_IMAGE:
- thumbpath = mediadata_get_filepath(md);
+ thumbpath = minfo->Path();
if (thumbpath)
elm_photocam_file_set(photocam, thumbpath);
char buf[256], tbuf[20];
time_t created_time;
struct tm tm;
- struct mediadata *md;
+ CMediaInfo *minfo;
- md = m->vd->md;
- if (!md)
+ minfo = m->vd->minfo;
+ if (!minfo)
return false;
box = elm_box_add(m->base);
elm_object_part_content_set(m->base, PART_CONTENT_INFO, box);
- name = mediadata_get_displayname(md);
+ name = minfo->Name();
if (name) {
elm_object_part_text_set(m->base, PART_CONTENT_TITLE, name);
} else {
elm_object_part_text_set(m->base, PART_CONTENT_TITLE, _(TEXT_NONAME));
}
- type = mediadata_get_type(md);
+ type = minfo->Type();
snprintf(buf, sizeof(buf), "%d / %d",
s_GetMediaIndex(m->vd->media_list, type, name),
util_get_media_count(m->vd->media_list, type));
if (!s_PackContentInfo(box, buf))
return false;
- size = mediadata_get_size(md);
+ size = minfo->Size();
if (size > 0) {
snprintf(buf, sizeof(buf), "%s : %.2f MB",
_(TEXT_CONTENT_SIZE), ((size / 1024.0) / 1024.0));
if (!s_PackContentInfo(box, buf))
return false;
- created_time = mediadata_get_createdtime(md);
+ created_time = minfo->CreatedTime();
if (created_time > 0) {
localtime_r(&created_time, &tm);
strftime(tbuf, sizeof(tbuf), "%Y.%m.%d", &tm);
if (!s_PackContentInfo(box, buf))
return false;
- source = mediadata_get_source(md);
+ source = minfo->Source();
snprintf(buf, sizeof(buf), "%s : %s", _(TEXT_CONTENT_LOCATION),
source == E_SOURCE_TV ? _("TV") : _("USB"));
if (!s_PackContentInfo(box, buf))
return false;
#if 0
- image_info = mediadata_get_image_info(md);
+ image_info = mediadata_get_image_info(minfo);
if (!image_info)
return false;
bool CCtxtMenuView::m_DrawRelatedContent(void)
{
Evas_Object *grid;
- struct mediadata *md;
+ CMediaInfo *minfo;
- md = m->vd->md;
- if (!md)
+ minfo = m->vd->minfo;
+ if (!minfo)
return false;
grid = elm_gengrid_add(m->base);
struct _btn_info *CCtxtMenuView::m_GetBtnInfo(int *size)
{
- struct mediadata *md;
+ CMediaInfo *minfo;
struct _btn_info *btn_info = NULL;
int type;
- md = m->vd->md;
- if (!md)
+ minfo = m->vd->minfo;
+ if (!minfo)
return NULL;
*size = 0;
if (CViewMgr::GetInstance()->CheckTop(VIEW_GALLERY)) {
- type = mediadata_get_type(md);
+ type = minfo->Type();
if (type == MEDIA_IMAGE) {
btn_info = browse_photo_btn;
{
Evas_Object *box, *ly, *img, *lbl;
struct _btn_info *btn_info;
- struct mediadata *md;
+ CMediaInfo *minfo;
int i, size;
char btn_title[256];
- md = m->vd->md;
- if (!md)
+ minfo = m->vd->minfo;
+ if (!minfo)
return false;
box = elm_box_add(m->base);
#include <Elementary.h>
#include <Eina.h>
#include <app.h>
+#include <media_content.h>
#include <InputHandler.h>
+#include <ExtNameInfo.h>
#include "util.h"
#include "menudef.h"
-#include "mediadata.h"
#include "AppCommon.h"
#include "BaseView.h"
#include "ViewMgr.h"
#include "layout_all.h"
#include "layout_events.h"
#include "layout_folder.h"
+#include "mediainfo.h"
+#include "mediadata.h"
#define BTN_ID "btn_id"
#define BTN_ICN "btn_icon"
bool bfirsttime_launch;
Eina_List *layout_info_list;
- Eina_List *media_list;
- Eina_List *filelist;
int current_layout;
int sort_type;
CEventLayout *pEventLayout;
CFolderLayout *pFolderLayout;
+ CMediadata *pMediadata;
+
struct layout_data *ld;
SGalleryView() {
transit = NULL;
layout_info_list = NULL;
- media_list = NULL;
- filelist = NULL;
arglist = NULL;
m->source_type = source_type;
- mediadata_destroy_mediafiles_list(m->media_list);
+ m->pMediadata->DestroyMediaList();
- m->media_list = mediadata_create_mediafiles_list(
- m->source_type, m->arglist->media_type);
- if (!m->media_list)
+ if (!m->pMediadata->CreateMediaList(
+ m->source_type, m->arglist->media_type))
return;
m_DrawContentArea(m->current_layout);
elm_object_part_content_set(m->base, PART_LEFTSWALLOW, box);
- m->media_list = mediadata_create_mediafiles_list(
- m->source_type, m->arglist->media_type);
- if (!m->media_list)
- _ERR("MEDIA LIST CREATE ERROR");
-
- m->filelist = NULL;
+ m->pMediadata->CreateMediaList(m->source_type, m->arglist->media_type);
/* Set focus directions and initial focus */
elm_object_focus_next_object_set(m->btn[MENUITEM_SIZE - 1],
Eina_List *arg;
if (ltype == E_LAYOUT_FOLDER)
- arg = m->media_list;
- else {
- if (m->filelist)
- eina_list_free(m->filelist);
- m->filelist = mediadata_get_filelist(m->media_list);
- arg = m->filelist;
- }
+ arg = m->pMediadata->FolderList();
+ else if (ltype == E_LAYOUT_EVENTS)
+ arg = m->pMediadata->EventList();
+ else
+ arg = m->pMediadata->MediaList();
m->ld->media_list = arg;
m->ld->arglist = m->arglist;
m->pFolderLayout->Update(m->ld);
}
+Eina_List *CGalleryView::sm_CbGetMediaList(void *cookie)
+{
+ SGalleryView *m;
+
+ m = (SGalleryView *)cookie;
+
+ return m->pMediadata->MediaList();
+}
+
bool CGalleryView::Create(void *data)
{
ASSERT(!m);
m->pEventLayout->SetFocusCallback(sm_CbAllLayoutFocus, m);
m->pEventLayout->SetSortCallback(sm_CbAllLayoutSort, m);
m->pEventLayout->SetSendSigCallback(sm_CbGetSignalFromLayout, m);
+ m->pEventLayout->SetMediaListCallback(sm_CbGetMediaList, m);
m->pLayoutMgr->AddLayout(m->pEventLayout);
m->pFolderLayout = new CFolderLayout(LAYOUT_FOLDER);
m->pFolderLayout->SetFocusCallback(sm_CbAllLayoutFocus, m);
m->pFolderLayout->SetSortCallback(sm_CbAllLayoutSort, m);
m->pFolderLayout->SetSendSigCallback(sm_CbGetSignalFromLayout, m);
+ m->pFolderLayout->SetMediaListCallback(sm_CbGetMediaList, m);
m->pLayoutMgr->AddLayout(m->pFolderLayout);
m->pLayoutMgr->RegisterCallback(CLayoutMgr::CONDITION_LAYOUT_SHOW_NOTIFY, sm_CbLayoutShown, m);
- if (mediadata_init() == -1) {
+ m->pMediadata = new CMediadata;
+ if (!m->pMediadata->Create()) {
evas_object_del(m->base);
free(m);
return false;
}
if (!elm_layout_file_set(m->base, EDJEFILE, GRP_GALLERY_VIEW)) {
- mediadata_fini();
+ m->pMediadata->Destroy();
goto error;
}
#endif
if (!m_DrawItems()) {
- mediadata_fini();
+ m->pMediadata->Destroy();
goto error;
}
CBaseView::Destroy();
- mediadata_unset_updated_cb();
- //mediadata_usb_unset_connected_cb();
-
- eina_list_free(m->filelist);
- mediadata_destroy_mediafiles_list(m->media_list);
+ m->pMediadata->DestroyMediaList();
- mediadata_fini();
+ m->pMediadata->Destroy();
m->pLayoutMgr->RemoveLayout(m->pAllLayout);
m->pLayoutMgr->RemoveLayout(m->pEventLayout);
#include <Elementary.h>
#include <Eina.h>
#include <app.h>
+#include <media_content.h>
#include "util.h"
#include "define.h"
-#include "viewdata.h"
+#include "ExtNameInfo.h"
+#include "mediainfo.h"
#include "mediadata.h"
+#include "imageinfo.h"
+#include "videoinfo.h"
+#include "viewdata.h"
#include "menudef.h"
#include "BaseView.h"
#include "ViewMgr.h"
#include "InputHandler.h"
#include "LayoutMgr.h"
#include "BaseLayout.h"
+#include "Sort.h"
#include "video_player.h"
#include "gallery_view.h"
#include "layout_all.h"
char *CAllLayout::sm_CbGridTextGet(void *data, Evas_Object *obj, const char *part)
{
const char *display_name;
- struct mediadata *md;
- const struct videodata *video_info;
+ CMediaInfo *minfo;
int duration;
if (!data)
return NULL;
- md = (struct mediadata *)data;
+ minfo = (CMediaInfo *)data;
if (!strcmp(part, "elm.text")) {
-
- display_name = mediadata_get_displayname(md);
+ display_name = minfo->Name();
if (!display_name)
return NULL;
return strdup(display_name);
-
} else if (!strcmp(part, "elm.text.playtime")) {
+ duration = ((CVideoInfo *)minfo)->Duration();
- video_info = mediadata_get_video_info(md);
- if (!video_info)
- return NULL;
- duration = videodata_get_duration(video_info);
return util_get_time_string(duration);
}
Evas_Object *CAllLayout::sm_CbGridContentGet(void *data,
Evas_Object *obj, const char *part)
{
- struct mediadata *md;
+ CMediaInfo *minfo;
const char *thumbpath;
Evas_Object *image, *ic;
if (!data)
return NULL;
- md = (struct mediadata *)data;
+ minfo = (CMediaInfo *)data;
if (!strcmp(part, PART_ELM_SWALLOWICON)) {
- thumbpath = mediadata_get_thumbnailpath(md);
+ thumbpath = minfo->ThumbnailPath();
if (!thumbpath) {
ic = elm_icon_add(obj);
if (!ic)
return NULL;
- elm_icon_thumb_set(ic,
- mediadata_get_filepath(md), NULL);
+ elm_icon_thumb_set(ic, minfo->Path(), NULL);
elm_image_aspect_fixed_set(ic, EINA_FALSE);
return ic;
void CAllLayout::m_CreateCtxtMenu(void)
{
- struct mediadata *md;
+ CMediaInfo *minfo;
struct view_data *vd;
Elm_Object_Item *it;
it = m->current_item;
- md = (struct mediadata *)elm_object_item_data_get(it);
- if (!md)
+ minfo = (CMediaInfo *)elm_object_item_data_get(it);
+ if (!minfo)
return;
vd = (struct view_data *)calloc(1, sizeof(*vd));
return;
vd->media_list = m->media_list;
- vd->md = md;
+ vd->minfo = minfo;
CViewMgr::GetInstance()->PushView(VIEW_CTXT_MENU, vd);
}
void CAllLayout::m_OnGridActivated(Elm_Object_Item *it,
const char *emission, const char *source)
{
- struct mediadata *md;
+ CMediaInfo *minfo;
struct view_data *vd;
int type;
if (!it)
return;
- md = (struct mediadata *)elm_object_item_data_get(it);
- if (!md)
+ minfo = (CMediaInfo *)elm_object_item_data_get(it);
+ if (!minfo)
return;
- type = mediadata_get_type(md);
+ type = minfo->Type();
/* operation is pick */
if (m->arglist->media_type != E_MEDIA_IMAGE_VIDEO)
- m_SendResultToApp(mediadata_get_filepath(md));
+ m_SendResultToApp(minfo->Path());
else {
vd = (struct view_data *)calloc(1, sizeof(*vd));
if (!vd)
return;
vd->media_list = util_create_media_list(m->media_list, type);
- vd->md = md;
+ vd->minfo = minfo;
if (type == MEDIA_VIDEO)
video_player_play(vd);
Eina_List *l;
Evas_Object *grid;
Elm_Object_Item *it;
- struct mediadata *md;
+ CMediaInfo *minfo;
char buf[16];
void *obj;
+ int type;
grid = m->grid;
if (!grid)
}
EINA_LIST_FOREACH(m->media_list, l, obj) {
- md = (struct mediadata *)obj;
+ minfo = (CMediaInfo *)obj;
it = NULL;
- if (mediadata_get_type(md) == MEDIA_IMAGE)
- it = elm_gengrid_item_append(grid, ic_photo, md, NULL, NULL);
- else if (mediadata_get_type(md) == MEDIA_VIDEO)
- it = elm_gengrid_item_append(grid, ic_video, md, NULL, NULL);
+ type = minfo->Type();
+ if (type == MEDIA_IMAGE)
+ it = elm_gengrid_item_append(grid, ic_photo, minfo, NULL, NULL);
+ else if (type == MEDIA_VIDEO)
+ it = elm_gengrid_item_append(grid, ic_video, minfo, NULL, NULL);
- elm_object_item_data_set(it, md);
+ elm_object_item_data_set(it, minfo);
}
m_FreeItemclass(ic_photo);
return true;
}
-int CAllLayout::sm_CompareDesc(const void *data1, const void *data2)
+Eina_List *CAllLayout::m_SortList(void)
{
- struct mediadata *m1 = (struct mediadata *)data1;
- struct mediadata *m2 = (struct mediadata *)data2;
-
- if (!m1 || !m2)
- return -1;
+ Eina_List *list;
- if (mediadata_get_time_t(m2) >
- mediadata_get_time_t(m1))
- return 1;
+ list = CSort::Sort(m->media_list, sort_id[m->sort]);
- return -1;
-}
-
-int CAllLayout::sm_CompareAsc(const void *data1, const void *data2)
-{
- struct mediadata *m1 = (struct mediadata *)data1;
- struct mediadata *m2 = (struct mediadata *)data2;
-
- if (!m1 || !m2)
- return -1;
-
- if (mediadata_get_time_t(m2) <
- mediadata_get_time_t(m1))
- return 1;
-
- return -1;
-}
-
-int CAllLayout::sm_CompareAZ(const void *data1, const void *data2)
-{
- struct mediadata *m1 = (struct mediadata *)data1;
- struct mediadata *m2 = (struct mediadata *)data2;
- const char *file1, *file2;
-
- if (!m1 || !m2)
- return -1;
-
- file1 = mediadata_get_displayname(m1);
- file2 = mediadata_get_displayname(m2);
- if (!file1 || !file2)
- return -1;
-
- return strcasecmp(file1, file2);
-}
-
-int CAllLayout::sm_CompareZA(const void *data1, const void *data2)
-{
- struct mediadata *m1 = (struct mediadata *)data1;
- struct mediadata *m2 = (struct mediadata *)data2;
- const char *file1, *file2;
-
- if (!m1 || !m2)
- return -1;
-
- file1 = mediadata_get_displayname(m1);
- file2 = mediadata_get_displayname(m2);
- if (!file1 || !file2)
- return -1;
-
- return strcasecmp(file2, file1);
-}
-
-Eina_List *CAllLayout::m_SortList(Eina_List *list, int sort)
-{
- Eina_List *result = NULL;
-
- Eina_Compare_Cb _compare_cb_func[] = {
- sm_CompareDesc,
- sm_CompareAsc,
- sm_CompareAZ,
- sm_CompareZA,
- };
-
- if (sort < E_SORT_MAX)
- result = eina_list_sort(list, 0, _compare_cb_func[sort]);
-
- return result;
+ return list;
}
void CAllLayout::DirectLaunch(const char *id)
ASSERT(m);
Elm_Object_Item *it;
- struct mediadata *md;
+ CMediaInfo *minfo;
const char *file_path;
if (!id)
for (it = elm_gengrid_first_item_get(m->grid);
it != NULL; it = elm_gengrid_item_next_get(it)) {
- md = (struct mediadata *)elm_object_item_data_get(it);
- if (!md)
+ minfo = (CMediaInfo *)elm_object_item_data_get(it);
+ if (!minfo)
break;
- file_path = mediadata_get_filepath(md);
+ file_path = minfo->Path();
if (file_path &&
!strcmp(file_path, id))
void CAllLayout::Sort(int sort)
{
ASSERT(m);
- m->media_list = m_SortList(m->media_list, sort);
m->sort = sort;
+ m->media_list = m_SortList();
+
m_DrawGengridItems();
}
m->arglist = ld->arglist;
m->sort = ld->sort;
m->media_list = eina_list_clone(ld->media_list);
- m->media_list = m_SortList(m->media_list, m->sort);
+ m->media_list = m_SortList();
if (!ld->media_list) {
elm_object_part_text_set(Layout(),
m->pLayoutMgr = lmgr;
m->arglist = ld->arglist;
+ m->sort = ld->sort;
m->media_list = eina_list_clone(ld->media_list);
- m->media_list = m_SortList(m->media_list, m->sort);
+ m->media_list = m_SortList();
m->ld = ld;
m->grid = m_DrawGengrid(layout);
#include <Elementary.h>
#include <Eina.h>
#include <app.h>
+#include <media_content.h>
+#include "ExtNameInfo.h"
#include "util.h"
#include "define.h"
-#include "viewdata.h"
+#include "mediainfo.h"
#include "mediadata.h"
-#include "eventdata.h"
+#include "eventinfo.h"
+#include "viewdata.h"
#include "menudef.h"
#include "BaseView.h"
#include "ViewMgr.h"
#include "InputHandler.h"
+#include "Sort.h"
#include "video_player.h"
#include "BaseLayout.h"
#include "LayoutMgr.h"
void *cookie;
};
+struct SMediaCallbackPair {
+ Eina_List *(*cb)(void *cookie);
+ void *cookie;
+};
+
struct SEventLayout {
Evas_Object *base;
SFocusCallbackPair *FocusCb;
SSortCallbackPair *SortCb;
- SSigCallbackPair *Sigcb;
+ SSigCallbackPair *SigCb;
+ SMediaCallbackPair *MediaCb;
SEventLayout() {
base = NULL;
FocusCb = NULL;
SortCb = NULL;
- Sigcb = NULL;
+ SigCb = NULL;
+ MediaCb = NULL;
}
~SEventLayout() {}
char *CEventLayout::sm_CbGridTextGet(void *data, Evas_Object *obj, const char *part)
{
const char *display_name;
- struct eventdata *ed;
- struct mediadata *md;
+ CEventInfo *einfo;
+ CMediaInfo *minfo;
Eina_List *list;
char buf[32];
if (!data)
return NULL;
- ed = (struct eventdata *)data;
+ einfo = (CEventInfo *)data;
if (!strcmp(part, "elm.text")) {
- if (eventdata_get_type(ed) == E_TYPE_EVENT_NO_INFO) {
- md = eventdata_get_mediadata(ed);
- if (!md)
+ if (einfo->Type() == E_TYPE_EVENT_NO_INFO) {
+ minfo = einfo->MediaInfo();
+ if (!minfo)
return NULL;
- display_name = mediadata_get_displayname(md);
+ display_name = minfo->Name();
} else
- display_name = eventdata_get_eventname(ed);
+ display_name = einfo->Name();
if (!display_name)
return NULL;
return strdup(display_name);
} else if (!strcmp(part, PART_FILECOUNT)) {
- if (eventdata_get_type(ed) == E_TYPE_EVENT_INFO) {
- list = eventdata_get_listinfo(ed);
+ if (einfo->Type() == E_TYPE_EVENT_INFO) {
+ list = einfo->MediaList();
if (!list)
return NULL;
Evas_Object *CEventLayout::sm_CbGridContentGet(void *data, Evas_Object *obj, const char *part)
{
- struct eventdata *ed;
- struct mediadata *md;
+ CEventInfo *einfo;
+ CMediaInfo *minfo;
const char *thumbpath;
Eina_List *list;
Evas_Object *image, *ic;
if (!data)
return NULL;
- ed = (struct eventdata *)data;
+ einfo = (CEventInfo *)data;
- if (eventdata_get_type(ed) == E_TYPE_EVENT_NO_INFO)
- md = eventdata_get_mediadata(ed);
+ if (einfo->Type() == E_TYPE_EVENT_NO_INFO)
+ minfo = einfo->MediaInfo();
else {
- list = eventdata_get_listinfo(ed);
+ list = einfo->MediaList();
if (!list)
return NULL;
- md = (struct mediadata *)eina_list_nth(list, 0);
+ minfo = (CMediaInfo *)eina_list_nth(list, 0);
}
- if (!md)
+ if (!minfo)
return NULL;
if (!strcmp(part, PART_ELM_SWALLOWICON)) {
image = elm_image_add(obj);
- thumbpath = mediadata_get_thumbnailpath(md);
+ thumbpath = minfo->ThumbnailPath();
if (!thumbpath) {
ic = elm_icon_add(obj);
if (!ic)
return NULL;
- elm_icon_thumb_set(ic,
- mediadata_get_filepath(md), NULL);
+ elm_icon_thumb_set(ic, minfo->Path(), NULL);
elm_image_aspect_fixed_set(ic, EINA_FALSE);
return ic;
void CEventLayout::m_OnGridActivated(Elm_Object_Item *it,
const char *emission, const char *source)
{
- struct mediadata *md;
- struct eventdata *ed;
+ CMediaInfo *minfo;
+ CEventInfo *einfo;
int type;
struct view_data *vd;
char buf[256];
if (!it)
return;
- ed = (struct eventdata *)elm_object_item_data_get(it);
- if (!ed)
+ einfo = (CEventInfo *)elm_object_item_data_get(it);
+ if (!einfo)
return;
- if (eventdata_get_type(ed) == E_TYPE_EVENT_NO_INFO) {
- md = eventdata_get_mediadata(ed);
- if (!md)
+ if (einfo->Type() == E_TYPE_EVENT_NO_INFO) {
+ minfo = einfo->MediaInfo();
+ if (!minfo)
return;
- type = mediadata_get_type(md);
+ type = minfo->Type();
vd = (struct view_data *)calloc(1, sizeof(*vd));
if (!vd)
return;
vd->media_list = util_create_media_list(m->media_list, type);
- vd->md = md;
+ vd->minfo = minfo;
if (type == MEDIA_VIDEO)
video_player_play(vd);
}
} else {
/* TODO: Launch next view as per GUI specs */
- snprintf(buf, sizeof(buf), "< %s", eventdata_get_eventname(ed));
+ snprintf(buf, sizeof(buf), "< %s", einfo->Name());
- m->ld->media_list = eventdata_get_listinfo(ed);
+ m->ld->media_list = einfo->MediaList();
m->ld->arglist = m->arglist;
m->ld->path = strdup(buf);
m->ld->sort = m->sort;
int CEventLayout::m_GetEventCount(Eina_List *event_list)
{
Eina_List *l;
- struct eventdata *ed;
+ CEventInfo *einfo;
int count;
void *obj;
count = 0;
EINA_LIST_FOREACH(event_list, l, obj) {
- ed = (struct eventdata *)obj;
+ einfo = (CEventInfo *)obj;
- if (eventdata_get_type(ed) == E_TYPE_EVENT_INFO)
+ if (einfo->Type() == E_TYPE_EVENT_INFO)
count++;
}
int CEventLayout::m_GetMediaCount(Eina_List *media_list, int type)
{
Eina_List *l;
- struct mediadata *md;
+ CMediaInfo *minfo;
int count;
void *obj;
count = 0;
EINA_LIST_FOREACH(media_list, l, obj) {
- md = (struct mediadata *)obj;
+ minfo = (CMediaInfo *)obj;
- if (mediadata_get_type(md) == type)
+ if (minfo->Type() == type)
count++;
}
bool CEventLayout::m_DrawGengridItems(void)
{
Elm_Gengrid_Item_Class *ic_photo, *ic_video, *ic_event;
- Eina_List *event_list, *l;
+ Eina_List *media_list, *l;
Evas_Object *grid;
Elm_Object_Item *it;
- struct eventdata *ed;
- struct mediadata *md;
+ CEventInfo *einfo;
+ CMediaInfo *minfo;
char buf[32];
void *obj;
elm_gengrid_clear(grid);
- event_list = eventdata_create_list(m->media_list, m->sort);
- if (!event_list)
+ media_list = m->MediaCb->cb(m->MediaCb->cookie);
+ if (!media_list)
return false;
- m->event_list = event_list;
+ m->media_list = media_list;
ic_photo = m_GetItemclass(MEDIA_IMAGE);
ic_video = m_GetItemclass(MEDIA_VIDEO);
if (!ic_photo || !ic_video || !ic_event)
goto error;
- EINA_LIST_FOREACH(event_list, l, obj) {
- ed = (struct eventdata *)obj;
+ EINA_LIST_FOREACH(m->event_list, l, obj) {
+ einfo = (CEventInfo *)obj;
- if (eventdata_get_type(ed) == E_TYPE_EVENT_INFO) {
- it = elm_gengrid_item_append(grid, ic_event, ed, NULL, NULL);
+ if (einfo->Type() == E_TYPE_EVENT_INFO) {
+ it = elm_gengrid_item_append(grid, ic_event, einfo, NULL, NULL);
} else {
- md = eventdata_get_mediadata(ed);
- if (!md)
+ minfo = einfo->MediaInfo();
+ if (!minfo)
goto error;
it = NULL;
- if (mediadata_get_type(md) == MEDIA_IMAGE)
- it = elm_gengrid_item_append(grid, ic_photo, md, NULL, NULL);
- else if (mediadata_get_type(md) == MEDIA_VIDEO)
- it = elm_gengrid_item_append(grid, ic_video, md, NULL, NULL);
+ 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, ed);
+ elm_object_item_data_set(it, einfo);
}
m_FreeItemclass(ic_photo, ic_video, ic_event);
- snprintf(buf, sizeof(buf), "%d Events", m_GetEventCount(event_list));
+ snprintf(buf, sizeof(buf), "%d Events", m_GetEventCount(m->event_list));
elm_object_part_text_set(Layout(), PART_CATEGORY_TITLE, buf);
snprintf(buf, sizeof(buf), "%d", m_GetMediaCount(m->media_list,
error:
m_FreeItemclass(ic_photo, ic_video, ic_event);
- eventdata_destroy_list(event_list);
return false;
}
+Eina_List *CEventLayout::m_SortList(void)
+{
+ Eina_List *list;
+
+ list = CSort::Sort(m->event_list, sort_id[m->sort]);
+
+ return list;
+}
+
void CEventLayout::DirectLaunch(const char *id)
{
ASSERT(m);
Elm_Object_Item *it;
const char *display_name;
- struct eventdata *ed;
+ CEventInfo *einfo;
time_t timeval;
char buf[32];
struct tm tm;
for (it = elm_gengrid_first_item_get(m->grid);
it != NULL; it = elm_gengrid_item_next_get(it)) {
- ed = (struct eventdata *)elm_object_item_data_get(it);
- if (!ed)
+ einfo = (CEventInfo *)elm_object_item_data_get(it);
+ if (!einfo)
break;
- if (eventdata_get_type(ed) == E_TYPE_EVENT_INFO) {
+ if (einfo->Type() == E_TYPE_EVENT_INFO) {
- display_name = eventdata_get_eventname(ed);
+ display_name = einfo->Name();
if (display_name &&
!strcmp(buf, display_name))
return;
}
+ m->event_list = m_SortList();
m_DrawGengridItems();
}
ASSERT(m);
m->arglist = ld->arglist;
- m->media_list = eina_list_clone(ld->media_list);
m->sort = ld->sort;
+ m->event_list = eina_list_clone(ld->media_list);
+ m->event_list = m_SortList();
if (!ld->media_list) {
elm_object_part_text_set(Layout(),
rcb->cb = cb;
rcb->cookie = cookie;
- m->Sigcb = rcb;
+ m->SigCb = rcb;
+}
+
+void CEventLayout::SetMediaListCallback(Eina_List *(*cb)(void *cookie), void *cookie)
+{
+ ASSERT(m);
+
+ SMediaCallbackPair *mcb = new SMediaCallbackPair;
+ if (!mcb)
+ return;
+
+ mcb->cb = cb;
+ mcb->cookie = cookie;
+
+ m->MediaCb = mcb;
}
bool CEventLayout::Create(CLayoutMgr *lmgr, void *data)
m->pLayoutMgr = lmgr;
m->arglist = ld->arglist;
- m->media_list = eina_list_clone(ld->media_list);
m->sort = ld->sort;
+ m->event_list = eina_list_clone(ld->media_list);
+ m->event_list = m_SortList();
m->ld = ld;
m->grid = m_DrawGengrid(layout);
{
ASSERT(m);
- eventdata_destroy_list(m->event_list);
-
if (m->media_list)
eina_list_free(m->media_list);
switch (id) {
case EVENT_GRID:
if (strcmp(ev->keyname, KEY_BACK) == 0)
- m->Sigcb->cb(m->Sigcb->cookie, E_RETURN);
+ m->SigCb->cb(m->SigCb->cookie, E_RETURN);
break;
default:
break;
{
switch (id) {
case EVENT_GRID:
- m->Sigcb->cb(m->Sigcb->cookie, E_HIGHLIGHT);
+ m->SigCb->cb(m->SigCb->cookie, E_HIGHLIGHT);
break;
default:
break;
#include <Elementary.h>
#include <Eina.h>
#include <app.h>
+#include <media_content.h>
#include "util.h"
#include "define.h"
+#include "ExtNameInfo.h"
+#include "folderinfo.h"
+#include "mediainfo.h"
#include "mediadata.h"
#include "menudef.h"
#include "BaseView.h"
#include "BaseLayout.h"
#include "LayoutMgr.h"
#include "InputHandler.h"
+#include "Sort.h"
#include "layout_all.h"
#include "layout_folder.h"
#include "gallery_view.h"
void *cookie;
};
+struct SMediaCallbackPair {
+ Eina_List *(*cb)(void *cookie);
+ void *cookie;
+};
+
struct SFolderLayout{
Evas_Object *base;
Elm_Object_Item *current_item;
struct arg_list *arglist;
+ Eina_List *folder_list;
Eina_List *media_list;
int sort;
SFocusCallbackPair *FocusCb;
SSortCallbackPair *SortCb;
SSigCallbackPair *Sigcb;
+ SMediaCallbackPair *MediaCb;
SFolderLayout() {
base = NULL;
current_item = NULL;
arglist = NULL;
+ folder_list = NULL;
media_list = NULL;
sort = 0;
FocusCb = NULL;
SortCb = NULL;
Sigcb = NULL;
+ MediaCb = NULL;
}
~SFolderLayout() {}
char *CFolderLayout::sm_CbGridTextGet(void *data, Evas_Object *obj, const char *part)
{
const char *display_name;
- struct folderdata *fd;
+ CFolderInfo *finfo;
Eina_List *list;
char buf[32];
if (!data)
return NULL;
- fd = (struct folderdata *)data;
+ finfo = (CFolderInfo *)data;
if (!strcmp(part, "elm.text")) {
- display_name = folderdata_get_name(fd);
+ display_name = finfo->Name();
if (!display_name)
return NULL;
return strdup(display_name);
} else if (!strcmp(part, PART_FILECOUNT)) {
- list = folderdata_get_listinfo(fd);
+ list = finfo->MediaList();
if (!list)
return NULL;
void CFolderLayout::m_OnGridActivated(Elm_Object_Item *it,
const char *emission, const char *source)
{
- struct folderdata *fd;
+ CFolderInfo *finfo;
char buf[256];
- fd = (struct folderdata *)elm_object_item_data_get(it);
- if (!fd)
+ finfo = (CFolderInfo *)elm_object_item_data_get(it);
+ if (!finfo)
return;
- snprintf(buf, sizeof(buf), "< %s", folderdata_get_name(fd));
+ snprintf(buf, sizeof(buf), "< %s", finfo->Name());
- m->ld->media_list = folderdata_get_listinfo(fd);
+ m->ld->media_list = finfo->MediaList();
m->ld->arglist = m->arglist;
m->ld->path = strdup(buf);
m->ld->sort = m->sort;
int CFolderLayout::m_GetMediaCount(Eina_List *list, int type)
{
- Eina_List *media_list;
- struct mediadata *md;
- int count = 0;
+ CMediaInfo *minfo;
+ Eina_List *l;
+ int count;
void *obj;
if (!list)
return 0;
- media_list = mediadata_get_filelist(list);
- if (!media_list)
- return 0;
-
- EINA_LIST_FREE(media_list, obj) {
- md = (struct mediadata *)obj;
+ count = 0;
+ EINA_LIST_FOREACH(list, l, obj) {
+ minfo = (CMediaInfo *)obj;
- if (mediadata_get_type(md) == type)
+ if (minfo->Type() == type)
count++;
}
bool CFolderLayout::m_DrawGengridItems(void)
{
Elm_Gengrid_Item_Class *ic_folder;
- Eina_List *l;
+ Eina_List *media_list, *l;
Evas_Object *grid;
Elm_Object_Item *it;
- struct folderdata *fd;
+ CFolderInfo *finfo;
char buf[32];
void *obj;
elm_gengrid_clear(grid);
+ media_list = m->MediaCb->cb(m->MediaCb->cookie);
+ if (!media_list)
+ return false;
+
+ m->media_list = media_list;
+
ic_folder = m_GetItemclass();
if (!ic_folder) {
m_FreeItemclass(ic_folder);
return false;
}
- EINA_LIST_FOREACH(m->media_list, l, obj) {
- fd = (struct folderdata *)obj;
+ EINA_LIST_FOREACH(m->folder_list, l, obj) {
+ finfo = (CFolderInfo *)obj;
- it = elm_gengrid_item_append(grid, ic_folder, fd, NULL, NULL);
- elm_object_item_data_set(it, fd);
+ it = elm_gengrid_item_append(grid, ic_folder, finfo, NULL, NULL);
+ elm_object_item_data_set(it, finfo);
}
m_FreeItemclass(ic_folder);
- snprintf(buf, sizeof(buf), "%d Folders", eina_list_count(m->media_list));
+ snprintf(buf, sizeof(buf), "%d Folders", eina_list_count(m->folder_list));
elm_object_part_text_set(Layout(), PART_CATEGORY_TITLE, buf);
snprintf(buf, sizeof(buf), "%d", m_GetMediaCount(m->media_list,
return true;
}
-static int _compare_cb_desc(const void *data1,
- const void *data2)
-{
- struct folderdata *m1 = (struct folderdata *)data1;
- struct folderdata *m2 = (struct folderdata *)data2;
-
- if (!m1 || !m2)
- return -1;
-
- if (folderdata_get_modifiedtime(m2) >
- folderdata_get_modifiedtime(m1))
- return 1;
-
- return -1;
-}
-
-static int _compare_cb_asc(const void *data1,
- const void *data2)
+Eina_List *CFolderLayout::m_SortList(void)
{
- struct folderdata *m1 = (struct folderdata *)data1;
- struct folderdata *m2 = (struct folderdata *)data2;
-
- if (!m1 || !m2)
- return -1;
-
- if (folderdata_get_modifiedtime(m2) <
- folderdata_get_modifiedtime(m1))
- return 1;
-
- return -1;
-}
-
-static int _compare_cb_a_z(const void *data1,
- const void *data2)
-{
- struct folderdata *m1 = (struct folderdata *)data1;
- struct folderdata *m2 = (struct folderdata *)data2;
- const char *file1, *file2;
-
- if (!m1 || !m2)
- return -1;
-
- file1 = folderdata_get_name(m1);
- file2 = folderdata_get_name(m2);
- if (!file1 || !file2)
- return -1;
-
- return strcasecmp(file1, file2);
-}
-
-static int _compare_cb_z_a(const void *data1,
- const void *data2)
-{
- struct folderdata *m1 = (struct folderdata *)data1;
- struct folderdata *m2 = (struct folderdata *)data2;
- const char *file1, *file2;
-
- if (!m1 || !m2)
- return -1;
-
- file1 = folderdata_get_name(m1);
- file2 = folderdata_get_name(m2);
- if (!file1 || !file2)
- return -1;
-
- return strcasecmp(file2, file1);
-}
-
-static Eina_List *_sort_list(Eina_List *list, int sort)
-{
- Eina_List *result = NULL;
-
- Eina_Compare_Cb _compare_cb_func[] = {
- _compare_cb_desc,
- _compare_cb_asc,
- _compare_cb_a_z,
- _compare_cb_z_a
- };
+ Eina_List *list;
- if (sort < E_SORT_MAX)
- result = eina_list_sort(list, 0, _compare_cb_func[sort]);
+ list = CSort::Sort(m->folder_list, sort_id[m->sort]);
- return result;
+ return list;
}
void CFolderLayout::DirectLaunch(const char *id)
return;
}
- m->media_list = _sort_list(m->media_list, sort);
+ m->folder_list = m_SortList();
m_DrawGengridItems();
}
m->arglist = ld->arglist;
m->sort = ld->sort;
- m->media_list = eina_list_clone(ld->media_list);
- m->media_list = _sort_list(m->media_list, m->sort);
+ m->folder_list = eina_list_clone(ld->media_list);
+ m->folder_list = m_SortList();
if (!ld->media_list) {
elm_object_part_text_set(Layout(),
m->Sigcb = rcb;
}
+void CFolderLayout::SetMediaListCallback(Eina_List *(*cb)(void *cookie), void *cookie)
+{
+ ASSERT(m);
+
+ SMediaCallbackPair *mcb = new SMediaCallbackPair;
+ if (!mcb)
+ return;
+
+ mcb->cb = cb;
+ mcb->cookie = cookie;
+
+ m->MediaCb = mcb;
+}
+
bool CFolderLayout::Create(CLayoutMgr *lmgr, void *data)
{
ASSERT(!m);
m->pLayoutMgr = lmgr;
m->arglist = ld->arglist;
m->sort = ld->sort;
- m->media_list = eina_list_clone(ld->media_list);
- m->media_list = _sort_list(m->media_list, m->sort);
+ m->folder_list = eina_list_clone(ld->media_list);
+ m->folder_list = m_SortList();
m->ld = ld;
m->grid = m_DrawGengrid(layout);
#include <Elementary.h>
#include <Eina.h>
#include <app.h>
+#include <media_content.h>
+#include "ExtNameInfo.h"
#include "util.h"
#include "menudef.h"
#include "timeout_handler.h"
+#include "mediainfo.h"
#include "mediadata.h"
#include "viewdata.h"
#include "AppCommon.h"
void CPhotoViewerView::m_OnPrevBtnClicked(Evas_Object *obj, const char *emission, const char *source)
{
Eina_List *current_list, *prev_list;
- struct mediadata *md;
+ CMediaInfo *minfo;
if (!m->vd)
return;
current_list = eina_list_data_find_list(m->vd->media_list,
- m->vd->md);
+ m->vd->minfo);
if (!current_list)
return;
if (!prev_list)
prev_list = eina_list_last(m->vd->media_list);
- md = (struct mediadata *)eina_list_data_get(prev_list);
+ minfo = (CMediaInfo *)eina_list_data_get(prev_list);
- if (!m_DrawContentArea(md))
+ if (!m_DrawContentArea(minfo))
return;
- if (!m_DrawTopArea(md))
+ if (!m_DrawTopArea(minfo))
return;
- m->vd->md = md;
+ m->vd->minfo = minfo;
}
void CPhotoViewerView::m_OnNextBtnClicked(Evas_Object *obj, const char *emission, const char *source)
{
Eina_List *current_list, *next_list;
- struct mediadata *md;
+ CMediaInfo *minfo;
if (!m->vd)
return;
current_list = eina_list_data_find_list(m->vd->media_list,
- m->vd->md);
+ m->vd->minfo);
if (!current_list)
return;
if (!next_list)
next_list = m->vd->media_list;
- md = (struct mediadata *)eina_list_data_get(next_list);
+ minfo = (CMediaInfo *)eina_list_data_get(next_list);
- if (!m_DrawContentArea(md))
+ if (!m_DrawContentArea(minfo))
return;
- if (!m_DrawTopArea(md))
+ if (!m_DrawTopArea(minfo))
return;
- m->vd->md = md;
+ m->vd->minfo = minfo;
}
Evas_Object *internalimage;
const char *file_path;
int w, h;
+ CMediaInfo *minfo;
- if (!m->vd || !m->vd->md)
+ if (!m->vd || !m->vd->minfo)
return;
- file_path = mediadata_get_filepath(m->vd->md);
+ minfo = m->vd->minfo;
+
+ file_path = minfo->Path();
if (!file_path)
return;
evas_object_image_save(internalimage, file_path,
NULL, "quality=100");
- mediadata_update_to_db(m->vd->md);
-
- m_DrawContentArea(m->vd->md);
- m_DrawTopArea(m->vd->md);
+ m_DrawContentArea(minfo);
+ m_DrawTopArea(minfo);
if (image)
evas_object_del(image);
zd = (struct zoom_data *)calloc(1, sizeof(*zd));
if (!zd)
return;
- zd->md = m->vd->md;
+ zd->minfo = m->vd->minfo;
zd->zoom_level = zoom_level;
if (!CViewMgr::GetInstance()->PushView(VIEW_PHOTO_ZOOM, zd))
_ERR("VIEW_PHOTO_ZOOM view create failed");
elm_object_focus_set(firstbtn, EINA_TRUE);
}
-bool CPhotoViewerView::m_DrawContentArea(struct mediadata *md)
+bool CPhotoViewerView::m_DrawContentArea(CMediaInfo *minfo)
{
const char *file_path;
int width, height;
- if (!m->base || !md)
+ if (!m->base || !minfo)
return false;
- file_path = mediadata_get_filepath(md);
+ file_path = minfo->Path();
if (!file_path)
return false;
}
-bool CPhotoViewerView::m_DrawTopArea(struct mediadata *md)
+bool CPhotoViewerView::m_DrawTopArea(CMediaInfo *minfo)
{
const char *display_name;
char buf[20];
if (!m->base)
return false;
- display_name = mediadata_get_displayname(md);
+ display_name = minfo->Name();
if (!display_name)
return false;
elm_object_part_text_set(m->base, PART_TITLETEXT, display_name);
- created_time = mediadata_get_createdtime(md);
+ created_time = minfo->CreatedTime();
if (created_time > 0) {
localtime_r(&created_time, &tm);
strftime(buf, sizeof(buf), "%Y.%m.%d", &tm);
snprintf(buf, sizeof(buf), "%d x %d", width, height);
elm_object_part_text_set(m->base, PART_RESOLUTIONTEXT, buf);
- source = mediadata_get_source(md);
+ source = minfo->Source();
if (source == E_SOURCE_TV) {
elm_object_part_text_set(m->base, PART_SOURCETEXT, _("TV"));
} else {
snprintf(buf, sizeof(buf), "/%d", m->totalcount);
elm_object_part_text_set(m->base, PART_COUNTTEXT, buf);
- snprintf(buf, sizeof(buf), "%d", util_eina_list_get_index( m->vd->media_list, md) + 1);
+ snprintf(buf, sizeof(buf), "%d", util_eina_list_get_index( m->vd->media_list, minfo) + 1);
elm_object_part_text_set(m->base, PART_CURRENTTEXT, buf);
return true;
if (!m->vd)
return false;
- if (!m_DrawContentArea(m->vd->md))
+ if (!m_DrawContentArea(m->vd->minfo))
return false;
- if (!m_DrawTopArea(m->vd->md))
+ if (!m_DrawTopArea(m->vd->minfo))
return false;
if (!m_DrawBottomArea())
#include <Elementary.h>
#include <Eina.h>
+#include <media_content.h>
#include "util.h"
#include "menudef.h"
-
#include "timeout_handler.h"
+#include "ExtNameInfo.h"
+#include "mediainfo.h"
#include "mediadata.h"
#include "AppCommon.h"
#include "InputHandler.h"
bool CPhotoZoomView::m_DrawContent(void)
{
const char *file_path;
+ CMediaInfo *minfo;
- if (!m->eoBase || !m->data || !m->data->md)
+ if (!m->eoBase || !m->data || !m->data->minfo)
return false;
- file_path = mediadata_get_filepath(m->data->md);
+ minfo = m->data->minfo;
+
+ file_path = minfo->Path();
if (!file_path)
return false;
Evas *evas;
Evas_Object *ly;
const char *file_path;
+ CMediaInfo *minfo;
- if (!m->data || !m->eoBase || !m->data->md)
+ if (!m->data || !m->eoBase || !m->data->minfo)
return false;
- file_path = mediadata_get_filepath(m->data->md);
+ minfo = m->data->minfo;
+
+ file_path = minfo->Path();
if (!file_path)
return false;
#include <Elementary.h>
#include <Eina.h>
#include <aul.h>
+#include <media_content.h>
+#include "ExtNameInfo.h"
#include "util.h"
#include "menudef.h"
+#include "mediainfo.h"
#include "mediadata.h"
#include "viewdata.h"
static int _create_playlist(Eina_List *list)
{
- struct mediadata *md;
+ CMediaInfo *minfo;
Eina_List *l;
FILE *fp;
void *obj;
return -1;
EINA_LIST_FOREACH(list, l, obj) {
- md = (struct mediadata *)obj;
- fprintf(fp, "%s\n", mediadata_get_filepath(md));
+ minfo = (CMediaInfo *)obj;
+ fprintf(fp, "%s\n", minfo->Path());
}
fclose(fp);
if (_create_playlist(vd->media_list) != -1)
bundle_add(args, ARG_PLAYLIST_ID, PLAYLIST_FILE);
- path = mediadata_get_filepath(vd->md);
+ path = vd->minfo->Path();
bundle_add(args, ARG_URI, path);
r = aul_launch_app(VIDEO_PLAYER_APP, args);