diff --git a/src/modules/illume-softkey/e_mod_win.c b/src/modules/illume-softkey/e_mod_win.c new file mode 100644 index 000000000..f8664a2a2 --- /dev/null +++ b/src/modules/illume-softkey/e_mod_win.c @@ -0,0 +1,97 @@ +#include "e.h" +#include "e_mod_main.h" +#include "e_mod_config.h" +#include "e_mod_win.h" + +/* local function prototypes */ +static void _il_sk_win_cb_free(Il_Sk_Win *win); +static void _il_sk_win_cb_resize(E_Win *win); + +EAPI int +e_mod_win_init(void) +{ + return 1; +} + +EAPI int +e_mod_win_shutdown(void) +{ + return 1; +} + +EAPI Il_Sk_Win * +e_mod_win_new(void) +{ + Il_Sk_Win *swin; + E_Zone *zone; + Evas *evas; + Ecore_X_Window_State state[2]; + int num = 0; + char buff[PATH_MAX]; + + snprintf(buff, sizeof(buff), "%s/e-module-illume-softkey.edj", + il_sk_cfg->mod_dir); + + swin = E_OBJECT_ALLOC(Il_Sk_Win, IL_SK_WIN_TYPE, _il_sk_win_cb_free); + if (!swin) return NULL; + + swin->win = e_win_new(e_util_container_number_get(0)); + if (!swin->win) return NULL; + state[num++] = ECORE_X_WINDOW_STATE_SKIP_TASKBAR; + state[num++] = ECORE_X_WINDOW_STATE_SKIP_PAGER; + ecore_x_netwm_window_state_set(swin->win->evas_win, state, num); + + zone = e_util_container_zone_number_get(0, 0); + e_win_no_remember_set(swin->win, 1); + + e_win_resize_callback_set(swin->win, _il_sk_win_cb_resize); + e_win_borderless_set(swin->win, 1); + swin->win->data = swin; + e_win_title_set(swin->win, _("Illume Softkey")); + e_win_name_class_set(swin->win, "E", "Illume-Softkey"); + + evas = e_win_evas_get(swin->win); + + swin->o_base = edje_object_add(evas); + if (!e_theme_edje_object_set(swin->o_base, "base/theme/modules/illume-softkey", + "modules/illume-softkey/window")) + edje_object_file_set(swin->o_base, buff, "modules/illume-softkey/window"); + evas_object_move(swin->o_base, 0, 0); + evas_object_show(swin->o_base); + + swin->o_box = e_widget_list_add(evas, 1, 1); + edje_object_part_swallow(swin->o_base, "e.swallow.buttons", swin->o_box); + + swin->b_back = e_widget_button_add(evas, NULL, "go-previous", NULL, NULL, NULL); + e_widget_list_object_append(swin->o_box, swin->b_back, 1, 0, 0.5); + swin->b_close = e_widget_button_add(evas, NULL, "window-close", NULL, NULL, NULL); + e_widget_list_object_append(swin->o_box, swin->b_close, 1, 0, 0.5); + + e_win_size_min_set(swin->win, zone->w, 48); + e_win_sticky_set(swin->win, 1); + e_win_show(swin->win); + ecore_x_netwm_window_type_set(swin->win->evas_win, ECORE_X_WINDOW_TYPE_DOCK); + e_win_move_resize(swin->win, 0, (zone->h - 48), zone->w, 48); + return swin; +} + +/* local functions */ +static void +_il_sk_win_cb_free(Il_Sk_Win *win) +{ + if (win->b_close) evas_object_del(win->b_close); + if (win->b_back) evas_object_del(win->b_back); + if (win->o_box) evas_object_del(win->o_box); + if (win->o_base) evas_object_del(win->o_base); + e_object_del(E_OBJECT(win->win)); + E_FREE(win); +} + +static void +_il_sk_win_cb_resize(E_Win *win) +{ + Il_Sk_Win *swin; + + if (!(swin = win->data)) return; + evas_object_resize(swin->o_base, swin->win->w, swin->win->h); +} diff --git a/src/modules/illume-softkey/e_mod_win.h b/src/modules/illume-softkey/e_mod_win.h new file mode 100644 index 000000000..b9ef28edc --- /dev/null +++ b/src/modules/illume-softkey/e_mod_win.h @@ -0,0 +1,8 @@ +#ifndef E_MOD_WIN_H +#define E_MOD_WIN_H + +EAPI int e_mod_win_init(void); +EAPI int e_mod_win_shutdown(void); +EAPI Il_Sk_Win *e_mod_win_new(void); + +#endif