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()
89 if(__pOptionsList != null)
91 delete __pOptionsList;
92 __pOptionsList = null;
97 CallLogViewByPopup::ConstructViewbyPopup()
100 r = Construct(IDL_CALL_LOG_VIEWBY_POPUP);
103 AppLogException("CallLogViewbyPopup construction failed");
106 SetPropagatedKeyEventListener(this);
107 AppUtility::GetGlobalFontAndItemHeight(&__fontSize, &__itemHeight);
109 __pOptionsList = new (std::nothrow) ArrayList(SingleObjectDeleter);
110 __pOptionsList->Construct();
113 cmdString = AppUtility::GetResourceString(IDS_VIEWBY_ALL_LOGS_CHKBTN_STRING);
114 __pOptionsList->Add(new String(cmdString));
115 cmdString = AppUtility::GetResourceString(IDS_VIEWBY_MISSED_CALLS_CHKBTN_STRING);
116 __pOptionsList->Add(new String(cmdString));
117 cmdString = AppUtility::GetResourceString(IDS_VIEWBY_DIALED_CALLS_CHKBTN_STRING);
118 __pOptionsList->Add(new String(cmdString));
119 cmdString = AppUtility::GetResourceString(IDS_VIEWBY_RECEIVED_CALLS_CHKBTN_STRING);
120 __pOptionsList->Add(new String(cmdString));
121 cmdString = AppUtility::GetResourceString(IDS_VIEWBY_REJECTED_CALLS_CHKBTN_STRING);
122 __pOptionsList->Add(new String(cmdString));
123 __pPopupTitle = static_cast<Label*>(GetControl(IDL_POPUP_TITLE));
124 if(__pPopupTitle != null)
126 cmdString = AppUtility::GetResourceString(IDS_VIEWBY_POPUP_TITLE_STRING);
127 __pPopupTitle->SetTextConfig(__fontSize, LABEL_TEXT_STYLE_NORMAL);
128 __pPopupTitle->SetText(cmdString);
131 __pListView = new (std::nothrow) ListView();
132 __pListView->Construct(Rectangle(0, __pPopupTitle->GetHeight() + POPUP_TITLE_PADDING, W_POPUP, H_LIST), true, SCROLL_STYLE_FADE_OUT);
133 __pListView->AddListViewItemEventListener(*this);
134 __pListView->SetItemProvider(*this);
135 r = AddControl(__pListView);
138 Application::GetInstance()->GetAppResource()->GetString(L"IDS_CANCEL", strText);
139 Button* pCancelButton = new (std::nothrow) Button();
140 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);
141 pCancelButton->SetActionId(IDA_CANCEL);
142 pCancelButton->AddActionEventListener(*this);
143 r = AddControl(pCancelButton);
144 TryReturn(r == E_SUCCESS, r, "CallOptionPopup::AddControl() failed");
146 __pListView->UpdateList();
147 __pListView->SetItemChecked(__selectedViewByIndex, true);
148 __pListView->Invalidate(true);
153 CallLogViewByPopup::GetItemCount(void)
155 if (__pOptionsList != null)
157 return __pOptionsList->GetCount();
163 CallLogViewByPopup::CreateItem(int index, int itemWidth)
165 String* strText = static_cast<String*>(__pOptionsList->GetAt(index));
166 ListAnnexStyle style = LIST_ANNEX_STYLE_RADIO;
167 CustomItem* pItem = new CustomItem();
168 //pItem->Construct(Dimension(itemWidth, H_LIST_ITEM), style);
169 //pItem->AddElement(Rectangle(HORIZONTAL_PADDING, 0, W_POPUP - HORIZONTAL_PADDING, H_LIST_ITEM), index, *strText);
170 pItem->Construct(Dimension(itemWidth, H_LIST_ITEM + 8), style);
171 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);
177 CallLogViewByPopup::OnListViewItemStateChanged(ListView& listView, int index, int elementId, ListItemStatus status)
183 Popup::SetShowState(false);
184 CalLogPresentationModel::setCallLogViewbyID(CALL_LOG_TYPE_ALL);
185 __selectedViewByIndex = IDA_ALL_LOGS;
186 __popupListener.OnItemSelected();
190 case IDA_MISSED_CALLS:
192 Popup::SetShowState(false);
193 CalLogPresentationModel::setCallLogViewbyID(CALL_LOG_TYPE_VOICE_MISSED);
194 __selectedViewByIndex = IDA_MISSED_CALLS;
195 __popupListener.OnItemSelected();
199 case IDA_DIALED_CALLS:
201 Popup::SetShowState(false);
202 CalLogPresentationModel::setCallLogViewbyID(CALL_LOG_TYPE_VOICE_OUTGOING);
203 __selectedViewByIndex = IDA_DIALED_CALLS;
204 __popupListener.OnItemSelected();
208 case IDA_RECEIVED_CALLS:
210 Popup::SetShowState(false);
211 CalLogPresentationModel::setCallLogViewbyID(CALL_LOG_TYPE_VOICE_INCOMING);
212 __selectedViewByIndex = IDA_RECEIVED_CALLS;
213 __popupListener.OnItemSelected();
217 case IDA_REJECTED_CALLS:
219 Popup::SetShowState(false);
220 CalLogPresentationModel::setCallLogViewbyID(CALL_LOG_TYPE_VOICE_REJECTED);
221 __selectedViewByIndex = IDA_REJECTED_CALLS;
222 __popupListener.OnItemSelected();
228 Popup::SetShowState(false);
237 CallLogViewByPopup::DeleteItem(int index, ListItemBase* pItem, int itemWidth)
245 CallLogViewByPopup::UpdateViewByPopupList()
247 AppUtility::GetGlobalFontAndItemHeight(&__fontSize, &__itemHeight);
248 __pPopupTitle->SetTextConfig(__fontSize, LABEL_TEXT_STYLE_NORMAL);
249 __pPopupTitle->Invalidate(true);
250 __pListView->UpdateList();
251 __pListView->Invalidate(true);
255 CallLogViewByPopup::ConstructBlockPopup(Tizen::Base::String& phoneNumber, bool isCallRejected, bool isMsgBeRejected)
257 result r = E_SUCCESS;
258 r = Construct(IDL_CALL_BLOCK_POPUP);
261 AppLogException("CallBlockPopup construction failed");
264 SetPropagatedKeyEventListener(this);
265 __pPopupTitle = static_cast<Label*>(GetControl(IDL_POPUP_TITLE));
266 __pButtonBlockCall = static_cast<CheckButton*>(GetControl(IDC_BLOCK_CALL));
267 __pButtonBlockMessage = static_cast<CheckButton*>(GetControl(IDC_BLOCK_MESSAGE));
268 __pBlockInfo = static_cast<Label*>(GetControl(IDC_BLOCK_INFO));
269 __pButtonBlockOk = static_cast<Button*>(GetControl(IDC_BLOCK_OK));
270 __pButtonBlockCancel = static_cast<Button*>(GetControl(IDC_BLOCK_CANCEL));
273 if(__pPopupTitle != null)
275 cmdString = AppUtility::GetResourceString(IDS_BLOCK_POPUP_TITLE_STRING);
276 cmdString.Append(" ");
277 cmdString.Append(phoneNumber);
278 __pPopupTitle->SetText(cmdString);
281 if(__pBlockInfo != null)
283 __pBlockInfo->SetShowState(false);
285 if(__pButtonBlockCall != null)
287 cmdString = AppUtility::GetResourceString(IDS_BLOCK_CALL_CHKBTN_STRING);
288 __pButtonBlockCall->SetText(cmdString);
289 __pButtonBlockCall->SetActionId(IDA_BLOCK_CALL, IDA_BLOCK_CALL);
290 __pButtonBlockCall->AddActionEventListener(*this);
292 if(__pButtonBlockMessage != null)
294 cmdString = AppUtility::GetResourceString(IDS_BLOCK_MESSAGE_CHKBTN_STRING);
295 __pButtonBlockMessage->SetText(cmdString);
296 __pButtonBlockMessage->SetActionId(IDA_BLOCK_MESSAGE, IDA_BLOCK_MESSAGE);
297 __pButtonBlockMessage->AddActionEventListener(*this);
299 if(__pButtonBlockOk != null)
301 cmdString = AppUtility::GetResourceString(IDS_BLOCK_OK_BTN_STRING);
302 __pButtonBlockOk->SetText(cmdString);
303 __pButtonBlockOk->SetActionId(IDA_BLOCK_OK);
304 __pButtonBlockOk->AddActionEventListener(*this);
305 __pButtonBlockOk->SetEnabled(false);
307 if(__pButtonBlockCancel != null)
309 cmdString = AppUtility::GetResourceString(IDS_BLOCK_CANCEL_BTN_STRING);
310 __pButtonBlockCancel->SetText(cmdString);
311 __pButtonBlockCancel->SetActionId(IDA_BLOCK_CANCEL);
312 __pButtonBlockCancel->AddActionEventListener(*this);
314 if(__pButtonBlockCall == null || __pButtonBlockOk == null || __pButtonBlockCancel == null)
318 if((isCallRejected == true || isMsgBeRejected ==true) && __pBlockInfo != null)
320 if(isCallRejected == true && isMsgBeRejected ==true)
322 cmdString = AppUtility::GetResourceString(IDS_BLOCK_CALL_MSG_INFO_STRING);
324 else if(isCallRejected == true)
326 cmdString = AppUtility::GetResourceString(IDS_BLOCK_CALL_INFO_STRING);
330 cmdString = AppUtility::GetResourceString(IDS_BLOCK_MSG_INFO_STRING);
333 __pBlockInfo->SetText(cmdString);
334 __pBlockInfo->SetTextHorizontalAlignment(ALIGNMENT_CENTER);
335 __pBlockInfo->SetShowState(isCallRejected || isMsgBeRejected);
337 __pButtonBlockCall->SetSelected(isCallRejected);
338 __pButtonBlockCall->SetEnabled(!isCallRejected);
339 __pButtonBlockCall->SetPosition(__pButtonBlockCall->GetX(), __pButtonBlockCall->GetY() + H_LIST_ITEM);
340 __pButtonBlockCall->SetBounds(__pButtonBlockCall->GetX(), __pButtonBlockCall->GetY(), __pButtonBlockCall->GetWidth(), __pButtonBlockCall->GetHeight());
341 __pButtonBlockMessage->SetSelected(isMsgBeRejected);
342 __pButtonBlockMessage->SetEnabled(!isMsgBeRejected);
343 __pButtonBlockMessage->SetPosition(__pButtonBlockMessage->GetX(), __pButtonBlockMessage->GetY() + H_LIST_ITEM);
344 __pButtonBlockMessage->SetBounds(__pButtonBlockMessage->GetX(), __pButtonBlockMessage->GetY(), __pButtonBlockMessage->GetWidth(), __pButtonBlockMessage->GetHeight());
345 __pButtonBlockOk->SetPosition(__pButtonBlockOk->GetX(), __pButtonBlockOk->GetY() + H_LIST_ITEM);
346 __pButtonBlockCancel->SetPosition(__pButtonBlockCancel->GetX(), __pButtonBlockCancel->GetY() + H_LIST_ITEM);
347 SetBounds(GetX(), GetY(), GetWidth(), GetHeight() + H_LIST_ITEM);
351 __pButtonBlockOk->SetBounds(__pButtonBlockOk->GetX(), __pButtonBlockOk->GetY(), __pButtonBlockOk->GetWidth(), __pButtonBlockOk->GetHeight());
352 __pButtonBlockCancel->SetBounds(__pButtonBlockCancel->GetX(), __pButtonBlockCancel->GetY(), __pButtonBlockCancel->GetWidth(), __pButtonBlockCancel->GetHeight());
359 CallLogViewByPopup::OnActionPerformed(const Control& source, int actionId)
365 __isBlockCallSelected = !__isBlockCallSelected;
366 __pButtonBlockOk->SetEnabled(__isBlockCallSelected || __isBlockMessageSelected);
367 __pButtonBlockOk->Invalidate(__isBlockCallSelected || __isBlockMessageSelected);
371 case IDA_BLOCK_MESSAGE:
373 __isBlockMessageSelected = !__isBlockMessageSelected;
374 __pButtonBlockOk->SetEnabled(__isBlockCallSelected || __isBlockMessageSelected);
375 __pButtonBlockOk->Invalidate(__isBlockCallSelected || __isBlockMessageSelected);
381 Popup::SetShowState(false);
387 Popup::SetShowState(false);
388 __popupListener.OnItemSelected();
392 case IDA_BLOCK_CANCEL:
394 Popup::SetShowState(false);
404 CallLogViewByPopup::GetCallBlock()
406 return __isBlockCallSelected;
410 CallLogViewByPopup::GetMessageBlock()
412 return __isBlockMessageSelected;
416 CallLogViewByPopup::OnKeyPressed(Control& source, const KeyEventInfo& keyEventInfo)
418 AppLogDebug("Enter");
419 if(keyEventInfo.GetKeyCode() == KEY_BACK)
421 Popup::SetShowState(false);