};
-class CMusicBaseView : public CBaseView,
- public IMouseMoveListener, public IMouseClickedListener,
- public IMusicControllerListener, public IFocusedListener {
+class CMusicBaseView :
+ public CBaseView,
+ public IMouseMoveListener,
+ public IMouseClickedListener,
+ public IMusicControllerListener,
+ public IFocusedListener {
private:
struct SMusicBaseView* m;
virtual void OnMouseClicked(int id, Evas_Object *obj);
virtual void OnFocused(int id, Evas_Object *obj, Elm_Object_Item *item);
-
protected:
virtual void t_OnComplete(void);
virtual void t_OnError(void);
int updateType;
const char *layoutId;
const char *keyEvent;
+ const char *prevFocusedBtn;
};
#endif /* __COMMON_H__ */
#define MUSIC_PART_ALBUM_PLAYBTN "MUSIC_PART_ALBUM_PLAYBTN"
#define MUSIC_PART_ALBUM_NEXTBTN "MUSIC_PART_ALBUM_NEXTBTN"
#define MUSIC_PART_ALBUM_LASTBTN "MUSIC_PART_ALBUM_LASTBTN"
- /* styles */
+
+/* styles */
#define MUSIC_STYLE_ADD_PLAY_BTN "add_play_btn"
#define MUSIC_STYLE_ADD_NEXT_BTN "add_next_btn"
#define MUSIC_STYLE_ADD_LAST_BTN "add_last_btn"
#define MUSIC_SWALLOW_ICON "elm.swallow.icon"
#define MUSIC_PART_POPUP_BUTTON "button1"
+/* FOR FOCUS SEQUENCE */
+#define MUSIC_FIRST_BTN "MUSIC_FIRST_BTN" // Play, Select All
+#define MUSIC_SECOND_BTN "MUSIC_SECOND_BTN" // Add Next, Done
+#define MUSIC_THIRD_BTN "MUSIC_THIRD_BTN" // Add Last, Cancel
+
/* CTXPOPUP POSITION */
#define POSITION_SORT_POPUP_X 1344
#define POSITION_SORT_POPUP_Y 155
#define KEY_BACK_REMOTE "XF86Close"
#undef KEY_MENU_REMOTE
#define KEY_MENU_REMOTE "XF86Send"
+#undef KEY_UP
+#define KEY_UP "Up"
+#undef KEY_DOWN
+#define KEY_DOWN "Down"
/* SHOULD BE DEFINED */
#undef KEY_PLAY
static Eina_Bool sm_CbFocusIdler(void *dt);
void m_OnFocusIdler(void);
+ static Eina_Bool sm_CbButtonFocusIdler(void *dt);
+ void m_OnButtonFocusIdler(void);
+
static void sm_CbCtxtUpdate(void *dt, enum EActionType type, int lid);
void m_OnCtxtUpdate(EActionType type, int lid);
virtual void Destroy(void);
virtual void Update(bool focusFlag);
+ void SetButtonFocus(const char *btnStr);
public:
virtual void OnMouseMove(int id, Evas *e, Evas_Object *obj, Evas_Event_Mouse_Move *ev);
m_UpdateAlbumGrid(false);
SParcel parcel;
- parcel.ctxtInfo = NULL;
+ memset(&parcel, 0, sizeof(SParcel));
parcel.updateType = E_LAYOUT_UPDATE;
parcel.layoutId = MUSIC_ALBUM_LAYOUT;
- parcel.keyEvent = NULL;
m->vmgr->UpdateView((const char *)MUSIC_BASE_VIEW, &parcel);
evas_object_show(Layout());
if (!strcmp(ev->keyname, KEY_BACK) ||
!strcmp(ev->keyname, KEY_BACK_REMOTE)) {
SParcel parcel;
- parcel.ctxtInfo = NULL;
+ memset(&parcel, 0, sizeof(SParcel));
parcel.updateType = E_FOCUS_UPDATE;
- parcel.layoutId = NULL;
- parcel.keyEvent = NULL;
m->vmgr->UpdateView((const char *)MUSIC_BASE_VIEW, &parcel);
}
break;
m->ctxtinfo = ctxtinfo;
SParcel parcel;
+ memset(&parcel, 0, sizeof(SParcel));
parcel.ctxtInfo = ctxtinfo;
if (!m->vmgr->PushView(MUSIC_CONTEXT_VIEW, &parcel))
_ERR("viewmgr push view MUSIC_CONTEXT_VIEW failed");
elm_object_text_set(btn[i], _(btninfo[i].name));
elm_object_style_set(btn[i], btninfo[i].style);
- Connect(btn[i], btninfo[i].type, TYPE_MOUSE_MOVE | TYPE_CLICKED);
+ Connect(btn[i], btninfo[i].type, TYPE_MOUSE_MOVE | TYPE_CLICKED | TYPE_KEY_DOWN);
img = elm_image_add(btn[i]);
if (img) {
CBaseLayout::t_OnShow();
SParcel parcel;
- parcel.ctxtInfo = NULL;
+ memset(&parcel, 0, sizeof(SParcel));
parcel.updateType = E_LAYOUT_UPDATE;
parcel.layoutId = MUSIC_ALBUM_SONGS_LAYOUT;
- parcel.keyEvent = NULL;
m->vmgr->UpdateView((const char *)MUSIC_BASE_VIEW, &parcel);
}
if (!strcmp(ev->keyname, KEY_BACK) ||
!strcmp(ev->keyname, KEY_BACK_REMOTE)) {
SParcel parcel;
- parcel.ctxtInfo = NULL;
+ memset(&parcel, 0, sizeof(SParcel));
parcel.updateType = E_DEPTH_UPDATE;
parcel.layoutId = MUSIC_ALBUM_SONGS_LAYOUT;
- parcel.keyEvent = NULL;
m->vmgr->UpdateView((const char *)MUSIC_BASE_VIEW, &parcel);
}
break;
m->ctxtinfo = ctxtinfo;
SParcel parcel;
+ memset(&parcel, 0, sizeof(SParcel));
parcel.ctxtInfo = ctxtinfo;
if (!m->vmgr->PushView(MUSIC_CONTEXT_VIEW, &parcel))
_ERR("viewmgr push view MUSIC_CONTEXT_VIEW failed");
}
break;
+ case ALBUM_SONGS_PLAY_BUTTON:
+ case ALBUM_SONGS_NEXT_BUTTON:
+ case ALBUM_SONGS_LAST_BUTTON:
+ if (!strcmp(ev->keyname, KEY_UP)) {
+ const char *btnText = NULL;
+
+ if (id == ALBUM_SONGS_PLAY_BUTTON)
+ btnText = MUSIC_FIRST_BTN;
+ else if (id == ALBUM_SONGS_NEXT_BUTTON)
+ btnText = MUSIC_SECOND_BTN;
+ else //ALBUM_SONGS_LAST_BUTTON
+ btnText = MUSIC_THIRD_BTN;
+
+ SParcel parcel;
+ memset(&parcel, 0, sizeof(SParcel));
+ parcel.updateType = E_FOCUS_UPDATE;
+ parcel.keyEvent = KEY_UP;
+ parcel.prevFocusedBtn = btnText;
+ m->vmgr->UpdateView((const char *)MUSIC_BASE_VIEW, &parcel);
+ }
+ break;
+
default:
break;
}
elm_object_part_content_set(m->base, MUSIC_PART_CONTENT, evasLayout);
m->lmgr->Show(layoutId);
m_UpdateFocusSequence();
+
+ if (!strcmp(layoutId, MUSIC_FOLDER_LAYOUT)) {
+ elm_object_focus_next_object_set(m->plbackbtn, m->plbackbtn, ELM_FOCUS_DOWN);
+ elm_object_focus_next_object_set(m->srcbtn, m->srcbtn, ELM_FOCUS_DOWN);
+ elm_object_focus_next_object_set(m->sortbtn, m->sortbtn, ELM_FOCUS_DOWN);
+ }
}
}
void CMusicBaseView::m_GotoPlayback(void)
{
SParcel parcel;
- parcel.ctxtInfo = NULL;
+ memset(&parcel, 0, sizeof(SParcel));
parcel.updateType = E_PLAYLIST_UPDATE;
- parcel.layoutId = NULL;
- parcel.keyEvent = NULL;
if (!CViewMgr::GetInstance()->PushView(MUSIC_PLAYBACK_VIEW, &parcel))
_ERR(" viewmgr push view MUSIC_PLAYBACK_VIEW failed ");
elm_object_style_set(btn, btninfo[i].style);
elm_object_part_content_set(m->base, btninfo[i].part, btn);
- Connect(btn, btninfo[i].type, TYPE_KEY_DOWN | TYPE_MOUSE_MOVE | TYPE_CLICKED);
+ Connect(btn, btninfo[i].type,
+ TYPE_KEY_DOWN | TYPE_KEY_UP | TYPE_MOUSE_MOVE | TYPE_CLICKED);
if (i == BTN_PLAY)
m->plbackbtn = btn;
elm_object_style_set(m->group_btn[i], MUSIC_STYLE_GROUPBTN);
elm_object_text_set(m->group_btn[i], _(btninfo[i].txt));
- Connect(m->group_btn[i], btninfo[i].type, TYPE_KEY_DOWN | TYPE_MOUSE_MOVE | TYPE_CLICKED | TYPE_FOCUSED);
+ Connect(m->group_btn[i], btninfo[i].type,
+ TYPE_KEY_DOWN | TYPE_MOUSE_MOVE | TYPE_CLICKED | TYPE_FOCUSED);
ic = elm_image_add(m->group_btn[i]);
if (ic) {
}
SParcel *parcel = (SParcel *)data;
- int update_type = parcel->updateType;
- const char *layout_id = parcel->layoutId;
- if (update_type == E_FOCUS_UPDATE)
- elm_object_focus_set(m->c_grpbtn, EINA_TRUE);
- else if (update_type == E_LAYOUT_UPDATE) {
- if (!layout_id)
+ if (parcel->updateType == E_FOCUS_UPDATE) {
+ if (parcel->keyEvent && !strcmp(parcel->keyEvent, KEY_UP)) {
+ Evas_Object *focus = NULL;
+
+ if (!strcmp(parcel->prevFocusedBtn, MUSIC_FIRST_BTN))
+ focus = m->plbackbtn;
+ else if (!strcmp(parcel->prevFocusedBtn, MUSIC_SECOND_BTN)) {
+ if (elm_object_disabled_get(m->sortbtn))
+ focus = m->srcbtn;
+ else
+ focus = m->sortbtn;
+ }
+ else if (!strcmp(parcel->prevFocusedBtn, MUSIC_THIRD_BTN))
+ focus = m->srcbtn;
+
+ elm_object_focus_set(focus, EINA_TRUE);
+ }
+ else
+ elm_object_focus_set(m->c_grpbtn, EINA_TRUE);
+ }
+ else if (parcel->updateType == E_LAYOUT_UPDATE) {
+ if (!parcel->layoutId)
return;
- if (!strcmp(layout_id, MUSIC_ALBUM_SONGS_LAYOUT) ||
- !strcmp(layout_id, MUSIC_CATEGORY_SONGS_LAYOUT) ||
- !strcmp(layout_id, MUSIC_CATEGORY_ALBUM_LAYOUT) ||
- !strcmp(layout_id, MUSIC_CATEGORY_SELECTLIST_LAYOUT)) {
+ if (!strcmp(parcel->layoutId, MUSIC_ALBUM_SONGS_LAYOUT) ||
+ !strcmp(parcel->layoutId, MUSIC_CATEGORY_SONGS_LAYOUT) ||
+ !strcmp(parcel->layoutId, MUSIC_CATEGORY_ALBUM_LAYOUT) ||
+ !strcmp(parcel->layoutId, MUSIC_CATEGORY_SELECTLIST_LAYOUT)) {
elm_object_disabled_set(m->sortbtn, EINA_TRUE);
elm_object_focus_next_object_set(m->plbackbtn, m->srcbtn, ELM_FOCUS_RIGHT);
elm_object_focus_next_object_set(m->srcbtn, m->plbackbtn, ELM_FOCUS_LEFT);
elm_object_focus_next_object_set(m->sortbtn, m->plbackbtn, ELM_FOCUS_LEFT);
}
}
- else if (update_type == E_DEPTH_UPDATE) {
- if (!layout_id)
+ else if (parcel->updateType == E_DEPTH_UPDATE) {
+ if (!parcel->layoutId)
return;
- if (!strcmp(layout_id, MUSIC_ALBUM_SONGS_LAYOUT) ||
- !strcmp(layout_id, MUSIC_CATEGORY_ARTIST_SONGS_LAYOUT) ||
- !strcmp(layout_id, MUSIC_CATEGORY_GENRE_SONGS_LAYOUT) ||
- !strcmp(layout_id, MUSIC_CATEGORY_PLAYLISTS_SONGS_LAYOUT)) {
+ if (!strcmp(parcel->layoutId, MUSIC_ALBUM_SONGS_LAYOUT) ||
+ !strcmp(parcel->layoutId, MUSIC_CATEGORY_ARTIST_SONGS_LAYOUT) ||
+ !strcmp(parcel->layoutId, MUSIC_CATEGORY_GENRE_SONGS_LAYOUT) ||
+ !strcmp(parcel->layoutId, MUSIC_CATEGORY_PLAYLISTS_SONGS_LAYOUT)) {
m_ShowCurrentLayout();
m_UpdateCurrentLayout(true);
}
!strcmp(ev->keyname, KEY_PLAY) ||
!strcmp(ev->keyname, KEY_PAUSE)) {
SParcel parcel;
- parcel.ctxtInfo = NULL;
+ memset(&parcel, 0, sizeof(SParcel));
parcel.updateType = E_KEY_PRESS;
- parcel.layoutId = NULL;
parcel.keyEvent = ev->keyname;
CViewMgr::GetInstance()->UpdateView((const char *)MUSIC_PLAYBACK_VIEW, &parcel);
}
if (!strcmp(ev->keyname, KEY_BACK) ||
!strcmp(ev->keyname, KEY_BACK_REMOTE))
elm_object_focus_set(m->c_grpbtn, EINA_TRUE);
+ else if (!strcmp(ev->keyname, KEY_DOWN) &&
+ !strcmp(m->lmgr->Layout()->LayoutId(), MUSIC_FOLDER_LAYOUT)) {
+ const char *btnText = NULL;
+
+ if (id == BASE_VIEW_PLAY_BUTTON)
+ btnText = MUSIC_FIRST_BTN;
+ else if (id == BASE_VIEW_SORT_BUTTON)
+ btnText = MUSIC_SECOND_BTN;
+ else //BASE_VIEW_SOURCE_BUTTON
+ btnText = MUSIC_THIRD_BTN;
+
+ CFolderLayout *folderLayout = (CFolderLayout *)m->lmgr->Layout();
+ folderLayout->SetButtonFocus(btnText);
+ }
break;
case BASE_VIEW_GROUP_SONG:
if (!strcmp(ev->keyname, KEY_NEXT) ||
!strcmp(ev->keyname, KEY_PREVIOUS)) {
SParcel parcel;
- parcel.ctxtInfo = NULL;
+ memset(&parcel, 0, sizeof(SParcel));
parcel.updateType = E_KEY_RELEASE;
- parcel.layoutId = NULL;
parcel.keyEvent = ev->keyname;
CViewMgr::GetInstance()->UpdateView((const char *)MUSIC_PLAYBACK_VIEW, &parcel);
m_UpdatePlaysongLabel();
t_UpdateLayoutWithFocus();
SParcel parcel;
- parcel.ctxtInfo = NULL;
+ memset(&parcel, 0, sizeof(SParcel));
parcel.updateType = E_DEPTH_UPDATE;
parcel.layoutId = MUSIC_CATEGORY_PLAYLISTS_SONGS_LAYOUT;
- parcel.keyEvent = NULL;
m->vmgr->UpdateView((const char *)MUSIC_BASE_VIEW, &parcel);
}
elm_object_text_set(m->add_btn[i], _(btninfo[i].name));
elm_object_style_set(m->add_btn[i], btninfo[i].style);
- Connect(m->add_btn[i], btninfo[i].type, TYPE_CLICKED | TYPE_MOUSE_MOVE);
+ Connect(m->add_btn[i], btninfo[i].type, TYPE_CLICKED | TYPE_MOUSE_MOVE | TYPE_KEY_DOWN);
img = elm_image_add(m->add_btn[i]);
if (img) {
const char *CCategoryLayout::m_CategorySongLayoutId(void)
{
- const char *layoutId;
+ const char *layoutId = NULL;
if (!strcmp(LayoutId(), MUSIC_CATEGORY_ARTIST_LAYOUT))
layoutId = MUSIC_CATEGORY_ARTIST_SONGS_LAYOUT;
m_EmptyLayout(sort_flag);
SParcel parcel;
- parcel.ctxtInfo = NULL;
+ memset(&parcel, 0, sizeof(SParcel));
if (t.depth == E_DEPTH_SONG) {
m->layoutCatSongs->SetParameter(CCategorySongsLayout::DEPTH_SONG_LIST, (CCategorySongsLayout::ESelectType)t.sel_type, t.c_catinfo, t.c_alinfo);
parcel.updateType = E_LAYOUT_UPDATE;
parcel.layoutId = MUSIC_CATEGORY_SONGS_LAYOUT;
- parcel.keyEvent = NULL;
m->vmgr->UpdateView((const char *)MUSIC_BASE_VIEW, &parcel);
}
else if (t.depth == E_DEPTH_SHOW_LIST) {
parcel.updateType = E_LAYOUT_UPDATE;
parcel.layoutId = MUSIC_CATEGORY_SONGS_LAYOUT;
- parcel.keyEvent = NULL;
m->vmgr->UpdateView((const char *)MUSIC_BASE_VIEW, &parcel);
}
else if (t.depth == E_DEPTH_ALBUM) {
parcel.updateType = E_LAYOUT_UPDATE;
parcel.layoutId = MUSIC_CATEGORY_ALBUM_LAYOUT;
- parcel.keyEvent = NULL;
m->vmgr->UpdateView((const char *)MUSIC_BASE_VIEW, &parcel);
}
else if (t.depth == E_DEPTH_SELECT_LIST) {
parcel.updateType = E_LAYOUT_UPDATE;
parcel.layoutId = MUSIC_CATEGORY_SELECTLIST_LAYOUT;
- parcel.keyEvent = NULL;
m->vmgr->UpdateView((const char *)MUSIC_BASE_VIEW, &parcel);
}
else {
parcel.updateType = E_LAYOUT_UPDATE;
parcel.layoutId = MUSIC_CATEGORY_LAYOUT;
- parcel.keyEvent = NULL;
m->vmgr->UpdateView((const char *)MUSIC_BASE_VIEW, &parcel);
}
}
!strcmp(ev->keyname, KEY_BACK_REMOTE)) {
if (t.depth == E_DEPTH_CATEGORY) {
SParcel parcel;
- parcel.ctxtInfo = NULL;
+ memset(&parcel, 0, sizeof(SParcel));
parcel.updateType = E_FOCUS_UPDATE;
- parcel.layoutId = NULL;
- parcel.keyEvent = NULL;
m->vmgr->UpdateView((const char *)MUSIC_BASE_VIEW, &parcel);
return;
}
t.ctxtinfo = ctxtinfo;
SParcel parcel;
+ memset(&parcel, 0, sizeof(SParcel));
parcel.ctxtInfo = ctxtinfo;
if (!m->vmgr->PushView(MUSIC_CONTEXT_VIEW, &parcel))
_ERR("viewmgr push view MUSIC_CONTEXT_VIEW failed");
}
break;
+ case CATEGORY_LAYOUT_PLAY_BUTTON:
+ case CATEGORY_LAYOUT_NEXT_BUTTON:
+ case CATEGORY_LAYOUT_LAST_BUTTON:
+ if (!strcmp(ev->keyname, KEY_UP)) {
+ const char *btnText = NULL;
+
+ if (id == CATEGORY_LAYOUT_PLAY_BUTTON)
+ btnText = MUSIC_FIRST_BTN;
+ else if (id == CATEGORY_LAYOUT_NEXT_BUTTON)
+ btnText = MUSIC_SECOND_BTN;
+ else //CATEGORY_LAYOUT_LAST_BUTTON
+ btnText = MUSIC_THIRD_BTN;
+
+ SParcel parcel;
+ memset(&parcel, 0, sizeof(SParcel));
+ parcel.updateType = E_FOCUS_UPDATE;
+ parcel.keyEvent = KEY_UP;
+ parcel.prevFocusedBtn = btnText;
+ m->vmgr->UpdateView((const char *)MUSIC_BASE_VIEW, &parcel);
+ }
+ break;
+
default:
break;
}
elm_object_text_set(m->add_btn[i], _(btninfo[i].name));
elm_object_style_set(m->add_btn[i], btninfo[i].style);
- Connect(m->add_btn[i], btninfo[i].type, TYPE_CLICKED | TYPE_MOUSE_MOVE);
+ Connect(m->add_btn[i], btninfo[i].type, TYPE_CLICKED | TYPE_MOUSE_MOVE | TYPE_KEY_DOWN);
img = elm_image_add(m->add_btn[i]);
if (img) {
elm_object_text_set(btn, _(btninfo[i].name));
elm_object_style_set(btn, btninfo[i].style);
- Connect(btn, btninfo[i].type, TYPE_MOUSE_MOVE | TYPE_CLICKED);
+ Connect(btn, btninfo[i].type, TYPE_MOUSE_MOVE | TYPE_CLICKED | TYPE_KEY_DOWN);
elm_object_part_content_set(Layout(), btninfo[i].part, btn);
m->select_btn[i] = btn;
}
SParcel parcel;
- parcel.ctxtInfo = NULL;
+ memset(&parcel, 0, sizeof(SParcel));
parcel.updateType = E_DEPTH_UPDATE;
parcel.layoutId = LayoutId();
- parcel.keyEvent = NULL;
m->vmgr->UpdateView((const char *)MUSIC_BASE_VIEW, &parcel);
}
}
SParcel parcel;
- parcel.ctxtInfo = NULL;
+ memset(&parcel, 0, sizeof(SParcel));
parcel.updateType = E_DEPTH_UPDATE;
parcel.layoutId = LayoutId();
- parcel.keyEvent = NULL;
m->vmgr->UpdateView((const char *)MUSIC_BASE_VIEW, &parcel);
}
if (!strcmp(ev->keyname, KEY_BACK) ||
!strcmp(ev->keyname, KEY_BACK_REMOTE)) {
SParcel parcel;
- parcel.ctxtInfo = NULL;
+ memset(&parcel, 0, sizeof(SParcel));
parcel.updateType = E_DEPTH_UPDATE;
parcel.layoutId = LayoutId();
- parcel.keyEvent = NULL;
m->vmgr->UpdateView((const char *)MUSIC_BASE_VIEW, &parcel);
}
break;
m->ctxtinfo = ctxtinfo;
SParcel parcel;
+ memset(&parcel, 0, sizeof(SParcel));
parcel.ctxtInfo = ctxtinfo;
if (!m->vmgr->PushView(MUSIC_CONTEXT_VIEW, &parcel))
_ERR("viewmgr push view MUSIC_CONTEXT_VIEW failed");
}
break;
+ case CATEGORY_SONGS_PLAY_BUTTON:
+ case CATEGORY_SONGS_NEXT_BUTTON:
+ case CATEGORY_SONGS_LAST_BUTTON:
+ case CATEGORY_SONGS_SELECT_ALL_BUTTON:
+ case CATEGORY_SONGS_DONE_BUTTON:
+ case CATEGORY_SONGS_CANCEL_BUTTON:
+ if (!strcmp(ev->keyname, KEY_UP)) {
+ const char *btnText = NULL;
+
+ if (id == CATEGORY_SONGS_PLAY_BUTTON
+ || id == CATEGORY_SONGS_SELECT_ALL_BUTTON)
+ btnText = MUSIC_FIRST_BTN;
+ else if (id == CATEGORY_SONGS_NEXT_BUTTON
+ || id == CATEGORY_SONGS_DONE_BUTTON)
+ btnText = MUSIC_SECOND_BTN;
+ else //CATEGORY_SONGS_LAST_BUTTON or CATEGORY_SONGS_CANCEL_BUTTON
+ btnText = MUSIC_THIRD_BTN;
+
+ SParcel parcel;
+ memset(&parcel, 0, sizeof(SParcel));
+ parcel.updateType = E_FOCUS_UPDATE;
+ parcel.keyEvent = KEY_UP;
+ parcel.prevFocusedBtn = btnText;
+ m->vmgr->UpdateView((const char *)MUSIC_BASE_VIEW, &parcel);
+ }
+ break;
+
default:
break;
}
case CATEGORY_SONGS_CANCEL_BUTTON:
{
SParcel parcel;
- parcel.ctxtInfo = NULL;
+ memset(&parcel, 0, sizeof(SParcel));
parcel.updateType = E_DEPTH_UPDATE;
parcel.layoutId = LayoutId();
- parcel.keyEvent = NULL;
m->vmgr->UpdateView((const char *)MUSIC_BASE_VIEW, &parcel);
}
break;
obj = elm_object_focused_object_get(layout);
SParcel parcel;
- parcel.ctxtInfo = NULL;
+ memset(&parcel, 0, sizeof(SParcel));
parcel.updateType = E_PLAYLIST_UPDATE;
- parcel.layoutId = NULL;
- parcel.keyEvent = NULL;
if (!vmgr->UpdateView((const char *)MUSIC_PLAYBACK_VIEW, &parcel)) {
if (!vmgr->PushView(MUSIC_PLAYBACK_VIEW, NULL))
Evas_Object *win;
Evas_Object *base;
Evas_Object *grid;
+ Evas_Object *addBtns[TOTAL_ADD_BTNS];
Elm_Object_Item *focused_item;
Eina_List *flist;
Eina_List *slist;
CFolderInfo *c_finfo;
CSongInfo *c_sinfo;
SContentInfo *ctxtinfo;
+ Ecore_Idler *focusBtnIdler;
+ const char *focusBtnStr;
int depth;
SFolderLayout() {
}
+Eina_Bool CFolderLayout::sm_CbButtonFocusIdler(void *dt)
+{
+ CFolderLayout *root = (CFolderLayout *)dt;
+
+ if (root)
+ root->m_OnButtonFocusIdler();
+
+ return ECORE_CALLBACK_CANCEL;
+}
+
+
+void CFolderLayout::m_OnButtonFocusIdler(void)
+{
+ Evas_Object *focus = NULL;
+
+ m->focusBtnIdler = NULL;
+
+ if (!strcmp(m->focusBtnStr, MUSIC_FIRST_BTN))
+ focus = m->addBtns[BTN_PLAY];
+ else if (!strcmp(m->focusBtnStr, MUSIC_SECOND_BTN))
+ focus = m->addBtns[BTN_NEXT];
+ else // MUSIC_THIRD_BTN
+ focus = m->addBtns[BTN_LAST];
+
+ elm_object_focus_set(focus, EINA_TRUE);
+}
+
+
void CFolderLayout::sm_CbCtxtUpdate(void *dt, enum EActionType type, int lid)
{
CFolderLayout *root = (CFolderLayout *)dt;
elm_object_text_set(btn, _(btninfo[i].name));
elm_object_style_set(btn, btninfo[i].style);
- Connect(btn, btninfo[i].type, TYPE_MOUSE_MOVE | TYPE_CLICKED);
+ Connect(btn, btninfo[i].type, TYPE_MOUSE_MOVE | TYPE_CLICKED | TYPE_KEY_DOWN);
img = elm_image_add(btn);
if (img) {
elm_object_part_content_set(Layout(), btninfo[i].part,
btn);
+
+ m->addBtns[i] = btn;
}
}
Connect(layout, FOLDER_LAYOUT, TYPE_KEY_DOWN);
SParcel parcel;
- parcel.ctxtInfo = NULL;
+ memset(&parcel, 0, sizeof(SParcel));
parcel.updateType = E_LAYOUT_UPDATE;
- parcel.layoutId = NULL;
- parcel.keyEvent = NULL;
m->vmgr->UpdateView((const char *)MUSIC_BASE_VIEW, &parcel);
}
ASSERT(m);
m->depth = E_DEPTH_FOLDER;
m_UpdateFolderGrid(false);
+
+ SParcel parcel;
+ memset(&parcel, 0, sizeof(SParcel));
+ parcel.updateType = E_LAYOUT_UPDATE;
+ parcel.layoutId = MUSIC_FOLDER_LAYOUT;
+ m->vmgr->UpdateView((const char *)MUSIC_BASE_VIEW, &parcel);
+
evas_object_show(Layout());
}
}
+void CFolderLayout::SetButtonFocus(const char *btnStr)
+{
+ ASSERT(m);
+
+ m->focusBtnStr = btnStr;
+ m->focusBtnIdler = ecore_idler_add(sm_CbButtonFocusIdler, this);
+}
+
+
void CFolderLayout::OnMouseMove(int id, Evas *e, Evas_Object *obj, Evas_Event_Mouse_Move *ev)
{
switch (id) {
}
else {
SParcel parcel;
- parcel.ctxtInfo = NULL;
+ memset(&parcel, 0, sizeof(SParcel));
parcel.updateType = E_FOCUS_UPDATE;
- parcel.layoutId = NULL;
- parcel.keyEvent = NULL;
m->vmgr->UpdateView((const char *)MUSIC_BASE_VIEW, &parcel);
}
}
m->ctxtinfo = ctxtinfo;
SParcel parcel;
+ memset(&parcel, 0, sizeof(SParcel));
parcel.ctxtInfo = ctxtinfo;
if (!m->vmgr->PushView(MUSIC_CONTEXT_VIEW, &parcel))
_ERR("viewmgr push view MUSIC_CONTEXT_VIEW failed");
}
break;
+ case FOLDER_LAYOUT_PLAY_BUTTON:
+ case FOLDER_LAYOUT_NEXT_BUTTON:
+ case FOLDER_LAYOUT_LAST_BUTTON:
+ if (!strcmp(ev->keyname, KEY_UP)) {
+ const char *btnText = NULL;
+
+ if (id == FOLDER_LAYOUT_PLAY_BUTTON)
+ btnText = MUSIC_FIRST_BTN;
+ else if (id == FOLDER_LAYOUT_NEXT_BUTTON)
+ btnText = MUSIC_SECOND_BTN;
+ else //FOLDER_LAYOUT_LAST_BUTTON
+ btnText = MUSIC_THIRD_BTN;
+
+ SParcel parcel;
+ memset(&parcel, 0, sizeof(SParcel));
+ parcel.updateType = E_FOCUS_UPDATE;
+ parcel.keyEvent = KEY_UP;
+ parcel.prevFocusedBtn = btnText;
+ m->vmgr->UpdateView((const char *)MUSIC_BASE_VIEW, &parcel);
+ }
+ break;
+
default:
break;
}
m->ctxtinfo->status = (EPlayStatus)playStatus;
SParcel parcel;
- parcel.ctxtInfo = NULL;
+ memset(&parcel, 0, sizeof(SParcel));
parcel.updateType = E_SONG_UPDATE;
- parcel.layoutId = NULL;
- parcel.keyEvent = NULL;
m->mgr->UpdateView((const char *)MUSIC_CONTEXT_VIEW, &parcel);
}
}
m->ctxtinfo = ctxtinfo;
SParcel parcel;
+ memset(&parcel, 0, sizeof(SParcel));
parcel.ctxtInfo = ctxtinfo;
if (!m->mgr->PushView(MUSIC_CONTEXT_VIEW, &parcel))
_ERR("viewmgr push view MUSIC_CONTEXT_VIEW failed");
void CSongLayout::m_GotoPlayback(void)
{
SParcel parcel;
- parcel.ctxtInfo = NULL;
+ memset(&parcel, 0, sizeof(SParcel));
parcel.updateType = E_PLAYLIST_UPDATE;
- parcel.layoutId = NULL;
- parcel.keyEvent = NULL;
if (!m->vmgr->PushView(MUSIC_PLAYBACK_VIEW, &parcel))
_ERR(" viewmgr push view MUSIC_PLAYBACK_VIEW failed ");
Connect(layout, SONG_LAYOUT, TYPE_KEY_DOWN);
SParcel parcel;
- parcel.ctxtInfo = NULL;
+ memset(&parcel, 0, sizeof(SParcel));
parcel.updateType = E_FOCUS_UPDATE;
parcel.layoutId = MUSIC_SONG_LAYOUT;
- parcel.keyEvent = NULL;
m->vmgr->UpdateView((const char *)MUSIC_BASE_VIEW, &parcel);
}
if (!strcmp(ev->keyname, KEY_BACK) ||
!strcmp(ev->keyname, KEY_BACK_REMOTE)) {
SParcel parcel;
- parcel.ctxtInfo = NULL;
+ memset(&parcel, 0, sizeof(SParcel));
parcel.updateType = E_FOCUS_UPDATE;
- parcel.layoutId = NULL;
- parcel.keyEvent = NULL;
m->vmgr->UpdateView((const char *)MUSIC_BASE_VIEW, &parcel);
}
}
m->ctxtinfo = ctxtinfo;
SParcel parcel;
+ memset(&parcel, 0, sizeof(SParcel));
parcel.ctxtInfo = ctxtinfo;
if (!m->vmgr->PushView(MUSIC_CONTEXT_VIEW, &parcel))
_ERR("viewmgr push view MUSIC_CONTEXT_VIEW failed");