Fork for IVI: mesa fixing
[profile/ivi/uifw.git] / src / ui / controls / FUiCtrlHeader.cpp
1 //
2 // Open Service Platform
3 // Copyright (c) 2012-2013 Samsung Electronics Co., Ltd.
4 //
5 // Licensed under the Flora License, Version 1.0 (the License);
6 // you may not use this file except in compliance with the License.
7 // You may obtain a copy of the License at
8 //
9 //     http://floralicense.org/license/
10 //
11 // Unless required by applicable law or agreed to in writing, software
12 // distributed under the License is distributed on an AS IS BASIS,
13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 // See the License for the specific language governing permissions and
15 // limitations under the License.
16 //
17 /**
18  * @file                FUiCtrlHeader.cpp
19  * @brief               This is the implementation file for Header class.
20  */
21
22 #include <FUiCtrlHeader.h>
23 #include <FBaseSysLog.h>
24 #include "FUiCtrl_HeaderImpl.h"
25
26 using namespace Tizen::Base;
27 using namespace Tizen::Graphics;
28
29 namespace Tizen { namespace Ui { namespace Controls
30 {
31
32 result
33 Header::Construct(void)
34 {
35         SysAssertf(_pControlImpl == null,
36                                         "Already constructed. Calling Construct() twice or more on a same instance is not allowed for this class.");
37
38         result r = E_SUCCESS;
39
40         _HeaderImpl* pImpl = _HeaderImpl::CreateHeaderImplN(this);
41
42         r = GetLastResult();
43                 SysTryReturn(NID_UI_CTRL, pImpl, r, r, "[%s] Propagating.", GetErrorMessage(r));
44
45         _pControlImpl = pImpl;
46
47         return r;
48 }
49
50 result
51 Header::AddItem(const HeaderItem& item)
52 {
53         _HeaderImpl* pHeaderImpl = _HeaderImpl::GetInstance(*this);
54
55         SysAssertf(pHeaderImpl != null,
56                                 "Not yet constructed. Construct() should be called before use.");
57
58         return pHeaderImpl->AddItem(item);
59 }
60
61 ButtonItemStatus
62 Header::GetButtonStatus(ButtonPosition position) const
63 {
64         ClearLastResult();
65
66         const _HeaderImpl* pHeaderImpl = _HeaderImpl::GetInstance(*this);
67
68         SysAssertf(pHeaderImpl != null,
69                                         "Not yet constructed. Construct() should be called before use.");
70
71         return pHeaderImpl->GetButtonStatus(position);
72 }
73
74 Color
75 Header::GetButtonColor(ButtonItemStatus status) const
76 {
77         ClearLastResult();
78
79         const _HeaderImpl* pHeaderImpl = _HeaderImpl::GetInstance(*this);
80
81         SysAssertf(pHeaderImpl != null,
82                                         "Not yet constructed. Construct() should be called before use.");
83
84         return pHeaderImpl->GetButtonColor(status);
85 }
86
87 Color
88 Header::GetButtonTextColor(ButtonItemStatus status) const
89 {
90         ClearLastResult();
91
92         const _HeaderImpl* pHeaderImpl = _HeaderImpl::GetInstance(*this);
93
94         SysAssertf(pHeaderImpl != null,
95                                         "Not yet constructed. Construct() should be called before use.");
96
97         return pHeaderImpl->GetButtonTextColor(status);
98 }
99
100 String
101 Header::GetDescriptionText(void) const
102 {
103         ClearLastResult();
104
105         const _HeaderImpl* pHeaderImpl = _HeaderImpl::GetInstance(*this);
106
107         SysAssertf(pHeaderImpl != null,
108                                         "Not yet constructed. Construct() should be called before use.");
109
110         return pHeaderImpl->GetDescriptionText();
111 }
112
113 Color
114 Header::GetDescriptionTextColor(void) const
115 {
116         ClearLastResult();
117
118         const _HeaderImpl* pHeaderImpl = _HeaderImpl::GetInstance(*this);
119
120         SysAssertf(pHeaderImpl != null,
121                                         "Not yet constructed. Construct() should be called before use.");
122
123         return pHeaderImpl->GetDescriptionTextColor();
124 }
125
126 Color
127 Header::GetItemColor(HeaderItemStatus status) const
128 {
129         ClearLastResult();
130
131         const _HeaderImpl* pHeaderImpl = _HeaderImpl::GetInstance(*this);
132
133         SysAssertf(pHeaderImpl != null,
134                                         "Not yet constructed. Construct() should be called before use.");
135
136         return pHeaderImpl->GetItemColor(status);
137 }
138
139 int
140 Header::GetItemCount(void) const
141 {
142         ClearLastResult();
143
144         const _HeaderImpl* pHeaderImpl = _HeaderImpl::GetInstance(*this);
145
146         SysAssertf(pHeaderImpl != null,
147                                         "Not yet constructed. Construct() should be called before use.");
148
149         return pHeaderImpl->GetItemCount();
150 }
151
152 result
153 Header::GetItemStatus(int itemIndex, HeaderItemStatus& status) const
154 {
155         const _HeaderImpl* pHeaderImpl = _HeaderImpl::GetInstance(*this);
156
157         SysAssertf(pHeaderImpl != null,
158                                         "Not yet constructed. Construct() should be called before use.");
159
160         return pHeaderImpl->GetItemStatus(itemIndex, status);
161 }
162
163 Color
164 Header::GetItemTextColor(HeaderItemStatus status) const
165 {
166         ClearLastResult();
167
168         const _HeaderImpl* pHeaderImpl = _HeaderImpl::GetInstance(*this);
169
170         SysAssertf(pHeaderImpl != null,
171                                         "Not yet constructed. Construct() should be called before use.");
172
173         return pHeaderImpl->GetItemTextColor(status);
174 }
175
176 HeaderStyle
177 Header::GetStyle(void) const
178 {
179         ClearLastResult();
180
181         const _HeaderImpl* pHeaderImpl = _HeaderImpl::GetInstance(*this);
182
183         SysAssertf(pHeaderImpl != null,
184                                         "Not yet constructed. Construct() should be called before use.");
185
186         return pHeaderImpl->GetStyle();
187 }
188
189 int
190 Header::GetSelectedItemIndex(void) const
191 {
192         ClearLastResult();
193
194         const _HeaderImpl* pHeaderImpl = _HeaderImpl::GetInstance(*this);
195
196         SysAssertf(pHeaderImpl != null,
197                                         "Not yet constructed. Construct() should be called before use.");
198
199         return pHeaderImpl->GetSelectedItemIndex();
200 }
201
202 String
203 Header::GetTitleText(void) const
204 {
205         ClearLastResult();
206
207         const _HeaderImpl* pHeaderImpl = _HeaderImpl::GetInstance(*this);
208
209         SysAssertf(pHeaderImpl != null,
210                                         "Not yet constructed. Construct() should be called before use.");
211
212         return pHeaderImpl->GetTitleText();
213 }
214
215 Color
216 Header::GetTitleTextColor(void) const
217 {
218         ClearLastResult();
219
220         const _HeaderImpl* pHeaderImpl = _HeaderImpl::GetInstance(*this);
221
222         SysAssertf(pHeaderImpl != null,
223                                         "Not yet constructed. Construct() should be called before use.");
224
225         return pHeaderImpl->GetTitleTextColor();
226 }
227
228 Color
229 Header::GetColor(void) const
230 {
231         ClearLastResult();
232
233         const _HeaderImpl* pHeaderImpl = _HeaderImpl::GetInstance(*this);
234
235         SysAssertf(pHeaderImpl != null,
236                                         "Not yet constructed. Construct() should be called before use.");
237
238         return pHeaderImpl->GetColor();
239 }
240
241 AnimationStatus
242 Header::GetWaitingAnimationStatus(HeaderAnimationPosition animationPos) const
243 {
244         ClearLastResult();
245
246         const _HeaderImpl* pHeaderImpl = _HeaderImpl::GetInstance(*this);
247
248         SysAssertf(pHeaderImpl != null,
249                                         "Not yet constructed. Construct() should be called before use.");
250
251         return pHeaderImpl->GetWaitingAnimationStatus(animationPos);
252 }
253
254 result
255 Header::InsertItemAt(int itemIndex, const HeaderItem& item)
256 {
257         _HeaderImpl* pHeaderImpl = _HeaderImpl::GetInstance(*this);
258
259         SysAssertf(pHeaderImpl != null,
260                                         "Not yet constructed. Construct() should be called before use.");
261
262         return pHeaderImpl->InsertItemAt(itemIndex, item);
263 }
264
265 bool
266 Header::IsButtonSet(ButtonPosition position) const
267 {
268         ClearLastResult();
269
270         const _HeaderImpl* pHeaderImpl = _HeaderImpl::GetInstance(*this);
271
272         SysAssertf(pHeaderImpl != null,
273                                         "Not yet constructed. Construct() should be called before use.");
274
275         return pHeaderImpl->IsButtonSet(position);
276 }
277
278 result
279 Header::PauseWaitingAnimation(HeaderAnimationPosition animationPos)
280 {
281         _HeaderImpl* pHeaderImpl = _HeaderImpl::GetInstance(*this);
282
283         SysAssertf(pHeaderImpl != null,
284                                         "Not yet constructed. Construct() should be called before use.");
285
286         return pHeaderImpl->PauseWaitingAnimation(animationPos);
287 }
288
289 result
290 Header::PlayWaitingAnimation(HeaderAnimationPosition animationPos)
291 {
292         _HeaderImpl* pHeaderImpl = _HeaderImpl::GetInstance(*this);
293
294         SysAssertf(pHeaderImpl != null,
295                                         "Not yet constructed. Construct() should be called before use.");
296
297         return pHeaderImpl->PlayWaitingAnimation(animationPos);
298 }
299
300 result
301 Header::RemoveAllButtons(void)
302 {
303         _HeaderImpl* pHeaderImpl = _HeaderImpl::GetInstance(*this);
304
305         SysAssertf(pHeaderImpl != null,
306                                         "Not yet constructed. Construct() should be called before use.");
307
308         return pHeaderImpl->RemoveAllButtons();
309 }
310
311 result
312 Header::RemoveAllItems(void)
313 {
314         _HeaderImpl* pHeaderImpl = _HeaderImpl::GetInstance(*this);
315
316         SysAssertf(pHeaderImpl != null,
317                                         "Not yet constructed. Construct() should be called before use.");
318
319         return pHeaderImpl->RemoveAllItems();
320 }
321
322 result
323 Header::RemoveItemAt(int itemIndex)
324 {
325         _HeaderImpl* pHeaderImpl = _HeaderImpl::GetInstance(*this);
326
327         SysAssertf(pHeaderImpl != null,
328                                         "Not yet constructed. Construct() should be called before use.");
329
330         return pHeaderImpl->RemoveItemAt(itemIndex);
331 }
332
333 result
334 Header::RemoveButtonAt(ButtonPosition position)
335 {
336         _HeaderImpl* pHeaderImpl = _HeaderImpl::GetInstance(*this);
337
338         SysAssertf(pHeaderImpl != null,
339                                         "Not yet constructed. Construct() should be called before use.");
340
341         return pHeaderImpl->RemoveButtonAt(position);
342 }
343
344 result
345 Header::SetBackgroundBitmap(const Bitmap* pBitmap)
346 {
347         _HeaderImpl* pHeaderImpl = _HeaderImpl::GetInstance(*this);
348
349         SysAssertf(pHeaderImpl != null,
350                                         "Not yet constructed. Construct() should be called before use.");
351
352         return pHeaderImpl->SetBackgroundBitmap(pBitmap);
353 }
354
355 result
356 Header::SetButton(ButtonPosition position, const ButtonItem& button)
357 {
358         _HeaderImpl* pHeaderImpl = _HeaderImpl::GetInstance(*this);
359
360         SysAssertf(pHeaderImpl != null,
361                                         "Not yet constructed. Construct() should be called before use.");
362
363         return pHeaderImpl->SetButton(position, button);
364 }
365
366 result
367 Header::SetButtonColor(ButtonItemStatus status, const Color& color)
368 {
369         _HeaderImpl* pHeaderImpl = _HeaderImpl::GetInstance(*this);
370
371         SysAssertf(pHeaderImpl != null,
372                                         "Not yet constructed. Construct() should be called before use.");
373
374         return pHeaderImpl->SetButtonColor(status, color);
375 }
376
377 result
378 Header::SetButtonEnabled(ButtonPosition position, bool enable)
379 {
380         _HeaderImpl* pHeaderImpl = _HeaderImpl::GetInstance(*this);
381
382         SysAssertf(pHeaderImpl != null,
383                                         "Not yet constructed. Construct() should be called before use.");
384
385         return pHeaderImpl->SetButtonEnabled(position, enable);
386 }
387
388 result
389 Header::SetButtonTextColor(ButtonItemStatus status, const Color& color)
390 {
391         _HeaderImpl* pHeaderImpl = _HeaderImpl::GetInstance(*this);
392
393         SysAssertf(pHeaderImpl != null,
394                                         "Not yet constructed. Construct() should be called before use.");
395
396         return pHeaderImpl->SetButtonTextColor(status, color);
397 }
398
399 result
400 Header::SetButtonBadgeIcon(ButtonPosition position, const Bitmap* pBadgeIcon)
401 {
402         _HeaderImpl* pHeaderImpl = _HeaderImpl::GetInstance(*this);
403
404         SysAssertf(pHeaderImpl != null,
405                                         "Not yet constructed. Construct() should be called before use.");
406
407         return pHeaderImpl->SetButtonBadgeIcon(position, pBadgeIcon);
408 }
409
410 result
411 Header::SetButtonNumberedBadgeIcon(ButtonPosition position, int number)
412 {
413         _HeaderImpl* pHeaderImpl = _HeaderImpl::GetInstance(*this);
414
415         SysAssertf(pHeaderImpl != null,
416                                         "Not yet constructed. Construct() should be called before use.");
417
418         return pHeaderImpl->SetButtonNumberedBadgeIcon(position, number);
419 }
420
421 result
422 Header::SetItemAt(int itemIndex, const HeaderItem& item)
423 {
424         _HeaderImpl* pHeaderImpl = _HeaderImpl::GetInstance(*this);
425
426         SysAssertf(pHeaderImpl != null,
427                                         "Not yet constructed. Construct() should be called before use.");
428
429         return pHeaderImpl->SetItemAt(itemIndex, item);
430 }
431
432 result
433 Header::SetItemBadgeIcon(int itemIndex, const Bitmap* pBadgeIcon)
434 {
435         _HeaderImpl* pHeaderImpl = _HeaderImpl::GetInstance(*this);
436
437         SysAssertf(pHeaderImpl != null,
438                                         "Not yet constructed. Construct() should be called before use.");
439
440         return pHeaderImpl->SetItemBadgeIcon(itemIndex, pBadgeIcon);
441 }
442
443 result
444 Header::SetItemNumberedBadgeIcon(int itemIndex, int number)
445 {
446         _HeaderImpl* pHeaderImpl = _HeaderImpl::GetInstance(*this);
447
448         SysAssertf(pHeaderImpl != null,
449                                         "Not yet constructed. Construct() should be called before use.");
450
451         return pHeaderImpl->SetItemNumberedBadgeIcon(itemIndex, number);
452 }
453
454 result
455 Header::SetItemColor(HeaderItemStatus status, const Color& color)
456 {
457         _HeaderImpl* pHeaderImpl = _HeaderImpl::GetInstance(*this);
458
459         SysAssertf(pHeaderImpl != null,
460                                         "Not yet constructed. Construct() should be called before use.");
461
462         return pHeaderImpl->SetItemColor(status, color);
463 }
464
465 result
466 Header::SetItemEnabled(int itemIndex, bool enable)
467 {
468         _HeaderImpl* pHeaderImpl = _HeaderImpl::GetInstance(*this);
469
470         SysAssertf(pHeaderImpl != null,
471                                         "Not yet constructed. Construct() should be called before use.");
472
473         return pHeaderImpl->SetItemEnabled(itemIndex, enable);
474 }
475
476 result
477 Header::SetItemTextColor(HeaderItemStatus status, const Color& color)
478 {
479         _HeaderImpl* pHeaderImpl = _HeaderImpl::GetInstance(*this);
480
481         SysAssertf(pHeaderImpl != null,
482                                         "Not yet constructed. Construct() should be called before use.");
483
484         return pHeaderImpl->SetItemTextColor(status, color);
485 }
486
487 result
488 Header::SetItemSelected(int itemIndex)
489 {
490         _HeaderImpl* pHeaderImpl = _HeaderImpl::GetInstance(*this);
491
492         SysAssertf(pHeaderImpl != null,
493                                         "Not yet constructed. Construct() should be called before use.");
494
495         return pHeaderImpl->SetItemSelected(itemIndex);
496 }
497
498 result
499 Header::SetColor(const Color& color)
500 {
501         _HeaderImpl* pHeaderImpl = _HeaderImpl::GetInstance(*this);
502
503         SysAssertf(pHeaderImpl != null,
504                                         "Not yet constructed. Construct() should be called before use.");
505
506         return pHeaderImpl->SetColor(color);
507 }
508
509 result
510 Header::SetStyle(HeaderStyle style)
511 {
512         _HeaderImpl* pHeaderImpl = _HeaderImpl::GetInstance(*this);
513
514         SysAssertf(pHeaderImpl != null,
515                                         "Not yet constructed. Construct() should be called before use.");
516
517         return pHeaderImpl->SetStyle(style);
518 }
519
520 result
521 Header::SetTitleIcon(const Bitmap* pIcon)
522 {
523         _HeaderImpl* pHeaderImpl = _HeaderImpl::GetInstance(*this);
524
525         SysAssertf(pHeaderImpl != null,
526                                         "Not yet constructed. Construct() should be called before use.");
527
528         return pHeaderImpl->SetTitleIcon(pIcon);
529 }
530
531 result
532 Header::SetTitleText(const String& text)
533 {
534         _HeaderImpl* pHeaderImpl = _HeaderImpl::GetInstance(*this);
535
536         SysAssertf(pHeaderImpl != null,
537                                         "Not yet constructed. Construct() should be called before use.");
538
539         return pHeaderImpl->SetTitleText(text);
540 }
541
542 result
543 Header::SetTitleTextColor(const Color& color)
544 {
545         _HeaderImpl* pHeaderImpl = _HeaderImpl::GetInstance(*this);
546
547         SysAssertf(pHeaderImpl != null,
548                                         "Not yet constructed. Construct() should be called before use.");
549
550         return pHeaderImpl->SetTitleTextColor(color);
551 }
552
553 result
554 Header::SetDescriptionText(const String& text)
555 {
556         _HeaderImpl* pHeaderImpl = _HeaderImpl::GetInstance(*this);
557
558         SysAssertf(pHeaderImpl != null,
559                                         "Not yet constructed. Construct() should be called before use.");
560
561         return pHeaderImpl->SetDescriptionText(text);
562 }
563
564 result
565 Header::SetDescriptionTextColor(const Color& color)
566 {
567         _HeaderImpl* pHeaderImpl = _HeaderImpl::GetInstance(*this);
568
569         SysAssertf(pHeaderImpl != null,
570                                         "Not yet constructed. Construct() should be called before use.");
571
572         return pHeaderImpl->SetDescriptionTextColor(color);
573 }
574
575 result
576 Header::StopWaitingAnimation(HeaderAnimationPosition animationPos)
577 {
578         _HeaderImpl* pHeaderImpl = _HeaderImpl::GetInstance(*this);
579
580         SysAssertf(pHeaderImpl != null,
581                                         "Not yet constructed. Construct() should be called before use.");
582
583         return pHeaderImpl->StopWaitingAnimation(animationPos);
584 }
585
586 void
587 Header::AddActionEventListener(IActionEventListener& listener)
588 {
589         _HeaderImpl* pHeaderImpl = _HeaderImpl::GetInstance(*this);
590
591         SysAssertf(pHeaderImpl != null,
592                                         "Not yet constructed. Construct() should be called before use.");
593
594         pHeaderImpl->AddActionEventListener(listener);
595
596         return;
597 }
598
599 void
600 Header::RemoveActionEventListener(IActionEventListener& listener)
601 {
602         _HeaderImpl* pHeaderImpl = _HeaderImpl::GetInstance(*this);
603
604         SysAssertf(pHeaderImpl != null,
605                                         "Not yet constructed. Construct() should be called before use.");
606
607         pHeaderImpl->RemoveActionEventListener(listener);
608
609         return;
610 }
611
612 bool
613 Header::IsTabEditModeEnabled(void) const
614 {
615         ClearLastResult();
616
617         const _HeaderImpl* pHeaderImpl = _HeaderImpl::GetInstance(*this);
618
619         SysAssertf(pHeaderImpl != null,
620                                         "Not yet constructed. Construct() should be called before use.");
621
622         return pHeaderImpl->IsTabEditModeEnabled();
623 }
624
625 result
626 Header::SetTabEditModeEnabled(bool enable)
627 {
628         _HeaderImpl* pHeaderImpl = _HeaderImpl::GetInstance(*this);
629
630         SysAssertf(pHeaderImpl != null,
631                                         "Not yet constructed. Construct() should be called before use.");
632
633         return pHeaderImpl->SetTabEditModeEnabled(enable);
634 }
635
636 result
637 Header::SetBackButton(void)
638 {
639         _HeaderImpl* pHeaderImpl = _HeaderImpl::GetInstance(*this);
640
641         SysAssertf(pHeaderImpl != null,
642                                         "Not yet constructed. Construct() should be called before use.");
643
644         return pHeaderImpl->SetBackButton();
645 }
646
647 bool
648 Header::IsBackButtonSet(void) const
649 {
650         ClearLastResult();
651
652         const _HeaderImpl* pHeaderImpl = _HeaderImpl::GetInstance(*this);
653
654         SysAssertf(pHeaderImpl != null,
655                                         "Not yet constructed. Construct() should be called before use.");
656
657         return pHeaderImpl->IsBackButtonSet();
658 }
659
660 void
661 Header::RemoveBackButton(void)
662 {
663         _HeaderImpl* pHeaderImpl = _HeaderImpl::GetInstance(*this);
664
665         SysAssertf(pHeaderImpl != null,
666                                         "Not yet constructed. Construct() should be called before use.");
667
668         pHeaderImpl->RemoveBackButton();
669
670         return;
671 }
672
673 result
674 Header::SetBackButtonEnabled(bool enable)
675 {
676         _HeaderImpl* pHeaderImpl = _HeaderImpl::GetInstance(*this);
677
678         SysAssertf(pHeaderImpl != null,
679                                         "Not yet constructed. Construct() should be called before use.");
680
681         return pHeaderImpl->SetBackButtonEnabled(enable);
682 }
683
684 ButtonItemStatus
685 Header::GetBackButtonStatus(void) const
686 {
687         ClearLastResult();
688
689         const _HeaderImpl* pHeaderImpl = _HeaderImpl::GetInstance(*this);
690
691         SysAssertf(pHeaderImpl != null,
692                                         "Not yet constructed. Construct() should be called before use.");
693
694         return pHeaderImpl->GetBackButtonStatus();
695 }
696
697 Rectangle
698 Header::GetButtonBounds(ButtonPosition position) const
699 {
700         ClearLastResult();
701
702         const _HeaderImpl* pHeaderImpl = _HeaderImpl::GetInstance(*this);
703
704         SysAssertf(pHeaderImpl != null,
705                                         "Not yet constructed. Construct() should be called before use.");
706
707         return pHeaderImpl->GetButtonBounds(position);
708 }
709
710 Header::Header(void)
711 {
712 }
713
714 Header::~Header(void)
715 {
716 }
717
718 }}}  //Tizen::Ui::Controls