apply FSL(Flora Software License)
[apps/core/preloaded/settings.git] / setting-profile / include / setting-profile.h
1 /*
2   * Copyright 2012  Samsung Electronics Co., Ltd
3   *
4   * Licensed under the Flora License, Version 1.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.tizenopensource.org/license
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 #ifndef __SETTING_PROFILE_H__
17 #define __SETTING_PROFILE_H__
18
19 #include <stdio.h>
20 #include <math.h>
21
22 #include <Elementary.h>
23 #include <appcore-efl.h>
24
25 #include <glib-object.h>
26 #include <ui-gadget.h>
27 #include <ui-gadget-module.h>
28 #include <bundle.h>
29
30 #include <mm_player.h>
31 #include <mm_sound.h>
32
33 #include <mm_error.h>
34
35 #include <devman_haptic.h>
36 #include <svi.h>
37
38 #include <setting-common-draw-widget.h>
39 #include <setting-common-view.h>
40 #include <pthread.h>
41
42 #define HAPTIC_TEST_ITERATION 1
43 #define VOLUME_DEN (15.0)       /* ie equals float(SETTING_SOUND_VOL_MAX) */
44
45 typedef enum {
46         SETTING_PROF_VIEW_VOL = 0,
47         SETTING_PROF_VIEW_RTN,
48         SETTING_PROF_VIEW_MAX
49 } setting_profile_types;
50
51 typedef enum {
52         SETTING_VOL_TYPE_RINGTONE = 0,
53         SETTING_VOL_TYPE_NOTIFICATION,
54         SETTING_VOL_TYPE_MEDIA,
55         SETTING_VOL_TYPE_SYSTEM,
56         SETTING_VOL_TYPE_NOTI_VIB,
57         SETTING_VOL_TYPE_HAPTIC_VIB,
58         SETTING_VOL_TYPE_MAX
59 } setting_volume_types;
60
61 typedef enum {
62         SETTING_VOL_SOUND_GROUP = 0,
63         SETTING_VOL_VIBRATION_GROUP,
64         SETTING_VOL_GROUP_MAX
65 } setting_volume_groups;
66
67 #define SETTING_VIB_VOL_MAX 5
68 #define SETTING_VIB_VOL_MIN 1
69 #define SETTING_SOUND_VOL_MAX 15
70 #define SETTING_SOUND_VOL_MIN 1
71 #define SETTING_SYSTEM_VOL_MAX 15
72 #define SETTING_SYSTEM_VOL_MIN 0
73 #define SETTING_SOUND_CONTROLBAR_ITEM_LEN 10
74
75 #define SETTING_DEFAULT_RINGTONE_VOL_INT        13
76 #define SETTING_DEFAULT_NOTI_VOL_INT            7
77 #define SETTING_DEFAULT_MEDIA_VOL_INT           7
78 #define SETTING_DEFAULT_SYSTEM_VOL_INT          5
79 #define SETTING_DEFAULT_NOTI_VIB_INT            5
80 #define SETTING_DEFAULT_HAPTIC_VIB_INT          3
81 #define SETTING_DEFAULT_ALERT_REPEAT_TYPE_INT   0
82
83 #define SETTING_DEFAULT_RINGTONE_PATH   "/opt/share/settings/Ringtones/"
84 #define SETTING_DEFAULT_ALERT_PATH              "/opt/share/settings/Alerts/"
85 #define SETTING_PROFILE_MMC_PATH                "/opt/storage/sdcard/"
86
87 #define SETTING_DEFAULT_CALL_TONE               SETTING_DEFAULT_RINGTONE_PATH"General_Over the horizon.mp3"
88 #define SETTING_DEFAULT_MSG_TONE                SETTING_DEFAULT_CALL_TONE
89 #define SETTING_DEFAULT_EMAIL_TONE              SETTING_DEFAULT_CALL_TONE
90 #define SETTING_DEFAULT_CALENDAR_TONE   SETTING_DEFAULT_CALL_TONE
91
92 typedef struct _SettingProfileUG SettingProfileUG;
93
94 /**
95  * Setting Profile UG context
96  * all UG function has void* as an agument. this is casted back to SettingProfileUG 
97  * and the functions access app context.
98  */
99 struct _SettingProfileUG {
100         struct ui_gadget *ug;
101         struct ui_gadget *ug_loading;
102
103         /* add more variables here (move your appdata to here) */
104         Evas *evas;
105         Evas_Object *win_main_layout;
106         Evas_Object *win_get;
107         Evas_Object *navi_bar;
108         Evas_Object *ctrl_bar;
109         Evas_Object *ly_main;
110
111         Elm_Genlist_Item_Class itc_1text_1icon;
112         Elm_Genlist_Item_Class itc_group_item;
113         Elm_Genlist_Item_Class itc_2text_2;
114         Elm_Genlist_Item_Class itc_layout;
115         Elm_Genlist_Item_Class itc_seperator;
116         Elm_Genlist_Item_Class itc_bg_1icon;
117         Elm_Genlist_Item_Class itc_2text_3_parent;
118         Elm_Genlist_Item_Class itc_1icon_1text_sub;
119
120         /* Volume tab */
121         Setting_GenGroupItem_Data *data_sound;
122         Setting_GenGroupItem_Data *data_vibration;
123         Setting_GenGroupItem_Data *data_call_volume;
124         Setting_GenGroupItem_Data *data_noti_volume;
125         Setting_GenGroupItem_Data *data_vib_volume;
126         Setting_GenGroupItem_Data *data_touch_volume;
127         Setting_GenGroupItem_Data *data_touch_vib;
128         Setting_GenGroupItem_Data *data_media_volume;
129
130         MMHandleType *mp_ringtone;
131         MMHandleType *mp_noti;
132         MMHandleType *mp_sys;
133         MMHandleType *mp_media;
134
135         Ecore_Timer *volume_timer;
136         setting_volume_types cur_vol_type;
137
138         int hnd_hpt;
139         int playing_volume;
140         char *song_playing;
141         char *ringtone_type;
142 };
143
144 extern setting_view setting_view_profile_sound_main;
145
146 void setting_profile_play_sound_origin(MMHandleType **mp_handle, void *data,
147                                         void *cb, char *ringtone_file, float vol,
148                                         enum MMSoftwareVolumeTableType table_type);
149 void setting_profile_change_player_volume(MMHandleType **mp_handle, void *data, float vol);
150
151 int setting_profile_check_file_exist(void *data, const char *file_path);
152
153 MMHandleType *setting_profile_play_sound(void *data, void *cb,
154                                                 char *ringtone_file,
155                                                 int vol,
156                                                 enum MMSoftwareVolumeTableType table_type);
157
158 int setting_profile_stop_sound(void *data, MMHandleType *player);
159 int setting_profile_close_other_mm_players_but_type(void *data,
160                                                     volume_type_t type);
161 int setting_profile_close_all_mm_players(void *data);
162 void setting_profile_play_vibration(void *data, int value);
163
164 int setting_profile_get_call_playing_vib_by_vconf_value(int call_vib_value);
165
166
167 #endif