2 // Open Service Platform (or Tizen C++ SDK)
\r
3 // Copyright (c) 2012 Samsung Electronics Co., Ltd.
\r
5 // Licensed under the Flora License, Version 1.0 (the License);
\r
6 // you may not use this file except in compliance with the License.
\r
7 // You may obtain a copy of the License at
\r
9 // http://www.tizenopensource.org/license
\r
11 // Unless required by applicable law or agreed to in writing, software
\r
12 // distributed under the License is distributed on an AS IS BASIS,
\r
13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
\r
14 // See the License for the specific language governing permissions and
\r
15 // limitations under the License.
\r
19 #include "CalendarViewerForm.h"
\r
21 using namespace Osp::Base;
\r
22 using namespace Osp::Graphics;
\r
23 using namespace Osp::System;
\r
24 using namespace Osp::App;
\r
25 using namespace Osp::Ui;
\r
26 using namespace Osp::Ui::Controls;
\r
27 using namespace Osp::Locales;
\r
30 CalendarViewerForm::CalendarViewerForm() :
\r
31 __pPanelWeekDay(null),
\r
34 __pBtnPrev_Month(null),
\r
35 __pBtnNext_Month(null),
\r
36 __pBtnPrev_Year(null),
\r
37 __pBtnNext_Year(null)
\r
39 // TODO Auto-generated constructor stub
\r
40 __pCalendar_FirstDay = Calendar::CreateInstanceN();
\r
43 CalendarViewerForm::~CalendarViewerForm() {
\r
44 // TODO Auto-generated destructor stub
\r
45 delete __pCalendar_FirstDay;
\r
49 CalendarViewerForm::Initialize(void)
\r
51 this->Construct(FORM_STYLE_NORMAL | FORM_STYLE_HEADER | FORM_STYLE_INDICATOR);
\r
55 result CalendarViewerForm::OnInitializing(void)
\r
57 Header* pHeader = null;
\r
58 pHeader = GetHeader();
\r
61 pHeader->SetStyle(HEADER_STYLE_TITLE);
\r
62 pHeader->SetTitleText(L"Calendar Viewer");
\r
65 InitMemberVariable();
\r
67 //LINE 1 Display : Year, month
\r
70 //LINE 2 Display : Week
\r
73 //LINE 3 Display : Day
\r
77 RequestRedraw(true);
\r
82 result CalendarViewerForm::OnTerminating(void)
\r
84 delete __pSelectCalendar;
\r
89 bool CalendarViewerForm::InitMemberVariable()
\r
91 //Current Date Setting
\r
92 DateTime CurDateTime;
\r
93 SystemTime::GetCurrentTime(CurDateTime);
\r
95 __pSelectCalendar = Calendar::CreateInstanceN();
\r
96 __pSelectCalendar->SetTime(CurDateTime);
\r
98 AppLog("GetCurrentTime : %d/%d/%d"
\r
99 , __pSelectCalendar->GetTimeField(TIME_FIELD_YEAR)
\r
100 ,__pSelectCalendar->GetTimeField(TIME_FIELD_MONTH)
\r
101 ,__pSelectCalendar->GetTimeField(TIME_FIELD_DAY_OF_MONTH));
\r
106 bool CalendarViewerForm::InitYearMonth()
\r
108 String editYear = L"";
\r
109 String editMonth = L"";
\r
111 editYear.Append(__pSelectCalendar->GetTimeField(TIME_FIELD_YEAR));
\r
112 editMonth.Append(__pSelectCalendar->GetTimeField(TIME_FIELD_MONTH));
\r
114 const int BUTTON_WIDTH = 50;
\r
115 const int EDITFIELDYEAR_WIDTH = 100;
\r
116 const int EDITFIELDMONTH_WIDTH = 75;
\r
118 int xpos1, xpos2, xpos3, xpos4, xpos5, xpos6;
\r
120 xpos1 = ID_PART1_POS_X;
\r
121 xpos2 = xpos1 + BUTTON_WIDTH + 15;
\r
122 xpos3 = xpos2 + BUTTON_WIDTH + 20;
\r
123 xpos4 = xpos3 + EDITFIELDYEAR_WIDTH + 10;
\r
124 xpos5 = xpos4 + EDITFIELDMONTH_WIDTH + 20;
\r
125 xpos6 = xpos5 + BUTTON_WIDTH + 15;
\r
128 __pBtnPrev_Year = new Button();
\r
129 __pBtnPrev_Year->SetName( L"__pBtnPrev_Year" );
\r
130 __pBtnPrev_Year->Construct( Rectangle( xpos1, ID_PART1_POS_Y, BUTTON_WIDTH, ID_PART1_POS_H ), L"<" );
\r
131 __pBtnPrev_Year->SetActionId(ID_BUTTON_PREV_YEAR);
\r
132 __pBtnPrev_Year->AddActionEventListener( *this );
\r
133 AddControl( *__pBtnPrev_Year );
\r
135 //Month Prev Button
\r
136 __pBtnPrev_Month = new Button();
\r
137 __pBtnPrev_Month->SetName( L"__pBtnPrev_Month" );
\r
138 __pBtnPrev_Month->Construct( Rectangle( xpos2, ID_PART1_POS_Y, BUTTON_WIDTH, ID_PART1_POS_H ), L"<" );
\r
139 __pBtnPrev_Month->SetActionId(ID_BUTTON_PREV_MONTH);
\r
140 __pBtnPrev_Month->AddActionEventListener( *this );
\r
141 AddControl( *__pBtnPrev_Month );
\r
144 __pEditYear = new EditField;
\r
145 __pEditYear->Construct(Rectangle(xpos3, ID_PART1_POS_Y, EDITFIELDYEAR_WIDTH, ID_PART1_POS_H)
\r
146 , EDIT_FIELD_STYLE_NORMAL, INPUT_STYLE_FULLSCREEN, false, 4);
\r
147 __pEditYear->SetCurrentInputModeCategory(EDIT_INPUTMODE_NUMERIC);
\r
148 __pEditYear->SetText(editYear);
\r
149 __pEditYear->AddTextEventListener(*this);
\r
150 __pEditYear->SetSize(EDITFIELDYEAR_WIDTH, ID_PART1_POS_H);
\r
151 AddControl(*__pEditYear);
\r
153 //EditField - Month
\r
154 __pEditMonth = new EditField;
\r
155 __pEditMonth->Construct(Rectangle(xpos4, ID_PART1_POS_Y, EDITFIELDMONTH_WIDTH, ID_PART1_POS_H)
\r
156 , EDIT_FIELD_STYLE_NORMAL, INPUT_STYLE_FULLSCREEN, false, 2);
\r
157 __pEditMonth->SetCurrentInputModeCategory(EDIT_INPUTMODE_NUMERIC);
\r
158 __pEditMonth->SetTextAlignment(ALIGNMENT_CENTER);
\r
159 __pEditMonth->SetText(editMonth);
\r
160 __pEditMonth->AddTextEventListener(*this);
\r
161 __pEditMonth->SetSize(EDITFIELDMONTH_WIDTH, ID_PART1_POS_H);
\r
162 AddControl(*__pEditMonth);
\r
164 //Month Next Button
\r
165 __pBtnNext_Month = new Button();
\r
166 __pBtnNext_Month->SetName( L"__pBtnNext_Month" );
\r
167 __pBtnNext_Month->Construct(Rectangle(xpos5, ID_PART1_POS_Y, BUTTON_WIDTH, ID_PART1_POS_H ), L">" );
\r
168 __pBtnNext_Month->SetActionId(ID_BUTTON_NEXT_MONTH);
\r
169 __pBtnNext_Month->AddActionEventListener( *this );
\r
170 AddControl( *__pBtnNext_Month);
\r
173 __pBtnNext_Year = new Button();
\r
174 __pBtnNext_Year->SetName( L"__pBtnNext_Year" );
\r
175 __pBtnNext_Year->Construct(Rectangle(xpos6, ID_PART1_POS_Y, BUTTON_WIDTH, ID_PART1_POS_H ), L">" );
\r
176 __pBtnNext_Year->SetActionId(ID_BUTTON_NEXT_YEAR);
\r
177 __pBtnNext_Year->AddActionEventListener( *this );
\r
178 AddControl( *__pBtnNext_Year);
\r
183 bool CalendarViewerForm::InitWeekDay()
\r
186 String aryWeekDay[7] = {"Sun","Mon","Tue","Wed","Thu","Fri","Sat"};
\r
188 __pPanelWeekDay = new Panel();
\r
189 __pPanelWeekDay->Construct(Rectangle(ID_PART2_POS_X, ID_PART2_POS_Y, 440, ID_PART2_POS_H));
\r
190 __pPanelWeekDay->SetBackgroundColor(Color::GetColor(COLOR_ID_BLACK));
\r
192 for(int i=0; i<7; i++)
\r
194 __pLabelWeekDay[i] = new Label();
\r
195 __pLabelWeekDay[i]->Construct(Rectangle(7 + ID_PART2_DAY_POS_W * i, 15, ID_PART2_DAY_POS_W, 30), aryWeekDay[i]);
\r
196 __pLabelWeekDay[i]->SetBackgroundColor(Color::GetColor(COLOR_ID_BLACK));
\r
200 __pLabelWeekDay[i]->SetTextColor(Color::GetColor(COLOR_ID_RED));
\r
203 __pLabelWeekDay[i]->SetTextColor(Color::GetColor(COLOR_ID_BLUE));
\r
206 __pLabelWeekDay[i]->SetTextColor(Color::GetColor(COLOR_ID_WHITE));
\r
210 __pLabelWeekDay[i]->SetTextConfig(16, LABEL_TEXT_STYLE_NORMAL);
\r
211 __pPanelWeekDay->AddControl(*__pLabelWeekDay[i]);
\r
214 AddControl(*__pPanelWeekDay);
\r
219 bool CalendarViewerForm::InitDay()
\r
222 for(int i=0; i<6; i++)
\r
224 for(int j=0; j<7; j++)
\r
226 __pBtnDay[i][j] = new Button();
\r
227 __pBtnDay[i][j]->Construct( Rectangle( ID_PART3_POS_X + ID_PART3_POS_W * j, ID_PART3_POS_Y + ID_PART3_POS_H * i, ID_PART3_POS_W, ID_PART3_POS_H ), L"" );
\r
228 __pBtnDay[i][j]->SetEnabled(true);
\r
234 __pBtnDay[i][j]->SetTextColor(Color::GetColor(COLOR_ID_RED));
\r
237 __pBtnDay[i][j]->SetTextColor(Color::GetColor(COLOR_ID_BLUE));
\r
240 __pBtnDay[i][j]->SetTextColor(Color::GetColor(COLOR_ID_BLACK));
\r
244 AddControl( *__pBtnDay[i][j]);
\r
251 bool CalendarViewerForm::DisplayDay()
\r
255 __pCalendar_FirstDay->SetTime(__pSelectCalendar->GetTimeField(TIME_FIELD_YEAR)
\r
256 , __pSelectCalendar->GetTimeField(TIME_FIELD_MONTH)
\r
258 int nGetWeekDay = __pCalendar_FirstDay->GetTimeField(TIME_FIELD_DAY_OF_WEEK);
\r
261 int nMaxDay = __pCalendar_FirstDay->GetActualMaxTimeField(TIME_FIELD_DAY_OF_MONTH);
\r
265 int iDisplayBtnCount = 0;
\r
266 for(int i=0; i<6; i++)
\r
268 for(int j=0; j<7; j++)
\r
270 if ((i == 0 and j < nGetWeekDay - 1) or iDisplayBtnCount > nMaxDay - 1)
\r
272 __pBtnDay[i][j]->SetText(L"");
\r
273 __pBtnDay[i][j]->SetShowState(false);
\r
277 String sDisplayBtnCount = L"";
\r
278 sDisplayBtnCount.Append(iDisplayBtnCount + 1);
\r
279 __pBtnDay[i][j]->SetText(sDisplayBtnCount);
\r
280 __pBtnDay[i][j]->SetShowState(true);
\r
281 iDisplayBtnCount++;
\r
286 //Display Year - EditField / Month - EditField
\r
287 String editYearMonth = L"";
\r
288 editYearMonth.Append(__pSelectCalendar->GetTimeField(TIME_FIELD_YEAR));
\r
289 __pEditYear->SetText(editYearMonth);
\r
291 editYearMonth = L"";
\r
292 editYearMonth.Append(__pSelectCalendar->GetTimeField(TIME_FIELD_MONTH));
\r
293 __pEditMonth->SetText(editYearMonth);
\r
297 RequestRedraw(true);
\r
302 bool CalendarViewerForm::CalCalendar(TimeField timefield, int amount)
\r
304 __pSelectCalendar->AddTimeField(timefield, amount);
\r
305 AppLog("CalCalendar : %d/%d/%d"
\r
306 ,__pSelectCalendar->GetTimeField(TIME_FIELD_YEAR)
\r
307 ,__pSelectCalendar->GetTimeField(TIME_FIELD_MONTH)
\r
308 ,__pSelectCalendar->GetTimeField(TIME_FIELD_DAY_OF_MONTH));
\r
313 void CalendarViewerForm::OnActionPerformed(const Control& source, int actionId)
\r
315 int year = 0, month = 0;
\r
319 case ID_BUTTON_PREV_MONTH:
\r
320 year = __pSelectCalendar->GetTimeField(TIME_FIELD_YEAR);
\r
321 month = __pSelectCalendar->GetTimeField(TIME_FIELD_MONTH);
\r
323 if (year == 1 && month == 1)
\r
326 CalCalendar(TIME_FIELD_MONTH, -1);
\r
330 case ID_BUTTON_NEXT_MONTH:
\r
331 year = __pSelectCalendar->GetTimeField(TIME_FIELD_YEAR);
\r
332 month = __pSelectCalendar->GetTimeField(TIME_FIELD_MONTH);
\r
334 if (year == 9999 && month == 12)
\r
337 CalCalendar(TIME_FIELD_MONTH, 1);
\r
341 case ID_BUTTON_PREV_YEAR:
\r
342 year = __pSelectCalendar->GetTimeField(TIME_FIELD_YEAR);
\r
345 CalCalendar(TIME_FIELD_YEAR, -1);
\r
351 case ID_BUTTON_NEXT_YEAR:
\r
352 year = __pSelectCalendar->GetTimeField(TIME_FIELD_YEAR);
\r
356 CalCalendar(TIME_FIELD_YEAR, 1);
\r
367 CalendarViewerForm::OnTextValueChanged(const Control& source)
\r
369 const Control* pObject = &source;
\r
371 if( pObject == __pEditYear )
\r
375 String str = __pEditYear->GetText();
\r
378 Osp::Base::Integer::Parse(str, year);
\r
382 __pSelectCalendar->SetTime(year
\r
383 ,__pSelectCalendar->GetTimeField(TIME_FIELD_MONTH)
\r
384 ,__pSelectCalendar->GetTimeField(TIME_FIELD_DAY_OF_MONTH));
\r
387 else if( pObject == __pEditMonth )
\r
391 String str = __pEditMonth->GetText();
\r
394 Osp::Base::Integer::Parse(str, month);
\r
396 if (1 <= month && month <= 12)
\r
398 __pSelectCalendar->SetTime(__pSelectCalendar->GetTimeField(TIME_FIELD_YEAR)
\r
400 , __pSelectCalendar->GetTimeField(TIME_FIELD_DAY_OF_MONTH));
\r
408 CalendarViewerForm::OnTextValueChangeCanceled(const Osp::Ui::Control& source)
\r