Added a policy to support such as quickpanel to rotate based Window manager.
[platform/core/uifw/e17-extra-modules.git] / illume2-tizen / src / policies / illume / illume.c
1 #include "e_illume.h"
2 #include "illume.h"
3 #include "policy.h"
4
5 EAPI E_Illume_Policy_Api e_illume_policy_api =
6 {
7    /* version, name, label */
8    E_ILLUME_POLICY_API_VERSION, "illume", "Illume"
9 };
10
11 EAPI int
12 e_illume_policy_init(E_Illume_Policy *p)
13 {
14    /* tell the policy what functions we support */
15    p->funcs.border_add = _policy_border_add;
16    p->funcs.border_del = _policy_border_del;
17    p->funcs.border_focus_in = _policy_border_focus_in;
18    p->funcs.border_focus_out = _policy_border_focus_out;
19    p->funcs.border_activate = _policy_border_activate;
20    p->funcs.border_post_fetch = _policy_border_post_fetch;
21    p->funcs.border_post_assign = _policy_border_post_assign;
22    p->funcs.border_show = _policy_border_show;
23    p->funcs.border_move = _policy_border_cb_move;
24    p->funcs.zone_layout = _policy_zone_layout;
25    p->funcs.zone_move_resize = _policy_zone_move_resize;
26    p->funcs.zone_mode_change = _policy_zone_mode_change;
27    p->funcs.zone_close = _policy_zone_close;
28    p->funcs.drag_start = _policy_drag_start;
29    p->funcs.drag_end = _policy_drag_end;
30    p->funcs.focus_back = _policy_focus_back;
31    p->funcs.focus_forward = _policy_focus_forward;
32    p->funcs.property_change = _policy_property_change;
33
34    p->funcs.window_focus_in = _policy_window_focus_in;
35
36    p->funcs.border_restack_request = _policy_border_stack_change;
37    p->funcs.border_stack = _policy_border_stack;
38    p->funcs.border_zone_set = _policy_border_zone_set;
39
40    p->funcs.border_post_new_border = _policy_border_post_new_border;
41    p->funcs.border_pre_fetch = _policy_border_pre_fetch;
42    p->funcs.border_new_border = _policy_border_new_border;
43 #ifdef _F_BORDER_HOOK_PATCH_
44    p->funcs.border_del_border = _policy_border_del_border;
45 #endif
46
47    p->funcs.window_configure_request = _policy_window_configure_request;
48
49    p->funcs.border_iconify_cb = _policy_border_iconify_cb;
50    p->funcs.border_uniconify_cb = _policy_border_uniconify_cb;
51
52    /* for visibility */
53    p->funcs.window_create = _policy_window_create;
54    p->funcs.window_destroy = _policy_window_destroy;
55    p->funcs.window_reparent = _policy_window_reparent;
56    p->funcs.window_show = _policy_window_show;
57    p->funcs.window_hide = _policy_window_hide;
58    p->funcs.window_configure = _policy_window_configure;
59
60    p->funcs.window_sync_draw_done = _policy_window_sync_draw_done;
61    p->funcs.quickpanel_state_change = _policy_quickpanel_state_change;
62
63    p->funcs.window_desk_set = _policy_window_desk_set;
64
65    p->funcs.window_move_resize_request = _policy_window_move_resize_request;
66    p->funcs.window_state_request = _policy_window_state_request;
67
68    p->funcs.module_update = _policy_module_update;
69
70    p->funcs.idle_enterer = _policy_idle_enterer;
71
72    p->funcs.illume_win_state_change_request = _policy_illume_win_state_change_request;
73
74    p->funcs.rotation_list_add = _policy_border_hook_rotation_list_add;
75
76    if (!_policy_init())
77      return 0;
78
79    return 1;
80 }
81
82 EAPI int
83 e_illume_policy_shutdown(E_Illume_Policy *p)
84 {
85    p->funcs.border_add = NULL;
86    p->funcs.border_del = NULL;
87    p->funcs.border_focus_in = NULL;
88    p->funcs.border_focus_out = NULL;
89    p->funcs.border_activate = NULL;
90    p->funcs.border_post_fetch = NULL;
91    p->funcs.border_post_assign = NULL;
92    p->funcs.border_show = NULL;
93    p->funcs.border_move = NULL;
94    p->funcs.zone_layout = NULL;
95    p->funcs.zone_move_resize = NULL;
96    p->funcs.zone_mode_change = NULL;
97    p->funcs.zone_close = NULL;
98    p->funcs.drag_start = NULL;
99    p->funcs.drag_end = NULL;
100    p->funcs.focus_back = NULL;
101    p->funcs.focus_forward = NULL;
102    p->funcs.property_change = NULL;
103
104    p->funcs.window_focus_in = NULL;
105
106    p->funcs.border_restack_request = NULL;
107    p->funcs.border_stack = NULL;
108    p->funcs.border_zone_set = NULL;
109
110    p->funcs.border_post_new_border = NULL;
111    p->funcs.border_pre_fetch = NULL;
112    p->funcs.border_new_border = NULL;
113 #ifdef _F_BORDER_HOOK_PATCH_
114    p->funcs.border_del_border = NULL;
115 #endif
116    p->funcs.window_configure_request = NULL;
117
118    p->funcs.border_iconify_cb = NULL;
119    p->funcs.border_uniconify_cb = NULL;
120
121    /* for visibility */
122    p->funcs.window_create = NULL;
123    p->funcs.window_destroy = NULL;
124    p->funcs.window_reparent = NULL;
125    p->funcs.window_show = NULL;
126    p->funcs.window_hide = NULL;
127    p->funcs.window_configure = NULL;
128
129    p->funcs.window_sync_draw_done = NULL;
130    p->funcs.quickpanel_state_change = NULL;
131
132    p->funcs.window_desk_set = NULL;
133
134    p->funcs.window_move_resize_request = NULL;
135    p->funcs.window_state_request = NULL;
136
137    p->funcs.module_update = NULL;
138
139    p->funcs.idle_enterer = NULL;
140
141    p->funcs.illume_win_state_change_request = NULL;
142
143    p->funcs.rotation_list_add = NULL;
144
145    _policy_fin();
146    return 1;
147 }