1. Apply modified listeners to CContextView
[profile/tv/apps/native/musicplayer.git] / include / context-view.h
1 /*
2  * Copyright (c) 2014 Samsung Electronics Co., Ltd All Rights Reserved
3  *
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
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
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.
15 */
16
17 #ifndef __CONTEXT_VIEW_H__
18 #define __CONTEXT_VIEW_H__
19
20
21 struct SContentInfo;
22 struct SRltvCtnt;
23
24 class CContextView : public CBaseView, public CListenerMgr,
25         public IKeyDownListener, public IKeyUpListener,
26         public IMouseMoveListener, public IMouseUpListener,
27         public IFocusedListener, public IUnfocusedListener {
28 private:
29         struct SContextView* m;
30
31 private:
32         static void sm_CbRltdCtntSelected(void *data, Evas_Object *obj, const char *emission, const char *source);
33
34         static void sm_CbPopupKeyPressed(void *data, Evas *e, Evas_Object *obj, void *ei);
35         void m_OnPopUpKeyPressed(Evas *e, Evas_Object *obj, Evas_Event_Key_Down *ev);
36
37         static void sm_CbRemove(void *data, Evas_Object *obj, void *ei);
38         void m_OnRemove(Evas_Object *obj);
39
40         static void sm_CbCancel(void *data, Evas_Object *obj, void *ei);
41         void m_OnCancel(Evas_Object *obj);
42
43         static int sm_CbSortPlaylist(const void *d1, const void *d2);
44         static void sm_CbPopupDeleted(void *data, Evas *e, Evas_Object *obj, void *ei);
45
46         static void sm_CbPopupBtnClicked(void *data, Evas_Object *obj, void *ei);
47         void m_OnPopupBtnClicked(Evas_Object *obj);
48
49         static Eina_Bool sm_CbSelectIdler(void *dt);
50         Eina_Bool m_OnSelectIdler(void);
51
52
53
54 private:
55         Evas_Object *m_AddScroller(Evas_Object *base);
56         void m_SetBtnDownFocus(Evas_Object *btn);
57         void m_SetLayoutFocusOrder(Evas_Object *btn);
58         void m_SetBtnsFocusOrder(Evas_Object *btn, Evas_Object *prv,
59                 int btnTypeIndex, int btnTypeFirst, int btnTypeLast);
60         bool m_AddBtnLabel(Evas_Object *btn, const char *txt);
61         bool m_AddBtnIcon(Evas_Object *btn, const char *icon);
62         bool m_AddBtnInfo(Evas_Object *btn, const char *icon, const char *txt);
63         Evas_Object *m_AddButton(Evas_Object *base);
64         Evas_Object *m_AddBtnBox(Evas_Object *base);
65         bool m_CreateBtnsPart(void);
66         Eina_List *m_OtherSongsOfArtist(char *artist, char *title);
67         Eina_List *m_OtherAlbumsOfArtist(char *artist, char *album);
68         Eina_List *m_OtherSimilarArtist(char *artist);
69         Eina_List *m_OtherSongsOfGenre(char *genre);
70         SRltvCtnt *m_InfoOfAlbum(char *album);
71         SRltvCtnt *m_InfoOfArtist(char *artist);
72         SRltvCtnt *m_InfoOfGenre(char *genre);
73         bool m_GetContextDetails(SContentInfo *cinfo, char **path,
74                 char **title, char **subtitle, char **subtitle2,
75                 char **rltvtitle, SRltvCtnt **ctntinfo,
76                 Eina_List **rltvlist);
77         Evas_Object *m_AddRltvCtnt(Evas_Object *obj, char *name, char *icon);
78         bool m_AddTableContents(Eina_List *list);
79         Evas_Object *m_AddTable(Evas_Object *base);
80         bool m_CreateRltvContent(Eina_List *list);
81         bool m_CreateMoreinfoLayout(SRltvCtnt *rctnt, Evas_Object *img);
82         bool m_CreateInfoPart(void);
83         bool m_CreateFullView(void);
84         Evas_Object *m_CreatePlaylistPopup(void);
85         Evas_Object *m_CreateRemovePopup(Evas_Object *base, const char *msg,
86                 Evas_Object_Event_Cb _close_cb, Evas_Smart_Cb _remove_cb,
87                 Evas_Smart_Cb _cancel_cb, void *dt);
88         void m_DestroyPopup(void);
89         void m_HandleBtnSelected(int btnType);
90         void m_HandleMoreinfoSelected(Evas_Object *obj);
91
92 protected:
93         virtual void t_OnShow(void);
94         virtual void t_OnHide(void);
95         virtual void t_OnUpdate(void* data);
96
97 public:
98         CContextView(const char *pViewId) :
99                 CBaseView(pViewId),
100                 IKeyDownListener(this),
101                 IKeyUpListener(this),
102                 IMouseMoveListener(this),
103                 IMouseUpListener(this),
104                 IFocusedListener(this),
105                 IUnfocusedListener(this),
106                 m(0) {}
107         virtual ~CContextView() {}
108
109         virtual bool Create(void *data);
110         virtual void Destroy(void);
111
112         virtual Evas_Object* Base(void);
113
114 public:
115         virtual void OnKeyDown(int id, Evas *e, Evas_Object *obj, Evas_Event_Key_Down *ev);
116         virtual void OnKeyUp(int id, Evas *e, Evas_Object *obj, Evas_Event_Key_Up *ev);
117         virtual void OnMouseMove(int id, Evas *e, Evas_Object *obj, Evas_Event_Mouse_Move *ev);
118         virtual void OnMouseUp(int id, Evas *e, Evas_Object *obj, Evas_Event_Mouse_Up *ev);
119         virtual void OnFocused(int id, Evas_Object *obj, Elm_Object_Item *item);
120         virtual void OnUnfocused(int id, Evas_Object *obj, Elm_Object_Item *item);
121 };
122
123
124 #endif /*__CONTEXT_VIEW_H__*/