Merge "[2.2.1] Change FBase_String.h to FBaseUtil_AtomicOperations.h" into tizen_2.2
[platform/framework/native/appfw.git] / src / locales / FLcl_DateTimeSymbolsImpl.h
1 //
2 // Copyright (c) 2012 Samsung Electronics Co., Ltd.
3 //
4 // Licensed under the Apache License, Version 2.0 (the License);
5 // you may not use this file except in compliance with the License.
6 // You may obtain a copy of the License at
7 //
8 // http://www.apache.org/licenses/LICENSE-2.0
9 //
10 // Unless required by applicable law or agreed to in writing, software
11 // distributed under the License is distributed on an "AS IS" BASIS,
12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 // See the License for the specific language governing permissions and
14 // limitations under the License.
15 //
16
17 /**
18  * @file        FLcl_DateTimeSymbolsImpl.h
19  * @brief       This is the header file for the _DateTimeSymbolsImpl class.
20  *
21  * This header file contains the declarations of the _DateTimeSymbolsImpl class.
22  *
23  */
24 #ifndef _FLCL_INTERNAL_DATE_TIME_SYMBOLS_IMPL_H_
25 #define _FLCL_INTERNAL_DATE_TIME_SYMBOLS_IMPL_H_
26
27
28 // Includes
29 #include <unicode/dtfmtsym.h>
30
31 #include <FBaseColArrayList.h>
32 #include <FBaseColHashMap.h>
33 #include <FLclLocale.h>
34 #include <FLclCalendar.h>
35
36
37 namespace Tizen { namespace Locales
38 {
39
40 class DateTimeSymbols;
41
42 enum DateFormatSymbolsAttributes
43 {
44         DATE_FORMAT_SYM_ERA_LIST,
45         DATE_FORMAT_SYM_MONTH_LIST,
46         DATE_FORMAT_SYM_SHORT_MONTH_LIST,
47         DATE_FORMAT_SYM_WEEKDAY_LIST,
48         DATE_FORMAT_SYM_SHORT_WEEKDAY_LIST,
49         DATE_FORMAT_SYM_AM_PM_LIST,
50         DATE_FORMAT_SYM_TIMEZONE_MAP,
51
52         DATE_FORMAT_SYM_INVALID
53 };
54
55 class _DateTimeSymbolsImpl
56         : public Tizen::Base::Object
57 {
58
59 public:
60 // Construct Operations
61         _DateTimeSymbolsImpl(void);
62         virtual ~_DateTimeSymbolsImpl(void);
63
64         result Initialize(CalendarType calendarType = CALENDAR_GREGORIAN);
65         result Initialize(const Locale& locale, CalendarType calendarType = CALENDAR_GREGORIAN);
66         void Set(const _DateTimeSymbolsImpl* other);
67
68
69         result AddTimeZoneName(const Tizen::Base::String& timeZoneId, const Tizen::Base::String& concatenatedTimeZoneName, bool isOverwrite = false);
70
71         const Tizen::Base::Collection::IList* GetEras(void) const;
72         result SetEras(const Tizen::Base::String& eras);
73         const Tizen::Base::Collection::IList* GetMonths(void) const;
74         result SetMonths(const Tizen::Base::String& months);
75         const Tizen::Base::Collection::IList* GetShortMonths(void) const;
76         result SetShortMonths(const Tizen::Base::String& shortMonths);
77         const Tizen::Base::Collection::IList* GetWeekdays(void) const;
78         result SetWeekdays(const Tizen::Base::String& weekdays);
79         const Tizen::Base::Collection::IList* GetShortWeekdays(void) const;
80         result SetShortWeekdays(const Tizen::Base::String& shortWeekdays);
81         const Tizen::Base::Collection::IList* GetAmPm(void) const;
82         result SetAmPm(const Tizen::Base::String& amPm);
83
84         Tizen::Base::String GetTimeZoneName(Tizen::Base::String& timeZoneId, int timeZoneStyle = 0);
85         result SetTimeZoneName(const Tizen::Base::String& timeZoneId, const Tizen::Base::String& concatenatedTimeZoneName);
86
87         Tizen::Base::Collection::IList* CloneArrayListN(const Tizen::Base::Collection::IList* pList) const;
88         Tizen::Base::Collection::IMultiMap* CloneMultiHashMapN(const Tizen::Base::Collection::IMultiMap* pMap) const;
89         result SetList(Tizen::Base::Collection::ArrayList* pArraylist, int tokenCount, const Tizen::Base::String& stringWillBeTokenized);
90
91         void ReleaseList(Tizen::Base::Collection::IList* pList);
92         void ReleaseAll();
93
94         static _DateTimeSymbolsImpl* GetDateTimeSymbolsImpl(DateTimeSymbols* pDateTimeSymbols);
95
96 private:
97         _DateTimeSymbolsImpl(const _DateTimeSymbolsImpl& dateTimeSymbolsImpl);
98         _DateTimeSymbolsImpl& operator =(const _DateTimeSymbolsImpl& dateTimeSymbolsImpl);
99
100 // Attribute
101         Tizen::Base::Collection::IList* __pErasList;
102         Tizen::Base::Collection::IList* __pMonthsList;
103         Tizen::Base::Collection::IList* __pShortMonthsList;
104         Tizen::Base::Collection::IList* __pWeekdaysList;
105         Tizen::Base::Collection::IList* __pShortWeekdaysList;
106         Tizen::Base::Collection::IList* __pAmPmList;
107         Tizen::Base::Collection::IMultiMap* __pTimeZonesMap;
108         U_ICU_NAMESPACE::DateFormatSymbols* __pIcuDateFormatSymbols;
109
110         CalendarType __CalendarType;
111
112         friend class DateTimeSymbols;
113         friend class DateTimeFormatter;
114         friend class _LocaleData;
115 }; // _DateTimeSymbolsImpl
116
117 }} // Tizen::Locales
118
119 #endif //_FLCL_INTERNAL_DATE_TIME_SYMBOLS_IMPL_H_
120