bool listmgr_focus_content_list(struct listmgr *lmgr, const char *id);
bool listmgr_focus_play_info(struct listmgr *lmgr);
+bool listmgr_focus_menu_btn(struct listmgr *lmgr);
void listmgr_set_focus_state(struct listmgr *lmgr, Eina_Bool state);
UPDATE_RECENT,
UPDATE_FOCUS_STATE,
UPDATE_VIEW_MODE,
+ UPDATE_SOURCE_CONTENT,
UPDATE_SOURCE_TYPE,
UPDATE_TOAST
};
+enum base_view_layout {
+ E_LAYOUT_MOVIE = 0,
+ E_LAYOUT_GALLERY,
+ E_LAYOUT_MUSIC,
+ E_LAYOUT_MAX
+};
+
enum detail_view_type {
E_DETAIL_MOVIE_GENRE = 0,
E_DETAIL_GALLERY_PLACE,
md = handle;
- for (i = 0; i < E_FILE_MAX; i++)
- md->media_count[i] = 0;
+ if (!_get_medialist(md)) {
+ _ERR("failed to get media list");
+ return NULL;
+ }
md->media_list = _sort_list(md->media_list, type);
+ for (i = 0; i < E_FILE_MAX; i++)
+ md->media_count[i] = 0;
+
gi = NULL;
list = NULL;
EINA_LIST_FOREACH(md->media_list, l, am) {
static void _update_content_list(struct _priv *priv)
{
- if (priv->media_list) {
- _update_bottom_area(priv);
+ if (priv->media_list)
return;
- }
priv->gdata = get_gallery_grid_data(priv->view_mode);
if (!priv->gdata) {
priv->media_list = priv->gdata->get_item_list(priv->dmgr[E_DATA_MEDIA]);
- _update_bottom_area(priv);
-
- if (!priv->media_list) {
+ if (!priv->media_list)
elm_object_part_text_set(priv->layout,
PART_NOCONTENT, TEXT_NOCONTENT);
- return;
- }
priv->gdata->data = priv->dmgr[E_DATA_MEDIA];
switch (update_type) {
case UPDATE_CONTENT:
_update_content_list(priv);
+ _update_bottom_area(priv);
break;
case UPDATE_CONTENT_ITEM:
listmgr_update_content_item(priv->listmgr);
}
_update_content_list(priv);
+ _update_bottom_area(priv);
+
_recent_item_selected(priv, data);
break;
case UPDATE_FOCUS_STATE:
_clear_content_list(priv);
priv->view_mode = mode;
+
_update_content_list(priv);
+ _update_bottom_area(priv);
break;
case UPDATE_SOURCE_TYPE:
if (!data) {
_clear_content_list(priv);
_update_content_list(priv);
+ _update_bottom_area(priv);
+ break;
+ case UPDATE_SOURCE_CONTENT:
+ if (!data) {
+ _ERR("invalid argument");
+ return;
+ }
+
+ vdata = data;
+
+ _clear_content_list(priv);
+ _update_content_list(priv);
+
+ if (vdata->index == E_LAYOUT_GALLERY) {
+ _update_bottom_area(priv);
+ listmgr_focus_menu_btn(priv->listmgr);
+ }
break;
default:
break;
static void _update_content_list(struct _priv *priv)
{
- if (priv->media_list) {
- _update_bottom_area(priv);
+ if (priv->media_list)
return;
- }
priv->gdata = get_movie_grid_data(priv->view_mode);
if (!priv->gdata) {
priv->media_list = priv->gdata->get_item_list(priv->dmgr[E_DATA_MEDIA]);
- _update_bottom_area(priv);
-
- if (!priv->media_list) {
+ if (!priv->media_list)
elm_object_part_text_set(priv->layout,
PART_NOCONTENT, TEXT_NOCONTENT);
- return;
- }
priv->gdata->data = priv->dmgr[E_DATA_MEDIA];
switch (update_type) {
case UPDATE_CONTENT:
_update_content_list(priv);
+ _update_bottom_area(priv);
+
_update_recent_item(priv, NULL);
break;
case UPDATE_CONTENT_ITEM:
}
_update_content_list(priv);
+ _update_bottom_area(priv);
+
_recent_item_selected(priv, data);
break;
case UPDATE_FOCUS_STATE:
_clear_content_list(priv);
priv->view_mode = mode;
+
_update_content_list(priv);
+ _update_bottom_area(priv);
break;
case UPDATE_SOURCE_TYPE:
if (!data) {
_clear_content_list(priv);
_update_content_list(priv);
+ _update_bottom_area(priv);
+ break;
+ case UPDATE_SOURCE_CONTENT:
+ if (!data) {
+ _ERR("invalid argument");
+ return;
+ }
+
+ vdata = data;
+
+ _clear_content_list(priv);
+ _update_content_list(priv);
+
+ if (vdata->index == E_LAYOUT_MOVIE) {
+ _update_bottom_area(priv);
+ _update_recent_item(priv, NULL);
+ listmgr_focus_menu_btn(priv->listmgr);
+ }
break;
default:
break;
{
struct datamgr *dmgr;
- if (priv->media_list) {
- _update_bottom_area(priv);
+ if (priv->media_list)
return;
- }
priv->gdata = get_music_grid_data(priv->view_mode);
if (!priv->gdata) {
priv->media_list = priv->gdata->get_item_list(dmgr);
- _update_bottom_area(priv);
-
- if (!priv->media_list) {
+ if (!priv->media_list)
elm_object_part_text_set(priv->layout,
PART_NOCONTENT, TEXT_NOCONTENT);
- return;
- }
priv->gdata->data = dmgr;
switch (update_type) {
case UPDATE_CONTENT:
_update_content_list(priv);
+ _update_bottom_area(priv);
break;
case UPDATE_CONTENT_ITEM:
listmgr_update_content_item(priv->listmgr);
}
_update_content_list(priv);
+ _update_bottom_area(priv);
+
_recent_item_selected(priv, data);
break;
case UPDATE_FOCUS_STATE:
_clear_content_list(priv);
priv->view_mode = mode;
+
_update_content_list(priv);
+ _update_bottom_area(priv);
break;
case UPDATE_SOURCE_TYPE:
if (!data) {
_clear_content_list(priv);
_update_content_list(priv);
+ _update_bottom_area(priv);
+
+ break;
+ case UPDATE_SOURCE_CONTENT:
+ if (!data) {
+ _ERR("invalid argument");
+ return;
+ }
+
+ vdata = data;
+
+ _clear_content_list(priv);
+ _update_content_list(priv);
+
+ if (vdata->index == E_LAYOUT_MUSIC) {
+ _update_bottom_area(priv);
+ listmgr_focus_menu_btn(priv->listmgr);
+ }
break;
default:
break;
return ly;
}
-bool _focus_to_content(struct listmgr *lmgr, Evas_Object *base)
+static bool _focus_to_content(struct listmgr *lmgr, Evas_Object *base)
{
Evas_Object *content;
lmgr->focus_state = state;
}
+bool listmgr_focus_menu_btn(struct listmgr *lmgr)
+{
+ if (!lmgr) {
+ _ERR("failed to get listmgr");
+ return false;
+ }
+
+ if (!elm_object_focus_get(lmgr->data->menu_btn))
+ elm_object_focus_set(lmgr->data->menu_btn, EINA_TRUE);
+
+ return true;
+}
+
bool listmgr_focus_play_info(struct listmgr *lmgr)
{
if (!lmgr) {
return false;
}
+ if (!list) {
+ elm_object_focus_allow_set(lmgr->scr, EINA_FALSE);
+ return true;
+ }
+
lmgr->data->gdata = gdata;
elm_scroller_step_size_set(lmgr->scr, ELM_SCALE_SIZE(SCROLLER_STEP_SIZE(
#include "view.h"
#include "data/datamgr.h"
#include "util/ctxpopup.h"
+#include "util/usb.h"
#include "util/util.h"
#define TITLE_TEXT "Media Hub"
BASE_SOURCE_BTN
};
-enum _layout_type {
- E_LAYOUT_MOVIE = 0,
- E_LAYOUT_GALLERY,
- E_LAYOUT_MUSIC,
- E_LAYOUT_MAX
-};
-
struct _priv {
Evas_Object *win;
Evas_Object *base;
Evas_Object *notify;
+ struct usb *usb_h;
+ media_content_noti_h noti_h;
+
struct ctxpopup *cpopup;
layoutmgr *lmgr;
priv->notify = notify;
}
+static void _media_db_updated_cb(media_content_error_e error,
+ int pid,
+ media_content_db_update_item_type_e update_item,
+ media_content_db_update_type_e update_type,
+ media_content_type_e media_type,
+ char *uuid,
+ char *path,
+ char *mime_type,
+ void *user_data)
+{
+ struct view_update_data vdata;
+ struct _priv *priv;
+ int i;
+
+ if (!user_data) {
+ _ERR("invalid argument");
+ return;
+ }
+
+ priv = user_data;
+
+ vdata.index = priv->current_layout;
+
+ for (i = 0; i < E_LAYOUT_MAX; i++) {
+ layoutmgr_update_layout(priv->lmgr,
+ g_menu_item[i].layout_id,
+ UPDATE_SOURCE_CONTENT, &vdata);
+ }
+
+ media_content_remove_db_updated_cb(priv->noti_h);
+}
+
+static void _usb_changed_cb(void *data, int state)
+{
+ media_content_noti_h noti_h;
+ struct _priv *priv;
+ int r;
+
+ if (!data)
+ return;
+
+ priv = data;
+
+ r = media_content_add_db_updated_cb(_media_db_updated_cb,
+ priv, ¬i_h);
+ if (r != MEDIA_CONTENT_ERROR_NONE)
+ _ERR("failed to add db updated cb: %d", r);
+
+ priv->noti_h = noti_h;
+}
+
static Evas_Object *_create(Evas_Object *win, void *data)
{
+ struct usb *usb_h;
struct layout_data ldata;
struct _priv *priv;
Evas_Object *base;
priv->win = win;
priv->base = base;
+ usb_h = usb_create();
+ if (!usb_h) {
+ _ERR("failed to create usb");
+ free(priv);
+ return NULL;
+ }
+
+ usb_set_callback(usb_h, _usb_changed_cb, priv);
+
+ priv->usb_h = usb_h;
+
if (!_draw_items(priv)) {
_ERR("failed to draw items");
free(priv);
priv = view_data;
+ usb_destroy(priv->usb_h);
+
for (i = 0; i < E_LAYOUT_MAX; i++)
inputmgr_remove_callback(priv->menu_btn[i], &handler);