From bfe867270ec39dda945e1dc3ab4969f91bf73236 Mon Sep 17 00:00:00 2001 From: Shinwoo Kim Date: Mon, 28 Nov 2011 17:16:47 +0900 Subject: [PATCH] revert to the migration tempoary --- COPYING | 2 +- configure.ac | 15 +- data/images/Makefile.am | 2 +- doc/widgets/widget_preview_ctxpopup.c | 2 +- po/ar.po | 18 +- po/az_IR.po | 18 +- po/de.po | 18 +- po/el.po | 18 +- po/en_US.po | 18 +- po/es_ES.po | 18 +- po/fa.po | 18 +- po/fr.po | 18 +- po/he.po | 18 +- po/it.po | 18 +- po/ja_JP.po | 18 +- po/ko_KR.po | 18 +- po/nl.po | 18 +- po/ps.po | 18 +- po/pt.po | 18 +- po/ru_RU.po | 18 +- po/tr_TR.po | 18 +- po/ur.po | 18 +- po/yi.po | 18 +- po/zh_CN.po | 18 +- po/zh_HK.po | 18 +- po/zh_TW.po | 18 +- src/bin/Makefile.am | 1 - src/bin/test.c | 2 - src/bin/test_ctxpopup.c | 79 +- src/bin/test_diskselector.c | 2 - src/bin/test_fileselector.c | 18 +- src/bin/test_gengrid.c | 93 +- src/bin/test_genlist.c | 16 +- src/bin/test_index.c | 2 +- src/bin/test_multibuttonentry.c | 232 --- src/bin/test_naviframe.c | 27 +- src/bin/test_panel.c | 18 +- src/bin/test_segment_control.c | 40 +- src/bin/test_tooltip.c | 8 +- src/edje_externals/Makefile.am | 12 +- src/edje_externals/elm.c | 2 +- src/edje_externals/elm_bubble.c | 8 +- src/edje_externals/elm_calendar.c | 70 +- src/edje_externals/elm_colorpalette.c | 162 +- src/edje_externals/elm_entry.c | 4 +- src/edje_externals/elm_genlist.c | 26 +- src/edje_externals/elm_navigationbar.c | 110 ++ src/edje_externals/elm_navigationbar_ex.c | 93 + src/edje_externals/elm_toggle.c | 23 +- src/edje_externals/modules.inc | 10 +- src/examples/animator_example_01.c | 108 ++ src/examples/ctxpopup_example_01.c | 8 +- src/examples/flipselector_example.c | 16 +- src/lib/Elementary.h.in | 1903 ++++---------------- src/lib/Makefile.am | 9 +- src/lib/elc_ctxpopup.c | 190 +- src/lib/elc_naviframe.c | 27 +- src/lib/elc_navigationbar.c | 1491 +++++++++++++++ src/lib/elc_navigationbar_ex.c | 1211 +++++++++++++ src/lib/elc_player.c | 2 +- src/lib/elm_bg.c | 6 +- src/lib/elm_button.c | 2 - src/lib/elm_check.c | 6 +- src/lib/elm_cnp_helper.c | 17 +- src/lib/elm_colorpalette.c | 39 + src/lib/elm_colorselector.c | 6 +- src/lib/elm_controlbar.c | 679 +++++-- src/lib/elm_dialoguegroup.c | 4 +- src/lib/elm_diskselector.c | 18 +- src/lib/elm_entry.c | 160 +- src/lib/elm_flipselector.c | 402 +++-- src/lib/elm_gengrid.c | 45 - src/lib/elm_genlist.c | 47 +- src/lib/elm_imageslider.c | 164 +- src/lib/elm_main.c | 77 +- src/lib/elm_map.c | 416 +---- src/lib/elm_module_priv.h | 2 +- ...c_multibuttonentry.c => elm_multibuttonentry.c} | 531 ++++-- src/lib/elm_popup.c | 26 +- src/lib/elm_priv.h | 1 - src/lib/elm_progressbar.c | 6 +- src/lib/elm_radio.c | 6 +- src/lib/elm_scrolled_grid.c | 1564 ++++++++++++++++ src/lib/elm_searchbar.c | 82 + src/lib/elm_slider.c | 9 +- src/lib/elm_slidingdrawer.c | 295 +++ src/lib/elm_stackedicon.c | 51 +- src/lib/elm_store.c | 107 ++ src/lib/elm_theme.c | 91 +- src/lib/elm_tickernoti.c | 206 +++ src/lib/elm_toggle.c | 1 + src/lib/elm_transit.c | 2 +- src/lib/elm_video.c | 3 +- src/lib/elm_widget.c | 122 +- src/lib/elm_widget.h | 74 +- src/lib/elm_win.c | 89 +- src/lib/els_cursor.c | 3 +- src/lib/els_icon.c | 38 +- src/lib/els_tooltip.c | 48 +- src/modules/access_output/mod.c | 2 +- src/modules/ctxpopup_copypasteUI/copypaste.c | 42 +- src/modules/ctxpopup_copypasteshareUI/copypaste.c | 2 +- src/modules/popup_copypasteUI/copypaste.c | 20 +- 103 files changed, 7847 insertions(+), 4104 deletions(-) delete mode 100644 src/bin/test_multibuttonentry.c create mode 100644 src/edje_externals/elm_navigationbar.c create mode 100644 src/edje_externals/elm_navigationbar_ex.c create mode 100644 src/examples/animator_example_01.c create mode 100644 src/lib/elc_navigationbar.c create mode 100644 src/lib/elc_navigationbar_ex.c rename src/lib/{elc_multibuttonentry.c => elm_multibuttonentry.c} (82%) create mode 100644 src/lib/elm_scrolled_grid.c create mode 100644 src/lib/elm_slidingdrawer.c diff --git a/COPYING b/COPYING index a3f518d..f9624d6 100644 --- a/COPYING +++ b/COPYING @@ -4,7 +4,7 @@ Copyright (C) 2008-2011 Carsten Haitzler and various contributors (see AUTHORS) This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the -Free Software Foundation; version 2.1 of the License. +Free Software Foundation; either version 2.1 of the License. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS diff --git a/configure.ac b/configure.ac index e64f7da..58f7237 100755 --- a/configure.ac +++ b/configure.ac @@ -220,23 +220,11 @@ PKG_CHECK_MODULES([ELEMENTARY], ecore-evas >= 1.0.999 ecore-file >= 1.0.999 ecore-imf >= 1.0.999 + ecore-con >= 1.0.999 edje >= 1.0.999 ] ) -PKG_CHECK_MODULES([ELEMENTARY_ECORE_CON], - [ecore-con >= 1.0.999], - [ - ELEMENTARY_ECORE_CON_INC="#include " - AC_DEFINE(HAVE_ELEMENTARY_ECORE_CON, 1, [Have Ecore_Con support]) - have_ecore_con="yes" - requirement_elm="ecore-con >= 1.0.999 ${requirement_elm}" - ], - [have_ecore_con="no"]) -AC_SUBST(ELEMENTARY_ECORE_CON_INC) - -AM_CONDITIONAL([HAVE_ECORE_CON], [test "x${have_ecore_con}" = "xyes"]) - PKG_CHECK_MODULES([EIO], [eio], [ @@ -747,7 +735,6 @@ echo " Windows XP.............: ${have_elementary_win32}" echo " Windows CE.............: ${have_elementary_wince}" echo echo " Features:" -echo " Ecore_Con..............: ${have_ecore_con}" echo " EDBus..................: ${have_elementary_edbus}" echo " EFreet.................: ${have_elementary_efreet}" echo " EWeather...............: ${have_elementary_eweather}" diff --git a/data/images/Makefile.am b/data/images/Makefile.am index 88a4f7e..cb0d5d2 100644 --- a/data/images/Makefile.am +++ b/data/images/Makefile.am @@ -94,4 +94,4 @@ g_layer/long_tap_5.png \ g_layer/tap_4.png -EXTRA_DIST = $(files_DATA) $(files_glayer_DATA) +EXTRA_DIST = $(files_DATA) diff --git a/doc/widgets/widget_preview_ctxpopup.c b/doc/widgets/widget_preview_ctxpopup.c index c2819d6..5b71284 100644 --- a/doc/widgets/widget_preview_ctxpopup.c +++ b/doc/widgets/widget_preview_ctxpopup.c @@ -20,7 +20,7 @@ ic = elm_icon_add(ctxpopup); elm_icon_standard_set(ic, "folder"); elm_icon_scale_set(ic, EINA_FALSE, EINA_FALSE); Elm_Object_Item *it = elm_ctxpopup_item_append(ctxpopup, "Navigate to folder", ic, NULL, NULL); -elm_object_item_disabled_set(it, EINA_TRUE); +elm_ctxpopup_item_disabled_set(it, EINA_TRUE); evas_object_size_hint_weight_set(ctxpopup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); evas_object_move(ctxpopup, 0, 0); diff --git a/po/ar.po b/po/ar.po index 43c9289..baa7972 100644 --- a/po/ar.po +++ b/po/ar.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: elementary\n" "Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n" -"POT-Creation-Date: 2011-11-25 15:46+0900\n" +"POT-Creation-Date: 2011-11-21 18:14+0900\n" "PO-Revision-Date: 2011-09-26 21:20+0900\n" "Last-Translator: Sumanth Krishna Mannam \n" "Language-Team: General\n" @@ -25,8 +25,8 @@ msgstr "" msgid "Home" msgstr "" -#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1381 -#: src/lib/elm_searchbar.c:211 +#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1382 +#: src/lib/elm_searchbar.c:226 msgid "Cancel" msgstr "" @@ -78,27 +78,27 @@ msgstr "AM" msgid "DateTimeFormat" msgstr "%b %d, %Y %I : %M %p" -#: src/lib/elm_entry.c:1355 +#: src/lib/elm_entry.c:1356 msgid "Select" msgstr "" -#: src/lib/elm_entry.c:1360 +#: src/lib/elm_entry.c:1361 msgid "Paste" msgstr "" -#: src/lib/elm_entry.c:1365 src/lib/elm_entry.c:1385 +#: src/lib/elm_entry.c:1366 src/lib/elm_entry.c:1386 msgid "More" msgstr "" -#: src/lib/elm_entry.c:1375 +#: src/lib/elm_entry.c:1376 msgid "Copy" msgstr "" -#: src/lib/elm_entry.c:1378 +#: src/lib/elm_entry.c:1379 msgid "Cut" msgstr "" -#: src/lib/elm_searchbar.c:199 +#: src/lib/elm_searchbar.c:214 msgid "Search" msgstr "" diff --git a/po/az_IR.po b/po/az_IR.po index 3ca50c8..c37b897 100644 --- a/po/az_IR.po +++ b/po/az_IR.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: elementary\n" "Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n" -"POT-Creation-Date: 2011-11-25 15:46+0900\n" +"POT-Creation-Date: 2011-11-21 18:14+0900\n" "PO-Revision-Date: 2011-09-26 21:20+0900\n" "Last-Translator: Sumanth Krishna Mannam \n" "Language-Team: General\n" @@ -24,8 +24,8 @@ msgstr "" msgid "Home" msgstr "" -#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1381 -#: src/lib/elm_searchbar.c:211 +#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1382 +#: src/lib/elm_searchbar.c:226 msgid "Cancel" msgstr "" @@ -77,27 +77,27 @@ msgstr "AM" msgid "DateTimeFormat" msgstr "%b %d, %Y %I : %M %p" -#: src/lib/elm_entry.c:1355 +#: src/lib/elm_entry.c:1356 msgid "Select" msgstr "" -#: src/lib/elm_entry.c:1360 +#: src/lib/elm_entry.c:1361 msgid "Paste" msgstr "" -#: src/lib/elm_entry.c:1365 src/lib/elm_entry.c:1385 +#: src/lib/elm_entry.c:1366 src/lib/elm_entry.c:1386 msgid "More" msgstr "" -#: src/lib/elm_entry.c:1375 +#: src/lib/elm_entry.c:1376 msgid "Copy" msgstr "" -#: src/lib/elm_entry.c:1378 +#: src/lib/elm_entry.c:1379 msgid "Cut" msgstr "" -#: src/lib/elm_searchbar.c:199 +#: src/lib/elm_searchbar.c:214 msgid "Search" msgstr "" diff --git a/po/de.po b/po/de.po index ff09b6b..53e5852 100644 --- a/po/de.po +++ b/po/de.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: elementary 0.7.0.57309\n" "Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n" -"POT-Creation-Date: 2011-11-25 15:46+0900\n" +"POT-Creation-Date: 2011-11-21 18:14+0900\n" "PO-Revision-Date: 2011-09-26 21:20+0900\n" "Last-Translator: Sumanth Krishna Mannam \n" "Language-Team: General\n" @@ -26,8 +26,8 @@ msgstr "Aufwärts" msgid "Home" msgstr "Persönlicher Ordner" -#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1381 -#: src/lib/elm_searchbar.c:211 +#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1382 +#: src/lib/elm_searchbar.c:226 msgid "Cancel" msgstr "Abbrechen" @@ -79,27 +79,27 @@ msgstr "vorm." msgid "DateTimeFormat" msgstr "%d. %b %Y %H : %M" -#: src/lib/elm_entry.c:1355 +#: src/lib/elm_entry.c:1356 msgid "Select" msgstr "Auswählen" -#: src/lib/elm_entry.c:1360 +#: src/lib/elm_entry.c:1361 msgid "Paste" msgstr "Einfügen" -#: src/lib/elm_entry.c:1365 src/lib/elm_entry.c:1385 +#: src/lib/elm_entry.c:1366 src/lib/elm_entry.c:1386 msgid "More" msgstr "" -#: src/lib/elm_entry.c:1375 +#: src/lib/elm_entry.c:1376 msgid "Copy" msgstr "Kopieren" -#: src/lib/elm_entry.c:1378 +#: src/lib/elm_entry.c:1379 msgid "Cut" msgstr "Ausschneiden" -#: src/lib/elm_searchbar.c:199 +#: src/lib/elm_searchbar.c:214 msgid "Search" msgstr "Suche" diff --git a/po/el.po b/po/el.po index 14186a0..08c4bc1 100644 --- a/po/el.po +++ b/po/el.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: elementary\n" "Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n" -"POT-Creation-Date: 2011-11-25 15:46+0900\n" +"POT-Creation-Date: 2011-11-21 18:14+0900\n" "PO-Revision-Date: 2011-09-26 21:20+0900\n" "Last-Translator: Sumanth Krishna Mannam \n" "Language-Team: General\n" @@ -25,8 +25,8 @@ msgstr "" msgid "Home" msgstr "" -#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1381 -#: src/lib/elm_searchbar.c:211 +#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1382 +#: src/lib/elm_searchbar.c:226 msgid "Cancel" msgstr "" @@ -78,27 +78,27 @@ msgstr "AM" msgid "DateTimeFormat" msgstr "%d %b %Y %I : %M %p" -#: src/lib/elm_entry.c:1355 +#: src/lib/elm_entry.c:1356 msgid "Select" msgstr "" -#: src/lib/elm_entry.c:1360 +#: src/lib/elm_entry.c:1361 msgid "Paste" msgstr "" -#: src/lib/elm_entry.c:1365 src/lib/elm_entry.c:1385 +#: src/lib/elm_entry.c:1366 src/lib/elm_entry.c:1386 msgid "More" msgstr "" -#: src/lib/elm_entry.c:1375 +#: src/lib/elm_entry.c:1376 msgid "Copy" msgstr "" -#: src/lib/elm_entry.c:1378 +#: src/lib/elm_entry.c:1379 msgid "Cut" msgstr "" -#: src/lib/elm_searchbar.c:199 +#: src/lib/elm_searchbar.c:214 msgid "Search" msgstr "" diff --git a/po/en_US.po b/po/en_US.po index aacbd61..0cc428c 100644 --- a/po/en_US.po +++ b/po/en_US.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: elementary\n" "Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n" -"POT-Creation-Date: 2011-11-25 15:46+0900\n" +"POT-Creation-Date: 2011-11-21 18:14+0900\n" "PO-Revision-Date: 2011-09-26 21:20+0900\n" "Last-Translator: Sumanth Krishna Mannam \n" "Language-Team: General\n" @@ -25,8 +25,8 @@ msgstr "" msgid "Home" msgstr "" -#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1381 -#: src/lib/elm_searchbar.c:211 +#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1382 +#: src/lib/elm_searchbar.c:226 msgid "Cancel" msgstr "" @@ -78,27 +78,27 @@ msgstr "AM" msgid "DateTimeFormat" msgstr "%b %d, %Y %I : %M %p" -#: src/lib/elm_entry.c:1355 +#: src/lib/elm_entry.c:1356 msgid "Select" msgstr "" -#: src/lib/elm_entry.c:1360 +#: src/lib/elm_entry.c:1361 msgid "Paste" msgstr "" -#: src/lib/elm_entry.c:1365 src/lib/elm_entry.c:1385 +#: src/lib/elm_entry.c:1366 src/lib/elm_entry.c:1386 msgid "More" msgstr "" -#: src/lib/elm_entry.c:1375 +#: src/lib/elm_entry.c:1376 msgid "Copy" msgstr "" -#: src/lib/elm_entry.c:1378 +#: src/lib/elm_entry.c:1379 msgid "Cut" msgstr "" -#: src/lib/elm_searchbar.c:199 +#: src/lib/elm_searchbar.c:214 msgid "Search" msgstr "" diff --git a/po/es_ES.po b/po/es_ES.po index d279a26..a994161 100644 --- a/po/es_ES.po +++ b/po/es_ES.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: elementary\n" "Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n" -"POT-Creation-Date: 2011-11-25 15:46+0900\n" +"POT-Creation-Date: 2011-11-21 18:14+0900\n" "PO-Revision-Date: 2011-09-26 21:20+0900\n" "Last-Translator: Sumanth Krishna Mannam \n" "Language-Team: General\n" @@ -25,8 +25,8 @@ msgstr "" msgid "Home" msgstr "" -#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1381 -#: src/lib/elm_searchbar.c:211 +#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1382 +#: src/lib/elm_searchbar.c:226 msgid "Cancel" msgstr "" @@ -78,27 +78,27 @@ msgstr "a.m." msgid "DateTimeFormat" msgstr "%d de %b de %Y %H : %M" -#: src/lib/elm_entry.c:1355 +#: src/lib/elm_entry.c:1356 msgid "Select" msgstr "" -#: src/lib/elm_entry.c:1360 +#: src/lib/elm_entry.c:1361 msgid "Paste" msgstr "" -#: src/lib/elm_entry.c:1365 src/lib/elm_entry.c:1385 +#: src/lib/elm_entry.c:1366 src/lib/elm_entry.c:1386 msgid "More" msgstr "" -#: src/lib/elm_entry.c:1375 +#: src/lib/elm_entry.c:1376 msgid "Copy" msgstr "" -#: src/lib/elm_entry.c:1378 +#: src/lib/elm_entry.c:1379 msgid "Cut" msgstr "" -#: src/lib/elm_searchbar.c:199 +#: src/lib/elm_searchbar.c:214 msgid "Search" msgstr "" diff --git a/po/fa.po b/po/fa.po index f3baae5..4cc4478 100644 --- a/po/fa.po +++ b/po/fa.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: elementary\n" "Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n" -"POT-Creation-Date: 2011-11-25 15:46+0900\n" +"POT-Creation-Date: 2011-11-21 18:14+0900\n" "PO-Revision-Date: 2011-09-26 21:20+0900\n" "Last-Translator: Sumanth Krishna Mannam \n" "Language-Team: General\n" @@ -24,8 +24,8 @@ msgstr "" msgid "Home" msgstr "" -#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1381 -#: src/lib/elm_searchbar.c:211 +#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1382 +#: src/lib/elm_searchbar.c:226 msgid "Cancel" msgstr "" @@ -77,27 +77,27 @@ msgstr "AM" msgid "DateTimeFormat" msgstr "%b %d, %Y %I : %M %p" -#: src/lib/elm_entry.c:1355 +#: src/lib/elm_entry.c:1356 msgid "Select" msgstr "" -#: src/lib/elm_entry.c:1360 +#: src/lib/elm_entry.c:1361 msgid "Paste" msgstr "" -#: src/lib/elm_entry.c:1365 src/lib/elm_entry.c:1385 +#: src/lib/elm_entry.c:1366 src/lib/elm_entry.c:1386 msgid "More" msgstr "" -#: src/lib/elm_entry.c:1375 +#: src/lib/elm_entry.c:1376 msgid "Copy" msgstr "" -#: src/lib/elm_entry.c:1378 +#: src/lib/elm_entry.c:1379 msgid "Cut" msgstr "" -#: src/lib/elm_searchbar.c:199 +#: src/lib/elm_searchbar.c:214 msgid "Search" msgstr "" diff --git a/po/fr.po b/po/fr.po index ac4b2ab..a534ad6 100644 --- a/po/fr.po +++ b/po/fr.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: Elementary\n" "Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n" -"POT-Creation-Date: 2011-11-25 15:46+0900\n" +"POT-Creation-Date: 2011-11-21 18:14+0900\n" "PO-Revision-Date: 2011-09-26 21:20+0900\n" "Last-Translator: Sumanth Krishna Mannam \n" "Language-Team: General\n" @@ -26,8 +26,8 @@ msgstr "Monter" msgid "Home" msgstr "Home" -#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1381 -#: src/lib/elm_searchbar.c:211 +#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1382 +#: src/lib/elm_searchbar.c:226 msgid "Cancel" msgstr "Annuler" @@ -79,27 +79,27 @@ msgstr "AM" msgid "DateTimeFormat" msgstr "%d %b %Y %H : %M" -#: src/lib/elm_entry.c:1355 +#: src/lib/elm_entry.c:1356 msgid "Select" msgstr "Sélectionner" -#: src/lib/elm_entry.c:1360 +#: src/lib/elm_entry.c:1361 msgid "Paste" msgstr "Coller" -#: src/lib/elm_entry.c:1365 src/lib/elm_entry.c:1385 +#: src/lib/elm_entry.c:1366 src/lib/elm_entry.c:1386 msgid "More" msgstr "" -#: src/lib/elm_entry.c:1375 +#: src/lib/elm_entry.c:1376 msgid "Copy" msgstr "Copier" -#: src/lib/elm_entry.c:1378 +#: src/lib/elm_entry.c:1379 msgid "Cut" msgstr "Couper" -#: src/lib/elm_searchbar.c:199 +#: src/lib/elm_searchbar.c:214 msgid "Search" msgstr "Rechercher" diff --git a/po/he.po b/po/he.po index 07e7a0a..44f1947 100644 --- a/po/he.po +++ b/po/he.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: elementary\n" "Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n" -"POT-Creation-Date: 2011-11-25 15:46+0900\n" +"POT-Creation-Date: 2011-11-21 18:14+0900\n" "PO-Revision-Date: 2011-09-26 21:20+0900\n" "Last-Translator: Sumanth Krishna Mannam \n" "Language-Team: General\n" @@ -24,8 +24,8 @@ msgstr "" msgid "Home" msgstr "" -#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1381 -#: src/lib/elm_searchbar.c:211 +#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1382 +#: src/lib/elm_searchbar.c:226 msgid "Cancel" msgstr "בטל" @@ -77,27 +77,27 @@ msgstr "AM" msgid "DateTimeFormat" msgstr "%b %d, %Y %I : %M %p" -#: src/lib/elm_entry.c:1355 +#: src/lib/elm_entry.c:1356 msgid "Select" msgstr "התחל בחירה" -#: src/lib/elm_entry.c:1360 +#: src/lib/elm_entry.c:1361 msgid "Paste" msgstr "הדבק" -#: src/lib/elm_entry.c:1365 src/lib/elm_entry.c:1385 +#: src/lib/elm_entry.c:1366 src/lib/elm_entry.c:1386 msgid "More" msgstr "" -#: src/lib/elm_entry.c:1375 +#: src/lib/elm_entry.c:1376 msgid "Copy" msgstr "העתק" -#: src/lib/elm_entry.c:1378 +#: src/lib/elm_entry.c:1379 msgid "Cut" msgstr "גזור" -#: src/lib/elm_searchbar.c:199 +#: src/lib/elm_searchbar.c:214 msgid "Search" msgstr "לחפש" diff --git a/po/it.po b/po/it.po index b4c3fdd..489865a 100644 --- a/po/it.po +++ b/po/it.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: Elementary\n" "Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n" -"POT-Creation-Date: 2011-11-25 15:46+0900\n" +"POT-Creation-Date: 2011-11-21 18:14+0900\n" "PO-Revision-Date: 2011-09-26 21:20+0900\n" "Last-Translator: Sumanth Krishna Mannam \n" "Language-Team: General\n" @@ -22,8 +22,8 @@ msgstr "Su" msgid "Home" msgstr "Home" -#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1381 -#: src/lib/elm_searchbar.c:211 +#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1382 +#: src/lib/elm_searchbar.c:226 msgid "Cancel" msgstr "Annulla" @@ -75,27 +75,27 @@ msgstr "m." msgid "DateTimeFormat" msgstr "%d %b %Y %H : %M" -#: src/lib/elm_entry.c:1355 +#: src/lib/elm_entry.c:1356 msgid "Select" msgstr "Seleziona" -#: src/lib/elm_entry.c:1360 +#: src/lib/elm_entry.c:1361 msgid "Paste" msgstr "Incolla" -#: src/lib/elm_entry.c:1365 src/lib/elm_entry.c:1385 +#: src/lib/elm_entry.c:1366 src/lib/elm_entry.c:1386 msgid "More" msgstr "" -#: src/lib/elm_entry.c:1375 +#: src/lib/elm_entry.c:1376 msgid "Copy" msgstr "Copia" -#: src/lib/elm_entry.c:1378 +#: src/lib/elm_entry.c:1379 msgid "Cut" msgstr "Taglio" -#: src/lib/elm_searchbar.c:199 +#: src/lib/elm_searchbar.c:214 msgid "Search" msgstr "Ricerca" diff --git a/po/ja_JP.po b/po/ja_JP.po index bec4a90..990914e 100644 --- a/po/ja_JP.po +++ b/po/ja_JP.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: elementary\n" "Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n" -"POT-Creation-Date: 2011-11-25 15:46+0900\n" +"POT-Creation-Date: 2011-11-21 18:14+0900\n" "PO-Revision-Date: 2011-09-26 21:20+0900\n" "Last-Translator: Sumanth Krishna Mannam \n" "Language-Team: General\n" @@ -26,8 +26,8 @@ msgstr "" msgid "Home" msgstr "" -#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1381 -#: src/lib/elm_searchbar.c:211 +#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1382 +#: src/lib/elm_searchbar.c:226 msgid "Cancel" msgstr "" @@ -79,27 +79,27 @@ msgstr "午前" msgid "DateTimeFormat" msgstr "%Y年 %m月 %d日 %H : %M" -#: src/lib/elm_entry.c:1355 +#: src/lib/elm_entry.c:1356 msgid "Select" msgstr "" -#: src/lib/elm_entry.c:1360 +#: src/lib/elm_entry.c:1361 msgid "Paste" msgstr "" -#: src/lib/elm_entry.c:1365 src/lib/elm_entry.c:1385 +#: src/lib/elm_entry.c:1366 src/lib/elm_entry.c:1386 msgid "More" msgstr "" -#: src/lib/elm_entry.c:1375 +#: src/lib/elm_entry.c:1376 msgid "Copy" msgstr "" -#: src/lib/elm_entry.c:1378 +#: src/lib/elm_entry.c:1379 msgid "Cut" msgstr "" -#: src/lib/elm_searchbar.c:199 +#: src/lib/elm_searchbar.c:214 msgid "Search" msgstr "" diff --git a/po/ko_KR.po b/po/ko_KR.po index 9c82409..d6d284f 100644 --- a/po/ko_KR.po +++ b/po/ko_KR.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: elementary\n" "Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n" -"POT-Creation-Date: 2011-11-25 15:46+0900\n" +"POT-Creation-Date: 2011-11-21 18:14+0900\n" "PO-Revision-Date: 2011-09-26 21:20+0900\n" "Last-Translator: Sumanth Krishna Mannam \n" "Language-Team: General\n" @@ -24,8 +24,8 @@ msgstr "위로" msgid "Home" msgstr "홈" -#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1381 -#: src/lib/elm_searchbar.c:211 +#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1382 +#: src/lib/elm_searchbar.c:226 msgid "Cancel" msgstr "취소" @@ -77,27 +77,27 @@ msgstr "오전" msgid "DateTimeFormat" msgstr "%Y년 %m월 %d일 %p %I : %M" -#: src/lib/elm_entry.c:1355 +#: src/lib/elm_entry.c:1356 msgid "Select" msgstr "선택" -#: src/lib/elm_entry.c:1360 +#: src/lib/elm_entry.c:1361 msgid "Paste" msgstr "붙여넣기" -#: src/lib/elm_entry.c:1365 src/lib/elm_entry.c:1385 +#: src/lib/elm_entry.c:1366 src/lib/elm_entry.c:1386 msgid "More" msgstr "" -#: src/lib/elm_entry.c:1375 +#: src/lib/elm_entry.c:1376 msgid "Copy" msgstr "복사" -#: src/lib/elm_entry.c:1378 +#: src/lib/elm_entry.c:1379 msgid "Cut" msgstr "잘라내기" -#: src/lib/elm_searchbar.c:199 +#: src/lib/elm_searchbar.c:214 msgid "Search" msgstr "검색" diff --git a/po/nl.po b/po/nl.po index 235552d..48e5edb 100644 --- a/po/nl.po +++ b/po/nl.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: elementary 0.7.0.57309\n" "Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n" -"POT-Creation-Date: 2011-11-25 15:46+0900\n" +"POT-Creation-Date: 2011-11-21 18:14+0900\n" "PO-Revision-Date: 2011-09-26 21:20+0900\n" "Last-Translator: Sumanth Krishna Mannam \n" "Language-Team: General\n" @@ -28,8 +28,8 @@ msgstr "Omhoog" msgid "Home" msgstr "Persoonlijke map" -#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1381 -#: src/lib/elm_searchbar.c:211 +#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1382 +#: src/lib/elm_searchbar.c:226 msgid "Cancel" msgstr "Annuleren" @@ -81,27 +81,27 @@ msgstr "AM" msgid "DateTimeFormat" msgstr "%d %b %Y %H : %M" -#: src/lib/elm_entry.c:1355 +#: src/lib/elm_entry.c:1356 msgid "Select" msgstr "Selecteren" -#: src/lib/elm_entry.c:1360 +#: src/lib/elm_entry.c:1361 msgid "Paste" msgstr "Plakken" -#: src/lib/elm_entry.c:1365 src/lib/elm_entry.c:1385 +#: src/lib/elm_entry.c:1366 src/lib/elm_entry.c:1386 msgid "More" msgstr "" -#: src/lib/elm_entry.c:1375 +#: src/lib/elm_entry.c:1376 msgid "Copy" msgstr "Kopiëren" -#: src/lib/elm_entry.c:1378 +#: src/lib/elm_entry.c:1379 msgid "Cut" msgstr "Knippen" -#: src/lib/elm_searchbar.c:199 +#: src/lib/elm_searchbar.c:214 msgid "Search" msgstr "Zoeken" diff --git a/po/ps.po b/po/ps.po index 35beccb..936a790 100644 --- a/po/ps.po +++ b/po/ps.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: elementary\n" "Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n" -"POT-Creation-Date: 2011-11-25 15:46+0900\n" +"POT-Creation-Date: 2011-11-21 18:14+0900\n" "PO-Revision-Date: 2011-09-26 21:20+0900\n" "Last-Translator: Sumanth Krishna Mannam \n" "Language-Team: General\n" @@ -23,8 +23,8 @@ msgstr "" msgid "Home" msgstr "" -#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1381 -#: src/lib/elm_searchbar.c:211 +#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1382 +#: src/lib/elm_searchbar.c:226 msgid "Cancel" msgstr "" @@ -76,27 +76,27 @@ msgstr "AM" msgid "DateTimeFormat" msgstr "%b %d, %Y %I : %M %p" -#: src/lib/elm_entry.c:1355 +#: src/lib/elm_entry.c:1356 msgid "Select" msgstr "" -#: src/lib/elm_entry.c:1360 +#: src/lib/elm_entry.c:1361 msgid "Paste" msgstr "" -#: src/lib/elm_entry.c:1365 src/lib/elm_entry.c:1385 +#: src/lib/elm_entry.c:1366 src/lib/elm_entry.c:1386 msgid "More" msgstr "" -#: src/lib/elm_entry.c:1375 +#: src/lib/elm_entry.c:1376 msgid "Copy" msgstr "" -#: src/lib/elm_entry.c:1378 +#: src/lib/elm_entry.c:1379 msgid "Cut" msgstr "" -#: src/lib/elm_searchbar.c:199 +#: src/lib/elm_searchbar.c:214 msgid "Search" msgstr "" diff --git a/po/pt.po b/po/pt.po index f3d8bbf..b07f59c 100644 --- a/po/pt.po +++ b/po/pt.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: Elementary\n" "Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n" -"POT-Creation-Date: 2011-11-25 15:46+0900\n" +"POT-Creation-Date: 2011-11-21 18:14+0900\n" "PO-Revision-Date: 2011-09-26 21:20+0900\n" "Last-Translator: Sumanth Krishna Mannam \n" "Language-Team: General\n" @@ -24,8 +24,8 @@ msgstr "" msgid "Home" msgstr "" -#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1381 -#: src/lib/elm_searchbar.c:211 +#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1382 +#: src/lib/elm_searchbar.c:226 msgid "Cancel" msgstr "Cancelar" @@ -77,27 +77,27 @@ msgstr "Antes" msgid "DateTimeFormat" msgstr "%d de %b de %Y %H : %M" -#: src/lib/elm_entry.c:1355 +#: src/lib/elm_entry.c:1356 msgid "Select" msgstr "Selecionar" -#: src/lib/elm_entry.c:1360 +#: src/lib/elm_entry.c:1361 msgid "Paste" msgstr "Colar" -#: src/lib/elm_entry.c:1365 src/lib/elm_entry.c:1385 +#: src/lib/elm_entry.c:1366 src/lib/elm_entry.c:1386 msgid "More" msgstr "" -#: src/lib/elm_entry.c:1375 +#: src/lib/elm_entry.c:1376 msgid "Copy" msgstr "Copiar" -#: src/lib/elm_entry.c:1378 +#: src/lib/elm_entry.c:1379 msgid "Cut" msgstr "Cortar" -#: src/lib/elm_searchbar.c:199 +#: src/lib/elm_searchbar.c:214 msgid "Search" msgstr "Búsqueda" diff --git a/po/ru_RU.po b/po/ru_RU.po index 8f3f66b..d21a1d6 100644 --- a/po/ru_RU.po +++ b/po/ru_RU.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: elementary\n" "Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n" -"POT-Creation-Date: 2011-11-25 15:46+0900\n" +"POT-Creation-Date: 2011-11-21 18:14+0900\n" "PO-Revision-Date: 2011-09-26 21:20+0900\n" "Last-Translator: Sumanth Krishna Mannam \n" "Language-Team: General\n" @@ -25,8 +25,8 @@ msgstr "" msgid "Home" msgstr "" -#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1381 -#: src/lib/elm_searchbar.c:211 +#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1382 +#: src/lib/elm_searchbar.c:226 msgid "Cancel" msgstr "" @@ -78,27 +78,27 @@ msgstr "AM" msgid "DateTimeFormat" msgstr "%d %b %Yг. %H : %M" -#: src/lib/elm_entry.c:1355 +#: src/lib/elm_entry.c:1356 msgid "Select" msgstr "" -#: src/lib/elm_entry.c:1360 +#: src/lib/elm_entry.c:1361 msgid "Paste" msgstr "" -#: src/lib/elm_entry.c:1365 src/lib/elm_entry.c:1385 +#: src/lib/elm_entry.c:1366 src/lib/elm_entry.c:1386 msgid "More" msgstr "" -#: src/lib/elm_entry.c:1375 +#: src/lib/elm_entry.c:1376 msgid "Copy" msgstr "" -#: src/lib/elm_entry.c:1378 +#: src/lib/elm_entry.c:1379 msgid "Cut" msgstr "" -#: src/lib/elm_searchbar.c:199 +#: src/lib/elm_searchbar.c:214 msgid "Search" msgstr "" diff --git a/po/tr_TR.po b/po/tr_TR.po index b28df6b..efc8ff2 100644 --- a/po/tr_TR.po +++ b/po/tr_TR.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: elementary\n" "Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n" -"POT-Creation-Date: 2011-11-25 15:46+0900\n" +"POT-Creation-Date: 2011-11-21 18:14+0900\n" "PO-Revision-Date: 2011-09-26 21:20+0900\n" "Last-Translator: Sumanth Krishna Mannam \n" "Language-Team: General\n" @@ -25,8 +25,8 @@ msgstr "" msgid "Home" msgstr "" -#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1381 -#: src/lib/elm_searchbar.c:211 +#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1382 +#: src/lib/elm_searchbar.c:226 msgid "Cancel" msgstr "" @@ -78,27 +78,27 @@ msgstr "AM" msgid "DateTimeFormat" msgstr "%d %b %Y %H : %M" -#: src/lib/elm_entry.c:1355 +#: src/lib/elm_entry.c:1356 msgid "Select" msgstr "" -#: src/lib/elm_entry.c:1360 +#: src/lib/elm_entry.c:1361 msgid "Paste" msgstr "" -#: src/lib/elm_entry.c:1365 src/lib/elm_entry.c:1385 +#: src/lib/elm_entry.c:1366 src/lib/elm_entry.c:1386 msgid "More" msgstr "" -#: src/lib/elm_entry.c:1375 +#: src/lib/elm_entry.c:1376 msgid "Copy" msgstr "" -#: src/lib/elm_entry.c:1378 +#: src/lib/elm_entry.c:1379 msgid "Cut" msgstr "" -#: src/lib/elm_searchbar.c:199 +#: src/lib/elm_searchbar.c:214 msgid "Search" msgstr "" diff --git a/po/ur.po b/po/ur.po index b0c7365..de1747a 100644 --- a/po/ur.po +++ b/po/ur.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: elementary\n" "Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n" -"POT-Creation-Date: 2011-11-25 15:46+0900\n" +"POT-Creation-Date: 2011-11-21 18:14+0900\n" "PO-Revision-Date: 2011-09-26 21:20+0900\n" "Last-Translator: Sumanth Krishna Mannam \n" "Language-Team: General\n" @@ -23,8 +23,8 @@ msgstr "" msgid "Home" msgstr "" -#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1381 -#: src/lib/elm_searchbar.c:211 +#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1382 +#: src/lib/elm_searchbar.c:226 msgid "Cancel" msgstr "" @@ -76,27 +76,27 @@ msgstr "AM" msgid "DateTimeFormat" msgstr "%b %d, %Y %I : %M %p" -#: src/lib/elm_entry.c:1355 +#: src/lib/elm_entry.c:1356 msgid "Select" msgstr "" -#: src/lib/elm_entry.c:1360 +#: src/lib/elm_entry.c:1361 msgid "Paste" msgstr "" -#: src/lib/elm_entry.c:1365 src/lib/elm_entry.c:1385 +#: src/lib/elm_entry.c:1366 src/lib/elm_entry.c:1386 msgid "More" msgstr "" -#: src/lib/elm_entry.c:1375 +#: src/lib/elm_entry.c:1376 msgid "Copy" msgstr "" -#: src/lib/elm_entry.c:1378 +#: src/lib/elm_entry.c:1379 msgid "Cut" msgstr "" -#: src/lib/elm_searchbar.c:199 +#: src/lib/elm_searchbar.c:214 msgid "Search" msgstr "" diff --git a/po/yi.po b/po/yi.po index 25104d5..934bfc6 100644 --- a/po/yi.po +++ b/po/yi.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: elementary\n" "Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n" -"POT-Creation-Date: 2011-11-25 15:46+0900\n" +"POT-Creation-Date: 2011-11-21 18:14+0900\n" "PO-Revision-Date: 2011-09-26 21:20+0900\n" "Last-Translator: Sumanth Krishna Mannam \n" "Language-Team: General\n" @@ -23,8 +23,8 @@ msgstr "" msgid "Home" msgstr "" -#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1381 -#: src/lib/elm_searchbar.c:211 +#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1382 +#: src/lib/elm_searchbar.c:226 msgid "Cancel" msgstr "" @@ -76,27 +76,27 @@ msgstr "AM" msgid "DateTimeFormat" msgstr "%b %d, %Y %I : %M %p" -#: src/lib/elm_entry.c:1355 +#: src/lib/elm_entry.c:1356 msgid "Select" msgstr "" -#: src/lib/elm_entry.c:1360 +#: src/lib/elm_entry.c:1361 msgid "Paste" msgstr "" -#: src/lib/elm_entry.c:1365 src/lib/elm_entry.c:1385 +#: src/lib/elm_entry.c:1366 src/lib/elm_entry.c:1386 msgid "More" msgstr "" -#: src/lib/elm_entry.c:1375 +#: src/lib/elm_entry.c:1376 msgid "Copy" msgstr "" -#: src/lib/elm_entry.c:1378 +#: src/lib/elm_entry.c:1379 msgid "Cut" msgstr "" -#: src/lib/elm_searchbar.c:199 +#: src/lib/elm_searchbar.c:214 msgid "Search" msgstr "" diff --git a/po/zh_CN.po b/po/zh_CN.po index 76b1d62..2279dd3 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: elementary\n" "Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n" -"POT-Creation-Date: 2011-11-25 15:46+0900\n" +"POT-Creation-Date: 2011-11-21 18:14+0900\n" "PO-Revision-Date: 2011-09-26 21:20+0900\n" "Last-Translator: Sumanth Krishna Mannam \n" "Language-Team: General\n" @@ -25,8 +25,8 @@ msgstr "" msgid "Home" msgstr "" -#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1381 -#: src/lib/elm_searchbar.c:211 +#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1382 +#: src/lib/elm_searchbar.c:226 msgid "Cancel" msgstr "" @@ -78,27 +78,27 @@ msgstr "上午" msgid "DateTimeFormat" msgstr "%Y年 %m月 %d日 %p %I : %M" -#: src/lib/elm_entry.c:1355 +#: src/lib/elm_entry.c:1356 msgid "Select" msgstr "" -#: src/lib/elm_entry.c:1360 +#: src/lib/elm_entry.c:1361 msgid "Paste" msgstr "" -#: src/lib/elm_entry.c:1365 src/lib/elm_entry.c:1385 +#: src/lib/elm_entry.c:1366 src/lib/elm_entry.c:1386 msgid "More" msgstr "" -#: src/lib/elm_entry.c:1375 +#: src/lib/elm_entry.c:1376 msgid "Copy" msgstr "" -#: src/lib/elm_entry.c:1378 +#: src/lib/elm_entry.c:1379 msgid "Cut" msgstr "" -#: src/lib/elm_searchbar.c:199 +#: src/lib/elm_searchbar.c:214 msgid "Search" msgstr "" diff --git a/po/zh_HK.po b/po/zh_HK.po index 76b1d62..2279dd3 100644 --- a/po/zh_HK.po +++ b/po/zh_HK.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: elementary\n" "Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n" -"POT-Creation-Date: 2011-11-25 15:46+0900\n" +"POT-Creation-Date: 2011-11-21 18:14+0900\n" "PO-Revision-Date: 2011-09-26 21:20+0900\n" "Last-Translator: Sumanth Krishna Mannam \n" "Language-Team: General\n" @@ -25,8 +25,8 @@ msgstr "" msgid "Home" msgstr "" -#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1381 -#: src/lib/elm_searchbar.c:211 +#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1382 +#: src/lib/elm_searchbar.c:226 msgid "Cancel" msgstr "" @@ -78,27 +78,27 @@ msgstr "上午" msgid "DateTimeFormat" msgstr "%Y年 %m月 %d日 %p %I : %M" -#: src/lib/elm_entry.c:1355 +#: src/lib/elm_entry.c:1356 msgid "Select" msgstr "" -#: src/lib/elm_entry.c:1360 +#: src/lib/elm_entry.c:1361 msgid "Paste" msgstr "" -#: src/lib/elm_entry.c:1365 src/lib/elm_entry.c:1385 +#: src/lib/elm_entry.c:1366 src/lib/elm_entry.c:1386 msgid "More" msgstr "" -#: src/lib/elm_entry.c:1375 +#: src/lib/elm_entry.c:1376 msgid "Copy" msgstr "" -#: src/lib/elm_entry.c:1378 +#: src/lib/elm_entry.c:1379 msgid "Cut" msgstr "" -#: src/lib/elm_searchbar.c:199 +#: src/lib/elm_searchbar.c:214 msgid "Search" msgstr "" diff --git a/po/zh_TW.po b/po/zh_TW.po index 76b1d62..2279dd3 100644 --- a/po/zh_TW.po +++ b/po/zh_TW.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: elementary\n" "Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n" -"POT-Creation-Date: 2011-11-25 15:46+0900\n" +"POT-Creation-Date: 2011-11-21 18:14+0900\n" "PO-Revision-Date: 2011-09-26 21:20+0900\n" "Last-Translator: Sumanth Krishna Mannam \n" "Language-Team: General\n" @@ -25,8 +25,8 @@ msgstr "" msgid "Home" msgstr "" -#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1381 -#: src/lib/elm_searchbar.c:211 +#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1382 +#: src/lib/elm_searchbar.c:226 msgid "Cancel" msgstr "" @@ -78,27 +78,27 @@ msgstr "上午" msgid "DateTimeFormat" msgstr "%Y年 %m月 %d日 %p %I : %M" -#: src/lib/elm_entry.c:1355 +#: src/lib/elm_entry.c:1356 msgid "Select" msgstr "" -#: src/lib/elm_entry.c:1360 +#: src/lib/elm_entry.c:1361 msgid "Paste" msgstr "" -#: src/lib/elm_entry.c:1365 src/lib/elm_entry.c:1385 +#: src/lib/elm_entry.c:1366 src/lib/elm_entry.c:1386 msgid "More" msgstr "" -#: src/lib/elm_entry.c:1375 +#: src/lib/elm_entry.c:1376 msgid "Copy" msgstr "" -#: src/lib/elm_entry.c:1378 +#: src/lib/elm_entry.c:1379 msgid "Cut" msgstr "" -#: src/lib/elm_searchbar.c:199 +#: src/lib/elm_searchbar.c:214 msgid "Search" msgstr "" diff --git a/src/bin/Makefile.am b/src/bin/Makefile.am index db1d353..7c65e75 100644 --- a/src/bin/Makefile.am +++ b/src/bin/Makefile.am @@ -81,7 +81,6 @@ test_list.c \ test_map.c \ test_menu.c \ test_multi.c \ -test_multibuttonentry.c \ test_naviframe.c \ test_notify.c \ test_pager.c \ diff --git a/src/bin/test.c b/src/bin/test.c index 6f16372..6d06def 100644 --- a/src/bin/test.c +++ b/src/bin/test.c @@ -39,7 +39,6 @@ void test_entry3(void *data, Evas_Object *obj, void *event_info); void test_entry4(void *data, Evas_Object *obj, void *event_info); void test_entry5(void *data, Evas_Object *obj, void *event_info); void test_entry_notepad(void *data, Evas_Object *obj, void *event_info); -void test_multibuttonentry(void *data, Evas_Object *obj, void *event_info); void test_anchorview(void *data, Evas_Object *obj, void *event_info); void test_anchorblock(void *data, Evas_Object *obj, void *event_info); void test_toolbar(void *data, Evas_Object *obj, void *event_info); @@ -334,7 +333,6 @@ add_tests: ADD_TEST(NULL, "Entries", "Entry 4", test_entry4); ADD_TEST(NULL, "Entries", "Entry 5", test_entry5); ADD_TEST(NULL, "Entries", "Entry Notepad", test_entry_notepad); - ADD_TEST(NULL, "Entries", "Multibuttonentry", test_multibuttonentry); //------------------------------// ADD_TEST(NULL, "Buttons", "Buttons", test_button); diff --git a/src/bin/test_ctxpopup.c b/src/bin/test_ctxpopup.c index 01189b5..c40b231 100644 --- a/src/bin/test_ctxpopup.c +++ b/src/bin/test_ctxpopup.c @@ -4,44 +4,11 @@ #endif #ifndef ELM_LIB_QUICKLAUNCH - -static void -_dismissed(void *data __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__) -{ - evas_object_del(obj); -} - -static void -_print_current_dir(Evas_Object *obj) -{ - Elm_Ctxpopup_Direction dir; - dir = elm_ctxpopup_direction_get(obj); - - switch(dir) - { - case ELM_CTXPOPUP_DIRECTION_LEFT: - printf("ctxpopup direction: left!\n"); - break; - case ELM_CTXPOPUP_DIRECTION_RIGHT: - printf("ctxpopup direction: right!\n"); - break; - case ELM_CTXPOPUP_DIRECTION_UP: - printf("ctxpopup direction: up!\n"); - break; - case ELM_CTXPOPUP_DIRECTION_DOWN: - printf("ctxpopup direction: down!\n"); - break; - case ELM_CTXPOPUP_DIRECTION_UNKNOWN: - printf("ctxpopup direction: unknow!\n"); - break; - } -} - static void _ctxpopup_item_cb(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info) { printf("ctxpopup item selected: %s\n", - elm_object_item_text_get(event_info)); + elm_ctxpopup_item_label_get(event_info)); } #define ITEM_NEW(_hov, _label, _icon) \ @@ -59,99 +26,79 @@ static void _list_item_cb(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__) { Evas_Object *ctxpopup, *ic; - Elm_Object_Item *it; + Elm_Ctxpopup_Item *it; Evas_Coord x,y; ctxpopup = elm_ctxpopup_add(obj); - evas_object_smart_callback_add(ctxpopup, - "dismissed", - _dismissed, - NULL); ITEM_NEW(ctxpopup, "Go to home folder", "home"); ITEM_NEW(ctxpopup, "Save file", "file"); ITEM_NEW(ctxpopup, "Delete file", "delete"); ITEM_NEW(ctxpopup, "Navigate to folder", "folder"); - elm_object_item_disabled_set(it, EINA_TRUE); + elm_ctxpopup_item_disabled_set(it, EINA_TRUE); ITEM_NEW(ctxpopup, "Edit entry", "edit"); ITEM_NEW(ctxpopup, "Set date and time", "clock"); - elm_object_item_disabled_set(it, EINA_TRUE); + elm_ctxpopup_item_disabled_set(it, EINA_TRUE); evas_pointer_canvas_xy_get(evas_object_evas_get(obj), &x, &y); evas_object_size_hint_max_set(ctxpopup, 240, 240); evas_object_move(ctxpopup, x, y); evas_object_show(ctxpopup); - _print_current_dir(ctxpopup); } static void _list_item_cb2(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__) { Evas_Object *ctxpopup, *ic; - Elm_Object_Item *it; + Elm_Ctxpopup_Item *it; Evas_Coord x,y; ctxpopup = elm_ctxpopup_add(obj); - evas_object_smart_callback_add(ctxpopup, - "dismissed", - _dismissed, - NULL); ITEM_NEW(ctxpopup, NULL, "home"); ITEM_NEW(ctxpopup, NULL, "file"); ITEM_NEW(ctxpopup, NULL, "delete"); ITEM_NEW(ctxpopup, NULL, "folder"); ITEM_NEW(ctxpopup, NULL, "edit"); - elm_object_item_disabled_set(it, EINA_TRUE); + elm_ctxpopup_item_disabled_set(it, EINA_TRUE); ITEM_NEW(ctxpopup, NULL, "clock"); evas_pointer_canvas_xy_get(evas_object_evas_get(obj), &x, &y); evas_object_size_hint_max_set(ctxpopup, 240, 240); evas_object_move(ctxpopup, x, y); evas_object_show(ctxpopup); - _print_current_dir(ctxpopup); } static void _list_item_cb3(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__) { Evas_Object *ctxpopup, *ic; - Elm_Object_Item *it; + Elm_Ctxpopup_Item *it; Evas_Coord x,y; ctxpopup = elm_ctxpopup_add(obj); - evas_object_smart_callback_add(ctxpopup, - "dismissed", - _dismissed, - NULL); ITEM_NEW(ctxpopup, "Eina", NULL); ITEM_NEW(ctxpopup, "Eet", NULL); ITEM_NEW(ctxpopup, "Evas", NULL); ITEM_NEW(ctxpopup, "Ecore", NULL); - elm_object_item_disabled_set(it, EINA_TRUE); + elm_ctxpopup_item_disabled_set(it, EINA_TRUE); ITEM_NEW(ctxpopup, "Embryo", NULL); ITEM_NEW(ctxpopup, "Edje", NULL); evas_pointer_canvas_xy_get(evas_object_evas_get(obj), &x, &y); evas_object_move(ctxpopup, x, y); evas_object_show(ctxpopup); - _print_current_dir(ctxpopup); } static void _list_item_cb4(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__) { Evas_Object *ctxpopup, *ic; - Elm_Object_Item *it; + Elm_Ctxpopup_Item *it; Evas_Coord x,y; ctxpopup = elm_ctxpopup_add(obj); - evas_object_smart_callback_add(ctxpopup, - "dismissed", - _dismissed, - NULL); - elm_ctxpopup_horizontal_set(ctxpopup, EINA_TRUE); ITEM_NEW(ctxpopup, NULL, "home"); @@ -165,7 +112,6 @@ _list_item_cb4(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_i evas_object_size_hint_max_set(ctxpopup, 240, 240); evas_object_move(ctxpopup, x, y); evas_object_show(ctxpopup); - _print_current_dir(ctxpopup); } @@ -193,17 +139,11 @@ _list_item_cb5(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_i elm_box_pack_end(bx, sc); ctxpopup = elm_ctxpopup_add(obj); - evas_object_smart_callback_add(ctxpopup, - "dismissed", - _dismissed, - NULL); - elm_object_content_set(ctxpopup, bx); evas_pointer_canvas_xy_get(evas_object_evas_get(obj), &x, &y); evas_object_move(ctxpopup, x, y); evas_object_show(ctxpopup); - _print_current_dir(ctxpopup); } @@ -228,7 +168,6 @@ test_ctxpopup(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_in list = elm_list_add(win); elm_win_resize_object_add(win, list); - evas_object_size_hint_weight_set(list, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); elm_list_mode_set(list, ELM_LIST_COMPRESS); evas_object_smart_callback_add(list, "selected", _list_clicked, NULL); diff --git a/src/bin/test_diskselector.c b/src/bin/test_diskselector.c index 266c103..927806d 100644 --- a/src/bin/test_diskselector.c +++ b/src/bin/test_diskselector.c @@ -155,7 +155,6 @@ test_diskselector(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *even // displayed item number setting example disk = elm_diskselector_add(win); elm_diskselector_display_item_num_set(disk, 5); - printf("Number of Items in DiskSelector : %d\n", elm_diskselector_display_item_num_get(disk)); for (idx = 0; idx < (int)(sizeof(month_list) / sizeof(month_list[0])); idx++) { @@ -173,7 +172,6 @@ test_diskselector(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *even // displayed item number setting example disk = elm_diskselector_add(win); elm_diskselector_display_item_num_set(disk, 7); - printf("Number of Items in DiskSelector : %d\n", elm_diskselector_display_item_num_get(disk)); for (idx = 1; idx < 31; idx++) { diff --git a/src/bin/test_fileselector.c b/src/bin/test_fileselector.c index 5d3ac87..e9ae85e 100644 --- a/src/bin/test_fileselector.c +++ b/src/bin/test_fileselector.c @@ -1,18 +1,7 @@ +#include #ifdef HAVE_CONFIG_H # include "elementary_config.h" #endif - -#include - -#ifndef ENABLE_NLS -# ifndef setlocale -# define setlocale(c, l) -# endif -# ifndef libintl_setlocale -# define libintl_setlocale(c, l) -# endif -#endif - #ifndef ELM_LIB_QUICKLAUNCH static void my_fileselector_done(void *data, @@ -119,6 +108,7 @@ test_fileselector(void *data __UNUSED__, void *event_info __UNUSED__) { Evas_Object *win, *fs, *bg, *vbox, *hbox, *bt, *sep; + const char *path = NULL; /* Set the locale according to the system pref. * If you dont do so the file selector will order the files list in @@ -148,7 +138,9 @@ test_fileselector(void *data __UNUSED__, /* make the file list a tree with dir expandable in place */ elm_fileselector_expandable_set(fs, EINA_FALSE); /* start the fileselector in the home dir */ - elm_fileselector_path_set(fs, getenv("HOME")); + path = getenv("HOME"); + if (!path) path = "./"; + elm_fileselector_path_set(fs, path); /* allow fs to expand in x & y */ evas_object_size_hint_weight_set(fs, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); evas_object_size_hint_align_set(fs, EVAS_HINT_FILL, EVAS_HINT_FILL); diff --git a/src/bin/test_gengrid.c b/src/bin/test_gengrid.c index 936be4b..1371631 100644 --- a/src/bin/test_gengrid.c +++ b/src/bin/test_gengrid.c @@ -24,7 +24,7 @@ static const char *img[9] = "wood_01.jpg", }; -static Elm_Gengrid_Item_Class gic, ggic; +static Elm_Gengrid_Item_Class gic; static void _horizontal_grid(void *data, Evas_Object *obj, void *event_info __UNUSED__) @@ -244,19 +244,6 @@ _after_bt_clicked(void *data, Evas_Object *obj __UNUSED__, void *event_info __UN } static void -_delete_bt_clicked(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__) -{ - Evas_Object *grid = data; - Eina_List *l, *l2, *l3; - Elm_Gengrid_Item *it; - - l = (Eina_List*)elm_gengrid_selected_items_get(grid); - if (!l) return; - EINA_LIST_FOREACH_SAFE(l, l2, l3, it) - elm_gengrid_item_del(it); -} - -static void _prepend_bt_clicked(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__) { Testitem *ti; @@ -351,12 +338,6 @@ test_gengrid2(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_in elm_box_pack_end(hbx, bt); evas_object_show(bt); - bt = elm_button_add(win); - elm_object_text_set(bt, "Delete"); - evas_object_smart_callback_add(bt, "clicked", _delete_bt_clicked, grid); - elm_box_pack_end(hbx, bt); - evas_object_show(bt); - bt = elm_spinner_add(win); elm_spinner_min_max_set(bt, 10, 1024); elm_spinner_value_set(bt, 150); @@ -381,76 +362,4 @@ test_gengrid2(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_in evas_object_resize(win, 600, 600); evas_object_show(win); } - -void -test_gengrid3(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__) -{ - Evas_Object *win, *bg, *grid; - static Testitem ti[144]; - int i, n; - char buf[PATH_MAX]; - - win = elm_win_add(NULL, "gengrid_group", ELM_WIN_BASIC); - elm_win_title_set(win, "GenGrid Group"); - elm_win_autodel_set(win, EINA_TRUE); - - bg = elm_bg_add(win); - evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - elm_win_resize_object_add(win, bg); - evas_object_show(bg); - - grid = elm_gengrid_add(win); - elm_gengrid_item_size_set(grid, 150, 150); - //elm_gengrid_group_item_size_set(grid, 31, 31); - //elm_gengrid_horizontal_set(grid, EINA_TRUE); - elm_gengrid_horizontal_set(grid, EINA_FALSE); - elm_gengrid_multi_select_set(grid, EINA_TRUE); - elm_gengrid_reorder_mode_set(grid, EINA_TRUE); - evas_object_smart_callback_add(grid, "selected", grid_selected, NULL); - evas_object_smart_callback_add(grid, "clicked,double", grid_double_clicked, NULL); - evas_object_smart_callback_add(grid, "longpressed", grid_longpress, NULL); - evas_object_smart_callback_add(grid, "moved", grid_moved, NULL); - evas_object_smart_callback_add(grid, "drag,start,up", grid_drag_up, NULL); - evas_object_smart_callback_add(grid, "drag,start,right", grid_drag_right, NULL); - evas_object_smart_callback_add(grid, "drag,start,down", grid_drag_down, NULL); - evas_object_smart_callback_add(grid, "drag,start,left", grid_drag_left, NULL); - evas_object_smart_callback_add(grid, "drag,stop", grid_drag_stop, NULL); - evas_object_size_hint_weight_set(grid, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - - gic.item_style = "default"; - gic.func.label_get = grid_label_get; - gic.func.content_get = grid_content_get; - gic.func.state_get = grid_state_get; - gic.func.del = grid_del; - - ggic.item_style = "group_index"; - ggic.func.label_get = grid_label_get; - ggic.func.content_get = NULL; - ggic.func.state_get = NULL; - ggic.func.del = NULL; - - - n = 0; - for (i = 0; i < 12 * 12; i++) - { - snprintf(buf, sizeof(buf), "%s/images/%s", elm_app_data_dir_get(), img[n]); - n = (n + 1) % 9; - ti[i].mode = i; - ti[i].path = eina_stringshare_add(buf); - if (i == 0 || i == 18 || i == 53 || i == 100) - //if (i == 0 || i == 18) - ti[i].item = elm_gengrid_item_append(grid, &ggic, &(ti[i]), grid_sel, NULL); - else - ti[i].item = elm_gengrid_item_append(grid, &gic, &(ti[i]), grid_sel, NULL); - if (!(i % 5)) - elm_gengrid_item_selected_set(ti[i].item, EINA_TRUE); - } - - evas_object_show(grid); - elm_win_resize_object_add(win, grid); - - evas_object_resize(win, 600, 600); - evas_object_show(win); -} - #endif diff --git a/src/bin/test_genlist.c b/src/bin/test_genlist.c index b2ece1b..8822b63 100644 --- a/src/bin/test_genlist.c +++ b/src/bin/test_genlist.c @@ -1348,7 +1348,7 @@ test_genlist8(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_in { Evas_Object *win, *bg, *gl, *bt[8], *bx, *bx2, *bx3; Elm_Genlist_Item *gli = NULL, *git = NULL; - int i, bt_num; + int i, bt_count, bt_num; win = elm_win_add(NULL, "genlist-group", ELM_WIN_BASIC); elm_win_title_set(win, "Genlist Group"); @@ -1460,6 +1460,7 @@ test_genlist8(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_in elm_box_pack_end(bx, bx3); evas_object_show(bx3); + bt_count = 0; for (i = 0; i < 500; i++) { if (!(i % 10)) @@ -1888,6 +1889,7 @@ test_genlist12(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_i { Evas_Object *win, *bg, *bx, *gl; int i; + Elm_Genlist_Item *gli; win = elm_win_add(NULL, "genlist-textblock", ELM_WIN_BASIC); elm_win_title_set(win, "Genlist Textblock"); @@ -1918,12 +1920,12 @@ test_genlist12(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_i for (i = 0; i < 1000; i++) { - elm_genlist_item_append(gl, &itc1, - (void *)(long)i/* item data */, - NULL/* parent */, - ELM_GENLIST_ITEM_NONE, - gl_sel/* func */, - (void *)(long)(i * 10)/* func data */); + gli = elm_genlist_item_append(gl, &itc1, + (void *)(long)i/* item data */, + NULL/* parent */, + ELM_GENLIST_ITEM_NONE, + gl_sel/* func */, + (void *)(long)(i * 10)/* func data */); } evas_object_resize(win, 400, 500); diff --git a/src/bin/test_index.c b/src/bin/test_index.c index 2c72a97..a7a938b 100644 --- a/src/bin/test_index.c +++ b/src/bin/test_index.c @@ -202,7 +202,7 @@ test_index2(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info win = elm_win_add(NULL, "sorted-index-list", ELM_WIN_BASIC); elm_win_title_set(win, "Sorted Index and List"); - evas_object_smart_callback_add(win, "delete,request", test_index2_del, gui); + evas_object_smart_callback_add(win, "delete-request", test_index2_del, gui); elm_win_autodel_set(win, EINA_TRUE); bg = elm_bg_add(win); diff --git a/src/bin/test_multibuttonentry.c b/src/bin/test_multibuttonentry.c deleted file mode 100644 index b8d5604..0000000 --- a/src/bin/test_multibuttonentry.c +++ /dev/null @@ -1,232 +0,0 @@ -#include -#ifdef HAVE_CONFIG_H -# include "elementary_config.h" -#endif -#ifndef ELM_LIB_QUICKLAUNCH - -static void -_item_selected_cb(void *data __UNUSED__, - Evas_Object *obj __UNUSED__, - void *event_info) -{ - Elm_Multibuttonentry_Item *item = (Elm_Multibuttonentry_Item *)event_info; - printf("selected item = %s\n", elm_multibuttonentry_item_label_get(item)); -} - -// "item,added" smart callback of multibuttonentry. -static void -_item_added_cb(void *data __UNUSED__, - Evas_Object *obj __UNUSED__, - void *event_info) -{ - Elm_Multibuttonentry_Item *item = (Elm_Multibuttonentry_Item *)event_info; - printf("\n added item = %s\n", elm_multibuttonentry_item_label_get(item)); -} - -// "item,deleted" smart callback -static void -_item_deleted_cb(void *data __UNUSED__, - Evas_Object *obj __UNUSED__, - void *event_info __UNUSED__) -{ - printf("deleted item\n"); -} - -// "item,clicked" smart callback -static void -_item_clicked_cb(void *data __UNUSED__, - Evas_Object *obj __UNUSED__, - void *event_info ) -{ - Elm_Multibuttonentry_Item *item = (Elm_Multibuttonentry_Item *)event_info; - printf("clicked item = %s\n", elm_multibuttonentry_item_label_get(item)); -} - -static void -_mbe_clicked_cb(void *data __UNUSED__, - Evas_Object *obj, - void *event_info __UNUSED__ ) -{ - //Unset the multibuttonentry to contracted mode of single line - elm_multibuttonentry_contracted_state_set(obj, 0); - printf("A multibuttonentry is clicked!\n"); - Evas_Object *entry; - entry = elm_multibuttonentry_entry_get(obj); - if (!entry) - { - printf("%s entry is NULL\n", __func__); - } - - Evas_Coord x, y, w, h; - Evas_Coord mbe_x, mbe_y, mbe_w, mbe_h; - evas_object_geometry_get(obj, &mbe_x, &mbe_y, &mbe_w, &mbe_h); - evas_object_geometry_get(entry, &x, &y, &w, &h); - printf("%s mbe x :%d y:%d w :%d h:%d\n", __func__, mbe_x, mbe_y, mbe_w, mbe_h); - printf("%s wd->entry x :%d y:%d w :%d h:%d\n", __func__, x, y, w, h); -} - -static void -_mbe_unfocused_cb(void *data __UNUSED__, - Evas_Object *obj, - void *event_info __UNUSED__ ) -{ - //Set the multibuttonentry to contracted mode of single line - elm_multibuttonentry_contracted_state_set(obj, 1); - printf("multibuttonentry unfocused!\n"); -} - -static void -_mbe_focused_cb(void *data __UNUSED__, - Evas_Object *obj __UNUSED__, - void *event_info __UNUSED__ ) -{ - printf("multibuttonentry focused!\n"); -} - -// "expanded" smart callback -static void -_expanded_cb(void *data __UNUSED__, - Evas_Object *obj __UNUSED__, - void *event_info __UNUSED__) -{ - printf("expanded!\n"); -} - -// "contracted" smart callback -static void -_shrank_cb(void *data __UNUSED__, - Evas_Object *obj __UNUSED__, - void *event_info __UNUSED__) -{ - printf("shrank!\n"); -} - -// "contracted,state,changed" smart callback -static void -_shrink_state_changed_cb(void *data __UNUSED__, - Evas_Object *obj __UNUSED__, - void *event_info __UNUSED__) -{ - printf("contracted state changed! \n"); -} - -// "item verified" confirm callback -static Eina_Bool -_item_filter_cb(Evas_Object *obj __UNUSED__, - const char* item_label, - void *item_data __UNUSED__, - void *data __UNUSED__) -{ - printf("%s, label: %s\n", __func__, item_label); - - return EINA_TRUE; -} - -static void -_button_clicked_cb(void *data __UNUSED__, - Evas_Object *obj __UNUSED__, - void *event_info __UNUSED__) -{ - printf("%s button is clicked\n", __func__); -} - -static Evas_Object* -_add_multibuttonentry(Evas_Object *parent) -{ - Evas_Object *scr = NULL; - Evas_Object *mbe = NULL; - void *data = NULL; - - scr = elm_scroller_add(parent); - elm_scroller_bounce_set(scr, EINA_FALSE, EINA_TRUE); - elm_scroller_policy_set(scr, ELM_SCROLLER_POLICY_OFF,ELM_SCROLLER_POLICY_AUTO); - evas_object_show(scr); - - mbe = elm_multibuttonentry_add(parent); - elm_multibuttonentry_label_set(mbe, "To: "); - elm_multibuttonentry_guide_text_set(mbe, "Tap to add recipient"); - evas_object_size_hint_weight_set(mbe, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - evas_object_size_hint_align_set(mbe, EVAS_HINT_FILL, EVAS_HINT_FILL); - elm_object_content_set(scr, mbe); - - // Add item verify callback to Multibuttonentry - elm_multibuttonentry_item_verify_callback_set(mbe, _item_filter_cb, data); - - // Add "item,selected","item,added", "item,deleted", "clicked", "unfocused", - // "expanded", "contracted" and "contracted,state,changed" smart callback - evas_object_smart_callback_add(mbe, "item,selected", _item_selected_cb, NULL); - evas_object_smart_callback_add(mbe, "item,added", _item_added_cb, NULL); - evas_object_smart_callback_add(mbe, "item,deleted", _item_deleted_cb, NULL); - evas_object_smart_callback_add(mbe, "item,clicked", _item_clicked_cb, NULL); - - evas_object_smart_callback_add(mbe, "clicked", _mbe_clicked_cb, NULL); - evas_object_smart_callback_add(mbe, "focused", _mbe_focused_cb, NULL); - evas_object_smart_callback_add(mbe, "unfocused", _mbe_unfocused_cb, NULL); - - evas_object_smart_callback_add(mbe, "expanded", _expanded_cb, NULL); - evas_object_smart_callback_add(mbe, "shrank", _shrank_cb, NULL); - evas_object_smart_callback_add(mbe, "shrink,state,changed", _shrink_state_changed_cb, NULL); - - evas_object_resize(mbe, 220, 300); - elm_object_focus_set(mbe, EINA_TRUE); - - return scr; -} - -static Evas_Object* -_add_buttons(Evas_Object *parent) -{ - Evas_Object *bx = NULL; - Evas_Object *btn; - - bx = elm_box_add(parent); - elm_box_horizontal_set(bx, EINA_TRUE); - elm_box_homogeneous_set(bx, EINA_TRUE); - - btn = elm_button_add(parent); - evas_object_smart_callback_add(btn, "clicked", _button_clicked_cb, NULL); - elm_object_text_set(btn, "click"); - evas_object_size_hint_weight_set(btn, EVAS_HINT_EXPAND, 0.0); - evas_object_size_hint_align_set(btn, EVAS_HINT_FILL, EVAS_HINT_FILL); - elm_box_pack_end(bx, btn); - evas_object_show(btn); - - return bx; -} - -void -test_multibuttonentry(void *data __UNUSED__, - Evas_Object *obj __UNUSED__, - void *event_info __UNUSED__) -{ - Evas_Object *win, *bg, *sc, *bx; - Evas_Object *ly; - char buf[PATH_MAX]; - - win = elm_win_add(NULL, "Multibuttonentry", ELM_WIN_BASIC); - elm_win_title_set(win, "Multibuttonentry"); - elm_win_autodel_set(win, EINA_TRUE); - - bg = elm_bg_add(win); - elm_win_resize_object_add(win, bg); - evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - evas_object_show(bg); - - ly = elm_layout_add(win); - snprintf(buf, sizeof(buf), "%s/objects/multibuttonentry.edj", elm_app_data_dir_get()); - elm_layout_file_set(ly, buf, "multibuttonentry_test"); - evas_object_size_hint_weight_set(ly, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - elm_win_resize_object_add(win, ly); - evas_object_show(ly); - - sc = _add_multibuttonentry(ly); - elm_object_part_content_set(ly, "multibuttonentry", sc); - - bx = _add_buttons(ly); - elm_object_part_content_set(ly, "box", bx); - - evas_object_resize(win, 320, 480); - evas_object_show(win); - elm_object_focus_set(sc, EINA_TRUE); -} -#endif diff --git a/src/bin/test_naviframe.c b/src/bin/test_naviframe.c index 4d53810..57d4664 100644 --- a/src/bin/test_naviframe.c +++ b/src/bin/test_naviframe.c @@ -46,32 +46,20 @@ _title_visible(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_i } void -_promote(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__) -{ - elm_naviframe_item_promote(data); -} - -void _page5(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__) { - Evas_Object *bt, *bt2, *content, *nf = data; + Evas_Object *bt, *content, *nf = data; Elm_Object_Item *it; bt = elm_button_add(nf); evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL); elm_object_text_set(bt, "Prev"); - bt2 = elm_button_add(nf); - evas_object_size_hint_align_set(bt2, EVAS_HINT_FILL, EVAS_HINT_FILL); - elm_object_text_set(bt2, "Page 1"); - evas_object_smart_callback_add(bt2, "clicked", _promote, - evas_object_data_get(nf, "page1")); - content = _content_new(nf, img5); it = elm_naviframe_item_insert_after(elm_naviframe_top_item_get(nf), "Page 5", bt, - bt2, + NULL, content, NULL); @@ -104,13 +92,12 @@ _page4(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__) bt, content, NULL); - ic = elm_icon_add(nf); snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get()); elm_icon_file_set(ic, buf, NULL); evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1); - elm_object_item_part_content_set(it, "icon", ic); + elm_object_item_content_part_set(it, "icon", ic); elm_naviframe_item_title_visible_set(it, EINA_FALSE); evas_object_smart_callback_add(content, "clicked", _title_visible, it); } @@ -145,7 +132,7 @@ _page3(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__) elm_icon_file_set(ic, buf, NULL); evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1); - elm_object_item_part_content_set(it, "icon", ic); + elm_object_item_content_part_set(it, "icon", ic); } void @@ -169,14 +156,13 @@ _page2(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__) content = _content_new(nf, img2); it = elm_naviframe_item_push(nf, "Page 2", NULL, bt, content, NULL); - elm_object_item_part_text_set(it, "subtitle", "Here is sub-title part!"); + elm_object_item_text_part_set(it, "subtitle", "Here is sub-title part!"); } void test_naviframe(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__) { Evas_Object *win, *bg, *nf, *btn, *content; - Elm_Object_Item *it; win = elm_win_add(NULL, "naviframe", ELM_WIN_BASIC); elm_win_title_set(win, "Naviframe"); @@ -201,8 +187,7 @@ test_naviframe(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_i evas_object_show(btn); content = _content_new(nf, img1); - it = elm_naviframe_item_push(nf, "Page 1", NULL, btn, content, NULL); - evas_object_data_set(nf, "page1", it); + elm_naviframe_item_push(nf, "Page 1", NULL, btn, content, NULL); evas_object_resize(win, 400, 600); evas_object_show(win); diff --git a/src/bin/test_panel.c b/src/bin/test_panel.c index dcc7c58..dd42ff3 100644 --- a/src/bin/test_panel.c +++ b/src/bin/test_panel.c @@ -9,7 +9,7 @@ static Elm_Genlist_Item_Class itc; static void _bstatus(void *data, Evas_Object *obj, void *event_info); static void _tstatus(void *data, Evas_Object *obj, void *event_info); static char *_label_get(void *data, Evas_Object *obj, const char *source); -static Evas_Object *_content_get(void *data, Evas_Object *obj, const char *source); +static Evas_Object *_icon_get(void *data, Evas_Object *obj, const char *source); static Eina_Bool _state_get(void *data, Evas_Object *obj, const char *source); static void _item_del(void *data, Evas_Object *obj); static void _fill_list(Evas_Object *obj); @@ -52,7 +52,7 @@ _label_get(void *data, Evas_Object *obj __UNUSED__, const char *source __UNUSED_ } static Evas_Object * -_content_get(void *data, Evas_Object *obj, const char *source) +_icon_get(void *data, Evas_Object *obj, const char *source) { if (!strcmp(source, "elm.swallow.icon")) { @@ -89,14 +89,22 @@ _fill_list(Evas_Object *obj) struct dirent *de; Eina_List *dirs = NULL, *l; char *real; + const char *home; - if (!(d = opendir(getenv("HOME")))) return; +#ifdef _WIN32 + home = evil_homedir_get(); +#else + home = getenv("HOME"); +#endif + if (!home) + home = "./"; + if (!(d = opendir(home))) return; while ((de = readdir(d))) { char buff[PATH_MAX]; if (de->d_name[0] == '.') continue; - snprintf(buff, sizeof(buff), "%s/%s", getenv("HOME"), de->d_name); + snprintf(buff, sizeof(buff), "%s/%s", home, de->d_name); if (!ecore_file_is_dir(buff)) continue; real = ecore_file_realpath(buff); dirs = eina_list_append(dirs, real); @@ -199,7 +207,7 @@ test_panel(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info itc.item_style = "default"; itc.func.label_get = _label_get; - itc.func.icon_get = _content_get; + itc.func.icon_get = _icon_get; itc.func.state_get = _state_get; itc.func.del = _item_del; diff --git a/src/bin/test_segment_control.c b/src/bin/test_segment_control.c index aadf070..32dfd47 100644 --- a/src/bin/test_segment_control.c +++ b/src/bin/test_segment_control.c @@ -8,7 +8,7 @@ void test_segment_control(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__) { Evas_Object *win, *bg, *ic, *ic1, *ic2, *ic3, *ic4, *ic5; - Elm_Segment_Item *it; + Elm_Segment_Item *it1, *it2, *it3, *it4, *it5; Evas_Object * in_layout; Evas_Object *segment1, *segment2, *segment3, *segment4; @@ -46,19 +46,19 @@ test_segment_control(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *e evas_object_size_hint_aspect_set(ic1, EVAS_ASPECT_CONTROL_BOTH, 1, 1); segment1 = elm_segment_control_add(win); - elm_segment_control_item_add(segment1, NULL, "Only Text"); - it = elm_segment_control_item_add(segment1, ic, NULL); - elm_segment_control_item_selected_set(it, EINA_TRUE); - elm_segment_control_item_add(segment1, ic1, "Text_Icon_test"); - elm_segment_control_item_add(segment1, NULL, "Seg4"); - elm_segment_control_item_add(segment1, NULL, "Seg5"); + it1 = elm_segment_control_item_add(segment1, NULL, "Only Text"); + it2 = elm_segment_control_item_add(segment1, ic, NULL); + elm_segment_control_item_selected_set(it2, EINA_TRUE); + it3 = elm_segment_control_item_add(segment1, ic1, "Text_Icon_test"); + it4 = elm_segment_control_item_add(segment1, NULL, "Seg4"); + it5 = elm_segment_control_item_add(segment1, NULL, "Seg5"); segment2 = elm_segment_control_add(win); - elm_segment_control_item_add(segment2, NULL, "SegmentItem"); - it = elm_segment_control_item_add(segment2, NULL, "SegmentItem"); - elm_segment_control_item_selected_set(it, EINA_TRUE); - elm_segment_control_item_add(segment2, NULL, "SegmentControlItem"); - elm_segment_control_item_add(segment2, NULL, "SegmentItem"); + it1 = elm_segment_control_item_add(segment2, NULL, "SegmentItem"); + it2 = elm_segment_control_item_add(segment2, NULL, "SegmentItem"); + elm_segment_control_item_selected_set(it2, EINA_TRUE); + it3 = elm_segment_control_item_add(segment2, NULL, "SegmentControlItem"); + it4 = elm_segment_control_item_add(segment2, NULL, "SegmentItem"); ic2 = elm_icon_add(in_layout); snprintf(buf3, sizeof(buf3), "%s/images/logo.png", elm_app_data_dir_get()); @@ -76,10 +76,10 @@ test_segment_control(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *e evas_object_size_hint_aspect_set(ic4, EVAS_ASPECT_CONTROL_BOTH, 1, 1); segment3 = elm_segment_control_add(win); - elm_segment_control_item_add(segment3, ic2, NULL); - it = elm_segment_control_item_add(segment3, ic3, NULL); - elm_segment_control_item_selected_set(it, EINA_TRUE); - elm_segment_control_item_add(segment3, ic4, NULL); + it1 = elm_segment_control_item_add(segment3, ic2, NULL); + it2 = elm_segment_control_item_add(segment3, ic3, NULL); + elm_segment_control_item_selected_set(it2, EINA_TRUE); + it3 = elm_segment_control_item_add(segment3, ic4, NULL); ic5 = elm_icon_add(in_layout); snprintf(buf6, sizeof(buf6), "%s/images/logo.png", elm_app_data_dir_get()); @@ -87,10 +87,10 @@ test_segment_control(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *e evas_object_size_hint_aspect_set(ic5, EVAS_ASPECT_CONTROL_BOTH, 1, 1); segment4 = elm_segment_control_add(win); - elm_segment_control_item_add(segment4, NULL, "Disabled"); - it = elm_segment_control_item_add(segment4, ic5, "Disabled"); - elm_segment_control_item_selected_set(it, EINA_TRUE); - elm_segment_control_item_add(segment4, NULL, "Disabled"); + it1 = elm_segment_control_item_add(segment4, NULL, "Disabled"); + it2 = elm_segment_control_item_add(segment4, ic5, "Disabled"); + elm_segment_control_item_selected_set(it2, EINA_TRUE); + it3 = elm_segment_control_item_add(segment4, NULL, "Disabled"); elm_object_disabled_set(segment4, EINA_TRUE); elm_object_part_content_set(in_layout, "segment1", segment1); diff --git a/src/bin/test_tooltip.c b/src/bin/test_tooltip.c index e66743b..d5acd7d 100644 --- a/src/bin/test_tooltip.c +++ b/src/bin/test_tooltip.c @@ -475,17 +475,11 @@ test_tooltip(void *data __UNUSED__, lst = elm_list_add(win); li = elm_list_item_append(lst, "Hello", NULL, NULL, NULL, NULL); - elm_list_item_tooltip_content_cb_set(li, _tt_item_label, NULL, NULL); - elm_list_item_tooltip_size_restrict_disable(li, EINA_TRUE); + elm_list_item_tooltip_text_set(li, "Something useful here?"); li = elm_list_item_append(lst, "Icon Tooltip", NULL, NULL, NULL, NULL); elm_list_item_tooltip_content_cb_set(li, _tt_item_icon, NULL, NULL); li = elm_list_item_append(lst, "Big Icon Tooltip", NULL, NULL, NULL, NULL); elm_list_item_tooltip_content_cb_set(li, _tt_item_icon2, NULL, NULL); - elm_list_item_tooltip_style_set(li, "transparent"); - elm_list_item_tooltip_size_restrict_disable(li, EINA_TRUE); - li = elm_list_item_append(lst, "Insanely Big Icon Tooltip", NULL, NULL, NULL, NULL); - elm_list_item_tooltip_content_cb_set(li, _tt_item_icon3, NULL, NULL); - elm_list_item_tooltip_style_set(li, "transparent"); elm_list_item_tooltip_size_restrict_disable(li, EINA_TRUE); evas_object_size_hint_weight_set(lst, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); diff --git a/src/edje_externals/Makefile.am b/src/edje_externals/Makefile.am index 9520c2b..1eb490b 100644 --- a/src/edje_externals/Makefile.am +++ b/src/edje_externals/Makefile.am @@ -29,21 +29,19 @@ pkg_LTLIBRARIES = module.la module_la_SOURCES = private.h \ modules.inc \ elm.c \ -elm_actionslider.c \ elm_anchorblock.c \ elm_anchorview.c \ elm_bubble.c \ elm_button.c \ -elm_calendar.c \ elm_check.c \ elm_clock.c \ -elm_colorpalette.c \ +elm_colorpalette.c\ +elm_calendar.c \ elm_datefield.c \ elm_entry.c \ elm_fileselector.c \ elm_fileselector_button.c \ elm_fileselector_entry.c \ -elm_frame.c \ elm_gengrid.c \ elm_genlist.c \ elm_hoversel.c \ @@ -53,6 +51,8 @@ elm_label.c \ elm_list.c \ elm_map.c \ elm_multibuttonentry.c \ +elm_navigationbar.c \ +elm_navigationbar_ex.c \ elm_nocontents.c \ elm_notify.c \ elm_page_control.c \ @@ -69,9 +69,7 @@ elm_slideshow.c \ elm_spinner.c \ elm_thumb.c \ elm_toggle.c \ -elm_toolbar.c \ -elm_video.c \ -elm_web.c +elm_toolbar.c module_la_LIBADD = $(top_builddir)/src/lib/libelementary.la module_la_LDFLAGS = -no-undefined -module -avoid-version -shared -fPIC diff --git a/src/edje_externals/elm.c b/src/edje_externals/elm.c index 185ec3b..7f5193a 100644 --- a/src/edje_externals/elm.c +++ b/src/edje_externals/elm.c @@ -144,7 +144,7 @@ external_signals_proxy(Evas_Object *obj, Evas_Object *edje, const char *part_nam ctxt = malloc(sizeof(Elm_External_Signals_Proxy_Context) * total); if (!ctxt) return; evas_object_event_callback_add - (obj, EVAS_CALLBACK_FREE, _external_signal_proxy_free_cb, ctxt); + (obj, EVAS_CALLBACK_DEL, _external_signal_proxy_free_cb, ctxt); for (; cls_count > 0; cls_count--, cls_descs++, ctxt++) { diff --git a/src/edje_externals/elm_bubble.c b/src/edje_externals/elm_bubble.c index ee43e07..4868294 100644 --- a/src/edje_externals/elm_bubble.c +++ b/src/edje_externals/elm_bubble.c @@ -61,7 +61,7 @@ external_bubble_param_set(void *data __UNUSED__, Evas_Object *obj, const Edje_Ex Evas_Object *content = \ external_common_param_edje_object_get(obj, param); if ((strcmp(param->s, "")) && (!content)) return EINA_FALSE; - elm_object_content_set(obj, content); + elm_bubble_content_set(obj, content); return EINA_TRUE; } } @@ -137,10 +137,8 @@ external_bubble_params_parse(void *data __UNUSED__, Evas_Object *obj, const Eina static Evas_Object *external_bubble_content_get(void *data __UNUSED__, const Evas_Object *obj __UNUSED__, const char *content __UNUSED__) { - if (!strcmp(content, "content")) - return elm_object_content_get(obj); - ERR("unknown content '%s'", content); - return NULL; + ERR("No content."); + return NULL; } static void diff --git a/src/edje_externals/elm_calendar.c b/src/edje_externals/elm_calendar.c index c741956..98da9ca 100644 --- a/src/edje_externals/elm_calendar.c +++ b/src/edje_externals/elm_calendar.c @@ -13,9 +13,7 @@ typedef struct _Elm_Params_Calendar } Elm_Params_Calendar; static void -external_calendar_state_set(void *data __UNUSED__, Evas_Object *obj, - const void *from_params, const void *to_params, - float pos __UNUSED__) +external_calendar_state_set(void *data __UNUSED__, Evas_Object *obj, const void *from_params, const void *to_params, float pos __UNUSED__) { const Elm_Params_Calendar *p; int min,max; @@ -25,28 +23,27 @@ external_calendar_state_set(void *data __UNUSED__, Evas_Object *obj, else return; if (p->year_min) - { - elm_calendar_min_max_year_get(obj, NULL, &max); - elm_calendar_min_max_year_set(obj, p->year_min, max); - } + { + elm_calendar_min_max_year_get(obj, NULL, &max); + elm_calendar_min_max_year_set(obj, p->year_min, max); + } if (p->year_max) - { - elm_calendar_min_max_year_get(obj, &min, NULL); - elm_calendar_min_max_year_set(obj, min, p->year_max); - } + { + elm_calendar_min_max_year_get(obj, &min, NULL); + elm_calendar_min_max_year_set(obj, min, p->year_max); + } if (p->sel_exists) - elm_calendar_day_selection_enabled_set(obj, p->sel_enable); + elm_calendar_day_selection_enabled_set(obj, p->sel_enable); if (p->weekday_color) - elm_calendar_text_weekday_color_set(obj,p->weekday_color); + elm_calendar_text_weekday_color_set(obj,p->weekday_color); if (p->saturday_color) - elm_calendar_text_weekday_color_set(obj,p->saturday_color); + elm_calendar_text_weekday_color_set(obj,p->saturday_color); if (p->sunday_color) - elm_calendar_text_weekday_color_set(obj,p->sunday_color); + elm_calendar_text_weekday_color_set(obj,p->sunday_color); } static Eina_Bool -external_calendar_param_set(void *data __UNUSED__, Evas_Object *obj, - const Edje_External_Param *param) +external_calendar_param_set(void *data __UNUSED__, Evas_Object *obj, const Edje_External_Param *param) { int min,max; @@ -108,10 +105,9 @@ external_calendar_param_set(void *data __UNUSED__, Evas_Object *obj, } static Eina_Bool -external_calendar_param_get(void *data __UNUSED__, const Evas_Object *obj, - Edje_External_Param *param) +external_calendar_param_get(void *data __UNUSED__, const Evas_Object *obj, Edje_External_Param *param) { - int min, max; + int min,max; if (!strcmp(param->name, "year_min")) { @@ -169,9 +165,7 @@ external_calendar_param_get(void *data __UNUSED__, const Evas_Object *obj, } static void * -external_calendar_params_parse(void *data __UNUSED__, - Evas_Object *obj __UNUSED__, - const Eina_List *params) +external_calendar_params_parse(void *data __UNUSED__, Evas_Object *obj __UNUSED__, const Eina_List *params) { Elm_Params_Calendar *mem; Edje_External_Param *param; @@ -183,38 +177,36 @@ external_calendar_params_parse(void *data __UNUSED__, EINA_LIST_FOREACH(params, l, param) { - if (!strcmp(param->name, "year_min")) - mem->year_min = param->i; + if (!strcmp(param->name, "year_min")) + mem->year_min = param->i; else if(!strcmp(param->name, "year_max")) - mem->year_max = param->i; + mem->year_max = param->i; else if (!strcmp(param->name, "sel_enable")) { - mem->sel_enable = param->i; - mem->sel_exists = EINA_TRUE; + mem->sel_enable = param->i; + mem->sel_exists = EINA_TRUE; } - else if (!strcmp(param->name, "weekday_color")) - mem->weekday_color = param->i; + else if (!strcmp(param->name, "weekday_color")) + mem->weekday_color = param->i; - else if (!strcmp(param->name, "saturday_color")) - mem->saturday_color = param->i; + else if (!strcmp(param->name, "saturday_color")) + mem->saturday_color = param->i; else if (!strcmp(param->name, "sunday_color")) - mem->sunday_color = param->i; + mem->sunday_color = param->i; } return mem; } -static Evas_Object * -external_calendar_content_get(void *data __UNUSED__, - const Evas_Object *obj __UNUSED__, - const char *content __UNUSED__) +static Evas_Object *external_calendar_content_get(void *data __UNUSED__, + const Evas_Object *obj __UNUSED__, const char *content __UNUSED__) { - ERR("No content."); - return NULL; + ERR("No content."); + return NULL; } static void diff --git a/src/edje_externals/elm_colorpalette.c b/src/edje_externals/elm_colorpalette.c index 1076b75..b1dabb5 100644 --- a/src/edje_externals/elm_colorpalette.c +++ b/src/edje_externals/elm_colorpalette.c @@ -1,11 +1,14 @@ + + #include "private.h" typedef struct _Elm_Params_colorpalette { unsigned int row, col; Elm_Colorpalette_Color *color; - char *color_set; - int color_num; + char *color_set ; + int color_num ; + } Elm_Params_colorpalette; static void @@ -15,10 +18,10 @@ external_colorpalette_state_set(void *data __UNUSED__, Evas_Object *obj, const v if (to_params) p = to_params; else if (from_params) p = from_params; else return; - if ((p->row > 0)&&( p->col > 0)) - elm_colorpalette_row_column_set(obj, p->row, p->col); - if (p->color_num) - elm_colorpalette_color_set(obj, p->color_num, p->color); + if((p->row > 0)&&( p->col > 0)) + elm_colorpalette_row_column_set(obj,p->row,p->col) ; + if(p->color_num) + elm_colorpalette_color_set(obj,p->color_num, p->color) ; } static Eina_Bool @@ -27,27 +30,27 @@ external_colorpalette_param_set(void *data __UNUSED__, Evas_Object *obj __UNUSED if (!strcmp(param->name, "row")) { if (param->type == EDJE_EXTERNAL_PARAM_TYPE_INT) - { - //No EAPI for row set - return EINA_FALSE; - } + { + //No EAPI for row set + return EINA_FALSE; + } } else if (!strcmp(param->name, "col")) { - if (param->type == EDJE_EXTERNAL_PARAM_TYPE_INT) - { - //No EAPI for column set - return EINA_FALSE; - } + if (param->type == EDJE_EXTERNAL_PARAM_TYPE_INT) + { + //No EAPI for column set + return EINA_FALSE; + } } else if (!strcmp(param->name,"color_num")) { - if (param->type == EDJE_EXTERNAL_PARAM_TYPE_STRING) - { - //No EAPI for colour_number set - return EINA_FALSE; - } - } + if (param->type == EDJE_EXTERNAL_PARAM_TYPE_STRING) + { + //No EAPI for colour_number set + return EINA_FALSE; + } + } ERR("unknown parameter '%s' of type '%s'", param->name, edje_external_param_type_str(param->type)); @@ -57,8 +60,8 @@ external_colorpalette_param_set(void *data __UNUSED__, Evas_Object *obj __UNUSED static Eina_Bool external_colorpalette_param_get(void *data __UNUSED__, const Evas_Object *obj __UNUSED__, Edje_External_Param *param __UNUSED__) { - //FIXME:getter functions not provided - return EINA_FALSE; + return EINA_FALSE; + //FIX ME:getter functions not provided } static void * @@ -67,79 +70,78 @@ external_colorpalette_params_parse(void *data __UNUSED__, Evas_Object *obj __UNU Elm_Params_colorpalette *mem; Edje_External_Param *param; const Eina_List *l; - int k,m,ll; + int k,m,ll ; k = m = ll = 0; - char test[5]; + char test[5] ; int d = 0; - char *s = NULL; + char *s = NULL ; mem = calloc(1, sizeof(Elm_Params_colorpalette)); if (!mem) return NULL; EINA_LIST_FOREACH(params, l, param) { - if (!strcmp(param->name, "row")) - { - mem->row = param->i; - } + if (!strcmp(param->name, "row")) + { + mem->row = param->i; + } else if (!strcmp(param->name, "col")) + { + mem->col = param->i; + } + else if (!strcmp(param->name, "color_num")) + { + mem->color_num = param->i ; + } + + else if (!strcmp(param->name, "color_set")) { - mem->col = param->i; - } - else if (!strcmp(param->name, "color_num")) - { - mem->color_num = param->i; - } - else if (!strcmp(param->name, "color_set")) - { - mem->color = calloc(mem->color_num, sizeof(Elm_Colorpalette_Color)); + mem->color = (Elm_Colorpalette_Color*) calloc (mem->color_num, sizeof(Elm_Colorpalette_Color)); s = (char*)param->i; - while (k < (mem->color_num) && (ll <= (int)strlen(s))) + while(k <(mem->color_num) && (ll <= (int)strlen(s))) { - if (d == 0) - { - while(s[ll]!=':') - test[m++] = s[ll++]; - test[m] = 0; - ll++; - m = 0; - mem->color[k].r = atoi(test); - d++; - } - if (d == 1) - { - while(s[ll]!=':') - test[m++] = s[ll++]; - test[m] = 0; - ll++; - m = 0; - mem->color[k].g = atoi(test); - d++; - } - if (d == 2) - { - while(s[ll]!='/' && m<3) - test[m++] = s[ll++]; - test[m] = 0; - ll++; - m = 0; - mem->color[k].b = atoi(test); - d = 0; - } - } + if(d == 0) + { + while(s[ll]!=':') + test[m++] = s[ll++]; + test[m]= 0 ; + ll++ ; + m = 0 ; + mem->color[k].r = atoi(test) ; + d++ ; + } + if(d == 1) + { + while(s[ll]!=':') + test[m++] = s[ll++]; + test[m]= 0 ; + ll++ ; + m = 0 ; + mem->color[k].g = atoi(test) ; + d++ ; + } + if(d == 2) + { + while(s[ll]!='/' && m<3) + test[m++] = s[ll++]; + test[m]= 0 ; + ll++ ; + m = 0 ; + mem->color[k].b = atoi(test) ; + d = 0 ; + } + } k++; } - } - return mem; + } + return mem; } -static Evas_Object * -external_colorpalette_content_get(void *data __UNUSED__, - const Evas_Object *obj __UNUSED__, - const char *content __UNUSED__) +static Evas_Object *external_colorpalette_content_get(void *data __UNUSED__, + const Evas_Object *obj __UNUSED__, const char *content __UNUSED__) { - ERR("No content."); - return NULL; + ERR("No content."); + return NULL; } static void @@ -149,7 +151,7 @@ external_colorpalette_params_free(void *params) if (mem->color) free(mem->color); if (mem->color_set) - free(mem->color_set); + free(mem->color_set) ; free(params); } diff --git a/src/edje_externals/elm_entry.c b/src/edje_externals/elm_entry.c index 7998f81..05fcea1 100644 --- a/src/edje_externals/elm_entry.c +++ b/src/edje_externals/elm_entry.c @@ -25,8 +25,8 @@ typedef struct _Elm_Params_Entry #define CHOICE_GET(CHOICES, STR) \ unsigned int i; \ - for (i = 0; i < sizeof(CHOICES)/sizeof (CHOICES)[0]; i++) \ - if (strcmp((STR), (CHOICES)[i]) == 0) \ + for (i = 0; i < sizeof(CHOICES)/sizeof(CHOICES[0]); i++) \ + if (strcmp(STR, CHOICES[i]) == 0) \ return i diff --git a/src/edje_externals/elm_genlist.c b/src/edje_externals/elm_genlist.c index 3bd7eb5..e93e121 100644 --- a/src/edje_externals/elm_genlist.c +++ b/src/edje_externals/elm_genlist.c @@ -5,7 +5,7 @@ typedef struct _Elm_Params_Genlist { Elm_Params base; - const char *horizontal; + const char *horizontal_mode; Eina_Bool multi:1; Eina_Bool multi_exists:1; Eina_Bool always_select:1; @@ -22,18 +22,18 @@ typedef struct _Elm_Params_Genlist Eina_Bool v_bounce_exists:1; } Elm_Params_Genlist; -static const char* list_horizontal_choices[] = {"compress", "scroll", "limit", "expand", NULL}; +static const char* list_horizontal_mode_choices[] = {"compress", "scroll", "limit", "expand", NULL}; static Elm_List_Mode -_list_horizontal_setting_get(const char *horizontal_str) +_list_horizontal_mode_setting_get(const char *horizontal_mode_str) { unsigned int i; - assert(sizeof(list_horizontal_choices)/sizeof(list_horizontal_choices[0]) == ELM_LIST_LAST + 1); + assert(sizeof(list_horizontal_mode_choices)/sizeof(list_horizontal_mode_choices[0]) == ELM_LIST_LAST + 1); for (i = 0; i < ELM_LIST_LAST; i++) { - if (!strcmp(horizontal_str, list_horizontal_choices[i])) + if (!strcmp(horizontal_mode_str, list_horizontal_mode_choices[i])) return i; } return ELM_LIST_LAST; @@ -48,9 +48,9 @@ external_genlist_state_set(void *data __UNUSED__, Evas_Object *obj, const void * else if (from_params) p = from_params; else return; - if (p->horizontal) + if (p->horizontal_mode) { - Elm_List_Mode set = _list_horizontal_setting_get(p->horizontal); + Elm_List_Mode set = _list_horizontal_mode_setting_get(p->horizontal_mode); if (set != ELM_LIST_LAST) elm_genlist_horizontal_mode_set(obj, set); @@ -86,7 +86,7 @@ external_genlist_param_set(void *data __UNUSED__, Evas_Object *obj, const Edje_E { if (param->type == EDJE_EXTERNAL_PARAM_TYPE_CHOICE) { - Elm_List_Mode set = _list_horizontal_setting_get(param->s); + Elm_List_Mode set = _list_horizontal_mode_setting_get(param->s); if (set == ELM_LIST_LAST) return EINA_FALSE; elm_genlist_horizontal_mode_set(obj, set); @@ -172,7 +172,7 @@ external_genlist_param_get(void *data __UNUSED__, const Evas_Object *obj, Edje_E if (list_horizontal_mode_set == ELM_LIST_LAST) return EINA_FALSE; - param->s = list_horizontal_choices[list_horizontal_mode_set]; + param->s = list_horizontal_mode_choices[list_horizontal_mode_set]; return EINA_TRUE; } } @@ -257,7 +257,7 @@ external_genlist_params_parse(void *data __UNUSED__, Evas_Object *obj __UNUSED__ EINA_LIST_FOREACH(params, l, param) { if (!strcmp(param->name, "horizontal mode")) - mem->horizontal = eina_stringshare_add(param->s); + mem->horizontal_mode = eina_stringshare_add(param->s); else if (!strcmp(param->name, "multi select")) { mem->multi = !!param->i; @@ -310,15 +310,15 @@ external_genlist_params_free(void *params) { Elm_Params_Genlist *mem = params; - if (mem->horizontal) - eina_stringshare_del(mem->horizontal); + if (mem->horizontal_mode) + eina_stringshare_del(mem->horizontal_mode); free(mem); } static Edje_External_Param_Info external_genlist_params[] = { DEFINE_EXTERNAL_COMMON_PARAMS, - EDJE_EXTERNAL_PARAM_INFO_CHOICE_FULL("horizontal mode", "scroll", list_horizontal_choices), + EDJE_EXTERNAL_PARAM_INFO_CHOICE_FULL("horizontal mode", "scroll", list_horizontal_mode_choices), EDJE_EXTERNAL_PARAM_INFO_BOOL("multi select"), EDJE_EXTERNAL_PARAM_INFO_BOOL("always select"), EDJE_EXTERNAL_PARAM_INFO_BOOL("no select"), diff --git a/src/edje_externals/elm_navigationbar.c b/src/edje_externals/elm_navigationbar.c new file mode 100644 index 0000000..16105b3 --- /dev/null +++ b/src/edje_externals/elm_navigationbar.c @@ -0,0 +1,110 @@ +#include + +#include "private.h" + +typedef struct _Elm_Params_Navigationbar +{ + Eina_Bool disable_animation_exists:1; + Eina_Bool disable_animation:1; + Eina_Bool hidden_exists:1; + Eina_Bool hidden:1; +} Elm_Params_Navigationbar; + + +static void +external_navigationbar_state_set(void *data __UNUSED__, Evas_Object *obj, const void *from_params, const void *to_params, float pos __UNUSED__) +{ + const Elm_Params_Navigationbar *p; + + if (to_params) p = to_params; + else if (from_params) p = from_params; + else return; + + if(p->disable_animation_exists) elm_navigationbar_animation_disabled_set(obj, p->disable_animation); + if(p->hidden_exists) elm_navigationbar_hidden_set(obj, p->hidden); +} + +static Eina_Bool +external_navigationbar_param_set(void *data __UNUSED__, Evas_Object *obj, const Edje_External_Param *param) +{ + if (!strcmp(param->name, "disable animation")) + { + if (param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL) + { + elm_navigationbar_animation_disabled_set(obj, param->i); + return EINA_TRUE; + } + } + else if (!strcmp(param->name, "hidden")) + { + if (param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL) + { + elm_navigationbar_hidden_set(obj, param->i); + return EINA_TRUE; + } + } + ERR("unknown parameter '%s' of type '%s'", + param->name, edje_external_param_type_str(param->type)); + + return EINA_FALSE; +} + +static Eina_Bool +external_navigationbar_param_get(void *data __UNUSED__, const Evas_Object *obj __UNUSED__, Edje_External_Param *param) +{ + ERR("unknown parameter '%s' of type '%s'", + param->name, edje_external_param_type_str(param->type)); + + return EINA_FALSE; +} + +static void * +external_navigationbar_params_parse(void *data __UNUSED__, Evas_Object *obj __UNUSED__, const Eina_List *params) +{ + Elm_Params_Navigationbar *mem; + Edje_External_Param *param; + const Eina_List *l; + + mem = calloc(1, sizeof(Elm_Params_Navigationbar)); + if (!mem) + return NULL; + + EINA_LIST_FOREACH(params, l, param) + { + if (!strcmp(param->name, "disable animation")) + { + mem->disable_animation = !!param->i; + mem->disable_animation_exists = EINA_TRUE; + } + else if (!strcmp(param->name, "hidden")) + { + mem->hidden = !!param->i; + mem->hidden_exists = EINA_TRUE; + } + } + + return mem; +} + +static Evas_Object *external_navigationbar_content_get(void *data __UNUSED__, + const Evas_Object *obj __UNUSED__, const char *content __UNUSED__) +{ + ERR("so content"); + return NULL; +} + +static void +external_navigationbar_params_free(void *params) +{ + Elm_Params_Navigationbar* mem = params; + free(mem); +} + +static Edje_External_Param_Info external_navigationbar_params[] = { + EDJE_EXTERNAL_PARAM_INFO_BOOL("disable animation"), + EDJE_EXTERNAL_PARAM_INFO_BOOL("hidden"), + EDJE_EXTERNAL_PARAM_INFO_SENTINEL +}; + +DEFINE_EXTERNAL_ICON_ADD(navigationbar, "navigationbar"); +DEFINE_EXTERNAL_TYPE_SIMPLE(navigationbar, "Navigationbar"); diff --git a/src/edje_externals/elm_navigationbar_ex.c b/src/edje_externals/elm_navigationbar_ex.c new file mode 100644 index 0000000..8aca09a --- /dev/null +++ b/src/edje_externals/elm_navigationbar_ex.c @@ -0,0 +1,93 @@ +#include + +#include "private.h" + +typedef struct _Elm_Params_Navigationbar_ex +{ + Eina_Bool del_on_pop_exists:1; + Eina_Bool del_on_pop:1; +} Elm_Params_Navigationbar_ex; + + +static void +external_navigationbar_ex_state_set(void *data __UNUSED__, Evas_Object *obj, const void *from_params, const void *to_params, float pos __UNUSED__) +{ + const Elm_Params_Navigationbar_ex *p; + + if (to_params) p = to_params; + else if (from_params) p = from_params; + else return; + + if(p->del_on_pop_exists) elm_navigationbar_ex_delete_on_pop_set(obj, p->del_on_pop); +} + +static Eina_Bool +external_navigationbar_ex_param_set(void *data __UNUSED__, Evas_Object *obj, const Edje_External_Param *param) +{ + if (!strcmp(param->name, "delete on pop")) + { + if (param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL) + { + elm_navigationbar_ex_delete_on_pop_set(obj, param->i); + return EINA_TRUE; + } + } + ERR("unknown parameter '%s' of type '%s'", + param->name, edje_external_param_type_str(param->type)); + + return EINA_FALSE; +} + +static Eina_Bool +external_navigationbar_ex_param_get(void *data __UNUSED__, const Evas_Object *obj __UNUSED__, Edje_External_Param *param) +{ + ERR("unknown parameter '%s' of type '%s'", + param->name, edje_external_param_type_str(param->type)); + + return EINA_FALSE; +} + +static void * +external_navigationbar_ex_params_parse(void *data __UNUSED__, Evas_Object *obj __UNUSED__, const Eina_List *params) +{ + Elm_Params_Navigationbar_ex *mem; + Edje_External_Param *param; + const Eina_List *l; + + mem = calloc(1, sizeof(Elm_Params_Navigationbar_ex)); + if (!mem) + return NULL; + + EINA_LIST_FOREACH(params, l, param) + { + if (!strcmp(param->name, "delete on pop")) + { + mem->del_on_pop = !!param->i; + mem->del_on_pop_exists = EINA_TRUE; + } + } + + return mem; +} + +static Evas_Object *external_navigationbar_ex_content_get(void *data __UNUSED__, + const Evas_Object *obj __UNUSED__, const char *content __UNUSED__) +{ + ERR("so content"); + return NULL; +} + +static void +external_navigationbar_ex_params_free(void *params) +{ + Elm_Params_Navigationbar_ex* mem = params; + free(mem); +} + +static Edje_External_Param_Info external_navigationbar_ex_params[] = { + EDJE_EXTERNAL_PARAM_INFO_BOOL("delete on pop"), + EDJE_EXTERNAL_PARAM_INFO_SENTINEL +}; + +DEFINE_EXTERNAL_ICON_ADD(navigationbar_ex, "navigationbar_ex"); +DEFINE_EXTERNAL_TYPE_SIMPLE(navigationbar_ex, "Navigationbar_ex"); diff --git a/src/edje_externals/elm_toggle.c b/src/edje_externals/elm_toggle.c index bfcab50..2efffa5 100644 --- a/src/edje_externals/elm_toggle.c +++ b/src/edje_externals/elm_toggle.c @@ -32,7 +32,7 @@ external_toggle_state_set(void *data __UNUSED__, Evas_Object *obj, const void *f elm_object_part_text_set(obj, "off", p->off); if (p->state_exists) - elm_check_state_set(obj, p->state); + elm_toggle_state_set(obj, p->state); } static Eina_Bool @@ -76,7 +76,7 @@ external_toggle_param_set(void *data __UNUSED__, Evas_Object *obj, const Edje_Ex { if (param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL) { - elm_check_state_set(obj, param->i); + elm_toggle_state_set(obj, param->i); return EINA_TRUE; } } @@ -123,7 +123,7 @@ external_toggle_param_get(void *data __UNUSED__, const Evas_Object *obj, Edje_Ex { if (param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL) { - param->i = elm_check_state_get(obj); + param->i = elm_toggle_state_get(obj); return EINA_TRUE; } } @@ -194,21 +194,4 @@ static Edje_External_Param_Info external_toggle_params[] = { }; DEFINE_EXTERNAL_ICON_ADD(toggle, "toggle") -#undef DEFINE_EXTERNAL_TYPE_SIMPLE -#define DEFINE_EXTERNAL_TYPE_SIMPLE(type_name, name) \ -static Evas_Object * \ -external_##type_name##_add(void *data __UNUSED__, Evas *evas __UNUSED__, Evas_Object *edje, const Eina_List *params __UNUSED__, const char *part_name) \ -{ \ - Evas_Object *parent, *obj; \ - external_elm_init(); \ - parent = elm_widget_parent_widget_get(edje); \ - if (!parent) parent = edje; \ - obj = elm_check_add(parent); \ - elm_object_style_set(obj, "toggle"); \ - external_signals_proxy(obj, edje, part_name); \ - return obj; \ -} \ - \ -DEFINE_EXTERNAL_TYPE(type_name, name) - DEFINE_EXTERNAL_TYPE_SIMPLE(toggle, "Toggle") diff --git a/src/edje_externals/modules.inc b/src/edje_externals/modules.inc index bf9c7c4..d6590ec 100644 --- a/src/edje_externals/modules.inc +++ b/src/edje_externals/modules.inc @@ -1,4 +1,3 @@ -DEFINE_TYPE(actionslider) DEFINE_TYPE(anchorblock) DEFINE_TYPE(anchorview) DEFINE_TYPE(bubble) @@ -12,17 +11,18 @@ DEFINE_TYPE(entry) DEFINE_TYPE(fileselector) DEFINE_TYPE(fileselector_button) DEFINE_TYPE(fileselector_entry) -DEFINE_TYPE(frame) DEFINE_TYPE(genlist) DEFINE_TYPE(gengrid) DEFINE_TYPE(hoversel) +DEFINE_TYPE(index) DEFINE_TYPE(list) DEFINE_TYPE(map) DEFINE_TYPE(multibuttonentry) +DEFINE_TYPE(navigationbar) +DEFINE_TYPE(navigationbar_ex) DEFINE_TYPE(nocontents) DEFINE_TYPE(page_control) DEFINE_TYPE(pager) -DEFINE_TYPE(panes) DEFINE_TYPE(photocam) DEFINE_TYPE(progressbar) DEFINE_TYPE(radio) @@ -34,10 +34,8 @@ DEFINE_TYPE(thumb) DEFINE_TYPE(toggle) DEFINE_TYPE(toolbar) DEFINE_TYPE(notify) +DEFINE_TYPE(panes) DEFINE_TYPE(label) DEFINE_TYPE(icon) DEFINE_TYPE(scroller) DEFINE_TYPE(segment_control) -DEFINE_TYPE(index) -DEFINE_TYPE(video) -DEFINE_TYPE(web) diff --git a/src/examples/animator_example_01.c b/src/examples/animator_example_01.c new file mode 100644 index 0000000..04272ed --- /dev/null +++ b/src/examples/animator_example_01.c @@ -0,0 +1,108 @@ +//Compile with: +//gcc -g `pkg-config --cflags --libs elementary` animator_example_01.c -o animator_example_01 + +#include +#include +#ifdef HAVE_CONFIG_H +# include "elementary_config.h" +#else +# define __UNUSED__ +#endif + +static void +on_done(void *data, Evas_Object *obj, void *event_info) +{ + elm_exit(); +} + +static void +_op_cb(void *data, Elm_Animator *animator, double frame) +{ + evas_object_resize(data, 100 * frame, 100 * frame); + evas_object_move(data, 50 * frame, 50 * frame); + evas_object_color_set(data, 255 * frame, 0, 255 * (1 - frame), 255); +} + +static void +_end_cb(void *data) +{ + printf("Wow, you're very patient!\n"); +} + +static void +_pause_resume(void *data, Evas_Object *obj, void *event_info) +{ + static Eina_Bool paused = EINA_FALSE; + if (!paused) + { + elm_animator_pause(data); + elm_button_label_set(obj, "Resume"); + paused = EINA_TRUE; + } + else + { + elm_animator_resume(data); + elm_button_label_set(obj, "Pause"); + paused = EINA_FALSE; + } +} + +static void +_stop(void *data, Evas_Object *obj, void *event_info) +{ + elm_animator_stop(data); +} + +EAPI int +elm_main(int argc, char **argv) +{ + Evas_Object *win, *bg, *button, *rectangle; + Elm_Animator *animator; + + win = elm_win_add(NULL, "animator", ELM_WIN_BASIC); + elm_win_title_set(win, "Animator"); + evas_object_smart_callback_add(win, "delete,request", on_done, NULL); + + bg = elm_bg_add(win); + elm_win_resize_object_add(win, bg); + evas_object_resize(bg, 200, 200); + evas_object_show(bg); + + rectangle = evas_object_rectangle_add(evas_object_evas_get(win)); + evas_object_color_set(rectangle, 0, 0, 255, 255); + evas_object_show(rectangle); + + animator = elm_animator_add(NULL); + elm_animator_duration_set(animator, 1); + elm_animator_auto_reverse_set(animator, EINA_TRUE); + elm_animator_repeat_set(animator, UINT_MAX); + elm_animator_curve_style_set(animator, ELM_ANIMATOR_CURVE_IN_OUT); + elm_animator_operation_callback_set(animator, _op_cb, rectangle); + elm_animator_completion_callback_set(animator, _end_cb, NULL); + elm_animator_animate(animator); + + button = elm_button_add(win); + elm_button_label_set(button, "Pause"); + evas_object_resize(button, 50, 30); + evas_object_move(button, 10, 210); + evas_object_smart_callback_add(button, "clicked", _pause_resume, animator); + evas_object_show(button); + + button = elm_button_add(win); + elm_button_label_set(button, "Stop"); + evas_object_resize(button, 50, 30); + evas_object_move(button, 70, 210); + evas_object_smart_callback_add(button, "clicked", _stop, animator); + evas_object_show(button); + + evas_object_resize(win, 200, 250); + evas_object_show(win); + + elm_run(); + + evas_object_del(rectangle); + elm_animator_del(animator); + + return 0; +} +ELM_MAIN() diff --git a/src/examples/ctxpopup_example_01.c b/src/examples/ctxpopup_example_01.c index 52c713c..b938634 100644 --- a/src/examples/ctxpopup_example_01.c +++ b/src/examples/ctxpopup_example_01.c @@ -9,7 +9,7 @@ static void _ctxpopup_item_cb(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info) { - printf("ctxpopup item selected: %s\n", elm_object_item_text_get(event_info)); + printf("ctxpopup item selected: %s\n", elm_ctxpopup_item_label_get(event_info)); } Elm_Object_Item *item_new(Evas_Object *ctxpopup, const char * label, const char *icon) @@ -33,10 +33,10 @@ _list_item_cb(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_in item_new(ctxpopup, "Save file", "file"); item_new(ctxpopup, "Delete file", "delete"); it = item_new(ctxpopup, "Navigate to folder", "folder"); - elm_object_item_disabled_set(it, EINA_TRUE); + elm_ctxpopup_item_disabled_set(it, EINA_TRUE); item_new(ctxpopup, "Edit entry", "edit"); it = item_new(ctxpopup, "Set date and time", "clock"); - elm_object_item_disabled_set(it, EINA_TRUE); + elm_ctxpopup_item_disabled_set(it, EINA_TRUE); evas_pointer_canvas_xy_get(evas_object_evas_get(obj), &x, &y); evas_object_size_hint_max_set(ctxpopup, 240, 240); @@ -61,7 +61,7 @@ _list_item_cb2(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_i item_new(ctxpopup, NULL, "delete"); item_new(ctxpopup, NULL, "folder"); it = item_new(ctxpopup, NULL, "edit"); - elm_object_item_disabled_set(it, EINA_TRUE); + elm_ctxpopup_item_disabled_set(it, EINA_TRUE); item_new(ctxpopup, NULL, "clock"); evas_pointer_canvas_xy_get(evas_object_evas_get(obj), &x, &y); diff --git a/src/examples/flipselector_example.c b/src/examples/flipselector_example.c index a6a8bc9..cdea766 100644 --- a/src/examples/flipselector_example.c +++ b/src/examples/flipselector_example.c @@ -38,7 +38,7 @@ _unsel_cb(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__) { - Elm_Object_Item *it; + Elm_Flipselector_Item *it; Evas_Object *fp = data; it = elm_flipselector_selected_item_get(fp); @@ -50,7 +50,7 @@ _del_cb(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__) { - Elm_Object_Item *it; + Elm_Flipselector_Item *it; Evas_Object *fp = data; it = elm_flipselector_selected_item_get(fp); @@ -111,36 +111,36 @@ _on_keydown(void *data, if (strcmp(ev->keyname, "f") == 0) /* print first item's label */ { - Elm_Object_Item *it; + Elm_Flipselector_Item *it; it = elm_flipselector_first_item_get(fs); fprintf(stdout, "Flip selector's first item is: %s\n", it ? - elm_object_item_text_get(it) : "none"); + elm_flipselector_item_label_get(it) : "none"); return; } if (strcmp(ev->keyname, "l") == 0) /* print last item's label */ { - Elm_Object_Item *it; + Elm_Flipselector_Item *it; it = elm_flipselector_last_item_get(fs); fprintf(stdout, "Flip selector's last item is: %s\n", it ? - elm_object_item_text_get(it) : "none"); + elm_flipselector_item_label_get(it) : "none"); return; } if (strcmp(ev->keyname, "s") == 0) /* print selected item's label */ { - Elm_Object_Item *it; + Elm_Flipselector_Item *it; it = elm_flipselector_selected_item_get(fs); fprintf(stdout, "Flip selector's selected item is: %s\n", it ? - elm_object_item_text_get(it) : "none"); + elm_flipselector_item_label_get(it) : "none"); return; } diff --git a/src/lib/Elementary.h.in b/src/lib/Elementary.h.in index a59ec0f..7d2f087 100644 --- a/src/lib/Elementary.h.in +++ b/src/lib/Elementary.h.in @@ -254,7 +254,7 @@ ELM_MAIN() @author Michael Bouchaud @author Jonathan Atton (Watchwolf) @author Brian Wang -@author Mike Blumenkrantz (discomfitor/zmike) +@author Mike Blumenkrantz (zmike) @author Samsung Electronics @author Samsung SAIT @author Brett Nash @@ -284,16 +284,13 @@ ELM_MAIN() @author Shinwoo Kim @author Govindaraju SM @author Prince Kumar Dubey -@author Sung W. Park -@author Thierry el Borgi -@author Shilpa Singh -@author Chanwook Jung -@author Hyoyoung Chang -@author Guillaume "Kuri" Friloux -@author Kim Yunhan -@author Bluezery -@author Nicolas Aguirre -@author Sanjeev BA +@author Sung W. Park +@author Thierry el Borgi +@author Shilpa Singh +@author Chanwook Jung +@author Hyoyoung Chang +@author Guillaume "Kuri" Friloux +@author Kim Yunhan Please contact to get in contact with the developers and maintainers. @@ -371,7 +368,7 @@ contact with the developers and maintainers. #include #include #include -@ELEMENTARY_ECORE_CON_INC@ +#include #include #ifdef ELM_EDBUS @@ -424,8 +421,6 @@ contact with the developers and maintainers. # define EAPI_MAIN EAPI #endif -#define WILL_DEPRECATE /* API is deprecated in upstream EFL, will be deprecated in SLP soon */ - /* allow usage from c++ */ #ifdef __cplusplus extern "C" { @@ -604,7 +599,7 @@ extern "C" { */ typedef Evas_Object *(*Elm_Tooltip_Item_Content_Cb) (void *data, Evas_Object *obj, Evas_Object *tooltip, void *item); - typedef Eina_Bool (*Elm_Event_Cb) (void *data, Evas_Object *obj, Evas_Object *src, Evas_Callback_Type type, void *event_info); /**< Function prototype definition for callbacks on input events happening on Elementary widgets. @a data will receive the user data pointer passed to elm_object_event_callback_add(). @a src will be a pointer to the widget on which the input event took place. @a type will get the type of this event and @a event_info, the struct with details on this event. */ + typedef Eina_Bool (*Elm_Event_Cb) (void *data, Evas_Object *obj, Evas_Object *src, Evas_Callback_Type type, void *event_info); #ifndef ELM_LIB_QUICKLAUNCH #define ELM_MAIN() int main(int argc, char **argv) {elm_init(argc, argv); return elm_main(argc, argv);} /**< macro to be used after the elm_main() function */ @@ -1158,16 +1153,6 @@ extern "C" { #define elm_object_content_unset(obj) elm_object_part_content_unset((obj), NULL) /** - * Set the text to read out when in accessibility mode - * - * @param obj The object which is to be described - * @param txt The text that describes the widget to people with poor or no vision - * - * @ingroup General - */ - EAPI void elm_object_access_info_set(Evas_Object *obj, const char *txt); - - /** * Get the widget object's handle which contains a given item * * @param item The Elementary object item @@ -1187,38 +1172,12 @@ extern "C" { * @param content The new content of the object item * * @note Elementary object items may have many contents - * @deprecated Use elm_object_item_part_content_set instead. - * @ingroup General - */ - EINA_DEPRECATED EAPI void elm_object_item_content_part_set(Elm_Object_Item *it, const char *part, Evas_Object *content); - - /** - * Set a content of an object item - * - * @param it The Elementary object item - * @param part The content part name to set (NULL for the default content) - * @param content The new content of the object item - * - * @note Elementary object items may have many contents * * @ingroup General */ - EAPI void elm_object_item_part_content_set(Elm_Object_Item *it, const char *part, Evas_Object *content); + EAPI void elm_object_item_content_part_set(Elm_Object_Item *it, const char *part, Evas_Object *content); -#define elm_object_item_content_set(it, content) elm_object_item_part_content_set((it), NULL, (content)) - - /** - * Get a content of an object item - * - * @param it The Elementary object item - * @param part The content part name to unset (NULL for the default content) - * @return content of the object item or NULL for any error - * - * @note Elementary object items may have many contents - * @deprecated Use elm_object_item_part_content_get instead. - * @ingroup General - */ - EAPI Evas_Object *elm_object_item_content_part_get(const Elm_Object_Item *it, const char *part); +#define elm_object_item_content_set(it, content) elm_object_item_content_part_set((it), NULL, (content)) /** * Get a content of an object item @@ -1231,21 +1190,9 @@ extern "C" { * * @ingroup General */ - EAPI Evas_Object *elm_object_item_part_content_get(const Elm_Object_Item *it, const char *part); - -#define elm_object_item_content_get(it) elm_object_item_part_content_get((it), NULL) + EAPI Evas_Object *elm_object_item_content_part_get(const Elm_Object_Item *it, const char *part); - /** - * Unset a content of an object item - * - * @param it The Elementary object item - * @param part The content part name to unset (NULL for the default content) - * - * @note Elementary object items may have many contents - * @deprecated Use elm_object_item_part_content_unset instead. - * @ingroup General - */ - EINA_DEPRECATED EAPI Evas_Object *elm_object_item_content_part_unset(Elm_Object_Item *it, const char *part); +#define elm_object_item_content_get(it) elm_object_item_content_part_get((it), NULL) /** * Unset a content of an object item @@ -1257,22 +1204,9 @@ extern "C" { * * @ingroup General */ - EAPI Evas_Object *elm_object_item_part_content_unset(Elm_Object_Item *it, const char *part); - -#define elm_object_item_content_unset(it) elm_object_item_part_content_unset((it), NULL) + EAPI Evas_Object *elm_object_item_content_part_unset(Elm_Object_Item *it, const char *part); - /** - * Set a label of an object item - * - * @param it The Elementary object item - * @param part The text part name to set (NULL for the default label) - * @param label The new text of the label - * - * @note Elementary object items may have many labels - * @deprecated Use elm_object_item_part_text_set instead. - * @ingroup General - */ - WILL_DEPRECATE EAPI void elm_object_item_text_part_set(Elm_Object_Item *it, const char *part, const char *label); +#define elm_object_item_content_unset(it, content) elm_object_item_content_part_unset((it), (content)) /** * Set a label of an object item @@ -1285,9 +1219,9 @@ extern "C" { * * @ingroup General */ - EAPI void elm_object_item_part_text_set(Elm_Object_Item *it, const char *part, const char *label); + EAPI void elm_object_item_text_part_set(Elm_Object_Item *it, const char *part, const char *label); -#define elm_object_item_text_set(it, label) elm_object_item_part_text_set((it), NULL, (label)) +#define elm_object_item_text_set(it, label) elm_object_item_text_part_set((it), NULL, (label)) /** * Get a label of an object item @@ -1297,22 +1231,10 @@ extern "C" { * @return text of the label or NULL for any error * * @note Elementary object items may have many labels - * @deprecated Use elm_object_item_part_text_get instead. - * @ingroup General - */ - WILL_DEPRECATE EAPI const char *elm_object_item_text_part_get(const Elm_Object_Item *it, const char *part); - /** - * Get a label of an object item - * - * @param it The Elementary object item - * @param part The text part name to get (NULL for the default label) - * @return text of the label or NULL for any error - * - * @note Elementary object items may have many labels * * @ingroup General */ - EAPI const char *elm_object_item_part_text_get(const Elm_Object_Item *it, const char *part); + EAPI const char *elm_object_item_text_part_get(const Elm_Object_Item *it, const char *part); /** * Set the text to read out when in accessibility mode @@ -1334,7 +1256,18 @@ extern "C" { */ EAPI void elm_object_item_access_info_set(Elm_Object_Item *it, const char *txt); -#define elm_object_item_text_get(it) elm_object_item_part_text_get((it), NULL) + +#define elm_object_item_text_get(it) elm_object_item_text_part_get((it), NULL) + + /** + * Set the text to read out when in accessibility mode + * + * @param obj The object which is to be described + * @param txt The text that describes the widget to people with poor or no vision + * + * @ingroup General + */ + EAPI void elm_object_access_info_set(Evas_Object *obj, const char *txt); /** * Set the text to read out when in accessibility mode @@ -1376,40 +1309,7 @@ extern "C" { * @param source The signal's source. * @ingroup General */ - EAPI void elm_object_item_signal_emit(Elm_Object_Item *it, const char *emission, const char *source) EINA_ARG_NONNULL(1); - - /** - * Set the disabled state of an widget item. - * - * @param obj The Elementary object item - * @param disabled The state to put in in: @c EINA_TRUE for - * disabled, @c EINA_FALSE for enabled - * - * Elementary object item can be @b disabled, in which state they won't - * receive input and, in general, will be themed differently from - * their normal state, usually greyed out. Useful for contexts - * where you don't want your users to interact with some of the - * parts of you interface. - * - * This sets the state for the widget item, either disabling it or - * enabling it back. - * - * @ingroup Styles - */ - EAPI void elm_object_item_disabled_set(Elm_Object_Item *it, Eina_Bool disabled) EINA_ARG_NONNULL(1); - - /** - * Get the disabled state of an widget item. - * - * @param obj The Elementary object - * @return @c EINA_TRUE, if the widget item is disabled, @c EINA_FALSE - * if it's enabled (or on errors) - * - * This gets the state of the widget, which might be enabled or disabled. - * - * @ingroup Styles - */ - EAPI Eina_Bool elm_object_item_disabled_get(const Elm_Object_Item *it) EINA_ARG_NONNULL(1); + EAPI void elm_object_item_signal_emit(Elm_Object_Item *it, const char *emission, const char *source) EINA_ARG_NONNULL(1); /** * @} @@ -2549,11 +2449,10 @@ extern "C" { * the one receiving input events. * * @see elm_object_focus_get() - * @deprecated use elm_object_focus_set() instead. * * @ingroup Focus */ - WILL_DEPRECATE EAPI void elm_object_focus(Evas_Object *obj) EINA_ARG_NONNULL(1); + EAPI void elm_object_focus(Evas_Object *obj) EINA_ARG_NONNULL(1); /** * Remove the focus from an Elementary object @@ -2564,11 +2463,10 @@ extern "C" { * previous element in the focus chain list. * * @see elm_object_focus() and elm_object_focus_custom_chain_get() - * @deprecated use elm_object_focus_set() instead. * * @ingroup Focus */ - WILL_DEPRECATE EAPI void elm_object_unfocus(Evas_Object *obj) EINA_ARG_NONNULL(1); + EAPI void elm_object_unfocus(Evas_Object *obj) EINA_ARG_NONNULL(1); /** * Set the ability for an Element object to be focused @@ -2716,7 +2614,7 @@ extern "C" { * * @ingroup Focus */ - EAPI void elm_object_tree_unfocusable_set(Evas_Object *obj, Eina_Bool tree_unfocusable) EINA_ARG_NONNULL(1); + EAPI void elm_object_tree_unfocusable_set(Evas_Object *obj, Eina_Bool tree_unfocusable); EINA_ARG_NONNULL(1); /** * Get whether an Elementary object and its children are unfocusable or not. @@ -2729,7 +2627,7 @@ extern "C" { * * @ingroup Focus */ - EAPI Eina_Bool elm_object_tree_unfocusable_get(const Evas_Object *obj) EINA_ARG_NONNULL(1); + EAPI Eina_Bool elm_object_tree_unfocusable_get(const Evas_Object *obj); EINA_ARG_NONNULL(1); /** * @defgroup Scrolling Scrolling @@ -4471,12 +4369,6 @@ extern "C" { */ EAPI Evas_Object *elm_win_inlined_image_object_get(Evas_Object *obj); /** - * Determine whether a window has focus - * @param obj The window to query - * @return EINA_TRUE if the window exists and has focus, else EINA_FALSE - */ - EAPI Eina_Bool elm_win_focus_get(const Evas_Object *obj) EINA_ARG_NONNULL(1); - /** * Get screen geometry details for the screen that a window is on * @param obj The window to query * @param x where to return the horizontal offset value. May be NULL. @@ -4839,7 +4731,7 @@ extern "C" { * @ingroup Bg */ - WILL_DEPRECATE EAPI void elm_bg_overlay_set(Evas_Object *obj, Evas_Object *overlay) EINA_ARG_NONNULL(1); + EAPI void elm_bg_overlay_set(Evas_Object *obj, Evas_Object *overlay) EINA_ARG_NONNULL(1); /** * Get the overlay object used for the background object. @@ -4867,7 +4759,7 @@ extern "C" { * * @ingroup Bg */ - WILL_DEPRECATE EAPI Evas_Object *elm_bg_overlay_unset(Evas_Object *obj) EINA_ARG_NONNULL(1); + EAPI Evas_Object *elm_bg_overlay_unset(Evas_Object *obj) EINA_ARG_NONNULL(1); /** * Set the size of the pixmap representation of the image. @@ -5033,7 +4925,7 @@ extern "C" { * * @ingroup Icon */ - EAPI Eina_Bool elm_icon_memfile_set(Evas_Object *obj, const void *img, size_t size, const char *format, const char *key) EINA_ARG_NONNULL(1, 2); + EAPI Eina_Bool elm_icon_memfile_set(Evas_Object *obj, const void *img, size_t size, const char *format, const char *key); EINA_ARG_NONNULL(1, 2); /** * Get the file that will be used as icon. * @@ -6504,7 +6396,7 @@ extern "C" { * @param icon The icon object for the button * @deprecated use elm_object_part_content_set() instead. */ - WILL_DEPRECATE EAPI void elm_button_icon_set(Evas_Object *obj, Evas_Object *icon) EINA_ARG_NONNULL(1); + EAPI void elm_button_icon_set(Evas_Object *obj, Evas_Object *icon) EINA_ARG_NONNULL(1); /** * Get the icon used for the button * @@ -6517,7 +6409,7 @@ extern "C" { * * @deprecated use elm_object_part_content_get() instead */ - WILL_DEPRECATE EAPI Evas_Object *elm_button_icon_get(const Evas_Object *obj) EINA_ARG_NONNULL(1); + EAPI Evas_Object *elm_button_icon_get(const Evas_Object *obj) EINA_ARG_NONNULL(1); /** * Remove the icon set without deleting it and return the object * @@ -6530,7 +6422,7 @@ extern "C" { * @return The icon object that was being used * @deprecated use elm_object_part_content_unset() instead. */ - WILL_DEPRECATE EAPI Evas_Object *elm_button_icon_unset(Evas_Object *obj) EINA_ARG_NONNULL(1); + EAPI Evas_Object *elm_button_icon_unset(Evas_Object *obj) EINA_ARG_NONNULL(1); /** * Turn on/off the autorepeat event generated when the button is kept pressed * @@ -7345,7 +7237,7 @@ extern "C" { * elm_scroller_content_unset() function. * @deprecated use elm_object_content_set() instead */ - WILL_DEPRECATE EAPI void elm_scroller_content_set(Evas_Object *obj, Evas_Object *child) EINA_ARG_NONNULL(1); + EAPI void elm_scroller_content_set(Evas_Object *obj, Evas_Object *child) EINA_ARG_NONNULL(1); /** * @brief Get the content of the scroller widget * @@ -7357,7 +7249,7 @@ extern "C" { * @see elm_scroller_content_set() * @deprecated use elm_object_content_get() instead. */ - WILL_DEPRECATE EAPI Evas_Object *elm_scroller_content_get(const Evas_Object *obj) EINA_ARG_NONNULL(1); + EAPI Evas_Object *elm_scroller_content_get(const Evas_Object *obj) EINA_ARG_NONNULL(1); /** * @brief Unset the content of the scroller widget * @@ -7369,7 +7261,7 @@ extern "C" { * @see elm_scroller_content_set() * @deprecated use elm_object_content_unset() instead. */ - WILL_DEPRECATE EAPI Evas_Object *elm_scroller_content_unset(Evas_Object *obj) EINA_ARG_NONNULL(1); + EAPI Evas_Object *elm_scroller_content_unset(Evas_Object *obj) EINA_ARG_NONNULL(1); /** * @brief Set custom theme elements for the scroller * @@ -7678,7 +7570,7 @@ extern "C" { * * The Label widget @b doesn't allow text to overflow its boundaries, if the * text doesn't fit the geometry of the label it will be ellipsized or be - * cut. Elementary provides several styles for this widget: + * cut. Elementary provides several themes for this widget: * @li default - No animation * @li marker - Centers the text in the label and make it bold by default * @li slide_long - The entire text appears from the right of the screen and @@ -7790,7 +7682,8 @@ extern "C" { * @param size font size * * @warning NEVER use this. It is for hyper-special cases only. use styles - * instead. e.g. "default", "marker", "slide_long" etc. + * instead. e.g. "big", "medium", "small" - or better name them by use: + * "title", "footnote", "quote" etc. */ EAPI void elm_label_fontsize_set(Evas_Object *obj, int fontsize) EINA_ARG_NONNULL(1); /** @@ -7803,7 +7696,8 @@ extern "C" { * @param a Alpha property background color of The label object * * @warning NEVER use this. It is for hyper-special cases only. use styles - * instead. e.g. "default", "marker", "slide_long" etc. + * instead. e.g. "big", "medium", "small" - or better name them by use: + * "title", "footnote", "quote" etc. */ EAPI void elm_label_text_color_set(Evas_Object *obj, unsigned int r, unsigned int g, unsigned int b, unsigned int a) EINA_ARG_NONNULL(1); /** @@ -7813,7 +7707,8 @@ extern "C" { * @param align align mode ("left", "center", "right") * * @warning NEVER use this. It is for hyper-special cases only. use styles - * instead. e.g. "default", "marker", "slide_long" etc. + * instead. e.g. "big", "medium", "small" - or better name them by use: + * "title", "footnote", "quote" etc. */ EAPI void elm_label_text_align_set(Evas_Object *obj, const char *alignmode) EINA_ARG_NONNULL(1); /** @@ -7826,7 +7721,8 @@ extern "C" { * @param a Alpha property background alpha of The label object * * @warning NEVER use this. It is for hyper-special cases only. use styles - * instead. e.g. "default", "marker", "slide_long" etc. + * instead. e.g. "big", "medium", "small" - or better name them by use: + * "title", "footnote", "quote" etc. */ EAPI void elm_label_background_color_set(Evas_Object *obj, unsigned int r, unsigned int g, unsigned int b, unsigned int a) EINA_ARG_NONNULL(1); /** @@ -7954,7 +7850,7 @@ extern "C" { * * @deprecated use elm_object_content_set() instead. */ - WILL_DEPRECATE EAPI void elm_frame_content_set(Evas_Object *obj, Evas_Object *content) EINA_ARG_NONNULL(1); + EAPI void elm_frame_content_set(Evas_Object *obj, Evas_Object *content) EINA_ARG_NONNULL(1); /** * @brief Get the content of the frame widget * @@ -7965,7 +7861,7 @@ extern "C" { * * @deprecated use elm_object_content_get() instead. */ - WILL_DEPRECATE EAPI Evas_Object *elm_frame_content_get(const Evas_Object *obj) EINA_ARG_NONNULL(1); + EAPI Evas_Object *elm_frame_content_get(const Evas_Object *obj) EINA_ARG_NONNULL(1); /** * @brief Unset the content of the frame widget * @@ -7976,7 +7872,7 @@ extern "C" { * * @deprecated use elm_object_content_unset() instead. */ - WILL_DEPRECATE EAPI Evas_Object *elm_frame_content_unset(Evas_Object *obj) EINA_ARG_NONNULL(1); + EAPI Evas_Object *elm_frame_content_unset(Evas_Object *obj) EINA_ARG_NONNULL(1); /** * @} */ @@ -8320,36 +8216,10 @@ extern "C" { typedef struct _Elm_Gengrid_Item_Class Elm_Gengrid_Item_Class; /**< Gengrid item class definition structs */ typedef struct _Elm_Gengrid_Item Elm_Gengrid_Item; /**< Gengrid item handles */ typedef struct _Elm_Gengrid_Item_Class_Func Elm_Gengrid_Item_Class_Func; /**< Class functions for gengrid item classes. */ - /** - * Label fetching class function for Elm_Gen_Item_Class. - * @param data The data passed in the item creation function - * @param obj The base widget object - * @param part The part name of the swallow - * @return The allocated (NOT stringshared) string to set as the label - */ - typedef char *(*Elm_Gengrid_Item_Label_Get_Cb) (void *data, Evas_Object *obj, const char *part); - /** - * Content (swallowed object) fetching class function for Elm_Gen_Item_Class. - * @param data The data passed in the item creation function - * @param obj The base widget object - * @param part The part name of the swallow - * @return The content object to swallow - */ - typedef Evas_Object *(*Elm_Gengrid_Item_Content_Get_Cb) (void *data, Evas_Object *obj, const char *part); - /** - * State fetching class function for Elm_Gen_Item_Class. - * @param data The data passed in the item creation function - * @param obj The base widget object - * @param part The part name of the swallow - * @return The hell if I know - */ - typedef Eina_Bool (*Elm_Gengrid_Item_State_Get_Cb) (void *data, Evas_Object *obj, const char *part); - /** - * Deletion class function for Elm_Gen_Item_Class. - * @param data The data passed in the item creation function - * @param obj The base widget object - */ - typedef void (*Elm_Gengrid_Item_Del_Cb) (void *data, Evas_Object *obj); + typedef char *(*Elm_Gengrid_Item_Label_Get_Cb) (void *data, Evas_Object *obj, const char *part); /**< Label fetching class function for gengrid item classes. */ + typedef Evas_Object *(*Elm_Gengrid_Item_Content_Get_Cb) (void *data, Evas_Object *obj, const char *part); /**< Content (swallowed object) fetching class function for gengrid item classes. */ + typedef Eina_Bool (*Elm_Gengrid_Item_State_Get_Cb) (void *data, Evas_Object *obj, const char *part); /**< State fetching class function for gengrid item classes. */ + typedef void (*Elm_Gengrid_Item_Del_Cb) (void *data, Evas_Object *obj); /**< Deletion class function for gengrid item classes. */ /* temporary compatibility code */ typedef Elm_Gengrid_Item_Label_Get_Cb GridItemLabelGetFunc EINA_DEPRECATED; @@ -8669,7 +8539,7 @@ extern "C" { * * @ingroup Gengrid */ - WILL_DEPRECATE EAPI void elm_gengrid_always_select_mode_set(Evas_Object *obj, Eina_Bool always_select) EINA_ARG_NONNULL(1); + EAPI void elm_gengrid_always_select_mode_set(Evas_Object *obj, Eina_Bool always_select) EINA_ARG_NONNULL(1); /** * Get whether items on a given gengrid widget have their selection @@ -8684,7 +8554,7 @@ extern "C" { * * @ingroup Gengrid */ - WILL_DEPRECATE EAPI Eina_Bool elm_gengrid_always_select_mode_get(const Evas_Object *obj) EINA_ARG_NONNULL(1); + EAPI Eina_Bool elm_gengrid_always_select_mode_get(const Evas_Object *obj) EINA_ARG_NONNULL(1); /** * Set whether items on a given gengrid widget can be selected or not. @@ -8702,7 +8572,7 @@ extern "C" { * * @ingroup Gengrid */ - WILL_DEPRECATE EAPI void elm_gengrid_no_select_mode_set(Evas_Object *obj, Eina_Bool no_select) EINA_ARG_NONNULL(1); + EAPI void elm_gengrid_no_select_mode_set(Evas_Object *obj, Eina_Bool no_select) EINA_ARG_NONNULL(1); /** * Get whether items on a given gengrid widget can be selected or @@ -8716,7 +8586,7 @@ extern "C" { * * @ingroup Gengrid */ - WILL_DEPRECATE EAPI Eina_Bool elm_gengrid_no_select_mode_get(const Evas_Object *obj) EINA_ARG_NONNULL(1); + EAPI Eina_Bool elm_gengrid_no_select_mode_get(const Evas_Object *obj) EINA_ARG_NONNULL(1); /** * Enable or disable multi-selection in a given gengrid widget @@ -8774,7 +8644,7 @@ extern "C" { * * @ingroup Gengrid */ - WILL_DEPRECATE EAPI void elm_gengrid_bounce_set(Evas_Object *obj, Eina_Bool h_bounce, Eina_Bool v_bounce) EINA_ARG_NONNULL(1); + EAPI void elm_gengrid_bounce_set(Evas_Object *obj, Eina_Bool h_bounce, Eina_Bool v_bounce) EINA_ARG_NONNULL(1); /** * Get whether bouncing effects are enabled or disabled, for a @@ -8790,7 +8660,7 @@ extern "C" { * * @ingroup Gengrid */ - WILL_DEPRECATE EAPI void elm_gengrid_bounce_get(const Evas_Object *obj, Eina_Bool *h_bounce, Eina_Bool *v_bounce) EINA_ARG_NONNULL(1); + EAPI void elm_gengrid_bounce_get(const Evas_Object *obj, Eina_Bool *h_bounce, Eina_Bool *v_bounce) EINA_ARG_NONNULL(1); /** * Set a given gengrid widget's scrolling page size, relative to @@ -8824,7 +8694,7 @@ extern "C" { * * @ingroup Gengrid */ - WILL_DEPRECATE EAPI void elm_gengrid_page_relative_set(Evas_Object *obj, double h_pagerel, double v_pagerel) EINA_ARG_NONNULL(1); + EAPI void elm_gengrid_page_relative_set(Evas_Object *obj, double h_pagerel, double v_pagerel) EINA_ARG_NONNULL(1); /** * Get a given gengrid widget's scrolling page size, relative to @@ -8840,7 +8710,7 @@ extern "C" { * * @ingroup Gengrid */ - WILL_DEPRECATE EAPI void elm_gengrid_page_relative_get(const Evas_Object *obj, double *h_pagerel, double *v_pagerel) EINA_ARG_NONNULL(1); + EAPI void elm_gengrid_page_relative_get(const Evas_Object *obj, double *h_pagerel, double *v_pagerel) EINA_ARG_NONNULL(1); /** * Set a given gengrid widget's scrolling page size @@ -8920,7 +8790,7 @@ extern "C" { * * @ingroup Gengrid */ - WILL_DEPRECATE EAPI Elm_Gengrid_Item *elm_gengrid_first_item_get(const Evas_Object *obj) EINA_ARG_NONNULL(1); + EAPI Elm_Gengrid_Item *elm_gengrid_first_item_get(const Evas_Object *obj) EINA_ARG_NONNULL(1); /** * Get the last item in a given gengrid widget @@ -8936,7 +8806,7 @@ extern "C" { * * @ingroup Gengrid */ - WILL_DEPRECATE EAPI Elm_Gengrid_Item *elm_gengrid_last_item_get(const Evas_Object *obj) EINA_ARG_NONNULL(1); + EAPI Elm_Gengrid_Item *elm_gengrid_last_item_get(const Evas_Object *obj) EINA_ARG_NONNULL(1); /** * Get the @b next item in a gengrid widget's internal list of items, @@ -8953,7 +8823,7 @@ extern "C" { * * @ingroup Gengrid */ - WILL_DEPRECATE EAPI Elm_Gengrid_Item *elm_gengrid_item_next_get(const Elm_Gengrid_Item *item) EINA_ARG_NONNULL(1); + EAPI Elm_Gengrid_Item *elm_gengrid_item_next_get(const Elm_Gengrid_Item *item) EINA_ARG_NONNULL(1); /** * Get the @b previous item in a gengrid widget's internal list of items, @@ -8970,7 +8840,7 @@ extern "C" { * * @ingroup Gengrid */ - WILL_DEPRECATE EAPI Elm_Gengrid_Item *elm_gengrid_item_prev_get(const Elm_Gengrid_Item *item) EINA_ARG_NONNULL(1); + EAPI Elm_Gengrid_Item *elm_gengrid_item_prev_get(const Elm_Gengrid_Item *item) EINA_ARG_NONNULL(1); /** * Get the gengrid object's handle which contains a given gengrid @@ -8983,7 +8853,7 @@ extern "C" { * * @ingroup Gengrid */ - WILL_DEPRECATE EAPI Evas_Object *elm_gengrid_item_gengrid_get(const Elm_Gengrid_Item *item) EINA_ARG_NONNULL(1); + EAPI Evas_Object *elm_gengrid_item_gengrid_get(const Elm_Gengrid_Item *item) EINA_ARG_NONNULL(1); /** * Remove a gengrid item from its parent, deleting it. @@ -9104,7 +8974,7 @@ extern "C" { * * @ingroup Gengrid */ - WILL_DEPRECATE EAPI void elm_gengrid_item_selected_set(Elm_Gengrid_Item *item, Eina_Bool selected) EINA_ARG_NONNULL(1); + EAPI void elm_gengrid_item_selected_set(Elm_Gengrid_Item *item, Eina_Bool selected) EINA_ARG_NONNULL(1); /** * Get whether a given gengrid item is selected or not @@ -9118,7 +8988,7 @@ extern "C" { * * @ingroup Gengrid */ - WILL_DEPRECATE EAPI Eina_Bool elm_gengrid_item_selected_get(const Elm_Gengrid_Item *item) EINA_ARG_NONNULL(1); + EAPI Eina_Bool elm_gengrid_item_selected_get(const Elm_Gengrid_Item *item) EINA_ARG_NONNULL(1); /** * Get the real Evas object created to implement the view of a @@ -9461,7 +9331,7 @@ extern "C" { * * @ingroup Gengrid */ - WILL_DEPRECATE EAPI void elm_gengrid_clear(Evas_Object *obj) EINA_ARG_NONNULL(1); + EAPI void elm_gengrid_clear(Evas_Object *obj) EINA_ARG_NONNULL(1); /** * Get the selected item in a given gengrid widget @@ -9843,7 +9713,7 @@ extern "C" { * elm_object_content_set/get/unset functions to set, retrieve and unset * objects as content of the @c SWALLOW. After being set to this part, the * object size, position, visibility, clipping and other description - * properties will be totally controlled by the description of the given part + * properties will be totally controled by the description of the given part * (inside the Edje theme file). * * One can use @c evas_object_size_hint_* functions on the child to have some @@ -9871,12 +9741,12 @@ extern "C" { * itself). * * A similar effect for having a box with its position, size and other things - * controlled by the Layout theme would be to create an Elementary @ref Box + * controled by the Layout theme would be to create an Elementary @ref Box * widget and add it as a Content in the @c SWALLOW part. * * The main difference of using the Layout Box is that its behavior, the box * properties like layouting format, padding, align, etc. will be all - * controlled by the theme. This means, for example, that a signal could be + * controled by the theme. This means, for example, that a signal could be * sent to the Layout theme (with elm_object_signal_emit()) and the theme * handled the signal by changing the box padding, or align, or both. Using * the Elementary @ref Box widget is not necessarily harder or easier, it @@ -10010,7 +9880,7 @@ extern "C" { * * @ingroup Layout */ - WILL_DEPRECATE EAPI void elm_layout_content_set(Evas_Object *obj, const char *swallow, Evas_Object *content) EINA_ARG_NONNULL(1); + EAPI void elm_layout_content_set(Evas_Object *obj, const char *swallow, Evas_Object *content) EINA_ARG_NONNULL(1); /** * Get the child object in the given content part. * @@ -10023,7 +9893,7 @@ extern "C" { * * @ingroup Layout */ - WILL_DEPRECATE EAPI Evas_Object *elm_layout_content_get(const Evas_Object *obj, const char *swallow) EINA_ARG_NONNULL(1); + EAPI Evas_Object *elm_layout_content_get(const Evas_Object *obj, const char *swallow) EINA_ARG_NONNULL(1); /** * Unset the layout content. * @@ -10037,7 +9907,7 @@ extern "C" { * * @ingroup Layout */ - WILL_DEPRECATE EAPI Evas_Object *elm_layout_content_unset(Evas_Object *obj, const char *swallow) EINA_ARG_NONNULL(1); + EAPI Evas_Object *elm_layout_content_unset(Evas_Object *obj, const char *swallow) EINA_ARG_NONNULL(1); /** * Set the text of the given part * @@ -10162,7 +10032,7 @@ extern "C" { */ EAPI Evas_Object *elm_layout_box_remove(Evas_Object *obj, const char *part, Evas_Object *child) EINA_ARG_NONNULL(1, 2, 3); /** - * Remove all children of the given part box. + * Remove all child of the given part box. * * @param obj The layout object * @param part The box part name to remove child. @@ -10233,7 +10103,7 @@ extern "C" { */ EAPI Evas_Object *elm_layout_table_unpack(Evas_Object *obj, const char *part, Evas_Object *child_obj) EINA_ARG_NONNULL(1, 2, 3); /** - * Remove all the child objects of the given part table. + * Remove all child of the given part table. * * @param obj The layout object * @param part The table part name to remove child. @@ -10405,8 +10275,8 @@ extern "C" { * * @param obj The layout object. * @param part_name a part from loaded edje group. - * @param engine_only if cursors should be just provided by the engine (EINA_TRUE) - * or should also search on widget's theme as well (EINA_FALSE) + * @param engine_only if cursors should be just provided by the engine + * or should also search on widget's theme as well * * @return EINA_TRUE on success or EINA_FALSE on failure, that may be * part not exists or it did not had a cursor set. @@ -10429,7 +10299,7 @@ extern "C" { /** * @def elm_layout_icon_set - * Convenience macro to set the icon object in a layout that follows the + * Convienience macro to set the icon object in a layout that follows the * Elementary naming convention for its parts. * * @ingroup Layout @@ -10564,11 +10434,8 @@ extern "C" { * Once the content object is set, a previously set one will be deleted. If * you want to keep that old content object, use the * elm_notify_content_unset() function. - * - * @deprecated use elm_object_content_set() instead - * */ - WILL_DEPRECATE EAPI void elm_notify_content_set(Evas_Object *obj, Evas_Object *content) EINA_ARG_NONNULL(1); + EAPI void elm_notify_content_set(Evas_Object *obj, Evas_Object *content) EINA_ARG_NONNULL(1); /** * @brief Unset the content of the notify widget * @@ -10578,10 +10445,8 @@ extern "C" { * Unparent and return the content object which was set for this widget * * @see elm_notify_content_set() - * @deprecated use elm_object_content_unset() instead - * */ - WILL_DEPRECATE EAPI Evas_Object *elm_notify_content_unset(Evas_Object *obj) EINA_ARG_NONNULL(1); + EAPI Evas_Object *elm_notify_content_unset(Evas_Object *obj) EINA_ARG_NONNULL(1); /** * @brief Return the content of the notify widget * @@ -10589,10 +10454,8 @@ extern "C" { * @return The content that is being used * * @see elm_notify_content_set() - * @deprecated use elm_object_content_get() instead - * */ - WILL_DEPRECATE EAPI Evas_Object *elm_notify_content_get(const Evas_Object *obj) EINA_ARG_NONNULL(1); + EAPI Evas_Object *elm_notify_content_get(const Evas_Object *obj) EINA_ARG_NONNULL(1); /** * @brief Set the notify parent * @@ -10746,7 +10609,7 @@ extern "C" { * @brief Sets the target object for the hover. * * @param obj The hover object - * @param target The object to center the hover onto. + * @param target The object to center the hover onto. The hover * * This function will cause the hover to be centered on the target object. */ @@ -10755,7 +10618,7 @@ extern "C" { * @brief Gets the target object for the hover. * * @param obj The hover object - * @return The target object for the hover. + * @param parent The object to locate the hover over. * * @see elm_hover_target_set() */ @@ -10799,9 +10662,9 @@ extern "C" { * "smart". This is a special placement hint and its use case * independs of the calculations coming from * elm_hover_best_content_location_get(). Its use is for cases when - * one desires only one hover content, but with a dynamic special + * one desires only one hover content, but with a dinamic special * placement within the hover area. The content's geometry, whenever - * it changes, will be used to decide on a best location, not + * it changes, will be used to decide on a best location not * extrapolating the hover's parent object view to show it in (still * being the hover's target determinant of its medium part -- move and * resize it to simulate finger sizes, for example). If one of the @@ -10966,8 +10829,8 @@ extern "C" { * @li full: Items will be placed between the descent and ascent, or the * lowest point in the line and its highest. * - * The next image shows different configurations of items and how - * the previously mentioned options affect their sizes. In all cases, + * The next image shows different configurations of items and how they + * are the previously mentioned options affect their sizes. In all cases, * the green line indicates the ascent, blue for the baseline and red for * the descent. * @@ -11241,45 +11104,6 @@ extern "C" { */ EAPI const char *elm_entry_selection_get(const Evas_Object *obj) EINA_ARG_NONNULL(1); /** - * Returns the actual textblock object of the entry. - * - * This function exposes the internal textblock object that actually - * contains and draws the text. This should be used for low-level - * manipulations that are otherwise not possible. - * - * Changing the textblock directly from here will not notify edje/elm to - * recalculate the textblock size automatically, so any modifications - * done to the textblock returned by this function should be followed by - * a call to elm_entry_calc_force(). - * - * The return value is marked as const as an additional warning. - * One should not use the returned object with any of the generic evas - * functions (geometry_get/resize/move and etc), but only with the textblock - * functions; The former will either not work at all, or break the correct - * functionality. - * - * IMPORTANT: Many functions may change (i.e delete and create a new one) - * the internal textblock object. Do NOT cache the returned object, and try - * not to mix calls on this object with regular elm_entry calls (which may - * change the internal textblock object). This applies to all cursors - * returned from textblock calls, and all the other derivative values. - * - * @param obj The entry object - * @return The textblock object. - */ - EAPI const Evas_Object *elm_entry_textblock_get(const Evas_Object *obj) EINA_ARG_NONNULL(1); - /** - * Forces calculation of the entry size and text layouting. - * - * This should be used after modifying the textblock object directly. See - * elm_entry_textblock_get() for more information. - * - * @param obj The entry object - * - * @see elm_entry_textblock_get() - */ - EAPI void elm_entry_calc_force(const Evas_Object *obj) EINA_ARG_NONNULL(1); - /** * Inserts the given text into the entry at the current cursor position. * * This inserts text at the cursor position as if it was typed @@ -11707,47 +11531,6 @@ extern "C" { * @see elm_entry_file_set() */ EAPI Eina_Bool elm_entry_autosave_get(const Evas_Object *obj) EINA_ARG_NONNULL(1); - - /** - * @enum _Elm_CNP_Mode - * @typedef Elm_CNP_Mode - * Enum of entry's copy & paste policy. - * - * @see elm_entry_cnp_mode_set() - * @see elm_entry_cnp_mode_get() - */ - typedef enum _Elm_CNP_Mode { - ELM_CNP_MODE_MARKUP = 0, /**< copy & paste text with markup tag */ - ELM_CNP_MODE_NO_IMAGE = 1, /**< copy & paste text without item(image) tag */ - ELM_CNP_MODE_PLAINTEXT = 2 /**< copy & paste text without markup tag */ - } Elm_CNP_Mode; - - /** - * Control pasting of text and images for the widget. - * - * Normally the entry allows both text and images to be pasted. - * By setting textonly to be ELM_CNP_MODE_NO_IMAGE, this prevents images from being copy or past. - * By setting textonly to be ELM_CNP_MODE_PLAINTEXT, this remove all tags in text . - * - * @note this only changes the behaviour of text. - * - * @param obj The entry object - * @param mode One of #Elm_CNP_Mode: #ELM_CNP_MODE_MARKUP, - * #ELM_CNP_MODE_NO_IMAGE, #ELM_CNP_MODE_PLAINTEXT. - */ - EAPI void elm_entry_cnp_mode_set(Evas_Object *obj, Elm_CNP_Mode cnp_mode) EINA_ARG_NONNULL(1); - /** - * Getting elm_entry text paste/drop mode. - * - * Normally the entry allows both text and images to be pasted. - * This gets the copy & paste mode of the entry. - * - * @param obj The entry object - * @return mode One of #Elm_CNP_Mode: #ELM_CNP_MODE_MARKUP, - * #ELM_CNP_MODE_NO_IMAGE, #ELM_CNP_MODE_PLAINTEXT. - */ - EAPI Elm_CNP_Mode elm_entry_cnp_mode_get(const Evas_Object *obj) EINA_ARG_NONNULL(1); - /** * Control pasting of text and images for the widget. * @@ -12615,11 +12398,8 @@ extern "C" { * @param content The given content of the bubble * * This function sets the content shown on the middle of the bubble. - * - * @deprecated use elm_object_content_set() instead - * */ - WILL_DEPRECATE EAPI void elm_bubble_content_set(Evas_Object *obj, Evas_Object *content) EINA_ARG_NONNULL(1); + EAPI void elm_bubble_content_set(Evas_Object *obj, Evas_Object *content) EINA_ARG_NONNULL(1); /** * Get the content shown in the bubble * @@ -12627,11 +12407,8 @@ extern "C" { * * @param obj The bubble object * @return The content that is being used - * - * @deprecated use elm_object_content_get() instead - * */ - WILL_DEPRECATE EAPI Evas_Object *elm_bubble_content_get(const Evas_Object *obj) EINA_ARG_NONNULL(1); + EAPI Evas_Object *elm_bubble_content_get(const Evas_Object *obj) EINA_ARG_NONNULL(1); /** * Unset the content shown in the bubble * @@ -12639,11 +12416,8 @@ extern "C" { * * @param obj The bubble object * @return The content that was being used - * - * @deprecated use elm_object_content_unset() instead - * */ - WILL_DEPRECATE EAPI Evas_Object *elm_bubble_content_unset(Evas_Object *obj) EINA_ARG_NONNULL(1); + EAPI Evas_Object *elm_bubble_content_unset(Evas_Object *obj) EINA_ARG_NONNULL(1); /** * Set the icon of the bubble * @@ -13576,7 +13350,7 @@ extern "C" { */ typedef enum _Elm_Web_Zoom_Mode { - ELM_WEB_ZOOM_MODE_MANUAL = 0, /**< Zoom controlled normally by elm_web_zoom_set */ + ELM_WEB_ZOOM_MODE_MANUAL = 0, /**< Zoom controled normally by elm_web_zoom_set */ ELM_WEB_ZOOM_MODE_AUTO_FIT, /**< Zoom until content fits in web object */ ELM_WEB_ZOOM_MODE_AUTO_FILL, /**< Zoom until content fills web object */ ELM_WEB_ZOOM_MODE_LAST @@ -17155,6 +16929,7 @@ extern "C" { * @ingroup List */ EAPI void elm_list_item_end_set(Elm_List_Item *item, Evas_Object *end) EINA_ARG_NONNULL(1); + EAPI Evas_Object *elm_list_item_base_get(const Elm_List_Item *item) EINA_ARG_NONNULL(1); /** * Gets the base object of the item. @@ -17167,7 +16942,6 @@ extern "C" { * @ingroup List */ EAPI Evas_Object *elm_list_item_object_get(const Elm_List_Item *item) EINA_ARG_NONNULL(1); - EINA_DEPRECATED EAPI Evas_Object *elm_list_item_base_get(const Elm_List_Item *item) EINA_ARG_NONNULL(1); /** * Get the label of item. @@ -17598,7 +17372,7 @@ extern "C" { * @ingroup Slider * @deprecated use elm_object_text_get() instead. */ - WILL_DEPRECATE EAPI const char *elm_slider_label_get(const Evas_Object *obj) EINA_ARG_NONNULL(1); + EAPI const char *elm_slider_label_get(const Evas_Object *obj) EINA_ARG_NONNULL(1); /** * Set the icon object of the slider object. @@ -17619,7 +17393,7 @@ extern "C" { * @ingroup Slider * @deprecated use elm_object_part_content_set() instead. */ - WILL_DEPRECATE EAPI void elm_slider_icon_set(Evas_Object *obj, Evas_Object *icon) EINA_ARG_NONNULL(1); + EAPI void elm_slider_icon_set(Evas_Object *obj, Evas_Object *icon) EINA_ARG_NONNULL(1); /** * Unset an icon set on a given slider widget. @@ -17640,7 +17414,7 @@ extern "C" { * * @ingroup Slider */ - WILL_DEPRECATE EAPI Evas_Object *elm_slider_icon_unset(Evas_Object *obj) EINA_ARG_NONNULL(1); + EAPI Evas_Object *elm_slider_icon_unset(Evas_Object *obj) EINA_ARG_NONNULL(1); /** * Retrieve the icon object set for a given slider widget. @@ -17659,7 +17433,7 @@ extern "C" { * * @ingroup Slider */ - WILL_DEPRECATE EAPI Evas_Object *elm_slider_icon_get(const Evas_Object *obj) EINA_ARG_NONNULL(1); + EAPI Evas_Object *elm_slider_icon_get(const Evas_Object *obj) EINA_ARG_NONNULL(1); /** * Set the end object of the slider object. @@ -17681,7 +17455,7 @@ extern "C" { * * @ingroup Slider */ - WILL_DEPRECATE EAPI void elm_slider_end_set(Evas_Object *obj, Evas_Object *end) EINA_ARG_NONNULL(1); + EAPI void elm_slider_end_set(Evas_Object *obj, Evas_Object *end) EINA_ARG_NONNULL(1); /** * Unset an end object set on a given slider widget. @@ -17704,7 +17478,7 @@ extern "C" { * * @ingroup Slider */ - WILL_DEPRECATE EAPI Evas_Object *elm_slider_end_unset(Evas_Object *obj) EINA_ARG_NONNULL(1); + EAPI Evas_Object *elm_slider_end_unset(Evas_Object *obj) EINA_ARG_NONNULL(1); /** * Retrieve the end object set for a given slider widget. @@ -17725,7 +17499,7 @@ extern "C" { * * @ingroup Slider */ - WILL_DEPRECATE EAPI Evas_Object *elm_slider_end_get(const Evas_Object *obj) EINA_ARG_NONNULL(1); + EAPI Evas_Object *elm_slider_end_get(const Evas_Object *obj) EINA_ARG_NONNULL(1); /** * Set the (exact) length of the bar region of a given slider widget. @@ -18278,7 +18052,7 @@ extern "C" { * theme. It must return @c NULL, when no content is desired, or a valid * object handle, otherwise. The object will be deleted by the genlist on * its deletion or when the item is "unrealized". See - * #Elm_Genlist_Item_Content_Get_Cb. + * #Elm_Genlist_Item_Icon_Get_Cb. * - @c func.state_get - The @c part parameter is the name string of one of * the state parts in the Edje group implementing the item's theme. Return * @c EINA_FALSE for false/off or @c EINA_TRUE for true/on. Genlists will @@ -18377,7 +18151,7 @@ extern "C" { * If the application wants multiple items to be able to be selected, * elm_genlist_multi_select_set() can enable this. If the list is * single-selection only (the default), then elm_genlist_selected_item_get() - * will return the selected item, if any, or NULL if none is selected. If the + * will return the selected item, if any, or NULL I none is selected. If the * list is multi-select then elm_genlist_selected_items_get() will return a * list (that is only valid as long as no items are modified (added, deleted, * selected or unselected)). @@ -18634,13 +18408,11 @@ extern "C" { * * This removes (and deletes) all items in @p obj, leaving it empty. * - * This is deprecated. Please use elm_gen_clear() instead. - * * @see elm_genlist_item_del(), to remove just one item. * * @ingroup Genlist */ - WILL_DEPRECATE EAPI void elm_genlist_clear(Evas_Object *obj) EINA_ARG_NONNULL(1); + EAPI void elm_genlist_clear(Evas_Object *obj) EINA_ARG_NONNULL(1); /** * Enable or disable multi-selection in the genlist * @@ -18709,17 +18481,15 @@ extern "C" { * * Items will only call their selection func and callback when first * becoming selected. Any further clicks will do nothing, unless you - * enable always select with elm_gen_always_select_mode_set(). + * enable always select with elm_genlist_always_select_mode_set(). * This means that, even if selected, every click will make the selected * callbacks be called. - * - * This function is deprecated. please see elm_gen_always_select_mode_set() * * @see elm_genlist_always_select_mode_get() * * @ingroup Genlist */ - WILL_DEPRECATE EAPI void elm_genlist_always_select_mode_set(Evas_Object *obj, Eina_Bool always_select) EINA_ARG_NONNULL(1); + EAPI void elm_genlist_always_select_mode_set(Evas_Object *obj, Eina_Bool always_select) EINA_ARG_NONNULL(1); /** * Get the always select mode. * @@ -18731,7 +18501,7 @@ extern "C" { * * @ingroup Genlist */ - WILL_DEPRECATE EAPI Eina_Bool elm_genlist_always_select_mode_get(const Evas_Object *obj) EINA_ARG_NONNULL(1); + EAPI Eina_Bool elm_genlist_always_select_mode_get(const Evas_Object *obj) EINA_ARG_NONNULL(1); /** * Enable/disable the no select mode. * @@ -18746,7 +18516,7 @@ extern "C" { * * @ingroup Genlist */ - WILL_DEPRECATE EAPI void elm_genlist_no_select_mode_set(Evas_Object *obj, Eina_Bool no_select) EINA_ARG_NONNULL(1); + EAPI void elm_genlist_no_select_mode_set(Evas_Object *obj, Eina_Bool no_select) EINA_ARG_NONNULL(1); /** * Gets whether the no select mode is enabled. * @@ -18758,7 +18528,7 @@ extern "C" { * * @ingroup Genlist */ - WILL_DEPRECATE EAPI Eina_Bool elm_genlist_no_select_mode_get(const Evas_Object *obj) EINA_ARG_NONNULL(1); + EAPI Eina_Bool elm_genlist_no_select_mode_get(const Evas_Object *obj) EINA_ARG_NONNULL(1); /** * Enable/disable compress mode. * @@ -18840,7 +18610,7 @@ extern "C" { * * @ingroup Genlist */ - WILL_DEPRECATE EAPI void elm_genlist_bounce_set(Evas_Object *obj, Eina_Bool h_bounce, Eina_Bool v_bounce) EINA_ARG_NONNULL(1); + EAPI void elm_genlist_bounce_set(Evas_Object *obj, Eina_Bool h_bounce, Eina_Bool v_bounce) EINA_ARG_NONNULL(1); /** * Get whether the horizontal and vertical bouncing effect is enabled. * @@ -18854,7 +18624,7 @@ extern "C" { * * @ingroup Genlist */ - WILL_DEPRECATE EAPI void elm_genlist_bounce_get(const Evas_Object *obj, Eina_Bool *h_bounce, Eina_Bool *v_bounce) EINA_ARG_NONNULL(1); + EAPI void elm_genlist_bounce_get(const Evas_Object *obj, Eina_Bool *h_bounce, Eina_Bool *v_bounce) EINA_ARG_NONNULL(1); /** * Enable/disable homogenous mode. * @@ -19172,7 +18942,7 @@ extern "C" { * * @ingroup Genlist */ - WILL_DEPRECATE EAPI Elm_Genlist_Item *elm_genlist_first_item_get(const Evas_Object *obj) EINA_ARG_NONNULL(1); + EAPI Elm_Genlist_Item *elm_genlist_first_item_get(const Evas_Object *obj) EINA_ARG_NONNULL(1); /** * Get the last item in the genlist * @@ -19182,7 +18952,7 @@ extern "C" { * * @ingroup Genlist */ - WILL_DEPRECATE EAPI Elm_Genlist_Item *elm_genlist_last_item_get(const Evas_Object *obj) EINA_ARG_NONNULL(1); + EAPI Elm_Genlist_Item *elm_genlist_last_item_get(const Evas_Object *obj) EINA_ARG_NONNULL(1); /** * Set the scrollbar policy * @@ -19230,7 +19000,7 @@ extern "C" { * * @ingroup Genlist */ - WILL_DEPRECATE EAPI Elm_Genlist_Item *elm_genlist_item_next_get(const Elm_Genlist_Item *item) EINA_ARG_NONNULL(1); + EAPI Elm_Genlist_Item *elm_genlist_item_next_get(const Elm_Genlist_Item *item) EINA_ARG_NONNULL(1); /** * Get the @b previous item in a genlist widget's internal list of items, * given a handle to one of those items. @@ -19246,7 +19016,7 @@ extern "C" { * * @ingroup Genlist */ - WILL_DEPRECATE EAPI Elm_Genlist_Item *elm_genlist_item_prev_get(const Elm_Genlist_Item *item) EINA_ARG_NONNULL(1); + EAPI Elm_Genlist_Item *elm_genlist_item_prev_get(const Elm_Genlist_Item *item) EINA_ARG_NONNULL(1); /** * Get the genlist object's handle which contains a given genlist * item @@ -19256,11 +19026,9 @@ extern "C" { * * This returns the genlist object itself that an item belongs to. * - * This function is deprecated. Please use elm_gen_item_widget_get() - * * @ingroup Genlist */ - WILL_DEPRECATE EAPI Evas_Object *elm_genlist_item_genlist_get(const Elm_Genlist_Item *item) EINA_ARG_NONNULL(1); + EAPI Evas_Object *elm_genlist_item_genlist_get(const Elm_Genlist_Item *item) EINA_ARG_NONNULL(1); /** * Get the parent item of the given item * @@ -19303,7 +19071,7 @@ extern "C" { * * @ingroup Genlist */ - WILL_DEPRECATE EAPI void elm_genlist_item_selected_set(Elm_Genlist_Item *item, Eina_Bool selected) EINA_ARG_NONNULL(1); + EAPI void elm_genlist_item_selected_set(Elm_Genlist_Item *item, Eina_Bool selected) EINA_ARG_NONNULL(1); /** * Get whether a given genlist item is selected or not * @@ -19314,7 +19082,7 @@ extern "C" { * * @ingroup Genlist */ - WILL_DEPRECATE EAPI Eina_Bool elm_genlist_item_selected_get(const Elm_Genlist_Item *item) EINA_ARG_NONNULL(1); + EAPI Eina_Bool elm_genlist_item_selected_get(const Elm_Genlist_Item *item) EINA_ARG_NONNULL(1); /** * Sets the expanded state of an item. * @@ -19577,7 +19345,7 @@ extern "C" { * @ingroup Genlist */ EAPI void elm_genlist_item_contents_orphan(Elm_Genlist_Item *it) EINA_ARG_NONNULL(1); - WILL_DEPRECATE EAPI void elm_genlist_item_icons_orphan(Elm_Genlist_Item *it) EINA_ARG_NONNULL(1); + EAPI void elm_genlist_item_icons_orphan(Elm_Genlist_Item *it) EINA_ARG_NONNULL(1); /** * Get the real Evas object created to implement the view of a * given genlist item @@ -19728,26 +19496,6 @@ extern "C" { */ EAPI const char *elm_genlist_item_tooltip_style_get(const Elm_Genlist_Item *item) EINA_ARG_NONNULL(1); /** - * @brief Disable size restrictions on an object's tooltip - * @param item The tooltip's anchor object - * @param disable If EINA_TRUE, size restrictions are disabled - * @return EINA_FALSE on failure, EINA_TRUE on success - * - * This function allows a tooltip to expand beyond its parant window's canvas. - * It will instead be limited only by the size of the display. - */ - EAPI Eina_Bool elm_genlist_item_tooltip_size_restrict_disable(Elm_Genlist_Item *item, Eina_Bool disable); - /** - * @brief Retrieve size restriction state of an object's tooltip - * @param item The tooltip's anchor object - * @return If EINA_TRUE, size restrictions are disabled - * - * This function returns whether a tooltip is allowed to expand beyond - * its parant window's canvas. - * It will instead be limited only by the size of the display. - */ - EAPI Eina_Bool elm_genlist_item_tooltip_size_restrict_disabled_get(const Elm_Genlist_Item *item); - /** * Set the type of mouse pointer/cursor decoration to be shown, * when the mouse pointer is over the given genlist widget item * @@ -20267,7 +20015,7 @@ extern "C" { * @deprecated use elm_object_part_content_set() instead. * */ - WILL_DEPRECATE EAPI void elm_radio_icon_set(Evas_Object *obj, Evas_Object *icon) EINA_ARG_NONNULL(1); + EAPI void elm_radio_icon_set(Evas_Object *obj, Evas_Object *icon) EINA_ARG_NONNULL(1); /** * @brief Get the icon object of the radio object * @@ -20279,7 +20027,7 @@ extern "C" { * @deprecated use elm_object_part_content_get() instead. * */ - WILL_DEPRECATE EAPI Evas_Object *elm_radio_icon_get(const Evas_Object *obj) EINA_ARG_NONNULL(1); + EAPI Evas_Object *elm_radio_icon_get(const Evas_Object *obj) EINA_ARG_NONNULL(1); /** * @brief Unset the icon used for the radio object * @@ -20292,7 +20040,7 @@ extern "C" { * @deprecated use elm_object_part_content_unset() instead. * */ - WILL_DEPRECATE EAPI Evas_Object *elm_radio_icon_unset(Evas_Object *obj) EINA_ARG_NONNULL(1); + EAPI Evas_Object *elm_radio_icon_unset(Evas_Object *obj) EINA_ARG_NONNULL(1); /** * @brief Add this radio to a group of other radio objects * @@ -20366,47 +20114,37 @@ extern "C" { * @image html img/widget/pager/preview-00.png * @image latex img/widget/pager/preview-00.eps * - * @brief Widget that allows flipping between one or more “pages” - * of objects. - * - * The flipping between pages of objects is animated. All content - * in the pager is kept in a stack, being the last content added - * (visible one) on the top of that stack. - * - * Objects can be pushed or popped from the stack or deleted as - * well. Pushes and pops will animate the widget accordingly to its - * style (a pop will also delete the child object once the - * animation is finished). Any object already in the pager can be - * promoted to the top (from its current stacking position) through - * the use of elm_pager_content_promote(). New objects are pushed - * to the top with elm_pager_content_push(). When the top item is - * no longer wanted, simply pop it with elm_pager_content_pop() and - * it will also be deleted. If an object is no longer needed and is - * not the top item, just delete it as normal. You can query which - * objects are the top and bottom with + * @brief Widget that allows flipping between 1 or more “pages” of objects. + * + * The flipping between “pages” of objects is animated. All content in pager + * is kept in a stack, the last content to be added will be on the top of the + * stack(be visible). + * + * Objects can be pushed or popped from the stack or deleted as normal. + * Pushes and pops will animate (and a pop will delete the object once the + * animation is finished). Any object already in the pager can be promoted to + * the top(from its current stacking position) through the use of + * elm_pager_content_promote(). Objects are pushed to the top with + * elm_pager_content_push() and when the top item is no longer wanted, simply + * pop it with elm_pager_content_pop() and it will also be deleted. If an + * object is no longer needed and is not the top item, just delete it as + * normal. You can query which objects are the top and bottom with * elm_pager_content_bottom_get() and elm_pager_content_top_get(). * * Signals that you can add callbacks for are: - * - @c "show,finished" - when a new page is actually shown on the top - * - @c "hide,finished" - when a previous page is hidden - * - * Only after the first of that signals the child object is - * guaranteed to be visible, as in @c evas_object_visible_get(). + * "hide,finished" - when the previous page is hided * * This widget has the following styles available: - * - @c "default" - * - @c "fade" - * - @c "fade_translucide" - * - @c "fade_invisible" - * - * @note These styles affect only the flipping animations on the - * default theme; the appearance when not animating is unaffected - * by them. + * @li default + * @li fade + * @li fade_translucide + * @li fade_invisible + * @note This styles affect only the flipping animations, the appearance when + * not animating is unaffected by styles. * * @ref tutorial_pager gives a good overview of the usage of the API. * @{ */ - /** * Add a new pager to the parent * @@ -20416,7 +20154,6 @@ extern "C" { * @ingroup Pager */ EAPI Evas_Object *elm_pager_add(Evas_Object *parent) EINA_ARG_NONNULL(1); - /** * @brief Push an object to the top of the pager stack (and show it). * @@ -20432,7 +20169,6 @@ extern "C" { * undefined behavior. */ EAPI void elm_pager_content_push(Evas_Object *obj, Evas_Object *content) EINA_ARG_NONNULL(1); - /** * @brief Pop the object that is on top of the stack * @@ -20443,7 +20179,6 @@ extern "C" { * the stack will become visible. */ EAPI void elm_pager_content_pop(Evas_Object *obj) EINA_ARG_NONNULL(1); - /** * @brief Moves an object already in the pager stack to the top of the stack. * @@ -20459,7 +20194,6 @@ extern "C" { * results in undefined behavior. */ EAPI void elm_pager_content_promote(Evas_Object *obj, Evas_Object *content) EINA_ARG_NONNULL(1); - /** * @brief Return the object at the bottom of the pager stack * @@ -20467,7 +20201,6 @@ extern "C" { * @return The bottom object or NULL if none */ EAPI Evas_Object *elm_pager_content_bottom_get(const Evas_Object *obj) EINA_ARG_NONNULL(1); - /** * @brief Return the object at the top of the pager stack * @@ -21534,7 +21267,7 @@ extern "C" { * * @ingroup Progressbar */ - WILL_DEPRECATE EAPI void elm_progressbar_icon_set(Evas_Object *obj, Evas_Object *icon) EINA_ARG_NONNULL(1); + EAPI void elm_progressbar_icon_set(Evas_Object *obj, Evas_Object *icon) EINA_ARG_NONNULL(1); /** * Retrieve the icon object set for a given progress bar widget @@ -21548,7 +21281,7 @@ extern "C" { * * @ingroup Progressbar */ - WILL_DEPRECATE EAPI Evas_Object *elm_progressbar_icon_get(const Evas_Object *obj) EINA_ARG_NONNULL(1); + EAPI Evas_Object *elm_progressbar_icon_get(const Evas_Object *obj) EINA_ARG_NONNULL(1); /** * Unset an icon set on a given progress bar widget @@ -21565,7 +21298,7 @@ extern "C" { * * @ingroup Progressbar */ - WILL_DEPRECATE EAPI Evas_Object *elm_progressbar_icon_unset(Evas_Object *obj) EINA_ARG_NONNULL(1); + EAPI Evas_Object *elm_progressbar_icon_unset(Evas_Object *obj) EINA_ARG_NONNULL(1); /** * Set the (exact) length of the bar region of a given progress bar @@ -22989,6 +22722,28 @@ extern "C" { */ EAPI void elm_map_geo_region_get(const Evas_Object *obj, double *lon, double *lat) EINA_ARG_NONNULL(1); + + /** + * @brief Disable size restrictions on an object's tooltip + * @param item The tooltip's anchor object + * @param disable If EINA_TRUE, size restrictions are disabled + * @return EINA_FALSE on failure, EINA_TRUE on success + * + * This function allows a tooltip to expand beyond its parant window's canvas. + * It will instead be limited only by the size of the display. + */ + EAPI Eina_Bool elm_list_item_tooltip_size_restrict_disable(Elm_List_Item *item, Eina_Bool disable) EINA_ARG_NONNULL(1); + /** + * @brief Retrieve size restriction state of an object's tooltip + * @param obj The tooltip's anchor object + * @return If EINA_TRUE, size restrictions are disabled + * + * This function returns whether a tooltip is allowed to expand beyond + * its parant window's canvas. + * It will instead be limited only by the size of the display. + */ + EAPI Eina_Bool elm_list_item_tooltip_size_restrict_disabled_get(const Elm_List_Item *item) EINA_ARG_NONNULL(1); + /** * Animatedly bring in given coordinates to the center of the map. * @@ -24188,11 +23943,8 @@ extern "C" { * Once the content object is set, a previously set one will be deleted. * If you want to keep that old content object, use the * elm_panel_content_unset() function. - * - * @deprecated use elm_object_content_set() instead - * */ - WILL_DEPRECATE EAPI void elm_panel_content_set(Evas_Object *obj, Evas_Object *content) EINA_ARG_NONNULL(1); + EAPI void elm_panel_content_set(Evas_Object *obj, Evas_Object *content) EINA_ARG_NONNULL(1); /** * @brief Get the content of the panel. * @@ -24202,11 +23954,8 @@ extern "C" { * Return the content object which is set for this widget. * * @see elm_panel_content_set() - * - * @deprecated use elm_object_content_get() instead - * */ - WILL_DEPRECATE EAPI Evas_Object *elm_panel_content_get(const Evas_Object *obj) EINA_ARG_NONNULL(1); + EAPI Evas_Object *elm_panel_content_get(const Evas_Object *obj) EINA_ARG_NONNULL(1); /** * @brief Unset the content of the panel. * @@ -24216,11 +23965,8 @@ extern "C" { * Unparent and return the content object which was set for this widget. * * @see elm_panel_content_set() - * - * @deprecated use elm_object_content_unset() instead - * */ - WILL_DEPRECATE EAPI Evas_Object *elm_panel_content_unset(Evas_Object *obj) EINA_ARG_NONNULL(1); + EAPI Evas_Object *elm_panel_content_unset(Evas_Object *obj) EINA_ARG_NONNULL(1); /** * @brief Set the state of the panel. * @@ -24408,7 +24154,7 @@ extern "C" { * * @ingroup Panes */ - WILL_DEPRECATE EAPI Evas_Object *elm_panes_content_right_unset(Evas_Object *obj) EINA_ARG_NONNULL(1); + EAPI Evas_Object *elm_panes_content_right_unset(Evas_Object *obj) EINA_ARG_NONNULL(1); /** * Get the size proportion of panes widget's left side. @@ -24892,11 +24638,9 @@ extern "C" { * @see elm_object_content_unset() * @see elm_object_content_get() * - * @deprecated use elm_object_content_set() instead - * * @ingroup Conformant */ - WILL_DEPRECATE EAPI void elm_conformant_content_set(Evas_Object *obj, Evas_Object *content) EINA_ARG_NONNULL(1); + EAPI void elm_conformant_content_set(Evas_Object *obj, Evas_Object *content) EINA_ARG_NONNULL(1); /** * Get the content of the conformant widget. @@ -24911,11 +24655,9 @@ extern "C" { * @see elm_object_content_set(). * @see elm_object_content_unset() * - * @deprecated use elm_object_content_get() instead - * * @ingroup Conformant */ - WILL_DEPRECATE EAPI Evas_Object *elm_conformant_content_get(const Evas_Object *obj) EINA_ARG_NONNULL(1); + EAPI Evas_Object *elm_conformant_content_get(const Evas_Object *obj) EINA_ARG_NONNULL(1); /** * Unset the content of the conformant widget. @@ -24927,11 +24669,9 @@ extern "C" { * * @see elm_object_content_set(). * - * @deprecated use elm_object_content_unset() instead - * * @ingroup Conformant */ - EINA_DEPRECATED EAPI Evas_Object *elm_conformant_content_unset(Evas_Object *obj) EINA_ARG_NONNULL(1); + EAPI Evas_Object *elm_conformant_content_unset(Evas_Object *obj) EINA_ARG_NONNULL(1); /** * Returns the Evas_Object that represents the content area. @@ -25000,11 +24740,9 @@ extern "C" { * * To enable map, elm_mapbuf_enabled_set() should be used. * - * @deprecated use elm_object_content_set() instead - * * @ingroup Mapbuf */ - WILL_DEPRECATE EAPI void elm_mapbuf_content_set(Evas_Object *obj, Evas_Object *content) EINA_ARG_NONNULL(1); + EAPI void elm_mapbuf_content_set(Evas_Object *obj, Evas_Object *content) EINA_ARG_NONNULL(1); /** * Get the content of the mapbuf. @@ -25016,11 +24754,9 @@ extern "C" { * * @see elm_mapbuf_content_set() for details. * - * @deprecated use elm_object_content_get() instead - * * @ingroup Mapbuf */ - WILL_DEPRECATE EAPI Evas_Object *elm_mapbuf_content_get(const Evas_Object *obj) EINA_ARG_NONNULL(1); + EAPI Evas_Object *elm_mapbuf_content_get(const Evas_Object *obj) EINA_ARG_NONNULL(1); /** * Unset the content of the mapbuf. @@ -25032,11 +24768,9 @@ extern "C" { * * @see elm_mapbuf_content_set() for details. * - * @deprecated use elm_object_content_unset() instead - * * @ingroup Mapbuf */ - WILL_DEPRECATE EAPI Evas_Object *elm_mapbuf_content_unset(Evas_Object *obj) EINA_ARG_NONNULL(1); + EAPI Evas_Object *elm_mapbuf_content_unset(Evas_Object *obj) EINA_ARG_NONNULL(1); /** * Enable or disable the map. @@ -25182,6 +24916,8 @@ extern "C" { * @{ */ + typedef struct _Elm_Flipselector_Item Elm_Flipselector_Item; /**< Item handle for a flip selector widget. */ + /** * Add a new flip selector widget to the given parent Elementary * (container) widget @@ -25246,7 +24982,7 @@ extern "C" { * * @ingroup Flipselector */ - EAPI Elm_Object_Item *elm_flipselector_item_append(Evas_Object *obj, const char *label, Evas_Smart_Cb func, void *data) EINA_ARG_NONNULL(1); + EAPI Elm_Flipselector_Item *elm_flipselector_item_append(Evas_Object *obj, const char *label, Evas_Smart_Cb func, void *data) EINA_ARG_NONNULL(1); /** * Prepend a (text) item to a flip selector widget @@ -25272,19 +25008,19 @@ extern "C" { * * @ingroup Flipselector */ - EAPI Elm_Object_Item *elm_flipselector_item_prepend(Evas_Object *obj, const char *label, Evas_Smart_Cb func, void *data) EINA_ARG_NONNULL(1); + EAPI Elm_Flipselector_Item *elm_flipselector_item_prepend(Evas_Object *obj, const char *label, Evas_Smart_Cb func, void *data) EINA_ARG_NONNULL(1); /** * Get the internal list of items in a given flip selector widget. * * @param obj The flipselector object - * @return The list of items (#Elm_Object_Item as data) or + * @return The list of items (#Elm_Flipselector_Item as data) or * @c NULL on errors. * * This list is @b not to be modified in any way and must not be * freed. Use the list members with functions like - * elm_object_item_text_set(), - * elm_object_item_text_get(), + * elm_flipselector_item_label_set(), + * elm_flipselector_item_label_get(), * elm_flipselector_item_del(), * elm_flipselector_item_selected_get(), * elm_flipselector_item_selected_set(). @@ -25310,7 +25046,7 @@ extern "C" { * * @ingroup Flipselector */ - EAPI Elm_Object_Item *elm_flipselector_first_item_get(const Evas_Object *obj) EINA_ARG_NONNULL(1); + EAPI Elm_Flipselector_Item *elm_flipselector_first_item_get(const Evas_Object *obj) EINA_ARG_NONNULL(1); /** * Get the last item in the given flip selector widget's list of @@ -25325,7 +25061,7 @@ extern "C" { * * @ingroup Flipselector */ - EAPI Elm_Object_Item *elm_flipselector_last_item_get(const Evas_Object *obj) EINA_ARG_NONNULL(1); + EAPI Elm_Flipselector_Item *elm_flipselector_last_item_get(const Evas_Object *obj) EINA_ARG_NONNULL(1); /** * Get the currently selected item in a flip selector widget. @@ -25336,13 +25072,13 @@ extern "C" { * * @ingroup Flipselector */ - EAPI Elm_Object_Item *elm_flipselector_selected_item_get(const Evas_Object *obj) EINA_ARG_NONNULL(1); + EAPI Elm_Flipselector_Item *elm_flipselector_selected_item_get(const Evas_Object *obj) EINA_ARG_NONNULL(1); /** * Set whether a given flip selector widget's item should be the * currently selected one. * - * @param it The flip selector item + * @param item The flip selector item * @param selected @c EINA_TRUE to select it, @c EINA_FALSE to unselect. * * This sets whether @p item is or not the selected (thus, under @@ -25355,13 +25091,13 @@ extern "C" { * * @ingroup Flipselector */ - EAPI void elm_flipselector_item_selected_set(Elm_Object_Item *it, Eina_Bool selected) EINA_ARG_NONNULL(1); + EAPI void elm_flipselector_item_selected_set(Elm_Flipselector_Item *item, Eina_Bool selected) EINA_ARG_NONNULL(1); /** * Get whether a given flip selector widget's item is the currently * selected one. * - * @param it The flip selector item + * @param item The flip selector item * @return @c EINA_TRUE, if it's selected, @c EINA_FALSE otherwise * (or on errors). * @@ -25369,48 +25105,46 @@ extern "C" { * * @ingroup Flipselector */ - EAPI Eina_Bool elm_flipselector_item_selected_get(const Elm_Object_Item *it) EINA_ARG_NONNULL(1); + EAPI Eina_Bool elm_flipselector_item_selected_get(const Elm_Flipselector_Item *item) EINA_ARG_NONNULL(1); /** * Delete a given item from a flip selector widget. * - * @param it The item to delete + * @param item The item to delete * * @ingroup Flipselector */ - EAPI void elm_flipselector_item_del(Elm_Object_Item *it) EINA_ARG_NONNULL(1); + EAPI void elm_flipselector_item_del(Elm_Flipselector_Item *item) EINA_ARG_NONNULL(1); /** * Get the label of a given flip selector widget's item. * - * @param it The item to get label from + * @param item The item to get label from * @return The text label of @p item or @c NULL, on errors * - * @see elm_object_item_text_set() + * @see elm_flipselector_item_label_set() * - * @deprecated see elm_object_item_text_get() instead * @ingroup Flipselector */ - EINA_DEPRECATED EAPI const char *elm_flipselector_item_label_get(const Elm_Object_Item *it) EINA_ARG_NONNULL(1); + EAPI const char *elm_flipselector_item_label_get(const Elm_Flipselector_Item *item) EINA_ARG_NONNULL(1); /** * Set the label of a given flip selector widget's item. * - * @param it The item to set label on + * @param item The item to set label on * @param label The text label string, in UTF-8 encoding * - * @see elm_object_item_text_get() + * @see elm_flipselector_item_label_get() * - * @deprecated see elm_object_item_text_set() instead * @ingroup Flipselector */ - EINA_DEPRECATED EAPI void elm_flipselector_item_label_set(Elm_Object_Item *it, const char *label) EINA_ARG_NONNULL(1); + EAPI void elm_flipselector_item_label_set(Elm_Flipselector_Item *item, const char *label) EINA_ARG_NONNULL(1); /** * Gets the item before @p item in a flip selector widget's * internal list of items. * - * @param it The item to fetch previous from + * @param item The item to fetch previous from * @return The item before the @p item, in its parent's list. If * there is no previous item for @p item or there's an * error, @c NULL is returned. @@ -25419,13 +25153,13 @@ extern "C" { * * @ingroup Flipselector */ - EAPI Elm_Object_Item *elm_flipselector_item_prev_get(Elm_Object_Item *it) EINA_ARG_NONNULL(1); + EAPI Elm_Flipselector_Item *elm_flipselector_item_prev_get(Elm_Flipselector_Item *item) EINA_ARG_NONNULL(1); /** * Gets the item after @p item in a flip selector widget's * internal list of items. * - * @param it The item to fetch next from + * @param item The item to fetch next from * @return The item after the @p item, in its parent's list. If * there is no next item for @p item or there's an * error, @c NULL is returned. @@ -25434,7 +25168,7 @@ extern "C" { * * @ingroup Flipselector */ - EAPI Elm_Object_Item *elm_flipselector_item_next_get(Elm_Object_Item *it) EINA_ARG_NONNULL(1); + EAPI Elm_Flipselector_Item *elm_flipselector_item_next_get(Elm_Flipselector_Item *item) EINA_ARG_NONNULL(1); /** * Set the interval on time updates for an user mouse button hold @@ -26820,12 +26554,6 @@ extern "C" { * Default contents parts of the ctxpopup widget that you can use for are: * @li "default" - A content of the ctxpopup * - * Default contents parts of the naviframe items that you can use for are: - * @li "icon" - A icon in the title area - * - * Default text parts of the naviframe items that you can use for are: - * @li "default" - Title label in the title area - * * @ref tutorial_ctxpopup shows the usage of a good deal of the API. * @{ */ @@ -26926,9 +26654,8 @@ extern "C" { * @param disabled @c EINA_TRUE to disable it, @c EINA_FALSE to enable it * * When disabled the item is greyed out to indicate it's state. - * @deprecated use elm_object_item_disabled_set() instead */ - WILL_DEPRECATE EAPI void elm_ctxpopup_item_disabled_set(Elm_Object_Item *it, Eina_Bool disabled) EINA_ARG_NONNULL(1); + EAPI void elm_ctxpopup_item_disabled_set(Elm_Object_Item *it, Eina_Bool disabled) EINA_ARG_NONNULL(1); /** * @brief Get the ctxpopup item's disabled/enabled state. * @@ -26948,10 +26675,8 @@ extern "C" { * * @see elm_ctxpopup_item_append() * @see elm_ctxpopup_item_icon_set() - * - * @deprecated use elm_object_item_part_content_get() instead */ - WILL_DEPRECATE EAPI Evas_Object *elm_ctxpopup_item_icon_get(const Elm_Object_Item *it) EINA_ARG_NONNULL(1); + EAPI Evas_Object *elm_ctxpopup_item_icon_get(const Elm_Object_Item *it) EINA_ARG_NONNULL(1); /** * @brief Sets the side icon associated with the ctxpopup item * @@ -26963,11 +26688,8 @@ extern "C" { * dissapear from the first item. * * @see elm_ctxpopup_item_append() - * - * @deprecated use elm_object_item_part_content_set() instead - * */ - WILL_DEPRECATE EAPI void elm_ctxpopup_item_icon_set(Elm_Object_Item *it, Evas_Object *icon) EINA_ARG_NONNULL(1); + EAPI void elm_ctxpopup_item_icon_set(Elm_Object_Item *it, Evas_Object *icon) EINA_ARG_NONNULL(1); /** * @brief Get the label for the given ctxpopup item. * @@ -26977,19 +26699,15 @@ extern "C" { * * @see elm_ctxpopup_item_append() * @see elm_ctxpopup_item_label_set() - * - * @deprecated use elm_object_item_text_get() instead */ - WILL_DEPRECATE EAPI const char *elm_ctxpopup_item_label_get(const Elm_Object_Item *it) EINA_ARG_NONNULL(1); + EAPI const char *elm_ctxpopup_item_label_get(const Elm_Object_Item *it) EINA_ARG_NONNULL(1); /** * @brief (Re)set the label on the given ctxpopup item. * * @param it Ctxpopup item * @param label String to set as label - * - * @deprecated use elm_object_item_text_set() instead */ - WILL_DEPRECATE EAPI void elm_ctxpopup_item_label_set(Elm_Object_Item *it, const char *label) EINA_ARG_NONNULL(1); + EAPI void elm_ctxpopup_item_label_set(Elm_Object_Item *it, const char *label) EINA_ARG_NONNULL(1); /** * @brief Set an elm widget as the content of the ctxpopup. * @@ -27000,13 +26718,12 @@ extern "C" { * you want to keep that old content object, use the * elm_ctxpopup_content_unset() function. * + * @deprecated use elm_object_content_set() + * * @warning Ctxpopup can't hold both a item list and a content at the same * time. When a content is set, any previous items will be removed. - * - * @deprecated use elm_object_content_set() instead - * */ - WILL_DEPRECATE EAPI void elm_ctxpopup_content_set(Evas_Object *obj, Evas_Object *content) EINA_ARG_NONNULL(1, 2); + EAPI void elm_ctxpopup_content_set(Evas_Object *obj, Evas_Object *content) EINA_ARG_NONNULL(1, 2); /** * @brief Unset the ctxpopup content * @@ -27018,11 +26735,8 @@ extern "C" { * @deprecated use elm_object_content_unset() * * @see elm_ctxpopup_content_set() - * - * @deprecated use elm_object_content_unset() instead - * */ - WILL_DEPRECATE EAPI Evas_Object *elm_ctxpopup_content_unset(Evas_Object *obj) EINA_ARG_NONNULL(1); + EAPI Evas_Object *elm_ctxpopup_content_unset(Evas_Object *obj) EINA_ARG_NONNULL(1); /** * @brief Set the direction priority of a ctxpopup. * @@ -27991,95 +27705,18 @@ extern "C" { #define ELM_STORE_ITEM_MAPPING_END { ELM_STORE_ITEM_MAPPING_NONE, NULL, 0, { .empty = { EINA_TRUE } } } #define ELM_STORE_ITEM_MAPPING_OFFSET(st, it) offsetof(st, it) - /** - * dbsystem Store object - * - * @addtogroup DBStore - * @{ - * - * @return The new object or NULL if it cannot be created - */ EAPI Elm_Store *elm_store_dbsystem_new(void); - /** - * Sets the item count of a store - * - * @param st The store object - * @param count The item count of an store - */ EAPI void elm_store_item_count_set(Elm_Store *st, int count) EINA_ARG_NONNULL(1); - /** - * Set the select func that select the state of a list item whether true or false - * - * @param st The store object - * @param func The select cb function of an store - * @param data The new data pointer to set - */ EAPI void elm_store_item_select_func_set(Elm_Store *st, Elm_Store_Item_Select_Cb func, const void *data) EINA_ARG_NONNULL(1); - /** - * Sets the sort func that sort the item with a next in the list - * - * @param st The store object - * @param func The sort cb function of an store - * @param data The new data pointer to set - */ EAPI void elm_store_item_sort_func_set(Elm_Store *st, Elm_Store_Item_Sort_Cb func, const void *data) EINA_ARG_NONNULL(1); - /** - * Set the store item free func - * - * @param st The store object - * @param func The free cb function of an store - * @param data The new data pointer to set - */ EAPI void elm_store_item_free_func_set(Elm_Store *st, Elm_Store_Item_Free_Cb func, const void *data) EINA_ARG_NONNULL(1); - /** - * Get the item index that included header items - * - * @param sti The store item object - * @return The item index in genlist - */ EAPI int elm_store_item_data_index_get(const Elm_Store_Item *sti) EINA_ARG_NONNULL(1); - /** - * Get the DB pointer of an item - * - * @param sti The store item object - * @return The DB pointer of item - */ EAPI void *elm_store_dbsystem_db_get(const Elm_Store_Item *sti) EINA_ARG_NONNULL(1); - /** - * Set the DB pointer of an item - * - * @param sti The store item object - * @parm p_db The DB pointer of item - */ EAPI void elm_store_dbsystem_db_set(Elm_Store *store, void *pDB) EINA_ARG_NONNULL(1); - /** - */ EAPI int elm_store_item_index_get(const Elm_Store_Item *sti) EINA_ARG_NONNULL(1); - /** - * Append the item to the genlist - * - * @param st The store object - * @param info The store item info dbsystem object - * @return The item of store - */ EAPI Elm_Store_Item *elm_store_item_add(Elm_Store *st, Elm_Store_Item_Info *info) EINA_ARG_NONNULL(1); - /** - * Realize the visible items to the screen - * - * @param st The store object - */ EAPI void elm_store_item_update(Elm_Store_Item *sti) EINA_ARG_NONNULL(1); - /** - * Realize the item to the screen - * - * @param sti The store item object - */ EAPI void elm_store_visible_items_update(Elm_Store *st) EINA_ARG_NONNULL(1); - /** - * Delete the item of genlist - * - * @param sti The store item object - */ EAPI void elm_store_item_del(Elm_Store_Item *sti) EINA_ARG_NONNULL(1); EAPI void elm_store_free(Elm_Store *st); EAPI Elm_Store *elm_store_filesystem_new(void); @@ -28103,9 +27740,6 @@ extern "C" { EAPI void *elm_store_item_data_get(Elm_Store_Item *sti) EINA_ARG_NONNULL(1); EAPI const Elm_Store *elm_store_item_store_get(const Elm_Store_Item *sti) EINA_ARG_NONNULL(1); EAPI const Elm_Genlist_Item *elm_store_item_genlist_item_get(const Elm_Store_Item *sti) EINA_ARG_NONNULL(1); - /** - * @} - */ /** * @defgroup SegmentControl SegmentControl @@ -28906,6 +28540,84 @@ extern "C" { EAPI void elm_popup_orient_set(Evas_Object *obj, Elm_Popup_Orient orient); EAPI int elm_popup_run(Evas_Object *obj); + /* NavigationBar */ + #define NAVIBAR_TITLEOBJ_INSTANT_HIDE "elm,state,hide,noanimate,title", "elm" + #define NAVIBAR_TITLEOBJ_INSTANT_SHOW "elm,state,show,noanimate,title", "elm" + + typedef enum + { + ELM_NAVIGATIONBAR_FUNCTION_BUTTON1, + ELM_NAVIGATIONBAR_FUNCTION_BUTTON2, + ELM_NAVIGATIONBAR_FUNCTION_BUTTON3, + ELM_NAVIGATIONBAR_BACK_BUTTON + } Elm_Navi_Button_Type; + + EINA_DEPRECATED EAPI Evas_Object *elm_navigationbar_add(Evas_Object *parent); + EINA_DEPRECATED EAPI void elm_navigationbar_push(Evas_Object *obj, const char *title, Evas_Object *fn_btn1, Evas_Object *fn_btn2, Evas_Object *fn_btn3, Evas_Object *content); + EINA_DEPRECATED EAPI void elm_navigationbar_pop(Evas_Object *obj); + EINA_DEPRECATED EAPI void elm_navigationbar_to_content_pop(Evas_Object *obj, Evas_Object *content); + EINA_DEPRECATED EAPI void elm_navigationbar_title_label_set(Evas_Object *obj, Evas_Object *content, const char *title); + EINA_DEPRECATED EAPI const char *elm_navigationbar_title_label_get(Evas_Object *obj, Evas_Object *content); + EINA_DEPRECATED EAPI void elm_navigationbar_title_object_add(Evas_Object *obj, Evas_Object *content, Evas_Object *title_obj); + EINA_DEPRECATED EAPI Evas_Object *elm_navigationbar_title_object_get(Evas_Object *obj, Evas_Object *content); + EINA_DEPRECATED EAPI Eina_List *elm_navigationbar_title_object_list_get(Evas_Object *obj, Evas_Object *content); + EINA_DEPRECATED EAPI Evas_Object *elm_navigationbar_content_top_get(Evas_Object *obj); + EINA_DEPRECATED EAPI Evas_Object *elm_navigationbar_content_bottom_get(Evas_Object *obj); + EINA_DEPRECATED EAPI void elm_navigationbar_hidden_set(Evas_Object *obj, Eina_Bool hidden); + EINA_DEPRECATED EAPI void elm_navigationbar_title_button_set(Evas_Object *obj, Evas_Object *content, Evas_Object *button, Elm_Navi_Button_Type button_type); + EINA_DEPRECATED EAPI Evas_Object *elm_navigationbar_title_button_get(Evas_Object *obj, Evas_Object *content, Elm_Navi_Button_Type button_type); + EINA_DEPRECATED EAPI const char *elm_navigationbar_subtitle_label_get(Evas_Object *obj, Evas_Object *content); + EINA_DEPRECATED EAPI void elm_navigationbar_subtitle_label_set(Evas_Object *obj, Evas_Object *content, const char *subtitle); + EINA_DEPRECATED EAPI void elm_navigationbar_title_object_list_unset(Evas_Object *obj, Evas_Object *content, Eina_List **list); + EINA_DEPRECATED EAPI void elm_navigationbar_animation_disabled_set(Evas_Object *obj, Eina_Bool disable); + EINA_DEPRECATED EAPI void elm_navigationbar_title_object_visible_set(Evas_Object *obj, Evas_Object *content, Eina_Bool visible); + EINA_DEPRECATED Eina_Bool elm_navigationbar_title_object_visible_get(Evas_Object *obj, Evas_Object *content); + EINA_DEPRECATED EAPI void elm_navigationbar_title_icon_set(Evas_Object *obj, Evas_Object *content, Evas_Object *icon); + EINA_DEPRECATED EAPI Evas_Object *elm_navigationbar_title_icon_get(Evas_Object *obj, Evas_Object *content); + + /* NavigationBar */ + #define NAVIBAR_EX_TITLEOBJ_INSTANT_HIDE "elm,state,hide,noanimate,title", "elm" + #define NAVIBAR_EX_TITLEOBJ_INSTANT_SHOW "elm,state,show,noanimate,title", "elm" + + typedef enum + { + ELM_NAVIGATIONBAR_EX_BACK_BUTTON, + ELM_NAVIGATIONBAR_EX_FUNCTION_BUTTON1, + ELM_NAVIGATIONBAR_EX_FUNCTION_BUTTON2, + ELM_NAVIGATIONBAR_EX_FUNCTION_BUTTON3, + ELM_NAVIGATIONBAR_EX_MAX + } Elm_Navi_ex_Button_Type; + typedef struct _Elm_Navigationbar_ex_Item Elm_Navigationbar_ex_Item; + + EINA_DEPRECATED EAPI Evas_Object *elm_navigationbar_ex_add(Evas_Object *parent); + EINA_DEPRECATED EAPI Elm_Navigationbar_ex_Item *elm_navigationbar_ex_item_push(Evas_Object *obj, Evas_Object *content, const char *item_style); + EINA_DEPRECATED EAPI void elm_navigationbar_ex_item_pop(Evas_Object *obj); + EINA_DEPRECATED EAPI void elm_navigationbar_ex_item_promote(Elm_Navigationbar_ex_Item* item); + EINA_DEPRECATED EAPI void elm_navigationbar_ex_to_item_pop(Elm_Navigationbar_ex_Item* item); + EINA_DEPRECATED EAPI void elm_navigationbar_ex_item_title_label_set(Elm_Navigationbar_ex_Item *item, const char *title); + EINA_DEPRECATED EAPI const char *elm_navigationbar_ex_item_title_label_get(Elm_Navigationbar_ex_Item* item); + EINA_DEPRECATED EAPI Elm_Navigationbar_ex_Item *elm_navigationbar_ex_item_top_get(const Evas_Object *obj); + EINA_DEPRECATED EAPI Elm_Navigationbar_ex_Item *elm_navigationbar_ex_item_bottom_get(const Evas_Object *obj); + EINA_DEPRECATED EAPI void elm_navigationbar_ex_item_title_button_set(Elm_Navigationbar_ex_Item* item, char *btn_label, Evas_Object *icon, int button_type, Evas_Smart_Cb func, const void *data); + EINA_DEPRECATED EAPI Evas_Object *elm_navigationbar_ex_item_title_button_get(Elm_Navigationbar_ex_Item* item, int button_type); + EINA_DEPRECATED EAPI void elm_navigationbar_ex_item_title_object_set(Elm_Navigationbar_ex_Item* item, Evas_Object *title_obj); + EINA_DEPRECATED EAPI Evas_Object *elm_navigationbar_ex_item_title_object_unset(Elm_Navigationbar_ex_Item* item); + EINA_DEPRECATED EAPI void elm_navigationbar_ex_item_title_hidden_set(Elm_Navigationbar_ex_Item* item, Eina_Bool hidden); + EINA_DEPRECATED EAPI Evas_Object *elm_navigationbar_ex_item_title_object_get(Elm_Navigationbar_ex_Item* item); + EINA_DEPRECATED EAPI const char *elm_navigationbar_ex_item_subtitle_label_get(Elm_Navigationbar_ex_Item* item); + EINA_DEPRECATED EAPI void elm_navigationbar_ex_item_subtitle_label_set( Elm_Navigationbar_ex_Item* item, const char *subtitle); + EINA_DEPRECATED EAPI void elm_navigationbar_ex_item_style_set(Elm_Navigationbar_ex_Item* item, const char* item_style); + EINA_DEPRECATED EAPI const char *elm_navigationbar_ex_item_style_get(Elm_Navigationbar_ex_Item* item); + EINA_DEPRECATED EAPI Evas_Object *elm_navigationbar_ex_item_content_unset(Elm_Navigationbar_ex_Item* item); + EINA_DEPRECATED EAPI Evas_Object *elm_navigationbar_ex_item_content_get(Elm_Navigationbar_ex_Item* item); + EINA_DEPRECATED EAPI void elm_navigationbar_ex_delete_on_pop_set(Evas_Object *obj, Eina_Bool del_on_pop); + EINA_DEPRECATED EAPI Evas_Object *elm_navigationbar_ex_item_icon_get(Elm_Navigationbar_ex_Item* item); + EINA_DEPRECATED EAPI void elm_navigationbar_ex_item_icon_set(Elm_Navigationbar_ex_Item* item, Evas_Object *icon); + EINA_DEPRECATED EAPI Evas_Object *elm_navigationbar_ex_item_title_button_unset(Elm_Navigationbar_ex_Item* item, int button_type); + EINA_DEPRECATED EAPI void elm_navigationbar_ex_animation_disable_set(Evas_Object *obj, Eina_Bool disable); + EINA_DEPRECATED EAPI void elm_navigationbar_ex_title_object_visible_set(Elm_Navigationbar_ex_Item* item, Eina_Bool visible); + EINA_DEPRECATED Eina_Bool elm_navigationbar_ex_title_object_visible_get(Elm_Navigationbar_ex_Item* item); + /** * @defgroup Naviframe Naviframe * @ingroup Elementary @@ -29246,16 +28958,6 @@ extern "C" { * @} */ - /** - * @defgroup Controlbar Controlbar - * @ingroup Elementary - * @addtogroup Controlbar - * @{ - * - * This is a Controlbar. It can contain label and icon objects. - * In edit mode, you can change the location of items. - */ - /* Control Bar */ #define CONTROLBAR_SYSTEM_ICON_ALBUMS "controlbar_albums" #define CONTROLBAR_SYSTEM_ICON_ARTISTS "controlbar_artists" @@ -29279,398 +28981,55 @@ extern "C" { } Elm_Controlbar_Mode_Type; typedef struct _Elm_Controlbar_Item Elm_Controlbar_Item; - /** - * Add a new controlbar object - * - * @param parent The parent object - * @return The new object or NULL if it cannot be created - */ EAPI Evas_Object *elm_controlbar_add(Evas_Object *parent); - /** - * Append new tab item - * - * @param obj The controlbar object - * @param icon_path The icon path of item - * @param label The label of item - * @param view The view of item - * @return The item of controlbar - */ EAPI Elm_Controlbar_Item *elm_controlbar_tab_item_append(Evas_Object *obj, const char *icon_path, const char *label, Evas_Object *view); - /** - * Prepend new tab item - * - * @param obj The controlbar object - * @param icon_path The icon path of item - * @param label The label of item - * @param view The view of item - * @return The item of controlbar - */ EAPI Elm_Controlbar_Item *elm_controlbar_tab_item_prepend(Evas_Object *obj, const char *icon_path, const char *label, Evas_Object *view); - /** - * Insert new tab item before given item - * - * @param obj The controlbar object - * @param before The given item - * @param icon_path The icon path of item - * @param label The label of item - * @param view The view of item - * @return The item of controlbar - */ EAPI Elm_Controlbar_Item *elm_controlbar_tab_item_insert_before(Evas_Object *obj, Elm_Controlbar_Item *before, const char *icon_path, const char *label, Evas_Object *view); - /** - * Insert new tab item after given item - * - * @param obj The controlbar object - * @param after The given item - * @param icon_path The icon path of item - * @param label The label of item - * @param view The view of item - * @return The item of controlbar - */ EAPI Elm_Controlbar_Item *elm_controlbar_tab_item_insert_after(Evas_Object *obj, Elm_Controlbar_Item *after, const char *icon_path, const char *label, Evas_Object *view); - /** - * Append new tool item - * - * @param obj The controlbar object - * @param icon_path The icon path of item - * @param label The label of item - * @param func Callback function of item - * @param data The data of callback function - * @return The item of controlbar - */ EAPI Elm_Controlbar_Item *elm_controlbar_tool_item_append(Evas_Object *obj, const char *icon_path, const char *label, void (*func) (void *data, Evas_Object *obj, void *event_info), void *data); - /** - * Prepend new tool item - * - * @param obj The controlbar object - * @param icon_path The icon path of item - * @param label The label of item - * @param func Callback function of item - * @param data The data of callback function - * @return The item of controlbar - */ EAPI Elm_Controlbar_Item *elm_controlbar_tool_item_prepend(Evas_Object *obj, const char *icon_path, const char *label, void (*func) (void *data, Evas_Object *obj, void *event_info), void *data); - /** - * Insert new tool item before given item - * - * @param obj The controlbar object - * @param before The given item - * @param icon_path The icon path of item - * @param label The label of item - * @param func Callback function of item - * @param data The data of callback function - * @return The item of controlbar - */ EAPI Elm_Controlbar_Item *elm_controlbar_tool_item_insert_before(Evas_Object *obj, Elm_Controlbar_Item *before, const char *icon_path, const char *label, void (*func) (void *data, Evas_Object *obj, void *event_info), void *data); - /** - * Insert new tool item after given item - * - * @param obj The controlbar object - * @param after The given item - * @param icon_path The icon path of item - * @param label The label of item - * @param func Callback function of item - * @param data The data of callback function - * @return The item of controlbar - */ EAPI Elm_Controlbar_Item *elm_controlbar_tool_item_insert_after(Evas_Object *obj, Elm_Controlbar_Item *after, const char *icon_path, const char *label, void (*func) (void *data, Evas_Object *obj, void *event_info), void *data); - /** - * Append new object item - * - * @param obj The controlbar object - * @param obj_item The object of item - * @param sel The number of sel occupied - * @return The item of controlbar - */ EAPI Elm_Controlbar_Item *elm_controlbar_object_item_append(Evas_Object *obj, Evas_Object *obj_item, const int sel); - /** - * Prepend new object item - * - * @param obj The controlbar object - * @param obj_item The object of item - * @param sel The number of sel occupied - * @return The item of controlbar - */ EAPI Elm_Controlbar_Item *elm_controlbar_object_item_prepend(Evas_Object *obj, Evas_Object *obj_item, const int sel); - /** - * Insert new object item before given item - * - * @param obj The controlbar object - * @param before The given item - * @param obj_item The object of item - * @param sel The number of sel occupied - * @return The item of controlbar - */ EAPI Elm_Controlbar_Item *elm_controlbar_object_item_insert_before(Evas_Object *obj, Elm_Controlbar_Item *before, Evas_Object *obj_item, const int sel); - /** - * Insert new object item after given item - * - * @param obj The controlbar object - * @param after The given item - * @param obj_item The object of item - * @param sel The number of sel occupied - * @return The item of controlbar - */ EAPI Elm_Controlbar_Item *elm_controlbar_object_item_insert_after(Evas_Object *obj, Elm_Controlbar_Item *after, Evas_Object *obj_item, const int sel); - /** - * Get the object of the object item - * - * @param it The item of controlbar - * @return The object of the object item - */ EAPI Evas_Object *elm_controlbar_object_item_object_get(const Elm_Controlbar_Item *it); - /** - * Delete item from controlbar - * - * @param it The item of controlbar - */ EAPI void elm_controlbar_item_del(Elm_Controlbar_Item *it); - /** - * Select item in controlbar - * - * @param it The item of controlbar - */ EAPI void elm_controlbar_item_select(Elm_Controlbar_Item *it); - /** - * Set the visible status of item in bar - * - * @param it The item of controlbar - * @param bar EINA_TRUE or EINA_FALSE - */ EAPI void elm_controlbar_item_visible_set(Elm_Controlbar_Item *it, Eina_Bool bar); - /** - * Get the result which or not item is visible in bar - * - * @param it The item of controlbar - * @return EINA_TRUE or EINA_FALSE - */ EAPI Eina_Bool elm_controlbar_item_visible_get(const Elm_Controlbar_Item * it); - /** - * Set item disable - * - * @param it The item of controlbar - * @param bar EINA_TRUE or EINA_FALSE - */ EAPI void elm_controlbar_item_disabled_set(Elm_Controlbar_Item * it, Eina_Bool disabled); - /** - * Get item disable - * - * @param it The item of controlbar - * @return EINA_TRUE or EINA_FALSE - */ EAPI Eina_Bool elm_controlbar_item_disabled_get(const Elm_Controlbar_Item * it); - /** - * Set the icon of item - * - * @param it The item of controlbar - * @param icon_path The icon path of the item - * @return The icon object - */ EAPI void elm_controlbar_item_icon_set(Elm_Controlbar_Item *it, const char *icon_path); - /** - * Get the icon of item - * - * @param it The item of controlbar - * @return The icon object - */ EAPI Evas_Object *elm_controlbar_item_icon_get(const Elm_Controlbar_Item *it); - /** - * Set the label of item - * - * @param it The item of controlbar - * @param label The label of item - */ EAPI void elm_controlbar_item_label_set(Elm_Controlbar_Item *it, const char *label); - /** - * Get the label of item - * - * @param it The item of controlbar - * @return The label of item - */ EAPI const char *elm_controlbar_item_label_get(const Elm_Controlbar_Item *it); - /** - * Get the selected item - * - * @param obj The controlbar object - * @return The item of controlbar - */ EAPI Elm_Controlbar_Item *elm_controlbar_selected_item_get(const Evas_Object *obj); - /** - * Get the first item - * - * @param obj The controlbar object - * @return The item of controlbar - */ EAPI Elm_Controlbar_Item *elm_controlbar_first_item_get(const Evas_Object *obj); - /** - * Get the last item - * - * @param obj The controlbar object - * @return The item of controlbar - */ EAPI Elm_Controlbar_Item *elm_controlbar_last_item_get(const Evas_Object *obj); - /** - * Get the items - * - * @param obj The controlbar object - * @return The list of the items - */ EAPI const Eina_List *elm_controlbar_items_get(const Evas_Object *obj); - /** - * Get the previous item - * - * @param it The item of controlbar - * @return The previous item of the parameter item - */ EAPI Elm_Controlbar_Item *elm_controlbar_item_prev(Elm_Controlbar_Item *it); - /** - * Get the next item - * - * @param obj The controlbar object - * @return The next item of the parameter item - */ EAPI Elm_Controlbar_Item *elm_controlbar_item_next(Elm_Controlbar_Item *it); - /** - * Set the view of the item - * - * @param it The item of controlbar - * @param view The view for the item - */ EAPI void elm_controlbar_item_view_set(Elm_Controlbar_Item *it, Evas_Object * view); - /** - * Get the view of the item - * - * @param it The item of controlbar - * @return The view for the item - */ EAPI Evas_Object *elm_controlbar_item_view_get(const Elm_Controlbar_Item *it); - /** - * Unset the view of the item - * - * @param it The item of controlbar - * @return The view for the item - */ EAPI Evas_Object *elm_controlbar_item_view_unset(Elm_Controlbar_Item *it); - /** - * Set the vertical mode of the controlbar - * - * @param obj The object of the controlbar - * @param vertical The vertical mode of the controlbar (TRUE = vertical, FALSE = horizontal) - */ EAPI Evas_Object *elm_controlbar_item_button_get(const Elm_Controlbar_Item *it); - /** - * Set the mode of the controlbar - * - * @param obj The object of the controlbar - * @param mode The mode of the controlbar - */ EAPI void elm_controlbar_mode_set(Evas_Object *obj, int mode); - /** - * Set the alpha of the controlbar - * - * @param obj The object of the controlbar - * @param alpha The alpha value of the controlbar (0-100) - */ EAPI void elm_controlbar_alpha_set(Evas_Object *obj, int alpha); - /** - * Set auto-align mode of the controlbar(It's not prepared yet) - * If you set the auto-align and add items more than 5, - * the "more" item will be made and the items more than 5 will be unvisible. - * - * @param obj The object of the controlbar - * @param auto_align The dicision that the controlbar use the auto-align - */ EAPI void elm_controlbar_item_auto_align_set(Evas_Object *obj, Eina_Bool auto_align); - /** - * Get the button object of the item - * - * @param it The item of controlbar - * @return button object of the item - */ EAPI void elm_controlbar_vertical_set(Evas_Object *obj, Eina_Bool vertical); - /** - * @} - */ - - - /** - * @defgroup Searchbar Searchbar - * @addtogroup TickerNoti - * @{ - * @ingroup Elementary - * - * This is Searchbar. - * It can contain a simple entry and button object. - */ - /** - * Add a new searchbar to the parent - * @param parent The parent object - * @return The new object or NULL if it cannot be created - */ + /* SearchBar */ EAPI Evas_Object *elm_searchbar_add(Evas_Object *parent); - /** - * set the text of entry - * - * @param obj The searchbar object - * @return void - */ EAPI void elm_searchbar_text_set(Evas_Object *obj, const char *entry); - /** - * get the text of entry - * - * @param obj The searchbar object - * @return string pointer of entry - */ EAPI const char *elm_searchbar_text_get(Evas_Object *obj); - /** - * get the pointer of entry - * - * @param obj The searchbar object - * @return the entry object - */ EAPI Evas_Object *elm_searchbar_entry_get(Evas_Object *obj); - /** - * get the pointer of editfield - * - * @param obj The searchbar object - * @return the editfield object - */ EAPI Evas_Object *elm_searchbar_editfield_get(Evas_Object *obj); - /** - * set the cancel button animation flag - * - * @param obj The searchbar object - * @param cancel_btn_ani_flag The flag of animating cancen button or not - * @return void - */ EAPI void elm_searchbar_cancel_button_animation_set(Evas_Object *obj, Eina_Bool cancel_btn_ani_flag); - /** - * set the cancel button show mode - * - * @param obj The searchbar object - * @param visible The flag of cancen button show or not - * @return void - */ EAPI void elm_searchbar_cancel_button_set(Evas_Object *obj, Eina_Bool visible); - /** - * clear searchbar status - * - * @param obj The searchbar object - * @return void - */ EAPI void elm_searchbar_clear(Evas_Object *obj); - /** - * set the searchbar boundary rect mode(with bg rect) set - * - * @param obj The searchbar object - * @param boundary The present flag of boundary rect or not - * @return void - */ EAPI void elm_searchbar_boundary_rect_set(Evas_Object *obj, Eina_Bool boundary); - /** - * @} - */ EAPI Evas_Object *elm_page_control_add(Evas_Object *parent); EAPI void elm_page_control_page_count_set(Evas_Object *obj, unsigned int page_count); @@ -29684,30 +29043,7 @@ extern "C" { EAPI void elm_nocontents_custom_set(const Evas_Object *obj, Evas_Object *custom); EAPI Evas_Object *elm_nocontents_custom_get(const Evas_Object *obj); - /** - * @defgroup TickerNoti TickerNoti - * @addtogroup TickerNoti - * @{ - * - * This is a notification widget which can be used to display some short information. - * - * Parts which can be used with elm_object_text_part_set() and - * elm_object_text_part_get(): - * - * @li NULL/"default" - Operates on tickernoti content-text - * - * Parts which can be used with elm_object_content_part_set(), - * elm_object_content_part_get() and elm_object_content_part_unset(): - * - * @li "icon" - Operates on tickernoti's icon - * @li "button" - Operates on tickernoti's button - * - * smart callbacks called: - * @li "clicked" - emitted when tickernoti is clicked, except at the - * swallow/button region, if any. - * @li "hide" - emitted when the tickernoti is completely hidden. In case of - * any hide animation, this signal is emitted after the animation. - */ + /* TickerNoti */ typedef enum { ELM_TICKERNOTI_ORIENT_TOP = 0, @@ -29715,244 +29051,68 @@ extern "C" { ELM_TICKERNOTI_ORIENT_LAST } Elm_Tickernoti_Orient; - /** - * Add a tickernoti object to @p parent - * - * @param parent The parent object - * - * @return The tickernoti object, or NULL upon failure - */ EAPI Evas_Object *elm_tickernoti_add (Evas_Object *parent); - /** - * Set the orientation of the tickernoti object - * - * @param obj The tickernoti object - * @param orient The orientation of tickernoti object - */ EAPI void elm_tickernoti_orient_set (Evas_Object *obj, Elm_Tickernoti_Orient orient) EINA_ARG_NONNULL(1); - /** - * Get the orientation of the tickernoti object - * - * @param obj The tickernotil object - * @return The orientation of tickernotil object - */ EAPI Elm_Tickernoti_Orient elm_tickernoti_orient_get (const Evas_Object *obj) EINA_ARG_NONNULL(1); - /** - * Get the rotation of tickernoti object - * - * @param obj The tickernotil object - * @return The rotation angle - */ EAPI int elm_tickernoti_rotation_get (const Evas_Object *obj) EINA_ARG_NONNULL(1); - /** - * Set the rotation angle for the tickernoti object - * - * @param obj The tickernoti object - * @param angle The rotation angle(in degree) will be used on the tickernoti object - */ EAPI void elm_tickernoti_rotation_set (Evas_Object *obj, int angle) EINA_ARG_NONNULL(1); - /** - * Get the view window(elm_win) on the tickernoti object - * - * @param obj The tickernotil object - * @return internal view window(elm_win) object - */ EAPI Evas_Object *elm_tickernoti_win_get (const Evas_Object *obj) EINA_ARG_NONNULL(1); /* #### Below APIs and data structures are going to be deprecated, announcment will be made soon ####*/ - /** - * @deprecated - */ typedef enum { ELM_TICKERNOTI_DEFAULT, ELM_TICKERNOTI_DETAILVIEW } Elm_Tickernoti_Mode; - /** - * Set the detail label on the tickernoti object + EAPI void elm_tickernoti_detailview_label_set (Evas_Object *obj, const char *label) EINA_ARG_NONNULL(1); + EAPI const char *elm_tickernoti_detailview_label_get (const Evas_Object *obj)EINA_ARG_NONNULL(1); + EAPI void elm_tickernoti_detailview_button_set (Evas_Object *obj, Evas_Object *button) EINA_ARG_NONNULL(2); + EAPI Evas_Object *elm_tickernoti_detailview_button_get (const Evas_Object *obj) EINA_ARG_NONNULL(1); + EAPI void elm_tickernoti_detailview_icon_set (Evas_Object *obj, Evas_Object *icon) EINA_ARG_NONNULL(1); + EAPI Evas_Object *elm_tickernoti_detailview_icon_get (const Evas_Object *obj) EINA_ARG_NONNULL(1); + EAPI Evas_Object *elm_tickernoti_detailview_get (const Evas_Object *obj) EINA_ARG_NONNULL(1); + EAPI void elm_tickernoti_mode_set (Evas_Object *obj, Elm_Tickernoti_Mode mode) EINA_ARG_NONNULL(1); + EAPI Elm_Tickernoti_Mode elm_tickernoti_mode_get (const Evas_Object *obj) EINA_ARG_NONNULL(1); + EAPI void elm_tickernoti_orientation_set (Evas_Object *obj, Elm_Tickernoti_Orient orient) EINA_ARG_NONNULL(1); + EAPI Elm_Tickernoti_Orient elm_tickernoti_orientation_get (const Evas_Object *obj) EINA_ARG_NONNULL(1); + EAPI void elm_tickernoti_label_set (Evas_Object *obj, const char *label) EINA_ARG_NONNULL(1); + EAPI const char *elm_tickernoti_label_get (const Evas_Object *obj) EINA_ARG_NONNULL(1); + EAPI void elm_tickernoti_icon_set (Evas_Object *obj, Evas_Object *icon) EINA_ARG_NONNULL(1); + EAPI Evas_Object *elm_tickernoti_icon_get (const Evas_Object *obj) EINA_ARG_NONNULL(1); + EAPI void elm_tickernoti_button_set (Evas_Object *obj, Evas_Object *button) EINA_ARG_NONNULL(1); + EAPI Evas_Object *elm_tickernoti_button_get (const Evas_Object *obj) EINA_ARG_NONNULL(1); + /* ############################################################################### */ + /* + * Parts which can be used with elm_object_text_part_set() and + * elm_object_text_part_get(): * - * @param obj The tickernoti object - * @param label The label will be used on the tickernoti object - * @deprecated use elm_object_text_set() instead - */ - WILL_DEPRECATE EAPI void elm_tickernoti_detailview_label_set (Evas_Object *obj, const char *label) EINA_ARG_NONNULL(1); - /** - * Get the detail label used on the tickernoti object - * - * @param obj The tickernotil object - * @return The string inside the label - * @deprecated use elm_object_text_get() instead - */ - WILL_DEPRECATE EAPI const char *elm_tickernoti_detailview_label_get (const Evas_Object *obj)EINA_ARG_NONNULL(1); - /** - * Set the button object used on the tickernoti object - * - * @param obj The tickernotil object - * @param button The button object will be used on the tickernoti object - * @deprecated use elm_object_content_part_set() instead with "icon" as part name - */ - WILL_DEPRECATE EAPI void elm_tickernoti_detailview_button_set (Evas_Object *obj, Evas_Object *button) EINA_ARG_NONNULL(2); - /** - * Get the button object used on the tickernoti object - * - * @param obj The tickernotil object - * @return The button object inside the tickernoti - * @deprecated use elm_object_content_part_get() instead with "button" as part name - */ - WILL_DEPRECATE EAPI Evas_Object *elm_tickernoti_detailview_button_get (const Evas_Object *obj) EINA_ARG_NONNULL(1); - /** - * Set the detail icon object used on the tickernoti object - * - * @param obj The tickernotil object - * @param icon The icon object will be used on the tickernoti object - * @deprecated use elm_object_content_part_set() instead with "icon" as part name - */ - WILL_DEPRECATE EAPI void elm_tickernoti_detailview_icon_set (Evas_Object *obj, Evas_Object *icon) EINA_ARG_NONNULL(1); - /** - * Get the detail icon object used on the tickernoti object - * - * @param obj The tickernotil object - * @return The icon object inside the tickernoti - * @deprecated use elm_object_content_part_get() instead with "icon" as part name - */ - WILL_DEPRECATE EAPI Evas_Object *elm_tickernoti_detailview_icon_get (const Evas_Object *obj) EINA_ARG_NONNULL(1); - /** - * Get the view mode on the tickernoti object - * - * @param obj The tickernotil object - * @return The view mode - * @deprecated removed as now styles are used instead - */ - WILL_DEPRECATE EAPI Evas_Object *elm_tickernoti_detailview_get (const Evas_Object *obj) EINA_ARG_NONNULL(1); - /** - * Set the view mode used on the tickernoti object - * - * @param obj The tickernotil object - * @param mode The view mode will be used on the tickernoti object - * @deprecated removed as now styles are used instead - */ - WILL_DEPRECATE EAPI void elm_tickernoti_mode_set (Evas_Object *obj, Elm_Tickernoti_Mode mode) EINA_ARG_NONNULL(1); - /** - * Get the detail view window(elm_win) on the tickernoti object - * - * @param obj The tickernotil object - * @return detail view window(elm_win) object - */ - WILL_DEPRECATE EAPI Elm_Tickernoti_Mode elm_tickernoti_mode_get (const Evas_Object *obj) EINA_ARG_NONNULL(1); - /** - * Set the orientation of the tickernoti object - * - * @param obj The tickernoti object - * @param orient The orientation of tickernoti object - * @deprecated use elm_tickernoti_orient_set() instead - */ - WILL_DEPRECATE EAPI void elm_tickernoti_orientation_set (Evas_Object *obj, Elm_Tickernoti_Orient orient) EINA_ARG_NONNULL(1); - /** - * Get the orientation of the tickernoti object - * - * @param obj The tickernotil object - * @return The orientation of tickernotil object - * @deprecated use elm_tickernoti_orient_get() instead - */ - WILL_DEPRECATE EAPI Elm_Tickernoti_Orient elm_tickernoti_orientation_get (const Evas_Object *obj) EINA_ARG_NONNULL(1); - /** - * Set the label on the tickernoti object - * - * @param obj The tickernoti object - * @param label The label will be used on the tickernoti object - * @deprecated use elm_object_text_get() - */ - WILL_DEPRECATE EAPI void elm_tickernoti_label_set (Evas_Object *obj, const char *label) EINA_ARG_NONNULL(1); - /** - * Get the label used on the tickernoti object - * - * @param obj The tickernotil object - * @return The string inside the label - * @deprecated use elm_object_text_get() instead - */ - WILL_DEPRECATE EAPI const char *elm_tickernoti_label_get (const Evas_Object *obj) EINA_ARG_NONNULL(1); - /** - * Set the icon object of the tickernoti object - * - * @param obj The tickernotil object - * @param icon The icon object will be used on the tickernoti object - * @deprecated use elm_object_content_part_set() instead with "icon" as part name - */ - WILL_DEPRECATE EAPI void elm_tickernoti_icon_set (Evas_Object *obj, Evas_Object *icon) EINA_ARG_NONNULL(1); - /** - * Get the icon object of the tickernoti object + * @li NULL/"default" - Operates on tickernoti content-text * - * @param obj The tickernotil object - * @return The icon object inside the tickernoti - * @deprecated use elm_object_content_part_get() instead with "icon" as part name - */ - WILL_DEPRECATE EAPI Evas_Object *elm_tickernoti_icon_get (const Evas_Object *obj) EINA_ARG_NONNULL(1); - /** - * Set the action button object used on the tickernoti object + * Parts which can be used with elm_object_content_part_set(), + * elm_object_content_part_get() and elm_object_content_part_unset(): * - * @param obj The tickernotil object - * @param button The button object will be used on the tickernoti object - * @deprecated use elm_object_content_part_set() instead with "button" as part name - */ - WILL_DEPRECATE EAPI void elm_tickernoti_button_set (Evas_Object *obj, Evas_Object *button) EINA_ARG_NONNULL(1); - /** - * Get the action button object used on the tickernoti object + * @li "icon" - Operates on tickernoti's icon + * @li "button" - Operates on tickernoti's button * - * @param obj The tickernotil object - * @return The button object inside the tickernoti - * @deprecated use elm_object_content_part_get() instead with "button" as part name - */ - WILL_DEPRECATE EAPI Evas_Object *elm_tickernoti_button_get (const Evas_Object *obj) EINA_ARG_NONNULL(1); - /** - * @} + * smart callbacks called: + * @li "clicked" - emitted when tickernoti is clicked, except at the + * swallow/button region, if any. + * @li "hide" - emitted when the tickernoti is completely hidden. In case of + * any hide animation, this signal is emitted after the animation. */ - /** - * @defgroup Colorpalette Colorpalette - * @ingroup Elementary - * @addtogroup Colorpalette - * @{ - * - * Using colorpalette, you can select a color by clicking - * a color rectangle on the colorpalette. - * - * Smart callbacks that you can add are: - * - * clicked - This signal is sent when a color rectangle is clicked. - */ + /* colorpalette */ typedef struct _Colorpalette_Color Elm_Colorpalette_Color; + struct _Colorpalette_Color { unsigned int r, g, b; }; - /** - * Add a new colorpalette to the parent. - * - * @param parent The parent object - * @return The new object or NULL if it cannot be created - * - * @ingroup Colorpalette - */ EAPI Evas_Object *elm_colorpalette_add(Evas_Object *parent); - /** - * Set colors to the colorpalette. - * - * @param obj Colorpalette object - * @param color_num number of the colors on the colorpalette - * @param color Color lists - */ EAPI void elm_colorpalette_color_set(Evas_Object *obj, int color_num, Elm_Colorpalette_Color *color); - /** - * Set row/column value for the colorpalette. - * - * @param obj Colorpalette object - * @param row row value for the colorpalette - * @param col column value for the colorpalette - */ EAPI void elm_colorpalette_row_column_set(Evas_Object *obj, int row, int col); - - /** - * @} + /* smart callbacks called: + * "clicked" - when image clicked */ /* editfield */ @@ -29977,281 +29137,89 @@ extern "C" { */ - /** - * @defgroup Multibuttonenetry Multibuttonenetry - * - * @image html img/widget/flipselector/preview-00.png - * @image latex img/widget/flipselector/preview-00.eps - * - * A Multibuttonentry is a widget to allow a user to insert a text button. - * the text button is inserted by pressing the "return" key. If there is no space in the current row, - * the new button is entered in the next row. If the button is pressed, it will become focused. - * The focus can be removed by pressing the "backspace" key. - * when items are added over 1 lines, if Multibuttonentry lost focus, it becase shrink mode ( made it 1 line) - * - * Smart callbacks one can register to: - * - @c "item,selected" - when item is selected . it can be called by backspace key. - * - @c "item,added" - when a new multibuttonentry item is added. - * - @c "item,deleted" -when a multibuttonentry item is deleted. - * - @c "item,clicked" - selected item of multibuttonentry is clicked. - * - @c "clicked" - when multibuttonentry is clicked. - * - @c "focused" - when multibuttonentry is focused. - * - @c "unfocused" - when multibuttonentry is unfocused. - * - @c "expanded" - when multibuttonentry is expanded . - * - @c "shrank" - when multibuttonentry is shrank. - * - @c "shrank,state,changed" - when shrink mode state of multibuttonentry is changed. - * - * Here is an example on its usage: - * @li @ref multibuttonentry_example - */ - /** - * @addtogroup Multibuttonentry - * @{ - */ + /* Sliding Drawer */ + typedef enum _Elm_SlidingDrawer_Pos + { + ELM_SLIDINGDRAWER_BOTTOM, + ELM_SLIDINGDRAWER_LEFT, + ELM_SLIDINGDRAWER_RIGHT, + ELM_SLIDINGDRAWER_TOP + } Elm_SlidingDrawer_Pos; + + typedef struct _Elm_SlidingDrawer_Drag_Value + { + double x, y; + } Elm_SlidingDrawer_Drag_Value; + + EINA_DEPRECATED EAPI Evas_Object *elm_slidingdrawer_add(Evas_Object *parent); + EINA_DEPRECATED EAPI void elm_slidingdrawer_content_set (Evas_Object *obj, Evas_Object *content); + EINA_DEPRECATED EAPI Evas_Object *elm_slidingdrawer_content_unset(Evas_Object *obj); + EINA_DEPRECATED EAPI void elm_slidingdrawer_pos_set(Evas_Object *obj, Elm_SlidingDrawer_Pos pos); + EINA_DEPRECATED EAPI void elm_slidingdrawer_max_drag_value_set(Evas_Object *obj, double dw, double dh); + EINA_DEPRECATED EAPI void elm_slidingdrawer_drag_value_set(Evas_Object *obj, double dx, double dy); + /* multibuttonentry */ typedef struct _Multibuttonentry_Item Elm_Multibuttonentry_Item; typedef Eina_Bool (*Elm_Multibuttonentry_Item_Verify_Callback) (Evas_Object *obj, const char *item_label, void *item_data, void *data); - - /** - * @brief Add a new multibuttonentry to the parent - * - * @param parent The parent object - * @return The new object or NULL if it cannot be created - */ EAPI Evas_Object *elm_multibuttonentry_add(Evas_Object *parent); - /** - * Get the label - * - * @param obj The multibuttonentry object - * @return The label, or NULL if none - */ EAPI const char *elm_multibuttonentry_label_get(const Evas_Object *obj); - /** - * Set the label - * - * @param obj The multibuttonentry object - * @param label The text label string - */ EAPI void elm_multibuttonentry_label_set(Evas_Object *obj, const char *label); - /** - * Get the entry of the multibuttonentry object - * - * @param obj The multibuttonentry object - * @return The entry object, or NULL if none - */ EAPI Evas_Object *elm_multibuttonentry_entry_get(const Evas_Object *obj); - /** - * Get the guide text - * - * @param obj The multibuttonentry object - * @return The guide text, or NULL if none - */ EAPI const char * elm_multibuttonentry_guide_text_get(const Evas_Object *obj); - /** - * Set the guide text - * - * @param obj The multibuttonentry object - * @param label The guide text string - */ EAPI void elm_multibuttonentry_guide_text_set(Evas_Object *obj, const char *guidetext); - /** - * Get the value of shrink_mode state. - * - * @param obj The multibuttonentry object - * @param the value of shrink mode state. - */ EAPI int elm_multibuttonentry_contracted_state_get(const Evas_Object *obj); - /** - * Set/Unset the multibuttonentry to shrink mode state of single line - * - * @param obj The multibuttonentry object - * @param the value of shrink_mode state. set this to 1 to set the multibuttonentry to shrink state of single line. set this to 0 to unset the contracted state. - */ EAPI void elm_multibuttonentry_contracted_state_set(Evas_Object *obj, int contracted); - /** - * Prepend a new item to the multibuttonentry - * - * @param obj The multibuttonentry object - * @param label The label of new item - * @param data The ponter to the data to be attached - * @return A handle to the item added or NULL if not possible - */ EAPI Elm_Multibuttonentry_Item *elm_multibuttonentry_item_add_start(Evas_Object *obj, const char *label, void *data); - /** - * Append a new item to the multibuttonentry - * - * @param obj The multibuttonentry object - * @param label The label of new item - * @param data The ponter to the data to be attached - * @return A handle to the item added or NULL if not possible - */ EAPI Elm_Multibuttonentry_Item *elm_multibuttonentry_item_add_end(Evas_Object *obj, const char *label, void *data); - /** - * Add a new item to the multibuttonentry before the indicated object - * - * reference. - * @param obj The multibuttonentry object - * @param before The item before which to add it - * @param label The label of new item - * @param data The ponter to the data to be attached - * @return A handle to the item added or NULL if not possible - */ EAPI Elm_Multibuttonentry_Item *elm_multibuttonentry_item_add_before(Evas_Object *obj, const char *label, Elm_Multibuttonentry_Item *before, void *data); - /** - * Add a new item to the multibuttonentry after the indicated object - * - * @param obj The multibuttonentry object - * @param after The item after which to add it - * @param label The label of new item - * @param data The ponter to the data to be attached - * @return A handle to the item added or NULL if not possible - */ EAPI Elm_Multibuttonentry_Item *elm_multibuttonentry_item_add_after(Evas_Object *obj, const char *label, Elm_Multibuttonentry_Item *after, void *data); - /** - * Get a list of items in the multibuttonentry - * - * @param obj The multibuttonentry object - * @return The list of items, or NULL if none - */ EAPI const Eina_List *elm_multibuttonentry_items_get(const Evas_Object *obj); - /** - * Get the first item in the multibuttonentry - * - * @param obj The multibuttonentry object - * @return The first item, or NULL if none - */ EAPI Elm_Multibuttonentry_Item *elm_multibuttonentry_item_first_get(const Evas_Object *obj); - /** - * Get the last item in the multibuttonentry - * - * @param obj The multibuttonentry object - * @return The last item, or NULL if none - */ EAPI Elm_Multibuttonentry_Item *elm_multibuttonentry_item_last_get(const Evas_Object *obj); - /** - * Get the selected item in the multibuttonentry - * - * @param obj The multibuttonentry object - * @return The selected item, or NULL if none - */ EAPI Elm_Multibuttonentry_Item *elm_multibuttonentry_item_selected_get(const Evas_Object *obj); - /** - * Set the selected state of an item - * - * @param item The item - * @param selected if it's EINA_TRUE, select the item otherwise, unselect the item - */ EAPI void elm_multibuttonentry_item_selected_set(Elm_Multibuttonentry_Item *item); - /** - * unselect all of items. - * - * @param obj The multibuttonentry object - */ EAPI void elm_multibuttonentry_item_unselect_all(Evas_Object *obj); - /** - * Delete a given item - * - * @param item The item - */ EAPI void elm_multibuttonentry_item_del(Elm_Multibuttonentry_Item *item); - /** - * Remove all items in the multibuttonentry. - * - * @param obj The multibuttonentry object - */ EAPI void elm_multibuttonentry_items_del(Evas_Object *obj); - /** - * Get the label of a given item - * - * @param item The item - * @return The label of a given item, or NULL if none - */ EAPI const char *elm_multibuttonentry_item_label_get(const Elm_Multibuttonentry_Item *item); - /** - * Set the label of a given item - * - * @param item The item - * @param label The text label string - */ EAPI void elm_multibuttonentry_item_label_set(Elm_Multibuttonentry_Item *item, const char *str); - /** - * Get the previous item in the multibuttonentry - * - * @param item The item - * @return The item before the item @p item - */ EAPI Elm_Multibuttonentry_Item *elm_multibuttonentry_item_prev(Elm_Multibuttonentry_Item *item); - /** - * Get the next item in the multibuttonentry - * - * @param item The item - * @return The item after the item @p item - */ EAPI Elm_Multibuttonentry_Item *elm_multibuttonentry_item_next(Elm_Multibuttonentry_Item *item); - EAPI void *elm_multibuttonentry_item_data_get(const Elm_Multibuttonentry_Item *item); EAPI void elm_multibuttonentry_item_data_set(Elm_Multibuttonentry_Item *item, void *data); EAPI void elm_multibuttonentry_item_verify_callback_set(Evas_Object *obj, Elm_Multibuttonentry_Item_Verify_Callback func, void *data); - - /** - * @} - */ - - /** - * @defgroup Stackedicon Stackedicon - * @ingroup Elementary - * @addtogroup Stackedicon - * @{ - * - * This is a Stackedicon. - * smart callback called: - * "expanded" - This signal is emitted when a stackedicon is expanded. - * "clicked" - This signal is emitted when a stackedicon is clicked. - * - * available styles: + /* smart callback called: + * "selected" - This signal is emitted when the selected item of multibuttonentry is changed. + * "added" - This signal is emitted when a new multibuttonentry item is added. + * "deleted" - This signal is emitted when a multibuttonentry item is deleted. + * "expanded" - This signal is emitted when a multibuttonentry is expanded. + * "contracted" - This signal is emitted when a multibuttonentry is contracted. + * "contracted,state,changed" - This signal is emitted when the contracted state of multibuttonentry is changed. + * "item,selected" - This signal is emitted when the selected item of multibuttonentry is changed. + * "item,added" - This signal is emitted when a new multibuttonentry item is added. + * "item,deleted" - This signal is emitted when a multibuttonentry item is deleted. + * "item,clicked" - This signal is emitted when a multibuttonentry item is clicked. + * "clicked" - This signal is emitted when a multibuttonentry is clicked. + * "unfocused" - This signal is emitted when a multibuttonentry is unfocused. + */ + /* available styles: * default */ + + /* stackedicon */ typedef struct _Stackedicon_Item Elm_Stackedicon_Item; - /** - * Add a new stackedicon to the parent - * - * @param parent The parent object - * @return The new object or NULL if it cannot be created - */ EAPI Evas_Object *elm_stackedicon_add(Evas_Object *parent); - /** - * This appends a path to the stackedicon - * - * @param obj The stackedicon object - * @param path The image full path - * @return The new item or NULL if it cannot be created - */ EAPI Elm_Stackedicon_Item *elm_stackedicon_item_append(Evas_Object *obj, const char *path); - /** - * This prepends a path to the stackedicon - * - * @param obj The stackedicon object - * @param path The image full path - * @return The new item or NULL if it cannot be created - */ EAPI Elm_Stackedicon_Item *elm_stackedicon_item_prepend(Evas_Object *obj, const char *path); - /** - * This delete a path at the stackedicon - * - * @param Elm_Stackedicon_Item The delete item - */ EAPI void elm_stackedicon_item_del(Elm_Stackedicon_Item *it); - /** - * Get item list from the stackedicon - * - * @param obj The stackedicon object - * @return The item list or NULL if it cannot be created - */ EAPI Eina_List *elm_stackedicon_item_list_get(Evas_Object *obj); - /** - * @} + /* smart callback called: + * "expanded" - This signal is emitted when a stackedicon is expanded. + * "clicked" - This signal is emitted when a stackedicon is clicked. + */ + /* available styles: + * default */ - /* dialoguegroup */ typedef struct _Dialogue_Item Dialogue_Item; @@ -30304,131 +29272,24 @@ extern "C" { EAPI Eina_Bool elm_dayselector_check_state_get(Evas_Object *obj, Elm_DaySelector_Day day); EAPI void elm_dayselector_check_state_set(Evas_Object *obj, Elm_DaySelector_Day day, Eina_Bool checked); - /** - * @defgroup Imageslider Imageslider - * @ingroup Elementary - * @addtogroup Imageslider - * @{ - * - * By flicking images on the screen, - * you can see the images in specific path. - */ + /* Image Slider */ typedef struct _Imageslider_Item Elm_Imageslider_Item; typedef void (*Elm_Imageslider_Cb)(void *data, Evas_Object *obj, void *event_info); - - /** - * Add an Image Slider widget - * - * @param parent The parent object - * @return The new Image slider object or NULL if it cannot be created - */ EAPI Evas_Object *elm_imageslider_add(Evas_Object *parent) EINA_ARG_NONNULL(1); - /** - * Append an Image Slider item - * - * @param obj The Image Slider object - * @param photo_file photo file path - * @param func callback function - * @param data callback data - * @return The Image Slider item handle or NULL - */ EAPI Elm_Imageslider_Item *elm_imageslider_item_append(Evas_Object *obj, const char *photo_file, Elm_Imageslider_Cb func, void *data) EINA_ARG_NONNULL(1); - /** - * Insert an Image Slider item into the Image Slider Widget by using the given index. - * - * @param obj The Image Slider object - * @param photo_file photo file path - * @param func callback function - * @param index required position - * @param data callback data - * @return The Image Slider item handle or NULL - */ EAPI Elm_Imageslider_Item *elm_imageslider_item_append_relative(Evas_Object *obj, const char *photo_file, Elm_Imageslider_Cb func, unsigned int index, void *data) EINA_ARG_NONNULL(1); - /** - * Prepend Image Slider item - * - * @param obj The Image Slider object - * @param photo_file photo file path - * @param func callback function - * @param data callback data - * @return The imageslider item handle or NULL - */ EAPI Elm_Imageslider_Item *elm_imageslider_item_prepend(Evas_Object *obj, const char *photo_file, Elm_Imageslider_Cb func, void *data) EINA_ARG_NONNULL(1); - /** - * Delete the selected Image Slider item - * - * @param it The selected Image Slider item handle - */ EAPI void elm_imageslider_item_del(Elm_Imageslider_Item *it) EINA_ARG_NONNULL(1); - /** - * Get the selected Image Slider item - * - * @param obj The Image Slider object - * @return The selected Image Slider item or NULL - */ EAPI Elm_Imageslider_Item *elm_imageslider_selected_item_get(Evas_Object *obj) EINA_ARG_NONNULL(1); - /** - * Get whether an Image Slider item is selected or not - * - * @param it the selected Image Slider item - * @return EINA_TRUE or EINA_FALSE - */ EAPI Eina_Bool elm_imageslider_item_selected_get(Elm_Imageslider_Item *it) EINA_ARG_NONNULL(1); - /** - * Set the selected Image Slider item - * - * @param it The Imaga Slider item - */ EAPI void elm_imageslider_item_selected_set(Elm_Imageslider_Item *it) EINA_ARG_NONNULL(1); - /** - * Get the photo file path of given Image Slider item - * - * @param it The Image Slider item - * @return The photo file path or NULL; - */ EAPI const char *elm_imageslider_item_photo_file_get(Elm_Imageslider_Item *it) EINA_ARG_NONNULL(1); - /** - * Sets the photo file path of given Image Slider item - * - * @param it The Image Slider item - * @param photo_file The photo file path or NULL; - */ EAPI Elm_Imageslider_Item *elm_imageslider_item_prev(Elm_Imageslider_Item *it) EINA_ARG_NONNULL(1); - /** - * Get the previous Image Slider item - * - * @param it The Image Slider item - * @return The previous Image Slider item or NULL - */ EAPI Elm_Imageslider_Item *elm_imageslider_item_next(Elm_Imageslider_Item *it) EINA_ARG_NONNULL(1); - /** - * Get the next Image Slider item - * - * @param it The Image Slider item - * @return The next Image Slider item or NULL - */ EAPI void elm_imageslider_prev(Evas_Object *obj) EINA_ARG_NONNULL(1); - /** - * Move to the previous Image Slider item - * - * @param obj The Image Slider object - */ EAPI void elm_imageslider_next(Evas_Object *obj) EINA_ARG_NONNULL(1); - /** - * Move to the next Image Slider item - * - * @param obj The Image Slider object - */ EAPI void elm_imageslider_item_photo_file_set(Elm_Imageslider_Item *it, const char *photo_file) EINA_ARG_NONNULL(1,2); - /** - * Updates an Image Slider item - * - * @param it The Image Slider item - */ EAPI void elm_imageslider_item_update(Elm_Imageslider_Item *it) EINA_ARG_NONNULL(1); - /** - * @} - */ #ifdef __cplusplus } #endif diff --git a/src/lib/Makefile.am b/src/lib/Makefile.am index e3770d0..378ce41 100644 --- a/src/lib/Makefile.am +++ b/src/lib/Makefile.am @@ -49,7 +49,8 @@ elc_fileselector.c \ elc_fileselector_entry.c \ elc_hoversel.c \ elc_naviframe.c \ -elc_multibuttonentry.c \ +elc_navigationbar.c \ +elc_navigationbar_ex.c\ elc_player.c \ elc_scrolled_entry.c \ elm_access.c \ @@ -98,6 +99,7 @@ elm_mapbuf.c \ elm_map.c \ elm_menu.c \ elm_module.c \ +elm_multibuttonentry.c \ elm_nocontents.c \ elm_notify.c \ elm_pagecontrol.c \ @@ -109,13 +111,13 @@ elm_photocam.c \ elm_popup.c \ elm_progressbar.c \ elm_radio.c \ -elm_route.c \ elm_scroller.c \ elm_searchbar.c \ elm_segment_control.c \ elm_separator.c \ elm_slider.c \ elm_slideshow.c \ +elm_slidingdrawer.c \ elm_spinner.c \ elm_stackedicon.c \ elm_store.c \ @@ -140,8 +142,7 @@ els_pan.c \ els_pan.h \ els_scroller.c \ els_scroller.h \ -els_tooltip.c \ -elu_ews_wm.c +els_tooltip.c libelementary_la_CFLAGS = libelementary_la_LIBADD = \ diff --git a/src/lib/elc_ctxpopup.c b/src/lib/elc_ctxpopup.c index 9ee79c3..95e84df 100644 --- a/src/lib/elc_ctxpopup.c +++ b/src/lib/elc_ctxpopup.c @@ -12,6 +12,7 @@ struct _Elm_Ctxpopup_Item const char *label; Evas_Object *icon; Evas_Smart_Cb func; + Eina_Bool disabled:1; }; struct _Widget_Data @@ -80,21 +81,7 @@ static void _content_set_hook(Evas_Object *obj, static Evas_Object * _content_unset_hook(Evas_Object *obj, const char *item __UNUSED__); static Evas_Object * _content_get_hook(const Evas_Object *obj, - const char *part); -static void _item_text_set_hook(Elm_Object_Item *it, - const char *part, - const char *label); -static const char * _item_text_get_hook(const Elm_Object_Item *it, - const char *part); -static void _item_content_set_hook(Elm_Object_Item *it, - const char *part, - Evas_Object *content); -static Evas_Object * _item_content_get_hook(const Elm_Object_Item *it, - const char *part); -static void _item_disable_set_hook(Elm_Object_Item *it); -static void _item_signal_emit_hook(Elm_Object_Item *it, - const char *emission, - const char *source); + const char *item __UNUSED__); static void _bg_clicked_cb(void *data, Evas_Object *obj, const char *emission, const char *source); @@ -793,7 +780,7 @@ _theme_hook(Evas_Object *obj) if (item->label) edje_object_part_text_set(VIEW(item), "elm.text", item->label); - if (elm_widget_item_disabled_get(item)) + if (item->disabled) edje_object_signal_emit(VIEW(item), "elm,state,disabled", "elm"); /* @@ -906,106 +893,6 @@ _content_get_hook(const Evas_Object *obj, const char *part) } static void -_item_text_set_hook(Elm_Object_Item *it, - const char *part, - const char *label) -{ - ELM_OBJ_ITEM_CHECK_OR_RETURN(it); - - Widget_Data *wd; - Elm_Ctxpopup_Item *ctxpopup_it; - - if (part && strcmp(part, "default")) return; - - ctxpopup_it = (Elm_Ctxpopup_Item *) it; - - wd = elm_widget_data_get(WIDGET(ctxpopup_it)); - if (!wd) return; - - _item_label_set(ctxpopup_it, label); - wd->dir = ELM_CTXPOPUP_DIRECTION_UNKNOWN; - - if (wd->visible) - { - _scroller_size_reset(wd); - _sizing_eval(WIDGET(ctxpopup_it)); - } -} - -static const char * -_item_text_get_hook(const Elm_Object_Item *it, const char *part) -{ - ELM_OBJ_ITEM_CHECK_OR_RETURN(it, NULL); - Elm_Ctxpopup_Item *ctxpopup_it; - if (part && strcmp(part, "default")) return NULL; - ctxpopup_it = (Elm_Ctxpopup_Item *) it; - return ctxpopup_it->label; -} - -static void -_item_content_set_hook(Elm_Object_Item *it, - const char *part, - Evas_Object *content) -{ - ELM_OBJ_ITEM_CHECK_OR_RETURN(it); - Widget_Data *wd; - Elm_Ctxpopup_Item *ctxpopup_it; - - if (part && strcmp(part, "icon")) return; - - ctxpopup_it = (Elm_Ctxpopup_Item *) it; - - wd = elm_widget_data_get(WIDGET(ctxpopup_it)); - if (!wd) return; - - _item_icon_set(ctxpopup_it, content); - wd->dir = ELM_CTXPOPUP_DIRECTION_UNKNOWN; - - if (wd->visible) - { - _scroller_size_reset(wd); - _sizing_eval(WIDGET(ctxpopup_it)); - } -} - -static Evas_Object * -_item_content_get_hook(const Elm_Object_Item *it, const char *part) -{ - ELM_OBJ_ITEM_CHECK_OR_RETURN(it, NULL); - Elm_Ctxpopup_Item *ctxpopup_it; - if (part && strcmp(part, "icon")) return NULL; - ctxpopup_it = (Elm_Ctxpopup_Item *) it; - return ctxpopup_it->icon; -} - -static void -_item_disable_set_hook(Elm_Object_Item *it) -{ - ELM_OBJ_ITEM_CHECK_OR_RETURN(it); - - Widget_Data *wd; - Elm_Ctxpopup_Item *ctxpopup_it = (Elm_Ctxpopup_Item *) it; - - wd = elm_widget_data_get(WIDGET(ctxpopup_it)); - if (!wd) return; - - if (elm_widget_item_disabled_get(it)) - edje_object_signal_emit(VIEW(ctxpopup_it), "elm,state,disabled", "elm"); - else - edje_object_signal_emit(VIEW(ctxpopup_it), "elm,state,enabled", "elm"); -} - -static void -_item_signal_emit_hook(Elm_Object_Item *it, - const char *emission, - const char *source) -{ - ELM_OBJ_ITEM_CHECK_OR_RETURN(it); - Elm_Ctxpopup_Item *ctxpopup_it = (Elm_Ctxpopup_Item *) it; - edje_object_signal_emit(VIEW(ctxpopup_it), emission, source); -} - -static void _bg_clicked_cb(void *data, Evas_Object *obj __UNUSED__, const char *emission __UNUSED__, const char *source __UNUSED__) { @@ -1154,7 +1041,7 @@ _item_select_cb(void *data, Evas_Object *obj __UNUSED__, Elm_Ctxpopup_Item *item = data; if (!item) return; - if (elm_widget_item_disabled_get(item)) return; + if (item->disabled) return; if (item->func) item->func((void*) item->base.data, WIDGET(item), data); @@ -1337,25 +1224,57 @@ elm_ctxpopup_add(Evas_Object *parent) EAPI Evas_Object * elm_ctxpopup_item_icon_get(const Elm_Object_Item *it) { - return _item_content_get_hook(it, "icon"); + ELM_OBJ_ITEM_CHECK_OR_RETURN(it, NULL); + Elm_Ctxpopup_Item *ctxpopup_it = (Elm_Ctxpopup_Item *) it; + return ctxpopup_it->icon; } EAPI void elm_ctxpopup_item_icon_set(Elm_Object_Item *it, Evas_Object *icon) { - _item_content_set_hook(it, "icon", icon); + ELM_OBJ_ITEM_CHECK_OR_RETURN(it); + + Widget_Data *wd; + Elm_Ctxpopup_Item *ctxpopup_it = (Elm_Ctxpopup_Item *) it; + + wd = elm_widget_data_get(WIDGET(ctxpopup_it)); + if (!wd) return; + + _item_icon_set(ctxpopup_it, icon); + + if (wd->visible) + { + _scroller_size_reset(wd); + _sizing_eval(WIDGET(ctxpopup_it)); + } } EAPI const char * elm_ctxpopup_item_label_get(const Elm_Object_Item *it) { - return _item_text_get_hook(it, NULL); + ELM_OBJ_ITEM_CHECK_OR_RETURN(it, NULL); + Elm_Ctxpopup_Item *ctxpopup_it = (Elm_Ctxpopup_Item *) it; + return ctxpopup_it->label; } EAPI void elm_ctxpopup_item_label_set(Elm_Object_Item *it, const char *label) { - _item_text_set_hook(it, NULL, label); + ELM_OBJ_ITEM_CHECK_OR_RETURN(it); + + Widget_Data *wd; + Elm_Ctxpopup_Item *ctxpopup_it = (Elm_Ctxpopup_Item *) it; + + wd = elm_widget_data_get(WIDGET(ctxpopup_it)); + if (!wd) return; + + _item_label_set(ctxpopup_it, label); + + if (wd->visible) + { + _scroller_size_reset(wd); + _sizing_eval(WIDGET(ctxpopup_it)); + } } EAPI void @@ -1492,13 +1411,6 @@ elm_ctxpopup_item_append(Evas_Object *obj, const char *label, item = elm_widget_item_new(obj, Elm_Ctxpopup_Item); if (!item) return NULL; - elm_widget_item_disable_set_hook_set(item, _item_disable_set_hook); - elm_widget_item_text_set_hook_set(item, _item_text_set_hook); - elm_widget_item_text_get_hook_set(item, _item_text_get_hook); - elm_widget_item_content_set_hook_set(item, _item_content_set_hook); - elm_widget_item_content_get_hook_set(item, _item_content_get_hook); - elm_widget_item_signal_emit_hook_set(item, _item_signal_emit_hook); - //The first item is appended. if (wd->content) evas_object_del(elm_object_content_unset(obj)); @@ -1562,13 +1474,31 @@ elm_ctxpopup_item_del(Elm_Object_Item *it) EAPI void elm_ctxpopup_item_disabled_set(Elm_Object_Item *it, Eina_Bool disabled) { - elm_object_item_disabled_set(it, disabled); + ELM_OBJ_ITEM_CHECK_OR_RETURN(it); + + Widget_Data *wd; + Elm_Ctxpopup_Item *ctxpopup_it = (Elm_Ctxpopup_Item *) it; + + wd = elm_widget_data_get(WIDGET(ctxpopup_it)); + if (!wd) return; + + if (disabled == ctxpopup_it->disabled) + return; + + if (disabled) + edje_object_signal_emit(VIEW(ctxpopup_it), "elm,state,disabled", "elm"); + else + edje_object_signal_emit(VIEW(ctxpopup_it), "elm,state,enabled", "elm"); + + ctxpopup_it->disabled = !!disabled; } EAPI Eina_Bool elm_ctxpopup_item_disabled_get(const Elm_Object_Item *it) { - return elm_object_item_disabled_get(it); + ELM_OBJ_ITEM_CHECK_OR_RETURN(it, EINA_FALSE); + Elm_Ctxpopup_Item *ctxpopup_it = (Elm_Ctxpopup_Item *) it; + return ctxpopup_it->disabled; } EAPI void diff --git a/src/lib/elc_naviframe.c b/src/lib/elc_naviframe.c index 32c8cbd..99d6f09 100644 --- a/src/lib/elc_naviframe.c +++ b/src/lib/elc_naviframe.c @@ -670,7 +670,14 @@ _title_prev_btn_set(Elm_Naviframe_Item *it, evas_object_del(it->title_prev_btn); it->title_prev_btn = btn; - if (!btn) return; + + if (!btn) + { + edje_object_signal_emit(VIEW(it), + "elm,state,prev_btn,hide", + "elm"); + return; + } elm_widget_sub_object_add(WIDGET(it), btn); evas_object_event_callback_add(btn, @@ -693,7 +700,14 @@ _title_next_btn_set(Elm_Naviframe_Item *it, Evas_Object *btn) evas_object_del(it->title_next_btn); it->title_next_btn = btn; - if (!btn) return; + + if (!btn) + { + edje_object_signal_emit(VIEW(it), + "elm,state,next_btn,hide", + "elm"); + return; + } elm_widget_sub_object_add(WIDGET(it), btn); evas_object_event_callback_add(btn, @@ -715,7 +729,14 @@ _title_icon_set(Elm_Naviframe_Item *it, Evas_Object *icon) evas_object_del(it->icon); it->icon = icon; - if (!icon) return; + + if (!icon) + { + edje_object_signal_emit(VIEW(it), + "elm,state,icon,hide", + "elm"); + return; + } elm_widget_sub_object_add(WIDGET(it), icon); evas_object_event_callback_add(icon, diff --git a/src/lib/elc_navigationbar.c b/src/lib/elc_navigationbar.c new file mode 100644 index 0000000..8a33a0f --- /dev/null +++ b/src/lib/elc_navigationbar.c @@ -0,0 +1,1491 @@ +#include +#include "elm_priv.h" + +/** + * @defgroup NavigationBar NavigationBar + * @ingroup Elementary + * + * The Navigationbar is an object that allows flipping (with animation) between 1 or + * more of objects, much like a stack of windows within the window. It also displays title + * area above all the pages consisting of title,function buttons. + * + * Objects can be pushed or popped from the stack. + * Pushes and pops will animate (and a pop will delete the object once the + * animation is finished). Objects are pushed to the top with + * elm_navigationbar_push() and when the top item is no longer + * wanted, simply pop it with elm_navigationbar_pop() and it will also be + * deleted. You can query which objects are the top and bottom with + * elm_navigationbar_content_bottom_get() and elm_navigationbar_content_top_get(). + */ + +#define _ELM_NAVIBAR_PREV_BTN_DEFAULT_LABEL "Previous" + +typedef struct _Widget_Data Widget_Data; +typedef struct _Elm_Navigationbar_Item Elm_Navigationbar_Item; +typedef struct _Transit_Cb_Data Transit_Cb_Data; + +static const char _navigationbar_key[] = "_elm_navigationbar"; + +//TODO: Remove! +typedef enum + { + ELM_NAVIGATIONBAR_PREV_BUTTON = ELM_NAVIGATIONBAR_FUNCTION_BUTTON1, + ELM_NAVIGATIONBAR_NEXT_BUTTON = ELM_NAVIGATIONBAR_FUNCTION_BUTTON2, + ELM_NAVIGATIONBAR_TITLE_BTN_CNT = 2 + } Elm_Navigationbar_Button_Type; + +struct _Widget_Data +{ + Eina_List *stack; + Evas_Object *rect; + Evas_Object *base; + Evas_Object *pager; + Eina_Bool title_visible : 1; + Eina_Bool popping: 1; + }; + +struct _Elm_Navigationbar_Item +{ + Elm_Widget_Item base; + const char *title; + const char *subtitle; + Eina_List *title_obj_list; //TODO: Remove! + Evas_Object *title_obj; + Evas_Object *title_btns[ELM_NAVIGATIONBAR_TITLE_BTN_CNT]; + Evas_Object *content; + Evas_Object *icon; + Eina_Bool titleobj_visible :1; + Eina_Bool back_btn :1; +}; + +//TODO: Remove! +struct _Transit_Cb_Data +{ + Elm_Navigationbar_Item* prev_it; + Elm_Navigationbar_Item* it; + Evas_Object *navibar; + Eina_Bool pop : 1; + Eina_Bool first_page : 1; +}; + +static const char *widtype = NULL; + +static void _del_hook(Evas_Object *obj); +static void _theme_hook(Evas_Object *obj); +static void _sizing_eval(Evas_Object *obj); +static void _resize(void *data, Evas *e, Evas_Object *obj, void *event_info); +static void _item_sizing_eval(Elm_Navigationbar_Item *it); +static void _item_del(Elm_Navigationbar_Item *it); +static void _back_button_clicked(void *data, Evas_Object *obj, void *event_info); +static void _button_size_set(Evas_Object *obj); +static Eina_Bool _button_set(Evas_Object *obj, Evas_Object *prev_btn, Evas_Object *new_btn, Eina_Bool back_btn); +static void _transition_complete_cb(void *data); +static void _elm_navigationbar_prev_btn_set(Evas_Object *obj, + Evas_Object *content, + Evas_Object *new_btn, + Elm_Navigationbar_Item *it); +static void _elm_navigationbar_next_btn_set(Evas_Object *obj, + Evas_Object *content, + Evas_Object *new_btn, + Elm_Navigationbar_Item *it); +static void _title_clicked(void *data, Evas_Object *obj, const char *emission, const char *source); +static void _titleobj_switching(Evas_Object *obj, Elm_Navigationbar_Item *it); +static void _emit_hook(Evas_Object *obj, const char *emission, const char *source); + +static const char SIG_HIDE_FINISHED[] = "hide,finished"; +static const char SIG_TITLE_OBJ_VISIBLE_CHANGED[] = "titleobj,visible,changed"; +static const char SIG_TITLE_CLICKED[] = "title,clicked"; + +static const Evas_Smart_Cb_Description _signals[] = { + {SIG_HIDE_FINISHED, ""}, + {SIG_TITLE_OBJ_VISIBLE_CHANGED, ""}, + {SIG_TITLE_CLICKED, ""}, + {NULL, NULL} +}; + +static void +_content_del(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__) +{ + Elm_Navigationbar_Item *it = data; + evas_object_data_del(obj, _navigationbar_key); + it->content = NULL; + //TODO: it will be better remove this page? +} + +static void +_title_obj_del(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__) +{ + Elm_Navigationbar_Item *it = data; + Eina_List *l = NULL; + elm_navigationbar_title_object_list_unset(it->base.widget, it->content, &l); + if (!l) return; + evas_object_del(eina_list_data_get(l)); + eina_list_free(l); +} + +static void +_title_icon_del(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__) +{ + Elm_Navigationbar_Item *it = data; + it->icon = NULL; +} + +static void +_title_btn_del(void *data, Evas *e __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__) +{ + Elm_Navigationbar_Item *it = data; + + if (it->title_btns[ELM_NAVIGATIONBAR_PREV_BUTTON] == obj) + it->title_btns[ELM_NAVIGATIONBAR_PREV_BUTTON] = NULL; + else if (it->title_btns[ELM_NAVIGATIONBAR_NEXT_BUTTON] == obj) + it->title_btns[ELM_NAVIGATIONBAR_NEXT_BUTTON] = NULL; +} + +static Eina_Bool +_title_btn_set(Elm_Navigationbar_Item *it, Evas_Object *btn, int title_btn_idx, Eina_Bool back_btn) +{ + Eina_Bool changed; + + if(it->title_btns[title_btn_idx] == btn) return EINA_FALSE; + + changed = _button_set(it->base.widget, it->title_btns[title_btn_idx], btn, back_btn); + it->title_btns[title_btn_idx] = btn; + + if ((!changed) || (!btn)) return EINA_FALSE; + + it->back_btn = back_btn; + + evas_object_event_callback_add(btn, EVAS_CALLBACK_DEL, _title_btn_del, it); + + return EINA_TRUE; +} + +static Evas_Object * +_create_back_btn(Evas_Object *parent, const char *title, void *data) +{ + Evas_Object *btn = elm_button_add(parent); + if (!btn) return NULL; + elm_object_text_set(btn, title); + evas_object_smart_callback_priority_add(btn, "clicked", EVAS_CALLBACK_PRIORITY_AFTER, _back_button_clicked, data); + return btn; +} + +static void +_del_hook(Evas_Object *obj) +{ + Widget_Data *wd = elm_widget_data_get(obj); + Eina_List *list; + Elm_Navigationbar_Item *it; + + EINA_LIST_FOREACH(wd->stack, list, it) + _item_del(it); + eina_list_free(wd->stack); + free(wd); +} + +void +_emit_hook(Evas_Object *obj, const char *emission, const char *source) +{ + ELM_CHECK_WIDTYPE(obj, widtype); + + Widget_Data *wd; + Eina_List *last; + Elm_Navigationbar_Item *it; + + wd = elm_widget_data_get(obj); + if (!wd) return; + + last = eina_list_last(wd->stack); + if (!last) return; + + it = eina_list_data_get(last); + if ((!it) || (!it->title_obj)) return; + + //FIXME: I know this is really bullshit. + //We don't need to keep the titleobj_visible but return the status in edc. + if (!strcmp(source, "elm")) + { + if (!strcmp(emission, "elm,state,hide,noanimate,title")) + it->titleobj_visible = EINA_FALSE; + else if (!strcmp(emission, "elm,state,show,noanimate,title")) + it->titleobj_visible = EINA_TRUE; + } + + edje_object_signal_emit(wd->base, emission, source); +} + +static void +_theme_hook(Evas_Object *obj) +{ + Widget_Data *wd = elm_widget_data_get(obj); + Eina_List *list = NULL; + Elm_Navigationbar_Item *it = NULL; + + if (!wd) return; + _elm_theme_object_set(obj, wd->base, "navigationbar", "base", elm_widget_style_get(obj)); + + list = eina_list_last(wd->stack); + if (list) + { + it = eina_list_data_get(list); + if (it) + { + //buttons + if (it->title_btns[ELM_NAVIGATIONBAR_PREV_BUTTON]) + edje_object_part_swallow(wd->base, "elm.swallow.prev_btn", it->title_btns[ELM_NAVIGATIONBAR_PREV_BUTTON]); + if (it->title_btns[ELM_NAVIGATIONBAR_NEXT_BUTTON]) + edje_object_part_swallow(wd->base, "elm.swallow.next_btn", it->title_btns[ELM_NAVIGATIONBAR_NEXT_BUTTON]); + + //icon + if (it->icon) + { + edje_object_part_swallow(wd->base, "elm.swallow.icon", it->icon); + edje_object_signal_emit(wd->base, "elm,state,icon,visible", "elm"); + } + + //title text + if (it->title) + edje_object_part_text_set(wd->base, "elm.text", it->title); + + //title object + if (it->title_obj) + { + edje_object_part_swallow(wd->base, "elm.swallow.title", it->title_obj); + + if (it->titleobj_visible) + edje_object_signal_emit(wd->base, "elm,state,show,noanimate,title", "elm"); + else + edje_object_signal_emit(wd->base, "elm,state,hide,noanimate,title", "elm"); //elm,state,title,hide + + if (it->title) + edje_object_signal_emit(wd->base, "elm,state,show,extended", "elm"); + } + } + } + + if (!wd->title_visible) + edje_object_signal_emit(wd->base, "elm,state,item,moveup", "elm"); + + edje_object_message_signal_process(wd->base); + _sizing_eval(obj); +} + +static void +_item_del(Elm_Navigationbar_Item *it) +{ + //TODO: So hard to manage. + //TODO: Just prepare one layout for title objects. + //TODO: then remove the layout only. + Widget_Data *wd; + int idx; + + if (!it) return; + + wd = elm_widget_data_get(it->base.widget); + if (!wd) return; + + //Remove Function Buttons + for (idx = 0; idx < ELM_NAVIGATIONBAR_TITLE_BTN_CNT; idx++) + { + if (!it->title_btns[idx]) continue; + if (!it->back_btn) elm_object_unfocus(it->title_btns[idx]); + evas_object_event_callback_del(it->title_btns[idx], EVAS_CALLBACK_DEL, _title_btn_del); + evas_object_del(it->title_btns[idx]); + } + if (it->icon) + { + evas_object_event_callback_del(it->icon, EVAS_CALLBACK_DEL, _title_icon_del); + evas_object_del(it->icon); + } + if (it->title_obj) + { + evas_object_event_callback_del(it->title_obj, EVAS_CALLBACK_DEL, _title_obj_del); + evas_object_del(it->title_obj); + eina_list_free(it->title_obj_list); + } + if (it->title) eina_stringshare_del(it->title); + if (it->subtitle) eina_stringshare_del(it->subtitle); + + if (it->content) + { + evas_object_data_del(it->content, _navigationbar_key); + evas_object_event_callback_del(it->content, EVAS_CALLBACK_DEL, _content_del); + } + + free(it); +} + +static void +_sizing_eval(Evas_Object *obj) +{ + Widget_Data *wd; + Eina_List *list; + + wd = elm_widget_data_get(obj); + if (!wd) return; + + list = eina_list_last(wd->stack); + if (!list) return; + + _item_sizing_eval(list->data); +} + +static void +_item_sizing_eval(Elm_Navigationbar_Item *it) +{ + if (!it) return; + Widget_Data *wd = elm_widget_data_get(it->base.widget); + Evas_Coord minw; + + if (!wd) return; + + edje_object_size_min_calc(wd->base, &minw, NULL); + + //TODO: Even the below code for size calculation is redundant and should be removed. + //TODO: Item_sizing_eval function has to be totally refactored/removed. + _button_size_set(it->title_btns[ELM_NAVIGATIONBAR_PREV_BUTTON]); + _button_size_set(it->title_btns[ELM_NAVIGATIONBAR_NEXT_BUTTON]); +} + +static void +_resize(void *data __UNUSED__, Evas *e __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__) +{ + Widget_Data *wd = elm_widget_data_get(obj); + if (!wd) return; + + Evas_Coord w, h; + evas_object_geometry_get(obj, NULL, NULL, &w, &h); + evas_object_resize(wd->rect, w, h); + + _sizing_eval(obj); +} + +static void +_hide(void *data __UNUSED__, Evas *e __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__) +{ + Widget_Data *wd = elm_widget_data_get(obj); + if (!wd) return; + + evas_object_hide(wd->rect); +} + +static void +_move(void *data __UNUSED__, Evas *e __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__) +{ + Widget_Data *wd = elm_widget_data_get(obj); + if (!wd) return; + + Evas_Coord x, y; + evas_object_geometry_get(obj, &x, &y, NULL, NULL); + evas_object_move(wd->rect, x, y); +} + +static void +_titleobj_switching(Evas_Object *obj, Elm_Navigationbar_Item *it) +{ + Widget_Data *wd = elm_widget_data_get(obj); + if (!wd) return; + + if (!it->title_obj) return; + + if (elm_navigationbar_content_top_get(it->base.widget) != it->content) + return; + + if (it->titleobj_visible) + edje_object_signal_emit(wd->base, "elm,state,show,title", "elm"); //elm,state,title,show + else + edje_object_signal_emit(wd->base, "elm,state,hide,title", "elm"); //elm,state,title,hide + + _item_sizing_eval(it); +} + +static void +_title_clicked(void *data, Evas_Object *obj __UNUSED__, const char *emission __UNUSED__, const char *source __UNUSED__) +{ + Evas_Object *navibar = data; + Widget_Data *wd; + Eina_List *last; + Elm_Navigationbar_Item *it; + + wd = elm_widget_data_get(navibar); + if (!wd) return; + + last = eina_list_last(wd->stack); + if (!last) return; + + it = eina_list_data_get(last); + if ((!it) || (!it->title_obj)) return; + + if (!it->titleobj_visible) + { + it->titleobj_visible = EINA_TRUE; + evas_object_smart_callback_call(it->base.widget, SIG_TITLE_OBJ_VISIBLE_CHANGED, (void *) EINA_TRUE); + } + else + { + it->titleobj_visible = EINA_FALSE; + evas_object_smart_callback_call(it->base.widget, SIG_TITLE_OBJ_VISIBLE_CHANGED, (void *) EINA_FALSE); + } + + evas_object_smart_callback_call(navibar, SIG_TITLE_CLICKED, NULL); + + _titleobj_switching(navibar, it); +} + +//TODO: should be renamed. +static void +_transition_complete_cb(void *data) +{ + Evas_Object *navi_bar; + Widget_Data *wd; + Elm_Navigationbar_Item *prev_it; + Elm_Navigationbar_Item *it; + Eina_List *ll; + + Transit_Cb_Data *cb = data; + if (!cb) return; + + navi_bar = cb->navibar; + if (!navi_bar) return; + + wd = elm_widget_data_get(navi_bar); + if (!wd) return; + + prev_it = cb->prev_it; + it = cb->it; + + if (cb->pop && prev_it) + { + ll = eina_list_last(wd->stack); + if (ll->data == prev_it) + { + _item_del(prev_it); + wd->stack = eina_list_remove_list(wd->stack, ll); + } + } + else if (prev_it) + { + if (prev_it->title_btns[ELM_NAVIGATIONBAR_PREV_BUTTON]) + evas_object_hide(prev_it->title_btns[ELM_NAVIGATIONBAR_PREV_BUTTON]); + if (prev_it->title_btns[ELM_NAVIGATIONBAR_NEXT_BUTTON]) + evas_object_hide(prev_it->title_btns[ELM_NAVIGATIONBAR_NEXT_BUTTON]); + if (prev_it->title_obj) + evas_object_hide(prev_it->title_obj); + if (prev_it->icon) + evas_object_hide(prev_it->icon); + } + if ((it) && (wd->title_visible)) + { + edje_object_part_text_set(wd->base, "elm.text", it->title); + + if (!cb->first_page) + { + if (cb->pop) + edje_object_signal_emit(wd->base, "elm,action,pop", "elm"); + else + edje_object_signal_emit(wd->base, "elm,action,push", "elm"); + evas_object_pass_events_set(wd->base, EINA_TRUE); + evas_object_show(wd->rect); + } + if (it->title_obj) + { + edje_object_part_swallow(wd->base, "elm.swallow.title", it->title_obj); + } + if (it->subtitle) + edje_object_part_text_set(wd->base, "elm.text.sub", it->subtitle); + else + edje_object_part_text_set(wd->base, "elm.text.sub", NULL); + + if (it->title_btns[ELM_NAVIGATIONBAR_PREV_BUTTON]) + edje_object_part_swallow(wd->base, "elm.swallow.prev_btn", it->title_btns[ELM_NAVIGATIONBAR_PREV_BUTTON]); + if (it->title_btns[ELM_NAVIGATIONBAR_NEXT_BUTTON]) + edje_object_part_swallow(wd->base, "elm.swallow.next_btn", it->title_btns[ELM_NAVIGATIONBAR_NEXT_BUTTON]); + + if(it->icon) + { + edje_object_part_swallow(wd->base, "elm.swallow.icon", it->icon); + edje_object_signal_emit(wd->base, "elm,state,icon,visible", "elm"); + } + else + edje_object_signal_emit(wd->base, "elm,state,icon,hidden", "elm"); + + if ((it->title_obj) && (it->title)) + { + edje_object_signal_emit(wd->base, "elm,state,show,extended", "elm"); + if(it->titleobj_visible) + { + //TODO: remove the dependency on these signals as related to nbeat, try to make it totally theme dependent + edje_object_signal_emit(wd->base, "elm,state,show,noanimate,title", "elm"); + } + else + //TODO: remove the dependency on these signals as related to nbeat, try to make it totally theme dependent + edje_object_signal_emit(wd->base, "elm,state,hide,noanimate,title", "elm"); + } + else + { + edje_object_signal_emit(wd->base, "elm,state,hide,extended", "elm"); + //TODO: remove the dependency on these signals as related to nbeat, try to make it totally theme dependent + edje_object_signal_emit(wd->base, "elm,state,hide,noanimate,title", "elm"); + it->titleobj_visible = EINA_FALSE; + } + } +} + +static void +_back_button_clicked(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__) +{ + Elm_Navigationbar_Item *it = data; + elm_navigationbar_pop(it->base.widget); +} + +static void +_hide_finished(void *data, Evas_Object *obj __UNUSED__, void *event_info) +{ + Evas_Object *navi_bar = data; + Widget_Data *wd = elm_widget_data_get(navi_bar); + wd->popping = EINA_FALSE; + evas_object_smart_callback_call(navi_bar, SIG_HIDE_FINISHED, event_info); + evas_object_pass_events_set(wd->base, EINA_FALSE); + evas_object_hide(wd->rect); +} + +static void +_button_size_set(Evas_Object *obj) +{ + if (!obj) return; + Evas_Coord minw = -1, minh = -1, maxw= -1, maxh = -1; + Evas_Coord w = 0, h = 0; + + evas_object_size_hint_min_get(obj, &minw, &minh); + evas_object_size_hint_max_get(obj, &maxw, &maxh); + evas_object_geometry_get(obj, NULL, NULL, &w, &h); + if (w < minw) w = minw; + if (h < minh) h = minh; + if ((maxw >= 0) && (w > maxw)) w = maxw; + if ((maxh >= 0) && (h > maxh)) h = maxh; + evas_object_resize(obj, w, h); +} + +static void +_elm_navigationbar_prev_btn_set(Evas_Object *obj, Evas_Object *content, Evas_Object *new_btn, Elm_Navigationbar_Item *it) +{ + Widget_Data *wd; + Evas_Object *prev_btn; + + wd = elm_widget_data_get(obj); + if (!wd) return; + + if (!_title_btn_set(it, new_btn, ELM_NAVIGATIONBAR_PREV_BUTTON, EINA_FALSE)) + return; + + //update if the content is the top item + if (elm_navigationbar_content_top_get(obj) != content) + return; + + prev_btn = edje_object_part_swallow_get(wd->base, "elm.swallow.prev_btn"); + if (prev_btn) evas_object_del(prev_btn); + edje_object_part_swallow(wd->base, "elm.swallow.prev_btn", new_btn); +} + +//TODO: looks make this _elm_navigationbar_function_button1_set same. +static void +_elm_navigationbar_next_btn_set(Evas_Object *obj, Evas_Object *content, Evas_Object *new_btn, Elm_Navigationbar_Item *it) +{ + Widget_Data *wd; + Evas_Object *prev_btn; + + wd = elm_widget_data_get(obj); + if (!wd) return; + + if (!_title_btn_set(it, new_btn, ELM_NAVIGATIONBAR_NEXT_BUTTON, EINA_FALSE)) + return; + + //update if the content is the top item + if (elm_navigationbar_content_top_get(obj) != content) + return; + + prev_btn = edje_object_part_swallow_get(wd->base, "elm.swallow.next_btn"); + if (prev_btn) evas_object_del(prev_btn); + edje_object_part_swallow(wd->base, "elm.swallow.next_btn", new_btn); +} + +static Eina_Bool +_button_set(Evas_Object *obj, Evas_Object *prev_btn, Evas_Object *new_btn, Eina_Bool back_btn) +{ + char buf[4096]; //TODO: How to guarantee this buffer size? + Eina_Bool changed = EINA_FALSE; + + if (prev_btn) + { + changed = EINA_TRUE; + evas_object_del(prev_btn); + } + if (!new_btn) return changed; + + if (back_btn) + { + snprintf(buf, sizeof(buf), "navigationbar_prev_btn/%s", elm_widget_style_get(obj)); + elm_object_style_set(new_btn, buf); + } + else + { + if (!strcmp("default", elm_object_style_get(new_btn))) + { + snprintf(buf, sizeof(buf), "navigationbar_next_btn/%s", elm_widget_style_get(obj)); + elm_object_style_set(new_btn, buf); + } + } + + elm_widget_sub_object_add(obj, new_btn); + changed = EINA_TRUE; + + return changed; +} + +/** + * Add a new navigationbar to the parent + * + * @param[in] parent The parent object + * @return The new object or NULL if it cannot be created + * + * @ingroup NavigationBar + */ +EAPI Evas_Object * +elm_navigationbar_add(Evas_Object *parent) +{ + Evas_Object *obj; + Evas *e; + Widget_Data *wd; + + EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL); + + wd = ELM_NEW(Widget_Data); + e = evas_object_evas_get(parent); + obj = elm_widget_add(e); + ELM_SET_WIDTYPE(widtype, "navigationbar"); + elm_widget_type_set(obj, "navigationbar"); + elm_widget_sub_object_add(parent, obj); + elm_widget_data_set(obj, wd); + elm_widget_del_hook_set(obj, _del_hook); + elm_widget_theme_hook_set(obj, _theme_hook); + elm_widget_signal_emit_hook_set(obj, _emit_hook); + + wd->base = edje_object_add(e); + _elm_theme_object_set(obj, wd->base, "navigationbar", "base", "default"); + elm_widget_resize_object_set(obj, wd->base); + //TODO: elm,action,title,clicked + edje_object_signal_callback_add(wd->base, "elm,action,clicked", "elm", + _title_clicked, obj); + + //TODO: How about making the pager as a base? + //TODO: Swallow title and content as one content into the pager. + wd->pager = elm_pager_add(obj); + elm_object_style_set(wd->pager, "navigationbar"); + elm_widget_sub_object_add(obj, wd->pager); + edje_object_part_swallow(wd->base, "elm.swallow.content", wd->pager); + evas_object_smart_callback_add(wd->pager, "hide,finished", _hide_finished, obj); + evas_object_event_callback_add(obj, EVAS_CALLBACK_RESIZE, _resize, NULL); + evas_object_event_callback_add(obj, EVAS_CALLBACK_MOVE, _move, NULL); + evas_object_event_callback_add(obj, EVAS_CALLBACK_HIDE, _hide, NULL); + + wd->title_visible = EINA_TRUE; + + evas_object_smart_callbacks_descriptions_set(obj, _signals); + + //Rect + wd->rect = evas_object_rectangle_add(e); + evas_object_color_set(wd->rect, 0, 0, 0, 0); + elm_widget_sub_object_add(obj, wd->rect); + + //TODO: apply elm_object_disabled_set + + return obj; +} + +/** + * Push an object to the top of the NavigationBar stack (and show it) + * The object pushed becomes a child of the navigationbar and will be controlled + * it is deleted when the navigationbar is deleted or when the content is popped. + * + * @param[in] obj The NavigationBar object + * @param[in] title The title string + * @param[in] prev_btn The previous button + * @param[in] next_btn The next button + * @param[in] unused Unused. + * @param[in] content The object to push + * + * @ingroup NavigationBar + */ +EAPI void +elm_navigationbar_push(Evas_Object *obj, const char *title, Evas_Object *prev_btn, Evas_Object *next_btn, Evas_Object *unused __UNUSED__, Evas_Object *content) +{ + ELM_CHECK_WIDTYPE(obj, widtype); + + Widget_Data *wd; + Elm_Navigationbar_Item *it; + Elm_Navigationbar_Item *top_it; + + if (!content) return; + + wd = elm_widget_data_get(obj); + if (!wd) return; + + if (evas_object_data_get(content, _navigationbar_key)) return; + + it = elm_widget_item_new(obj, Elm_Navigationbar_Item); + if (!it) return; + + top_it = eina_list_data_get(eina_list_last(wd->stack)); + + _title_btn_set(it, prev_btn, ELM_NAVIGATIONBAR_PREV_BUTTON, EINA_FALSE); + _title_btn_set(it, next_btn, ELM_NAVIGATIONBAR_NEXT_BUTTON, EINA_FALSE); + + it->content = content; + evas_object_event_callback_add(content, EVAS_CALLBACK_DEL, _content_del, it); + evas_object_data_set(content, _navigationbar_key, it); + + //Add a prev-button automatically. + if ((!prev_btn) && (top_it)) + { + if (top_it->title) + _title_btn_set(it, _create_back_btn(obj, top_it->title, it), ELM_NAVIGATIONBAR_PREV_BUTTON, EINA_TRUE); + else + _title_btn_set(it, _create_back_btn(obj, _ELM_NAVIBAR_PREV_BTN_DEFAULT_LABEL, it), ELM_NAVIGATIONBAR_PREV_BUTTON, EINA_TRUE); + } + + eina_stringshare_replace(&it->title, title); + edje_object_part_text_set(wd->base, "elm.text", title); + _item_sizing_eval(it); + + Transit_Cb_Data *cb = ELM_NEW(Transit_Cb_Data); + // unswallow items and start transition + // TODO: For what? why does it need to unswallow? + if (top_it) + { + cb->prev_it = top_it; + cb->first_page = EINA_FALSE; + if (top_it->title_obj) edje_object_part_unswallow(wd->base, top_it->title_obj); + if (top_it->title_btns[ELM_NAVIGATIONBAR_PREV_BUTTON]) + edje_object_part_unswallow(wd->base, top_it->title_btns[ELM_NAVIGATIONBAR_PREV_BUTTON]); + if (top_it->title_btns[ELM_NAVIGATIONBAR_NEXT_BUTTON]) + edje_object_part_unswallow(wd->base, top_it->title_btns[ELM_NAVIGATIONBAR_NEXT_BUTTON]); + if (top_it->icon) + edje_object_part_unswallow(wd->base, top_it->icon); + } + //If page is the first, then do not run the transition... but if user want.. ? + else + { + cb->prev_it = NULL; + cb->first_page = EINA_TRUE; + } + cb->navibar = obj; + cb->it = it; + cb->pop = EINA_FALSE; + + _transition_complete_cb(cb); + free(cb); + elm_pager_content_push(wd->pager, it->content); + + wd->stack = eina_list_append(wd->stack, it); + _sizing_eval(obj); +} + +/** + * This pops the object that is on top (visible) in the navigationbar, makes it disappear, then deletes the object. + * The object that was underneath it, on the stack will become visible. + * + * @param[in] obj The NavigationBar object + * + * @ingroup NavigationBar + */ +EAPI void +elm_navigationbar_pop(Evas_Object *obj) +{ + ELM_CHECK_WIDTYPE(obj, widtype); + Widget_Data *wd = elm_widget_data_get(obj); + Eina_List *ll; + Transit_Cb_Data *cb; + Elm_Navigationbar_Item *it = NULL; + Elm_Navigationbar_Item *prev_it = NULL; + + //TODO: It's impossible to pop while popping? + if (wd->popping) return; + if (!wd->stack) return; + + //find item to be popped and to be shown + //TODO: hmm.. i think it's hard to manager separated list from elm_pager internal list. but how about use evas_object_data_set to each content?? + ll = eina_list_last(wd->stack); + if (ll) + { + prev_it = ll->data; + ll = ll->prev; + if (ll) + it = ll->data; + } + //unswallow items and start trasition + cb = ELM_NEW(Transit_Cb_Data); + + //Previous page is exist. + if (prev_it) + { + if (it) + { + cb->prev_it = prev_it; + cb->it = it; + cb->pop = EINA_TRUE; + if (prev_it->title_obj) + edje_object_part_unswallow(wd->base, prev_it->title_obj); + if (prev_it->title_btns[ELM_NAVIGATIONBAR_PREV_BUTTON]) + edje_object_part_unswallow(wd->base, prev_it->title_btns[ELM_NAVIGATIONBAR_PREV_BUTTON]); + if (prev_it->title_btns[ELM_NAVIGATIONBAR_NEXT_BUTTON]) + edje_object_part_unswallow(wd->base, prev_it->title_btns[ELM_NAVIGATIONBAR_NEXT_BUTTON]); + if (prev_it->icon) + edje_object_part_unswallow(wd->base, prev_it->icon); + _item_sizing_eval(it); + } + else + { + cb->prev_it = prev_it; + cb->it = NULL; + cb->pop = EINA_TRUE; + //TODO: seems that flag is inverted. + cb->first_page = EINA_FALSE; + } + + if (prev_it->content) + elm_object_tree_unfocusable_set(prev_it->content, EINA_TRUE); + } + + cb->navibar = obj; + _transition_complete_cb(cb); + wd->popping = EINA_TRUE; + + elm_pager_content_pop(wd->pager); + + if ((prev_it) && (!it)) + edje_object_part_text_set(wd->base, "elm.text", NULL); + + free(cb); +} + +/** + * This Pops to the given content object (and update it) by deleting rest of the objects in between. + * + * @param[in] obj The NavigationBar object + * @param[in] content the object to show + * + * @ingroup NavigationBar + */ +EAPI void +elm_navigationbar_to_content_pop(Evas_Object *obj, Evas_Object *content) +{ + ELM_CHECK_WIDTYPE(obj, widtype); + + Widget_Data *wd; + Eina_List *ll; + Elm_Navigationbar_Item *it; + Elm_Navigationbar_Item *prev_it; + Transit_Cb_Data *cb; + + wd = elm_widget_data_get(obj); + if ((!wd) || (!content) || (!wd->stack)) return; + + //find item to be popped and to be shown + it = prev_it = NULL; + ll = eina_list_last(wd->stack); + + if (elm_navigationbar_content_top_get(obj) == content) return; + + if (ll) + { + prev_it = ll->data; + ll = ll->prev; + } + while (ll) + { + it = ll->data; + if ((it->base.widget) && (it->content != content)) + { + _item_del(ll->data); + wd->stack = eina_list_remove_list(wd->stack, ll); + it = NULL; + } + else + break; + ll = ll->prev; + } + if (prev_it && it) + { + //unswallow items and start trasition + cb = ELM_NEW(Transit_Cb_Data); + cb->prev_it = prev_it; + cb->it = it; + cb->pop = EINA_TRUE; + cb->first_page = EINA_FALSE; + cb->navibar = obj; + + //TODO: make one call. + if (prev_it->title_obj) + edje_object_part_unswallow(wd->base, prev_it->title_obj); + if (prev_it->title_btns[ELM_NAVIGATIONBAR_PREV_BUTTON]) + edje_object_part_unswallow(wd->base, prev_it->title_btns[ELM_NAVIGATIONBAR_PREV_BUTTON]); + if (prev_it->title_btns[ELM_NAVIGATIONBAR_NEXT_BUTTON]) + edje_object_part_unswallow(wd->base, prev_it->title_btns[ELM_NAVIGATIONBAR_NEXT_BUTTON]); + + _item_sizing_eval(it); + _transition_complete_cb(cb); + + elm_pager_to_content_pop(wd->pager, content); + + free(cb); + } +} + +/** + * Set the title string for the pushed content + * + * @param[in] obj The NavigationBar object + * @param[in] content The object to push or pushed + * @param[in] title The title string + * + * @ingroup NavigationBar + */ +EAPI void +elm_navigationbar_title_label_set(Evas_Object *obj, Evas_Object *content, const char *title) +{ + ELM_CHECK_WIDTYPE(obj, widtype); + Widget_Data *wd; + Elm_Navigationbar_Item *it; + + if (!content) return; + + wd = elm_widget_data_get(obj); + if (!wd) return; + + it = evas_object_data_get(content, _navigationbar_key); + if (!it) return; + + eina_stringshare_replace(&it->title, title); + edje_object_part_text_set(wd->base, "elm.text", title); + _item_sizing_eval(it); +} + +/** + * Return the title string of the pushed content + * + * @param[in] obj The NavigationBar object + * @param[in] content The object to push or pushed + * @return The title string or NULL if none + * + * @ingroup NavigationBar + */ +EAPI const char * +elm_navigationbar_title_label_get(Evas_Object *obj, Evas_Object *content) +{ + ELM_CHECK_WIDTYPE(obj, widtype) NULL; + Widget_Data *wd; + Elm_Navigationbar_Item *it; + + if (!content) return NULL; + + wd = elm_widget_data_get(obj); + if (!wd) return NULL; + + it = evas_object_data_get(content, _navigationbar_key); + if (!it) return NULL; + return it->title; +} + +/** + * Set the title icon for the pushed content + * + * @param[in] obj The NavigationBar object + * @param[in] content The object to push or pushed + * @param[in] icon The icon object + * + * @ingroup NavigationBar + */ +EAPI void +elm_navigationbar_title_icon_set(Evas_Object *obj, Evas_Object *content, Evas_Object *icon) +{ + ELM_CHECK_WIDTYPE(obj, widtype); + Widget_Data *wd; + Elm_Navigationbar_Item *it; + Evas_Object *swallow; + + if (!content) return; + + wd = elm_widget_data_get(obj); + if (!wd) return; + + it = evas_object_data_get(content, _navigationbar_key); + if (!it) return; + + if (it->icon == icon) return; + if (it->icon) evas_object_del(it->icon); + it->icon = icon; + + if (!icon) return; + + elm_widget_sub_object_add(obj, icon); + evas_object_event_callback_add(icon, EVAS_CALLBACK_DEL, _title_icon_del, it); + _item_sizing_eval(it); + //update if the content is the top item + if (elm_navigationbar_content_top_get(obj) != content) + return; + + swallow = edje_object_part_swallow_get(wd->base, "elm.swallow.icon"); + if (swallow) + { + edje_object_signal_emit(wd->base, "elm,state,icon,hidden", "elm"); + edje_object_part_unswallow(wd->base, swallow); + evas_object_hide(swallow); + } + if (wd->title_visible) + { + edje_object_part_swallow(wd->base, "elm.swallow.icon", icon); + edje_object_signal_emit(wd->base, "elm,state,icon,visible", "elm"); + edje_object_message_signal_process(wd->base); + } + else + edje_object_signal_emit(wd->base, "elm,state,icon,hidden", "elm"); +} + +/** + * Get the title icon for the pushed content + * + * @param[in] obj The NavigationBar object + * @param[in] content The object to push or pushed + * @return The icon object or NULL if none + * + * @ingroup NavigationBar + */ +EAPI Evas_Object * +elm_navigationbar_title_icon_get(Evas_Object *obj, Evas_Object *content) +{ + ELM_CHECK_WIDTYPE(obj, widtype)NULL; + Widget_Data *wd; + Elm_Navigationbar_Item *it; + + if (!content) return NULL; + + wd = elm_widget_data_get(obj); + if (!wd) return NULL; + + it = evas_object_data_get(content, _navigationbar_key); + if (!it) return NULL; + + return it->icon; +} + +/** + * Add a title object for the content. + * + * @param[in] obj The NavigationBar object + * @param[in] content The object pushed + * @param[in] title_obj a title object (normally button or segment_control) + * + * @ingroup NavigationBar + */ +//TODO: elm_navigationbar_title_object_set ( .... ) +EAPI void +elm_navigationbar_title_object_add(Evas_Object *obj, Evas_Object *content, Evas_Object *title_obj) +{ + ELM_CHECK_WIDTYPE(obj, widtype); + Widget_Data *wd; + Elm_Navigationbar_Item *it; + + if ((!title_obj) || (!content)) return; + + wd = elm_widget_data_get(obj); + if (!wd) return; + + it = evas_object_data_get(content, _navigationbar_key); + if (!it) return; + + if (it->title_obj) + { + evas_object_event_callback_del(it->title_obj, EVAS_CALLBACK_DEL, _title_obj_del); + evas_object_del(it->title_obj); + } + + it->title_obj = title_obj; + elm_widget_sub_object_add(obj, title_obj); + evas_object_event_callback_add(title_obj, EVAS_CALLBACK_DEL, _title_obj_del, it); + + //TODO: Conserve this line for a while the object list get API is alive. + eina_list_free(it->title_obj_list); + it->title_obj_list = eina_list_append(NULL, title_obj); + + if (elm_navigationbar_content_top_get(obj) != content) + return; + + edje_object_part_swallow(wd->base, "elm.swallow.title", title_obj); + + //TODO: Looks something incorrect. + if (wd->title_visible) + { + if (it->title) + { + edje_object_signal_emit(wd->base, "elm,state,show,extended", "elm"); + //TODO: for before nbeat? + edje_object_signal_emit(wd->base, "elm,state,show,noanimate,title", "elm"); + it->titleobj_visible = EINA_TRUE; + } + } + _item_sizing_eval(it); +} + +/** + * Unset the list of title objects corresponding to given content and returns it to + * the application. + * @param[in] obj The NavigationBar object + * @param[in] content The content object pushed + * @param[out] list updates the list with title objects list, this list has to be freed and the + * objects have to be deleted by application. + * @ingroup NavigationBar + */ +//TODO: remove! +EAPI void +elm_navigationbar_title_object_list_unset(Evas_Object *obj, Evas_Object *content, Eina_List **list) +{ + ELM_CHECK_WIDTYPE(obj, widtype); + Widget_Data *wd; + Elm_Navigationbar_Item *it; + Evas_Object *swallow; + + if ((!list) || (!content)) return; + + wd = elm_widget_data_get(obj); + if (!wd) return; + + it = evas_object_data_get(content, _navigationbar_key); + if (!it) return; + + *list = eina_list_append(*list, it->title_obj); + it->title_obj = NULL; + + if (elm_navigationbar_content_top_get(obj) != content) + return; + + //In this case, the content is in the last of the stack + swallow = edje_object_part_swallow_get(wd->base, "elm.swallow.title"); + if (!swallow) return; + + if (wd->title_visible) + { + if(it->titleobj_visible) + { + //TODO: remove the dependency on these signals as related to nbeat? + edje_object_signal_emit(wd->base, "elm,state,hide,noanimate,title", "elm"); + it->titleobj_visible = EINA_FALSE; + } + edje_object_signal_emit(wd->base, "elm,state,hide,extended", "elm"); + } + _item_sizing_eval(it); +} + +EAPI Evas_Object * +elm_navigationbar_title_object_get(Evas_Object *obj, Evas_Object *content) +{ + ELM_CHECK_WIDTYPE(obj, widtype) NULL; + Widget_Data *wd; + Elm_Navigationbar_Item *it; + + if (!content) return NULL; + + wd = elm_widget_data_get(obj); + if (!wd) return NULL; + + it = evas_object_data_get(content, _navigationbar_key); + if (!it) return NULL; + + return it->title_obj; +} + +/** + * Return the list of title objects of the pushed content. + * + * @param[in] obj The NavigationBar object + * @param[in] content The object to push or pushed + * @return The list of title objects + * + * @ingroup NavigationBar + */ +//TODO: Remove!! +EAPI Eina_List * +elm_navigationbar_title_object_list_get(Evas_Object *obj, Evas_Object *content) +{ + ELM_CHECK_WIDTYPE(obj, widtype) NULL; + Widget_Data *wd; + Elm_Navigationbar_Item *it; + + if (!content) return NULL; + + wd = elm_widget_data_get(obj); + if (!wd) return NULL; + + it = evas_object_data_get(content, _navigationbar_key); + if (!it) return NULL; + + return it->title_obj_list; +} + +/** + * Return the content object at the top of the NavigationBar stack + * + * @param[in] obj The NavigationBar object + * @return The top content object or NULL if none + * + * @ingroup NavigationBar + */ +EAPI Evas_Object * +elm_navigationbar_content_top_get(Evas_Object *obj) +{ + ELM_CHECK_WIDTYPE(obj, widtype) NULL; + Widget_Data *wd = elm_widget_data_get(obj); + if (!wd) return NULL; + return elm_pager_content_top_get(wd->pager); +} + +/** + * Return the content object at the bottom of the NavigationBar stack + * + * @param[in] obj The NavigationBar object + * @return The bottom content object or NULL if none + * + * @ingroup NavigationBar + */ +EAPI Evas_Object * +elm_navigationbar_content_bottom_get(Evas_Object *obj) +{ + ELM_CHECK_WIDTYPE(obj, widtype)NULL; + Widget_Data *wd = elm_widget_data_get(obj); + if (!wd) return NULL; + return elm_pager_content_bottom_get(wd->pager); +} + +/** + * This hides the title area of navigationbar. + * + * @param[in] obj The NavigationBar object + * @param[in] hidden if EINA_TRUE the title area is hidden. + * + * @ingroup NavigationBar + */ +//TODO: does not provide hidden get ? +EAPI void +elm_navigationbar_hidden_set(Evas_Object *obj, + Eina_Bool hidden) +{ + ELM_CHECK_WIDTYPE(obj, widtype); + Widget_Data *wd = elm_widget_data_get(obj); + if (!wd) return; + + if (hidden) + edje_object_signal_emit(wd->base, "elm,state,item,moveup", "elm"); + else + edje_object_signal_emit(wd->base, "elm,state,item,movedown", "elm"); + + wd->title_visible = !hidden; +} + +/** + * Set the button object of the pushed content. + * + * @param[in] obj The NavigationBar object + * @param[in] content The object to push or pushed + * @param[in] button The button + * @param[in] button_type Indicates the position + * + * @ingroup NavigationBar + */ +EAPI void +elm_navigationbar_title_button_set(Evas_Object *obj, Evas_Object *content, Evas_Object *button, Elm_Navi_Button_Type button_type) +{ + ELM_CHECK_WIDTYPE(obj, widtype); + + Widget_Data *wd; + Elm_Navigationbar_Item *it; + + if (!content) return; + + wd = elm_widget_data_get(obj); + if (!wd) return; + + it = evas_object_data_get(content, _navigationbar_key); + if (!it) return; + + switch(button_type) + { + case ELM_NAVIGATIONBAR_PREV_BUTTON: + _elm_navigationbar_prev_btn_set(obj, content, button, it); + break; + case ELM_NAVIGATIONBAR_NEXT_BUTTON: + _elm_navigationbar_next_btn_set(obj, content, button, it); + break; + default: + _elm_navigationbar_prev_btn_set(obj, content, button, it); + break; + } + _sizing_eval(obj); +} + +/** + * Return the button object of the pushed content + * + * @param[in] obj The NavigationBar object + * @param[in] content The object to push or pushed + * @param[in] button_type Indicates the position + * @return The button object or NULL if none + * + * @ingroup NavigationBar + */ +EAPI Evas_Object * +elm_navigationbar_title_button_get(Evas_Object *obj, Evas_Object *content, Elm_Navi_Button_Type button_type) +{ + ELM_CHECK_WIDTYPE(obj, widtype) NULL; + Widget_Data *wd; + Elm_Navigationbar_Item *it; + + if (!content) return NULL; + + wd = elm_widget_data_get(obj); + if (!wd) return NULL; + + it = evas_object_data_get(content, _navigationbar_key); + if (!it) return NULL; + + switch(button_type) + { + case ELM_NAVIGATIONBAR_PREV_BUTTON: + return it->title_btns[ELM_NAVIGATIONBAR_PREV_BUTTON]; + case ELM_NAVIGATIONBAR_NEXT_BUTTON: + return it->title_btns[ELM_NAVIGATIONBAR_NEXT_BUTTON]; + default: + return it->title_btns[ELM_NAVIGATIONBAR_PREV_BUTTON]; + } + return NULL; +} + +/** + * Set the sub title string for the pushed content. + * + * @param[in] obj The NavigationBar object + * @param[in] content The object to push or pushed + * @param[in] subtitle The subtitle string + * + * @ingroup NavigationBar + */ +EAPI void +elm_navigationbar_subtitle_label_set(Evas_Object *obj, Evas_Object *content, const char *subtitle) +{ + ELM_CHECK_WIDTYPE(obj, widtype); + Widget_Data *wd; + Elm_Navigationbar_Item *it; + + wd = elm_widget_data_get(obj); + if (!wd) return; + + it = evas_object_data_get(content, _navigationbar_key); + if (!it) return; + + eina_stringshare_replace(&it->subtitle, subtitle); + edje_object_part_text_set(wd->base, "elm.text.sub", subtitle); + _item_sizing_eval(it); +} + +/** + * Return the subtitle string of the pushed content. + * + * @param[in] obj The NavigationBar object + * @param[in] content The object to push or pushed + * @return The subtitle string or NULL if none + * + * @ingroup NavigationBar + */ +EAPI const char * +elm_navigationbar_subtitle_label_get(Evas_Object *obj, Evas_Object *content) +{ + ELM_CHECK_WIDTYPE(obj, widtype) NULL; + Widget_Data *wd; + Elm_Navigationbar_Item *it; + + wd = elm_widget_data_get(obj); + if (!wd) return NULL; + + it = evas_object_data_get(content, _navigationbar_key); + if (!it) return NULL; + return it->subtitle; +} + +/** + * This disables content area animation on push/pop. + * + * @param[in] obj The NavigationBar object + * @param[in] disable if EINA_TRUE animation is disabled. + * + * @ingroup NavigationBar + */ +//TODO: Let's check to remove this API. +EAPI void +elm_navigationbar_animation_disabled_set(Evas_Object *obj, Eina_Bool disable) +{ + ELM_CHECK_WIDTYPE(obj, widtype); + Widget_Data *wd = elm_widget_data_get(obj); + if (!wd) return; + elm_pager_animation_disabled_set(wd->pager, disable); +} + +/** + * This shows/hides title object area. + * + * @param[in] obj The NavigationBar object + * @param[in] show if EINA_TRUE title object is shown else its hidden. + * @param[in] content The content object packed in navigationbar. + * @ingroup NavigationBar + */ +EAPI void +elm_navigationbar_title_object_visible_set(Evas_Object *obj, Evas_Object *content, Eina_Bool visible) +{ + ELM_CHECK_WIDTYPE(obj, widtype); + Elm_Navigationbar_Item *it; + Widget_Data *wd; + + if (!content) return; + + wd = elm_widget_data_get(obj); + if (!wd) return; + + it = evas_object_data_get(content, _navigationbar_key); + if (!it) return; + if (it->titleobj_visible == visible) return; + it->titleobj_visible = visible; + _titleobj_switching(obj, it); +} + +/** + * This gets the status whether title object is shown/hidden. + * + * @param[in] obj The NavigationBar object + * @param[in] content The content object packed in navigationbar. + * @return The status whether title object is shown/hidden. + * @ingroup NavigationBar + */ +Eina_Bool +elm_navigationbar_title_object_visible_get(Evas_Object *obj, Evas_Object *content) +{ + ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE; + Elm_Navigationbar_Item *it; + Widget_Data *wd; + + if (!content) return EINA_FALSE; + + wd = elm_widget_data_get(obj); + if (!wd) return EINA_FALSE; + + it = evas_object_data_get(content, _navigationbar_key); + if (!it) return EINA_FALSE; + + return it->titleobj_visible; +} diff --git a/src/lib/elc_navigationbar_ex.c b/src/lib/elc_navigationbar_ex.c new file mode 100644 index 0000000..69b2b60 --- /dev/null +++ b/src/lib/elc_navigationbar_ex.c @@ -0,0 +1,1211 @@ +#include +#include "elm_priv.h" + +/** + * @defgroup Navigationbar_ex Navigationbar_ex + * @ingroup Elementary + * + * The NavigationBar_ex is an object that allows flipping (with animation) between 1 or + * more pages of objects, much like a stack of windows within the window as well display + * the title area for the page consisting of buttons, title, titleobjects etc:-. + * + * Objects can be pushed or popped from the stack or deleted as normal. + * Pushes and pops will animate and a pop will delete the object once the + * animation is finished if delete_on_pop is set else the content is unset and the + * content pointer is sent as event information in the hide,finished signal. + * Any object in the Navigationbar_ex can be promoted to the top + * (from its current stacking position) as well. Objects are pushed to the + * top with elm_navigationbar_ex_item_push() and when the top item is no longer + * wanted, simply pop it with elm_navigationbar_ex_item_pop() and it will also be + * deleted/unset depending on delete_on_pop variable. + * Any object you wish to promote to the top that is already in the + * navigationbar, simply use elm_navigationbar_ex_item_promote(). If an object is no longer + * needed and is not the top item, just delete it as normal. You can query + * which objects are the top and bottom with elm_navigationbar_ex_item_bottom_get() + * and elm_navigationbar_ex_item_top_get(). + */ + +typedef struct _Widget_Data Widget_Data; +typedef struct _function_button fn_button; + +struct _Widget_Data +{ + Eina_List *stack, *to_delete; + Elm_Navigationbar_ex_Item *top, *oldtop; + Evas_Object *rect, *clip; + Eina_Bool del_on_pop : 1; + Eina_Bool disable_animation: 1; +}; + +struct _Elm_Navigationbar_ex_Item +{ + Evas_Object *obj, *base, *content; + Evas_Object *ct_base; + Evas_Coord minw, minh; + const char *title; + const char *subtitle; + const char *item_style; + Eina_List *fnbtn_list; + Evas_Object *title_obj; + Evas_Object *icon; + Eina_Bool popme : 1; + Eina_Bool titleobj_visible:1; +}; + +struct _function_button +{ + Evas_Object *btn; + int btn_id; +}; + +static const char *widtype = NULL; +static void _del_hook(Evas_Object *obj); +static void _theme_hook(Evas_Object *obj); +static void _sizing_eval(Evas_Object *obj); +static void _changed_size_hints(void *data, Evas *e, Evas_Object *obj, void *event_info); +static void _sub_del(void *data, Evas_Object *obj, void *event_info); + +static const char SIG_HIDE_FINISHED[] = "hide,finished"; +static const char SIG_TITLE_OBJ_VISIBLE_CHANGED[] = "titleobj,visible,changed"; + +static const Evas_Smart_Cb_Description _signals[] = { + {SIG_HIDE_FINISHED, ""}, + {SIG_TITLE_OBJ_VISIBLE_CHANGED, ""}, + {NULL, NULL} +}; + +static void +_del_hook(Evas_Object *obj) +{ + Widget_Data *wd = elm_widget_data_get(obj); + if (!wd) return; + free(wd); +} + +static Evas_Object* +_content_unset(Elm_Navigationbar_ex_Item* item) +{ + if (!item) return NULL; + Evas_Object *content = NULL; + if (!item->content) return NULL; + content = item->content; + elm_widget_sub_object_del(item->obj,item->content); + edje_object_part_unswallow(item->ct_base,item->content); + item->content = NULL; + evas_object_hide(content); + return content; +} + +static void +_theme_hook(Evas_Object *obj) +{ + Widget_Data *wd = elm_widget_data_get(obj); + Eina_List *l; + char buf_fn[1024]; + char buf[1024]; + Elm_Navigationbar_ex_Item *it; + if (!wd) return; + EINA_LIST_FOREACH(wd->stack, l, it) + { + Eina_List *bl; + fn_button *btn_det; + edje_object_scale_set(it->base, elm_widget_scale_get(obj) * + _elm_config->scale); + strncpy(buf, "item/", sizeof(buf)); + strncat(buf, it->item_style, sizeof(buf) - strlen(buf)); + _elm_theme_object_set(obj, it->base, "navigationbar_ex", buf, elm_widget_style_get(obj)); + _elm_theme_object_set(obj, it->ct_base, "navigationbar_ex", "content", elm_widget_style_get(obj)); + if (it->title) + edje_object_part_text_set(it->base, "elm.text", it->title); + if (it->subtitle) + edje_object_part_text_set(it->base, "elm.text.sub", it->subtitle); + if (it->title_obj) + { + edje_object_part_swallow(it->base, "elm.swallow.title", it->title_obj); + if (it->titleobj_visible) + edje_object_signal_emit(it->base, "elm,state,show,title", "elm"); + else + edje_object_signal_emit(it->base, "elm,state,hide,title", "elm"); + } + if (it->icon) + edje_object_part_swallow(it->base, "elm.swallow.icon", it->icon); + EINA_LIST_FOREACH(it->fnbtn_list, bl, btn_det) + { + if (btn_det->btn_id == ELM_NAVIGATIONBAR_EX_BACK_BUTTON) + { + snprintf(buf_fn, sizeof(buf_fn), "navigationbar_backbutton/%s", elm_widget_style_get(obj)); + snprintf(buf, sizeof(buf), "elm.swallow.back"); + } + else + { + snprintf(buf_fn, sizeof(buf_fn), "navigationbar_functionbutton/%s", elm_widget_style_get(obj)); + snprintf(buf, sizeof(buf), "elm.swallow.btn%d", btn_det->btn_id); + } + elm_object_style_set(btn_det->btn, buf_fn); + edje_object_part_swallow(it->base, buf, btn_det->btn); + } + } + _sizing_eval(obj); +} + +static void +_sizing_eval(Evas_Object *obj) +{ + Widget_Data *wd = elm_widget_data_get(obj); + Evas_Coord minw = -1, minh = -1; + Eina_List *l; + Elm_Navigationbar_ex_Item *it; + if (!wd) return; + EINA_LIST_FOREACH(wd->stack, l, it) + { + if (it->minw > minw) minw = it->minw; + if (it->minh > minh) minh = it->minh; + } + evas_object_size_hint_min_set(obj, minw, minh); + evas_object_size_hint_max_set(obj, -1, -1); +} + +static void +_changed_size_hints(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__) +{ + Elm_Navigationbar_ex_Item *it = data; + Evas_Coord minw = -1, minh = -1; + evas_object_size_hint_min_get(it->content, &minw, &minh); + // FIXME: why is this needed? how does edje get this unswallowed or + // lose its callbacks to edje + edje_object_part_swallow(it->ct_base, "elm.swallow.content", it->content); + edje_object_size_min_calc(it->base, &it->minw, &it->minh); + _sizing_eval(it->obj); +} + +static void +_eval_top(Evas_Object *obj) +{ + Widget_Data *wd = elm_widget_data_get(obj); + Eina_Bool animate = EINA_TRUE; + Elm_Navigationbar_ex_Item *ittop = NULL; + if (!wd) return; + if (!wd->stack) return; + ittop = eina_list_last(wd->stack)->data; + if (ittop != wd->top) + { + Evas_Object *o1, *o2; + const char *onshow, *onhide; + + if (wd->top) + { + o1 = wd->top->ct_base; + o2 = wd->top->base;/*make use of the signals sent for animation*/ + + /*issue to fix, hide signal does not come for t_base, increasing time helps + in getting correct events in pop*/ + if (wd->disable_animation) + { + edje_object_signal_emit(o2, "elm,action,hide,noanimate", "elm"); + edje_object_signal_emit(o1, "elm,action,hide,noanimate", "elm"); + } + else if (wd->top->popme) + { + edje_object_signal_emit(o2, "elm,action,pop", "elm"); + edje_object_signal_emit(o1, "elm,action,pop", "elm"); + } + else + { + edje_object_signal_emit(o2, "elm,action,hide", "elm"); + edje_object_signal_emit(o1, "elm,action,hide", "elm"); + } + onhide = edje_object_data_get(o1, "onhide"); + if (onhide) + { + if (!strcmp(onhide, "raise")) { + evas_object_raise(o2); + evas_object_raise(o1); + } + else if (!strcmp(onhide, "lower")) { + evas_object_lower(o2); + evas_object_lower(o1); + } + } + } + else + { + animate = EINA_FALSE; + } + wd->oldtop = wd->top; + wd->top = ittop; + o1 = wd->top->ct_base; + o2 = wd->top->base; + evas_object_show(o2); + evas_object_show(o1); + + if ((!animate)||(wd->disable_animation)) + { + edje_object_signal_emit(o2, "elm,action,show,noanimate", "elm"); + edje_object_signal_emit(o1, "elm,action,show,noanimate", "elm"); + } + else if (wd->oldtop) + { + if (elm_object_focus_get(wd->oldtop->content)) + elm_widget_focused_object_clear(wd->oldtop->content); + if (wd->oldtop->popme) + { + edje_object_signal_emit(o2, "elm,action,show", "elm"); + edje_object_signal_emit(o1, "elm,action,show", "elm"); + } + else + { + edje_object_signal_emit(o2, "elm,action,push", "elm"); + edje_object_signal_emit(o1, "elm,action,push", "elm"); + } + } + else + { + edje_object_signal_emit(o2, "elm,action,push", "elm"); + edje_object_signal_emit(o1, "elm,action,push", "elm"); + } + onshow = edje_object_data_get(o1, "onshow"); + if (onshow) + { + if (!strcmp(onshow, "raise")) { + evas_object_raise(o2); + evas_object_raise(o1); + } + else if (!strcmp(onshow, "lower")) { + evas_object_lower(o2); + evas_object_lower(o1); + } + } + } +} + +static void +_move(void *data, Evas *e __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__) +{ + Widget_Data *wd = elm_widget_data_get(data); + Evas_Coord x, y; + Eina_List *l; + Elm_Navigationbar_ex_Item *it; + if (!wd) return; + evas_object_geometry_get(obj, &x, &y, NULL, NULL); + EINA_LIST_FOREACH(wd->stack, l, it) + evas_object_move(it->base, x, y); +} + +static void +_sub_del(void *data, Evas_Object *obj __UNUSED__, void *event_info) +{ + Widget_Data *wd = elm_widget_data_get(data); + Evas_Object *sub = event_info; + Eina_List *l,*list; + fn_button *btn_data; + Elm_Navigationbar_ex_Item *it; + if (!wd) return; + EINA_LIST_FOREACH(wd->stack, l, it) + { + if (it->content == sub) + { + wd->stack = eina_list_remove_list(wd->stack, l); + evas_object_event_callback_del_full + (sub, EVAS_CALLBACK_CHANGED_SIZE_HINTS, _changed_size_hints, it); + if (it->title) eina_stringshare_del(it->title); + if (it->subtitle) eina_stringshare_del(it->subtitle); + EINA_LIST_FOREACH(it->fnbtn_list, list, btn_data) + { + evas_object_del(btn_data->btn); + free(btn_data); + btn_data = NULL; + } + if (it->item_style) eina_stringshare_del(it->item_style); + if (it->title_obj) evas_object_del(it->title_obj); + if (it->icon) evas_object_del(it->icon); + evas_object_del(it->ct_base); + evas_object_del(it->base); + _eval_top(it->obj); + free(it); + return; + } + } +} + +static void +_resize(void *data, Evas *e __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__) +{ + Widget_Data *wd = elm_widget_data_get(data); + Evas_Coord w, h; + Eina_List *l; + Elm_Navigationbar_ex_Item *it; + if (!wd) return; + evas_object_geometry_get(obj, NULL, NULL, &w, &h); + EINA_LIST_FOREACH(wd->stack, l, it) evas_object_resize(it->base, w, h); +} + +static void +_signal_hide_finished(void *data, Evas_Object *obj __UNUSED__, const char *emission __UNUSED__, const char *source __UNUSED__) +{ + Elm_Navigationbar_ex_Item *it = data; + Evas_Object *obj2 = it->obj; + Widget_Data *wd = elm_widget_data_get(it->obj); + evas_object_hide(it->ct_base); + evas_object_hide(it->base); + edje_object_signal_emit(it->base, "elm,action,reset", "elm"); + edje_object_signal_emit(it->ct_base, "elm,action,reset", "elm"); + evas_object_smart_callback_call(obj2, SIG_HIDE_FINISHED, it->content); + edje_object_message_signal_process(it->base); + edje_object_message_signal_process(it->ct_base); + if (it->popme) + { + if (wd->del_on_pop) + { + evas_object_del(it->content); + } + else + { + _content_unset(it); + } + } + _sizing_eval(obj2); +} + +static void +_item_promote(Elm_Navigationbar_ex_Item* item) +{ + if (!item) return; + Widget_Data *wd = elm_widget_data_get(item->obj); + Eina_List *l; + Elm_Navigationbar_ex_Item *it; + if (!wd) return; + EINA_LIST_FOREACH(wd->stack, l, it) + { + if (it == item) + { + wd->stack = eina_list_remove_list(wd->stack, l); + wd->stack = eina_list_append(wd->stack, it); + _eval_top(it->obj); + return; + } + } +} + +static void +_process_deletions(Widget_Data *wd) +{ + if (!wd) return; + Elm_Navigationbar_ex_Item *it; + fn_button *btn_data; + Eina_List *list; + EINA_LIST_FREE(wd->to_delete, it) + { + evas_object_event_callback_del_full + (it->content, EVAS_CALLBACK_CHANGED_SIZE_HINTS, _changed_size_hints, it); + if (it->title) eina_stringshare_del(it->title); + if (it->subtitle) eina_stringshare_del(it->subtitle); + if (it->item_style) eina_stringshare_del(it->item_style); + EINA_LIST_FOREACH(it->fnbtn_list, list, btn_data) + { + evas_object_del(btn_data->btn); + free(btn_data); + btn_data = NULL; + } + if (it->title_obj) evas_object_del(it->title_obj); + if (it->content) evas_object_del(it->content); + if (it->icon) evas_object_del(it->icon); + evas_object_del(it->ct_base); + evas_object_del(it->base); + _eval_top(it->obj); + free(it); + it = NULL; + } +} + +static void +_switch_titleobj_visibility(void *data, Evas_Object *obj __UNUSED__, const char *emission __UNUSED__, const char *source __UNUSED__) +{ + Elm_Navigationbar_ex_Item *item = (Elm_Navigationbar_ex_Item *)data; + if(!item) return; + if(!item->title_obj) return; + if(!item->titleobj_visible) + { + edje_object_signal_emit(item->base, "elm,state,show,title", "elm"); + evas_object_smart_callback_call(item->obj, SIG_TITLE_OBJ_VISIBLE_CHANGED, (void *) EINA_TRUE); + item->titleobj_visible = EINA_TRUE; + } + else + { + edje_object_signal_emit(item->base, "elm,state,hide,title", "elm"); + evas_object_smart_callback_call(item->obj, SIG_TITLE_OBJ_VISIBLE_CHANGED, (void *) EINA_FALSE); + item->titleobj_visible = EINA_FALSE; + } +} + +static void +_emit_hook(Evas_Object *obj, const char *emission, const char *source) +{ + ELM_CHECK_WIDTYPE(obj, widtype); + + Widget_Data *wd; + Eina_List *last; + Elm_Navigationbar_ex_Item *it; + + wd = elm_widget_data_get(obj); + if (!wd) return; + + last = eina_list_last(wd->stack); + if (!last) return; + + it = eina_list_data_get(last); + if ((!it) || (!it->title_obj)) return; + + if (!strcmp(source, "elm")) + { + if (!strcmp(emission, "elm,state,hide,noanimate,title")) + it->titleobj_visible = EINA_FALSE; + else if (!strcmp(emission, "elm,state,show,noanimate,title")) + it->titleobj_visible = EINA_TRUE; + } + /*sending signal to top most item of the stack*/ + edje_object_signal_emit(it->base, emission, source); +} + +/** + * Add a new navigationbar_ex to the parent + * + * @param[in] parent The parent object + * @return The new object or NULL if it cannot be created + * + * @ingroup Navigationbar_ex + */ +EAPI Evas_Object * +elm_navigationbar_ex_add(Evas_Object *parent) +{ + Evas_Object *obj; + Evas *e; + Widget_Data *wd; + + EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL); + + wd = ELM_NEW(Widget_Data); + e = evas_object_evas_get(parent); + obj = elm_widget_add(e); + ELM_SET_WIDTYPE(widtype, "navigationbar_ex"); + elm_widget_type_set(obj, "navigationbar_ex"); + elm_widget_sub_object_add(parent, obj); + elm_widget_data_set(obj, wd); + elm_widget_del_hook_set(obj, _del_hook); + elm_widget_theme_hook_set(obj, _theme_hook); + elm_widget_can_focus_set(obj, EINA_FALSE); + elm_widget_signal_emit_hook_set(obj, _emit_hook); + wd->clip = evas_object_rectangle_add(e); + elm_widget_resize_object_set(obj, wd->clip); + elm_widget_sub_object_add(obj, wd->clip); + + wd->rect = evas_object_rectangle_add(e); + elm_widget_sub_object_add(obj, wd->rect); + evas_object_color_set(wd->rect, 255, 255, 255, 0); + evas_object_clip_set(wd->rect, wd->clip); + + evas_object_event_callback_add(obj, EVAS_CALLBACK_MOVE, _move, obj); + evas_object_event_callback_add(obj, EVAS_CALLBACK_RESIZE, _resize, obj); + + evas_object_smart_callback_add(obj, "sub-object-del", _sub_del, obj); + wd->del_on_pop = EINA_TRUE; + _sizing_eval(obj); + return obj; +} + +/** + * Push an object along with its style to the top of the Navigationbar_ex stack (and show it) + * + * The object pushed becomes a child of the Navigationbar_ex and will be controlled + * it will be deleted when the Navigationbar_ex is deleted or when content is popped(depending on del_ + * on_pop variable). + * + * @param[in] obj The Navigationbar_ex object + * @param[in] content The object to push + * @param[in] item_style The style of the page + * @return The Navigationbar_ex Item or NULL + * @ingroup Navigationbar_ex + */ +EAPI Elm_Navigationbar_ex_Item* +elm_navigationbar_ex_item_push(Evas_Object *obj, Evas_Object *content, const char* item_style) +{ + ELM_CHECK_WIDTYPE(obj, widtype)NULL; + Widget_Data *wd = elm_widget_data_get(obj); + Elm_Navigationbar_ex_Item *it; + Evas_Coord x, y, w, h; + char buf[1024]; + if (!wd) return NULL; + if (!content) return NULL; + if (!item_style) return NULL; + it = ELM_NEW(Elm_Navigationbar_ex_Item); + if (!it) return NULL; + it->obj = obj; + it->content = content; + it->base = edje_object_add(evas_object_evas_get(obj)); + it->ct_base = edje_object_add(evas_object_evas_get(obj)); + it->titleobj_visible = EINA_TRUE; + + evas_object_smart_member_add(it->base, obj); + evas_object_smart_member_add(it->ct_base, obj); + + evas_object_geometry_get(obj, &x, &y, &w, &h); + evas_object_move(it->base, x, y); + evas_object_resize(it->base, w, h); + evas_object_clip_set(it->base, wd->clip); + + elm_widget_sub_object_add(obj, it->base); + elm_widget_sub_object_add(obj, it->ct_base); + + elm_widget_sub_object_add(obj, it->content); + + _elm_theme_object_set(obj, it->ct_base, "navigationbar_ex", "content", elm_widget_style_get(obj)); + + strncpy(buf, "item/", sizeof(buf)); + strncat(buf, item_style, sizeof(buf) - strlen(buf)); + eina_stringshare_replace(&it->item_style, item_style); + _elm_theme_object_set(obj, it->base, "navigationbar_ex", buf, elm_widget_style_get(obj)); + + + edje_object_part_swallow(it->base, "elm.swallow.content", it->ct_base); + + edje_object_signal_callback_add(it->ct_base, "elm,action,hide,finished", "", + _signal_hide_finished, it); + evas_object_event_callback_add(it->content, + EVAS_CALLBACK_CHANGED_SIZE_HINTS, + _changed_size_hints, it); + edje_object_part_swallow(it->ct_base, "elm.swallow.content", it->content); + edje_object_size_min_calc(it->base, &it->minw, &it->minh); + evas_object_data_set(it->base, "_elm_leaveme", obj); + evas_object_show(it->content); + wd->stack = eina_list_append(wd->stack, it); + _eval_top(obj); + _sizing_eval(obj); + return it; +} + +/** + * Set the title string for the pushed Item. + * @param[in] item The Navigationbar_ex Item + * @param[in] title The title string + * + * @ingroup Navigationbar_ex + */ +EAPI void +elm_navigationbar_ex_item_title_label_set( Elm_Navigationbar_ex_Item* item, const char *title) +{ + if (!item) return; + if (!eina_stringshare_replace(&item->title, title)) return; + if (item->base) + { + edje_object_part_text_set(item->base, "elm.text", item->title); + } +} + +/** + * Return the title string of the pushed item. + * + * @param[in] item The Navigationbar_ex Item + * @return The title string or NULL if none + * + * @ingroup Navigationbar_ex + */ +EAPI const char * +elm_navigationbar_ex_item_title_label_get(Elm_Navigationbar_ex_Item* item) +{ + if(!item) return NULL; + return item->title; +} + +/** + * Set the sub title string for the pushed content + * + * @param[in] item The Navigationbar_ex Item + * @param[in] subtitle The subtitle string + * + * @ingroup Navigationbar_ex + */ +EAPI void +elm_navigationbar_ex_item_subtitle_label_set( Elm_Navigationbar_ex_Item* item, const char *subtitle) +{ + if (!item) return; + if (!eina_stringshare_replace(&item->subtitle, subtitle)) return; + if (item->base) + edje_object_part_text_set(item->base, "elm.text.sub", item->subtitle); +} + +/** + * Return the subtitle string of the pushed content + * + * @param[in] item The Navigationbar_ex Item + * @return The subtitle string or NULL if none + * + * @ingroup Navigationbar_ex + */ +EAPI const char * +elm_navigationbar_ex_item_subtitle_label_get(Elm_Navigationbar_ex_Item* item) +{ + if (!item) return NULL; + return item->subtitle; +} + +/** + * Set's the icon object of the pushed content + * + * @param[in] item The Navigationbar_ex Item + * @param[in] The icon object or NULL if none + * + *@ingroup Navigationbar_ex + */ +EAPI void +elm_navigationbar_ex_item_icon_set(Elm_Navigationbar_ex_Item* item, Evas_Object *icon) +{ + if (!item) return; + if (item->icon == icon) return; + if (item->icon) evas_object_del(item->icon); + item->icon = icon; + if(icon) + { + edje_object_part_swallow(item->base, "elm.swallow.icon", icon); + elm_widget_sub_object_add(item->obj, icon); + edje_object_signal_emit(item->base, "elm,state,icon,visible", "elm"); + edje_object_message_signal_process(item->base); + } + else + edje_object_signal_emit(item->base, "elm,state,icon,hidden", "elm"); +} + +/** + * Return the icon object of the pushed content + * + * @param[in] item The Navigationbar_ex Item + * @return The icon object or NULL if none + * + * @ingroup Navigationbar_ex + */ +EAPI Evas_Object * +elm_navigationbar_ex_item_icon_get(Elm_Navigationbar_ex_Item* item) +{ + if (!item) return NULL; + return item->icon; +} + + +/** + * Set the button object of the pushed content + * + * @param[in] item The Navigationbar_ex Item + * @param[in] btn_label The button label + * @param[in] icon The button icon + * @param[in] button_type Indicates the position[use macros of type Elm_Navi_ex_Button_Type + * if more function buttons are required you can use values ELM_NAVIGATIONBAR_EX_MAX and more] + * @param[in] func Callback function called when button is clicked. + * @param[in] data Callback data that would be sent when button is clicked. + * @ingroup Navigationbar_ex + */ +EAPI void +elm_navigationbar_ex_item_title_button_set(Elm_Navigationbar_ex_Item* item, char *btn_label, Evas_Object *icon, int button_type, Evas_Smart_Cb func, const void *data) +{ + if (!item) return; + Eina_List *bl; + Evas_Object *btn; + char buf[1024],theme[1024]; + fn_button *btn_det = NULL; + EINA_LIST_FOREACH(item->fnbtn_list, bl, btn_det) + { + if (btn_det->btn_id == button_type) + { + evas_object_del(btn_det->btn); + free(btn_det); + btn_det = NULL; + item->fnbtn_list = eina_list_remove_list(item->fnbtn_list, bl); + } + } + btn = elm_button_add(item->obj); + btn_det = ELM_NEW(btn_det); + if (!btn_det) return; + if (button_type == ELM_NAVIGATIONBAR_EX_BACK_BUTTON) + { + snprintf(theme, sizeof(theme), "navigationbar_backbutton/%s", elm_widget_style_get(item->obj)); + elm_object_style_set(btn, theme); + snprintf(buf, sizeof(buf), "elm.swallow.back"); + } + else + { + snprintf(theme, sizeof(theme), "navigationbar_functionbutton/%s", elm_widget_style_get(item->obj)); + elm_object_style_set(btn, theme); + snprintf(buf, sizeof(buf), "elm.swallow.btn%d", button_type); + } + if (btn_label) + elm_object_text_set(btn, btn_label); + if (icon) + elm_object_content_set(btn, icon); + elm_object_focus_allow_set(btn, EINA_FALSE); + evas_object_smart_callback_add(btn, "clicked", func, data); + edje_object_part_swallow(item->base, buf, btn); + elm_widget_sub_object_add(item->obj, btn); + btn_det->btn = btn; + btn_det->btn_id = button_type; + item->fnbtn_list = eina_list_append(item->fnbtn_list, btn_det); +} + +/** + * Return the button object of the pushed content + * + * @param[in] item The Navigationbar_ex Item + * @param[in] button_type Indicates the position + * @return The button object or NULL if none + * + * @ingroup Navigationbar_ex + */ +EAPI Evas_Object * +elm_navigationbar_ex_item_title_button_get(Elm_Navigationbar_ex_Item* item, int button_type) +{ + if (!item) return NULL; + fn_button *btn_det; + Eina_List *bl; + EINA_LIST_FOREACH(item->fnbtn_list, bl, btn_det) + { + if (btn_det->btn_id == button_type) + return btn_det->btn; + } + return NULL; +} + +/** + * Unset the button object of the pushed content + * + * @param[in] item The Navigationbar_ex Item + * @param[in] button_type Indicates the position + * @return The button object or NULL if none + * + * @ingroup Navigationbar_ex + */ +EAPI Evas_Object * +elm_navigationbar_ex_item_title_button_unset(Elm_Navigationbar_ex_Item* item, int button_type) +{ + if (!item) return NULL; + fn_button *btn_det; + Eina_List *bl; + Evas_Object *btn_ret; + EINA_LIST_FOREACH(item->fnbtn_list, bl, btn_det) + { + if (btn_det->btn_id == button_type) + { + btn_ret = btn_det->btn; + elm_widget_sub_object_del(item->obj,btn_det->btn); + edje_object_part_unswallow(item->base,btn_det->btn); + item->fnbtn_list = eina_list_remove_list(item->fnbtn_list, bl); + btn_det->btn = NULL; + return btn_ret; + } + } + return NULL; +} + +/** + * Sets a title object for the Item + * @param[in] item The Navigationbar_ex Item + * @param[in] title_obj Title object (normally segment_control/searchbar) + * + * @ingroup Navigationbar_ex + */ +EAPI void +elm_navigationbar_ex_item_title_object_set(Elm_Navigationbar_ex_Item* item, Evas_Object *title_obj) +{ + if (!item) return; + if (item->title_obj) evas_object_del(item->title_obj); + item->title_obj = title_obj; + if (title_obj) + { + elm_widget_sub_object_add(item->obj,title_obj); + edje_object_part_swallow(item->base, "elm.swallow.title", title_obj); + edje_object_signal_callback_add(item->base, "elm,action,clicked", "elm", + _switch_titleobj_visibility, item); + } + _sizing_eval(item->obj); +} + +/** + * Hides the title area of the item. + * @param[in] item The Navigationbar_ex Item + * @param[in] hidden if EINA_TRUE the title area is hidden else its shown. + * + * @ingroup Navigationbar_ex + */ + +EAPI void +elm_navigationbar_ex_item_title_hidden_set(Elm_Navigationbar_ex_Item* item, Eina_Bool hidden) +{ + if (!item) return; + if (hidden) edje_object_signal_emit(item->base, "elm,state,item,moveup", "elm"); + else edje_object_signal_emit(item->base, "elm,state,item,movedown", "elm"); + _sizing_eval(item->obj); +} + +/** + * Unsets a title object for the item, the return object has to be deleted + * by application if not added again in to navigationbar. + * + * @param[in] item The Navigationbar_ex Item + * @return The title object or NULL if none is set + * + * @ingroup Navigationbar_ex + */ +EAPI Evas_Object* +elm_navigationbar_ex_item_title_object_unset(Elm_Navigationbar_ex_Item* item) +{ + if (!item) return NULL; + Evas_Object *title_obj=NULL; + if (!item->title_obj) return NULL; + title_obj = item->title_obj; + edje_object_signal_callback_del(item->base, "elm,action,clicked", "elm", + _switch_titleobj_visibility); + elm_widget_sub_object_del(item->obj,item->title_obj); + edje_object_part_unswallow(item->base,item->title_obj); + item->title_obj = NULL; + return title_obj; +} + +/** + * Returns the title object of the pushed content. + * + * @param[in] item The Navigationbar_ex Item + * @return The title object or NULL if none is set + * + * @ingroup Navigationbar_ex + */ +EAPI Evas_Object* +elm_navigationbar_ex_item_title_object_get(Elm_Navigationbar_ex_Item* item) +{ + if (!item) return NULL; + return item->title_obj; +} + + +/** + * Unsets the content of the item, the return object has to be deleted + * by application if not added again in to navigationbar, when the content + * is unset the corresponding item would be deleted, when this content is pushed again + * a new item would be created again. + * + * @param[in] item The Navigationbar_ex Item + * @return The content object or NULL if none is set + * + * @ingroup Navigationbar_ex + */ +EAPI Evas_Object * +elm_navigationbar_ex_item_content_unset(Elm_Navigationbar_ex_Item* item) +{ + if (!item) return NULL; + Evas_Object *content = _content_unset(item); + return content; +} + +/** + * Returns the content of the item. + * + * @param[in] item The Navigationbar_ex Item + * @return The content object or NULL if none is set + * + * @ingroup Navigationbar_ex + */ +EAPI Evas_Object * +elm_navigationbar_ex_item_content_get(Elm_Navigationbar_ex_Item* item) +{ + if (!item) return NULL; + return item->content; +} + +/** + * Set whether the content pushed has to be deleted on pop. + * if false the item is not deleted but only removed from the stack + * the pointer of the content is sent along with hide,finished signal. + * + * @param[in] obj The Navigationbar_ex object. + * @param[in] del_on_pop if set the content is deleted on pop else unset, by default the value is EINA_TRUE. + * + * @ingroup Navigationbar_ex + */ +EAPI void +elm_navigationbar_ex_delete_on_pop_set(Evas_Object *obj, Eina_Bool del_on_pop) +{ + ELM_CHECK_WIDTYPE(obj, widtype); + Widget_Data *wd = elm_widget_data_get(obj); + if (!wd) return; + wd->del_on_pop = del_on_pop; +} + +/** + * Sets the style of the navigationbar item. + * @param[in] item The Navigationbar_ex Item + * @param[in] item_style Navigationbar Item style, this can be used when the style of the item has to be dynamically set. + * + * @ingroup Navigationbar_ex + */ +EAPI void +elm_navigationbar_ex_item_style_set(Elm_Navigationbar_ex_Item* item, const char* item_style) +{ + if (!item) return; + if(!item_style) return; + char buf[1024]; + char buf_fn[1024]; + Eina_List *bl; + fn_button *btn_det; + strncpy(buf, "item/", sizeof(buf)); + strncat(buf, item_style, sizeof(buf) - strlen(buf)); + if (!eina_stringshare_replace(&item->item_style, item_style)) return; + _elm_theme_object_set(item->obj, item->base, "navigationbar_ex", buf, elm_widget_style_get(item->obj)); + if (item->title) + edje_object_part_text_set(item->base, "elm.text", item->title); + if (item->subtitle) + edje_object_part_text_set(item->base, "elm.text.sub", item->subtitle); + if (item->fnbtn_list) + { + EINA_LIST_FOREACH(item->fnbtn_list, bl, btn_det) + { + if (btn_det->btn_id == ELM_NAVIGATIONBAR_EX_BACK_BUTTON) + { + snprintf(buf_fn, sizeof(buf_fn), "navigationbar_backbutton/%s", elm_widget_style_get(item->obj)); + elm_object_style_set(btn_det->btn, buf_fn); + } + else + { + snprintf(buf_fn, sizeof(buf_fn), "navigationbar_functionbutton/%s", elm_widget_style_get(item->obj)); + elm_object_style_set(btn_det->btn, buf_fn); + } + } + } +} + +/** + * Returns the style of the item. + * + * @param[in] item The Navigationbar_ex Item + * @return The item style. + * + * @ingroup Navigationbar_ex + */ +EAPI const char* +elm_navigationbar_ex_item_style_get(Elm_Navigationbar_ex_Item* item) +{ + if (!item) return NULL; + return item->item_style; +} + + +/** + * Promote an object already in the stack to the top of the stack + * + * This will take the indicated object and promote it to the top of the stack + * as if it had been pushed there. The object must already be inside the + * Navigationbar_ex stack to work. + * + * @param[in] item The Navigationbar_ex item to promote. + * @ingroup Navigationbar_ex + */ +EAPI void +elm_navigationbar_ex_item_promote(Elm_Navigationbar_ex_Item* item) +{ + if (!item) return; + _item_promote(item); +} + +/** + * Pop to the inputted Navigationbar_ex item + * the rest of the items are deleted. + * + * @param[in] item The Navigationbar_ex item + * + * @ingroup Navigationbar_ex + */ +EAPI void +elm_navigationbar_ex_to_item_pop(Elm_Navigationbar_ex_Item* item) +{ + if (!item) return; + Widget_Data *wd = elm_widget_data_get(item->obj); + Elm_Navigationbar_ex_Item *it = NULL; + Eina_List *list; + if (!wd) return; + if (!wd->stack) return; + it = eina_list_last(wd->stack)->data; + it->popme = EINA_TRUE; + list = eina_list_last(wd->stack); + if (list) + { + while (list) + { + it = list->data; + if (it != item) + { + wd->to_delete = eina_list_append(wd->to_delete, it); + wd->stack = eina_list_remove_list(wd->stack, list); + } + else + break; + + list = list->prev; + } + } + _eval_top(it->obj); + if (wd->to_delete) + _process_deletions(wd); +} + +/** + * Pop the object that is on top of the Navigationbar_ex stack + * This pops the object that is on top (visible) in the navigationbar, makes it disappear, then deletes/unsets the object + * based on del_on_pop variable. + * The object that was underneath it on the stack will become visible. + * + * @param[in] obj The Navigationbar_ex object + * + * @ingroup Navigationbar_ex + */ +EAPI void +elm_navigationbar_ex_item_pop(Evas_Object *obj) +{ + ELM_CHECK_WIDTYPE(obj, widtype); + Widget_Data *wd = elm_widget_data_get(obj); + Eina_List *ll; + Elm_Navigationbar_ex_Item *it; + if (!wd) return; + if (!wd->stack) return; + it = eina_list_last(wd->stack)->data; + it->popme = EINA_TRUE; + ll = eina_list_last(wd->stack); + if (ll) + { + ll = ll->prev; + if (!ll) + { + + Evas_Object *o, *o2; + const char *onhide; + + wd->top = it; + o = wd->top->ct_base; + o2 = wd->top->base; + + edje_object_signal_emit(o2, "elm,action,pop", "elm"); + edje_object_signal_emit(o, "elm,action,pop", "elm"); + onhide = edje_object_data_get(o, "onhide"); + if (onhide) + { + if (!strcmp(onhide, "raise")) + { + evas_object_raise(o2); + evas_object_raise(o); + } + else if (!strcmp(onhide, "lower")) + { + evas_object_lower(o2); + evas_object_lower(o); + } + } + wd->top = NULL; + } + else + { + it = ll->data; + _item_promote(it); + } + } +} + + +/** + * Return the item at the bottom of the Navigationbar_ex stack + * + * @param[in] obj The Navigationbar_ex object + * @return The bottom item or NULL if none + * + * @ingroup Navigationbar_ex + */ +EAPI Elm_Navigationbar_ex_Item* +elm_navigationbar_ex_item_bottom_get(const Evas_Object *obj) +{ + ELM_CHECK_WIDTYPE(obj, widtype) NULL; + Widget_Data *wd = elm_widget_data_get(obj); + Elm_Navigationbar_ex_Item *it; + if (!wd) return NULL; + if (!wd->stack) return NULL; + it = wd->stack->data; + return it; +} + +/** + * Return the item at the top of the Navigationbar_ex stack + * + * @param[in] obj The Navigationbar_ex object + * @return The top object or NULL if none + * + * @ingroup Navigationbar_ex + */ +EAPI Elm_Navigationbar_ex_Item* +elm_navigationbar_ex_item_top_get(const Evas_Object *obj) +{ + ELM_CHECK_WIDTYPE(obj, widtype) NULL; + Widget_Data *wd = elm_widget_data_get(obj); + Elm_Navigationbar_ex_Item *it; + if (!wd) return NULL; + if (!wd->stack) return NULL; + it = eina_list_last(wd->stack)->data; + return it; +} + +/** + * This disables content animation on push/pop. + * + * @param obj The navigationbar_ex object + * @param disable if EINA_TRUE animation is disabled. + * + * @ingroup Navigationbar_ex + */ +EAPI void +elm_navigationbar_ex_animation_disable_set(Evas_Object *obj, Eina_Bool disable) +{ + ELM_CHECK_WIDTYPE(obj, widtype); + Widget_Data *wd = elm_widget_data_get(obj); + wd->disable_animation = disable; +} + +/** + * This shows/hides title object area. + * + * @param[in] item The Navigationbar_ex item + * @param[in] visible if EINA_TRUE title object is shown else its hidden. + * @ingroup Navigationbar_ex + */ +EAPI void +elm_navigationbar_ex_title_object_visible_set(Elm_Navigationbar_ex_Item* item, Eina_Bool visible) +{ + if(!item) return; + if(!item->title_obj) return; + if(visible) + { + edje_object_signal_emit(item->base, "elm,state,show,title", "elm"); + evas_object_smart_callback_call(item->obj, SIG_TITLE_OBJ_VISIBLE_CHANGED, (void *) EINA_TRUE); + } + else + { + edje_object_signal_emit(item->base, "elm,state,hide,title", "elm"); + evas_object_smart_callback_call(item->obj, SIG_TITLE_OBJ_VISIBLE_CHANGED, (void *) EINA_FALSE); + } + item->titleobj_visible = visible; +} + +/** + * This gets the status whether title object is shown/hidden. + * + * @param[in] item The Navigationbar_ex item + * @return The status whether title object is shown/hidden. + * @ingroup Navigationbar_ex + */ +Eina_Bool +elm_navigationbar_ex_title_object_visible_get(Elm_Navigationbar_ex_Item* item) +{ + if (!item) return EINA_FALSE; + return item->titleobj_visible; +} + + + diff --git a/src/lib/elc_player.c b/src/lib/elc_player.c index 89f8925..9d90e43 100644 --- a/src/lib/elc_player.c +++ b/src/lib/elc_player.c @@ -456,7 +456,7 @@ _double_to_time(double value) static void _content_set_hook(Evas_Object *obj, const char *part, Evas_Object *content) { - if (part && strcmp(part, "video")) return; + if (!part || strcmp(part, "video")) return; #ifdef HAVE_EMOTION ELM_CHECK_WIDTYPE(obj, widtype); Widget_Data *wd = elm_widget_data_get(obj); diff --git a/src/lib/elm_bg.c b/src/lib/elm_bg.c index 99d4157..dd463e9 100644 --- a/src/lib/elm_bg.c +++ b/src/lib/elm_bg.c @@ -122,7 +122,7 @@ _content_set_hook(Evas_Object *obj, const char *part, Evas_Object *content) ELM_CHECK_WIDTYPE(obj, widtype); Widget_Data *wd; - if (part && strcmp(part, "overlay")) return; + if (!part || strcmp(part, "overlay")) return; wd = elm_widget_data_get(obj); if (!wd) return; @@ -146,7 +146,7 @@ _content_get_hook(const Evas_Object *obj, const char *part) { ELM_CHECK_WIDTYPE(obj, widtype) NULL; Widget_Data *wd; - if (part && strcmp(part, "overlay")) return NULL; + if (!part || strcmp(part, "overlay")) return NULL; wd = elm_widget_data_get(obj); if (!wd) return NULL; return wd->overlay; @@ -158,7 +158,7 @@ _content_unset_hook(Evas_Object *obj, const char *part) ELM_CHECK_WIDTYPE(obj, widtype) NULL; Widget_Data *wd; Evas_Object *overlay; - if (part && strcmp(part, "overlay")) return NULL; + if (!part || strcmp(part, "overlay")) return NULL; wd = elm_widget_data_get(obj); if (!wd || !wd->overlay) return NULL; overlay = wd->overlay; diff --git a/src/lib/elm_button.c b/src/lib/elm_button.c index 395159f..b846eb8 100644 --- a/src/lib/elm_button.c +++ b/src/lib/elm_button.c @@ -518,8 +518,6 @@ elm_button_add(Evas_Object *parent) ELM_ACCESS_TYPE, E_("Button")); _elm_access_callback_set(_elm_access_object_get(obj), ELM_ACCESS_INFO, _access_info_cb, obj); - _elm_access_callback_set(_elm_access_object_get(obj), - ELM_ACCESS_STATE, _access_state_cb, obj); return obj; } diff --git a/src/lib/elm_check.c b/src/lib/elm_check.c index 77bef04..53765ea 100644 --- a/src/lib/elm_check.c +++ b/src/lib/elm_check.c @@ -238,7 +238,7 @@ _content_set_hook(Evas_Object *obj, const char *part, Evas_Object *content) ELM_CHECK_WIDTYPE(obj, widtype); Widget_Data *wd; - if (part && strcmp(part, "icon")) return; + if (strcmp(part, "icon")) return; wd = elm_widget_data_get(obj); if (!wd) return; if (wd->icon == content) return; @@ -263,7 +263,7 @@ _content_get_hook(const Evas_Object *obj, const char *part) ELM_CHECK_WIDTYPE(obj, widtype) NULL; Widget_Data *wd; - if (part && strcmp(part, "icon")) return NULL; + if (strcmp(part, "icon")) return NULL; wd = elm_widget_data_get(obj); if (!wd) return NULL; return wd->icon; @@ -275,7 +275,7 @@ _content_unset_hook(Evas_Object *obj, const char *part) ELM_CHECK_WIDTYPE(obj, widtype) NULL; Widget_Data *wd; - if (part && strcmp(part, "icon")) return NULL; + if (strcmp(part, "icon")) return NULL; wd = elm_widget_data_get(obj); if (!wd) return NULL; if (!wd->icon) return NULL; diff --git a/src/lib/elm_cnp_helper.c b/src/lib/elm_cnp_helper.c index 62c8198..59554ca 100644 --- a/src/lib/elm_cnp_helper.c +++ b/src/lib/elm_cnp_helper.c @@ -1181,16 +1181,6 @@ _convert_to_edje(Eina_List* nodes) } Eina_Bool -elm_selection_selection_has_owner(void) -{ -#ifdef HAVE_ELEMENTARY_X - return !!ecore_x_selection_owner_get(clipboard_atom); -#else - return EINA_FALSE; -#endif -} - -Eina_Bool elm_selection_set(Elm_Sel_Type selection, Evas_Object *widget, Elm_Sel_Format format, const char *selbuf) { #ifdef HAVE_ELEMENTARY_X @@ -1542,7 +1532,7 @@ entry_insert_filter(Evas_Object* entry, char* str) char *insertStr = str; // if entry has text only set then remove item tags - if (elm_entry_cnp_mode_get(entry) != ELM_CNP_MODE_MARKUP) + if (elm_entry_cnp_textonly_get(entry)) { while (EINA_TRUE) { @@ -1610,8 +1600,7 @@ notify_handler_text(Cnp_Selection *sel, Ecore_X_Event_Selection_Notify *notify) { Elm_Selection_Data ddata; - str = malloc(data->length); - memcpy(str, data->data, data->length); + str = strdup(data->data); ddata.x = ddata.y = 0; ddata.format = ELM_SEL_FORMAT_TEXT; ddata.data = str; @@ -2163,7 +2152,7 @@ pasteimage_append(Paste_Image *pi, Evas_Object *entry) if (!pi) return EINA_FALSE; if (!entry) return EINA_FALSE; - if (elm_entry_cnp_mode_get(entry) != ELM_CNP_MODE_MARKUP) return EINA_FALSE; + if (elm_entry_cnp_textonly_get(entry)) return EINA_FALSE; pasteimage_provider_set(entry); diff --git a/src/lib/elm_colorpalette.c b/src/lib/elm_colorpalette.c index 3294c5b..b1f417d 100644 --- a/src/lib/elm_colorpalette.c +++ b/src/lib/elm_colorpalette.c @@ -2,6 +2,19 @@ #include "elm_priv.h" #include +/** + * @defgroup Colorpalette Colorpalette + * @ingroup Elementary + * + * Using colorpalette, you can select a color by clicking + * a color rectangle on the colorpalette. + * + * Smart callbacks that you can add are: + * + * clicked - This signal is sent when a color rectangle is clicked. + * + */ + #define MAX_NUM_COLORS 30 typedef struct _Colorpalette_Item Colorpalette_Item; @@ -220,6 +233,14 @@ _color_parse(const char *str, unsigned char *r, unsigned char *g, unsigned char *b = (*b * 0xff) / 255; } +/** + * Add a new colorpalette to the parent. + * + * @param parent The parent object + * @return The new object or NULL if it cannot be created + * + * @ingroup Colorpalette + */ EAPI Evas_Object *elm_colorpalette_add(Evas_Object *parent) { Evas_Object *obj = NULL; @@ -275,6 +296,15 @@ EAPI Evas_Object *elm_colorpalette_add(Evas_Object *parent) } +/** + * Set colors to the colorpalette. + * + * @param obj Colorpalette object + * @param color_num number of the colors on the colorpalette + * @param color Color lists + * + * @ingroup Colorpalette + */ EAPI void elm_colorpalette_color_set(Evas_Object *obj, int color_num, Elm_Colorpalette_Color *color) { ELM_CHECK_WIDTYPE(obj, widtype); @@ -300,6 +330,15 @@ EAPI void elm_colorpalette_color_set(Evas_Object *obj, int color_num, Elm_Colorp _sizing_eval(obj); } +/** + * Set row/column value for the colorpalette. + * + * @param obj Colorpalette object + * @param row row value for the colorpalette + * @param col column value for the colorpalette + * + * @ingroup Colorpalette + */ EAPI void elm_colorpalette_row_column_set(Evas_Object *obj, int row, int col) { ELM_CHECK_WIDTYPE(obj, widtype); diff --git a/src/lib/elm_colorselector.c b/src/lib/elm_colorselector.c index ebbfb64..ca7ec0a 100644 --- a/src/lib/elm_colorselector.c +++ b/src/lib/elm_colorselector.c @@ -406,11 +406,7 @@ _draw_rects(void *data, double x) break; case ALPHA: wd->a = 255.0 * x; - evas_object_color_set(wd->cp[3]->arrow, - (wd->er * wd->a) / 255, - (wd->eg * wd->a) / 255, - (wd->eb * wd->a) / 255, - wd->a); + evas_object_color_set(wd->cp[3]->arrow, wd->er, wd->eg, wd->eb, wd->a); break; default: break; diff --git a/src/lib/elm_controlbar.c b/src/lib/elm_controlbar.c index 50b0351..9148924 100644 --- a/src/lib/elm_controlbar.c +++ b/src/lib/elm_controlbar.c @@ -1,3 +1,11 @@ +/** + * @defgroup Controlbar Controlbar + * @ingroup Elementary + * + * This is a Controlbar. It can contain label and icon objects. + * In edit mode, you can change the location of items. + */ + #include #include @@ -91,7 +99,7 @@ struct _Elm_Controlbar_Item }; static const char *widtype = NULL; - +// prototype static void _sizing_eval(Evas_Object * obj); static int _check_bar_item_number(Widget_Data *wd); static void _select_box(Elm_Controlbar_Item * it); @@ -99,6 +107,12 @@ static void _cancel_selected_box(Widget_Data *wd); static void _check_toolbar_line(Widget_Data *wd); static Eina_Bool _press_box(Elm_Controlbar_Item * it); +/////////////////////////////////////////////////////////////////// +// +// Smart Object basic function +// +//////////////////////////////////////////////////////////////////// + static void _controlbar_move(void *data, Evas_Object * obj __UNUSED__) { @@ -111,7 +125,7 @@ _controlbar_move(void *data, Evas_Object * obj __UNUSED__) wd->x = x; wd->y = y; evas_object_move(wd->edje, x, y); - evas_object_geometry_get(elm_object_part_content_get(wd->edje, "bg_image"), NULL, NULL, &width, NULL); + evas_object_geometry_get(elm_object_content_part_get(wd->edje, "bg_image"), NULL, NULL, &width, NULL); evas_object_geometry_get(wd->edje, &x_, &y_, NULL, NULL); } @@ -127,7 +141,7 @@ _controlbar_resize(void *data, Evas_Object * obj __UNUSED__) wd->w = w; wd->h = h; evas_object_resize(wd->edje, w, h); - evas_object_geometry_get(elm_object_part_content_get(wd->edje, "bg_image"), NULL, NULL, &width, &height); + evas_object_geometry_get(elm_object_content_part_get(wd->edje, "bg_image"), NULL, NULL, &width, &height); evas_object_geometry_get(wd->edje, &x_, &y_, NULL, NULL); } @@ -248,9 +262,9 @@ _theme_hook(Evas_Object * obj) Widget_Data * wd = elm_widget_data_get(obj); if (!wd) return; elm_layout_theme_set(wd->edje, "controlbar", "base", - elm_widget_style_get(obj)); + elm_widget_style_get(obj)); elm_layout_theme_set(wd->bg, "controlbar", "background", - elm_widget_style_get(obj)); + elm_widget_style_get(obj)); evas_object_color_get(wd->bg, &r, &g, &b, NULL); evas_object_color_set(wd->bg, r, g, b, (int)(255 * wd->alpha / 100)); EINA_LIST_FOREACH(wd->items, l, item) @@ -299,6 +313,12 @@ _sizing_eval(Evas_Object * obj) _controlbar_resize(obj, obj); } +///////////////////////////////////////////////////////////// +// +// animation function +// +///////////////////////////////////////////////////////////// + static Eina_Bool _move_evas_object(void *data) { @@ -393,6 +413,12 @@ _move_object_with_animation(Evas_Object * obj, Evas_Coord x, Evas_Coord y, return ad; } +///////////////////////////////////////////////////////////// +// +// callback function +// +///////////////////////////////////////////////////////////// + static int _sort_cb(const void *d1, const void *d2) { @@ -404,6 +430,12 @@ _sort_cb(const void *d1, const void *d2) return item1->order > item2->order ? 1 : -1; } +/////////////////////////////////////////////////////////////////// +// +// basic utility function +// +//////////////////////////////////////////////////////////////////// + static Eina_Bool _check_item(Widget_Data *wd, Elm_Controlbar_Item *item) { @@ -414,7 +446,7 @@ _check_item(Widget_Data *wd, Elm_Controlbar_Item *item) if (!wd->items) return EINA_FALSE; EINA_LIST_FOREACH(wd->items, l, it) - if (it == item) return EINA_TRUE; + if (it == item) return EINA_TRUE; return EINA_FALSE; } @@ -674,7 +706,7 @@ _move_selected_box(Widget_Data *wd, Elm_Controlbar_Item * fit, Elm_Controlbar_It wd->ad = NULL; } wd->ad = _move_object_with_animation(wd->edje, fx, fy, fw, fh, tx, ty, tw, th, - 0.3, _move_evas_object, _end_selected_box, wd); + 0.3, _move_evas_object, _end_selected_box, wd); } static void @@ -693,7 +725,7 @@ _select_box(Elm_Controlbar_Item * it) if (it->style == TABBAR) { - content = elm_object_part_content_unset(wd->edje, "elm.swallow.view"); + content = elm_object_content_part_unset(wd->edje, "elm.swallow.view"); if (content) evas_object_hide(content); EINA_LIST_FOREACH(wd->items, l, item){ @@ -720,7 +752,7 @@ _select_box(Elm_Controlbar_Item * it) evas_object_smart_callback_call(it->obj, "view,change,before", it); } - elm_object_part_content_set(wd->edje, "elm.swallow.view", it->view); + elm_object_content_part_set(wd->edje, "elm.swallow.view", it->view); } else if (it->style == TOOLBAR) { @@ -850,7 +882,7 @@ _create_item_layout(Evas_Object * parent, Elm_Controlbar_Item * it, Evas_Object *item = elm_button_add(parent); if (*item == NULL) return NULL; elm_object_style_set(*item, "controlbar/vertical"); - elm_object_part_content_set(obj, "item", *item); + elm_object_content_part_set(obj, "item", *item); if (it->text) elm_object_text_set(*item, it->text); @@ -955,9 +987,9 @@ _create_tool_item(Evas_Object * obj, const char *icon_path, const char *label, } static Elm_Controlbar_Item * -_create_object_item(Evas_Object *obj, Evas_Object *obj_item, const int sel) +_create_object_item(Evas_Object * obj, Evas_Object * obj_item, const int sel) { - Elm_Controlbar_Item *it; + Elm_Controlbar_Item * it; Widget_Data * wd; if (obj == NULL) { @@ -983,7 +1015,7 @@ _create_object_item(Evas_Object *obj, Evas_Object *obj_item, const int sel) evas_object_size_hint_weight_set(it->base, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); evas_object_size_hint_align_set(it->base, EVAS_HINT_FILL, EVAS_HINT_FILL); it->base_item = obj_item; - elm_object_part_content_set(it->base, "item", it->base_item); + elm_object_content_part_set(it->base, "item", it->base_item); evas_object_show(it->base); return it; } @@ -1008,8 +1040,8 @@ _repack_items(Widget_Data *wd) } static void -_set_items_position(Evas_Object *obj, Elm_Controlbar_Item *it, - Elm_Controlbar_Item *mit, Eina_Bool bar) +_set_items_position(Evas_Object * obj, Elm_Controlbar_Item * it, + Elm_Controlbar_Item * mit, Eina_Bool bar) { Widget_Data * wd; const Eina_List *l; @@ -1095,11 +1127,11 @@ _list_clicked(void *data, Evas_Object *obj, void *event_info __UNUSED__) if (item->style == TABBAR) { - content = elm_object_part_content_unset(wd->edje, "elm.swallow.view"); + content = elm_object_content_part_unset(wd->edje, "elm.swallow.view"); evas_object_hide(content); item->selected = EINA_TRUE; evas_object_smart_callback_call(item->obj, "view,change,before", item); - elm_object_part_content_set(wd->edje, "elm.swallow.view", item->view); + elm_object_content_part_set(wd->edje, "elm.swallow.view", item->view); } if ((item->style == TOOLBAR) && (item->func)) @@ -1136,8 +1168,7 @@ _create_more_view(Widget_Data *wd) return list; } -static void -_ctxpopup_cb(void *data, Evas_Object *obj, void *event_info) +static void _ctxpopup_cb(void *data, Evas_Object *obj, void *event_info) { Elm_Controlbar_Item *it; const Eina_List *l; @@ -1160,8 +1191,7 @@ _ctxpopup_cb(void *data, Evas_Object *obj, void *event_info) ctxpopup = NULL; } -static void -_ctxpopup_dismissed_cb(void *data __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__) +static void _ctxpopup_dismissed_cb(void *data __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__) { Evas_Object *ctxpopup = obj; @@ -1233,8 +1263,21 @@ _create_more_item(Widget_Data *wd, int style) return it; } -EAPI Evas_Object * -elm_controlbar_add(Evas_Object *parent) +/////////////////////////////////////////////////////////////////// +// +// API function +// +//////////////////////////////////////////////////////////////////// + +/** + * Add a new controlbar object + * + * @param parent The parent object + * @return The new object or NULL if it cannot be created + * + * @ingroup Controlbar + */ +EAPI Evas_Object * elm_controlbar_add(Evas_Object * parent) { if (parent == NULL) return NULL; Evas_Object * obj = NULL; @@ -1287,7 +1330,7 @@ elm_controlbar_add(Evas_Object *parent) printf("Cannot load bg edj\n"); return NULL; } - elm_object_part_content_set(wd->edje, "bg_image", wd->bg); + elm_object_content_part_set(wd->edje, "bg_image", wd->bg); // initialization evas_object_event_callback_add(wd->edje, EVAS_CALLBACK_RESIZE, @@ -1299,7 +1342,7 @@ elm_controlbar_add(Evas_Object *parent) evas_object_event_callback_add(wd->edje, EVAS_CALLBACK_HIDE, _controlbar_object_hide, obj); - bg = elm_object_part_content_get(wd->edje, "bg_image"); + bg = elm_object_content_part_get(wd->edje, "bg_image"); evas_object_event_callback_add(bg, EVAS_CALLBACK_MOVE, _controlbar_object_move, obj); evas_object_event_callback_add(bg, EVAS_CALLBACK_RESIZE, _controlbar_object_resize, obj); @@ -1309,7 +1352,7 @@ elm_controlbar_add(Evas_Object *parent) evas_object_size_hint_weight_set(wd->box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); evas_object_size_hint_align_set(wd->box, EVAS_HINT_FILL, EVAS_HINT_FILL); - elm_object_part_content_set(wd->edje, "elm.swallow.items", wd->box); + elm_object_content_part_set(wd->edje, "elm.swallow.items", wd->box); evas_object_show(wd->box); evas_object_smart_callback_add(obj, "sub-object-del", _sub_del, obj); @@ -1321,9 +1364,23 @@ elm_controlbar_add(Evas_Object *parent) return obj; } -EAPI Elm_Controlbar_Item * -elm_controlbar_tab_item_append(Evas_Object *obj, const char *icon_path, - const char *label, Evas_Object *view) +/** + * Append new tab item + * + * @param obj The controlbar object + * @param icon_path The icon path of item + * @param label The label of item + * @param view The view of item + * @return The item of controlbar + * + * @ingroup Controlbar + */ +EAPI Elm_Controlbar_Item * elm_controlbar_tab_item_append(Evas_Object * obj, + const char + *icon_path, + const char *label, + Evas_Object * + view) { ELM_CHECK_WIDTYPE(obj, widtype) NULL; Elm_Controlbar_Item * it; @@ -1340,11 +1397,10 @@ elm_controlbar_tab_item_append(Evas_Object *obj, const char *icon_path, _create_more_item(wd, TABBAR); } _set_items_position(obj, it, NULL, EINA_FALSE); - } - else - { + } + else{ _set_items_position(obj, it, NULL, EINA_TRUE); - } + } wd->items = eina_list_append(wd->items, it); if (wd->more_item) elm_controlbar_item_view_set(wd->more_item, _create_more_view(wd)); @@ -1354,9 +1410,25 @@ elm_controlbar_tab_item_append(Evas_Object *obj, const char *icon_path, return it; } -EAPI Elm_Controlbar_Item * -elm_controlbar_tab_item_prepend(Evas_Object *obj, const char *icon_path, - const char *label, Evas_Object *view) +/** + * Prepend new tab item + * + * @param obj The controlbar object + * @param icon_path The icon path of item + * @param label The label of item + * @param view The view of item + * @return The item of controlbar + * + * @ingroup Controlbar + */ +EAPI Elm_Controlbar_Item * elm_controlbar_tab_item_prepend(Evas_Object * + obj, + const char + *icon_path, + const char + *label, + Evas_Object * + view) { ELM_CHECK_WIDTYPE(obj, widtype) NULL; Widget_Data * wd; @@ -1369,20 +1441,18 @@ elm_controlbar_tab_item_prepend(Evas_Object *obj, const char *icon_path, item = eina_list_data_get(wd->items); if ((_check_bar_item_number(wd) >= 5) && (wd->auto_align)) { - if (!wd->more_item) - { + if (!wd->more_item) { lit = elm_controlbar_last_item_get(obj); _set_item_visible(lit, EINA_FALSE); _create_more_item(wd, TABBAR); - } + } lit = elm_controlbar_item_prev(wd->more_item); _set_item_visible(lit, EINA_FALSE); _set_items_position(obj, it, item, EINA_TRUE); - } - else - { + } + else{ _set_items_position(obj, it, item, EINA_TRUE); - } + } wd->items = eina_list_prepend(wd->items, it); if (wd->more_item) elm_controlbar_item_view_set(wd->more_item, _create_more_view(wd)); @@ -1392,11 +1462,23 @@ elm_controlbar_tab_item_prepend(Evas_Object *obj, const char *icon_path, return it; } +/** + * Insert new tab item before given item + * + * @param obj The controlbar object + * @param before The given item + * @param icon_path The icon path of item + * @param label The label of item + * @param view The view of item + * @return The item of controlbar + * + * @ingroup Controlbar + */ EAPI Elm_Controlbar_Item * -elm_controlbar_tab_item_insert_before(Evas_Object *obj, - Elm_Controlbar_Item *before, +elm_controlbar_tab_item_insert_before(Evas_Object * obj, + Elm_Controlbar_Item * before, const char *icon_path, - const char *label, Evas_Object *view) + const char *label, Evas_Object * view) { ELM_CHECK_WIDTYPE(obj, widtype) NULL; Widget_Data * wd; @@ -1425,11 +1507,10 @@ elm_controlbar_tab_item_insert_before(Evas_Object *obj, { _set_items_position(obj, it, before, EINA_FALSE); } - } - else - { + } + else{ _set_items_position(obj, it, before, EINA_TRUE); - } + } wd->items = eina_list_prepend_relative(wd->items, it, before); if (wd->more_item) elm_controlbar_item_view_set(wd->more_item, _create_more_view(wd)); @@ -1439,9 +1520,21 @@ elm_controlbar_tab_item_insert_before(Evas_Object *obj, return it; } +/** + * Insert new tab item after given item + * + * @param obj The controlbar object + * @param after The given item + * @param icon_path The icon path of item + * @param label The label of item + * @param view The view of item + * @return The item of controlbar + * + * @ingroup Controlbar + */ EAPI Elm_Controlbar_Item * -elm_controlbar_tab_item_insert_after(Evas_Object *obj, - Elm_Controlbar_Item *after, +elm_controlbar_tab_item_insert_after(Evas_Object * obj, + Elm_Controlbar_Item * after, const char *icon_path, const char *label, Evas_Object * view) { @@ -1473,11 +1566,10 @@ elm_controlbar_tab_item_insert_after(Evas_Object *obj, { _set_items_position(obj, it, NULL, EINA_FALSE); } - } - else - { + } + else{ _set_items_position(obj, it, item, EINA_TRUE); - } + } wd->items = eina_list_append_relative(wd->items, it, after); if (wd->more_item) elm_controlbar_item_view_set(wd->more_item, _create_more_view(wd)); @@ -1487,11 +1579,31 @@ elm_controlbar_tab_item_insert_after(Evas_Object *obj, return it; } -EAPI Elm_Controlbar_Item * -elm_controlbar_tool_item_append(Evas_Object *obj, const char *icon_path, - const char *label, - void (*func)(void *data, Evas_Object * obj, void *event_info), - void *data) +/** + * Append new tool item + * + * @param obj The controlbar object + * @param icon_path The icon path of item + * @param label The label of item + * @param func Callback function of item + * @param data The data of callback function + * @return The item of controlbar + * + * @ingroup Controlbar + */ +EAPI Elm_Controlbar_Item * elm_controlbar_tool_item_append(Evas_Object * + obj, + const char + *icon_path, + const char + *label, + void (*func) + (void *data, + Evas_Object * + obj, + void + *event_info), + void *data) { ELM_CHECK_WIDTYPE(obj, widtype) NULL; @@ -1503,29 +1615,49 @@ elm_controlbar_tool_item_append(Evas_Object *obj, const char *icon_path, wd = elm_widget_data_get(obj); if ((_check_bar_item_number(wd) >= 5) && (wd->auto_align)) { - if (!wd->more_item) - { + if (!wd->more_item) { lit = elm_controlbar_last_item_get(obj); _set_item_visible(lit, EINA_FALSE); _create_more_item(wd, TOOLBAR); - } + } _set_items_position(obj, it, NULL, EINA_FALSE); - } - else - { + } + else{ _set_items_position(obj, it, NULL, EINA_TRUE); - } + } wd->items = eina_list_append(wd->items, it); _check_toolbar_line(wd); _sizing_eval(obj); return it; } -EAPI Elm_Controlbar_Item * -elm_controlbar_tool_item_prepend(Evas_Object *obj, const char *icon_path, - const char *label, - void (*func) (void *data, Evas_Object *obj, void *event_info), - void *data) +/** + * Prepend new tool item + * + * @param obj The controlbar object + * @param icon_path The icon path of item + * @param label The label of item + * @param func Callback function of item + * @param data The data of callback function + * @return The item of controlbar + * + * @ingroup Controlbar + */ +EAPI Elm_Controlbar_Item * elm_controlbar_tool_item_prepend(Evas_Object * + obj, + const char + *icon_path, + const char + *label, + void (*func) + (void + *data, + Evas_Object * + obj, + void + *event_info), + void + *data) { ELM_CHECK_WIDTYPE(obj, widtype) NULL; Widget_Data * wd; @@ -1538,32 +1670,45 @@ elm_controlbar_tool_item_prepend(Evas_Object *obj, const char *icon_path, item = eina_list_data_get(wd->items); if ((_check_bar_item_number(wd) >= 5) && (wd->auto_align)) { - if (!wd->more_item) - { + if (!wd->more_item) { lit = elm_controlbar_last_item_get(obj); _set_item_visible(lit, EINA_FALSE); _create_more_item(wd, TOOLBAR); - } + } lit = elm_controlbar_item_prev(wd->more_item); _set_item_visible(lit, EINA_FALSE); _set_items_position(obj, it, item, EINA_TRUE); - } - else - { + } + else{ _set_items_position(obj, it, item, EINA_TRUE); - } + } wd->items = eina_list_prepend(wd->items, it); _check_toolbar_line(wd); _sizing_eval(obj); return it; } +/** + * Insert new tool item before given item + * + * @param obj The controlbar object + * @param before The given item + * @param icon_path The icon path of item + * @param label The label of item + * @param func Callback function of item + * @param data The data of callback function + * @return The item of controlbar + * + * @ingroup Controlbar + */ EAPI Elm_Controlbar_Item * -elm_controlbar_tool_item_insert_before(Evas_Object *obj, - Elm_Controlbar_Item *before, +elm_controlbar_tool_item_insert_before(Evas_Object * obj, + Elm_Controlbar_Item * before, const char *icon_path, const char *label, - void (*func)(void *data, Evas_Object *obj, void *event_info), + void (*func) (void *data, + Evas_Object * obj, + void *event_info), void *data) { ELM_CHECK_WIDTYPE(obj, widtype) NULL; @@ -1593,23 +1738,37 @@ elm_controlbar_tool_item_insert_before(Evas_Object *obj, { _set_items_position(obj, it, before, EINA_FALSE); } - } - else - { + } + else{ _set_items_position(obj, it, before, EINA_TRUE); - } + } wd->items = eina_list_prepend_relative(wd->items, it, before); _check_toolbar_line(wd); _sizing_eval(obj); return it; } +/** + * Insert new tool item after given item + * + * @param obj The controlbar object + * @param after The given item + * @param icon_path The icon path of item + * @param label The label of item + * @param func Callback function of item + * @param data The data of callback function + * @return The item of controlbar + * + * @ingroup Controlbar + */ EAPI Elm_Controlbar_Item * -elm_controlbar_tool_item_insert_after(Evas_Object *obj, - Elm_Controlbar_Item *after, +elm_controlbar_tool_item_insert_after(Evas_Object * obj, + Elm_Controlbar_Item * after, const char *icon_path, const char *label, - void (*func) (void *data, Evas_Object *obj, void *event_info), + void (*func) (void *data, + Evas_Object * obj, + void *event_info), void *data) { ELM_CHECK_WIDTYPE(obj, widtype) NULL; @@ -1640,20 +1799,31 @@ elm_controlbar_tool_item_insert_after(Evas_Object *obj, { _set_items_position(obj, it, NULL, EINA_FALSE); } - } - else - { + } + else{ _set_items_position(obj, it, item, EINA_TRUE); - } + } wd->items = eina_list_append_relative(wd->items, it, after); _check_toolbar_line(wd); _sizing_eval(obj); return it; } -EAPI Elm_Controlbar_Item * -elm_controlbar_object_item_append(Evas_Object *obj, Evas_Object *obj_item, - const int sel) +/** + * Append new object item + * + * @param obj The controlbar object + * @param obj_item The object of item + * @param sel The number of sel occupied + * @return The item of controlbar + * + * @ingroup Controlbar + */ +EAPI Elm_Controlbar_Item * elm_controlbar_object_item_append(Evas_Object * + obj, + Evas_Object * + obj_item, + const int sel) { ELM_CHECK_WIDTYPE(obj, widtype) NULL; Widget_Data * wd; @@ -1668,9 +1838,21 @@ elm_controlbar_object_item_append(Evas_Object *obj, Evas_Object *obj_item, return it; } -EAPI Elm_Controlbar_Item * -elm_controlbar_object_item_prepend(Evas_Object *obj, Evas_Object *obj_item, - const int sel) +/** + * Prepend new object item + * + * @param obj The controlbar object + * @param obj_item The object of item + * @param sel The number of sel occupied + * @return The item of controlbar + * + * @ingroup Controlbar + */ +EAPI Elm_Controlbar_Item * elm_controlbar_object_item_prepend(Evas_Object * + obj, + Evas_Object * + obj_item, + const int sel) { ELM_CHECK_WIDTYPE(obj, widtype) NULL; Widget_Data * wd; @@ -1687,10 +1869,21 @@ elm_controlbar_object_item_prepend(Evas_Object *obj, Evas_Object *obj_item, return it; } +/** + * Insert new object item before given item + * + * @param obj The controlbar object + * @param before The given item + * @param obj_item The object of item + * @param sel The number of sel occupied + * @return The item of controlbar + * + * @ingroup Controlbar + */ EAPI Elm_Controlbar_Item * -elm_controlbar_object_item_insert_before(Evas_Object *obj, - Elm_Controlbar_Item *before, - Evas_Object *obj_item, const int sel) +elm_controlbar_object_item_insert_before(Evas_Object * obj, + Elm_Controlbar_Item * before, + Evas_Object * obj_item, const int sel) { ELM_CHECK_WIDTYPE(obj, widtype) NULL; Widget_Data * wd; @@ -1706,15 +1899,26 @@ elm_controlbar_object_item_insert_before(Evas_Object *obj, return it; } +/** + * Insert new object item after given item + * + * @param obj The controlbar object + * @param after The given item + * @param obj_item The object of item + * @param sel The number of sel occupied + * @return The item of controlbar + * + * @ingroup Controlbar + */ EAPI Elm_Controlbar_Item * -elm_controlbar_object_item_insert_after(Evas_Object *obj, - Elm_Controlbar_Item *after, - Evas_Object *obj_item, const int sel) +elm_controlbar_object_item_insert_after(Evas_Object * obj, + Elm_Controlbar_Item * after, + Evas_Object * obj_item, const int sel) { ELM_CHECK_WIDTYPE(obj, widtype) NULL; - Widget_Data *wd; - Elm_Controlbar_Item *it; - Elm_Controlbar_Item *item; + Widget_Data * wd; + Elm_Controlbar_Item * it; + Elm_Controlbar_Item * item; wd = elm_widget_data_get(obj); if (!wd) return NULL; if (!after) return NULL; @@ -1727,8 +1931,16 @@ elm_controlbar_object_item_insert_after(Evas_Object *obj, return it; } +/** + * Get the object of the object item + * + * @param it The item of controlbar + * @return The object of the object item + * + * @ingroup Controlbar + */ EAPI Evas_Object * -elm_controlbar_object_item_object_get(const Elm_Controlbar_Item *it) +elm_controlbar_object_item_object_get(const Elm_Controlbar_Item * it) { if (!it) return NULL; if (it->style != OBJECT) return NULL; @@ -1736,14 +1948,21 @@ elm_controlbar_object_item_object_get(const Elm_Controlbar_Item *it) return it->base_item; } +/** + * Delete item from controlbar + * + * @param it The item of controlbar + + * @ingroup Controlbar + */ EAPI void -elm_controlbar_item_del(Elm_Controlbar_Item *it) +elm_controlbar_item_del(Elm_Controlbar_Item * it) { - Evas_Object *obj; - Widget_Data *wd; + Evas_Object * obj; + Widget_Data * wd; const Eina_List *l; - Elm_Controlbar_Item *item; + Elm_Controlbar_Item * item; int sel = 1; @@ -1795,6 +2014,13 @@ elm_controlbar_item_del(Elm_Controlbar_Item *it) _sizing_eval(obj); } +/** + * Select item in controlbar + * + * @param it The item of controlbar + + * @ingroup Controlbar + */ EAPI void elm_controlbar_item_select(Elm_Controlbar_Item * it) { @@ -1806,8 +2032,17 @@ elm_controlbar_item_select(Elm_Controlbar_Item * it) _select_box(it); } +/** + * Set the icon of item + * + * @param it The item of controlbar + * @param icon_path The icon path of the item + * @return The icon object + * + * @ingroup Controlbar + */ EAPI void -elm_controlbar_item_icon_set(Elm_Controlbar_Item *it, const char *icon_path) +elm_controlbar_item_icon_set(Elm_Controlbar_Item * it, const char *icon_path) { if (!it) return; if (it->style == OBJECT) return; @@ -1832,15 +2067,31 @@ elm_controlbar_item_icon_set(Elm_Controlbar_Item *it, const char *icon_path) elm_widget_disabled_set(it->base_item, EINA_FALSE); } +/** + * Get the icon of item + * + * @param it The item of controlbar + * @return The icon object + * + * @ingroup Controlbar + */ EAPI Evas_Object * -elm_controlbar_item_icon_get(const Elm_Controlbar_Item *it) +elm_controlbar_item_icon_get(const Elm_Controlbar_Item * it) { if (!it) return NULL; return it->icon; } +/** + * Set the label of item + * + * @param it The item of controlbar + * @param label The label of item + * + * @ingroup Controlbar + */ EAPI void -elm_controlbar_item_label_set(Elm_Controlbar_Item *it, const char *label) +elm_controlbar_item_label_set(Elm_Controlbar_Item * it, const char *label) { if (!it) return; if (it->style == OBJECT) return; @@ -1860,6 +2111,14 @@ elm_controlbar_item_label_set(Elm_Controlbar_Item *it, const char *label) elm_widget_disabled_set(it->base_item, EINA_FALSE); } +/** + * Get the label of item + * + * @param it The item of controlbar + * @return The label of item + * + * @ingroup Controlbar + */ EAPI const char * elm_controlbar_item_label_get(const Elm_Controlbar_Item * it) { @@ -1867,8 +2126,16 @@ elm_controlbar_item_label_get(const Elm_Controlbar_Item * it) return it->text; } -EAPI Elm_Controlbar_Item * -elm_controlbar_selected_item_get(const Evas_Object *obj) +/** + * Get the selected item + * + * @param obj The controlbar object + * @return The item of controlbar + * + * @ingroup Controlbar + */ +EAPI Elm_Controlbar_Item * elm_controlbar_selected_item_get(const Evas_Object * + obj) { ELM_CHECK_WIDTYPE(obj, widtype) NULL; const Eina_List *l; @@ -1884,8 +2151,15 @@ elm_controlbar_selected_item_get(const Evas_Object *obj) return NULL; } -EAPI Elm_Controlbar_Item * -elm_controlbar_first_item_get(const Evas_Object *obj) +/** + * Get the first item + * + * @param obj The controlbar object + * @return The item of controlbar + * + * @ingroup Controlbar + */ +EAPI Elm_Controlbar_Item * elm_controlbar_first_item_get(const Evas_Object * obj) { ELM_CHECK_WIDTYPE(obj, widtype) NULL; Widget_Data * wd = elm_widget_data_get(obj); @@ -1893,8 +2167,15 @@ elm_controlbar_first_item_get(const Evas_Object *obj) return eina_list_data_get(wd->items); } -EAPI Elm_Controlbar_Item * -elm_controlbar_last_item_get(const Evas_Object *obj) +/** + * Get the last item + * + * @param obj The controlbar object + * @return The item of controlbar + * + * @ingroup Controlbar + */ +EAPI Elm_Controlbar_Item * elm_controlbar_last_item_get(const Evas_Object * obj) { ELM_CHECK_WIDTYPE(obj, widtype) NULL; Widget_Data * wd = elm_widget_data_get(obj); @@ -1902,8 +2183,15 @@ elm_controlbar_last_item_get(const Evas_Object *obj) return eina_list_data_get(eina_list_last(wd->items)); } -EAPI const Eina_List * -elm_controlbar_items_get(const Evas_Object *obj) +/** + * Get the items + * + * @param obj The controlbar object + * @return The list of the items + * + * @ingroup Controlbar + */ +EAPI const Eina_List * elm_controlbar_items_get(const Evas_Object * obj) { ELM_CHECK_WIDTYPE(obj, widtype) NULL; Widget_Data * wd = elm_widget_data_get(obj); @@ -1911,8 +2199,16 @@ elm_controlbar_items_get(const Evas_Object *obj) return wd->items; } -EAPI Elm_Controlbar_Item * -elm_controlbar_item_prev(Elm_Controlbar_Item *it) +/** + * Get the previous item + * + * @param it The item of controlbar + * @return The previous item of the parameter item + * + * @ingroup Controlbar + */ +EAPI Elm_Controlbar_Item * elm_controlbar_item_prev(Elm_Controlbar_Item * + it) { if (!it) return NULL; const Eina_List *l; @@ -1933,8 +2229,16 @@ elm_controlbar_item_prev(Elm_Controlbar_Item *it) return NULL; } -EAPI Elm_Controlbar_Item * -elm_controlbar_item_next(Elm_Controlbar_Item *it) +/** + * Get the next item + * + * @param obj The controlbar object + * @return The next item of the parameter item + * + * @ingroup Controlbar + */ +EAPI Elm_Controlbar_Item * elm_controlbar_item_next(Elm_Controlbar_Item * + it) { if (!it) return NULL; const Eina_List *l; @@ -1955,8 +2259,16 @@ elm_controlbar_item_next(Elm_Controlbar_Item *it) return NULL; } +/** + * Set the visible status of item in bar + * + * @param it The item of controlbar + * @param bar EINA_TRUE or EINA_FALSE + * + * @ingroup Controlbar + */ EAPI void -elm_controlbar_item_visible_set(Elm_Controlbar_Item *it, Eina_Bool visible) +elm_controlbar_item_visible_set(Elm_Controlbar_Item * it, Eina_Bool visible) { if (!it) return; if (it->obj == NULL) return; @@ -1967,8 +2279,16 @@ elm_controlbar_item_visible_set(Elm_Controlbar_Item *it, Eina_Bool visible) _set_item_visible(it, visible); } +/** + * Get the result which or not item is visible in bar + * + * @param it The item of controlbar + * @return EINA_TRUE or EINA_FALSE + * + * @ingroup Controlbar + */ EAPI Eina_Bool -elm_controlbar_item_visible_get(const Elm_Controlbar_Item *it) +elm_controlbar_item_visible_get(const Elm_Controlbar_Item * it) { if (!it) return EINA_FALSE; if (it->obj == NULL) return EINA_FALSE; @@ -1979,8 +2299,16 @@ elm_controlbar_item_visible_get(const Elm_Controlbar_Item *it) return EINA_TRUE; } +/** + * Set item disable + * + * @param it The item of controlbar + * @param bar EINA_TRUE or EINA_FALSE + * + * @ingroup Controlbar + */ EAPI void -elm_controlbar_item_disabled_set(Elm_Controlbar_Item *it, Eina_Bool disabled) +elm_controlbar_item_disabled_set(Elm_Controlbar_Item * it, Eina_Bool disabled) { if (!it) return; @@ -1993,14 +2321,30 @@ elm_controlbar_item_disabled_set(Elm_Controlbar_Item *it, Eina_Bool disabled) if (it->base_item) elm_widget_disabled_set(it->base_item, disabled); } +/** + * Get item disable + * + * @param it The item of controlbar + * @return EINA_TRUE or EINA_FALSE + * + * @ingroup Controlbar + */ EAPI Eina_Bool -elm_controlbar_item_disabled_get(const Elm_Controlbar_Item *it) +elm_controlbar_item_disabled_get(const Elm_Controlbar_Item * it) { if (!it) return EINA_FALSE; return it->disabled; } +/** + * Set the view of the item + * + * @param it The item of controlbar + * @param view The view for the item + * + * @ingroup Controlbar + */ EAPI void elm_controlbar_item_view_set(Elm_Controlbar_Item *it, Evas_Object * view) { @@ -2011,6 +2355,14 @@ elm_controlbar_item_view_set(Elm_Controlbar_Item *it, Evas_Object * view) it->view = view; } +/** + * Get the view of the item + * + * @param it The item of controlbar + * @return The view for the item + * + * @ingroup Controlbar + */ EAPI Evas_Object * elm_controlbar_item_view_get(const Elm_Controlbar_Item *it) { @@ -2019,6 +2371,14 @@ elm_controlbar_item_view_get(const Elm_Controlbar_Item *it) return it->view; } +/** + * Unset the view of the item + * + * @param it The item of controlbar + * @return The view for the item + * + * @ingroup Controlbar + */ EAPI Evas_Object * elm_controlbar_item_view_unset(Elm_Controlbar_Item *it) { @@ -2028,9 +2388,9 @@ elm_controlbar_item_view_unset(Elm_Controlbar_Item *it) if (!wd) return NULL; Evas_Object *content; - if (it->view == elm_object_part_content_get(wd->edje, "elm.swallow.view")) + if (it->view == elm_object_content_part_get(wd->edje, "elm.swallow.view")) { - content = elm_object_part_content_unset(wd->edje, "elm.swallow.view"); + content = elm_object_content_part_unset(wd->edje, "elm.swallow.view"); if (content) evas_object_hide(content); } else @@ -2041,6 +2401,14 @@ elm_controlbar_item_view_unset(Elm_Controlbar_Item *it) return content; } +/** + * Set the mode of the controlbar + * + * @param obj The object of the controlbar + * @param mode The mode of the controlbar + * + * @ingroup Controlbar + */ EAPI void elm_controlbar_mode_set(Evas_Object *obj, int mode) { @@ -2073,7 +2441,7 @@ elm_controlbar_mode_set(Evas_Object *obj, int mode) edje_object_signal_emit(_EDJ(wd->edje), "elm,state,small", "elm"); break; case ELM_CONTROLBAR_MODE_LEFT: - selected_box = elm_object_part_content_get(wd->edje, "elm.dragable.box"); + selected_box = elm_object_content_part_get(wd->edje, "elm.dragable.box"); if (selected_box) edje_object_signal_emit(_EDJ(selected_box), "elm,state,left", "elm"); wd->selected_signal = eina_stringshare_add("elm,state,selected_left"); wd->pressed_signal = eina_stringshare_add("elm,state,pressed_left"); @@ -2082,7 +2450,7 @@ elm_controlbar_mode_set(Evas_Object *obj, int mode) _sizing_eval(obj); return; case ELM_CONTROLBAR_MODE_RIGHT: - selected_box = elm_object_part_content_get(wd->edje, "elm.dragable.box"); + selected_box = elm_object_content_part_get(wd->edje, "elm.dragable.box"); if (selected_box) edje_object_signal_emit(_EDJ(selected_box), "elm,state,right", "elm"); wd->selected_signal = eina_stringshare_add("elm,state,selected_right"); wd->pressed_signal = eina_stringshare_add("elm,state,pressed_right"); @@ -2093,7 +2461,7 @@ elm_controlbar_mode_set(Evas_Object *obj, int mode) default: break; } - selected_box = elm_object_part_content_get(wd->edje, "elm.dragable.box"); + selected_box = elm_object_content_part_get(wd->edje, "elm.dragable.box"); if (selected_box) edje_object_signal_emit(_EDJ(selected_box), "elm,state,default", "elm"); wd->selected_signal = eina_stringshare_add("elm,state,selected"); wd->pressed_signal = eina_stringshare_add("elm,state,pressed"); @@ -2101,6 +2469,14 @@ elm_controlbar_mode_set(Evas_Object *obj, int mode) _sizing_eval(obj); } +/** + * Set the alpha of the controlbar + * + * @param obj The object of the controlbar + * @param alpha The alpha value of the controlbar (0-100) + * + * @ingroup Controlbar + */ EAPI void elm_controlbar_alpha_set(Evas_Object *obj, int alpha) { @@ -2121,6 +2497,17 @@ elm_controlbar_alpha_set(Evas_Object *obj, int alpha) evas_object_color_set(wd->bg, r, g, b, (int)(255 * wd->alpha / 100)); } + +/** + * Set auto-align mode of the controlbar(It's not prepared yet) + * If you set the auto-align and add items more than 5, + * the "more" item will be made and the items more than 5 will be unvisible. + * + * @param obj The object of the controlbar + * @param auto_align The dicision that the controlbar use the auto-align + * + * @ingroup Controlbar + */ EAPI void elm_controlbar_item_auto_align_set(Evas_Object *obj, Eina_Bool auto_align) { @@ -2189,6 +2576,14 @@ elm_controlbar_item_auto_align_set(Evas_Object *obj, Eina_Bool auto_align) _sizing_eval(obj); } +/** + * Set the vertical mode of the controlbar + * + * @param obj The object of the controlbar + * @param vertical The vertical mode of the controlbar (TRUE = vertical, FALSE = horizontal) + * + * @ingroup Controlbar + */ EAPI void elm_controlbar_vertical_set(Evas_Object *obj, Eina_Bool vertical) { @@ -2210,6 +2605,14 @@ elm_controlbar_vertical_set(Evas_Object *obj, Eina_Bool vertical) _check_toolbar_line(wd); } +/** + * Get the button object of the item + * + * @param it The item of controlbar + * @return button object of the item + * + * @ingroup Controlbar + */ EAPI Evas_Object * elm_controlbar_item_button_get(const Elm_Controlbar_Item *it) { diff --git a/src/lib/elm_dialoguegroup.c b/src/lib/elm_dialoguegroup.c index 66960c8..dd00c7e 100644 --- a/src/lib/elm_dialoguegroup.c +++ b/src/lib/elm_dialoguegroup.c @@ -176,7 +176,7 @@ _change_item_bg(Dialogue_Item *item, const char *location) eina_stringshare_replace(&item->location, location); _set_item_theme(item, location); - elm_object_part_content_set(item->bg_layout, "swallow", item->content); + elm_object_content_part_set(item->bg_layout, "swallow", item->content); if ((item->press == EINA_TRUE) && (item->disabled == EINA_FALSE)) edje_object_signal_emit(elm_layout_edje_get(item->bg_layout), "elm,state,press,on", "elm"); else @@ -217,7 +217,7 @@ _create_item(Evas_Object *obj, Evas_Object *subobj, Elm_Dialoguegroup_Item_Style evas_object_size_hint_align_set(item->bg_layout, EVAS_HINT_FILL, 0.0); evas_object_show(item->bg_layout); - elm_object_part_content_set(item->bg_layout, "swallow", item->content); + elm_object_content_part_set(item->bg_layout, "swallow", item->content); return item; } diff --git a/src/lib/elm_diskselector.c b/src/lib/elm_diskselector.c index cba3012..453732d 100644 --- a/src/lib/elm_diskselector.c +++ b/src/lib/elm_diskselector.c @@ -181,6 +181,15 @@ _theme_data_get(Widget_Data *wd) } static void +_default_display_item_num_set(Widget_Data *wd) +{ + const char* str; + str = edje_object_data_get(wd->right_blank, "display_item_num"); + if (str) wd->display_item_num = MAX(DISPLAY_ITEM_NUM_MIN, atoi(str)); + else wd->display_item_num = DISPLAY_ITEM_NUM_MIN; +} + +static void _del_hook(Evas_Object * obj) { Widget_Data *wd = elm_widget_data_get(obj); @@ -1373,12 +1382,3 @@ elm_diskselector_display_item_num_set(Evas_Object *obj, int num) wd->display_item_num = num; wd->display_item_num_by_api = EINA_TRUE; } - -EAPI int -elm_diskselector_display_item_num_get(const Evas_Object *item) -{ - ELM_CHECK_WIDTYPE(item, widtype) (-1); - Widget_Data *wd = elm_widget_data_get(item); - if (!wd) return -1; - return wd->display_item_num; -} diff --git a/src/lib/elm_entry.c b/src/lib/elm_entry.c index 5ff10b7..4a31e63 100644 --- a/src/lib/elm_entry.c +++ b/src/lib/elm_entry.c @@ -82,6 +82,7 @@ struct _Widget_Data Eina_Bool bgcolor : 1; Eina_Bool can_write : 1; Eina_Bool autosave : 1; + Eina_Bool textonly : 1; Eina_Bool usedown : 1; Eina_Bool scroll : 1; Eina_Bool input_panel_enable : 1; @@ -89,7 +90,6 @@ struct _Widget_Data Eina_Bool autoperiod : 1; Eina_Bool matchlist_list_clicked : 1; Eina_Bool matchlist_case_sensitive : 1; - Elm_CNP_Mode cnp_mode : 2; }; struct _Elm_Entry_Context_Menu_Item @@ -613,6 +613,7 @@ _recalc_cursor_geometry(Evas_Object *obj) Widget_Data *wd = elm_widget_data_get(obj); if (!wd) return; evas_object_smart_callback_call(obj, SIG_CURSOR_CHANGED, NULL); + if (!elm_object_focus_get(obj)) return; if (!wd->deferred_recalc_job) { Evas_Coord cx, cy, cw, ch; @@ -637,12 +638,8 @@ _elm_win_recalc_job(void *data) wd->deferred_recalc_job = NULL; evas_object_geometry_get(wd->ent, NULL, NULL, &resw, NULL); - /* This is a hack to workaround to avoid the cursor geometry bug - * in a char-wrap or a mixed-mode textblock in a scroller. - * The order of calling next 2 functions affects to the size of the textblock cursor. - * when the textblock core issue is fixed these comments will be removed. */ - edje_object_size_min_restricted_calc(wd->ent, &fw, &fh, 0, 0); edje_object_size_min_restricted_calc(wd->ent, &minw, &minh, resw, 0); + edje_object_size_min_restricted_calc(wd->ent, &fw, &fh, 0, 0); elm_coords_finger_size_adjust(1, &fw, 1, &minh); wd->entmw = fw; wd->entmh = minh; @@ -689,7 +686,7 @@ _elm_win_recalc_job(void *data) } } - if (wd->deferred_cur) + if ((wd->deferred_cur) && (elm_object_focus_get(data))) { Evas_Coord cx, cy, cw, ch; edje_object_part_text_cursor_geometry_get(wd->ent, "elm.text", @@ -1076,6 +1073,7 @@ static void _move(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__) { Widget_Data *wd = elm_widget_data_get(data); + Evas_Coord_Rectangle ret_rect; if (wd->hoversel) _hoversel_position(data); @@ -1181,11 +1179,10 @@ _paste(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__) if (wd->sel_notify_handler) { #ifdef HAVE_ELEMENTARY_X - Elm_Sel_Format formats = ELM_SEL_FORMAT_MARKUP; + Elm_Sel_Format formats; wd->selection_asked = EINA_TRUE; - if (wd->cnp_mode == ELM_CNP_MODE_PLAINTEXT) - formats = ELM_SEL_FORMAT_TEXT; - else if (wd->cnp_mode != ELM_CNP_MODE_NO_IMAGE) + formats = ELM_SEL_FORMAT_MARKUP; + if (!wd->textonly) formats |= ELM_SEL_FORMAT_IMAGE; elm_selection_get(ELM_SEL_CLIPBOARD, formats, data, NULL, NULL); #endif @@ -1197,57 +1194,46 @@ _store_selection(Elm_Sel_Type seltype, Evas_Object *obj) { Widget_Data *wd = elm_widget_data_get(obj); const char *sel; - char *sel_str = NULL; - Elm_Sel_Format formats = ELM_SEL_FORMAT_MARKUP; + char *sel_str; if (!wd) return; sel = edje_object_part_text_selection_get(wd->ent, "elm.text"); - if (wd->cnp_mode == ELM_CNP_MODE_PLAINTEXT) - { - sel_str = elm_entry_markup_to_utf8(sel); - if (!sel_str) - return; - formats = ELM_SEL_FORMAT_TEXT; - } - else + sel_str = strdup(sel); + if (!sel_str) + return; + if (wd->textonly) { - sel_str = strdup(sel); - if (!sel_str) - return; - if (wd->cnp_mode == ELM_CNP_MODE_NO_IMAGE) + while (EINA_TRUE) { - while (EINA_TRUE) + char *startTag = NULL; + char *endTag = NULL; + + startTag = strstr(sel_str, ""); + else + break; + if (!endTag || startTag > endTag) + break; + + size_t sindex = startTag - sel_str; + size_t eindex = endTag - sel_str + 1; + + Eina_Strbuf *buf = eina_strbuf_new(); + if (buf) { - char *startTag = NULL; - char *endTag = NULL; - - startTag = strstr(sel_str, ""); - else - break; - if (!endTag || startTag > endTag) - break; - - size_t sindex = startTag - sel_str; - size_t eindex = endTag - sel_str + 1; - - Eina_Strbuf *buf = eina_strbuf_new(); - if (buf) - { - eina_strbuf_append(buf, sel_str); - eina_strbuf_remove(buf, sindex, eindex); - sel_str = eina_strbuf_string_steal(buf); - eina_strbuf_free(buf); - } + eina_strbuf_append(buf, sel_str); + eina_strbuf_remove(buf, sindex, eindex); + sel_str = eina_strbuf_string_steal(buf); + eina_strbuf_free(buf); } } } - elm_selection_set(seltype, obj, formats, sel_str); + elm_selection_set(seltype, obj, ELM_SEL_FORMAT_MARKUP, sel_str); if (seltype == ELM_SEL_CLIPBOARD) - eina_stringshare_replace(&wd->cut_sel, sel); + eina_stringshare_replace(&wd->cut_sel, sel_str); free(sel_str); } @@ -1308,7 +1294,7 @@ _clipboard_menu(void *data, Evas_Object *obj, void *event_info __UNUSED__) #endif cnpwidgetdata = data; elm_cbhm_helper_init(obj); - if (elm_entry_cnp_mode_get(obj) != ELM_CNP_MODE_MARKUP) + if (elm_entry_cnp_textonly_get(obj)) elm_cbhm_send_raw_data("show0"); else elm_cbhm_send_raw_data("show1"); @@ -2461,14 +2447,8 @@ _event_selection_clear(void *data __UNUSED__, int type __UNUSED__, void *event _ if (cnpwidgetdata == data) { - Widget_Data *wd = elm_widget_data_get(data); - Elm_Sel_Format formats = ELM_SEL_FORMAT_MARKUP; evas_object_smart_callback_call(data, SIG_SELECTION_PASTE, NULL); - if (wd->cnp_mode == ELM_CNP_MODE_PLAINTEXT) - formats = ELM_SEL_FORMAT_TEXT; - else if (wd->cnp_mode != ELM_CNP_MODE_NO_IMAGE) - formats |= ELM_SEL_FORMAT_IMAGE; - elm_selection_get(ELM_SEL_SECONDARY, formats ,data, NULL, NULL); + elm_selection_get(ELM_SEL_SECONDARY,ELM_SEL_FORMAT_MARKUP,data,NULL,NULL); } // end for cbhm @@ -2958,7 +2938,7 @@ elm_entry_add(Evas_Object *parent) wd->disabled = EINA_FALSE; wd->context_menu = EINA_TRUE; wd->autosave = EINA_TRUE; - wd->cnp_mode = ELM_CNP_MODE_MARKUP; + wd->textonly = EINA_FALSE; wd->autoperiod = EINA_TRUE; wd->ent = edje_object_add(e); @@ -3091,7 +3071,7 @@ EAPI void elm_entry_extension_module_data_get(Evas_Object *obj,Elm_Entry_Extensi ext_mod->selmode = wd->selmode; ext_mod->cnpinit = _cnpinit; ext_mod->context_menu = wd->context_menu; - ext_mod->cnp_mode = wd->cnp_mode; + ext_mod->textonly = wd->textonly; } EAPI void @@ -3103,7 +3083,7 @@ elm_entry_single_line_set(Evas_Object *obj, Eina_Bool single_line) if (wd->single_line == single_line) return; wd->single_line = single_line; wd->linewrap = ELM_WRAP_NONE; - elm_entry_cnp_mode_set(obj, ELM_CNP_MODE_NO_IMAGE); + elm_entry_cnp_textonly_set(obj, EINA_TRUE); _theme_hook(obj); if (wd->scroller) { @@ -3217,7 +3197,7 @@ elm_entry_is_empty(const Evas_Object *obj) Eina_Bool ret; if (!wd) return EINA_TRUE; - if (0) { +if (0) { /* It's a hack until we get the support suggested above. * We just create a cursor, point it to the begining, and then * try to advance it, if it can advance, the tb is not empty, @@ -3231,7 +3211,7 @@ elm_entry_is_empty(const Evas_Object *obj) evas_textblock_cursor_free(cur); return !ret; - } +} char *str = elm_entry_markup_to_utf8(elm_entry_entry_get(obj)); if (!str) return EINA_TRUE; @@ -3242,27 +3222,6 @@ elm_entry_is_empty(const Evas_Object *obj) return ret; } -EAPI const Evas_Object * -elm_entry_textblock_get(const Evas_Object *obj) -{ - ELM_CHECK_WIDTYPE(obj, widtype) NULL; - Widget_Data *wd = elm_widget_data_get(obj); - if (!wd) return NULL; - - return edje_object_part_object_get(wd->ent, "elm.text"); -} - -EAPI void -elm_entry_calc_force(const Evas_Object *obj) -{ - ELM_CHECK_WIDTYPE(obj, widtype); - Widget_Data *wd = elm_widget_data_get(obj); - if (!wd) return; - - edje_object_calc_force(wd->ent); -} - - EAPI const char * elm_entry_selection_get(const Evas_Object *obj) { @@ -3898,41 +3857,26 @@ elm_entry_autosave_get(const Evas_Object *obj) EAPI void elm_entry_cnp_textonly_set(Evas_Object *obj, Eina_Bool textonly) { - ELM_CHECK_WIDTYPE(obj, widtype); - elm_entry_cnp_mode_set(obj, textonly ? ELM_CNP_MODE_NO_IMAGE : ELM_CNP_MODE_MARKUP); -} - -EAPI Eina_Bool -elm_entry_cnp_textonly_get(const Evas_Object *obj) -{ - ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE; - return elm_entry_cnp_mode_get(obj) != ELM_CNP_MODE_MARKUP; -} - -EAPI void -elm_entry_cnp_mode_set(Evas_Object *obj, Elm_CNP_Mode cnp_mode) -{ Elm_Sel_Format format = ELM_SEL_FORMAT_MARKUP; ELM_CHECK_WIDTYPE(obj, widtype); Widget_Data *wd = elm_widget_data_get(obj); if (!wd) return; - if (wd->cnp_mode == cnp_mode) return; - wd->cnp_mode = cnp_mode; - if (wd->cnp_mode == ELM_CNP_MODE_PLAINTEXT) - format = ELM_SEL_FORMAT_TEXT; - else if (cnp_mode == ELM_CNP_MODE_MARKUP) format |= ELM_SEL_FORMAT_IMAGE; + textonly = !!textonly; + if (wd->textonly == textonly) return; + wd->textonly = !!textonly; + if (!textonly) format |= ELM_SEL_FORMAT_IMAGE; #ifdef HAVE_ELEMENTARY_X elm_drop_target_add(obj, format, _drag_drop_cb, NULL); #endif } -EAPI Elm_CNP_Mode -elm_entry_cnp_mode_get(const Evas_Object *obj) +EAPI Eina_Bool +elm_entry_cnp_textonly_get(const Evas_Object *obj) { ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE; Widget_Data *wd = elm_widget_data_get(obj); if (!wd) return EINA_FALSE; - return wd->cnp_mode; + return wd->textonly; } EAPI void diff --git a/src/lib/elm_flipselector.c b/src/lib/elm_flipselector.c index fa327b4..ffbbc63 100644 --- a/src/lib/elm_flipselector.c +++ b/src/lib/elm_flipselector.c @@ -34,7 +34,6 @@ struct _Elm_Flipselector_Item }; typedef struct _Widget_Data Widget_Data; -typedef struct _Elm_Flipselector_Item Elm_Flipselector_Item; struct _Widget_Data { @@ -68,70 +67,13 @@ static const Evas_Smart_Cb_Description _signals[] = { {NULL, NULL} }; -static void -_item_text_set_hook(Elm_Object_Item *it, - const char *part, - const char *label) -{ - ELM_OBJ_ITEM_CHECK_OR_RETURN(it); - - Widget_Data *wd; - Eina_List *l; - Elm_Flipselector_Item *item; - - if (!label) return; - - if (part && strcmp(part ,"default")) return; - - item = (Elm_Flipselector_Item *) it; - wd = elm_widget_data_get(WIDGET(item)); - if ((!wd) || (!wd->items)) return; - - l = eina_list_data_find_list(wd->items, item); - if (!l) return; - - eina_stringshare_del(item->label); - item->label = eina_stringshare_add_length(label, wd->max_len); - - if (strlen(label) > strlen(elm_object_item_text_get(DATA_GET(wd->sentinel)))) - wd->sentinel = l; - - if (wd->current == l) - { - _update_view(WIDGET(item)); - _sizing_eval(wd->self); - } -} - -static const char * -_item_text_get_hook(const Elm_Object_Item *it, const char *part) -{ - ELM_OBJ_ITEM_CHECK_OR_RETURN(it, NULL); - - Elm_Flipselector_Item *item, *_item; - Widget_Data *wd; - Eina_List *l; - - if (part && strcmp(part ,"default")) return NULL; - - item = (Elm_Flipselector_Item *) it; - wd = elm_widget_data_get(WIDGET(item)); - if ((!wd) || (!wd->items)) return NULL; - - EINA_LIST_FOREACH(wd->items, l, _item) - if (_item == item) return item->label; - return NULL; -} - -static void -_item_signal_emit_hook(Elm_Object_Item *it, - const char *emission, - const char *source) -{ - ELM_OBJ_ITEM_CHECK_OR_RETURN(it); - Elm_Flipselector_Item *item = (Elm_Flipselector_Item *) it; - edje_object_signal_emit(VIEW(item), emission, source); -} +#define ELM_FLIPSELECTOR_ITEM_CHECK_DELETED_RETURN(it, ...) \ + ELM_WIDGET_ITEM_WIDTYPE_CHECK_OR_RETURN(it, __VA_ARGS__); \ + if (it->deleted) \ + { \ + ERR(""#it" has been DELETED.\n"); \ + return __VA_ARGS__; \ + } \ static Elm_Flipselector_Item * _item_new(Evas_Object *obj, const char *label, Evas_Smart_Cb func, const void *data) @@ -141,11 +83,8 @@ _item_new(Evas_Object *obj, const char *label, Evas_Smart_Cb func, const void *d Widget_Data *wd = elm_widget_data_get(obj); it = elm_widget_item_new(obj, Elm_Flipselector_Item); - if (!it) return NULL; - - elm_widget_item_text_set_hook_set(it, _item_text_set_hook); - elm_widget_item_text_get_hook_set(it, _item_text_get_hook); - elm_widget_item_signal_emit_hook_set(it, _item_signal_emit_hook); + if (!it) + return NULL; len = strlen(label); if (len > wd->max_len) @@ -173,12 +112,14 @@ _del_hook(Evas_Object *obj) Elm_Flipselector_Item *item; Widget_Data *wd = elm_widget_data_get(obj); - if (!wd) return; + if (!wd) + return; - if (wd->walking) ERR("flipselector deleted while walking.\n"); + if (wd->walking) + ERR("flipselector deleted while walking.\n"); EINA_LIST_FREE(wd->items, item) - _item_free(item); + _item_free(item); if (wd->spin) ecore_timer_del(wd->spin); free(wd); @@ -191,7 +132,8 @@ _theme_hook(Evas_Object *obj) const char *max_len; wd = elm_widget_data_get(obj); - if (!wd) return; + if (!wd) + return; _elm_theme_object_set(obj, wd->base, "flipselector", "base", elm_widget_style_get(obj)); @@ -228,8 +170,8 @@ _sentinel_eval(Widget_Data *wd) EINA_LIST_FOREACH(wd->items, l, it) { - if (strlen(elm_object_item_text_get((Elm_Object_Item *) it)) > - strlen(elm_object_item_text_get(DATA_GET(wd->sentinel)))) + if (strlen(elm_flipselector_item_label_get(it)) > + strlen(elm_flipselector_item_label_get(DATA_GET(wd->sentinel)))) wd->sentinel = l; } } @@ -247,12 +189,14 @@ _flipselector_process_deletions(Widget_Data *wd) EINA_LIST_FOREACH(wd->items, l, it) { - if (!it->deleted) continue; + if (!it->deleted) + continue; if (wd->current == l) { if (wd->current == wd->sentinel) sentinel_eval = EINA_TRUE; + wd->current = eina_list_prev(wd->current); } wd->items = eina_list_remove(wd->items, it); @@ -298,7 +242,9 @@ _flipselector_unwalk(Widget_Data *wd) ERR("walking became negative. fixed!\n"); wd->walking = 0; } - if (wd->walking) return; + + if (wd->walking) + return; _flipselector_process_deletions(wd); } @@ -310,15 +256,19 @@ _event_hook(Evas_Object *obj, Evas_Object *src __UNUSED__, Evas_Callback_Type ty Widget_Data *wd; Eina_Bool is_up = EINA_TRUE; - if (type != EVAS_CALLBACK_KEY_DOWN) return EINA_FALSE; + if (type != EVAS_CALLBACK_KEY_DOWN) + return EINA_FALSE; wd = elm_widget_data_get(obj); - if (!wd) return EINA_FALSE; + if (!wd) + return EINA_FALSE; ev = event_info; - if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) return EINA_FALSE; + if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) + return EINA_FALSE; - if (elm_widget_disabled_get(obj)) return EINA_FALSE; + if (elm_widget_disabled_get(obj)) + return EINA_FALSE; if ((!strcmp(ev->keyname, "Down")) || (!strcmp(ev->keyname, "KP_Down"))) is_up = EINA_FALSE; @@ -330,8 +280,10 @@ _event_hook(Evas_Object *obj, Evas_Object *src __UNUSED__, Evas_Callback_Type ty /* TODO: if direction setting via API is not coming in, replace these calls by flip_{next,prev} */ _flipselector_walk(wd); - if (is_up) _flip_up(wd); - else _flip_down(wd); + if (is_up) + _flip_up(wd); + else + _flip_down(wd); _flipselector_unwalk(wd); ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; @@ -342,7 +294,8 @@ static void _on_focus_hook(void *data __UNUSED__, Evas_Object *obj) { Widget_Data *wd = elm_widget_data_get(obj); - if (!wd) return; + if (!wd) + return; /* FIXME: no treatment of this signal so far */ if (elm_widget_focus_get(obj)) @@ -365,13 +318,16 @@ _sizing_eval(Evas_Object *obj) Evas_Coord minw = -1, minh = -1, w, h; wd = elm_widget_data_get(obj); - if (!wd) return; + if (!wd) + return; elm_coords_finger_size_adjust(1, &minw, 2, &minh); if (wd->sentinel) { - const char *label = elm_object_item_text_get(DATA_GET(wd->sentinel)); + const char *label = \ + elm_flipselector_item_label_get(DATA_GET(wd->sentinel)); + tmp = edje_object_part_text_get(wd->base, "top"); edje_object_part_text_set(wd->base, "top", label); } @@ -380,7 +336,8 @@ _sizing_eval(Evas_Object *obj) elm_coords_finger_size_adjust(1, &minw, 2, &minh); evas_object_size_hint_min_get(obj, &w, &h); - if (wd->sentinel) edje_object_part_text_set(wd->base, "top", tmp); + if (wd->sentinel) + edje_object_part_text_set(wd->base, "top", tmp); if (w > minw) minw = w; if (h > minh) minh = h; @@ -396,14 +353,17 @@ _update_view(Evas_Object *obj) Elm_Flipselector_Item *item; wd = elm_widget_data_get(obj); - if (!wd) return; + if (!wd) + return; label = NULL; item = DATA_GET(wd->current); - if (item) label = item->label; + if (item) + label = item->label; edje_object_part_text_set(wd->base, "top", label ? label : ""); edje_object_part_text_set(wd->base, "bottom", label ? label : ""); + edje_object_message_signal_process(wd->base); } @@ -413,7 +373,8 @@ _changed(Widget_Data *wd) Elm_Flipselector_Item *item; item = DATA_GET(wd->current); - if (!item) return; + if (!item) + return; if (item->func) item->func((void *)item->base.data, WIDGET(item), item); @@ -438,7 +399,8 @@ _flip_up(Widget_Data *wd) { Elm_Flipselector_Item *item; - if (!wd->current) return; + if (!wd->current) + return; if (wd->current == wd->items) { @@ -449,7 +411,8 @@ _flip_up(Widget_Data *wd) wd->current = eina_list_prev(wd->current); item = DATA_GET(wd->current); - if (!item) return; + if (!item) + return; _send_msg(wd, MSG_FLIP_UP, (char *)item->label); } @@ -459,7 +422,8 @@ _signal_val_up(void *data) { Widget_Data *wd = elm_widget_data_get(data); - if (!wd) goto val_up_exit_on_error; + if (!wd) + goto val_up_exit_on_error; _flipselector_walk(wd); @@ -482,11 +446,13 @@ static void _signal_val_up_start(void *data, Evas_Object *obj __UNUSED__, const char *emission __UNUSED__, const char *source __UNUSED__) { Widget_Data *wd = elm_widget_data_get(data); - if (!wd) return; + if (!wd) + return; wd->interval = wd->first_interval; - if (wd->spin) ecore_timer_del(wd->spin); + if (wd->spin) + ecore_timer_del(wd->spin); wd->spin = ecore_timer_add(wd->interval, _signal_val_up, data); _signal_val_up(data); @@ -497,7 +463,8 @@ _flip_down(Widget_Data *wd) { Elm_Flipselector_Item *item; - if (!wd->current) return; + if (!wd->current) + return; wd->current = eina_list_next(wd->current); if (!wd->current) @@ -507,7 +474,8 @@ _flip_down(Widget_Data *wd) } item = DATA_GET(wd->current); - if (!item) return; + if (!item) + return; _send_msg(wd, MSG_FLIP_DOWN, (char *)item->label); } @@ -517,7 +485,8 @@ _signal_val_down(void *data) { Widget_Data *wd = elm_widget_data_get(data); - if (!wd) goto val_down_exit_on_error; + if (!wd) + goto val_down_exit_on_error; _flipselector_walk(wd); @@ -539,11 +508,13 @@ static void _signal_val_down_start(void *data, Evas_Object *obj __UNUSED__, const char *emission __UNUSED__, const char *source __UNUSED__) { Widget_Data *wd = elm_widget_data_get(data); - if (!wd) return; + if (!wd) + return; wd->interval = wd->first_interval; - if (wd->spin) ecore_timer_del(wd->spin); + if (wd->spin) + ecore_timer_del(wd->spin); wd->spin = ecore_timer_add(wd->interval, _signal_val_down, data); _signal_val_down(data); @@ -553,9 +524,11 @@ static void _signal_val_change_stop(void *data, Evas_Object *obj __UNUSED__, const char *emission __UNUSED__, const char *source __UNUSED__) { Widget_Data *wd = elm_widget_data_get(data); - if (!wd) return; + if (!wd) + return; - if (wd->spin) ecore_timer_del(wd->spin); + if (wd->spin) + ecore_timer_del(wd->spin); wd->spin = NULL; } @@ -616,7 +589,8 @@ elm_flipselector_flip_next(Evas_Object *obj) ELM_CHECK_WIDTYPE(obj, widtype); Widget_Data *wd = elm_widget_data_get(obj); - if (!wd) return; + if (!wd) + return; if (wd->spin) ecore_timer_del(wd->spin); @@ -631,7 +605,8 @@ elm_flipselector_flip_prev(Evas_Object *obj) ELM_CHECK_WIDTYPE(obj, widtype); Widget_Data *wd = elm_widget_data_get(obj); - if (!wd) return; + if (!wd) + return; if (wd->spin) ecore_timer_del(wd->spin); @@ -640,7 +615,7 @@ elm_flipselector_flip_prev(Evas_Object *obj) _flipselector_unwalk(wd); } -EAPI Elm_Object_Item * +EAPI Elm_Flipselector_Item * elm_flipselector_item_append(Evas_Object *obj, const char *label, void (*func)(void *data, Evas_Object *obj, void *event_info), void *data) { ELM_CHECK_WIDTYPE(obj, widtype) NULL; @@ -649,21 +624,22 @@ elm_flipselector_item_append(Evas_Object *obj, const char *label, void (*func)(v Widget_Data *wd; wd = elm_widget_data_get(obj); - if (!wd) return NULL; + if (!wd) + return NULL; item = _item_new(obj, label, func, data); - if (!item) return NULL; + if (!item) + return NULL; wd->items = eina_list_append(wd->items, item); - if (!wd->current) - { + if (!wd->current) { wd->current = wd->items; _update_view(obj); - } + } if (!wd->sentinel || - (strlen(elm_object_item_text_get((Elm_Object_Item *) item)) > - strlen(elm_object_item_text_get(DATA_GET(wd->sentinel))))) + (strlen(elm_flipselector_item_label_get(item)) > + strlen(elm_flipselector_item_label_get(DATA_GET(wd->sentinel))))) { wd->sentinel = eina_list_last(wd->items); _sizing_eval(obj); @@ -672,10 +648,10 @@ elm_flipselector_item_append(Evas_Object *obj, const char *label, void (*func)(v if (eina_list_count(wd->items) >= 2) edje_object_signal_emit(wd->base, "elm,state,button,visible", "elm"); - return (Elm_Object_Item *) item; + return item; } -EAPI Elm_Object_Item * +EAPI Elm_Flipselector_Item * elm_flipselector_item_prepend(Evas_Object *obj, const char *label, void (*func)(void *data, Evas_Object *obj, void *event_info), void *data) { ELM_CHECK_WIDTYPE(obj, widtype) NULL; @@ -684,21 +660,22 @@ elm_flipselector_item_prepend(Evas_Object *obj, const char *label, void (*func)( Widget_Data *wd; wd = elm_widget_data_get(obj); - if (!wd) return NULL; + if (!wd) + return NULL; item = _item_new(obj, label, func, data); - if (!item) return NULL; + if (!item) + return NULL; wd->items = eina_list_prepend(wd->items, item); - if (!wd->current) - { + if (!wd->current) { wd->current = wd->items; _update_view(obj); - } + } if (!wd->sentinel || - (strlen(elm_object_item_text_get((Elm_Object_Item *) item)) > - strlen(elm_object_item_text_get(DATA_GET(wd->sentinel))))) + (strlen(elm_flipselector_item_label_get(item)) > + strlen(elm_flipselector_item_label_get(DATA_GET(wd->sentinel))))) { wd->sentinel = wd->items; _sizing_eval(obj); @@ -707,7 +684,7 @@ elm_flipselector_item_prepend(Evas_Object *obj, const char *label, void (*func)( if (eina_list_count(wd->items) >= 2) edje_object_signal_emit(wd->base, "elm,state,button,visible", "elm"); - return (Elm_Object_Item *) item; + return item; } /* TODO: account for deleted items? */ @@ -717,11 +694,13 @@ elm_flipselector_items_get(const Evas_Object *obj) ELM_CHECK_WIDTYPE(obj, widtype) NULL; Widget_Data *wd = elm_widget_data_get(obj); - if (!wd) return NULL; + if (!wd) + return NULL; + return wd->items; } -EAPI Elm_Object_Item * +EAPI Elm_Flipselector_Item * elm_flipselector_first_item_get(const Evas_Object *obj) { ELM_CHECK_WIDTYPE(obj, widtype) NULL; @@ -731,17 +710,21 @@ elm_flipselector_first_item_get(const Evas_Object *obj) Eina_List *l; wd = elm_widget_data_get(obj); - if (!wd || !wd->items) return NULL; + if (!wd || !wd->items) + return NULL; EINA_LIST_FOREACH(wd->items, l, it) { - if (it->deleted) continue; - return (Elm_Object_Item *) it; + if (it->deleted) + continue; + + return it; } + return NULL; } -EAPI Elm_Object_Item * +EAPI Elm_Flipselector_Item * elm_flipselector_last_item_get(const Evas_Object *obj) { ELM_CHECK_WIDTYPE(obj, widtype) NULL; @@ -751,42 +734,49 @@ elm_flipselector_last_item_get(const Evas_Object *obj) Eina_List *l; wd = elm_widget_data_get(obj); - if (!wd || !wd->items) return NULL; + if (!wd || !wd->items) + return NULL; EINA_LIST_REVERSE_FOREACH(wd->items, l, it) { - if (it->deleted) continue; - return (Elm_Object_Item *) it; + if (it->deleted) + continue; + + return it; } + return NULL; } -EAPI Elm_Object_Item * +EAPI Elm_Flipselector_Item * elm_flipselector_selected_item_get(const Evas_Object *obj) { ELM_CHECK_WIDTYPE(obj, widtype) NULL; Widget_Data *wd = elm_widget_data_get(obj); - if (!wd || !wd->current) return NULL; + if (!wd || !wd->current) + return NULL; + return DATA_GET(wd->current); } EAPI void -elm_flipselector_item_selected_set(Elm_Object_Item *it, Eina_Bool selected) +elm_flipselector_item_selected_set(Elm_Flipselector_Item *item, Eina_Bool selected) { - ELM_OBJ_ITEM_CHECK_OR_RETURN(it); + ELM_FLIPSELECTOR_ITEM_CHECK_DELETED_RETURN(item); - Elm_Flipselector_Item *item, *_item, *cur; + Elm_Flipselector_Item *_item, *cur; int flipside = MSG_FLIP_UP; Widget_Data *wd; Eina_List *l; - item = (Elm_Flipselector_Item *) it; wd = elm_widget_data_get(WIDGET(item)); - if (!wd) return; + if (!wd) + return; cur = DATA_GET(wd->current); - if ((selected) && (cur == item)) return; + if ((selected) && (cur == item)) + return; _flipselector_walk(wd); @@ -807,7 +797,8 @@ elm_flipselector_item_selected_set(Elm_Object_Item *it, Eina_Bool selected) EINA_LIST_FOREACH(wd->items, l, _item) { - if (_item == cur) flipside = MSG_FLIP_DOWN; + if (_item == cur) + flipside = MSG_FLIP_DOWN; if (_item == item) { @@ -821,29 +812,26 @@ elm_flipselector_item_selected_set(Elm_Object_Item *it, Eina_Bool selected) } EAPI Eina_Bool -elm_flipselector_item_selected_get(const Elm_Object_Item *it) +elm_flipselector_item_selected_get(const Elm_Flipselector_Item *item) { - ELM_OBJ_ITEM_CHECK_OR_RETURN(it, EINA_FALSE); + ELM_FLIPSELECTOR_ITEM_CHECK_DELETED_RETURN(item, EINA_FALSE); Widget_Data *wd; - Elm_Flipselector_Item *item; - item = (Elm_Flipselector_Item *) it; wd = elm_widget_data_get(WIDGET(item)); if (!wd) return EINA_FALSE; return (eina_list_data_get(wd->current) == item); } EAPI void -elm_flipselector_item_del(Elm_Object_Item *it) +elm_flipselector_item_del(Elm_Flipselector_Item *item) { - ELM_OBJ_ITEM_CHECK_OR_RETURN(it); + ELM_FLIPSELECTOR_ITEM_CHECK_DELETED_RETURN(item); + Widget_Data *wd; - Elm_Flipselector_Item *item, *item2; - Eina_List *l; - item = (Elm_Flipselector_Item *) it; wd = elm_widget_data_get(WIDGET(item)); - if (!wd) return; + if (!wd) + return; if (wd->walking > 0) { @@ -856,64 +844,112 @@ elm_flipselector_item_del(Elm_Object_Item *it) wd->items = eina_list_remove(wd->items, item); _item_free(item); _sentinel_eval(wd); + _flipselector_unwalk(wd); } EAPI const char * -elm_flipselector_item_label_get(const Elm_Object_Item *it) +elm_flipselector_item_label_get(const Elm_Flipselector_Item *item) { - return _item_text_get_hook(it, NULL); + ELM_FLIPSELECTOR_ITEM_CHECK_DELETED_RETURN(item, NULL); + + Elm_Flipselector_Item *_item; + Widget_Data *wd; + Eina_List *l; + + wd = elm_widget_data_get(WIDGET(item)); + if ((!wd) || (!wd->items)) + return NULL; + + EINA_LIST_FOREACH(wd->items, l, _item) + if (_item == item) + return item->label; + + return NULL; } EAPI void -elm_flipselector_item_label_set(Elm_Object_Item *it, const char *label) +elm_flipselector_item_label_set(Elm_Flipselector_Item *item, const char *label) { - _item_text_set_hook(it, NULL, label); + ELM_FLIPSELECTOR_ITEM_CHECK_DELETED_RETURN(item); + + Widget_Data *wd; + Eina_List *l; + + if ((!item) || (!label)) + return; + + wd = elm_widget_data_get(WIDGET(item)); + if ((!wd) || (!wd->items)) + return; + + l = eina_list_data_find_list(wd->items, item); + if (!l) + return; + + eina_stringshare_del(item->label); + item->label = eina_stringshare_add_length(label, wd->max_len); + + if (strlen(label) > + strlen(elm_flipselector_item_label_get(DATA_GET(wd->sentinel)))) + wd->sentinel = l; + + if (wd->current == l) + { + _update_view(WIDGET(item)); + _sizing_eval(wd->self); + } + + return; } -EAPI Elm_Object_Item * -elm_flipselector_item_prev_get(Elm_Object_Item *it) +EAPI Elm_Flipselector_Item * +elm_flipselector_item_prev_get(Elm_Flipselector_Item *item) { - ELM_OBJ_ITEM_CHECK_OR_RETURN(it, NULL); + ELM_FLIPSELECTOR_ITEM_CHECK_DELETED_RETURN(item, NULL); - Elm_Flipselector_Item *item, *_item; + Elm_Flipselector_Item *_item; Widget_Data *wd; Eina_List *l; - item = (Elm_Flipselector_Item *) it; wd = elm_widget_data_get(WIDGET(item)); - if ((!wd) || (!wd->items)) return NULL; + if ((!wd) || (!wd->items)) + return NULL; EINA_LIST_FOREACH(wd->items, l, _item) - if (_item == item) - { - l = eina_list_prev(l); - if (!l) return NULL; - return DATA_GET(l); - } + if (_item == item) + { + l = eina_list_prev(l); + if (!l) + return NULL; + return DATA_GET(l); + } + return NULL; } -EAPI Elm_Object_Item * -elm_flipselector_item_next_get(Elm_Object_Item *it) +EAPI Elm_Flipselector_Item * +elm_flipselector_item_next_get(Elm_Flipselector_Item *item) { - ELM_OBJ_ITEM_CHECK_OR_RETURN(it, NULL); + ELM_FLIPSELECTOR_ITEM_CHECK_DELETED_RETURN(item, NULL); - Elm_Flipselector_Item *item, *_item; + Elm_Flipselector_Item *_item; Widget_Data *wd; Eina_List *l; - item = (Elm_Flipselector_Item *) it; wd = elm_widget_data_get(WIDGET(item)); - if ((!wd) || (!wd->items)) return NULL; + if ((!wd) || (!wd->items)) + return NULL; EINA_LIST_FOREACH(wd->items, l, _item) - if (_item == item) - { - l = eina_list_next(l); - if (!l) return NULL; - return DATA_GET(l); - } + if (_item == item) + { + l = eina_list_next(l); + if (!l) + return NULL; + return DATA_GET(l); + } + return NULL; } @@ -923,7 +959,9 @@ elm_flipselector_interval_set(Evas_Object *obj, double interval) ELM_CHECK_WIDTYPE(obj, widtype); Widget_Data *wd = elm_widget_data_get(obj); - if (!wd) return; + if (!wd) + return; + wd->first_interval = interval; } @@ -933,6 +971,8 @@ elm_flipselector_interval_get(const Evas_Object *obj) ELM_CHECK_WIDTYPE(obj, widtype) 0.0; Widget_Data *wd = elm_widget_data_get(obj); - if (!wd) return 0; + + if (!wd) + return 0.0; return wd->first_interval; } diff --git a/src/lib/elm_gengrid.c b/src/lib/elm_gengrid.c index af2f4be..6aea4ef 100644 --- a/src/lib/elm_gengrid.c +++ b/src/lib/elm_gengrid.c @@ -137,10 +137,6 @@ static const char SIG_SCROLL_ANIM_START[] = "scroll,anim,start"; static const char SIG_SCROLL_ANIM_STOP[] = "scroll,anim,stop"; static const char SIG_SCROLL_DRAG_START[] = "scroll,drag,start"; static const char SIG_SCROLL_DRAG_STOP[] = "scroll,drag,stop"; -static const char SIG_EDGE_TOP[] = "edge,top"; -static const char SIG_EDGE_BOTTOM[] = "edge,bottom"; -static const char SIG_EDGE_LEFT[] = "edge,left"; -static const char SIG_EDGE_RIGHT[] = "edge,right"; static const char SIG_MOVED[] = "moved"; static const Evas_Smart_Cb_Description _signals[] = { @@ -161,10 +157,6 @@ static const Evas_Smart_Cb_Description _signals[] = { {SIG_SCROLL_ANIM_STOP, ""}, {SIG_SCROLL_DRAG_START, ""}, {SIG_SCROLL_DRAG_STOP, ""}, - {SIG_EDGE_TOP, ""}, - {SIG_EDGE_BOTTOM, ""}, - {SIG_EDGE_LEFT, ""}, - {SIG_EDGE_RIGHT, ""}, {SIG_MOVED, ""}, {NULL, NULL} }; @@ -1620,39 +1612,6 @@ _scr_drag_stop(void *data, } static void -_edge_left(void *data, - Evas_Object *scr __UNUSED__, - void *event_info __UNUSED__) -{ - evas_object_smart_callback_call(data, SIG_EDGE_LEFT, NULL); -} - -static void -_edge_right(void *data, - Evas_Object *scr __UNUSED__, - void *event_info __UNUSED__) -{ - evas_object_smart_callback_call(data, SIG_EDGE_RIGHT, NULL); -} - -static void -_edge_top(void *data, - Evas_Object *scr __UNUSED__, - void *event_info __UNUSED__) -{ - evas_object_smart_callback_call(data, SIG_EDGE_TOP, NULL); -} - -static void -_edge_bottom(void *data, - Evas_Object *scr __UNUSED__, - void *event_info __UNUSED__) -{ - evas_object_smart_callback_call(data, SIG_EDGE_BOTTOM, NULL); -} - - -static void _scr_scroll(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__) @@ -1711,10 +1670,6 @@ elm_gengrid_add(Evas_Object *parent) evas_object_smart_callback_add(wd->scr, "animate,stop", _scr_anim_stop, obj); evas_object_smart_callback_add(wd->scr, "drag,start", _scr_drag_start, obj); evas_object_smart_callback_add(wd->scr, "drag,stop", _scr_drag_stop, obj); - evas_object_smart_callback_add(wd->scr, "edge,left", _edge_left, obj); - evas_object_smart_callback_add(wd->scr, "edge,right", _edge_right, obj); - evas_object_smart_callback_add(wd->scr, "edge,top", _edge_top, obj); - evas_object_smart_callback_add(wd->scr, "edge,bottom", _edge_bottom, obj); evas_object_smart_callback_add(wd->scr, "scroll", _scr_scroll, obj); elm_smart_scroller_bounce_allow_set(wd->scr, bounce, bounce); diff --git a/src/lib/elm_genlist.c b/src/lib/elm_genlist.c index 50b2342..7bbf256 100644 --- a/src/lib/elm_genlist.c +++ b/src/lib/elm_genlist.c @@ -4336,52 +4336,41 @@ elm_genlist_item_subitems_clear(Elm_Genlist_Item *it) ELM_WIDGET_ITEM_WIDTYPE_CHECK_OR_RETURN(it); Widget_Data *wd = elm_widget_data_get(WIDGET(it)); if (!wd) return; - Elm_Genlist_Item *it2, *it3; + Elm_Genlist_Item *it2; Evas_Coord y, h; - if (!wd->effect_mode || !wd->move_effect_mode) + if (!it->wd->effect_mode || !it->wd->move_effect_mode) _item_subitems_clear(it); else { - if ((!wd->item_moving_effect_timer) && (it->flags != ELM_GENLIST_ITEM_GROUP) && - wd->move_effect_mode != ELM_GENLIST_ITEM_MOVE_EFFECT_DELETE) + if ((!it->wd->item_moving_effect_timer) && (it->flags != ELM_GENLIST_ITEM_GROUP) && + it->wd->move_effect_mode != ELM_GENLIST_ITEM_MOVE_EFFECT_DELETE ) { - wd->expand_item = it; + it->wd->expand_item = it; _item_flip_effect_show(it); evas_object_geometry_get(VIEW(it), NULL, &y, NULL, &h); - wd->expand_item_end = y + h; + it->wd->expand_item_end = y + h; - it2= it; + it2= it; do { it2 = elm_genlist_item_next_get(it2); if (!it2) break; } while (it2->expanded_depth > it->expanded_depth); if (it2) { - int diff; Evas_Coord vy, vh; evas_output_viewport_get(evas_object_evas_get(wd->pan_smart), NULL, &vy, NULL, &vh); - diff = it2->old_scrl_y - (vy + vh); - if (diff > 0) - { - it3 = it2; - while (it3) - { - it3->old_scrl_y = it3->old_scrl_y - diff; - it3 = elm_genlist_item_next_get(it3); - } - } - - wd->expand_item_gap = wd->expand_item_end - it2->old_scrl_y; + it2->old_scrl_y = ((it2->old_scrl_y > vy + vh) ? vy + vh : it2->old_scrl_y); + it->wd->expand_item_gap = it->wd->expand_item_end - it2->old_scrl_y; } else - wd->expand_item_gap = 0; + it->wd->expand_item_gap = 0; - evas_object_raise(wd->alpha_bg); - evas_object_show(wd->alpha_bg); + evas_object_raise(it->wd->alpha_bg); + evas_object_show(it->wd->alpha_bg); - wd->start_time = current_time_get(); - wd->item_moving_effect_timer = ecore_animator_add(_item_moving_effect_timer_cb, wd); + it->wd->start_time = current_time_get(); + it->wd->item_moving_effect_timer = ecore_animator_add(_item_moving_effect_timer_cb, it->wd); } else _item_subitems_clear(it); @@ -5528,6 +5517,7 @@ _emit_contract(Elm_Genlist_Item *it) Elm_Genlist_Item *it2; Eina_List *l; + // printf("%p is emited contract\n", it); edje_object_signal_emit(VIEW(it), "elm,state,contract_flip", ""); it->effect_done = EINA_FALSE; @@ -5543,7 +5533,14 @@ _item_flip_effect_show(Elm_Genlist_Item *it) Elm_Genlist_Item *it2; Eina_List *l; Widget_Data *wd = it->wd; + Eina_Bool check = EINA_FALSE; + it2 = elm_genlist_item_next_get(it); + while (it2) + { + if (it2->expanded_depth <= it->expanded_depth) check = EINA_TRUE; + it2 = elm_genlist_item_next_get(it2); + } EINA_LIST_FOREACH(it->items, l, it2) { if (it2->parent && it == it2->parent) diff --git a/src/lib/elm_imageslider.c b/src/lib/elm_imageslider.c index 3f22bc2..4104bb5 100644 --- a/src/lib/elm_imageslider.c +++ b/src/lib/elm_imageslider.c @@ -1,8 +1,20 @@ +/* +* +* vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2 +*/ #include #include #include #include "elm_priv.h" +/** +* @defgroup Imageslider Imageslider +* @ingroup Elementary +* +* By flicking images on the screen, +* you can see the images in specific path. +*/ + typedef struct _Widget_Data Widget_Data; #define ANI_STEP (14 * elm_scale_get()) @@ -128,6 +140,7 @@ _del_hook(Evas_Object *obj) } if (wd) free(wd); + } // Whenever require processing theme, Call this function @@ -165,6 +178,7 @@ _sizing_eval(Evas_Object *obj) _imageslider_move(obj, e, obj, NULL); _imageslider_resize(obj, e, obj, NULL); + } // Whenever MOVE event occurs, Call this function. @@ -187,6 +201,7 @@ _imageslider_move(void *data, Evas * e __UNUSED__, Evas_Object *obj, void *event wd->y = y; _imageslider_update_pos(wd, wd->x, wd->y, wd->w); + } // Whenever RESIZE event occurs, Call this fucntion. @@ -270,7 +285,7 @@ _imageslider_obj_shift(Widget_Data * wd, Eina_Bool left) wd->ly[BLOCK_LEFT] = wd->ly[BLOCK_CENTER]; wd->ly[BLOCK_CENTER] = wd->ly[BLOCK_RIGHT]; wd->ly[BLOCK_RIGHT] = ly_temp; - elm_object_part_content_set(wd->ly[BLOCK_RIGHT], "swl.photo", NULL); + elm_object_content_part_set(wd->ly[BLOCK_RIGHT], "swl.photo", NULL); } else { @@ -279,7 +294,7 @@ _imageslider_obj_shift(Widget_Data * wd, Eina_Bool left) wd->ly[BLOCK_RIGHT] = wd->ly[BLOCK_CENTER]; wd->ly[BLOCK_CENTER] = wd->ly[BLOCK_LEFT]; wd->ly[BLOCK_LEFT] = ly_temp; - elm_object_part_content_set(wd->ly[BLOCK_LEFT], "swl.photo", NULL); + elm_object_content_part_set(wd->ly[BLOCK_LEFT], "swl.photo", NULL); } } @@ -489,14 +504,14 @@ _check_drag(int state, void *data) it = eina_list_data_get(l[state]); - eo = elm_object_part_content_get(wd->ly[state], "swl.photo"); + eo = (Evas_Object*)elm_object_content_part_get(wd->ly[state], "swl.photo"); if (eo) evas_object_geometry_get(eo, &ix, &iy, &iw, &ih); edje_object_part_drag_value_get(elm_layout_edje_get(wd->ly[state]), "swl.photo", &dx, &dy); if ((iw != wd->w) || ((dx != 0) || (dy != 0))) { - elm_object_part_content_set(wd->ly[state], "swl.photo", NULL); + elm_object_content_part_set(wd->ly[state], "swl.photo", NULL); } else return 1; @@ -615,10 +630,10 @@ _imageslider_update(Widget_Data * wd) for (i = 0; i < BLOCK_MAX; i++) { - eo = elm_object_part_content_get((const Evas_Object*)wd->ly[i], "swl.photo"); + eo = (Evas_Object*)elm_object_content_part_get((const Evas_Object*)wd->ly[i], "swl.photo"); if (!l[i]) { - elm_object_part_content_set(wd->ly[i], "swl.photo", NULL); + elm_object_content_part_set(wd->ly[i], "swl.photo", NULL); } else { @@ -631,13 +646,21 @@ _imageslider_update(Widget_Data * wd) eo = elm_image_add(wd->obj); //elm_image_prescale_set(eo, wd->w); elm_image_file_set(eo, it->photo_file, NULL); - elm_object_part_content_set(wd->ly[i], "swl.photo", eo); + elm_object_content_part_set(wd->ly[i], "swl.photo", eo); } } } _anim(wd); } +/** +* Add an Image Slider widget +* +* @param parent The parent object +* @return The new Image slider object or NULL if it cannot be created +* +* @ingroup Imageslider +*/ EAPI Evas_Object * elm_imageslider_add(Evas_Object *parent) { @@ -684,6 +707,17 @@ elm_imageslider_add(Evas_Object *parent) return obj; } +/** +* Append an Image Slider item +* +* @param obj The Image Slider object +* @param photo_file photo file path +* @param func callback function +* @param data callback data +* @return The Image Slider item handle or NULL +* +* @ingroup Imageslider +*/ EAPI Elm_Imageslider_Item * elm_imageslider_item_append(Evas_Object *obj, const char *photo_file, Elm_Imageslider_Cb func, void *data) { @@ -710,6 +744,18 @@ elm_imageslider_item_append(Evas_Object *obj, const char *photo_file, Elm_Images return it; } +/** +* Insert an Image Slider item into the Image Slider Widget by using the given index. +* +* @param obj The Image Slider object +* @param photo_file photo file path +* @param func callback function +* @param index required position +* @param data callback data +* @return The Image Slider item handle or NULL +* +* @ingroup Imageslider +*/ EAPI Elm_Imageslider_Item * elm_imageslider_item_append_relative(Evas_Object *obj, const char *photo_file, Elm_Imageslider_Cb func, unsigned int index, void *data) { @@ -741,6 +787,17 @@ elm_imageslider_item_append_relative(Evas_Object *obj, const char *photo_file, E return it; } +/** +* Prepend Image Slider item +* +* @param obj The Image Slider object +* @param photo_file photo file path +* @param func callback function +* @param data callback data +* @return The imageslider item handle or NULL +* +* @ingroup Imageslider +*/ EAPI Elm_Imageslider_Item * elm_imageslider_item_prepend(Evas_Object *obj, const char *photo_file, Elm_Imageslider_Cb func, void *data) { @@ -764,6 +821,13 @@ elm_imageslider_item_prepend(Evas_Object *obj, const char *photo_file, Elm_Image return it; } +/** +* Delete the selected Image Slider item +* +* @param it The selected Image Slider item handle +* +* @ingroup Imageslider +*/ EAPI void elm_imageslider_item_del(Elm_Imageslider_Item * it) { @@ -791,6 +855,14 @@ elm_imageslider_item_del(Elm_Imageslider_Item * it) _imageslider_update(wd); } +/** +* Get the selected Image Slider item +* +* @param obj The Image Slider object +* @return The selected Image Slider item or NULL +* +* @ingroup Imageslider +*/ EAPI Elm_Imageslider_Item * elm_imageslider_selected_item_get(Evas_Object *obj) { @@ -806,6 +878,14 @@ elm_imageslider_selected_item_get(Evas_Object *obj) return eina_list_data_get(wd->cur); } +/** +* Get whether an Image Slider item is selected or not +* +* @param it the selected Image Slider item +* @return EINA_TRUE or EINA_FALSE +* +* @ingroup Imageslider +*/ EAPI Eina_Bool elm_imageslider_item_selected_get(Elm_Imageslider_Item * it) { @@ -823,6 +903,13 @@ elm_imageslider_item_selected_get(Elm_Imageslider_Item * it) return EINA_FALSE; } +/** +* Set the selected Image Slider item +* +* @param it The Imaga Slider item +* +* @ingroup Imageslider +*/ EAPI void elm_imageslider_item_selected_set(Elm_Imageslider_Item * it) { @@ -847,13 +934,21 @@ elm_imageslider_item_selected_set(Elm_Imageslider_Item * it) for (i = 0; i < BLOCK_MAX; i++) { - eo = elm_object_part_content_get(wd->ly[i], "swl.photo"); + eo = (Evas_Object*)elm_object_content_part_get(wd->ly[i], "swl.photo"); if (eo) - elm_object_part_content_set(wd->ly[i], "swl.photo", NULL); + elm_object_content_part_set(wd->ly[i], "swl.photo", NULL); } _imageslider_update(wd); } +/** +* Get the photo file path of given Image Slider item +* +* @param it The Image Slider item +* @return The photo file path or NULL; +* +* @ingroup Imageslider +*/ EAPI const char * elm_imageslider_item_photo_file_get(Elm_Imageslider_Item * it) { @@ -862,6 +957,14 @@ elm_imageslider_item_photo_file_get(Elm_Imageslider_Item * it) return it->photo_file; } +/** +* Sets the photo file path of given Image Slider item +* +* @param it The Image Slider item +* @param photo_file The photo file path or NULL; +* +* @ingroup Imageslider +*/ EAPI void elm_imageslider_item_photo_file_set(Elm_Imageslider_Item *it, const char *photo_file) { @@ -875,6 +978,14 @@ elm_imageslider_item_photo_file_set(Elm_Imageslider_Item *it, const char *photo_ } } +/** +* Get the previous Image Slider item +* +* @param it The Image Slider item +* @return The previous Image Slider item or NULL +* +* @ingroup Imageslider +*/ EAPI Elm_Imageslider_Item * elm_imageslider_item_prev(Elm_Imageslider_Item * it) { @@ -900,6 +1011,14 @@ elm_imageslider_item_prev(Elm_Imageslider_Item * it) return NULL; } +/** +* Get the next Image Slider item +* +* @param it The Image Slider item +* @return The next Image Slider item or NULL +* +* @ingroup Imageslider +*/ EAPI Elm_Imageslider_Item * elm_imageslider_item_next(Elm_Imageslider_Item * it) { @@ -925,6 +1044,13 @@ elm_imageslider_item_next(Elm_Imageslider_Item * it) return NULL; } +/** +* Move to the previous Image Slider item +* +* @param obj The Image Slider object +* +* @ingroup Imageslider +*/ EAPI void elm_imageslider_prev(Evas_Object *obj) { @@ -938,6 +1064,13 @@ elm_imageslider_prev(Evas_Object *obj) _imageslider_obj_move(wd, -1); } +/** +* Move to the next Image Slider item +* +* @param obj The Image Slider object +* +* @ingroup Imageslider +*/ EAPI void elm_imageslider_next(Evas_Object * obj) { @@ -951,6 +1084,13 @@ elm_imageslider_next(Evas_Object * obj) _imageslider_obj_move(wd, 1); } +/** +* Updates an Image Slider item +* +* @param it The Image Slider item +* +* @ingroup Imageslider +*/ EAPI void elm_imageslider_item_update(Elm_Imageslider_Item *it) { @@ -961,10 +1101,10 @@ elm_imageslider_item_update(Elm_Imageslider_Item *it) if (wd->ani_lock) return; if (it == eina_list_data_get(eina_list_prev(wd->cur))) - elm_object_part_content_set(wd->ly[BLOCK_LEFT], "swl.photo", NULL); + elm_object_content_part_set(wd->ly[BLOCK_LEFT], "swl.photo", NULL); else if (it == eina_list_data_get(wd->cur)) - elm_object_part_content_set(wd->ly[BLOCK_CENTER], "swl.photo", NULL); + elm_object_content_part_set(wd->ly[BLOCK_CENTER], "swl.photo", NULL); else if (it == eina_list_data_get(eina_list_next(wd->cur))) - elm_object_part_content_set(wd->ly[BLOCK_RIGHT], "swl.photo", NULL); + elm_object_content_part_set(wd->ly[BLOCK_RIGHT], "swl.photo", NULL); _imageslider_update(wd); } diff --git a/src/lib/elm_main.c b/src/lib/elm_main.c index 4cc2453..d7acc84 100644 --- a/src/lib/elm_main.c +++ b/src/lib/elm_main.c @@ -918,10 +918,6 @@ elm_object_mirrored_automatic_set(Evas_Object *obj, Eina_Bool automatic) elm_widget_mirrored_automatic_set(obj, automatic); } -/** - * @} - */ - EAPI void elm_object_scale_set(Evas_Object *obj, double scale) @@ -2125,7 +2121,7 @@ elm_object_signal_emit(Evas_Object *obj, } EAPI void -elm_object_signal_callback_add(Evas_Object *obj, const char *emission, const char *source, Edje_Signal_Cb func, void *data) +elm_object_signal_callback_add(Evas_Object *obj, const char *emission, const char *source, void (*func) (void *data, Evas_Object *o, const char *emission, const char *source), void *data) { EINA_SAFETY_ON_NULL_RETURN(obj); EINA_SAFETY_ON_NULL_RETURN(func); @@ -2133,7 +2129,7 @@ elm_object_signal_callback_add(Evas_Object *obj, const char *emission, const cha } EAPI void * -elm_object_signal_callback_del(Evas_Object *obj, const char *emission, const char *source, Edje_Signal_Cb func) +elm_object_signal_callback_del(Evas_Object *obj, const char *emission, const char *source, void (*func) (void *data, Evas_Object *o, const char *emission, const char *source)) { EINA_SAFETY_ON_NULL_RETURN_VAL(obj, NULL); EINA_SAFETY_ON_NULL_RETURN_VAL(func, NULL); @@ -2205,41 +2201,20 @@ elm_object_item_content_part_set(Elm_Object_Item *it, const char *part, Evas_Object *content) { - _elm_widget_item_content_part_set((Elm_Widget_Item *) it, part, content); -} - -EAPI void -elm_object_item_part_content_set(Elm_Object_Item *it, - const char *part, - Evas_Object *content) -{ - _elm_widget_item_content_part_set((Elm_Widget_Item *) it, part, content); + elm_widget_item_content_part_set(it, part, content); } EAPI Evas_Object * elm_object_item_content_part_get(const Elm_Object_Item *it, const char *part) { - return _elm_widget_item_content_part_get((Elm_Widget_Item *) it, part); -} - -EAPI Evas_Object * -elm_object_item_part_content_get(const Elm_Object_Item *it, - const char *part) -{ - return _elm_widget_item_content_part_get((Elm_Widget_Item *) it, part); + return elm_widget_item_content_part_get(it, part); } EAPI Evas_Object * elm_object_item_content_part_unset(Elm_Object_Item *it, const char *part) { - return _elm_widget_item_content_part_unset((Elm_Widget_Item *) it, part); -} - -EAPI Evas_Object * -elm_object_item_part_content_unset(Elm_Object_Item *it, const char *part) -{ - return _elm_widget_item_content_part_unset((Elm_Widget_Item *) it, part); + return elm_widget_item_content_part_unset(it, part); } EAPI void @@ -2247,39 +2222,13 @@ elm_object_item_text_part_set(Elm_Object_Item *it, const char *part, const char *label) { - _elm_widget_item_text_part_set((Elm_Widget_Item *) it, part, label); -} - -EAPI void -elm_object_item_part_text_set(Elm_Object_Item *it, - const char *part, - const char *label) -{ - _elm_widget_item_text_part_set((Elm_Widget_Item *) it, part, label); + elm_widget_item_text_part_set(it, part, label); } EAPI const char * elm_object_item_text_part_get(const Elm_Object_Item *it, const char *part) { - return _elm_widget_item_text_part_get((Elm_Widget_Item *) it, part); -} - -EAPI const char * -elm_object_item_part_text_get(const Elm_Object_Item *it, const char *part) -{ - return _elm_widget_item_text_part_get((Elm_Widget_Item *) it, part); -} - -EAPI void -elm_object_access_info_set(Evas_Object *obj, const char *txt) -{ - elm_widget_access_info_set(obj, txt); -} - -EAPI void -elm_object_item_access_info_set(Elm_Object_Item *it, const char *txt) -{ - _elm_widget_item_access_info_set((Elm_Widget_Item *) it, txt); + return elm_widget_item_text_part_get(it, part); } EAPI void * @@ -2297,16 +2246,18 @@ elm_object_item_data_set(Elm_Object_Item *it, void *data) EAPI void elm_object_item_signal_emit(Elm_Object_Item *it, const char *emission, const char *source) { - _elm_widget_item_signal_emit((Elm_Widget_Item *) it, emission, source); + elm_widget_item_signal_emit(it, emission, source); } -EAPI void elm_object_item_disabled_set(Elm_Object_Item *it, Eina_Bool disabled) +EAPI void +elm_object_access_info_set(Evas_Object *obj, const char *txt) { - _elm_widget_item_disabled_set((Elm_Widget_Item *) it, disabled); + elm_widget_access_info_set(obj, txt); } -EAPI Eina_Bool elm_object_item_disabled_get(const Elm_Object_Item *it) +EAPI void +elm_object_item_access_info_set(Elm_Object_Item *it, const char *txt) { - return _elm_widget_item_disabled_get((Elm_Widget_Item *) it); + _elm_widget_item_access_info_set((Elm_Widget_Item *)it, txt); } diff --git a/src/lib/elm_map.c b/src/lib/elm_map.c index 01b24b3..9d7acd5 100644 --- a/src/lib/elm_map.c +++ b/src/lib/elm_map.c @@ -6,8 +6,6 @@ #include "elm_priv.h" #include "els_scroller.h" -#ifdef HAVE_ELEMENTARY_ECORE_CON - typedef struct _Widget_Data Widget_Data; typedef struct _Pan Pan; typedef struct _Grid Grid; @@ -1242,7 +1240,7 @@ _process_download_list(Evas_Object *obj) { ELM_CHECK_WIDTYPE(obj, widtype); Widget_Data *wd = elm_widget_data_get(obj); - Eina_List *l, *ll; + Eina_List *l; Evas_Coord ox, oy, ow, oh, cvx, cvy, cvw, cvh, tx, ty, gw, gh, xx, yy, ww, hh; Grid_Item *gi; @@ -1252,7 +1250,7 @@ _process_download_list(Evas_Object *obj) gw = wd->size.w; gh = wd->size.h; - EINA_LIST_FOREACH_SAFE(wd->download_list, l, ll, gi) + EINA_LIST_FOREACH(wd->download_list, l, gi) { xx = gi->out.x; yy = gi->out.y; @@ -1281,7 +1279,7 @@ _process_download_list(Evas_Object *obj) } } - EINA_LIST_REVERSE_FOREACH_SAFE(wd->download_list, l, ll, gi) + EINA_LIST_REVERSE_FOREACH(wd->download_list, l, gi) { if (gi->wd->download_num >= MAX_CONCURRENT_DOWNLOAD) break; @@ -1320,13 +1318,22 @@ grid_create(Evas_Object *obj) if ((!wd) || (!wd->src)) return NULL; g = calloc(1, sizeof(Grid)); + if (!g) return NULL; g->zoom = wd->zoom; g->tsize = wd->tsize; g->wd = wd; - if (g->zoom > wd->src->zoom_max) return NULL; - if (g->zoom < wd->src->zoom_min) return NULL; + if (g->zoom > wd->src->zoom_max) + { + free(g); + return NULL; + } + if (g->zoom < wd->src->zoom_min) + { + free(g); + return NULL; + } int size = pow(2.0, wd->zoom); g->gw = size; @@ -2926,14 +2933,15 @@ _parse_kml(void *data) char *buf; fseek(f, 0, SEEK_SET); - buf = malloc(sz); + buf = malloc(sz + 1); if (buf) { + memset(buf, 0, sz + 1); if (fread(buf, 1, sz, f)) { eina_simple_xml_parse(buf, sz, EINA_TRUE, cb_route_dump, &dump); - free(buf); } + free(buf); } } fclose(f); @@ -3018,14 +3026,15 @@ _parse_name(void *data) char *buf; fseek(f, 0, SEEK_SET); - buf = malloc(sz); + buf = malloc(sz + 1); if (buf) { + memset(buf, 0, sz + 1); if (fread(buf, 1, sz, f)) { eina_simple_xml_parse(buf, sz, EINA_TRUE, cb_name_dump, &dump); - free(buf); } + free(buf); } } fclose(f); @@ -3149,12 +3158,9 @@ _utils_convert_name(const Evas_Object *obj, int method, char *address, double lo static int idnum = 1; -#endif - EAPI Evas_Object * elm_map_add(Evas_Object *parent) { -#ifdef HAVE_ELEMENTARY_ECORE_CON Evas *e; Widget_Data *wd; Evas_Coord minw, minh; @@ -3285,16 +3291,11 @@ elm_map_add(Evas_Object *parent) } return obj; -#else - (void) parent; - return NULL; -#endif } EAPI void elm_map_zoom_set(Evas_Object *obj, int zoom) { -#ifdef HAVE_ELEMENTARY_ECORE_CON ELM_CHECK_WIDTYPE(obj, widtype); Widget_Data *wd = elm_widget_data_get(obj); Eina_List *l; @@ -3436,31 +3437,21 @@ elm_map_zoom_set(Evas_Object *obj, int zoom) } if (zoom_changed) evas_object_smart_callback_call(obj, SIG_ZOOM_CHANGE, NULL); -#else - (void) obj; - (void) zoom; -#endif } EAPI int elm_map_zoom_get(const Evas_Object *obj) { -#ifdef HAVE_ELEMENTARY_ECORE_CON ELM_CHECK_WIDTYPE(obj, widtype) 0; Widget_Data *wd = elm_widget_data_get(obj); if (!wd) return 0; return wd->zoom; -#else - (void) obj; - return 0; -#endif } EAPI void elm_map_zoom_mode_set(Evas_Object *obj, Elm_Map_Zoom_Mode mode) { -#ifdef HAVE_ELEMENTARY_ECORE_CON ELM_CHECK_WIDTYPE(obj, widtype); Widget_Data *wd = elm_widget_data_get(obj); @@ -3474,31 +3465,21 @@ elm_map_zoom_mode_set(Evas_Object *obj, Elm_Map_Zoom_Mode mode) wd->zoom = 0; elm_map_zoom_set(wd->obj, tz); } -#else - (void) obj; - (void) mode; -#endif } EAPI Elm_Map_Zoom_Mode elm_map_zoom_mode_get(const Evas_Object *obj) { -#ifdef HAVE_ELEMENTARY_ECORE_CON ELM_CHECK_WIDTYPE(obj, widtype) ELM_MAP_ZOOM_MODE_MANUAL; Widget_Data *wd = elm_widget_data_get(obj); if (!wd) return ELM_MAP_ZOOM_MODE_MANUAL; return wd->mode; -#else - (void) obj; - return ELM_MAP_ZOOM_MODE_MANUAL; -#endif } EAPI void elm_map_geo_region_bring_in(Evas_Object *obj, double lon, double lat) { -#ifdef HAVE_ELEMENTARY_ECORE_CON ELM_CHECK_WIDTYPE(obj, widtype); Widget_Data *wd = elm_widget_data_get(obj); int rx, ry, rw, rh; @@ -3524,17 +3505,11 @@ elm_map_geo_region_bring_in(Evas_Object *obj, double lon, double lat) wd->center_on.enabled = EINA_TRUE; wd->center_on.lon = lon; wd->center_on.lat = lat; -#else - (void) obj; - (void) lon; - (void) lat; -#endif } EAPI void elm_map_geo_region_show(Evas_Object *obj, double lon, double lat) { -#ifdef HAVE_ELEMENTARY_ECORE_CON ELM_CHECK_WIDTYPE(obj, widtype); Widget_Data *wd = elm_widget_data_get(obj); int rx, ry, rw, rh; @@ -3559,17 +3534,11 @@ elm_map_geo_region_show(Evas_Object *obj, double lon, double lat) wd->center_on.enabled = EINA_TRUE; wd->center_on.lon = lon; wd->center_on.lat = lat; -#else - (void) obj; - (void) lon; - (void) lat; -#endif } EAPI void elm_map_geo_region_get(const Evas_Object *obj, double *lon, double *lat) { -#ifdef HAVE_ELEMENTARY_ECORE_CON ELM_CHECK_WIDTYPE(obj, widtype); Widget_Data *wd = elm_widget_data_get(obj); Evas_Coord sx, sy, sw, sh; @@ -3581,17 +3550,11 @@ elm_map_geo_region_get(const Evas_Object *obj, double *lon, double *lat) sy += sh / 2; elm_map_utils_convert_coord_into_geo(obj, sx, sy, wd->size.w, lon, lat); -#else - (void) obj; - (void) lon; - (void) lat; -#endif } EAPI void elm_map_paused_set(Evas_Object *obj, Eina_Bool paused) { -#ifdef HAVE_ELEMENTARY_ECORE_CON ELM_CHECK_WIDTYPE(obj, widtype); Widget_Data *wd = elm_widget_data_get(obj); @@ -3608,62 +3571,42 @@ elm_map_paused_set(Evas_Object *obj, Eina_Bool paused) evas_object_smart_callback_call(obj, SIG_ZOOM_STOP, NULL); } } -#else - (void) obj; - (void) paused; -#endif } EAPI void elm_map_paused_markers_set(Evas_Object *obj, Eina_Bool paused) { -#ifdef HAVE_ELEMENTARY_ECORE_CON ELM_CHECK_WIDTYPE(obj, widtype); Widget_Data *wd = elm_widget_data_get(obj); if (!wd) return; if (wd->paused_markers == !!paused) return; wd->paused_markers = paused; -#else - (void) obj; - (void) paused; -#endif } EAPI Eina_Bool elm_map_paused_get(const Evas_Object *obj) { -#ifdef HAVE_ELEMENTARY_ECORE_CON ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE; Widget_Data *wd = elm_widget_data_get(obj); if (!wd) return EINA_FALSE; return wd->paused; -#else - (void) obj; - return EINA_FALSE; -#endif } EAPI Eina_Bool elm_map_paused_markers_get(const Evas_Object *obj) { -#ifdef HAVE_ELEMENTARY_ECORE_CON ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE; Widget_Data *wd = elm_widget_data_get(obj); if (!wd) return EINA_FALSE; return wd->paused_markers; -#else - (void) obj; - return EINA_FALSE; -#endif } EAPI void elm_map_utils_downloading_status_get(const Evas_Object *obj, int *try_num, int *finish_num) { -#ifdef HAVE_ELEMENTARY_ECORE_CON ELM_CHECK_WIDTYPE(obj, widtype); Widget_Data *wd = elm_widget_data_get(obj); @@ -3677,17 +3620,11 @@ elm_map_utils_downloading_status_get(const Evas_Object *obj, int *try_num, int * { *finish_num = wd->finish_num; } -#else - (void) obj; - (void) try_num; - (void) finish_num; -#endif } EAPI void elm_map_utils_convert_coord_into_geo(const Evas_Object *obj, int x, int y, int size, double *lon, double *lat) { -#ifdef HAVE_ELEMENTARY_ECORE_CON ELM_CHECK_WIDTYPE(obj, widtype); Widget_Data *wd = elm_widget_data_get(obj); @@ -3707,20 +3644,11 @@ elm_map_utils_convert_coord_into_geo(const Evas_Object *obj, int x, int y, int s double n = ELM_PI - 2.0 * ELM_PI * y / size; *lat = 180.0 / ELM_PI * atan(0.5 * (exp(n) - exp(-n))); } -#else - (void) obj; - (void) x; - (void) y; - (void) size; - (void) lon; - (void) lat; -#endif } EAPI void elm_map_utils_convert_geo_into_coord(const Evas_Object *obj, double lon, double lat, int size, int *x, int *y) { -#ifdef HAVE_ELEMENTARY_ECORE_CON ELM_CHECK_WIDTYPE(obj, widtype); Widget_Data *wd = elm_widget_data_get(obj); @@ -3735,48 +3663,26 @@ elm_map_utils_convert_geo_into_coord(const Evas_Object *obj, double lon, double *x = floor((lon + 180.0) / 360.0 * size); if (y) *y = floor((1.0 - log( tan(lat * ELM_PI / 180.0) + 1.0 / cos(lat * ELM_PI / 180.0)) / ELM_PI) / 2.0 * size); -#else - (void) obj; - (void) lon; - (void) lat; - (void) size; - (void) x; - (void) y; -#endif } EAPI Elm_Map_Name * elm_map_utils_convert_coord_into_name(const Evas_Object *obj, double lon, double lat) { -#ifdef HAVE_ELEMENTARY_ECORE_CON ELM_CHECK_WIDTYPE(obj, widtype) NULL; return _utils_convert_name(obj, ELM_MAP_NAME_METHOD_REVERSE, NULL, lon, lat); -#else - (void) obj; - (void) lon; - (void) lat; - return NULL; -#endif } EAPI Elm_Map_Name * elm_map_utils_convert_name_into_coord(const Evas_Object *obj, char *address) { -#ifdef HAVE_ELEMENTARY_ECORE_CON ELM_CHECK_WIDTYPE(obj, widtype) NULL; if (!address) return NULL; return _utils_convert_name(obj, ELM_MAP_NAME_METHOD_SEARCH, address, 0.0, 0.0); -#else - (void) obj; - (void) address; - return NULL; -#endif } EAPI void elm_map_utils_rotate_coord(const Evas_Object *obj __UNUSED__, const Evas_Coord x, const Evas_Coord y, const Evas_Coord cx, const Evas_Coord cy, const double degree, Evas_Coord *xx, Evas_Coord *yy) { -#ifdef HAVE_ELEMENTARY_ECORE_CON if ((!xx) || (!yy)) return; double r = (degree * M_PI) / 180.0; @@ -3792,21 +3698,11 @@ elm_map_utils_rotate_coord(const Evas_Object *obj __UNUSED__, const Evas_Coord x *xx = tx + cx; *yy = ty + cy; -#else - (void) x; - (void) y; - (void) cx; - (void) cy; - (void) degree; - (void) xx; - (void) yy; -#endif } EAPI Elm_Map_Marker * elm_map_marker_add(Evas_Object *obj, double lon, double lat, Elm_Map_Marker_Class *clas, Elm_Map_Group_Class *clas_group, void *data) { -#ifdef HAVE_ELEMENTARY_ECORE_CON ELM_CHECK_WIDTYPE(obj, widtype) NULL; Widget_Data *wd = elm_widget_data_get(obj); int i, j; @@ -3986,21 +3882,11 @@ elm_map_marker_add(Evas_Object *obj, double lon, double lat, Elm_Map_Marker_Clas } return marker; -#else - (void) obj; - (void) lon; - (void) lat; - (void) clas; - (void) clas_group; - (void) data; - return NULL; -#endif } EAPI void elm_map_marker_remove(Elm_Map_Marker *marker) { -#ifdef HAVE_ELEMENTARY_ECORE_CON int i; Eina_List *groups; Widget_Data *wd; @@ -4063,51 +3949,33 @@ elm_map_marker_remove(Elm_Map_Marker *marker) evas_object_geometry_get(wd->obj, &ox, &oy, &ow, &oh); marker_place(wd->obj, eina_list_data_get(wd->grids), wd->pan_x, wd->pan_y, ox, oy, ow, oh); } -#else - (void) marker; -#endif } EAPI void elm_map_marker_region_get(const Elm_Map_Marker *marker, double *lon, double *lat) { -#ifdef HAVE_ELEMENTARY_ECORE_CON EINA_SAFETY_ON_NULL_RETURN(marker); if (lon) *lon = marker->longitude; if (lat) *lat = marker->latitude; -#else - (void) marker; - (void) lon; - (void) lat; -#endif } EAPI void elm_map_marker_bring_in(Elm_Map_Marker *marker) { -#ifdef HAVE_ELEMENTARY_ECORE_CON EINA_SAFETY_ON_NULL_RETURN(marker); elm_map_geo_region_bring_in(marker->wd->obj, marker->longitude, marker->latitude); -#else - (void) marker; -#endif } EAPI void elm_map_marker_show(Elm_Map_Marker *marker) { -#ifdef HAVE_ELEMENTARY_ECORE_CON EINA_SAFETY_ON_NULL_RETURN(marker); elm_map_geo_region_show(marker->wd->obj, marker->longitude, marker->latitude); -#else - (void) marker; -#endif } EAPI void elm_map_markers_list_show(Eina_List *markers) { -#ifdef HAVE_ELEMENTARY_ECORE_CON int zoom; double lon, lat; Eina_List *l; @@ -4151,42 +4019,28 @@ elm_map_markers_list_show(Eina_List *markers) elm_map_geo_region_show(wd->obj, lon, lat); elm_map_zoom_set(wd->obj, zoom); -#else - (void) markers; -#endif } EAPI void elm_map_max_marker_per_group_set(Evas_Object *obj, int max) { -#ifdef HAVE_ELEMENTARY_ECORE_CON ELM_CHECK_WIDTYPE(obj, widtype); Widget_Data *wd = elm_widget_data_get(obj); if (!wd) return; wd->markers_max_num = max; -#else - (void) obj; - (void) max; -#endif } EAPI Evas_Object * elm_map_marker_object_get(const Elm_Map_Marker *marker) { -#ifdef HAVE_ELEMENTARY_ECORE_CON EINA_SAFETY_ON_NULL_RETURN_VAL(marker, NULL); return marker->content; -#else - (void) marker; - return NULL; -#endif } EAPI void elm_map_marker_update(Elm_Map_Marker *marker) { -#ifdef HAVE_ELEMENTARY_ECORE_CON EINA_SAFETY_ON_NULL_RETURN(marker); if (marker->content) { @@ -4197,15 +4051,11 @@ elm_map_marker_update(Elm_Map_Marker *marker) marker->content = NULL; _group_bubble_content_update(marker->groups[marker->wd->zoom]); } -#else - (void) marker; -#endif } EAPI void elm_map_bubbles_close(Evas_Object *obj) { -#ifdef HAVE_ELEMENTARY_ECORE_CON ELM_CHECK_WIDTYPE(obj, widtype); Widget_Data *wd = elm_widget_data_get(obj); Marker_Group *group; @@ -4214,15 +4064,11 @@ elm_map_bubbles_close(Evas_Object *obj) if (!wd) return; EINA_LIST_FOREACH_SAFE(wd->opened_bubbles, l, l_next, group) _group_bubble_free(group); -#else - (void) obj; -#endif } EAPI Elm_Map_Group_Class * elm_map_group_class_new(Evas_Object *obj) { -#ifdef HAVE_ELEMENTARY_ECORE_CON ELM_CHECK_WIDTYPE(obj, widtype) NULL; Widget_Data *wd = elm_widget_data_get(obj); @@ -4231,76 +4077,46 @@ elm_map_group_class_new(Evas_Object *obj) clas->zoom_grouped = wd->zoom_max; wd->groups_clas = eina_list_append(wd->groups_clas, clas); return clas; -#else - (void) obj; - return NULL; -#endif } EAPI void elm_map_group_class_style_set(Elm_Map_Group_Class *clas, const char *style) { -#ifdef HAVE_ELEMENTARY_ECORE_CON EINA_SAFETY_ON_NULL_RETURN(clas); eina_stringshare_replace(&clas->style, style); -#else - (void) clas; - (void) style; -#endif } EAPI void elm_map_group_class_icon_cb_set(Elm_Map_Group_Class *clas, ElmMapGroupIconGetFunc icon_get) { -#ifdef HAVE_ELEMENTARY_ECORE_CON EINA_SAFETY_ON_NULL_RETURN(clas); clas->func.icon_get = icon_get; -#else - (void) clas; - (void) icon_get; -#endif } EAPI void elm_map_group_class_data_set(Elm_Map_Group_Class *clas, void *data) { -#ifdef HAVE_ELEMENTARY_ECORE_CON EINA_SAFETY_ON_NULL_RETURN(clas); clas->data = data; -#else - (void) clas; - (void) data; -#endif } EAPI void elm_map_group_class_zoom_displayed_set(Elm_Map_Group_Class *clas, int zoom) { -#ifdef HAVE_ELEMENTARY_ECORE_CON EINA_SAFETY_ON_NULL_RETURN(clas); clas->zoom_displayed = zoom; -#else - (void) clas; - (void) zoom; -#endif } EAPI void elm_map_group_class_zoom_grouped_set(Elm_Map_Group_Class *clas, int zoom) { -#ifdef HAVE_ELEMENTARY_ECORE_CON EINA_SAFETY_ON_NULL_RETURN(clas); clas->zoom_grouped = zoom; -#else - (void) clas; - (void) zoom; -#endif } EAPI void elm_map_group_class_hide_set(Evas_Object *obj, Elm_Map_Group_Class *clas, Eina_Bool hide) { -#ifdef HAVE_ELEMENTARY_ECORE_CON ELM_CHECK_WIDTYPE(obj, widtype); Widget_Data *wd = elm_widget_data_get(obj); @@ -4314,17 +4130,11 @@ elm_map_group_class_hide_set(Evas_Object *obj, Elm_Map_Group_Class *clas, Eina_B evas_object_geometry_get(obj, &ox, &oy, &ow, &oh); marker_place(obj, eina_list_data_get(wd->grids), wd->pan_x, wd->pan_y, ox, oy, ow, oh); } -#else - (void) obj; - (void) clas; - (void) hide; -#endif } EAPI Elm_Map_Marker_Class * elm_map_marker_class_new(Evas_Object *obj) { -#ifdef HAVE_ELEMENTARY_ECORE_CON ELM_CHECK_WIDTYPE(obj, widtype) NULL; Widget_Data *wd = elm_widget_data_get(obj); @@ -4332,79 +4142,49 @@ elm_map_marker_class_new(Evas_Object *obj) Elm_Map_Marker_Class *clas = calloc(1, sizeof(Elm_Map_Marker_Class)); wd->markers_clas = eina_list_append(wd->markers_clas, clas); return clas; -#else - (void) obj; - return NULL; -#endif } EAPI void elm_map_marker_class_style_set(Elm_Map_Marker_Class *clas, const char *style) { -#ifdef HAVE_ELEMENTARY_ECORE_CON EINA_SAFETY_ON_NULL_RETURN(clas); eina_stringshare_replace(&clas->style, style); -#else - (void) clas; - (void) style; -#endif } EAPI void elm_map_marker_class_icon_cb_set(Elm_Map_Marker_Class *clas, ElmMapMarkerIconGetFunc icon_get) { -#ifdef HAVE_ELEMENTARY_ECORE_CON EINA_SAFETY_ON_NULL_RETURN(clas); clas->func.icon_get = icon_get; -#else - (void) clas; - (void) icon_get; -#endif } EAPI void elm_map_marker_class_get_cb_set(Elm_Map_Marker_Class *clas, ElmMapMarkerGetFunc get) { -#ifdef HAVE_ELEMENTARY_ECORE_CON EINA_SAFETY_ON_NULL_RETURN(clas); clas->func.get = get; -#else - (void) clas; - (void) get; -#endif } EAPI void elm_map_marker_class_del_cb_set(Elm_Map_Marker_Class *clas, ElmMapMarkerDelFunc del) { -#ifdef HAVE_ELEMENTARY_ECORE_CON EINA_SAFETY_ON_NULL_RETURN(clas); clas->func.del = del; -#else - (void) clas; - (void) del; -#endif } EAPI const char ** elm_map_source_names_get(const Evas_Object *obj) { -#ifdef HAVE_ELEMENTARY_ECORE_CON ELM_CHECK_WIDTYPE(obj, widtype) NULL; Widget_Data *wd = elm_widget_data_get(obj); if (!wd) return NULL; return wd->source_names; -#else - (void) obj; - return NULL; -#endif } EAPI void elm_map_source_name_set(Evas_Object *obj, const char *source_name) { -#ifdef HAVE_ELEMENTARY_ECORE_CON ELM_CHECK_WIDTYPE(obj, widtype); Widget_Data *wd = elm_widget_data_get(obj); Map_Sources_Tab *s; @@ -4439,123 +4219,83 @@ elm_map_source_name_set(Evas_Object *obj, const char *source_name) zoom = wd->src->zoom_min; } elm_map_zoom_set(obj, zoom); -#else - (void) obj; - (void) source_name; -#endif } EAPI const char * elm_map_source_name_get(const Evas_Object *obj) { -#ifdef HAVE_ELEMENTARY_ECORE_CON ELM_CHECK_WIDTYPE(obj, widtype) NULL; Widget_Data *wd = elm_widget_data_get(obj); if ((!wd) || (!wd->src)) return NULL; return wd->src->name; -#else - (void) obj; - return NULL; -#endif } EAPI void elm_map_route_source_set(Evas_Object *obj, Elm_Map_Route_Sources source) { -#ifdef HAVE_ELEMENTARY_ECORE_CON ELM_CHECK_WIDTYPE(obj, widtype); Widget_Data *wd = elm_widget_data_get(obj); if (!wd) return; wd->route_source = source; -#else - (void) obj; - (void) source; -#endif } EAPI Elm_Map_Route_Sources elm_map_route_source_get(const Evas_Object *obj) { -#ifdef HAVE_ELEMENTARY_ECORE_CON ELM_CHECK_WIDTYPE(obj, widtype) ELM_MAP_ROUTE_SOURCE_YOURS; Widget_Data *wd = elm_widget_data_get(obj); if (!wd) return ELM_MAP_ROUTE_SOURCE_YOURS; return wd->route_source; -#else - (void) obj; - return ELM_MAP_ROUTE_SOURCE_YOURS; -#endif } EAPI void elm_map_source_zoom_max_set(Evas_Object *obj, int zoom) { -#ifdef HAVE_ELEMENTARY_ECORE_CON ELM_CHECK_WIDTYPE(obj, widtype); Widget_Data *wd = elm_widget_data_get(obj); if ((!wd) || (!wd->src)) return; if ((zoom > wd->zoom_max) || (zoom < wd->zoom_min)) return; wd->src->zoom_max = zoom; -#else - (void) obj; - (void) zoom; -#endif } EAPI int elm_map_source_zoom_max_get(const Evas_Object *obj) { -#ifdef HAVE_ELEMENTARY_ECORE_CON ELM_CHECK_WIDTYPE(obj, widtype) 18; Widget_Data *wd = elm_widget_data_get(obj); if ((!wd) || (!wd->src)) return 18; return wd->src->zoom_max; -#else - (void) obj; - return 18; -#endif } EAPI void elm_map_source_zoom_min_set(Evas_Object *obj, int zoom) { -#ifdef HAVE_ELEMENTARY_ECORE_CON ELM_CHECK_WIDTYPE(obj, widtype); Widget_Data *wd = elm_widget_data_get(obj); if ((!wd) || (!wd->src)) return; if ((zoom > wd->zoom_max) || (zoom < wd->zoom_min)) return; wd->src->zoom_min = zoom; -#else - (void) obj; - (void) zoom; -#endif } EAPI int elm_map_source_zoom_min_get(const Evas_Object *obj) { -#ifdef HAVE_ELEMENTARY_ECORE_CON ELM_CHECK_WIDTYPE(obj, widtype) 0; Widget_Data *wd = elm_widget_data_get(obj); if ((!wd) || (!wd->src)) return 0; return wd->src->zoom_min; -#else - (void) obj; - return 0; -#endif } EAPI void elm_map_user_agent_set(Evas_Object *obj, const char *user_agent) { -#ifdef HAVE_ELEMENTARY_ECORE_CON ELM_CHECK_WIDTYPE(obj, widtype); Widget_Data *wd = elm_widget_data_get(obj); @@ -4565,25 +4305,16 @@ elm_map_user_agent_set(Evas_Object *obj, const char *user_agent) if (!wd->ua) wd->ua = eina_hash_string_small_new(NULL); eina_hash_set(wd->ua, "User-Agent", wd->user_agent); -#else - (void) obj; - (void) user_agent; -#endif } EAPI const char * elm_map_user_agent_get(const Evas_Object *obj) { -#ifdef HAVE_ELEMENTARY_ECORE_CON ELM_CHECK_WIDTYPE(obj, widtype) NULL; Widget_Data *wd = elm_widget_data_get(obj); if (!wd) return NULL; return wd->user_agent; -#else - (void) obj; - return NULL; -#endif } EAPI Elm_Map_Route * @@ -4595,7 +4326,6 @@ elm_map_route_add(Evas_Object *obj, double tlon, double tlat) { -#ifdef HAVE_ELEMENTARY_ECORE_CON ELM_CHECK_WIDTYPE(obj, widtype) NULL; Widget_Data *wd = elm_widget_data_get(obj); char buf[PATH_MAX]; @@ -4676,22 +4406,11 @@ elm_map_route_add(Evas_Object *obj, "elm,state,busy,start", "elm"); evas_object_smart_callback_call(wd->obj, SIG_ROUTE_LOAD, NULL); return route; -#else - (void) obj; - (void) type; - (void) method; - (void) flon; - (void) flat; - (void) tlon; - (void) tlat; - return NULL; -#endif } EAPI void elm_map_route_remove(Elm_Map_Route *route) { -#ifdef HAVE_ELEMENTARY_ECORE_CON EINA_SAFETY_ON_NULL_RETURN(route); Path_Waypoint *w; @@ -4727,113 +4446,67 @@ elm_map_route_remove(Elm_Map_Route *route) free(route->ud.fname); route->ud.fname = NULL; } -#else - (void) route; -#endif } EAPI void elm_map_route_color_set(Elm_Map_Route *route, int r, int g , int b, int a) { -#ifdef HAVE_ELEMENTARY_ECORE_CON EINA_SAFETY_ON_NULL_RETURN(route); route->color.r = r; route->color.g = g; route->color.b = b; route->color.a = a; -#else - (void) route; - (void) r; - (void) g; - (void) b; - (void) a; -#endif } EAPI void elm_map_route_color_get(const Elm_Map_Route *route, int *r, int *g , int *b, int *a) { -#ifdef HAVE_ELEMENTARY_ECORE_CON EINA_SAFETY_ON_NULL_RETURN(route); if (r) *r = route->color.r; if (g) *g = route->color.g; if (b) *b = route->color.b; if (a) *a = route->color.a; -#else - (void) route; - (void) r; - (void) g; - (void) b; - (void) a; -#endif } EAPI double elm_map_route_distance_get(const Elm_Map_Route *route) { -#ifdef HAVE_ELEMENTARY_ECORE_CON EINA_SAFETY_ON_NULL_RETURN_VAL(route, 0.0); return route->info.distance; -#else - (void) route; - return 0.0; -#endif } EAPI const char* elm_map_route_node_get(const Elm_Map_Route *route) { -#ifdef HAVE_ELEMENTARY_ECORE_CON EINA_SAFETY_ON_NULL_RETURN_VAL(route, NULL); return route->info.nodes; -#else - (void) route; - return NULL; -#endif } EAPI const char* elm_map_route_waypoint_get(const Elm_Map_Route *route) { -#ifdef HAVE_ELEMENTARY_ECORE_CON EINA_SAFETY_ON_NULL_RETURN_VAL(route, NULL); return route->info.waypoints; -#else - (void) route; - return NULL; -#endif } EAPI const char * elm_map_name_address_get(const Elm_Map_Name *name) { -#ifdef HAVE_ELEMENTARY_ECORE_CON EINA_SAFETY_ON_NULL_RETURN_VAL(name, NULL); return name->address; -#else - (void) name; - return NULL; -#endif } EAPI void elm_map_name_region_get(const Elm_Map_Name *name, double *lon, double *lat) { -#ifdef HAVE_ELEMENTARY_ECORE_CON EINA_SAFETY_ON_NULL_RETURN(name); if (lon) *lon = name->lon; if (lat) *lat = name->lat; -#else - (void) name; - (void) lon; - (void) lat; -#endif } EAPI void elm_map_name_remove(Elm_Map_Name *name) { -#ifdef HAVE_ELEMENTARY_ECORE_CON EINA_SAFETY_ON_NULL_RETURN(name); if (name->address) { @@ -4851,15 +4524,11 @@ elm_map_name_remove(Elm_Map_Name *name) free(name->ud.fname); name->ud.fname = NULL; } -#else - (void) name; -#endif } EAPI void elm_map_rotate_set(Evas_Object *obj, double degree, Evas_Coord cx, Evas_Coord cy) { -#ifdef HAVE_ELEMENTARY_ECORE_CON ELM_CHECK_WIDTYPE(obj, widtype); Widget_Data *wd = elm_widget_data_get(obj); @@ -4868,18 +4537,11 @@ elm_map_rotate_set(Evas_Object *obj, double degree, Evas_Coord cx, Evas_Coord cy wd->rotate.cx = cx; wd->rotate.cy = cy; wd->calc_job = ecore_job_add(_calc_job, wd); -#else - (void) obj; - (void) degree; - (void) cx; - (void) cy; -#endif } EAPI void elm_map_rotate_get(const Evas_Object *obj, double *degree, Evas_Coord *cx, Evas_Coord *cy) { -#ifdef HAVE_ELEMENTARY_ECORE_CON ELM_CHECK_WIDTYPE(obj, widtype); Widget_Data *wd = elm_widget_data_get(obj); @@ -4887,18 +4549,11 @@ elm_map_rotate_get(const Evas_Object *obj, double *degree, Evas_Coord *cx, Evas_ if (degree) *degree = wd->rotate.d; if (cx) *cx = wd->rotate.cx; if (cy) *cy = wd->rotate.cy; -#else - (void) obj; - (void) degree; - (void) cx; - (void) cy; -#endif } EAPI void elm_map_wheel_disabled_set(Evas_Object *obj, Eina_Bool disabled) { -#ifdef HAVE_ELEMENTARY_ECORE_CON ELM_CHECK_WIDTYPE(obj, widtype); Widget_Data *wd = elm_widget_data_get(obj); @@ -4908,32 +4563,22 @@ elm_map_wheel_disabled_set(Evas_Object *obj, Eina_Bool disabled) else if ((wd->wheel_disabled) && (!disabled)) evas_object_event_callback_add(wd->rect, EVAS_CALLBACK_MOUSE_WHEEL, _mouse_wheel_cb, obj); wd->wheel_disabled = !!disabled; -#else - (void) obj; - (void) disabled; -#endif } EAPI Eina_Bool elm_map_wheel_disabled_get(const Evas_Object *obj) { -#ifdef HAVE_ELEMENTARY_ECORE_CON ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE; Widget_Data *wd = elm_widget_data_get(obj); if (!wd) return EINA_FALSE; return wd->wheel_disabled; -#else - (void) obj; - return EINA_FALSE; -#endif } #ifdef ELM_EMAP EAPI Evas_Object * elm_map_track_add(Evas_Object *obj, EMap_Route *emap) { -#ifdef HAVE_ELEMENTARY_ECORE_CON ELM_CHECK_WIDTYPE(obj, widtype) NULL; Widget_Data *wd = elm_widget_data_get(obj); @@ -4944,18 +4589,12 @@ elm_map_track_add(Evas_Object *obj, EMap_Route *emap) wd->track = eina_list_append(wd->track, route); return route; -#else - (void) obj; - (void) emap; - return NULL; -#endif } #endif EAPI void elm_map_track_remove(Evas_Object *obj, Evas_Object *route) { -#ifdef HAVE_ELEMENTARY_ECORE_CON ELM_CHECK_WIDTYPE(obj, widtype) ; Widget_Data *wd = elm_widget_data_get(obj); @@ -4963,14 +4602,8 @@ elm_map_track_remove(Evas_Object *obj, Evas_Object *route) wd->track = eina_list_remove(wd->track, route); evas_object_del(route); -#else - (void) obj; - (void) route; -#endif } -#ifdef HAVE_ELEMENTARY_ECORE_CON - static char * _mapnik_url_cb(Evas_Object *obj __UNUSED__, int x, int y, int zoom) { @@ -5051,7 +4684,7 @@ _nominatim_url_cb(Evas_Object *obj, int method, char *name, double lon, double l { ELM_CHECK_WIDTYPE(obj, widtype) strdup(""); Widget_Data *wd = elm_widget_data_get(obj); - char **str; + char **str = NULL; unsigned int ele, idx; char search_url[PATH_MAX]; char buf[PATH_MAX]; @@ -5071,7 +4704,10 @@ _nominatim_url_cb(Evas_Object *obj, int method, char *name, double lon, double l else if (method == ELM_MAP_NAME_METHOD_REVERSE) snprintf(buf, sizeof(buf), "%s/reverse?format=xml&lat=%lf&lon=%lf&zoom=%d&addressdetails=0", NAME_NOMINATIM_URL, lat, lon, wd->zoom); else strcpy(buf, ""); + if (str && str[0]) + { + free(str[0]); + free(str); + } return strdup(buf); } - -#endif diff --git a/src/lib/elm_module_priv.h b/src/lib/elm_module_priv.h index 0af8b74..03abcdd 100644 --- a/src/lib/elm_module_priv.h +++ b/src/lib/elm_module_priv.h @@ -22,7 +22,7 @@ struct _Elm_Entry_Extension_data Eina_Bool have_selection: 1; Eina_Bool selmode :1; Eina_Bool context_menu : 1; - Elm_CNP_Mode cnp_mode : 2; + Eina_Bool textonly : 1; }; EAPI void elm_entry_extension_module_data_get(Evas_Object *obj,Elm_Entry_Extension_data *ext_mod); diff --git a/src/lib/elc_multibuttonentry.c b/src/lib/elm_multibuttonentry.c similarity index 82% rename from src/lib/elc_multibuttonentry.c rename to src/lib/elm_multibuttonentry.c index 0949492..b148899 100644 --- a/src/lib/elc_multibuttonentry.c +++ b/src/lib/elm_multibuttonentry.c @@ -1,74 +1,77 @@ #include #include "elm_priv.h" +/** + * @defgroup Multibuttonentry Multibuttonentry + * @ingroup Elementary + * + * This is a Multibuttonentry. + */ + #define MAX_STR 256 #define MIN_W_ENTRY 20 typedef enum _Multibuttonentry_Pos - { - MULTIBUTTONENTRY_POS_START, - MULTIBUTTONENTRY_POS_END, - MULTIBUTTONENTRY_POS_BEFORE, - MULTIBUTTONENTRY_POS_AFTER, - MULTIBUTTONENTRY_POS_NUM - } Multibuttonentry_Pos; +{ + MULTIBUTONENTRY_POS_START, + MULTIBUTONENTRY_POS_END, + MULTIBUTONENTRY_POS_BEFORE, + MULTIBUTONENTRY_POS_AFTER, + MULTIBUTONENTRY_POS_NUM +} Multibuttonentry_Pos; typedef enum _Multibuttonentry_Button_State - { - MULTIBUTTONENTRY_BUTTON_STATE_DEFAULT, - MULTIBUTTONENTRY_BUTTON_STATE_SELECTED, - MULTIBUTTONENTRY_BUTTON_STATE_NUM - } Multibuttonentry_Button_State; - -typedef enum _MultiButtonEntry_Closed_Button_Type - { - MULTIBUTTONENTRY_CLOSED_IMAGE, - MULTIBUTTONENTRY_CLOSED_LABEL - } MultiButtonEntry_Closed_Button_Type; +{ + MULTIBUTONENTRY_BUTTON_STATE_DEFAULT, + MULTIBUTONENTRY_BUTTON_STATE_SELECTED, + MULTIBUTONENTRY_BUTTON_STATE_NUM +} Multibuttonentry_Button_State; + +typedef enum _MultiButtonEntry_Closed_Button_Type { + MULTIBUTTONENTRY_CLOSED_IMAGE, + MULTIBUTTONENTRY_CLOSED_LABEL +} MultiButtonEntry_Closed_Button_Type; typedef enum _Multibuttonentry_View_State - { - MULTIBUTTONENTRY_VIEW_NONE, - MULTIBUTTONENTRY_VIEW_GUIDETEXT, - MULTIBUTTONENTRY_VIEW_ENTRY, - MULTIBUTTONENTRY_VIEW_CONTRACTED - } Multibuttonentry_View_State; - -struct _Multibuttonentry_Item - { - Evas_Object *multibuttonentry; - Evas_Object *button; - void *data; - Evas_Coord vw, rw; // vw: visual width, real width - Eina_Bool visible: 1; - }; +{ + MULTIBUTTONENTRY_VIEW_NONE, + MULTIBUTTONENTRY_VIEW_GUIDETEXT, + MULTIBUTTONENTRY_VIEW_ENTRY, + MULTIBUTTONENTRY_VIEW_CONTRACTED +} Multibuttonentry_View_State; + +struct _Multibuttonentry_Item { + Evas_Object *multibuttonentry; + Evas_Object *button; + void *data; + Evas_Coord vw, rw; // vw: visual width, real width + Eina_Bool visible: 1; +}; typedef struct _Widget_Data Widget_Data; -struct _Widget_Data - { - Evas_Object *base; - Evas_Object *box; - Evas_Object *entry; - Evas_Object *label; - Evas_Object *guidetext; - Evas_Object *end; // used to represent the total number of invisible buttons - - Evas_Object *rect_for_end; - MultiButtonEntry_Closed_Button_Type end_type; - - Eina_List *items; - Eina_List *current; - - int n_str; - Multibuttonentry_View_State view_state; - - Evas_Coord w_box, h_box; - int contracted; - Eina_Bool focused: 1; - Eina_Bool last_btn_select: 1; - Elm_Multibuttonentry_Item_Verify_Callback add_callback; - void *add_callback_data; - }; +struct _Widget_Data { + Evas_Object *base; + Evas_Object *box; + Evas_Object *entry; + Evas_Object *label; + Evas_Object *guidetext; + Evas_Object *end; // used to represent the total number of invisible buttons + + Evas_Object *rectForEnd; + MultiButtonEntry_Closed_Button_Type end_type; + + Eina_List *items; + Eina_List *current; + int n_str; + Multibuttonentry_View_State view_state; + + Evas_Coord w_box, h_box; + int contracted; + Eina_Bool focused: 1; + Eina_Bool last_btn_select: 1; + Elm_Multibuttonentry_Item_Verify_Callback add_callback; + void *add_callback_data; +}; static const char *widtype = NULL; static void _del_hook(Evas_Object *obj); @@ -81,24 +84,23 @@ static void _resize_cb(void *data, Evas *evas, Evas_Object *obj, void *event); static void _event_init(Evas_Object *obj); static void _contracted_state_set(Evas_Object *obj, int contracted); static void _view_update(Evas_Object *obj); -static void _set_label(Evas_Object *obj, const char *str); +static void _set_label(Evas_Object *obj, const char* str); static void _change_current_button_state(Evas_Object *obj, Multibuttonentry_Button_State state); static void _change_current_button(Evas_Object *obj, Evas_Object *btn); static void _button_clicked(void *data, Evas_Object *obj, const char *emission, const char *source); static void _del_button_obj(Evas_Object *obj, Evas_Object *btn); static void _del_button_item(Elm_Multibuttonentry_Item *item); static void _select_button(Evas_Object *obj, Evas_Object *btn); -static Elm_Multibuttonentry_Item *_add_button_item(Evas_Object *obj, const char *str, Multibuttonentry_Pos pos, - const Elm_Multibuttonentry_Item *reference, void *data); +static Elm_Multibuttonentry_Item* _add_button_item(Evas_Object *obj, const char *str, Multibuttonentry_Pos pos, const Elm_Multibuttonentry_Item *reference, void *data); static void _add_button(Evas_Object *obj, char *str); static void _evas_mbe_key_up_cb(void *data, Evas *e, Evas_Object *obj, void *event_info); static void _entry_changed_cb(void *data, Evas_Object *obj, void *event_info); static void _entry_key_up_cb(void *data, Evas *e, Evas_Object *obj, void *event_info); static void _entry_key_down_cb(void *data, Evas *e, Evas_Object *obj, void *event_info); -static void _entry_resized_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info); static void _entry_focus_in_cb(void *data, Evas_Object *obj, void *event_info); static void _entry_focus_out_cb(void *data, Evas_Object *obj, void *event_info); static void _entry_clicked_cb(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__); +static void _entry_resized_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__); static void _view_init(Evas_Object *obj); static void _set_vis_guidetext(Evas_Object *obj); static void _calculate_box_min_size(Evas_Object *box, Evas_Object_Box_Data *priv); @@ -109,8 +111,8 @@ static void _del_hook(Evas_Object *obj) { Widget_Data *wd = elm_widget_data_get(obj); - if (!wd) return; + if (wd->items) { Elm_Multibuttonentry_Item *item; @@ -127,7 +129,7 @@ _del_hook(Evas_Object *obj) if (wd->label) evas_object_del (wd->label); if (wd->guidetext) evas_object_del (wd->guidetext); if (wd->end) evas_object_del (wd->end); - if (wd->rect_for_end) evas_object_del(wd->rect_for_end); + if (wd->rectForEnd) evas_object_del(wd->rectForEnd); } static void @@ -136,11 +138,10 @@ _theme_hook(Evas_Object *obj) Widget_Data *wd = elm_widget_data_get(obj); Eina_List *l; Elm_Multibuttonentry_Item *item; - if (!wd) return; _elm_theme_object_set(obj, wd->base, "multibuttonentry", "base", elm_widget_style_get(obj)); - if (wd->box) edje_object_part_swallow (wd->base, "box.swallow", wd->box); + if (wd->box) edje_object_part_swallow (wd->base, "box.swallow", wd->box); edje_object_scale_set(wd->base, elm_widget_scale_get(obj) * _elm_config->scale); EINA_LIST_FOREACH(wd->items, l, item) @@ -191,11 +192,11 @@ _event_hook(Evas_Object *obj __UNUSED__, Evas_Object *src __UNUSED__, Evas_Callb return EINA_TRUE; } + static void _signal_emit_hook(Evas_Object *obj, const char *emission, const char *source) { Widget_Data *wd = elm_widget_data_get(obj); - if (!wd) return; edje_object_signal_emit(wd->base, emission, source); } @@ -204,10 +205,11 @@ static void _sizing_eval(Evas_Object *obj) { Widget_Data *wd = elm_widget_data_get(obj); + Evas_Coord minw = -1, minh = -1; Evas_Coord left, right, top, bottom; - if (!wd) return; + evas_object_size_hint_min_get(wd->box, &minw, &minh); edje_object_part_geometry_get(wd->base, "top.left.pad", NULL, NULL, &left, &top); edje_object_part_geometry_get(wd->base, "bottom.right.pad", NULL, NULL, &right, &bottom); @@ -222,8 +224,8 @@ static void _signal_mouse_clicked(void *data, Evas_Object *obj __UNUSED__, const char *emission __UNUSED__, const char *source __UNUSED__) { Widget_Data *wd = elm_widget_data_get(data); + if(!wd || !wd->base) return; - if (!wd || !wd->base) return; wd->focused = EINA_TRUE; _view_update(data); @@ -238,7 +240,6 @@ _changed_size_hint_cb(void *data, Evas *evas __UNUSED__, Evas_Object *obj __UNUS { Evas_Object *eo = (Evas_Object *)data; Widget_Data *wd = elm_widget_data_get(data); - if (!wd) return; _sizing_eval(eo); } @@ -248,8 +249,8 @@ _resize_cb(void *data, Evas *evas __UNUSED__, Evas_Object *obj __UNUSED__, void { Widget_Data *wd = elm_widget_data_get(data); Evas_Coord w, h; - if (!wd) return; + evas_object_geometry_get(wd->box, NULL, NULL, &w, &h); if (wd->h_box < h) evas_object_smart_callback_call (data, "expanded", NULL); @@ -265,8 +266,8 @@ static void _event_init(Evas_Object *obj) { Widget_Data *wd = elm_widget_data_get(obj); + if (!wd || !wd->base) return; - if (!wd || !wd->base) return; if (wd->base) { edje_object_signal_callback_add(wd->base, "mouse,clicked,1", "*", _signal_mouse_clicked, obj); @@ -295,8 +296,8 @@ static void _set_vis_guidetext(Evas_Object *obj) { Widget_Data *wd = elm_widget_data_get(obj); - if (!wd) return; + elm_box_unpack(wd->box, wd->guidetext); elm_box_unpack(wd->box, wd->entry); if (wd->view_state == MULTIBUTTONENTRY_VIEW_CONTRACTED) return; @@ -316,9 +317,10 @@ _set_vis_guidetext(Evas_Object *obj) evas_object_show(wd->entry); if (elm_widget_focus_get(obj) || wd->focused) if (!wd->current) - elm_object_focus_set(wd->entry, EINA_TRUE); + elm_object_focus(wd->entry); wd->view_state = MULTIBUTTONENTRY_VIEW_ENTRY; } + return; } static void @@ -327,15 +329,15 @@ _contracted_state_set(Evas_Object *obj, int contracted) Widget_Data *wd = elm_widget_data_get(obj); Eina_List *l; Elm_Multibuttonentry_Item *item; - if (!wd || !wd->box) return; + if (wd->view_state == MULTIBUTTONENTRY_VIEW_ENTRY) evas_object_hide(wd->entry); else if (wd->view_state == MULTIBUTTONENTRY_VIEW_GUIDETEXT) evas_object_hide(wd->guidetext); else if (wd->view_state == MULTIBUTTONENTRY_VIEW_CONTRACTED) { - evas_object_hide(wd->rect_for_end); + evas_object_hide(wd->rectForEnd); evas_object_hide(wd->end); wd->view_state = MULTIBUTTONENTRY_VIEW_NONE; } @@ -356,6 +358,7 @@ _contracted_state_set(Evas_Object *obj, int contracted) item->visible = EINA_FALSE; } } + // pack buttons only 1line w = wd->w_box; @@ -375,10 +378,10 @@ _contracted_state_set(Evas_Object *obj, int contracted) { const char *size_str; size_str = edje_object_data_get(wd->end, "closed_button_width"); - if (size_str) button_min_width = (Evas_Coord)atoi(size_str); + if(size_str) button_min_width = (Evas_Coord)atoi(size_str); /* it use for later size_str = edje_object_data_get(wd->end, "closed_button_height"); - if (size_str) button_min_width = (Evas_Coord)atoi(size_str); + if(size_str) button_min_width = (Evas_Coord)atoi(size_str); */ } @@ -387,7 +390,7 @@ _contracted_state_set(Evas_Object *obj, int contracted) if (item) { int w_label_count = 0; - char buf[MAX_STR]; + char buf[MAX_STR] = {0,}; elm_box_pack_end(wd->box, item->button); evas_object_show(item->button); @@ -432,23 +435,22 @@ _contracted_state_set(Evas_Object *obj, int contracted) Evas_Coord rectSize; Evas_Coord closed_height = 0; const char *height_str = edje_object_data_get(wd->base, "closed_height"); - - if (height_str) closed_height = (Evas_Coord)atoi(height_str); + if(height_str) closed_height = (Evas_Coord)atoi(height_str); elm_box_unpack(wd->box, item->button); evas_object_hide(item->button); item->visible = EINA_FALSE; w += item->vw; rectSize = w - button_min_width; - if (!wd->rect_for_end) + if (!wd->rectForEnd) { Evas *e = evas_object_evas_get(obj); - wd->rect_for_end = evas_object_rectangle_add(e); - evas_object_color_set(wd->rect_for_end, 0, 0, 0, 0); + wd->rectForEnd = evas_object_rectangle_add(e); + evas_object_color_set(wd->rectForEnd, 0, 0, 0, 0); } - evas_object_size_hint_min_set(wd->rect_for_end, rectSize, closed_height * elm_scale_get()); - elm_box_pack_end(wd->box, wd->rect_for_end); - evas_object_show(wd->rect_for_end); + evas_object_size_hint_min_set(wd->rectForEnd, rectSize, closed_height * elm_scale_get()); + elm_box_pack_end(wd->box, wd->rectForEnd); + evas_object_show(wd->rectForEnd); elm_box_pack_end(wd->box, wd->end); evas_object_show(wd->end); @@ -475,7 +477,7 @@ _contracted_state_set(Evas_Object *obj, int contracted) } evas_object_hide(wd->end); - if (wd->rect_for_end) evas_object_hide(wd->rect_for_end); + if (wd->rectForEnd) evas_object_hide(wd->rectForEnd); // pack buttons only 1line @@ -536,8 +538,8 @@ static void _set_label(Evas_Object *obj, const char* str) { Widget_Data *wd = elm_widget_data_get(obj); - if (!wd || !str) return; + if (wd->label) { Evas_Coord width, height, sum_width = 0; @@ -556,7 +558,6 @@ _set_label(Evas_Object *obj, const char* str) { edje_object_signal_emit(wd->label, "elm,mbe,set_text", ""); edje_object_part_geometry_get(wd->label, "mbe.label", NULL, NULL, &width, &height); - sum_width += width; edje_object_part_geometry_get(wd->label, "mbe.label.left.padding", NULL, NULL, &width, NULL); @@ -575,8 +576,8 @@ static void _set_guidetext(Evas_Object *obj, const char* str) { Widget_Data *wd = elm_widget_data_get(obj); + if (!wd || !str) return; - if (!wd || !str) return; if (!wd->guidetext) { if (! (wd->guidetext = edje_object_add (evas_object_evas_get (obj)))) return; @@ -594,20 +595,20 @@ _change_current_button_state(Evas_Object *obj, Multibuttonentry_Button_State sta { Widget_Data *wd = elm_widget_data_get(obj); Elm_Multibuttonentry_Item *item = NULL; - if (!wd) return; + if (wd->current) item = eina_list_data_get(wd->current); if (item && item->button) { - switch (state) + switch(state) { - case MULTIBUTTONENTRY_BUTTON_STATE_DEFAULT: + case MULTIBUTONENTRY_BUTTON_STATE_DEFAULT: edje_object_signal_emit(item->button, "default", ""); wd->current = NULL; break; - case MULTIBUTTONENTRY_BUTTON_STATE_SELECTED: + case MULTIBUTONENTRY_BUTTON_STATE_SELECTED: edje_object_signal_emit(item->button, "focused", ""); evas_object_smart_callback_call(obj, "item,selected", item); break; @@ -625,11 +626,10 @@ _change_current_button(Evas_Object *obj, Evas_Object *btn) Widget_Data *wd = elm_widget_data_get(obj); Eina_List *l; Elm_Multibuttonentry_Item *item; - if (!wd) return; // change the state of previous button to "default" - _change_current_button_state(obj, MULTIBUTTONENTRY_BUTTON_STATE_DEFAULT); + _change_current_button_state(obj, MULTIBUTONENTRY_BUTTON_STATE_DEFAULT); // change the current EINA_LIST_FOREACH(wd->items, l, item) @@ -640,8 +640,10 @@ _change_current_button(Evas_Object *obj, Evas_Object *btn) break; } } - // change the state of current button to "focused" - _change_current_button_state(obj, MULTIBUTTONENTRY_BUTTON_STATE_SELECTED); + + // chagne the state of current button to "focused" + _change_current_button_state(obj, MULTIBUTONENTRY_BUTTON_STATE_SELECTED); + } static void @@ -666,9 +668,10 @@ static void _del_button_obj(Evas_Object *obj, Evas_Object *btn) { Widget_Data *wd = elm_widget_data_get(obj); + if (!wd || !btn) return; - if (!wd || !btn) return; if (btn) + // del button evas_object_del(btn); } @@ -711,22 +714,22 @@ static void _select_button(Evas_Object *obj, Evas_Object *btn) { Widget_Data *wd = elm_widget_data_get(obj); - if (!wd) return; + if (btn) { _change_current_button(obj, btn); if (elm_widget_focus_get(obj)) { - elm_object_focus_set(wd->entry, EINA_FALSE); + elm_object_unfocus(wd->entry); evas_object_focus_set(btn, EINA_TRUE); } } else { - _change_current_button_state(obj, MULTIBUTTONENTRY_BUTTON_STATE_DEFAULT); + _change_current_button_state(obj, MULTIBUTONENTRY_BUTTON_STATE_DEFAULT); if (elm_widget_focus_get(obj)) - elm_object_focus_set(wd->entry, EINA_TRUE); + elm_object_focus(wd->entry); } } @@ -766,8 +769,8 @@ _resize_button(Evas_Object *btn, Evas_Coord *realw, Evas_Coord *vieww) evas_object_resize(btn, vw, h_btn); evas_object_size_hint_min_set(btn, vw, h_btn); - if (realw) *realw = rw; - if (vieww) *vieww = vw; + if(realw) *realw = rw; + if(vieww) *vieww = vw; } static Elm_Multibuttonentry_Item* @@ -797,9 +800,7 @@ _add_button_item(Evas_Object *obj, const char *str, Multibuttonentry_Pos pos, co _elm_theme_object_set(obj, btn, "multibuttonentry", "btn", elm_widget_style_get(obj)); edje_object_part_text_set(btn, "elm.btn.text", str_utf8); edje_object_part_geometry_get(btn, "elm.btn.text", NULL, NULL, &width, &height); - evas_object_size_hint_min_set(btn, width, height); - edje_object_signal_callback_add(btn, "mouse,clicked,1", "*", _button_clicked, obj); evas_object_size_hint_weight_set(btn, 0.0, 0.0); evas_object_show(btn); @@ -817,9 +818,9 @@ _add_button_item(Evas_Object *obj, const char *str, Multibuttonentry_Pos pos, co item->vw = vw; item->visible = EINA_TRUE; - switch (pos) + switch(pos) { - case MULTIBUTTONENTRY_POS_START: + case MULTIBUTONENTRY_POS_START: wd->items = eina_list_prepend(wd->items, item); if (wd->view_state == MULTIBUTTONENTRY_VIEW_CONTRACTED) { @@ -836,7 +837,7 @@ _add_button_item(Evas_Object *obj, const char *str, Multibuttonentry_Pos pos, co _set_vis_guidetext(obj); } break; - case MULTIBUTTONENTRY_POS_END: + case MULTIBUTONENTRY_POS_END: wd->items = eina_list_append(wd->items, item); if (wd->view_state == MULTIBUTTONENTRY_VIEW_CONTRACTED) { @@ -853,7 +854,7 @@ _add_button_item(Evas_Object *obj, const char *str, Multibuttonentry_Pos pos, co elm_box_pack_end(wd->box, btn); } break; - case MULTIBUTTONENTRY_POS_BEFORE: + case MULTIBUTONENTRY_POS_BEFORE: if (reference) wd->items = eina_list_prepend_relative(wd->items, item, reference); else @@ -879,7 +880,7 @@ _add_button_item(Evas_Object *obj, const char *str, Multibuttonentry_Pos pos, co } } break; - case MULTIBUTTONENTRY_POS_AFTER: + case MULTIBUTONENTRY_POS_AFTER: if (reference) wd->items = eina_list_append_relative(wd->items, item, reference); else @@ -909,7 +910,6 @@ _add_button_item(Evas_Object *obj, const char *str, Multibuttonentry_Pos pos, co } } evas_object_smart_callback_call(obj, "item,added", item); - free(str_utf8); return item; @@ -922,7 +922,7 @@ _add_button(Evas_Object *obj, char *str) if (!wd) return; // add button - _add_button_item(obj, str, MULTIBUTTONENTRY_POS_END, NULL, NULL); + _add_button_item(obj, str, MULTIBUTONENTRY_POS_END, NULL, NULL); } static void @@ -971,7 +971,7 @@ _entry_key_down_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, if (!wd) return; - if ((wd->n_str == 1) && (strcmp(ev->keyname, "BackSpace") == 0 || (strcmp(ev->keyname, "BackSpace (") == 0 ))) + if ( (wd->n_str == 1) && (strcmp (ev->keyname, "BackSpace") == 0 || (strcmp (ev->keyname, "BackSpace (") == 0 ))) wd->last_btn_select = EINA_FALSE; } @@ -1001,8 +1001,8 @@ _entry_clicked_cb(void *data, Evas_Object *obj __UNUSED__, void *event_info __UN Widget_Data *wd = elm_widget_data_get(data); if (!wd) return; - _change_current_button_state(data, MULTIBUTTONENTRY_BUTTON_STATE_DEFAULT); - elm_object_focus_set(wd->entry, EINA_TRUE); + _change_current_button_state(data, MULTIBUTONENTRY_BUTTON_STATE_DEFAULT); + elm_object_focus(wd->entry); } static void @@ -1010,13 +1010,12 @@ _entry_focus_in_cb(void *data, Evas_Object *obj __UNUSED__, void *event_info __U { Widget_Data *wd = elm_widget_data_get(data); Elm_Multibuttonentry_Item *item = NULL; - if (!wd) return; if (wd->current) { item = eina_list_data_get(wd->current); - elm_object_focus_set(wd->entry, EINA_FALSE); + elm_object_unfocus(wd->entry); evas_object_focus_set(item->button, EINA_TRUE); } } @@ -1062,6 +1061,7 @@ _entry_resized_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, v evas_object_geometry_get(wd->entry, &en_x, &en_y, &en_w, &en_h); evas_object_geometry_get(wd->box, &bx_x, &bx_y, NULL, NULL); + // should be reconsidered appropriate location to use the function as below. elm_widget_show_region_set(wd->box, en_x - bx_x, en_y - bx_y, en_w, en_h, EINA_TRUE); } @@ -1069,22 +1069,20 @@ static void _view_init(Evas_Object *obj) { Widget_Data *wd = elm_widget_data_get(obj); - if (!wd) return; if (!wd->box) { - wd->box = elm_box_add (obj); - if (!wd->box) return; + if (! (wd->box = elm_box_add (obj))) return; elm_widget_sub_object_add(obj, wd->box); elm_box_layout_set(wd->box, _box_layout_cb, NULL, NULL); elm_box_homogeneous_set(wd->box, EINA_FALSE); edje_object_part_swallow(wd->base, "box.swallow", wd->box); } + if (!wd->label) { - wd->label = edje_object_add(evas_object_evas_get(obj)); - if (!wd->label) return; + if (!(wd->label = edje_object_add(evas_object_evas_get(obj)))) return; _elm_theme_object_set(obj, wd->label, "multibuttonentry", "label", elm_widget_style_get(obj)); _set_label(obj, ""); elm_widget_sub_object_add(obj, wd->label); @@ -1158,12 +1156,12 @@ _calculate_box_min_size(Evas_Object *box, Evas_Object_Box_Data *priv) evas_object_size_hint_min_get(opt->obj, &mnw, &mnh); evas_object_size_hint_weight_get(opt->obj, &wx, NULL); - if (wx) + if(wx) { if (mnw != -1 && (w - cw) >= mnw) - ww = w - cw; + ww = w - cw; else - ww = w; + ww = w; } else ww = mnw; @@ -1199,7 +1197,7 @@ _calculate_item_max_height(Evas_Object *box, Evas_Object_Box_Data *priv, int obj evas_object_size_hint_min_get(opt->obj, &mnw, &mnh); evas_object_size_hint_weight_get(opt->obj, &wx, NULL); - if (wx) + if(wx) { if (mnw != -1 && (w - cw) >= mnw) ww = w - cw; @@ -1280,7 +1278,7 @@ _box_layout_cb(Evas_Object *o, Evas_Object_Box_Data *priv, void *data __UNUSED__ if (wy > 0.0) xh = 1; Evas_Coord ww, hh, ow, oh; - if (wx) + if(wx) { if (mnw != -1 && (w - cw) >= mnw) ww = w - cw; @@ -1317,6 +1315,14 @@ _box_layout_cb(Evas_Object *o, Evas_Object_Box_Data *priv, void *data __UNUSED__ } } +/** + * Add a new multibuttonentry to the parent + * + * @param parent The parent object + * @return The new object or NULL if it cannot be created + * + * @ingroup Multibuttonentry + */ EAPI Evas_Object * elm_multibuttonentry_add(Evas_Object *parent) { @@ -1340,13 +1346,13 @@ elm_multibuttonentry_add(Evas_Object *parent) wd->base = edje_object_add(e); _elm_theme_object_set(obj, wd->base, "multibuttonentry", "base", "default"); elm_widget_resize_object_set(obj, wd->base); - elm_widget_can_focus_set(obj, EINA_TRUE); + elm_widget_can_focus_set(obj,EINA_TRUE); wd->view_state = MULTIBUTTONENTRY_VIEW_NONE; wd->focused = EINA_FALSE; wd->last_btn_select = EINA_TRUE; wd->n_str = 0; - wd->rect_for_end= NULL; + wd->rectForEnd = NULL; wd->add_callback = NULL; wd->add_callback_data = NULL; @@ -1356,34 +1362,55 @@ elm_multibuttonentry_add(Evas_Object *parent) return obj; } +/** + * Get the entry of the multibuttonentry object + * + * @param obj The multibuttonentry object + * @return The entry object, or NULL if none + * + * @ingroup Multibuttonentry + */ EAPI Evas_Object * elm_multibuttonentry_entry_get(const Evas_Object *obj) { ELM_CHECK_WIDTYPE(obj, widtype) NULL; Widget_Data *wd = elm_widget_data_get(obj); - - if (!wd) return NULL; + if (!wd) return NULL; return wd->entry; } +/** + * Get the label + * + * @param obj The multibuttonentry object + * @return The label, or NULL if none + * + * @ingroup Multibuttonentry + */ EAPI const char * elm_multibuttonentry_label_get(const Evas_Object *obj) { ELM_CHECK_WIDTYPE(obj, widtype) NULL; Widget_Data *wd = elm_widget_data_get(obj); - if (!wd) return NULL; if (wd->label) return edje_object_part_text_get(wd->label, "mbe.label"); return NULL; } +/** + * Set the label + * + * @param obj The multibuttonentry object + * @param label The text label string + * + * @ingroup Multibuttonentry + */ EAPI void elm_multibuttonentry_label_set(Evas_Object *obj, const char *label) { ELM_CHECK_WIDTYPE(obj, widtype); Widget_Data *wd = elm_widget_data_get(obj); - if (!wd) return; if (label) _set_label(obj, label); @@ -1391,139 +1418,242 @@ elm_multibuttonentry_label_set(Evas_Object *obj, const char *label) _set_label(obj, ""); } +/** + * Get the guide text + * + * @param obj The multibuttonentry object + * @return The guide text, or NULL if none + * + * @ingroup Multibuttonentry + */ EAPI const char * elm_multibuttonentry_guide_text_get(const Evas_Object *obj) { ELM_CHECK_WIDTYPE(obj, widtype) NULL; Widget_Data *wd = elm_widget_data_get(obj); - - if (!wd) return NULL; + if (!wd) return NULL; if (wd->guidetext) return edje_object_part_text_get(wd->guidetext, "elm.text"); return NULL; } +/** + * Set the guide text + * + * @param obj The multibuttonentry object + * @param label The guide text string + * + * @ingroup Multibuttonentry + */ EAPI void elm_multibuttonentry_guide_text_set(Evas_Object *obj, const char *guidetext) { ELM_CHECK_WIDTYPE(obj, widtype); Widget_Data *wd = elm_widget_data_get(obj); - if (!wd) return; if (guidetext) - _set_guidetext(obj, guidetext); + _set_guidetext(obj, guidetext); else - _set_guidetext(obj, ""); + _set_guidetext(obj, ""); + } +/** + * Get the value of contracted state. + * + * @param obj The multibuttonentry object + * @param the value of contracted state. + * + * @ingroup Multibuttonentry + */ EAPI int elm_multibuttonentry_contracted_state_get(const Evas_Object *obj) { ELM_CHECK_WIDTYPE(obj, widtype) -1; Widget_Data *wd = elm_widget_data_get(obj); - if (!wd) return -1; return wd->view_state == MULTIBUTTONENTRY_VIEW_CONTRACTED ? 1 : 0; } +/** + * Set/Unset the multibuttonentry to contracted state of single line + * + * @param obj The multibuttonentry object + * @param the value of contracted state. set this to 1 to set the multibuttonentry to contracted state of single line. set this to 0 to unset the contracted state. + * + * @ingroup Multibuttonentry + */ EAPI void elm_multibuttonentry_contracted_state_set(Evas_Object *obj, int contracted) { ELM_CHECK_WIDTYPE(obj, widtype); Widget_Data *wd = elm_widget_data_get(obj); - if (!wd || !wd->box || ((wd->view_state == MULTIBUTTONENTRY_VIEW_CONTRACTED) ? 1 : 0) == contracted) return; _contracted_state_set(obj, contracted); } +/** + * Prepend a new item to the multibuttonentry + * + * @param obj The multibuttonentry object + * @param label The label of new item + * @param data The ponter to the data to be attached + * @return A handle to the item added or NULL if not possible + * + * @ingroup Multibuttonentry + */ EAPI Elm_Multibuttonentry_Item * elm_multibuttonentry_item_add_start(Evas_Object *obj, const char *label, void *data) { ELM_CHECK_WIDTYPE(obj, widtype) NULL; Widget_Data *wd = elm_widget_data_get(obj); Elm_Multibuttonentry_Item *item; - if (!wd || !label) return NULL; - item = _add_button_item(obj, label, MULTIBUTTONENTRY_POS_START, NULL, data); + item = _add_button_item(obj, label, MULTIBUTONENTRY_POS_START, NULL, data); return item; } +/** + * Append a new item to the multibuttonentry + * + * @param obj The multibuttonentry object + * @param label The label of new item + * @param data The ponter to the data to be attached + * @return A handle to the item added or NULL if not possible + * + * @ingroup Multibuttonentry + */ EAPI Elm_Multibuttonentry_Item * elm_multibuttonentry_item_add_end(Evas_Object *obj, const char *label, void *data) { ELM_CHECK_WIDTYPE(obj, widtype) NULL; Widget_Data *wd = elm_widget_data_get(obj); Elm_Multibuttonentry_Item *item; - if (!wd || !label) return NULL; - item = _add_button_item(obj, label, MULTIBUTTONENTRY_POS_END, NULL, data); + item = _add_button_item(obj, label, MULTIBUTONENTRY_POS_END, NULL, data); return item; } +/** + * Add a new item to the multibuttonentry before the indicated object + * + * reference. + * @param obj The multibuttonentry object + * @param label The label of new item + * @param before The item before which to add it + * @param data The ponter to the data to be attached + * @return A handle to the item added or NULL if not possible + * + * @ingroup Multibuttonentry + */ EAPI Elm_Multibuttonentry_Item * elm_multibuttonentry_item_add_before(Evas_Object *obj, const char *label, Elm_Multibuttonentry_Item *before, void *data) { ELM_CHECK_WIDTYPE(obj, widtype) NULL; Widget_Data *wd = elm_widget_data_get(obj); Elm_Multibuttonentry_Item *item; - if (!wd || !label) return NULL; - item = _add_button_item(obj, label, MULTIBUTTONENTRY_POS_BEFORE, before, data); + item = _add_button_item(obj, label, MULTIBUTONENTRY_POS_BEFORE, before, data); return item; } +/** + * Add a new item to the multibuttonentry after the indicated object + * + * @param obj The multibuttonentry object + * @param label The label of new item + * @param after The item after which to add it + * @param data The ponter to the data to be attached + * @return A handle to the item added or NULL if not possible + * + * @ingroup Multibuttonentry + */ EAPI Elm_Multibuttonentry_Item * elm_multibuttonentry_item_add_after(Evas_Object *obj, const char *label, Elm_Multibuttonentry_Item *after, void *data) { ELM_CHECK_WIDTYPE(obj, widtype) NULL; Widget_Data *wd = elm_widget_data_get(obj); Elm_Multibuttonentry_Item *item; - if (!wd || !label) return NULL; - item = _add_button_item(obj, label, MULTIBUTTONENTRY_POS_AFTER, after, data); + item = _add_button_item(obj, label, MULTIBUTONENTRY_POS_AFTER, after, data); return item; } +/** + * Get a list of items in the multibuttonentry + * + * @param obj The multibuttonentry object + * @return The list of items, or NULL if none + * + * @ingroup Multibuttonentry + */ EAPI const Eina_List * elm_multibuttonentry_items_get(const Evas_Object *obj) { ELM_CHECK_WIDTYPE(obj, widtype) NULL; Widget_Data *wd = elm_widget_data_get(obj); - if (!wd) return NULL; return wd->items; } +/** + * Get the first item in the multibuttonentry + * + * @param obj The multibuttonentry object + * @return The first item, or NULL if none + * + * @ingroup Multibuttonentry + */ EAPI Elm_Multibuttonentry_Item * elm_multibuttonentry_item_first_get(const Evas_Object *obj) { ELM_CHECK_WIDTYPE(obj, widtype) NULL; Widget_Data *wd = elm_widget_data_get(obj); - if (!wd || !wd->items) return NULL; return eina_list_data_get(wd->items); } +/** + * Get the last item in the multibuttonentry + * + * @param obj The multibuttonentry object + * @return The last item, or NULL if none + * + * @ingroup Multibuttonentry + */ EAPI Elm_Multibuttonentry_Item * elm_multibuttonentry_item_last_get(const Evas_Object *obj) { ELM_CHECK_WIDTYPE(obj, widtype) NULL; Widget_Data *wd = elm_widget_data_get(obj); - if (!wd || !wd->items) return NULL; return eina_list_data_get(eina_list_last(wd->items)); } +/** + * Get the selected item in the multibuttonentry + * + * @param obj The multibuttonentry object + * @return The selected item, or NULL if none + * + * @ingroup Multibuttonentry + */ EAPI Elm_Multibuttonentry_Item * elm_multibuttonentry_item_selected_get(const Evas_Object *obj) { ELM_CHECK_WIDTYPE(obj, widtype) NULL; Widget_Data *wd = elm_widget_data_get(obj); - if (!wd || !wd->current) return NULL; return eina_list_data_get(wd->current); } +/** + * Set the selected state of an item + * + * @param item The item + * + * @ingroup Multibuttonentry + */ EAPI void elm_multibuttonentry_item_selected_set(Elm_Multibuttonentry_Item *item) { @@ -1543,6 +1673,13 @@ elm_multibuttonentry_item_selected_set(Elm_Multibuttonentry_Item *item) } } +/** + * unselect all of items. + * + * @param obj The multibuttonentry object + * + * @ingroup Multibuttonentry + */ EAPI void elm_multibuttonentry_item_unselect_all(Evas_Object *obj) { @@ -1553,6 +1690,13 @@ elm_multibuttonentry_item_unselect_all(Evas_Object *obj) _select_button(obj, NULL); } +/** + * Remove all items in the multibuttonentry. + * + * @param obj The multibuttonentry object + * + * @ingroup Multibuttonentry + */ EAPI void elm_multibuttonentry_items_del(Evas_Object *obj) { @@ -1575,6 +1719,13 @@ elm_multibuttonentry_items_del(Evas_Object *obj) _view_update(obj); } +/** + * Delete a given item + * + * @param item The item + * + * @ingroup Multibuttonentry + */ EAPI void elm_multibuttonentry_item_del(Elm_Multibuttonentry_Item *item) { @@ -1582,6 +1733,14 @@ elm_multibuttonentry_item_del(Elm_Multibuttonentry_Item *item) _del_button_item(item); } +/** + * Get the label of a given item + * + * @param item The item + * @return The label of a given item, or NULL if none + * + * @ingroup Multibuttonentry + */ EAPI const char * elm_multibuttonentry_item_label_get(const Elm_Multibuttonentry_Item *item) { @@ -1602,6 +1761,14 @@ elm_multibuttonentry_item_label_get(const Elm_Multibuttonentry_Item *item) return NULL; } +/** + * Set the label of a given item + * + * @param item The item + * @param label The text label string + * + * @ingroup Multibuttonentry + */ EAPI void elm_multibuttonentry_item_label_set(Elm_Multibuttonentry_Item *item, const char *str) { @@ -1614,14 +1781,22 @@ elm_multibuttonentry_item_label_set(Elm_Multibuttonentry_Item *item, const char if (!wd || !wd->items) return; EINA_LIST_FOREACH(wd->items, l, _item) - if (_item == item) - { - edje_object_part_text_set(_item->button, "elm.btn.text", str); - _resize_button(_item->button, &_item->rw, &_item->vw); - break; - } + if (_item == item) + { + edje_object_part_text_set(_item->button, "elm.btn.text", str); + _resize_button(_item->button, &_item->rw, &_item->vw); + break; + } } +/** + * Get the previous item in the multibuttonentry + * + * @param item The item + * @return The item before the item @p item + * + * @ingroup Multibuttonentry + */ EAPI Elm_Multibuttonentry_Item * elm_multibuttonentry_item_prev(Elm_Multibuttonentry_Item *item) { @@ -1643,13 +1818,20 @@ elm_multibuttonentry_item_prev(Elm_Multibuttonentry_Item *item) return NULL; } +/** + * Get the next item in the multibuttonentry + * + * @param item The item + * @return The item after the item @p item + * + * @ingroup Multibuttonentry + */ EAPI Elm_Multibuttonentry_Item * elm_multibuttonentry_item_next(Elm_Multibuttonentry_Item *item) { Widget_Data *wd; Eina_List *l; Elm_Multibuttonentry_Item *_item; - if (!item) return NULL; ELM_CHECK_WIDTYPE(item->multibuttonentry, widtype) NULL; wd = elm_widget_data_get(item->multibuttonentry); @@ -1665,6 +1847,14 @@ elm_multibuttonentry_item_next(Elm_Multibuttonentry_Item *item) return NULL; } +/** + * Get private data of item + * + * @param item The item + * @return The data pointer stored, or NULL if none was stored + * + * @ingroup Multibuttonentry + */ EAPI void * elm_multibuttonentry_item_data_get(const Elm_Multibuttonentry_Item *item) { @@ -1672,6 +1862,14 @@ elm_multibuttonentry_item_data_get(const Elm_Multibuttonentry_Item *item) return item->data; } +/** + * Set private data of item + * + * @param item The item + * @param data The ponter to the data to be attached + * + * @ingroup Multibuttonentry + */ EAPI void elm_multibuttonentry_item_data_set(Elm_Multibuttonentry_Item *item, void *data) { @@ -1679,6 +1877,15 @@ elm_multibuttonentry_item_data_set(Elm_Multibuttonentry_Item *item, void *data) item->data = data; } +/** + * Set the multibuttonentry item_verify_callback function + * + * @param obj The multibuttonentry object + * @param func The function pointer to be called, it it's NULL, callback function will be deleted. + * @param data user data to be passed to the callback function + * + * @ingroup Multibuttonentry + */ EAPI void elm_multibuttonentry_item_verify_callback_set(Evas_Object *obj, Elm_Multibuttonentry_Item_Verify_Callback func, void *data) { diff --git a/src/lib/elm_popup.c b/src/lib/elm_popup.c index 219ed30..abc43c6 100644 --- a/src/lib/elm_popup.c +++ b/src/lib/elm_popup.c @@ -103,9 +103,9 @@ _theme_hook(Evas_Object *obj) elm_object_style_set(action_data->btn, buf); ++index; snprintf(buf, sizeof(buf), "actionbtn%d", index); - elm_object_part_content_set(wd->action_area, buf, action_data->btn); + elm_object_content_part_set(wd->action_area, buf, action_data->btn); } - elm_object_part_content_set(wd->layout, "elm.swallow.buttonArea", wd->action_area); + elm_object_content_part_set(wd->layout, "elm.swallow.buttonArea", wd->action_area); } if (wd->content_area) { @@ -114,13 +114,13 @@ _theme_hook(Evas_Object *obj) { snprintf(buf, sizeof(buf), "popup_description/%s", elm_widget_style_get(obj)); elm_object_style_set(wd->desc_label, buf); - elm_object_part_content_set(wd->content_area, "elm.swallow.content", wd->desc_label); + elm_object_content_part_set(wd->content_area, "elm.swallow.content", wd->desc_label); } else if (wd->content) { - elm_object_part_content_set(wd->content_area, "elm.swallow.content", wd->content); + elm_object_content_part_set(wd->content_area, "elm.swallow.content", wd->content); } - elm_object_part_content_set(wd->layout, "elm.swallow.content", wd->content_area); + elm_object_content_part_set(wd->layout, "elm.swallow.content", wd->content_area); } if (wd->title_area) { @@ -231,7 +231,7 @@ _elm_popup_buttons_add_valist(Evas_Object *obj, const char *first_button_text, v btn = _elm_popup_add_button(obj, text, response); ++index; snprintf(buf, sizeof(buf), "actionbtn%d", index); - elm_object_part_content_set(wd->action_area, buf, btn); + elm_object_content_part_set(wd->action_area, buf, btn); evas_object_event_callback_add(wd->action_area, EVAS_CALLBACK_CHANGED_SIZE_HINTS, _changed_size_hints, obj); text = va_arg(args, char*); @@ -384,7 +384,7 @@ elm_popup_with_buttons_add(Evas_Object *parent, const char *title, const char *d va_list args; va_start(args, first_button_text); wd->action_area = elm_layout_add(popup); - elm_object_part_content_set(wd->layout, "elm.swallow.buttonArea", wd->action_area); + elm_object_content_part_set(wd->layout, "elm.swallow.buttonArea", wd->action_area); snprintf(buf,sizeof(buf), "buttons%d", no_of_buttons); wd->no_of_buttons = no_of_buttons; elm_layout_theme_set(wd->action_area, "popup", buf, elm_widget_style_get(popup)); @@ -433,8 +433,8 @@ elm_popup_desc_set(Evas_Object *obj, const char *text) evas_object_size_hint_weight_set(wd->desc_label, EVAS_HINT_EXPAND, 0.0); evas_object_size_hint_align_set(wd->desc_label, EVAS_HINT_FILL, EVAS_HINT_FILL); evas_object_show(wd->desc_label); - elm_object_part_content_set(wd->content_area, "elm.swallow.content", wd->desc_label); - elm_object_part_content_set(wd->layout, "elm.swallow.content", wd->content_area); + elm_object_content_part_set(wd->content_area, "elm.swallow.content", wd->desc_label); + elm_object_content_part_set(wd->layout, "elm.swallow.content", wd->content_area); evas_object_event_callback_add(wd->content_area, EVAS_CALLBACK_CHANGED_SIZE_HINTS, _changed_size_hints, obj); _sizing_eval(obj); @@ -523,7 +523,7 @@ elm_popup_title_icon_set(Evas_Object *obj, Evas_Object *icon) wd->title_icon = NULL; } wd->title_icon = icon; - elm_object_part_content_set(wd->layout, "elm.swallow.title.icon", wd->title_icon); + elm_object_content_part_set(wd->layout, "elm.swallow.title.icon", wd->title_icon); edje_object_signal_emit(elm_layout_edje_get(wd->layout), "elm,state,title,icon,visible", "elm"); edje_object_message_signal_process(wd->layout); _sizing_eval(obj); @@ -573,8 +573,8 @@ elm_popup_content_set(Evas_Object *obj, Evas_Object *content) { wd->content_area = elm_layout_add(obj); elm_layout_theme_set(wd->content_area, "popup","content", elm_widget_style_get(obj)); - elm_object_part_content_set(wd->content_area, "elm.swallow.content", content); - elm_object_part_content_set(wd->layout, "elm.swallow.content", wd->content_area); + elm_object_content_part_set(wd->content_area, "elm.swallow.content", content); + elm_object_content_part_set(wd->layout, "elm.swallow.content", wd->content_area); evas_object_event_callback_add(wd->content_area, EVAS_CALLBACK_CHANGED_SIZE_HINTS, _changed_size_hints, obj); } @@ -624,7 +624,7 @@ elm_popup_buttons_add(Evas_Object *obj,int no_of_buttons, const char *first_butt wd->action_area = NULL; } wd->action_area = elm_layout_add(obj); - elm_object_part_content_set(wd->layout, "elm.swallow.buttonArea", wd->action_area); + elm_object_content_part_set(wd->layout, "elm.swallow.buttonArea", wd->action_area); evas_object_size_hint_weight_set(wd->action_area, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); evas_object_size_hint_align_set(wd->action_area, EVAS_HINT_FILL, EVAS_HINT_FILL); snprintf(buf, sizeof(buf), "buttons%d", no_of_buttons); diff --git a/src/lib/elm_priv.h b/src/lib/elm_priv.h index 6c70a69..c1da756 100644 --- a/src/lib/elm_priv.h +++ b/src/lib/elm_priv.h @@ -39,7 +39,6 @@ struct _Elm_Theme Eina_List *themes; Eina_List *extension; Eina_Hash *cache; - Eina_Hash *cache_data; Elm_Theme *ref_theme; Eina_List *referrers; const char *theme; diff --git a/src/lib/elm_progressbar.c b/src/lib/elm_progressbar.c index 205455b..9ada9fb 100644 --- a/src/lib/elm_progressbar.c +++ b/src/lib/elm_progressbar.c @@ -202,7 +202,7 @@ _content_set_hook(Evas_Object *obj, const char *part, Evas_Object *content) { ELM_CHECK_WIDTYPE(obj, widtype); Widget_Data *wd; - if (part && strcmp(part, "icon")) return; + if (!part || strcmp(part, "icon")) return; wd = elm_widget_data_get(obj); if (!wd) return; if (wd->icon == content) return; @@ -226,7 +226,7 @@ _content_get_hook(const Evas_Object *obj, const char *part) { ELM_CHECK_WIDTYPE(obj, widtype) NULL; Widget_Data *wd; - if (part && strcmp(part, "icon")) return NULL; + if (!part || strcmp(part, "icon")) return NULL; wd = elm_widget_data_get(obj); if (!wd) return NULL; return wd->icon; @@ -238,7 +238,7 @@ _content_unset_hook(Evas_Object *obj, const char *part) ELM_CHECK_WIDTYPE(obj, widtype) NULL; Widget_Data *wd; Evas_Object *icon; - if (part && strcmp(part, "icon")) return NULL; + if (!part || strcmp(part, "icon")) return NULL; wd = elm_widget_data_get(obj); if (!wd) return NULL; if (!wd->icon) return NULL; diff --git a/src/lib/elm_radio.c b/src/lib/elm_radio.c index c111130..032e072 100644 --- a/src/lib/elm_radio.c +++ b/src/lib/elm_radio.c @@ -277,7 +277,7 @@ _content_set_hook(Evas_Object *obj, const char *part, Evas_Object *content) ELM_CHECK_WIDTYPE(obj, widtype); Widget_Data *wd; - if (part && strcmp(part, "icon")) return; + if (!part || strcmp(part, "icon")) return; wd = elm_widget_data_get(obj); if (!wd) return; if (wd->icon == content) return; @@ -302,7 +302,7 @@ _content_get_hook(const Evas_Object *obj, const char *part) ELM_CHECK_WIDTYPE(obj, widtype) NULL; Widget_Data *wd; - if (part && strcmp(part, "icon")) return NULL; + if (!part || strcmp(part, "icon")) return NULL; wd = elm_widget_data_get(obj); if (!wd) return NULL; return wd->icon; @@ -314,7 +314,7 @@ _content_unset_hook(Evas_Object *obj, const char *part) ELM_CHECK_WIDTYPE(obj, widtype) NULL; Widget_Data *wd; Evas_Object *icon; - if (part && strcmp(part, "icon")) return NULL; + if (!part || strcmp(part, "icon")) return NULL; wd = elm_widget_data_get(obj); if (!wd) return NULL; if (!wd->icon) return NULL; diff --git a/src/lib/elm_scrolled_grid.c b/src/lib/elm_scrolled_grid.c new file mode 100644 index 0000000..187478f --- /dev/null +++ b/src/lib/elm_scrolled_grid.c @@ -0,0 +1,1564 @@ +/* + * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2 + */ +#include +#include "elm_priv.h" + +/** + * @defgroup Grid Scrolled Grid + * @ingroup Elementary + * + * This widget aims to position objects in a grid layout while actually + * building only the visible ones, using the same idea as genlist: the user + * define a class for each cell, specifying functions that will be called at + * object creation and deletion. + * + * Signals that you can add callbacks for are: + * + * clicked - The user has double-clicked a cell. The event_info parameter is + * the grid cell that was double-clicked. + * + * selected - The user has made an item selected. The event_info parameter is + * the grid cell that was selected. + * + * unselected - The user has made an item unselected. The event_info parameter + * is the grid cell that was unselected. + * + * realized - This is called when the cell in the grid is created as a real + * evas object. event_info is the grid cell that was created. The object may be + * deleted at any time, so it is up to the caller to not use the object pointer + * from elm_scrolled_grid_cell_object_get() in a way where it may point to + * freed objects. + * + * drag,start,up - Called when the cell in the grid has been dragged (not + * scrolled) up. + * + * drag,start,down - Called when the cell in the grid has been dragged (not + * scrolled) down. + * + * drag,start,left - Called when the cell in the grid has been dragged (not + * scrolled) left. + * + * drag,start,right - Called when the cell in the grid has been dragged (not + * scrolled) right. + * + * drag,stop - Called when the cell in the grid has stopped being dragged. + * + * drag - Called when the cell in the grid is being dragged. + * + * scroll - called when the content has been scrolled (moved). + * + * scroll,drag,start - called when dragging the content has started. + * + * scroll,drag,stop - called when dragging the content has stopped. + * + * + * A cell in the grid can have 0 or more text labels (they can be regular text + * or textblock - that's up to the style to determine), 0 or more icons (which + * are simply objects swallowed into the grid cell) and 0 or more boolean states + * that can be used for check, radio or other indicators by the edje theme style. + * A cell may be one of several styles (Elementary provides 1 by default - + * "default", but this can be extended by system or application custom + * themes/overlays/extensions). + * + * In order to implement the ability to add and delete cells on the fly, Grid + * implements a class/callback system where the application provides a structure + * with information about that type of cell (grid may contain multiple different + * cells with different classes, states and styles). Grid will call the functions + * in this struct (methods) when a cell is "realized" (that is created + * dynamically while scrolling). All objects will simply be deleted when no + * longer needed with evas_object_del(). The Elm_Genlist_Item_Class structure + * contains the following members: + * + * cell_style - This is a constant string and simply defines the name of the + * cell style. It must be specified and the default should be "default". + * + * func.label_get - This function is called when an actual cell object is + * created. The data parameter is the one passed to elm_scrolled_grid_cell_add() + * and related cell creation functions. The obj parameter is the grid object and + * the part parameter is the string name of the text part in the edje design that + * is listed as one of the possible labels that can be set. This function must + * return a strdup'()ed string as the caller will free() it when done. + * + * func.icon_get - This function is called when an actual item object is + * created. The data parameter is the one passed to elm_scrolled_grid_cell_add() + * and related cell creation functions. The obj parameter is the grid object and + * the part parameter is the string name of the icon part in the edje design that + * is listed as one of the possible icons that can be set. This must return NULL + * for no object or a valid object. The object will be deleted by grid on + * shutdown or when the cell is unrealized. + * + * func.state_get - This function is called when an actual cell object is + * created. The data parameter is the one passed to elm_scrolled_grid_cell_add() + * and related cell creation functions. The obj parameter is the grid object and + * the part parameter is the string name of th state part in the edje design that + * is listed as one of the possible states that can be set. Return 0 for false + * and 1 for true. Grid will emit a signal to the edje object with + * "elm,state,XXX,active" "elm" when true (the default is false), where XXX is + * the name of the part. + * + * func.del - This is called when elm_scrolled_grid_cell_del() is called on a + * cell or elm_scrolled_grid_clear() is called on the grid. This is intended for + * use when actual grid cells are deleted, so any backing data attached to the + * cell (e.g. its data parameter on creation) can be deleted. + * + * If the application wants multiple cells to be able to be selected, + * elm_scrolled_grid_multi_select_set() can enable this. If the grid is + * single-selection only (the default), then elm_scrolled_grid_select_cell_get() + * will return the selected cell, if any, or NULL if none is selected. If the + * grid is multi-select then elm_scrolled_grid_selected_cells_get() will return a + * list (that is only valid as long as no cells are modified (added, deleted, + * selected or unselected). + * + * If a cell changes (state of boolean changes, label or icons change), then use + * elm_scrolled_grid_cell_update() to have grid update the cell with the new + * state. Grid will re-realize the cell thus call the functions in the + * _Elm_Grid_Cell_Class for that cell. + * + * To programmatically (un)select a cell use elm_scrolled_grid_cell_selected_set(). + * To get its selected state use elm_scrolled_grid_cell_selected_get(). To make a + * cell disabled (unable to be selected and appear differently) use + * elm_scrolled_grid_cell_disable_set() to set this and + * elm_scrolled_grid_cell_disable_get() to get the disabled state. + * + * Cells will only call their selection func and callback when first becoming + * selected. Any further clicks will do nothing, unless you enable always + * select with elm_scrolled_grid_always_select_mode_set(). This means event if + * selected, every click will make the selected callbacks be called. + * elm_scrolled_grid_no_select_mode_set() will turn off the ability to select + * items entirely and they will neither appear selected nor call selected + * callback function. + * + * Remember that you can create new styles and add your own theme augmentation + * per application with elm_theme_extension_add(). If you absolutely must have a + * specific style that overrides any theme the user or system sets up you can use + * elm_theme_overlay_add() to add such a file. + * + * -- + * TODO: + * * Handle non-homogeneous objects too. + */ + +typedef struct _Widget_Data Widget_Data; +typedef struct _Pan Pan; + +#define PRELOAD 1 + +struct _Elm_Grid_Cell +{ + Evas_Object *base, *spacer; + const Elm_Grid_Cell_Class *gcc; + Ecore_Timer *long_timer; + Widget_Data *wd; + Eina_List *labels, *icons, *states, *icon_objs; + const void *data; + struct + { + Evas_Smart_Cb func; + const void *data; + } func; + + Evas_Coord x, y, dx, dy; + int relcount; + + Eina_Bool want_unrealize : 1; + Eina_Bool realized : 1; + Eina_Bool dragging : 1; + Eina_Bool down : 1; + Eina_Bool delete_me : 1; + Eina_Bool display_only : 1; + Eina_Bool disabled : 1; + Eina_Bool selected : 1; + Eina_Bool hilighted : 1; + Eina_Bool walking : 1; +}; + +struct _Widget_Data +{ + Evas_Object *self, *scr; + Evas_Object *pan_smart; + Pan *pan; + Eina_List *cells; + Ecore_Job *calc_job; + Eina_List *selected; + double align_x, align_y; + + Evas_Coord pan_x, pan_y; + Evas_Coord cell_width, cell_height; /* Each cell size */ + Evas_Coord minw, minh; /* Total obj size */ + unsigned int nmax; + + Eina_Bool horizontal : 1; + Eina_Bool on_hold : 1; + Eina_Bool longpressed : 1; + Eina_Bool multi : 1; + Eina_Bool no_select : 1; + Eina_Bool wasselected : 1; + Eina_Bool always_select : 1; +}; + +struct _Pan +{ + Evas_Object_Smart_Clipped_Data __clipped_data; + Widget_Data *wd; +}; + +static const char *widtype = NULL; +static void _sizing_eval(Evas_Object *obj); +static void _cell_hilight(Elm_Grid_Cell *cell); +static void _cell_unrealize(Elm_Grid_Cell *cell); +static void _cell_select(Elm_Grid_Cell *cell); +static void _cell_unselect(Elm_Grid_Cell *cell); + +static Evas_Smart_Class _pan_sc = EVAS_SMART_CLASS_INIT_VERSION; + +static void +_theme_hook(Evas_Object *obj) +{ + Widget_Data *wd = elm_widget_data_get(obj); + if (!wd) return; + elm_smart_scroller_object_theme_set(obj, wd->scr, "grid", "base", + elm_widget_style_get(obj)); + _sizing_eval(obj); +} + +static void +_sizing_eval(Evas_Object *obj) +{ + Widget_Data *wd = elm_widget_data_get(obj); + Evas_Coord minw = -1, minh = -1, maxw = -1, maxh = -1; + if (!wd) return; + evas_object_size_hint_max_get(wd->scr, &maxw, &maxh); + evas_object_size_hint_min_set(obj, minw, minh); + evas_object_size_hint_max_set(obj, maxw, maxh); +} + +static void +_del_hook(Evas_Object *obj) +{ + Widget_Data *wd = elm_widget_data_get(obj); + if (!wd) return; + if (wd->calc_job) ecore_job_del(wd->calc_job); + evas_object_del(wd->pan_smart); + wd->pan_smart = NULL; + elm_scrolled_grid_clear(obj); + free(wd); +} + +static void +_mouse_move(void *data, Evas *evas __UNUSED__, Evas_Object *obj, void *event_info) +{ + Elm_Grid_Cell *cell = data; + Evas_Event_Mouse_Move *ev = event_info; + Evas_Coord minw = 0, minh = 0, x, y, dx, dy, adx, ady; + + if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) + { + if (!cell->wd->on_hold) { + cell->wd->on_hold = EINA_TRUE; + _cell_unselect(cell); + } + } + if ((cell->dragging) && (cell->down)) + { + if (cell->long_timer) + { + ecore_timer_del(cell->long_timer); + cell->long_timer = NULL; + } + evas_object_smart_callback_call(cell->wd->self, "drag", cell); + return; + } + if ((!cell->down) || (cell->wd->longpressed)) + { + if (cell->long_timer) + { + ecore_timer_del(cell->long_timer); + cell->long_timer = NULL; + } + return; + } + if (!cell->display_only) + elm_coords_finger_size_adjust(1, &minw, 1, &minh); + evas_object_geometry_get(obj, &x, &y, NULL, NULL); + x = ev->cur.canvas.x - x; + y = ev->cur.canvas.y - y; + dx = x - cell->dx; + adx = dx; + if (adx < 0) adx = -dx; + dy = y - cell->dy; + ady = dy; + if (ady < 0) ady = -dy; + minw /= 2; + minh /= 2; + if ((adx > minw) || (ady > minh)) + { + cell->dragging = 1; + if (cell->long_timer) + { + ecore_timer_del(cell->long_timer); + cell->long_timer = NULL; + } + if (cell->wd->wasselected) + _cell_unselect(cell); + cell->wd->wasselected = 0; + if (dy < 0) + { + if (ady > adx) + evas_object_smart_callback_call(cell->wd->self, "drag,start,up", + cell); + else + { + if (dx < 0) + evas_object_smart_callback_call(cell->wd->self, + "drag,start,left", cell); + } + } + else + { + if (ady > adx) + evas_object_smart_callback_call(cell->wd->self, + "drag,start,down", cell); + else + { + if (dx < 0) + evas_object_smart_callback_call(cell->wd->self, + "drag,start,left", cell); + else + evas_object_smart_callback_call(cell->wd->self, + "drag,start,right", cell); + } + } + } +} + +static int +_long_press(void *data) +{ + Elm_Grid_Cell *cell = data; + + cell->long_timer = NULL; + if ((cell->disabled) || (cell->dragging)) return 0; + cell->wd->longpressed = EINA_TRUE; + evas_object_smart_callback_call(cell->wd->self, "longpressed", cell); + return 0; +} + +static void +_mouse_down(void *data, Evas *evas __UNUSED__, Evas_Object *obj, void *event_info) +{ + Elm_Grid_Cell *cell = data; + Evas_Event_Mouse_Down *ev = event_info; + Evas_Coord x, y; + + if (ev->button != 1) return; + cell->down = 1; + cell->dragging = 0; + evas_object_geometry_get(obj, &x, &y, NULL, NULL); + cell->dx = ev->canvas.x - x; + cell->dy = ev->canvas.y - y; + cell->wd->longpressed = EINA_FALSE; + if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) cell->wd->on_hold = EINA_TRUE; + else cell->wd->on_hold = EINA_FALSE; + cell->wd->wasselected = cell->selected; + _cell_hilight(cell); + if (ev->flags & EVAS_BUTTON_DOUBLE_CLICK) + evas_object_smart_callback_call(cell->wd->self, "clicked", cell); + if (cell->long_timer) ecore_timer_del(cell->long_timer); + if (cell->realized) + cell->long_timer = ecore_timer_add(1.0, _long_press, cell); + else + cell->long_timer = NULL; +} + +static void +_mouse_up(void *data, Evas *evas __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info) +{ + Elm_Grid_Cell *cell = data; + Evas_Event_Mouse_Up *ev = event_info; + Eina_Bool dragged = EINA_FALSE; + + if (ev->button != 1) return; + cell->down = EINA_FALSE; + if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) cell->wd->on_hold = EINA_TRUE; + else cell->wd->on_hold = EINA_FALSE; + if (cell->long_timer) + { + ecore_timer_del(cell->long_timer); + cell->long_timer = NULL; + } + if (cell->dragging) + { + cell->dragging = EINA_FALSE; + evas_object_smart_callback_call(cell->wd->self, "drag,stop", cell); + dragged = EINA_TRUE; + } + if (cell->wd->on_hold) + { + cell->wd->longpressed = EINA_FALSE; + cell->wd->on_hold = EINA_FALSE; + return; + } + if (cell->wd->longpressed) + { + cell->wd->longpressed = EINA_FALSE; + if (!cell->wd->wasselected) + _cell_unselect(cell); + cell->wd->wasselected = EINA_FALSE; + return; + } + if (dragged) + { + if (cell->want_unrealize) + _cell_unrealize(cell); + } + if ((cell->disabled) || dragged) return; + if (cell->wd->multi) + { + if (!cell->selected) + { + _cell_hilight(cell); + _cell_select(cell); + } + else _cell_unselect(cell); + } + else + { + if (!cell->selected) + { + while (cell->wd->selected) _cell_unselect(cell->wd->selected->data); + } + else + { + const Eina_List *l, *l_next; + Elm_Grid_Cell *cell2; + + EINA_LIST_FOREACH_SAFE(cell->wd->selected, l, l_next, cell2) + if (cell2 != cell) _cell_unselect(cell2); + } + _cell_hilight(cell); + _cell_select(cell); + } +} + +static void +_cell_hilight(Elm_Grid_Cell *cell) +{ + if ((cell->wd->no_select) || (cell->delete_me) || (cell->hilighted)) return; + edje_object_signal_emit(cell->base, "elm,state,selected", "elm"); + cell->hilighted = EINA_TRUE; +} + +static void +_cell_realize(Elm_Grid_Cell *cell) +{ + char buf[1024]; + + if ((cell->realized) || (cell->delete_me)) return; + cell->base = edje_object_add(evas_object_evas_get(cell->wd->self)); + edje_object_scale_set(cell->base, elm_widget_scale_get(cell->wd->self) * + _elm_config->scale); + evas_object_smart_member_add(cell->base, cell->wd->pan_smart); + elm_widget_sub_object_add(cell->wd->self, cell->base); + _elm_theme_object_set(cell->wd->self, cell->base, "grid", "cell/default", + elm_widget_style_get(cell->wd->self)); + cell->spacer = evas_object_rectangle_add(evas_object_evas_get(cell->wd->self)); + evas_object_color_set(cell->spacer, 0, 0, 0, 0); + elm_widget_sub_object_add(cell->wd->self, cell->spacer); + evas_object_size_hint_min_set(cell->spacer, 2 * _elm_config->scale, 1); + edje_object_part_swallow(cell->base, "elm.swallow.pad", cell->spacer); + + if (cell->gcc->func.label_get) + { + const Eina_List *l; + const char *key; + + cell->labels = _elm_stringlist_get(edje_object_data_get(cell->base, + "labels")); + EINA_LIST_FOREACH(cell->labels, l, key) + { + char *s = cell->gcc->func.label_get(cell->data, cell->wd->self, + l->data); + if (s) + { + edje_object_part_text_set(cell->base, l->data, s); + free(s); + } + } + } + + if (cell->gcc->func.icon_get) + { + const Eina_List *l; + const char *key; + + cell->icons = _elm_stringlist_get(edje_object_data_get(cell->base, + "icons")); + EINA_LIST_FOREACH(cell->icons, l, key) + { + Evas_Object *ic = cell->gcc->func.icon_get(cell->data, + cell->wd->self, + l->data); + if (ic) + { + cell->icon_objs = eina_list_append(cell->icon_objs, ic); + edje_object_part_swallow(cell->base, key, ic); + evas_object_show(ic); + elm_widget_sub_object_add(cell->wd->self, ic); + } + } + } + + if (cell->gcc->func.state_get) + { + const Eina_List *l; + const char *key; + + cell->states = _elm_stringlist_get(edje_object_data_get(cell->base, + "states")); + EINA_LIST_FOREACH(cell->states, l, key) + { + Eina_Bool on = cell->gcc->func.state_get(cell->data, + cell->wd->self, l->data); + if (on) + { + snprintf(buf, sizeof(buf), "elm,state,%s,active", key); + edje_object_signal_emit(cell->base, buf, "elm"); + } + } + } + + if (!cell->wd->cell_width && !cell->wd->cell_height) + { + edje_object_size_min_restricted_calc(cell->base, + &cell->wd->cell_width, &cell->wd->cell_height, + cell->wd->cell_width, cell->wd->cell_height); + elm_coords_finger_size_adjust(1, &cell->wd->cell_width, + 1, &cell->wd->cell_height); + } + + evas_object_event_callback_add(cell->base, EVAS_CALLBACK_MOUSE_DOWN, + _mouse_down, cell); + evas_object_event_callback_add(cell->base, EVAS_CALLBACK_MOUSE_UP, + _mouse_up, cell); + evas_object_event_callback_add(cell->base, EVAS_CALLBACK_MOUSE_MOVE, + _mouse_move, cell); + + if (cell->selected) + edje_object_signal_emit(cell->base, "elm,state,selected", "elm"); + if (cell->disabled) + edje_object_signal_emit(cell->base, "elm,state,disabled", "elm"); + + evas_object_show(cell->base); + cell->realized = EINA_TRUE; + cell->want_unrealize = EINA_FALSE; +} + +static void +_cell_unrealize(Elm_Grid_Cell *cell) +{ + Evas_Object *icon; + + if (!cell->realized) return; + if (cell->long_timer) + { + ecore_timer_del(cell->long_timer); + cell->long_timer = NULL; + } + evas_object_del(cell->base); + cell->base = NULL; + evas_object_del(cell->spacer); + cell->spacer = NULL; + _elm_stringlist_free(cell->labels); + cell->labels = NULL; + _elm_stringlist_free(cell->icons); + cell->icons = NULL; + _elm_stringlist_free(cell->states); + + EINA_LIST_FREE(cell->icon_objs, icon) + evas_object_del(icon); + + cell->states = NULL; + cell->realized = EINA_FALSE; + cell->want_unrealize = EINA_FALSE; +} + +static void +_cell_place(Elm_Grid_Cell *cell, Evas_Coord cx, Evas_Coord cy) +{ + Evas_Coord x, y, ox, oy, cvx, cvy, cvw, cvh; + Evas_Coord tch, tcw, alignw = 0, alignh = 0, vw, vh; + + cell->x = cx; + cell->y = cy; + evas_object_geometry_get(cell->wd->self, &ox, &oy, &vw, &vh); + evas_output_viewport_get(evas_object_evas_get(cell->wd->self), + &cvx, &cvy, &cvw, &cvh); + + /* Preload rows/columns at each side of the Grid */ + cvx -= PRELOAD * cell->wd->cell_width; + cvy -= PRELOAD * cell->wd->cell_height; + cvw += 2 * PRELOAD * cell->wd->cell_width; + cvh += 2 * PRELOAD * cell->wd->cell_height; + + tch = ((vh/cell->wd->cell_height)*cell->wd->cell_height); + alignh = (vh - tch)*cell->wd->align_y; + + tcw = ((vw/cell->wd->cell_width)*cell->wd->cell_width); + alignw = (vw - tcw)*cell->wd->align_x; + + if (cell->wd->horizontal && cell->wd->minw < vw) + { + int columns; + + columns = eina_list_count(cell->wd->cells)/(vh/cell->wd->cell_height); + if (eina_list_count(cell->wd->cells) % (vh/cell->wd->cell_height)) + columns++; + + tcw = cell->wd->cell_width * columns; + alignw = (vw - tcw)*cell->wd->align_x; + } + else if (cell->wd->horizontal && cell->wd->minw > vw) + alignw = 0; + if (!cell->wd->horizontal && cell->wd->minh < vh) + { + int rows; + + rows = eina_list_count(cell->wd->cells)/(vw/cell->wd->cell_width); + if (eina_list_count(cell->wd->cells) % (vw/cell->wd->cell_width)) + rows++; + + tch = cell->wd->cell_height * rows; + alignh = (vh - tch)*cell->wd->align_y; + } + else if (!cell->wd->horizontal && cell->wd->minh > vh) + alignh = 0; + x = cx * cell->wd->cell_width - cell->wd->pan_x + ox + alignw; + y = cy * cell->wd->cell_height - cell->wd->pan_y + oy + alignh; + + if (ELM_RECTS_INTERSECT(x, y, cell->wd->cell_width, cell->wd->cell_height, + cvx, cvy, cvw, cvh)) + { + Eina_Bool was_realized = cell->realized; + _cell_realize(cell); + if (!was_realized) + evas_object_smart_callback_call(cell->wd->self, "realized", cell); + evas_object_move(cell->base, x, y); + evas_object_resize(cell->base, cell->wd->cell_width, + cell->wd->cell_height); + } + else + _cell_unrealize(cell); +} + +static Elm_Grid_Cell * +_cell_create(Widget_Data *wd, const Elm_Grid_Cell_Class *gcc, + const void *data, Evas_Smart_Cb func, const void *func_data) +{ + Elm_Grid_Cell *cell; + + cell = calloc(1, sizeof(*cell)); + if (!cell) return NULL; + cell->wd = wd; + cell->gcc = gcc; + cell->data = data; + cell->func.func = func; + cell->func.data = func_data; + return cell; +} + +static void +_cell_del(Elm_Grid_Cell *cell) +{ + if (cell->selected) + cell->wd->selected = eina_list_remove(cell->wd->selected, cell); + if (cell->realized) _cell_unrealize(cell); + if ((!cell->delete_me) && (cell->gcc->func.del)) + cell->gcc->func.del(cell->data, cell->wd->self); + cell->delete_me = EINA_TRUE; + cell->wd->cells = eina_list_remove(cell->wd->cells, cell); + if (cell->long_timer) ecore_timer_del(cell->long_timer); + free(cell); +} + +static void +_cell_select(Elm_Grid_Cell *cell) +{ + if ((cell->wd->no_select) || (cell->delete_me)) return; + if (cell->selected) + { + if (cell->wd->always_select) goto call; + return; + } + cell->selected = EINA_TRUE; + cell->wd->selected = eina_list_append(cell->wd->selected, cell); +call: + cell->walking++; + if (cell->func.func) cell->func.func((void *)cell->func.data, cell->wd->self, + cell); + if (!cell->delete_me) + evas_object_smart_callback_call(cell->wd->self, "selected", cell); + cell->walking--; + if ((cell->walking == 0) && (cell->delete_me)) + if (cell->relcount == 0) _cell_del(cell); +} + +static void +_cell_unselect(Elm_Grid_Cell *cell) +{ + if ((cell->delete_me) || (!cell->hilighted)) return; + edje_object_signal_emit(cell->base, "elm,state,unselected", "elm"); + cell->hilighted = EINA_FALSE; + if (cell->selected) + { + cell->selected = EINA_FALSE; + cell->wd->selected = eina_list_remove(cell->wd->selected, cell); + evas_object_smart_callback_call(cell->wd->self, "unselected", cell); + } +} + +static void +_calc_job(void *data) +{ + Widget_Data *wd = data; + Evas_Coord minw = 0, minh = 0, nmax = 0, cvw, cvh; + int count; + + evas_output_viewport_get(evas_object_evas_get(wd->self), NULL, NULL, + &cvw, &cvh); + if (wd->horizontal && wd->cell_height) + nmax = cvh / wd->cell_height; + else if (wd->cell_width) + nmax = cvw / wd->cell_width; + + if (nmax) + { + count = eina_list_count(wd->cells); + if (wd->horizontal) + { + minw = ceil(count / (float)nmax) * wd->cell_width; + minh = nmax * wd->cell_height; + } + else + { + minw = nmax * wd->cell_width; + minh = ceil(count / (float)nmax) * wd->cell_height; + } + } + + if ((minw != wd->minw) || (minh != wd->minh)) + { + wd->minh = minh; + wd->minw = minw; + evas_object_smart_callback_call(wd->pan_smart, "changed", NULL); + _sizing_eval(wd->self); + } + + wd->nmax = nmax; + wd->calc_job = NULL; + evas_object_smart_changed(wd->pan_smart); +} + +static void +_pan_add(Evas_Object *obj) +{ + Pan *sd; + Evas_Object_Smart_Clipped_Data *cd; + + _pan_sc.add(obj); + cd = evas_object_smart_data_get(obj); + sd = ELM_NEW(Pan); + if (!sd) return; + sd->__clipped_data = *cd; + free(cd); + evas_object_smart_data_set(obj, sd); +} + +static void +_pan_del(Evas_Object *obj) +{ + Pan *sd = evas_object_smart_data_get(obj); + + if (!sd) return; + _pan_sc.del(obj); +} + +static void +_pan_set(Evas_Object *obj, Evas_Coord x, Evas_Coord y) +{ + Pan *sd = evas_object_smart_data_get(obj); + if ((x == sd->wd->pan_x) && (y == sd->wd->pan_y)) return; + sd->wd->pan_x = x; + sd->wd->pan_y = y; + evas_object_smart_changed(obj); +} + +static void +_pan_get(Evas_Object *obj, Evas_Coord *x, Evas_Coord *y) +{ + Pan *sd = evas_object_smart_data_get(obj); + if (x) *x = sd->wd->pan_x; + if (y) *y = sd->wd->pan_y; +} + +static void +_pan_child_size_get(Evas_Object *obj, Evas_Coord *w, Evas_Coord *h) +{ + Pan *sd = evas_object_smart_data_get(obj); + if (w) *w = sd->wd->minw; + if (h) *h = sd->wd->minh; +} + +static void +_pan_max_get(Evas_Object *obj, Evas_Coord *x, Evas_Coord *y) +{ + Pan *sd = evas_object_smart_data_get(obj); + Evas_Coord ow, oh; + + if (!sd) return; + evas_object_geometry_get(obj, NULL, NULL, &ow, &oh); + if (x) + *x = (ow < sd->wd->minw) ? sd->wd->minw - ow : 0; + if (y) + *y = (oh < sd->wd->minh) ? sd->wd->minh - oh : 0; +} + +static void +_pan_resize(Evas_Object *obj, Evas_Coord w, Evas_Coord h) +{ + Pan *sd = evas_object_smart_data_get(obj); + Evas_Coord ow, oh; + + evas_object_geometry_get(obj, NULL, NULL, &ow, &oh); + if ((ow == w) && (oh == h)) return; + if (sd->wd->calc_job) ecore_job_del(sd->wd->calc_job); + sd->wd->calc_job = ecore_job_add(_calc_job, sd->wd); +} + +static void +_pan_calculate(Evas_Object *obj) +{ + Pan *sd = evas_object_smart_data_get(obj); + Evas_Coord cx = 0, cy = 0; + Eina_List *l; + Elm_Grid_Cell *cell; + + if (!sd) return; + if (!sd->wd->nmax) return; + + EINA_LIST_FOREACH(sd->wd->cells, l, cell) + { + _cell_place(cell, cx, cy); + if (sd->wd->horizontal) + { + cy = (cy + 1) % sd->wd->nmax; + if (!cy) cx++; + } + else + { + cx = (cx + 1) % sd->wd->nmax; + if (!cx) cy++; + } + } +} + +static void +_pan_move(Evas_Object *obj, Evas_Coord x __UNUSED__, Evas_Coord y __UNUSED__) +{ + Pan *sd = evas_object_smart_data_get(obj); + if (!sd) return; + if (sd->wd->calc_job) ecore_job_del(sd->wd->calc_job); + sd->wd->calc_job = ecore_job_add(_calc_job, sd->wd); +} + +static void +_hold_on(void *data __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__) +{ + Widget_Data *wd = elm_widget_data_get(obj); + if (!wd) return; + elm_smart_scroller_hold_set(wd->scr, 1); +} + +static void +_hold_off(void *data __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__) +{ + Widget_Data *wd = elm_widget_data_get(obj); + if (!wd) return; + elm_smart_scroller_hold_set(wd->scr, 0); +} + +static void +_freeze_on(void *data __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__) +{ + Widget_Data *wd = elm_widget_data_get(obj); + if (!wd) return; + elm_smart_scroller_freeze_set(wd->scr, 1); +} + +static void +_freeze_off(void *data __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__) +{ + Widget_Data *wd = elm_widget_data_get(obj); + if (!wd) return; + elm_smart_scroller_freeze_set(wd->scr, 0); +} + +static void +_scr_drag_start(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__) +{ + evas_object_smart_callback_call(data, "scroll,drag,start", NULL); +} + +static void +_scr_drag_stop(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__) +{ + evas_object_smart_callback_call(data, "scroll,drag,stop", NULL); +} + +static void +_scr_scroll(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__) +{ + evas_object_smart_callback_call(data, "scroll", NULL); +} + +/** + * Add a new Scrolled Grid object. + * + * @param parent The parent object. + * @return The new object or NULL if it cannot be created. + * + * @see elm_scrolled_grid_cell_size_set() + * @see elm_scrolled_grid_horizontal_set() + * @see elm_scrolled_grid_cell_add() + * @see elm_scrolled_grid_cell_del() + * @see elm_scrolled_grid_clear() + * + * @ingroup Grid + */ +EAPI Evas_Object * +elm_scrolled_grid_add(Evas_Object *parent) +{ + Evas_Object *obj; + Evas *e; + Evas_Coord minw, minh; + Widget_Data *wd; + static Evas_Smart *smart = NULL; + + wd = ELM_NEW(Widget_Data); + e = evas_object_evas_get(parent); + obj = elm_widget_add(e); + ELM_SET_WIDTYPE(widtype, "grid"); + elm_widget_type_set(obj, "grid"); + elm_widget_sub_object_add(parent, obj); + elm_widget_data_set(obj, wd); + elm_widget_del_hook_set(obj, _del_hook); + elm_widget_theme_hook_set(obj, _theme_hook); + + wd->scr = elm_smart_scroller_add(e); + elm_smart_scroller_widget_set(wd->scr, obj); + elm_smart_scroller_object_theme_set(obj, wd->scr, "grid", "base", "default"); + elm_widget_resize_object_set(obj, wd->scr); + + evas_object_smart_callback_add(wd->scr, "drag,start", _scr_drag_start, obj); + evas_object_smart_callback_add(wd->scr, "drag,stop", _scr_drag_stop, obj); + evas_object_smart_callback_add(wd->scr, "scroll", _scr_scroll, obj); + + elm_smart_scroller_bounce_allow_set(wd->scr, 1, 1); + + wd->self = obj; + wd->align_x = 0.5; + wd->align_y = 0.5; + + evas_object_smart_callback_add(obj, "scroll-hold-on", _hold_on, obj); + evas_object_smart_callback_add(obj, "scroll-hold-off", _hold_off, obj); + evas_object_smart_callback_add(obj, "scroll-freeze-on", _freeze_on, obj); + evas_object_smart_callback_add(obj, "scroll-freeze-off", _freeze_off, obj); + + if (!smart) + { + static Evas_Smart_Class sc; + + evas_object_smart_clipped_smart_set(&_pan_sc); + sc = _pan_sc; + sc.name = "elm_scrolled_grid_pan"; + sc.version = EVAS_SMART_CLASS_VERSION; + sc.add = _pan_add; + sc.del = _pan_del; + sc.resize = _pan_resize; + sc.move = _pan_move; + sc.calculate = _pan_calculate; + smart = evas_smart_class_new(&sc); + } + if (smart) + { + wd->pan_smart = evas_object_smart_add(e, smart); + wd->pan = evas_object_smart_data_get(wd->pan_smart); + wd->pan->wd = wd; + } + + elm_smart_scroller_extern_pan_set(wd->scr, wd->pan_smart, + _pan_set, _pan_get, + _pan_max_get, _pan_child_size_get); + + _sizing_eval(obj); + + return obj; +} + +/** + * Set the size for the cell of the Grid. + * + * @param obj The Grid object. + * @param w The cell's width. + * @param h The cell's height; + * + * @see elm_scrolled_grid_cell_size_get() + * + * @ingroup Grid + */ +EAPI void +elm_scrolled_grid_cell_size_set(Evas_Object *obj, Evas_Coord w, Evas_Coord h) +{ + ELM_CHECK_WIDTYPE(obj, widtype); + Widget_Data *wd = elm_widget_data_get(obj); + if (!wd) return; + if (wd->cell_width == w && wd->cell_height == h) return; + wd->cell_width = w; + wd->cell_height = h; + if (wd->calc_job) ecore_job_del(wd->calc_job); + wd->calc_job = ecore_job_add(_calc_job, wd); +} + +/** + * Get the size of the cell of the Grid. + * + * @param obj The Grid object. + * @param w Pointer to the cell's width. + * @param h Pointer to the cell's height. + * + * @see elm_scrolled_grid_cell_size_get() + * + * @ingroup Grid + */ +EAPI void +elm_scrolled_grid_cell_size_get(const Evas_Object *obj, Evas_Coord *w, Evas_Coord *h) +{ + ELM_CHECK_WIDTYPE(obj, widtype); + Widget_Data *wd = elm_widget_data_get(obj); + if (!wd) return; + if (w) *w = wd->cell_width; + if (h) *h = wd->cell_height; +} + +/** + * Set cell's alignment within the scroller. + * + * @param obj The grid object. + * @param align_x The x alignment (0 <= x <= 1). + * @param align_y The y alignment (0 <= y <= 1). + * + * @see elm_scrolled_grid_align_get() + * + * @ingroup Grid + */ +EAPI void +elm_scrolled_grid_align_set(Evas_Object *obj, double align_x, double align_y) +{ + ELM_CHECK_WIDTYPE(obj, widtype); + Widget_Data *wd = elm_widget_data_get(obj); + + if (align_x > 1.0) + align_x = 1.0; + else if (align_x < 0.0) + align_x = 0.0; + wd->align_x = align_x; + + if (align_y > 1.0) + align_y = 1.0; + else if (align_y < 0.0) + align_y = 0.0; + wd->align_y = align_y; +} + +/** + * Get the alignenment set for the grid object. + * + * @param obj The grid object. + * @param align_x Pointer to x alignenment. + * @param align_y Pointer to y alignenment. + * + * @see elm_scrolled_grid_align_set() + * + * @ingroup Grid + */ +EAPI void +elm_scrolled_grid_align_get(const Evas_Object *obj, double *align_x, double *align_y) +{ + ELM_CHECK_WIDTYPE(obj, widtype); + Widget_Data *wd = elm_widget_data_get(obj); + if (align_x) *align_x = wd->align_x; + if (align_y) *align_y = wd->align_y; +} + +/** + * Add cell to the end of the Grid. + * + * @param obj The Grid object. + * @param gcc The cell class for the cell. + * @param data The cell data. + * @param func Convenience function called when cell is selected. + * @param func_data Data passed to @p func above. + * @return A handle to the cell added or NULL if not possible. + * + * @see elm_scrolled_grid_cell_del() + * + * @ingroup Grid + */ +EAPI Elm_Grid_Cell * +elm_scrolled_grid_cell_add(Evas_Object *obj, const Elm_Grid_Cell_Class *gcc, + const void *data, Evas_Smart_Cb func, + const void *func_data) +{ + Elm_Grid_Cell *cell; + ELM_CHECK_WIDTYPE(obj, widtype) NULL; + Widget_Data *wd = elm_widget_data_get(obj); + if (!wd) return NULL; + + cell = _cell_create(wd, gcc, data, func, func_data); + if (!cell) return NULL; + + wd->cells = eina_list_append(wd->cells, cell); + wd->no_select = EINA_FALSE; + + if (wd->calc_job) ecore_job_del(wd->calc_job); + wd->calc_job = ecore_job_add(_calc_job, wd); + + return cell; +} + +/** + * Remove a cell from the Grid. + * + * @param cell The cell to be removed. + * @return @c EINA_TRUE on success or @c EINA_FALSE otherwise. + * + * @see elm_scrolled_grid_clear() to remove all cells of the grid. + * + * @ingroup Grid + */ +EAPI void +elm_scrolled_grid_cell_del(Elm_Grid_Cell *cell) +{ + if (!cell) return; + if ((cell->relcount > 0) || (cell->walking > 0)) + { + cell->delete_me = EINA_TRUE; + if (cell->selected) + cell->wd->selected = eina_list_remove(cell->wd->selected, cell); + if (cell->gcc->func.del) cell->gcc->func.del(cell->data, cell->wd->self); + return; + } + + _cell_del(cell); + + if (cell->wd->calc_job) ecore_job_del(cell->wd->calc_job); + cell->wd->calc_job = ecore_job_add(_calc_job, cell->wd); +} + +/** + * Set for what direction the grid will expand. + * + * @param obj The Grid object. + * @param setting If @c EINA_TRUE the grid will expand horizontally or + * vertically if @c EINA_FALSE. + * + * @ingroup Grid + */ +EAPI void +elm_scrolled_grid_horizontal_set(Evas_Object *obj, Eina_Bool setting) +{ + ELM_CHECK_WIDTYPE(obj, widtype); + Widget_Data *wd = elm_widget_data_get(obj); + if (!wd) return; + if (setting == wd->horizontal) return; + wd->horizontal = setting; + + /* Update the cells to conform to the new layout */ + if (wd->calc_job) ecore_job_del(wd->calc_job); + wd->calc_job = ecore_job_add(_calc_job, wd); +} + +/** + * Clear the Grid + * + * This clears all cells in the grid, leaving it empty. + * + * @param obj The Grid object. + * + * @see elm_scrolled_grid_cell_del() to remove just one cell. + * + * @ingroup Grid + */ +EAPI void +elm_scrolled_grid_clear(Evas_Object *obj) +{ + Eina_List *l, *l_next; + Elm_Grid_Cell *cell; + ELM_CHECK_WIDTYPE(obj, widtype); + Widget_Data *wd = elm_widget_data_get(obj); + if (!wd) return; + + if (wd->calc_job) + { + ecore_job_del(wd->calc_job); + wd->calc_job = NULL; + } + + EINA_LIST_FOREACH_SAFE(wd->cells, l, l_next, cell) + { + if (cell->realized) _cell_unrealize(cell); + if (cell->gcc->func.del) cell->gcc->func.del(cell->data, wd->self); + if (cell->long_timer) ecore_timer_del(cell->long_timer); + free(cell); + wd->cells = eina_list_remove_list(wd->cells, l); + } + + if (wd->selected) + { + eina_list_free(wd->selected); + wd->selected = NULL; + } + + wd->pan_x = 0; + wd->pan_y = 0; + wd->minw = 0; + wd->minh = 0; + evas_object_size_hint_min_set(wd->pan_smart, wd->minw, wd->minh); + evas_object_smart_callback_call(wd->pan_smart, "changed", NULL); + _sizing_eval(obj); +} + +/** + * Get the real evas object of the grid cell + * + * This returns the actual evas object used for the specified grid cell. + * This may be NULL as it may not be created, and may be deleted at any time + * by grid. Do not modify this object (move, resize, show, hide etc.) as grid + * is controlling it. This function is for querying, emitting custom signals + * or hooking lower level callbacks for events. Do not delete this object + * under any circumstances. + * + * @param cell The Grid cell. + * @return the evas object associated to this cell. + * + * @see elm_scrolled_grid_cell_data_get() + * + * @ingroup Grid + */ +EAPI const Evas_Object * +elm_scrolled_grid_cell_object_get(Elm_Grid_Cell *cell) +{ + if (!cell) return NULL; + return cell->base; +} + +/** + * Returns the data associated to a cell + * + * This returns the data value passed on the elm_scrolled_grid_cell_add() and + * related cell addition calls. + * + * @param cell The Grid cell. + * @return the data associated to this cell. + * + * @see elm_scrolled_grid_cell_add() + * @see elm_scrolled_grid_cell_object_get() + * + * @ingroup Grid + */ +EAPI void * +elm_scrolled_grid_cell_data_get(Elm_Grid_Cell *cell) +{ + if (!cell) return NULL; + return (void *)cell->data; +} + +/** + * Get the cell's coordinates. + * + * This returns the logical position of the cell whithin the Grid. + * + * @param cell The Grid cell. + * @param x The x-axis coordinate pointer. + * @param y The y-axis coordinate pointer. + * + * @ingroup Grid + */ +EAPI void +elm_scrolled_grid_cell_pos_get(const Elm_Grid_Cell *cell, unsigned int *x, unsigned int *y) +{ + if (!cell) return; + if (x) *x = cell->x; + if (y) *y = cell->y; +} + +/** + * Enable or disable multi-select in the grid. + * + * This enables (EINA_TRUE) or disables (EINA_FALSE) multi-select in the grid. + * This allows more than 1 cell to be selected. + * + * @param obj The grid object. + * @param multi Multi-select enabled/disabled + * + * @ingroup Grid + */ +EAPI void +elm_scrolled_grid_multi_select_set(Evas_Object *obj, Eina_Bool multi) +{ + ELM_CHECK_WIDTYPE(obj, widtype); + Widget_Data *wd = elm_widget_data_get(obj); + if (!wd) return; + wd->multi = multi; +} + +/** + * Get if multi-select in grid is enabled or disabled + * + * @param obj The grid object + * @return Multi-select enable/disable + * (EINA_TRUE = enabled / EINA_FALSE = disabled) + * + * @ingroup Grid + */ +EAPI Eina_Bool +elm_scrolled_grid_multi_select_get(const Evas_Object *obj) +{ + ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE; + Widget_Data *wd = elm_widget_data_get(obj); + if (!wd) return EINA_FALSE; + return wd->multi; +} + +/** + * Get the selected cell in the grid + * + * This gets the selected cell in the grid (if multi-select is enabled only + * the first cell in the list is selected - which is not very useful, so see + * elm_scrolled_grid_selected_cells_get() for when multi-select is used). + * + * If no cell is selected, NULL is returned. + * + * @param obj The grid object. + * @return The selected cell, or NULL if none. + * + * @ingroup Grid + */ +EAPI Elm_Grid_Cell * +elm_scrolled_grid_selected_cell_get(const Evas_Object *obj) +{ + ELM_CHECK_WIDTYPE(obj, widtype) NULL; + Widget_Data *wd = elm_widget_data_get(obj); + if (!wd) return NULL; + if (wd->selected) return wd->selected->data; + return NULL; +} + +/** + * Get a list of selected cells in the grid. + * + * This returns a list of the selected cells. This list pointer is only valid + * so long as no cells are selected or unselected (or unselected implictly by + * deletion). The list contains Elm_Grid_Cell pointers. + * + * @param obj The grid object. + * @return The list of selected cells, or NULL if none are selected. + * + * @ingroup Grid + */ +EAPI const Eina_List * +elm_scrolled_grid_selected_cells_get(const Evas_Object *obj) +{ + ELM_CHECK_WIDTYPE(obj, widtype) NULL; + Widget_Data *wd = elm_widget_data_get(obj); + if (!wd) return NULL; + return wd->selected; +} + +/** + * Get the selected state of a cell. + * + * This gets the selected state of a cell (1 selected, 0 not selected). + * + * @param cell The cell + * @return The selected state + * + * @ingroup Grid + */ +EAPI Eina_Bool +elm_scrolled_grid_cell_selected_get(const Elm_Grid_Cell *cell) +{ + if (!cell) return EINA_FALSE; + return cell->selected; +} + +/** + * Sets the disabled state of a cell. + * + * A disabled cell cannot be selected or unselected. It will also change + * appearance to disabled. This sets the disabled state (1 disabled, 0 not + * disabled). + * + * @param cell The cell + * @param disabled The disabled state + * + * @ingroup Grid + */ +EAPI void +elm_scrolled_grid_cell_disabled_set(Elm_Grid_Cell *cell, Eina_Bool disabled) +{ + if (!cell) return; + if (cell->disabled == disabled) return; + if (cell->delete_me) return; + cell->disabled = disabled; + if (cell->realized) + { + if (cell->disabled) + edje_object_signal_emit(cell->base, "elm,state,disabled", "elm"); + else + edje_object_signal_emit(cell->base, "elm,state,enabled", "elm"); + } +} + +/** + * Get the disabled state of a cell. + * + * This gets the disabled state of the given cell. + * + * @param cell The cell + * @return The disabled state + * + * @ingroup Grid + */ +EAPI Eina_Bool +elm_scrolled_grid_cell_disabled_get(const Elm_Grid_Cell *cell) +{ + if (!cell) return EINA_FALSE; + if (cell->delete_me) return EINA_FALSE; + return cell->disabled; +} + +/** + * Set the always select mode. + * + * Cells will only call their selection func and callback when first becoming + * selected. Any further clicks will do nothing, unless you enable always select + * with elm_scrolled_grid_always_select_mode_set(). This means even if selected, + * every click will make the selected callbacks be called. + * + * @param obj The grid object + * @param always_select The always select mode (EINA_TRUE = on, EINA_FALSE = off) + * + * @ingroup Grid + */ +EAPI void +elm_scrolled_grid_always_select_mode_set(Evas_Object *obj, Eina_Bool always_select) +{ + ELM_CHECK_WIDTYPE(obj, widtype); + Widget_Data *wd = elm_widget_data_get(obj); + if (!wd) return; + wd->always_select = always_select; +} + +/** + * Get the always select mode. + * + * @param obj The grid object. + * @return The always select mode (EINA_TRUE = on, EINA_FALSE = off) + * + * @ingroup Grid + */ +EAPI Eina_Bool +elm_scrolled_grid_always_select_mode_get(const Evas_Object *obj) +{ + ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE; + Widget_Data *wd = elm_widget_data_get(obj); + if (!wd) return EINA_FALSE; + return wd->always_select; +} + +/** + * Set no select mode. + * + * This will turn off the ability to select items entirely and they will + * neither appear selected nor call selected callback functions. + * + * @param obj The grid object + * @param no_select The no select mode (EINA_TRUE = on, EINA_FALSE = off) + * + * @ingroup Grid + */ +EAPI void +elm_scrolled_grid_no_select_mode_set(Evas_Object *obj, Eina_Bool no_select) +{ + ELM_CHECK_WIDTYPE(obj, widtype); + Widget_Data *wd = elm_widget_data_get(obj); + if (!wd) return; + wd->no_select = no_select; +} + +/** + * Gets no select mode. + * + * @param obj The grid object + * @return The no select mode (EINA_TRUE = on, EINA_FALSE = off) + * + * @ingroup Grid + */ +EAPI Eina_Bool +elm_scrolled_grid_no_select_mode_get(const Evas_Object *obj) +{ + ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE; + Widget_Data *wd = elm_widget_data_get(obj); + if (!wd) return EINA_FALSE; + return wd->no_select; +} + +/** + * Set bounce mode. + * + * This will enable or disable the scroller bounce mode for the grid. See + * elm_scroller_bounce_set() for details. + * + * @param obj The grid object + * @param h_bounce Allow bounce horizontally + * @param v_bounce Allow bounce vertically + * + * @ingroup Grid + */ +EAPI void +elm_scrolled_grid_bounce_set(Evas_Object *obj, Eina_Bool h_bounce, Eina_Bool v_bounce) +{ + ELM_CHECK_WIDTYPE(obj, widtype); + Widget_Data *wd = elm_widget_data_get(obj); + if (!wd) return; + elm_smart_scroller_bounce_allow_set(wd->scr, h_bounce, v_bounce); +} + +/** + * Get the bounce mode + * + * @param obj The grid object + * @param h_bounce Allow bounce horizontally + * @param v_bounce Allow bounce vertically + * + * @ingroup Grid + */ +EAPI void +elm_scrolled_grid_bounce_get(const Evas_Object *obj, Eina_Bool *h_bounce, Eina_Bool *v_bounce) +{ + ELM_CHECK_WIDTYPE(obj, widtype); + Widget_Data *wd = elm_widget_data_get(obj); + if (!wd) return; + elm_smart_scroller_bounce_allow_get(wd->scr, h_bounce, v_bounce); +} diff --git a/src/lib/elm_searchbar.c b/src/lib/elm_searchbar.c index 722931b..d26c6d9 100644 --- a/src/lib/elm_searchbar.c +++ b/src/lib/elm_searchbar.c @@ -4,6 +4,14 @@ #include #include "elm_priv.h" +/** + * @defgroup Searchbar Searchbar + * @ingroup Elementary + * + * This is Searchbar. + * It can contain a simple entry and button object. + */ + typedef struct _Widget_Data Widget_Data; struct _Widget_Data @@ -167,6 +175,13 @@ _elm_searchbar_text_get(const Evas_Object *obj, const char *item) } +/** + * Add a new searchbar to the parent + * @param parent The parent object + * @return The new object or NULL if it cannot be created + * + * @ingroup Searchbar + */ EAPI Evas_Object *elm_searchbar_add(Evas_Object *parent) { Evas_Object *obj; @@ -220,16 +235,40 @@ EAPI Evas_Object *elm_searchbar_add(Evas_Object *parent) return obj; } +/** + * set the text of entry + * + * @param obj The searchbar object + * @return void + * + * @ingroup Searchbar + */ EAPI void elm_searchbar_text_set(Evas_Object *obj, const char *entry) { _elm_searchbar_text_set(obj, NULL, entry); } +/** + * get the text of entry + * + * @param obj The searchbar object + * @return string pointer of entry + * + * @ingroup Searchbar + */ EAPI const char* elm_searchbar_text_get(Evas_Object *obj) { return _elm_searchbar_text_get(obj, NULL); } +/** + * get the pointer of entry + * + * @param obj The searchbar object + * @return the entry object + * + * @ingroup Searchbar + */ EAPI Evas_Object *elm_searchbar_entry_get(Evas_Object *obj) { ELM_CHECK_WIDTYPE(obj, widtype) NULL; @@ -239,6 +278,14 @@ EAPI Evas_Object *elm_searchbar_entry_get(Evas_Object *obj) return elm_editfield_entry_get(wd->ef); } +/** + * get the pointer of editfield + * + * @param obj The searchbar object + * @return the editfield object + * + * @ingroup Searchbar + */ EAPI Evas_Object *elm_searchbar_editfield_get(Evas_Object *obj) { ELM_CHECK_WIDTYPE(obj, widtype) NULL; @@ -248,6 +295,15 @@ EAPI Evas_Object *elm_searchbar_editfield_get(Evas_Object *obj) return wd->ef; } +/** + * set the cancel button animation flag + * + * @param obj The searchbar object + * @param cancel_btn_ani_flag The flag of animating cancen button or not + * @return void + * + * @ingroup Searchbar + */ EAPI void elm_searchbar_cancel_button_animation_set(Evas_Object *obj, Eina_Bool cancel_btn_ani_flag) { ELM_CHECK_WIDTYPE(obj, widtype); @@ -258,6 +314,15 @@ EAPI void elm_searchbar_cancel_button_animation_set(Evas_Object *obj, Eina_Bool else wd->cancel_btn_ani_flag = cancel_btn_ani_flag; } +/** + * set the cancel button show mode + * + * @param obj The searchbar object + * @param visible The flag of cancen button show or not + * @return void + * + * @ingroup Searchbar + */ EAPI void elm_searchbar_cancel_button_set(Evas_Object *obj, Eina_Bool visible) { ELM_CHECK_WIDTYPE(obj, widtype); @@ -277,6 +342,14 @@ EAPI void elm_searchbar_cancel_button_set(Evas_Object *obj, Eina_Bool visible) _sizing_eval(obj); } +/** + * clear searchbar status + * + * @param obj The searchbar object + * @return void + * + * @ingroup Searchbar + */ EAPI void elm_searchbar_clear(Evas_Object *obj) { ELM_CHECK_WIDTYPE(obj, widtype); @@ -293,6 +366,15 @@ EAPI void elm_searchbar_clear(Evas_Object *obj) // elm_entry_entry_set(elm_editfield_entry_get(wd->ef), NULL); } +/** + * set the searchbar boundary rect mode(with bg rect) set + * + * @param obj The searchbar object + * @param boundary The present flag of boundary rect or not + * @return void + * + * @ingroup Searchbar + */ EAPI void elm_searchbar_boundary_rect_set(Evas_Object *obj, Eina_Bool boundary) { ELM_CHECK_WIDTYPE(obj, widtype); diff --git a/src/lib/elm_slider.c b/src/lib/elm_slider.c index bd6ca90..2407392 100644 --- a/src/lib/elm_slider.c +++ b/src/lib/elm_slider.c @@ -602,7 +602,8 @@ static void _content_set_hook(Evas_Object *obj, const char *part, Evas_Object *content) { ELM_CHECK_WIDTYPE(obj, widtype); - if (!part || !strcmp(part, "icon")) + if (!part) return; + if (!strcmp(part, "icon")) _icon_set(obj, content); else if (!strcmp(part, "end")) _end_set(obj, content); @@ -613,9 +614,10 @@ _content_get_hook(const Evas_Object *obj, const char *part) { ELM_CHECK_WIDTYPE(obj, widtype) NULL; Widget_Data *wd; + if (!part) return NULL; wd = elm_widget_data_get(obj); if (!wd) return NULL; - if (!part || !strcmp(part, "icon")) + if (!strcmp(part, "icon")) return wd->icon; else if (!strcmp(part, "end")) return wd->end; @@ -626,7 +628,8 @@ static Evas_Object * _content_unset_hook(Evas_Object *obj, const char *part) { ELM_CHECK_WIDTYPE(obj, widtype) NULL; - if (!part || !strcmp(part, "icon")) + if (!part) return NULL; + if (!strcmp(part, "icon")) return _icon_unset(obj); else if (!strcmp(part, "end")) return _end_unset(obj); diff --git a/src/lib/elm_slidingdrawer.c b/src/lib/elm_slidingdrawer.c new file mode 100644 index 0000000..dd71d0d --- /dev/null +++ b/src/lib/elm_slidingdrawer.c @@ -0,0 +1,295 @@ +/* + * @defgroup SlidingDrawer SlidingDrawer + * @ingroup Elementary + * + * This is a slidingdrawer. + */ + +#include +#include "elm_priv.h" + +typedef struct _Widget_Data Widget_Data; + +struct _Widget_Data +{ + Evas_Object *parent; + Evas_Object *base; + Evas_Object *handler; + Evas_Object *dragable_rect; + Elm_SlidingDrawer_Pos pos; + double max_drag_w; + double max_drag_h; + Elm_SlidingDrawer_Drag_Value value; +}; + +static const char *widtype = NULL; + +static void _del_hook(Evas_Object *obj); + +static void _theme_hook(Evas_Object *obj); + +static void _sizing_eval(Evas_Object *obj); + +static void _parent_resize(void *data, Evas * e, Evas_Object *obj, void *event_info); +static void _drag_cb(void *data, Evas_Object *obj, const char *emission, const char *source); +static void _up_cb(void *data, Evas_Object *obj, const char *emission, const char *source); +static void _down_cb(void *data, Evas_Object *obj, const char *emission, const char *source); + +static void +_del_hook(Evas_Object *obj) +{ + Widget_Data *wd = (Widget_Data *) elm_widget_data_get(obj); + + evas_object_event_callback_del(wd->parent, EVAS_CALLBACK_RESIZE, _parent_resize); + free(wd); +} + +static void +_theme_hook(Evas_Object *obj) +{ + Widget_Data *wd = (Widget_Data *) elm_widget_data_get(obj); + + elm_slidingdrawer_pos_set(obj, wd->pos); +} + +static void +_parent_resize(void *data, Evas * e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__) +{ + _sizing_eval(data); +} + +static void +_drag_cb(void *data, Evas_Object *obj __UNUSED__, const char *emission __UNUSED__, const char *source __UNUSED__) +{ + Widget_Data *wd = elm_widget_data_get(data); + + edje_object_part_drag_value_get(wd->base, "elm.dragable.handler", &wd->value.x, &wd->value.y); + evas_object_smart_callback_call(data, "mouse,move", (void *)&wd->value); +} + +static void +_up_cb(void *data, Evas_Object *obj __UNUSED__, const char *emission __UNUSED__, const char *source __UNUSED__) +{ + Widget_Data *wd = elm_widget_data_get(data); + + edje_object_part_drag_value_get(wd->base, "elm.dragable.handler", &wd->value.x, &wd->value.y); + evas_object_smart_callback_call(data, "mouse,up", (void *)&wd->value); +} + +static void +_down_cb(void *data, Evas_Object *obj __UNUSED__, const char *emission __UNUSED__, const char *source __UNUSED__) +{ + Widget_Data *wd = elm_widget_data_get(data); + + edje_object_part_drag_value_get(wd->base, "elm.dragable.handler", &wd->value.x, &wd->value.y); + evas_object_smart_callback_call(data, "mouse,down", (void *)&wd->value); +} + +static void +_sizing_eval(Evas_Object *obj) +{ + Widget_Data *wd; + + Evas_Coord x, y, w, h; + + const Evas_Object *part; + + wd = elm_widget_data_get(obj); + + evas_object_geometry_get(wd->parent, &x, &y, &w, &h); + evas_object_move(obj, x, y); + evas_object_resize(obj, w, h); + + evas_object_size_hint_max_set(wd->dragable_rect, ((double)w) * wd->max_drag_w, ((double)h) * wd->max_drag_h); + + part = edje_object_part_object_get(wd->base, "elm.dragable.handler"); + + if ((wd->pos == ELM_SLIDINGDRAWER_TOP) + || (wd->pos == ELM_SLIDINGDRAWER_BOTTOM)) + edje_object_size_min_get(part, NULL, &h); + else + edje_object_size_min_get(part, &w, NULL); + + evas_object_size_hint_min_set(wd->handler, w, h); +} + +/** + * Unswallow the user content + * + * @param[in] obj SlidingDrawer object + * @return The unswallowed contents + * + * @ingroup SlidingDrawer + */ +EAPI Evas_Object * +elm_slidingdrawer_content_unset(Evas_Object *obj) +{ + ELM_CHECK_WIDTYPE(obj, widtype) NULL; + Widget_Data *wd; + Evas_Object *content; + wd = elm_widget_data_get(obj); + content = edje_object_part_swallow_get(wd->base, "elm.swallow.content"); + if (!content) + return NULL; + edje_object_part_unswallow(wd->base, content); + elm_widget_sub_object_del(obj, content); + return content; +} + +/** + * Swallow the user contents + * + * @param[in] obj SlidingDrawer object + * @param[in] content Content to be swallowed. + * + * @ingroup SlidingDrawer + */ +EAPI void +elm_slidingdrawer_content_set(Evas_Object *obj, Evas_Object *content){ + ELM_CHECK_WIDTYPE(obj, widtype); + Widget_Data *wd; + Evas_Object *prev_content; + if (!content) return; + wd = elm_widget_data_get(obj); + elm_widget_sub_object_add(obj, content); + prev_content = edje_object_part_swallow_get(wd->base, "elm.swallow.content"); + if (prev_content) + { + edje_object_part_unswallow(wd->base, prev_content); + elm_widget_sub_object_del(obj, prev_content); + evas_object_del(prev_content); + } + edje_object_part_swallow(wd->base, "elm.swallow.content", content); +} + +/** + * Set the position of SlidingDrawer + * + * @param[in] obj SlidingDrawer object + * @param[in] pos Position of drawer's handle + * + * @ingroup SlidingDrawer + */ +EAPI void +elm_slidingdrawer_pos_set(Evas_Object *obj, Elm_SlidingDrawer_Pos pos) +{ + ELM_CHECK_WIDTYPE(obj, widtype); + + Widget_Data *wd = elm_widget_data_get(obj); + + switch (pos) + { + case ELM_SLIDINGDRAWER_BOTTOM: + _elm_theme_object_set(obj, wd->base, "slidingdrawer", "bottom", elm_widget_style_get(obj)); + break; + case ELM_SLIDINGDRAWER_LEFT: + _elm_theme_object_set(obj, wd->base, "slidingdrawer", "left", elm_widget_style_get(obj)); + break; + case ELM_SLIDINGDRAWER_RIGHT: + _elm_theme_object_set(obj, wd->base, "slidingdrawer", "right", elm_widget_style_get(obj)); + break; + case ELM_SLIDINGDRAWER_TOP: + _elm_theme_object_set(obj, wd->base, "slidingdrawer", "top", elm_widget_style_get(obj)); + break; + } + + edje_object_part_drag_value_set(wd->base, "elm.dragable.handler", 0, 0); + wd->pos = pos; + _sizing_eval(obj); +} + +/** + * Set the current dragable value. + * + * @param[in] obj SlidingDrawer object + * @param[in] dx The x value (range: 0 ~ 1) + * @param[in] dy The y value (range: 0 ~ 1) + * + * @ingroup SlidingDrawer + */ +EAPI void +elm_slidingdrawer_drag_value_set(Evas_Object *obj, double dx, double dy) +{ + ELM_CHECK_WIDTYPE(obj, widtype); + Widget_Data *wd; + + wd = elm_widget_data_get(obj); + edje_object_part_drag_value_set(wd->base, "elm.dragable.handler", dx, dy); +} + +/** + * Set the dragable max value. + * + * @param[in] obj SlidingDrawer object + * @param[in] dw The maximum width value (range: 0 ~ 1) + * @param[in] dh The maximum height value (range: 0 ~ 1) + * + * @ingroup SlidingDrawer + */ +EAPI void +elm_slidingdrawer_max_drag_value_set(Evas_Object *obj, double dw, double dh) +{ + ELM_CHECK_WIDTYPE(obj, widtype); + Widget_Data *wd; + + wd = elm_widget_data_get(obj); + wd->max_drag_w = dw; + wd->max_drag_h = dh; + _sizing_eval(obj); + +} + +/** + * Add a new slidingdrawer object to the parent. + * + * @param[in] parent Parent object + * @return New object or NULL if it cannot be created + * + * @ingroup SlidingDrawer + */ +EAPI Evas_Object * +elm_slidingdrawer_add(Evas_Object *parent) +{ + Evas_Object *obj; + Evas *e; + Widget_Data *wd; + + ELM_WIDGET_STANDARD_SETUP(wd, Widget_Data, parent, e, obj, NULL); + + wd->parent = parent; + ELM_SET_WIDTYPE(widtype, "slidingdrawer"); + elm_widget_type_set(obj, "slidingdrawer"); + elm_widget_can_focus_set(obj, EINA_FALSE); + elm_widget_sub_object_add(parent, obj); + elm_widget_data_set(obj, wd); + elm_widget_del_hook_set(obj, _del_hook); + elm_widget_theme_hook_set(obj, _theme_hook); + + //base + wd->base = edje_object_add(e); + _elm_theme_object_set(obj, wd->base, "slidingdrawer", "bottom", "default"); + edje_object_signal_callback_add(wd->base, "drag", "*", _drag_cb, obj); + edje_object_signal_callback_add(wd->base, "mouse,up,*", "*", _up_cb, obj); + edje_object_signal_callback_add(wd->base, "mouse,down,*", "*", _down_cb, obj); + elm_widget_sub_object_add(obj, wd->base); + elm_widget_resize_object_set(obj, wd->base); + + //dragable_rect + wd->dragable_rect = evas_object_rectangle_add(e); + elm_widget_sub_object_add(obj, wd->dragable_rect); + edje_object_part_swallow(wd->base, "elm.swallow.dragable_rect", wd->dragable_rect); + wd->max_drag_w = 1; + wd->max_drag_h = 1; + + //handler + wd->handler = evas_object_rectangle_add(e); + elm_widget_sub_object_add(obj, wd->handler); + evas_object_color_set(wd->handler, 0, 0, 0, 0); + edje_object_part_swallow(wd->base, "elm.dragable.handler", wd->handler); + + evas_object_event_callback_add(parent, EVAS_CALLBACK_RESIZE, _parent_resize, obj); + + _sizing_eval(obj); + + return obj; +} diff --git a/src/lib/elm_stackedicon.c b/src/lib/elm_stackedicon.c index bd8adb9..1e54310 100644 --- a/src/lib/elm_stackedicon.c +++ b/src/lib/elm_stackedicon.c @@ -2,6 +2,13 @@ #include "elm_priv.h" +/** + * @defgroup Stackedicon Stackedicon + * @ingroup Elementary + * + * This is a Stackedicon. + */ + #define MAX_ITEM_NUM (9) #define MAX_MOVE_INTERVAL (0.2) @@ -686,6 +693,14 @@ _event_init(Evas_Object *obj) evas_object_event_callback_add(obj, EVAS_CALLBACK_HIDE, _hide_cb, obj); } +/** + * Add a new stackedicon to the parent + * + * @param parent The parent object + * @return The new object or NULL if it cannot be created + * + * @ingroup Stackedicon + */ EAPI Evas_Object * elm_stackedicon_add(Evas_Object *parent) { @@ -717,6 +732,15 @@ elm_stackedicon_add(Evas_Object *parent) return obj; } +/** + * This appends a path to the stackedicon + * + * @param obj The stackedicon object + * @param path The image full path + * @return The new item or NULL if it cannot be created + * + * @ingroup Stackedicon + */ EAPI Elm_Stackedicon_Item *elm_stackedicon_item_append(Evas_Object *obj, const char *path) { ELM_CHECK_WIDTYPE(obj, widtype) NULL; @@ -744,6 +768,15 @@ EAPI Elm_Stackedicon_Item *elm_stackedicon_item_append(Evas_Object *obj, const c return it; } +/** + * This prepends a path to the stackedicon + * + * @param obj The stackedicon object + * @param path The image full path + * @return The new item or NULL if it cannot be created + * + * @ingroup Stackedicon + */ EAPI Elm_Stackedicon_Item *elm_stackedicon_item_prepend(Evas_Object *obj, const char *path) { ELM_CHECK_WIDTYPE(obj, widtype) NULL; @@ -771,9 +804,16 @@ EAPI Elm_Stackedicon_Item *elm_stackedicon_item_prepend(Evas_Object *obj, const return it; } +/** + * This delete a path at the stackedicon + * + * @param Elm_Stackedicon_Item The delete item + * + * @ingroup Stackedicon + */ EAPI void elm_stackedicon_item_del(Elm_Stackedicon_Item *it) { - if (!it) return; + if (!it)return; ELM_CHECK_WIDTYPE(it->parent, widtype); Evas_Object *obj = it->parent; Widget_Data *wd = elm_widget_data_get(obj); @@ -794,6 +834,14 @@ EAPI void elm_stackedicon_item_del(Elm_Stackedicon_Item *it) _update_stackedicon(obj); } +/** + * Get item list from the stackedicon + * + * @param obj The stackedicon object + * @return The item list or NULL if it cannot be created + * + * @ingroup Stackedicon + */ EAPI Eina_List *elm_stackedicon_item_list_get(Evas_Object *obj) { ELM_CHECK_WIDTYPE(obj, widtype) NULL; @@ -801,3 +849,4 @@ EAPI Eina_List *elm_stackedicon_item_list_get(Evas_Object *obj) if (!wd) return NULL; return wd->list; } + diff --git a/src/lib/elm_store.c b/src/lib/elm_store.c index 4265bda..46915e0 100644 --- a/src/lib/elm_store.c +++ b/src/lib/elm_store.c @@ -1686,6 +1686,13 @@ _store_free(Elm_Store *st) if(std->p_db) eina_stringshare_del(std->p_db); } +/** + * Add a new dbsystem Store object + * + * @return The new object or NULL if it cannot be created + * + * @ingroup Store + */ EAPI Elm_Store * elm_store_dbsystem_new(void) { @@ -1698,6 +1705,14 @@ elm_store_dbsystem_new(void) return &std->base; } +/** + * Sets the item count of a store + * + * @param st The store object + * @param count The item count of an store + * + * @ingroup Store + */ EAPI void elm_store_item_count_set(Elm_Store *st, int count) { @@ -1706,6 +1721,15 @@ elm_store_item_count_set(Elm_Store *st, int count) } +/** + * Set the select func that select the state of a list item whether true or false + * + * @param st The store object + * @param func The select cb function of an store + * @param data The new data pointer to set + * + * @ingroup Store + */ EAPI void elm_store_item_select_func_set(Elm_Store *st, Elm_Store_Item_Select_Cb func, const void *data) { @@ -1714,6 +1738,15 @@ elm_store_item_select_func_set(Elm_Store *st, Elm_Store_Item_Select_Cb func, con st->cb.item_select.data = (void *)data; } +/** + * Sets the sort func that sort the item with a next in the list + * + * @param st The store object + * @param func The sort cb function of an store + * @param data The new data pointer to set + * + * @ingroup Store + */ EAPI void elm_store_item_sort_func_set(Elm_Store *st, Elm_Store_Item_Sort_Cb func, const void *data) { @@ -1722,6 +1755,15 @@ elm_store_item_sort_func_set(Elm_Store *st, Elm_Store_Item_Sort_Cb func, const v st->cb.item_sort.data = (void *)data; } +/** + * Set the store item free func + * + * @param st The store object + * @param func The free cb function of an store + * @param data The new data pointer to set + * + * @ingroup Store + */ EAPI void elm_store_item_free_func_set(Elm_Store *st, Elm_Store_Item_Free_Cb func, const void *data) { @@ -1730,6 +1772,14 @@ elm_store_item_free_func_set(Elm_Store *st, Elm_Store_Item_Free_Cb func, const v st->cb.item_free.data = (void *)data; } +/** + * Get the item index that included header items + * + * @param sti The store item object + * @return The item index in genlist + * + * @ingroup Store + */ EAPI int elm_store_item_index_get(const Elm_Store_Item *sti) { @@ -1754,6 +1804,14 @@ elm_store_item_index_get(const Elm_Store_Item *sti) return -1; } +/** + * Get the item index of real data that don't included header items + * + * @param sti The store item object + * @return The real item index + * + * @ingroup Store + */ EAPI int elm_store_item_data_index_get(const Elm_Store_Item *sti) { @@ -1778,6 +1836,14 @@ elm_store_item_data_index_get(const Elm_Store_Item *sti) return -1; } +/** + * Get the DB pointer of an item + * + * @param sti The store item object + * @return The DB pointer of item + * + * @ingroup Store + */ EAPI void * elm_store_dbsystem_db_get(const Elm_Store_Item *sti) { @@ -1789,6 +1855,14 @@ elm_store_dbsystem_db_get(const Elm_Store_Item *sti) return std->p_db; } +/** + * Set the DB pointer of an item + * + * @param sti The store item object + * @parm p_db The DB pointer of item + * + * @ingroup Store + */ EAPI void elm_store_dbsystem_db_set(Elm_Store *store, void *p_db) { @@ -1808,6 +1882,15 @@ elm_store_dbsystem_db_set(Elm_Store *store, void *p_db) store, EINA_TRUE); } +/** + * Append the item to the genlist + * + * @param st The store object + * @param info The store item info dbsystem object + * @return The item of store + * + * @ingroup Store + */ EAPI Elm_Store_Item * elm_store_item_add(Elm_Store *st, Elm_Store_Item_Info *info) { @@ -1847,6 +1930,13 @@ elm_store_item_add(Elm_Store *st, Elm_Store_Item_Info *info) } } +/** + * Realize the visible items to the screen + * + * @param st The store object + * + * @ingroup Store + */ EAPI void elm_store_visible_items_update(Elm_Store *st) { @@ -1863,6 +1953,13 @@ elm_store_visible_items_update(Elm_Store *st) } } +/** + * Realize the item to the screen + * + * @param sti The store item object + * + * @ingroup Store + */ EAPI void elm_store_item_update(Elm_Store_Item *sti) { @@ -1883,6 +1980,13 @@ elm_store_item_update(Elm_Store_Item *sti) } } +/** + * Delete the item of genlist + * + * @param sti The store item object + * + * @ingroup Store + */ EAPI void elm_store_item_del(Elm_Store_Item *sti) { @@ -1937,3 +2041,6 @@ elm_store_item_del(Elm_Store_Item *sti) if(!deleted) printf(" Not deleted because it does not existed in the genlist \n"); } } + +// TODO: END -DBsystem store + diff --git a/src/lib/elm_theme.c b/src/lib/elm_theme.c index 3382b67..b8ccfed 100644 --- a/src/lib/elm_theme.c +++ b/src/lib/elm_theme.c @@ -4,7 +4,7 @@ static Elm_Theme theme_default = { - NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1 + NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1 }; static Eina_List *themes = NULL; @@ -24,11 +24,6 @@ _elm_theme_clear(Elm_Theme *th) eina_hash_free(th->cache); th->cache = NULL; } - if (th->cache_data) - { - eina_hash_free(th->cache_data); - th->cache_data = NULL; - } if (th->theme) { eina_stringshare_del(th->theme); @@ -116,79 +111,6 @@ _elm_theme_group_file_find(Elm_Theme *th, const char *group) return NULL; } -static const char * -_elm_theme_find_data_try(Elm_Theme *th, const char *f, const char *key) -{ - char *data; - const char *t; - - data = edje_file_data_get(f, key); - t = eina_stringshare_add(data); - free(data); - if (t) - { - eina_hash_add(th->cache, key, t); - return t; - } - return NULL; -} - -static const char * -_elm_theme_theme_data_try(Elm_Theme *th, const char *home, const char *f, const char *key) -{ - char buf[PATH_MAX]; - const char *data = NULL; - - if ((f[0] == '/') || ((f[0] == '.') && (f[1] == '/')) || - ((f[0] == '.') && (f[1] == '.') && (f[2] == '/')) || - ((isalpha(f[0])) && (f[1] == ':'))) - return _elm_theme_find_data_try(th, f, key); - else if (((f[0] == '~') && (f[1] == '/'))) - { - snprintf(buf, sizeof(buf), "%s/%s", home, f + 2); - return _elm_theme_find_try(th, buf, key); - } - snprintf(buf, sizeof(buf), "%s/.elementary/themes/%s.edj", home, f); - data = _elm_theme_find_data_try(th, buf, key); - if (data) return data; - snprintf(buf, sizeof(buf), "%s/themes/%s.edj", _elm_data_dir, f); - data = _elm_theme_find_data_try(th, buf, key); - return data; -} - -static const char * -_elm_theme_data_find(Elm_Theme *th, const char *key) -{ - const Eina_List *l; - const char *f; - static const char *home = NULL; - const char *data = eina_hash_find(th->cache_data, key); - - if (data) return data; - if (!home) - { - home = getenv("HOME"); - if (!home) home = ""; - } - EINA_LIST_FOREACH(th->overlay, l, f) - { - data = _elm_theme_theme_data_try(th, home, f, key); - if (data) return data; - } - EINA_LIST_FOREACH(th->themes, l, f) - { - data = _elm_theme_theme_data_try(th, home, f, key); - if (data) return data; - } - EINA_LIST_FOREACH(th->extension, l, f) - { - data = _elm_theme_theme_data_try(th, home, f, key); - if (data) return data; - } - if (th->ref_theme) return _elm_theme_data_find(th->ref_theme, key); - return NULL; -} - Eina_Bool _elm_theme_object_set(Evas_Object *parent, Evas_Object *o, const char *clas, const char *group, const char *style) { @@ -302,8 +224,6 @@ _elm_theme_parse(Elm_Theme *th, const char *theme) } if (th->cache) eina_hash_free(th->cache); th->cache = eina_hash_string_superfast_new(EINA_FREE_CB(eina_stringshare_del)); - if (th->cache_data) eina_hash_free(th->cache_data); - th->cache_data = eina_hash_string_superfast_new(EINA_FREE_CB(eina_stringshare_del)); EINA_LIST_FREE(th->themes, p) eina_stringshare_del(p); @@ -513,8 +433,6 @@ elm_theme_flush(Elm_Theme *th) if (!th) th = &(theme_default); if (th->cache) eina_hash_free(th->cache); th->cache = eina_hash_string_superfast_new(EINA_FREE_CB(eina_stringshare_del)); - if (th->cache_data) eina_hash_free(th->cache_data); - th->cache_data = eina_hash_string_superfast_new(EINA_FREE_CB(eina_stringshare_del)); _elm_win_rescale(th, EINA_TRUE); if (th->referrers) { @@ -638,10 +556,3 @@ elm_object_theme_get(const Evas_Object *obj) EINA_SAFETY_ON_NULL_RETURN_VAL(obj, NULL); return elm_widget_theme_get(obj); } - -EAPI const char * -elm_theme_data_get(Elm_Theme *th, const char *key) -{ - if (!th) th = &(theme_default); - return _elm_theme_data_find(th, key); -} diff --git a/src/lib/elm_tickernoti.c b/src/lib/elm_tickernoti.c index 4da82fb..188d20b 100644 --- a/src/lib/elm_tickernoti.c +++ b/src/lib/elm_tickernoti.c @@ -1,6 +1,13 @@ #include #include "elm_priv.h" +/** + * @defgroup TickerNoti TickerNoti + * @ingroup Elementary + * + * This is a notification widget which can be used to display some short information. + */ + typedef struct _Widget_Data Widget_Data; struct _Widget_Data @@ -506,6 +513,15 @@ _elm_tickernoti_content_part_unset_hook(Evas_Object *obj, const char *part) return NULL; } +/** + * Add a tickernoti object to @p parent + * + * @param parent The parent object + * + * @return The tickernoti object, or NULL upon failure + * + * @ingroup TickerNoti + */ EAPI Evas_Object * elm_tickernoti_add(Evas_Object *parent) { @@ -543,6 +559,13 @@ elm_tickernoti_add(Evas_Object *parent) return obj; } +/** + * Get the rotation of tickernoti object + * + * @param obj The tickernotil object + * @return The rotation angle + * @ingroup TickerNoti + */ EAPI int elm_tickernoti_rotation_get(const Evas_Object *obj) { @@ -552,6 +575,13 @@ elm_tickernoti_rotation_get(const Evas_Object *obj) return wd->angle; } +/** + * Set the rotation angle for the tickernoti object + * + * @param obj The tickernoti object + * @param angle The rotation angle(in degree) will be used on the tickernoti object + * @ingroup TickerNoti + */ EAPI void elm_tickernoti_rotation_set(Evas_Object *obj, int angle) { @@ -566,6 +596,13 @@ elm_tickernoti_rotation_set(Evas_Object *obj, int angle) elm_win_rotation_with_resize_set (wd->win, angle); } +/** + * Set the orientation of the tickernoti object + * + * @param obj The tickernoti object + * @param orient The orientation of tickernoti object + * @ingroup TickerNoti + */ EAPI void elm_tickernoti_orient_set(Evas_Object *obj, Elm_Tickernoti_Orient orient) { @@ -603,6 +640,14 @@ elm_tickernoti_orient_set(Evas_Object *obj, Elm_Tickernoti_Orient orient) #endif } +/** + * Get the orientation of the tickernoti object + * + * @param obj The tickernotil object + * @return The orientation of tickernotil object + * + * @ingroup TickerNoti + */ EAPI Elm_Tickernoti_Orient elm_tickernoti_orient_get(const Evas_Object *obj) { @@ -613,6 +658,14 @@ elm_tickernoti_orient_get(const Evas_Object *obj) return wd->orient; } +/** + * Get the view window(elm_win) on the tickernoti object + * + * @param obj The tickernotil object + * @return internal view window(elm_win) object + * + * @ingroup TickerNoti + */ EAPI Evas_Object * elm_tickernoti_win_get(const Evas_Object *obj) { @@ -622,42 +675,107 @@ elm_tickernoti_win_get(const Evas_Object *obj) return wd->win; } +// ################### Below APIs are going to be removed. ########################### +/** + * Set the detail label on the tickernoti object + * + * @param obj The tickernoti object + * @param label The label will be used on the tickernoti object + * @deprecated use elm_object_text_set() instead + * + * @ingroup TickerNoti + */ EAPI void elm_tickernoti_detailview_label_set(Evas_Object *obj, const char *label) { _elm_tickernoti_label_set(obj, NULL, label); } +/** + * Get the detail label used on the tickernoti object + * + * @param obj The tickernotil object + * @return The string inside the label + * @deprecated use elm_object_text_get() instead + * + * @ingroup TickerNoti + */ EAPI const char * elm_tickernoti_detailview_label_get(const Evas_Object *obj) { return _elm_tickernoti_label_get(obj, NULL); } +/** + * Set the button object used on the tickernoti object + * + * @param obj The tickernotil object + * @param button The button object will be used on the tickernoti object + * @deprecated use elm_object_content_part_set() instead with "icon" as part name + * + * @ingroup TickerNoti + */ EAPI void elm_tickernoti_detailview_button_set(Evas_Object *obj, Evas_Object *button) { _elm_tickernoti_button_set(obj, button); } + +/** + * Get the button object used on the tickernoti object + * + * @param obj The tickernotil object + * @return The button object inside the tickernoti + * @deprecated use elm_object_content_part_get() instead with "button" as part name + * + * @ingroup TickerNoti + */ EAPI Evas_Object * elm_tickernoti_detailview_button_get(const Evas_Object *obj) { return _elm_tickernoti_button_get(obj); } +/** + * Set the detail icon object used on the tickernoti object + * + * @param obj The tickernotil object + * @param icon The icon object will be used on the tickernoti object + * @deprecated use elm_object_content_part_set() instead with "icon" as part name + * + * @ingroup TickerNoti + */ EAPI void elm_tickernoti_detailview_icon_set(Evas_Object *obj, Evas_Object *icon) { _elm_tickernoti_icon_set(obj, icon); } +/** + * Get the detail icon object used on the tickernoti object + * + * @param obj The tickernotil object + * @return The icon object inside the tickernoti + * @deprecated use elm_object_content_part_get() instead with "icon" as part name + * + * @ingroup TickerNoti + */ EAPI Evas_Object * elm_tickernoti_detailview_icon_get(const Evas_Object *obj) { return _elm_tickernoti_icon_get(obj); } +/** + * Get the view mode on the tickernoti object + * + * @param obj The tickernotil object + * @return The view mode + * @deprecated removed as now styles are used instead + * + * @ingroup TickerNoti + */ EAPI Elm_Tickernoti_Mode elm_tickernoti_mode_get(const Evas_Object *obj) { @@ -667,6 +785,15 @@ elm_tickernoti_mode_get(const Evas_Object *obj) return wd->mode; } +/** + * Set the view mode used on the tickernoti object + * + * @param obj The tickernotil object + * @param mode The view mode will be used on the tickernoti object + * @deprecated removed as now styles are used instead + * + * @ingroup TickerNoti + */ EAPI void elm_tickernoti_mode_set(Evas_Object *obj, Elm_Tickernoti_Mode mode) { @@ -684,54 +811,133 @@ elm_tickernoti_mode_set(Evas_Object *obj, Elm_Tickernoti_Mode mode) } } +/** + * Get the detail view window(elm_win) on the tickernoti object + * + * @param obj The tickernotil object + * @return detail view window(elm_win) object + * @ingroup TickerNoti + */ EAPI Evas_Object * elm_tickernoti_detailview_get(const Evas_Object *obj) { return elm_tickernoti_win_get(obj); } +/** + * Set the orientation of the tickernoti object + * + * @param obj The tickernoti object + * @param orient The orientation of tickernoti object + * @deprecated use elm_tickernoti_orient_set() instead + * + * @ingroup TickerNoti + */ EAPI void elm_tickernoti_orientation_set(Evas_Object *obj, Elm_Tickernoti_Orient orient) { elm_tickernoti_orient_set(obj, orient); } +/** + * Get the orientation of the tickernoti object + * + * @param obj The tickernotil object + * @return The orientation of tickernotil object + * @deprecated use elm_tickernoti_orient_get() instead + * + * @ingroup TickerNoti + */ EAPI Elm_Tickernoti_Orient elm_tickernoti_orientation_get(const Evas_Object *obj) { return elm_tickernoti_orient_get(obj); } +/** + * Set the label on the tickernoti object + * + * @param obj The tickernoti object + * @param label The label will be used on the tickernoti object + * @deprecated use elm_object_text_get() + * + * @ingroup TickerNoti + */ EAPI void elm_tickernoti_label_set(Evas_Object *obj, const char *label) { _elm_tickernoti_label_set(obj, NULL, label); } +/** + * Get the label used on the tickernoti object + * + * @param obj The tickernotil object + * @return The string inside the label + * @deprecated use elm_object_text_get() instead + * + * @ingroup TickerNoti + */ EAPI const char * elm_tickernoti_label_get(const Evas_Object *obj) { return _elm_tickernoti_label_get(obj, NULL); } +/** + * Set the action button object used on the tickernoti object + * + * @param obj The tickernotil object + * @param button The button object will be used on the tickernoti object + * @deprecated use elm_object_content_part_set() instead with "button" as part name + * + * @ingroup TickerNoti + */ EAPI void elm_tickernoti_button_set(Evas_Object *obj, Evas_Object *button) { _elm_tickernoti_button_set(obj, button); } +/** + * Get the action button object used on the tickernoti object + * + * @param obj The tickernotil object + * @return The button object inside the tickernoti + * @deprecated use elm_object_content_part_get() instead with "button" as part name + * + * @ingroup TickerNoti + */ EAPI Evas_Object * elm_tickernoti_button_get(const Evas_Object *obj) { return _elm_tickernoti_button_get(obj); } +/** + * Set the icon object of the tickernoti object + * + * @param obj The tickernotil object + * @param icon The icon object will be used on the tickernoti object + * @deprecated use elm_object_content_part_set() instead with "icon" as part name + * + * @ingroup TickerNoti + */ EAPI void elm_tickernoti_icon_set(Evas_Object *obj, Evas_Object *icon) { _elm_tickernoti_icon_set(obj, icon); } +/** + * Get the icon object of the tickernoti object + * + * @param obj The tickernotil object + * @return The icon object inside the tickernoti + * @deprecated use elm_object_content_part_get() instead with "icon" as part name + * + * @ingroup TickerNoti + */ EAPI Evas_Object * elm_tickernoti_icon_get(const Evas_Object *obj) { diff --git a/src/lib/elm_toggle.c b/src/lib/elm_toggle.c index 2d02c80..5cdd33c 100644 --- a/src/lib/elm_toggle.c +++ b/src/lib/elm_toggle.c @@ -50,6 +50,7 @@ elm_toggle_states_labels_set(Evas_Object *obj, const char *onlabel, const char * elm_object_part_text_set(obj, "off", offlabel); } + EAPI void elm_toggle_states_labels_get(const Evas_Object *obj, const char **onlabel, const char **offlabel) { diff --git a/src/lib/elm_transit.c b/src/lib/elm_transit.c index 5557e0a..216a28d 100644 --- a/src/lib/elm_transit.c +++ b/src/lib/elm_transit.c @@ -2212,7 +2212,7 @@ _transit_effect_image_animation_op(Elm_Transit_Effect *effect, Elm_Transit *tran EINA_LIST_FOREACH(transit->objs, elist, obj) { - if (elm_widget_type_check(obj, type, __func__)) + if (elm_widget_type_check(obj, type)) elm_icon_file_set(obj, eina_list_nth(image_animation->images, count), NULL); } diff --git a/src/lib/elm_video.c b/src/lib/elm_video.c index cb90a85..d893fef 100644 --- a/src/lib/elm_video.c +++ b/src/lib/elm_video.c @@ -279,13 +279,14 @@ elm_video_add(Evas_Object *parent) wd->layout = edje_object_add(e); _elm_theme_object_set(obj, wd->layout, "video", "base", "default"); elm_widget_resize_object_set(obj, wd->layout); + elm_widget_sub_object_add(obj, wd->layout); evas_object_show(wd->layout); evas_object_size_hint_weight_set(wd->layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); wd->emotion = emotion_object_add(e); emotion_object_init(wd->emotion, NULL); - elm_widget_sub_object_add(obj, wd->emotion); edje_object_part_swallow(wd->layout, "elm.swallow.video", wd->emotion); + elm_widget_sub_object_add(obj, wd->emotion); evas_object_smart_callback_add(wd->emotion, "open_done", _open_done, obj); evas_object_smart_callback_add(wd->emotion, "playback_started", _playback_started, obj); diff --git a/src/lib/elm_widget.c b/src/lib/elm_widget.c index 6e8b044..4f1198d 100644 --- a/src/lib/elm_widget.c +++ b/src/lib/elm_widget.c @@ -26,7 +26,6 @@ struct _Smart_Data Evas_Object *obj; const char *type; Evas_Object *parent_obj; - Evas_Object *parent2; Evas_Coord x, y, w, h; Eina_List *subobjs; Evas_Object *resize_obj; @@ -1220,47 +1219,6 @@ elm_widget_tree_unfocusable_get(const Evas_Object *obj) return sd->tree_unfocusable; } -/** - * @internal - * - * Get the list of focusable child objects. - * - * This function retruns list of child objects which can get focus. - * - * @param obj The parent widget - * @retrun list of focusable child objects. - * - * @ingroup Widget - */ -EAPI Eina_List * -elm_widget_can_focus_child_list_get(const Evas_Object *obj) -{ - API_ENTRY return NULL; - - const Eina_List *l; - Eina_List *child_list = NULL; - Evas_Object *child; - - if (sd->subobjs) - { - EINA_LIST_FOREACH(sd->subobjs, l, child) - { - if ((elm_widget_can_focus_get(child)) && - (evas_object_visible_get(child)) && - (!elm_widget_disabled_get(child))) - child_list = eina_list_append(child_list, child); - else if (elm_widget_is(child)) - { - Eina_List *can_focus_list; - can_focus_list = elm_widget_can_focus_child_list_get(child); - if (can_focus_list) - child_list = eina_list_merge(child_list, can_focus_list); - } - } - } - return child_list; -} - EAPI void elm_widget_highlight_ignore_set(Evas_Object *obj, Eina_Bool ignore) @@ -1357,24 +1315,6 @@ elm_widget_parent_widget_get(const Evas_Object *obj) return parent; } -EAPI Evas_Object * -elm_widget_parent2_get(const Evas_Object *obj) -{ - if (_elm_widget_is(obj)) - { - Smart_Data *sd = evas_object_smart_data_get(obj); - if (sd) return sd->parent2; - } - return NULL; -} - -EAPI void -elm_widget_parent2_set(Evas_Object *obj, Evas_Object *parent) -{ - API_ENTRY return; - sd->parent2 = parent; -} - EAPI void elm_widget_event_callback_add(Evas_Object *obj, Elm_Event_Cb func, @@ -1966,7 +1906,7 @@ elm_widget_focused_object_clear(Evas_Object *obj) EAPI void elm_widget_focus_steal(Evas_Object *obj) { - Evas_Object *parent, *parent2, *o; + Evas_Object *parent, *o; API_ENTRY return; if (sd->focused) return; @@ -1983,30 +1923,24 @@ elm_widget_focus_steal(Evas_Object *obj) if (sd->focused) break; parent = o; } - if ((!elm_widget_parent_get(parent)) && - (!elm_widget_parent2_get(parent))) - elm_widget_focused_object_clear(parent); + if (!elm_widget_parent_get(parent)) + elm_widget_focused_object_clear(parent); else { - parent2 = elm_widget_parent_get(parent); - if (!parent2) parent2 = elm_widget_parent2_get(parent); - parent = parent2; + parent = elm_widget_parent_get(parent); sd = evas_object_smart_data_get(parent); - if (sd) + if ((sd->resize_obj) && (elm_widget_focus_get(sd->resize_obj))) + elm_widget_focused_object_clear(sd->resize_obj); + else { - if ((sd->resize_obj) && (elm_widget_focus_get(sd->resize_obj))) - elm_widget_focused_object_clear(sd->resize_obj); - else + const Eina_List *l; + Evas_Object *child; + EINA_LIST_FOREACH(sd->subobjs, l, child) { - const Eina_List *l; - Evas_Object *child; - EINA_LIST_FOREACH(sd->subobjs, l, child) + if (elm_widget_focus_get(child)) { - if (elm_widget_focus_get(child)) - { - elm_widget_focused_object_clear(child); - break; - } + elm_widget_focused_object_clear(child); + break; } } } @@ -2613,8 +2547,7 @@ elm_widget_is_check(const Evas_Object *obj) EAPI Eina_Bool elm_widget_type_check(const Evas_Object *obj, - const char *type, - const char *func) + const char *type) { const char *provided, *expected = "(unknown)"; static int abort_on_warn = -1; @@ -2627,7 +2560,7 @@ elm_widget_type_check(const Evas_Object *obj, if ((!provided) || (!provided[0])) provided = "(unknown)"; } - ERR("Passing Object: %p in function: %s, of type: '%s' when expecting type: '%s'", obj, func, provided, expected); + ERR("Passing Object: %p, of type: '%s' when expecting type: '%s'", obj, provided, expected); if (abort_on_warn == -1) { if (getenv("ELM_ERROR_ABORT")) abort_on_warn = 1; @@ -2897,31 +2830,6 @@ _elm_widget_item_data_get(const Elm_Widget_Item *item) return (void *)item->data; } -EAPI void -_elm_widget_item_disabled_set(Elm_Widget_Item *item, Eina_Bool disabled) -{ - ELM_WIDGET_ITEM_CHECK_OR_RETURN(item); - - if (item->disabled == disabled) return; - item->disabled = !!disabled; - if (item->disable_func) item->disable_func(item); -} - -EAPI Eina_Bool -_elm_widget_item_disabled_get(const Elm_Widget_Item *item) -{ - ELM_WIDGET_ITEM_CHECK_OR_RETURN(item, EINA_FALSE); - return item->disabled; -} - -EAPI void -_elm_widget_item_disable_set_hook_set(Elm_Widget_Item *item, - Elm_Widget_On_Disable_Set_Cb func) -{ - ELM_WIDGET_ITEM_CHECK_OR_RETURN(item); - item->disable_func = func; -} - typedef struct _Elm_Widget_Item_Tooltip Elm_Widget_Item_Tooltip; struct _Elm_Widget_Item_Tooltip diff --git a/src/lib/elm_widget.h b/src/lib/elm_widget.h index 329333d..964d061 100644 --- a/src/lib/elm_widget.h +++ b/src/lib/elm_widget.h @@ -201,8 +201,6 @@ typedef const char *(*Elm_Widget_On_Text_Get_Cb)(const void *data, const char *p typedef Evas_Object *(*Elm_Widget_On_Content_Get_Cb)(const void *data, const char *part); typedef Evas_Object *(*Elm_Widget_On_Content_Unset_Cb)(const void *data, const char *part); typedef void (*Elm_Widget_On_Signal_Emit_Cb)(void *data, const char *emission, const char *source); -typedef void (*Elm_Widget_On_Disable_Set_Cb)(void *data); - #define ELM_ACCESS_TYPE 0 // when reading out widget or item this is read first #define ELM_ACCESS_INFO 1 // next read is info - this is normally label @@ -262,10 +260,8 @@ struct _Elm_Widget_Item Elm_Widget_On_Text_Set_Cb on_text_set_func; Elm_Widget_On_Text_Get_Cb on_text_get_func; Elm_Widget_On_Signal_Emit_Cb on_signal_emit_func; - Elm_Widget_On_Disable_Set_Cb disable_func; Elm_Access_Info *access; const char *access_info; - Eina_Bool disabled: 1; /* widget variations should have data from here and on */ /* @todo: TODO check if this is enough for 1.0 release, maybe add padding! */ }; @@ -321,12 +317,11 @@ EAPI void elm_widget_sub_object_del(Evas_Object *obj, Evas_Object *s EAPI void elm_widget_resize_object_set(Evas_Object *obj, Evas_Object *sobj); EAPI void elm_widget_hover_object_set(Evas_Object *obj, Evas_Object *sobj); EAPI void elm_widget_signal_emit(Evas_Object *obj, const char *emission, const char *source); -EAPI void elm_widget_signal_callback_add(Evas_Object *obj, const char *emission, const char *source, Edje_Signal_Cb func, void *data); -EAPI void *elm_widget_signal_callback_del(Evas_Object *obj, const char *emission, const char *source, Edje_Signal_Cb func); +EAPI void elm_widget_signal_callback_add(Evas_Object *obj, const char *emission, const char *source, void (*func) (void *data, Evas_Object *o, const char *emission, const char *source), void *data); +EAPI void *elm_widget_signal_callback_del(Evas_Object *obj, const char *emission, const char *source, void (*func) (void *data, Evas_Object *o, const char *emission, const char *source)); EAPI void elm_widget_can_focus_set(Evas_Object *obj, Eina_Bool can_focus); EAPI Eina_Bool elm_widget_can_focus_get(const Evas_Object *obj); EAPI Eina_Bool elm_widget_child_can_focus_get(const Evas_Object *obj); -EAPI Eina_List *elm_widget_can_focus_child_list_get(const Evas_Object *obj); EAPI void elm_widget_tree_unfocusable_set(Evas_Object *obj, Eina_Bool tree_unfocusable); EAPI Eina_Bool elm_widget_tree_unfocusable_get(const Evas_Object *obj); EAPI void elm_widget_highlight_ignore_set(Evas_Object *obj, Eina_Bool ignore); @@ -353,8 +348,6 @@ EAPI Eina_Bool elm_widget_focus_list_next_get(const Evas_Object *obj, con EAPI void elm_widget_focus_set(Evas_Object *obj, int first); EAPI void elm_widget_focused_object_clear(Evas_Object *obj); EAPI Evas_Object *elm_widget_parent_get(const Evas_Object *obj); -EAPI Evas_Object *elm_widget_parent2_get(const Evas_Object *obj); -EAPI void elm_widget_parent2_set(Evas_Object *obj, Evas_Object *parent); EAPI void elm_widget_focus_steal(Evas_Object *obj); /** @@ -411,7 +404,7 @@ EAPI Eina_Bool elm_widget_theme_object_set(Evas_Object *obj, Evas_Object EAPI void elm_widget_type_register(const char **ptr); EAPI void elm_widget_type_unregister(const char **ptr); EAPI Eina_Bool elm_widget_is_check(const Evas_Object *obj); -EAPI Eina_Bool elm_widget_type_check(const Evas_Object *obj, const char *type, const char *func); +EAPI Eina_Bool elm_widget_type_check(const Evas_Object *obj, const char *type); EAPI Eina_List *elm_widget_stringlist_get(const char *str); EAPI void elm_widget_stringlist_free(Eina_List *list); EAPI void elm_widget_focus_hide_handle(Evas_Object *obj); @@ -461,9 +454,7 @@ EAPI void _elm_widget_item_text_set_hook_set(Elm_Widget_Item *item, EAPI void _elm_widget_item_text_get_hook_set(Elm_Widget_Item *item, Elm_Widget_On_Text_Get_Cb func); EAPI void _elm_widget_item_signal_emit_hook_set(Elm_Widget_Item *it, Elm_Widget_On_Signal_Emit_Cb func); EAPI void _elm_widget_item_access_info_set(Elm_Widget_Item *item, const char *txt); -EAPI void _elm_widget_item_disabled_set(Elm_Widget_Item *item, Eina_Bool disabled); -EAPI Eina_Bool _elm_widget_item_disabled_get(const Elm_Widget_Item *item); -EAPI void _elm_widget_item_disable_set_hook_set(Elm_Widget_Item *item, Elm_Widget_On_Disable_Set_Cb func); + /* debug function. don't use it unless you are tracking parenting issues */ EAPI void elm_widget_tree_dump(const Evas_Object *top); @@ -596,6 +587,42 @@ EAPI void elm_widget_tree_dot_dump(const Evas_Object *top, FILE *out #define elm_widget_item_cursor_engine_only_get(item) \ _elm_widget_item_cursor_engine_only_get((const Elm_Widget_Item *)item) /** + * Convenience function to query item's content part set. + * @see _elm_widget_item_content_part_set() + */ +#define elm_widget_item_content_part_set(item, part, content) \ + _elm_widget_item_content_part_set((Elm_Widget_Item *)item, part, content) +/** + * Convenience function to query item's content part get. + * @see _elm_widget_item_content_part_get() + */ +#define elm_widget_item_content_part_get(item, part) \ + _elm_widget_item_content_part_get((const Elm_Widget_Item *)item, part) +/** + * Convenience function to query item's content part unset. + * @see _elm_widget_item_content_part_unset() + */ +#define elm_widget_item_content_part_unset(item, part) \ + _elm_widget_item_content_part_unset((Elm_Widget_Item *)item, part) +/** + * Convenience function to query item's text part set. + * @see _elm_widget_item_text_part_set() + */ +#define elm_widget_item_text_part_set(item, part, label) \ + _elm_widget_item_text_part_set((Elm_Widget_Item *)item, part, label) +/** + * Convenience function to query item's text part get. + * @see _elm_widget_item_text_part_get() + */ +#define elm_widget_item_text_part_get(item, part) \ + _elm_widget_item_text_part_get((const Elm_Widget_Item *)item, part) +/** + * Convenience function to query item's signal emit. + * @see _elm_widget_item_signal_emit() + */ +#define elm_widget_item_signal_emit(item, emission, source) \ + _elm_widget_item_signal_emit((Elm_Widget_Item *)item, emission, source) +/** * Convenience function to query item's content set hook. * @see _elm_widget_item_content_set_hook_set() */ @@ -631,21 +658,7 @@ EAPI void elm_widget_tree_dot_dump(const Evas_Object *top, FILE *out */ #define elm_widget_item_signal_emit_hook_set(item, func) \ _elm_widget_item_signal_emit_hook_set((Elm_Widget_Item *)item, (Elm_Widget_On_Signal_Emit_Cb)func) -/** - * Convenience function to query disable get hook. - * @see _elm_widget_item_disabled_get() - */ -#define elm_widget_item_disabled_get(item) \ - _elm_widget_item_disabled_get((Elm_Widget_Item *)item) - -EAPI Eina_Bool _elm_widget_item_disabled_get(const Elm_Widget_Item *item); -/** - * Convenience function to query disable set hook. - * @see _elm_widget_item_disable_set_hook_set() - */ -#define elm_widget_item_disable_set_hook_set(item, func) \ - _elm_widget_item_disable_set_hook_set((Elm_Widget_Item *) item, (Elm_Widget_On_Disable_Set_Cb)func) #define ELM_WIDGET_ITEM_CHECK_OR_RETURN(item, ...) \ do { \ @@ -683,7 +696,7 @@ EAPI Eina_Bool _elm_widget_item_disabled_get(const Elm_Widget_Item *item) if (!elm_widget_is_check(obj)) return #define ELM_CHECK_WIDTYPE(obj, widtype) \ - if (!obj || !elm_widget_type_check((obj), (widtype), __func__)) return + if (!elm_widget_type_check((obj), (widtype))) return #define ELM_WIDGET_ITEM_WIDTYPE_CHECK_OR_RETURN(it, ...) \ ELM_WIDGET_ITEM_CHECK_OR_RETURN((Elm_Widget_Item *)it, __VA_ARGS__); \ @@ -691,7 +704,7 @@ EAPI Eina_Bool _elm_widget_item_disabled_get(const Elm_Widget_Item *item) #define ELM_WIDGET_ITEM_WIDTYPE_CHECK_OR_GOTO(it, label) \ ELM_WIDGET_ITEM_CHECK_OR_GOTO((Elm_Widget_Item *)it, label); \ - if (!elm_widget_type_check((it->base.widget), (widtype), __func__)) goto label; + if (!elm_widget_type_check((it->base.widget), (widtype))) goto label; #define ELM_WIDGET_STANDARD_SETUP(wdat, wdtype, par, evas, ob, ret) \ do { \ @@ -732,7 +745,7 @@ typedef enum _Elm_Sel_Format /** Edje textblock markup, including inline images */ ELM_SEL_FORMAT_MARKUP = 0x02, /** Images */ - ELM_SEL_FORMAT_IMAGE = 0x04, + ELM_SEL_FORMAT_IMAGE = 0x04, /** Vcards */ ELM_SEL_FORMAT_VCARD = 0x08, /** Raw HTMLish things for widgets that want that stuff (hello webkit!) */ @@ -750,7 +763,6 @@ struct _Elm_Selection_Data Eina_Bool elm_selection_set(Elm_Sel_Type selection, Evas_Object *widget, Elm_Sel_Format format, const char *buf); Eina_Bool elm_selection_clear(Elm_Sel_Type selection, Evas_Object *widget); Eina_Bool elm_selection_get(Elm_Sel_Type selection, Elm_Sel_Format format, Evas_Object *widget, Elm_Drop_Cb datacb, void *udata); -Eina_Bool elm_selection_selection_has_owner(void); Eina_Bool elm_drop_target_add(Evas_Object *widget, Elm_Sel_Type, Elm_Drop_Cb, void *); Eina_Bool elm_drop_target_del(Evas_Object *widget); Eina_Bool elm_drag_start(Evas_Object *, Elm_Sel_Format, const char *, void (*)(void *,Evas_Object*),void*); diff --git a/src/lib/elm_win.c b/src/lib/elm_win.c index 1a3cd34..fae74b7 100644 --- a/src/lib/elm_win.c +++ b/src/lib/elm_win.c @@ -311,7 +311,7 @@ _elm_win_focus_in(Ecore_Evas *ee) _elm_widget_top_win_focused_set(win->win_obj, EINA_TRUE); if (win->show_count == 1) { - elm_object_focus_set(win->win_obj, EINA_TRUE); + elm_object_focus(win->win_obj); win->show_count++; } else @@ -409,26 +409,6 @@ _elm_win_event_cb(Evas_Object *obj, Evas_Object *src __UNUSED__, Evas_Callback_T ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; return EINA_TRUE; } - else if ((!strcmp(ev->keyname, "Left")) || - (!strcmp(ev->keyname, "KP_Left"))) - { - //TODO : woohyun jung - } - else if ((!strcmp(ev->keyname, "Right")) || - (!strcmp(ev->keyname, "KP_Right"))) - { - //TODO : woohyun jung - } - else if ((!strcmp(ev->keyname, "Up")) || - (!strcmp(ev->keyname, "KP_Up"))) - { - //TODO : woohyun jung - } - else if ((!strcmp(ev->keyname, "Down")) || - (!strcmp(ev->keyname, "KP_Down"))) - { - //TODO : woohyun jung - } } return EINA_FALSE; @@ -1362,35 +1342,43 @@ elm_win_add(Evas_Object *parent, const char *name, Elm_Win_Type type) #define FALLBACK_TRY(engine) \ if (!win->ee) \ - do { \ - CRITICAL(engine " engine creation failed. Trying default."); \ - win->ee = ecore_evas_new(NULL, 0, 0, 1, 1, NULL); \ - if (win->ee) \ - elm_engine_set(ecore_evas_engine_name_get(win->ee)); \ + do { \ + CRITICAL(engine " engine creation failed. Trying software X11."); \ + win->ee = ecore_evas_software_x11_new(NULL, 0, 0, 0, 1, 1); \ + elm_engine_set(ELM_SOFTWARE_X11); \ } while (0) #define ENGINE_COMPARE(name) (!strcmp(_elm_config->engine, name)) switch (type) { case ELM_WIN_INLINED_IMAGE: - if (!parent) break; - { - Evas *e = evas_object_evas_get(parent); - Ecore_Evas *ee; - if (!e) break; - ee = ecore_evas_ecore_evas_get(e); - if (!ee) break; - win->img_obj = ecore_evas_object_image_new(ee); - if (!win->img_obj) break; - win->ee = ecore_evas_object_ecore_evas_get(win->img_obj); - if (win->ee) - { - _win_inlined_image_set(win); - break; - } - evas_object_del(win->img_obj); - win->img_obj = NULL; - } + { + if (parent) + { + Evas *e = evas_object_evas_get(parent); + if (e) + { + Ecore_Evas *ee = ecore_evas_ecore_evas_get(e); + if (ee) + { + win->img_obj = ecore_evas_object_image_new(ee); + if (win->img_obj) + { + win->ee = ecore_evas_object_ecore_evas_get(win->img_obj); + if (win->ee) + { + _win_inlined_image_set(win); + } + else + { + evas_object_del(win->img_obj); + win->img_obj = NULL; + } + } + } + } + } + } break; default: if (ENGINE_COMPARE(ELM_SOFTWARE_X11)) @@ -1400,7 +1388,6 @@ elm_win_add(Evas_Object *parent, const char *name, Elm_Win_Type type) win->client_message_handler = ecore_event_handler_add (ECORE_X_EVENT_CLIENT_MESSAGE, _elm_win_client_message, win); #endif - FALLBACK_TRY("Sofware X11"); } else if (ENGINE_COMPARE(ELM_SOFTWARE_FB)) { @@ -1554,8 +1541,6 @@ elm_win_add(Evas_Object *parent, const char *name, Elm_Win_Type type) evas_object_layer_set(win->win_obj, 50); evas_object_pass_events_set(win->win_obj, EINA_TRUE); - if (type == ELM_WIN_INLINED_IMAGE) - elm_widget_parent2_set(win->win_obj, parent); ecore_evas_object_associate(win->ee, win->win_obj, ECORE_EVAS_OBJECT_ASSOCIATE_BASE | ECORE_EVAS_OBJECT_ASSOCIATE_STACK | @@ -2166,16 +2151,6 @@ elm_win_screen_position_get(const Evas_Object *obj, int *x, int *y) if (y) *y = win->screen.y; } -EAPI Eina_Bool -elm_win_focus_get(const Evas_Object *obj) -{ - Elm_Win *win; - ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE; - win = elm_widget_data_get(obj); - if (!win) return EINA_FALSE; - return ecore_evas_focus_get(win->ee); -} - EAPI void elm_win_screen_size_get(const Evas_Object *obj, int *x, int *y, int *w, int *h) { diff --git a/src/lib/els_cursor.c b/src/lib/els_cursor.c index 1c1daa2..12e7ef7 100644 --- a/src/lib/els_cursor.c +++ b/src/lib/els_cursor.c @@ -300,8 +300,9 @@ _elm_cursor_cur_set(Elm_Cursor *cur) if (cur->use_engine) { #ifdef HAVE_ELEMENTARY_X - struct _Cursor_Id *cur_id; + struct _Cursor_Id cur_search, *cur_id; + cur_search.name = cur->cursor_name; cur_id = bsearch(&(cur->cursor_name), _cursors, _cursors_count, sizeof(struct _Cursor_Id), _elm_cursor_strcmp); diff --git a/src/lib/els_icon.c b/src/lib/els_icon.c index e4893ab..259fe8b 100755 --- a/src/lib/els_icon.c +++ b/src/lib/els_icon.c @@ -2,12 +2,6 @@ #include "elm_priv.h" #include "els_icon.h" -#ifdef _WIN32 -# define FMT_SIZE_T "%Iu" -#else -# define FMT_SIZE_T "%zu" -#endif - typedef struct _Smart_Data Smart_Data; struct _Smart_Data @@ -82,21 +76,23 @@ _els_smart_icon_file_helper(Evas_Object *obj) /* smart code here */ /* NOTE: Do not merge upstream for the if (sd->edje) { } statements But wonder whether the edje resource icons have no problem. */ - if (!sd->edje) goto out; - - if (sd->prev) evas_object_del(sd->prev); - pclip = evas_object_clip_get(sd->obj); - if (sd->obj) sd->prev = sd->obj; - sd->obj = evas_object_image_add(evas_object_evas_get(obj)); - evas_object_event_callback_add(sd->obj, EVAS_CALLBACK_IMAGE_PRELOADED, - _preloaded, sd); - evas_object_smart_member_add(sd->obj, obj); - if (sd->prev) evas_object_smart_member_add(sd->prev, obj); - evas_object_image_scale_hint_set(sd->obj, EVAS_IMAGE_SCALE_HINT_STATIC); - evas_object_clip_set(sd->obj, pclip); + if (sd->edje) + { + if (sd->prev) evas_object_del(sd->prev); + pclip = evas_object_clip_get(sd->obj); + if (sd->obj) sd->prev = sd->obj; + sd->obj = evas_object_image_add(evas_object_evas_get(obj)); + evas_object_event_callback_add(sd->obj, + EVAS_CALLBACK_IMAGE_PRELOADED, + _preloaded, sd); + evas_object_smart_member_add(sd->obj, obj); + if (sd->prev) evas_object_smart_member_add(sd->prev, obj); + evas_object_image_scale_hint_set(sd->obj, + EVAS_IMAGE_SCALE_HINT_STATIC); + evas_object_clip_set(sd->obj, pclip); - sd->edje = EINA_FALSE; -out: + sd->edje = EINA_FALSE; + } if (!sd->size) evas_object_image_load_size_set(sd->obj, sd->size, sd->size); @@ -118,7 +114,7 @@ _els_smart_icon_memfile_set(Evas_Object *obj, const void *img, size_t size, cons evas_object_image_preload(sd->obj, EINA_FALSE); if (evas_object_image_load_error_get(sd->obj) != EVAS_LOAD_ERROR_NONE) { - ERR("Things are going bad for some random " FMT_SIZE_T " byte chunk of memory (%p)", size, sd->obj); + ERR("Things are going bad for some random %zu byte chunk of memory (%p)", size, sd->obj); return EINA_FALSE; } _smart_reconfigure(sd); diff --git a/src/lib/els_tooltip.c b/src/lib/els_tooltip.c index 99b6b07..832a8bc 100644 --- a/src/lib/els_tooltip.c +++ b/src/lib/els_tooltip.c @@ -1,14 +1,6 @@ #include #include "elm_priv.h" -#ifdef ISCOMFITOR -# define STR(X) #X -# define STUPID(X) STR(X) -# define TTDBG(x...) fprintf(stderr, STUPID(__LINE__)": " x) -#else -# define TTDBG(X...) -#endif - static const char _tooltip_key[] = "_elm_tooltip"; #define ELM_TOOLTIP_GET_OR_RETURN(tt, obj, ...) \ @@ -247,6 +239,9 @@ _elm_tooltip_reconfigure(Elm_Tooltip *tt) Evas_Coord eminw, eminh, ominw, ominh; double rel_x, rel_y; Eina_Bool inside_eventarea; +#ifdef HAVE_ELEMENTARY_X + Ecore_X_Window xwin = 0; +#endif _elm_tooltip_reconfigure_job_stop(tt); @@ -342,7 +337,7 @@ _elm_tooltip_reconfigure(Elm_Tooltip *tt) _elm_tooltip_content_del_cb, tt); } - TTDBG("*******RECALC\n"); + evas_object_size_hint_min_get(tt->content, &ominw, &ominh); edje_object_size_min_get(tt->tooltip, &eminw, &eminh); @@ -353,75 +348,61 @@ _elm_tooltip_reconfigure(Elm_Tooltip *tt) if (ominh < 1) ominh = 10; /* at least it is noticeable */ edje_object_size_min_restricted_calc(tt->tooltip, &tw, &th, ominw, ominh); - TTDBG("TTSIZE: tw=%d,th=%d,ominw=%d,ominh=%d\n", tw, th, ominw, ominh); if (tt->tt_win) - elm_win_screen_size_get(elm_object_top_widget_get(tt->owner), NULL, NULL, &cw, &ch); + elm_win_screen_size_get(elm_object_top_widget_get(tt->owner), &cw, &ch, NULL, NULL); if (!cw) evas_output_size_get(tt->tt_evas ?: tt->evas, &cw, &ch); - TTDBG("SCREEN: cw=%d,ch=%d\n", cw, ch); evas_object_geometry_get(tt->eventarea, &ox, &oy, &ow, &oh); - TTDBG("EVENTAREA: ox=%d,oy=%d,ow=%d,oh=%d\n", ox, oy, ow, oh); if (tt->tt_win) { int x, y; - Evas_Object *win = elm_object_top_widget_get(tt->owner); #ifdef HAVE_ELEMENTARY_X - Ecore_X_Window xwin = elm_win_xwindow_get(win); ecore_x_pointer_xy_get(xwin, &px, &py); #endif - elm_win_screen_position_get(win, &x, &y); + elm_win_screen_position_get(elm_object_top_widget_get(tt->owner), &x, &y); ox += x; - if (px) px += x; oy += y; - if (py) py += y; } else evas_pointer_canvas_xy_get(tt->evas, &px, &py); - TTDBG("POINTER: px=%d,py=%d\n", px, py); + inside_eventarea = ((px >= ox) && (py >= oy) && (px <= ox + ow) && (py <= oy + oh)); if (inside_eventarea) { - /* try to position bottom right corner at pointer */ tx = px - tw; ty = py - th; - TTDBG("INIT (EVENTAREA)\n"); } else { - /* try centered on middle of eventarea */ tx = ox + (ow / 2) - (tw / 2); if (0 > (th - oy - oh)) ty = oy + th; else ty = oy - oh; - TTDBG("INIT (INTERPRETED)\n"); } - TTDBG("ADJUST (POINTER): tx=%d,ty=%d\n", tx, ty); + if (tx < 0) { - /* if we're offscreen, try to flip over the Y axis */ if (abs((tx + 2 * tw) - cw) < abs(tx)) tx += tw; } - else if ((tx > px) && (px > tw)) + else if ((tx > px) && (px > tx)) { if (tx + tw < cw) tx += tw; } if (ty < 0) { - /* if we're offscreen, try to flip over the X axis */ if (abs((ty + 2 * th) - ch) < abs(ty)) ty += th; } - else if ((ty > py) && (py > th)) + else if ((ty > py) && (py > ty)) { if (ty + th < ch) ty += th; } - TTDBG("ADJUST (FLIP): tx=%d,ty=%d\n", tx, ty); if (inside_eventarea) { if ((tx == px) && ((tx + tw + tt->pad.x < cw) || (tx + tw > cw))) tx += tt->pad.x; @@ -429,7 +410,6 @@ _elm_tooltip_reconfigure(Elm_Tooltip *tt) if ((ty == py) && ((ty + th + tt->pad.y < ch) || (ty + th > ch))) ty += tt->pad.y; else if ((ty - tt->pad.y > 0) || (ty < 0)) ty -= tt->pad.y; } - TTDBG("PAD: tx=%d,ty=%d\n", tx, ty); if (tt->pad.bx * 2 + tw < cw) { if (tx < tt->pad.bx) tx = tt->pad.bx; @@ -438,6 +418,7 @@ _elm_tooltip_reconfigure(Elm_Tooltip *tt) } else if (tx < 0) tx -= tt->pad.bx; else if (tx > cw) tx += tt->pad.bx; + if (tt->pad.by * 2 + th < ch) { if (ty < tt->pad.by) ty = tt->pad.by; @@ -446,12 +427,7 @@ _elm_tooltip_reconfigure(Elm_Tooltip *tt) } else if (ty < 0) ty -= tt->pad.by; else if (ty > ch) ty += tt->pad.by; - TTDBG("PAD (BORDER): tx=%d,ty=%d\n", tx, ty); - if ((tx < 0) || (ty < 0)) - { - TTDBG("POSITIONING FAILED! THIS IS A BUG SOMEWHERE!\n"); - return; - } + evas_object_move(tt->tt_win ? : tt->tooltip, tx, ty); evas_object_resize(tt->tt_win ? : tt->tooltip, tw, th); evas_object_show(tt->tooltip); diff --git a/src/modules/access_output/mod.c b/src/modules/access_output/mod.c index 3956a40..5dbe3a6 100644 --- a/src/modules/access_output/mod.c +++ b/src/modules/access_output/mod.c @@ -39,7 +39,7 @@ _exe_del(void *data __UNUSED__, int type __UNUSED__, void *event) EAPI int elm_modapi_init(void *m __UNUSED__) { - exe_exit_handler = + exe_exit_handler = ecore_event_handler_add(ECORE_EXE_EVENT_DEL, _exe_del, NULL); return 1; // succeed always diff --git a/src/modules/ctxpopup_copypasteUI/copypaste.c b/src/modules/ctxpopup_copypasteUI/copypaste.c index 0831e37..6713104 100644 --- a/src/modules/ctxpopup_copypasteUI/copypaste.c +++ b/src/modules/ctxpopup_copypasteUI/copypaste.c @@ -131,7 +131,7 @@ _clipboard_menu(void *data, Evas_Object *obj, void *event_info) #endif ext_mod->cnpinit(data,obj,event_info); elm_cbhm_helper_init(obj); - if (ext_mod->cnp_mode != ELM_CNP_MODE_MARKUP) + if (ext_mod->textonly) elm_cbhm_send_raw_data("show0"); else elm_cbhm_send_raw_data("show1"); @@ -208,7 +208,6 @@ obj_longpress(Evas_Object *obj) const char *context_menu_orientation; char buf[255]; Evas_Object* icon; - Elm_Object_Item *added_item = NULL; /*update*/ elm_entry_extension_module_data_get(obj,ext_mod); @@ -243,19 +242,14 @@ obj_longpress(Evas_Object *obj) { if (!elm_entry_is_empty(obj)) { - added_item = elm_ctxpopup_item_append(ext_mod->popup, "Select", NULL, _select, obj ); - added_item = elm_ctxpopup_item_append(ext_mod->popup, "Select All", NULL, _select_all, obj ); + elm_ctxpopup_item_append(ext_mod->popup, "Select", NULL, _select, obj ); + elm_ctxpopup_item_append(ext_mod->popup, "Select All", NULL, _select_all, obj ); } } - -#ifdef HAVE_ELEMENTARY_X - if (cbhm_count) -#else if (1) // need way to detect if someone has a selection -#endif { if (ext_mod->editable) - added_item = elm_ctxpopup_item_append(ext_mod->popup, "Paste", NULL, _paste, obj ); + elm_ctxpopup_item_append(ext_mod->popup, "Paste", NULL, _paste, obj ); } //elm_ctxpopup_item_append(wd->ctxpopup, NULL, "Selectall",_select_all, obj ); // start for cbhm @@ -268,7 +262,7 @@ obj_longpress(Evas_Object *obj) icon = elm_icon_add(ext_mod->popup); snprintf(buf, sizeof(buf), "%s/images/copypaste_icon_clipboard.png", PACKAGE_DATA_DIR); elm_icon_file_set(icon, buf, NULL); - added_item = elm_ctxpopup_item_append(ext_mod->popup, NULL, icon, _clipboard_menu, obj); + elm_ctxpopup_item_append(ext_mod->popup, NULL, icon, _clipboard_menu, obj); //elm_ctxpopup_item_append(ext_mod->popup, "More", NULL, _clipboard_menu, obj ); } // end for cbhm @@ -279,32 +273,24 @@ obj_longpress(Evas_Object *obj) { if (ext_mod->have_selection) { - added_item = elm_ctxpopup_item_append(ext_mod->popup, "Copy", NULL, _copy, obj ); + elm_ctxpopup_item_append(ext_mod->popup, "Copy", NULL, _copy, obj ); if (ext_mod->editable) - added_item = elm_ctxpopup_item_append(ext_mod->popup, "Cut", NULL, _cut, obj ); -#ifdef HAVE_ELEMENTARY_X - if (ext_mod->editable && cbhm_count) -#else + elm_ctxpopup_item_append(ext_mod->popup, "Cut", NULL, _cut, obj ); if (ext_mod->editable) -#endif - added_item = elm_ctxpopup_item_append(ext_mod->popup, "Paste", NULL, _paste, obj ); + elm_ctxpopup_item_append(ext_mod->popup, "Paste", NULL, _paste, obj ); } else { _cancel(obj,ext_mod->popup,NULL); if (!elm_entry_is_empty(obj)) { - added_item = elm_ctxpopup_item_append(ext_mod->popup, "Select", NULL, _select, obj ); - added_item = elm_ctxpopup_item_append(ext_mod->popup, "Select All", NULL, _select_all, obj ); + elm_ctxpopup_item_append(ext_mod->popup, "Select", NULL, _select, obj ); + elm_ctxpopup_item_append(ext_mod->popup, "Select All", NULL, _select_all, obj ); } -#ifdef HAVE_ELEMENTARY_X - if (cbhm_count) -#else if (1) // need way to detect if someone has a selection -#endif { if (ext_mod->editable) - added_item = elm_ctxpopup_item_append(ext_mod->popup, "Paste", NULL, _paste, obj ); + elm_ctxpopup_item_append(ext_mod->popup, "Paste", NULL, _paste, obj ); } } // start for cbhm @@ -317,7 +303,7 @@ obj_longpress(Evas_Object *obj) icon = elm_icon_add(ext_mod->popup); snprintf(buf, sizeof(buf), "%s/images/copypaste_icon_clipboard.png", PACKAGE_DATA_DIR); elm_icon_file_set(icon, buf, NULL); - added_item = elm_ctxpopup_item_append(ext_mod->popup, NULL, icon, _clipboard_menu, obj); + elm_ctxpopup_item_append(ext_mod->popup, NULL, icon, _clipboard_menu, obj); //elm_ctxpopup_item_append(ext_mod->popup, "More", NULL, _clipboard_menu, obj ); } // end for cbhm @@ -325,9 +311,9 @@ obj_longpress(Evas_Object *obj) } EINA_LIST_FOREACH(ext_mod->items, l, it) { - added_item = elm_ctxpopup_item_append(ext_mod->popup, it->label, NULL, _item_clicked, it ); + elm_ctxpopup_item_append(ext_mod->popup, it->label, NULL, _item_clicked, it ); } - if (ext_mod->popup && added_item) + if (ext_mod->popup) { elm_object_scroll_freeze_push(ext_mod->popup); _ctxpopup_position(obj); diff --git a/src/modules/ctxpopup_copypasteshareUI/copypaste.c b/src/modules/ctxpopup_copypasteshareUI/copypaste.c index 854857b..83c28df 100644 --- a/src/modules/ctxpopup_copypasteshareUI/copypaste.c +++ b/src/modules/ctxpopup_copypasteshareUI/copypaste.c @@ -117,7 +117,7 @@ _clipboard_menu(void *data, Evas_Object *obj, void *event_info) #endif ext_mod->cnpinit(data,obj,event_info); elm_cbhm_helper_init(obj); - if (ext_mod->cnp_mode != ELM_CNP_MODE_MARKUP) + if (ext_mod->textonly) elm_cbhm_send_raw_data("show0"); else elm_cbhm_send_raw_data("show1"); diff --git a/src/modules/popup_copypasteUI/copypaste.c b/src/modules/popup_copypasteUI/copypaste.c index 381f711..2a6ef7d 100644 --- a/src/modules/popup_copypasteUI/copypaste.c +++ b/src/modules/popup_copypasteUI/copypaste.c @@ -54,18 +54,18 @@ _cancel(void *data, Evas_Object *obj, void *event_info) static void _clipboard_menu(void *data, Evas_Object *obj, void *event_info) { - // start for cbhm + // start for cbhm #ifdef HAVE_ELEMENTARY_X - ecore_x_selection_secondary_set(elm_win_xwindow_get(obj), "",1); + ecore_x_selection_secondary_set(elm_win_xwindow_get(obj), "",1); #endif - ext_mod->cnpinit(data,obj,event_info); - elm_cbhm_helper_init(obj); - if (ext_mod->cnp_mode != ELM_CNP_MODE_MARKUP) - elm_cbhm_send_raw_data("show0"); - else - elm_cbhm_send_raw_data("show1"); - evas_object_hide(ext_mod->popup); - // end for cbhm + ext_mod->cnpinit(data,obj,event_info); + elm_cbhm_helper_init(obj); + if (ext_mod->textonly) + elm_cbhm_send_raw_data("show0"); + else + elm_cbhm_send_raw_data("show1"); + evas_object_hide(ext_mod->popup); + // end for cbhm } static void -- 2.7.4