2 // Copyright (c) 2012 Samsung Electronics Co., Ltd.
4 // Licensed under the Flora License, Version 1.0 (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
8 // http://floralicense.org/license/
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.
18 * @file PhnLogsDetailItemProvider.cpp
19 * @brief Calllog detail item provider class
21 #include <FGraphics.h>
23 #include <FUiControl.h>
27 #include "PhnAppUtility.h"
28 #include "PhnLogsDetailItemProvider.h"
29 #include "PhnCalllogManager.h"
31 using namespace Tizen::Graphics;
32 using namespace Tizen::Base;
33 using namespace Tizen::Media;
34 using namespace Tizen::App;
35 const int DlLogsDetailItemDataProvider::ID_NAME_STRING = 100;
36 const int DlLogsDetailItemDataProvider::ID_NUMBER_STRING = 101;
37 const int DlLogsDetailItemDataProvider::ID_TIME_STRING = 102;
38 const int DlLogsDetailItemDataProvider::ID_CALLTYPE_BITMAP = 104;
40 const int DlLogsDetailItemDataProvider::X_TEXT_LINE1_ITEM = 16;
41 const int DlLogsDetailItemDataProvider::Y_TEXT_LINE1_ITEM = 10;
42 const int DlLogsDetailItemDataProvider::H_TEXT_LINE1_ITEM = 60;
43 const int DlLogsDetailItemDataProvider::W_TEXT_LINE1_ITEM = 560;
45 const int DlLogsDetailItemDataProvider::X_TEXT_LINE2_ITEM = 64;
46 const int DlLogsDetailItemDataProvider::Y_TEXT_LINE2_ITEM = 70;
47 const int DlLogsDetailItemDataProvider::H_TEXT_LINE2_ITEM = 48;
48 const int DlLogsDetailItemDataProvider::W_TEXT_LINE2_ITEM = 456;
50 const int DlLogsDetailItemDataProvider::X_TEXT_TIME_ITEM = 536;
51 const int DlLogsDetailItemDataProvider::Y_TEXT_TIME_ITEM = 70;
52 const int DlLogsDetailItemDataProvider::H_TEXT_TIME_ITEM = 48;
53 const int DlLogsDetailItemDataProvider::W_TEXT_TIME_ITEM = 168;
56 const int DlLogsDetailItemDataProvider::X_CALLTYPE_BITMAP_ITEM = 16;
57 const int DlLogsDetailItemDataProvider::Y_CALLTYPE_BITMAP_ITEM = 70 + 8;
58 const int DlLogsDetailItemDataProvider::H_CALLTYPE_BITMAP_ITEM = 32;
59 const int DlLogsDetailItemDataProvider::W_CALLTYPE_BITMAP_ITEM = 32;
61 static const int H_CALLLOGDETAIL_ITEM = 128;
63 DlLogsDetailItemDataProvider::DlLogsDetailItemDataProvider(void)
66 __pCalllogListByNumber = null;
67 __pCallMgr = CallLogManager::GetInstance();
70 DlLogsDetailItemDataProvider::~DlLogsDetailItemDataProvider(void)
72 //empty implementation
73 if(__pCalllogListByNumber != null)
75 __pCalllogListByNumber->RemoveAll();
76 delete __pCalllogListByNumber;
82 DlLogsDetailItemDataProvider::CreateItem(int index, int itemWidth)
84 CallLogDetails calllogInfo;
88 struct tm* time = null;
93 Bitmap* pBitmap = null;
94 AppResource* pAppResource = App::GetInstance()->GetAppResource();
98 if(__pCalllogListByNumber == null)
100 __pCalllogListByNumber=__pCallMgr->GetCalllogListByNumValues();
103 __pCalllogListByNumber->GetAt(index,calllogInfo);
104 //AppLog(" info from Map list from Mgr %d %d %d %s %d %d", key, pCalllogInfo.GetCalllogType(), pCalllogInfo.GetDuration(), pCalllogInfo.GetPhoneNumber(), pCalllogInfo.GetDuration(), pCalllogInfo.GetStartTime());
105 duration = calllogInfo.GetDuration();
106 type = calllogInfo.GetCalllogType();
111 case CALL_LOG_TYPE_VOICE_INCOMING:
113 typeText.Append(AppUtility::GetResourceString(IDS_CALLLOG_RECEIVED));
114 pBitmap = pAppResource->GetBitmapN(IDB_LOG_RECEIVEDCALL_ICON ,BITMAP_PIXEL_FORMAT_ARGB8888);
117 case CALL_LOG_TYPE_VOICE_OUTGOING:
119 typeText.Append(AppUtility::GetResourceString(IDS_CALLLOG_OUTGOING));
120 pBitmap = pAppResource->GetBitmapN(IDB_LOG_DIALEDCALL_ICON ,BITMAP_PIXEL_FORMAT_ARGB8888);
123 case CALL_LOG_TYPE_VOICE_REJECTED:
124 case CALL_LOG_TYPE_VOICE_MISSED:
126 typeText.Append(AppUtility::GetResourceString(IDS_CALLLOG_MISSED));
127 pBitmap = pAppResource->GetBitmapN(IDB_LOG_MISSEDCALL_ICON ,BITMAP_PIXEL_FORMAT_ARGB8888);
130 case CALL_LOG_TYPE_SMS_INCOMING:
132 typeText.Append(AppUtility::GetResourceString(IDS_CALLLOG_RECEIVED_MSG));
135 case CALL_LOG_TYPE_SMS_OUTGOING:
137 typeText.Append(AppUtility::GetResourceString(IDS_CALLLOG_SENT_MSG));
140 case CALL_LOG_TYPE_VOICE_BLOCKED:
142 typeText.Append(AppUtility::GetResourceString(IDS_CALLLOG_REJECTED));
143 pBitmap = pAppResource->GetBitmapN(IDB_LOG_BLOCKEDCALL_ICON ,BITMAP_PIXEL_FORMAT_ARGB8888);
148 typeText.Append(L" ");
153 tm = calllogInfo.GetStartTime();
154 time = localtime(&tm);
157 strftime(timeText,25,"%d %b %Y, %I:%M%p", time);
159 //AppLog(" dateTime %s", timeText);
160 ListAnnexStyle style = LIST_ANNEX_STYLE_NORMAL;
161 EnrichedText* text = new (std::nothrow) EnrichedText();
162 TextElement* textElement = new (std::nothrow) TextElement();
164 String appPath = (Application::GetInstance())->GetAppRootPath();
165 CustomItem* pItem = new (std::nothrow) CustomItem();
166 if (__isEditMode == true)
168 style = LIST_ANNEX_STYLE_MARK;
170 pItem->Construct(Dimension(itemWidth, H_CALLLOGDETAIL_ITEM), style);
172 /*if (__isEditMode == true && index == 0)
174 pItem->AddElement(Rectangle(16, 0, itemWidth - 76, 128), ID_NAME_STRING, L"Select All", false);
175 pItem->SetBackgroundColor(LIST_ITEM_DRAWING_STATUS_NORMAL, Color(215, 225, 232));
176 pItem->SetBackgroundColor(LIST_ITEM_DRAWING_STATUS_PRESSED, Color(215, 225, 232));
177 pItem->SetBackgroundColor(LIST_ITEM_DRAWING_STATUS_HIGHLIGHTED, Color(215, 225, 232));
180 pItem->AddElement(Rectangle(X_TEXT_LINE1_ITEM, Y_TEXT_LINE1_ITEM, W_TEXT_LINE1_ITEM, H_TEXT_LINE1_ITEM), ID_NAME_STRING, timeText, false);
181 pItem->AddElement(Rectangle(X_TEXT_LINE2_ITEM, Y_TEXT_LINE2_ITEM, W_TEXT_LINE2_ITEM, H_TEXT_LINE2_ITEM), ID_NUMBER_STRING, typeText.GetPointer(), 32, Color::GetColor(COLOR_ID_GREY), Color::GetColor(COLOR_ID_GREY), Color::GetColor(COLOR_ID_GREY), false);
183 if (__isEditMode == true)
185 pItem->AddElement(Rectangle(X_TEXT_LINE1_ITEM, Y_TEXT_LINE1_ITEM, W_TEXT_LINE1_ITEM - 76, H_TEXT_LINE1_ITEM), ID_NAME_STRING, timeText, false);
186 pItem->AddElement(Rectangle(X_TEXT_LINE2_ITEM, Y_TEXT_LINE2_ITEM, W_TEXT_LINE2_ITEM - 76, H_TEXT_LINE2_ITEM), ID_NUMBER_STRING, typeText.GetPointer(), 32, Color::GetColor(COLOR_ID_GREY), Color::GetColor(COLOR_ID_GREY), Color::GetColor(COLOR_ID_GREY), false);
188 text->Construct(Dimension(W_TEXT_TIME_ITEM, H_TEXT_TIME_ITEM));
189 text->SetHorizontalAlignment(TEXT_ALIGNMENT_RIGHT);
190 text->SetVerticalAlignment(TEXT_ALIGNMENT_MIDDLE);
195 //AppLog(" time %02d:%02d:%02d", hr, min, sec);
196 durationText.Format(10,L"%02d:%02d:%02d", hr, min, sec);
197 textElement->Construct(durationText);
199 font.Construct(FONT_STYLE_PLAIN, 32);
200 textElement->SetFont(font);
201 textElement->SetTextColor(Color::GetColor(COLOR_ID_GREY));
202 text->Add(*textElement);
203 pItem->AddElement(Rectangle(X_TEXT_TIME_ITEM - 76, Y_TEXT_TIME_ITEM, W_TEXT_TIME_ITEM, H_TEXT_TIME_ITEM), ID_TIME_STRING, *text);
205 Image* pImage = new (std::nothrow) Image();
209 pItem->AddElement(Rectangle(X_CALLTYPE_BITMAP_ITEM, Y_CALLTYPE_BITMAP_ITEM, W_CALLTYPE_BITMAP_ITEM, H_CALLTYPE_BITMAP_ITEM), ID_CALLTYPE_BITMAP, *pBitmap);
214 //Background image for List items. Not woring in A3RC2 SDk.Henc ecommented
216 path = appPath + L"res/screen-density-xhigh/00_reorder_group_list_bg.png";
217 pBitmap = pImage->DecodeN(path, BITMAP_PIXEL_FORMAT_RGB565);
218 pItem->SetBackgroundBitmap(LIST_ITEM_DRAWING_STATUS_NORMAL, pBitmap);
219 pItem->SetBackgroundBitmap(LIST_ITEM_DRAWING_STATUS_PRESSED, pBitmap);
220 pItem->SetBackgroundBitmap(LIST_ITEM_DRAWING_STATUS_HIGHLIGHTED, pBitmap);*/
225 DlLogsDetailItemDataProvider::DeleteItem(int index, ListItemBase* pItem, int itemWidth)
236 DlLogsDetailItemDataProvider::GetItemCount(void)
238 int itemCount = CallLogManager::GetInstance()->GetCalllogCountByNumber();
243 DlLogsDetailItemDataProvider::SetViewMode(bool mode)
249 DlLogsDetailItemDataProvider::ResetDetailsList(void)
251 delete __pCalllogListByNumber;
252 __pCalllogListByNumber = null;