forked from enlightenment/efl
elm: remove datetime widget internal code
datetime legacy APIs are based on Efl.Ui.Clock public APIs.
This commit is contained in:
parent
e4f9f6ef1d
commit
b8903b87d8
|
@ -103,7 +103,6 @@ elementary/themes/edc/elm/colorclass.edc \
|
||||||
elementary/themes/edc/elm/conform.edc \
|
elementary/themes/edc/elm/conform.edc \
|
||||||
elementary/themes/edc/elm/ctxpopup.edc \
|
elementary/themes/edc/elm/ctxpopup.edc \
|
||||||
elementary/themes/edc/elm/cursor.edc \
|
elementary/themes/edc/elm/cursor.edc \
|
||||||
elementary/themes/edc/elm/datetime.edc \
|
|
||||||
elementary/themes/edc/elm/dayselector.edc \
|
elementary/themes/edc/elm/dayselector.edc \
|
||||||
elementary/themes/edc/elm/diskselector.edc \
|
elementary/themes/edc/elm/diskselector.edc \
|
||||||
elementary/themes/edc/elm/entry.edc \
|
elementary/themes/edc/elm/entry.edc \
|
||||||
|
|
|
@ -36,7 +36,6 @@ collections {
|
||||||
#include "edc/elm/access.edc"
|
#include "edc/elm/access.edc"
|
||||||
#include "edc/elm/photo.edc"
|
#include "edc/elm/photo.edc"
|
||||||
#include "edc/elm/focus.edc"
|
#include "edc/elm/focus.edc"
|
||||||
#include "edc/elm/datetime.edc"
|
|
||||||
#include "edc/elm/uiclock.edc"
|
#include "edc/elm/uiclock.edc"
|
||||||
#include "edc/elm/player.edc"
|
#include "edc/elm/player.edc"
|
||||||
#include "edc/elm/thumb.edc"
|
#include "edc/elm/thumb.edc"
|
||||||
|
|
|
@ -1,203 +0,0 @@
|
||||||
#define DATETIME_FIELD(_pos) \
|
|
||||||
part { \
|
|
||||||
name: "field"#_pos; type: SWALLOW; \
|
|
||||||
scale: 1; \
|
|
||||||
clip_to: "clip"; \
|
|
||||||
description { state: "default" 0.0; \
|
|
||||||
visible: 0; \
|
|
||||||
min: 0 0; \
|
|
||||||
align: 0.0 0.5; \
|
|
||||||
fixed: 1 1; \
|
|
||||||
rel1.relative: 1.0 0.0; \
|
|
||||||
rel1.to: "separator"#_pos; \
|
|
||||||
rel2.relative: 1.0 1.0; \
|
|
||||||
rel2.to: "separator"#_pos; \
|
|
||||||
} \
|
|
||||||
description { state: "enable" 0.0; \
|
|
||||||
inherit: "default" 0.0; \
|
|
||||||
visible: 1; \
|
|
||||||
min: 8 10; \
|
|
||||||
} \
|
|
||||||
} \
|
|
||||||
programs{ \
|
|
||||||
program { name: "field_"#_pos"enabled"; \
|
|
||||||
signal: "field"#_pos",enable"; source: "elm"; \
|
|
||||||
action: STATE_SET "enable" 0.0; \
|
|
||||||
target: "field"#_pos; \
|
|
||||||
} \
|
|
||||||
program { name: "field_"#_pos"disabled"; \
|
|
||||||
signal: "field"#_pos",disable"; source: "elm"; \
|
|
||||||
action: STATE_SET "default" 0.0; \
|
|
||||||
target: "field"#_pos; \
|
|
||||||
} \
|
|
||||||
}
|
|
||||||
#define DATETIME_SEPARATOR(_pos, _after) \
|
|
||||||
part { \
|
|
||||||
name: "separator"#_pos; type: TEXT; \
|
|
||||||
scale: 1; \
|
|
||||||
effect: SHADOW BOTTOM; \
|
|
||||||
clip_to: "disclip"; \
|
|
||||||
description { state: "default" 0.0; \
|
|
||||||
visible: 0; \
|
|
||||||
min: 0 0; \
|
|
||||||
align: 0.0 0.5; \
|
|
||||||
fixed: 1 0; \
|
|
||||||
rel1 { \
|
|
||||||
relative: 1.0 0.0; \
|
|
||||||
to: "field"#_after; \
|
|
||||||
} \
|
|
||||||
rel2 { \
|
|
||||||
relative: 1.0 1.0; \
|
|
||||||
to: "field"#_after; \
|
|
||||||
} \
|
|
||||||
color_class: "datetime_separator_text"; \
|
|
||||||
text { \
|
|
||||||
font: "Sans"; size: 10; \
|
|
||||||
min: 1 0; \
|
|
||||||
ellipsis: -1; \
|
|
||||||
align: 0.5 0.5; \
|
|
||||||
text_class: "datetime_separator_text"; \
|
|
||||||
} \
|
|
||||||
} \
|
|
||||||
description { state: "enable" 0.0; \
|
|
||||||
inherit: "default" 0.0; \
|
|
||||||
visible: 1; \
|
|
||||||
min: 8 10; \
|
|
||||||
} \
|
|
||||||
} \
|
|
||||||
part { \
|
|
||||||
name: "separator"#_pos"d"; type: TEXT; \
|
|
||||||
scale: 1; \
|
|
||||||
effect: SHADOW BOTTOM; \
|
|
||||||
clip_to: "disclip2"; \
|
|
||||||
description { state: "default" 0.0; \
|
|
||||||
visible: 0; \
|
|
||||||
rel1.to: "separator"#_pos; \
|
|
||||||
rel2.to: "separator"#_pos; \
|
|
||||||
color_class: "datetime_separator_text_disabled"; \
|
|
||||||
text { \
|
|
||||||
text_source: "separator"#_pos; \
|
|
||||||
font: "Sans"; size: 10; \
|
|
||||||
text_class: "datetime_separator_text_disabled"; \
|
|
||||||
} \
|
|
||||||
} \
|
|
||||||
description { state: "enable" 0.0; \
|
|
||||||
inherit: "default" 0.0; \
|
|
||||||
visible: 1; \
|
|
||||||
} \
|
|
||||||
} \
|
|
||||||
programs { \
|
|
||||||
program { \
|
|
||||||
signal: "field"#_after",enable"; source: "elm"; \
|
|
||||||
action: STATE_SET "enable" 0.0; \
|
|
||||||
target: "separator"#_pos; \
|
|
||||||
target: "separator"#_pos"d"; \
|
|
||||||
} \
|
|
||||||
program { \
|
|
||||||
signal: "field"#_after",disable"; source: "elm"; \
|
|
||||||
action: STATE_SET "default" 0.0; \
|
|
||||||
target: "separator"#_pos; \
|
|
||||||
target: "separator"#_pos"d"; \
|
|
||||||
} \
|
|
||||||
}
|
|
||||||
group { name: "elm/datetime/base/default";
|
|
||||||
parts {
|
|
||||||
part { name: "bg"; type: RECT;
|
|
||||||
description { state: "default" 0.0;
|
|
||||||
color_class: "datetime_bg";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
part { name: "clip"; type: RECT;
|
|
||||||
description { state: "default" 0.0;
|
|
||||||
rel1.to: "separator0";
|
|
||||||
rel2.to: "separator7";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
part { name: "disclip"; type: RECT;
|
|
||||||
clip_to: "clip";
|
|
||||||
description { state: "default" 0.0;
|
|
||||||
rel1.to: "separator0";
|
|
||||||
rel2.to: "separator7";
|
|
||||||
}
|
|
||||||
description { state: "disabled" 0.0;
|
|
||||||
inherit: "default" 0.0;
|
|
||||||
visible: 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
part { name: "disclip2"; type: RECT;
|
|
||||||
clip_to: "clip";
|
|
||||||
description { state: "default" 0.0;
|
|
||||||
rel1.to: "separator0";
|
|
||||||
rel2.to: "separator7";
|
|
||||||
visible: 0;
|
|
||||||
}
|
|
||||||
description { state: "disabled" 0.0;
|
|
||||||
inherit: "default" 0.0;
|
|
||||||
visible: 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
part { name: "separator0"; type: SPACER;
|
|
||||||
scale: 1;
|
|
||||||
description { state: "default" 0.0;
|
|
||||||
min: 8 10;
|
|
||||||
align: 0.0 0.5;
|
|
||||||
fixed: 1 0;
|
|
||||||
rel2.relative: 0.0 1.0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
DATETIME_FIELD(0)
|
|
||||||
DATETIME_SEPARATOR(1,0)
|
|
||||||
DATETIME_FIELD(1)
|
|
||||||
DATETIME_SEPARATOR(2,1)
|
|
||||||
DATETIME_FIELD(2)
|
|
||||||
DATETIME_SEPARATOR(3,2)
|
|
||||||
DATETIME_FIELD(3)
|
|
||||||
DATETIME_SEPARATOR(4,3)
|
|
||||||
DATETIME_FIELD(4)
|
|
||||||
DATETIME_SEPARATOR(5,4)
|
|
||||||
DATETIME_FIELD(5)
|
|
||||||
DATETIME_SEPARATOR(6,5)
|
|
||||||
part { name: "separator7"; type: SPACER;
|
|
||||||
description { state: "default" 0.0;
|
|
||||||
rel1.to: "separator6";
|
|
||||||
rel1.relative: 1.0 0.0;
|
|
||||||
min: 8 10;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
part { name: "discover"; type: RECT;
|
|
||||||
description { state: "default" 0.0;
|
|
||||||
rel1.to: "separator0";
|
|
||||||
rel2.to: "separator7";
|
|
||||||
visible: 0;
|
|
||||||
color: 0 0 0 0;
|
|
||||||
}
|
|
||||||
description { state: "disabled" 0.0;
|
|
||||||
inherit: "default" 0.0;
|
|
||||||
visible: 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
part { name: "elm.access"; type: RECT; repeat_events: 1;
|
|
||||||
description { state: "default" 0.0;
|
|
||||||
color: 0 0 0 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
programs {
|
|
||||||
program {
|
|
||||||
signal: "elm,state,disabled"; source: "elm";
|
|
||||||
action: STATE_SET "disabled" 0.0;
|
|
||||||
target: "disclip";
|
|
||||||
target: "disclip2";
|
|
||||||
target: "discover";
|
|
||||||
}
|
|
||||||
program {
|
|
||||||
signal: "elm,state,enabled"; source: "elm";
|
|
||||||
action: STATE_SET "default" 0.0;
|
|
||||||
target: "disclip";
|
|
||||||
target: "disclip2";
|
|
||||||
target: "discover";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#undef DATETIME_SEPARATOR
|
|
||||||
#undef DATETIME_FIELD
|
|
|
@ -13,7 +13,6 @@ elm_public_eolian_files = \
|
||||||
lib/elementary/elm_combobox.eo \
|
lib/elementary/elm_combobox.eo \
|
||||||
lib/elementary/elm_conformant.eo \
|
lib/elementary/elm_conformant.eo \
|
||||||
lib/elementary/elm_ctxpopup.eo \
|
lib/elementary/elm_ctxpopup.eo \
|
||||||
lib/elementary/elm_datetime.eo \
|
|
||||||
lib/elementary/elm_dayselector.eo \
|
lib/elementary/elm_dayselector.eo \
|
||||||
lib/elementary/elm_entry.eo \
|
lib/elementary/elm_entry.eo \
|
||||||
lib/elementary/elm_fileselector.eo \
|
lib/elementary/elm_fileselector.eo \
|
||||||
|
@ -217,7 +216,6 @@ includesunstable_HEADERS = \
|
||||||
lib/elementary/elm_widget_container.h \
|
lib/elementary/elm_widget_container.h \
|
||||||
lib/elementary/elm_widget_combobox.h \
|
lib/elementary/elm_widget_combobox.h \
|
||||||
lib/elementary/elm_widget_ctxpopup.h \
|
lib/elementary/elm_widget_ctxpopup.h \
|
||||||
lib/elementary/elm_widget_datetime.h \
|
|
||||||
lib/elementary/elm_widget_dayselector.h \
|
lib/elementary/elm_widget_dayselector.h \
|
||||||
lib/elementary/elm_widget_diskselector.h \
|
lib/elementary/elm_widget_diskselector.h \
|
||||||
lib/elementary/elm_widget_entry.h \
|
lib/elementary/elm_widget_entry.h \
|
||||||
|
@ -350,9 +348,6 @@ includesub_HEADERS = \
|
||||||
lib/elementary/elm_conform_legacy.h \
|
lib/elementary/elm_conform_legacy.h \
|
||||||
lib/elementary/elm_cursor.h \
|
lib/elementary/elm_cursor.h \
|
||||||
lib/elementary/elm_datetime.h \
|
lib/elementary/elm_datetime.h \
|
||||||
lib/elementary/elm_datetime_common.h \
|
|
||||||
lib/elementary/elm_datetime_eo.h \
|
|
||||||
lib/elementary/elm_datetime_legacy.h \
|
|
||||||
lib/elementary/elm_dayselector.h \
|
lib/elementary/elm_dayselector.h \
|
||||||
lib/elementary/elm_dayselector_eo.h \
|
lib/elementary/elm_dayselector_eo.h \
|
||||||
lib/elementary/elm_dayselector_legacy.h \
|
lib/elementary/elm_dayselector_legacy.h \
|
||||||
|
@ -969,34 +964,6 @@ modules_elementary_access_output_module_la_DEPENDENCIES = @USE_ELEMENTARY_INTERN
|
||||||
modules_elementary_access_output_module_la_LDFLAGS = -module @EFL_LTMODULE_FLAGS@
|
modules_elementary_access_output_module_la_LDFLAGS = -module @EFL_LTMODULE_FLAGS@
|
||||||
modules_elementary_access_output_module_la_LIBTOOLFLAGS = --tag=disable-static
|
modules_elementary_access_output_module_la_LIBTOOLFLAGS = --tag=disable-static
|
||||||
|
|
||||||
## datetime_input_ctxpopup
|
|
||||||
|
|
||||||
moduledatetime_input_ctxpopuppkgdir = $(libdir)/elementary/modules/datetime_input_ctxpopup/$(MODULE_ARCH)
|
|
||||||
moduledatetime_input_ctxpopuppkg_LTLIBRARIES = modules/elementary/datetime_input_ctxpopup/module.la
|
|
||||||
|
|
||||||
# Workaround for broken parallel install support in automake (relink issue)
|
|
||||||
# http://debbugs.gnu.org/cgi/bugreport.cgi?bug=7328
|
|
||||||
install_moduledatetime_input_ctxpopuppkgLTLIBRARIES = install-moduledatetime_input_ctxpopuppkgLTLIBRARIES
|
|
||||||
$(install_moduledatetime_input_ctxpopuppkgLTLIBRARIES): install-libLTLIBRARIES
|
|
||||||
|
|
||||||
modules_elementary_datetime_input_ctxpopup_module_la_SOURCES = \
|
|
||||||
modules/elementary/datetime_input_ctxpopup/datetime_input_ctxpopup.c
|
|
||||||
modules_elementary_datetime_input_ctxpopup_module_la_CPPFLAGS = \
|
|
||||||
-DELM_INTERNAL_API_ARGESFSDFEFC=1 \
|
|
||||||
-I. \
|
|
||||||
-I$(top_builddir) \
|
|
||||||
-I$(top_srcdir) \
|
|
||||||
-I$(top_srcdir)/src/lib/elementary \
|
|
||||||
-I$(top_builddir)/src/lib/elementary \
|
|
||||||
-DPACKAGE_DATA_DIR=\"$(pkgdatadir)\" \
|
|
||||||
-DPACKAGE_LIB_DIR=\"$(libdir)\" \
|
|
||||||
-DELEMENTARY_BUILD \
|
|
||||||
@ELEMENTARY_CFLAGS@
|
|
||||||
modules_elementary_datetime_input_ctxpopup_module_la_LIBADD = @USE_ELEMENTARY_LIBS@
|
|
||||||
modules_elementary_datetime_input_ctxpopup_module_la_DEPENDENCIES = @USE_ELEMENTARY_INTERNAL_LIBS@
|
|
||||||
modules_elementary_datetime_input_ctxpopup_module_la_LDFLAGS = -module @EFL_LTMODULE_FLAGS@
|
|
||||||
modules_elementary_datetime_input_ctxpopup_module_la_LIBTOOLFLAGS = --tag=disable-static
|
|
||||||
|
|
||||||
## clock_input_ctxpopup
|
## clock_input_ctxpopup
|
||||||
|
|
||||||
moduleclock_input_ctxpopuppkgdir = $(libdir)/elementary/modules/clock_input_ctxpopup/$(MODULE_ARCH)
|
moduleclock_input_ctxpopuppkgdir = $(libdir)/elementary/modules/clock_input_ctxpopup/$(MODULE_ARCH)
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,309 +0,0 @@
|
||||||
import efl_types;
|
|
||||||
|
|
||||||
enum Elm.Datetime.Field_Type
|
|
||||||
{
|
|
||||||
[[Identifies a Datetime field, The widget supports 6 fields : Year, month,
|
|
||||||
Date, Hour, Minute, AM/PM
|
|
||||||
]]
|
|
||||||
|
|
||||||
legacy: elm_datetime;
|
|
||||||
year = 0, [[Indicates Year field.]]
|
|
||||||
month = 1, [[Indicates Month field.]]
|
|
||||||
date = 2, [[Indicates Date field.]]
|
|
||||||
hour = 3, [[Indicates Hour field.]]
|
|
||||||
minute = 4, [[Indicates Minute field.]]
|
|
||||||
ampm = 5, [[Indicates AM/PM field .]]
|
|
||||||
}
|
|
||||||
|
|
||||||
class Elm.Datetime (Elm.Layout)
|
|
||||||
{
|
|
||||||
legacy_prefix: elm_datetime;
|
|
||||||
eo_prefix: elm_obj_datetime;
|
|
||||||
event_prefix: elm_datetime;
|
|
||||||
methods {
|
|
||||||
@property format {
|
|
||||||
set {
|
|
||||||
[[Set the datetime format. Format is a combination of allowed
|
|
||||||
Libc date format specifiers like: "%b %d, %Y %I : %M %p".
|
|
||||||
|
|
||||||
Maximum allowed format length is 64 chars.
|
|
||||||
|
|
||||||
Format can include separators for each individual datetime
|
|
||||||
field except for AM/PM field.
|
|
||||||
|
|
||||||
Each separator can be a maximum of 6 UTF-8 bytes.
|
|
||||||
Space is also taken as a separator.
|
|
||||||
|
|
||||||
These specifiers can be arranged in any order and the widget
|
|
||||||
will display the fields accordingly.
|
|
||||||
|
|
||||||
Default format is taken as per the system locale settings.
|
|
||||||
]]
|
|
||||||
/* FIXME-doc
|
|
||||||
Following are the allowed set of format specifiers for each datetime field.
|
|
||||||
|
|
||||||
@b %%Y : The year as a decimal number including the century.
|
|
||||||
|
|
||||||
@b %%y : The year as a decimal number without a century (range 00 to 99).
|
|
||||||
|
|
||||||
@b %%m : The month as a decimal number (range 01 to 12).
|
|
||||||
|
|
||||||
@b %%b : The abbreviated month name according to the current locale.
|
|
||||||
|
|
||||||
@b %%B : The full month name according to the current locale.
|
|
||||||
|
|
||||||
@b %%h : The abbreviated month name according to the current locale(same as %%b).
|
|
||||||
|
|
||||||
@b %%d : The day of the month as a decimal number (range 01 to 31).
|
|
||||||
|
|
||||||
@b %%e : The day of the month as a decimal number (range 1 to 31). single
|
|
||||||
digits are preceded by a blank.
|
|
||||||
|
|
||||||
@b %%I : The hour as a decimal number using a 12-hour clock (range 01 to 12).
|
|
||||||
|
|
||||||
@b %%H : The hour as a decimal number using a 24-hour clock (range 00 to 23).
|
|
||||||
|
|
||||||
@b %%k : The hour (24-hour clock) as a decimal number (range 0 to 23). single
|
|
||||||
digits are preceded by a blank.
|
|
||||||
|
|
||||||
@b %%l : The hour (12-hour clock) as a decimal number (range 1 to 12); single
|
|
||||||
digits are preceded by a blank.
|
|
||||||
|
|
||||||
@b %%M : The minute as a decimal number (range 00 to 59).
|
|
||||||
|
|
||||||
@b %%p : Either 'AM' or 'PM' according to the given time value, or the
|
|
||||||
corresponding strings for the current locale. Noon is treated as 'PM'
|
|
||||||
and midnight as 'AM'.
|
|
||||||
|
|
||||||
@b %%P : Like %p but in lower case: 'am' or 'pm' or a corresponding string for
|
|
||||||
the current locale.
|
|
||||||
|
|
||||||
@b %%c : The preferred date and time representation for the current locale.
|
|
||||||
|
|
||||||
@b %%x : The preferred date representation for the current locale without the time.
|
|
||||||
|
|
||||||
@b %%X : The preferred time representation for the current locale without the date.
|
|
||||||
|
|
||||||
@b %%r : The complete calendar time using the AM/PM format of the current locale.
|
|
||||||
|
|
||||||
@b %%R : The hour and minute in decimal numbers using the format %H:%M.
|
|
||||||
|
|
||||||
@b %%T : The time of day in decimal numbers using the format %H:%M:%S.
|
|
||||||
|
|
||||||
@b %%D : The date using the format %%m/%%d/%%y.
|
|
||||||
|
|
||||||
@b %%F : The date using the format %%Y-%%m-%%d.
|
|
||||||
*/
|
|
||||||
}
|
|
||||||
get {
|
|
||||||
[[Get the datetime format.]]
|
|
||||||
}
|
|
||||||
values {
|
|
||||||
fmt: string @nullable; [[The datetime format.]]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
field_limit_set {
|
|
||||||
[[Set the field limits of a field.
|
|
||||||
|
|
||||||
Limits can be set to individual fields, independently, except
|
|
||||||
for AM/PM field. Any field can display the values only in between
|
|
||||||
these minimum and maximum limits unless the corresponding time
|
|
||||||
value is restricted from MinTime to MaxTime. That is, min/max
|
|
||||||
field limits always works under the limitations of mintime/maxtime.
|
|
||||||
|
|
||||||
There is no provision to set the limits of AM/PM field.
|
|
||||||
]]
|
|
||||||
params {
|
|
||||||
@in fieldtype: Elm.Datetime.Field_Type; [[Type of the field. #ELM_DATETIME_YEAR etc.]]
|
|
||||||
@in min: int; [[Reference to field's minimum value.]]
|
|
||||||
@in max: int; [[Reference to field's maximum value.]]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
field_limit_get @const {
|
|
||||||
[[ Get the field limits of a field.
|
|
||||||
|
|
||||||
Limits can be set to individual fields, independently, except
|
|
||||||
for AM/PM field. Any field can display the values only in between
|
|
||||||
these minimum and maximum limits unless the corresponding time
|
|
||||||
value is restricted from MinTime to MaxTime. That is, min/max
|
|
||||||
field limits always works under the limitations of mintime/maxtime.
|
|
||||||
|
|
||||||
There is no provision to set the limits of AM/PM field.
|
|
||||||
]]
|
|
||||||
params {
|
|
||||||
@in fieldtype: Elm.Datetime.Field_Type; [[Type of the field. #ELM_DATETIME_YEAR etc.]]
|
|
||||||
@out min: int; [[Reference to field's minimum value.]]
|
|
||||||
@out max: int; [[Reference to field's maximum value.]]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
value_min_set {
|
|
||||||
[[Set the lower boundary of a field.
|
|
||||||
|
|
||||||
Year: years since 1900. Negative value represents year below 1900
|
|
||||||
(year value -30 represents 1870). Year default range is from 70
|
|
||||||
to 137.
|
|
||||||
|
|
||||||
Month: default value range is from 0 to 11.
|
|
||||||
|
|
||||||
Date: default value range is from 1 to 31 according to the month
|
|
||||||
value.
|
|
||||||
|
|
||||||
Hour: default value will be in terms of 24 hr format (0~23)
|
|
||||||
|
|
||||||
Minute: default value range is from 0 to 59.
|
|
||||||
]]
|
|
||||||
|
|
||||||
return: bool; [[$true if minimum value is accepted.]]
|
|
||||||
params {
|
|
||||||
@in mintime: const(Efl.Time)*; [[Time structure containing the minimum time value.]]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
value_min_get @const {
|
|
||||||
[[Get the lower boundary of a field.
|
|
||||||
|
|
||||||
Year: years since 1900. Negative value represents year below 1900
|
|
||||||
(year value -30 represents 1870). Year default range is from 70
|
|
||||||
to 137.
|
|
||||||
|
|
||||||
Month: default value range is from 0 to 11.
|
|
||||||
|
|
||||||
Date: default value range is from 1 to 31 according to the month
|
|
||||||
value.
|
|
||||||
|
|
||||||
Hour: default value will be in terms of 24 hr format (0~23)
|
|
||||||
|
|
||||||
Minute: default value range is from 0 to 59.
|
|
||||||
]]
|
|
||||||
return: bool; [[$true if minimum value is successfully returned.]]
|
|
||||||
params {
|
|
||||||
@inout mintime: Efl.Time; [[Time structure.]]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
value_set {
|
|
||||||
[[Set the current value of a Datetime object.
|
|
||||||
|
|
||||||
Year: years since 1900. Negative value represents year below 1900
|
|
||||||
(year value -30 represents 1870). Year default range is from 70
|
|
||||||
to 137.
|
|
||||||
|
|
||||||
Month: default value range is from 0 to 11.
|
|
||||||
|
|
||||||
Date: default value range is from 1 to 31 according to the month
|
|
||||||
value.
|
|
||||||
|
|
||||||
Hour: default value will be in terms of 24 hr format (0~23)
|
|
||||||
|
|
||||||
Minute: default value range is from 0 to 59.
|
|
||||||
]]
|
|
||||||
return: bool; [[$true if current time is set successfully.]]
|
|
||||||
params {
|
|
||||||
@in newtime: const(Efl.Time)*; [[Time structure filled with values to be set.]]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
value_get @const {
|
|
||||||
[[Get the current value of a Datetime object.
|
|
||||||
|
|
||||||
Year: years since 1900. Negative value represents year below 1900
|
|
||||||
(year value -30 represents 1870). Year default range is from 70
|
|
||||||
to 137.
|
|
||||||
|
|
||||||
Month: default value range is from 0 to 11.
|
|
||||||
|
|
||||||
Date: default value range is from 1 to 31 according to the month
|
|
||||||
value.
|
|
||||||
|
|
||||||
Hour: default value will be in terms of 24 hr format (0~23)
|
|
||||||
|
|
||||||
Minute: default value range is from 0 to 59.
|
|
||||||
]]
|
|
||||||
return: bool; [[$true if current time is returned successfully.]]
|
|
||||||
params {
|
|
||||||
@inout currtime: Efl.Time; [[Time structure.]]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
field_visible_set {
|
|
||||||
[[Set a field to be visible or not.
|
|
||||||
|
|
||||||
Setting this API to $true does not ensure that the field is
|
|
||||||
visible, apart from this, the field's format must be present
|
|
||||||
in Datetime overall format. If a field's visibility is set
|
|
||||||
to $false then it won't appear even though its format is
|
|
||||||
present in overall format. So if and only if this API is
|
|
||||||
set true and the corresponding field's format is present
|
|
||||||
in Datetime format, the field is visible.
|
|
||||||
|
|
||||||
By default the field visibility is set to $true.
|
|
||||||
]]
|
|
||||||
params {
|
|
||||||
@in fieldtype: Elm.Datetime.Field_Type; [[Type of the field. #ELM_DATETIME_YEAR etc.]]
|
|
||||||
@in visible: bool; [[$true field can be visible, $false otherwise.]]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
field_visible_get @const {
|
|
||||||
[[ Get whether a field can be visible/not.]]
|
|
||||||
return: bool; [[$true, if field can be visible. $false otherwise.]]
|
|
||||||
params {
|
|
||||||
@in fieldtype: Elm.Datetime.Field_Type; [[Type of the field. #ELM_DATETIME_YEAR etc.]]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
value_max_set {
|
|
||||||
[[Set the upper boundary of a field.
|
|
||||||
|
|
||||||
Year: years since 1900. Negative value represents year below 1900
|
|
||||||
(year value -30 represents 1870). Year default range is from 70
|
|
||||||
to 137.
|
|
||||||
|
|
||||||
Month: default value range is from 0 to 11.
|
|
||||||
|
|
||||||
Date: default value range is from 1 to 31 according to the month
|
|
||||||
value.
|
|
||||||
|
|
||||||
Hour: default value will be in terms of 24 hr format (0~23)
|
|
||||||
|
|
||||||
Minute: default value range is from 0 to 59.
|
|
||||||
]]
|
|
||||||
return: bool; [[$true if maximum value is accepted.]]
|
|
||||||
params {
|
|
||||||
@in maxtime: const(Efl.Time)*; [[Time structure containing the maximum time value.]]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
value_max_get @const {
|
|
||||||
[[Get the upper boundary of a field.
|
|
||||||
|
|
||||||
Year: years since 1900. Negative value represents year below 1900
|
|
||||||
(year value -30 represents 1870). Year default range is from 70
|
|
||||||
to 137.
|
|
||||||
|
|
||||||
Month: default value range is from 0 to 11.
|
|
||||||
|
|
||||||
Date: default value range is from 1 to 31 according to the month
|
|
||||||
value.
|
|
||||||
|
|
||||||
Hour: default value will be in terms of 24 hr format (0~23)
|
|
||||||
|
|
||||||
Minute: default value range is from 0 to 59.
|
|
||||||
]]
|
|
||||||
return: bool; [[$true if maximum value is returned successfully.]]
|
|
||||||
params {
|
|
||||||
@inout maxtime: Efl.Time; [[Time structure containing the maximum time value.]]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
implements {
|
|
||||||
class.constructor;
|
|
||||||
Efl.Object.constructor;
|
|
||||||
Efl.Canvas.Group.group_add;
|
|
||||||
Efl.Canvas.Group.group_del;
|
|
||||||
Elm.Widget.theme_apply;
|
|
||||||
Elm.Widget.focus_next_manager_is;
|
|
||||||
Elm.Widget.focus_next;
|
|
||||||
Elm.Widget.disable;
|
|
||||||
Elm.Widget.on_focus;
|
|
||||||
Elm.Widget.translate;
|
|
||||||
Elm.Layout.sizing_eval;
|
|
||||||
}
|
|
||||||
events {
|
|
||||||
changed;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -196,12 +196,272 @@
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "elm_datetime_common.h"
|
/** Identifies a Datetime field, The widget supports 6 fields : Year, month,
|
||||||
#ifdef EFL_EO_API_SUPPORT
|
** Date, Hour, Minute, AM/PM
|
||||||
#include "elm_datetime_eo.h"
|
**
|
||||||
#endif
|
** @ingroup Elm_Datetime
|
||||||
#ifndef EFL_NOLEGACY_API_SUPPORT
|
**/
|
||||||
#include "elm_datetime_legacy.h"
|
|
||||||
|
#ifndef _ELM_DATE_TIME_H
|
||||||
|
#define _ELM_DATE_TIME_H
|
||||||
|
typedef enum
|
||||||
|
{
|
||||||
|
ELM_DATETIME_YEAR = 0, /**< Indicates Year field. */
|
||||||
|
ELM_DATETIME_MONTH = 1, /**< Indicates Month field. */
|
||||||
|
ELM_DATETIME_DATE = 2, /**< Indicates Date field. */
|
||||||
|
ELM_DATETIME_HOUR = 3, /**< Indicates Hour field. */
|
||||||
|
ELM_DATETIME_MINUTE = 4, /**< Indicates Minute field. */
|
||||||
|
ELM_DATETIME_AMPM = 5 /**< Indicates AM/PM field . */
|
||||||
|
} Elm_Datetime_Field_Type;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Adds a new datetime Widget
|
||||||
|
*
|
||||||
|
* The default datetime format and corresponding strings are based on current locale.
|
||||||
|
*
|
||||||
|
* @param parent The parent object
|
||||||
|
* @return The new object or NULL if it cannot be created
|
||||||
|
*
|
||||||
|
* This function inserts a new datetime widget on the canvas.
|
||||||
|
*
|
||||||
|
* @ingroup Elm_Datetime
|
||||||
|
*/
|
||||||
|
EAPI Evas_Object *elm_datetime_add(Evas_Object *parent);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set the datetime format. Format is a combination of allowed Libc date
|
||||||
|
* format specifiers like: "%b %d, %Y %I : %M %p".
|
||||||
|
*
|
||||||
|
* Maximum allowed format length is 64 chars.
|
||||||
|
*
|
||||||
|
* Format can include separators for each individual datetime field except for
|
||||||
|
* AM/PM field.
|
||||||
|
*
|
||||||
|
* Each separator can be a maximum of 6 UTF-8 bytes. Space is also taken as a
|
||||||
|
* separator.
|
||||||
|
*
|
||||||
|
* These specifiers can be arranged in any order and the widget will display
|
||||||
|
* the fields accordingly.
|
||||||
|
*
|
||||||
|
* Default format is taken as per the system locale settings.
|
||||||
|
*
|
||||||
|
* @param[in] fmt The datetime format.
|
||||||
|
*
|
||||||
|
* @ingroup Elm_Datetime
|
||||||
|
*/
|
||||||
|
EAPI void elm_datetime_format_set(Evas_Object *obj, const char *fmt);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get the datetime format.
|
||||||
|
*
|
||||||
|
* @return The datetime format.
|
||||||
|
*
|
||||||
|
* @ingroup Elm_Datetime
|
||||||
|
*/
|
||||||
|
EAPI const char *elm_datetime_format_get(const Evas_Object *obj);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set the field limits of a field.
|
||||||
|
*
|
||||||
|
* Limits can be set to individual fields, independently, except for AM/PM
|
||||||
|
* field. Any field can display the values only in between these minimum and
|
||||||
|
* maximum limits unless the corresponding time value is restricted from
|
||||||
|
* MinTime to MaxTime. That is, min/max field limits always works under the
|
||||||
|
* limitations of mintime/maxtime.
|
||||||
|
*
|
||||||
|
* There is no provision to set the limits of AM/PM field.
|
||||||
|
*
|
||||||
|
* @param[in] fieldtype Type of the field. #ELM_DATETIME_YEAR etc.
|
||||||
|
* @param[in] min Reference to field's minimum value.
|
||||||
|
* @param[in] max Reference to field's maximum value.
|
||||||
|
*
|
||||||
|
* @ingroup Elm_Datetime
|
||||||
|
*/
|
||||||
|
EAPI void elm_datetime_field_limit_set(Evas_Object *obj, Elm_Datetime_Field_Type type, int min, int max);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get the field limits of a field.
|
||||||
|
*
|
||||||
|
* Limits can be set to individual fields, independently, except for AM/PM
|
||||||
|
* field. Any field can display the values only in between these minimum and
|
||||||
|
* maximum limits unless the corresponding time value is restricted from
|
||||||
|
* MinTime to MaxTime. That is, min/max field limits always works under the
|
||||||
|
* limitations of mintime/maxtime.
|
||||||
|
*
|
||||||
|
* There is no provision to set the limits of AM/PM field.
|
||||||
|
*
|
||||||
|
* @param[in] fieldtype Type of the field. #ELM_DATETIME_YEAR etc.
|
||||||
|
* @param[out] min Reference to field's minimum value.
|
||||||
|
* @param[out] max Reference to field's maximum value.
|
||||||
|
*
|
||||||
|
* @ingroup Elm_Datetime
|
||||||
|
*/
|
||||||
|
EAPI void elm_datetime_field_limit_get(const Evas_Object *obj, Elm_Datetime_Field_Type fieldtype, int *min, int *max);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set the lower boundary of a field.
|
||||||
|
*
|
||||||
|
* Year: years since 1900. Negative value represents year below 1900 (year
|
||||||
|
* value -30 represents 1870). Year default range is from 70 to 137.
|
||||||
|
*
|
||||||
|
* Month: default value range is from 0 to 11.
|
||||||
|
*
|
||||||
|
* Date: default value range is from 1 to 31 according to the month value.
|
||||||
|
*
|
||||||
|
* Hour: default value will be in terms of 24 hr format (0~23)
|
||||||
|
*
|
||||||
|
* Minute: default value range is from 0 to 59.
|
||||||
|
*
|
||||||
|
* @param[in] mintime Time structure containing the minimum time value.
|
||||||
|
*
|
||||||
|
* @return @c true if minimum value is accepted.
|
||||||
|
*
|
||||||
|
* @ingroup Elm_Datetime
|
||||||
|
*/
|
||||||
|
EAPI Eina_Bool elm_datetime_value_min_set(Evas_Object *obj, const Efl_Time *mintime);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get the lower boundary of a field.
|
||||||
|
*
|
||||||
|
* Year: years since 1900. Negative value represents year below 1900 (year
|
||||||
|
* value -30 represents 1870). Year default range is from 70 to 137.
|
||||||
|
*
|
||||||
|
* Month: default value range is from 0 to 11.
|
||||||
|
*
|
||||||
|
* Date: default value range is from 1 to 31 according to the month value.
|
||||||
|
*
|
||||||
|
* Hour: default value will be in terms of 24 hr format (0~23)
|
||||||
|
*
|
||||||
|
* Minute: default value range is from 0 to 59.
|
||||||
|
*
|
||||||
|
* @param[in,out] mintime Time structure.
|
||||||
|
*
|
||||||
|
* @return @c true if minimum value is successfully returned.
|
||||||
|
*
|
||||||
|
* @ingroup Elm_Datetime
|
||||||
|
*/
|
||||||
|
EAPI Eina_Bool elm_datetime_value_min_get(const Evas_Object *obj, Efl_Time *mintime);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set the current value of a Datetime object.
|
||||||
|
*
|
||||||
|
* Year: years since 1900. Negative value represents year below 1900 (year
|
||||||
|
* value -30 represents 1870). Year default range is from 70 to 137.
|
||||||
|
*
|
||||||
|
* Month: default value range is from 0 to 11.
|
||||||
|
*
|
||||||
|
* Date: default value range is from 1 to 31 according to the month value.
|
||||||
|
*
|
||||||
|
* Hour: default value will be in terms of 24 hr format (0~23)
|
||||||
|
*
|
||||||
|
* Minute: default value range is from 0 to 59.
|
||||||
|
*
|
||||||
|
* @param[in] newtime Time structure filled with values to be set.
|
||||||
|
*
|
||||||
|
* @return @c true if current time is set successfully.
|
||||||
|
*
|
||||||
|
* @ingroup Elm_Datetime
|
||||||
|
*/
|
||||||
|
EAPI Eina_Bool elm_datetime_value_set(Evas_Object *obj, const Efl_Time *newtime);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get the current value of a Datetime object.
|
||||||
|
*
|
||||||
|
* Year: years since 1900. Negative value represents year below 1900 (year
|
||||||
|
* value -30 represents 1870). Year default range is from 70 to 137.
|
||||||
|
*
|
||||||
|
* Month: default value range is from 0 to 11.
|
||||||
|
*
|
||||||
|
* Date: default value range is from 1 to 31 according to the month value.
|
||||||
|
*
|
||||||
|
* Hour: default value will be in terms of 24 hr format (0~23)
|
||||||
|
*
|
||||||
|
* Minute: default value range is from 0 to 59.
|
||||||
|
*
|
||||||
|
* @param[in,out] currtime Time structure.
|
||||||
|
*
|
||||||
|
* @return @c true if current time is returned successfully.
|
||||||
|
*
|
||||||
|
* @ingroup Elm_Datetime
|
||||||
|
*/
|
||||||
|
EAPI Eina_Bool elm_datetime_value_get(const Evas_Object *obj, Efl_Time *currtime);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set a field to be visible or not.
|
||||||
|
*
|
||||||
|
* Setting this API to @c true does not ensure that the field is visible, apart
|
||||||
|
* from this, the field's format must be present in Datetime overall format.
|
||||||
|
* If a field's visibility is set to @c false then it won't appear even though
|
||||||
|
* its format is present in overall format. So if and only if this API is set
|
||||||
|
* true and the corresponding field's format is present in Datetime format, the
|
||||||
|
* field is visible.
|
||||||
|
*
|
||||||
|
* By default the field visibility is set to @c true.
|
||||||
|
*
|
||||||
|
* @param[in] fieldtype Type of the field. #ELM_DATETIME_YEAR etc.
|
||||||
|
* @param[in] visible @c true field can be visible, @c false otherwise.
|
||||||
|
*
|
||||||
|
* @ingroup Elm_Datetime
|
||||||
|
*/
|
||||||
|
EAPI void elm_datetime_field_visible_set(Evas_Object *obj, Elm_Datetime_Field_Type fieldtype, Eina_Bool visible);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get whether a field can be visible/not.
|
||||||
|
*
|
||||||
|
* @param[in] fieldtype Type of the field. #ELM_DATETIME_YEAR etc.
|
||||||
|
*
|
||||||
|
* @return @c true, if field can be visible. @c false otherwise.
|
||||||
|
*
|
||||||
|
* @ingroup Elm_Datetime
|
||||||
|
*/
|
||||||
|
EAPI Eina_Bool elm_datetime_field_visible_get(const Evas_Object *obj, Elm_Datetime_Field_Type fieldtype);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set the upper boundary of a field.
|
||||||
|
*
|
||||||
|
* Year: years since 1900. Negative value represents year below 1900 (year
|
||||||
|
* value -30 represents 1870). Year default range is from 70 to 137.
|
||||||
|
*
|
||||||
|
* Month: default value range is from 0 to 11.
|
||||||
|
*
|
||||||
|
* Date: default value range is from 1 to 31 according to the month value.
|
||||||
|
*
|
||||||
|
* Hour: default value will be in terms of 24 hr format (0~23)
|
||||||
|
*
|
||||||
|
* Minute: default value range is from 0 to 59.
|
||||||
|
*
|
||||||
|
* @param[in] maxtime Time structure containing the maximum time value.
|
||||||
|
*
|
||||||
|
* @return @c true if maximum value is accepted.
|
||||||
|
*
|
||||||
|
* @ingroup Elm_Datetime
|
||||||
|
*/
|
||||||
|
EAPI Eina_Bool elm_datetime_value_max_set(Evas_Object *obj, const Efl_Time *maxtime);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get the upper boundary of a field.
|
||||||
|
*
|
||||||
|
* Year: years since 1900. Negative value represents year below 1900 (year
|
||||||
|
* value -30 represents 1870). Year default range is from 70 to 137.
|
||||||
|
*
|
||||||
|
* Month: default value range is from 0 to 11.
|
||||||
|
*
|
||||||
|
* Date: default value range is from 1 to 31 according to the month value.
|
||||||
|
*
|
||||||
|
* Hour: default value will be in terms of 24 hr format (0~23)
|
||||||
|
*
|
||||||
|
* Minute: default value range is from 0 to 59.
|
||||||
|
*
|
||||||
|
* @param[in,out] maxtime Time structure containing the maximum time value.
|
||||||
|
*
|
||||||
|
* @return @c true if maximum value is returned successfully.
|
||||||
|
*
|
||||||
|
* @ingroup Elm_Datetime
|
||||||
|
*/
|
||||||
|
EAPI Eina_Bool elm_datetime_value_max_get(const Evas_Object *obj, Efl_Time *maxtime);
|
||||||
|
|
||||||
|
#define ELM_DATETIME_EVENT_CHANGED EFL_UI_CLOCK_EVENT_CHANGED
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
|
|
|
@ -1,9 +0,0 @@
|
||||||
/**
|
|
||||||
* @addtogroup Elm_Datetime
|
|
||||||
*
|
|
||||||
* @{
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @}
|
|
||||||
*/
|
|
|
@ -1 +0,0 @@
|
||||||
#include "elm_datetime.eo.h"
|
|
|
@ -1,15 +0,0 @@
|
||||||
/**
|
|
||||||
* @brief Adds a new datetime Widget
|
|
||||||
*
|
|
||||||
* The default datetime format and corresponding strings are based on current locale.
|
|
||||||
*
|
|
||||||
* @param parent The parent object
|
|
||||||
* @return The new object or NULL if it cannot be created
|
|
||||||
*
|
|
||||||
* This function inserts a new datetime widget on the canvas.
|
|
||||||
*
|
|
||||||
* @ingroup Elm_Datetime
|
|
||||||
*/
|
|
||||||
EAPI Evas_Object *elm_datetime_add(Evas_Object *parent);
|
|
||||||
|
|
||||||
#include "elm_datetime.eo.legacy.h"
|
|
|
@ -1,127 +0,0 @@
|
||||||
#ifndef ELM_WIDGET_DATETIME_H
|
|
||||||
#define ELM_WIDGET_DATETIME_H
|
|
||||||
|
|
||||||
#include "Elementary.h"
|
|
||||||
|
|
||||||
/* DO NOT USE THIS HEADER UNLESS YOU ARE PREPARED FOR BREAKING OF YOUR
|
|
||||||
* CODE. THIS IS ELEMENTARY'S INTERNAL WIDGET API (for now) AND IS NOT
|
|
||||||
* FINAL. CALL elm_widget_api_check(ELM_INTERNAL_API_VERSION) TO CHECK
|
|
||||||
* IT AT RUNTIME.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @addtogroup Widget
|
|
||||||
* @{
|
|
||||||
*
|
|
||||||
* @section elm-datetime-class The Elementary Datetime Class
|
|
||||||
*
|
|
||||||
* Elementary, besides having the @ref Datetime widget, exposes its
|
|
||||||
* foundation -- the Elementary Datetime Class -- in order to create other
|
|
||||||
* widgets which are a datetime with some more logic on top.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Base layout smart data extended with datetime instance data.
|
|
||||||
*/
|
|
||||||
typedef struct _Elm_Datetime_Module_Data Elm_Datetime_Module_Data;
|
|
||||||
typedef struct _Elm_Datetime_Data Elm_Datetime_Data;
|
|
||||||
typedef struct _Datetime_Field Datetime_Field;
|
|
||||||
typedef struct _Datetime_Mod_Api Datetime_Mod_Api;
|
|
||||||
typedef struct _Format_Map Format_Map;
|
|
||||||
|
|
||||||
#define ELM_DATETIME_TYPE_COUNT 6
|
|
||||||
#define ELM_DATETIME_MAX_FORMAT_LEN 64
|
|
||||||
#define ELM_DATETIME_MAX_FIELD_FORMAT_LEN 3
|
|
||||||
|
|
||||||
struct _Elm_Datetime_Module_Data
|
|
||||||
{
|
|
||||||
Evas_Object *base;
|
|
||||||
void (*field_limit_get)(Evas_Object *obj,
|
|
||||||
Elm_Datetime_Field_Type field_type,
|
|
||||||
int *range_min,
|
|
||||||
int *range_max);
|
|
||||||
const char *(*field_format_get)(Evas_Object * obj,
|
|
||||||
Elm_Datetime_Field_Type field_type);
|
|
||||||
};
|
|
||||||
|
|
||||||
struct _Datetime_Field
|
|
||||||
{
|
|
||||||
Evas_Object *item_obj;
|
|
||||||
char fmt[ELM_DATETIME_MAX_FIELD_FORMAT_LEN];
|
|
||||||
Elm_Datetime_Field_Type type;
|
|
||||||
const char *separator;
|
|
||||||
int location; /* location of the field as per
|
|
||||||
* current format */
|
|
||||||
int min, max;
|
|
||||||
Eina_Bool fmt_exist : 1; /* whether field format is
|
|
||||||
* present or not */
|
|
||||||
Eina_Bool visible : 1; /* whether field can be
|
|
||||||
* visible or not */
|
|
||||||
};
|
|
||||||
|
|
||||||
struct _Datetime_Mod_Api
|
|
||||||
{
|
|
||||||
Elm_Datetime_Module_Data *(*obj_hook)(Evas_Object * obj);
|
|
||||||
void (*obj_unhook)(Elm_Datetime_Module_Data *mdata);
|
|
||||||
void (*obj_hide)(Elm_Datetime_Module_Data *mdata);
|
|
||||||
Evas_Object *(*field_create)(Elm_Datetime_Module_Data * mdata,
|
|
||||||
Elm_Datetime_Field_Type ftype);
|
|
||||||
void (*field_value_display)(Elm_Datetime_Module_Data
|
|
||||||
*mdata,
|
|
||||||
Evas_Object *obj);
|
|
||||||
};
|
|
||||||
|
|
||||||
struct _Elm_Datetime_Data
|
|
||||||
{
|
|
||||||
/* fixed set of fields. */
|
|
||||||
Datetime_Field field_list[ELM_DATETIME_TYPE_COUNT];
|
|
||||||
struct tm curr_time, min_limit, max_limit;
|
|
||||||
Elm_Datetime_Module_Data *mod_data;
|
|
||||||
char format[ELM_DATETIME_MAX_FORMAT_LEN];
|
|
||||||
Evas_Object *access_obj;
|
|
||||||
int enabled_field_count;
|
|
||||||
Eina_Bool user_format : 1; /* whether user set
|
|
||||||
* format or default
|
|
||||||
* format. */
|
|
||||||
Eina_Bool freeze_sizing : 1; /* freeze sizing_eval to
|
|
||||||
* reduce unnecessary sizing */
|
|
||||||
};
|
|
||||||
|
|
||||||
struct _Format_Map
|
|
||||||
{
|
|
||||||
char *fmt_char;
|
|
||||||
int def_min;
|
|
||||||
int def_max;
|
|
||||||
char *ignore_sep;
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @}
|
|
||||||
*/
|
|
||||||
|
|
||||||
#define ELM_DATETIME_DATA_GET(o, sd) \
|
|
||||||
Elm_Datetime_Data * sd = efl_data_scope_get(o, ELM_DATETIME_CLASS)
|
|
||||||
|
|
||||||
#define ELM_DATETIME_DATA_GET_OR_RETURN(o, ptr) \
|
|
||||||
ELM_DATETIME_DATA_GET(o, ptr); \
|
|
||||||
if (EINA_UNLIKELY(!ptr)) \
|
|
||||||
{ \
|
|
||||||
CRI("No widget data for object %p (%s)", \
|
|
||||||
o, evas_object_type_get(o)); \
|
|
||||||
return; \
|
|
||||||
}
|
|
||||||
|
|
||||||
#define ELM_DATETIME_DATA_GET_OR_RETURN_VAL(o, ptr, val) \
|
|
||||||
ELM_DATETIME_DATA_GET(o, ptr); \
|
|
||||||
if (EINA_UNLIKELY(!ptr)) \
|
|
||||||
{ \
|
|
||||||
CRI("No widget data for object %p (%s)", \
|
|
||||||
o, evas_object_type_get(o)); \
|
|
||||||
return val; \
|
|
||||||
}
|
|
||||||
|
|
||||||
#define ELM_DATETIME_CHECK(obj) \
|
|
||||||
if (EINA_UNLIKELY(!efl_isa((obj), ELM_DATETIME_CLASS))) \
|
|
||||||
return
|
|
||||||
|
|
||||||
#endif
|
|
|
@ -1,406 +0,0 @@
|
||||||
#ifdef HAVE_CONFIG_H
|
|
||||||
#include "elementary_config.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <Elementary.h>
|
|
||||||
#include "elm_widget.h"
|
|
||||||
#include "elm_widget_datetime.h"
|
|
||||||
|
|
||||||
#define DATETIME_FIELD_COUNT 6
|
|
||||||
#define FIELD_FORMAT_LEN 3
|
|
||||||
#define DISKSELECTOR_MIN_ITEMS 4
|
|
||||||
#define BUFF_SIZE 1024
|
|
||||||
|
|
||||||
typedef struct _Ctxpopup_Module_Data Ctxpopup_Module_Data;
|
|
||||||
typedef struct _DiskItem_Data DiskItem_Data;
|
|
||||||
|
|
||||||
struct _Ctxpopup_Module_Data
|
|
||||||
{
|
|
||||||
Elm_Datetime_Module_Data mod_data;
|
|
||||||
Evas_Object *ctxpopup;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct _DiskItem_Data
|
|
||||||
{
|
|
||||||
Ctxpopup_Module_Data *ctx_mod;
|
|
||||||
Elm_Datetime_Field_Type sel_field_type;
|
|
||||||
unsigned int sel_field_value;
|
|
||||||
};
|
|
||||||
|
|
||||||
static void
|
|
||||||
_diskselector_item_free_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
|
|
||||||
{
|
|
||||||
free(data);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
_ctxpopup_dismissed_cb(void *data, const Efl_Event *event)
|
|
||||||
{
|
|
||||||
Ctxpopup_Module_Data *ctx_mod;
|
|
||||||
ctx_mod = (Ctxpopup_Module_Data *)data;
|
|
||||||
evas_object_del(event->object);
|
|
||||||
ctx_mod->ctxpopup = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
_datetime_resize_cb(void *data, Evas *e EINA_UNUSED,Evas_Object *obj EINA_UNUSED,
|
|
||||||
void *event_info EINA_UNUSED)
|
|
||||||
{
|
|
||||||
Ctxpopup_Module_Data *ctx_mod;
|
|
||||||
|
|
||||||
ctx_mod = (Ctxpopup_Module_Data *)data;
|
|
||||||
if (!ctx_mod || !ctx_mod->ctxpopup) return;
|
|
||||||
|
|
||||||
evas_object_hide(ctx_mod->ctxpopup);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
_datetime_move_cb(void *data, Evas *e EINA_UNUSED,Evas_Object *obj EINA_UNUSED,
|
|
||||||
void *event_info EINA_UNUSED)
|
|
||||||
{
|
|
||||||
Ctxpopup_Module_Data *ctx_mod;
|
|
||||||
|
|
||||||
ctx_mod = (Ctxpopup_Module_Data *)data;
|
|
||||||
if (!ctx_mod || !ctx_mod->ctxpopup) return;
|
|
||||||
|
|
||||||
evas_object_hide(ctx_mod->ctxpopup);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
_field_value_set(struct tm *tim, Elm_Datetime_Field_Type field_type, int val)
|
|
||||||
{
|
|
||||||
if (field_type >= (DATETIME_FIELD_COUNT - 1)) return;
|
|
||||||
|
|
||||||
int *timearr[]= { &tim->tm_year, &tim->tm_mon, &tim->tm_mday, &tim->tm_hour, &tim->tm_min };
|
|
||||||
*timearr[field_type] = val;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int
|
|
||||||
_field_value_get(struct tm *tim, Elm_Datetime_Field_Type field_type)
|
|
||||||
{
|
|
||||||
if (field_type >= (DATETIME_FIELD_COUNT - 1)) return -1;
|
|
||||||
|
|
||||||
int *timearr[]= { &tim->tm_year, &tim->tm_mon, &tim->tm_mday, &tim->tm_hour, &tim->tm_min };
|
|
||||||
return (*timearr[field_type]);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
_diskselector_cb(void *data EINA_UNUSED, const Efl_Event *event)
|
|
||||||
{
|
|
||||||
DiskItem_Data *disk_data;
|
|
||||||
struct tm curr_time;
|
|
||||||
const char *fmt;
|
|
||||||
|
|
||||||
disk_data = (DiskItem_Data *)elm_object_item_data_get(event->info);
|
|
||||||
if (!disk_data || !(disk_data->ctx_mod))
|
|
||||||
{
|
|
||||||
efl_event_callback_stop(event->object);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
elm_datetime_value_get(disk_data->ctx_mod->mod_data.base, &curr_time);
|
|
||||||
fmt = disk_data->ctx_mod->mod_data.field_format_get(disk_data->ctx_mod->mod_data.base, disk_data->sel_field_type);
|
|
||||||
if ((disk_data->sel_field_type == ELM_DATETIME_HOUR) && ((!strncmp(fmt, "%I", FIELD_FORMAT_LEN)) ||
|
|
||||||
(!strncmp(fmt, "%l", FIELD_FORMAT_LEN))) && (curr_time.tm_hour >= 12))
|
|
||||||
disk_data->sel_field_value += 12;
|
|
||||||
_field_value_set(&curr_time, disk_data->sel_field_type, disk_data->sel_field_value);
|
|
||||||
elm_datetime_value_set(disk_data->ctx_mod->mod_data.base, &curr_time);
|
|
||||||
evas_object_hide(disk_data->ctx_mod->ctxpopup);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
_ampm_clicked_cb(void *data, const Efl_Event *event EINA_UNUSED)
|
|
||||||
{
|
|
||||||
Ctxpopup_Module_Data *ctx_mod;
|
|
||||||
struct tm curr_time;
|
|
||||||
|
|
||||||
ctx_mod = (Ctxpopup_Module_Data *)data;
|
|
||||||
if (!ctx_mod)
|
|
||||||
{
|
|
||||||
efl_event_callback_stop(event->object);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
elm_datetime_value_get(ctx_mod->mod_data.base, &curr_time);
|
|
||||||
if (curr_time.tm_hour >= 12) curr_time.tm_hour -= 12;
|
|
||||||
else curr_time.tm_hour += 12;
|
|
||||||
elm_datetime_value_set(ctx_mod->mod_data.base, &curr_time);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
_field_clicked_cb(void *data, const Efl_Event *event)
|
|
||||||
{
|
|
||||||
Ctxpopup_Module_Data *ctx_mod;
|
|
||||||
Evas_Object *diskselector;
|
|
||||||
Elm_Object_Item *item;
|
|
||||||
DiskItem_Data *disk_data;
|
|
||||||
Elm_Datetime_Field_Type field_type;
|
|
||||||
time_t t;
|
|
||||||
struct tm time1;
|
|
||||||
char buf[BUFF_SIZE], label[BUFF_SIZE];
|
|
||||||
const char *fmt;
|
|
||||||
int idx, min, max, val;
|
|
||||||
unsigned int display_item_num, text_len = 0;
|
|
||||||
Evas_Coord x = 0, y = 0, w = 0, h = 0, width;
|
|
||||||
|
|
||||||
ctx_mod = (Ctxpopup_Module_Data *)data;
|
|
||||||
if (!ctx_mod)
|
|
||||||
{
|
|
||||||
efl_event_callback_stop(event->object);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
snprintf(buf, sizeof(buf), "datetime/%s", elm_object_style_get(event->object));
|
|
||||||
|
|
||||||
if (ctx_mod->ctxpopup)
|
|
||||||
evas_object_del(ctx_mod->ctxpopup);
|
|
||||||
ctx_mod->ctxpopup = elm_ctxpopup_add(event->object);
|
|
||||||
elm_object_style_set(ctx_mod->ctxpopup, buf);
|
|
||||||
elm_ctxpopup_horizontal_set(ctx_mod->ctxpopup, EINA_TRUE);
|
|
||||||
evas_object_size_hint_weight_set(ctx_mod->ctxpopup, EVAS_HINT_EXPAND,
|
|
||||||
EVAS_HINT_EXPAND);
|
|
||||||
evas_object_size_hint_align_set(ctx_mod->ctxpopup, EVAS_HINT_FILL, 0.5);
|
|
||||||
efl_event_callback_add
|
|
||||||
(ctx_mod->ctxpopup, ELM_CTXPOPUP_EVENT_DISMISSED, _ctxpopup_dismissed_cb, ctx_mod);
|
|
||||||
elm_ctxpopup_hover_parent_set(ctx_mod->ctxpopup, elm_widget_top_get(event->object));
|
|
||||||
|
|
||||||
diskselector = elm_diskselector_add(elm_widget_top_get(ctx_mod->mod_data.base));
|
|
||||||
efl_event_callback_add
|
|
||||||
(diskselector, EFL_UI_EVENT_CLICKED, _diskselector_cb, NULL);
|
|
||||||
elm_object_style_set(diskselector, buf);
|
|
||||||
elm_object_content_set(ctx_mod->ctxpopup, diskselector);
|
|
||||||
|
|
||||||
t = time(NULL);
|
|
||||||
localtime_r(&t, &time1);
|
|
||||||
|
|
||||||
field_type = (Elm_Datetime_Field_Type )evas_object_data_get(event->object, "_field_type");
|
|
||||||
fmt = ctx_mod->mod_data.field_format_get(ctx_mod->mod_data.base, field_type);
|
|
||||||
elm_datetime_value_get(ctx_mod->mod_data.base, &time1);
|
|
||||||
val = _field_value_get(&time1, field_type);
|
|
||||||
ctx_mod->mod_data.field_limit_get(ctx_mod->mod_data.base, field_type, &min, &max);
|
|
||||||
|
|
||||||
time1.tm_mday = 1; // To avoid month wrapping, set the first day of the month to start with.
|
|
||||||
|
|
||||||
if ((field_type == ELM_DATETIME_HOUR) && ((!strncmp(fmt, "%I", FIELD_FORMAT_LEN)) ||
|
|
||||||
(!strncmp(fmt, "%l", FIELD_FORMAT_LEN))))
|
|
||||||
{
|
|
||||||
if (max >= 12) max -= 12;
|
|
||||||
if (val >= 12) val -= 12;
|
|
||||||
if (min >= 12) min -= 12;
|
|
||||||
}
|
|
||||||
for (idx = min; idx <= max; idx++)
|
|
||||||
{
|
|
||||||
_field_value_set(&time1, field_type, idx);
|
|
||||||
strftime(label, BUFF_SIZE, fmt, &time1);
|
|
||||||
if (strlen(label) > text_len) text_len = strlen(label);
|
|
||||||
if (idx == val)
|
|
||||||
{
|
|
||||||
item = elm_diskselector_item_append(diskselector, label, NULL, NULL, NULL);
|
|
||||||
elm_diskselector_item_selected_set(item, EINA_TRUE);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
disk_data = (DiskItem_Data *) malloc (sizeof(DiskItem_Data));
|
|
||||||
disk_data->ctx_mod = ctx_mod;
|
|
||||||
disk_data->sel_field_type = field_type;
|
|
||||||
disk_data->sel_field_value = idx;
|
|
||||||
item = elm_diskselector_item_append(diskselector, label, NULL, NULL, disk_data);
|
|
||||||
elm_object_item_del_cb_set(item, _diskselector_item_free_cb);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
elm_diskselector_side_text_max_length_set(diskselector, text_len);
|
|
||||||
|
|
||||||
evas_object_geometry_get(event->object, &x, &y, &w, &h);
|
|
||||||
evas_object_geometry_get(elm_widget_top_get(ctx_mod->mod_data.base), NULL, NULL, &width, NULL);
|
|
||||||
evas_object_size_hint_min_set(ctx_mod->ctxpopup, width, -1);
|
|
||||||
display_item_num = width / (w + elm_config_finger_size_get());
|
|
||||||
// always display even number of items to avoid autoselection
|
|
||||||
if (display_item_num % 2) display_item_num -= 1;
|
|
||||||
if (display_item_num < DISKSELECTOR_MIN_ITEMS)
|
|
||||||
display_item_num = DISKSELECTOR_MIN_ITEMS;
|
|
||||||
elm_diskselector_display_item_num_set(diskselector, display_item_num);
|
|
||||||
elm_diskselector_round_enabled_set(diskselector, EINA_TRUE);
|
|
||||||
|
|
||||||
elm_ctxpopup_direction_priority_set(ctx_mod->ctxpopup, ELM_CTXPOPUP_DIRECTION_DOWN,
|
|
||||||
ELM_CTXPOPUP_DIRECTION_UP, -1, -1);
|
|
||||||
evas_object_move(ctx_mod->ctxpopup, (x+w/2), (y+h));
|
|
||||||
|
|
||||||
// if the direction of Ctxpopup is upwards, move it to the top of datetime
|
|
||||||
if (elm_ctxpopup_direction_get(ctx_mod->ctxpopup) == ELM_CTXPOPUP_DIRECTION_UP)
|
|
||||||
{
|
|
||||||
elm_ctxpopup_direction_priority_set(ctx_mod->ctxpopup, ELM_CTXPOPUP_DIRECTION_UP,
|
|
||||||
ELM_CTXPOPUP_DIRECTION_DOWN, -1, -1);
|
|
||||||
evas_object_move(ctx_mod->ctxpopup, (x + w / 2), y);
|
|
||||||
}
|
|
||||||
evas_object_show(ctx_mod->ctxpopup);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
_access_set(Evas_Object *obj, Elm_Datetime_Field_Type field_type)
|
|
||||||
{
|
|
||||||
const char* type = NULL;
|
|
||||||
|
|
||||||
switch (field_type)
|
|
||||||
{
|
|
||||||
case ELM_DATETIME_YEAR:
|
|
||||||
type = "datetime field, year";
|
|
||||||
break;
|
|
||||||
|
|
||||||
case ELM_DATETIME_MONTH:
|
|
||||||
type = "datetime field, month";
|
|
||||||
break;
|
|
||||||
|
|
||||||
case ELM_DATETIME_DATE:
|
|
||||||
type = "datetime field, date";
|
|
||||||
break;
|
|
||||||
|
|
||||||
case ELM_DATETIME_HOUR:
|
|
||||||
type = "datetime field, hour";
|
|
||||||
break;
|
|
||||||
|
|
||||||
case ELM_DATETIME_MINUTE:
|
|
||||||
type = "datetime field, minute";
|
|
||||||
break;
|
|
||||||
|
|
||||||
case ELM_DATETIME_AMPM:
|
|
||||||
type = "datetime field, AM PM";
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
_elm_access_text_set
|
|
||||||
(_elm_access_info_get(obj), ELM_ACCESS_TYPE, type);
|
|
||||||
_elm_access_callback_set
|
|
||||||
(_elm_access_info_get(obj), ELM_ACCESS_STATE, NULL, NULL);
|
|
||||||
}
|
|
||||||
|
|
||||||
// module funcs for the specific module type
|
|
||||||
EAPI void
|
|
||||||
field_value_display(Elm_Datetime_Module_Data *module_data, Evas_Object *obj)
|
|
||||||
{
|
|
||||||
Ctxpopup_Module_Data *ctx_mod;
|
|
||||||
Elm_Datetime_Field_Type field_type;
|
|
||||||
struct tm tim;
|
|
||||||
char buf[BUFF_SIZE];
|
|
||||||
const char *fmt;
|
|
||||||
|
|
||||||
ctx_mod = (Ctxpopup_Module_Data *)module_data;
|
|
||||||
if (!ctx_mod || !obj) return;
|
|
||||||
|
|
||||||
elm_datetime_value_get(ctx_mod->mod_data.base, &tim);
|
|
||||||
field_type = (Elm_Datetime_Field_Type )evas_object_data_get(obj, "_field_type");
|
|
||||||
fmt = ctx_mod->mod_data.field_format_get(ctx_mod->mod_data.base, field_type);
|
|
||||||
buf[0] = 0;
|
|
||||||
strftime(buf, sizeof(buf), fmt, &tim);
|
|
||||||
if ((!buf[0]) && ((!strcmp(fmt, "%p")) || (!strcmp(fmt, "%P"))))
|
|
||||||
{
|
|
||||||
// yes BUFF_SIZE is more than 2 bytes!
|
|
||||||
if (tim.tm_hour < 12) strcpy(buf, "AM");
|
|
||||||
else strcpy(buf, "PM");
|
|
||||||
}
|
|
||||||
elm_object_text_set(obj, buf);
|
|
||||||
}
|
|
||||||
|
|
||||||
EAPI Evas_Object *
|
|
||||||
field_create(Elm_Datetime_Module_Data *module_data, Elm_Datetime_Field_Type field_type)
|
|
||||||
{
|
|
||||||
Ctxpopup_Module_Data *ctx_mod;
|
|
||||||
Evas_Object *field_obj;
|
|
||||||
|
|
||||||
ctx_mod = (Ctxpopup_Module_Data *)module_data;
|
|
||||||
if (!ctx_mod) return NULL;
|
|
||||||
|
|
||||||
if (field_type == ELM_DATETIME_AMPM)
|
|
||||||
{
|
|
||||||
field_obj = elm_button_add(ctx_mod->mod_data.base);
|
|
||||||
efl_event_callback_add
|
|
||||||
(field_obj, EFL_UI_EVENT_CLICKED, _ampm_clicked_cb, ctx_mod);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
field_obj = elm_entry_add(ctx_mod->mod_data.base);
|
|
||||||
elm_entry_single_line_set(field_obj, EINA_TRUE);
|
|
||||||
elm_entry_editable_set(field_obj, EINA_FALSE);
|
|
||||||
elm_entry_input_panel_enabled_set(field_obj, EINA_FALSE);
|
|
||||||
elm_entry_context_menu_disabled_set(field_obj, EINA_TRUE);
|
|
||||||
efl_event_callback_add
|
|
||||||
(field_obj, EFL_UI_EVENT_CLICKED, _field_clicked_cb, ctx_mod);
|
|
||||||
}
|
|
||||||
evas_object_data_set(field_obj, "_field_type", (void *)field_type);
|
|
||||||
|
|
||||||
// ACCESS
|
|
||||||
_access_set(field_obj, field_type);
|
|
||||||
|
|
||||||
return field_obj;
|
|
||||||
}
|
|
||||||
|
|
||||||
EAPI Elm_Datetime_Module_Data *
|
|
||||||
obj_hook(Evas_Object *obj)
|
|
||||||
{
|
|
||||||
Ctxpopup_Module_Data *ctx_mod;
|
|
||||||
ctx_mod = calloc(1, sizeof(Ctxpopup_Module_Data));
|
|
||||||
if (!ctx_mod) return NULL;
|
|
||||||
|
|
||||||
evas_object_event_callback_add(obj, EVAS_CALLBACK_RESIZE,
|
|
||||||
_datetime_resize_cb, ctx_mod);
|
|
||||||
evas_object_event_callback_add(obj, EVAS_CALLBACK_MOVE,
|
|
||||||
_datetime_move_cb, ctx_mod);
|
|
||||||
|
|
||||||
return ((Elm_Datetime_Module_Data*)ctx_mod);
|
|
||||||
}
|
|
||||||
|
|
||||||
EAPI void
|
|
||||||
obj_unhook(Elm_Datetime_Module_Data *module_data)
|
|
||||||
{
|
|
||||||
Ctxpopup_Module_Data *ctx_mod;
|
|
||||||
|
|
||||||
ctx_mod = (Ctxpopup_Module_Data *)module_data;
|
|
||||||
if (!ctx_mod) return;
|
|
||||||
|
|
||||||
if (ctx_mod->ctxpopup)
|
|
||||||
evas_object_del(ctx_mod->ctxpopup);
|
|
||||||
|
|
||||||
free(ctx_mod);
|
|
||||||
ctx_mod = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
EAPI void
|
|
||||||
obj_hide(Elm_Datetime_Module_Data *module_data)
|
|
||||||
{
|
|
||||||
Ctxpopup_Module_Data *ctx_mod;
|
|
||||||
|
|
||||||
ctx_mod = (Ctxpopup_Module_Data *)module_data;
|
|
||||||
if (!ctx_mod) return;
|
|
||||||
|
|
||||||
if (ctx_mod->ctxpopup)
|
|
||||||
evas_object_hide(ctx_mod->ctxpopup);
|
|
||||||
}
|
|
||||||
|
|
||||||
// module api funcs needed
|
|
||||||
EAPI int
|
|
||||||
elm_modapi_init(void *m EINA_UNUSED)
|
|
||||||
{
|
|
||||||
return 1; // succeed always
|
|
||||||
}
|
|
||||||
|
|
||||||
EAPI int
|
|
||||||
elm_modapi_shutdown(void *m EINA_UNUSED)
|
|
||||||
{
|
|
||||||
return 1; // succeed always
|
|
||||||
}
|
|
||||||
|
|
||||||
static Eina_Bool
|
|
||||||
_module_init(void)
|
|
||||||
{
|
|
||||||
return EINA_TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
_module_shutdown(void)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
EINA_MODULE_INIT(_module_init);
|
|
||||||
EINA_MODULE_SHUTDOWN(_module_shutdown);
|
|
Loading…
Reference in New Issue