apply CNameInfo and CSort 09/35309/2
authorJehun Lim <jehun.lim@samsung.com>
Thu, 12 Feb 2015 01:01:30 +0000 (10:01 +0900)
committerJehun Lim <jehun.lim@samsung.com>
Thu, 12 Feb 2015 01:16:04 +0000 (10:16 +0900)
Change-Id: I4df332a479fcba47de1c60ed888b5532be73e9de
Signed-off-by: Jehun Lim <jehun.lim@samsung.com>
37 files changed:
CMakeLists.txt
include/common/menudef.h
include/data/eventinfo.h [moved from include/data/eventdata.h with 53% similarity]
include/data/folderinfo.h [moved from include/data/videodata.h with 60% similarity]
include/data/imageinfo.h [moved from include/data/imagedata.h with 51% similarity]
include/data/mediadata.h
include/data/mediainfo.h [new file with mode: 0644]
include/data/videoinfo.h [new file with mode: 0644]
include/util/util.h
include/view/ctxtmenu-view/ctxtmenu_view.h
include/view/gallery-view/gallery_view.h
include/view/gallery-view/layout_all.h
include/view/gallery-view/layout_events.h
include/view/gallery-view/layout_folder.h
include/view/photo-viewer/photoviewer_view.h
include/view/photo-viewer/zoom_view.h
include/view/viewdata.h
src/common/menudef.cpp
src/data/eventdata.cpp [deleted file]
src/data/eventinfo.cpp [new file with mode: 0644]
src/data/folderinfo.cpp [new file with mode: 0644]
src/data/imagedata.cpp [deleted file]
src/data/imageinfo.cpp [new file with mode: 0644]
src/data/mediadata.cpp
src/data/mediainfo.cpp [new file with mode: 0644]
src/data/videodata.cpp [deleted file]
src/data/videoinfo.cpp [new file with mode: 0644]
src/main.cpp
src/util/util.cpp
src/view/ctxtmenu-view/ctxtmenu_view.cpp
src/view/gallery-view/gallery_view.cpp
src/view/gallery-view/layout_all.cpp
src/view/gallery-view/layout_events.cpp
src/view/gallery-view/layout_folder.cpp
src/view/photo-viewer/photoviewer_view.cpp
src/view/photo-viewer/zoom_view.cpp
src/view/video-player/video_player.cpp

index 1962dd5..5ce81b9 100644 (file)
@@ -71,9 +71,11 @@ src/view/photo-viewer/photoviewer_view.cpp
 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
index c1ce82c..8a81d83 100644 (file)
@@ -28,6 +28,7 @@
 #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,
@@ -63,4 +89,6 @@ extern const char *hover_btn_id[SOURCE_TEXT_SIZE + SORT_TEXT_SIZE];
 
 extern const char *layout_type[MAX_LAYOUT];
 
+extern const char *sort_id[MAX_SORT_ID];
+
 #endif
similarity index 53%
rename from include/data/eventdata.h
rename to include/data/eventinfo.h
index 5c743ea..aa32b44 100644 (file)
  * 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
similarity index 60%
rename from include/data/videodata.h
rename to include/data/folderinfo.h
index 01aa0cc..3c2af54 100644 (file)
  * 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
similarity index 51%
rename from include/data/imagedata.h
rename to include/data/imageinfo.h
index 6c72fe5..33b4492 100644 (file)
  * 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
index 8e951ef..e59d0f4 100644 (file)
 #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
