2012-06-17 10:04:17 -07:00
|
|
|
#include "private.h"
|
|
|
|
|
2012-06-13 08:10:18 -07:00
|
|
|
#include <Elementary.h>
|
|
|
|
#include "options.h"
|
|
|
|
#include "options_font.h"
|
2012-06-16 07:00:00 -07:00
|
|
|
#include "options_behavior.h"
|
2012-06-17 02:26:01 -07:00
|
|
|
#include "options_video.h"
|
2012-06-17 02:43:47 -07:00
|
|
|
#include "config.h"
|
2012-06-17 13:24:23 -07:00
|
|
|
#include "termio.h"
|
2012-06-13 08:10:18 -07:00
|
|
|
|
2012-06-17 02:43:47 -07:00
|
|
|
static Evas_Object *op_frame, *op_box = NULL, *op_toolbar = NULL,
|
|
|
|
*op_opbox = NULL, *op_tbox = NULL, *op_temp = NULL;
|
2012-06-13 08:10:18 -07:00
|
|
|
static Eina_Bool op_out = EINA_FALSE;
|
2012-06-17 02:54:36 -07:00
|
|
|
static Ecore_Timer *op_del_timer = NULL;
|
2012-06-13 08:10:18 -07:00
|
|
|
|
|
|
|
static void
|
2012-06-17 10:04:17 -07:00
|
|
|
_cb_op_font(void *data, Evas_Object *obj __UNUSED__, void *event __UNUSED__)
|
2012-06-13 08:10:18 -07:00
|
|
|
{
|
|
|
|
elm_box_clear(op_opbox);
|
|
|
|
options_font(op_opbox, data);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
2012-06-17 10:04:17 -07:00
|
|
|
_cb_op_theme(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event __UNUSED__)
|
2012-06-13 08:10:18 -07:00
|
|
|
{
|
|
|
|
elm_box_clear(op_opbox);
|
|
|
|
// XXX: not done yet
|
|
|
|
}
|
|
|
|
|
2012-06-14 07:18:11 -07:00
|
|
|
static void
|
2012-06-17 10:04:17 -07:00
|
|
|
_cb_op_wallpaper(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event __UNUSED__)
|
2012-06-14 07:18:11 -07:00
|
|
|
{
|
|
|
|
elm_box_clear(op_opbox);
|
|
|
|
// XXX: not done yet
|
|
|
|
}
|
|
|
|
|
2012-06-17 02:26:01 -07:00
|
|
|
static void
|
2012-06-17 10:04:17 -07:00
|
|
|
_cb_op_video(void *data, Evas_Object *obj __UNUSED__, void *event __UNUSED__)
|
2012-06-17 02:26:01 -07:00
|
|
|
{
|
|
|
|
elm_box_clear(op_opbox);
|
|
|
|
options_video(op_opbox, data);
|
|
|
|
}
|
|
|
|
|
2012-06-13 08:10:18 -07:00
|
|
|
static void
|
2012-06-17 10:04:17 -07:00
|
|
|
_cb_op_behavior(void *data, Evas_Object *obj __UNUSED__, void *event __UNUSED__)
|
2012-06-13 08:10:18 -07:00
|
|
|
{
|
|
|
|
elm_box_clear(op_opbox);
|
2012-06-16 07:00:00 -07:00
|
|
|
options_behavior(op_opbox, data);
|
2012-06-13 08:10:18 -07:00
|
|
|
}
|
|
|
|
|
2012-06-17 02:43:47 -07:00
|
|
|
static void
|
2012-06-17 13:24:23 -07:00
|
|
|
_cb_op_tmp_chg(void *data, Evas_Object *obj __UNUSED__, void *event __UNUSED__)
|
2012-06-17 02:43:47 -07:00
|
|
|
{
|
2012-06-17 13:24:23 -07:00
|
|
|
Config *config = data;
|
|
|
|
config->temporary = elm_check_state_get(obj);
|
2012-06-17 02:43:47 -07:00
|
|
|
}
|
|
|
|
|
2012-06-17 02:54:36 -07:00
|
|
|
static Eina_Bool
|
2012-06-17 10:04:17 -07:00
|
|
|
_cb_op_del_delay(void *data __UNUSED__)
|
2012-06-17 02:54:36 -07:00
|
|
|
{
|
|
|
|
evas_object_del(op_frame);
|
|
|
|
options_font_clear();
|
|
|
|
op_frame = NULL;
|
|
|
|
op_del_timer = NULL;
|
|
|
|
elm_cache_all_flush();
|
|
|
|
return EINA_FALSE;
|
|
|
|
}
|
|
|
|
|
2012-06-13 08:10:18 -07:00
|
|
|
void
|
|
|
|
options_toggle(Evas_Object *win, Evas_Object *bg, Evas_Object *term)
|
|
|
|
{
|
|
|
|
Evas_Object *o;
|
|
|
|
|
|
|
|
if (!op_frame)
|
|
|
|
{
|
2012-06-23 23:39:54 -07:00
|
|
|
Elm_Object_Item *it_fn;
|
2012-06-17 13:24:23 -07:00
|
|
|
Config *config = termio_config_get(term);
|
2012-06-13 08:10:18 -07:00
|
|
|
|
|
|
|
op_frame = o = elm_frame_add(win);
|
|
|
|
evas_object_size_hint_weight_set(o, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
|
|
|
evas_object_size_hint_align_set(o, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
|
|
|
elm_object_text_set(o, "Options");
|
|
|
|
|
|
|
|
op_box = o = elm_box_add(win);
|
2012-06-14 07:18:11 -07:00
|
|
|
elm_box_horizontal_set(o, EINA_TRUE);
|
2012-06-13 08:10:18 -07:00
|
|
|
elm_object_content_set(op_frame, o);
|
|
|
|
evas_object_show(o);
|
|
|
|
|
2012-06-17 02:26:01 -07:00
|
|
|
op_opbox = o = elm_box_add(win);
|
|
|
|
evas_object_size_hint_weight_set(o, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
|
|
|
evas_object_size_hint_align_set(o, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
|
|
|
elm_box_pack_end(op_box, o);
|
|
|
|
evas_object_show(o);
|
|
|
|
|
2012-06-17 02:43:47 -07:00
|
|
|
op_tbox = o = elm_box_add(win);
|
2012-06-19 00:33:11 -07:00
|
|
|
evas_object_size_hint_weight_set(o, 0.0, EVAS_HINT_EXPAND);
|
|
|
|
evas_object_size_hint_align_set(o, 1.0, EVAS_HINT_FILL);
|
2012-06-17 02:43:47 -07:00
|
|
|
elm_box_pack_end(op_box, o);
|
|
|
|
evas_object_show(o);
|
|
|
|
|
2012-06-13 08:10:18 -07:00
|
|
|
op_toolbar = o = elm_toolbar_add(win);
|
2012-06-17 02:43:47 -07:00
|
|
|
evas_object_size_hint_weight_set(o, 0.0, EVAS_HINT_EXPAND);
|
|
|
|
evas_object_size_hint_align_set(o, 0.5, 0.0);
|
2012-06-14 07:18:11 -07:00
|
|
|
elm_toolbar_horizontal_set(o, EINA_FALSE);
|
2012-06-13 08:10:18 -07:00
|
|
|
elm_object_style_set(o, "item_horizontal");
|
2012-06-14 07:18:11 -07:00
|
|
|
evas_object_size_hint_weight_set(o, 0.0, 0.0);
|
|
|
|
evas_object_size_hint_align_set(o, 0.5, 0.0);
|
2012-06-13 08:10:18 -07:00
|
|
|
elm_toolbar_icon_size_set(o, 16);
|
|
|
|
elm_toolbar_shrink_mode_set(o, ELM_TOOLBAR_SHRINK_NONE);
|
|
|
|
elm_toolbar_select_mode_set(o, ELM_OBJECT_SELECT_MODE_DEFAULT);
|
|
|
|
elm_toolbar_menu_parent_set(o, win);
|
|
|
|
elm_toolbar_homogeneous_set(o, EINA_FALSE);
|
|
|
|
|
2012-06-17 02:26:01 -07:00
|
|
|
it_fn = elm_toolbar_item_append(o, "preferences-desktop-font",
|
|
|
|
"Font", _cb_op_font, term);
|
2012-06-23 23:39:54 -07:00
|
|
|
elm_toolbar_item_append(o, "preferences-desktop-theme",
|
|
|
|
"Theme", _cb_op_theme, term);
|
|
|
|
elm_toolbar_item_append(o, "preferences-desktop-wallpaper",
|
|
|
|
"Wallpaper", _cb_op_wallpaper, term);
|
|
|
|
elm_toolbar_item_append(o, "preferences-desktop-multimedia",
|
|
|
|
"Video", _cb_op_video, term);
|
|
|
|
elm_toolbar_item_append(o, "system-run",
|
|
|
|
"Behavior", _cb_op_behavior, term);
|
2012-06-13 08:10:18 -07:00
|
|
|
|
2012-06-17 02:43:47 -07:00
|
|
|
elm_box_pack_end(op_tbox, o);
|
2012-06-13 08:10:18 -07:00
|
|
|
evas_object_show(o);
|
|
|
|
|
|
|
|
elm_toolbar_item_selected_set(it_fn, EINA_TRUE);
|
2012-06-17 02:43:47 -07:00
|
|
|
|
|
|
|
op_temp = o = elm_check_add(win);
|
|
|
|
evas_object_size_hint_weight_set(o, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
|
|
|
evas_object_size_hint_align_set(o, EVAS_HINT_FILL, 1.0);
|
|
|
|
elm_object_text_set(o, "Temporary");
|
2012-06-17 13:24:23 -07:00
|
|
|
elm_check_state_set(o, config->temporary);
|
2012-06-17 02:43:47 -07:00
|
|
|
elm_box_pack_end(op_tbox, o);
|
|
|
|
evas_object_show(o);
|
2012-06-17 13:24:23 -07:00
|
|
|
evas_object_smart_callback_add(o, "changed", _cb_op_tmp_chg, config);
|
2012-06-13 08:10:18 -07:00
|
|
|
|
|
|
|
edje_object_part_swallow(bg, "terminology.options", op_frame);
|
2012-06-23 23:39:54 -07:00
|
|
|
evas_object_show(op_frame);
|
2012-06-13 08:10:18 -07:00
|
|
|
}
|
|
|
|
if (!op_out)
|
|
|
|
{
|
|
|
|
edje_object_signal_emit(bg, "options,show", "terminology");
|
|
|
|
op_out = EINA_TRUE;
|
2012-06-19 00:58:08 -07:00
|
|
|
elm_object_focus_set(op_toolbar, EINA_TRUE);
|
2012-06-17 02:54:36 -07:00
|
|
|
if (op_del_timer)
|
|
|
|
{
|
|
|
|
ecore_timer_del(op_del_timer);
|
|
|
|
op_del_timer = NULL;
|
|
|
|
}
|
2012-06-13 08:10:18 -07:00
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
edje_object_signal_emit(bg, "options,hide", "terminology");
|
|
|
|
op_out = EINA_FALSE;
|
2012-06-19 00:58:08 -07:00
|
|
|
elm_object_focus_set(op_frame, EINA_FALSE);
|
2012-06-13 08:10:18 -07:00
|
|
|
elm_object_focus_set(term, EINA_TRUE);
|
2012-06-17 02:54:36 -07:00
|
|
|
if (op_del_timer) ecore_timer_del(op_del_timer);
|
|
|
|
op_del_timer = ecore_timer_add(10.0, _cb_op_del_delay, NULL);
|
2012-06-13 08:10:18 -07:00
|
|
|
}
|
|
|
|
}
|
2012-06-23 23:39:54 -07:00
|
|
|
|
|
|
|
Eina_Bool
|
|
|
|
options_active_get(void)
|
|
|
|
{
|
|
|
|
return op_out;
|
|
|
|
}
|