2 // Copyright (c) 2012 Samsung Electronics Co., Ltd.
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
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 PhnCallLogViewByPopup.cpp
26 #include <FGraphics.h>
27 #include "PhnAppUtility.h"
28 #include "PhnCallLogViewByPopup.h"
29 #include "PhnCallLogPresentationModel.h"
\r
30 #include "PhnTabLogs.h"
33 using namespace Tizen::Base;
34 using namespace Tizen::Base::Collection;
35 using namespace Tizen::Base::Utility;
36 using namespace Tizen::App;
37 using namespace Tizen::Graphics;
38 using namespace Tizen::Social;
39 using namespace Tizen::Ui;
40 using namespace Tizen::Ui::Controls;
41 using namespace Tizen::Ui::Scenes;
43 static const wchar_t* IDC_BLOCK_CALL = L"IDC_BLOCK_CALL";
44 static const wchar_t* IDC_BLOCK_MESSAGE = L"IDC_BLOCK_MESSAGE";
45 static const wchar_t* IDC_BLOCK_OK = L"IDC_BLOCK_OK";
46 static const wchar_t* IDC_BLOCK_CANCEL = L"IDC_BLOCK_CANCEL";
47 static const wchar_t* IDC_BLOCK_INFO = L"IDC_BLOCK_INFO";
48 static const wchar_t* IDL_CALL_LOG_VIEWBY_POPUP = L"IDL_CALL_LOG_VIEWBY_POPUP";
49 static const wchar_t* IDL_CALL_BLOCK_POPUP = L"IDL_CALL_BLOCK_POPUP";
50 static const wchar_t* IDL_POPUP_TITLE = L"IDC_POPUP_TITLE";
52 const int W_POPUP = 600;
53 const int H_POPUP = 520;
54 const int H_POPUP_TITLE = 72;
55 const int POPUP_TITLE_PADDING = 20;
56 const int W_CANCEL_BUTTON = 350;
57 const int H_CANCEL_BUTTON = 72;
58 const int CANCEL_BUTTON_PADDING = 30;
59 const int H_LIST = 300;
60 const int H_LIST_ITEM = 112;
61 const int W_LIST_ITEM = 112;
62 const int HORIZONTAL_PADDING = 16;
63 const int VERTICAL_PADDING = 85;
65 int CallLogViewByPopup::__selectedViewByIndex = IDA_ALL_LOGS;
67 CallLogViewByPopup::CallLogViewByPopup(ICallLogViewByPopupListener& listener)
68 : __popupListener(listener)
71 __pButtonAllLogs = null;
72 __pButtonMissedCalls = null;
73 __pButtonDialedCalls = null;
74 __pButtonReceivedCalls = null;
75 __pButtonRejectedCalls = null;
76 __pButtonBlockCall = null;
77 __pButtonBlockMessage = null;
78 __pButtonCancel = null;
79 __pButtonBlockOk = null;
80 __pButtonBlockCancel = null;
82 __isBlockCallSelected = false;
83 __isBlockMessageSelected = false;
87 CallLogViewByPopup::~CallLogViewByPopup()
92 CallLogViewByPopup::ConstructViewbyPopup()
95 r = Construct(IDL_CALL_LOG_VIEWBY_POPUP);
98 AppLogException("CallLogViewbyPopup construction failed");
101 SetPropagatedKeyEventListener(this);
102 AppUtility::GetGlobalFontAndItemHeight(&__fontSize, &__itemHeight);
104 __pOptionsList = new (std::nothrow) ArrayList(SingleObjectDeleter);
105 __pOptionsList->Construct();
108 cmdString = AppUtility::GetResourceString(IDS_VIEWBY_ALL_LOGS_CHKBTN_STRING);
109 __pOptionsList->Add(new String(cmdString));
110 cmdString = AppUtility::GetResourceString(IDS_VIEWBY_MISSED_CALLS_CHKBTN_STRING);
111 __pOptionsList->Add(new String(cmdString));
112 cmdString = AppUtility::GetResourceString(IDS_VIEWBY_DIALED_CALLS_CHKBTN_STRING);
113 __pOptionsList->Add(new String(cmdString));
114 cmdString = AppUtility::GetResourceString(IDS_VIEWBY_RECEIVED_CALLS_CHKBTN_STRING);
115 __pOptionsList->Add(new String(cmdString));
116 cmdString = AppUtility::GetResourceString(IDS_VIEWBY_REJECTED_CALLS_CHKBTN_STRING);
117 __pOptionsList->Add(new String(cmdString));
118 __pPopupTitle = static_cast<Label*>(GetControl(IDL_POPUP_TITLE));
119 if(__pPopupTitle != null)
121 cmdString = AppUtility::GetResourceString(IDS_VIEWBY_POPUP_TITLE_STRING);
122 __pPopupTitle->SetTextConfig(__fontSize, LABEL_TEXT_STYLE_NORMAL);
123 __pPopupTitle->SetText(cmdString);
126 __pListView = new (std::nothrow) ListView();
127 __pListView->Construct(Rectangle(0, __pPopupTitle->GetHeight() + POPUP_TITLE_PADDING, W_POPUP, H_LIST), true, SCROLL_STYLE_FADE_OUT);
128 __pListView->AddListViewItemEventListener(*this);
129 __pListView->SetItemProvider(*this);
130 r = AddControl(__pListView);
133 Application::GetInstance()->GetAppResource()->GetString(L"IDS_CANCEL", strText);
134 Button* pCancelButton = new (std::nothrow) Button();
135 r = pCancelButton->Construct(Rectangle(((W_POPUP - W_CANCEL_BUTTON)/2), __pPopupTitle->GetHeight() + POPUP_TITLE_PADDING + __pListView->GetHeight() + CANCEL_BUTTON_PADDING, W_CANCEL_BUTTON, H_CANCEL_BUTTON), strText);
136 pCancelButton->SetActionId(IDA_CANCEL);
137 pCancelButton->AddActionEventListener(*this);
138 r = AddControl(pCancelButton);
139 TryReturn(r == E_SUCCESS, r, "CallOptionPopup::AddControl() failed");
141 __pListView->UpdateList();
142 __pListView->SetItemChecked(__selectedViewByIndex, true);
143 __pListView->Invalidate(true);
148 CallLogViewByPopup::GetItemCount(void)
150 if (__pOptionsList != null)
152 return __pOptionsList->GetCount();
158 CallLogViewByPopup::CreateItem(int index, int itemWidth)
160 String* strText = static_cast<String*>(__pOptionsList->GetAt(index));
161 ListAnnexStyle style = LIST_ANNEX_STYLE_RADIO;
162 CustomItem* pItem = new CustomItem();
163 //pItem->Construct(Dimension(itemWidth, H_LIST_ITEM), style);
164 //pItem->AddElement(Rectangle(HORIZONTAL_PADDING, 0, W_POPUP - HORIZONTAL_PADDING, H_LIST_ITEM), index, *strText);
165 pItem->Construct(Dimension(itemWidth, H_LIST_ITEM + 8), style);
166 pItem->AddElement(Rectangle(HORIZONTAL_PADDING, 0, W_POPUP - HORIZONTAL_PADDING - 105, H_LIST_ITEM + 8), index, *strText,__fontSize, Color::GetColor(COLOR_ID_BLACK), Color::GetColor(COLOR_ID_BLACK), Color::GetColor(COLOR_ID_BLACK), true);
172 CallLogViewByPopup::OnListViewItemStateChanged(ListView& listView, int index, int elementId, ListItemStatus status)
178 Popup::SetShowState(false);
179 CalLogPresentationModel::setCallLogViewbyID(CALL_LOG_TYPE_ALL);
180 __selectedViewByIndex = IDA_ALL_LOGS;
181 __popupListener.OnItemSelected();
185 case IDA_MISSED_CALLS:
187 Popup::SetShowState(false);
188 CalLogPresentationModel::setCallLogViewbyID(CALL_LOG_TYPE_VOICE_MISSED);
189 __selectedViewByIndex = IDA_MISSED_CALLS;
190 __popupListener.OnItemSelected();
194 case IDA_DIALED_CALLS:
196 Popup::SetShowState(false);
197 CalLogPresentationModel::setCallLogViewbyID(CALL_LOG_TYPE_VOICE_OUTGOING);
198 __selectedViewByIndex = IDA_DIALED_CALLS;
199 __popupListener.OnItemSelected();
203 case IDA_RECEIVED_CALLS:
205 Popup::SetShowState(false);
206 CalLogPresentationModel::setCallLogViewbyID(CALL_LOG_TYPE_VOICE_INCOMING);
207 __selectedViewByIndex = IDA_RECEIVED_CALLS;
208 __popupListener.OnItemSelected();
212 case IDA_REJECTED_CALLS:
214 Popup::SetShowState(false);
215 CalLogPresentationModel::setCallLogViewbyID(CALL_LOG_TYPE_VOICE_REJECTED);
216 __selectedViewByIndex = IDA_REJECTED_CALLS;
217 __popupListener.OnItemSelected();
223 Popup::SetShowState(false);
232 CallLogViewByPopup::DeleteItem(int index, ListItemBase* pItem, int itemWidth)
240 CallLogViewByPopup::UpdateViewByPopupList()
242 AppUtility::GetGlobalFontAndItemHeight(&__fontSize, &__itemHeight);
243 __pPopupTitle->SetTextConfig(__fontSize, LABEL_TEXT_STYLE_NORMAL);
244 __pPopupTitle->Invalidate(true);
245 __pListView->UpdateList();
246 __pListView->Invalidate(true);
250 CallLogViewByPopup::ConstructBlockPopup(Tizen::Base::String& phoneNumber, bool isCallRejected, bool isMsgBeRejected)
252 result r = E_SUCCESS;
253 r = Construct(IDL_CALL_BLOCK_POPUP);
256 AppLogException("CallBlockPopup construction failed");
259 SetPropagatedKeyEventListener(this);
260 __pPopupTitle = static_cast<Label*>(GetControl(IDL_POPUP_TITLE));
261 __pButtonBlockCall = static_cast<CheckButton*>(GetControl(IDC_BLOCK_CALL));
262 __pButtonBlockMessage = static_cast<CheckButton*>(GetControl(IDC_BLOCK_MESSAGE));
263 __pBlockInfo = static_cast<Label*>(GetControl(IDC_BLOCK_INFO));
264 __pButtonBlockOk = static_cast<Button*>(GetControl(IDC_BLOCK_OK));
265 __pButtonBlockCancel = static_cast<Button*>(GetControl(IDC_BLOCK_CANCEL));
268 if(__pPopupTitle != null)
270 cmdString = AppUtility::GetResourceString(IDS_BLOCK_POPUP_TITLE_STRING);
271 cmdString.Append(" ");
272 cmdString.Append(phoneNumber);
273 __pPopupTitle->SetText(cmdString);
276 if(__pBlockInfo != null)
278 __pBlockInfo->SetShowState(false);
280 if(__pButtonBlockCall != null)
282 cmdString = AppUtility::GetResourceString(IDS_BLOCK_CALL_CHKBTN_STRING);
283 __pButtonBlockCall->SetText(cmdString);
284 __pButtonBlockCall->SetActionId(IDA_BLOCK_CALL, IDA_BLOCK_CALL);
285 __pButtonBlockCall->AddActionEventListener(*this);
287 if(__pButtonBlockMessage != null)
289 cmdString = AppUtility::GetResourceString(IDS_BLOCK_MESSAGE_CHKBTN_STRING);
290 __pButtonBlockMessage->SetText(cmdString);
291 __pButtonBlockMessage->SetActionId(IDA_BLOCK_MESSAGE, IDA_BLOCK_MESSAGE);
292 __pButtonBlockMessage->AddActionEventListener(*this);
294 if(__pButtonBlockOk != null)
296 cmdString = AppUtility::GetResourceString(IDS_BLOCK_OK_BTN_STRING);
297 __pButtonBlockOk->SetText(cmdString);
298 __pButtonBlockOk->SetActionId(IDA_BLOCK_OK);
299 __pButtonBlockOk->AddActionEventListener(*this);
300 __pButtonBlockOk->SetEnabled(false);
302 if(__pButtonBlockCancel != null)
304 cmdString = AppUtility::GetResourceString(IDS_BLOCK_CANCEL_BTN_STRING);
305 __pButtonBlockCancel->SetText(cmdString);
306 __pButtonBlockCancel->SetActionId(IDA_BLOCK_CANCEL);
307 __pButtonBlockCancel->AddActionEventListener(*this);
309 if(__pButtonBlockCall == null || __pButtonBlockOk == null || __pButtonBlockCancel == null)
313 if((isCallRejected == true || isMsgBeRejected ==true) && __pBlockInfo != null)
315 if(isCallRejected == true && isMsgBeRejected ==true)
317 cmdString = AppUtility::GetResourceString(IDS_BLOCK_CALL_MSG_INFO_STRING);
319 else if(isCallRejected == true)
321 cmdString = AppUtility::GetResourceString(IDS_BLOCK_CALL_INFO_STRING);
325 cmdString = AppUtility::GetResourceString(IDS_BLOCK_MSG_INFO_STRING);
328 __pBlockInfo->SetText(cmdString);
329 __pBlockInfo->SetTextHorizontalAlignment(ALIGNMENT_CENTER);
330 __pBlockInfo->SetShowState(isCallRejected || isMsgBeRejected);
332 __pButtonBlockCall->SetSelected(isCallRejected);
333 __pButtonBlockCall->SetEnabled(!isCallRejected);
334 __pButtonBlockCall->SetPosition(__pButtonBlockCall->GetX(), __pButtonBlockCall->GetY() + H_LIST_ITEM);
335 __pButtonBlockCall->SetBounds(__pButtonBlockCall->GetX(), __pButtonBlockCall->GetY(), __pButtonBlockCall->GetWidth(), __pButtonBlockCall->GetHeight());
336 __pButtonBlockMessage->SetSelected(isMsgBeRejected);
337 __pButtonBlockMessage->SetEnabled(!isMsgBeRejected);
338 __pButtonBlockMessage->SetPosition(__pButtonBlockMessage->GetX(), __pButtonBlockMessage->GetY() + H_LIST_ITEM);
339 __pButtonBlockMessage->SetBounds(__pButtonBlockMessage->GetX(), __pButtonBlockMessage->GetY(), __pButtonBlockMessage->GetWidth(), __pButtonBlockMessage->GetHeight());
340 __pButtonBlockOk->SetPosition(__pButtonBlockOk->GetX(), __pButtonBlockOk->GetY() + H_LIST_ITEM);
341 __pButtonBlockCancel->SetPosition(__pButtonBlockCancel->GetX(), __pButtonBlockCancel->GetY() + H_LIST_ITEM);
342 SetBounds(GetX(), GetY(), GetWidth(), GetHeight() + H_LIST_ITEM);
346 __pButtonBlockOk->SetBounds(__pButtonBlockOk->GetX(), __pButtonBlockOk->GetY(), __pButtonBlockOk->GetWidth(), __pButtonBlockOk->GetHeight());
347 __pButtonBlockCancel->SetBounds(__pButtonBlockCancel->GetX(), __pButtonBlockCancel->GetY(), __pButtonBlockCancel->GetWidth(), __pButtonBlockCancel->GetHeight());
354 CallLogViewByPopup::OnActionPerformed(const Control& source, int actionId)
360 __isBlockCallSelected = !__isBlockCallSelected;
361 __pButtonBlockOk->SetEnabled(__isBlockCallSelected || __isBlockMessageSelected);
362 __pButtonBlockOk->Invalidate(__isBlockCallSelected || __isBlockMessageSelected);
366 case IDA_BLOCK_MESSAGE:
368 __isBlockMessageSelected = !__isBlockMessageSelected;
369 __pButtonBlockOk->SetEnabled(__isBlockCallSelected || __isBlockMessageSelected);
370 __pButtonBlockOk->Invalidate(__isBlockCallSelected || __isBlockMessageSelected);
376 Popup::SetShowState(false);
382 Popup::SetShowState(false);
383 __popupListener.OnItemSelected();
387 case IDA_BLOCK_CANCEL:
389 Popup::SetShowState(false);
399 CallLogViewByPopup::GetCallBlock()
401 return __isBlockCallSelected;
405 CallLogViewByPopup::GetMessageBlock()
407 return __isBlockMessageSelected;
411 CallLogViewByPopup::OnKeyPressed(Control& source, const KeyEventInfo& keyEventInfo)
413 AppLogDebug("Enter");
414 if(keyEventInfo.GetKeyCode() == KEY_BACK)
416 Popup::SetShowState(false);