3 // Copyright (c) 2012 Samsung Electronics Co., Ltd.
5 // Licensed under the Flora License, Version 1.1 (the License);
6 // you may not use this file except in compliance with the License.
7 // You may obtain a copy of the License at
9 // http://floralicense.org/license/
11 // Unless required by applicable law or agreed to in writing, software
12 // distributed under the License is distributed on an AS IS BASIS,
13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 // See the License for the specific language governing permissions and
15 // limitations under the License.
20 * @brief Used to define %Alarm class.
27 #include "ClkAlarmPresentationModel.h"
29 using namespace Tizen::Base;
30 using namespace Tizen::Locales;
32 AlarmData::AlarmData(void)
36 , __repeatEveryFriday(false)
37 , __repeatEveryMonday(false)
38 , __repeatEverySaturday(false)
39 , __repeatEverySunday(false)
40 , __repeatEveryThursday(false)
41 , __repeatEveryTuesday(false)
42 , __repeatEveryWednesday(false)
44 , __ringType(ALARM_TYPE_MELODY)
49 , __snoozeRepeatCount(0)
52 __time.SetValue(00, 00, 00);
53 __lastRingingTime.SetValue(00, 00, 00);
54 __ringTone = Tizen::App::App::GetInstance()->GetAppRootPath() + L"data/Walk in the forest.mp3";
58 AlarmData::AlarmData(const AlarmData& alarm)
60 __alarmId = alarm.__alarmId;
61 __isOn = alarm.__isOn;
62 __alarmName = alarm.__alarmName;
63 __repeatFlags = alarm.__repeatFlags;
64 __snoozeOn = alarm.__snoozeOn;
65 __snoozeDuration = alarm.__snoozeDuration;
66 __snoozeRepeat = alarm.__snoozeRepeat;
67 __ringVolume = alarm.__ringVolume;
68 __ringType = alarm.__ringType;
69 __ringTone = alarm.__ringTone;
70 __time = alarm.__time;
71 __lastRingingTime = alarm.__lastRingingTime;
72 __repeatEveryMonday = alarm.__repeatEveryMonday;
73 __repeatEveryTuesday= alarm.__repeatEveryTuesday;
74 __repeatEveryWednesday = alarm.__repeatEveryWednesday;
75 __repeatEveryThursday = alarm.__repeatEveryThursday;
76 __repeatEveryFriday = alarm.__repeatEveryFriday;
77 __repeatEverySaturday = alarm.__repeatEverySaturday;
78 __repeatEverySunday = alarm.__repeatEverySunday;
79 __snoozeRepeatCount = alarm.__snoozeRepeatCount;
82 AlarmData::~AlarmData(void)
88 AlarmData::operator =(const AlarmData& rhs)
92 __alarmId = rhs.__alarmId;
94 __alarmName = rhs.__alarmName;
95 __repeatFlags = rhs.__repeatFlags;
96 __snoozeOn = rhs.__snoozeOn;
97 __snoozeDuration = rhs.__snoozeDuration;
98 __snoozeRepeat = rhs.__snoozeRepeat;
99 __ringVolume = rhs.__ringVolume;
100 __ringType = rhs.__ringType;
101 __ringTone = rhs.__ringTone;
103 __lastRingingTime = rhs.__lastRingingTime;
104 __repeatEveryMonday = rhs.__repeatEveryMonday;
105 __repeatEveryTuesday= rhs.__repeatEveryTuesday;
106 __repeatEveryWednesday = rhs.__repeatEveryWednesday;
107 __repeatEveryThursday = rhs.__repeatEveryThursday;
108 __repeatEveryFriday = rhs.__repeatEveryFriday;
109 __repeatEverySaturday = rhs.__repeatEverySaturday;
110 __repeatEverySunday = rhs.__repeatEverySunday;
111 __snoozeRepeatCount = rhs.__snoozeRepeatCount;
118 AlarmData::GetAlarmId(void) const
124 AlarmData::GetAlarmOnState(void) const
130 AlarmData::GetAlarmName(void) const
136 AlarmData::GetAlarmTime(void) const
142 AlarmData::GetLastRingingTime(void) const
144 return __lastRingingTime;
148 AlarmData::GetAlarmCreatedtime(void) const
150 return __alarmCreatedTime;
154 AlarmData::GetNextRingingTime()
156 result r = E_FAILURE;
157 DateTime currentTime;
158 DateTime nextRingingTime;
161 int nextRepeatFlag = 0;
162 int noOfDaysInWeek = 7;
163 Calendar* pGregorianCalendar = null;
164 DataServiceProvider* pDataServiceProvider = DataServiceProvider::GetInstance();
166 pDataServiceProvider->GetCurrentDateTime(currentTime);
167 currentTime.AddSeconds(-2);
168 pGregorianCalendar = Calendar::CreateInstanceN(CALENDAR_GREGORIAN);
169 pGregorianCalendar->SetTimeField(TIME_FIELD_YEAR, currentTime.GetYear());
170 pGregorianCalendar->SetTimeField(TIME_FIELD_MONTH, currentTime.GetMonth());
171 pGregorianCalendar->SetTimeField(TIME_FIELD_DAY_OF_MONTH, currentTime.GetDay());
172 dayOfWeek = pGregorianCalendar->GetTimeField(TIME_FIELD_DAY_OF_WEEK);
173 __repeatFlags.IndexOf(L"1",0,nextRepeatFlag);
174 AppLog("dayOfWeek = %d nextRepeatFlag = %d", dayOfWeek, nextRepeatFlag);
177 nextRingingTime.SetValue(currentTime.GetYear(), currentTime.GetMonth(), currentTime.GetDay(), __time.GetHour(), __time.GetMinute(), __time.GetSecond());
179 if (__snoozeOn == true && __snoozeRepeatCount >= 0)
183 nextRingingTime.AddMinutes(__snoozeDuration * (__snoozeRepeat - __snoozeRepeatCount));
184 status = nextRingingTime.CompareTo(currentTime);
185 __repeatFlags.GetCharAt(dayOfWeek - 1, ch);
187 if (status >= 0 && (ch == '1' || nextRepeatFlag == -1))
189 return nextRingingTime;
193 __snoozeRepeatCount = __snoozeRepeat;
194 nextRingingTime.SetValue(currentTime.GetYear(),currentTime.GetMonth(),currentTime.GetDay(),__time.GetHour(),__time.GetMinute(),__time.GetSecond());
196 __repeatFlags.IndexOf(L"1",dayOfWeek - 1,nextRepeatFlag);
197 status = nextRingingTime.CompareTo(currentTime);
199 if (nextRepeatFlag == dayOfWeek - 1)
203 return nextRingingTime;
207 r = __repeatFlags.IndexOf(L"1",dayOfWeek,nextRepeatFlag);
209 if (nextRepeatFlag == -1 || r != E_SUCCESS)
211 r = __repeatFlags.IndexOf(L"1",0,nextRepeatFlag);
213 if (nextRepeatFlag != -1 && r == E_SUCCESS)
215 nextRingingTime.AddDays(noOfDaysInWeek + (nextRepeatFlag - dayOfWeek + 1));
219 nextRingingTime.SetValue(currentTime.GetYear(),currentTime.GetMonth(),currentTime.GetDay(),__time.GetHour(),__time.GetMinute(),__time.GetSecond());
220 status = nextRingingTime.CompareTo(currentTime);
224 return nextRingingTime;
226 else if (__repeatFlags.Contains(L"1") == false)
228 nextRingingTime.AddDays(1);
235 nextRingingTime.AddDays(nextRepeatFlag - dayOfWeek + 1);
239 status = nextRingingTime.CompareTo(currentTime);
243 nextRingingTime.SetValue(9999,1,1);
246 return nextRingingTime;
250 AlarmData::GetRepeatFlags(void)
252 __repeatFlags = L"0000000";
254 if (__repeatEverySunday == true)
256 __repeatFlags[0] = '1';
260 __repeatFlags[0] = '0';
263 if (__repeatEveryMonday == true)
265 __repeatFlags[1] = '1';
269 __repeatFlags[1] = '0';
272 if (__repeatEveryTuesday == true)
274 __repeatFlags[2] = '1';
278 __repeatFlags[2] = '0';
281 if (__repeatEveryWednesday == true)
283 __repeatFlags[3] = '1';
287 __repeatFlags[3] = '0';
290 if (__repeatEveryThursday == true)
292 __repeatFlags[4] = '1';
296 __repeatFlags[4] = '0';
299 if (__repeatEveryFriday == true)
301 __repeatFlags[5] = '1';
305 __repeatFlags[5] = '0';
308 if (__repeatEverySaturday == true)
310 __repeatFlags[6] = '1';
314 __repeatFlags[6] = '0';
316 return __repeatFlags;
321 AlarmData::GetRepeatEveryMondayFlag(void) const
323 return __repeatEveryMonday;
327 AlarmData::GetRepeatEveryTuesdayFlag(void) const
329 return __repeatEveryTuesday;
333 AlarmData::GetRepeatEveryWednesdayFlag(void) const
335 return __repeatEveryWednesday;
339 AlarmData::GetRepeatEveryThursdayFlag(void) const
341 return __repeatEveryThursday;
345 AlarmData::GetRepeatEveryFridayFlag(void) const
347 return __repeatEveryFriday;
351 AlarmData::GetRepeatEverySaturdayFlag(void) const
353 return __repeatEverySaturday;
357 AlarmData::GetRepeatEverySundayFlag(void) const
359 return __repeatEverySunday;
363 AlarmData::GetSnoozeOn(void) const
369 AlarmData::GetSnoozeDuration(void) const
371 return __snoozeDuration;
375 AlarmData::GetSnoozeRepeat(void) const
377 return __snoozeRepeat;
381 AlarmData::GetSnoozeRepeatCount(void) const
383 return __snoozeRepeatCount;
387 AlarmData::GetRingVolume(void) const
393 AlarmData::GetRingType(void) const
399 AlarmData::GetRingTone(void) const
405 AlarmData::SetAlarmId(const int& alarmId)
411 AlarmData::SetAlarmOnState(const int& alarmOnState)
414 __isOn = alarmOnState;
418 AlarmData::SetAlarmName(const String& alarmName)
420 __alarmName = alarmName;
424 AlarmData::SetSnoozeOn(const bool snooze)
430 AlarmData::SetSnoozeDuration(const int& duration)
432 __snoozeDuration = duration;
436 AlarmData::SetAlarmTime(const DateTime& time)
442 AlarmData::SetSnoozeRepeat(const int& repeat)
444 __snoozeRepeat = repeat;
445 __snoozeRepeatCount = repeat;
449 AlarmData::SetRingVolume(const int& volume)
451 __ringVolume = volume;
455 AlarmData::SetRingType(const type& type)
461 AlarmData::SetRingTone(const String& ringTone)
463 __ringTone = ringTone;
467 AlarmData::SetRepeatedFlags(const String& repeat)
469 __repeatFlags = repeat;
471 for (int i =0; i < __repeatFlags.GetLength(); i++)
475 __repeatFlags.SubString(i, 1, strFlag);
486 AppLogDebug("the flag is %d and the strflag is %ls", flag, strFlag.GetPointer());
491 SetRepeatedEverySunday(flag);
494 SetRepeatedEveryMonday(flag);
497 SetRepeatedEveryTuesday(flag);
500 SetRepeatedEveryWednesday(flag);
503 SetRepeatedEveryThursday(flag);
506 SetRepeatedEveryFriday(flag);
509 SetRepeatedEverySaturday(flag);
517 AlarmData::SetRepeatedEveryMonday(const bool repeat)
519 __repeatEveryMonday = repeat;
523 AlarmData::SetRepeatedEveryTuesday(const bool repeat)
525 __repeatEveryTuesday = repeat;
529 AlarmData::SetRepeatedEveryWednesday(const bool repeat)
531 __repeatEveryWednesday = repeat;
535 AlarmData::SetRepeatedEveryThursday(const bool repeat)
537 __repeatEveryThursday = repeat;
541 AlarmData::SetRepeatedEveryFriday(const bool repeat)
543 __repeatEveryFriday = repeat;
547 AlarmData::SetRepeatedEverySaturday(const bool repeat)
549 __repeatEverySaturday = repeat;
553 AlarmData::SetRepeatedEverySunday(const bool repeat)
555 __repeatEverySunday = repeat;
559 AlarmData::SetLastRingingTime(const DateTime& lastRingingTime)
561 __lastRingingTime = lastRingingTime;
565 AlarmData::SetSnoozeRepeatCount(const int& count)
567 __snoozeRepeatCount = count;
571 AlarmData::SetAlarmCreatedTime(const DateTime& alarmCreatedTime)
573 __alarmCreatedTime = alarmCreatedTime;