diff --git a/include/data/mediainfo.h b/include/data/mediainfo.h
new file mode 100644 (file)
index 0000000..9e76953
--- /dev/null
@@ -0,0 +1,43 @@
+/*
+ * 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
diff --git a/include/data/videoinfo.h b/include/data/videoinfo.h
new file mode 100644 (file)
index 0000000..706678e
--- /dev/null
@@ -0,0 +1,40 @@
+/*
+ * 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
index 64f571e..f750437 100644 (file)
 #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);
@@ -33,5 +31,4 @@ int util_eina_list_get_index(Eina_List *list, void *data);
 char *util_get_time_string(int ms);
 Eina_List *util_create_media_list(Eina_List *media_list, int type);
 
-
 #endif
index 524b093..91161c9 100644 (file)
@@ -41,7 +41,7 @@ private:
 
        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);
index c14cc4b..b5866d2 100644 (file)
@@ -88,6 +88,7 @@ private:
        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);
index 669a27f..82beddd 100644 (file)
@@ -57,7 +57,7 @@ private:
        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);
index 3c86585..d7b727c 100644 (file)
@@ -56,6 +56,8 @@ private:
        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),
@@ -69,6 +71,7 @@ public:
        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);
index 076b626..a30bf2b 100644 (file)
@@ -53,6 +53,8 @@ private:
        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),
@@ -66,6 +68,7 @@ public:
        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);
index 397e31f..a8cbf31 100644 (file)
@@ -83,8 +83,8 @@ private:
                        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);
index a864513..158ef1a 100644 (file)
@@ -18,7 +18,7 @@
 #define __ZOOM_VIEW_H__
 
 struct zoom_data {
-       struct mediadata *md;
+       CMediaInfo *minfo;
        int zoom_level;
 };
 
index 9e5da33..e14e02c 100644 (file)
@@ -19,7 +19,7 @@
 
 struct view_data {
        Eina_List *media_list;
-       struct mediadata *md;
+       CMediaInfo *minfo;
 };
 
 #endif
index 735bfcc..8bc4da7 100644 (file)
@@ -70,3 +70,10 @@ const char *layout_type[MAX_LAYOUT] = {
        "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"
+};
diff --git a/src/data/eventdata.cpp b/src/data/eventdata.cpp
deleted file mode 100644 (file)
index 84c5658..0000000
+++ /dev/null
@@ -1,264 +0,0 @@
-/*
- * 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;
-}
diff --git a/src/data/eventinfo.cpp b/src/data/eventinfo.cpp
new file mode 100644 (file)
index 0000000..1d51070
--- /dev/null
@@ -0,0 +1,154 @@
+/*
+ * 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;
+}
diff --git a/src/data/folderinfo.cpp b/src/data/folderinfo.cpp
new file mode 100644 (file)
index 0000000..3eacb75
--- /dev/null
@@ -0,0 +1,131 @@
+/*
+ * 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;
+}
diff --git a/src/data/imagedata.cpp b/src/data/imagedata.cpp
deleted file mode 100644 (file)
index 4e80d8c..0000000
+++ /dev/null
@@ -1,143 +0,0 @@
-/*
- * 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;
-}
diff --git a/src/data/imageinfo.cpp b/src/data/imageinfo.cpp
new file mode 100644 (file)
index 0000000..fe6f0f8
--- /dev/null
@@ -0,0 +1,135 @@
+/*
+ * 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;
+}
index 579adfe..5d62ffc 100644 (file)
 
 #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;
 };
@@ -65,54 +49,82 @@ enum {
        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;
@@ -123,26 +135,25 @@ static int _create_filter(filter_h *filter,
        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:
@@ -154,217 +165,389 @@ static int _create_filter(filter_h *filter,
 
        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");
@@ -375,279 +558,131 @@ static bool _get_each_folder_info(media_folder_h folder, void *dt)
                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;
 }
diff --git a/src/data/mediainfo.cpp b/src/data/mediainfo.cpp
new file mode 100644 (file)
index 0000000..7eecb21
--- /dev/null
@@ -0,0 +1,164 @@
+/*
+ * 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;
+}
diff --git a/src/data/videodata.cpp b/src/data/videodata.cpp
deleted file mode 100644 (file)
index 21985be..0000000
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * 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;
-}
diff --git a/src/data/videoinfo.cpp b/src/data/videoinfo.cpp
new file mode 100644 (file)
index 0000000..b594cdc
--- /dev/null
@@ -0,0 +1,114 @@
+/*
+ * 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;
+}
index 8d7e3c6..93a8cee 100644 (file)
 #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"
@@ -111,6 +117,7 @@ public:
 
        virtual void OnTerminate(void)
        {
+               CSortMgr::Finalize();
                CViewMgr::Finalize();
 
                delete pGalleryView;
@@ -242,6 +249,8 @@ public:
                        elm_exit();
                }
 
+               CSortMgr::Initialize();
+
                pGalleryView = new CGalleryView(VIEW_GALLERY);
                pPhotoViewerView = new CPhotoViewerView(VIEW_PHOTO_VIEWER);
                pPhotoZoomView = new CPhotoZoomView(VIEW_PHOTO_ZOOM);
index 30c64b4..a64439d 100644 (file)
  * 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)
@@ -126,7 +129,7 @@ bool util_is_image_valid(Evas_Object *win, char *filepath)
 int util_get_media_count(Eina_List *list, int type)
 {
        Eina_List *l;
-       struct mediadata *md;
+       CMediaInfo *minfo;
        int count;
        void *obj;
 
@@ -135,9 +138,9 @@ int util_get_media_count(Eina_List *list, int type)
 
        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++;
        }
 
@@ -179,7 +182,7 @@ char *util_get_time_string(int ms)
 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)
@@ -187,10 +190,10 @@ Eina_List *util_create_media_list(Eina_List *media_list, int type)
 
        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;
index 7158b2e..daf2756 100644 (file)
 #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"
@@ -136,7 +140,7 @@ bool s_PackContentInfo(Evas_Object *box, char *info)
 int s_GetMediaIndex(Eina_List *list, int type, const char *name)
 {
        Eina_List *l;
-       struct mediadata *md;
+       CMediaInfo *minfo;
        int idx;
        void *obj;
 
@@ -145,12 +149,12 @@ int s_GetMediaIndex(Eina_List *list, int type, const char *name)
 
        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;
        }
 
@@ -160,27 +164,22 @@ int s_GetMediaIndex(Eina_List *list, int type, const char *name)
 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);
        }
@@ -191,24 +190,23 @@ char *CCtxtMenuView::sm_CbGridTextGet(void *data, Evas_Object *obj, const char *
 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;
@@ -264,27 +262,21 @@ Elm_Gengrid_Item_Class *CCtxtMenuView::_get_itemclass(int type)
        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);
 }
@@ -300,25 +292,25 @@ void CCtxtMenuView::sm_CbGridActivated(void *cookie, Elm_Object_Item *it,
 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);
@@ -335,11 +327,11 @@ void CCtxtMenuView::m_OnGridActivated(Elm_Object_Item *it,
 
 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));
@@ -347,18 +339,18 @@ void CCtxtMenuView::m_SlideshowBtnSelected(void)
                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));
@@ -367,7 +359,7 @@ void CCtxtMenuView::m_PlayBtnSelected(void)
 
        vd->media_list = util_create_media_list(
                m->vd->media_list, MEDIA_VIDEO);
-       vd->md = md;
+       vd->minfo = minfo;
 
        video_player_play(vd);
 }
@@ -378,7 +370,7 @@ bool CCtxtMenuView::m_DrawGengrid(void)
        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;
@@ -387,8 +379,8 @@ bool CCtxtMenuView::m_DrawGengrid(void)
        if (!grid)
                return false;
 
-       md = m->vd->md;
-       if (!md)
+       minfo = m->vd->minfo;
+       if (!minfo)
                return false;
 
        elm_gengrid_clear(grid);
@@ -401,22 +393,22 @@ bool CCtxtMenuView::m_DrawGengrid(void)
        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;
 
@@ -425,14 +417,14 @@ bool CCtxtMenuView::m_DrawGengrid(void)
                        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);
        }
@@ -456,7 +448,7 @@ bool CCtxtMenuView::m_LoadContentThumbnail(void)
        Evas_Object *photocam;
        int type;
        const char *thumbpath;
-       struct mediadata *md;
+       CMediaInfo *minfo;
 
        photocam = elm_photocam_add(m->base);
        if (!photocam) {
@@ -464,15 +456,15 @@ bool CCtxtMenuView::m_LoadContentThumbnail(void)
                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);
@@ -481,7 +473,7 @@ bool CCtxtMenuView::m_LoadContentThumbnail(void)
 
                break;
        case MEDIA_IMAGE:
-               thumbpath = mediadata_get_filepath(md);
+               thumbpath = minfo->Path();
 
                if (thumbpath)
                        elm_photocam_file_set(photocam, thumbpath);
@@ -510,10 +502,10 @@ bool CCtxtMenuView::m_LoadContentInfo(void)
        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);
@@ -526,21 +518,21 @@ bool CCtxtMenuView::m_LoadContentInfo(void)
 
        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));
@@ -551,7 +543,7 @@ bool CCtxtMenuView::m_LoadContentInfo(void)
        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);
@@ -564,14 +556,14 @@ bool CCtxtMenuView::m_LoadContentInfo(void)
        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;
 
@@ -612,10 +604,10 @@ bool CCtxtMenuView::m_DrawSelectedContent(void)
 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);
@@ -656,18 +648,18 @@ bool CCtxtMenuView::m_DrawRelatedContent(void)
 
 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;
@@ -685,13 +677,13 @@ bool CCtxtMenuView::m_DrawFuncBtn(void)
 {
        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);
index 3cc6b54..d24fc97 100644 (file)
 #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"
@@ -30,6 +31,8 @@
 #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"
@@ -68,8 +71,6 @@ struct SGalleryView {
        bool bfirsttime_launch;
 
        Eina_List *layout_info_list;
-       Eina_List *media_list;
-       Eina_List *filelist;
 
        int current_layout;
        int sort_type;
@@ -84,6 +85,8 @@ struct SGalleryView {
        CEventLayout *pEventLayout;
        CFolderLayout *pFolderLayout;
 
+       CMediadata *pMediadata;
+
        struct layout_data *ld;
 
        SGalleryView() {
@@ -100,8 +103,6 @@ struct SGalleryView {
                transit = NULL;
 
                layout_info_list = NULL;
-               media_list = NULL;
-               filelist = NULL;
 
                arglist = NULL;
 
@@ -393,11 +394,10 @@ void CGalleryView::m_SourceChange(int source_type)
 
        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);
@@ -519,12 +519,7 @@ bool CGalleryView::m_DrawLeftArea(void)
 
        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],
@@ -552,13 +547,11 @@ void CGalleryView::m_DrawContentArea(int ltype)
        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;
@@ -765,6 +758,15 @@ void CGalleryView::sm_CbLayoutShown(void *cookie, CBaseLayout *pBaseLayout)
                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);
@@ -813,6 +815,7 @@ bool CGalleryView::Create(void *data)
        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);
@@ -820,18 +823,20 @@ bool CGalleryView::Create(void *data)
        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;
        }
 
@@ -850,7 +855,7 @@ bool CGalleryView::Create(void *data)
 #endif
 
        if (!m_DrawItems()) {
-               mediadata_fini();
+               m->pMediadata->Destroy();
                goto error;
        }
 
@@ -873,13 +878,9 @@ void CGalleryView::Destroy(void)
 
        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);
index ecd6a73..0a3978b 100644 (file)
 #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"
@@ -85,29 +91,23 @@ struct SAllLayout {
 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);
        }
 
@@ -117,23 +117,22 @@ char *CAllLayout::sm_CbGridTextGet(void *data, Evas_Object *obj, const char *par
 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;
@@ -218,14 +217,14 @@ void CAllLayout::m_SendResultToApp(const char *filepath)
 
 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));
@@ -233,7 +232,7 @@ void CAllLayout::m_CreateCtxtMenu(void)
                return;
 
        vd->media_list = m->media_list;
-       vd->md = md;
+       vd->minfo = minfo;
 
        CViewMgr::GetInstance()->PushView(VIEW_CTXT_MENU, vd);
 }
@@ -249,29 +248,29 @@ void CAllLayout::sm_CbGridActivated(void *cookie, Elm_Object_Item *it,
 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);
@@ -340,9 +339,10 @@ bool CAllLayout::m_DrawGengridItems(void)
        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)
@@ -361,15 +361,16 @@ bool CAllLayout::m_DrawGengridItems(void)
        }
 
        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);
@@ -387,85 +388,13 @@ bool CAllLayout::m_DrawGengridItems(void)
        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)
@@ -473,7 +402,7 @@ void CAllLayout::DirectLaunch(const char *id)
        ASSERT(m);
 
        Elm_Object_Item *it;
-       struct mediadata *md;
+       CMediaInfo *minfo;
        const char *file_path;
 
        if (!id)
@@ -482,11 +411,11 @@ void CAllLayout::DirectLaunch(const char *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))
@@ -514,10 +443,11 @@ void CAllLayout::Focus(void)
 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();
 }
 
@@ -531,7 +461,7 @@ void CAllLayout::Update(struct layout_data *ld)
        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(),
@@ -625,8 +555,9 @@ bool CAllLayout::Create(CLayoutMgr *lmgr, void *data)
 
        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);
index 15cb51d..aea71de 100644 (file)
 #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"
@@ -51,6 +55,11 @@ struct SSigCallbackPair {
        void *cookie;
 };
 
+struct SMediaCallbackPair {
+       Eina_List *(*cb)(void *cookie);
+       void *cookie;
+};
+
 struct SEventLayout {
        Evas_Object *base;
 
@@ -70,7 +79,8 @@ struct SEventLayout {
 
        SFocusCallbackPair *FocusCb;
        SSortCallbackPair *SortCb;
-       SSigCallbackPair *Sigcb;
+       SSigCallbackPair *SigCb;
+       SMediaCallbackPair *MediaCb;
 
        SEventLayout() {
                base = NULL;
@@ -90,7 +100,8 @@ struct SEventLayout {
 
                FocusCb = NULL;
                SortCb = NULL;
-               Sigcb = NULL;
+               SigCb = NULL;
+               MediaCb = NULL;
        }
 
        ~SEventLayout() {}
@@ -99,32 +110,32 @@ struct 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;
 
@@ -139,8 +150,8 @@ char *CEventLayout::sm_CbGridTextGet(void *data, Evas_Object *obj, const char *p
 
 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;
@@ -148,32 +159,31 @@ Evas_Object *CEventLayout::sm_CbGridContentGet(void *data, Evas_Object *obj, con
        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;
@@ -239,8 +249,8 @@ void CEventLayout::sm_CbGridActivated(void *cookie, Elm_Object_Item *it,
 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];
@@ -248,23 +258,23 @@ void CEventLayout::m_OnGridActivated(Elm_Object_Item *it,
        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);
@@ -277,9 +287,9 @@ void CEventLayout::m_OnGridActivated(Elm_Object_Item *it,
                }
        } 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;
@@ -317,7 +327,7 @@ void CEventLayout::m_OnGridItemFocused(Elm_Object_Item *it,
 int CEventLayout::m_GetEventCount(Eina_List *event_list)
 {
        Eina_List *l;
-       struct eventdata *ed;
+       CEventInfo *einfo;
        int count;
        void *obj;
 
@@ -326,9 +336,9 @@ int CEventLayout::m_GetEventCount(Eina_List *event_list)
 
        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++;
        }
 
@@ -338,7 +348,7 @@ int CEventLayout::m_GetEventCount(Eina_List *event_list)
 int CEventLayout::m_GetMediaCount(Eina_List *media_list, int type)
 {
        Eina_List *l;
-       struct mediadata *md;
+       CMediaInfo *minfo;
        int count;
        void *obj;
 
@@ -347,9 +357,9 @@ int CEventLayout::m_GetMediaCount(Eina_List *media_list, int type)
 
        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++;
        }
 
@@ -387,11 +397,11 @@ Evas_Object *CEventLayout::m_DrawGengrid(Evas_Object *layout)
 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;
 
@@ -401,11 +411,11 @@ bool CEventLayout::m_DrawGengridItems(void)
 
        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);
@@ -413,29 +423,29 @@ bool CEventLayout::m_DrawGengridItems(void)
        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,
@@ -450,18 +460,26 @@ bool CEventLayout::m_DrawGengridItems(void)
 
 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;
@@ -479,13 +497,13 @@ void CEventLayout::DirectLaunch(const char *id)
        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))
@@ -525,6 +543,7 @@ void CEventLayout::Sort(int sort)
                return;
        }
 
+       m->event_list = m_SortList();
        m_DrawGengridItems();
 }
 
@@ -533,8 +552,9 @@ void CEventLayout::Update(struct layout_data *ld)
        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(),
@@ -597,7 +617,21 @@ void CEventLayout::SetSendSigCallback(void (*cb)(void *cookie, int sig), void *c
        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)
@@ -634,8 +668,9 @@ 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);
@@ -665,8 +700,6 @@ void CEventLayout::Destroy(void)
 {
        ASSERT(m);
 
-       eventdata_destroy_list(m->event_list);
-
        if (m->media_list)
                eina_list_free(m->media_list);
 
@@ -707,7 +740,7 @@ void CEventLayout::OnKeyDown(int id, Evas *e, Evas_Object *obj, Evas_Event_Key_D
        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;
@@ -768,7 +801,7 @@ void CEventLayout::OnFocused(int id, Evas_Object *obj, Elm_Object_Item *item)
 {
        switch (id) {
        case EVENT_GRID:
-               m->Sigcb->cb(m->Sigcb->cookie, E_HIGHLIGHT);
+               m->SigCb->cb(m->SigCb->cookie, E_HIGHLIGHT);
                break;
        default:
                break;
index 854d222..067cff4 100644 (file)
 #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"
@@ -26,6 +30,7 @@
 #include "BaseLayout.h"
 #include "LayoutMgr.h"
 #include "InputHandler.h"
+#include "Sort.h"
 #include "layout_all.h"
 #include "layout_folder.h"
 #include "gallery_view.h"
@@ -48,6 +53,11 @@ struct SSigCallbackPair {
        void *cookie;
 };
 
+struct SMediaCallbackPair {
+       Eina_List *(*cb)(void *cookie);
+       void *cookie;
+};
+
 struct SFolderLayout{
        Evas_Object *base;
 
@@ -55,6 +65,7 @@ struct SFolderLayout{
        Elm_Object_Item *current_item;
 
        struct arg_list *arglist;
+       Eina_List *folder_list;
        Eina_List *media_list;
        int sort;
 
@@ -67,6 +78,7 @@ struct SFolderLayout{
        SFocusCallbackPair *FocusCb;
        SSortCallbackPair *SortCb;
        SSigCallbackPair *Sigcb;
+       SMediaCallbackPair *MediaCb;
 
        SFolderLayout() {
                base = NULL;
@@ -74,6 +86,7 @@ struct SFolderLayout{
                current_item = NULL;
 
                arglist = NULL;
+               folder_list = NULL;
                media_list = NULL;
                sort = 0;
 
@@ -86,6 +99,7 @@ struct SFolderLayout{
                FocusCb = NULL;
                SortCb = NULL;
                Sigcb = NULL;
+               MediaCb = NULL;
        }
 
        ~SFolderLayout() {}
@@ -94,23 +108,23 @@ struct 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;
 
@@ -167,16 +181,16 @@ void CFolderLayout::sm_CbGridActivated(void *cookie, Elm_Object_Item *it,
 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;
@@ -212,22 +226,19 @@ void CFolderLayout::m_OnGridItemFocused(Elm_Object_Item *it,
 
 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++;
        }
 
@@ -265,10 +276,10 @@ Evas_Object *CFolderLayout::m_DrawGengrid(Evas_Object *layout)
 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;
 
@@ -278,22 +289,28 @@ bool CFolderLayout::m_DrawGengridItems(void)
 
        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,
@@ -307,89 +324,13 @@ bool CFolderLayout::m_DrawGengridItems(void)
        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)
@@ -424,7 +365,7 @@ void CFolderLayout::Sort(int sort)
                return;
        }
 
-       m->media_list = _sort_list(m->media_list, sort);
+       m->folder_list = m_SortList();
        m_DrawGengridItems();
 }
 
@@ -434,8 +375,8 @@ void CFolderLayout::Update(struct layout_data *ld)
 
        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(),
@@ -500,6 +441,20 @@ void CFolderLayout::SetSendSigCallback(void(*cb)(void *cookie, int sig), void *c
        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);
@@ -535,8 +490,8 @@ bool CFolderLayout::Create(CLayoutMgr *lmgr, void *data)
        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);
index 63bf10c..36be60d 100644 (file)
 #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"
@@ -123,13 +126,13 @@ void CPhotoViewerView::sm_CbPrevBtnClicked(void *dt, Evas_Object *obj, const cha
 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;
 
@@ -138,15 +141,15 @@ void CPhotoViewerView::m_OnPrevBtnClicked(Evas_Object *obj, const char *emission
        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;
 }
 
 
@@ -162,13 +165,13 @@ void CPhotoViewerView::sm_CbNextBtnClicked(void *dt, Evas_Object *obj, const cha
 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;
 
@@ -177,15 +180,15 @@ void CPhotoViewerView::m_OnNextBtnClicked(Evas_Object *obj, const char *emission
        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;
 }
 
 
@@ -275,11 +278,14 @@ void CPhotoViewerView::m_OnRotateBtnClicked(Evas_Object *obj, const char *emissi
        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;
 
@@ -307,10 +313,8 @@ void CPhotoViewerView::m_OnRotateBtnClicked(Evas_Object *obj, const char *emissi
        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);
@@ -360,7 +364,7 @@ void CPhotoViewerView::m_HandleZoomFunction(const char *btn_id)
                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");
@@ -469,15 +473,15 @@ void CPhotoViewerView::m_DrawCtxpopup(const char **text_arr, int size_arr, const
                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;
 
@@ -505,7 +509,7 @@ bool CPhotoViewerView::m_DrawContentArea(struct mediadata *md)
 }
 
 
-bool CPhotoViewerView::m_DrawTopArea(struct mediadata *md)
+bool CPhotoViewerView::m_DrawTopArea(CMediaInfo *minfo)
 {
        const char *display_name;
        char buf[20];
@@ -517,13 +521,13 @@ bool CPhotoViewerView::m_DrawTopArea(struct mediadata *md)
        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);
@@ -536,7 +540,7 @@ bool CPhotoViewerView::m_DrawTopArea(struct mediadata *md)
        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 {
@@ -546,7 +550,7 @@ bool CPhotoViewerView::m_DrawTopArea(struct mediadata *md)
        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;
@@ -662,10 +666,10 @@ bool CPhotoViewerView::m_DrawItems(void)
        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())
index 89bcdd6..6336e26 100644 (file)
 
 #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"
@@ -315,11 +317,14 @@ bool CPhotoZoomView::m_DrawArrow(void)
 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;
 
@@ -353,11 +358,14 @@ bool CPhotoZoomView::m_DrawZoomNavi(void)
        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;
 
index 813095a..5e83fbe 100644 (file)
 #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"
 
@@ -26,7 +29,7 @@
 
 static int _create_playlist(Eina_List *list)
 {
-       struct mediadata *md;
+       CMediaInfo *minfo;
        Eina_List *l;
        FILE *fp;
        void *obj;
@@ -39,8 +42,8 @@ static int _create_playlist(Eina_List *list)
                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);
@@ -69,7 +72,7 @@ Eina_Bool video_player_play(void *data)
        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);