tizen 2.4 release
[apps/home/settings.git] / setting-profile / src / volume_popup.c
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
22
23 #include <setting-profile.h>
24 #include <Ecore_X.h>
25
26 /*///////////////////////////////////////////////////////////////////////////////////////// */
27 /* Player related codes - End */
28 /*///////////////////////////////////////////////////////////////////////////////////////// */
29 static void vp_del_win(void *data, Evas_Object *obj, void *event)
30 {
31         /*ui_app_exit(); */
32         elm_exit();
33 }
34
35 static Evas_Object *vp_create_win(const char *name, bool transparent)
36 {
37         SETTING_TRACE_BEGIN;
38         Evas_Object *eo;
39         int w, h;
40
41         eo = elm_win_add(NULL, name, ELM_WIN_BASIC);
42
43         if (eo) {
44                 elm_win_title_set(eo, name);
45                 elm_win_conformant_set(eo, EINA_TRUE);
46
47                 if (transparent) {
48                         elm_win_alpha_set(eo, EINA_TRUE);
49
50                         unsigned int opaqueVal = 1;
51                         Ecore_X_Atom opaqueAtom = ecore_x_atom_get("_E_ILLUME_WINDOW_REGION_OPAQUE");
52                         Ecore_X_Window xwin = elm_win_xwindow_get(eo);
53                         ecore_x_window_prop_card32_set(xwin, opaqueAtom, &opaqueVal, 1);
54                 }
55
56                 evas_object_smart_callback_add(eo, "delete,request", vp_del_win, NULL);
57                 ecore_x_window_size_get(ecore_x_window_root_first_get(), &w, &h);
58                 evas_object_resize(eo, w, h);
59                 /*elm_win_screen_size_get(eo, NULL, NULL, &w, &h); */
60                 /*evas_object_resize(eo, 100, 100); */
61
62                 evas_object_show(eo);
63                 elm_win_activate(eo);
64         }
65
66         return eo;
67 }
68
69 static void _vp_rot_changed_cb(void *data, Evas_Object *obj, void *event_info)
70 {
71         SETTING_TRACE_BEGIN;
72 }
73
74 /**
75 * The function is called to create Setting view widgets
76 */
77 static bool vp_app_create(void *data)
78 {
79         SETTING_TRACE_BEGIN;
80
81         SettingProfileUG *ad = data;
82
83         /* create window */
84         ad->win_get = vp_create_win("org.tizen.setting.volume", TRUE);
85         if (ad->win_get == NULL) {
86                 SETTING_TRACE("Can't create window");
87                 return FALSE;
88         }
89
90         UG_INIT_EFL(ad->win_get, UG_OPT_INDICATOR_DISABLE);
91         ad->evas = evas_object_evas_get(ad->win_get);
92         ad->viewtype = strdup(VOLUME_APP_NAME);
93         setting_sound_init(ad);
94
95         SETTING_TRACE_END;
96         return TRUE;
97 }
98
99 /**
100 * The function is called when Setting is terminated
101 */
102 static void vp_app_terminate(void *data)
103 {
104         SETTING_TRACE_BEGIN;
105         ret_if(!data);
106         SettingProfileUG *ad = data;
107
108         SETTING_TRACE("volume_popup_terminate!");
109
110         evas_object_smart_callback_del(ad->win_get, "wm,rotation,changed", _vp_rot_changed_cb);
111         setting_sound_deinit(ad);
112         if (ad->win_get) {
113                 evas_object_del(ad->win_get);
114                 ad->win_get = NULL;
115         }
116         SETTING_TRACE_END;
117 }
118
119 /**
120 * The function is called when Setting begins run in background from forground
121 */
122 static void vp_app_pause(void *data)
123 {
124         SETTING_TRACE_BEGIN;
125         elm_exit();
126 }
127
128 /**
129 * The function is called when Setting begins run in forground from background
130 */
131 static void vp_app_resume(void *data)
132 {
133         SETTING_TRACE_BEGIN;
134 }
135
136 /**
137 * The function is called by app-fwk after app_create. It always do the process which cost much time.
138 */
139 static void vp_app_reset(app_control_h service, void *data)
140 {
141         SETTING_TRACE_BEGIN;
142         /*ret_if(!data); */
143         /*SettingProfileUG *ad = data; */
144 }
145
146 static void vp_app_lang_changed(app_event_info_h event_info, void *data)
147 {
148         SETTING_TRACE_BEGIN;
149         /*fingerprint_manager_appdata *ad = data; */
150         char *lang = NULL;
151
152         lang = vconf_get_str(VCONFKEY_LANGSET);
153         if (lang) {
154                 elm_language_set((const char *)lang);
155                 FREE(lang);
156         }
157 }
158
159 EXPORT_PUBLIC
160 int main(int argc, char *argv[])
161 {
162         SETTING_TRACE_BEGIN;
163         int r = 0;
164         SettingProfileUG ad;
165
166         ui_app_lifecycle_callback_s ops = {
167                 .create = vp_app_create,
168                 .terminate = vp_app_terminate,
169                 .pause = vp_app_pause,
170
171                 .resume = vp_app_resume,
172                 .app_control = vp_app_reset,
173
174         };
175
176         app_event_handler_h handlers[5] = {NULL, };
177         ui_app_add_event_handler(&handlers[APP_EVENT_LOW_BATTERY], APP_EVENT_LOW_BATTERY, NULL, NULL);
178         ui_app_add_event_handler(&handlers[APP_EVENT_LANGUAGE_CHANGED], APP_EVENT_LANGUAGE_CHANGED, vp_app_lang_changed, NULL);
179         ui_app_add_event_handler(&handlers[APP_EVENT_REGION_FORMAT_CHANGED], APP_EVENT_REGION_FORMAT_CHANGED, NULL, NULL);
180         ui_app_add_event_handler(&handlers[APP_EVENT_DEVICE_ORIENTATION_CHANGED], APP_EVENT_DEVICE_ORIENTATION_CHANGED, NULL, NULL);
181
182         memset(&ad, 0x00, sizeof(SettingProfileUG));
183
184         r = ui_app_main(argc, argv, &ops, &ad);
185         SETTING_TRACE("r = %d", r);
186
187         if (r == -1) {
188                 SETTING_TRACE_ERROR("ui_app_main() returns -1");
189                 return -1;
190         }
191
192         return 0;
193 }