Fixed jira issue and fixed prevent issue
[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.0 (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 \r
36 static const int H_SHOW_CHECKED_COUNT_BALLOON_TOOL_TIP = 48;\r
37 \r
38 ContentEditPanel::ContentEditPanel(void)\r
39         : ContentPanel::ContentPanel()\r
40         , __checkedItemCount(0)\r
41         , __pPlayListPicker(null)\r
42         , __pSharePicker(null)\r
43         , __pBallonTooltip(null)\r
44 {\r
45         AppLogDebug("ENTER");\r
46         AppLogDebug("EXIT");\r
47 }\r
48 \r
49 ContentEditPanel::~ContentEditPanel(void)\r
50 {\r
51         AppLogDebug("ENTER");\r
52         AppLogDebug("EXIT");\r
53 }\r
54 \r
55 bool\r
56 ContentEditPanel::Initialize(void)\r
57 {\r
58         AppLogDebug("ENTER");\r
59         result r = Panel::Construct(IDL_CONTENTS_LIBARY_EDITOR_PANEL);\r
60         if (IsFailed(r))\r
61         {\r
62                 AppLogDebug("Construct(IDL_CONTENT_EDIT_PANEL) failed(%s)", GetErrorMessage(r));\r
63                 return false;\r
64         }\r
65         AppLogDebug("EXIT");\r
66         return Construct();\r
67 }\r
68 \r
69 result\r
70 ContentEditPanel::Construct(void)\r
71 {\r
72         AppLogDebug("ENTER");\r
73         __pContentTableView = static_cast<TableView*>(GetControl(IDC_CONTENTS_EDIT_TABLEVIEW));\r
74         __pContentTableView->SetItemProvider(this);\r
75         __pContentTableView->AddTableViewItemEventListener(*this);\r
76         __pBallonTooltip = static_cast<Label*>(GetControl(IDC_ITEM_SELECTED_COUNT_LABEL));\r
77         __pNoContentLabel = static_cast<Label*>(GetControl(IDC_NO_CONTENTS_LABEL));\r
78         SetControlAlwaysOnTop(*__pBallonTooltip, true);\r
79         AppLogDebug("EXIT");\r
80         return E_SUCCESS;\r
81 }\r
82 \r
83 result\r
84 ContentEditPanel::OnTerminating(void)\r
85 {\r
86         RemovePlayListPicker();\r
87         RemoveSharePicker();\r
88         return ContentPanel::OnTerminating();\r
89 }\r
90 \r
91 result\r
92 ContentEditPanel::LanucherPicker(PickerType pickerType, PickerArgumentType argumentType)\r
93 {\r
94         AppLogDebug("ENTER");\r
95         IList* pArgumentList = GetPickerArgumentListN(pickerType, argumentType);\r
96         if (pArgumentList == null)\r
97         {\r
98                 AppLogDebug("GetPickerArgumentListN is null");\r
99                 return E_FAILURE;\r
100         }\r
101 \r
102         result r = E_FAILURE;\r
103         if (pickerType == PICKER_TYPE_PLAY_LIST_PICKER)\r
104         {\r
105                 r = ShowPlayListPicker(pArgumentList);\r
106         }\r
107         else if (pickerType == PICKER_TYPE_SHARE_PICKER)\r
108         {\r
109                 r = ShowSharePicker(pArgumentList);\r
110         }\r
111 \r
112         if (IsFailed(r))\r
113         {\r
114                 AppLogDebug("ShowPlayListPicker failed(%s)", GetErrorMessage(r));\r
115                 delete pArgumentList;\r
116         }\r
117 \r
118         AppLogDebug("EXIT");\r
119         return r;\r
120 }\r
121 \r
122 Tizen::Base::Collection::IList*\r
123 ContentEditPanel::GetPickerArgumentListN(PickerType pickerType, PickerArgumentType argumentType)\r
124 {\r
125         AppLogDebug("ENTER");\r
126         AppLogDebug("EXIT");\r
127         return null;\r
128 }\r
129 \r
130 result\r
131 ContentEditPanel::ShowPlayListPicker(Tizen::Base::Collection::IList* pIList)\r
132 {\r
133         AppLogDebug("ENTER");\r
134         RemovePlayListPicker();\r
135 \r
136         __pPlayListPicker = new (std::nothrow) PlayListPickerPopup();\r
137         if (IsFailed(__pPlayListPicker->Initialize(this, pIList)))\r
138         {\r
139                 AppLogDebug("__pSharePicker->Initialize failed(%s)", GetErrorMessage(E_FAILURE));\r
140                 RemovePlayListPicker();\r
141                 return E_FAILURE;\r
142         }\r
143 \r
144         __pPlayListPicker->SetShowState(true);\r
145         __pPlayListPicker->Show();\r
146 \r
147         AppLogDebug("EXIT");\r
148         return E_SUCCESS;\r
149 }\r
150 \r
151 void\r
152 ContentEditPanel::RemoveSharePicker(void)\r
153 {\r
154         AppLogDebug("ENTER");\r
155         if (__pSharePicker != null)\r
156         {\r
157                 CommonUtil::SetShowStateControl(*__pSharePicker, false);\r
158                 delete __pSharePicker;\r
159                 __pSharePicker = null;\r
160         }\r
161         AppLogDebug("EXIT");\r
162 }\r
163 \r
164 void\r
165 ContentEditPanel::RemovePlayListPicker(void)\r
166 {\r
167         AppLogDebug("ENTER");\r
168         if (__pPlayListPicker != null )\r
169         {\r
170                 CommonUtil::SetShowStateControl(*__pPlayListPicker, false);\r
171                 delete __pPlayListPicker;\r
172                 __pPlayListPicker = null;\r
173         }\r
174         AppLogDebug("EXIT");\r
175 }\r
176 \r
177 result\r
178 ContentEditPanel::ShowSharePicker(Tizen::Base::Collection::IList* pIList)\r
179 {\r
180         AppLogDebug("ENTER");\r
181         RemoveSharePicker();\r
182 \r
183         __pSharePicker = new (std::nothrow) SharePopup();\r
184         if (IsFailed(__pSharePicker->Initialize(this)))\r
185         {\r
186                 AppLogDebug("__pSharePicker->Initialize failed(%s)", GetErrorMessage(E_FAILURE));\r
187                 RemoveSharePicker();\r
188                 return E_FAILURE;\r
189         }\r
190 \r
191         __pSharePicker->SetArguments(pIList);\r
192         __pSharePicker->SetShowState(true);\r
193         __pSharePicker->Show();\r
194 \r
195         AppLogDebug("EXIT");\r
196         return E_SUCCESS;\r
197 }\r
198 \r
199 result\r
200 ContentEditPanel::SetShowStateBalloonTooltip(bool isShow)\r
201 {\r
202         AppLogDebug("ENTER");\r
203         int balloonTooltipHeight = INIT_VALUE;\r
204         if (isShow == true && __checkedItemCount != INIT_VALUE)\r
205         {\r
206                 balloonTooltipHeight = H_SHOW_CHECKED_COUNT_BALLOON_TOOL_TIP;\r
207         }\r
208         else\r
209         {\r
210                 isShow = false;\r
211         }\r
212 \r
213         AppLogDebug("EXIT");\r
214         return CommonUtil::SetShowStateVariableHeightSizeControl(*__pBallonTooltip, balloonTooltipHeight, isShow);\r
215 }\r
216 \r
217 void\r
218 ContentEditPanel::SetCheckedCountBallonTooltip(unsigned int checkedItemCount)\r
219 {\r
220         AppLogDebug("ENTER");\r
221         if (checkedItemCount == INIT_VALUE)\r
222         {\r
223                 SetShowStateBalloonTooltip(false);\r
224                 return ;\r
225         }\r
226 \r
227         __pBallonTooltip->SetText(CommonUtil::GetStringItemSelected(checkedItemCount));\r
228         if (__pBallonTooltip->GetShowState() == false)\r
229         {\r
230                 SetShowStateBalloonTooltip(true);\r
231         }\r
232         else\r
233         {\r
234                 __pBallonTooltip->Invalidate(true);\r
235         }\r
236         AppLogDebug("EXIT");\r
237 }\r
238 \r
239 void\r
240 ContentEditPanel::SetNoContentSongs(bool isNoContents)\r
241 {\r
242         AppLogDebug("ENTER");\r
243         if (isNoContents == true)\r
244         {\r
245                 SetShowStateBalloonTooltip(false);\r
246                 SetShowStateContentTableview(false);\r
247 \r
248                 SetShowStateNoContent(true);\r
249                 AppLogDebug("EXIT");\r
250                 return;\r
251         }\r
252 \r
253         SetShowStateNoContent(false);\r
254         SetShowStateContentTableview(true);\r
255         AppLogDebug("EXIT");\r
256 }\r
257 \r
258 void\r
259 ContentEditPanel::SetContentEditHeader(void)\r
260 {\r
261         AppLogDebug("ENTER");\r
262         CommonUtil::SetSimpleTitleStyle(*GetHeader(), ResourceManager::GetString(L"IDS_COM_BODY_EDIT"));\r
263         CommonUtil::SetButtonItemUnCheckedIcon(*GetHeader());\r
264         AppLogDebug("EXIT");\r
265 }\r
266 \r
267 void\r
268 ContentEditPanel::SetItemCheckedAll(bool isChecked)\r
269 {\r
270         AppLogDebug("ENTER");\r
271         if (isChecked == true)\r
272         {\r
273                 __checkedItemCount = __pContentTableView->GetItemCount();\r
274         }\r
275         else\r
276         {\r
277                 __checkedItemCount = INIT_VALUE;\r
278         }\r
279         CommonUtil::SetItemCheckedAll(isChecked, *__pContentTableView);\r
280         CommonUtil::SetFooterItemEnabled(*GetFooter(), isChecked);\r
281         SetCheckedCountBallonTooltip(__checkedItemCount);\r
282         AppLogDebug("EXIT");\r
283 }\r
284 \r
285 void\r
286 ContentEditPanel::OnOrientationPanelChanged(Tizen::Ui::OrientationStatus orientationStatus)\r
287 {\r
288         AppLogDebug("ENTER");\r
289         __pContentTableView->Invalidate(true);\r
290         AppLogDebug("EXIT");\r
291 }\r
292 \r
293 void\r
294 ContentEditPanel::OnMusicContentUpdateCompleted(void)\r
295 {\r
296         AppLogDebug("ENTER");\r
297         __checkedItemCount = INIT_VALUE;\r
298 \r
299         RemovePlayListPicker();\r
300         RemoveSharePicker();\r
301 \r
302         UpdateContentList();\r
303         UpdateContentEditScreenState();\r
304 \r
305         if (__pContentTableView != null && IsEmptyContentList() == false)\r
306         {\r
307                 SetItemCheckedAll(false);\r
308                 __pContentTableView->UpdateTableView();\r
309         }\r
310         CommonUtil::SetFooterItemEnabled(*GetFooter(), false);\r
311         AppLogDebug("EXIT");\r
312 }\r
313 \r
314 void\r
315 ContentEditPanel::OnUserEventReceivedN(RequestId requestId, Tizen::Base::Collection::IList* pArgs)\r
316 {\r
317         AppLogDebug("ENTER");\r
318         if ((requestId != ID_DESTORY_PLAY_LIST_PICKER_POPUP) && (requestId != ID_DESTORY_SHARE_POPUP))\r
319         {\r
320                 AppLogDebug("EXIT");\r
321                 return;\r
322         }\r
323 \r
324         if (pArgs != null)\r
325         {\r
326                 Boolean* pIsInitialize = static_cast<Boolean*>(pArgs->GetAt(0));\r
327                 if (pIsInitialize->Equals(true))\r
328                 {\r
329                         SetItemCheckedAll(false);\r
330                 }\r
331                 pArgs->RemoveAll(true);\r
332                 delete pArgs;\r
333         }\r
334 \r
335         RemovePlayListPicker();\r
336         RemoveSharePicker();\r
337         AppLogDebug("EXIT");\r
338 }\r
339 \r
340 void\r
341 ContentEditPanel::UpdateContentEditScreenState(void)\r
342 {\r
343         AppLogDebug("ENTER");\r
344         if (IsEmptyContentList() == true)\r
345         {\r
346                 SetShowStateContentTableview(false);\r
347                 SetShowStateNoContent(true);\r
348                 SetShowStateBalloonTooltip(false);\r
349 \r
350                 GetHeader()->SetButtonEnabled(BUTTON_POSITION_RIGHT, false);\r
351                 GetHeader()->Invalidate(true);\r
352                 AppLogDebug("EXIT");\r
353                 return;\r
354         }\r
355 \r
356         SetCheckedCountBallonTooltip(__checkedItemCount);\r
357         SetShowStateNoContent(false);\r
358         SetShowStateContentTableview(true);\r
359         AppLogDebug("EXIT");\r
360 }