Tizen 2.0 Release
[apps/osp/Phone.git] / src / PhnSettingsEditRejectMsgForm.cpp
1 //
2 // Copyright (c) 2012 Samsung Electronics Co., Ltd.
3 //
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
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    PhnSettingsEditRejectMsgForm.cpp
19  * @brief   Settings Edit reject message form
20  */
21 #include <FApp.h>
22 #include "PhnAppUtility.h"
23 #include "PhnSettingsConstants.h"
24 #include "PhnSettingsPresentationModel.h"
25 #include "PhnSettingsEditRejectMsgForm.h"
26 #include "PhnSceneRegister.h"
27
28 using namespace Tizen::App;
29 using namespace Tizen::Ui;
30 using namespace Tizen::Ui::Controls;
31 using namespace Tizen::Ui::Scenes;
32 using namespace Tizen::Graphics;
33 using namespace Tizen::Base;
34 using namespace Tizen::Base::Collection;
35
36 static const wchar_t* IDL_SETTINGS_ADD_EDIT_REJECT_MSGS_FORM = L"IDL_SETTINGS_ADD_EDIT_REJECT_MSGS_FORM";
37
38 SettingsEditRejectMsgForm::SettingsEditRejectMsgForm(FormMode formMode)
39         : __formMode(formMode),__pSettingsPresentor(null)
40 {
41 }
42
43 SettingsEditRejectMsgForm::~SettingsEditRejectMsgForm(void)
44 {
45 }
46
47 bool
48 SettingsEditRejectMsgForm::Initialize(void)
49 {
50         Construct(IDL_SETTINGS_ADD_EDIT_REJECT_MSGS_FORM);
51         return true;
52 }
53
54 result
55 SettingsEditRejectMsgForm::OnInitializing(void)
56 {
57         result r = E_SUCCESS;
58
59         //Initialize Header
60         InitializeHeader();
61         //Initialize reject message editArea
62         ExpandableEditArea* pEditMsgs = static_cast<ExpandableEditArea*>(GetControl(IDC_REJECTMSG_EXPANDABLEEDITAREA));
63         if (pEditMsgs != null)
64         {
65                 pEditMsgs->AddTextEventListener(*this);
66                 pEditMsgs->SetFocus();
67                 pEditMsgs->ShowKeypad();
68         }
69
70         return r;
71 }
72
73 void
74 SettingsEditRejectMsgForm::InitializeHeader(void)
75 {
76         Header* pHeader = GetHeader();
77         if (pHeader != null)
78         {
79                 pHeader->SetStyle(HEADER_STYLE_BUTTON);
80
81                 //'Save' item
82                 String saveItemName;
83                 saveItemName.Append(AppUtility::GetResourceString(IDS_SETTING_SAVE_HEADER_ITEM));
84                 HeaderItem saveHeaderItem;
85                 saveHeaderItem.Construct(IDA_SAVE_HEADER_ITEMID);
86                 saveHeaderItem.SetText(saveItemName);
87                 pHeader->AddItem(saveHeaderItem);
88                 pHeader->SetItemEnabled(0,false);
89
90                 //'Cancel' item
91                 ButtonItem cancelHeaderItem;
92                 cancelHeaderItem.Construct(BUTTON_ITEM_STYLE_ICON, IDA_CANCEL_HEADER_ITEMID);
93                 Bitmap* pNormalBmp = AppUtility::GetBitmapFromResourcesN(IDB_BACK_HEADER_ITEM, W_HDR_FTR_ICON, H_HDR_FTR_ICON);
94                 Bitmap* pPressBmp = AppUtility::GetBitmapFromResourcesN(IDB_BACK_HEADER_ITEM_PRESSED, W_HDR_FTR_ICON, H_HDR_FTR_ICON);
95                 cancelHeaderItem.SetIcon(BUTTON_ITEM_STATUS_NORMAL, pNormalBmp);
96                 cancelHeaderItem.SetIcon(BUTTON_ITEM_STATUS_PRESSED, pPressBmp);
97                 pHeader->SetButton(BUTTON_POSITION_RIGHT, cancelHeaderItem);
98                 delete pNormalBmp;
99                 pNormalBmp = null;
100                 delete pPressBmp;
101                 pPressBmp = null;
102
103                 pHeader->AddActionEventListener(*this);
104         }
105 }
106
107 result
108 SettingsEditRejectMsgForm::OnTerminating(void)
109 {
110         result r = E_SUCCESS;
111         return r;
112 }
113
114 void
115 SettingsEditRejectMsgForm::OnActionPerformed(const Control& source, int actionId)
116 {
117         SceneManager* pSceneManager = SceneManager::GetInstance();
118         AppAssert(pSceneManager != null);
119
120         switch (actionId)
121         {
122         case IDA_CANCEL_HEADER_ITEMID:
123         {
124         }
125         break;
126
127         case IDA_SAVE_HEADER_ITEMID:
128         {
129                 if (__itemIndex != -1)
130                 {
131                         String msgString;
132                         ExpandableEditArea* pEditMsgs = static_cast<ExpandableEditArea*>(GetControl(IDC_REJECTMSG_EXPANDABLEEDITAREA));
133                         if (pEditMsgs != null)
134                         {
135                                 if (pEditMsgs->GetTextLength() == 0)
136                                 {
137                                         //switch back to previous form
138                                         pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_CALL_REJECTMSGS_MENU), null);
139                                         return;
140                                 }
141                                 msgString.Append(pEditMsgs->GetText());
142                         }
143                         __pSettingsPresentor->SetRejectMessage(__itemIndex, msgString);
144                 }
145         }
146         break;
147
148         default:
149                 break;
150         }
151
152         //switch back to previous form
153         pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_CALL_REJECTMSGS_MENU), null);
154 }
155
156 void
157 SettingsEditRejectMsgForm::OnSceneActivatedN(const SceneId& previousSceneId, const SceneId& currentSceneId, IList* pArgs)
158 {
159         __itemIndex = -1;
160
161         __pSettingsPresentor = SettingsPresentationModel::GetInstance();
162         ExpandableEditArea* pEditMsgs = static_cast<ExpandableEditArea*>(GetControl(IDC_REJECTMSG_EXPANDABLEEDITAREA));
163         if (__formMode == FORMMODE_EDIT_MESSAGE && pArgs != null)
164         {
165                 __itemIndex = (static_cast<Integer*>(pArgs->GetAt(0)))->ToInt();
166                 String* pRejectMsg = static_cast<String*>(pArgs->GetAt(1));
167                 if (pEditMsgs != null)
168                 {
169                         pEditMsgs->SetText(*pRejectMsg);
170                         pEditMsgs->SetFocus();
171                 }
172         }
173         else if (__formMode == FORMMODE_NEW_MESSAGE && pArgs != null)
174         {
175                 __itemIndex = (static_cast<Integer*>(pArgs->GetAt(0)))->ToInt();
176                 if (pEditMsgs != null)
177                 {
178                         pEditMsgs->Clear();
179                         pEditMsgs->SetFocus();
180                 }
181         }
182
183         //Enable or disable save button
184         Header* pHeader = GetHeader();
185         bool enableSaveHeaderItem = (__formMode == FORMMODE_EDIT_MESSAGE);
186         if (pHeader)
187         {
188                 pHeader->SetItemEnabled(0, enableSaveHeaderItem);
189                 pHeader->Invalidate(true);
190         }
191
192         if (pArgs)
193         {
194                 pArgs->RemoveAll();
195                 delete pArgs;
196                 pArgs = null;
197         }
198 }
199
200 void
201 SettingsEditRejectMsgForm::OnSceneDeactivated(const SceneId& currentSceneId, const SceneId& nextSceneId)
202 {
203         // Add your scene deactivate code here
204         __pSettingsPresentor = null;
205         ExpandableEditArea* pEditMsgs = static_cast<ExpandableEditArea*>(GetControl(IDC_REJECTMSG_EXPANDABLEEDITAREA));
206         if (pEditMsgs != null)
207         {
208                 pEditMsgs->HideKeypad();
209         }
210 }
211
212 void
213 SettingsEditRejectMsgForm::OnTextValueChanged(const Control& source)
214 {
215         int textLen = -1;
216         ExpandableEditArea* pEditMsgs = static_cast<ExpandableEditArea*>(GetControl(IDC_REJECTMSG_EXPANDABLEEDITAREA));
217         if (pEditMsgs)
218         {
219                 textLen = pEditMsgs->GetTextLength();
220                 Header* pHeader = GetHeader();
221                 if (textLen > 0)
222                 {
223                         //Enable save button
224                         pHeader->SetItemEnabled(0, true);
225                 }
226                 else
227                 {
228                         //disable
229                         pHeader->SetItemEnabled(0, false);
230                 }
231                 pHeader->Invalidate(true);
232         }
233 }
234
235 void
236 SettingsEditRejectMsgForm::OnTextValueChangeCanceled(const Control& source)
237 {
238 }