tizen 2.4 release
[framework/uifw/e17-mod-tizen-comp.git] / src / e_mod_comp_policy.c
1 #include "e_mod_comp_shared_types.h"
2 #include "e_mod_comp.h"
3 #include "e_mod_comp_debug.h"
4 #include "e_mod_comp_policy.h"
5
6 /* local subsystem functions */
7
8 /* local subsystem globals */
9 static Eina_Hash *shadow_hash = NULL;
10
11 /* externally accessible functions */
12 EAPI int
13 e_mod_comp_policy_init(void)
14 {
15    if (!shadow_hash) shadow_hash = eina_hash_string_superfast_new(NULL);
16
17    eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_UNKNOWN), _comp_mod->conf->effect_policy_unknown);
18    eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_DESKTOP), _comp_mod->conf->effect_policy_desktop);
19    eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_DOCK), _comp_mod->conf->effect_policy_dock);
20    eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_TOOLBAR), _comp_mod->conf->effect_policy_toolbar);
21    eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_MENU), _comp_mod->conf->effect_policy_menu);
22    eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_UTILITY), _comp_mod->conf->effect_policy_utility);
23    eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_SPLASH), _comp_mod->conf->effect_policy_splash);
24    eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_DIALOG), _comp_mod->conf->effect_policy_dialog);
25    eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_NORMAL), _comp_mod->conf->effect_policy_normal);
26    eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_VIDEOCALL), _comp_mod->conf->effect_policy_videocall);
27    eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_DROPDOWN_MENU), _comp_mod->conf->effect_policy_dropdown_menu);
28    eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_POPUP_MENU), _comp_mod->conf->effect_policy_popup_menu);
29    eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_TOOLTIP), _comp_mod->conf->effect_policy_tooltip);
30    eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_NOTIFICATION), _comp_mod->conf->effect_policy_notification);
31    eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_COMBO), _comp_mod->conf->effect_policy_combo);
32    eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_DND), _comp_mod->conf->effect_policy_dnd);
33    eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_MENUSCREEN), _comp_mod->conf->effect_policy_menuscreen);
34    eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_QUICKPANEL_BASE), _comp_mod->conf->effect_policy_quickpanel_base);
35    eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_QUICKPANEL), _comp_mod->conf->effect_policy_quickpanel);
36    eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_TASKMANAGER), _comp_mod->conf->effect_policy_taskmanager);
37    eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_LIVEMAGAZINE), _comp_mod->conf->effect_policy_livemagazine);
38    eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_LOCKSCREEN), _comp_mod->conf->effect_policy_lockscreen);
39    eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_INDICATOR), _comp_mod->conf->effect_policy_indicator);
40    eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_TICKERNOTI), _comp_mod->conf->effect_policy_tickernoti);
41    eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_DEBUGGING_INFO), _comp_mod->conf->effect_policy_debugging_info);
42    eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_APPTRAY), _comp_mod->conf->effect_policy_apptray);
43    eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_MINI_APPTRAY), _comp_mod->conf->effect_policy_mini_apptray);
44    eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_VOLUME), _comp_mod->conf->effect_policy_volume);
45    eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_BACKGROUND), _comp_mod->conf->effect_policy_background);
46    eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_ISF_KEYBOARD), _comp_mod->conf->effect_policy_isf_keyboard);
47    eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_ISF_SUB), _comp_mod->conf->effect_policy_isf_sub);
48    eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_SETUP_WIZARD), _comp_mod->conf->effect_policy_setup_wizard);
49    eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_TOAST), _comp_mod->conf->effect_policy_toast);
50    eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_APP_POPUP), _comp_mod->conf->effect_policy_app_popup);
51
52    return 1;
53 }
54
55 EAPI int
56 e_mod_comp_policy_shutdown(void)
57 {
58    if (shadow_hash) eina_hash_free(shadow_hash);
59    shadow_hash = NULL;
60    return 1;
61 }
62
63 EAPI Eina_Bool
64 e_mod_comp_policy_app_launch_check(E_Comp_Win *cw)
65 {
66    E_CHECK_RETURN(cw, 0);
67    E_CHECK_RETURN(cw->bd, 0);
68    E_CHECK_RETURN(cw->bd->zone, 0);
69    if (TYPE_NORMAL_CHECK(cw) && REGION_EQUAL_TO_ZONE(cw, cw->bd->zone))
70      return EINA_TRUE;
71    return EINA_FALSE;
72 }
73
74 EAPI Eina_Bool
75 e_mod_comp_policy_app_close_check(E_Comp_Win *cw)
76 {
77    E_CHECK_RETURN(cw, 0);
78    E_CHECK_RETURN(cw->bd, 0);
79    E_CHECK_RETURN(cw->bd->zone, 0);
80    if (TYPE_NORMAL_CHECK(cw) && REGION_EQUAL_TO_ZONE(cw, cw->bd->zone))
81      return EINA_TRUE;
82    return EINA_FALSE;
83 }
84
85 EAPI char *
86 e_mod_comp_policy_win_shadow_group_get(E_Comp_Win *cw)
87 {
88    E_Comp_Win_Type type;
89    E_CHECK_RETURN(cw, 0);
90    type = e_mod_comp_win_type_get(cw);
91    return eina_hash_find(shadow_hash, e_util_winid_str_get(type));
92 }
93
94 /* when receiving border show event for the home window,
95  * check before running app closing effect for given normal window.
96  * exceptional windows: lock, setup wizard
97  * otherwise: do app closing effect
98  */
99 EAPI Eina_Bool
100 e_mod_comp_policy_home_app_win_check(E_Comp_Win *cw)
101 {
102    E_CHECK_RETURN(cw, EINA_FALSE);
103
104    if (TYPE_LOCKSCREEN_CHECK(cw) ||
105        TYPE_SETUP_WIZARD_CHECK(cw))
106      {
107         return EINA_FALSE;
108      }
109
110    return EINA_TRUE;
111 }
112
113 /* local subsystem functions */