65355f8c089c80b5b6dfa3752479d5c250ea2a71
[apps/osp/Dial.git] / src / PhnTabLogsItemProvider.cpp
1 //
2 // Copyright (c) 2012 Samsung Electronics Co., Ltd.
3 //
4 // Licensed under the Flora License, Version 1.1 (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://floralicense.org/license/
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 /**
18  * @file        PhnTabLogsItemProvider.cpp
19  * @brief       Call log item provider
20  */
21
22 #include <FGraphics.h>
23 #include <FUi.h>
24 #include <FUiControl.h>
25 #include <FBase.h>
26 #include <FMedia.h>
27 #include <FApp.h>
28 #include <FLocales.h>
29 #include <FSystem.h>
30 #include "PhnAppUtility.h"
31 #include "PhnCommonUtils.h"
32 #include "PhnTypes.h"
33 #include "PhnTabLogsItemProvider.h"
34 #include "PhnCallLogPresentationModel.h"
35 #include "PhnTypes.h"
36 #include "PhnCallLogViewByPopup.h"
37
38 using namespace Tizen::Base;
39 using namespace Tizen::Base::Collection;
40 using namespace Tizen::App;
41 using namespace Tizen::Graphics;
42 using namespace Tizen::Locales;
43 using namespace Tizen::Media;
44 using namespace Tizen::Social;
45 using namespace Tizen::System;
46
47 const int MAX_TWELVEHOUR_FORMAT = 12;
48 const int MAX_TWELVEHOUR_FORMAT_LENGTH = 8;
49 const int MAX_TWENTYFOUR_FORMAT_LENGTH = 6;
50 const int H_LOG_ITEM = 128;
51 const int H_LOG_ITEM_TEXT = 50;
52 const int W_LOG_ITEM_TEXT = 50;
53 const int LOG_ITEM_FONT_SIZE = 32;
54
55 const wchar_t* IDS_MSG_CONTEXT_ITEM = L"IDS_MSG_BTN_NAME";
56 const wchar_t* IDS_VIDEO_CALL_CONTEXT_ITEM = L"IDS_VIDEO_CALL_BTN_NAME";
57 const wchar_t* IDS_VOICE_CALL_CONTEXT_ITEM = L"IDS_VOICE_CALL_BTN_NAME";
58 const wchar_t* IDS_LEFT_BRACE = L" (";
59 const wchar_t* IDS_RIGHT_BRACE = L")";
60
61 CustomDataProvider::CustomDataProvider(void)
62 {
63         __isEditStyle = false;
64         __pGroupData = null;
65         __pAddressBook = AddressbookManager::GetInstance()->GetAddressbookN();;
66         __pItemContext = new ListContextItem();
67         __pItemContext->Construct();
68         String voiceCallStr = AppUtility::GetResourceString(IDS_VOICE_CALL_CONTEXT_ITEM);
69         __pItemContext->AddElement(IDA_LIST_ELEMENT_CALL, voiceCallStr);
70         String messageStr = AppUtility::GetResourceString(IDS_MSG_CONTEXT_ITEM);
71         __pItemContext->AddElement(IDA_LIST_ELEMENT_MESSAGE, messageStr);
72         String videoCallStr = AppUtility::GetResourceString(IDS_VIDEO_CALL_CONTEXT_ITEM);
73         __pItemContext->AddElement(IDA_LIST_ELEMENT_VIDEO_CALL, videoCallStr, false);
74         String delStr = AppUtility::GetResourceString(IDS_DELETE_BTN_STRING);
75         __pItemContext->AddElement(IDA_LIST_ELEMENT_DELETE, delStr);
76
77         __pItemContextForMMLogs = new ListContextItem();
78         __pItemContextForMMLogs->Construct();
79         voiceCallStr = AppUtility::GetResourceString(IDS_VOICE_CALL_CONTEXT_ITEM);
80         __pItemContextForMMLogs->AddElement(IDA_LIST_ELEMENT_CALL, voiceCallStr, false);
81         messageStr = AppUtility::GetResourceString(IDS_MSG_CONTEXT_ITEM);
82         __pItemContextForMMLogs->AddElement(IDA_LIST_ELEMENT_MESSAGE, messageStr);
83         videoCallStr = AppUtility::GetResourceString(IDS_VIDEO_CALL_CONTEXT_ITEM);
84         __pItemContextForMMLogs->AddElement(IDA_LIST_ELEMENT_VIDEO_CALL, videoCallStr, false);
85         delStr = AppUtility::GetResourceString(IDS_DELETE_BTN_STRING);
86         __pItemContextForMMLogs->AddElement(IDA_LIST_ELEMENT_DELETE, delStr);
87
88
89         __pItemContextForHidenLogs = new ListContextItem();
90         __pItemContextForHidenLogs->Construct();
91         voiceCallStr = AppUtility::GetResourceString(IDS_VOICE_CALL_CONTEXT_ITEM);
92         __pItemContextForHidenLogs->AddElement(IDA_LIST_ELEMENT_CALL, voiceCallStr, false);
93         messageStr = AppUtility::GetResourceString(IDS_MSG_CONTEXT_ITEM);
94         __pItemContextForHidenLogs->AddElement(IDA_LIST_ELEMENT_MESSAGE, messageStr, false);
95         videoCallStr = AppUtility::GetResourceString(IDS_VIDEO_CALL_CONTEXT_ITEM);
96         __pItemContextForHidenLogs->AddElement(IDA_LIST_ELEMENT_VIDEO_CALL, videoCallStr, false);
97         delStr = AppUtility::GetResourceString(IDS_DELETE_BTN_STRING);
98         __pItemContextForHidenLogs->AddElement(IDA_LIST_ELEMENT_DELETE, delStr);
99
100         __fontSize = 44.f;
101         __itemHeight = 112.f;
102
103         return;
104 }
105
106 CustomDataProvider::~CustomDataProvider(void)
107 {
108         //ArrayList* pCalllogList = null;\r
109         //GroupItemClass* pGroupInfo = null;\r
110
111         if(__pAddressBook != null)
112         {
113                 delete __pAddressBook;
114         }
115         if (__pItemContext != null)
116         {
117                 delete __pItemContext;
118                 __pItemContext = null;
119         }
120         if (__pItemContextForMMLogs != null)
121         {
122                 delete __pItemContextForMMLogs;
123                 __pItemContextForMMLogs = null;
124         }
125         if (__pItemContextForHidenLogs != null)
126         {
127                 delete __pItemContextForHidenLogs;
128                 __pItemContextForHidenLogs = null;
129         }
130 }
131
132 void
133 CustomDataProvider::GetItemAtGroupIndex(int groupIndex, int itemIndex, CallLogDetails** pCalllogDetails)
134 {
135         if(__pGroupData != null)
136         {
137                 GroupItemClass* pGroupInfo = null;
138                 ArrayList* list = null;
139                 pGroupInfo = static_cast<GroupItemClass*>(__pGroupData->GetAt(groupIndex));
140                 if(pGroupInfo != null)
141                 {
142                         list = pGroupInfo->GetLogData();
143                         *pCalllogDetails = static_cast<CallLogDetails*>(list->GetAt(itemIndex));
144                 }
145         }
146 }
147
148 int
149 CustomDataProvider::GetGroupCount(void)
150 {
151         AppUtility::GetGlobalFontAndItemHeight(&__fontSize, &__itemHeight);
152         __pGroupData = CalLogPresentationModel::GetInstance()->GetCallLogGroups();\r
153         if(__pGroupData != null)
154         {
155                 return __pGroupData->GetCount();
156         }
157         return 0;
158 }
159
160 int
161 CustomDataProvider::GetItemCount(int groupIndex)
162 {
163         GroupItemClass* group = null;
164         if(__pGroupData != null)
165         {
166                 group = static_cast<GroupItemClass*>(__pGroupData->GetAt(groupIndex));
167                 if(group)
168                 {
169                         return (group->GetLogData())->GetCount();
170                 }
171         }
172         return 0;
173 }
174
175 GroupItem*
176 CustomDataProvider::CreateGroupItem(int groupIndex, int itemWidth)
177 {
178         AppResource* pAppResource = App::GetInstance()->GetAppResource();
179         GroupItem* pItem = new GroupItem();
180         pItem->Construct(Dimension(itemWidth, 48));
181
182         String appPath = (Application::GetInstance())->GetAppRootPath();
183         Bitmap* pBitmap = null;
184         pBitmap = pAppResource->GetBitmapN(IDB_CALLOG_LIST_BG,BITMAP_PIXEL_FORMAT_ARGB8888);
185
186         GroupItemClass* group = null;
187         if(__pGroupData != null)
188         {
189                 group = static_cast<GroupItemClass*>(__pGroupData->GetAt(groupIndex));
190                 if(group)
191                 {
192                         pItem->SetElement(group->GetTitleText(), pBitmap);
193                 }
194                 else
195                 {
196                         return null;
197                 }
198         }
199         return pItem;
200 }
201
202 ListItemBase*
203 CustomDataProvider::CreateItem(int groupIndex, int itemIndex, int itemWidth)
204 {
205         AppLogDebug("Enter");
206         GroupItemClass* pGroup = null;
207         ArrayList* pCalllogList = null;
208         CallLogDetails* pCalllogData = null;
209         String phoneNumber(AppUtility::GetResourceString(IDS_CALLLOG_NO_NUMBER));
210         String contactName(AppUtility::GetResourceString(IDS_CALLLOG_NO_NAME));
211         DateTime calllogDate;
212         String dateText(L"");
213         String key(L"24HourFormatSelected");
214         String amPm;
215         bool dateFormat24 = true;
216         Bitmap* pBitmap = null;
217         AppResource* pAppResource = App::GetInstance()->GetAppResource();
218
219         if(__pGroupData != null)
220         {
221                 pGroup = static_cast<GroupItemClass*>(__pGroupData->GetAt(groupIndex));
222                 if(pGroup != null)
223                 {
224                         pCalllogList = pGroup->GetLogData();
225                         if(pCalllogList != null)
226                         {
227                                 pCalllogData = static_cast<CallLogDetails*>(pCalllogList->GetAt(itemIndex));
228                         }
229                 }
230         }
231
232         if(pCalllogData == null)
233         {
234                 return null;
235         }
236         else
237         {
238                 if(pCalllogData->GetPhoneNumber() != null)
239                 {
240                         phoneNumber = pCalllogData->GetPhoneNumber();
241                 }
242
243                 //CallLogManager* pManager = CallLogManager::GetInstance();
244                 CalLogPresentationModel::GetInstance()->GetCalllogContactName(phoneNumber,contactName);
245                 pCalllogData->ConvertTimetoDateTime();
246                 calllogDate = pCalllogData->GetDateTime();
247                 int hour = calllogDate.GetHour();
248                 SettingInfo::GetValue(key, dateFormat24);
249
250                 if (dateFormat24 == false)
251                 {
252                         if (hour > MAX_TWELVEHOUR_FORMAT)
253                         {
254                                 hour -= MAX_TWELVEHOUR_FORMAT;
255                                 amPm.Append(AppUtility::GetResourceString(IDS_PM_TIME));
256                         }
257                         else if (hour < MAX_TWELVEHOUR_FORMAT)
258                         {
259                                 amPm.Append(AppUtility::GetResourceString(IDS_AM_TIME));
260                         }
261                         else if (hour == MAX_TWELVEHOUR_FORMAT)
262                         {
263                                 amPm.Append(AppUtility::GetResourceString(IDS_PM_TIME));
264                         }
265                         dateText.Format(MAX_TWELVEHOUR_FORMAT_LENGTH,L"%02d:%02d%ls", hour, calllogDate.GetMinute(), amPm.GetPointer());
266                 }
267                 else
268                 {
269                         dateText.Format(MAX_TWENTYFOUR_FORMAT_LENGTH,L"%02d:02%d", calllogDate.GetHour(), calllogDate.GetMinute());
270                 }
271
272         }
273         ListAnnexStyle style = LIST_ANNEX_STYLE_NORMAL;
274         EnrichedText* pText = new (std::nothrow) EnrichedText();\r
275         TextElement* textElement = new (std::nothrow) TextElement();
276         Font font;
277         String appPath = (Application::GetInstance())->GetAppRootPath();
278
279         CustomItem* pItem = new (std::nothrow) CustomItem();
280
281         if (__isEditStyle == true)
282         {
283                 style = LIST_ANNEX_STYLE_MARK;
284         }
285
286         pItem->Construct(Dimension(itemWidth, __itemHeight), style);
287 \r
288         float mainTextWidth = 0.0;
289         float countTextWidth = 0.0;
290         String countString(L"");
291         if(pCalllogData->GetConsecutiveNoCounter() > 1)
292         {
293                 float textWidth = GetTextWidth(contactName);
294                 countString.Append(IDS_LEFT_BRACE);
295                 countString.Append(pCalllogData->GetConsecutiveNoCounter());
296                 countString.Append(IDS_RIGHT_BRACE);
297                 countTextWidth = GetTextWidth(countString);
298                 float width = 0.0;
299                 if (__isEditStyle == false)
300                 {
301                         width = ((itemWidth - W_TEXT_LINE1_ITEM_RIGHT_MARGIN) - countTextWidth);
302                 }
303                 else
304                 {
305                         width = ((itemWidth - W_TEXT_LINE1_ITEM_RIGHT_MARGIN) - countTextWidth - 76);
306                 }
307                 if(textWidth > width)
308                 {
309                         mainTextWidth = width;
310                 }
311                 else
312                 {
313                         mainTextWidth = textWidth;
314                 }
315         }
316         else
317         {
318                 if (__isEditStyle == false)
319                 {
320                         mainTextWidth = itemWidth - W_TEXT_LINE1_ITEM_RIGHT_MARGIN;
321                 }
322                 else
323                 {
324                         mainTextWidth = itemWidth - W_TEXT_LINE1_ITEM_RIGHT_MARGIN - W_TEXT_LINE2_ITEM_RIGHT_MARGIN_DELETE;
325                 }
326         }
327         AppLog("mainTextWidth = %d", mainTextWidth);
328         float mainTextHeight = __fontSize + 16;
329         if (__isEditStyle == false)
330         {
331                 if(pCalllogData->GetConsecutiveNoCounter() > 1)
332                 {
333                         pItem->AddElement(FloatRectangle(X_TEXT_LINE1_ITEM, Y_TEXT_LINE1_ITEM, mainTextWidth, mainTextHeight), ID_NAME_STRING, contactName, __fontSize, Color::GetColor(COLOR_ID_BLACK), Color::GetColor(COLOR_ID_BLACK), Color::GetColor(COLOR_ID_BLACK), true);
334                         pItem->AddElement(FloatRectangle(X_TEXT_LINE1_ITEM + mainTextWidth, Y_TEXT_LINE1_ITEM, countTextWidth, mainTextHeight), ID_NAME_STRING_COUNTER, countString,__fontSize, Color::GetColor(COLOR_ID_BLACK), Color::GetColor(COLOR_ID_BLACK), Color::GetColor(COLOR_ID_BLACK), false);
335                 }
336                 else
337                 {
338                         pItem->AddElement(FloatRectangle(X_TEXT_LINE1_ITEM, Y_TEXT_LINE1_ITEM, mainTextWidth, mainTextHeight), ID_NAME_STRING, contactName,__fontSize, Color::GetColor(COLOR_ID_BLACK), Color::GetColor(COLOR_ID_BLACK), Color::GetColor(COLOR_ID_BLACK), true);
339                 }
340                 pItem->AddElement(FloatRectangle(X_TEXT_LINE2_ITEM, (Y_TEXT_LINE1_ITEM + mainTextHeight), (itemWidth - W_TEXT_LINE2_ITEM_RIGHT_MARGIN), H_TEXT_LINE2_ITEM), ID_NUMBER_STRING, phoneNumber, 32, Color::GetColor(COLOR_ID_GREY), Color::GetColor(COLOR_ID_GREY), Color::GetColor(COLOR_ID_GREY), true);
341         }
342         else
343         {
344                 if(pCalllogData->GetConsecutiveNoCounter() > 1)
345                 {
346                         pItem->AddElement(FloatRectangle(X_TEXT_LINE1_ITEM, Y_TEXT_LINE1_ITEM, mainTextWidth, mainTextHeight), ID_NAME_STRING, contactName, __fontSize, Color::GetColor(COLOR_ID_BLACK), Color::GetColor(COLOR_ID_BLACK), Color::GetColor(COLOR_ID_BLACK), true);
347                         pItem->AddElement(FloatRectangle(X_TEXT_LINE1_ITEM + mainTextWidth, Y_TEXT_LINE1_ITEM, countTextWidth, mainTextHeight), ID_NAME_STRING_COUNTER, countString, __fontSize, Color::GetColor(COLOR_ID_BLACK), Color::GetColor(COLOR_ID_BLACK), Color::GetColor(COLOR_ID_BLACK), false);
348                 }
349                 else
350                 {
351                         pItem->AddElement(FloatRectangle(X_TEXT_LINE1_ITEM, Y_TEXT_LINE1_ITEM, mainTextWidth, mainTextHeight), ID_NAME_STRING, contactName, __fontSize, Color::GetColor(COLOR_ID_BLACK), Color::GetColor(COLOR_ID_BLACK), Color::GetColor(COLOR_ID_BLACK), true);
352                 }
353                 pItem->AddElement(FloatRectangle(X_TEXT_LINE2_ITEM, (Y_TEXT_LINE1_ITEM + mainTextHeight), (itemWidth - W_TEXT_LINE2_ITEM_RIGHT_MARGIN) - W_TEXT_LINE2_ITEM_RIGHT_MARGIN_DELETE, H_TEXT_LINE2_ITEM), ID_NUMBER_STRING, phoneNumber, 32, Color::GetColor(COLOR_ID_GREY), Color::GetColor(COLOR_ID_GREY), Color::GetColor(COLOR_ID_GREY), true);
354         }
355
356         pText->Construct(Dimension(W_LOG_ITEM_TEXT, H_LOG_ITEM_TEXT));\r
357         pText->SetHorizontalAlignment(TEXT_ALIGNMENT_RIGHT);\r
358         pText->SetVerticalAlignment(TEXT_ALIGNMENT_BOTTOM);\r
359         font.Construct(FONT_STYLE_PLAIN, LOG_ITEM_FONT_SIZE);
360         textElement->Construct(dateText);
361         textElement->SetFont(font);
362         textElement->SetTextColor(Color::GetColor(COLOR_ID_GREY));
363         pText->Add(*textElement);\r
364         if (__isEditStyle == false)
365         {
366                 pItem->AddElement(Rectangle((itemWidth - X_TEXT_TIME_ITEM_RIGHT_MARGIN), (Y_TEXT_LINE1_ITEM + __fontSize), W_TEXT_TIME_ITEM, H_TEXT_TIME_ITEM), ID_TIME_STRING, *pText);\r
367         }
368         else
369         {
370                 pItem->AddElement(Rectangle((itemWidth - X_TEXT_TIME_ITEM_RIGHT_MARGIN) - 90, (Y_TEXT_LINE1_ITEM + __fontSize), W_TEXT_TIME_ITEM, H_TEXT_TIME_ITEM), ID_TIME_STRING, *pText);\r
371         }
372
373         pBitmap = pAppResource->GetBitmapN(IDB_LOG_CALL_ICON ,BITMAP_PIXEL_FORMAT_ARGB8888);
374
375
376         Bitmap* pLogTypeBitmap = null;
377         GetCallogIconBitmap(pCalllogData->GetCalllogType(),pLogTypeBitmap,pBitmap);
378
379         if(pLogTypeBitmap != null)
380         {
381                 if (__isEditStyle == false)
382                 {
383                         //pItem->AddElement(Rectangle(X_LOGCALL_BITMAP_ITEM, Y_LOGCALL_BITMAP_ITEM, W_LOGCALL_BITMAP_ITEM, H_LOGCALL_BITMAP_ITEM), ID_LOGCALL_BITMAP, *pLogTypeBitmap);
384                         pItem->AddElement(Rectangle((itemWidth - X_LOGCALL_BITMAP_RIGHT_MARGIN), Y_LOGCALL_BITMAP_ITEM, W_LOGCALL_BITMAP_ITEM, H_LOGCALL_BITMAP_ITEM), ID_LOGCALL_BITMAP, *pLogTypeBitmap);
385                 }
386                 else
387                 {
388                         //pItem->AddElement(Rectangle(X_LOGCALL_BITMAP_ITEM - 90, Y_LOGCALL_BITMAP_ITEM, W_LOGCALL_BITMAP_ITEM, H_LOGCALL_BITMAP_ITEM), ID_LOGCALL_BITMAP, *pLogTypeBitmap);
389                         pItem->AddElement(Rectangle((itemWidth - X_LOGCALL_BITMAP_RIGHT_MARGIN) - 90, Y_LOGCALL_BITMAP_ITEM, W_LOGCALL_BITMAP_ITEM, H_LOGCALL_BITMAP_ITEM), ID_LOGCALL_BITMAP, *pLogTypeBitmap);
390                 }
391                 delete pLogTypeBitmap;
392                 pLogTypeBitmap = null;
393         }
394
395         if (pBitmap != null)
396         {
397                 pItem->AddElement(Rectangle(X_CALLTYPE_BITMAP_ITEM, (Y_TEXT_LINE1_ITEM + __fontSize + 20), W_CALLTYPE_BITMAP_ITEM, H_CALLTYPE_BITMAP_ITEM), ID_CALLTYPE_BITMAP, *pBitmap);
398                 delete pBitmap;
399         }
400
401         if (__isEditStyle == false)
402         {
403                 //if it is a hidden call log
404                 if(pCalllogData->GetPhoneNumber() == null)
405                 {
406                         pItem->SetContextItem(__pItemContextForHidenLogs);
407                 }
408                 else if(phoneNumber.Contains(L"@"))
409                 {
410                         pItem->SetContextItem(__pItemContextForMMLogs);
411                 }
412                 else
413                 {
414                         pItem->SetContextItem(__pItemContext);
415                 }
416         }
417         if (pText != null)\r
418         {\r
419                 delete pText;\r
420         }\r
421         return pItem;
422 }
423
424 float
425 CustomDataProvider::GetTextWidth(String contactName)
426 {
427         TextElement* pTextElement = new (std::nothrow) TextElement();
428         pTextElement->Construct(contactName);
429         Font* ContactNameTextfont = new (std::nothrow) Font();
430         ContactNameTextfont->Construct(FONT_STYLE_PLAIN, __fontSize);
431         FloatDimension textDimension;
432         ContactNameTextfont->GetTextExtent(contactName, contactName.GetLength(), textDimension);
433         return textDimension.width;
434 }
435
436 void
437 CustomDataProvider::GetCallogIconBitmap(CallLogType logType,Bitmap*& iconType, Bitmap*& iconArrow)
438 {
439         AppResource* pAppResource = App::GetInstance()->GetAppResource();
440         switch(logType)
441         {
442                 case CALL_LOG_TYPE_VOICE_INCOMING:
443                 {
444                         iconType = pAppResource->GetBitmapN(IDB_LOG_CALL_ICON ,BITMAP_PIXEL_FORMAT_ARGB8888);
445                         iconArrow = pAppResource->GetBitmapN(IDB_LOG_RECEIVEDCALL_ICON ,BITMAP_PIXEL_FORMAT_ARGB8888);
446
447                 }
448                 break;
449                 case CALL_LOG_TYPE_VOICE_OUTGOING:
450                 {
451                         iconType = pAppResource->GetBitmapN(IDB_LOG_CALL_ICON ,BITMAP_PIXEL_FORMAT_ARGB8888);
452                         iconArrow = pAppResource->GetBitmapN(IDB_LOG_DIALEDCALL_ICON ,BITMAP_PIXEL_FORMAT_ARGB8888);
453                 }
454                 break;
455                 case CALL_LOG_TYPE_VOICE_REJECTED:
456                 {
457                         iconType = pAppResource->GetBitmapN(IDB_LOG_CALL_ICON ,BITMAP_PIXEL_FORMAT_ARGB8888);
458                         iconArrow = pAppResource->GetBitmapN(IDB_LOG_BLOCKEDCALL_ICON ,BITMAP_PIXEL_FORMAT_ARGB8888);
459
460                 }
461                 break;
462                 case CALL_LOG_TYPE_VOICE_MISSED:
463                 {
464                         iconType = pAppResource->GetBitmapN(IDB_LOG_CALL_ICON ,BITMAP_PIXEL_FORMAT_ARGB8888);
465                         iconArrow = pAppResource->GetBitmapN(IDB_LOG_MISSEDCALL_ICON ,BITMAP_PIXEL_FORMAT_ARGB8888);
466                 }
467                 break;
468                 case CALL_LOG_TYPE_VOICE_BLOCKED:
469                 {
470                         iconType = pAppResource->GetBitmapN(IDB_LOG_CALL_ICON ,BITMAP_PIXEL_FORMAT_ARGB8888);
471                         iconArrow = pAppResource->GetBitmapN(IDB_LOG_BLOCKEDCALL_ICON ,BITMAP_PIXEL_FORMAT_ARGB8888);
472                 }
473                 break;
474
475                 case CALL_LOG_TYPE_VIDEO_INCOMING:
476                 {
477                         iconType = pAppResource->GetBitmapN(IDB_LOG_VIDEO_ICON ,BITMAP_PIXEL_FORMAT_ARGB8888);
478                         iconArrow = pAppResource->GetBitmapN(IDB_LOG_RECEIVEDCALL_ICON ,BITMAP_PIXEL_FORMAT_ARGB8888);
479                 }
480                 break;
481                 case CALL_LOG_TYPE_VIDEO_OUTGOING:
482                 {
483                         iconType = pAppResource->GetBitmapN(IDB_LOG_VIDEO_ICON ,BITMAP_PIXEL_FORMAT_ARGB8888);
484                         iconArrow = pAppResource->GetBitmapN(IDB_LOG_DIALEDCALL_ICON ,BITMAP_PIXEL_FORMAT_ARGB8888);
485                 }
486                 break;
487                 case CALL_LOG_TYPE_VIDEO_MISSED:
488                 case CALL_LOG_TYPE_VIDEO_REJECTED:
489                 {
490                         iconType = pAppResource->GetBitmapN(IDB_LOG_VIDEO_ICON ,BITMAP_PIXEL_FORMAT_ARGB8888);
491                         iconArrow = pAppResource->GetBitmapN(IDB_LOG_MISSEDCALL_ICON ,BITMAP_PIXEL_FORMAT_ARGB8888);
492                 }
493                 break;
494                 case CALL_LOG_TYPE_VIDEO_BLOCKED:
495                 {
496                         iconType = pAppResource->GetBitmapN(IDB_LOG_VIDEO_ICON ,BITMAP_PIXEL_FORMAT_ARGB8888);
497                         iconArrow = pAppResource->GetBitmapN(IDB_LOG_BLOCKEDCALL_ICON ,BITMAP_PIXEL_FORMAT_ARGB8888);
498                 }
499                 break;
500
501                 case CALL_LOG_TYPE_SMS_INCOMING:
502                 {
503                         iconType = pAppResource->GetBitmapN(IDB_LOG_SMS_ICON ,BITMAP_PIXEL_FORMAT_ARGB8888);
504                         iconArrow = pAppResource->GetBitmapN(IDB_LOG_RECEIVEDCALL_ICON ,BITMAP_PIXEL_FORMAT_ARGB8888);
505                 }
506                 break;
507                 case CALL_LOG_TYPE_SMS_OUTGOING:
508                 {
509                         iconType = pAppResource->GetBitmapN(IDB_LOG_SMS_ICON ,BITMAP_PIXEL_FORMAT_ARGB8888);
510                         iconArrow = pAppResource->GetBitmapN(IDB_LOG_DIALEDCALL_ICON ,BITMAP_PIXEL_FORMAT_ARGB8888);
511
512                 }
513                 break;
514                 case CALL_LOG_TYPE_SMS_BLOCKED:
515                 {
516                         iconType = pAppResource->GetBitmapN(IDB_LOG_SMS_ICON ,BITMAP_PIXEL_FORMAT_ARGB8888);
517                         iconArrow = pAppResource->GetBitmapN(IDB_LOG_BLOCKEDCALL_ICON ,BITMAP_PIXEL_FORMAT_ARGB8888);
518
519                 }
520                 break;
521                 case CALL_LOG_TYPE_MMS_INCOMING:
522                 {
523                         iconType = pAppResource->GetBitmapN(IDB_LOG_MMS_ICON ,BITMAP_PIXEL_FORMAT_ARGB8888);
524                         iconArrow = pAppResource->GetBitmapN(IDB_LOG_RECEIVEDCALL_ICON ,BITMAP_PIXEL_FORMAT_ARGB8888);
525                 }
526                 break;
527                 case CALL_LOG_TYPE_MMS_OUTGOING:
528                 {
529                         iconType = pAppResource->GetBitmapN(IDB_LOG_MMS_ICON ,BITMAP_PIXEL_FORMAT_ARGB8888);
530                         iconArrow = pAppResource->GetBitmapN(IDB_LOG_DIALEDCALL_ICON ,BITMAP_PIXEL_FORMAT_ARGB8888);
531                 }
532                 break;
533                 case CALL_LOG_TYPE_MMS_BLOCKED:
534                 {
535                         iconType = pAppResource->GetBitmapN(IDB_LOG_MMS_ICON ,BITMAP_PIXEL_FORMAT_ARGB8888);
536                         iconArrow = pAppResource->GetBitmapN(IDB_LOG_BLOCKEDCALL_ICON ,BITMAP_PIXEL_FORMAT_ARGB8888);
537                 }
538                 break;
539                 case CALL_LOG_TYPE_EMAIL_INCOMING:
540                 {
541                         iconType = pAppResource->GetBitmapN(IDB_LOG_SMS_ICON ,BITMAP_PIXEL_FORMAT_ARGB8888);
542                         iconArrow = pAppResource->GetBitmapN(IDB_LOG_RECEIVEDCALL_ICON ,BITMAP_PIXEL_FORMAT_ARGB8888);
543                 }
544                 break;
545                 case CALL_LOG_TYPE_EMAIL_OUTGOING:
546                 {
547                         iconType = pAppResource->GetBitmapN(IDB_LOG_SMS_ICON ,BITMAP_PIXEL_FORMAT_ARGB8888);
548                         iconArrow = pAppResource->GetBitmapN(IDB_LOG_DIALEDCALL_ICON ,BITMAP_PIXEL_FORMAT_ARGB8888);
549                 }
550                 break;
551                 default:
552                 {
553                         iconType = pAppResource->GetBitmapN(IDB_LOG_CALL_ICON ,BITMAP_PIXEL_FORMAT_ARGB8888);
554                         iconArrow = pAppResource->GetBitmapN(IDB_LOG_MISSEDCALL_ICON ,BITMAP_PIXEL_FORMAT_ARGB8888);
555                 }
556                 break;
557         }
558 }
559
560 bool
561 CustomDataProvider::DeleteItem(int groupIndex, int itemIndex, ListItemBase* pItem, int itemWidth)
562 {
563         if (pItem != null)\r
564         {\r
565                 delete pItem;\r
566                 pItem = null;\r
567         }\r
568         return true;
569 }
570
571 bool
572 CustomDataProvider::DeleteGroupItem(int groupIndex, GroupItem* pItem, int itemWidth)
573 {
574         if (pItem != null)\r
575         {\r
576                 delete pItem;\r
577                 pItem = null;\r
578         }\r
579         return true;
580 }
581
582 void
583 CustomDataProvider::SetListItemStyle(bool mode)
584 {
585         __isEditStyle = mode;
586 }
587
588