Fixed Jira issues 50249, 50683, 50387
[apps/osp/MusicPlayer.git] / src / MpContentEditPanel.cpp
1 //\r
2 // Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
3 //\r
4 // Licensed under the Flora License, Version 1.1 (the License);\r
5 // you may not use this file except in compliance with the License.\r
6 // You may obtain a copy of the License at\r
7 //\r
8 //     http://floralicense.org/license/\r
9 //\r
10 // Unless required by applicable law or agreed to in writing, software\r
11 // distributed under the License is distributed on an AS IS BASIS,\r
12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
13 // See the License for the specific language governing permissions and\r
14 // limitations under the License.\r
15 //\r
16 \r
17 /**\r
18  * @file                MpContentEditPanel.cpp\r
19  * @brief               This is the implementation file for ContentEditPanel class.\r
20  */\r
21 \r
22 #include "FUi.h"\r
23 #include "MpContentEditPanel.h"\r
24 #include "MpContentForm.h"\r
25 #include "MpCommonUtil.h"\r
26 #include "MpPlaylistPickerPopup.h"\r
27 #include "MpSharePopup.h"\r
28 #include "MpTypes.h"\r
29 \r
30 using namespace Tizen::Base;\r
31 using namespace Tizen::Base::Collection;\r
32 using namespace Tizen::Graphics;\r
33 using namespace Tizen::Ui;\r
34 using namespace Tizen::Ui::Controls;\r
35 using namespace Tizen::Ui::Scenes;\r
36 \r
37 static const int H_SHOW_CHECKED_COUNT_BALLOON_TOOL_TIP = 48;\r
38 \r
39 ContentEditPanel::ContentEditPanel(void)\r
40         : ContentPanel::ContentPanel()\r
41         , __checkedItemCount(0)\r
42         , __pPlayListPicker(null)\r
43         , __pSharePicker(null)\r
44         , __pBallonTooltip(null)\r
45 {\r
46         AppLogDebug("ENTER");\r
47         AppLogDebug("EXIT");\r
48 }\r
49 \r
50 ContentEditPanel::~ContentEditPanel(void)\r
51 {\r
52         AppLogDebug("ENTER");\r
53         AppLogDebug("EXIT");\r
54 }\r
55 \r
56 bool\r
57 ContentEditPanel::Initialize(void)\r
58 {\r
59         AppLogDebug("ENTER");\r
60         result r = Panel::Construct(IDL_CONTENTS_LIBARY_EDITOR_PANEL);\r
61         if (IsFailed(r))\r
62         {\r
63                 AppLogDebug("Construct(IDL_CONTENT_EDIT_PANEL) failed(%s)", GetErrorMessage(r));\r
64                 return false;\r
65         }\r
66         AppLogDebug("EXIT");\r
67         return Construct();\r
68 }\r
69 \r
70 result\r
71 ContentEditPanel::Construct(void)\r
72 {\r
73         AppLogDebug("ENTER");\r
74         __pContentTableView = static_cast<TableView*>(GetControl(IDC_CONTENTS_EDIT_TABLEVIEW));\r
75         __pContentTableView->SetItemProvider(this);\r
76         __pContentTableView->AddTableViewItemEventListener(*this);\r
77         __pBallonTooltip = static_cast<Label*>(GetControl(IDC_ITEM_SELECTED_COUNT_LABEL));\r
78         __pNoContentLabel = static_cast<Panel*>(GetControl(IDC_NO_CONTENTS_PANEL));\r
79         __pNoContentTextLabel = static_cast<Label*>(__pNoContentLabel->GetControl(L"IDC_LABEL2"));\r
80         SetControlAlwaysOnTop(*__pBallonTooltip, true);\r
81         AppLogDebug("EXIT");\r
82         return E_SUCCESS;\r
83 }\r
84 \r
85 result\r
86 ContentEditPanel::OnTerminating(void)\r
87 {\r
88         RemovePlayListPicker();\r
89         RemoveSharePicker();\r
90         return ContentPanel::OnTerminating();\r
91 }\r
92 \r
93 result\r
94 ContentEditPanel::LanucherPicker(PickerType pickerType, PickerArgumentType argumentType)\r
95 {\r
96         AppLogDebug("ENTER");\r
97         IList* pArgumentList = GetPickerArgumentListN(pickerType, argumentType);\r
98         if (pArgumentList == null)\r
99         {\r
100                 AppLogDebug("GetPickerArgumentListN is null");\r
101                 return E_FAILURE;\r
102         }\r
103 \r
104         result r = E_FAILURE;\r
105         if (pickerType == PICKER_TYPE_PLAY_LIST_PICKER)\r
106         {\r
107                 r = ShowPlayListPicker(pArgumentList);\r
108         }\r
109         else if (pickerType == PICKER_TYPE_SHARE_PICKER)\r
110         {\r
111                 r = ShowSharePicker(pArgumentList);\r
112         }\r
113 \r
114         if (IsFailed(r))\r
115         {\r
116                 AppLogDebug("ShowPlayListPicker failed(%s)", GetErrorMessage(r));\r
117                 delete pArgumentList;\r
118         }\r
119 \r
120         AppLogDebug("EXIT");\r
121         return r;\r
122 }\r
123 \r
124 Tizen::Base::Collection::IList*\r
125 ContentEditPanel::GetPickerArgumentListN(PickerType pickerType, PickerArgumentType argumentType)\r
126 {\r
127         AppLogDebug("ENTER");\r
128         AppLogDebug("EXIT");\r
129         return null;\r
130 }\r
131 \r
132 result\r
133 ContentEditPanel::ShowPlayListPicker(Tizen::Base::Collection::IList* pIList)\r
134 {\r
135         AppLogDebug("ENTER");\r
136         RemovePlayListPicker();\r
137 \r
138         __pPlayListPicker = new (std::nothrow) PlayListPickerPopup();\r
139         if (IsFailed(__pPlayListPicker->Initialize(this, pIList)))\r
140         {\r
141                 AppLogDebug("__pSharePicker->Initialize failed(%s)", GetErrorMessage(E_FAILURE));\r
142                 RemovePlayListPicker();\r
143                 return E_FAILURE;\r
144         }\r
145 \r
146         __pPlayListPicker->SetShowState(true);\r
147         __pPlayListPicker->Show();\r
148 \r
149         AppLogDebug("EXIT");\r
150         return E_SUCCESS;\r
151 }\r
152 \r
153 void\r
154 ContentEditPanel::RemoveSharePicker(const bool deleteInstance)\r
155 {\r
156         AppLogDebug("ENTER");\r
157         if (__pSharePicker != null)\r
158         {\r
159                 CommonUtil::SetShowStateControl(*__pSharePicker, false);\r
160                 if (deleteInstance)\r
161                 {\r
162                         delete __pSharePicker;\r
163                         __pSharePicker = null;\r
164                 }\r
165         }\r
166         AppLogDebug("EXIT");\r
167 }\r
168 \r
169 void\r
170 ContentEditPanel::RemovePlayListPicker(const bool deleteInstance)\r
171 {\r
172         AppLogDebug("ENTER");\r
173         if (__pPlayListPicker != null )\r
174         {\r
175                 CommonUtil::SetShowStateControl(*__pPlayListPicker, false);\r
176                 if (deleteInstance)\r
177                 {\r
178                         delete __pPlayListPicker;\r
179                         __pPlayListPicker = null;\r
180                 }\r
181         }\r
182         AppLogDebug("EXIT");\r
183 }\r
184 \r
185 result\r
186 ContentEditPanel::ShowSharePicker(Tizen::Base::Collection::IList* pIList)\r
187 {\r
188         AppLogDebug("ENTER");\r
189         RemoveSharePicker();\r
190 \r
191         __pSharePicker = new (std::nothrow) SharePopup();\r
192         if (IsFailed(__pSharePicker->Initialize(this)))\r
193         {\r
194                 AppLogDebug("__pSharePicker->Initialize failed(%s)", GetErrorMessage(E_FAILURE));\r
195                 RemoveSharePicker();\r
196                 return E_FAILURE;\r
197         }\r
198 \r
199         __pSharePicker->SetArguments(pIList);\r
200         __pSharePicker->SetShowState(true);\r
201         __pSharePicker->Show();\r
202 \r
203         AppLogDebug("EXIT");\r
204         return E_SUCCESS;\r
205 }\r
206 \r
207 result\r
208 ContentEditPanel::SetShowStateBalloonTooltip(bool isShow)\r
209 {\r
210         AppLogDebug("ENTER");\r
211         int balloonTooltipHeight = INIT_VALUE;\r
212         if (isShow == true && __checkedItemCount != INIT_VALUE)\r
213         {\r
214                 balloonTooltipHeight = H_SHOW_CHECKED_COUNT_BALLOON_TOOL_TIP;\r
215         }\r
216         else\r
217         {\r
218                 isShow = false;\r
219         }\r
220 \r
221         AppLogDebug("EXIT");\r
222         return CommonUtil::SetShowStateVariableHeightSizeControl(*__pBallonTooltip, balloonTooltipHeight, isShow);\r
223 }\r
224 \r
225 void\r
226 ContentEditPanel::SetCheckedCountBallonTooltip(unsigned int checkedItemCount)\r
227 {\r
228         AppLogDebug("ENTER");\r
229         if (checkedItemCount == INIT_VALUE)\r
230         {\r
231                 SetShowStateBalloonTooltip(false);\r
232                 return ;\r
233         }\r
234 \r
235         __pBallonTooltip->SetText(CommonUtil::GetStringItemSelected(checkedItemCount));\r
236         SetShowStateBalloonTooltip(true);\r
237         AppLogDebug("EXIT");\r
238 }\r
239 \r
240 void\r
241 ContentEditPanel::SetNoContentSongs(bool isNoContents)\r
242 {\r
243         AppLogDebug("ENTER");\r
244         if (isNoContents == true)\r
245         {\r
246                 SetShowStateBalloonTooltip(false);\r
247                 SetShowStateContentTableview(false);\r
248 \r
249                 SetShowStateNoContent(true);\r
250                 AppLogDebug("EXIT");\r
251                 return;\r
252         }\r
253 \r
254         SetShowStateNoContent(false);\r
255         SetShowStateContentTableview(true);\r
256         AppLogDebug("EXIT");\r
257 }\r
258 \r
259 void\r
260 ContentEditPanel::SetContentEditHeader(void)\r
261 {\r
262         AppLogDebug("ENTER");\r
263         CommonUtil::SetSimpleTitleStyle(*GetHeader(), ResourceManager::GetString(L"IDS_COM_BODY_EDIT"));\r
264         CommonUtil::SetButtonItemUnCheckedIcon(*GetHeader());\r
265         AppLogDebug("EXIT");\r
266 }\r
267 \r
268 void\r
269 ContentEditPanel::SetItemCheckedAll(bool isChecked)\r
270 {\r
271         AppLogDebug("ENTER");\r
272         if (isChecked == true)\r
273         {\r
274                 __checkedItemCount = __pContentTableView->GetItemCount();\r
275         }\r
276         else\r
277         {\r
278                 __checkedItemCount = INIT_VALUE;\r
279         }\r
280         CommonUtil::SetItemCheckedAll(isChecked, *__pContentTableView);\r
281 \r
282         if (GetFooter() != null)\r
283         {\r
284                 CommonUtil::SetFooterItemEnabled(*GetFooter(), isChecked);\r
285         }\r
286         SetCheckedCountBallonTooltip(__checkedItemCount);\r
287         AppLogDebug("EXIT");\r
288 }\r
289 \r
290 void\r
291 ContentEditPanel::OnOrientationPanelChanged(Tizen::Ui::OrientationStatus orientationStatus)\r
292 {\r
293         AppLogDebug("ENTER");\r
294         UpdateContentEditScreenState();\r
295         AppLogDebug("EXIT");\r
296 }\r
297 \r
298 void\r
299 ContentEditPanel::OnMusicContentUpdateCompleted(void)\r
300 {\r
301         AppLogDebug("ENTER");\r
302         __checkedItemCount = INIT_VALUE;\r
303 \r
304         //just hide the popups and don't delete those\r
305         RemovePlayListPicker(false);\r
306         RemoveSharePicker(false);\r
307 \r
308         UpdateContentList();\r
309         UpdateContentEditScreenState();\r
310 \r
311         if (__pContentTableView != null && IsEmptyContentList() == false)\r
312         {\r
313                 SetItemCheckedAll(false);\r
314                 __pContentTableView->UpdateTableView();\r
315         }\r
316 \r
317         if (GetFooter() != null)\r
318         {\r
319                 CommonUtil::SetFooterItemEnabled(*GetFooter(), false);\r
320         }\r
321 \r
322         AppLogDebug("EXIT");\r
323 }\r
324 \r
325 void\r
326 ContentEditPanel::OnUserEventReceivedN(RequestId requestId, Tizen::Base::Collection::IList* pArgs)\r
327 {\r
328         AppLogDebug("ENTER");\r
329 \r
330         if ((requestId != ID_DESTORY_PLAY_LIST_PICKER_POPUP) && (requestId != ID_DESTORY_SHARE_POPUP))\r
331         {\r
332                 AppLogDebug("EXIT");\r
333                 return;\r
334         }\r
335 \r
336         if (pArgs != null)\r
337         {\r
338                 if (requestId == ID_DESTORY_PLAY_LIST_PICKER_POPUP)\r
339                 {\r
340                         Boolean* pIsInitialize = static_cast<Boolean*>(pArgs->GetAt(0));\r
341 \r
342                         if (pIsInitialize->Equals(true))\r
343                         {\r
344                                 SetItemCheckedAll(false);\r
345                         }\r
346                 }\r
347                 pArgs->RemoveAll(true);\r
348                 delete pArgs;\r
349         }\r
350 \r
351         RemovePlayListPicker();\r
352         RemoveSharePicker();\r
353 \r
354         AppLogDebug("EXIT");\r
355 }\r
356 \r
357 void\r
358 ContentEditPanel::UpdateContentEditScreenState(void)\r
359 {\r
360         AppLogDebug("ENTER");\r
361         if (IsEmptyContentList() == true)\r
362         {\r
363                 SceneManager* pSceneManager = SceneManager::GetInstance();\r
364                 SetShowStateContentTableview(false);\r
365                 SetShowStateNoContent(true);\r
366                 SetShowStateBalloonTooltip(false);\r
367 \r
368                 if(__pNoContentTextLabel != null)\r
369                 {\r
370                         __pNoContentTextLabel->SetText(GetNoContentText());\r
371                 }
372 \r
373                 GetHeader()->SetButtonEnabled(BUTTON_POSITION_RIGHT, false);\r
374                 GetHeader()->Invalidate(true);\r
375                 AppAssert(pSceneManager);\r
376                 pSceneManager->GoBackward(BackwardSceneTransition());\r
377                 AppLogDebug("EXIT");\r
378                 return;\r
379         }\r
380         else\r
381         {\r
382                 GetHeader()->SetButtonEnabled(BUTTON_POSITION_RIGHT, true);\r
383                 GetHeader()->Invalidate(true);\r
384         }\r
385 \r
386         SetCheckedCountBallonTooltip(__checkedItemCount);\r
387         SetShowStateNoContent(false);\r
388         SetShowStateContentTableview(true);\r
389         AppLogDebug("EXIT");\r
390 }\r
391 \r
392 String\r
393 ContentEditPanel::GetNoContentText(void)\r
394 {\r
395         return ResourceManager::GetString(L"IDS_MUSIC_HEADER_NO_SONGS");\r
396 }\r