Merged with devel
[platform/core/uifw/e17-extra-modules.git] / comp-tizen / 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 EINTERN 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),        "shadow"            );
18    eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_DESKTOP),        "no-effect"         );
19    eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_DOCK),           "shadow_fade"       );
20    eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_TOOLBAR),        "no-effect"         );
21    eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_MENU),           "no-effect"         );
22    eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_UTILITY),        "no-effect"         );
23    eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_SPLASH),         "no-effect"         );
24    eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_DIALOG),         "dialog"            );
25    eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_NORMAL),         "shadow_fade"       );
26    eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_DROPDOWN_MENU),  "no-effect"         );
27    eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_POPUP_MENU),     "shadow"            );
28    eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_TOOLTIP),        "shadow"            );
29    eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_NOTIFICATION),   "dialog"            );
30    eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_COMBO),          "no-effect"         );
31    eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_DND),            "no-effect"         );
32    eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_MENUSCREEN),     "home_screen"       );
33    eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_QUICKPANEL_BASE),"quickpanel"        );
34    eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_QUICKPANEL),     "quickpanel"        );
35    eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_TASKMANAGER),    "taskmgr"           );
36    eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_LIVEMAGAZINE),   "home_screen"       );
37    eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_LOCKSCREEN),     "lockscreen"        );
38    eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_INDICATOR),      "indicator"         );
39    eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_TICKERNOTI),     "dialog_without_dim");
40    eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_DEBUGGING_INFO), "no-effect"         );
41    eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_APPTRAY),        "app_tray"          );
42    eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_MINI_APPTRAY),   "app_tray"          );
43    eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_VOLUME),         "dialog_without_dim");
44    eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_BACKGROUND),     "no-effect"         );
45    eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_ISF_KEYBOARD),   "keyboard"          );
46    eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_ISF_SUB),        "no-effect"         );
47    eina_hash_add(shadow_hash, e_util_winid_str_get(E_COMP_WIN_TYPE_SETUP_WIZARD),   "no-effect"         );
48
49    return 1;
50 }
51
52 EINTERN int
53 e_mod_comp_policy_shutdown(void)
54 {
55    if (shadow_hash) eina_hash_free(shadow_hash);
56    shadow_hash = NULL;
57    return 1;
58 }
59
60 EINTERN Eina_Bool
61 e_mod_comp_policy_app_launch_check(E_Comp_Win *cw)
62 {
63    E_CHECK_RETURN(cw, 0);
64    E_CHECK_RETURN(cw->bd, 0);
65    E_CHECK_RETURN(cw->bd->zone, 0);
66    if (TYPE_NORMAL_CHECK(cw) && REGION_EQUAL_TO_ZONE(cw, cw->bd->zone))
67      return EINA_TRUE;
68    return EINA_FALSE;
69 }
70
71 EINTERN Eina_Bool
72 e_mod_comp_policy_app_close_check(E_Comp_Win *cw)
73 {
74    E_CHECK_RETURN(cw, 0);
75    E_CHECK_RETURN(cw->bd, 0);
76    E_CHECK_RETURN(cw->bd->zone, 0);
77    if (TYPE_NORMAL_CHECK(cw) && REGION_EQUAL_TO_ZONE(cw, cw->bd->zone))
78      return EINA_TRUE;
79    return EINA_FALSE;
80 }
81
82 EINTERN char *
83 e_mod_comp_policy_win_shadow_group_get(E_Comp_Win *cw)
84 {
85    E_Comp_Win_Type type;
86    E_CHECK_RETURN(cw, 0);
87    type = e_mod_comp_win_type_get(cw);
88    return eina_hash_find(shadow_hash, e_util_winid_str_get(type));
89 }
90
91 /* when receiving border show event for the home window,
92  * check before running app closing effect for given normal window.
93  * exceptional windows: lock, setup wizard
94  * otherwise: do app closing effect
95  */
96 EINTERN Eina_Bool
97 e_mod_comp_policy_home_app_win_check(E_Comp_Win *cw)
98 {
99    E_CHECK_RETURN(cw, EINA_FALSE);
100
101    if (TYPE_LOCKSCREEN_CHECK(cw) ||
102        TYPE_SETUP_WIZARD_CHECK(cw))
103      {
104         return EINA_FALSE;
105      }
106
107    return EINA_TRUE;
108 }
109
110 /* local subsystem functions */