2 * Copyright (c) 2014 Samsung Electronics Co., Ltd All Rights Reserved
4 * Licensed under the Apache License, Version 2.0 (the License);
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an AS IS BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
17 #ifndef __CATEGORY_LAYOUT_H__
18 #define __CATEGORY_LAYOUT_H__
21 class CCategoryLayout : public CExtBaseLayout, public CListenerMgr,
22 public IKeyDownListener, public IMouseMoveListener, public IMouseClickedListener,
23 public IRealizedListener, public IUnrealizedListener, public IActivatedListener {
25 struct SCategoryLayout *m;
43 CCategoryInfo *catinfo;
47 Elm_Object_Item *item;
52 struct SCategoryLayoutProtected {
54 CCategoryInfo *c_catinfo;
56 SContentInfo *ctxtinfo;
59 class CEntryPopup *epopup;
61 Elm_Object_Item *focused_item;
65 static Eina_Bool sm_CbFocusIdler(void *dt);
66 Eina_Bool m_OnFocusIdler(void);
68 static void sm_CbEntrynameSet(void *dt, const char *name);
69 void m_OnEntrynameSet(const char *name);
71 static char *sm_CbGetSelectlistItemText(void *data, Evas_Object *obj, const char *part);
72 static char *sm_CbGetListItemText(void *data, Evas_Object *obj, const char *part);
73 static void sm_CbRemoveListItem(void *data, Evas_Object *obj);
75 static void sm_CbSongItemSelect(void *data, Evas_Object *obj, void *event_info);
76 void m_OnSongItemSelect(Evas_Object *obj, Elm_Object_Item *event_info);
78 static void sm_CbSelectlistItemSelect(void *data, Evas_Object *obj, void *event_info);
79 void m_OnSelectlistItemSelect(Evas_Object *obj, Elm_Object_Item *event_info);
81 static void sm_CbCtxtUpdate(void *dt, enum EActionType type, int lid);
83 virtual void t_OnCtxtUpdate(enum EActionType type, int lid);
86 static void sm_CbCtxtClose(void *dt);
87 void m_OnCtxtClose(void);
89 static char *sm_CbGetGridItemText(void *data, Evas_Object *obj, const char *part);
90 static char *sm_CbGetGridAlbumItemText(void *data, Evas_Object *obj, const char *part);
91 static Evas_Object *sm_CbGetGridItemContent(void *data, Evas_Object *obj, const char *part);
92 static Evas_Object *sm_CbGetGridAlbumitemContent(void *data, Evas_Object *obj, const char *part);
93 static void sm_CbRemoveGridItem(void *data, Evas_Object *obj);
95 static void sm_CbItemSelect(void *data, Elm_Object_Item *it, const char *emission, const char *source);
96 void m_OnItemSelect(Elm_Object_Item *it, const char *emission, const char *source);
99 inline int m_ConvertToMin(int milsec);
100 void m_RemoveFocusIdler(void);
101 Elm_Object_Item *m_FindItemByInfo(Eina_List *list, void *info);
102 SCatItemInfo *m_FindItemInfo(Eina_List *list, Elm_Object_Item *item);
103 void m_GotoPlayback(int mode, char *id);
104 Eina_List *m_GetSelectedList(Eina_List *infolist, int type);
105 void m_AddSelectedSongs(void);
106 void m_RemoveSelectedSongs(void);
107 void m_AddAlbumsToPlayback(int mode);
108 void m_AddSongsToPlayback(int mode);
109 Evas_Object *m_AddAlbumCover(void);
110 Evas_Object *m_AddGrid(void);
111 void m_AddCategoryItem(Elm_Gengrid_Item_Class *grid_item, ECategoryType type, void *info);
112 void m_AddButtons(void);
113 void m_AddSelectlistButtons(void);
115 void m_CreateSongsTopSection(void);
116 void m_CreateSongList(void);
117 void m_CreateAlbumgrid(void);
118 void m_CreateCatgrid(bool sort_flag);
119 void m_SortCatgrid(void);
120 void m_EmptyLayout(bool sort_flag);
123 bool t_SetEdje(const char *layout);
124 void t_UpdateLayout(bool sort_flag);
125 void t_UpdateLayoutWithFocus(void);
128 virtual void t_OnShow(void);
131 virtual void t_HandleItemSelect(SCatItemInfo *itinfo) = 0;
132 virtual EContextType t_ContextType(void) = 0;
133 virtual bool t_GetMediaList(Eina_List **list) = 0;
134 virtual ECategoryType t_CategoryType(void) = 0;
137 CCategoryLayout(const char *pLayoutId) :
138 CExtBaseLayout(pLayoutId),
139 IKeyDownListener(this),
140 IMouseMoveListener(this),
141 IMouseClickedListener(this),
142 IRealizedListener(this),
143 IUnrealizedListener(this),
144 IActivatedListener(this),
146 memset(&t, 0, sizeof(t));
148 virtual ~CCategoryLayout() {}
150 bool Create(CLayoutMgr *mgr);
151 virtual void Destroy(void);
153 virtual void Update(bool focusFlag);
156 virtual void OnKeyDown(int id, Evas *e, Evas_Object *obj, Evas_Event_Key_Down *ev);
157 virtual void OnMouseMove(int id, Evas *e, Evas_Object *obj, Evas_Event_Mouse_Move *ev);
158 virtual void OnMouseClicked(int id, Evas_Object *obj);
159 virtual void OnRealized(int id, Evas_Object *obj, Elm_Object_Item *item);
160 virtual void OnUnrealized(int id, Evas_Object *obj, Elm_Object_Item *item);
161 virtual void OnActivated(int id, Evas_Object *obj, Elm_Object_Item *item);
165 #endif /*__CATEGORY_LAYOUT_H__*/