2019-01-25 00:41:24 -08:00
|
|
|
#ifdef HAVE_CONFIG_H
|
|
|
|
# include "elementary_config.h"
|
|
|
|
#endif
|
|
|
|
#define EO_BETA_API
|
|
|
|
#define EFL_UI_WIDGET_PROTECTED
|
|
|
|
|
2019-03-07 07:39:06 -08:00
|
|
|
#include <Efl_Ui.h>
|
2019-01-25 00:41:24 -08:00
|
|
|
#include <Elementary.h>
|
|
|
|
|
|
|
|
|
|
|
|
#define PAGE_NUM 3
|
|
|
|
|
|
|
|
|
|
|
|
/** |----------panes----------|
|
|
|
|
* ||--left---| |---right---||
|
|
|
|
* || | | layout ||
|
|
|
|
* || | ||---------|||
|
|
|
|
* ||naviframe| || pager |||
|
|
|
|
* || | || |||
|
|
|
|
* || | ||---------|||
|
|
|
|
* ||---------| |-----------||
|
|
|
|
* |-------------------------|
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
typedef enum _Page_Type {
|
|
|
|
LAYOUT,
|
|
|
|
LIST,
|
|
|
|
BUTTON
|
|
|
|
} Page_Type;
|
|
|
|
|
|
|
|
typedef enum _Pack_Type {
|
|
|
|
PACK_BEGIN,
|
|
|
|
PACK_END,
|
|
|
|
PACK_BEFORE,
|
|
|
|
PACK_AFTER,
|
|
|
|
PACK_AT,
|
2019-04-16 18:41:43 -07:00
|
|
|
UNPACK_AT,
|
|
|
|
CLEAR
|
2019-01-25 00:41:24 -08:00
|
|
|
} Pack_Type;
|
|
|
|
|
|
|
|
typedef struct _Params {
|
|
|
|
Evas_Object *navi;
|
|
|
|
Eo *pager;
|
|
|
|
Eo *transition;
|
|
|
|
Eo *indicator;
|
|
|
|
int w, h;
|
|
|
|
int padding;
|
|
|
|
int side_page_num;
|
|
|
|
int curr_page;
|
|
|
|
Eina_Bool prev_block, next_block;
|
|
|
|
Eina_Bool wfill, hfill;
|
|
|
|
} Params;
|
|
|
|
|
|
|
|
typedef struct _Page_Set_Params {
|
|
|
|
Eo *pager;
|
|
|
|
Eo *spinner;
|
|
|
|
} Page_Set_Params;
|
|
|
|
|
|
|
|
typedef struct _Pack_Params {
|
|
|
|
Pack_Type type;
|
|
|
|
Eo *pager;
|
|
|
|
Eo *pack_sp;
|
|
|
|
Eo *unpack_sp;
|
|
|
|
Eo *unpack_btn;
|
|
|
|
} Pack_Params;
|
|
|
|
|
|
|
|
typedef struct _Size_Params {
|
|
|
|
Eo *pager;
|
|
|
|
Eo *slider;
|
|
|
|
Params *params;
|
|
|
|
} Size_Params;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
static Eo *page_add(Page_Type p, Eo *parent)
|
|
|
|
{
|
|
|
|
Eo *page;
|
|
|
|
char buf[PATH_MAX];
|
|
|
|
int i;
|
|
|
|
|
|
|
|
switch (p) {
|
|
|
|
case LAYOUT:
|
|
|
|
snprintf(buf, sizeof(buf), "%s/objects/test_pager.edj",
|
|
|
|
elm_app_data_dir_get());
|
|
|
|
page = efl_add(EFL_UI_LAYOUT_CLASS, parent,
|
2019-02-27 10:17:09 -08:00
|
|
|
efl_file_set(efl_added, buf),
|
|
|
|
efl_file_key_set(efl_added, "page"),
|
|
|
|
efl_file_load(efl_added),
|
2019-01-25 00:41:24 -08:00
|
|
|
efl_text_set(efl_part(efl_added, "text"), "Layout Page"));
|
2019-02-21 09:19:45 -08:00
|
|
|
efl_gfx_hint_fill_set(page, EINA_TRUE, EINA_TRUE);
|
2019-01-25 00:41:24 -08:00
|
|
|
break;
|
|
|
|
case LIST:
|
|
|
|
page = elm_list_add(parent);
|
|
|
|
elm_list_select_mode_set(page, ELM_OBJECT_SELECT_MODE_ALWAYS);
|
|
|
|
evas_object_show(page);
|
|
|
|
for (i = 0; i < 20; i++) {
|
|
|
|
snprintf(buf, sizeof(buf), "List Page - Item #%d", i);
|
|
|
|
elm_list_item_append(page, buf, NULL, NULL, NULL, NULL);
|
|
|
|
}
|
|
|
|
evas_object_size_hint_weight_set(page, EVAS_HINT_EXPAND,
|
|
|
|
EVAS_HINT_EXPAND);
|
|
|
|
evas_object_size_hint_align_set(page, EVAS_HINT_FILL,
|
|
|
|
EVAS_HINT_FILL);
|
|
|
|
break;
|
|
|
|
case BUTTON:
|
|
|
|
page = efl_add(EFL_UI_BUTTON_CLASS, parent,
|
|
|
|
efl_text_set(efl_added, "Button Page"));
|
2019-02-21 09:19:45 -08:00
|
|
|
efl_gfx_hint_fill_set(page, EINA_TRUE, EINA_TRUE);
|
2019-01-25 00:41:24 -08:00
|
|
|
break;
|
|
|
|
default:
|
|
|
|
snprintf(buf, sizeof(buf), "%s/objects/test_pager.edj",
|
|
|
|
elm_app_data_dir_get());
|
|
|
|
page = efl_add(EFL_UI_LAYOUT_CLASS, parent,
|
2019-02-27 10:17:09 -08:00
|
|
|
efl_file_set(efl_added, buf),
|
|
|
|
efl_file_key_set(efl_added, "page"),
|
|
|
|
efl_file_load(efl_added),
|
2019-01-25 00:41:24 -08:00
|
|
|
efl_text_set(efl_part(efl_added, "text"), "Layout Page"));
|
2019-02-21 09:19:45 -08:00
|
|
|
efl_gfx_hint_fill_set(page, EINA_TRUE, EINA_TRUE);
|
2019-01-25 00:41:24 -08:00
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
|
|
|
return page;
|
|
|
|
}
|
|
|
|
|
|
|
|
static void prev_btn_cb(void *data, const Efl_Event *ev EINA_UNUSED)
|
|
|
|
{
|
|
|
|
Eo *pager = data;
|
|
|
|
int curr_page = efl_ui_pager_current_page_get(pager);
|
|
|
|
|
|
|
|
efl_ui_pager_current_page_set(pager, (curr_page - 1));
|
|
|
|
}
|
|
|
|
|
|
|
|
static void next_btn_cb(void *data, const Efl_Event *ev EINA_UNUSED)
|
|
|
|
{
|
|
|
|
Eo *pager = data;
|
|
|
|
int curr_page = efl_ui_pager_current_page_get(pager);
|
|
|
|
|
|
|
|
efl_ui_pager_current_page_set(pager, (curr_page + 1));
|
|
|
|
}
|
|
|
|
|
|
|
|
static void back_btn_cb(void *data, const Efl_Event *ev EINA_UNUSED)
|
|
|
|
{
|
|
|
|
elm_naviframe_item_pop(data);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void list_del_cb(void *data, const Efl_Event *ev EINA_UNUSED)
|
|
|
|
{
|
|
|
|
free(data);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void width_slider_cb(void *data, const Efl_Event *ev)
|
|
|
|
{
|
|
|
|
Params *params = data;
|
|
|
|
int h;
|
|
|
|
|
|
|
|
if (params->hfill) h = -1;
|
|
|
|
else h = params->h;
|
|
|
|
|
|
|
|
params->w = efl_ui_range_value_get(ev->object);
|
|
|
|
efl_ui_pager_page_size_set(params->pager, EINA_SIZE2D(params->w, h));
|
|
|
|
}
|
|
|
|
|
|
|
|
static void height_slider_cb(void *data, const Efl_Event *ev)
|
|
|
|
{
|
|
|
|
Params *params = data;
|
|
|
|
int w;
|
|
|
|
|
|
|
|
if (params->wfill) w = -1;
|
|
|
|
else w = params->w;
|
|
|
|
|
|
|
|
params->h = efl_ui_range_value_get(ev->object);
|
|
|
|
efl_ui_pager_page_size_set(params->pager, EINA_SIZE2D(w, params->h));
|
|
|
|
}
|
|
|
|
|
|
|
|
static void width_check_cb(void *data, const Efl_Event *ev)
|
|
|
|
{
|
|
|
|
Size_Params *params = data;
|
|
|
|
Eina_Bool ck = elm_check_selected_get(ev->object);
|
|
|
|
int w, h;
|
|
|
|
|
|
|
|
elm_object_disabled_set(params->slider, ck);
|
|
|
|
|
|
|
|
params->params->wfill = ck;
|
|
|
|
|
|
|
|
if (params->params->wfill) w = -1;
|
|
|
|
else w = params->params->w;
|
|
|
|
|
|
|
|
if (params->params->hfill) h = -1;
|
|
|
|
else h = params->params->h;
|
|
|
|
|
|
|
|
efl_ui_pager_page_size_set(params->pager, EINA_SIZE2D(w, h));
|
|
|
|
}
|
|
|
|
|
|
|
|
static void height_check_cb(void *data, const Efl_Event *ev)
|
|
|
|
{
|
|
|
|
Size_Params *params = data;
|
|
|
|
Eina_Bool ck = elm_check_selected_get(ev->object);
|
|
|
|
int w, h;
|
|
|
|
|
|
|
|
elm_object_disabled_set(params->slider, ck);
|
|
|
|
|
|
|
|
params->params->hfill = ck;
|
|
|
|
|
|
|
|
if (params->params->wfill) w = -1;
|
|
|
|
else w = params->params->w;
|
|
|
|
|
|
|
|
if (params->params->hfill) h = -1;
|
|
|
|
else h = params->params->h;
|
|
|
|
|
|
|
|
efl_ui_pager_page_size_set(params->pager, EINA_SIZE2D(w, h));
|
|
|
|
}
|
|
|
|
|
|
|
|
static void check_del_cb(void *data, const Efl_Event *ev EINA_UNUSED)
|
|
|
|
{
|
|
|
|
free(data);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void padding_slider_cb(void *data, const Efl_Event *ev)
|
|
|
|
{
|
|
|
|
Params *params = (Params *) data;
|
|
|
|
|
|
|
|
params->padding = efl_ui_range_value_get(ev->object);
|
|
|
|
efl_ui_pager_padding_set(params->pager, params->padding);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void side_page_num_slider_cb(void *data, const Efl_Event *ev)
|
|
|
|
{
|
|
|
|
Params *params = (Params *) data;
|
|
|
|
|
|
|
|
params->side_page_num = efl_ui_range_value_get(ev->object);
|
|
|
|
efl_page_transition_scroll_side_page_num_set(params->transition,
|
|
|
|
params->side_page_num);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void pack_btn_cb(void *data, const Efl_Event *ev EINA_UNUSED)
|
|
|
|
{
|
|
|
|
Pack_Params *param = data;
|
|
|
|
Eo *pager = param->pager;
|
2019-03-30 09:54:19 -07:00
|
|
|
Eo *page = NULL, *curr_page;
|
2019-01-25 00:41:24 -08:00
|
|
|
int index, cnt;
|
|
|
|
|
2019-04-16 18:41:43 -07:00
|
|
|
if ((param->type != UNPACK_AT) && (param->type != CLEAR)) {
|
2019-01-25 00:41:24 -08:00
|
|
|
index = efl_content_count(pager);
|
|
|
|
|
|
|
|
switch (index % 3) {
|
|
|
|
case 0:
|
|
|
|
page = page_add(LAYOUT, pager);
|
|
|
|
break;
|
|
|
|
case 1:
|
|
|
|
page = page_add(LIST, pager);
|
|
|
|
break;
|
|
|
|
case 2:
|
|
|
|
page = page_add(BUTTON, pager);
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
page = page_add(LAYOUT, pager);
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
switch (param->type) {
|
|
|
|
case PACK_BEGIN:
|
|
|
|
efl_pack_begin(pager, page);
|
|
|
|
break;
|
|
|
|
case PACK_END:
|
|
|
|
efl_pack_end(pager, page);
|
|
|
|
break;
|
|
|
|
case PACK_BEFORE:
|
|
|
|
index = efl_ui_pager_current_page_get(pager);
|
|
|
|
curr_page = efl_pack_content_get(pager, index);
|
|
|
|
efl_pack_before(pager, page, curr_page);
|
|
|
|
break;
|
|
|
|
case PACK_AFTER:
|
|
|
|
index = efl_ui_pager_current_page_get(pager);
|
|
|
|
curr_page = efl_pack_content_get(pager, index);
|
|
|
|
efl_pack_after(pager, page, curr_page);
|
|
|
|
break;
|
|
|
|
case PACK_AT:
|
|
|
|
index = efl_ui_range_value_get(param->pack_sp);
|
|
|
|
efl_pack_at(pager, page, index);
|
|
|
|
break;
|
|
|
|
case UNPACK_AT:
|
|
|
|
index = efl_ui_range_value_get(param->unpack_sp);
|
2019-04-16 18:41:43 -07:00
|
|
|
page = efl_pack_unpack_at(pager, index);
|
2019-01-25 00:41:24 -08:00
|
|
|
efl_del(page);
|
|
|
|
break;
|
2019-04-16 18:41:43 -07:00
|
|
|
case CLEAR:
|
|
|
|
efl_pack_clear(pager);
|
|
|
|
break;
|
2019-01-25 00:41:24 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
cnt = efl_content_count(pager);
|
|
|
|
|
|
|
|
index = efl_ui_range_value_get(param->pack_sp);
|
|
|
|
if (index > cnt)
|
|
|
|
efl_ui_range_value_set(param->pack_sp, cnt);
|
2019-06-19 00:55:51 -07:00
|
|
|
efl_ui_range_limits_set(param->pack_sp, 0, cnt);
|
2019-01-25 00:41:24 -08:00
|
|
|
|
|
|
|
if (cnt > 0)
|
|
|
|
{
|
|
|
|
elm_object_disabled_set(param->unpack_btn, EINA_FALSE);
|
|
|
|
elm_object_disabled_set(param->unpack_sp, EINA_FALSE);
|
|
|
|
|
|
|
|
cnt -= 1;
|
|
|
|
index = efl_ui_range_value_get(param->unpack_sp);
|
|
|
|
if (index > cnt)
|
|
|
|
efl_ui_range_value_set(param->unpack_sp, cnt);
|
2019-06-19 00:55:51 -07:00
|
|
|
efl_ui_range_limits_set(param->unpack_sp, 0, cnt);
|
2019-01-25 00:41:24 -08:00
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
elm_object_disabled_set(param->unpack_btn, EINA_TRUE);
|
|
|
|
elm_object_disabled_set(param->unpack_sp, EINA_TRUE);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
static void pack_btn_del_cb(void *data, const Efl_Event *ev EINA_UNUSED)
|
|
|
|
{
|
|
|
|
free(data);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void page_set_btn_cb(void *data, const Efl_Event *ev EINA_UNUSED)
|
|
|
|
{
|
|
|
|
Page_Set_Params *psp = data;
|
|
|
|
|
|
|
|
efl_ui_pager_current_page_set(psp->pager,
|
|
|
|
efl_ui_range_value_get(psp->spinner));
|
|
|
|
}
|
|
|
|
|
|
|
|
static void page_set_btn_del_cb(void *data, const Efl_Event *ev EINA_UNUSED)
|
|
|
|
{
|
|
|
|
free(data);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void prev_block_check_cb(void *data, const Efl_Event *ev)
|
|
|
|
{
|
|
|
|
Eo *pager = data;
|
|
|
|
Eina_Bool prev, next;
|
|
|
|
|
efl_ui_check: make it undependend of nstate
Summary:
check can only display 2 states, and is only designed to do so.
Additionally, nstate inherits from button, which
brings in autorepeat, which is hileriously broken on check and cannot
really work.
Right now there is not even support in the theme for clickable. So its a
good idea to get rid of this for now IMO.
ref T7865
Reviewers: stefan_schmidt, zmike, segfaultxavi, akanad, YOhoho
Reviewed By: zmike
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Maniphest Tasks: T7865, T7867
Differential Revision: https://phab.enlightenment.org/D9018
2019-06-13 06:21:38 -07:00
|
|
|
prev = efl_ui_check_selected_get(ev->object);
|
2019-01-25 00:41:24 -08:00
|
|
|
|
|
|
|
efl_ui_pager_scroll_block_get(pager, NULL, &next);
|
|
|
|
efl_ui_pager_scroll_block_set(pager, prev, next);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void next_block_check_cb(void *data, const Efl_Event *ev)
|
|
|
|
{
|
|
|
|
Eo *pager = data;
|
|
|
|
Eina_Bool prev, next;
|
|
|
|
|
efl_ui_check: make it undependend of nstate
Summary:
check can only display 2 states, and is only designed to do so.
Additionally, nstate inherits from button, which
brings in autorepeat, which is hileriously broken on check and cannot
really work.
Right now there is not even support in the theme for clickable. So its a
good idea to get rid of this for now IMO.
ref T7865
Reviewers: stefan_schmidt, zmike, segfaultxavi, akanad, YOhoho
Reviewed By: zmike
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Maniphest Tasks: T7865, T7867
Differential Revision: https://phab.enlightenment.org/D9018
2019-06-13 06:21:38 -07:00
|
|
|
next = efl_ui_check_selected_get(ev->object);
|
2019-01-25 00:41:24 -08:00
|
|
|
|
|
|
|
efl_ui_pager_scroll_block_get(pager, &prev, NULL);
|
|
|
|
efl_ui_pager_scroll_block_set(pager, prev, next);
|
|
|
|
}
|
|
|
|
|
2019-04-16 18:41:43 -07:00
|
|
|
static void loop_radio_cb(void *data, const Efl_Event *ev)
|
2019-01-25 00:41:24 -08:00
|
|
|
{
|
|
|
|
Eo *pager = data;
|
efl_ui_check: make it undependend of nstate
Summary:
check can only display 2 states, and is only designed to do so.
Additionally, nstate inherits from button, which
brings in autorepeat, which is hileriously broken on check and cannot
really work.
Right now there is not even support in the theme for clickable. So its a
good idea to get rid of this for now IMO.
ref T7865
Reviewers: stefan_schmidt, zmike, segfaultxavi, akanad, YOhoho
Reviewed By: zmike
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Maniphest Tasks: T7865, T7867
Differential Revision: https://phab.enlightenment.org/D9018
2019-06-13 06:21:38 -07:00
|
|
|
int state = efl_ui_radio_group_value_get(ev->object);
|
2019-01-25 00:41:24 -08:00
|
|
|
|
|
|
|
efl_ui_pager_loop_mode_set(pager, state);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void indicator_icon_btn_cb(void *data,
|
|
|
|
const Efl_Event *ev EINA_UNUSED)
|
|
|
|
{
|
|
|
|
Params *params = data;
|
|
|
|
|
|
|
|
params->indicator = efl_add(EFL_PAGE_INDICATOR_ICON_CLASS, params->pager);
|
|
|
|
efl_ui_pager_indicator_set(params->pager, params->indicator);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void indicator_none_btn_cb(void *data,
|
|
|
|
const Efl_Event *ev EINA_UNUSED)
|
|
|
|
{
|
|
|
|
Params *params = data;
|
|
|
|
efl_ui_pager_indicator_set(params->pager, NULL);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void page_size_cb(void *data,
|
|
|
|
Evas_Object *obj EINA_UNUSED,
|
|
|
|
void *event_info EINA_UNUSED)
|
|
|
|
{
|
|
|
|
Params *params = data;
|
|
|
|
Size_Params *size_params;
|
|
|
|
Evas_Object *navi = params->navi;
|
|
|
|
Eo *btn, *box, *fr, *inbox, *ck, *sl;
|
|
|
|
|
|
|
|
btn = efl_add(EFL_UI_BUTTON_CLASS, navi,
|
|
|
|
efl_text_set(efl_added, "Back"),
|
|
|
|
efl_event_callback_add(efl_added, EFL_UI_EVENT_CLICKED,
|
|
|
|
back_btn_cb, navi));
|
|
|
|
|
|
|
|
box = efl_add(EFL_UI_BOX_CLASS, navi,
|
|
|
|
elm_naviframe_item_push(navi, "Page Size", btn, NULL,
|
|
|
|
efl_added, NULL));
|
|
|
|
|
|
|
|
// Width
|
|
|
|
fr = elm_frame_add(box);
|
|
|
|
elm_object_text_set(fr, "Width");
|
2019-02-21 09:19:45 -08:00
|
|
|
efl_gfx_hint_align_set(fr, -1, -1);
|
|
|
|
efl_gfx_hint_weight_set(fr, 1, 1);
|
2019-01-25 00:41:24 -08:00
|
|
|
efl_pack(box, fr);
|
|
|
|
efl_gfx_entity_visible_set(fr, 1);
|
|
|
|
|
|
|
|
inbox = efl_add(EFL_UI_BOX_CLASS, fr,
|
|
|
|
efl_content_set(fr, efl_added));
|
|
|
|
|
|
|
|
ck = elm_check_add(inbox);
|
|
|
|
elm_object_text_set(ck, "Fill");
|
|
|
|
efl_pack_end(inbox, ck);
|
|
|
|
efl_gfx_entity_visible_set(ck, 1);
|
|
|
|
|
|
|
|
sl = efl_add(EFL_UI_SLIDER_CLASS, inbox,
|
2019-06-19 00:55:51 -07:00
|
|
|
efl_ui_range_limits_set(efl_added, 100, 200),
|
2019-01-25 00:41:24 -08:00
|
|
|
efl_ui_range_value_set(efl_added, params->w),
|
2019-02-21 09:19:45 -08:00
|
|
|
efl_gfx_hint_size_min_set(efl_added, EINA_SIZE2D(100, 0)),
|
2019-01-25 00:41:24 -08:00
|
|
|
efl_event_callback_add(efl_added, EFL_UI_SLIDER_EVENT_CHANGED,
|
|
|
|
width_slider_cb, params),
|
|
|
|
efl_pack_end(inbox, efl_added));
|
|
|
|
|
|
|
|
size_params = calloc(1, sizeof(Size_Params));
|
2019-02-13 23:08:33 -08:00
|
|
|
if (!size_params) return;
|
|
|
|
|
2019-01-25 00:41:24 -08:00
|
|
|
size_params->slider = sl;
|
|
|
|
size_params->pager = params->pager;
|
|
|
|
size_params->params = params;
|
|
|
|
|
|
|
|
efl_event_callback_add(ck, EFL_UI_CHECK_EVENT_CHANGED, width_check_cb,
|
|
|
|
size_params);
|
|
|
|
efl_event_callback_add(ck, EFL_EVENT_DEL, check_del_cb, size_params);
|
|
|
|
|
|
|
|
if (params->wfill)
|
|
|
|
{
|
|
|
|
elm_check_state_set(ck, EINA_TRUE);
|
|
|
|
elm_object_disabled_set(sl, EINA_TRUE);
|
|
|
|
}
|
|
|
|
|
|
|
|
// Height
|
|
|
|
fr = elm_frame_add(box);
|
|
|
|
elm_object_text_set(fr, "Height");
|
2019-02-21 09:19:45 -08:00
|
|
|
efl_gfx_hint_align_set(fr, -1, -1);
|
|
|
|
efl_gfx_hint_weight_set(fr, 1, 1);
|
2019-01-25 00:41:24 -08:00
|
|
|
efl_pack(box, fr);
|
|
|
|
efl_gfx_entity_visible_set(fr, 1);
|
|
|
|
|
|
|
|
inbox = efl_add(EFL_UI_BOX_CLASS, fr,
|
|
|
|
efl_content_set(fr, efl_added));
|
|
|
|
|
|
|
|
ck = elm_check_add(inbox);
|
|
|
|
elm_object_text_set(ck, "Fill");
|
|
|
|
efl_pack_end(inbox, ck);
|
|
|
|
efl_gfx_entity_visible_set(ck, 1);
|
|
|
|
|
|
|
|
sl = efl_add(EFL_UI_SLIDER_CLASS, inbox,
|
2019-06-19 00:55:51 -07:00
|
|
|
efl_ui_range_limits_set(efl_added, 100, 300),
|
2019-01-25 00:41:24 -08:00
|
|
|
efl_ui_range_value_set(efl_added, params->h),
|
2019-02-21 09:19:45 -08:00
|
|
|
efl_gfx_hint_size_min_set(efl_added, EINA_SIZE2D(100, 0)),
|
2019-01-25 00:41:24 -08:00
|
|
|
efl_event_callback_add(efl_added, EFL_UI_SLIDER_EVENT_CHANGED,
|
|
|
|
height_slider_cb, params),
|
|
|
|
efl_pack_end(inbox, efl_added));
|
|
|
|
|
|
|
|
size_params = calloc(1, sizeof(Size_Params));
|
2019-02-13 23:08:33 -08:00
|
|
|
if (!size_params) return;
|
|
|
|
|
2019-01-25 00:41:24 -08:00
|
|
|
size_params->slider = sl;
|
|
|
|
size_params->pager = params->pager;
|
|
|
|
size_params->params = params;
|
|
|
|
|
|
|
|
efl_event_callback_add(ck, EFL_UI_CHECK_EVENT_CHANGED, height_check_cb,
|
|
|
|
size_params);
|
|
|
|
efl_event_callback_add(ck, EFL_EVENT_DEL, check_del_cb, size_params);
|
|
|
|
|
|
|
|
if (params->hfill)
|
|
|
|
{
|
|
|
|
elm_check_state_set(ck, EINA_TRUE);
|
|
|
|
elm_object_disabled_set(sl, EINA_TRUE);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
static void padding_cb(void *data,
|
|
|
|
Evas_Object *obj EINA_UNUSED,
|
|
|
|
void *event_info EINA_UNUSED)
|
|
|
|
{
|
|
|
|
Params *params = (Params *)data;
|
|
|
|
Evas_Object *navi = params->navi;
|
|
|
|
Eo *btn, *box;
|
|
|
|
|
|
|
|
btn = efl_add(EFL_UI_BUTTON_CLASS, navi,
|
|
|
|
efl_text_set(efl_added, "Back"),
|
|
|
|
efl_event_callback_add(efl_added, EFL_UI_EVENT_CLICKED,
|
|
|
|
back_btn_cb, navi));
|
|
|
|
|
|
|
|
box = efl_add(EFL_UI_BOX_CLASS, navi,
|
2019-04-24 06:41:39 -07:00
|
|
|
efl_gfx_arrangement_content_padding_set(efl_added, 10, 10, EINA_TRUE),
|
2019-01-25 00:41:24 -08:00
|
|
|
elm_naviframe_item_push(navi, "Padding Size", btn, NULL,
|
|
|
|
efl_added, NULL));
|
|
|
|
|
|
|
|
efl_add(EFL_UI_SLIDER_CLASS, box,
|
2019-06-19 00:55:51 -07:00
|
|
|
efl_ui_range_limits_set(efl_added, 0, 50),
|
2019-01-25 00:41:24 -08:00
|
|
|
efl_ui_range_value_set(efl_added, params->padding),
|
2019-02-21 09:19:45 -08:00
|
|
|
efl_gfx_hint_size_min_set(efl_added, EINA_SIZE2D(100, 0)),
|
2019-01-25 00:41:24 -08:00
|
|
|
efl_event_callback_add(efl_added, EFL_UI_SLIDER_EVENT_CHANGED,
|
|
|
|
padding_slider_cb, params),
|
|
|
|
efl_pack_end(box, efl_added));
|
|
|
|
}
|
|
|
|
|
|
|
|
static void side_page_num_cb(void *data,
|
|
|
|
Evas_Object *obj EINA_UNUSED,
|
|
|
|
void *event_info EINA_UNUSED)
|
|
|
|
{
|
|
|
|
Params *params = (Params *)data;
|
|
|
|
Evas_Object *navi = params->navi;
|
|
|
|
Eo *btn, *box;
|
|
|
|
|
|
|
|
btn = efl_add(EFL_UI_BUTTON_CLASS, navi,
|
|
|
|
efl_text_set(efl_added, "Back"),
|
|
|
|
efl_event_callback_add(efl_added, EFL_UI_EVENT_CLICKED,
|
|
|
|
back_btn_cb, navi));
|
|
|
|
|
|
|
|
box = efl_add(EFL_UI_BOX_CLASS, navi,
|
2019-04-24 06:41:39 -07:00
|
|
|
efl_gfx_arrangement_content_padding_set(efl_added, 10, 10, EINA_TRUE),
|
2019-01-25 00:41:24 -08:00
|
|
|
elm_naviframe_item_push(navi, "Side Page Num", btn, NULL,
|
|
|
|
efl_added, NULL));
|
|
|
|
|
|
|
|
efl_add(EFL_UI_SLIDER_CLASS, box,
|
|
|
|
efl_text_set(efl_added, "side page num"),
|
|
|
|
efl_ui_format_string_set(efl_part(efl_added, "indicator"), "%1.0f"),
|
2019-06-19 00:55:51 -07:00
|
|
|
efl_ui_range_limits_set(efl_added, 0, 3),
|
2019-01-25 00:41:24 -08:00
|
|
|
efl_ui_range_value_set(efl_added, params->side_page_num),
|
2019-05-24 09:30:31 -07:00
|
|
|
efl_ui_layout_orientation_set(efl_added, EFL_UI_LAYOUT_ORIENTATION_VERTICAL),
|
2019-02-21 09:19:45 -08:00
|
|
|
efl_gfx_hint_weight_set(efl_added, 1, 1),
|
|
|
|
efl_gfx_hint_align_set(efl_added, -1, -1),
|
2019-01-25 00:41:24 -08:00
|
|
|
efl_event_callback_add(efl_added, EFL_UI_SLIDER_EVENT_CHANGED,
|
|
|
|
side_page_num_slider_cb, params),
|
|
|
|
efl_pack_end(box, efl_added));
|
|
|
|
}
|
|
|
|
|
|
|
|
static void pack_cb(void *data,
|
|
|
|
Evas_Object *obj EINA_UNUSED,
|
|
|
|
void *event_info EINA_UNUSED)
|
|
|
|
{
|
|
|
|
Params *params = (Params *)data;
|
|
|
|
Evas_Object *navi = params->navi;
|
|
|
|
Eo *pager = params->pager;
|
|
|
|
Eo *btn, *box, *in_box1, *in_box2, *sp1, *sp2;
|
|
|
|
Pack_Params *pack_param;
|
|
|
|
|
|
|
|
btn = efl_add(EFL_UI_BUTTON_CLASS, navi,
|
|
|
|
efl_text_set(efl_added, "Back"),
|
|
|
|
efl_event_callback_add(efl_added, EFL_UI_EVENT_CLICKED,
|
|
|
|
back_btn_cb, navi));
|
|
|
|
|
|
|
|
box = efl_add(EFL_UI_BOX_CLASS, navi,
|
2019-04-24 06:41:39 -07:00
|
|
|
efl_gfx_arrangement_content_padding_set(efl_added, 10, 10, EINA_TRUE),
|
2019-01-25 00:41:24 -08:00
|
|
|
elm_naviframe_item_push(navi, "Pack", btn, NULL,
|
|
|
|
efl_added, NULL));
|
|
|
|
|
|
|
|
in_box1 = efl_add(EFL_UI_BOX_CLASS, box,
|
2019-04-24 06:41:39 -07:00
|
|
|
efl_gfx_arrangement_content_padding_set(efl_added, 10, 10, EINA_TRUE),
|
2019-05-24 09:30:31 -07:00
|
|
|
efl_ui_layout_orientation_set(efl_added, EFL_UI_LAYOUT_ORIENTATION_HORIZONTAL));
|
2019-01-25 00:41:24 -08:00
|
|
|
|
|
|
|
sp1 = efl_add(EFL_UI_SPIN_BUTTON_CLASS, in_box1,
|
2019-06-19 00:55:51 -07:00
|
|
|
efl_ui_range_limits_set(efl_added, 0,
|
2019-01-25 00:41:24 -08:00
|
|
|
efl_content_count(pager)),
|
|
|
|
efl_ui_range_value_set(efl_added,
|
|
|
|
efl_ui_pager_current_page_get(pager)));
|
|
|
|
|
|
|
|
in_box2 = efl_add(EFL_UI_BOX_CLASS, box,
|
2019-04-24 06:41:39 -07:00
|
|
|
efl_gfx_arrangement_content_padding_set(efl_added, 10, 10, EINA_TRUE),
|
2019-05-24 09:30:31 -07:00
|
|
|
efl_ui_layout_orientation_set(efl_added, EFL_UI_LAYOUT_ORIENTATION_HORIZONTAL));
|
2019-01-25 00:41:24 -08:00
|
|
|
|
|
|
|
sp2 = efl_add(EFL_UI_SPIN_BUTTON_CLASS, in_box2);
|
|
|
|
|
|
|
|
btn = efl_add(EFL_UI_BUTTON_CLASS, in_box2,
|
|
|
|
efl_text_set(efl_added, "Unpack At"));
|
|
|
|
|
|
|
|
// Pack Begin
|
|
|
|
pack_param = calloc(1, sizeof(Pack_Params));
|
2019-02-13 23:08:33 -08:00
|
|
|
if (!pack_param) return;
|
|
|
|
|
2019-01-25 00:41:24 -08:00
|
|
|
pack_param->pager = pager;
|
|
|
|
pack_param->pack_sp = sp1;
|
|
|
|
pack_param->unpack_sp = sp2;
|
|
|
|
pack_param->unpack_btn = btn;
|
|
|
|
pack_param->type = PACK_BEGIN;
|
|
|
|
|
|
|
|
efl_add(EFL_UI_BUTTON_CLASS, box,
|
|
|
|
efl_text_set(efl_added, "Pack Begin"),
|
|
|
|
efl_event_callback_add(efl_added, EFL_UI_EVENT_CLICKED,
|
|
|
|
pack_btn_cb, pack_param),
|
|
|
|
efl_event_callback_add(efl_added, EFL_EVENT_DEL,
|
|
|
|
pack_btn_del_cb, pack_param),
|
|
|
|
efl_pack_end(box, efl_added));
|
|
|
|
|
|
|
|
// Pack End
|
|
|
|
pack_param = calloc(1, sizeof(Pack_Params));
|
2019-02-13 23:08:33 -08:00
|
|
|
if (!pack_param) return;
|
|
|
|
|
2019-01-25 00:41:24 -08:00
|
|
|
pack_param->pager = pager;
|
|
|
|
pack_param->pack_sp = sp1;
|
|
|
|
pack_param->unpack_sp = sp2;
|
|
|
|
pack_param->unpack_btn = btn;
|
|
|
|
pack_param->type = PACK_END;
|
|
|
|
|
|
|
|
efl_add(EFL_UI_BUTTON_CLASS, box,
|
|
|
|
efl_text_set(efl_added, "Pack End"),
|
|
|
|
efl_event_callback_add(efl_added, EFL_UI_EVENT_CLICKED,
|
|
|
|
pack_btn_cb, pack_param),
|
|
|
|
efl_event_callback_add(efl_added, EFL_EVENT_DEL,
|
|
|
|
pack_btn_del_cb, pack_param),
|
|
|
|
efl_pack_end(box, efl_added));
|
|
|
|
|
|
|
|
// Pack Before
|
|
|
|
pack_param = calloc(1, sizeof(Pack_Params));
|
2019-02-13 23:08:33 -08:00
|
|
|
if (!pack_param) return;
|
|
|
|
|
2019-01-25 00:41:24 -08:00
|
|
|
pack_param->pager = pager;
|
|
|
|
pack_param->pack_sp = sp1;
|
|
|
|
pack_param->unpack_sp = sp2;
|
|
|
|
pack_param->unpack_btn = btn;
|
|
|
|
pack_param->type = PACK_BEFORE;
|
|
|
|
|
|
|
|
efl_add(EFL_UI_BUTTON_CLASS, box,
|
|
|
|
efl_text_set(efl_added, "Pack Before Current Page"),
|
|
|
|
efl_event_callback_add(efl_added, EFL_UI_EVENT_CLICKED,
|
|
|
|
pack_btn_cb, pack_param),
|
|
|
|
efl_event_callback_add(efl_added, EFL_EVENT_DEL,
|
|
|
|
pack_btn_del_cb, pack_param),
|
|
|
|
efl_pack_end(box, efl_added));
|
|
|
|
|
|
|
|
// Pack After
|
|
|
|
pack_param = calloc(1, sizeof(Pack_Params));
|
2019-02-13 23:08:33 -08:00
|
|
|
if (!pack_param) return;
|
|
|
|
|
2019-01-25 00:41:24 -08:00
|
|
|
pack_param->pager = pager;
|
|
|
|
pack_param->pack_sp = sp1;
|
|
|
|
pack_param->unpack_sp = sp2;
|
|
|
|
pack_param->unpack_btn = btn;
|
|
|
|
pack_param->type = PACK_AFTER;
|
|
|
|
|
|
|
|
efl_add(EFL_UI_BUTTON_CLASS, box,
|
|
|
|
efl_text_set(efl_added, "Pack After Current Page"),
|
|
|
|
efl_event_callback_add(efl_added, EFL_UI_EVENT_CLICKED,
|
|
|
|
pack_btn_cb, pack_param),
|
|
|
|
efl_event_callback_add(efl_added, EFL_EVENT_DEL,
|
|
|
|
pack_btn_del_cb, pack_param),
|
|
|
|
efl_pack_end(box, efl_added));
|
|
|
|
|
|
|
|
// Pack At
|
|
|
|
pack_param = calloc(1, sizeof(Pack_Params));
|
2019-02-13 23:08:33 -08:00
|
|
|
if (!pack_param) return;
|
|
|
|
|
2019-01-25 00:41:24 -08:00
|
|
|
pack_param->pager = pager;
|
|
|
|
pack_param->pack_sp = sp1;
|
|
|
|
pack_param->unpack_sp = sp2;
|
|
|
|
pack_param->unpack_btn = btn;
|
|
|
|
pack_param->type = PACK_AT;
|
|
|
|
|
|
|
|
efl_add(EFL_UI_BUTTON_CLASS, in_box1,
|
|
|
|
efl_text_set(efl_added, "Pack At"),
|
|
|
|
efl_event_callback_add(efl_added, EFL_UI_EVENT_CLICKED,
|
|
|
|
pack_btn_cb, pack_param),
|
|
|
|
efl_event_callback_add(efl_added, EFL_EVENT_DEL,
|
|
|
|
pack_btn_del_cb, pack_param),
|
|
|
|
efl_pack_end(in_box1, efl_added));
|
|
|
|
|
|
|
|
efl_pack_end(box, in_box1);
|
|
|
|
efl_pack_end(in_box1, sp1);
|
|
|
|
|
|
|
|
// Unpack At
|
|
|
|
pack_param = calloc(1, sizeof(Pack_Params));
|
2019-02-13 23:08:33 -08:00
|
|
|
if (!pack_param) return;
|
|
|
|
|
2019-01-25 00:41:24 -08:00
|
|
|
pack_param->pager = pager;
|
|
|
|
pack_param->pack_sp = sp1;
|
|
|
|
pack_param->unpack_sp = sp2;
|
|
|
|
pack_param->unpack_btn = btn;
|
|
|
|
pack_param->type = UNPACK_AT;
|
|
|
|
|
|
|
|
efl_event_callback_add(btn, EFL_UI_EVENT_CLICKED,
|
|
|
|
pack_btn_cb, pack_param);
|
|
|
|
efl_event_callback_add(btn, EFL_EVENT_DEL,
|
|
|
|
pack_btn_del_cb, pack_param);
|
|
|
|
|
|
|
|
if (efl_content_count(pager) > 0)
|
|
|
|
{
|
2019-06-19 00:55:51 -07:00
|
|
|
efl_ui_range_limits_set(sp2, 0,
|
2019-01-25 00:41:24 -08:00
|
|
|
(efl_content_count(pager) - 1));
|
|
|
|
efl_ui_range_value_set(sp2,
|
|
|
|
efl_ui_pager_current_page_get(pager));
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
elm_object_disabled_set(btn, EINA_TRUE);
|
|
|
|
elm_object_disabled_set(sp2, EINA_TRUE);
|
|
|
|
}
|
|
|
|
|
|
|
|
efl_pack_end(box, in_box2);
|
|
|
|
efl_pack_end(in_box2, btn);
|
|
|
|
efl_pack_end(in_box2, sp2);
|
2019-04-16 18:41:43 -07:00
|
|
|
|
|
|
|
// Clear
|
|
|
|
pack_param = calloc(1, sizeof(Pack_Params));
|
|
|
|
if (!pack_param) return;
|
|
|
|
|
|
|
|
pack_param->pager = pager;
|
|
|
|
pack_param->pack_sp = sp1;
|
|
|
|
pack_param->unpack_sp = sp2;
|
|
|
|
pack_param->unpack_btn = btn;
|
|
|
|
pack_param->type = CLEAR;
|
|
|
|
|
|
|
|
efl_add(EFL_UI_BUTTON_CLASS, box,
|
|
|
|
efl_text_set(efl_added, "Clear"),
|
|
|
|
efl_event_callback_add(efl_added, EFL_UI_EVENT_CLICKED,
|
|
|
|
pack_btn_cb, pack_param),
|
|
|
|
efl_event_callback_add(efl_added, EFL_EVENT_DEL,
|
|
|
|
pack_btn_del_cb, pack_param),
|
|
|
|
efl_pack_end(box, efl_added));
|
2019-01-25 00:41:24 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
static void current_page_cb(void *data,
|
|
|
|
Evas_Object *obj EINA_UNUSED,
|
|
|
|
void *event_info EINA_UNUSED)
|
|
|
|
{
|
|
|
|
Params *params = (Params *)data;
|
|
|
|
Evas_Object *navi = params->navi;
|
|
|
|
Eo *pager = params->pager;
|
|
|
|
Eo *btn, *box, *sp;
|
|
|
|
Page_Set_Params *psp = calloc(1, sizeof(Page_Set_Params));
|
2019-02-13 23:08:33 -08:00
|
|
|
if (!psp) return;
|
2019-01-25 00:41:24 -08:00
|
|
|
|
|
|
|
btn = efl_add(EFL_UI_BUTTON_CLASS, navi,
|
|
|
|
efl_text_set(efl_added, "Back"),
|
|
|
|
efl_event_callback_add(efl_added, EFL_UI_EVENT_CLICKED,
|
|
|
|
back_btn_cb, navi));
|
|
|
|
|
|
|
|
box = efl_add(EFL_UI_BOX_CLASS, navi,
|
2019-04-24 06:41:39 -07:00
|
|
|
efl_gfx_arrangement_content_padding_set(efl_added, 10, 10, EINA_TRUE),
|
2019-01-25 00:41:24 -08:00
|
|
|
elm_naviframe_item_push(navi, "Current Page", btn, NULL,
|
|
|
|
efl_added, NULL));
|
|
|
|
|
|
|
|
btn = efl_add(EFL_UI_BUTTON_CLASS, box,
|
|
|
|
efl_text_set(efl_added, "Set Current Page As"),
|
|
|
|
efl_pack_end(box, efl_added));
|
|
|
|
|
|
|
|
sp = efl_add(EFL_UI_SPIN_BUTTON_CLASS, box,
|
2019-02-21 09:19:45 -08:00
|
|
|
efl_gfx_hint_align_set(efl_added, -1, -1),
|
2019-01-25 00:41:24 -08:00
|
|
|
efl_pack_end(box, efl_added));
|
|
|
|
|
|
|
|
if (efl_content_count(pager) > 0)
|
|
|
|
{
|
2019-06-19 00:55:51 -07:00
|
|
|
efl_ui_range_limits_set(sp, 0,
|
2019-01-25 00:41:24 -08:00
|
|
|
(efl_content_count(pager) - 1));
|
|
|
|
efl_ui_range_value_set(sp,
|
|
|
|
efl_ui_pager_current_page_get(pager));
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
elm_object_disabled_set(btn, EINA_TRUE);
|
|
|
|
elm_object_disabled_set(sp, EINA_TRUE);
|
|
|
|
}
|
|
|
|
|
|
|
|
psp->pager = pager;
|
|
|
|
psp->spinner = sp;
|
|
|
|
|
|
|
|
efl_event_callback_add(btn, EFL_UI_EVENT_CLICKED, page_set_btn_cb, psp);
|
|
|
|
efl_event_callback_add(btn, EFL_EVENT_DEL, page_set_btn_del_cb, psp);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void scroll_block_cb(void *data,
|
|
|
|
Evas_Object *obj EINA_UNUSED,
|
|
|
|
void *event_info EINA_UNUSED)
|
|
|
|
{
|
|
|
|
Params *params = (Params *)data;
|
|
|
|
Evas_Object *navi = params->navi;
|
|
|
|
Eo *pager = params->pager;
|
|
|
|
Eo *btn, *box;
|
|
|
|
Eina_Bool prev, next;
|
|
|
|
|
|
|
|
btn = efl_add(EFL_UI_BUTTON_CLASS, navi,
|
|
|
|
efl_text_set(efl_added, "Back"),
|
|
|
|
efl_event_callback_add(efl_added, EFL_UI_EVENT_CLICKED,
|
|
|
|
back_btn_cb, navi));
|
|
|
|
|
|
|
|
box = efl_add(EFL_UI_BOX_CLASS, navi,
|
2019-04-24 06:41:39 -07:00
|
|
|
efl_gfx_arrangement_content_padding_set(efl_added, 10, 10, EINA_TRUE),
|
2019-01-25 00:41:24 -08:00
|
|
|
elm_naviframe_item_push(navi, "Scroll Block", btn, NULL,
|
|
|
|
efl_added, NULL));
|
|
|
|
|
|
|
|
efl_ui_pager_scroll_block_get(pager, &prev, &next);
|
|
|
|
|
|
|
|
efl_add(EFL_UI_CHECK_CLASS, box,
|
|
|
|
efl_ui_widget_style_set(efl_added, "toggle"),
|
|
|
|
efl_text_set(efl_added, "Prev Block"),
|
efl_ui_check: make it undependend of nstate
Summary:
check can only display 2 states, and is only designed to do so.
Additionally, nstate inherits from button, which
brings in autorepeat, which is hileriously broken on check and cannot
really work.
Right now there is not even support in the theme for clickable. So its a
good idea to get rid of this for now IMO.
ref T7865
Reviewers: stefan_schmidt, zmike, segfaultxavi, akanad, YOhoho
Reviewed By: zmike
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Maniphest Tasks: T7865, T7867
Differential Revision: https://phab.enlightenment.org/D9018
2019-06-13 06:21:38 -07:00
|
|
|
efl_ui_check_selected_set(efl_added, prev),
|
2019-01-25 00:41:24 -08:00
|
|
|
efl_event_callback_add(efl_added, EFL_UI_CHECK_EVENT_CHANGED,
|
|
|
|
prev_block_check_cb, pager),
|
|
|
|
efl_pack_end(box, efl_added));
|
|
|
|
|
|
|
|
efl_add(EFL_UI_CHECK_CLASS, box,
|
|
|
|
efl_ui_widget_style_set(efl_added, "toggle"),
|
|
|
|
efl_text_set(efl_added, "Next Block"),
|
efl_ui_check: make it undependend of nstate
Summary:
check can only display 2 states, and is only designed to do so.
Additionally, nstate inherits from button, which
brings in autorepeat, which is hileriously broken on check and cannot
really work.
Right now there is not even support in the theme for clickable. So its a
good idea to get rid of this for now IMO.
ref T7865
Reviewers: stefan_schmidt, zmike, segfaultxavi, akanad, YOhoho
Reviewed By: zmike
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Maniphest Tasks: T7865, T7867
Differential Revision: https://phab.enlightenment.org/D9018
2019-06-13 06:21:38 -07:00
|
|
|
efl_ui_check_selected_set(efl_added, next),
|
2019-01-25 00:41:24 -08:00
|
|
|
efl_event_callback_add(efl_added, EFL_UI_CHECK_EVENT_CHANGED,
|
|
|
|
next_block_check_cb, pager),
|
|
|
|
efl_pack_end(box, efl_added));
|
|
|
|
}
|
|
|
|
|
|
|
|
static void loop_cb(void *data EINA_UNUSED,
|
|
|
|
Evas_Object *obj EINA_UNUSED,
|
|
|
|
void *event_info EINA_UNUSED)
|
|
|
|
{
|
|
|
|
Params *params = (Params *)data;
|
|
|
|
Evas_Object *navi = params->navi;
|
|
|
|
Eo *pager = params->pager;
|
2019-04-16 18:41:43 -07:00
|
|
|
Eo *btn, *box, *rd;
|
|
|
|
Efl_Ui_Pager_Loop loop;
|
2019-01-25 00:41:24 -08:00
|
|
|
|
|
|
|
btn = efl_add(EFL_UI_BUTTON_CLASS, navi,
|
|
|
|
efl_text_set(efl_added, "Back"),
|
|
|
|
efl_event_callback_add(efl_added, EFL_UI_EVENT_CLICKED,
|
|
|
|
back_btn_cb, navi));
|
|
|
|
|
|
|
|
box = efl_add(EFL_UI_BOX_CLASS, navi,
|
2019-04-24 06:41:39 -07:00
|
|
|
efl_gfx_arrangement_content_padding_set(efl_added, 10, 10, EINA_TRUE),
|
2019-01-25 00:41:24 -08:00
|
|
|
elm_naviframe_item_push(navi, "Loop", btn, NULL,
|
|
|
|
efl_added, NULL));
|
|
|
|
|
2019-04-16 18:41:43 -07:00
|
|
|
rd = efl_add(EFL_UI_RADIO_CLASS, box,
|
|
|
|
efl_ui_radio_state_value_set(efl_added, EFL_UI_PAGER_LOOP_DISABLED),
|
|
|
|
efl_text_set(efl_added, "Disabled"),
|
|
|
|
efl_gfx_hint_weight_set(efl_added, 1, 0),
|
|
|
|
efl_event_callback_add(efl_added, EFL_UI_RADIO_EVENT_CHANGED,
|
|
|
|
loop_radio_cb, pager),
|
|
|
|
efl_pack(box, efl_added));
|
|
|
|
|
|
|
|
rd = efl_add(EFL_UI_RADIO_CLASS, box,
|
|
|
|
efl_ui_radio_state_value_set(efl_added, EFL_UI_PAGER_LOOP_ENABLED),
|
|
|
|
efl_ui_radio_group_add(efl_added, rd),
|
|
|
|
efl_text_set(efl_added, "Enabled"),
|
|
|
|
efl_gfx_hint_weight_set(efl_added, 1, 0),
|
|
|
|
efl_event_callback_add(efl_added, EFL_UI_RADIO_EVENT_CHANGED,
|
|
|
|
loop_radio_cb, pager),
|
|
|
|
efl_pack(box, efl_added));
|
|
|
|
|
|
|
|
loop = efl_ui_pager_loop_mode_get(pager);
|
|
|
|
|
efl_ui_check: make it undependend of nstate
Summary:
check can only display 2 states, and is only designed to do so.
Additionally, nstate inherits from button, which
brings in autorepeat, which is hileriously broken on check and cannot
really work.
Right now there is not even support in the theme for clickable. So its a
good idea to get rid of this for now IMO.
ref T7865
Reviewers: stefan_schmidt, zmike, segfaultxavi, akanad, YOhoho
Reviewed By: zmike
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Maniphest Tasks: T7865, T7867
Differential Revision: https://phab.enlightenment.org/D9018
2019-06-13 06:21:38 -07:00
|
|
|
efl_ui_radio_group_value_set(rd, loop);
|
2019-04-16 18:41:43 -07:00
|
|
|
|
|
|
|
if (loop == EFL_UI_PAGER_LOOP_DISABLED)
|
|
|
|
{
|
|
|
|
Eina_Bool ret = efl_ui_pager_loop_mode_set(pager, EFL_UI_PAGER_LOOP_ENABLED);
|
|
|
|
if (!ret)
|
|
|
|
elm_object_disabled_set(rd, EINA_TRUE);
|
|
|
|
else
|
|
|
|
efl_ui_pager_loop_mode_set(pager, EFL_UI_PAGER_LOOP_DISABLED);
|
|
|
|
}
|
2019-01-25 00:41:24 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
static void indicator_cb(void *data EINA_UNUSED,
|
|
|
|
Evas_Object *obj EINA_UNUSED,
|
|
|
|
void *event_info EINA_UNUSED)
|
|
|
|
{
|
|
|
|
Params *params = (Params *)data;
|
|
|
|
Evas_Object *navi = params->navi;
|
|
|
|
Eo *btn, *box;
|
|
|
|
|
|
|
|
btn = efl_add(EFL_UI_BUTTON_CLASS, navi,
|
|
|
|
efl_text_set(efl_added, "Back"),
|
|
|
|
efl_event_callback_add(efl_added, EFL_UI_EVENT_CLICKED,
|
|
|
|
back_btn_cb, navi));
|
|
|
|
|
|
|
|
box = efl_add(EFL_UI_BOX_CLASS, navi,
|
2019-04-24 06:41:39 -07:00
|
|
|
efl_gfx_arrangement_content_padding_set(efl_added, 10, 10, EINA_TRUE),
|
2019-01-25 00:41:24 -08:00
|
|
|
elm_naviframe_item_push(navi, "Indicator", btn, NULL,
|
|
|
|
efl_added, NULL));
|
|
|
|
|
|
|
|
efl_add(EFL_UI_BUTTON_CLASS, box,
|
|
|
|
efl_text_set(efl_added, "Icon Type"),
|
|
|
|
efl_event_callback_add(efl_added, EFL_UI_EVENT_CLICKED,
|
|
|
|
indicator_icon_btn_cb, params),
|
|
|
|
efl_pack_end(box, efl_added));
|
|
|
|
|
|
|
|
efl_add(EFL_UI_BUTTON_CLASS, box,
|
|
|
|
efl_text_set(efl_added, "None"),
|
|
|
|
efl_event_callback_add(efl_added, EFL_UI_EVENT_CLICKED,
|
|
|
|
indicator_none_btn_cb, params),
|
|
|
|
efl_pack_end(box, efl_added));
|
|
|
|
}
|
|
|
|
|
|
|
|
void test_ui_pager_scroll(void *data EINA_UNUSED,
|
|
|
|
Evas_Object *obj EINA_UNUSED,
|
|
|
|
void *event_info EINA_UNUSED)
|
|
|
|
{
|
|
|
|
Eo *win, *panes, *navi, *list, *layout, *pager, *page, *tran;
|
|
|
|
Params *params = NULL;
|
|
|
|
char buf[PATH_MAX];
|
|
|
|
int i;
|
|
|
|
|
|
|
|
win = efl_add(EFL_UI_WIN_CLASS, efl_main_loop_get(),
|
2019-03-04 10:37:24 -08:00
|
|
|
efl_ui_win_type_set(efl_added, EFL_UI_WIN_TYPE_BASIC),
|
2019-01-25 00:41:24 -08:00
|
|
|
efl_text_set(efl_added, "Pager"),
|
|
|
|
efl_ui_win_autodel_set(efl_added, EINA_TRUE));
|
|
|
|
|
|
|
|
panes = efl_add(EFL_UI_PANES_CLASS, win,
|
2019-02-21 09:19:45 -08:00
|
|
|
efl_gfx_hint_weight_set(efl_added, 1, 1),
|
2019-01-25 00:41:24 -08:00
|
|
|
efl_ui_panes_split_ratio_set(efl_added, 0.3),
|
|
|
|
efl_content_set(win, efl_added));
|
|
|
|
|
|
|
|
navi = elm_naviframe_add(panes);
|
|
|
|
evas_object_show(navi);
|
|
|
|
efl_content_set(efl_part(panes, "first"), navi);
|
|
|
|
|
|
|
|
list = elm_list_add(navi);
|
|
|
|
elm_list_horizontal_set(list, EINA_FALSE);
|
|
|
|
elm_list_select_mode_set(list, ELM_OBJECT_SELECT_MODE_ALWAYS);
|
|
|
|
elm_naviframe_item_push(navi, "Properties", NULL, NULL, list, NULL);
|
|
|
|
evas_object_show(list);
|
|
|
|
|
|
|
|
snprintf(buf, sizeof(buf), "%s/objects/test_pager.edj",
|
|
|
|
elm_app_data_dir_get());
|
|
|
|
layout = efl_add(EFL_UI_LAYOUT_CLASS, panes,
|
2019-02-27 10:17:09 -08:00
|
|
|
efl_file_set(efl_added, buf),
|
|
|
|
efl_file_key_set(efl_added, "pager"),
|
|
|
|
efl_file_load(efl_added),
|
2019-01-25 00:41:24 -08:00
|
|
|
efl_content_set(efl_part(panes, "second"), efl_added));
|
|
|
|
|
|
|
|
pager = efl_add(EFL_UI_PAGER_CLASS, layout,
|
|
|
|
efl_content_set(efl_part(layout, "pager"), efl_added),
|
|
|
|
efl_ui_pager_page_size_set(efl_added, EINA_SIZE2D(200, 300)),
|
|
|
|
efl_ui_pager_padding_set(efl_added, 20));
|
|
|
|
|
|
|
|
efl_add(EFL_UI_BUTTON_CLASS, layout,
|
|
|
|
efl_text_set(efl_added, "Prev"),
|
|
|
|
efl_event_callback_add(efl_added,
|
|
|
|
EFL_UI_EVENT_CLICKED, prev_btn_cb, pager),
|
|
|
|
efl_content_set(efl_part(layout, "prev_btn"), efl_added));
|
|
|
|
|
|
|
|
efl_add(EFL_UI_BUTTON_CLASS, layout,
|
|
|
|
efl_text_set(efl_added, "Next"),
|
|
|
|
efl_event_callback_add(efl_added,
|
|
|
|
EFL_UI_EVENT_CLICKED, next_btn_cb, pager),
|
|
|
|
efl_content_set(efl_part(layout, "next_btn"), efl_added));
|
|
|
|
|
|
|
|
tran = efl_add(EFL_PAGE_TRANSITION_SCROLL_CLASS, pager,
|
|
|
|
efl_ui_pager_transition_set(pager, efl_added));
|
|
|
|
|
|
|
|
params = calloc(1, sizeof(Params));
|
2019-02-13 23:08:33 -08:00
|
|
|
if (!params) return;
|
|
|
|
|
2019-01-25 00:41:24 -08:00
|
|
|
params->navi = navi;
|
|
|
|
params->pager = pager;
|
|
|
|
params->transition = NULL;
|
|
|
|
params->indicator = NULL;
|
|
|
|
params->w = 200;
|
|
|
|
params->h = 300;
|
|
|
|
params->padding = 20;
|
|
|
|
params->side_page_num = efl_page_transition_scroll_side_page_num_get(tran);
|
|
|
|
params->curr_page = 0;
|
|
|
|
params->wfill = EINA_FALSE;
|
|
|
|
params->hfill = EINA_FALSE;
|
|
|
|
params->prev_block = EINA_FALSE;
|
|
|
|
params->next_block = EINA_FALSE;
|
|
|
|
params->transition = tran;
|
|
|
|
|
|
|
|
elm_list_item_append(list, "Page Size", NULL, NULL, page_size_cb, params);
|
|
|
|
elm_list_item_append(list, "Padding", NULL, NULL, padding_cb, params);
|
|
|
|
elm_list_item_append(list, "Side Page Num", NULL, NULL, side_page_num_cb, params);
|
|
|
|
elm_list_item_append(list, "Pack / Unpack", NULL, NULL, pack_cb, params);
|
|
|
|
elm_list_item_append(list, "Current Page", NULL, NULL, current_page_cb, params);
|
|
|
|
elm_list_item_append(list, "Scroll Block", NULL, NULL, scroll_block_cb, params);
|
|
|
|
elm_list_item_append(list, "Loop", NULL, NULL, loop_cb, params);
|
|
|
|
elm_list_item_append(list, "Indicator", NULL, NULL, indicator_cb, params);
|
|
|
|
|
|
|
|
elm_list_go(list);
|
|
|
|
|
|
|
|
efl_event_callback_add(list, EFL_EVENT_DEL, list_del_cb, params);
|
|
|
|
|
|
|
|
for (i = 0; i < PAGE_NUM; i++) {
|
|
|
|
switch (i % 3) {
|
|
|
|
case 0:
|
|
|
|
page = page_add(LAYOUT, pager);
|
|
|
|
break;
|
|
|
|
case 1:
|
|
|
|
page = page_add(LIST, pager);
|
|
|
|
break;
|
|
|
|
case 2:
|
|
|
|
page = page_add(BUTTON, pager);
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
page = page_add(LAYOUT, pager);
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
efl_pack_end(pager, page);
|
|
|
|
}
|
|
|
|
|
|
|
|
efl_gfx_entity_size_set(win, EINA_SIZE2D(580, 320));
|
|
|
|
}
|