Initialize Tizen 2.3
[apps/home/settings.git] / setting-profile / include / setting-profile.h
1 /*
2  * setting
3  * Copyright (c) 2012 Samsung Electronics Co., Ltd.
4  *
5  * Licensed under the Flora License, Version 1.1 (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 #ifndef __SETTING_PROFILE_H__
18 #define __SETTING_PROFILE_H__
19
20 #include <stdio.h>
21 #include <math.h>
22
23 #include <Elementary.h>
24 #include <glib-object.h>
25
26 #include <player.h>
27 #include <sound_manager.h>
28
29 #include <haptic.h>
30 #include <svi.h>
31 #include <feedback.h>
32
33 #include <setting-common-draw-widget.h>
34 #include <setting-common-view.h>
35 #include <pthread.h>
36
37 #define MIGRATION_HAPTIC 1
38
39 #define HAPTIC_TEST_ITERATION 1
40 #define VOLUME_DEN (15.0)       /* ie equals float(SETTING_SOUND_VOL_MAX) */
41
42 #define SETTING_SOUND_TEXT_REPEAT_ONCE                  "IDS_ST_BODY_ONCE"
43 #define SETTING_SOUND_TEXT_REPEAT_2MIN                  "IDS_ST_BODY_EVERY_2MIN"
44 #define SETTING_SOUND_TEXT_REPEAT_5MIN                  "IDS_ST_BODY_EVERY_5MIN"
45 #define SETTING_SOUND_TEXT_REPEAT_10MIN                 "IDS_ST_BODY_EVERY_10MINUTES"
46
47 #define SETTING_SOUND_REPEAT_TYPE_LEN 4
48
49 typedef enum {
50         SETTING_PROF_VIEW_VOL = 0,
51         SETTING_PROF_VIEW_RTN,
52         SETTING_PROF_VIEW_MAX
53 } setting_profile_types;
54
55 typedef enum {
56         SETTING_VOL_TYPE_RINGTONE = 0,
57         SETTING_VOL_TYPE_NOTIFICATION,
58         SETTING_VOL_TYPE_MEDIA,
59         SETTING_VOL_TYPE_SYSTEM,
60         SETTING_VOL_TYPE_NOTI_VIB,
61         SETTING_VOL_TYPE_HAPTIC_VIB,
62         SETTING_VOL_TYPE_MAX
63 } setting_volume_types;
64
65 typedef enum {
66         SETTING_VOL_SOUND_GROUP = 0,
67         SETTING_VOL_VIBRATION_GROUP,
68         SETTING_VOL_GROUP_MAX
69 } setting_volume_groups;
70
71 #define SETTING_VIB_VOL_MAX 5
72 #define SETTING_VIB_VOL_MIN 1
73 #define SETTING_SOUND_VOL_MAX 15
74 #define SETTING_SOUND_VOL_MIN 1
75 #define SETTING_SYSTEM_VOL_MAX 15
76 #define SETTING_SYSTEM_VOL_MIN 0
77 #define SETTING_SOUND_CONTROLBAR_ITEM_LEN 10
78
79 #define SETTING_DEFAULT_RINGTONE_VOL_INT        13
80 #define SETTING_DEFAULT_NOTI_VOL_INT            7
81 #define SETTING_DEFAULT_MEDIA_VOL_INT           7
82 #define SETTING_DEFAULT_SYSTEM_VOL_INT          5
83 #define SETTING_DEFAULT_NOTI_VIB_INT            5
84 #define SETTING_DEFAULT_HAPTIC_VIB_INT          3
85 #define SETTING_DEFAULT_ALERT_REPEAT_TYPE_INT   0
86 #define SETTING_SOUND_VIB_TYPE_LEN 5
87
88 #define SETTING_DEFAULT_RINGTONE_PATH   "/opt/usr/share/settings/Ringtones"
89 #define SETTING_DEFAULT_ALERT_PATH              "/opt/usr/share/settings/Alerts"
90 #define SETTING_PROFILE_MMC_PATH                "/opt/storage/sdcard/"
91 #define SETTING_DEFAULT_VIB_PATH                "/usr/share/svi/haptic/default/"
92
93 #define DELIM           "/"
94
95 #define SETTING_DEFAULT_CALL_TONE               SETTING_DEFAULT_RINGTONE_PATH""DELIM"ringtone_sdk.mp3"
96 #define SETTING_DEFAULT_MSG_TONE                SETTING_DEFAULT_ALERT_PATH""DELIM"General notification_sdk.wav"
97 #define SETTING_DEFAULT_EMAIL_TONE              SETTING_DEFAULT_MSG_TONE
98 #define SETTING_DEFAULT_MEDIA_TONE              SETTING_DEFAULT_CALL_TONE
99
100 #define IMG_CTRL_ICON_RINGTONE          SETTING_ICON_PATH_CFG"A01-1_controlbar_icon_ringtones.png"
101 #define IMG_CTRL_ICON_VOLUME            SETTING_ICON_PATH_CFG"A01-1_controlbar_icon_volume.png"
102
103 #define SETTING_VIB_FEEDBACK_RATE               20
104
105 typedef struct _SettingProfileUG SettingProfileUG;
106
107 /**
108  * Setting Profile UG context
109  * all UG function has void* as an agument. this is casted back to SettingProfileUG
110  * and the functions access app context.
111  */
112 struct _SettingProfileUG {
113         ui_gadget_h ug;
114         ui_gadget_h ug_loading;
115
116         /* add more variables here (move your appdata to here) */
117         Evas *evas;
118         Evas_Object *win_main_layout;
119         Evas_Object *win_get;
120         Evas_Object *navi_bar;
121         Evas_Object *ctrl_bar;
122         Evas_Object *view_layout;
123         Evas_Object *ly_main;
124         Evas_Object *sub_view[SETTING_PROF_VIEW_MAX];
125         Elm_Object_Item *ctrl_item[SETTING_SOUND_CONTROLBAR_ITEM_LEN];
126
127         Elm_Genlist_Item_Class itc_1text_1icon;
128         Elm_Genlist_Item_Class itc_group_item;
129         Elm_Genlist_Item_Class itc_2text_2;
130         Elm_Genlist_Item_Class itc_layout;
131         Elm_Genlist_Item_Class itc_seperator;
132         Elm_Genlist_Item_Class itc_bg_1icon;
133         Elm_Genlist_Item_Class itc_2text_3_parent;
134         Elm_Genlist_Item_Class itc_1icon_1text_sub;
135
136         /* Volume tab */
137         Setting_GenGroupItem_Data *data_sound;
138         Setting_GenGroupItem_Data *data_vibration;
139         Setting_GenGroupItem_Data *data_call_volume;
140         Setting_GenGroupItem_Data *data_noti_volume;
141         Setting_GenGroupItem_Data *data_vib_volume;
142         Setting_GenGroupItem_Data *data_touch_volume;
143         Setting_GenGroupItem_Data *data_touch_vib;
144         Setting_GenGroupItem_Data *data_media_volume;
145
146         player_h *mp_ringtone;
147         player_h *mp_noti;
148         player_h *mp_sys;
149         player_h *mp_media;
150
151         Ecore_Timer *volume_timer;
152         setting_volume_types cur_vol_type;
153
154         haptic_device_h hnd_hpt;
155         int playing_volume;
156         char *song_playing;
157         char *ringtone_type;
158
159         Ecore_Event_Handler *event_handler;
160
161         /* Ringtone tab */
162         Setting_GenGroupItem_Data *data_call_alert_tone;
163         Setting_GenGroupItem_Data *data_call_alert_vib;
164         Setting_GenGroupItem_Data *data_msg_alert_tone;
165         Setting_GenGroupItem_Data *data_email_alert_tone;
166         Setting_GenGroupItem_Data *data_msg_alert_repeat;
167         Setting_GenGroupItem_Data *data_email_alert_repeat;
168         Setting_GenGroupItem_Data *data_lock_sound;
169         Setting_GenGroupItem_Data *data_touch_sounds;
170
171 };
172
173 extern setting_view setting_view_profile_sound_main;
174
175 void setting_profile_play_sound_origin(player_h **mp_handle, void *data,
176                                         void *cb, char *ringtone_file, float vol,
177                                         sound_type_e sound_type);
178 int setting_profile_check_file_exist(void *data, const char *file_path);
179
180 player_h *setting_profile_play_sound(void *data, void *cb,
181                                         char *ringtone_file,
182                                         int vol,
183                                         sound_type_e sound_type);
184
185 int setting_profile_stop_sound(void *data, player_h *player);
186 void setting_profile_change_player_volume(player_h **mp_handle, float vol);
187 int setting_profile_close_other_mm_players_but_type(void *data,
188                                                     sound_type_e type);
189 int setting_profile_close_all_mm_players(void *data);
190 void setting_profile_play_vibration(void *data, int value);
191
192 int setting_profile_get_call_playing_vib_by_vconf_value(int call_vib_value);
193
194 void __setting_profile_ug_key_grab(SettingProfileUG *ad);
195 void __setting_profile_ug_key_ungrab(SettingProfileUG *ad);
196
197
198 #endif