Fixed Nabi Issues
[apps/osp/Internet.git] / src / IntAddBookmarkForm.cpp
1 //
2
3 // Copyright (c) 2012 Samsung Electronics Co., Ltd.
4 //
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
8 //
9 //     http://floralicense.org/license/
10 //
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.
16 //
17
18 // !Internet
19 /*@file:    AddBookmarkForm.cpp
20  *@brief:       This header file contains the definitions of the AddBookmarkForm class.
21  *
22  */
23
24 #include <FAppUiApp.h>
25 #include <FUi.h>
26
27 #include "IntAddBookmarkForm.h"
28 #include "IntBookmarkData.h"
29 #include "IntBookmarkPresentationModel.h"
30 #include "IntCommonLib.h"
31 #include "IntDropDownCustomItem.h"
32 #include "IntMultipleWindowPresentationModel.h"
33 #include "IntRadioCustomItem.h"
34 #include "IntSceneRegister.h"
35
36 using namespace Tizen::App;
37 using namespace Tizen::Base;
38 using namespace Tizen::Base::Collection;
39 using namespace Tizen::Base::Utility;
40 using namespace Tizen::Graphics;
41 using namespace Tizen::Ui;
42 using namespace Tizen::Ui::Controls;
43 using namespace Tizen::Ui::Scenes;
44
45 static const int LIST_ITEM_HEIGHT = 124;
46 static const int H_ITEM_HEIGHT = 112;
47 static const int H_TITLE_ITEM_HEIGHT = 150;
48 static const wchar_t* IDB_LIST_LEFT_SIDE = L"ListLeftSide.png";
49
50 const int AddBookmarkForm::IDA_CREATE_BOOKMARK_FOLDER = 101;
51 const int AddBookmarkForm::IDA_BUTTON_DONE = 102;
52 const int AddBookmarkForm::IDA_BUTTON_CANCEL = 103;
53 const int AddBookmarkForm::IDA_LIST_LEFT_SIDE_MARGIN = 104;
54 const int AddBookmarkForm::IDA_LIST_LEFT_SIDE_MARGIN_DROPDOWN = 105;
55
56 AddBookmarkForm::AddBookmarkForm(void)
57 :__fontSize(36)
58 ,__folderCount(0)
59 ,__folderName(CommonUtil::GetString(L"IDS_BR_TAB_BOOKMARKS"))
60 ,__listHeight(H_TITLE_ITEM_HEIGHT)
61 , __oldFolderCount(0)
62 , __pBookmark(null)
63 , __pEditFieldTitle(null)
64 , __pEditFieldUrl(null)
65 ,__pList(null)
66 , __pListPanel(null)
67 , __previousScene(null)
68 , __pScrollPanel(null)
69 , __pWindowInfo(null)
70 , __selectedIndex(0)
71 , __showFolderList(false)
72 ,__titleOnViewDeactivated(L"")
73 , __view(L"")
74 ,__urlOnViewDeactivated(L"")
75
76 {
77
78 }
79
80 AddBookmarkForm::~AddBookmarkForm(void)
81 {
82         //      RemoveAllControls();
83 }
84
85 bool
86 AddBookmarkForm::Initialize(void)
87 {
88         Construct(L"IDL_ADD_BOOKMARK");
89
90         return true;
91 }
92
93 result
94 AddBookmarkForm::OnInitializing(void)
95 {
96         result r = E_SUCCESS;
97         Header* pHeader = null;
98
99         SceneManager* pSceneManager = SceneManager::GetInstance();
100         if (pSceneManager == null)
101         {
102                 return E_FAILURE;
103         }
104         pSceneManager->AddSceneEventListener(IDSCN_ADD_BOOKMARK, *this);
105
106         pHeader = GetHeader();
107
108         SetFormBackEventListener(this);
109         if (pHeader != null)
110         {
111                 pHeader->AddActionEventListener(*this);
112         }
113
114         // Main Panel which is a Scroll Panel
115         __pScrollPanel = static_cast< ScrollPanel* >(GetControl(L"IDC_SCROLLPANEL2"));
116
117         if (__pScrollPanel == null)
118         {
119                 return E_FAILURE;
120         }
121         __pScrollPanel->SetPageScrollEnabled(true);
122         // Title EditField added on the Scroll Panel
123         __pEditFieldTitle = static_cast< EditField* >(__pScrollPanel->GetControl(L"IDC_EDITFIELD1"));
124
125         if (__pEditFieldTitle == null)
126         {
127                 return E_FAILURE;
128         }
129
130         __pEditFieldTitle->SetGuideText(CommonUtil::GetString(L"IDS_BR_POP_ENTER_BOOKMARK_NAME"));
131         __pEditFieldTitle->AddTextEventListener(*this);
132         __pEditFieldTitle->AddKeypadEventListener(*this);
133         __pEditFieldTitle->SetOverlayKeypadCommandButtonVisible(false);
134
135         // Url Editfield added on the Scroll Panel
136         __pEditFieldUrl = static_cast< EditField* >(__pScrollPanel->GetControl(L"IDC_EDITFIELD2"));
137
138         if (__pEditFieldUrl == null)
139         {
140                 return E_FAILURE;
141         }
142
143         __pEditFieldUrl->SetGuideText(CommonUtil::GetString(L"IDS_BR_BODY_SEARCH_OR_ENTER_URL"));
144         __pEditFieldUrl->AddTextEventListener(*this);
145         __pEditFieldUrl->AddKeypadEventListener(*this);
146         __pEditFieldUrl->AddFocusEventListener(*this);
147         __pEditFieldUrl->SetOverlayKeypadCommandButtonVisible(false);
148
149         __pList = static_cast< ListView* >(__pScrollPanel->GetControl(L"IDC_LISTVIEW1"));
150
151         if (__pList == null)
152         {
153                 return E_FAILURE;
154         }
155         __pList->SetItemProvider(*this);
156         __pList->AddListViewItemEventListener(*this);
157         AddOrientationEventListener(*this);
158
159         __pScrollPanel->SetSize(GetClientAreaBounds().width, GetClientAreaBounds().height);
160         r = __pScrollPanel->SetClientAreaHeight(__pList->GetY() + __listHeight);
161         ScrollPanelScrollDirection direction = __pScrollPanel->GetScrollDirection();
162         AppLogDebug("ScrollDirection = %d SetClientAreaHeight ret = %s value = %d autoresize = %d",direction,GetErrorMessage(r),__pScrollPanel->GetClientAreaBounds().height,__pScrollPanel->IsScrollAreaAutoResizingEnabled());
163         __fontSize = CommonUtil::GetFontSize();
164         r = E_SUCCESS;
165
166         return r;
167 }
168
169 result
170 AddBookmarkForm::OnTerminating(void)
171 {
172         result r = E_SUCCESS;
173         return r;
174 }
175
176 void
177 AddBookmarkForm::OnActionPerformed(const Control& source, int actionId)
178 {
179         AppLog("AddBookmarkForm::OnActionPerformed entered actionId %d",actionId);
180
181         SceneManager* pSceneManager = SceneManager::GetInstance();
182
183         if (pSceneManager == null)
184         {
185                 return ;
186         }
187
188         switch (actionId)
189         {
190         case IDA_CREATE_BOOKMARK_FOLDER:
191         {
192                 pSceneManager->GoForward(ForwardSceneTransition(IDSCN_CREATE_BOOKMARK_FOLDER, SCENE_TRANSITION_ANIMATION_TYPE_LEFT));
193         }
194         break;
195
196         case IDA_BUTTON_DONE:
197         {
198                 // Code to save the Bookmark
199                 String title = L"";
200                 String Url = L"";
201                 String bookMarkID = L"";
202                 String folderTitle = L"";
203                 ArrayList folderList;
204                 result r= E_SUCCESS;
205                 int count = 0;
206                 bool exist = false;
207                 bool ret = false;
208                 bool flag = false;
209                 bool valid = false;
210
211
212                 String firstPattern(L"((https?|ftp|gopher|telnet|file|notes|ms-help):((//)|(\\\\))+[\w\d:#@%/;$()~_?\+-=\\\.&]*)");
213                 String secondPattern(L"^[A-Za-z0-9\.\+-:#@%/;$~?]+\\.[A-Za-z0-9\+-=:#@%/;$~()_?\\\.&]{2,}$");   // Url of type  abc.com (i.e without protocol in front of it)
214
215                 RegularExpression firstRegex;
216                 RegularExpression secondRegex;
217
218                 firstRegex.Construct(firstPattern, REGEX_CASELESS);
219                 secondRegex.Construct(secondPattern, REGEX_CASELESS);
220
221                 title = __pEditFieldTitle->GetText();
222                 Url = __pEditFieldUrl->GetText();
223
224                 // Match
225                 ret = firstRegex.Match(Url, false); // This returns true value
226                 flag = secondRegex.Match(Url, false);  // Checks whether Url typed is of type  abc.com (i.e without protocol in front of it)
227
228                 if (ret == true)
229                 {
230                         valid = true ;
231                 }
232                 else
233                 {
234                         String tempUrl = L"http://";
235                         tempUrl.Append(Url);
236
237                         if (flag == true)
238                         {
239                                 valid = true;
240                                 Url= tempUrl ;
241                         }
242                 }
243
244                 if (valid == false)
245                 {
246                         String msg = CommonUtil::GetString(L"IDS_COM_POP_INVALID_URL");
247                         CreateMessage(msg);
248                 }
249                 else
250                 {
251                         if (__view == CommonUtil::GetString(L"IDS_BR_SK_EDIT"))
252                         {
253                                 String tempUrl ;
254                                 String tempTitle;
255                                 String tempParentId;
256
257                                 tempUrl = __pBookmark->GetUrl();
258                                 tempTitle = __pBookmark->GetBookmarkTitle();
259                                 tempParentId = __pBookmark->GetParentId();
260
261
262
263                                 r = BookmarkPresentationModel::GetInstance()->GetFolder("0", 0, __folderCount, folderList);
264                                 TryCatch(r == E_SUCCESS,,"Failed to intitialize GetFolder %s",GetErrorMessage(r));
265
266                                 for (count = 0; count < __folderCount; count++)
267                                 {
268                                         BookmarkData* pBookmark = null;
269                                         pBookmark = dynamic_cast< BookmarkData* >(folderList.GetAt(count));
270                                         if (pBookmark == NULL)
271                                         {
272                                                 return;
273                                         }
274                                         folderTitle = pBookmark->GetBookmarkTitle();
275
276                                         if (folderTitle == __folderName)
277                                         {
278                                                 bookMarkID = pBookmark->GetBookmarkId();
279                                                 break;
280                                         }
281                                 }
282
283                                 if(bookMarkID.GetLength() == 0)
284                                 {
285                                         bookMarkID = L"0";
286                                 }
287
288                                 AppLog("IDA_BUTTON_DONE tempParentId ID is %S",tempParentId.GetPointer());
289                                 AppLog("IDA_BUTTON_DONE bookMarkID ID is %S",bookMarkID.GetPointer());
290                                 String urlText = __pEditFieldUrl->GetText();
291                                 String urlWithSlash = L"";
292                                 String urlWithoutSlash = L"";
293                                 if(urlText.EndsWith(L"/"))
294                                 {
295                                         urlWithSlash = urlText;
296                                         urlText.SubString(0,urlText.GetLength()-1,urlWithoutSlash);
297                                 }
298                                 else
299                                 {
300                                         urlWithoutSlash = urlText;
301                                         urlWithSlash = urlWithoutSlash;
302                                         urlWithSlash.Append(L"/");
303                                 }
304
305                                 if (bookMarkID.CompareTo(tempParentId) == 0 && (urlWithSlash.CompareTo(tempUrl) == 0 || urlWithoutSlash.CompareTo(tempUrl) == 0 )&& __pEditFieldTitle->GetText().CompareTo(tempTitle) == 0)
306                                 {
307                                         pSceneManager->GoBackward(BackwardSceneTransition(SCENE_TRANSITION_ANIMATION_TYPE_RIGHT));
308                                         return;
309                                 }
310
311                                 if(tempUrl != __pEditFieldUrl->GetText() || tempParentId != bookMarkID)
312                                 {
313                                         r = BookmarkPresentationModel::GetInstance()->DoesBookmarkExist(Url,exist, bookMarkID, true);
314                                         TryCatch( r == E_SUCCESS,,"Failed to intitialize GetFolder %s",GetErrorMessage(r));
315                                 }
316
317
318                                 if ( exist == true && !(urlWithSlash.CompareTo(tempUrl) == 0 || urlWithoutSlash.CompareTo(tempUrl) == 0 ))
319                                 {
320                                         String msg = CommonUtil::GetString(L"IDS_BR_POP_ALREADY_EXISTS");
321                                         CreateMessage(msg);
322
323                                         AppLogDebug("Bookmark already exists");
324                                 }
325                                 else
326                                 {
327                                         __pBookmark->SetUrl(Url);
328                                         __pBookmark->SetBookmarkTitle(title);
329
330                                         if (bookMarkID == L"")
331                                         {
332                                                 __pBookmark->SetParentId(L"0");
333                                         }
334                                         else
335                                         {
336                                                 __pBookmark->SetParentId(bookMarkID);
337                                         }
338
339                                         r = BookmarkPresentationModel::GetInstance()->SaveTempBookmark(*__pBookmark);
340                                         AppLogDebug("ID_BUTTON_DONE SaveBookmark = %s", GetErrorMessage(r));
341                                         AppLogDebug("parent id = %ls",__pBookmark->GetParentId().GetPointer());
342                                         pSceneManager->GoBackward(BackwardSceneTransition(SCENE_TRANSITION_ANIMATION_TYPE_RIGHT));
343                                 }
344                         }
345                         else
346                         {
347                                 AppLog("AddBookmarkForm::OnActionPerformed does url exist 1");
348
349                                 r = BookmarkPresentationModel::GetInstance()->GetFolder(L"0", 0, __folderCount, folderList);
350                                 TryCatch(r == E_SUCCESS,,"Failed to intitialize GetFolder %s",GetErrorMessage(r));
351
352                                 for (count = 0; count < __folderCount; count++)
353                                 {
354                                         BookmarkData* pBookmark = null;
355                                         pBookmark = dynamic_cast< BookmarkData* >(folderList.GetAt(count));
356                                         if (pBookmark == NULL)
357                                         {
358                                                 return;
359                                         }
360                                         folderTitle = pBookmark->GetBookmarkTitle();
361
362                                         if (folderTitle == __folderName)
363                                         {
364                                                 bookMarkID = pBookmark->GetBookmarkId();
365                                                 break;
366                                         }
367                                 }
368                                 if(bookMarkID.GetLength() == 0)
369                                 {
370                                         bookMarkID = L"0";
371                                 }
372                                 r = BookmarkPresentationModel::GetInstance()->DoesBookmarkExist(Url,exist, bookMarkID, true);
373
374                                 TryCatch( r == E_SUCCESS,,"Failed to intitialize GetFolder %s",GetErrorMessage(r));
375                                 AppLog("AddBookmarkForm::OnActionPerformed does url exist 2");
376                                 if ( exist  == true)
377                                 {
378                                         String msg = CommonUtil::GetString(L"IDS_BR_POP_ALREADY_EXISTS");
379                                         CreateMessage(msg);
380
381                                         AppLogDebug("Bookmark already exists");
382                                 }
383                                 else
384                                 {
385                                         r = BookmarkPresentationModel::GetInstance()->GetFolder("0", 0, __folderCount, folderList);
386                                         TryCatch( r == E_SUCCESS,,"Failed to intitialize GetFolder %s",GetErrorMessage(r));
387
388                                         for (count = 0; count < __folderCount; count++)
389                                         {
390                                                 BookmarkData* pBookmark = null;
391                                                 pBookmark = dynamic_cast< BookmarkData* >(folderList.GetAt(count));
392                                                 if ( pBookmark == NULL )
393                                                 {
394                                                         return;
395                                                 }
396                                                 folderTitle = pBookmark->GetBookmarkTitle();
397
398                                                 if (folderTitle == __folderName)
399                                                 {
400                                                         bookMarkID = pBookmark->GetBookmarkId();
401                                                         break;
402                                                 }
403                                         }
404                                         BookmarkData bookmark;
405
406                                         if (__folderName != CommonUtil::GetString(L"IDS_BR_TAB_BOOKMARKS"))
407                                         {
408                                                 bookmark.SetParentId(bookMarkID);
409                                         }
410
411                                         bookmark.SetBookmarkTitle(title);
412                                         bookmark.SetUrl(Url);
413                                         if (__pBookmark != null)
414                                         {
415                                                 bookmark.SetFaviconId(__pBookmark->GetFaviconId());
416                                         }
417                                         BookmarkPresentationModel::GetInstance()->SaveTempBookmark(bookmark);
418                                         pSceneManager->GoBackward(BackwardSceneTransition(SCENE_TRANSITION_ANIMATION_TYPE_RIGHT));
419                                 }
420                         }
421                 }
422
423                 folderList.RemoveAll(true);
424         }
425         break;
426
427         case IDA_BUTTON_CANCEL:
428         {
429                 if (__pEditFieldTitle != NULL)
430                 {
431                         __pEditFieldTitle->Clear();
432                 }
433
434                 if (__pEditFieldUrl != NULL)
435                 {
436                         __pEditFieldUrl->Clear();
437                 }
438
439                 pSceneManager->GoBackward(BackwardSceneTransition());
440
441         }
442         break;
443
444         default:
445                 break;
446         }
447
448         CATCH: return;
449 }
450
451 void
452 AddBookmarkForm::OnFormBackRequested(Tizen::Ui::Controls::Form& source)
453 {
454         SceneManager* pSceneManager = SceneManager::GetInstance();
455
456         if (pSceneManager == null)
457         {
458                 return ;
459         }
460
461         if (__pEditFieldTitle != NULL)
462         {
463                 __pEditFieldTitle->Clear();
464         }
465
466         if (__pEditFieldUrl != NULL)
467         {
468                 __pEditFieldUrl->Clear();
469         }
470
471         pSceneManager->GoBackward(BackwardSceneTransition());
472
473
474 }
475 void
476 AddBookmarkForm::OnListViewItemLongPressed(ListView& listView, int index, int elementId, bool& invokeListViewItemCallback)
477 {
478         return;
479 }
480
481 void
482 AddBookmarkForm::OnListViewItemStateChanged(ListView& listView, int index, int elementId, ListItemStatus status)
483 {
484         if (__pEditFieldTitle != NULL)
485         {
486                 __pEditFieldTitle->HideKeypad();
487         }
488
489         if (__pEditFieldUrl != NULL)
490         {
491                 __pEditFieldUrl->HideKeypad();
492         }
493         if (index == 0)
494         {
495                 if (__showFolderList == false)
496                 {
497                         AppLog("AddBookmarkForm::OnListViewItemStateChanged false");
498                         __showFolderList = true;
499                         __pList->UpdateList();
500                         __listHeight = H_TITLE_ITEM_HEIGHT + (__pList->GetItemCount() -1) * H_ITEM_HEIGHT;
501
502                 }
503                 else
504                 {
505                         AppLog("AddBookmarkForm::OnListViewItemStateChanged true");
506                         __showFolderList = false;
507                         __pList->UpdateList();
508                         __listHeight = H_TITLE_ITEM_HEIGHT + (__pList->GetItemCount() - 1) * H_ITEM_HEIGHT;
509
510                 }
511
512         }
513         else
514         {
515                 __selectedIndex = index;
516                 if (index > 1 && __pList->GetItemCount() != index +1)
517                 {
518                         String parentID = "0";
519                         ArrayList folderList;
520                         BookmarkData* pBookmark = null;
521                         BookmarkPresentationModel::GetInstance()->GetFolder(parentID, 0, __folderCount, folderList);
522
523                         pBookmark = static_cast<BookmarkData*>(folderList.GetAt(index-2));
524                         __folderName = pBookmark->GetBookmarkTitle();
525                 }
526                 else if(index == 1)
527                 {
528                         __folderName = CommonUtil::GetString(L"IDS_BR_TAB_BOOKMARKS") ;
529                 }
530                 __listHeight = H_TITLE_ITEM_HEIGHT + (__pList->GetItemCount()-1) * H_ITEM_HEIGHT;
531                 if (__pList->GetItemCount() == index +1)
532                 {
533                         SceneManager::GetInstance()->GoForward(ForwardSceneTransition(IDSCN_CREATE_BOOKMARK_FOLDER, SCENE_TRANSITION_ANIMATION_TYPE_LEFT));
534                         return;
535                 }
536
537                 __pList->UpdateList();
538                 //              __pList->RefreshList(0, LIST_REFRESH_TYPE_ITEM_MODIFY);
539
540         }
541
542         result r = __pList->SetBounds(Rectangle(__pList->GetX(), __pList->GetY(), __pList->GetWidth(), __listHeight));
543         //__pList->Invalidate(true);
544         Invalidate(true);
545         AppLog("the result is %s", GetErrorMessage(r));
546         AppLog("the list height is %d", __pList->GetHeight());
547         return;
548 }
549
550 void
551 AddBookmarkForm::OnListViewItemSwept(ListView& listView, int index, SweepDirection direction)
552 {
553         __pList->RefreshList(0, LIST_REFRESH_TYPE_ITEM_MODIFY);
554         return;
555 }
556
557 void
558 AddBookmarkForm::OnListViewContextItemStateChanged(ListView& listView, int index, int elementId, ListContextItemStatus state)
559 {
560         return;
561 }
562
563 int
564 AddBookmarkForm::GetItemCount(void)
565 {
566         AppLogDebug("AddBookmarkForm::GetItemCount");
567         int count = 0;
568         ArrayList folderList;
569         String parentID = "0";
570         BookmarkData* pBookmark = null;
571         BookmarkPresentationModel::GetInstance()->GetFolder(parentID, 0, __folderCount, folderList);
572
573         if (__selectedIndex == 0 && __view == CommonUtil::GetString(L"IDS_BR_SK_EDIT"))
574         {
575                 for(int count = 0; count < __folderCount; count++)
576                 {
577                         pBookmark = dynamic_cast< BookmarkData* >(folderList.GetAt(count));
578
579                         if (__pBookmark != null && pBookmark != NULL && __pBookmark->GetParentId() == pBookmark->GetBookmarkId())
580                         {
581                                 __selectedIndex = count + 2;
582                                 __folderName = pBookmark->GetBookmarkTitle();
583                                 break;
584                         }
585                         else
586                         {
587                                 __selectedIndex = 1;
588                         }
589                 }
590         }
591
592         folderList.RemoveAll(true);
593
594         if (__showFolderList == false)
595         {
596                 return 1;
597         }
598         else
599         {
600                 result r = BookmarkPresentationModel::GetInstance()->GetFolderCount(L"0",count);
601                 TryCatch( r == E_SUCCESS,,"BookmarkPresentationModel::GetBookmarkCount query failed  %s",GetErrorMessage(r));
602                 AppLog("count = %d", count);
603                 return count + 3;
604                 CATCH:
605                 return E_FAILURE;
606         }
607
608 }
609
610 ListItemBase*
611 AddBookmarkForm::CreateItem(int index, int itemWidth)
612 {
613         AppLog("AddBookmarkForm::CreateItem index = %d itemWidth %d list width = %d",index,itemWidth,__pList->GetWidth());
614         result r = E_FAILURE;
615         String folderTitle = L"";
616         RadioCustomItem* radioItem = null;
617         DropDownCustomItem* pItem = null;
618         Bitmap* pBitmap = null;
619         pBitmap = AppResource::GetInstance()->GetBitmapN(IDB_LIST_LEFT_SIDE);
620         const Color ITEM_RADIO_ITEM_BACKGROUND_COLOR = CUSTOM_COLOR_SETTINGS_LISTITEM_RADIO_BACKGROUND;
621         const Color ITEM_BACKGROUND_COLOR_HIGHLIGHTED = CUSTOM_BACKGROUND_COLOR_LISTVIEW_PRESSED_HIGHLIGHTED;
622         if(itemWidth == 0)
623         {
624                 itemWidth = __pList->GetWidth();
625         }
626         if (index == 0)
627         {
628                 pItem = new(std::nothrow) DropDownCustomItem();
629                 r = pItem->Construct(itemWidth);
630
631                 if (IsFailed(r))
632                 {
633                         AppLog("Create Item Failed with error %s", GetErrorMessage(r));
634                         delete pItem;
635                         delete pBitmap;
636                         return null;
637                 }
638
639                 if ( __showFolderList == true )
640                 {
641                         pItem->SetCurState(DROP_DOWN_ITEM_STATE_OPENED);
642                 }
643                 else
644                 {
645                         pItem->SetCurState(DROP_DOWN__ITEM_STATE_CLOSED);
646                 }
647
648
649                 pItem->SetBackgroundColor(LIST_ITEM_DRAWING_STATUS_NORMAL, CUSTOM_COLOR_SETTINGS_LISTITEM_BACKGROUND);
650                 pItem->SetBackgroundColor(LIST_ITEM_DRAWING_STATUS_PRESSED, ITEM_BACKGROUND_COLOR_HIGHLIGHTED);
651                 pItem->SetBackgroundColor(LIST_ITEM_DRAWING_STATUS_HIGHLIGHTED, ITEM_BACKGROUND_COLOR_HIGHLIGHTED);
652                 pItem->SetMainText(CommonUtil::GetString(L"IDS_BR_HEADER_FOLDER"));
653                 pItem->SetSubText(__folderName);
654                 pItem->Make();
655                 if (pBitmap != null)
656                 {
657                         //pItem->AddElement(Rectangle(0, 0, 10, H_ITEM_HEIGHT), IDA_LIST_LEFT_SIDE_MARGIN_DROPDOWN, *pBitmap, null);
658                         delete pBitmap;
659                 }
660                 return pItem;
661         }
662         else
663         {
664                 String parentID = "0";
665                 ArrayList folderList;
666
667                 BookmarkData* pBookmark = null;
668                 r = BookmarkPresentationModel::GetInstance()->GetFolder(parentID, 0, __folderCount, folderList);
669
670                 if (index == 1)
671                 {
672                         radioItem = new(std::nothrow) RadioCustomItem();
673                         //                      r = radioItem->Construct(GetClientAreaBounds().width, LIST_ITEM_HEIGHT);
674                         r = radioItem->Construct(itemWidth, LIST_ITEM_HEIGHT);
675                         if (IsFailed(r))
676                         {
677                                 AppLog("Create Item Failed with error %s", GetErrorMessage(r));
678                                 delete radioItem;
679                                 delete pBitmap;
680                                 return null;
681                         }
682
683                         radioItem->SetBackgroundColor(LIST_ITEM_DRAWING_STATUS_NORMAL,ITEM_RADIO_ITEM_BACKGROUND_COLOR);
684                         radioItem->SetBackgroundColor(LIST_ITEM_DRAWING_STATUS_PRESSED,ITEM_BACKGROUND_COLOR_HIGHLIGHTED);
685
686 //                      radioItem->SetBackgroundColor(LIST_ITEM_DRAWING_STATUS_NORMAL, CUSTOM_COLOR_SETTINGS_LISTITEM_BACKGROUND);
687 //                      radioItem->SetBackgroundColor(LIST_ITEM_DRAWING_STATUS_PRESSED, CUSTOM_COLOR_SETTINGS_LISTITEM_BACKGROUND);
688 //                      radioItem->SetBackgroundColor(LIST_ITEM_DRAWING_STATUS_HIGHLIGHTED, CUSTOM_COLOR_SETTINGS_LISTITEM_BACKGROUND);
689                         folderTitle = CommonUtil::GetString(L"IDS_BR_TAB_BOOKMARKS") ;
690                         radioItem->SetText(folderTitle);
691                 }
692                 else if (index <= __folderCount + 1)
693                 {
694                         pBookmark = dynamic_cast< BookmarkData* >(folderList.GetAt(index - 2));
695                         if (pBookmark != null)
696                         {
697                                 folderTitle = pBookmark->GetBookmarkTitle();
698                         }
699                         radioItem = new(std::nothrow) RadioCustomItem();
700                         //                      r = radioItem->Construct(GetClientAreaBounds().width, LIST_ITEM_HEIGHT);
701                         r = radioItem->Construct(itemWidth, LIST_ITEM_HEIGHT);
702                         if (IsFailed(r))
703                         {
704                                 AppLog("Create Item Failed with error %s", GetErrorMessage(r));
705                                 delete radioItem;
706                                 delete pBitmap;
707                                 return null;
708                         }
709
710                         radioItem->SetBackgroundColor(LIST_ITEM_DRAWING_STATUS_NORMAL,ITEM_RADIO_ITEM_BACKGROUND_COLOR);
711                         radioItem->SetBackgroundColor(LIST_ITEM_DRAWING_STATUS_PRESSED,ITEM_BACKGROUND_COLOR_HIGHLIGHTED);
712 //                      radioItem->SetBackgroundColor(LIST_ITEM_DRAWING_STATUS_NORMAL, CUSTOM_COLOR_SETTINGS_LISTITEM_BACKGROUND);
713 //                      radioItem->SetBackgroundColor(LIST_ITEM_DRAWING_STATUS_PRESSED, CUSTOM_COLOR_SETTINGS_LISTITEM_BACKGROUND);
714 //                      radioItem->SetBackgroundColor(LIST_ITEM_DRAWING_STATUS_HIGHLIGHTED, CUSTOM_COLOR_SETTINGS_LISTITEM_BACKGROUND);
715                         radioItem->SetText(folderTitle);
716                 }
717                 else
718                 {
719                         radioItem = new(std::nothrow) RadioCustomItem();
720                         //                      r = radioItem->Construct(GetClientAreaBounds().width, LIST_ITEM_HEIGHT);
721                         r = radioItem->Construct(itemWidth, LIST_ITEM_HEIGHT);
722                         if (IsFailed(r))
723                         {
724                                 AppLog("Create Item Failed with error %s", GetErrorMessage(r));
725                                 delete radioItem;
726                                 delete pBitmap;
727                                 return null;
728                         }
729                         //radioItem->AddElement(Rectangle(MARGIN_X, 0, __pList->GetBounds().width, LIST_ITEM_HEIGHT), IDA_FORMAT_STRING1, CommonUtil::GetString(L"IDS_CREATE_NEW_FOLDER"), textsize, Color::GetColor(COLOR_ID_BLACK), Color::GetColor(COLOR_ID_BLACK), Color::GetColor(COLOR_ID_BLACK), true);
730                         folderTitle = CommonUtil::GetString(L"IDS_BR_OPT_NEW_FOLDER");
731                         radioItem->SetBackgroundColor(LIST_ITEM_DRAWING_STATUS_NORMAL,ITEM_RADIO_ITEM_BACKGROUND_COLOR);
732                         radioItem->SetBackgroundColor(LIST_ITEM_DRAWING_STATUS_PRESSED,ITEM_BACKGROUND_COLOR_HIGHLIGHTED);
733 //                      radioItem->SetBackgroundColor(LIST_ITEM_DRAWING_STATUS_NORMAL, CUSTOM_COLOR_SETTINGS_LISTITEM_BACKGROUND);
734 //                      radioItem->SetBackgroundColor(LIST_ITEM_DRAWING_STATUS_PRESSED, CUSTOM_COLOR_SETTINGS_LISTITEM_BACKGROUND);
735 //                      radioItem->SetBackgroundColor(LIST_ITEM_DRAWING_STATUS_HIGHLIGHTED, CUSTOM_COLOR_SETTINGS_LISTITEM_BACKGROUND);
736                         radioItem->SetText(folderTitle);
737
738                 }
739
740                 if (__selectedIndex == index)
741                 {
742 //                      radioItem->SetSelected(true);
743                         __pList->SetItemChecked(index,true);
744                 }
745                 else
746                 {
747 //                      radioItem->SetSelected(false);
748                         __pList->SetItemChecked(index,false);
749                 }
750
751                 if(__selectedIndex == 0 && index == 1)
752                 {
753 //                      radioItem->SetSelected(true);
754                         __pList->SetItemChecked(index,true);
755                 }
756                 if (__pList->IsItemChecked(index) == true)
757                 {
758                         __folderName = radioItem->GetText();
759                 }
760
761                 if (pBitmap != null)
762                 {
763                         //radioItem->AddElement(Rectangle(0, 0, 10, LIST_ITEM_HEIGHT), IDA_LIST_LEFT_SIDE_MARGIN, *pBitmap, null);
764                         delete pBitmap;
765                 }
766
767                 folderList.RemoveAll(true);
768                 radioItem->Make();
769                 return radioItem;
770         }
771 }
772
773 bool
774 AddBookmarkForm::DeleteItem(int index, ListItemBase* pItem, int itemWidth)
775 {
776         if (pItem != null)
777         {
778                 delete pItem;
779                 pItem = null;
780         }
781
782         return true;
783 }
784
785 void
786 AddBookmarkForm::OnKeypadActionPerformed(Control& source, KeypadAction keypadAction)
787 {
788         return;
789 }
790
791 void
792 AddBookmarkForm::OnKeypadClosed(Control& source)
793 {
794
795         AppLog("the client area height is %d",GetClientAreaBounds().height);
796
797         __pScrollPanel->SetBounds(Rectangle(0, 0, GetClientAreaBounds().width, GetClientAreaBounds().height));
798         __pScrollPanel->Invalidate(true);
799
800         Invalidate(true);
801         return;
802 }
803
804 void
805 AddBookmarkForm::OnKeypadOpened(Control& source)
806 {
807         return;
808 }
809
810 void
811 AddBookmarkForm::OnKeypadWillOpen(Control& source)
812 {
813         AppLog("the client area height is %d",GetClientAreaBounds().height);
814
815         //      __pScrollPanel->SetBounds(Rectangle(0, 0, GetClientAreaBounds().width, GetClientAreaBounds().height));
816
817         //      __pScrollPanel->Invalidate(true);
818         //      __pScrollPanel->SetScrollPosition(source.GetY()-48,false);
819         __pScrollPanel->SetSize(GetClientAreaBounds().width,GetClientAreaBounds().height);
820         __pScrollPanel->SetClientAreaWidth(__pScrollPanel->GetWidth());
821         __pScrollPanel->SetClientAreaHeight(__pList->GetY()+__listHeight);
822         Invalidate(true);
823         AppLog("the scroll panel height is Rect(%d,%d,%d,%d) ClientHeight =  %d",__pScrollPanel->GetX(),__pScrollPanel->GetY(),__pScrollPanel->GetWidth(),__pScrollPanel->GetHeight(),__pScrollPanel->GetClientAreaBounds().height);
824         return;
825 }
826
827 void
828 AddBookmarkForm::OnSceneActivatedN(const SceneId& previousSceneId, const SceneId& currentSceneId, IList* pArgs)
829 {
830         // Code to handle events when the AddBookmarkForm is activated.
831         String str = "0";
832         String pageTitle = L"";
833         String pageUrl = L"";
834         String title = L"";
835         String url = L"";
836         result r = E_FAILURE;
837         Header* pHeader = GetHeader();
838
839         r = BookmarkPresentationModel::GetInstance()->GetFolderCount(str, __folderCount);
840         TryCatch( r == E_SUCCESS, ,"Failed to intitialize GETFOLDERCOUNT  %s",GetErrorMessage(r));
841
842         if ( pHeader == NULL )
843         {
844                 return ;
845         }
846         if ( previousSceneId != IDSCN_CREATE_BOOKMARK_FOLDER )
847         {
848                 // check first argument of pargs 0 for Add, 1 - for Edit
849                 String* firstValue = NULL;
850                 if(pArgs)
851                 {
852                         firstValue = dynamic_cast<String*>(pArgs->GetAt(0));
853                 }
854
855                 if( firstValue == NULL || pArgs == NULL)
856                 {
857                         return ;
858                 }
859                 if (firstValue->CompareTo(L"1") == 0)
860                 {
861                         __view = CommonUtil::GetString(L"IDS_BR_SK_EDIT");
862
863                         pHeader->SetTitleText(CommonUtil::GetString(L"IDS_BR_HEADER_EDIT_BOOKMARK"));
864
865                         if (__pBookmark != NULL && pArgs != NULL)
866                         {
867                                 delete __pBookmark;
868                                 __pBookmark = null;
869                         }
870
871                         if (__pBookmark == NULL && pArgs != NULL)
872                         {
873                                 __pBookmark = dynamic_cast<BookmarkData*>(pArgs->GetAt(1));
874                         }
875
876                         if (__pBookmark)
877                         {
878                                 pageTitle = __pBookmark->GetBookmarkTitle();
879                                 pageUrl = __pBookmark->GetUrl();
880                         }
881                 }
882                 else if (firstValue->CompareTo(L"0") == 0)
883                 {
884                         __view = CommonUtil::GetString(L"IDS_COM_SK_ADD");
885                         pHeader->SetTitleText(CommonUtil::GetString(L"IDS_BR_HEADER_EDIT_BOOKMARK"));
886
887                         WindowInfo* pWindowInfo = MultipleWindowPresentationModel::GetInstance()->GetActiveWindowInfo();
888
889                         if( pWindowInfo == NULL )
890                         {
891                                 return;
892                         }
893
894                         if(pWindowInfo->pageTitle.CompareTo(CommonUtil::GetString(L"IDS_BR_BODY_ABOUT_C_BLANK")) != 0)
895                                 pageTitle = pWindowInfo->pageTitle;
896
897                         if(pWindowInfo->pageUrl.IsEmpty() == false)
898                         {
899                                 pageUrl = pWindowInfo->pageUrl;
900                         }
901                         String* parentID = dynamic_cast<String*>(pArgs->GetAt(1));
902
903                         ArrayList folderList;
904
905                         BookmarkData* pBookmark = null;
906                         BookmarkPresentationModel::GetInstance()->GetFolder(L"0", 0, __folderCount, folderList);
907                         for(int count = 0; count < folderList.GetCount(); count++)
908                         {
909                                 pBookmark = dynamic_cast< BookmarkData* >(folderList.GetAt(count));
910
911                                 if ( pBookmark == null )
912                                 {
913                                         return ;
914                                 }
915
916                                 if (parentID != NULL && pBookmark->GetBookmarkId().CompareTo(parentID->GetPointer()) == 0)
917                                 {
918                                         __selectedIndex = count + 2;
919                                         __folderName = pBookmark->GetBookmarkTitle();
920                                         break;
921                                 }
922                                 else
923                                 {
924                                         __selectedIndex = 1 ;
925                                         __folderName = CommonUtil::GetString(L"IDS_BR_TAB_BOOKMARKS") ;
926                                 }
927
928                         }
929
930                         if (__folderCount == 0)
931                         {
932                                 __selectedIndex = 1 ;
933                                 __folderName = CommonUtil::GetString(L"IDS_BR_TAB_BOOKMARKS") ;
934                         }
935
936                         folderList.RemoveAll(true);
937                 }
938         }
939
940         if ( previousSceneId == IDSCN_CREATE_BOOKMARK_FOLDER )
941         {
942                 pageTitle = __titleOnViewDeactivated;
943                 pageUrl = __urlOnViewDeactivated;
944                 if(__pList && __pScrollPanel)
945                 {
946                         AppLog("__pList->GetItemCount() %d",__pList->GetItemCount());
947                         __pList->ScrollToItem(__pList->GetItemCount());
948 //                      __pList->Invalidate(true);
949                         __pScrollPanel->ScrollToBottom();
950                 }
951         }
952
953         if(__pEditFieldTitle != NULL)
954         {
955                 __pEditFieldTitle->ShowKeypad();
956         }
957         if ( previousSceneId != IDSCN_CREATE_BOOKMARK_FOLDER )
958         {
959                 if (__pEditFieldTitle != NULL)
960                 {
961                         __pEditFieldTitle->SetText(pageTitle);
962                         __pEditFieldTitle->ShowKeypad();
963                 }
964                 if (__pEditFieldUrl != NULL)
965                 {
966                         __pEditFieldUrl->SetText(pageUrl);
967                         __pEditFieldUrl->HideKeypad();
968                 }
969
970         }
971         else
972         {
973                 if (__pEditFieldTitle != NULL)
974                 {
975                         __pEditFieldTitle->SetText(pageTitle);
976                         __pEditFieldTitle->HideKeypad();
977                 }
978                 if (__pEditFieldUrl != NULL)
979                 {
980                         __pEditFieldUrl->SetText(pageUrl);
981                         __pEditFieldUrl->HideKeypad();
982                 }
983         }
984         if (__view == CommonUtil::GetString(L"IDS_BR_SK_EDIT") && previousSceneId == IDSCN_CREATE_BOOKMARK_FOLDER )
985         {
986                 if (__oldFolderCount == 0)
987                 {
988                         if (__folderCount == 1)
989                         {
990                                 __selectedIndex = 2;
991                         }
992                 }
993                 else if (__oldFolderCount != __folderCount)
994                 {
995                         __selectedIndex = __folderCount + 1;
996                 }
997                 if(__selectedIndex > 1)
998                 {
999                         String parentID = L"0";
1000                         ArrayList folderList;
1001                         BookmarkData* pBookmark = null;
1002                         BookmarkPresentationModel::GetInstance()->GetFolder(parentID, 0, __folderCount, folderList);
1003                         pBookmark = static_cast<BookmarkData*>(folderList.GetAt(__selectedIndex-2));
1004                         if(pBookmark != null)
1005                         {
1006                                 __folderName = pBookmark->GetBookmarkTitle();
1007                         }
1008                 }
1009         }
1010
1011         if (__view == CommonUtil::GetString(L"IDS_COM_SK_ADD")  && previousSceneId == IDSCN_CREATE_BOOKMARK_FOLDER)
1012         {
1013
1014                 if (__oldFolderCount == 0)
1015                 {
1016                         if (__folderCount == 1)
1017                         {
1018                                 __selectedIndex = 2;
1019                         }
1020                 }
1021                 else if (__oldFolderCount != __folderCount)
1022                 {
1023                         __selectedIndex = __folderCount + 1;
1024
1025                 }
1026                 else if (__oldFolderCount == __folderCount )
1027                 {
1028                         __selectedIndex = __folderCount + 1;
1029                 }
1030                 if(__selectedIndex > 1)
1031                 {
1032                         String parentID = L"0";
1033                         ArrayList folderList;
1034                         BookmarkData* pBookmark = null;
1035                         BookmarkPresentationModel::GetInstance()->GetFolder(parentID, 0, __folderCount, folderList);
1036                         pBookmark = static_cast<BookmarkData*>(folderList.GetAt(__selectedIndex-2));
1037                         if(pBookmark != null)
1038                         {
1039                                 __folderName = pBookmark->GetBookmarkTitle();
1040                         }
1041                 }
1042         }
1043         if (__pEditFieldTitle != NULL)
1044         {
1045                 title = __pEditFieldTitle->GetText();
1046                 title.Trim();
1047         }
1048
1049         if (__pEditFieldUrl != NULL)
1050         {
1051                 url = __pEditFieldUrl->GetText();
1052                 url.Trim();
1053         }
1054
1055         // To disable done button if either of the Title or Url field is empty
1056         if (title.GetLength() == 0 || url.GetLength() == 0)
1057         {
1058                 pHeader->SetButtonEnabled(BUTTON_POSITION_LEFT, false);
1059                 pHeader->Invalidate(true);
1060         }
1061         else
1062         {
1063                 pHeader->SetButtonEnabled(BUTTON_POSITION_LEFT, true);
1064                 pHeader->Invalidate(true);
1065         }
1066
1067         if(__pList != null)
1068         {
1069
1070                 __pList->UpdateList();
1071                 __listHeight = H_TITLE_ITEM_HEIGHT + (__pList->GetItemCount() - 1) * H_ITEM_HEIGHT;
1072                 __pList->SetBounds(__pList->GetX(),__pList->GetY(),__pList->GetWidth(),__listHeight);
1073         }
1074
1075         Invalidate(true);
1076         //      __pList->RefreshList(0, LIST_REFRESH_TYPE_ITEM_MODIFY);
1077         CATCH : return;
1078 }
1079
1080 void
1081 AddBookmarkForm::OnSceneDeactivated(const SceneId& currentSceneId, const SceneId& nextSceneId)
1082 {
1083         // Add code to handle events when the AddBookmarkForm is Deactivated.
1084         if ( __pEditFieldTitle != NULL)
1085         {
1086                 __titleOnViewDeactivated = __pEditFieldTitle->GetText();
1087         }
1088
1089         if ( __pEditFieldUrl != NULL)
1090         {
1091                 __urlOnViewDeactivated = __pEditFieldUrl->GetText();
1092         }
1093
1094         __oldFolderCount = __folderCount;
1095
1096         if (__view == CommonUtil::GetString(L"IDS_BR_SK_EDIT") )
1097         {
1098                 __selectedIndex = 0;
1099         }
1100         return;
1101 }
1102
1103 void
1104 AddBookmarkForm::OnFocusGained (const Tizen::Ui::Control &source)
1105 {
1106         __pScrollPanel->SetSize(GetClientAreaBounds().width,GetClientAreaBounds().height);
1107         __pScrollPanel->SetClientAreaWidth(__pScrollPanel->GetWidth());
1108         __pScrollPanel->SetClientAreaHeight(GetClientAreaBounds().height);
1109         Invalidate(true);
1110         return;
1111
1112 }
1113 void
1114 AddBookmarkForm::OnFocusLost (const Tizen::Ui::Control &source)
1115 {
1116
1117 }
1118
1119 void
1120 AddBookmarkForm::OnTextValueChanged(const Control& source)
1121 {
1122         String title = L"";
1123         String url = L"";
1124         Header* pHeader = GetHeader();
1125         if (pHeader == NULL)
1126         {
1127                 return;
1128         }
1129
1130         if (__pEditFieldTitle == NULL || __pEditFieldUrl == NULL)
1131         {
1132                 return;
1133         }
1134
1135         title = __pEditFieldTitle->GetText();
1136         url = __pEditFieldUrl->GetText();
1137         title.Trim();
1138         url.Trim();
1139
1140         // To disable done button if either of the Title or Url field is empty
1141         if (title.GetLength() == 0 || url.GetLength() == 0)
1142         {
1143                 pHeader->SetButtonEnabled(BUTTON_POSITION_LEFT, false);
1144                 pHeader->Invalidate(true);
1145         }
1146         else
1147         {
1148                 pHeader->SetButtonEnabled(BUTTON_POSITION_LEFT, true);
1149                 pHeader->Invalidate(true);
1150         }
1151
1152         return;
1153 }
1154
1155 void
1156 AddBookmarkForm::OnTextValueChangeCanceled(const Control& source)
1157 {
1158         return;
1159 }
1160
1161 void
1162 AddBookmarkForm::CreateMessage(String& str)
1163 {
1164         Tizen::Ui::Controls::MessageBox* pMsgBox = null;       // Message Box to display alert if folder with same name already exists
1165         int __modalMsgBoxResult;
1166
1167         pMsgBox = new(std::nothrow) MessageBox;
1168         if (pMsgBox != null)
1169         {
1170                 pMsgBox->Construct(L"", str, MSGBOX_STYLE_OK, 3000);
1171                 pMsgBox->ShowAndWait(__modalMsgBoxResult);
1172                 delete pMsgBox;
1173                 pMsgBox = null;
1174                 __modalMsgBoxResult = 0;
1175         }
1176
1177         return;
1178 }
1179
1180 void
1181 AddBookmarkForm::OnOrientationChanged(const Control& source, OrientationStatus orientationStatus)
1182 {
1183         //      if (__pEditFieldTitle != NULL)
1184         //      {
1185         //              __pEditFieldTitle->HideKeypad();
1186         //      }
1187         //      if (__pEditFieldUrl != NULL)
1188         //      {
1189         //              __pEditFieldUrl->HideKeypad();
1190         //      }
1191
1192         AppLog("AddBookmarkForm::OnOrientationChanged ClientAreaBound %d, %d",GetClientAreaBounds().width,GetClientAreaBounds().height);
1193         if (orientationStatus == ORIENTATION_STATUS_LANDSCAPE)
1194         {
1195                 if (__pScrollPanel != null)
1196                 {
1197                         __pScrollPanel->ScrollToTop();
1198                         __pScrollPanel->SetClientAreaHeight(__pList->GetY()+__listHeight);
1199                 }
1200         }
1201
1202         if (__pList != null)
1203         {
1204                 __pList->SetBounds(__pList->GetX(),__pList->GetY(),GetClientAreaBounds().width,__listHeight);
1205                 __pList->UpdateList();
1206         }
1207         Invalidate(true);
1208 }