src/util/playermgr.c
src/util/ctxpopup.c
src/util/progressbar.c
+src/data/datamgr.c
src/data/mediadata.c
src/grid/grid_movie.c
src/grid/grid_gallery.c
--- /dev/null
+/*
+ * Copyright (c) 2015 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 _AIR_MEDIAHUB_DATAMGR_H__
+#define _AIR_MEDIAHUB_DATAMGR_H__
+
+#include "data/mediadata.h"
+
+enum data_type {
+ E_DATA_MEDIA = 0,
+ E_DATA_MAX
+ /* Album and folder will be added later */
+};
+
+enum source_type {
+ E_SOURCE_INTERNAL = 0,
+ E_SOURCE_EXTERNAL,
+ E_SOURCE_ALL,
+ E_SOURCE_MAX
+};
+
+struct data_ops {
+ void *(*create)(const char *media_type, int source_type);
+ void (*destroy)(void *handle);
+ Eina_List *(*get_list)(void *handle);
+ int (*get_count)(void *handle, int type);
+ Eina_List *(*get_group)(void *handle, int type);
+ void (*free_group)(Eina_List *list);
+};
+
+struct datamgr {
+ void *handle;
+ struct data_ops *ops;
+};
+
+struct group_info {
+ char *name;
+ Eina_List *list;
+ void *data;
+};
+
+struct datamgr *datamgr_create(int data_type, const char *media_type,
+ int source_type);
+void datamgr_destroy(struct datamgr *dmgr);
+
+#endif /* _AIR_MEDIAHUB_DATAMGR_H__ */
#ifndef _AIR_MEDIAHUB_MEDIADATA_H__
#define _AIR_MEDIAHUB_MEDIADATA_H__
-#include <stdbool.h>
+struct data_ops;
-struct mediadata;
-
-enum media_type {
- E_MEDIA_PHOTO = 0,
- E_MEDIA_VIDEO,
- E_MEDIA_SOUND,
- E_MEDIA_MUSIC,
- E_MEDIA_OTHER,
+enum media_group_type {
+ E_MEDIA_DATE = 0,
+ E_MEDIA_NAME,
+ E_MEDIA_GENRE,
+ E_MEDIA_TYPE,
E_MEDIA_MAX
};
-enum source_type {
- E_SOURCE_INTERNAL = 0,
- E_SOURCE_EXTERNAL,
- E_SOURCE_ALL,
- E_SOURCE_MAX
-};
-
-enum sort_type {
- E_SORT_DATE = 0,
- E_SORT_NAME,
- E_SORT_MAX
-};
-
-enum list_type {
- E_LIST_DATE = 0,
- E_LIST_NAME,
- E_LIST_GENRE,
- E_LIST_TYPE,
- E_LIST_MAX
+enum media_file_type {
+ E_FILE_PHOTO = 0,
+ E_FILE_VIDEO,
+ E_FILE_SOUND,
+ E_FILE_MUSIC,
+ E_FILE_OTHER,
+ E_FILE_MAX
};
-struct group_info {
- char *name;
- Eina_List *list;
- void *data;
-};
-
-struct mediadata *mediadata_create(const char *media_type,
- int source_type, int sort_type);
-void mediadata_destroy(struct mediadata *md);
-
-Eina_List *mediadata_get_medialist(struct mediadata *md);
-int mediadata_get_media_count(struct mediadata *md, int media_type);
-
-Eina_List *mediadata_get_list(struct mediadata *md, int list_type);
-void mediadata_free_list(Eina_List *list);
+struct data_ops *mediadata_get_ops(void);
#endif /* _AIR_MEDIAHUB_MEDIADATA_H__ */
int item_num;
int grid_padding;
struct grid_class *gclass;
- Eina_List *(*get_item_list)(struct mediadata *md);
- void (*free_item_list)(Eina_List *list);
+ void *data;
+ Eina_List *(*get_item_list)(struct datamgr *dmgr);
+ void (*free_item_list)(struct datamgr *dmgr, Eina_List *list);
void (*key_down_cb)(void *data, Elm_Object_Item *it,
Evas_Event_Key_Down *ev);
void (*selected_cb)(void *data, Elm_Object_Item *it);
struct play_info_data *pdata;
struct grid_data *gdata;
- void *grid_cb_data;
};
struct listmgr *listmgr_create(Evas_Object *base, void *data);
--- /dev/null
+/*
+ * Copyright (c) 2015 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 <media_content.h>
+#include <app_debug.h>
+#include <app_media.h>
+
+#include "data/datamgr.h"
+
+struct _type_info {
+ struct data_ops *(*func_get_ops)(void);
+};
+
+static struct _type_info g_type_info[E_DATA_MAX] = {
+ [E_DATA_MEDIA] = {
+ .func_get_ops = mediadata_get_ops
+ }
+};
+
+struct datamgr *datamgr_create(int data_type, const char *media_type,
+ int source_type)
+{
+ struct datamgr *dmgr;
+ struct data_ops *ops;
+ void *handle;
+
+ if (!media_type || data_type < 0 || data_type >= E_DATA_MAX ||
+ source_type < 0 || source_type >= E_SOURCE_MAX) {
+ _ERR("invalid argument");
+ return NULL;
+ }
+
+ dmgr = calloc(1, sizeof(*dmgr));
+ if (!dmgr) {
+ _ERR("failed to allocate datamgr");
+ return NULL;
+ }
+
+ ops = g_type_info[data_type].func_get_ops();
+ if (!ops) {
+ _ERR("failed to get data operations");
+ free(dmgr);
+ return NULL;
+ }
+
+ if (!ops->create || !ops->destroy || !ops->get_list ||
+ !ops->get_count || !ops->get_group || !ops->free_group) {
+ _ERR("invalid data operations");
+ free(dmgr);
+ return NULL;
+ }
+
+ handle = ops->create(media_type, source_type);
+ if (!handle) {
+ _ERR("failed to create data handle");
+ free(dmgr);
+ return NULL;
+ }
+
+ dmgr->ops = ops;
+ dmgr->handle = handle;
+
+ return dmgr;
+}
+
+void datamgr_destroy(struct datamgr *dmgr)
+{
+ if (!dmgr) {
+ _ERR("failed to get datamgr");
+ return;
+ }
+
+ dmgr->ops->destroy(dmgr->handle);
+ free(dmgr);
+}
#include <app_debug.h>
#include <app_media.h>
-#include "data/mediadata.h"
+#include "data/datamgr.h"
#define STR_IMAGE_NAME "Photo"
#define STR_VIDEO_NAME "Video"
static char *_get_type(app_media_info *);
static void *_get_data_type(app_media_info *);
-enum _filter_type {
- E_FILTER_FOLDER = 0,
- E_FILTER_MEDIA
-};
-
struct mediadata {
Eina_List *media_list;
+ int media_count[E_FILE_MAX];
- int media_count[E_MEDIA_MAX];
-};
-
-struct _data {
const char *media_type;
int source_type;
- int sort_type;
- Eina_List *media_list;
-};
-
-struct _sort_info {
- int order_type;
- const char *order_keyword;
};
struct _list_info {
group_name_get name_get;
};
-static struct _sort_info g_sort_info[E_SORT_MAX] = {
- [E_SORT_DATE] = {
- .order_type = MEDIA_CONTENT_ORDER_DESC,
- .order_keyword = MEDIA_MODIFIED_TIME,
- },
- [E_SORT_NAME] = {
- .order_type = MEDIA_CONTENT_ORDER_ASC,
- .order_keyword = MEDIA_TITLE,
- }
-};
-
-static struct _list_info g_list_info[E_LIST_MAX] = {
- [E_LIST_DATE] = {
+static struct _list_info g_group_info[E_MEDIA_MAX] = {
+ [E_MEDIA_DATE] = {
.sort_cmp_cb = _compare_cb_date,
.media_cmp = _compare_time,
.name_get = _get_time,
.data_get = _get_data_time,
},
- [E_LIST_NAME] = {
+ [E_MEDIA_NAME] = {
.sort_cmp_cb = _compare_cb_name,
.media_cmp = _compare_title,
.name_get = _get_title,
.data_get = _get_data_title,
},
- [E_LIST_GENRE] = {
+ [E_MEDIA_GENRE] = {
.sort_cmp_cb = _compare_cb_genre,
.media_cmp = _compare_genre,
.name_get = _get_genre,
.data_get = _get_data_genre,
},
- [E_LIST_TYPE] = {
+ [E_MEDIA_TYPE] = {
.sort_cmp_cb = _compare_cb_type,
.media_cmp = _compare_type,
.name_get = _get_type,
},
};
-static bool _create_filter(struct _data *data, filter_h *filter, int type)
+static bool _create_filter(struct mediadata *md, filter_h *filter)
{
filter_h tmp_filter;
int ret;
return false;
}
- snprintf(buf, sizeof(buf), "%s", data->media_type);
+ snprintf(buf, sizeof(buf), "%s", md->media_type);
- if (type == E_FILTER_FOLDER && data->source_type != E_SOURCE_ALL) {
+ if (md->source_type != E_SOURCE_ALL) {
char s[64];
snprintf(s, sizeof(s), " AND MEDIA_STORAGE_TYPE=%d",
- data->source_type);
+ md->source_type);
+
strcat(buf, s);
}
media_filter_set_condition(tmp_filter, buf,
MEDIA_CONTENT_COLLATE_DEFAULT);
- media_filter_set_order(tmp_filter,
- g_sort_info[data->sort_type].order_type,
- g_sort_info[data->sort_type].order_keyword,
- MEDIA_CONTENT_COLLATE_NOCASE);
-
*filter = tmp_filter;
return true;
{
Eina_List *sorted_list;
- sorted_list = eina_list_sort(list, 0, g_list_info[sort].sort_cmp_cb);
+ sorted_list = eina_list_sort(list, 0, g_group_info[sort].sort_cmp_cb);
return sorted_list;
}
-static bool _get_each_media_info(media_info_h media_h, void *dt)
+static bool _get_each_media_info(media_info_h media_h, void *data)
{
+ Eina_List **list;
app_media *am;
- struct _data *data;
- if (!dt)
+ if (!data)
return false;
- data = dt;
+ list = data;
am = app_media_create(media_h);
if (!am) {
return false;
}
- data->media_list = eina_list_append(data->media_list, am);
+ *list = eina_list_append(*list, am);
return true;
}
-static bool _get_medialist(struct _data *data)
+static bool _get_medialist(struct mediadata *md)
{
+ Eina_List *list;
filter_h filter;
int ret;
- if (!_create_filter(data, &filter, E_FILTER_MEDIA)) {
+ if (!_create_filter(md, &filter)) {
_ERR("failed to create filter");
return false;
}
+ list = NULL;
ret = media_info_foreach_media_from_db(filter,
- _get_each_media_info, data);
+ _get_each_media_info, &list);
if (ret != MEDIA_CONTENT_ERROR_NONE) {
- _ERR("failed to get folder info");
+ _ERR("failed to get media info");
media_filter_destroy(filter);
return false;
}
+ md->media_list = list;
+
media_filter_destroy(filter);
return true;
}
-struct mediadata *mediadata_create(const char *media_type,
- int source_type, int sort_type)
+static void *_create(const char *media_type, int source_type)
{
struct mediadata *md;
- struct _data data;
int ret;
- if (!media_type || source_type < 0 || source_type >= E_SOURCE_MAX
- || sort_type < 0 || sort_type >= E_SORT_MAX) {
+ if (!media_type || source_type < 0 || source_type >= E_SOURCE_MAX) {
_ERR("invalid argument");
return NULL;
}
md = calloc(1, sizeof(*md));
if (!md) {
- _ERR("failed to create mediadata");
+ _ERR("failed to allocate md");
return NULL;
}
+ md->media_type = media_type;
+ md->source_type = source_type;
+
ret = media_content_connect();
if (ret != MEDIA_CONTENT_ERROR_NONE) {
_ERR("failed to connect to media content");
return NULL;
}
- data.media_type = media_type;
- data.source_type = source_type;
- data.sort_type = sort_type;
- data.media_list = NULL;
-
- if (!_get_medialist(&data)) {
- _ERR("failed to get folderlist");
+ if (!_get_medialist(md)) {
+ _ERR("failed to get medialist");
free(md);
media_content_disconnect();
return NULL;
media_content_disconnect();
- md->media_list = eina_list_clone(data.media_list);
-
- eina_list_free(data.media_list);
-
- return md;
+ return (void *)md;
}
-void mediadata_destroy(struct mediadata *md)
+static void _destroy(void *handle)
{
- if (!md) {
- _ERR("failed to get mediadata");
+ app_media *am;
+ struct mediadata *md;
+
+ if (!handle) {
+ _ERR("failed to get mediadata handle");
return;
}
- eina_list_free(md->media_list);
+ md = handle;
+
+ EINA_LIST_FREE(md->media_list, am)
+ app_media_destroy(am);
+
+ free(md);
}
-Eina_List *mediadata_get_medialist(struct mediadata *md)
+static Eina_List *_get_list(void *handle)
{
- if (!md) {
- _ERR("failed to get mediadata");
+ struct mediadata *md;
+
+ if (!handle) {
+ _ERR("failed to get mediadata handle");
return NULL;
}
+ md = handle;
+
return md->media_list;
}
-Eina_List *mediadata_get_list(struct mediadata *md, int list_type)
+static int _get_count(void *handle, int type)
+{
+ struct mediadata *md;
+
+ if (!handle) {
+ _ERR("failed to get mediadata handle");
+ return -1;
+ }
+
+ if (type < 0 || type >= E_MEDIA_MAX) {
+ _ERR("invalid argument");
+ return -1;
+ }
+
+ md = handle;
+
+ return md->media_count[type];
+}
+
+static void _free_group_list(Eina_List *list)
+{
+ Eina_List *l;
+ struct group_info *gi;
+
+ EINA_LIST_FOREACH(list, l, gi) {
+ free(gi->name);
+ free(gi->data);
+ eina_list_free(gi->list);
+
+ free(gi);
+ }
+}
+
+static void _free_group(Eina_List *list)
+{
+ _free_group_list(list);
+}
+
+static Eina_List *_get_group(void *handle, int type)
{
Eina_List *list, *l;
+ struct mediadata *md;
struct group_info *gi;
app_media *am;
app_media_info *info;
- if (!md) {
- _ERR("failed to get mediadata");
+ if (!handle) {
+ _ERR("failed to get mediadata handle");
return NULL;
}
- if (list_type < 0 || list_type >= E_LIST_MAX) {
+ if (type < 0 || type >= E_MEDIA_MAX) {
_ERR("invalid argument");
return NULL;
}
- md->media_list = _sort_list(md->media_list, list_type);
+ md = handle;
+
+ md->media_list = _sort_list(md->media_list, type);
gi = NULL;
list = NULL;
info = app_media_get_info(am);
if (!info) {
_ERR("failed to get media info");
- mediadata_free_list(list);
+ _free_group_list(list);
return NULL;
}
- if (g_list_info[list_type].media_cmp(gi, info)) {
+ if (g_group_info[type].media_cmp(gi, info)) {
gi = calloc(1, sizeof(*gi));
if (!gi) {
_ERR("failed to create group info");
- mediadata_free_list(list);
+ _free_group_list(list);
return NULL;
}
- gi->name = g_list_info[list_type].name_get(info);
- gi->data = g_list_info[list_type].data_get(info);
+ gi->name = g_group_info[type].name_get(info);
+ gi->data = g_group_info[type].data_get(info);
list = eina_list_append(list, gi);
}
return list;
}
-int mediadata_get_media_count(struct mediadata *md, int media_type)
-{
- if (!md) {
- _ERR("failed to get mediadata");
- return -1;
- }
-
- if (media_type < 0 || media_type >= E_MEDIA_MAX) {
- _ERR("invalid argument");
- return -1;
- }
-
- return md->media_count[media_type];
-}
+static struct data_ops _ops = {
+ .create = _create,
+ .destroy = _destroy,
+ .get_list = _get_list,
+ .get_count = _get_count,
+ .get_group = _get_group,
+ .free_group = _free_group,
+};
-void mediadata_free_list(Eina_List *list)
+struct data_ops *mediadata_get_ops(void)
{
- Eina_List *l;
- struct group_info *gi;
-
- EINA_LIST_FOREACH(list, l, gi) {
- free(gi->name);
- free(gi->data);
- eina_list_free(gi->list);
-
- free(gi);
- }
-}
+ return &_ops;
+};
#include "define.h"
#include "view.h"
-#include "data/mediadata.h"
+#include "data/datamgr.h"
#include "grid/grid.h"
#include "util/util.h"
return eo;
}
-static Eina_List *_get_event_list(struct mediadata *md)
+static Eina_List *_get_event_list(struct datamgr *dmgr)
{
- if (!md) {
+ if (!dmgr) {
_ERR("invalid argument");
return NULL;
}
- return mediadata_get_list(md, E_LIST_DATE);
+ return dmgr->ops->get_group(dmgr->handle, E_MEDIA_DATE);
}
-static Eina_List *_get_type_list(struct mediadata *md)
+static Eina_List *_get_type_list(struct datamgr *dmgr)
{
- if (!md) {
+ if (!dmgr) {
_ERR("invalid argument");
return NULL;
}
- return mediadata_get_list(md, E_LIST_TYPE);
+ return dmgr->ops->get_group(dmgr->handle, E_MEDIA_TYPE);
}
-static void _free_media_list(Eina_List *list)
+static void _free_media_list(struct datamgr *dmgr, Eina_List *list)
{
- mediadata_free_list(list);
+ if (!dmgr) {
+ _ERR("invalid argument");
+ return;
+ }
+
+ dmgr->ops->free_group(list);
}
static void _key_down_cb(void *data, Elm_Object_Item *it,
Evas_Event_Key_Down *ev)
{
struct view_update_data vdata;
- struct mediadata *md;
+ struct datamgr *dmgr;
app_media *am;
if (!data || !ev) {
return;
}
- md = data;
+ dmgr = data;
if (!strcmp(ev->keyname, KEY_MENU) ||
!strcmp(ev->keyname, KEY_CONTEXT_MENU)) {
return;
}
- vdata.list = mediadata_get_medialist(md);
+ vdata.list = dmgr->ops->get_list(dmgr->handle);
vdata.index = util_get_media_index(vdata.list, am);
viewmgr_update_view(VIEW_ACTION_MENU, UPDATE_CONTENT, &vdata);
static void _selected_cb(void *data, Elm_Object_Item *it)
{
struct view_update_data vdata;
- struct mediadata *md;
+ struct datamgr *dmgr;
app_media *am;
if (!data || !it) {
return;
}
- md = data;
+ dmgr = data;
am = elm_object_item_data_get(it);
if (!am) {
return;
}
- vdata.list = mediadata_get_medialist(md);
+ vdata.list = dmgr->ops->get_list(dmgr->handle);
vdata.index = util_get_media_index(vdata.list, am);
viewmgr_update_view(VIEW_VIEWER, UPDATE_CONTENT, &vdata);
#include "define.h"
#include "view.h"
-#include "data/mediadata.h"
+#include "data/datamgr.h"
#include "grid/grid.h"
#include "util/util.h"
return eo;
}
-static Eina_List *_get_name_list(struct mediadata *md)
+static Eina_List *_get_name_list(struct datamgr *dmgr)
{
- if (!md) {
+ if (!dmgr) {
_ERR("invalid argument");
return NULL;
}
- return mediadata_get_list(md, E_LIST_NAME);
+ return dmgr->ops->get_group(dmgr->handle, E_MEDIA_NAME);
}
-static Eina_List *_get_genre_list(struct mediadata *md)
+static Eina_List *_get_genre_list(struct datamgr *dmgr)
{
Eina_List *list;
struct group_info *gi;
- if (!md) {
+ if (!dmgr) {
_ERR("invalid argument");
return NULL;
}
}
gi->name = STR_GENRE_NAME;
- gi->list = mediadata_get_list(md, E_LIST_GENRE);
+ gi->list = dmgr->ops->get_group(dmgr->handle, E_MEDIA_GENRE);
list = NULL;
list = eina_list_append(list, gi);
return list;
}
-static Eina_List *_get_date_list(struct mediadata *md)
+static Eina_List *_get_date_list(struct datamgr *dmgr)
{
- if (!md) {
+ if (!dmgr) {
_ERR("invalid argument");
return NULL;
}
- return mediadata_get_list(md, E_LIST_DATE);
+ return dmgr->ops->get_group(dmgr->handle, E_MEDIA_DATE);
}
-static void _free_media_list(Eina_List *list)
+static void _free_media_list(struct datamgr *dmgr, Eina_List *list)
{
- mediadata_free_list(list);
+ if (!dmgr) {
+ _ERR("invalid argument");
+ return;
+ }
+
+ dmgr->ops->free_group(list);
}
-static void _free_group_list(Eina_List *list)
+static void _free_group_list(struct datamgr *dmgr, Eina_List *list)
{
Eina_List *l;
struct group_info *gi;
+ if (!dmgr) {
+ _ERR("invalid argument");
+ return;
+ }
+
EINA_LIST_FOREACH(list, l, gi) {
- mediadata_free_list(gi->list);
+ dmgr->ops->free_group(gi->list);
free(gi);
}
}
Evas_Event_Key_Down *ev)
{
struct view_update_data vdata;
- struct mediadata *md;
+ struct datamgr *dmgr;
app_media *am;
if (!data || !ev) {
return;
}
- md = data;
+ dmgr = data;
if (!strcmp(ev->keyname, KEY_MENU) ||
!strcmp(ev->keyname, KEY_CONTEXT_MENU)) {
return;
}
- vdata.list = mediadata_get_medialist(md);
+ vdata.list = dmgr->ops->get_list(dmgr->handle);
vdata.index = util_get_media_index(vdata.list, am);
viewmgr_update_view(VIEW_ACTION_MENU, UPDATE_CONTENT, &vdata);
static void _selected_cb(void *data, Elm_Object_Item *it)
{
struct view_update_data vdata;
- struct mediadata *md;
+ struct datamgr *dmgr;
app_media *am;
if (!data || !it) {
return;
}
- md = data;
+ dmgr = data;
am = elm_object_item_data_get(it);
if (!am) {
return;
}
- vdata.list = mediadata_get_medialist(md);
+ vdata.list = dmgr->ops->get_list(dmgr->handle);
vdata.index = util_get_media_index(vdata.list, am);
viewmgr_update_view(VIEW_VIEWER, UPDATE_CONTENT, &vdata);
#include "define.h"
#include "view.h"
-#include "data/mediadata.h"
+#include "data/datamgr.h"
#include "grid/grid.h"
#include "util/util.h"
return eo;
}
-static Eina_List *_get_item_list(struct mediadata *md)
+static Eina_List *_get_item_list(struct datamgr *dmgr)
{
- if (!md) {
+ if (!dmgr) {
_ERR("invalid argument");
return NULL;
}
- return mediadata_get_list(md, E_LIST_NAME);
+ return dmgr->ops->get_group(dmgr->handle, E_MEDIA_NAME);
}
-static void _free_item_list(Eina_List *list)
+static void _free_item_list(struct datamgr *dmgr, Eina_List *list)
{
- mediadata_free_list(list);
+ if (!dmgr) {
+ _ERR("invalid argument");
+ return;
+ }
+
+ dmgr->ops->free_group(list);
}
static void _key_down_cb(void *data, Elm_Object_Item *it,
Evas_Event_Key_Down *ev)
{
struct view_update_data vdata;
- struct mediadata *md;
+ struct datamgr *dmgr;
app_media *am;
if (!data || !ev) {
return;
}
- md = data;
+ dmgr = data;
if (!strcmp(ev->keyname, KEY_MENU) ||
!strcmp(ev->keyname, KEY_CONTEXT_MENU)) {
return;
}
- vdata.list = mediadata_get_medialist(md);
+ vdata.list = dmgr->ops->get_list(dmgr->handle);
vdata.index = util_get_media_index(vdata.list, am);
viewmgr_update_view(VIEW_ACTION_MENU, UPDATE_CONTENT, &vdata);
static void _selected_cb(void *data, Elm_Object_Item *it)
{
struct view_update_data vdata;
- struct mediadata *md;
+ struct datamgr *dmgr;
app_media *am;
if (!data || !it) {
return;
}
- md = data;
+ dmgr = data;
am = elm_object_item_data_get(it);
if (!am) {
return;
}
- vdata.list = mediadata_get_medialist(md);
+ vdata.list = dmgr->ops->get_list(dmgr->handle);
vdata.index = util_get_media_index(vdata.list, am);
viewmgr_update_view(VIEW_MPLAYER, UPDATE_CONTENT, &vdata);
#include "define.h"
#include "layout.h"
#include "view.h"
-#include "data/mediadata.h"
+#include "data/datamgr.h"
#include "grid/grid.h"
#include "util/listmgr.h"
#include "util/util.h"
struct listmgr *listmgr;
struct listmgr_data *ldata;
- struct mediadata *md;
+ struct datamgr *dmgr[E_DATA_MAX];
Eina_List *media_list;
{
app_media_info *info;
struct view_update_data vdata;
+ struct datamgr *dmgr;
info = app_media_get_info(am);
if (!info) {
return;
}
- vdata.list = mediadata_get_medialist(priv->md);
+ dmgr = priv->dmgr[E_DATA_MEDIA];
+ if (!dmgr)
+ return;
+
+ vdata.list = dmgr->ops->get_list(dmgr->handle);
vdata.index = util_get_media_index_from_id(vdata.list, info->media_id);
viewmgr_update_view(VIEW_VIEWER, UPDATE_CONTENT, &vdata);
data->menu_btn = priv->menu_btn;
data->view_btn = priv->view_btn;
- data->grid_cb_data = priv->md;
-
return data;
}
static void _update_content_info(struct _priv *priv)
{
+ struct datamgr *dmgr;
int photo, video;
char buf[128];
- photo = mediadata_get_media_count(priv->md, E_MEDIA_PHOTO);
- video = mediadata_get_media_count(priv->md, E_MEDIA_VIDEO);
+ dmgr = priv->dmgr[E_DATA_MEDIA];
+ if (!dmgr)
+ return;
+
+ photo = dmgr->ops->get_count(dmgr->handle, E_FILE_PHOTO);
+ video = dmgr->ops->get_count(dmgr->handle, E_FILE_VIDEO);
if (photo < 0 || video < 0) {
_ERR("failed to get media count");
static void _clear_content_list(struct _priv *priv)
{
if (priv->media_list) {
- priv->gdata->free_item_list(priv->media_list);
+ priv->gdata->free_item_list(priv->dmgr[E_DATA_MEDIA],
+ priv->media_list);
priv->media_list = NULL;
}
priv->gdata = get_gallery_grid_data(priv->view_mode);
- list = priv->gdata->get_item_list(priv->md);
+ list = priv->gdata->get_item_list(priv->dmgr[E_DATA_MEDIA]);
if (!list) {
elm_object_part_text_set(priv->layout,
PART_NOCONTENT, TEXT_NOCONTENT);
return;
}
+ priv->gdata->data = priv->dmgr[E_DATA_MEDIA];
+
if (!listmgr_update_content_list(priv->listmgr, list, priv->gdata))
_ERR("failed to update list area");
_update_content_info(priv);
}
-static bool _create(layoutmgr *lmgr, void *data)
+static void _destroy_datamgr(struct _priv *priv)
+{
+ int i;
+
+ for (i = 0; i < E_DATA_MAX; i++)
+ datamgr_destroy(priv->dmgr[i]);
+}
+
+static void _destroy_utils(struct _priv *priv)
+{
+ _destroy_datamgr(priv);
+
+ listmgr_destroy(priv->listmgr);
+ free(priv->ldata);
+}
+
+static bool _create_utils(struct _priv *priv)
{
- struct layout_data *ld;
struct listmgr *listmgr;
struct listmgr_data *ldata;
- struct mediadata *md;
+ struct datamgr *dmgr;
+ int i;
+
+ for (i = 0; i < E_DATA_MAX; i++) {
+ dmgr = datamgr_create(i, LIST_MEDIA_COND, E_SOURCE_ALL);
+ if (!dmgr) {
+ _ERR("failed to create datamgr");
+ _destroy_datamgr(priv);
+ return false;
+ }
+
+ priv->dmgr[i] = dmgr;
+ }
+
+ ldata = _create_listmgr_data(priv);
+ if (!ldata) {
+ _ERR("failed to create listmgr data");
+ _destroy_datamgr(priv);
+ return false;
+ }
+
+ listmgr = listmgr_create(priv->layout, (void *)ldata);
+ if (!listmgr) {
+ _ERR("failed to create listmgr");
+ _destroy_datamgr(priv);
+ free(ldata);
+ return false;
+ }
+
+ priv->ldata = ldata;
+ priv->listmgr = listmgr;
+
+ return true;
+}
+
+static bool _create(layoutmgr *lmgr, void *data)
+{
+ struct layout_data *ld;
struct _priv *priv;
Evas_Object *base, *layout;
goto err2;
}
- md = mediadata_create(LIST_MEDIA_COND, E_SOURCE_ALL, E_SORT_DATE);
- if (!md) {
- _ERR("failed to create mediadata");
- goto err2;
- }
-
priv->base = base;
priv->layout = layout;
priv->menu_btn = ld->top;
priv->view_btn = ld->bottom;
priv->lmgr = lmgr;
- priv->md = md;
priv->gdata = get_gallery_grid_data(E_GALLERY_EVENT);
- ldata = _create_listmgr_data(priv);
- if (!ldata) {
- _ERR("failed to create listmgr data");
- goto err3;
- }
-
- listmgr = listmgr_create(layout, (void *)ldata);
- if (!listmgr) {
- _ERR("failed to create listmgr");
- free(ldata);
- goto err3;
+ if (!_create_utils(priv)) {
+ _ERR("failed to create utils");
+ goto err2;
}
- priv->ldata = ldata;
- priv->listmgr = listmgr;
-
layoutmgr_set_layout_data(lmgr, LAYOUT_GALLERY, priv);
- if (!listmgr_draw_list_area(listmgr)) {
+ if (!listmgr_draw_list_area(priv->listmgr)) {
_ERR("failed to draw list area");
- free(ldata);
- listmgr_destroy(listmgr);
goto err3;
}
return true;
err3:
- mediadata_destroy(md);
+ _destroy_utils(priv);
err2:
evas_object_del(layout);
err:
priv = layout_data;
- priv->gdata->free_item_list(priv->media_list);
- mediadata_destroy(priv->md);
+ priv->gdata->free_item_list(priv->dmgr[E_DATA_MEDIA], priv->media_list);
- listmgr_destroy(priv->listmgr);
- free(priv->ldata);
+ _destroy_utils(priv);
evas_object_del(priv->layout);
#include "define.h"
#include "layout.h"
#include "view.h"
-#include "data/mediadata.h"
+#include "data/datamgr.h"
#include "grid/grid.h"
#include "util/listmgr.h"
#include "util/progressbar.h"
struct listmgr *listmgr;
struct listmgr_data *ldata;
- struct mediadata *md;
+ struct datamgr *dmgr[E_DATA_MAX];
struct progressbar *prog;
{
app_media_info *info;
struct view_update_data vdata;
+ struct datamgr *dmgr;
info = app_media_get_info(am);
if (!info) {
return;
}
- vdata.list = mediadata_get_medialist(priv->md);
+ dmgr = priv->dmgr[E_DATA_MEDIA];
+ if (!dmgr)
+ return;
+
+ vdata.list = dmgr->ops->get_list(dmgr->handle);
vdata.index = util_get_media_index_from_id(vdata.list, info->media_id);
viewmgr_update_view(VIEW_VIEWER, UPDATE_CONTENT, &vdata);
{
struct _priv *priv;
struct view_update_data vdata;
+ struct datamgr *dmgr;
if (!data || !obj)
return;
priv = data;
- vdata.list = mediadata_get_medialist(priv->md);
+ dmgr = priv->dmgr[E_DATA_MEDIA];
+ if (!dmgr)
+ return;
+
+ vdata.list = dmgr->ops->get_list(dmgr->handle);
vdata.index = util_get_media_index(vdata.list, priv->recent_info);
viewmgr_update_view(VIEW_VIEWER, UPDATE_CONTENT, &vdata);
pdata->cb_data = priv;
data->pdata = pdata;
- data->grid_cb_data = priv->md;
return data;
static void _update_content_info(struct _priv *priv)
{
+ struct datamgr *dmgr;
int count;
char buf[128];
- count = mediadata_get_media_count(priv->md, E_MEDIA_VIDEO);
+ dmgr = priv->dmgr[E_DATA_MEDIA];
+ if (!dmgr)
+ return;
+
+ count = dmgr->ops->get_count(dmgr->handle, E_FILE_VIDEO);
if (count < 0) {
_ERR("failed to get media count");
return;
static void _clear_content_list(struct _priv *priv)
{
if (priv->media_list) {
- priv->gdata->free_item_list(priv->media_list);
+ priv->gdata->free_item_list(priv->dmgr[E_DATA_MEDIA],
+ priv->media_list);
priv->media_list = NULL;
}
priv->gdata = get_movie_grid_data(priv->view_mode);
- list = priv->gdata->get_item_list(priv->md);
+ list = priv->gdata->get_item_list(priv->dmgr[E_DATA_MEDIA]);
if (!list) {
elm_object_part_text_set(priv->layout,
PART_NOCONTENT, TEXT_NOCONTENT);
return;
}
+ priv->gdata->data = priv->dmgr[E_DATA_MEDIA];
+
if (!listmgr_update_content_list(priv->listmgr, list, priv->gdata)) {
_ERR("failed to update list area");
return;
Eina_List *list;
app_media *am;
app_media_info *info;
+ struct datamgr *dmgr;
+
+ dmgr = priv->dmgr[E_DATA_MEDIA];
+ if (!dmgr)
+ return;
- list = mediadata_get_medialist(priv->md);
+ list = dmgr->ops->get_list(dmgr->handle);
if (id)
am = util_find_media_info(list, id);
_ERR("failed to update recently watched item");
}
-static bool _create(layoutmgr *lmgr, void *data)
+static void _destroy_datamgr(struct _priv *priv)
+{
+ int i;
+
+ for (i = 0; i < E_DATA_MAX; i++)
+ datamgr_destroy(priv->dmgr[i]);
+}
+
+static void _destroy_utils(struct _priv *priv)
+{
+ _destroy_datamgr(priv);
+
+ listmgr_destroy(priv->listmgr);
+ free(priv->ldata->pdata);
+ free(priv->ldata);
+}
+
+static bool _create_utils(struct _priv *priv)
{
- struct layout_data *ld;
struct listmgr *listmgr;
struct listmgr_data *ldata;
- struct mediadata *md;
+ struct datamgr *dmgr;
+ int i;
+
+ for (i = 0; i < E_DATA_MAX; i++) {
+ dmgr = datamgr_create(i, LIST_MEDIA_COND, E_SOURCE_ALL);
+ if (!dmgr) {
+ _ERR("failed to create datamgr");
+ _destroy_datamgr(priv);
+ return false;
+ }
+
+ priv->dmgr[i] = dmgr;
+ }
+
+ ldata = _create_listmgr_data(priv);
+ if (!ldata) {
+ _ERR("failed to create listmgr data");
+ _destroy_datamgr(priv);
+ return false;
+ }
+
+ listmgr = listmgr_create(priv->layout, (void *)ldata);
+ if (!listmgr) {
+ _ERR("failed to create listmgr");
+ _destroy_datamgr(priv);
+ free(ldata);
+ return false;
+ }
+
+ priv->ldata = ldata;
+ priv->listmgr = listmgr;
+
+ return true;
+}
+
+static bool _create(layoutmgr *lmgr, void *data)
+{
+ struct layout_data *ld;
struct _priv *priv;
Evas_Object *base, *layout;
goto err2;
}
- md = mediadata_create(LIST_MEDIA_COND, E_SOURCE_ALL, E_SORT_NAME);
- if (!md) {
- _ERR("failed to create mediadata");
- goto err2;
- }
-
priv->base = base;
priv->layout = layout;
priv->menu_btn = ld->top;
priv->view_btn = ld->bottom;
priv->lmgr = lmgr;
- priv->md = md;
priv->gdata = get_movie_grid_data(E_MOVIE_NAME);
- ldata = _create_listmgr_data(priv);
- if (!ldata) {
- _ERR("failed to create listmgr data");
- goto err3;
- }
-
- listmgr = listmgr_create(layout, (void *)ldata);
- if (!listmgr) {
- _ERR("failed to create listmgr");
- free(ldata->pdata);
- free(ldata);
- goto err3;
+ if (!_create_utils(priv)) {
+ _ERR("failed to create utils");
+ goto err2;
}
- priv->ldata = ldata;
- priv->listmgr = listmgr;
-
layoutmgr_set_layout_data(lmgr, LAYOUT_MOVIE, priv);
if (!listmgr_draw_list_area(priv->listmgr)) {
_ERR("failed to draw list area");
- free(ldata);
- listmgr_destroy(listmgr);
goto err3;
}
return true;
err3:
- mediadata_destroy(md);
+ _destroy_utils(priv);
err2:
evas_object_del(layout);
err:
progressbar_destroy(priv->prog);
- priv->gdata->free_item_list(priv->media_list);
- mediadata_destroy(priv->md);
+ priv->gdata->free_item_list(priv->dmgr[E_DATA_MEDIA], priv->media_list);
- listmgr_destroy(priv->listmgr);
- free(priv->ldata->pdata);
- free(priv->ldata);
+ _destroy_utils(priv);
evas_object_del(priv->layout);
#include "define.h"
#include "layout.h"
#include "view.h"
-#include "data/mediadata.h"
+#include "data/datamgr.h"
#include "grid/grid.h"
#include "util/listmgr.h"
#include "util/util.h"
struct listmgr *listmgr;
struct listmgr_data *ldata;
- struct mediadata *md;
+ struct datamgr *dmgr[E_DATA_MAX];
Eina_List *media_list;
{
app_media_info *info;
struct view_update_data vdata;
+ struct datamgr *dmgr;
info = app_media_get_info(am);
if (!info) {
return;
}
- vdata.list = mediadata_get_medialist(priv->md);
+ dmgr = priv->dmgr[E_DATA_MEDIA];
+ if (!dmgr)
+ return;
+
+ vdata.list = dmgr->ops->get_list(dmgr->handle);
vdata.index = util_get_media_index_from_id(vdata.list, info->media_id);
viewmgr_update_view(VIEW_MPLAYER, UPDATE_CONTENT, &vdata);
static void _playing_selected_cb(void *data, Evas_Object *obj)
{
struct view_update_data vdata;
+ struct datamgr *dmgr;
struct _priv *priv;
if (!data || !obj)
priv = data;
- vdata.list = mediadata_get_medialist(priv->md);
+ dmgr = priv->dmgr[E_DATA_MEDIA];
+ if (!dmgr)
+ return;
+
+ vdata.list = dmgr->ops->get_list(dmgr->handle);
vdata.index = util_get_media_index(vdata.list, priv->playing_info);
viewmgr_update_view(VIEW_MPLAYER, UPDATE_CONTENT, &vdata);
pdata->cb_data = priv;
data->pdata = pdata;
- data->grid_cb_data = priv->md;
return data;
static void _update_content_info(struct _priv *priv)
{
+ struct datamgr *dmgr;
int count;
char buf[128];
- count = mediadata_get_media_count(priv->md, E_MEDIA_MUSIC);
+ dmgr = priv->dmgr[E_DATA_MEDIA];
+ if (!dmgr)
+ return;
+
+ count = dmgr->ops->get_count(dmgr->handle, E_FILE_MUSIC);
if (count < 0) {
_ERR("failed to get media count");
return;
static void _clear_content_list(struct _priv *priv)
{
if (priv->media_list) {
- priv->gdata->free_item_list(priv->media_list);
+ priv->gdata->free_item_list(priv->dmgr[E_DATA_MEDIA],
+ priv->media_list);
priv->media_list = NULL;
}
priv->gdata = get_music_grid_data(priv->view_mode);
- list = priv->gdata->get_item_list(priv->md);
+ list = priv->gdata->get_item_list(priv->dmgr[E_DATA_MEDIA]);
if (!list) {
elm_object_part_text_set(priv->layout,
PART_NOCONTENT, TEXT_NOCONTENT);
return;
}
+ priv->gdata->data = priv->dmgr[E_DATA_MEDIA];
+
if (!listmgr_update_content_list(priv->listmgr, list, priv->gdata))
_ERR("failed to update list area");
Eina_List *list;
app_media *am;
app_media_info *info;
+ struct datamgr *dmgr;
+
+ dmgr = priv->dmgr[E_DATA_MEDIA];
+ if (!dmgr)
+ return;
+
+ list = dmgr->ops->get_list(dmgr->handle);
- list = mediadata_get_medialist(priv->md);
if (id)
am = util_find_media_info(list, id);
else
_ERR("failed to update now playing item");
}
-static bool _create(layoutmgr *lmgr, void *data)
+static void _destroy_datamgr(struct _priv *priv)
+{
+ int i;
+
+ for (i = 0; i < E_DATA_MAX; i++)
+ datamgr_destroy(priv->dmgr[i]);
+}
+
+static void _destroy_utils(struct _priv *priv)
+{
+ _destroy_datamgr(priv);
+
+ listmgr_destroy(priv->listmgr);
+ free(priv->ldata->pdata);
+ free(priv->ldata);
+}
+
+static bool _create_utils(struct _priv *priv)
{
- struct layout_data *ld;
struct listmgr *listmgr;
struct listmgr_data *ldata;
- struct mediadata *md;
+ struct datamgr *dmgr;
+ int i;
+
+ for (i = 0; i < E_DATA_MAX; i++) {
+ dmgr = datamgr_create(i, LIST_MEDIA_COND, E_SOURCE_ALL);
+ if (!dmgr) {
+ _ERR("failed to create datamgr");
+ _destroy_datamgr(priv);
+ return false;
+ }
+
+ priv->dmgr[i] = dmgr;
+ }
+
+ ldata = _create_listmgr_data(priv);
+ if (!ldata) {
+ _ERR("failed to create listmgr data");
+ _destroy_datamgr(priv);
+ return false;
+ }
+
+ listmgr = listmgr_create(priv->layout, (void *)ldata);
+ if (!listmgr) {
+ _ERR("failed to create listmgr");
+ _destroy_datamgr(priv);
+ free(ldata);
+ return false;
+ }
+
+ priv->ldata = ldata;
+ priv->listmgr = listmgr;
+
+ return true;
+}
+
+static bool _create(layoutmgr *lmgr, void *data)
+{
+ struct layout_data *ld;
struct _priv *priv;
Evas_Object *base, *layout;
goto err2;
}
- md = mediadata_create(LIST_MEDIA_COND, E_SOURCE_ALL, E_SORT_NAME);
- if (!md) {
- _ERR("failed to create mediadata");
- goto err2;
- }
-
priv->base = base;
priv->layout = layout;
priv->menu_btn = ld->top;
priv->view_btn = ld->bottom;
priv->lmgr = lmgr;
- priv->md = md;
priv->gdata = get_music_grid_data(E_MUSIC_SONG);
- ldata = _create_listmgr_data(priv);
- if (!ldata) {
- _ERR("failed to create listmgr data");
- goto err3;
- }
-
- listmgr = listmgr_create(layout, (void *)ldata);
- if (!listmgr) {
- _ERR("failed to create listmgr");
- free(ldata);
- goto err3;
+ if (!_create_utils(priv)) {
+ _ERR("failed to create utils");
+ goto err2;
}
- priv->ldata = ldata;
- priv->listmgr = listmgr;
-
layoutmgr_set_layout_data(lmgr, LAYOUT_MUSIC, priv);
- if (!listmgr_draw_list_area(listmgr)) {
+ if (!listmgr_draw_list_area(priv->listmgr)) {
_ERR("failed to draw list area");
- free(ldata);
- listmgr_destroy(listmgr);
goto err3;
}
return true;
err3:
- mediadata_destroy(md);
+ _destroy_utils(priv);
err2:
evas_object_del(layout);
err:
priv = layout_data;
- priv->gdata->free_item_list(priv->media_list);
- mediadata_destroy(priv->md);
+ priv->gdata->free_item_list(priv->dmgr[E_DATA_MEDIA], priv->media_list);
- listmgr_destroy(priv->listmgr);
- free(priv->ldata);
+ _destroy_utils(priv);
evas_object_del(priv->layout);
#include <inputmgr.h>
#include "define.h"
-#include "data/mediadata.h"
+#include "data/datamgr.h"
#include "grid/grid.h"
#include "util/listmgr.h"
#include "util/util.h"
else {
gdata = lmgr->data->gdata;
if (gdata->key_down_cb)
- gdata->key_down_cb(lmgr->data->grid_cb_data,
- lmgr->focused_it, ev);
+ gdata->key_down_cb(gdata->data,
+ lmgr->focused_it, ev);
}
break;
gdata = lmgr->data->gdata;
if (gdata->selected_cb)
- gdata->selected_cb(lmgr->data->grid_cb_data, lmgr->selected_it);
+ gdata->selected_cb(gdata->data, lmgr->selected_it);
}
static void _grid_selected_cb(int id, void *data, Evas_Object *obj,