merge with master
[apps/osp/Internet.git] / src / IntHistoryListForm.cpp
1 //\r
2 // Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
3 //\r
4 // Licensed under the Flora License, Version 1.0 (the License);\r
5 // you may not use this file except in compliance with the License.\r
6 // You may obtain a copy of the License at\r
7 //\r
8 //     http://floralicense.org/license/\r
9 //\r
10 // Unless required by applicable law or agreed to in writing, software\r
11 // distributed under the License is distributed on an AS IS BASIS,\r
12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
13 // See the License for the specific language governing permissions and\r
14 // limitations under the License.\r
15 //\r
16 \r
17 //!Internet HistoryListForm class\r
18 /*@file: HistoryListForm.cpp\r
19  *@brief:       This class defines HistoryListForm used define history\r
20  *\r
21  */\r
22 \r
23 #include <FApp.h>\r
24 #include <FUi.h>\r
25 #include "IntBookmarkData.h"\r
26 #include "IntBookmarkPresentationModel.h"\r
27 #include "IntCommonLib.h"\r
28 #include "IntFaviconManager.h"\r
29 #include "IntHistoryListForm.h"\r
30 #include "IntHistoryPresentationModel.h"\r
31 #include "IntMultipleWindowPresentationModel.h"\r
32 #include "IntSceneRegister.h"\r
33 #include "IntTypes.h"\r
34 \r
35 using namespace Tizen::App;\r
36 using namespace Tizen::Base;\r
37 using namespace Tizen::Base::Collection;\r
38 using namespace Tizen::Base::Runtime;\r
39 using namespace Tizen::Graphics;\r
40 using namespace Tizen::Locales;\r
41 using namespace Tizen::Ui;\r
42 using namespace Tizen::Ui::Controls;\r
43 using namespace Tizen::Ui::Scenes;\r
44 \r
45 static const wchar_t* IDB_TAB_ICON_BOOKMARKS = L"I01_tab_icon_bookmarks.png";\r
46 static const wchar_t* IDB_TAB_ICON_HISTORY = L"I01_tab_icon_history.png";\r
47 static const wchar_t* IDB_ICON_BOOKMARK_ON_TEMP = L"I01_icon_bookmark_on_temp.png";\r
48 static const wchar_t* IDB_ICON_BOOKMARK_OFF_TEMP = L"I01_icon_bookmark_off_temp.png";\r
49 \r
50 \r
51 const int HistoryListForm::IDA_TABBAR_ITEM_1 = 101;\r
52 const int HistoryListForm::IDA_TABBAR_ITEM_2 = 102;\r
53 const int HistoryListForm::IDA_EDIT_HISTORY_LIST_FORM = 103;\r
54 const int HistoryListForm::IDA_FORMAT_ICON = 104;\r
55 const int HistoryListForm::IDA_FORMAT_TITLE = 105;\r
56 const int HistoryListForm::IDA_FORMAT_URL = 106;\r
57 const int HistoryListForm::IDA_FORMAT_BOOKMARK = 107;\r
58 \r
59 \r
60 HistoryListForm::HistoryListForm(void)\r
61 {\r
62         __pGroupedListView =null;\r
63         __pSearchListView = null;\r
64         __pSearchBar = null;\r
65         __pGroupData = null;\r
66         __pSearchedData = null ;\r
67         __searchHistory = false;\r
68         __isNoHistoryPresent = true;\r
69         __searchText = L"";\r
70 }\r
71 \r
72 HistoryListForm::~HistoryListForm(void)\r
73 {\r
74         if (__pGroupData != null)\r
75         {\r
76                 __pGroupData->RemoveAll(true);\r
77                 delete __pGroupData;\r
78         }\r
79 }\r
80 \r
81 bool\r
82 HistoryListForm::Initialize(void)\r
83 {\r
84         Construct(L"IDL_HISTORY_LIST");\r
85 \r
86         return true;\r
87 }\r
88 \r
89 result\r
90 HistoryListForm::OnInitializing(void)\r
91 {\r
92         AppLog("HistoryListForm::OnInitializing");\r
93         result r = E_SUCCESS;\r
94         SceneManager* pSceneManager = null;\r
95         HeaderItem bookmark;\r
96         HeaderItem history;\r
97         Header *pHeader = GetHeader();\r
98         Bitmap *pIconBitmap = null;\r
99         AppResource* pAppResource = UiApp::GetInstance()->GetAppResource();\r
100         const Color brown = Color(32, 32, 32, 0xFF);\r
101 \r
102         // Setup back event listener\r
103         SetFormBackEventListener(this);\r
104 \r
105         GetHeader()->AddActionEventListener(*this);\r
106         GetFooter()->AddActionEventListener(*this);\r
107 \r
108         AddOrientationEventListener(*this);\r
109         pSceneManager = SceneManager::GetInstance();\r
110         if (pSceneManager != null)\r
111         {\r
112                 pSceneManager->AddSceneEventListener(IDSCN_HISTORY_LIST, *this);\r
113         }\r
114 \r
115         if (pAppResource == null)\r
116         {\r
117                 return E_FAILURE;\r
118         }\r
119 \r
120         __pGroupedListView = static_cast< GroupedListView* >(GetControl(L"IDC_GROUPEDLISTVIEW1"));\r
121         if (__pGroupedListView == null)\r
122         {\r
123                 return E_FAILURE;\r
124         }\r
125 \r
126         r = __pGroupedListView->SetItemProvider(*this);\r
127         if (IsFailed(r))\r
128         {\r
129                 return r;\r
130         }\r
131 \r
132 \r
133         __pSearchBar = static_cast< SearchBar* >(GetControl(L"IDC_SEARCHBAR1"));\r
134         if (__pSearchBar == null)\r
135         {\r
136                 return E_FAILURE;\r
137         }\r
138         __pSearchListView = new(std::nothrow) GroupedListView();\r
139         if (__pSearchListView == null)\r
140         {\r
141                 return E_FAILURE;\r
142         }\r
143         __pGroupedListView->AddGroupedListViewItemEventListener(*this);\r
144         r = __pGroupedListView->SetBounds(Rectangle(0,__pGroupedListView->GetY(),GetClientAreaBounds().width,GetClientAreaBounds().height  - __pSearchBar->GetHeight() - __pSearchBar->GetY()));\r
145         if (IsFailed(r))\r
146         {\r
147                 return r;\r
148         }\r
149         r = __pSearchListView->Construct(Rectangle(0,0, GetClientAreaBounds().width, GetClientAreaBounds().height -__pSearchBar->GetHeight() - __pSearchBar->GetY()), GROUPED_LIST_VIEW_STYLE_INDEXED, true, false);\r
150         if (IsFailed(r))\r
151         {\r
152                 return r;\r
153         }\r
154         r = __pSearchListView->SetItemProvider(*this);\r
155         if (IsFailed(r))\r
156         {\r
157                 return r;\r
158         }\r
159         r = __pSearchListView->SetTextOfEmptyList(CommonUtil::GetString(L"IDS_BR_BODY_NO_RESULTS_FOUND"));\r
160 \r
161         if (IsFailed(r))\r
162         {\r
163                 return r;\r
164         }\r
165 \r
166         __pSearchListView->SetTextColorOfEmptyList(Color::GetColor(COLOR_ID_BLACK));\r
167         __pSearchListView->AddGroupedListViewItemEventListener(*this);\r
168         r = __pSearchListView->SetShowState(false);\r
169         if (IsFailed(r))\r
170         {\r
171                 return r;\r
172         }\r
173 \r
174 \r
175         __pSearchBar->AddSearchBarEventListener(*this);\r
176         __pSearchBar->AddKeypadEventListener(*this);\r
177         r = __pSearchBar->SetContent(__pSearchListView);\r
178 \r
179         if (pHeader != null)\r
180         {\r
181                 pHeader->SetStyle(HEADER_STYLE_TAB);\r
182                 bookmark.Construct(IDA_TABBAR_ITEM_1);\r
183                 String strbookmark;\r
184                 pAppResource->GetString(L"IDS_BR_TAB_BOOKMARKS", strbookmark);\r
185                 bookmark.SetText(strbookmark);\r
186                 pIconBitmap = pAppResource->GetBitmapN(IDB_TAB_ICON_BOOKMARKS);\r
187                 bookmark.SetIcon(HEADER_ITEM_STATUS_NORMAL, pIconBitmap);\r
188                 bookmark.SetIcon(HEADER_ITEM_STATUS_PRESSED, pIconBitmap);\r
189                 pHeader->AddItem(bookmark);\r
190 \r
191                 if (pIconBitmap)\r
192                 {\r
193                         delete pIconBitmap;\r
194                 }\r
195 \r
196 \r
197                 history.Construct(IDA_TABBAR_ITEM_2);\r
198                 String strhistory;\r
199                 pAppResource->GetString(L"IDS_BR_TAB_HISTORY", strhistory);\r
200                 history.SetText(strhistory);\r
201                 pIconBitmap = pAppResource->GetBitmapN(IDB_TAB_ICON_HISTORY);\r
202                 history.SetIcon(HEADER_ITEM_STATUS_NORMAL, pIconBitmap);\r
203                 history.SetIcon(HEADER_ITEM_STATUS_PRESSED, pIconBitmap);\r
204                 pHeader->AddItem(history);\r
205                 pHeader->SetItemSelected(1);\r
206 \r
207                 if (pIconBitmap != NULL)\r
208                 {\r
209                         delete pIconBitmap;\r
210                 }\r
211         }\r
212 \r
213         return r;\r
214 }\r
215 \r
216 result\r
217 HistoryListForm::OnTerminating(void)\r
218 {\r
219         result r = E_SUCCESS;\r
220 \r
221         return r;\r
222 }\r
223 \r
224 void\r
225 HistoryListForm::OnActionPerformed(const Control& source, int actionId)\r
226 {\r
227         AppLog("HistoryListForm::OnActionPerformed");\r
228         result r = E_FAILURE;\r
229         SceneManager* pSceneManager = SceneManager::GetInstance();\r
230         if (pSceneManager == null)\r
231         {\r
232                 return;\r
233         }\r
234         switch (actionId)\r
235         {\r
236         case IDA_EDIT_HISTORY_LIST_FORM:\r
237         {\r
238                 AppLog("ID_EDIT_HISTORY_LIST_FORM entered");\r
239                 r = pSceneManager->GoForward(ForwardSceneTransition(IDSCN_EDIT_HISTORY_LIST, SCENE_TRANSITION_ANIMATION_TYPE_LEFT));\r
240                 if (IsFailed(r))\r
241                 {\r
242                         return;\r
243                 }\r
244         }\r
245         break;\r
246         case IDA_TABBAR_ITEM_1:\r
247         {\r
248                 result r = GetHeader()->SetItemSelected(1);\r
249                 AppLog("SetItemSelected result %s",GetErrorMessage(r));\r
250                 GetHeader()->Invalidate(true);\r
251                 r = pSceneManager->GoBackward(BackwardSceneTransition(SCENE_TRANSITION_ANIMATION_TYPE_RIGHT));\r
252                 if (IsFailed(r))\r
253                 {\r
254                         return;\r
255                 }\r
256         }\r
257         break;\r
258         default:\r
259                 break;\r
260         }\r
261 }\r
262 \r
263 void\r
264 HistoryListForm::OnFormBackRequested(Form& source)\r
265 {\r
266         SceneManager* pSceneManager = SceneManager::GetInstance();\r
267         if (pSceneManager == null)\r
268         {\r
269                 return;\r
270         }\r
271         result r = pSceneManager->GoBackward(BackwardSceneTransition());\r
272         if(IsFailed(r))\r
273         {\r
274                 AppLogDebug("HistoryListForm::OnFormBackRequested GoForward failed %s",GetErrorMessage(r));\r
275         }\r
276 }\r
277 \r
278 GroupItem*\r
279 HistoryListForm::CreateGroupItem(int groupIndex, int itemWidth)\r
280 {\r
281         result r = E_FAILURE;\r
282         int strMonth = 0;\r
283         String text(L"");\r
284         DateTime endTime;\r
285         DateTime startTime;\r
286         int count = 0;\r
287         GroupItem* pItem = null;\r
288         GroupItemClass* pGroupItemClass = null;\r
289 \r
290         String weeksAgo2 = L"";\r
291         weeksAgo2.Format(25,CommonUtil::GetString(L"IDS_BR_BODY_PD_WEEKS_AGO").GetPointer(),2);\r
292 \r
293         String weeksAgo3 = L"";\r
294         weeksAgo3.Format(25,CommonUtil::GetString(L"IDS_BR_BODY_PD_WEEKS_AGO").GetPointer(),3);\r
295 \r
296         String weeksAgo4 = L"";\r
297         weeksAgo4.Format(25,CommonUtil::GetString(L"IDS_BR_BODY_PD_WEEKS_AGO").GetPointer(),4);\r
298 \r
299         pItem = new(std::nothrow) GroupItem();\r
300         if (pItem == null)\r
301         {\r
302                 return null;\r
303         }\r
304         pGroupItemClass = dynamic_cast< GroupItemClass* >(__pGroupData->GetAt(groupIndex));\r
305 \r
306         if (pGroupItemClass == null || pGroupItemClass->GetHistoryData() == null || pGroupItemClass->GetHistoryData()->GetCount() == 0)\r
307         {\r
308                 AppLog("CreateGroupItem :: if history is null");\r
309                 r = pItem->Construct(Dimension(itemWidth, 0));\r
310                 return pItem;\r
311         }\r
312         else\r
313         {\r
314                 r = pItem->Construct(Dimension(itemWidth, 48));\r
315         }\r
316         text = pGroupItemClass->GetTitleText();\r
317 \r
318         if (__searchHistory == false)\r
319         {\r
320                 String month = L"";\r
321                 text.Append(L" (");\r
322                 if (pGroupItemClass->GetTitleText() == CommonUtil::GetString(L"IDS_COM_BODY_TODAY") || pGroupItemClass->GetTitleText() == CommonUtil::GetString(L"IDS_COM_BODY_YESTERDAY"))\r
323                 {\r
324                         int dayOfWeek = 0;\r
325                         Calendar* pGregorianCalendar = Calendar::CreateInstanceN(CALENDAR_GREGORIAN);\r
326                         if ( pGregorianCalendar != NULL)\r
327                         {\r
328                                 r = pGregorianCalendar->SetTimeField(TIME_FIELD_YEAR, pGroupItemClass->GetStartTime().GetYear());\r
329                                 if (IsFailed(r))\r
330                                 {\r
331                                         if( pItem != null)\r
332                                         {\r
333                                                 delete pItem;\r
334                                         }\r
335                                         delete pGregorianCalendar;\r
336                                         return null;\r
337                                 }\r
338                                 r = pGregorianCalendar->SetTimeField(TIME_FIELD_MONTH, pGroupItemClass->GetStartTime().GetMonth());\r
339                                 if (IsFailed(r))\r
340                                 {\r
341                                         if( pItem != null)\r
342                                         {\r
343                                                 delete pItem;\r
344                                         }\r
345                                         delete pGregorianCalendar;\r
346                                         return null;\r
347                                 }\r
348                                 r = pGregorianCalendar->SetTimeField(TIME_FIELD_DAY_OF_MONTH, pGroupItemClass->GetStartTime().GetDay());\r
349                                 if (IsFailed(r))\r
350                                 {\r
351                                         if( pItem != null)\r
352                                         {\r
353                                                 delete pItem;\r
354                                         }\r
355                                         delete pGregorianCalendar;\r
356                                         return null;\r
357                                 }\r
358                                 dayOfWeek = pGregorianCalendar->GetTimeField(TIME_FIELD_DAY_OF_WEEK);\r
359 \r
360                                 delete pGregorianCalendar;\r
361 \r
362                         }\r
363                         switch(dayOfWeek)\r
364                         {\r
365                         case SUNDAY:\r
366                                 text.Append(CommonUtil::GetString(L"IDS_COM_BODY_SUN"));\r
367                                 break;\r
368                         case MONDAY:\r
369                                 text.Append(CommonUtil::GetString(L"IDS_COM_BODY_MON"));\r
370                                 break;\r
371                         case TUESDAY:\r
372                                 text.Append(CommonUtil::GetString(L"IDS_COM_BODY_TUE"));\r
373                                 break;\r
374                         case WEDNESDAY:\r
375                                 text.Append(CommonUtil::GetString(L"IDS_COM_BODY_WED"));\r
376                                 break;\r
377                         case THURSDAY:\r
378                                 text.Append(CommonUtil::GetString(L"IDS_COM_BODY_THU"));\r
379                                 break;\r
380                         case FRIDAY:\r
381                                 text.Append(CommonUtil::GetString(L"IDS_COM_BODY_FRI"));\r
382                                 break;\r
383                         case SATURDAY:\r
384                                 text.Append(CommonUtil::GetString(L"IDS_COM_BODY_SAT"));\r
385                                 break;\r
386                         default:\r
387                                 break;\r
388                         }\r
389                         text.Append(L", ");\r
390                 }\r
391 \r
392                 if (pGroupItemClass->GetTitleText() != CommonUtil::GetString(L"IDS_BR_BODY_OLDER"))\r
393                 {\r
394                         text.Append(pGroupItemClass->GetStartTime().GetDay());\r
395                         text.Append(L". ");\r
396                         strMonth = pGroupItemClass->GetStartTime().GetMonth();\r
397                         month = GetMonth(strMonth);\r
398                         text.Append(month);\r
399                 }\r
400                 else\r
401                 {\r
402                         text.Append(L"~ ");\r
403                 }\r
404 \r
405 \r
406 \r
407                 if (pGroupItemClass->GetTitleText() == CommonUtil::GetString(L"IDS_EMAIL_BODY_LAST_WEEK") || pGroupItemClass->GetTitleText() == weeksAgo2\r
408                                 || pGroupItemClass->GetTitleText() == weeksAgo3 || pGroupItemClass->GetTitleText() == weeksAgo4 || pGroupItemClass->GetTitleText() == CommonUtil::GetString(L"IDS_BR_EARLIER_THIS_MONTH") || pGroupItemClass->GetTitleText() == CommonUtil::GetString(L"IDS_EMAIL_BODY_LAST_MONTH") || pGroupItemClass->GetTitleText() == CommonUtil::GetString(L"IDS_BR_BODY_OLDER"))\r
409                 {\r
410                         text.Append(L" - ");\r
411                         text.Append(pGroupItemClass->GetEndTime().GetDay());\r
412                         text.Append(L". ");\r
413                         strMonth = pGroupItemClass->GetEndTime().GetMonth();\r
414                         month = GetMonth(strMonth);\r
415                         text.Append(month);\r
416                 }\r
417                 text.Append(L".)");\r
418         }\r
419 \r
420         r = pItem->SetElement(text, null);\r
421         if (IsFailed(r))\r
422         {\r
423                 delete pItem;\r
424                 AppLogDebug("Failed with %s", GetErrorMessage(r));\r
425                 return null;\r
426         }\r
427         r = pItem->SetTextSize(32);\r
428         if (IsFailed(r))\r
429         {\r
430                 delete pItem;\r
431                 return null;\r
432         }\r
433 \r
434         return pItem;\r
435 }\r
436 \r
437 ListItemBase*\r
438 HistoryListForm::CreateItem(int groupIndex, int itemIndex, int itemWidth)\r
439 {\r
440         AppLog("HistoryListForm::CreateItem");\r
441         result r = E_FAILURE;\r
442         History* pHistory = null;\r
443         Bitmap* pBitmap = null;\r
444         GroupItemClass* pGroupItemClass = null;\r
445         CustomItem* pItem = new(std::nothrow) CustomItem();\r
446         int bookmarkBtnWidth = 0;\r
447         Bitmap* pBookmarkBitmap = null;\r
448         String bitmapId;\r
449 \r
450         if (pItem == null)\r
451         {\r
452                 return null;\r
453         }\r
454         pGroupItemClass = dynamic_cast< GroupItemClass* >(__pGroupData->GetAt(groupIndex));\r
455         if (pGroupItemClass == null)\r
456         {\r
457                 delete pItem;\r
458                 return null;\r
459         }\r
460         pHistory = dynamic_cast< History* >(pGroupItemClass->GetHistoryData()->GetAt(itemIndex));\r
461         if (pHistory == null)\r
462         {\r
463                 delete pItem;\r
464                 return null;\r
465         }\r
466         r = pItem->Construct(Dimension(itemWidth, 128), LIST_ANNEX_STYLE_NORMAL);\r
467         if (IsFailed(r))\r
468         {\r
469                 delete pItem;\r
470                 return null;\r
471         }\r
472 \r
473         bitmapId = pHistory->GetFaviconId() ;\r
474 \r
475         pBitmap = FaviconManager::GetInstance()->GetFaviconN(bitmapId);\r
476 \r
477         if (pBitmap == null)\r
478         {\r
479                 pBitmap = FaviconManager::GetInstance()->GetDefaultFaviconN();\r
480         }\r
481         if (pBitmap != null)\r
482         {\r
483                 r = pItem->AddElement(Rectangle(16, 28, 72, 72), IDA_FORMAT_ICON, *pBitmap, null);\r
484                 delete pBitmap;\r
485                 if (IsFailed(r))\r
486                 {\r
487                         delete pItem;\r
488                         AppLogException("CreateItem failed with %s", GetErrorMessage(r));\r
489                         return null;\r
490                 }\r
491         }\r
492 //      if (pHistory->GetBookmarkId().GetLength()>0)\r
493 //      {\r
494 //              pBookmarkBitmap = AppResource::GetInstance()->GetBitmapN(IDB_ICON_BOOKMARK_ON_TEMP);\r
495 //      }\r
496 //      else\r
497 //      {\r
498 //              pBookmarkBitmap = AppResource::GetInstance()->GetBitmapN(IDB_ICON_BOOKMARK_OFF_TEMP);\r
499 //      }\r
500         bookmarkBtnWidth = 64;\r
501 \r
502 \r
503         r = pItem->AddElement(Rectangle(104, 10, GetClientAreaBounds().width - 108 - 32 - bookmarkBtnWidth - 32, 60), IDA_FORMAT_TITLE, pHistory->GetHistoryTitle(), 44,CUSTOM_COLOR_TRANSPARENT,CUSTOM_COLOR_TRANSPARENT,CUSTOM_COLOR_TRANSPARENT,true);\r
504         TryCatch(!IsFailed(r), "CreateItem failed with %s",GetErrorMessage(r));\r
505 \r
506         if(__pSearchBar->GetMode() == SEARCH_BAR_MODE_INPUT)\r
507                 r = pItem->AddElement(Rectangle(104, 70, GetClientAreaBounds().width - 108 - 32 - bookmarkBtnWidth - 32, 48), IDA_FORMAT_URL, pHistory->GetHistoryUrl(),32,CUSTOM_COLOR_TRANSPARENT,CUSTOM_COLOR_TRANSPARENT,CUSTOM_COLOR_TRANSPARENT,true);\r
508         else\r
509                 r = pItem->AddElement(Rectangle(104, 70, GetClientAreaBounds().width - 108 - 32 - bookmarkBtnWidth - 32, 48), IDA_FORMAT_URL, pHistory->GetHistoryUrl(),32,CUSTOM_COLOR_GREY,CUSTOM_COLOR_GREY,CUSTOM_COLOR_GREY,true);\r
510         TryCatch(!IsFailed(r), "CreateItem failed with %s",GetErrorMessage(r));\r
511 //      if ( pBookmarkBitmap != null)\r
512 //      {\r
513 //              r = pItem->AddElement(Rectangle(GetClientAreaBounds().width - bookmarkBtnWidth - 16, (128 - pBookmarkBitmap->GetHeight())/2, bookmarkBtnWidth, bookmarkBtnWidth), IDA_FORMAT_BOOKMARK, *pBookmarkBitmap);\r
514 //              TryCatch(!IsFailed(r), "CreateItem failed with %s",GetErrorMessage(r));\r
515 //              delete pBookmarkBitmap;\r
516 //      }\r
517         return pItem;\r
518 \r
519         CATCH:\r
520         delete pItem;\r
521         delete pBookmarkBitmap;\r
522         return null;\r
523 }\r
524 \r
525 bool\r
526 HistoryListForm::DeleteGroupItem(int groupIndex, GroupItem* pItem, int itemWidth)\r
527 {\r
528 \r
529         //      delete pItem;\r
530         //      pItem = null;\r
531         return false;\r
532 }\r
533 \r
534 bool\r
535 HistoryListForm::DeleteItem(int groupIndex, int itemIndex, ListItemBase* pItem, int itemWidth)\r
536 {\r
537         AppLog("HistoryListForm::DeleteItem");\r
538         result r = E_FAILURE;\r
539         GroupItemClass* pGroupItemClass = dynamic_cast< GroupItemClass* >(__pGroupData->GetAt(groupIndex));\r
540         if (pGroupItemClass == null)\r
541         {\r
542                 return false;\r
543         }\r
544 \r
545         //      if (pGroupItemClass->__pData != null)\r
546         //      {\r
547         //              r = pGroupItemClass->__pData->RemoveAt(itemIndex);\r
548         //              if (IsFailed(r))\r
549         //              {\r
550         //                      return false;\r
551         //              }\r
552         //      }\r
553 \r
554         delete pItem;\r
555         pItem = null;\r
556         return true;\r
557 }\r
558 \r
559 int\r
560 HistoryListForm::GetGroupCount(void)\r
561 {\r
562         __isNoHistoryPresent = true;\r
563         CreateGroupItems();\r
564         if (__pGroupData != null)\r
565         {\r
566                 if (__searchHistory == false)\r
567                 {\r
568                         int count = 0;\r
569                         HistoryPresentationModel::GetInstance()->GetHistoryCount(count);\r
570                         if (count == 0)\r
571                         {\r
572                                 return 0;\r
573                         }\r
574                         return __pGroupData->GetCount();\r
575                 }\r
576                 else\r
577                 {\r
578                         int count = 0;\r
579                 //      String searchText = __pSearchBar->GetText();\r
580                         result r = HistoryPresentationModel::GetInstance()->GetSearchHistoryCount(count, __searchText);\r
581                         if(count)\r
582                                 return 1;\r
583                         else\r
584                                 return 0;\r
585                 }\r
586         }\r
587         else\r
588         {\r
589                 return 0;\r
590         }\r
591 }\r
592 \r
593 int\r
594 HistoryListForm::GetItemCount(int groupIndex)\r
595 {\r
596         result r = E_FAILURE;\r
597         int count = 0;\r
598         DateTime endTime;\r
599         DateTime startTime;\r
600         String text;\r
601 \r
602         GroupItemClass* pGroupItemClass = dynamic_cast< GroupItemClass* >(__pGroupData->GetAt(groupIndex));\r
603         if (pGroupItemClass == null)\r
604         {\r
605                 return null;\r
606         }\r
607         if (__searchHistory == false)\r
608         {\r
609                 startTime = pGroupItemClass->GetStartTime();\r
610                 endTime = pGroupItemClass->GetEndTime();\r
611                 r = HistoryPresentationModel::GetInstance()->GetHistoryCountWithTimeRange(startTime,endTime,count);\r
612         }\r
613         else\r
614         {\r
615                 //text =  __pSearchBar->GetText();\r
616                 r = HistoryPresentationModel::GetInstance()->GetSearchHistoryCount(count,__searchText);\r
617                 if(count == 0)\r
618                 {\r
619                         return count;\r
620                 }\r
621         }\r
622         if (IsFailed(r))\r
623         {\r
624                 return 0;\r
625         }\r
626 \r
627         ArrayList* pData = new(std::nothrow) ArrayList();\r
628         if (pData == null)\r
629         {\r
630                 return 0;\r
631         }\r
632         r = pData->Construct();\r
633 \r
634         if (IsFailed(r))\r
635         {\r
636                 delete pData;\r
637                 return 0;\r
638         }\r
639 \r
640         if (__searchHistory == false)\r
641         {\r
642                 startTime = pGroupItemClass->GetStartTime();\r
643                 endTime = pGroupItemClass->GetEndTime();\r
644                 AppLog("Starttime %ls endtime %ls",startTime.ToString().GetPointer(),endTime.ToString().GetPointer());\r
645                 r = HistoryPresentationModel::GetInstance()->GetHistoryWithTimeRange(startTime,endTime, 0, count, *pData);\r
646         }\r
647         else\r
648         {\r
649                 //text = __pSearchBar->GetText() ;\r
650                 r = HistoryPresentationModel::GetInstance()->GetSearchHistory(0, count, *pData,__searchText );\r
651         }\r
652         if (IsFailed(r))\r
653         {\r
654                 delete pData;\r
655                 return 0;\r
656         }\r
657         pGroupItemClass->SetHistoryData(pData);\r
658 \r
659 \r
660         if (__isNoHistoryPresent == true && count == 0)\r
661         {\r
662                 __isNoHistoryPresent = true;\r
663                 GetFooter()->SetItemEnabled(0, false);\r
664         }\r
665         else\r
666         {\r
667                 __isNoHistoryPresent = false;\r
668                 GetFooter()->SetItemEnabled(0, true);\r
669         }\r
670         //       pGroupItemClass = dynamic_cast< GroupItemClass* >(__pGroupData->GetAt(groupIndex));\r
671         if (pGroupItemClass == null || pGroupItemClass->GetHistoryData() == null)\r
672         {\r
673                 delete pData;\r
674                 return 0;\r
675         }\r
676         else\r
677         {\r
678                 AppLogDebug("HistoryListForm::GetItemCount returning %d for %d title %ls",pGroupItemClass->GetHistoryData()->GetCount(),groupIndex,pGroupItemClass->GetTitleText().GetPointer());\r
679                 return pGroupItemClass->GetHistoryData()->GetCount();\r
680         }\r
681 }\r
682 \r
683 void\r
684 HistoryListForm::OnSceneActivatedN(const SceneId& previousSceneId, const SceneId& currentSceneId, IList* pArgs)\r
685 {\r
686 \r
687         GetHeader()->SetItemSelected(1);\r
688 \r
689         AppLog("HistoryListForm::OnSceneActivatedN called");\r
690         //GetHeader()->Invalidate(true);\r
691         if (__pGroupData == null)\r
692         {\r
693                 __pGroupData = new(std::nothrow) ArrayList();\r
694                 __pGroupData->Construct();\r
695         }\r
696         if (__pGroupedListView != null)\r
697         {\r
698                 __pGroupedListView->UpdateList();\r
699         }\r
700         if (__isNoHistoryPresent == true)\r
701         {\r
702                 GetFooter()->SetItemEnabled(0, false);\r
703         }\r
704         else\r
705         {\r
706                 GetFooter()->SetItemEnabled(0, true);\r
707         }\r
708 \r
709         int count = 0;\r
710         HistoryPresentationModel::GetInstance()->GetHistoryCount(count);\r
711         if (count == 0)\r
712         {\r
713                 __pSearchBar->SetShowState(false);\r
714                 __pSearchBar->Invalidate(true);\r
715         }\r
716         else\r
717         {\r
718                 __pSearchBar->SetShowState(true);\r
719                 __pSearchBar->Invalidate(true);\r
720         }\r
721 \r
722         //      if (__isNoHistoryPresent == true)\r
723         //      {\r
724         //              //      __pGroupedListView->SetBitmapOfEmptyList(AppResource::GetInstance()->GetBitmapN(L"I01_Nocontents_Bookmarks.png"));\r
725         //              __pGroupedListView->UpdateList();\r
726         //      }\r
727 \r
728         result r = GetHeader()->SetItemSelected(2);\r
729         if (IsFailed(r))\r
730         {\r
731                 AppLog("HistoryListForm::OnSceneActivatedN header failed %ls", GetErrorMessage(r));\r
732                 return;\r
733         }\r
734 \r
735         Invalidate(true);\r
736 \r
737 }\r
738 \r
739 void\r
740 HistoryListForm::OnSceneDeactivated(const SceneId& currentSceneId, const SceneId& nextSceneId)\r
741 {\r
742         AppLog("HistoryListForm::OnSceneDeactivated");\r
743         __pSearchBar->SetMode(SEARCH_BAR_MODE_NORMAL);\r
744 }\r
745 \r
746 void\r
747 HistoryListForm::OnGroupedListViewContextItemStateChanged(GroupedListView& listView, int groupIndex, int itemIndex, int elementId, ListContextItemStatus status)\r
748 {\r
749 \r
750 }\r
751 \r
752 void\r
753 HistoryListForm::OnGroupedListViewItemStateChanged(GroupedListView& listView, int groupIndex, int itemIndex, int elementId, ListItemStatus status)\r
754 {\r
755         GroupItemClass* pGroupItemClass = null;\r
756         History* pHistory = null;\r
757         AppLog("int groupIndex %d, int itemIndex %d, int elementId %d, ListItemStatus status %d",groupIndex,itemIndex,elementId,status);\r
758         if (elementId == IDA_FORMAT_BOOKMARK)\r
759         {\r
760                 String toggledUrl = L"";\r
761                 AppLog("BookMarkStatusChanged ID_FORMAT_BOOKMARK");\r
762                 pGroupItemClass = dynamic_cast< GroupItemClass* >(__pGroupData->GetAt(groupIndex));\r
763                 if (pGroupItemClass == null)\r
764                 {\r
765                         return;\r
766                 }\r
767                 pHistory = dynamic_cast< History* >(pGroupItemClass->GetHistoryData()->GetAt(itemIndex));\r
768                 if (pHistory == null)\r
769                 {\r
770                         return;\r
771                 }\r
772                 toggledUrl = pHistory->GetHistoryUrl();\r
773 \r
774                 AppLog("History's Bookmark ID %ls ToggledUrl %ls",pHistory->GetBookmarkId().GetPointer(),toggledUrl.GetPointer());\r
775                 if (pHistory->GetBookmarkId().GetLength() > 0)\r
776                 {\r
777                         AppLog("Already added to bookmark so will be removed");\r
778                         String bookmarkId = L"";\r
779                         int id = 0;\r
780 \r
781                         bookmarkId = pHistory->GetBookmarkId();\r
782                         Integer::Parse(bookmarkId,id);\r
783                         BookmarkPresentationModel::GetInstance()->DeleteBookmark(id);\r
784                         pHistory->SetBookmarkId(L"");\r
785                         //listView.RefreshList(groupIndex,itemIndex,LIST_REFRESH_TYPE_ITEM_MODIFY);\r
786 \r
787                         for(int grindex = 0 ; grindex < __pGroupData->GetCount() ; grindex++)\r
788                         {\r
789                                 pGroupItemClass = dynamic_cast< GroupItemClass* >(__pGroupData->GetAt(grindex));\r
790                                 if (pGroupItemClass == null)\r
791                                 {\r
792                                         continue;\r
793                                 }\r
794                                 for(int index = 0 ; index < pGroupItemClass->GetHistoryData()->GetCount() ; index++)\r
795                                 {\r
796                                         pHistory = dynamic_cast< History* >(pGroupItemClass->GetHistoryData()->GetAt(index));\r
797                                         if (pHistory == null)\r
798                                         {\r
799                                                 continue;\r
800                                         }\r
801                                         if (toggledUrl.CompareTo(pHistory->GetHistoryUrl()) == 0)\r
802                                         {\r
803                                                 pHistory->SetBookmarkId(L"");\r
804                                                 AppLog("Already added to bookmark so will be removed");\r
805                                                 String bookmarkId = L"";\r
806                                                 int id = 0;\r
807 \r
808                                                 bookmarkId = pHistory->GetBookmarkId();\r
809                                                 Integer::Parse(bookmarkId,id);\r
810                                                 BookmarkPresentationModel::GetInstance()->DeleteBookmark(id);\r
811                                                 pHistory->SetBookmarkId(L"");\r
812                                                 //listView.RefreshList(groupIndex,itemIndex,LIST_REFRESH_TYPE_ITEM_MODIFY);\r
813 \r
814                                                 for(int grindex = 0 ; grindex < __pGroupData->GetCount() ; grindex++)\r
815                                                 {\r
816                                                         pGroupItemClass = dynamic_cast< GroupItemClass* >(__pGroupData->GetAt(grindex));\r
817                                                         if (pGroupItemClass == null)\r
818                                                         {\r
819                                                                 continue;\r
820                                                         }\r
821                                                         for(int index = 0 ; index < pGroupItemClass->GetHistoryData()->GetCount() ; index++)\r
822                                                         {\r
823                                                                 pHistory = dynamic_cast< History* >(pGroupItemClass->GetHistoryData()->GetAt(index));\r
824                                                                 if (pHistory == null)\r
825                                                                 {\r
826                                                                         continue;\r
827                                                                 }\r
828                                                                 if (toggledUrl.CompareTo(pHistory->GetHistoryUrl()) == 0)\r
829                                                                 {\r
830                                                                         pHistory->SetBookmarkId(L"");\r
831                                                                         //listView.RefreshList(grindex,index,LIST_REFRESH_TYPE_ITEM_MODIFY);\r
832                                                                 }\r
833                                                         }\r
834                                                 }\r
835 \r
836                                                 //listView.RefreshList(grindex,index,LIST_REFRESH_TYPE_ITEM_MODIFY);\r
837                                         }\r
838                                 }\r
839                         }\r
840                         listView.UpdateList();\r
841 \r
842                 }\r
843                 else\r
844                 {\r
845                         AppLog("Adding history to bookmark");\r
846                         result r = E_FAILURE;\r
847                         BookmarkData pBookmark;\r
848 \r
849                         String bookmarkTitle = pHistory->GetHistoryTitle();\r
850 \r
851                         pBookmark.SetBookmarkTitle(bookmarkTitle);\r
852                         pBookmark.SetUrl(pHistory->GetHistoryUrl());\r
853                         pBookmark.SetFaviconId(pHistory->GetFaviconId());\r
854 \r
855                         r = BookmarkPresentationModel::GetInstance()->SaveBookmark(pBookmark);\r
856                         if (!IsFailed(r))\r
857                         {\r
858                                 AppLog("History added to bookmark with ID %ls",pBookmark.GetBookmarkId().GetPointer());\r
859                                 pHistory->SetBookmarkId(pBookmark.GetBookmarkId());\r
860                         }\r
861 \r
862                         listView.RefreshList(groupIndex,itemIndex,LIST_REFRESH_TYPE_ITEM_MODIFY);\r
863 \r
864                         for(int grindex = 0 ; grindex < __pGroupData->GetCount() ; grindex++)\r
865                         {\r
866                                 pGroupItemClass = dynamic_cast< GroupItemClass* >(__pGroupData->GetAt(grindex));\r
867                                 if (pGroupItemClass == null)\r
868                                 {\r
869                                         continue;\r
870                                 }\r
871                                 for(int index = 0 ; index < pGroupItemClass->GetHistoryData()->GetCount() ; index++)\r
872                                 {\r
873                                         pHistory = dynamic_cast< History* >(pGroupItemClass->GetHistoryData()->GetAt(index));\r
874                                         if (pHistory == null)\r
875                                         {\r
876                                                 continue;\r
877                                         }\r
878                                         if (toggledUrl.CompareTo(pHistory->GetHistoryUrl()) == 0)\r
879                                         {\r
880                                                 pHistory->SetBookmarkId(pBookmark.GetBookmarkId());\r
881                                                 //listView.RefreshList(grindex,index,LIST_REFRESH_TYPE_ITEM_MODIFY);\r
882                                         }\r
883                                 }\r
884                         }\r
885                         listView.UpdateList();\r
886                 }\r
887         }\r
888         else\r
889         {\r
890 \r
891                 pGroupItemClass = dynamic_cast< GroupItemClass* >(__pGroupData->GetAt(groupIndex));\r
892                 if (pGroupItemClass == null)\r
893                 {\r
894                         return;\r
895                 }\r
896 \r
897                 History* pHistory1 = dynamic_cast< History* >(pGroupItemClass->GetHistoryData()->GetAt(itemIndex));\r
898                 if (pHistory1 == null)\r
899                 {\r
900                         return;\r
901                 }\r
902                 SceneManager* pSceneManager = SceneManager::GetInstance();\r
903                 ArrayList *pArgList = null;\r
904                 result r = E_SUCCESS;\r
905                 pArgList = new(std::nothrow) ArrayList();\r
906                 if (pArgList != null)\r
907                 {\r
908                         r = pArgList->Construct();\r
909                         if (IsFailed(r))\r
910                         {\r
911                                 delete pArgList;\r
912                                 return;\r
913                         }\r
914 \r
915                         r = pArgList->Add(*MultipleWindowPresentationModel::GetInstance()->GetActiveWindowInfo());\r
916                         r = pArgList->Add(*new(std::nothrow) String(pHistory1->GetHistoryUrl()));\r
917                         if (IsFailed(r))\r
918                         {\r
919                                 delete pArgList;\r
920                                 return;\r
921                         }\r
922 \r
923 \r
924                 }\r
925 \r
926                 String scneId = L"";\r
927                 MultipleWindowPresentationModel::GetInstance()->GetCurrentSceneId(scneId);\r
928 \r
929                 if (pSceneManager != null)\r
930                 {\r
931                         AppLog("pSceneManager exists");\r
932                         r = SceneManager::GetInstance()->GoForward(ForwardSceneTransition(scneId), pArgList);\r
933                         if(pArgList)\r
934                         {\r
935                                 pArgList->RemoveAll(false);\r
936                                 delete pArgList;\r
937                         }\r
938                         if (IsFailed(r))\r
939                         {\r
940                                 return;\r
941                         }\r
942                 }\r
943         }\r
944 \r
945 }\r
946 \r
947 void\r
948 HistoryListForm::OnGroupedListViewItemSwept(GroupedListView& listView, int groupIndex, int itemIndex, SweepDirection direction)\r
949 {\r
950 \r
951 }\r
952 \r
953 void\r
954 HistoryListForm::OnSearchBarModeChanged(SearchBar& source, SearchBarMode mode)\r
955 {\r
956         result r = E_FAILURE;\r
957         if (mode == SEARCH_BAR_MODE_NORMAL)\r
958         {\r
959                 //              __pSearchBar->SetMode(SEARCH_BAR_MODE_INPUT);\r
960                 r = __pSearchListView->SetShowState(false);\r
961                 if (IsFailed(r))\r
962                 {\r
963                         return;\r
964                 }\r
965                 r = __pGroupedListView->SetShowState(true);\r
966                 if (IsFailed(r))\r
967                 {\r
968                         return;\r
969                 }\r
970                 __pSearchListView->SetEnabled(true);\r
971                 Invalidate(true);\r
972                 __searchHistory = false;\r
973                 r = __pGroupedListView->UpdateList();\r
974                 if (__isNoHistoryPresent == true)\r
975                 {\r
976                         GetFooter()->SetItemEnabled(0, false);\r
977                 }\r
978                 else\r
979                 {\r
980                         GetFooter()->SetItemEnabled(0, true);\r
981                 }\r
982 \r
983                 if (IsFailed(r))\r
984                 {\r
985                         return;\r
986                 }\r
987         }\r
988         else\r
989         {\r
990                 //              __pSearchListView->SetEnabled(false);\r
991                 r = __pSearchListView->SetShowState(true);\r
992                 if (IsFailed(r))\r
993                 {\r
994                         return;\r
995                 }\r
996                 __pSearchListView->SetEnabled(false);\r
997                 r = __pSearchListView->UpdateList();\r
998                 if (IsFailed(r))\r
999                 {\r
1000                         return;\r
1001                 }\r
1002                 r = __pGroupedListView->SetShowState(false);\r
1003                 if (IsFailed(r))\r
1004                 {\r
1005                         return;\r
1006                 }\r
1007                 if(__pSearchBar != null)\r
1008                 {\r
1009                         __pSearchBar->SetContentAreaSize(Dimension(__pSearchListView->GetWidth(), __pSearchListView->GetHeight()));\r
1010                 }\r
1011         }\r
1012 }\r
1013 \r
1014 String\r
1015 HistoryListForm::GetMonth(int month)\r
1016 {\r
1017         String monthValue = L"";\r
1018         switch (month)\r
1019         {\r
1020         case JANUARY:\r
1021                 monthValue.Append(CommonUtil::GetString(L"IDS_COM_BODY_JAN"));\r
1022                 break;\r
1023         case FEBRUARY:\r
1024                 monthValue.Append(CommonUtil::GetString(L"IDS_COM_BODY_FEB"));\r
1025                 break;\r
1026         case MARCH:\r
1027                 monthValue.Append(CommonUtil::GetString(L"IDS_COM_BODY_MAR"));\r
1028                 break;\r
1029         case APRIL:\r
1030                 monthValue.Append(CommonUtil::GetString(L"IDS_COM_BODY_APR"));\r
1031                 break;\r
1032         case MAY:\r
1033                 monthValue.Append(CommonUtil::GetString(L"IDS_COM_BODY_MAY"));\r
1034                 break;\r
1035         case JUNE:\r
1036                 monthValue.Append(CommonUtil::GetString(L"IDS_COM_BODY_JUN"));\r
1037                 break;\r
1038         case JULY:\r
1039                 monthValue.Append(CommonUtil::GetString(L"IDS_COM_BODY_JUL"));\r
1040                 break;\r
1041         case AUGUST:\r
1042                 monthValue.Append(CommonUtil::GetString(L"DS_COM_BODY_AUG"));\r
1043                 break;\r
1044         case SEPTEMBER:\r
1045                 monthValue.Append(CommonUtil::GetString(L"IDS_COM_BODY_SEP"));\r
1046                 break;\r
1047         case OCTOBER:\r
1048                 monthValue.Append(CommonUtil::GetString(L"IDS_COM_BODY_OCT"));\r
1049                 break;\r
1050         case NOVEMBER:\r
1051                 monthValue.Append(CommonUtil::GetString(L"IDS_COM_BODY_NOV"));\r
1052                 break;\r
1053         case DECEMBER:\r
1054                 monthValue.Append(CommonUtil::GetString(L"IDS_COM_BODY_DEC"));\r
1055                 break;\r
1056         default:\r
1057                 break;\r
1058         }\r
1059 \r
1060 \r
1061         return monthValue;\r
1062 }\r
1063 \r
1064 void\r
1065 HistoryListForm::OnKeypadActionPerformed(Control &source, KeypadAction keypadAction)\r
1066 {\r
1067         result r = E_FAILURE;\r
1068         if (__pSearchBar != null)\r
1069         {\r
1070                 __pSearchBar->HideKeypad();\r
1071         }\r
1072 \r
1073         if (keypadAction == KEYPAD_ACTION_SEARCH)\r
1074         {\r
1075                 __pSearchListView->SetEnabled(true);\r
1076                 __searchHistory = true;\r
1077                 __searchText =__pSearchBar->GetText();\r
1078 \r
1079                 r = __pGroupedListView->SetShowState(false);\r
1080                 if (IsFailed(r))\r
1081                 {\r
1082                         return;\r
1083                 }\r
1084                 r = __pSearchListView->SetShowState(true);\r
1085                 if (IsFailed(r))\r
1086                 {\r
1087                         return;\r
1088                 }\r
1089                 r= __pSearchListView->UpdateList();\r
1090                 if (__isNoHistoryPresent == true)\r
1091                 {\r
1092                         GetFooter()->SetItemEnabled(0, false);\r
1093                 }\r
1094                 else\r
1095                 {\r
1096                         GetFooter()->SetItemEnabled(0, true);\r
1097                 }\r
1098 \r
1099 \r
1100                 if (IsFailed(r))\r
1101                 {\r
1102                         return;\r
1103                 }\r
1104         }\r
1105         else\r
1106         {\r
1107                 __searchHistory = false;\r
1108         }\r
1109         Invalidate(true);\r
1110 }\r
1111 \r
1112 void\r
1113 HistoryListForm::OnOrientationChanged(const Control& source, OrientationStatus orientationStatus)\r
1114 {\r
1115         result r = E_FAILURE;\r
1116         if (__pGroupedListView != null)\r
1117         {\r
1118                 if(__pSearchBar != null &&__pSearchBar->GetShowState())\r
1119                         r = __pGroupedListView->SetBounds(Rectangle(0,__pSearchBar->GetY() + __pSearchBar->GetHeight()/*72 + 30*/,GetClientAreaBounds().width,GetClientAreaBounds().height - __pSearchBar->GetHeight() - __pSearchBar->GetY()));\r
1120                 else if(__pSearchBar != null)\r
1121                         r = __pGroupedListView->SetBounds(Rectangle(0,0,GetClientAreaBounds().width,GetClientAreaBounds().height - __pSearchBar->GetHeight() - __pSearchBar->GetY()));\r
1122                 if (IsFailed(r))\r
1123                 {\r
1124                         return;\r
1125                 }\r
1126                 __pGroupedListView->UpdateList();\r
1127 \r
1128                 if (__pSearchListView != null)\r
1129                 {\r
1130                         r = __pSearchListView->SetBounds(Rectangle(0,  0, GetClientAreaBounds().width, __pGroupedListView->GetHeight()));\r
1131                         if (IsFailed(r))\r
1132                         {\r
1133                                 return;\r
1134                         }\r
1135 \r
1136                         __pSearchListView->UpdateList();\r
1137 \r
1138 \r
1139                         if(__pSearchBar != null)\r
1140                                 __pSearchBar->SetContentAreaSize(Dimension(__pSearchListView->GetWidth(), __pSearchListView->GetHeight()));\r
1141                 }\r
1142 \r
1143         }\r
1144 \r
1145         if (__isNoHistoryPresent == true)\r
1146         {\r
1147                 GetFooter()->SetItemEnabled(0, false);\r
1148         }\r
1149         else\r
1150         {\r
1151                 GetFooter()->SetItemEnabled(0, true);\r
1152         }\r
1153 }\r
1154 \r
1155 void\r
1156 HistoryListForm::OnKeypadWillOpen(Control& source)\r
1157 {\r
1158         GetFooter()->SetShowState(false);\r
1159         __pSearchListView->SetBounds(__pSearchListView->GetX(), __pSearchListView->GetY(), __pSearchListView->GetWidth(), GetClientAreaBounds().height - __pSearchBar->GetHeight());\r
1160         __pSearchListView->SetEnabled(false);\r
1161         __pSearchBar->SetContentAreaSize(Dimension(__pSearchListView->GetWidth(), __pSearchListView->GetHeight()));\r
1162         Invalidate(true);\r
1163 \r
1164 }\r
1165 \r
1166 void\r
1167 HistoryListForm::OnKeypadOpened(Control& source)\r
1168 {\r
1169         __pSearchListView->SetBounds(__pSearchListView->GetX(), __pSearchListView->GetY(), __pSearchListView->GetWidth(), GetClientAreaBounds().height - __pSearchBar->GetHeight());\r
1170 }\r
1171 \r
1172 void\r
1173 HistoryListForm::OnKeypadClosed(Control& source)\r
1174 {\r
1175         if ( Clipboard::GetInstance()->IsPopupVisible() == false && __searchHistory == false)\r
1176         {\r
1177                 //              __pSearchBar->SetMode(SEARCH_BAR_MODE_NORMAL);\r
1178                 __pSearchListView->SetEnabled(true);\r
1179 \r
1180         }\r
1181         __pSearchListView->SetBounds(__pSearchListView->GetX(), __pSearchListView->GetY(), __pSearchListView->GetWidth(), __pSearchListView->GetHeight() - __pSearchBar->GetHeight());\r
1182         __pSearchListView->Invalidate(false);\r
1183         GetFooter()->SetShowState(true);\r
1184         Invalidate(true);\r
1185 }\r
1186 \r
1187 void\r
1188 HistoryListForm::CreateGroupItems()\r
1189 {\r
1190         result r = E_FAILURE;\r
1191         DateTime currentTime;\r
1192         DateTime dateTime;\r
1193         GroupItemClass* pGroupItemClass = null;\r
1194         String titleText;\r
1195 \r
1196         String weeksAgo2 = L"";\r
1197         weeksAgo2.Format(25,CommonUtil::GetString(L"IDS_BR_BODY_PD_WEEKS_AGO").GetPointer(),2);\r
1198 \r
1199         String weeksAgo3 = L"";\r
1200         weeksAgo3.Format(25,CommonUtil::GetString(L"IDS_BR_BODY_PD_WEEKS_AGO").GetPointer(),3);\r
1201 \r
1202         if (__pGroupData != null)\r
1203         {\r
1204                 __pGroupData->RemoveAll(true);\r
1205                 delete __pGroupData;\r
1206                 __pGroupData = null;\r
1207         }\r
1208         __pGroupData = new(std::nothrow) ArrayList();\r
1209         if (__pGroupData == null)\r
1210         {\r
1211                 return;\r
1212         }\r
1213         r = __pGroupData->Construct();\r
1214         if (IsFailed(r))\r
1215         {\r
1216                 delete __pGroupData;\r
1217                 __pGroupData = null;\r
1218                 return;\r
1219         }\r
1220         if (__searchHistory == true)\r
1221         {\r
1222                 pGroupItemClass = new(std::nothrow) GroupItemClass();\r
1223                 if (pGroupItemClass == null)\r
1224                 {\r
1225                         return;\r
1226                 }\r
1227                 titleText = CommonUtil::GetString(L"IDS_BR_BODY_SEARCHED_ITEMS");\r
1228                 pGroupItemClass->SetTitleText(titleText);\r
1229                 r = __pGroupData->Add(*pGroupItemClass);\r
1230                 if (IsFailed(r))\r
1231                 {\r
1232                         return;\r
1233                 }\r
1234         }\r
1235         else\r
1236         {\r
1237                 Calendar* pGregorianCalendar = null;\r
1238                 int dayOfWeek = 0;\r
1239                 int day = 0;\r
1240                 HistoryPresentationModel::GetCurrentDateTime(currentTime);\r
1241                 pGroupItemClass = new(std::nothrow) GroupItemClass();\r
1242                 if (pGroupItemClass == null)\r
1243                 {\r
1244                         return;\r
1245                 }\r
1246                 titleText = CommonUtil::GetString(L"IDS_COM_BODY_TODAY");\r
1247                 pGroupItemClass->SetTitleText(titleText);\r
1248                 pGroupItemClass->SetEndTime(currentTime);\r
1249                 dateTime.SetValue(currentTime.GetYear(),currentTime.GetMonth(), currentTime.GetDay());\r
1250                 pGroupItemClass->SetStartTime(dateTime);\r
1251                 __pGroupData->Add(*pGroupItemClass);\r
1252 \r
1253 \r
1254                 pGregorianCalendar = Calendar::CreateInstanceN(CALENDAR_GREGORIAN);\r
1255                 if ( pGregorianCalendar != NULL )\r
1256                 {\r
1257                         pGregorianCalendar->SetTimeField(TIME_FIELD_YEAR, currentTime.GetYear());\r
1258                         pGregorianCalendar->SetTimeField(TIME_FIELD_MONTH, currentTime.GetMonth());\r
1259                         pGregorianCalendar->SetTimeField(TIME_FIELD_DAY_OF_MONTH, currentTime.GetDay());\r
1260                         dayOfWeek = pGregorianCalendar->GetTimeField(TIME_FIELD_DAY_OF_WEEK);\r
1261                         delete pGregorianCalendar;\r
1262                 }\r
1263                 switch(dayOfWeek)\r
1264                 {\r
1265                 case SUNDAY:\r
1266                         pGroupItemClass = new(std::nothrow) GroupItemClass();\r
1267                         if (pGroupItemClass == null)\r
1268                         {\r
1269                                 return;\r
1270                         }\r
1271                         titleText = CommonUtil::GetString(L"IDS_EMAIL_BODY_LAST_WEEK");\r
1272                         pGroupItemClass->SetTitleText(titleText);\r
1273                         dateTime.SetValue(currentTime.GetYear(),currentTime.GetMonth(), currentTime.GetDay());\r
1274                         pGroupItemClass->SetEndTime(dateTime);\r
1275                         dateTime.SetValue(currentTime.GetYear(),currentTime.GetMonth(), 1);\r
1276                         dateTime.AddDays(currentTime.GetDay() - 6 - 1);\r
1277                         pGroupItemClass->SetStartTime(dateTime);\r
1278                         __pGroupData->Add(*pGroupItemClass);\r
1279                         break;\r
1280                 case MONDAY:\r
1281                         pGroupItemClass = new(std::nothrow) GroupItemClass();\r
1282                         if (pGroupItemClass == null)\r
1283                         {\r
1284                                 return;\r
1285                         }\r
1286                         titleText = CommonUtil::GetString(L"IDS_EMAIL_BODY_LAST_WEEK");\r
1287                         pGroupItemClass->SetTitleText(titleText);\r
1288                         dateTime.SetValue(currentTime.GetYear(),currentTime.GetMonth(), currentTime.GetDay());\r
1289                         pGroupItemClass->SetEndTime(dateTime);\r
1290                         dateTime.SetValue(currentTime.GetYear(),currentTime.GetMonth(), 1);\r
1291                         dateTime.AddDays(currentTime.GetDay() - 7 - 1);\r
1292                         pGroupItemClass->SetStartTime(dateTime);\r
1293                         __pGroupData->Add(*pGroupItemClass);\r
1294                         break;\r
1295                 case TUESDAY:\r
1296                         pGroupItemClass = new(std::nothrow) GroupItemClass();\r
1297                         if (pGroupItemClass == null)\r
1298                         {\r
1299                                 return;\r
1300                         }\r
1301                         titleText = CommonUtil::GetString(L"IDS_COM_BODY_YESTERDAY");\r
1302                         pGroupItemClass->SetTitleText(titleText);\r
1303                         dateTime.SetValue(currentTime.GetYear(),currentTime.GetMonth(), currentTime.GetDay());\r
1304                         pGroupItemClass->SetEndTime(dateTime);\r
1305                         dateTime.SetValue(currentTime.GetYear(),currentTime.GetMonth(), 1);\r
1306                         dateTime.AddDays(currentTime.GetDay() - 1 - 1);\r
1307                         pGroupItemClass->SetStartTime(dateTime);\r
1308                         __pGroupData->Add(*pGroupItemClass);\r
1309 \r
1310                         pGroupItemClass = new(std::nothrow) GroupItemClass();\r
1311                         if (pGroupItemClass == null)\r
1312                         {\r
1313                                 return;\r
1314                         }\r
1315                         titleText = CommonUtil::GetString(L"IDS_EMAIL_BODY_LAST_WEEK");\r
1316                         pGroupItemClass->SetTitleText(titleText);\r
1317                         dateTime.SetValue(currentTime.GetYear(),currentTime.GetMonth(), 1);\r
1318                         dateTime.AddDays(currentTime.GetDay() - 1 - 1);\r
1319                         pGroupItemClass->SetEndTime(dateTime);\r
1320                         dateTime.SetValue(currentTime.GetYear(),currentTime.GetMonth(), 1);\r
1321                         dateTime.AddDays(currentTime.GetDay() - 8 - 1);\r
1322                         pGroupItemClass->SetStartTime(dateTime);\r
1323                         __pGroupData->Add(*pGroupItemClass);\r
1324                         break;\r
1325                 case WEDNESDAY:\r
1326                         pGroupItemClass = new(std::nothrow) GroupItemClass();\r
1327                         if (pGroupItemClass == null)\r
1328                         {\r
1329                                 return;\r
1330                         }\r
1331                         titleText = CommonUtil::GetString(L"IDS_COM_BODY_YESTERDAY");\r
1332                         pGroupItemClass->SetTitleText(titleText);\r
1333                         dateTime.SetValue(currentTime.GetYear(),currentTime.GetMonth(), currentTime.GetDay());\r
1334                         pGroupItemClass->SetEndTime(dateTime);\r
1335                         dateTime.SetValue(currentTime.GetYear(),currentTime.GetMonth(), 1);\r
1336                         dateTime.AddDays(currentTime.GetDay() - 1 - 1);\r
1337                         pGroupItemClass->SetStartTime(dateTime);\r
1338                         __pGroupData->Add(*pGroupItemClass);\r
1339 \r
1340                         pGroupItemClass = new(std::nothrow) GroupItemClass();\r
1341                         if (pGroupItemClass == null)\r
1342                         {\r
1343                                 return;\r
1344                         }\r
1345                         titleText = CommonUtil::GetString(L"IDS_COM_BODY_MON");\r
1346                         pGroupItemClass->SetTitleText(titleText);\r
1347                         dateTime.SetValue(currentTime.GetYear(),currentTime.GetMonth(), 1);\r
1348                         dateTime.AddDays(currentTime.GetDay() - 1 - 1);\r
1349                         pGroupItemClass->SetEndTime(dateTime);\r
1350                         dateTime.SetValue(currentTime.GetYear(),currentTime.GetMonth(), 1);\r
1351                         dateTime.AddDays(currentTime.GetDay() - 2 - 1);\r
1352                         pGroupItemClass->SetStartTime(dateTime);\r
1353                         __pGroupData->Add(*pGroupItemClass);\r
1354 \r
1355                         pGroupItemClass = new(std::nothrow) GroupItemClass();\r
1356                         if (pGroupItemClass == null)\r
1357                         {\r
1358                                 return;\r
1359                         }\r
1360                         titleText = CommonUtil::GetString(L"IDS_EMAIL_BODY_LAST_WEEK");\r
1361                         pGroupItemClass->SetTitleText(titleText);\r
1362                         dateTime.SetValue(currentTime.GetYear(),currentTime.GetMonth(), 1);\r
1363                         dateTime.AddDays(currentTime.GetDay() - 2 - 1);\r
1364                         pGroupItemClass->SetEndTime(dateTime);\r
1365                         dateTime.SetValue(currentTime.GetYear(),currentTime.GetMonth(), 1);\r
1366                         dateTime.AddDays(currentTime.GetDay() - 9 - 1);\r
1367                         pGroupItemClass->SetStartTime(dateTime);\r
1368                         __pGroupData->Add(*pGroupItemClass);\r
1369                         break;\r
1370                 case THURSDAY:\r
1371                         pGroupItemClass = new(std::nothrow) GroupItemClass();\r
1372                         if (pGroupItemClass == null)\r
1373                         {\r
1374                                 return;\r
1375                         }\r
1376                         titleText = CommonUtil::GetString(L"IDS_COM_BODY_YESTERDAY");\r
1377                         pGroupItemClass->SetTitleText(titleText);\r
1378                         dateTime.SetValue(currentTime.GetYear(),currentTime.GetMonth(), currentTime.GetDay());\r
1379                         pGroupItemClass->SetEndTime(dateTime);\r
1380                         dateTime.SetValue(currentTime.GetYear(),currentTime.GetMonth(), 1);\r
1381                         dateTime.AddDays(currentTime.GetDay() - 1 - 1);\r
1382                         pGroupItemClass->SetStartTime(dateTime);\r
1383                         __pGroupData->Add(*pGroupItemClass);\r
1384 \r
1385                         pGroupItemClass = new(std::nothrow) GroupItemClass();\r
1386                         if (pGroupItemClass == null)\r
1387                         {\r
1388                                 return;\r
1389                         }\r
1390                         titleText = CommonUtil::GetString(L"IDS_COM_BODY_TUE");\r
1391                         pGroupItemClass->SetTitleText(titleText);\r
1392                         dateTime.SetValue(currentTime.GetYear(),currentTime.GetMonth(), 1);\r
1393                         dateTime.AddDays(currentTime.GetDay() - 1 - 1);\r
1394                         pGroupItemClass->SetEndTime(dateTime);\r
1395                         dateTime.SetValue(currentTime.GetYear(),currentTime.GetMonth(), 1);\r
1396                         dateTime.AddDays(currentTime.GetDay() - 2 - 1);\r
1397                         pGroupItemClass->SetStartTime(dateTime);\r
1398                         __pGroupData->Add(*pGroupItemClass);\r
1399 \r
1400                         pGroupItemClass = new(std::nothrow) GroupItemClass();\r
1401                         if (pGroupItemClass == null)\r
1402                         {\r
1403                                 return;\r
1404                         }\r
1405                         titleText = CommonUtil::GetString(L"IDS_COM_BODY_MON");\r
1406                         pGroupItemClass->SetTitleText(titleText);\r
1407                         dateTime.SetValue(currentTime.GetYear(),currentTime.GetMonth(), 1);\r
1408                         dateTime.AddDays(currentTime.GetDay() - 2 - 1);\r
1409                         pGroupItemClass->SetEndTime(dateTime);\r
1410                         dateTime.SetValue(currentTime.GetYear(),currentTime.GetMonth(), 1);\r
1411                         dateTime.AddDays(currentTime.GetDay() - 3 - 1);\r
1412                         pGroupItemClass->SetStartTime(dateTime);\r
1413                         __pGroupData->Add(*pGroupItemClass);\r
1414 \r
1415                         pGroupItemClass = new(std::nothrow) GroupItemClass();\r
1416                         if (pGroupItemClass == null)\r
1417                         {\r
1418                                 return;\r
1419                         }\r
1420                         titleText = CommonUtil::GetString(L"IDS_EMAIL_BODY_LAST_WEEK");\r
1421                         pGroupItemClass->SetTitleText(titleText);\r
1422                         dateTime.SetValue(currentTime.GetYear(),currentTime.GetMonth(), 1);\r
1423                         dateTime.AddDays(currentTime.GetDay() - 3 - 1);\r
1424                         pGroupItemClass->SetEndTime(dateTime);\r
1425                         dateTime.SetValue(currentTime.GetYear(),currentTime.GetMonth(), 1);\r
1426                         dateTime.AddDays(currentTime.GetDay() - 10 - 1);\r
1427                         pGroupItemClass->SetStartTime(dateTime);\r
1428                         __pGroupData->Add(*pGroupItemClass);\r
1429                         break;\r
1430                 case FRIDAY:\r
1431                         pGroupItemClass = new(std::nothrow) GroupItemClass();\r
1432                         if (pGroupItemClass == null)\r
1433                         {\r
1434                                 return;\r
1435                         }\r
1436                         titleText = CommonUtil::GetString(L"IDS_COM_BODY_YESTERDAY");\r
1437                         pGroupItemClass->SetTitleText(titleText);\r
1438                         dateTime.SetValue(currentTime.GetYear(),currentTime.GetMonth(), currentTime.GetDay());\r
1439                         pGroupItemClass->SetEndTime(dateTime);\r
1440                         dateTime.SetValue(currentTime.GetYear(),currentTime.GetMonth(), 1);\r
1441                         dateTime.AddDays(currentTime.GetDay() - 1 - 1);\r
1442                         pGroupItemClass->SetStartTime(dateTime);\r
1443                         __pGroupData->Add(*pGroupItemClass);\r
1444 \r
1445                         pGroupItemClass = new(std::nothrow) GroupItemClass();\r
1446                         if (pGroupItemClass == null)\r
1447                         {\r
1448                                 return;\r
1449                         }\r
1450                         titleText = CommonUtil::GetString(L"IDS_COM_BODY_WED");\r
1451                         pGroupItemClass->SetTitleText(titleText);\r
1452                         dateTime.SetValue(currentTime.GetYear(),currentTime.GetMonth(), 1);\r
1453                         dateTime.AddDays(currentTime.GetDay() - 1 - 1);\r
1454                         pGroupItemClass->SetEndTime(dateTime);\r
1455                         dateTime.SetValue(currentTime.GetYear(),currentTime.GetMonth(), 1);\r
1456                         dateTime.AddDays(currentTime.GetDay() - 2 - 1);\r
1457                         pGroupItemClass->SetStartTime(dateTime);\r
1458                         __pGroupData->Add(*pGroupItemClass);\r
1459 \r
1460                         pGroupItemClass = new(std::nothrow) GroupItemClass();\r
1461                         if (pGroupItemClass == null)\r
1462                         {\r
1463                                 return;\r
1464                         }\r
1465                         titleText = CommonUtil::GetString(L"IDS_COM_BODY_TUE");\r
1466                         pGroupItemClass->SetTitleText(titleText);\r
1467                         dateTime.SetValue(currentTime.GetYear(),currentTime.GetMonth(), 1);\r
1468                         dateTime.AddDays(currentTime.GetDay() - 2 - 1);\r
1469                         pGroupItemClass->SetEndTime(dateTime);\r
1470                         dateTime.SetValue(currentTime.GetYear(),currentTime.GetMonth(), 1);\r
1471                         dateTime.AddDays(currentTime.GetDay() - 3 - 1);\r
1472                         pGroupItemClass->SetStartTime(dateTime);\r
1473                         __pGroupData->Add(*pGroupItemClass);\r
1474 \r
1475                         pGroupItemClass = new(std::nothrow) GroupItemClass();\r
1476                         if (pGroupItemClass == null)\r
1477                         {\r
1478                                 return;\r
1479                         }\r
1480                         titleText = CommonUtil::GetString(L"IDS_COM_BODY_MON");\r
1481                         pGroupItemClass->SetTitleText(titleText);\r
1482                         dateTime.SetValue(currentTime.GetYear(),currentTime.GetMonth(), 1);\r
1483                         dateTime.AddDays(currentTime.GetDay() - 3 - 1);\r
1484                         pGroupItemClass->SetEndTime(dateTime);\r
1485                         dateTime.SetValue(currentTime.GetYear(),currentTime.GetMonth(), 1);\r
1486                         dateTime.AddDays(currentTime.GetDay() - 4 - 1);\r
1487                         pGroupItemClass->SetStartTime(dateTime);\r
1488                         __pGroupData->Add(*pGroupItemClass);\r
1489 \r
1490                         pGroupItemClass = new(std::nothrow) GroupItemClass();\r
1491                         if (pGroupItemClass == null)\r
1492                         {\r
1493                                 return;\r
1494                         }\r
1495                         titleText = CommonUtil::GetString(L"IDS_EMAIL_BODY_LAST_WEEK");\r
1496                         pGroupItemClass->SetTitleText(titleText);\r
1497                         dateTime.SetValue(currentTime.GetYear(),currentTime.GetMonth(), 1);\r
1498                         dateTime.AddDays(currentTime.GetDay() - 4 - 1);\r
1499                         pGroupItemClass->SetEndTime(dateTime);\r
1500                         dateTime.SetValue(currentTime.GetYear(),currentTime.GetMonth(), 1);\r
1501                         dateTime.AddDays(currentTime.GetDay() - 11 - 1);\r
1502                         pGroupItemClass->SetStartTime(dateTime);\r
1503                         __pGroupData->Add(*pGroupItemClass);\r
1504                         break;\r
1505                 case SATURDAY:\r
1506                         pGroupItemClass = new(std::nothrow) GroupItemClass();\r
1507                         if (pGroupItemClass == null)\r
1508                         {\r
1509                                 return;\r
1510                         }\r
1511                         titleText = CommonUtil::GetString(L"IDS_COM_BODY_YESTERDAY");\r
1512                         pGroupItemClass->SetTitleText(titleText);\r
1513                         dateTime.SetValue(currentTime.GetYear(),currentTime.GetMonth(), currentTime.GetDay());\r
1514                         pGroupItemClass->SetEndTime(dateTime);\r
1515                         dateTime.SetValue(currentTime.GetYear(),currentTime.GetMonth(), 1);\r
1516                         dateTime.AddDays(currentTime.GetDay() - 1 - 1);\r
1517                         pGroupItemClass->SetStartTime(dateTime);\r
1518                         __pGroupData->Add(*pGroupItemClass);\r
1519 \r
1520                         pGroupItemClass = new(std::nothrow) GroupItemClass();\r
1521                         if (pGroupItemClass == null)\r
1522                         {\r
1523                                 return;\r
1524                         }\r
1525                         titleText = CommonUtil::GetString(L"IDS_COM_BODY_THU");\r
1526                         pGroupItemClass->SetTitleText(titleText);\r
1527                         dateTime.SetValue(currentTime.GetYear(),currentTime.GetMonth(), 1);\r
1528                         dateTime.AddDays(currentTime.GetDay() - 1 - 1);\r
1529                         pGroupItemClass->SetEndTime(dateTime);\r
1530                         dateTime.SetValue(currentTime.GetYear(),currentTime.GetMonth(), 1);\r
1531                         dateTime.AddDays(currentTime.GetDay() - 2 - 1);\r
1532                         pGroupItemClass->SetStartTime(dateTime);\r
1533                         __pGroupData->Add(*pGroupItemClass);\r
1534 \r
1535                         pGroupItemClass = new(std::nothrow) GroupItemClass();\r
1536                         if (pGroupItemClass == null)\r
1537                         {\r
1538                                 return;\r
1539                         }\r
1540                         titleText = CommonUtil::GetString(L"IDS_COM_BODY_WED");\r
1541                         pGroupItemClass->SetTitleText(titleText);\r
1542                         dateTime.SetValue(currentTime.GetYear(),currentTime.GetMonth(), 1);\r
1543                         dateTime.AddDays(currentTime.GetDay() - 2 - 1);\r
1544                         pGroupItemClass->SetEndTime(dateTime);\r
1545                         dateTime.SetValue(currentTime.GetYear(),currentTime.GetMonth(), 1);\r
1546                         dateTime.AddDays(currentTime.GetDay() - 3 - 1);\r
1547                         pGroupItemClass->SetStartTime(dateTime);\r
1548                         __pGroupData->Add(*pGroupItemClass);\r
1549 \r
1550                         pGroupItemClass = new(std::nothrow) GroupItemClass();\r
1551                         if (pGroupItemClass == null)\r
1552                         {\r
1553                                 return;\r
1554                         }\r
1555                         titleText = CommonUtil::GetString(L"IDS_COM_BODY_TUE");\r
1556                         pGroupItemClass->SetTitleText(titleText);\r
1557                         dateTime.SetValue(currentTime.GetYear(),currentTime.GetMonth(), 1);\r
1558                         dateTime.AddDays(currentTime.GetDay() - 3 - 1);\r
1559                         pGroupItemClass->SetEndTime(dateTime);\r
1560                         dateTime.SetValue(currentTime.GetYear(),currentTime.GetMonth(), 1);\r
1561                         dateTime.AddDays(currentTime.GetDay() - 4 - 1);\r
1562                         pGroupItemClass->SetStartTime(dateTime);\r
1563                         __pGroupData->Add(*pGroupItemClass);\r
1564 \r
1565                         pGroupItemClass = new(std::nothrow) GroupItemClass();\r
1566                         if (pGroupItemClass == null)\r
1567                         {\r
1568                                 return;\r
1569                         }\r
1570                         titleText = CommonUtil::GetString(L"IDS_COM_BODY_MON");\r
1571                         pGroupItemClass->SetTitleText(titleText);\r
1572                         dateTime.SetValue(currentTime.GetYear(),currentTime.GetMonth(), 1);\r
1573                         dateTime.AddDays(currentTime.GetDay() - 4 - 1);\r
1574                         pGroupItemClass->SetEndTime(dateTime);\r
1575                         dateTime.SetValue(currentTime.GetYear(),currentTime.GetMonth(), 1);\r
1576                         dateTime.AddDays(currentTime.GetDay() - 5 - 1);\r
1577                         pGroupItemClass->SetStartTime(dateTime);\r
1578                         __pGroupData->Add(*pGroupItemClass);\r
1579 \r
1580                         pGroupItemClass = new(std::nothrow) GroupItemClass();\r
1581                         if (pGroupItemClass == null)\r
1582                         {\r
1583                                 return;\r
1584                         }\r
1585                         titleText = CommonUtil::GetString(L"IDS_EMAIL_BODY_LAST_WEEK");\r
1586                         pGroupItemClass->SetTitleText(titleText);\r
1587                         dateTime.SetValue(currentTime.GetYear(),currentTime.GetMonth(), 1);\r
1588                         dateTime.AddDays(currentTime.GetDay() - 5 - 1);\r
1589                         pGroupItemClass->SetEndTime(dateTime);\r
1590                         dateTime.SetValue(currentTime.GetYear(),currentTime.GetMonth(), 1);\r
1591                         dateTime.AddDays(currentTime.GetDay() - 12 - 1);\r
1592                         pGroupItemClass->SetStartTime(dateTime);\r
1593                         __pGroupData->Add(*pGroupItemClass);\r
1594                         break;\r
1595 \r
1596                 default:\r
1597                         break;\r
1598                 }\r
1599                 day = currentTime.GetDay();\r
1600                 switch(day/7)\r
1601                 {\r
1602                 case 2:\r
1603                         pGroupItemClass = new(std::nothrow) GroupItemClass();\r
1604                         if (pGroupItemClass == null)\r
1605                         {\r
1606                                 return;\r
1607                         }\r
1608 \r
1609                         pGroupItemClass->SetTitleText(weeksAgo2);\r
1610                         dateTime.SetValue(currentTime.GetYear(),currentTime.GetMonth(), 1);\r
1611                         dateTime.AddDays(currentTime.GetDay() - 7 - dayOfWeek + 2 - 1);\r
1612                         pGroupItemClass->SetEndTime(dateTime);\r
1613                         dateTime.SetValue(currentTime.GetYear(),currentTime.GetMonth(), 1);\r
1614                         dateTime.AddDays(currentTime.GetDay() - 14 - dayOfWeek + 2 - 1);\r
1615                         pGroupItemClass->SetStartTime(dateTime);\r
1616                         __pGroupData->Add(*pGroupItemClass);\r
1617 \r
1618                         if (pGroupItemClass->GetStartTime().GetDay() > 1 && pGroupItemClass->GetStartTime().GetDay() < 8)\r
1619                         {\r
1620                                 pGroupItemClass = new(std::nothrow) GroupItemClass();\r
1621                                 if (pGroupItemClass == null)\r
1622                                 {\r
1623                                         return;\r
1624                                 }\r
1625                                 String weeksAgo3 = L"";\r
1626                                 weeksAgo3.Format(25,CommonUtil::GetString(L"IDS_BR_BODY_PD_WEEKS_AGO").GetPointer(),3);\r
1627                                 pGroupItemClass->SetTitleText(weeksAgo3);\r
1628                                 dateTime.SetValue(currentTime.GetYear(),currentTime.GetMonth(), 1);\r
1629                                 dateTime.AddDays(currentTime.GetDay() - 14 - dayOfWeek + 2 - 1);\r
1630                                 pGroupItemClass->SetEndTime(dateTime);\r
1631                                 dateTime.SetValue(currentTime.GetYear(),currentTime.GetMonth(), 1);\r
1632                                 dateTime.AddDays(currentTime.GetDay() - 21 - dayOfWeek + 2 - 1);\r
1633                                 pGroupItemClass->SetStartTime(dateTime);\r
1634                                 __pGroupData->Add(*pGroupItemClass);\r
1635                         }\r
1636                         break;\r
1637                 case 3:\r
1638                         pGroupItemClass = new(std::nothrow) GroupItemClass();\r
1639                         if (pGroupItemClass == null)\r
1640                         {\r
1641                                 return;\r
1642                         }\r
1643                         pGroupItemClass->SetTitleText(weeksAgo2);\r
1644                         dateTime.SetValue(currentTime.GetYear(),currentTime.GetMonth(), 1);\r
1645                         dateTime.AddDays(currentTime.GetDay() - 7 - dayOfWeek + 2 - 1);\r
1646                         pGroupItemClass->SetEndTime(dateTime);\r
1647                         dateTime.SetValue(currentTime.GetYear(),currentTime.GetMonth(), 1);\r
1648                         dateTime.AddDays(currentTime.GetDay() - 14 - dayOfWeek + 2 - 1);\r
1649                         pGroupItemClass->SetStartTime(dateTime);\r
1650                         __pGroupData->Add(*pGroupItemClass);\r
1651 \r
1652                         pGroupItemClass = new(std::nothrow) GroupItemClass();\r
1653                         if (pGroupItemClass == null)\r
1654                         {\r
1655                                 return;\r
1656                         }\r
1657 \r
1658                         pGroupItemClass->SetTitleText(weeksAgo3);\r
1659                         dateTime.SetValue(currentTime.GetYear(),currentTime.GetMonth(), 1);\r
1660                         dateTime.AddDays(currentTime.GetDay() - 14 - dayOfWeek + 2 - 1);\r
1661                         pGroupItemClass->SetEndTime(dateTime);\r
1662                         dateTime.SetValue(currentTime.GetYear(),currentTime.GetMonth(), 1);\r
1663                         dateTime.AddDays(currentTime.GetDay() - 21 - dayOfWeek + 2 - 1);\r
1664                         pGroupItemClass->SetStartTime(dateTime);\r
1665                         __pGroupData->Add(*pGroupItemClass);\r
1666 \r
1667                         if (pGroupItemClass->GetStartTime().GetDay() > 1 && pGroupItemClass->GetStartTime().GetDay() < 8)\r
1668                         {\r
1669                                 pGroupItemClass = new(std::nothrow) GroupItemClass();\r
1670                                 if (pGroupItemClass == null)\r
1671                                 {\r
1672                                         return;\r
1673                                 }\r
1674                                 titleText = CommonUtil::GetString(L"IDS_BR_EARLIER_THIS_MONTH");\r
1675                                 pGroupItemClass->SetTitleText(titleText);\r
1676                                 dateTime.SetValue(currentTime.GetYear(),currentTime.GetMonth(), 1);\r
1677                                 dateTime.AddDays(currentTime.GetDay() - 21 - dayOfWeek + 2 - 1);\r
1678                                 pGroupItemClass->SetEndTime(dateTime);\r
1679                                 dateTime.SetValue(currentTime.GetYear(),currentTime.GetMonth(), 1);\r
1680                                 //dateTime.AddDays(currentTime.GetDay() - 28 - dayOfWeek + 2 - 1);\r
1681                                 pGroupItemClass->SetStartTime(dateTime);\r
1682                                 __pGroupData->Add(*pGroupItemClass);\r
1683                         }\r
1684                         break;\r
1685                 case 4:\r
1686                         pGroupItemClass = new(std::nothrow) GroupItemClass();\r
1687                         if (pGroupItemClass == null)\r
1688                         {\r
1689                                 return;\r
1690                         }\r
1691                         pGroupItemClass->SetTitleText(weeksAgo2);\r
1692                         dateTime.SetValue(currentTime.GetYear(),currentTime.GetMonth(), 1);\r
1693                         dateTime.AddDays(currentTime.GetDay() - 7 - dayOfWeek + 2 - 1);\r
1694                         pGroupItemClass->SetEndTime(dateTime);\r
1695                         dateTime.SetValue(currentTime.GetYear(),currentTime.GetMonth(), 1);\r
1696                         dateTime.AddDays(currentTime.GetDay() - 14 - dayOfWeek + 2 - 1);\r
1697                         pGroupItemClass->SetStartTime(dateTime);\r
1698                         __pGroupData->Add(*pGroupItemClass);\r
1699 \r
1700                         pGroupItemClass = new(std::nothrow) GroupItemClass();\r
1701                         if (pGroupItemClass == null)\r
1702                         {\r
1703                                 return;\r
1704                         }\r
1705                         pGroupItemClass->SetTitleText(weeksAgo3);\r
1706                         dateTime.SetValue(currentTime.GetYear(),currentTime.GetMonth(), 1);\r
1707                         dateTime.AddDays(currentTime.GetDay() - 14 - dayOfWeek + 2 - 1);\r
1708                         pGroupItemClass->SetEndTime(dateTime);\r
1709                         dateTime.SetValue(currentTime.GetYear(),currentTime.GetMonth(), 1);\r
1710                         dateTime.AddDays(currentTime.GetDay() - 21 - dayOfWeek + 2 - 1);\r
1711                         pGroupItemClass->SetStartTime(dateTime);\r
1712                         __pGroupData->Add(*pGroupItemClass);\r
1713 \r
1714                         if (pGroupItemClass->GetStartTime().GetDay() > 1 && pGroupItemClass->GetStartTime().GetDay() < 8)\r
1715                         {\r
1716                                 pGroupItemClass = new(std::nothrow) GroupItemClass();\r
1717                                 if (pGroupItemClass == null)\r
1718                                 {\r
1719                                         return;\r
1720                                 }\r
1721                                 titleText = CommonUtil::GetString(L"IDS_BR_EARLIER_THIS_MONTH");\r
1722                                 pGroupItemClass->SetTitleText(titleText);\r
1723                                 dateTime.SetValue(currentTime.GetYear(),currentTime.GetMonth(), 1);\r
1724                                 dateTime.AddDays(currentTime.GetDay() - 21 - dayOfWeek + 2 - 1);\r
1725                                 pGroupItemClass->SetEndTime(dateTime);\r
1726                                 dateTime.SetValue(currentTime.GetYear(),currentTime.GetMonth(), 1);\r
1727                                 //dateTime.AddDays(currentTime.GetDay() - 28 - dayOfWeek + 2 - 1);\r
1728                                 pGroupItemClass->SetStartTime(dateTime);\r
1729                                 __pGroupData->Add(*pGroupItemClass);\r
1730                         }\r
1731                         break;\r
1732                 default:\r
1733                         break;\r
1734                 }\r
1735                 pGroupItemClass = new(std::nothrow) GroupItemClass();\r
1736                 if (pGroupItemClass == null)\r
1737                 {\r
1738                         return;\r
1739                 }\r
1740                 titleText = CommonUtil::GetString(L"IDS_EMAIL_BODY_LAST_MONTH");\r
1741                 pGroupItemClass->SetTitleText(titleText);\r
1742                 dateTime.SetValue(currentTime.GetYear(),currentTime.GetMonth(), 1);\r
1743                 dateTime.AddDays(-1);\r
1744                 pGroupItemClass->SetEndTime(dateTime);\r
1745                 dateTime.SetValue(currentTime.GetYear(), 1, 1);\r
1746                 dateTime.AddMonths(currentTime.GetMonth() - 1 - 1);\r
1747                 pGroupItemClass->SetStartTime(dateTime);\r
1748                 __pGroupData->Add(*pGroupItemClass);\r
1749 \r
1750                 pGroupItemClass = new(std::nothrow) GroupItemClass();\r
1751                 if (pGroupItemClass == null)\r
1752                 {\r
1753                         return;\r
1754                 }\r
1755                 titleText = CommonUtil::GetString(L"IDS_BR_BODY_OLDER");\r
1756                 pGroupItemClass->SetTitleText(titleText);\r
1757                 dateTime.SetValue(currentTime.GetYear(),1, 1);\r
1758                 dateTime.AddMonths(currentTime.GetMonth() - 2);\r
1759                 dateTime.AddDays(-1);\r
1760                 pGroupItemClass->SetEndTime(dateTime);\r
1761                 DateTime dateTime2;\r
1762                 dateTime2.SetValue(0, 0, 0);\r
1763                 pGroupItemClass->SetStartTime(dateTime2);\r
1764                 __pGroupData->Add(*pGroupItemClass);\r
1765         }\r
1766 }\r
1767 \r
1768 GroupItemClass::GroupItemClass()\r
1769 {\r
1770         __pData = null;\r
1771 }\r
1772 \r
1773 GroupItemClass&\r
1774 GroupItemClass::operator =(const GroupItemClass& rhs)\r
1775 {\r
1776         if (this != &rhs)\r
1777         {\r
1778                 __pData = rhs.__pData;\r
1779         }\r
1780         return *this;\r
1781 }\r
1782 \r
1783 GroupItemClass::GroupItemClass(const GroupItemClass& groupItem)\r
1784 {\r
1785         __pData = groupItem.__pData;\r
1786 }\r
1787 \r
1788 GroupItemClass::~GroupItemClass()\r
1789 {\r
1790         if (__pData)\r
1791         {\r
1792                 __pData->RemoveAll(true);\r
1793                 delete __pData;\r
1794         }\r
1795 }\r
1796 \r
1797 void\r
1798 GroupItemClass::SetStartTime(DateTime& startTime)\r
1799 {\r
1800         __startTime = startTime;\r
1801 }\r
1802 \r
1803 void\r
1804 GroupItemClass::SetEndTime(DateTime& endTime)\r
1805 {\r
1806         __endTime = endTime;\r
1807 }\r
1808 \r
1809 void\r
1810 GroupItemClass::SetTitleText(String& titleText)\r
1811 {\r
1812         __titleText = titleText;\r
1813 }\r
1814 \r
1815 void\r
1816 GroupItemClass::SetHistoryData(ArrayList* pData)\r
1817 {\r
1818         __pData = pData;\r
1819 }\r
1820 \r
1821 DateTime\r
1822 GroupItemClass::GetStartTime(void)\r
1823 {\r
1824         return __startTime;\r
1825 }\r
1826 \r
1827 DateTime\r
1828 GroupItemClass::GetEndTime(void)\r
1829 {\r
1830         return __endTime;\r
1831 }\r
1832 \r
1833 String\r
1834 GroupItemClass::GetTitleText(void)\r
1835 {\r
1836         return __titleText;\r
1837 }\r
1838 \r
1839 ArrayList*\r
1840 GroupItemClass::GetHistoryData(void)\r
1841 {\r
1842         return __pData;\r
1843 }\r