2 // Open Service Platform
3 // Copyright (c) 2012 Samsung Electronics Co., Ltd.
5 // Licensed under the Apache License, Version 2.0 (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://www.apache.org/licenses/LICENSE-2.0
11 // Unless required by applicable law or agreed to in writing, software
12 // distributed under the License is distributed on an "AS IS" BASIS,
13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 // See the License for the specific language governing permissions and
15 // limitations under the License.
19 * @file FLclTimeRule.cpp
20 * @brief This file contains implementation of TimeRule class
23 #include <FLclTimeRule.h>
24 #include <FBaseResult.h>
25 #include <FBaseInteger.h>
27 using namespace Tizen::Base;
28 using namespace Tizen::Locales;
29 using namespace Tizen::System;
31 namespace Tizen { namespace Locales
36 * Possible DST rule mode
42 AFTER_THE_SPECIFIED_DAY,
43 BEFORE_THE_SPECIFIED_DAY,
44 BACKWARD_FROM_END_OF_MONTH
47 TimeRule::TimeRule(const TimeRule& timeRule)
48 : __pTimeRuleImpl(null)
50 __month = timeRule.__month;
51 __day = timeRule.__day;
52 __week = timeRule.__week;
53 __dayOfWeek = timeRule.__dayOfWeek;
54 __hour = timeRule.__hour;
55 __minute = timeRule.__minute;
56 __timeMode = timeRule.__timeMode;
57 __onOrAfterDay = timeRule.__onOrAfterDay;
61 TimeRule::~TimeRule(void)
67 TimeRule::TimeRule(Month month, int day, int hour, int minute, TimeMode timeMode)
68 : __pTimeRuleImpl(null)
70 SetValue(month, day, WEEK_UNDEFINED, DAY_OF_WEEK_UNDEFINED, true, hour, minute, timeMode);
74 // The day of week of x-th week of month / The Last day of week of month
75 TimeRule::TimeRule(Month month, Week week, DayOfWeek dayOfWeek, int hour, int minute, TimeMode timeMode)
76 : __pTimeRuleImpl(null)
78 SetValue(month, DAY_UNDEFINED, week, dayOfWeek, true, hour, minute, timeMode);
82 // Day of week on or before/after day of month
83 TimeRule::TimeRule(Month month, int day, DayOfWeek dayOfWeek, bool onOrAfterDay, int hour, int minute, TimeMode timeMode)
84 : __pTimeRuleImpl(null)
86 SetValue(month, day, WEEK_UNDEFINED, dayOfWeek, onOrAfterDay, hour, minute, timeMode);
90 // Internal construction method
92 TimeRule::SetValue(Month month, int day, Week week, DayOfWeek dayOfWeek, bool onOrAfterDay, int hour, int minute,
98 __dayOfWeek = dayOfWeek;
101 __timeMode = timeMode;
102 __onOrAfterDay = onOrAfterDay;
107 TimeRule::GetMonth(void) const
114 TimeRule::GetDay(void) const
121 TimeRule::GetWeek(void) const
128 TimeRule::GetDayOfWeek(void) const
135 TimeRule::GetHour(void) const
141 TimeRule::GetMinute(void) const
148 TimeRule::GetTimeMode(void) const
155 TimeRule::IsOnOrAfterDay(void) const
157 return __onOrAfterDay;
161 TimeRule::operator =(const TimeRule& timeRule)
163 if (&timeRule != this)
165 __month = timeRule.__month;
166 __day = timeRule.__day;
167 __week = timeRule.__week;
168 __dayOfWeek = timeRule.__dayOfWeek;
169 __hour = timeRule.__hour;
170 __minute = timeRule.__minute;
171 __timeMode = timeRule.__timeMode;
172 __onOrAfterDay = timeRule.__onOrAfterDay;
178 TimeRule::GetRuleMode(void) const
180 DstRuleMode ruleMode;
182 if (DAY_UNDEFINED != __day)
184 if (__dayOfWeek == DAY_OF_WEEK_UNDEFINED)
186 ruleMode = EXACT_DAY;
190 ruleMode = __onOrAfterDay ? AFTER_THE_SPECIFIED_DAY : BEFORE_THE_SPECIFIED_DAY;
195 ruleMode = DAY_OF_WEEK_IN_MONTH;
198 return static_cast< int >(ruleMode);
202 TimeRule::Equals(const Object& obj) const
204 const TimeRule* pOtherTimeRule = dynamic_cast< const TimeRule* >(&obj);
207 if (__month == pOtherTimeRule->__month
208 && __day == pOtherTimeRule->__day
209 && __week == pOtherTimeRule->__week
210 && __dayOfWeek == pOtherTimeRule->__dayOfWeek
211 && __hour == pOtherTimeRule->__hour
212 && __minute == pOtherTimeRule->__minute
213 && __timeMode == pOtherTimeRule->__timeMode
214 && __onOrAfterDay == pOtherTimeRule->__onOrAfterDay
225 TimeRule::GetHashCode(void) const
227 Integer value = __month + __day + __week + __dayOfWeek + __hour + __minute + __timeMode + __onOrAfterDay;
228 return value.GetHashCode();