summaryrefslogtreecommitdiff
path: root/src/bin/e_policy.h
blob: e1f202fae09dc22b68e97118222592cb0e2b72a7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
# ifdef E_TYPEDEFS
typedef struct _E_Policy_Desk     E_Policy_Desk;
typedef struct _E_Policy_Client   E_Policy_Client;
typedef struct _E_Policy_Softkey  E_Policy_Softkey;
typedef struct _E_Policy_Config_Match E_Policy_Config_Match;
typedef struct _E_Policy_Config_Desk  E_Policy_Config_Desk;
typedef struct _E_Policy_Config_Rot   E_Policy_Config_Rot;
typedef struct _E_Policy_Config       E_Policy_Config;
typedef struct _E_Policy          E_Policy;
typedef struct _E_Policy_System_Info E_Policy_System_Info;

# else
# ifndef E_POLICY_H
# define E_POLICY_H
#  ifndef _
#    ifdef HAVE_GETTEXT
#  define _(str) gettext(str)
#    else
#  define _(str) (str)
#    endif
#  endif

struct _E_Policy_Desk
{
   E_Desk          *desk;
   E_Zone          *zone;
};

struct _E_Policy_Client
{
   E_Client        *ec;
   struct
   {
      E_Maximize    maximized;
      unsigned int  fullscreen : 1;
      unsigned char borderless : 1;
      unsigned int  lock_user_location : 1;
      unsigned int  lock_client_location : 1;
      unsigned int  lock_user_size : 1;
      unsigned int  lock_client_size : 1;
      unsigned int  lock_client_stacking : 1;
      unsigned int  lock_user_shade : 1;
      unsigned int  lock_client_shade : 1;
      unsigned int  lock_user_maximize : 1;
      unsigned int  lock_client_maximize : 1;
      unsigned int  lock_user_fullscreen : 1;
      unsigned int  lock_client_fullscreen : 1;
   } orig;

   struct
   {
      unsigned int vkbd_state;
      unsigned int already_hide;
   } changes;

   Eina_Bool max_policy_state;
   Eina_Bool flt_policy_state;
   Eina_Bool allow_user_geom;
   int       user_geom_ref;
};

struct _E_Policy_Softkey
{
   EINA_INLIST;

   E_Zone          *zone;
   Evas_Object     *home;
   Evas_Object     *back;
};

struct _E_Policy
{
   E_Module        *module;
   Eina_List       *launchers; /* launcher window per zone */
   Eina_Inlist     *softkeys; /* softkey ui object per zone */
};

struct _E_Policy_System_Info
{
   struct
   {
      E_Client  *ec;
      Eina_Bool  show;
   } lockscreen;

   struct
   {
      int system;
      int client;
      Eina_Bool use_client;
   } brightness;
};

extern E_Policy *e_policy;
extern E_Policy_System_Info e_policy_system_info;

EINTERN E_Policy_Config_Desk *e_policy_conf_desk_get_by_nums(E_Policy_Config *conf, unsigned int zone_num, int x, int y);
EINTERN E_Policy_Client      *e_policy_client_get(E_Client *ec);
EINTERN void                  e_policy_allow_user_geometry_set(E_Client *ec, Eina_Bool set);
EINTERN void                  e_policy_desk_add(E_Desk *desk);
EINTERN void                  e_policy_desk_del(E_Policy_Desk *pd);
EINTERN E_Policy_Client      *e_policy_client_launcher_get(E_Zone *zone);

EINTERN Eina_Bool        e_policy_client_is_lockscreen(E_Client *ec);
EINTERN Eina_Bool        e_policy_client_is_home_screen(E_Client *ec);
EINTERN Eina_Bool        e_policy_client_is_quickpanel(E_Client *ec);
EINTERN Eina_Bool        e_policy_client_is_conformant(E_Client *ec);
EINTERN Eina_Bool        e_policy_client_is_volume(E_Client *ec);
EINTERN Eina_Bool        e_policy_client_is_volume_tv(E_Client *ec);
EINTERN Eina_Bool        e_policy_client_is_noti(E_Client *ec);
EINTERN Eina_Bool        e_policy_client_is_floating(E_Client *ec);
EINTERN Eina_Bool        e_policy_client_is_cursor(E_Client *ec);
EINTERN Eina_Bool        e_policy_client_is_subsurface(E_Client *ec);

EINTERN E_Policy_Softkey *e_policy_softkey_add(E_Zone *zone);
EINTERN void              e_policy_softkey_del(E_Policy_Softkey *softkey);
EINTERN void              e_policy_softkey_show(E_Policy_Softkey *softkey);
EINTERN void              e_policy_softkey_hide(E_Policy_Softkey *softkey);
EINTERN void              e_policy_softkey_update(E_Policy_Softkey *softkey);
EINTERN E_Policy_Softkey *e_policy_softkey_get(E_Zone *zone);

EINTERN void             e_policy_client_visibility_send(E_Client *ec);
EINTERN void             e_policy_client_iconify_by_visibility(E_Client *ec);
EINTERN void             e_policy_client_uniconify_by_visibility(E_Client *ec);

EINTERN Eina_Bool        e_policy_client_maximize(E_Client *ec);

EINTERN void             e_policy_client_window_opaque_set(E_Client *ec);

EINTERN void             e_policy_stack_init(void);
EINTERN void             e_policy_stack_shutdonw(void);
EINTERN void             e_policy_stack_transient_for_set(E_Client *child, E_Client *parent);
EINTERN void             e_policy_stack_cb_client_remove(E_Client *ec);
EINTERN void             e_policy_stack_hook_pre_fetch(E_Client *ec);
EINTERN void             e_policy_stack_hook_pre_post_fetch(E_Client *ec);

EINTERN void             e_policy_stack_below(E_Client *ec, E_Client *below_ec);

EINTERN void             e_policy_stack_clients_restack_above_lockscreen(E_Client *ec_lock, Eina_Bool show);
EINTERN Eina_Bool        e_policy_stack_check_above_lockscreen(E_Client *ec, E_Layer layer, E_Layer *new_layer, Eina_Bool set_layer);

EINTERN Eina_Bool        e_policy_conf_rot_enable_get(int angle);

E_API void e_policy_deferred_job(void);
E_API int e_policy_init(void);
E_API int e_policy_shutdown(void);
#endif
#endif