Fixed update instance
[framework/osp/social.git] / src / FScl_CalendarbookFilterImpl.h
1 //
2 // Open Service Platform
3 // Copyright (c) 2012 Samsung Electronics Co., Ltd.
4 //
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
8 //
9 //     http://www.apache.org/licenses/LICENSE-2.0
10 //
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.
16 //
17 /**
18  * @file                FScl_CalendarbookFilterImpl.h
19  * @brief               This is the header file for the %_CalendarbookFilterImpl class.
20  *
21  * This header file contains the declarations of the %_CalendarbookFilterImpl class.
22  */
23 #ifndef _FSCL_CALENDARBOOK_FILTER_IMPL_H_
24 #define _FSCL_CALENDARBOOK_FILTER_IMPL_H_
25
26 #include <calendar2.h>
27 #include <FBaseTypes.h>
28 #include <FSclTypes.h>
29 #include <FBaseObject.h>
30
31 namespace Tizen { namespace Base
32 {
33 class String;
34 class DateTime;
35 }}
36
37 namespace Tizen { namespace Social
38 {
39
40 class CalendarbookFilter;
41
42 enum __DataType
43 {
44         DATA_TYPE_NONE,
45         DATA_TYPE_INT,
46         DATA_TYPE_DOUBLE,
47         DATA_TYPE_BOOL,
48         DATA_TYPE_DATE_TIME,
49         DATA_TYPE_STRING,
50 };
51
52 class _OSP_EXPORT_ _CalendarbookFilterImpl
53            : public Tizen::Base::Object
54 {
55 public:
56         _CalendarbookFilterImpl(CalendarbookFilterType type);
57
58         virtual ~_CalendarbookFilterImpl(void);
59
60         virtual bool Equals(const Tizen::Base::Object& rhs) const;
61
62         virtual int GetHashCode(void) const;
63
64         calendar_filter_h GetFilterHandle(void) const;
65
66         CalendarbookFilterType GetType(void) const;
67
68         bool IsEmpty(void) const;
69
70         result AppendInt(FilterConjunctiveOperator conjunctiveOperator, unsigned long filterProperty, FilterComparisonOperator comparisonOperator, int value);
71
72         result AppendDouble(FilterConjunctiveOperator conjunctiveOperator, unsigned long filterProperty, FilterComparisonOperator comparisonOperator, double value);
73
74         result AppendBool(FilterConjunctiveOperator conjunctiveOperator, unsigned long filterProperty, FilterComparisonOperator comparisonOperator, bool value);
75
76         result AppendDateTime(FilterConjunctiveOperator conjunctiveOperator, unsigned long filterProperty, FilterComparisonOperator comparisonOperator, const Tizen::Base::DateTime& value);
77
78         result AppendString(FilterConjunctiveOperator conjunctiveOperator, unsigned long filterProperty, FilterStringOperator comparisonOperator, const Tizen::Base::String& value);
79
80         result AppendFilter(FilterConjunctiveOperator conjunctiveOperator, const _CalendarbookFilterImpl& filter);
81
82         static const char* GetUriFromType(CalendarbookFilterType type);
83
84         static __DataType GetPropertyType(CalendarbookFilterType type, unsigned long filterProperty);
85
86         static bool IsValidProperty(CalendarbookFilterType type, unsigned long filterProperty);
87
88         static unsigned int GetViewPropertyId(CalendarbookFilterType type, unsigned long filterProperty);
89
90         static const _CalendarbookFilterImpl* GetInstance(const CalendarbookFilter& filter);
91
92         static  _CalendarbookFilterImpl* GetInstance(CalendarbookFilter& filter);
93
94 public:
95         struct __FilterPropertyInfoEntry
96         {
97                 unsigned long propertyId;
98                 unsigned long viewPropertyId;
99                 __DataType dataType;
100         };
101
102         struct __FilterInfoEntry
103         {
104                 unsigned long filterType;
105                 const char* pViewUri;
106                 unsigned long baseIndex;
107                 unsigned long propertyInfoCount;
108                 const __FilterPropertyInfoEntry* propertyInfos;
109         };
110
111         static const __FilterPropertyInfoEntry __calendarFilterPropertyInfos[];
112         static const __FilterPropertyInfoEntry __eventFilterPropertyInfos[];
113         static const __FilterPropertyInfoEntry __todoFilterPropertyInfos[];
114         static const __FilterPropertyInfoEntry __allDayEventInstanceFilterPropertyInfos[];
115         static const __FilterPropertyInfoEntry __nonAllDayEventInstanceFilterPropertyInfos[];
116         static const __FilterInfoEntry __filterInfos[];
117
118 private:
119         // get match flag
120         static calendar_match_str_flag_e GetMatchStrFlag(FilterStringOperator stringOperstor);
121         static calendar_match_int_flag_e GetMatchIntFlag(FilterComparisonOperator comparisonOperator);
122
123         calendar_filter_h __filterHandle;
124         CalendarbookFilterType __filterType;
125         bool __isEmpty;
126 };         // _CalendarbookFilterImpl
127
128 }} // Tizen::Social
129
130 #endif // _FSCL_CALENDARBOOK_FILTER_IMPL_H_