3 // Copyright (c) 2012 Samsung Electronics Co., Ltd.
5 // Licensed under the Flora License, Version 1.1 (the License);
6 // you may not use this file except in compliance with the License.
7 // You may obtain a copy of the License at
9 // http://floralicense.org/license/
11 // Unless required by applicable law or agreed to in writing, software
12 // distributed under the License is distributed on an AS IS BASIS,
13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 // See the License for the specific language governing permissions and
15 // limitations under the License.
19 /*@file: IntCreateBookmarkFolderForm
20 *@brief: This class creates Bookmark folder
24 #include <FAppUiApp.h>
26 #include "IntBookmarkPresentationModel.h"
27 #include "IntBookmarkData.h"
28 #include "IntCommonLib.h"
29 #include "IntCreateBookmarkFolderForm.h"
30 #include "IntSceneRegister.h"
32 using namespace Tizen::App;
33 using namespace Tizen::Base;
34 using namespace Tizen::Base::Collection;
35 using namespace Tizen::Graphics;
36 using namespace Tizen::Ui;
37 using namespace Tizen::Ui::Controls;
38 using namespace Tizen::Ui::Scenes;
41 const int CreateBookmarkFolderForm::IDA_BUTTON_DONE = 101;
42 const int CreateBookmarkFolderForm::IDA_BUTTON_CANCEL = 102;
44 CreateBookmarkFolderForm::CreateBookmarkFolderForm(void)
45 : __pFolderTitle(null)
47 , __modalMsgBoxResult(0)
54 CreateBookmarkFolderForm::~CreateBookmarkFolderForm(void)
60 CreateBookmarkFolderForm::Initialize(void)
62 result r = Construct(L"IDL_CREATE_BOOKMARK_FOLDER");
63 AppLogDebug("CreateBookmarkFolderForm Construct returned %s",GetErrorMessage(r));
68 CreateBookmarkFolderForm::OnInitializing(void)
70 // Add your initialization code here
73 Header* pHeader = null;
74 SceneManager* pSceneManager = SceneManager::GetInstance();
75 AppAssert(pSceneManager);
76 pSceneManager->AddSceneEventListener(IDSCN_CREATE_BOOKMARK_FOLDER, *this);
77 SetFormBackEventListener(this);
79 __pFolderTitle = static_cast< EditField* >(GetControl(L"IDC_EDITFIELD_FOLDER_TITLE"));
81 if (__pFolderTitle == null)
86 __pFolderTitle->AddKeypadEventListener(*this);
87 __pFolderTitle->AddTextEventListener(*this);
88 __pFolderTitle->SetOverlayKeypadCommandButtonVisible(false);
90 pHeader = GetHeader();
94 pHeader->AddActionEventListener(*this);
101 CreateBookmarkFolderForm::OnTerminating(void)
103 result r = E_SUCCESS;
108 CreateBookmarkFolderForm::OnSceneActivatedN(const SceneId& previousSceneId, const SceneId& currentSceneId, IList* pArgs)
110 AppLogDebug("CreateBookmarkFolderForm::OnSceneActivatedN");
112 result r = E_SUCCESS;
113 __previousScene = previousSceneId;
115 ArrayList folderList;
116 String parentID = "0";
124 String pStr = CommonUtil::GetString(L"IDS_BR_SK_EDIT");
126 String folder01 = CommonUtil::GetString(L"IDS_BR_HEADER_FOLDER");
127 folder01.Append(L"_");
129 String* pEvent = null;
132 pEvent = dynamic_cast<String*>(pArgs->GetAt(1));
137 if (pEvent->CompareTo(pStr) == 0)
144 Header* pHeader = GetHeader();
148 if (previousSceneId ==IDSCN_EDIT_BOOKMARK_LIST || __ret == true)
150 pHeader->SetTitleText(CommonUtil::GetString(L"IDS_BR_SK_EDIT"));
154 pHeader->SetTitleText(CommonUtil::GetString(L"IDS_BR_SK3_CREATE_FOLDER"));
158 if (__pFolderTitle == NULL)
163 if (previousSceneId == IDSCN_EDIT_BOOKMARK_LIST || __ret == true)
165 if (__pBookmark != NULL )
173 __pBookmark = dynamic_cast<BookmarkData*>(pArgs->GetAt(0));
176 if (__pBookmark != null)
178 __pFolderTitle->SetText(__pBookmark->GetBookmarkTitle());
179 __pFolderTitle->SetFocus();
180 __pFolderTitle->ShowKeypad();
185 __pFolderTitle->SetText(folder01);
186 __pFolderTitle->SetFocus();
187 __pFolderTitle->ShowKeypad();
189 r = BookmarkPresentationModel::GetInstance()->GetFolderCount(parentID, foldercount); // to get count of existing folders
190 TryCatch( r == E_SUCCESS,,"BookmarkPresentationModel::GetInstance()->GetFolderCount failed %s",GetErrorMessage(r));
192 r = BookmarkPresentationModel::GetInstance()->GetFolder(parentID, 0, foldercount, folderList); // to get list of existing folders
193 TryCatch( r == E_SUCCESS,,"BookmarkPresentationModel::GetInstance()->GetFolder failed %s",GetErrorMessage(r));
195 while (true) // to provide user with unique folder title when he creates a new(std::nothrow) folder
196 { // to generate folder with default name of type Folder_##
201 title.Append(folder01);
208 title.Append(counter);
210 for (count = 0;count < foldercount ; count++)
212 BookmarkData* pBookmark = dynamic_cast<BookmarkData*>(folderList.GetAt(count));
214 if ( pBookmark != NULL)
216 folderTitle = pBookmark->GetBookmarkTitle();
219 if (title.Equals(folderTitle,false) == true)
221 flag = true; // if flag is true folder title already exists
222 break; // break from for loop
229 __pFolderTitle->SetText(title); // if flag is false folder title is unique
230 break; // break from while loop
233 } // end of while loop
238 folderList.RemoveAll(true);
243 CreateBookmarkFolderForm::OnSceneDeactivated(const SceneId& currentSceneId, const SceneId& nextSceneId)
253 CreateBookmarkFolderForm::OnActionPerformed(const Control& source, int actionId)
256 SceneManager* pSceneManager = SceneManager::GetInstance();
258 if (pSceneManager == null)
265 case IDA_BUTTON_CANCEL:
268 if (__pFolderTitle != NULL)
270 __pFolderTitle->Clear();
271 __pFolderTitle->HideKeypad();
274 r = pSceneManager->GoBackward(BackwardSceneTransition());
275 AppLogDebug("SCENE_ADD_BOOKMARK error = %s",GetErrorMessage(r));
276 TryCatch(!IsFailed(r),L"BookmarkPresentationModel::GetFolderCount failed %s",GetErrorMessage(r));
281 case IDA_BUTTON_DONE:
283 result r = E_SUCCESS;
285 ArrayList folderList;
286 String parentID = "0";
290 folderTitle = __pFolderTitle->GetText();
293 r = BookmarkPresentationModel::GetInstance()->GetFolderCount(parentID, foldercount);
294 TryCatch( !IsFailed(r),,"BookmarkPresentationModel::GetInstance()->GetFolderCount failed %s",GetErrorMessage(r));
296 r = BookmarkPresentationModel::GetInstance()->GetFolder(parentID, 0, foldercount, folderList);
297 TryCatch( !IsFailed(r),,"BookmarkPresentationModel::GetInstance()->GetFolder failed %s",GetErrorMessage(r));
299 // To check if folder with same name exists
300 for (count = 0; count < foldercount; count++)
302 BookmarkData* pBookmark = dynamic_cast< BookmarkData* >(folderList.GetAt(count));
303 if ( pBookmark == NULL )
307 title = pBookmark->GetBookmarkTitle();
310 if (folderTitle.Equals(title, true) == true)
317 if (flag == true && ( __ret == true || __previousScene == IDSCN_EDIT_BOOKMARK_LIST) )
320 if(__pBookmark && (__pBookmark->GetBookmarkTitle() == folderTitle ))
322 SceneManager::GetInstance()->GoBackward(BackwardSceneTransition(SCENE_TRANSITION_ANIMATION_TYPE_RIGHT));
323 folderList.RemoveAll(false);
330 String message = " Folder already exists ";
331 CreateMessage(message); // Message alert saying Folder already exists
335 if (__previousScene == IDSCN_EDIT_BOOKMARK_LIST || __ret == true )
337 __pBookmark->SetBookmarkTitle(folderTitle);
338 BookmarkPresentationModel::GetInstance()->SaveFolder(*__pBookmark);
340 r = SceneManager::GetInstance()->GoBackward(BackwardSceneTransition(SCENE_TRANSITION_ANIMATION_TYPE_RIGHT));
341 AppLogDebug("SCENE_ADD_BOOKMARK error = %s",GetErrorMessage(r));
346 ArrayList* pArgList = null;
347 pArgList = new(std::nothrow) ArrayList();
348 if (pArgList != null)
350 pArgList->Construct();
351 pArgList->Add(*new(std::nothrow) String(L"2"));
354 BookmarkData bookmark;
355 bookmark.SetBookmarkTitle(folderTitle);
356 BookmarkPresentationModel::GetInstance()->SaveFolder(bookmark);
357 result r = pSceneManager->GoBackward(BackwardSceneTransition(SCENE_TRANSITION_ANIMATION_TYPE_RIGHT),pArgList);
358 AppLogDebug("SCENE_ADD_BOOKMARK error = %s",GetErrorMessage(r));
359 if (pArgList != null)
361 pArgList->RemoveAll(false);
364 TryCatch( !IsFailed(r),L"BookmarkPresentationModel::GetFolder failed %s",GetErrorMessage(r));
369 folderList.RemoveAll(false);
381 CreateBookmarkFolderForm::OnFormBackRequested(Tizen::Ui::Controls::Form& source)
383 SceneManager* pSceneManager = SceneManager::GetInstance();
384 if (pSceneManager == null)
389 if (__pFolderTitle != NULL)
391 __pFolderTitle->Clear();
392 __pFolderTitle->HideKeypad();
395 r = pSceneManager->GoBackward(BackwardSceneTransition());
396 AppLogDebug("SCENE_ADD_BOOKMARK error = %s",GetErrorMessage(r));
402 CreateBookmarkFolderForm::OnKeypadActionPerformed(Control& source, KeypadAction keypadAction)
408 CreateBookmarkFolderForm::OnKeypadClosed(Control& source)
410 // __pFolderTitle->SetFocus();
411 // __pFolderTitle->HideKeypad();
415 CreateBookmarkFolderForm::OnKeypadOpened(Control& source)
421 CreateBookmarkFolderForm::OnKeypadWillOpen(Control& source)
427 CreateBookmarkFolderForm::OnTextValueChanged(const Control& source)
430 Header* pHeader = GetHeader();
437 if (__pFolderTitle == NULL)
442 title = __pFolderTitle->GetText();
445 // To disable done button when folder title edit-field is empty
446 if (__pFolderTitle && title.GetLength() == 0)
448 pHeader->SetButtonEnabled(BUTTON_POSITION_LEFT, false);
452 pHeader->SetButtonEnabled(BUTTON_POSITION_LEFT, true);
454 pHeader->Invalidate(true);
459 CreateBookmarkFolderForm::OnTextValueChangeCanceled(const Control& source)
465 CreateBookmarkFolderForm::CreateMessage(String& msg)
468 if (__pMsgBox != null)
472 __modalMsgBoxResult = 0;
475 __pMsgBox = new(std::nothrow) MessageBox;
477 if (__pMsgBox != null)
479 __pMsgBox->Construct(L"", msg, MSGBOX_STYLE_OK, 3000);
482 if (__pMsgBox != null)
484 __pMsgBox->ShowAndWait(__modalMsgBoxResult);
485 if(__pFolderTitle != null)
486 __pFolderTitle->SetFocus();
487 /*if (__modalMsgBoxResult == MSGBOX_RESULT_OK)
489 AppLog("CreateBookmarkFolderForm::CreateMessage MSGBOX_RESULT_OK");
490 if (__pMsgBox != null)
496 if (__pMsgBox != null)
501 __modalMsgBoxResult = 0;