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