c26e180af6d765e5e8942b21752bf5a096ddf001
[apps/core/preloaded/calendar.git] / src / base-data.c
1 /*
2   *
3   *  Copyright 2012  Samsung Electronics Co., Ltd
4   *
5   *  Licensed under the Flora License, Version 1.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://floralicense.org/license/
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 #include "base-data.h"
19 #include "day-event-data.h"
20
21 cal_base_data_h cal_base_data_new(cal_base_type type, void *data)
22 {
23         cal_base_data_s *base_data = NULL;
24
25         switch (type) {
26                 case _CAL_BASE_TYPE_EVENT:
27                         base_data =  cal_day_event_data_create(data);
28                         break;
29                 default:
30                         break;
31         }
32
33         return base_data;
34 }
35
36 cal_base_data_h cal_base_data_create(cal_base_data_operations *base_operations, void *data)
37 {
38         c_retv_if(!base_operations, NULL);
39         c_retv_if(!base_operations->new_func_ptr, NULL);
40
41         cal_base_data_h base_data = base_operations->new_func_ptr(data);
42         c_retv_if(!base_data , NULL);
43
44         cal_base_data_s *p =  (cal_base_data_s *)base_data;
45
46         p->base_operations.new_func_ptr = base_operations->new_func_ptr;
47         p->base_operations.delete_func_ptr = base_operations->delete_func_ptr;
48         p->base_operations.load_func_ptr = base_operations->load_func_ptr;
49         p->base_operations.create_data_list_ptr = base_operations->create_data_list_ptr;
50         p->base_operations.destory_data_list_ptr = base_operations->destory_data_list_ptr;
51
52         return base_data;
53 }
54
55 void cal_base_data_delete(cal_base_data_h base_data)
56 {
57         c_ret_if(!base_data);
58
59         cal_base_data_s *p =  (cal_base_data_s *)base_data;
60         c_ret_if(!p->base_operations.delete_func_ptr);
61
62         p->base_operations.delete_func_ptr(base_data);
63 }
64
65 void cal_base_data_load(cal_base_data_h base_data)
66 {
67         c_ret_if(!base_data);
68
69         cal_base_data_s *p =  (cal_base_data_s *)base_data;
70         c_ret_if(!p->base_operations.load_func_ptr);
71
72         p->base_operations.load_func_ptr(base_data);
73 }
74
75 void cal_base_data_create_data_list(cal_base_data_h base_data)
76 {
77         c_ret_if(!base_data);
78
79         cal_base_data_s *p =  (cal_base_data_s *)base_data;
80         c_ret_if(!p->base_operations.create_data_list_ptr);
81
82         p->base_operations.create_data_list_ptr(base_data);
83 }
84
85 void cal_base_data_destroy_data_list(cal_base_data_h base_data)
86 {
87         c_ret_if(!base_data);
88
89         cal_base_data_s *p =  (cal_base_data_s *)base_data;
90         c_ret_if(!p->base_operations.destory_data_list_ptr);
91
92         p->base_operations.destory_data_list_ptr(base_data);
93 }
94
95
96 int  cal_base_data_foreach_items (cal_base_data_foreach_items_func_ptr callback, cal_base_data_item_h base_data, void *usr_data)
97 {
98         c_retv_if(!base_data, -1);
99         cal_base_data_s *p = (cal_base_data_s *)base_data;
100
101         c_retv_if(!p, -1);
102         c_retv_if(!p->base_data_list, -1);
103
104         cal_base_data_item_h item_data = NULL;
105         Eina_List *l;
106
107         EINA_LIST_FOREACH(p->base_data_list, l, item_data) {
108                 if (item_data) {
109                         Eina_Bool is_continue = (*callback)((cal_base_data_item_h)item_data, usr_data);
110                         if (!is_continue)
111                                 break;
112                 }
113         }
114
115         return 0;
116 }
117
118 char *cal_base_data_get_item_text(cal_base_data_item_h base_item)
119 {
120         c_retv_if(!base_item, NULL);
121
122         cal_base_data_item *item_data = (cal_base_data_item*)base_item;
123
124         return item_data->text;
125 }
126
127 void cal_base_data_get_item_color(cal_base_data_item_h base_item, _calendar_book_color *color)
128 {
129         c_ret_if(!base_item);
130         c_ret_if(!color);
131
132         cal_base_data_item *item_data = (cal_base_data_item*)base_item;
133
134         color->red = item_data->color.red;
135         color->blue = item_data->color.blue;
136         color->green = item_data->color.green;
137         color->alpha= item_data->color.alpha;
138 }
139
140 int cal_base_data_get_item_width_devider(cal_base_data_item_h base_item)
141 {
142         c_retv_if(!base_item, -1);
143
144         cal_base_data_item *item_data = (cal_base_data_item*)base_item;
145
146         return item_data->width_devider;
147 }
148
149 int cal_base_data_get_item_cloumn_index(cal_base_data_item_h base_item)
150 {
151         c_retv_if(!base_item, -1);
152
153         cal_base_data_item *item_data = (cal_base_data_item*)base_item;
154
155         return item_data->column_index;
156 }
157
158 int cal_base_data_get_item_height(cal_base_data_item_h base_item)
159 {
160         c_retv_if(!base_item, -1);
161
162         cal_base_data_item *item_data = (cal_base_data_item *)base_item;
163
164         return item_data->height;
165 }
166
167 int cal_base_data_get_item_line_index(cal_base_data_item_h base_item)
168 {
169         c_retv_if(!base_item, -1);
170
171         cal_base_data_item *item_data = (cal_base_data_item *)base_item;
172
173         return item_data->line_index;
174 }
175
176 void cal_base_data_set_item_height(cal_base_data_item_h base_item, int height)
177 {
178         c_ret_if(!base_item);
179
180         cal_base_data_item* base_item_data = (cal_base_data_item*)base_item;
181
182         base_item_data->height = height;
183 }
184
185 void cal_base_data_set_item_line_index(cal_base_data_item_h base_item, int line_index)
186 {
187         c_ret_if(!base_item);
188
189         cal_base_data_item* base_item_data = (cal_base_data_item*)base_item;
190
191         base_item_data->line_index = line_index;
192 }