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