Tizen 2.0 Release
[apps/home/settings.git] / setting-datausage / include / setting-datausage.h
1 /*
2  * setting
3  *
4  * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd.
5  *
6  * Contact: MyoungJune Park <mj2004.park@samsung.com>
7  *
8  * Licensed under the Apache License, Version 2.0 (the "License");
9  * you may not use this file except in compliance with the License.
10  * You may obtain a copy of the License at
11  *
12  * http://www.apache.org/licenses/LICENSE-2.0
13  *
14  * Unless required by applicable law or agreed to in writing, software
15  * distributed under the License is distributed on an "AS IS" BASIS,
16  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17  * See the License for the specific language governing permissions and
18  * limitations under the License.
19  *
20  */
21 #ifndef __SETTING_DATAUSAGE_H__
22 #define __SETTING_DATAUSAGE_H__
23
24 #include <stdio.h>
25 #include <Elementary.h>
26
27 #include <glib-object.h>
28
29 #include <setting-common-draw-widget.h>
30 #include <setting-common-view.h>
31
32 #include <cairo.h>
33 #include <data_usage.h>
34 #include <resman.h>
35
36 #define SETTING_PKG_NAME "com.samsung.setting"
37
38 #define SETTING_DATAUSAGE_MOBILE_STR "Mobile"
39
40 #define SETTING_DATAUSAGE_DATA_ROAMING_STR "IDS_ST_BODY_DATA_ROAMING"
41 #define SETTING_DATAUSAGE_RESTRICT_BACKGROUND_STR "Restrict background data"
42 #define SETTING_DATAUSAGE_SHOW_WIFI_STR "Show Wi-Fi usage"
43
44 #define SETTING_DATAUSAGE_ON_THIS_DATE_EACH_MONTH_STR "On this date each month"
45
46 #define SETTING_DATAUSAGE_MOBILE_DATA_STR "IDS_ST_MBODY_MOBILE_DATA"
47 #define SETTING_DATAUSAGE_SET_DATA_USAGE_LIMIT_STR "Set data usage limit"
48 #define SETTING_DATAUSAGE_DATA_LIMIT_STR "IDS_ST_BODY_DATA_LIMIT"
49 #define SETTING_DATAUSAGE_DATA_USAGE_CYCLE_STR "Data usage cycle"
50 #define SETTING_DATAUSAGE_STARTING_DATE_STR "IDS_ST_BODY_START_DATE"
51 #define SETTING_DATAUSAGE_CHANGE_CYCLE_STR "IDS_ST_BODY_CHANGE_CYCLE"
52 #define SETTING_DATAUSAGE_MORE_SETTING_STR "More data usage setting"
53 #define SETTING_DATAUSAGE_GRAPH_DESC_STR "%s : About %s used"
54 #define SETTING_DATAUSAGE_DESC_STR "IDS_ST_BODY_DATA_USAGE_IS_MEASURED_BY_YOUR_PHONE_AND_YOUR_SERVICE_PROVIDER_MAY_ACCOUNT_FOR_USAGE_DIFFERENTLY"
55
56
57 #define SETTING_DATAUSAGE_NO_APPS_USE_DATA_STR "No apps used data during this period"
58
59 #define SETTING_DATAUSAGE_MONTH_STR "Month"
60 #define SETTING_DATAUSAGE_WEEK_STR "Week"
61 #define SETTING_DATAUSAGE_DAY_STR "Day"
62
63 #define SETTING_DATAUSAGE_DAYS_IN_MONTH 31
64 #define SETTING_DATAUSAGE_DAYS_IN_WEEK 7
65 #define SETTING_DATAUSAGE_HOURS_IN_DAY 24
66
67 typedef struct _SettingDatausageUG SettingDatausageUG;
68
69 /**
70  * Setting Datausage UG context
71  * all UG function has void* as an agument. this is casted back to SettingDatausageUG
72  * and the functions access app context.
73  */
74 struct _SettingDatausageUG {
75         ui_gadget_h ug;
76
77         /* add more variables here (move your appdata to here) */
78         Evas *evas;
79         Evas_Object *win_main_layout;
80         Evas_Object *win_get;
81
82         Evas_Object *ly_main;
83
84         Evas_Object *genlist;
85         Evas_Object *layout;
86         Evas_Object *navibar;
87
88         Evas_Object *tabbar;
89         Elm_Object_Item *tabbar_item[2];
90
91         setting_view *view_to_load;
92
93         /* datausage setting */
94         Evas_Object *popup;
95         Elm_Genlist_Item_Class itc_2text_3_parent;
96         Elm_Genlist_Item_Class itc_1icon_1text_sub;
97         Elm_Genlist_Item_Class itc_1text_1icon_2;
98         Elm_Genlist_Item_Class itc_1text_1icon;
99         Elm_Genlist_Item_Class itc_2text_2;
100         Elm_Genlist_Item_Class itc_1text;
101         Elm_Genlist_Item_Class itc_group_item;
102         Elm_Genlist_Item_Class itc_bg_1icon;
103         Elm_Genlist_Item_Class itc_seperator;
104         Elm_Genlist_Item_Class itc_variable_height;
105         Elm_Genlist_Item_Class itc_1text_1icon_date;
106         Elm_Genlist_Item_Class itc_layout;
107         Elm_Genlist_Item_Class itc_2text_1icon_4;
108
109         Setting_GenGroupItem_Data *use_packet_data;
110         Setting_GenGroupItem_Data *set_data_usage_limit;
111         Setting_GenGroupItem_Data *data_limit;
112         Setting_GenGroupItem_Data *data_usage_cycle;
113         Setting_GenGroupItem_Data *starting_date;
114         Setting_GenGroupItem_Data *change_cycle;
115         Setting_GenGroupItem_Data *more_setting;
116         Setting_GenGroupItem_Data *limit_graph;
117         Setting_GenGroupItem_Data *graph_image;
118         Setting_GenGroupItem_Data *graph_desc;
119
120         Evas_Object *data_limit_conformant;
121         Evas_Object *data_limit_entry;
122         Evas_Object *data_limit_popup;
123         Evas_Object *ctxpopup;
124
125         Eina_List *app_list;
126         int app_list_index;
127         unsigned long long apps_total_size;
128         Ecore_Animator *animator;
129         rsml_iface_type iftype;
130
131         int data_arr_len;
132         unsigned long long data_arr[SETTING_DATAUSAGE_DAYS_IN_MONTH];
133         int maximum;
134         unsigned long long total_size;
135         unsigned long long left_size;
136
137         cairo_surface_t *cairo_surface;
138         cairo_t         *cr;
139
140         cairo_surface_t *limit_cairo_surface;
141         cairo_t         *limit_cr;
142
143 };
144
145 extern setting_view setting_view_datausage_main;
146
147 #endif                          /* __SETTING_DATAUSAGE_H__ */