From 5309110056d277ed1ff0cf07fcd5beca26c18f33 Mon Sep 17 00:00:00 2001 From: Shinwoo Kim Date: Mon, 28 Nov 2011 17:38:18 +0900 Subject: [PATCH] Revert to the latest migration version --- 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 | 1939 ++++++++++++++++---- src/lib/Makefile.am | 9 +- src/lib/elc_ctxpopup.c | 190 +- ...m_multibuttonentry.c => elc_multibuttonentry.c} | 531 ++---- 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 +- 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, 4122 insertions(+), 7865 deletions(-) create mode 100644 src/bin/test_multibuttonentry.c delete mode 100644 src/edje_externals/elm_navigationbar.c delete mode 100644 src/edje_externals/elm_navigationbar_ex.c delete mode 100644 src/examples/animator_example_01.c rename src/lib/{elm_multibuttonentry.c => elc_multibuttonentry.c} (82%) delete mode 100644 src/lib/elc_navigationbar.c delete mode 100644 src/lib/elc_navigationbar_ex.c delete mode 100644 src/lib/elm_scrolled_grid.c delete mode 100644 src/lib/elm_slidingdrawer.c diff --git a/COPYING b/COPYING index f9624d6..a3f518d 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; either version 2.1 of the License. +Free Software Foundation; 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 58f7237..e64f7da 100755 --- a/configure.ac +++ b/configure.ac @@ -220,11 +220,23 @@ 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], [ @@ -735,6 +747,7 @@ 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 cb0d5d2..88a4f7e 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) +EXTRA_DIST = $(files_DATA) $(files_glayer_DATA) diff --git a/doc/widgets/widget_preview_ctxpopup.c b/doc/widgets/widget_preview_ctxpopup.c index 5b71284..c2819d6 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_ctxpopup_item_disabled_set(it, EINA_TRUE); +elm_object_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 baa7972..23ecf05 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-21 18:14+0900\n" +"POT-Creation-Date: 2011-11-28 17:27+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:1382 -#: src/lib/elm_searchbar.c:226 +#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1396 +#: src/lib/elm_searchbar.c:211 msgid "Cancel" msgstr "" @@ -78,27 +78,27 @@ msgstr "AM" msgid "DateTimeFormat" msgstr "%b %d, %Y %I : %M %p" -#: src/lib/elm_entry.c:1356 +#: src/lib/elm_entry.c:1370 msgid "Select" msgstr "" -#: src/lib/elm_entry.c:1361 +#: src/lib/elm_entry.c:1375 msgid "Paste" msgstr "" -#: src/lib/elm_entry.c:1366 src/lib/elm_entry.c:1386 +#: src/lib/elm_entry.c:1380 src/lib/elm_entry.c:1400 msgid "More" msgstr "" -#: src/lib/elm_entry.c:1376 +#: src/lib/elm_entry.c:1390 msgid "Copy" msgstr "" -#: src/lib/elm_entry.c:1379 +#: src/lib/elm_entry.c:1393 msgid "Cut" msgstr "" -#: src/lib/elm_searchbar.c:214 +#: src/lib/elm_searchbar.c:199 msgid "Search" msgstr "" diff --git a/po/az_IR.po b/po/az_IR.po index c37b897..ae8c52a 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-21 18:14+0900\n" +"POT-Creation-Date: 2011-11-28 17:27+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:1382 -#: src/lib/elm_searchbar.c:226 +#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1396 +#: src/lib/elm_searchbar.c:211 msgid "Cancel" msgstr "" @@ -77,27 +77,27 @@ msgstr "AM" msgid "DateTimeFormat" msgstr "%b %d, %Y %I : %M %p" -#: src/lib/elm_entry.c:1356 +#: src/lib/elm_entry.c:1370 msgid "Select" msgstr "" -#: src/lib/elm_entry.c:1361 +#: src/lib/elm_entry.c:1375 msgid "Paste" msgstr "" -#: src/lib/elm_entry.c:1366 src/lib/elm_entry.c:1386 +#: src/lib/elm_entry.c:1380 src/lib/elm_entry.c:1400 msgid "More" msgstr "" -#: src/lib/elm_entry.c:1376 +#: src/lib/elm_entry.c:1390 msgid "Copy" msgstr "" -#: src/lib/elm_entry.c:1379 +#: src/lib/elm_entry.c:1393 msgid "Cut" msgstr "" -#: src/lib/elm_searchbar.c:214 +#: src/lib/elm_searchbar.c:199 msgid "Search" msgstr "" diff --git a/po/de.po b/po/de.po index 53e5852..bc7954a 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-21 18:14+0900\n" +"POT-Creation-Date: 2011-11-28 17:27+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:1382 -#: src/lib/elm_searchbar.c:226 +#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1396 +#: src/lib/elm_searchbar.c:211 msgid "Cancel" msgstr "Abbrechen" @@ -79,27 +79,27 @@ msgstr "vorm." msgid "DateTimeFormat" msgstr "%d. %b %Y %H : %M" -#: src/lib/elm_entry.c:1356 +#: src/lib/elm_entry.c:1370 msgid "Select" msgstr "Auswählen" -#: src/lib/elm_entry.c:1361 +#: src/lib/elm_entry.c:1375 msgid "Paste" msgstr "Einfügen" -#: src/lib/elm_entry.c:1366 src/lib/elm_entry.c:1386 +#: src/lib/elm_entry.c:1380 src/lib/elm_entry.c:1400 msgid "More" msgstr "" -#: src/lib/elm_entry.c:1376 +#: src/lib/elm_entry.c:1390 msgid "Copy" msgstr "Kopieren" -#: src/lib/elm_entry.c:1379 +#: src/lib/elm_entry.c:1393 msgid "Cut" msgstr "Ausschneiden" -#: src/lib/elm_searchbar.c:214 +#: src/lib/elm_searchbar.c:199 msgid "Search" msgstr "Suche" diff --git a/po/el.po b/po/el.po index 08c4bc1..3392d56 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-21 18:14+0900\n" +"POT-Creation-Date: 2011-11-28 17:27+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:1382 -#: src/lib/elm_searchbar.c:226 +#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1396 +#: src/lib/elm_searchbar.c:211 msgid "Cancel" msgstr "" @@ -78,27 +78,27 @@ msgstr "AM" msgid "DateTimeFormat" msgstr "%d %b %Y %I : %M %p" -#: src/lib/elm_entry.c:1356 +#: src/lib/elm_entry.c:1370 msgid "Select" msgstr "" -#: src/lib/elm_entry.c:1361 +#: src/lib/elm_entry.c:1375 msgid "Paste" msgstr "" -#: src/lib/elm_entry.c:1366 src/lib/elm_entry.c:1386 +#: src/lib/elm_entry.c:1380 src/lib/elm_entry.c:1400 msgid "More" msgstr "" -#: src/lib/elm_entry.c:1376 +#: src/lib/elm_entry.c:1390 msgid "Copy" msgstr "" -#: src/lib/elm_entry.c:1379 +#: src/lib/elm_entry.c:1393 msgid "Cut" msgstr "" -#: src/lib/elm_searchbar.c:214 +#: src/lib/elm_searchbar.c:199 msgid "Search" msgstr "" diff --git a/po/en_US.po b/po/en_US.po index 0cc428c..6c1b53d 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-21 18:14+0900\n" +"POT-Creation-Date: 2011-11-28 17:27+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:1382 -#: src/lib/elm_searchbar.c:226 +#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1396 +#: src/lib/elm_searchbar.c:211 msgid "Cancel" msgstr "" @@ -78,27 +78,27 @@ msgstr "AM" msgid "DateTimeFormat" msgstr "%b %d, %Y %I : %M %p" -#: src/lib/elm_entry.c:1356 +#: src/lib/elm_entry.c:1370 msgid "Select" msgstr "" -#: src/lib/elm_entry.c:1361 +#: src/lib/elm_entry.c:1375 msgid "Paste" msgstr "" -#: src/lib/elm_entry.c:1366 src/lib/elm_entry.c:1386 +#: src/lib/elm_entry.c:1380 src/lib/elm_entry.c:1400 msgid "More" msgstr "" -#: src/lib/elm_entry.c:1376 +#: src/lib/elm_entry.c:1390 msgid "Copy" msgstr "" -#: src/lib/elm_entry.c:1379 +#: src/lib/elm_entry.c:1393 msgid "Cut" msgstr "" -#: src/lib/elm_searchbar.c:214 +#: src/lib/elm_searchbar.c:199 msgid "Search" msgstr "" diff --git a/po/es_ES.po b/po/es_ES.po index a994161..e379921 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-21 18:14+0900\n" +"POT-Creation-Date: 2011-11-28 17:27+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:1382 -#: src/lib/elm_searchbar.c:226 +#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1396 +#: src/lib/elm_searchbar.c:211 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:1356 +#: src/lib/elm_entry.c:1370 msgid "Select" msgstr "" -#: src/lib/elm_entry.c:1361 +#: src/lib/elm_entry.c:1375 msgid "Paste" msgstr "" -#: src/lib/elm_entry.c:1366 src/lib/elm_entry.c:1386 +#: src/lib/elm_entry.c:1380 src/lib/elm_entry.c:1400 msgid "More" msgstr "" -#: src/lib/elm_entry.c:1376 +#: src/lib/elm_entry.c:1390 msgid "Copy" msgstr "" -#: src/lib/elm_entry.c:1379 +#: src/lib/elm_entry.c:1393 msgid "Cut" msgstr "" -#: src/lib/elm_searchbar.c:214 +#: src/lib/elm_searchbar.c:199 msgid "Search" msgstr "" diff --git a/po/fa.po b/po/fa.po index 4cc4478..7954d9b 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-21 18:14+0900\n" +"POT-Creation-Date: 2011-11-28 17:27+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:1382 -#: src/lib/elm_searchbar.c:226 +#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1396 +#: src/lib/elm_searchbar.c:211 msgid "Cancel" msgstr "" @@ -77,27 +77,27 @@ msgstr "AM" msgid "DateTimeFormat" msgstr "%b %d, %Y %I : %M %p" -#: src/lib/elm_entry.c:1356 +#: src/lib/elm_entry.c:1370 msgid "Select" msgstr "" -#: src/lib/elm_entry.c:1361 +#: src/lib/elm_entry.c:1375 msgid "Paste" msgstr "" -#: src/lib/elm_entry.c:1366 src/lib/elm_entry.c:1386 +#: src/lib/elm_entry.c:1380 src/lib/elm_entry.c:1400 msgid "More" msgstr "" -#: src/lib/elm_entry.c:1376 +#: src/lib/elm_entry.c:1390 msgid "Copy" msgstr "" -#: src/lib/elm_entry.c:1379 +#: src/lib/elm_entry.c:1393 msgid "Cut" msgstr "" -#: src/lib/elm_searchbar.c:214 +#: src/lib/elm_searchbar.c:199 msgid "Search" msgstr "" diff --git a/po/fr.po b/po/fr.po index a534ad6..4c9900a 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-21 18:14+0900\n" +"POT-Creation-Date: 2011-11-28 17:27+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:1382 -#: src/lib/elm_searchbar.c:226 +#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1396 +#: src/lib/elm_searchbar.c:211 msgid "Cancel" msgstr "Annuler" @@ -79,27 +79,27 @@ msgstr "AM" msgid "DateTimeFormat" msgstr "%d %b %Y %H : %M" -#: src/lib/elm_entry.c:1356 +#: src/lib/elm_entry.c:1370 msgid "Select" msgstr "Sélectionner" -#: src/lib/elm_entry.c:1361 +#: src/lib/elm_entry.c:1375 msgid "Paste" msgstr "Coller" -#: src/lib/elm_entry.c:1366 src/lib/elm_entry.c:1386 +#: src/lib/elm_entry.c:1380 src/lib/elm_entry.c:1400 msgid "More" msgstr "" -#: src/lib/elm_entry.c:1376 +#: src/lib/elm_entry.c:1390 msgid "Copy" msgstr "Copier" -#: src/lib/elm_entry.c:1379 +#: src/lib/elm_entry.c:1393 msgid "Cut" msgstr "Couper" -#: src/lib/elm_searchbar.c:214 +#: src/lib/elm_searchbar.c:199 msgid "Search" msgstr "Rechercher" diff --git a/po/he.po b/po/he.po index 44f1947..9d491ea 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-21 18:14+0900\n" +"POT-Creation-Date: 2011-11-28 17:27+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:1382 -#: src/lib/elm_searchbar.c:226 +#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1396 +#: src/lib/elm_searchbar.c:211 msgid "Cancel" msgstr "בטל" @@ -77,27 +77,27 @@ msgstr "AM" msgid "DateTimeFormat" msgstr "%b %d, %Y %I : %M %p" -#: src/lib/elm_entry.c:1356 +#: src/lib/elm_entry.c:1370 msgid "Select" msgstr "התחל בחירה" -#: src/lib/elm_entry.c:1361 +#: src/lib/elm_entry.c:1375 msgid "Paste" msgstr "הדבק" -#: src/lib/elm_entry.c:1366 src/lib/elm_entry.c:1386 +#: src/lib/elm_entry.c:1380 src/lib/elm_entry.c:1400 msgid "More" msgstr "" -#: src/lib/elm_entry.c:1376 +#: src/lib/elm_entry.c:1390 msgid "Copy" msgstr "העתק" -#: src/lib/elm_entry.c:1379 +#: src/lib/elm_entry.c:1393 msgid "Cut" msgstr "גזור" -#: src/lib/elm_searchbar.c:214 +#: src/lib/elm_searchbar.c:199 msgid "Search" msgstr "לחפש" diff --git a/po/it.po b/po/it.po index 489865a..7fae7ff 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-21 18:14+0900\n" +"POT-Creation-Date: 2011-11-28 17:27+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:1382 -#: src/lib/elm_searchbar.c:226 +#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1396 +#: src/lib/elm_searchbar.c:211 msgid "Cancel" msgstr "Annulla" @@ -75,27 +75,27 @@ msgstr "m." msgid "DateTimeFormat" msgstr "%d %b %Y %H : %M" -#: src/lib/elm_entry.c:1356 +#: src/lib/elm_entry.c:1370 msgid "Select" msgstr "Seleziona" -#: src/lib/elm_entry.c:1361 +#: src/lib/elm_entry.c:1375 msgid "Paste" msgstr "Incolla" -#: src/lib/elm_entry.c:1366 src/lib/elm_entry.c:1386 +#: src/lib/elm_entry.c:1380 src/lib/elm_entry.c:1400 msgid "More" msgstr "" -#: src/lib/elm_entry.c:1376 +#: src/lib/elm_entry.c:1390 msgid "Copy" msgstr "Copia" -#: src/lib/elm_entry.c:1379 +#: src/lib/elm_entry.c:1393 msgid "Cut" msgstr "Taglio" -#: src/lib/elm_searchbar.c:214 +#: src/lib/elm_searchbar.c:199 msgid "Search" msgstr "Ricerca" diff --git a/po/ja_JP.po b/po/ja_JP.po index 990914e..75d580b 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-21 18:14+0900\n" +"POT-Creation-Date: 2011-11-28 17:27+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:1382 -#: src/lib/elm_searchbar.c:226 +#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1396 +#: src/lib/elm_searchbar.c:211 msgid "Cancel" msgstr "" @@ -79,27 +79,27 @@ msgstr "午前" msgid "DateTimeFormat" msgstr "%Y年 %m月 %d日 %H : %M" -#: src/lib/elm_entry.c:1356 +#: src/lib/elm_entry.c:1370 msgid "Select" msgstr "" -#: src/lib/elm_entry.c:1361 +#: src/lib/elm_entry.c:1375 msgid "Paste" msgstr "" -#: src/lib/elm_entry.c:1366 src/lib/elm_entry.c:1386 +#: src/lib/elm_entry.c:1380 src/lib/elm_entry.c:1400 msgid "More" msgstr "" -#: src/lib/elm_entry.c:1376 +#: src/lib/elm_entry.c:1390 msgid "Copy" msgstr "" -#: src/lib/elm_entry.c:1379 +#: src/lib/elm_entry.c:1393 msgid "Cut" msgstr "" -#: src/lib/elm_searchbar.c:214 +#: src/lib/elm_searchbar.c:199 msgid "Search" msgstr "" diff --git a/po/ko_KR.po b/po/ko_KR.po index d6d284f..0f438e6 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-21 18:14+0900\n" +"POT-Creation-Date: 2011-11-28 17:27+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:1382 -#: src/lib/elm_searchbar.c:226 +#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1396 +#: src/lib/elm_searchbar.c:211 msgid "Cancel" msgstr "취소" @@ -77,27 +77,27 @@ msgstr "오전" msgid "DateTimeFormat" msgstr "%Y년 %m월 %d일 %p %I : %M" -#: src/lib/elm_entry.c:1356 +#: src/lib/elm_entry.c:1370 msgid "Select" msgstr "선택" -#: src/lib/elm_entry.c:1361 +#: src/lib/elm_entry.c:1375 msgid "Paste" msgstr "붙여넣기" -#: src/lib/elm_entry.c:1366 src/lib/elm_entry.c:1386 +#: src/lib/elm_entry.c:1380 src/lib/elm_entry.c:1400 msgid "More" msgstr "" -#: src/lib/elm_entry.c:1376 +#: src/lib/elm_entry.c:1390 msgid "Copy" msgstr "복사" -#: src/lib/elm_entry.c:1379 +#: src/lib/elm_entry.c:1393 msgid "Cut" msgstr "잘라내기" -#: src/lib/elm_searchbar.c:214 +#: src/lib/elm_searchbar.c:199 msgid "Search" msgstr "검색" diff --git a/po/nl.po b/po/nl.po index 48e5edb..6fbfac7 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-21 18:14+0900\n" +"POT-Creation-Date: 2011-11-28 17:27+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:1382 -#: src/lib/elm_searchbar.c:226 +#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1396 +#: src/lib/elm_searchbar.c:211 msgid "Cancel" msgstr "Annuleren" @@ -81,27 +81,27 @@ msgstr "AM" msgid "DateTimeFormat" msgstr "%d %b %Y %H : %M" -#: src/lib/elm_entry.c:1356 +#: src/lib/elm_entry.c:1370 msgid "Select" msgstr "Selecteren" -#: src/lib/elm_entry.c:1361 +#: src/lib/elm_entry.c:1375 msgid "Paste" msgstr "Plakken" -#: src/lib/elm_entry.c:1366 src/lib/elm_entry.c:1386 +#: src/lib/elm_entry.c:1380 src/lib/elm_entry.c:1400 msgid "More" msgstr "" -#: src/lib/elm_entry.c:1376 +#: src/lib/elm_entry.c:1390 msgid "Copy" msgstr "Kopiëren" -#: src/lib/elm_entry.c:1379 +#: src/lib/elm_entry.c:1393 msgid "Cut" msgstr "Knippen" -#: src/lib/elm_searchbar.c:214 +#: src/lib/elm_searchbar.c:199 msgid "Search" msgstr "Zoeken" diff --git a/po/ps.po b/po/ps.po index 936a790..07d9648 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-21 18:14+0900\n" +"POT-Creation-Date: 2011-11-28 17:27+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:1382 -#: src/lib/elm_searchbar.c:226 +#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1396 +#: src/lib/elm_searchbar.c:211 msgid "Cancel" msgstr "" @@ -76,27 +76,27 @@ msgstr "AM" msgid "DateTimeFormat" msgstr "%b %d, %Y %I : %M %p" -#: src/lib/elm_entry.c:1356 +#: src/lib/elm_entry.c:1370 msgid "Select" msgstr "" -#: src/lib/elm_entry.c:1361 +#: src/lib/elm_entry.c:1375 msgid "Paste" msgstr "" -#: src/lib/elm_entry.c:1366 src/lib/elm_entry.c:1386 +#: src/lib/elm_entry.c:1380 src/lib/elm_entry.c:1400 msgid "More" msgstr "" -#: src/lib/elm_entry.c:1376 +#: src/lib/elm_entry.c:1390 msgid "Copy" msgstr "" -#: src/lib/elm_entry.c:1379 +#: src/lib/elm_entry.c:1393 msgid "Cut" msgstr "" -#: src/lib/elm_searchbar.c:214 +#: src/lib/elm_searchbar.c:199 msgid "Search" msgstr "" diff --git a/po/pt.po b/po/pt.po index b07f59c..478e15e 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-21 18:14+0900\n" +"POT-Creation-Date: 2011-11-28 17:27+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:1382 -#: src/lib/elm_searchbar.c:226 +#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1396 +#: src/lib/elm_searchbar.c:211 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:1356 +#: src/lib/elm_entry.c:1370 msgid "Select" msgstr "Selecionar" -#: src/lib/elm_entry.c:1361 +#: src/lib/elm_entry.c:1375 msgid "Paste" msgstr "Colar" -#: src/lib/elm_entry.c:1366 src/lib/elm_entry.c:1386 +#: src/lib/elm_entry.c:1380 src/lib/elm_entry.c:1400 msgid "More" msgstr "" -#: src/lib/elm_entry.c:1376 +#: src/lib/elm_entry.c:1390 msgid "Copy" msgstr "Copiar" -#: src/lib/elm_entry.c:1379 +#: src/lib/elm_entry.c:1393 msgid "Cut" msgstr "Cortar" -#: src/lib/elm_searchbar.c:214 +#: src/lib/elm_searchbar.c:199 msgid "Search" msgstr "Búsqueda" diff --git a/po/ru_RU.po b/po/ru_RU.po index d21a1d6..c8091f9 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-21 18:14+0900\n" +"POT-Creation-Date: 2011-11-28 17:27+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:1382 -#: src/lib/elm_searchbar.c:226 +#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1396 +#: src/lib/elm_searchbar.c:211 msgid "Cancel" msgstr "" @@ -78,27 +78,27 @@ msgstr "AM" msgid "DateTimeFormat" msgstr "%d %b %Yг. %H : %M" -#: src/lib/elm_entry.c:1356 +#: src/lib/elm_entry.c:1370 msgid "Select" msgstr "" -#: src/lib/elm_entry.c:1361 +#: src/lib/elm_entry.c:1375 msgid "Paste" msgstr "" -#: src/lib/elm_entry.c:1366 src/lib/elm_entry.c:1386 +#: src/lib/elm_entry.c:1380 src/lib/elm_entry.c:1400 msgid "More" msgstr "" -#: src/lib/elm_entry.c:1376 +#: src/lib/elm_entry.c:1390 msgid "Copy" msgstr "" -#: src/lib/elm_entry.c:1379 +#: src/lib/elm_entry.c:1393 msgid "Cut" msgstr "" -#: src/lib/elm_searchbar.c:214 +#: src/lib/elm_searchbar.c:199 msgid "Search" msgstr "" diff --git a/po/tr_TR.po b/po/tr_TR.po index efc8ff2..763b071 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-21 18:14+0900\n" +"POT-Creation-Date: 2011-11-28 17:27+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:1382 -#: src/lib/elm_searchbar.c:226 +#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1396 +#: src/lib/elm_searchbar.c:211 msgid "Cancel" msgstr "" @@ -78,27 +78,27 @@ msgstr "AM" msgid "DateTimeFormat" msgstr "%d %b %Y %H : %M" -#: src/lib/elm_entry.c:1356 +#: src/lib/elm_entry.c:1370 msgid "Select" msgstr "" -#: src/lib/elm_entry.c:1361 +#: src/lib/elm_entry.c:1375 msgid "Paste" msgstr "" -#: src/lib/elm_entry.c:1366 src/lib/elm_entry.c:1386 +#: src/lib/elm_entry.c:1380 src/lib/elm_entry.c:1400 msgid "More" msgstr "" -#: src/lib/elm_entry.c:1376 +#: src/lib/elm_entry.c:1390 msgid "Copy" msgstr "" -#: src/lib/elm_entry.c:1379 +#: src/lib/elm_entry.c:1393 msgid "Cut" msgstr "" -#: src/lib/elm_searchbar.c:214 +#: src/lib/elm_searchbar.c:199 msgid "Search" msgstr "" diff --git a/po/ur.po b/po/ur.po index de1747a..ca58309 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-21 18:14+0900\n" +"POT-Creation-Date: 2011-11-28 17:27+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:1382 -#: src/lib/elm_searchbar.c:226 +#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1396 +#: src/lib/elm_searchbar.c:211 msgid "Cancel" msgstr "" @@ -76,27 +76,27 @@ msgstr "AM" msgid "DateTimeFormat" msgstr "%b %d, %Y %I : %M %p" -#: src/lib/elm_entry.c:1356 +#: src/lib/elm_entry.c:1370 msgid "Select" msgstr "" -#: src/lib/elm_entry.c:1361 +#: src/lib/elm_entry.c:1375 msgid "Paste" msgstr "" -#: src/lib/elm_entry.c:1366 src/lib/elm_entry.c:1386 +#: src/lib/elm_entry.c:1380 src/lib/elm_entry.c:1400 msgid "More" msgstr "" -#: src/lib/elm_entry.c:1376 +#: src/lib/elm_entry.c:1390 msgid "Copy" msgstr "" -#: src/lib/elm_entry.c:1379 +#: src/lib/elm_entry.c:1393 msgid "Cut" msgstr "" -#: src/lib/elm_searchbar.c:214 +#: src/lib/elm_searchbar.c:199 msgid "Search" msgstr "" diff --git a/po/yi.po b/po/yi.po index 934bfc6..3554f7d 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-21 18:14+0900\n" +"POT-Creation-Date: 2011-11-28 17:27+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:1382 -#: src/lib/elm_searchbar.c:226 +#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1396 +#: src/lib/elm_searchbar.c:211 msgid "Cancel" msgstr "" @@ -76,27 +76,27 @@ msgstr "AM" msgid "DateTimeFormat" msgstr "%b %d, %Y %I : %M %p" -#: src/lib/elm_entry.c:1356 +#: src/lib/elm_entry.c:1370 msgid "Select" msgstr "" -#: src/lib/elm_entry.c:1361 +#: src/lib/elm_entry.c:1375 msgid "Paste" msgstr "" -#: src/lib/elm_entry.c:1366 src/lib/elm_entry.c:1386 +#: src/lib/elm_entry.c:1380 src/lib/elm_entry.c:1400 msgid "More" msgstr "" -#: src/lib/elm_entry.c:1376 +#: src/lib/elm_entry.c:1390 msgid "Copy" msgstr "" -#: src/lib/elm_entry.c:1379 +#: src/lib/elm_entry.c:1393 msgid "Cut" msgstr "" -#: src/lib/elm_searchbar.c:214 +#: src/lib/elm_searchbar.c:199 msgid "Search" msgstr "" diff --git a/po/zh_CN.po b/po/zh_CN.po index 2279dd3..91dcb73 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-21 18:14+0900\n" +"POT-Creation-Date: 2011-11-28 17:27+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:1382 -#: src/lib/elm_searchbar.c:226 +#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1396 +#: src/lib/elm_searchbar.c:211 msgid "Cancel" msgstr "" @@ -78,27 +78,27 @@ msgstr "上午" msgid "DateTimeFormat" msgstr "%Y年 %m月 %d日 %p %I : %M" -#: src/lib/elm_entry.c:1356 +#: src/lib/elm_entry.c:1370 msgid "Select" msgstr "" -#: src/lib/elm_entry.c:1361 +#: src/lib/elm_entry.c:1375 msgid "Paste" msgstr "" -#: src/lib/elm_entry.c:1366 src/lib/elm_entry.c:1386 +#: src/lib/elm_entry.c:1380 src/lib/elm_entry.c:1400 msgid "More" msgstr "" -#: src/lib/elm_entry.c:1376 +#: src/lib/elm_entry.c:1390 msgid "Copy" msgstr "" -#: src/lib/elm_entry.c:1379 +#: src/lib/elm_entry.c:1393 msgid "Cut" msgstr "" -#: src/lib/elm_searchbar.c:214 +#: src/lib/elm_searchbar.c:199 msgid "Search" msgstr "" diff --git a/po/zh_HK.po b/po/zh_HK.po index 2279dd3..91dcb73 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-21 18:14+0900\n" +"POT-Creation-Date: 2011-11-28 17:27+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:1382 -#: src/lib/elm_searchbar.c:226 +#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1396 +#: src/lib/elm_searchbar.c:211 msgid "Cancel" msgstr "" @@ -78,27 +78,27 @@ msgstr "上午" msgid "DateTimeFormat" msgstr "%Y年 %m月 %d日 %p %I : %M" -#: src/lib/elm_entry.c:1356 +#: src/lib/elm_entry.c:1370 msgid "Select" msgstr "" -#: src/lib/elm_entry.c:1361 +#: src/lib/elm_entry.c:1375 msgid "Paste" msgstr "" -#: src/lib/elm_entry.c:1366 src/lib/elm_entry.c:1386 +#: src/lib/elm_entry.c:1380 src/lib/elm_entry.c:1400 msgid "More" msgstr "" -#: src/lib/elm_entry.c:1376 +#: src/lib/elm_entry.c:1390 msgid "Copy" msgstr "" -#: src/lib/elm_entry.c:1379 +#: src/lib/elm_entry.c:1393 msgid "Cut" msgstr "" -#: src/lib/elm_searchbar.c:214 +#: src/lib/elm_searchbar.c:199 msgid "Search" msgstr "" diff --git a/po/zh_TW.po b/po/zh_TW.po index 2279dd3..91dcb73 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-21 18:14+0900\n" +"POT-Creation-Date: 2011-11-28 17:27+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:1382 -#: src/lib/elm_searchbar.c:226 +#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1396 +#: src/lib/elm_searchbar.c:211 msgid "Cancel" msgstr "" @@ -78,27 +78,27 @@ msgstr "上午" msgid "DateTimeFormat" msgstr "%Y年 %m月 %d日 %p %I : %M" -#: src/lib/elm_entry.c:1356 +#: src/lib/elm_entry.c:1370 msgid "Select" msgstr "" -#: src/lib/elm_entry.c:1361 +#: src/lib/elm_entry.c:1375 msgid "Paste" msgstr "" -#: src/lib/elm_entry.c:1366 src/lib/elm_entry.c:1386 +#: src/lib/elm_entry.c:1380 src/lib/elm_entry.c:1400 msgid "More" msgstr "" -#: src/lib/elm_entry.c:1376 +#: src/lib/elm_entry.c:1390 msgid "Copy" msgstr "" -#: src/lib/elm_entry.c:1379 +#: src/lib/elm_entry.c:1393 msgid "Cut" msgstr "" -#: src/lib/elm_searchbar.c:214 +#: src/lib/elm_searchbar.c:199 msgid "Search" msgstr "" diff --git a/src/bin/Makefile.am b/src/bin/Makefile.am index 7c65e75..db1d353 100644 --- a/src/bin/Makefile.am +++ b/src/bin/Makefile.am @@ -81,6 +81,7 @@ 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 6d06def..6f16372 100644 --- a/src/bin/test.c +++ b/src/bin/test.c @@ -39,6 +39,7 @@ 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); @@ -333,6 +334,7 @@ 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 c40b231..01189b5 100644 --- a/src/bin/test_ctxpopup.c +++ b/src/bin/test_ctxpopup.c @@ -4,11 +4,44 @@ #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_ctxpopup_item_label_get(event_info)); + elm_object_item_text_get(event_info)); } #define ITEM_NEW(_hov, _label, _icon) \ @@ -26,79 +59,99 @@ static void _list_item_cb(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__) { Evas_Object *ctxpopup, *ic; - Elm_Ctxpopup_Item *it; + Elm_Object_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_ctxpopup_item_disabled_set(it, EINA_TRUE); + elm_object_item_disabled_set(it, EINA_TRUE); ITEM_NEW(ctxpopup, "Edit entry", "edit"); ITEM_NEW(ctxpopup, "Set date and time", "clock"); - elm_ctxpopup_item_disabled_set(it, EINA_TRUE); + elm_object_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_Ctxpopup_Item *it; + Elm_Object_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_ctxpopup_item_disabled_set(it, EINA_TRUE); + elm_object_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_Ctxpopup_Item *it; + Elm_Object_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_ctxpopup_item_disabled_set(it, EINA_TRUE); + elm_object_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_Ctxpopup_Item *it; + Elm_Object_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"); @@ -112,6 +165,7 @@ _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); } @@ -139,11 +193,17 @@ _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); } @@ -168,6 +228,7 @@ 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 927806d..266c103 100644 --- a/src/bin/test_diskselector.c +++ b/src/bin/test_diskselector.c @@ -155,6 +155,7 @@ 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++) { @@ -172,6 +173,7 @@ 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 e9ae85e..5d3ac87 100644 --- a/src/bin/test_fileselector.c +++ b/src/bin/test_fileselector.c @@ -1,7 +1,18 @@ -#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, @@ -108,7 +119,6 @@ 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 @@ -138,9 +148,7 @@ 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 */ - path = getenv("HOME"); - if (!path) path = "./"; - elm_fileselector_path_set(fs, path); + elm_fileselector_path_set(fs, getenv("HOME")); /* 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 1371631..936be4b 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; +static Elm_Gengrid_Item_Class gic, ggic; static void _horizontal_grid(void *data, Evas_Object *obj, void *event_info __UNUSED__) @@ -244,6 +244,19 @@ _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; @@ -338,6 +351,12 @@ 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); @@ -362,4 +381,76 @@ 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 8822b63..b2ece1b 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_count, bt_num; + int i, bt_num; win = elm_win_add(NULL, "genlist-group", ELM_WIN_BASIC); elm_win_title_set(win, "Genlist Group"); @@ -1460,7 +1460,6 @@ 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)) @@ -1889,7 +1888,6 @@ 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"); @@ -1920,12 +1918,12 @@ test_genlist12(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_i for (i = 0; i < 1000; i++) { - 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 */); + 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 a7a938b..2c72a97 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 new file mode 100644 index 0000000..b8d5604 --- /dev/null +++ b/src/bin/test_multibuttonentry.c @@ -0,0 +1,232 @@ +#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 57d4664..4d53810 100644 --- a/src/bin/test_naviframe.c +++ b/src/bin/test_naviframe.c @@ -46,20 +46,32 @@ _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, *content, *nf = data; + Evas_Object *bt, *bt2, *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, - NULL, + bt2, content, NULL); @@ -92,12 +104,13 @@ _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_content_part_set(it, "icon", ic); + elm_object_item_part_content_set(it, "icon", ic); elm_naviframe_item_title_visible_set(it, EINA_FALSE); evas_object_smart_callback_add(content, "clicked", _title_visible, it); } @@ -132,7 +145,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_content_part_set(it, "icon", ic); + elm_object_item_part_content_set(it, "icon", ic); } void @@ -156,13 +169,14 @@ _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_text_part_set(it, "subtitle", "Here is sub-title part!"); + elm_object_item_part_text_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"); @@ -187,7 +201,8 @@ test_naviframe(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_i evas_object_show(btn); content = _content_new(nf, img1); - elm_naviframe_item_push(nf, "Page 1", NULL, btn, content, NULL); + it = elm_naviframe_item_push(nf, "Page 1", NULL, btn, content, NULL); + evas_object_data_set(nf, "page1", it); 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 dd42ff3..dcc7c58 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 *_icon_get(void *data, Evas_Object *obj, const char *source); +static Evas_Object *_content_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 * -_icon_get(void *data, Evas_Object *obj, const char *source) +_content_get(void *data, Evas_Object *obj, const char *source) { if (!strcmp(source, "elm.swallow.icon")) { @@ -89,22 +89,14 @@ _fill_list(Evas_Object *obj) struct dirent *de; Eina_List *dirs = NULL, *l; char *real; - const char *home; -#ifdef _WIN32 - home = evil_homedir_get(); -#else - home = getenv("HOME"); -#endif - if (!home) - home = "./"; - if (!(d = opendir(home))) return; + if (!(d = opendir(getenv("HOME")))) return; while ((de = readdir(d))) { char buff[PATH_MAX]; if (de->d_name[0] == '.') continue; - snprintf(buff, sizeof(buff), "%s/%s", home, de->d_name); + snprintf(buff, sizeof(buff), "%s/%s", getenv("HOME"), de->d_name); if (!ecore_file_is_dir(buff)) continue; real = ecore_file_realpath(buff); dirs = eina_list_append(dirs, real); @@ -207,7 +199,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 = _icon_get; + itc.func.icon_get = _content_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 32dfd47..aadf070 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 *it1, *it2, *it3, *it4, *it5; + Elm_Segment_Item *it; 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); - 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"); + 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"); segment2 = elm_segment_control_add(win); - 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"); + 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"); 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); - 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); + 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); 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); - 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_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"); 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 d5acd7d..e66743b 100644 --- a/src/bin/test_tooltip.c +++ b/src/bin/test_tooltip.c @@ -475,11 +475,17 @@ 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_text_set(li, "Something useful here?"); + elm_list_item_tooltip_content_cb_set(li, _tt_item_label, NULL, NULL); + elm_list_item_tooltip_size_restrict_disable(li, EINA_TRUE); 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 1eb490b..9520c2b 100644 --- a/src/edje_externals/Makefile.am +++ b/src/edje_externals/Makefile.am @@ -29,19 +29,21 @@ 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_calendar.c \ +elm_colorpalette.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 \ @@ -51,8 +53,6 @@ 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,7 +69,9 @@ elm_slideshow.c \ elm_spinner.c \ elm_thumb.c \ elm_toggle.c \ -elm_toolbar.c +elm_toolbar.c \ +elm_video.c \ +elm_web.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 7f5193a..185ec3b 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_DEL, _external_signal_proxy_free_cb, ctxt); + (obj, EVAS_CALLBACK_FREE, _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 4868294..ee43e07 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_bubble_content_set(obj, content); + elm_object_content_set(obj, content); return EINA_TRUE; } } @@ -137,8 +137,10 @@ 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__) { - ERR("No content."); - return NULL; + if (!strcmp(content, "content")) + return elm_object_content_get(obj); + ERR("unknown content '%s'", content); + return NULL; } static void diff --git a/src/edje_externals/elm_calendar.c b/src/edje_externals/elm_calendar.c index 98da9ca..c741956 100644 --- a/src/edje_externals/elm_calendar.c +++ b/src/edje_externals/elm_calendar.c @@ -13,7 +13,9 @@ 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; @@ -23,27 +25,28 @@ external_calendar_state_set(void *data __UNUSED__, Evas_Object *obj, const void 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; @@ -105,9 +108,10 @@ external_calendar_param_set(void *data __UNUSED__, Evas_Object *obj, const Edje_ } 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")) { @@ -165,7 +169,9 @@ external_calendar_param_get(void *data __UNUSED__, const Evas_Object *obj, Edje_ } 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; @@ -177,36 +183,38 @@ external_calendar_params_parse(void *data __UNUSED__, Evas_Object *obj __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 b1dabb5..1076b75 100644 --- a/src/edje_externals/elm_colorpalette.c +++ b/src/edje_externals/elm_colorpalette.c @@ -1,14 +1,11 @@ - - #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 @@ -18,10 +15,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 @@ -30,27 +27,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)); @@ -60,8 +57,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__) { - return EINA_FALSE; - //FIX ME:getter functions not provided + //FIXME:getter functions not provided + return EINA_FALSE; } static void * @@ -70,78 +67,79 @@ 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->color = (Elm_Colorpalette_Color*) calloc (mem->color_num, sizeof(Elm_Colorpalette_Color)); + 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)); 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 @@ -151,7 +149,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 05fcea1..7998f81 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 e93e121..3bd7eb5 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_mode; + const char *horizontal; 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_mode_choices[] = {"compress", "scroll", "limit", "expand", NULL}; +static const char* list_horizontal_choices[] = {"compress", "scroll", "limit", "expand", NULL}; static Elm_List_Mode -_list_horizontal_mode_setting_get(const char *horizontal_mode_str) +_list_horizontal_setting_get(const char *horizontal_str) { unsigned int i; - assert(sizeof(list_horizontal_mode_choices)/sizeof(list_horizontal_mode_choices[0]) == ELM_LIST_LAST + 1); + assert(sizeof(list_horizontal_choices)/sizeof(list_horizontal_choices[0]) == ELM_LIST_LAST + 1); for (i = 0; i < ELM_LIST_LAST; i++) { - if (!strcmp(horizontal_mode_str, list_horizontal_mode_choices[i])) + if (!strcmp(horizontal_str, list_horizontal_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_mode) + if (p->horizontal) { - Elm_List_Mode set = _list_horizontal_mode_setting_get(p->horizontal_mode); + Elm_List_Mode set = _list_horizontal_setting_get(p->horizontal); 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_mode_setting_get(param->s); + Elm_List_Mode set = _list_horizontal_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_mode_choices[list_horizontal_mode_set]; + param->s = list_horizontal_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_mode = eina_stringshare_add(param->s); + mem->horizontal = 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_mode) - eina_stringshare_del(mem->horizontal_mode); + if (mem->horizontal) + eina_stringshare_del(mem->horizontal); 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_mode_choices), + EDJE_EXTERNAL_PARAM_INFO_CHOICE_FULL("horizontal mode", "scroll", list_horizontal_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 deleted file mode 100644 index 16105b3..0000000 --- a/src/edje_externals/elm_navigationbar.c +++ /dev/null @@ -1,110 +0,0 @@ -#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 deleted file mode 100644 index 8aca09a..0000000 --- a/src/edje_externals/elm_navigationbar_ex.c +++ /dev/null @@ -1,93 +0,0 @@ -#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 2efffa5..bfcab50 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_toggle_state_set(obj, p->state); + elm_check_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_toggle_state_set(obj, param->i); + elm_check_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_toggle_state_get(obj); + param->i = elm_check_state_get(obj); return EINA_TRUE; } } @@ -194,4 +194,21 @@ 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 d6590ec..bf9c7c4 100644 --- a/src/edje_externals/modules.inc +++ b/src/edje_externals/modules.inc @@ -1,3 +1,4 @@ +DEFINE_TYPE(actionslider) DEFINE_TYPE(anchorblock) DEFINE_TYPE(anchorview) DEFINE_TYPE(bubble) @@ -11,18 +12,17 @@ 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,8 +34,10 @@ 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 deleted file mode 100644 index 04272ed..0000000 --- a/src/examples/animator_example_01.c +++ /dev/null @@ -1,108 +0,0 @@ -//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 b938634..52c713c 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_ctxpopup_item_label_get(event_info)); + printf("ctxpopup item selected: %s\n", elm_object_item_text_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_ctxpopup_item_disabled_set(it, EINA_TRUE); + elm_object_item_disabled_set(it, EINA_TRUE); item_new(ctxpopup, "Edit entry", "edit"); it = item_new(ctxpopup, "Set date and time", "clock"); - elm_ctxpopup_item_disabled_set(it, EINA_TRUE); + elm_object_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_ctxpopup_item_disabled_set(it, EINA_TRUE); + elm_object_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 cdea766..a6a8bc9 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_Flipselector_Item *it; + Elm_Object_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_Flipselector_Item *it; + Elm_Object_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_Flipselector_Item *it; + Elm_Object_Item *it; it = elm_flipselector_first_item_get(fs); fprintf(stdout, "Flip selector's first item is: %s\n", it ? - elm_flipselector_item_label_get(it) : "none"); + elm_object_item_text_get(it) : "none"); return; } if (strcmp(ev->keyname, "l") == 0) /* print last item's label */ { - Elm_Flipselector_Item *it; + Elm_Object_Item *it; it = elm_flipselector_last_item_get(fs); fprintf(stdout, "Flip selector's last item is: %s\n", it ? - elm_flipselector_item_label_get(it) : "none"); + elm_object_item_text_get(it) : "none"); return; } if (strcmp(ev->keyname, "s") == 0) /* print selected item's label */ { - Elm_Flipselector_Item *it; + Elm_Object_Item *it; it = elm_flipselector_selected_item_get(fs); fprintf(stdout, "Flip selector's selected item is: %s\n", it ? - elm_flipselector_item_label_get(it) : "none"); + elm_object_item_text_get(it) : "none"); return; } diff --git a/src/lib/Elementary.h.in b/src/lib/Elementary.h.in index 7d2f087..a59ec0f 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 (zmike) +@author Mike Blumenkrantz (discomfitor/zmike) @author Samsung Electronics @author Samsung SAIT @author Brett Nash @@ -284,13 +284,16 @@ 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 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 Please contact to get in contact with the developers and maintainers. @@ -368,7 +371,7 @@ contact with the developers and maintainers. #include #include #include -#include +@ELEMENTARY_ECORE_CON_INC@ #include #ifdef ELM_EDBUS @@ -421,6 +424,8 @@ 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" { @@ -599,7 +604,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); + 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. */ #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 */ @@ -1153,6 +1158,16 @@ 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 @@ -1172,12 +1187,25 @@ 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_content_part_set(Elm_Object_Item *it, const char *part, Evas_Object *content); + EAPI void elm_object_item_part_content_set(Elm_Object_Item *it, const char *part, Evas_Object *content); -#define elm_object_item_content_set(it, content) elm_object_item_content_part_set((it), NULL, (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 @@ -1187,12 +1215,37 @@ extern "C" { * @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_get(it) elm_object_item_content_part_get((it), NULL) + /** + * 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 + * + * @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) + + /** + * 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); /** * Unset a content of an object item @@ -1204,9 +1257,22 @@ extern "C" { * * @ingroup General */ - EAPI Evas_Object *elm_object_item_content_part_unset(Elm_Object_Item *it, const char *part); + 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) -#define elm_object_item_content_unset(it, content) elm_object_item_content_part_unset((it), (content)) + /** + * 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); /** * Set a label of an object item @@ -1219,9 +1285,9 @@ extern "C" { * * @ingroup General */ - EAPI void elm_object_item_text_part_set(Elm_Object_Item *it, const char *part, const char *label); + EAPI void elm_object_item_part_text_set(Elm_Object_Item *it, const char *part, const char *label); -#define elm_object_item_text_set(it, label) elm_object_item_text_part_set((it), NULL, (label)) +#define elm_object_item_text_set(it, label) elm_object_item_part_text_set((it), NULL, (label)) /** * Get a label of an object item @@ -1231,10 +1297,22 @@ 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_text_part_get(const Elm_Object_Item *it, const char *part); + EAPI const char *elm_object_item_part_text_get(const Elm_Object_Item *it, const char *part); /** * Set the text to read out when in accessibility mode @@ -1256,18 +1334,7 @@ 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_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); +#define elm_object_item_text_get(it) elm_object_item_part_text_get((it), NULL) /** * Set the text to read out when in accessibility mode @@ -1309,7 +1376,40 @@ 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); + 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); /** * @} @@ -2449,10 +2549,11 @@ extern "C" { * the one receiving input events. * * @see elm_object_focus_get() + * @deprecated use elm_object_focus_set() instead. * * @ingroup Focus */ - EAPI void elm_object_focus(Evas_Object *obj) EINA_ARG_NONNULL(1); + WILL_DEPRECATE EAPI void elm_object_focus(Evas_Object *obj) EINA_ARG_NONNULL(1); /** * Remove the focus from an Elementary object @@ -2463,10 +2564,11 @@ 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 */ - EAPI void elm_object_unfocus(Evas_Object *obj) EINA_ARG_NONNULL(1); + WILL_DEPRECATE EAPI void elm_object_unfocus(Evas_Object *obj) EINA_ARG_NONNULL(1); /** * Set the ability for an Element object to be focused @@ -2614,7 +2716,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. @@ -2627,7 +2729,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 @@ -4369,6 +4471,12 @@ 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. @@ -4731,7 +4839,7 @@ extern "C" { * @ingroup Bg */ - EAPI void elm_bg_overlay_set(Evas_Object *obj, Evas_Object *overlay) EINA_ARG_NONNULL(1); + WILL_DEPRECATE 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. @@ -4759,7 +4867,7 @@ extern "C" { * * @ingroup Bg */ - EAPI Evas_Object *elm_bg_overlay_unset(Evas_Object *obj) EINA_ARG_NONNULL(1); + WILL_DEPRECATE EAPI Evas_Object *elm_bg_overlay_unset(Evas_Object *obj) EINA_ARG_NONNULL(1); /** * Set the size of the pixmap representation of the image. @@ -4925,7 +5033,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. * @@ -6396,7 +6504,7 @@ extern "C" { * @param icon The icon object for the button * @deprecated use elm_object_part_content_set() instead. */ - EAPI void elm_button_icon_set(Evas_Object *obj, Evas_Object *icon) EINA_ARG_NONNULL(1); + WILL_DEPRECATE EAPI void elm_button_icon_set(Evas_Object *obj, Evas_Object *icon) EINA_ARG_NONNULL(1); /** * Get the icon used for the button * @@ -6409,7 +6517,7 @@ extern "C" { * * @deprecated use elm_object_part_content_get() instead */ - EAPI Evas_Object *elm_button_icon_get(const Evas_Object *obj) EINA_ARG_NONNULL(1); + WILL_DEPRECATE 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 * @@ -6422,7 +6530,7 @@ extern "C" { * @return The icon object that was being used * @deprecated use elm_object_part_content_unset() instead. */ - EAPI Evas_Object *elm_button_icon_unset(Evas_Object *obj) EINA_ARG_NONNULL(1); + WILL_DEPRECATE 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 * @@ -7237,7 +7345,7 @@ extern "C" { * elm_scroller_content_unset() function. * @deprecated use elm_object_content_set() instead */ - EAPI void elm_scroller_content_set(Evas_Object *obj, Evas_Object *child) EINA_ARG_NONNULL(1); + WILL_DEPRECATE EAPI void elm_scroller_content_set(Evas_Object *obj, Evas_Object *child) EINA_ARG_NONNULL(1); /** * @brief Get the content of the scroller widget * @@ -7249,7 +7357,7 @@ extern "C" { * @see elm_scroller_content_set() * @deprecated use elm_object_content_get() instead. */ - EAPI Evas_Object *elm_scroller_content_get(const Evas_Object *obj) EINA_ARG_NONNULL(1); + WILL_DEPRECATE EAPI Evas_Object *elm_scroller_content_get(const Evas_Object *obj) EINA_ARG_NONNULL(1); /** * @brief Unset the content of the scroller widget * @@ -7261,7 +7369,7 @@ extern "C" { * @see elm_scroller_content_set() * @deprecated use elm_object_content_unset() instead. */ - EAPI Evas_Object *elm_scroller_content_unset(Evas_Object *obj) EINA_ARG_NONNULL(1); + WILL_DEPRECATE EAPI Evas_Object *elm_scroller_content_unset(Evas_Object *obj) EINA_ARG_NONNULL(1); /** * @brief Set custom theme elements for the scroller * @@ -7570,7 +7678,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 themes for this widget: + * cut. Elementary provides several styles 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 @@ -7682,8 +7790,7 @@ extern "C" { * @param size font size * * @warning NEVER use this. It is for hyper-special cases only. use styles - * instead. e.g. "big", "medium", "small" - or better name them by use: - * "title", "footnote", "quote" etc. + * instead. e.g. "default", "marker", "slide_long" etc. */ EAPI void elm_label_fontsize_set(Evas_Object *obj, int fontsize) EINA_ARG_NONNULL(1); /** @@ -7696,8 +7803,7 @@ 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. "big", "medium", "small" - or better name them by use: - * "title", "footnote", "quote" etc. + * instead. e.g. "default", "marker", "slide_long" 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); /** @@ -7707,8 +7813,7 @@ 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. "big", "medium", "small" - or better name them by use: - * "title", "footnote", "quote" etc. + * instead. e.g. "default", "marker", "slide_long" etc. */ EAPI void elm_label_text_align_set(Evas_Object *obj, const char *alignmode) EINA_ARG_NONNULL(1); /** @@ -7721,8 +7826,7 @@ 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. "big", "medium", "small" - or better name them by use: - * "title", "footnote", "quote" etc. + * instead. e.g. "default", "marker", "slide_long" 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); /** @@ -7850,7 +7954,7 @@ extern "C" { * * @deprecated use elm_object_content_set() instead. */ - EAPI void elm_frame_content_set(Evas_Object *obj, Evas_Object *content) EINA_ARG_NONNULL(1); + WILL_DEPRECATE EAPI void elm_frame_content_set(Evas_Object *obj, Evas_Object *content) EINA_ARG_NONNULL(1); /** * @brief Get the content of the frame widget * @@ -7861,7 +7965,7 @@ extern "C" { * * @deprecated use elm_object_content_get() instead. */ - EAPI Evas_Object *elm_frame_content_get(const Evas_Object *obj) EINA_ARG_NONNULL(1); + WILL_DEPRECATE EAPI Evas_Object *elm_frame_content_get(const Evas_Object *obj) EINA_ARG_NONNULL(1); /** * @brief Unset the content of the frame widget * @@ -7872,7 +7976,7 @@ extern "C" { * * @deprecated use elm_object_content_unset() instead. */ - EAPI Evas_Object *elm_frame_content_unset(Evas_Object *obj) EINA_ARG_NONNULL(1); + WILL_DEPRECATE EAPI Evas_Object *elm_frame_content_unset(Evas_Object *obj) EINA_ARG_NONNULL(1); /** * @} */ @@ -8216,10 +8320,36 @@ 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. */ - 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. */ + /** + * 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); /* temporary compatibility code */ typedef Elm_Gengrid_Item_Label_Get_Cb GridItemLabelGetFunc EINA_DEPRECATED; @@ -8539,7 +8669,7 @@ extern "C" { * * @ingroup Gengrid */ - EAPI void elm_gengrid_always_select_mode_set(Evas_Object *obj, Eina_Bool always_select) EINA_ARG_NONNULL(1); + WILL_DEPRECATE 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 @@ -8554,7 +8684,7 @@ extern "C" { * * @ingroup Gengrid */ - EAPI Eina_Bool elm_gengrid_always_select_mode_get(const Evas_Object *obj) EINA_ARG_NONNULL(1); + WILL_DEPRECATE 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. @@ -8572,7 +8702,7 @@ extern "C" { * * @ingroup Gengrid */ - EAPI void elm_gengrid_no_select_mode_set(Evas_Object *obj, Eina_Bool no_select) EINA_ARG_NONNULL(1); + WILL_DEPRECATE 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 @@ -8586,7 +8716,7 @@ extern "C" { * * @ingroup Gengrid */ - EAPI Eina_Bool elm_gengrid_no_select_mode_get(const Evas_Object *obj) EINA_ARG_NONNULL(1); + WILL_DEPRECATE 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 @@ -8644,7 +8774,7 @@ extern "C" { * * @ingroup Gengrid */ - EAPI void elm_gengrid_bounce_set(Evas_Object *obj, Eina_Bool h_bounce, Eina_Bool v_bounce) EINA_ARG_NONNULL(1); + WILL_DEPRECATE 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 @@ -8660,7 +8790,7 @@ extern "C" { * * @ingroup Gengrid */ - EAPI void elm_gengrid_bounce_get(const Evas_Object *obj, Eina_Bool *h_bounce, Eina_Bool *v_bounce) EINA_ARG_NONNULL(1); + WILL_DEPRECATE 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 @@ -8694,7 +8824,7 @@ extern "C" { * * @ingroup Gengrid */ - EAPI void elm_gengrid_page_relative_set(Evas_Object *obj, double h_pagerel, double v_pagerel) EINA_ARG_NONNULL(1); + WILL_DEPRECATE 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 @@ -8710,7 +8840,7 @@ extern "C" { * * @ingroup Gengrid */ - EAPI void elm_gengrid_page_relative_get(const Evas_Object *obj, double *h_pagerel, double *v_pagerel) EINA_ARG_NONNULL(1); + WILL_DEPRECATE 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 @@ -8790,7 +8920,7 @@ extern "C" { * * @ingroup Gengrid */ - EAPI Elm_Gengrid_Item *elm_gengrid_first_item_get(const Evas_Object *obj) EINA_ARG_NONNULL(1); + WILL_DEPRECATE 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 @@ -8806,7 +8936,7 @@ extern "C" { * * @ingroup Gengrid */ - EAPI Elm_Gengrid_Item *elm_gengrid_last_item_get(const Evas_Object *obj) EINA_ARG_NONNULL(1); + WILL_DEPRECATE 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, @@ -8823,7 +8953,7 @@ extern "C" { * * @ingroup Gengrid */ - EAPI Elm_Gengrid_Item *elm_gengrid_item_next_get(const Elm_Gengrid_Item *item) EINA_ARG_NONNULL(1); + WILL_DEPRECATE 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, @@ -8840,7 +8970,7 @@ extern "C" { * * @ingroup Gengrid */ - EAPI Elm_Gengrid_Item *elm_gengrid_item_prev_get(const Elm_Gengrid_Item *item) EINA_ARG_NONNULL(1); + WILL_DEPRECATE 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 @@ -8853,7 +8983,7 @@ extern "C" { * * @ingroup Gengrid */ - EAPI Evas_Object *elm_gengrid_item_gengrid_get(const Elm_Gengrid_Item *item) EINA_ARG_NONNULL(1); + WILL_DEPRECATE 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. @@ -8974,7 +9104,7 @@ extern "C" { * * @ingroup Gengrid */ - EAPI void elm_gengrid_item_selected_set(Elm_Gengrid_Item *item, Eina_Bool selected) EINA_ARG_NONNULL(1); + WILL_DEPRECATE 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 @@ -8988,7 +9118,7 @@ extern "C" { * * @ingroup Gengrid */ - EAPI Eina_Bool elm_gengrid_item_selected_get(const Elm_Gengrid_Item *item) EINA_ARG_NONNULL(1); + WILL_DEPRECATE 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 @@ -9331,7 +9461,7 @@ extern "C" { * * @ingroup Gengrid */ - EAPI void elm_gengrid_clear(Evas_Object *obj) EINA_ARG_NONNULL(1); + WILL_DEPRECATE EAPI void elm_gengrid_clear(Evas_Object *obj) EINA_ARG_NONNULL(1); /** * Get the selected item in a given gengrid widget @@ -9713,7 +9843,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 controled by the description of the given part + * properties will be totally controlled 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 @@ -9741,12 +9871,12 @@ extern "C" { * itself). * * A similar effect for having a box with its position, size and other things - * controled by the Layout theme would be to create an Elementary @ref Box + * controlled 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 - * controled by the theme. This means, for example, that a signal could be + * controlled 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 @@ -9880,7 +10010,7 @@ extern "C" { * * @ingroup Layout */ - EAPI void elm_layout_content_set(Evas_Object *obj, const char *swallow, Evas_Object *content) EINA_ARG_NONNULL(1); + WILL_DEPRECATE 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. * @@ -9893,7 +10023,7 @@ extern "C" { * * @ingroup Layout */ - EAPI Evas_Object *elm_layout_content_get(const Evas_Object *obj, const char *swallow) EINA_ARG_NONNULL(1); + WILL_DEPRECATE EAPI Evas_Object *elm_layout_content_get(const Evas_Object *obj, const char *swallow) EINA_ARG_NONNULL(1); /** * Unset the layout content. * @@ -9907,7 +10037,7 @@ extern "C" { * * @ingroup Layout */ - EAPI Evas_Object *elm_layout_content_unset(Evas_Object *obj, const char *swallow) EINA_ARG_NONNULL(1); + WILL_DEPRECATE EAPI Evas_Object *elm_layout_content_unset(Evas_Object *obj, const char *swallow) EINA_ARG_NONNULL(1); /** * Set the text of the given part * @@ -10032,7 +10162,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 child of the given part box. + * Remove all children of the given part box. * * @param obj The layout object * @param part The box part name to remove child. @@ -10103,7 +10233,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 child of the given part table. + * Remove all the child objects of the given part table. * * @param obj The layout object * @param part The table part name to remove child. @@ -10275,8 +10405,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 - * or should also search on widget's theme as well + * @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) * * @return EINA_TRUE on success or EINA_FALSE on failure, that may be * part not exists or it did not had a cursor set. @@ -10299,7 +10429,7 @@ extern "C" { /** * @def elm_layout_icon_set - * Convienience macro to set the icon object in a layout that follows the + * Convenience macro to set the icon object in a layout that follows the * Elementary naming convention for its parts. * * @ingroup Layout @@ -10434,8 +10564,11 @@ 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 + * */ - EAPI void elm_notify_content_set(Evas_Object *obj, Evas_Object *content) EINA_ARG_NONNULL(1); + WILL_DEPRECATE EAPI void elm_notify_content_set(Evas_Object *obj, Evas_Object *content) EINA_ARG_NONNULL(1); /** * @brief Unset the content of the notify widget * @@ -10445,8 +10578,10 @@ 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 + * */ - EAPI Evas_Object *elm_notify_content_unset(Evas_Object *obj) EINA_ARG_NONNULL(1); + WILL_DEPRECATE EAPI Evas_Object *elm_notify_content_unset(Evas_Object *obj) EINA_ARG_NONNULL(1); /** * @brief Return the content of the notify widget * @@ -10454,8 +10589,10 @@ extern "C" { * @return The content that is being used * * @see elm_notify_content_set() + * @deprecated use elm_object_content_get() instead + * */ - EAPI Evas_Object *elm_notify_content_get(const Evas_Object *obj) EINA_ARG_NONNULL(1); + WILL_DEPRECATE EAPI Evas_Object *elm_notify_content_get(const Evas_Object *obj) EINA_ARG_NONNULL(1); /** * @brief Set the notify parent * @@ -10609,7 +10746,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. The hover + * @param target The object to center the hover onto. * * This function will cause the hover to be centered on the target object. */ @@ -10618,7 +10755,7 @@ extern "C" { * @brief Gets the target object for the hover. * * @param obj The hover object - * @param parent The object to locate the hover over. + * @return The target object for the hover. * * @see elm_hover_target_set() */ @@ -10662,9 +10799,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 dinamic special + * one desires only one hover content, but with a dynamic 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 @@ -10829,8 +10966,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 they - * are the previously mentioned options affect their sizes. In all cases, + * The next image shows different configurations of items and how + * 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. * @@ -11104,6 +11241,45 @@ 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 @@ -11531,6 +11707,47 @@ 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. * @@ -12398,8 +12615,11 @@ 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 + * */ - EAPI void elm_bubble_content_set(Evas_Object *obj, Evas_Object *content) EINA_ARG_NONNULL(1); + WILL_DEPRECATE EAPI void elm_bubble_content_set(Evas_Object *obj, Evas_Object *content) EINA_ARG_NONNULL(1); /** * Get the content shown in the bubble * @@ -12407,8 +12627,11 @@ extern "C" { * * @param obj The bubble object * @return The content that is being used + * + * @deprecated use elm_object_content_get() instead + * */ - EAPI Evas_Object *elm_bubble_content_get(const Evas_Object *obj) EINA_ARG_NONNULL(1); + WILL_DEPRECATE EAPI Evas_Object *elm_bubble_content_get(const Evas_Object *obj) EINA_ARG_NONNULL(1); /** * Unset the content shown in the bubble * @@ -12416,8 +12639,11 @@ extern "C" { * * @param obj The bubble object * @return The content that was being used + * + * @deprecated use elm_object_content_unset() instead + * */ - EAPI Evas_Object *elm_bubble_content_unset(Evas_Object *obj) EINA_ARG_NONNULL(1); + WILL_DEPRECATE EAPI Evas_Object *elm_bubble_content_unset(Evas_Object *obj) EINA_ARG_NONNULL(1); /** * Set the icon of the bubble * @@ -13350,7 +13576,7 @@ extern "C" { */ typedef enum _Elm_Web_Zoom_Mode { - ELM_WEB_ZOOM_MODE_MANUAL = 0, /**< Zoom controled normally by elm_web_zoom_set */ + ELM_WEB_ZOOM_MODE_MANUAL = 0, /**< Zoom controlled 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 @@ -16929,7 +17155,6 @@ 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. @@ -16942,6 +17167,7 @@ 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. @@ -17372,7 +17598,7 @@ extern "C" { * @ingroup Slider * @deprecated use elm_object_text_get() instead. */ - EAPI const char *elm_slider_label_get(const Evas_Object *obj) EINA_ARG_NONNULL(1); + WILL_DEPRECATE EAPI const char *elm_slider_label_get(const Evas_Object *obj) EINA_ARG_NONNULL(1); /** * Set the icon object of the slider object. @@ -17393,7 +17619,7 @@ extern "C" { * @ingroup Slider * @deprecated use elm_object_part_content_set() instead. */ - EAPI void elm_slider_icon_set(Evas_Object *obj, Evas_Object *icon) EINA_ARG_NONNULL(1); + WILL_DEPRECATE 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. @@ -17414,7 +17640,7 @@ extern "C" { * * @ingroup Slider */ - EAPI Evas_Object *elm_slider_icon_unset(Evas_Object *obj) EINA_ARG_NONNULL(1); + WILL_DEPRECATE EAPI Evas_Object *elm_slider_icon_unset(Evas_Object *obj) EINA_ARG_NONNULL(1); /** * Retrieve the icon object set for a given slider widget. @@ -17433,7 +17659,7 @@ extern "C" { * * @ingroup Slider */ - EAPI Evas_Object *elm_slider_icon_get(const Evas_Object *obj) EINA_ARG_NONNULL(1); + WILL_DEPRECATE EAPI Evas_Object *elm_slider_icon_get(const Evas_Object *obj) EINA_ARG_NONNULL(1); /** * Set the end object of the slider object. @@ -17455,7 +17681,7 @@ extern "C" { * * @ingroup Slider */ - EAPI void elm_slider_end_set(Evas_Object *obj, Evas_Object *end) EINA_ARG_NONNULL(1); + WILL_DEPRECATE 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. @@ -17478,7 +17704,7 @@ extern "C" { * * @ingroup Slider */ - EAPI Evas_Object *elm_slider_end_unset(Evas_Object *obj) EINA_ARG_NONNULL(1); + WILL_DEPRECATE EAPI Evas_Object *elm_slider_end_unset(Evas_Object *obj) EINA_ARG_NONNULL(1); /** * Retrieve the end object set for a given slider widget. @@ -17499,7 +17725,7 @@ extern "C" { * * @ingroup Slider */ - EAPI Evas_Object *elm_slider_end_get(const Evas_Object *obj) EINA_ARG_NONNULL(1); + WILL_DEPRECATE 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. @@ -18052,7 +18278,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_Icon_Get_Cb. + * #Elm_Genlist_Item_Content_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 @@ -18151,7 +18377,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 I none is selected. If the + * will return the selected item, if any, or NULL if 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)). @@ -18408,11 +18634,13 @@ 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 */ - EAPI void elm_genlist_clear(Evas_Object *obj) EINA_ARG_NONNULL(1); + WILL_DEPRECATE EAPI void elm_genlist_clear(Evas_Object *obj) EINA_ARG_NONNULL(1); /** * Enable or disable multi-selection in the genlist * @@ -18481,15 +18709,17 @@ 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_genlist_always_select_mode_set(). + * enable always select with elm_gen_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 */ - EAPI void elm_genlist_always_select_mode_set(Evas_Object *obj, Eina_Bool always_select) EINA_ARG_NONNULL(1); + WILL_DEPRECATE EAPI void elm_genlist_always_select_mode_set(Evas_Object *obj, Eina_Bool always_select) EINA_ARG_NONNULL(1); /** * Get the always select mode. * @@ -18501,7 +18731,7 @@ extern "C" { * * @ingroup Genlist */ - EAPI Eina_Bool elm_genlist_always_select_mode_get(const Evas_Object *obj) EINA_ARG_NONNULL(1); + WILL_DEPRECATE EAPI Eina_Bool elm_genlist_always_select_mode_get(const Evas_Object *obj) EINA_ARG_NONNULL(1); /** * Enable/disable the no select mode. * @@ -18516,7 +18746,7 @@ extern "C" { * * @ingroup Genlist */ - EAPI void elm_genlist_no_select_mode_set(Evas_Object *obj, Eina_Bool no_select) EINA_ARG_NONNULL(1); + WILL_DEPRECATE 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. * @@ -18528,7 +18758,7 @@ extern "C" { * * @ingroup Genlist */ - EAPI Eina_Bool elm_genlist_no_select_mode_get(const Evas_Object *obj) EINA_ARG_NONNULL(1); + WILL_DEPRECATE EAPI Eina_Bool elm_genlist_no_select_mode_get(const Evas_Object *obj) EINA_ARG_NONNULL(1); /** * Enable/disable compress mode. * @@ -18610,7 +18840,7 @@ extern "C" { * * @ingroup Genlist */ - EAPI void elm_genlist_bounce_set(Evas_Object *obj, Eina_Bool h_bounce, Eina_Bool v_bounce) EINA_ARG_NONNULL(1); + WILL_DEPRECATE 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. * @@ -18624,7 +18854,7 @@ extern "C" { * * @ingroup Genlist */ - EAPI void elm_genlist_bounce_get(const Evas_Object *obj, Eina_Bool *h_bounce, Eina_Bool *v_bounce) EINA_ARG_NONNULL(1); + WILL_DEPRECATE 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. * @@ -18942,7 +19172,7 @@ extern "C" { * * @ingroup Genlist */ - EAPI Elm_Genlist_Item *elm_genlist_first_item_get(const Evas_Object *obj) EINA_ARG_NONNULL(1); + WILL_DEPRECATE EAPI Elm_Genlist_Item *elm_genlist_first_item_get(const Evas_Object *obj) EINA_ARG_NONNULL(1); /** * Get the last item in the genlist * @@ -18952,7 +19182,7 @@ extern "C" { * * @ingroup Genlist */ - EAPI Elm_Genlist_Item *elm_genlist_last_item_get(const Evas_Object *obj) EINA_ARG_NONNULL(1); + WILL_DEPRECATE EAPI Elm_Genlist_Item *elm_genlist_last_item_get(const Evas_Object *obj) EINA_ARG_NONNULL(1); /** * Set the scrollbar policy * @@ -19000,7 +19230,7 @@ extern "C" { * * @ingroup Genlist */ - EAPI Elm_Genlist_Item *elm_genlist_item_next_get(const Elm_Genlist_Item *item) EINA_ARG_NONNULL(1); + WILL_DEPRECATE 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. @@ -19016,7 +19246,7 @@ extern "C" { * * @ingroup Genlist */ - EAPI Elm_Genlist_Item *elm_genlist_item_prev_get(const Elm_Genlist_Item *item) EINA_ARG_NONNULL(1); + WILL_DEPRECATE 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 @@ -19026,9 +19256,11 @@ 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 */ - EAPI Evas_Object *elm_genlist_item_genlist_get(const Elm_Genlist_Item *item) EINA_ARG_NONNULL(1); + WILL_DEPRECATE 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 * @@ -19071,7 +19303,7 @@ extern "C" { * * @ingroup Genlist */ - EAPI void elm_genlist_item_selected_set(Elm_Genlist_Item *item, Eina_Bool selected) EINA_ARG_NONNULL(1); + WILL_DEPRECATE 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 * @@ -19082,7 +19314,7 @@ extern "C" { * * @ingroup Genlist */ - EAPI Eina_Bool elm_genlist_item_selected_get(const Elm_Genlist_Item *item) EINA_ARG_NONNULL(1); + WILL_DEPRECATE EAPI Eina_Bool elm_genlist_item_selected_get(const Elm_Genlist_Item *item) EINA_ARG_NONNULL(1); /** * Sets the expanded state of an item. * @@ -19345,7 +19577,7 @@ extern "C" { * @ingroup Genlist */ EAPI void elm_genlist_item_contents_orphan(Elm_Genlist_Item *it) EINA_ARG_NONNULL(1); - EAPI void elm_genlist_item_icons_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); /** * Get the real Evas object created to implement the view of a * given genlist item @@ -19496,6 +19728,26 @@ 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 * @@ -20015,7 +20267,7 @@ extern "C" { * @deprecated use elm_object_part_content_set() instead. * */ - EAPI void elm_radio_icon_set(Evas_Object *obj, Evas_Object *icon) EINA_ARG_NONNULL(1); + WILL_DEPRECATE 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 * @@ -20027,7 +20279,7 @@ extern "C" { * @deprecated use elm_object_part_content_get() instead. * */ - EAPI Evas_Object *elm_radio_icon_get(const Evas_Object *obj) EINA_ARG_NONNULL(1); + WILL_DEPRECATE EAPI Evas_Object *elm_radio_icon_get(const Evas_Object *obj) EINA_ARG_NONNULL(1); /** * @brief Unset the icon used for the radio object * @@ -20040,7 +20292,7 @@ extern "C" { * @deprecated use elm_object_part_content_unset() instead. * */ - EAPI Evas_Object *elm_radio_icon_unset(Evas_Object *obj) EINA_ARG_NONNULL(1); + WILL_DEPRECATE 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 * @@ -20114,37 +20366,47 @@ extern "C" { * @image html img/widget/pager/preview-00.png * @image latex img/widget/pager/preview-00.eps * - * @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 + * @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 * elm_pager_content_bottom_get() and elm_pager_content_top_get(). * * Signals that you can add callbacks for are: - * "hide,finished" - when the previous page is hided + * - @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(). * * This widget has the following styles available: - * @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. + * - @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. * * @ref tutorial_pager gives a good overview of the usage of the API. * @{ */ + /** * Add a new pager to the parent * @@ -20154,6 +20416,7 @@ 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). * @@ -20169,6 +20432,7 @@ 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 * @@ -20179,6 +20443,7 @@ 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. * @@ -20194,6 +20459,7 @@ 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 * @@ -20201,6 +20467,7 @@ 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 * @@ -21267,7 +21534,7 @@ extern "C" { * * @ingroup Progressbar */ - EAPI void elm_progressbar_icon_set(Evas_Object *obj, Evas_Object *icon) EINA_ARG_NONNULL(1); + WILL_DEPRECATE 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 @@ -21281,7 +21548,7 @@ extern "C" { * * @ingroup Progressbar */ - EAPI Evas_Object *elm_progressbar_icon_get(const Evas_Object *obj) EINA_ARG_NONNULL(1); + WILL_DEPRECATE 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 @@ -21298,7 +21565,7 @@ extern "C" { * * @ingroup Progressbar */ - EAPI Evas_Object *elm_progressbar_icon_unset(Evas_Object *obj) EINA_ARG_NONNULL(1); + WILL_DEPRECATE 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 @@ -22722,28 +22989,6 @@ 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. * @@ -23943,8 +24188,11 @@ 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 + * */ - EAPI void elm_panel_content_set(Evas_Object *obj, Evas_Object *content) EINA_ARG_NONNULL(1); + WILL_DEPRECATE EAPI void elm_panel_content_set(Evas_Object *obj, Evas_Object *content) EINA_ARG_NONNULL(1); /** * @brief Get the content of the panel. * @@ -23954,8 +24202,11 @@ extern "C" { * Return the content object which is set for this widget. * * @see elm_panel_content_set() + * + * @deprecated use elm_object_content_get() instead + * */ - EAPI Evas_Object *elm_panel_content_get(const Evas_Object *obj) EINA_ARG_NONNULL(1); + WILL_DEPRECATE EAPI Evas_Object *elm_panel_content_get(const Evas_Object *obj) EINA_ARG_NONNULL(1); /** * @brief Unset the content of the panel. * @@ -23965,8 +24216,11 @@ 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 + * */ - EAPI Evas_Object *elm_panel_content_unset(Evas_Object *obj) EINA_ARG_NONNULL(1); + WILL_DEPRECATE EAPI Evas_Object *elm_panel_content_unset(Evas_Object *obj) EINA_ARG_NONNULL(1); /** * @brief Set the state of the panel. * @@ -24154,7 +24408,7 @@ extern "C" { * * @ingroup Panes */ - EAPI Evas_Object *elm_panes_content_right_unset(Evas_Object *obj) EINA_ARG_NONNULL(1); + WILL_DEPRECATE 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. @@ -24638,9 +24892,11 @@ extern "C" { * @see elm_object_content_unset() * @see elm_object_content_get() * + * @deprecated use elm_object_content_set() instead + * * @ingroup Conformant */ - EAPI void elm_conformant_content_set(Evas_Object *obj, Evas_Object *content) EINA_ARG_NONNULL(1); + WILL_DEPRECATE EAPI void elm_conformant_content_set(Evas_Object *obj, Evas_Object *content) EINA_ARG_NONNULL(1); /** * Get the content of the conformant widget. @@ -24655,9 +24911,11 @@ extern "C" { * @see elm_object_content_set(). * @see elm_object_content_unset() * + * @deprecated use elm_object_content_get() instead + * * @ingroup Conformant */ - EAPI Evas_Object *elm_conformant_content_get(const Evas_Object *obj) EINA_ARG_NONNULL(1); + WILL_DEPRECATE EAPI Evas_Object *elm_conformant_content_get(const Evas_Object *obj) EINA_ARG_NONNULL(1); /** * Unset the content of the conformant widget. @@ -24669,9 +24927,11 @@ extern "C" { * * @see elm_object_content_set(). * + * @deprecated use elm_object_content_unset() instead + * * @ingroup Conformant */ - EAPI Evas_Object *elm_conformant_content_unset(Evas_Object *obj) EINA_ARG_NONNULL(1); + EINA_DEPRECATED EAPI Evas_Object *elm_conformant_content_unset(Evas_Object *obj) EINA_ARG_NONNULL(1); /** * Returns the Evas_Object that represents the content area. @@ -24740,9 +25000,11 @@ extern "C" { * * To enable map, elm_mapbuf_enabled_set() should be used. * + * @deprecated use elm_object_content_set() instead + * * @ingroup Mapbuf */ - EAPI void elm_mapbuf_content_set(Evas_Object *obj, Evas_Object *content) EINA_ARG_NONNULL(1); + WILL_DEPRECATE EAPI void elm_mapbuf_content_set(Evas_Object *obj, Evas_Object *content) EINA_ARG_NONNULL(1); /** * Get the content of the mapbuf. @@ -24754,9 +25016,11 @@ extern "C" { * * @see elm_mapbuf_content_set() for details. * + * @deprecated use elm_object_content_get() instead + * * @ingroup Mapbuf */ - EAPI Evas_Object *elm_mapbuf_content_get(const Evas_Object *obj) EINA_ARG_NONNULL(1); + WILL_DEPRECATE EAPI Evas_Object *elm_mapbuf_content_get(const Evas_Object *obj) EINA_ARG_NONNULL(1); /** * Unset the content of the mapbuf. @@ -24768,9 +25032,11 @@ extern "C" { * * @see elm_mapbuf_content_set() for details. * + * @deprecated use elm_object_content_unset() instead + * * @ingroup Mapbuf */ - EAPI Evas_Object *elm_mapbuf_content_unset(Evas_Object *obj) EINA_ARG_NONNULL(1); + WILL_DEPRECATE EAPI Evas_Object *elm_mapbuf_content_unset(Evas_Object *obj) EINA_ARG_NONNULL(1); /** * Enable or disable the map. @@ -24916,8 +25182,6 @@ 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 @@ -24982,7 +25246,7 @@ extern "C" { * * @ingroup Flipselector */ - EAPI Elm_Flipselector_Item *elm_flipselector_item_append(Evas_Object *obj, const char *label, Evas_Smart_Cb func, void *data) EINA_ARG_NONNULL(1); + EAPI Elm_Object_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 @@ -25008,19 +25272,19 @@ extern "C" { * * @ingroup Flipselector */ - EAPI Elm_Flipselector_Item *elm_flipselector_item_prepend(Evas_Object *obj, const char *label, Evas_Smart_Cb func, void *data) EINA_ARG_NONNULL(1); + EAPI Elm_Object_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_Flipselector_Item as data) or + * @return The list of items (#Elm_Object_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_flipselector_item_label_set(), - * elm_flipselector_item_label_get(), + * elm_object_item_text_set(), + * elm_object_item_text_get(), * elm_flipselector_item_del(), * elm_flipselector_item_selected_get(), * elm_flipselector_item_selected_set(). @@ -25046,7 +25310,7 @@ extern "C" { * * @ingroup Flipselector */ - EAPI Elm_Flipselector_Item *elm_flipselector_first_item_get(const Evas_Object *obj) EINA_ARG_NONNULL(1); + EAPI Elm_Object_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 @@ -25061,7 +25325,7 @@ extern "C" { * * @ingroup Flipselector */ - EAPI Elm_Flipselector_Item *elm_flipselector_last_item_get(const Evas_Object *obj) EINA_ARG_NONNULL(1); + EAPI Elm_Object_Item *elm_flipselector_last_item_get(const Evas_Object *obj) EINA_ARG_NONNULL(1); /** * Get the currently selected item in a flip selector widget. @@ -25072,13 +25336,13 @@ extern "C" { * * @ingroup Flipselector */ - EAPI Elm_Flipselector_Item *elm_flipselector_selected_item_get(const Evas_Object *obj) EINA_ARG_NONNULL(1); + EAPI Elm_Object_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 item The flip selector item + * @param it 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 @@ -25091,13 +25355,13 @@ extern "C" { * * @ingroup Flipselector */ - EAPI void elm_flipselector_item_selected_set(Elm_Flipselector_Item *item, Eina_Bool selected) EINA_ARG_NONNULL(1); + EAPI void elm_flipselector_item_selected_set(Elm_Object_Item *it, Eina_Bool selected) EINA_ARG_NONNULL(1); /** * Get whether a given flip selector widget's item is the currently * selected one. * - * @param item The flip selector item + * @param it The flip selector item * @return @c EINA_TRUE, if it's selected, @c EINA_FALSE otherwise * (or on errors). * @@ -25105,46 +25369,48 @@ extern "C" { * * @ingroup Flipselector */ - EAPI Eina_Bool elm_flipselector_item_selected_get(const Elm_Flipselector_Item *item) EINA_ARG_NONNULL(1); + EAPI Eina_Bool elm_flipselector_item_selected_get(const Elm_Object_Item *it) EINA_ARG_NONNULL(1); /** * Delete a given item from a flip selector widget. * - * @param item The item to delete + * @param it The item to delete * * @ingroup Flipselector */ - EAPI void elm_flipselector_item_del(Elm_Flipselector_Item *item) EINA_ARG_NONNULL(1); + EAPI void elm_flipselector_item_del(Elm_Object_Item *it) EINA_ARG_NONNULL(1); /** * Get the label of a given flip selector widget's item. * - * @param item The item to get label from + * @param it The item to get label from * @return The text label of @p item or @c NULL, on errors * - * @see elm_flipselector_item_label_set() + * @see elm_object_item_text_set() * + * @deprecated see elm_object_item_text_get() instead * @ingroup Flipselector */ - EAPI const char *elm_flipselector_item_label_get(const Elm_Flipselector_Item *item) EINA_ARG_NONNULL(1); + EINA_DEPRECATED EAPI const char *elm_flipselector_item_label_get(const Elm_Object_Item *it) EINA_ARG_NONNULL(1); /** * Set the label of a given flip selector widget's item. * - * @param item The item to set label on + * @param it The item to set label on * @param label The text label string, in UTF-8 encoding * - * @see elm_flipselector_item_label_get() + * @see elm_object_item_text_get() * + * @deprecated see elm_object_item_text_set() instead * @ingroup Flipselector */ - EAPI void elm_flipselector_item_label_set(Elm_Flipselector_Item *item, const char *label) EINA_ARG_NONNULL(1); + EINA_DEPRECATED EAPI void elm_flipselector_item_label_set(Elm_Object_Item *it, const char *label) EINA_ARG_NONNULL(1); /** * Gets the item before @p item in a flip selector widget's * internal list of items. * - * @param item The item to fetch previous from + * @param it 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. @@ -25153,13 +25419,13 @@ extern "C" { * * @ingroup Flipselector */ - EAPI Elm_Flipselector_Item *elm_flipselector_item_prev_get(Elm_Flipselector_Item *item) EINA_ARG_NONNULL(1); + EAPI Elm_Object_Item *elm_flipselector_item_prev_get(Elm_Object_Item *it) EINA_ARG_NONNULL(1); /** * Gets the item after @p item in a flip selector widget's * internal list of items. * - * @param item The item to fetch next from + * @param it 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. @@ -25168,7 +25434,7 @@ extern "C" { * * @ingroup Flipselector */ - EAPI Elm_Flipselector_Item *elm_flipselector_item_next_get(Elm_Flipselector_Item *item) EINA_ARG_NONNULL(1); + EAPI Elm_Object_Item *elm_flipselector_item_next_get(Elm_Object_Item *it) EINA_ARG_NONNULL(1); /** * Set the interval on time updates for an user mouse button hold @@ -26554,6 +26820,12 @@ 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. * @{ */ @@ -26654,8 +26926,9 @@ 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 */ - EAPI void elm_ctxpopup_item_disabled_set(Elm_Object_Item *it, Eina_Bool disabled) EINA_ARG_NONNULL(1); + WILL_DEPRECATE 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. * @@ -26675,8 +26948,10 @@ extern "C" { * * @see elm_ctxpopup_item_append() * @see elm_ctxpopup_item_icon_set() + * + * @deprecated use elm_object_item_part_content_get() instead */ - EAPI Evas_Object *elm_ctxpopup_item_icon_get(const Elm_Object_Item *it) EINA_ARG_NONNULL(1); + WILL_DEPRECATE 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 * @@ -26688,8 +26963,11 @@ extern "C" { * dissapear from the first item. * * @see elm_ctxpopup_item_append() + * + * @deprecated use elm_object_item_part_content_set() instead + * */ - EAPI void elm_ctxpopup_item_icon_set(Elm_Object_Item *it, Evas_Object *icon) EINA_ARG_NONNULL(1); + WILL_DEPRECATE 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. * @@ -26699,15 +26977,19 @@ extern "C" { * * @see elm_ctxpopup_item_append() * @see elm_ctxpopup_item_label_set() + * + * @deprecated use elm_object_item_text_get() instead */ - EAPI const char *elm_ctxpopup_item_label_get(const Elm_Object_Item *it) EINA_ARG_NONNULL(1); + WILL_DEPRECATE 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 */ - EAPI void elm_ctxpopup_item_label_set(Elm_Object_Item *it, const char *label) EINA_ARG_NONNULL(1); + WILL_DEPRECATE 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. * @@ -26718,12 +27000,13 @@ 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 + * */ - EAPI void elm_ctxpopup_content_set(Evas_Object *obj, Evas_Object *content) EINA_ARG_NONNULL(1, 2); + WILL_DEPRECATE EAPI void elm_ctxpopup_content_set(Evas_Object *obj, Evas_Object *content) EINA_ARG_NONNULL(1, 2); /** * @brief Unset the ctxpopup content * @@ -26735,8 +27018,11 @@ extern "C" { * @deprecated use elm_object_content_unset() * * @see elm_ctxpopup_content_set() + * + * @deprecated use elm_object_content_unset() instead + * */ - EAPI Evas_Object *elm_ctxpopup_content_unset(Evas_Object *obj) EINA_ARG_NONNULL(1); + WILL_DEPRECATE EAPI Evas_Object *elm_ctxpopup_content_unset(Evas_Object *obj) EINA_ARG_NONNULL(1); /** * @brief Set the direction priority of a ctxpopup. * @@ -27705,18 +27991,95 @@ 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); - EAPI void elm_store_item_select_func_set(Elm_Store *st, Elm_Store_Item_Select_Cb func, const void *data) 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); @@ -27740,6 +28103,9 @@ 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 @@ -28540,84 +28906,6 @@ 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 @@ -28958,6 +29246,16 @@ 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" @@ -28981,55 +29279,398 @@ 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); + /** + * @} + */ - /* SearchBar */ + + /** + * @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 + */ 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); @@ -29043,45 +29684,13 @@ 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); - /* TickerNoti */ - typedef enum - { - ELM_TICKERNOTI_ORIENT_TOP = 0, - ELM_TICKERNOTI_ORIENT_BOTTOM, - ELM_TICKERNOTI_ORIENT_LAST - } Elm_Tickernoti_Orient; - - EAPI Evas_Object *elm_tickernoti_add (Evas_Object *parent); - EAPI void elm_tickernoti_orient_set (Evas_Object *obj, Elm_Tickernoti_Orient orient) EINA_ARG_NONNULL(1); - EAPI Elm_Tickernoti_Orient elm_tickernoti_orient_get (const Evas_Object *obj) EINA_ARG_NONNULL(1); - EAPI int elm_tickernoti_rotation_get (const Evas_Object *obj) EINA_ARG_NONNULL(1); - EAPI void elm_tickernoti_rotation_set (Evas_Object *obj, int angle) EINA_ARG_NONNULL(1); - 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 ####*/ - typedef enum - { - ELM_TICKERNOTI_DEFAULT, - ELM_TICKERNOTI_DETAILVIEW - } Elm_Tickernoti_Mode; - 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); - /* ############################################################################### */ - /* + /** + * @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(): * @@ -29099,23 +29708,254 @@ extern "C" { * @li "hide" - emitted when the tickernoti is completely hidden. In case of * any hide animation, this signal is emitted after the animation. */ - - /* colorpalette */ - typedef struct _Colorpalette_Color Elm_Colorpalette_Color; - - struct _Colorpalette_Color + typedef enum { - unsigned int r, g, b; - }; + ELM_TICKERNOTI_ORIENT_TOP = 0, + ELM_TICKERNOTI_ORIENT_BOTTOM, + ELM_TICKERNOTI_ORIENT_LAST + } Elm_Tickernoti_Orient; - EAPI Evas_Object *elm_colorpalette_add(Evas_Object *parent); - EAPI void elm_colorpalette_color_set(Evas_Object *obj, int color_num, Elm_Colorpalette_Color *color); - EAPI void elm_colorpalette_row_column_set(Evas_Object *obj, int row, int col); - /* smart callbacks called: - * "clicked" - when image clicked + /** + * Add a tickernoti object to @p parent + * + * @param parent The parent object + * + * @return The tickernoti object, or NULL upon failure */ - - /* editfield */ + 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 + * + * @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 + * + * @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 + * + * @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 + * + * @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); + /** + * @} + */ + + /** + * @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. + */ + 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); + + /** + * @} + */ + + /* editfield */ EAPI Evas_Object *elm_editfield_add(Evas_Object *parent); EAPI void elm_editfield_label_set(Evas_Object *obj, const char *label); EAPI const char *elm_editfield_label_get(Evas_Object *obj); @@ -29137,90 +29977,282 @@ extern "C" { */ - /* 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); + /** + * @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 + * @{ + */ - /* 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); - /* 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 */ + /** + * @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: + * default + */ 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); - 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. + /** + * Get item list from the stackedicon + * + * @param obj The stackedicon object + * @return The item list or NULL if it cannot be created */ - /* available styles: - * default + EAPI Eina_List *elm_stackedicon_item_list_get(Evas_Object *obj); + /** + * @} */ + /* dialoguegroup */ typedef struct _Dialogue_Item Dialogue_Item; @@ -29272,24 +30304,131 @@ 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); - /* Image Slider */ + /** + * @defgroup Imageslider Imageslider + * @ingroup Elementary + * @addtogroup Imageslider + * @{ + * + * By flicking images on the screen, + * you can see the images in specific path. + */ 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 378ce41..e3770d0 100644 --- a/src/lib/Makefile.am +++ b/src/lib/Makefile.am @@ -49,8 +49,7 @@ elc_fileselector.c \ elc_fileselector_entry.c \ elc_hoversel.c \ elc_naviframe.c \ -elc_navigationbar.c \ -elc_navigationbar_ex.c\ +elc_multibuttonentry.c \ elc_player.c \ elc_scrolled_entry.c \ elm_access.c \ @@ -99,7 +98,6 @@ elm_mapbuf.c \ elm_map.c \ elm_menu.c \ elm_module.c \ -elm_multibuttonentry.c \ elm_nocontents.c \ elm_notify.c \ elm_pagecontrol.c \ @@ -111,13 +109,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 \ @@ -142,7 +140,8 @@ els_pan.c \ els_pan.h \ els_scroller.c \ els_scroller.h \ -els_tooltip.c +els_tooltip.c \ +elu_ews_wm.c libelementary_la_CFLAGS = libelementary_la_LIBADD = \ diff --git a/src/lib/elc_ctxpopup.c b/src/lib/elc_ctxpopup.c index 95e84df..9ee79c3 100644 --- a/src/lib/elc_ctxpopup.c +++ b/src/lib/elc_ctxpopup.c @@ -12,7 +12,6 @@ struct _Elm_Ctxpopup_Item const char *label; Evas_Object *icon; Evas_Smart_Cb func; - Eina_Bool disabled:1; }; struct _Widget_Data @@ -81,7 +80,21 @@ 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 *item __UNUSED__); + 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); static void _bg_clicked_cb(void *data, Evas_Object *obj, const char *emission, const char *source); @@ -780,7 +793,7 @@ _theme_hook(Evas_Object *obj) if (item->label) edje_object_part_text_set(VIEW(item), "elm.text", item->label); - if (item->disabled) + if (elm_widget_item_disabled_get(item)) edje_object_signal_emit(VIEW(item), "elm,state,disabled", "elm"); /* @@ -893,6 +906,106 @@ _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__) { @@ -1041,7 +1154,7 @@ _item_select_cb(void *data, Evas_Object *obj __UNUSED__, Elm_Ctxpopup_Item *item = data; if (!item) return; - if (item->disabled) return; + if (elm_widget_item_disabled_get(item)) return; if (item->func) item->func((void*) item->base.data, WIDGET(item), data); @@ -1224,57 +1337,25 @@ elm_ctxpopup_add(Evas_Object *parent) EAPI Evas_Object * elm_ctxpopup_item_icon_get(const Elm_Object_Item *it) { - ELM_OBJ_ITEM_CHECK_OR_RETURN(it, NULL); - Elm_Ctxpopup_Item *ctxpopup_it = (Elm_Ctxpopup_Item *) it; - return ctxpopup_it->icon; + return _item_content_get_hook(it, "icon"); } EAPI void elm_ctxpopup_item_icon_set(Elm_Object_Item *it, Evas_Object *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)); - } + _item_content_set_hook(it, "icon", icon); } EAPI const char * elm_ctxpopup_item_label_get(const Elm_Object_Item *it) { - ELM_OBJ_ITEM_CHECK_OR_RETURN(it, NULL); - Elm_Ctxpopup_Item *ctxpopup_it = (Elm_Ctxpopup_Item *) it; - return ctxpopup_it->label; + return _item_text_get_hook(it, NULL); } EAPI void elm_ctxpopup_item_label_set(Elm_Object_Item *it, const char *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)); - } + _item_text_set_hook(it, NULL, label); } EAPI void @@ -1411,6 +1492,13 @@ 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)); @@ -1474,31 +1562,13 @@ elm_ctxpopup_item_del(Elm_Object_Item *it) EAPI void elm_ctxpopup_item_disabled_set(Elm_Object_Item *it, Eina_Bool 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; + elm_object_item_disabled_set(it, disabled); } EAPI Eina_Bool elm_ctxpopup_item_disabled_get(const Elm_Object_Item *it) { - ELM_OBJ_ITEM_CHECK_OR_RETURN(it, EINA_FALSE); - Elm_Ctxpopup_Item *ctxpopup_it = (Elm_Ctxpopup_Item *) it; - return ctxpopup_it->disabled; + return elm_object_item_disabled_get(it); } EAPI void diff --git a/src/lib/elm_multibuttonentry.c b/src/lib/elc_multibuttonentry.c similarity index 82% rename from src/lib/elm_multibuttonentry.c rename to src/lib/elc_multibuttonentry.c index b148899..0949492 100644 --- a/src/lib/elm_multibuttonentry.c +++ b/src/lib/elc_multibuttonentry.c @@ -1,77 +1,74 @@ #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 -{ - MULTIBUTONENTRY_POS_START, - MULTIBUTONENTRY_POS_END, - MULTIBUTONENTRY_POS_BEFORE, - MULTIBUTONENTRY_POS_AFTER, - MULTIBUTONENTRY_POS_NUM -} Multibuttonentry_Pos; + { + MULTIBUTTONENTRY_POS_START, + MULTIBUTTONENTRY_POS_END, + MULTIBUTTONENTRY_POS_BEFORE, + MULTIBUTTONENTRY_POS_AFTER, + MULTIBUTTONENTRY_POS_NUM + } Multibuttonentry_Pos; typedef enum _Multibuttonentry_Button_State -{ - 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; + { + 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; 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 *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; -}; +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; + }; static const char *widtype = NULL; static void _del_hook(Evas_Object *obj); @@ -84,23 +81,24 @@ 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); @@ -111,8 +109,8 @@ static void _del_hook(Evas_Object *obj) { Widget_Data *wd = elm_widget_data_get(obj); - if (!wd) return; + if (!wd) return; if (wd->items) { Elm_Multibuttonentry_Item *item; @@ -129,7 +127,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->rectForEnd) evas_object_del(wd->rectForEnd); + if (wd->rect_for_end) evas_object_del(wd->rect_for_end); } static void @@ -138,10 +136,11 @@ _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) @@ -192,11 +191,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); } @@ -205,11 +204,10 @@ 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; + 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); @@ -224,8 +222,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); @@ -240,6 +238,7 @@ _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); } @@ -249,8 +248,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; + 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); @@ -266,8 +265,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); @@ -296,8 +295,8 @@ static void _set_vis_guidetext(Evas_Object *obj) { Widget_Data *wd = elm_widget_data_get(obj); - if (!wd) return; + 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; @@ -317,10 +316,9 @@ _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(wd->entry); + elm_object_focus_set(wd->entry, EINA_TRUE); wd->view_state = MULTIBUTTONENTRY_VIEW_ENTRY; } - return; } static void @@ -329,15 +327,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 || !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->rectForEnd); + evas_object_hide(wd->rect_for_end); evas_object_hide(wd->end); wd->view_state = MULTIBUTTONENTRY_VIEW_NONE; } @@ -358,7 +356,6 @@ _contracted_state_set(Evas_Object *obj, int contracted) item->visible = EINA_FALSE; } } - // pack buttons only 1line w = wd->w_box; @@ -378,10 +375,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); */ } @@ -390,7 +387,7 @@ _contracted_state_set(Evas_Object *obj, int contracted) if (item) { int w_label_count = 0; - char buf[MAX_STR] = {0,}; + char buf[MAX_STR]; elm_box_pack_end(wd->box, item->button); evas_object_show(item->button); @@ -435,22 +432,23 @@ _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->rectForEnd) + if (!wd->rect_for_end) { Evas *e = evas_object_evas_get(obj); - wd->rectForEnd = evas_object_rectangle_add(e); - evas_object_color_set(wd->rectForEnd, 0, 0, 0, 0); + wd->rect_for_end = evas_object_rectangle_add(e); + evas_object_color_set(wd->rect_for_end, 0, 0, 0, 0); } - 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); + 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); elm_box_pack_end(wd->box, wd->end); evas_object_show(wd->end); @@ -477,7 +475,7 @@ _contracted_state_set(Evas_Object *obj, int contracted) } evas_object_hide(wd->end); - if (wd->rectForEnd) evas_object_hide(wd->rectForEnd); + if (wd->rect_for_end) evas_object_hide(wd->rect_for_end); // pack buttons only 1line @@ -538,8 +536,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 || !str) return; if (wd->label) { Evas_Coord width, height, sum_width = 0; @@ -558,6 +556,7 @@ _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); @@ -576,8 +575,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; @@ -595,20 +594,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) return; if (wd->current) item = eina_list_data_get(wd->current); if (item && item->button) { - switch(state) + switch (state) { - case MULTIBUTONENTRY_BUTTON_STATE_DEFAULT: + case MULTIBUTTONENTRY_BUTTON_STATE_DEFAULT: edje_object_signal_emit(item->button, "default", ""); wd->current = NULL; break; - case MULTIBUTONENTRY_BUTTON_STATE_SELECTED: + case MULTIBUTTONENTRY_BUTTON_STATE_SELECTED: edje_object_signal_emit(item->button, "focused", ""); evas_object_smart_callback_call(obj, "item,selected", item); break; @@ -626,10 +625,11 @@ _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, MULTIBUTONENTRY_BUTTON_STATE_DEFAULT); + _change_current_button_state(obj, MULTIBUTTONENTRY_BUTTON_STATE_DEFAULT); // change the current EINA_LIST_FOREACH(wd->items, l, item) @@ -640,10 +640,8 @@ _change_current_button(Evas_Object *obj, Evas_Object *btn) break; } } - - // chagne the state of current button to "focused" - _change_current_button_state(obj, MULTIBUTONENTRY_BUTTON_STATE_SELECTED); - + // change the state of current button to "focused" + _change_current_button_state(obj, MULTIBUTTONENTRY_BUTTON_STATE_SELECTED); } static void @@ -668,10 +666,9 @@ 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); } @@ -714,22 +711,22 @@ static void _select_button(Evas_Object *obj, Evas_Object *btn) { Widget_Data *wd = elm_widget_data_get(obj); - if (!wd) return; + if (!wd) return; if (btn) { _change_current_button(obj, btn); if (elm_widget_focus_get(obj)) { - elm_object_unfocus(wd->entry); + elm_object_focus_set(wd->entry, EINA_FALSE); evas_object_focus_set(btn, EINA_TRUE); } } else { - _change_current_button_state(obj, MULTIBUTONENTRY_BUTTON_STATE_DEFAULT); + _change_current_button_state(obj, MULTIBUTTONENTRY_BUTTON_STATE_DEFAULT); if (elm_widget_focus_get(obj)) - elm_object_focus(wd->entry); + elm_object_focus_set(wd->entry, EINA_TRUE); } } @@ -769,8 +766,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* @@ -800,7 +797,9 @@ _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); @@ -818,9 +817,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 MULTIBUTONENTRY_POS_START: + case MULTIBUTTONENTRY_POS_START: wd->items = eina_list_prepend(wd->items, item); if (wd->view_state == MULTIBUTTONENTRY_VIEW_CONTRACTED) { @@ -837,7 +836,7 @@ _add_button_item(Evas_Object *obj, const char *str, Multibuttonentry_Pos pos, co _set_vis_guidetext(obj); } break; - case MULTIBUTONENTRY_POS_END: + case MULTIBUTTONENTRY_POS_END: wd->items = eina_list_append(wd->items, item); if (wd->view_state == MULTIBUTTONENTRY_VIEW_CONTRACTED) { @@ -854,7 +853,7 @@ _add_button_item(Evas_Object *obj, const char *str, Multibuttonentry_Pos pos, co elm_box_pack_end(wd->box, btn); } break; - case MULTIBUTONENTRY_POS_BEFORE: + case MULTIBUTTONENTRY_POS_BEFORE: if (reference) wd->items = eina_list_prepend_relative(wd->items, item, reference); else @@ -880,7 +879,7 @@ _add_button_item(Evas_Object *obj, const char *str, Multibuttonentry_Pos pos, co } } break; - case MULTIBUTONENTRY_POS_AFTER: + case MULTIBUTTONENTRY_POS_AFTER: if (reference) wd->items = eina_list_append_relative(wd->items, item, reference); else @@ -910,6 +909,7 @@ _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, MULTIBUTONENTRY_POS_END, NULL, NULL); + _add_button_item(obj, str, MULTIBUTTONENTRY_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, MULTIBUTONENTRY_BUTTON_STATE_DEFAULT); - elm_object_focus(wd->entry); + _change_current_button_state(data, MULTIBUTTONENTRY_BUTTON_STATE_DEFAULT); + elm_object_focus_set(wd->entry, EINA_TRUE); } static void @@ -1010,12 +1010,13 @@ _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_unfocus(wd->entry); + elm_object_focus_set(wd->entry, EINA_FALSE); evas_object_focus_set(item->button, EINA_TRUE); } } @@ -1061,7 +1062,6 @@ _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,20 +1069,22 @@ static void _view_init(Evas_Object *obj) { Widget_Data *wd = elm_widget_data_get(obj); + if (!wd) return; if (!wd->box) { - if (! (wd->box = elm_box_add (obj))) return; + wd->box = elm_box_add (obj); + if (!wd->box) 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) { - if (!(wd->label = edje_object_add(evas_object_evas_get(obj)))) return; + wd->label = edje_object_add(evas_object_evas_get(obj)); + if (!wd->label) 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); @@ -1156,12 +1158,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; @@ -1197,7 +1199,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; @@ -1278,7 +1280,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; @@ -1315,14 +1317,6 @@ _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) { @@ -1346,13 +1340,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->rectForEnd = NULL; + wd->rect_for_end= NULL; wd->add_callback = NULL; wd->add_callback_data = NULL; @@ -1362,55 +1356,34 @@ 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); @@ -1418,242 +1391,139 @@ 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, MULTIBUTONENTRY_POS_START, NULL, data); + item = _add_button_item(obj, label, MULTIBUTTONENTRY_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, MULTIBUTONENTRY_POS_END, NULL, data); + item = _add_button_item(obj, label, MULTIBUTTONENTRY_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, MULTIBUTONENTRY_POS_BEFORE, before, data); + item = _add_button_item(obj, label, MULTIBUTTONENTRY_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, MULTIBUTONENTRY_POS_AFTER, after, data); + item = _add_button_item(obj, label, MULTIBUTTONENTRY_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) { @@ -1673,13 +1543,6 @@ 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) { @@ -1690,13 +1553,6 @@ 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) { @@ -1719,13 +1575,6 @@ 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) { @@ -1733,14 +1582,6 @@ 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) { @@ -1761,14 +1602,6 @@ 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) { @@ -1781,22 +1614,14 @@ 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) { @@ -1818,20 +1643,13 @@ 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); @@ -1847,14 +1665,6 @@ 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) { @@ -1862,14 +1672,6 @@ 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) { @@ -1877,15 +1679,6 @@ 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/elc_naviframe.c b/src/lib/elc_naviframe.c index 99d6f09..32c8cbd 100644 --- a/src/lib/elc_naviframe.c +++ b/src/lib/elc_naviframe.c @@ -670,14 +670,7 @@ _title_prev_btn_set(Elm_Naviframe_Item *it, evas_object_del(it->title_prev_btn); it->title_prev_btn = btn; - - if (!btn) - { - edje_object_signal_emit(VIEW(it), - "elm,state,prev_btn,hide", - "elm"); - return; - } + if (!btn) return; elm_widget_sub_object_add(WIDGET(it), btn); evas_object_event_callback_add(btn, @@ -700,14 +693,7 @@ _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) - { - edje_object_signal_emit(VIEW(it), - "elm,state,next_btn,hide", - "elm"); - return; - } + if (!btn) return; elm_widget_sub_object_add(WIDGET(it), btn); evas_object_event_callback_add(btn, @@ -729,14 +715,7 @@ _title_icon_set(Elm_Naviframe_Item *it, Evas_Object *icon) evas_object_del(it->icon); it->icon = icon; - - if (!icon) - { - edje_object_signal_emit(VIEW(it), - "elm,state,icon,hide", - "elm"); - return; - } + if (!icon) 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 deleted file mode 100644 index 8a33a0f..0000000 --- a/src/lib/elc_navigationbar.c +++ /dev/null @@ -1,1491 +0,0 @@ -#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 deleted file mode 100644 index 69b2b60..0000000 --- a/src/lib/elc_navigationbar_ex.c +++ /dev/null @@ -1,1211 +0,0 @@ -#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 9d90e43..89f8925 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 dd463e9..99d4157 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 b846eb8..395159f 100644 --- a/src/lib/elm_button.c +++ b/src/lib/elm_button.c @@ -518,6 +518,8 @@ 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 53765ea..77bef04 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 (strcmp(part, "icon")) return; + if (part && 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 (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; @@ -275,7 +275,7 @@ _content_unset_hook(Evas_Object *obj, const char *part) ELM_CHECK_WIDTYPE(obj, widtype) NULL; Widget_Data *wd; - if (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_cnp_helper.c b/src/lib/elm_cnp_helper.c index 59554ca..62c8198 100644 --- a/src/lib/elm_cnp_helper.c +++ b/src/lib/elm_cnp_helper.c @@ -1181,6 +1181,16 @@ _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 @@ -1532,7 +1542,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_textonly_get(entry)) + if (elm_entry_cnp_mode_get(entry) != ELM_CNP_MODE_MARKUP) { while (EINA_TRUE) { @@ -1600,7 +1610,8 @@ notify_handler_text(Cnp_Selection *sel, Ecore_X_Event_Selection_Notify *notify) { Elm_Selection_Data ddata; - str = strdup(data->data); + str = malloc(data->length); + memcpy(str, data->data, data->length); ddata.x = ddata.y = 0; ddata.format = ELM_SEL_FORMAT_TEXT; ddata.data = str; @@ -2152,7 +2163,7 @@ pasteimage_append(Paste_Image *pi, Evas_Object *entry) if (!pi) return EINA_FALSE; if (!entry) return EINA_FALSE; - if (elm_entry_cnp_textonly_get(entry)) return EINA_FALSE; + if (elm_entry_cnp_mode_get(entry) != ELM_CNP_MODE_MARKUP) return EINA_FALSE; pasteimage_provider_set(entry); diff --git a/src/lib/elm_colorpalette.c b/src/lib/elm_colorpalette.c index b1f417d..3294c5b 100644 --- a/src/lib/elm_colorpalette.c +++ b/src/lib/elm_colorpalette.c @@ -2,19 +2,6 @@ #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; @@ -233,14 +220,6 @@ _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; @@ -296,15 +275,6 @@ 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); @@ -330,15 +300,6 @@ 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 ca7ec0a..ebbfb64 100644 --- a/src/lib/elm_colorselector.c +++ b/src/lib/elm_colorselector.c @@ -406,7 +406,11 @@ _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->eg, wd->eb, wd->a); + 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); break; default: break; diff --git a/src/lib/elm_controlbar.c b/src/lib/elm_controlbar.c index 9148924..50b0351 100644 --- a/src/lib/elm_controlbar.c +++ b/src/lib/elm_controlbar.c @@ -1,11 +1,3 @@ -/** - * @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 @@ -99,7 +91,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); @@ -107,12 +99,6 @@ 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__) { @@ -125,7 +111,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_content_part_get(wd->edje, "bg_image"), NULL, NULL, &width, NULL); + evas_object_geometry_get(elm_object_part_content_get(wd->edje, "bg_image"), NULL, NULL, &width, NULL); evas_object_geometry_get(wd->edje, &x_, &y_, NULL, NULL); } @@ -141,7 +127,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_content_part_get(wd->edje, "bg_image"), NULL, NULL, &width, &height); + evas_object_geometry_get(elm_object_part_content_get(wd->edje, "bg_image"), NULL, NULL, &width, &height); evas_object_geometry_get(wd->edje, &x_, &y_, NULL, NULL); } @@ -262,9 +248,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) @@ -313,12 +299,6 @@ _sizing_eval(Evas_Object * obj) _controlbar_resize(obj, obj); } -///////////////////////////////////////////////////////////// -// -// animation function -// -///////////////////////////////////////////////////////////// - static Eina_Bool _move_evas_object(void *data) { @@ -413,12 +393,6 @@ _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) { @@ -430,12 +404,6 @@ _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) { @@ -446,7 +414,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; } @@ -706,7 +674,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 @@ -725,7 +693,7 @@ _select_box(Elm_Controlbar_Item * it) if (it->style == TABBAR) { - content = elm_object_content_part_unset(wd->edje, "elm.swallow.view"); + content = elm_object_part_content_unset(wd->edje, "elm.swallow.view"); if (content) evas_object_hide(content); EINA_LIST_FOREACH(wd->items, l, item){ @@ -752,7 +720,7 @@ _select_box(Elm_Controlbar_Item * it) evas_object_smart_callback_call(it->obj, "view,change,before", it); } - elm_object_content_part_set(wd->edje, "elm.swallow.view", it->view); + elm_object_part_content_set(wd->edje, "elm.swallow.view", it->view); } else if (it->style == TOOLBAR) { @@ -882,7 +850,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_content_part_set(obj, "item", *item); + elm_object_part_content_set(obj, "item", *item); if (it->text) elm_object_text_set(*item, it->text); @@ -987,9 +955,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) { @@ -1015,7 +983,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_content_part_set(it->base, "item", it->base_item); + elm_object_part_content_set(it->base, "item", it->base_item); evas_object_show(it->base); return it; } @@ -1040,8 +1008,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; @@ -1127,11 +1095,11 @@ _list_clicked(void *data, Evas_Object *obj, void *event_info __UNUSED__) if (item->style == TABBAR) { - content = elm_object_content_part_unset(wd->edje, "elm.swallow.view"); + content = elm_object_part_content_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_content_part_set(wd->edje, "elm.swallow.view", item->view); + elm_object_part_content_set(wd->edje, "elm.swallow.view", item->view); } if ((item->style == TOOLBAR) && (item->func)) @@ -1168,7 +1136,8 @@ _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; @@ -1191,7 +1160,8 @@ static void _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; @@ -1263,21 +1233,8 @@ _create_more_item(Widget_Data *wd, int style) return it; } -/////////////////////////////////////////////////////////////////// -// -// 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) +EAPI Evas_Object * +elm_controlbar_add(Evas_Object *parent) { if (parent == NULL) return NULL; Evas_Object * obj = NULL; @@ -1330,7 +1287,7 @@ EAPI Evas_Object * elm_controlbar_add(Evas_Object * parent) printf("Cannot load bg edj\n"); return NULL; } - elm_object_content_part_set(wd->edje, "bg_image", wd->bg); + elm_object_part_content_set(wd->edje, "bg_image", wd->bg); // initialization evas_object_event_callback_add(wd->edje, EVAS_CALLBACK_RESIZE, @@ -1342,7 +1299,7 @@ EAPI Evas_Object * elm_controlbar_add(Evas_Object * parent) evas_object_event_callback_add(wd->edje, EVAS_CALLBACK_HIDE, _controlbar_object_hide, obj); - bg = elm_object_content_part_get(wd->edje, "bg_image"); + bg = elm_object_part_content_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); @@ -1352,7 +1309,7 @@ EAPI Evas_Object * 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_content_part_set(wd->edje, "elm.swallow.items", wd->box); + elm_object_part_content_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); @@ -1364,23 +1321,9 @@ EAPI Evas_Object * elm_controlbar_add(Evas_Object * parent) return obj; } -/** - * 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) +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; @@ -1397,10 +1340,11 @@ EAPI Elm_Controlbar_Item * elm_controlbar_tab_item_append(Evas_Object * obj, _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)); @@ -1410,25 +1354,9 @@ EAPI Elm_Controlbar_Item * elm_controlbar_tab_item_append(Evas_Object * obj, return it; } -/** - * 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) +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; @@ -1441,18 +1369,20 @@ EAPI Elm_Controlbar_Item * elm_controlbar_tab_item_prepend(Evas_Object * 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)); @@ -1462,23 +1392,11 @@ EAPI Elm_Controlbar_Item * elm_controlbar_tab_item_prepend(Evas_Object * 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; @@ -1507,10 +1425,11 @@ 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)); @@ -1520,21 +1439,9 @@ 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) { @@ -1566,10 +1473,11 @@ 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)); @@ -1579,31 +1487,11 @@ elm_controlbar_tab_item_insert_after(Evas_Object * obj, return it; } -/** - * 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) +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; @@ -1615,49 +1503,29 @@ EAPI Elm_Controlbar_Item * elm_controlbar_tool_item_append(Evas_Object * 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; } -/** - * 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) +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; @@ -1670,45 +1538,32 @@ EAPI Elm_Controlbar_Item * elm_controlbar_tool_item_prepend(Evas_Object * 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; @@ -1738,37 +1593,23 @@ 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; @@ -1799,31 +1640,20 @@ 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; } -/** - * 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) +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; @@ -1838,21 +1668,9 @@ EAPI Elm_Controlbar_Item * elm_controlbar_object_item_append(Evas_Object * return it; } -/** - * 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) +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; @@ -1869,21 +1687,10 @@ EAPI Elm_Controlbar_Item * elm_controlbar_object_item_prepend(Evas_Object * 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; @@ -1899,26 +1706,15 @@ 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; @@ -1931,16 +1727,8 @@ 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; @@ -1948,21 +1736,14 @@ 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; @@ -2014,13 +1795,6 @@ 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) { @@ -2032,17 +1806,8 @@ 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; @@ -2067,31 +1832,15 @@ 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; @@ -2111,14 +1860,6 @@ 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) { @@ -2126,16 +1867,8 @@ elm_controlbar_item_label_get(const Elm_Controlbar_Item * it) return it->text; } -/** - * 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) +EAPI Elm_Controlbar_Item * +elm_controlbar_selected_item_get(const Evas_Object *obj) { ELM_CHECK_WIDTYPE(obj, widtype) NULL; const Eina_List *l; @@ -2151,15 +1884,8 @@ EAPI Elm_Controlbar_Item * elm_controlbar_selected_item_get(const Evas_Object * return NULL; } -/** - * 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) +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); @@ -2167,15 +1893,8 @@ EAPI Elm_Controlbar_Item * elm_controlbar_first_item_get(const Evas_Object * obj return eina_list_data_get(wd->items); } -/** - * 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) +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); @@ -2183,15 +1902,8 @@ EAPI Elm_Controlbar_Item * elm_controlbar_last_item_get(const Evas_Object * obj) return eina_list_data_get(eina_list_last(wd->items)); } -/** - * 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) +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); @@ -2199,16 +1911,8 @@ EAPI const Eina_List * elm_controlbar_items_get(const Evas_Object * obj) return wd->items; } -/** - * 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) +EAPI Elm_Controlbar_Item * +elm_controlbar_item_prev(Elm_Controlbar_Item *it) { if (!it) return NULL; const Eina_List *l; @@ -2229,16 +1933,8 @@ EAPI Elm_Controlbar_Item * elm_controlbar_item_prev(Elm_Controlbar_Item * return NULL; } -/** - * 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) +EAPI Elm_Controlbar_Item * +elm_controlbar_item_next(Elm_Controlbar_Item *it) { if (!it) return NULL; const Eina_List *l; @@ -2259,16 +1955,8 @@ EAPI Elm_Controlbar_Item * elm_controlbar_item_next(Elm_Controlbar_Item * 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; @@ -2279,16 +1967,8 @@ 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; @@ -2299,16 +1979,8 @@ 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; @@ -2321,30 +1993,14 @@ 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) { @@ -2355,14 +2011,6 @@ 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) { @@ -2371,14 +2019,6 @@ 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) { @@ -2388,9 +2028,9 @@ elm_controlbar_item_view_unset(Elm_Controlbar_Item *it) if (!wd) return NULL; Evas_Object *content; - if (it->view == elm_object_content_part_get(wd->edje, "elm.swallow.view")) + if (it->view == elm_object_part_content_get(wd->edje, "elm.swallow.view")) { - content = elm_object_content_part_unset(wd->edje, "elm.swallow.view"); + content = elm_object_part_content_unset(wd->edje, "elm.swallow.view"); if (content) evas_object_hide(content); } else @@ -2401,14 +2041,6 @@ 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) { @@ -2441,7 +2073,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_content_part_get(wd->edje, "elm.dragable.box"); + selected_box = elm_object_part_content_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"); @@ -2450,7 +2082,7 @@ elm_controlbar_mode_set(Evas_Object *obj, int mode) _sizing_eval(obj); return; case ELM_CONTROLBAR_MODE_RIGHT: - selected_box = elm_object_content_part_get(wd->edje, "elm.dragable.box"); + selected_box = elm_object_part_content_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"); @@ -2461,7 +2093,7 @@ elm_controlbar_mode_set(Evas_Object *obj, int mode) default: break; } - selected_box = elm_object_content_part_get(wd->edje, "elm.dragable.box"); + selected_box = elm_object_part_content_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"); @@ -2469,14 +2101,6 @@ 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) { @@ -2497,17 +2121,6 @@ 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) { @@ -2576,14 +2189,6 @@ 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) { @@ -2605,14 +2210,6 @@ 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 dd00c7e..66960c8 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_content_part_set(item->bg_layout, "swallow", item->content); + elm_object_part_content_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_content_part_set(item->bg_layout, "swallow", item->content); + elm_object_part_content_set(item->bg_layout, "swallow", item->content); return item; } diff --git a/src/lib/elm_diskselector.c b/src/lib/elm_diskselector.c index 453732d..cba3012 100644 --- a/src/lib/elm_diskselector.c +++ b/src/lib/elm_diskselector.c @@ -181,15 +181,6 @@ _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); @@ -1382,3 +1373,12 @@ 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 4a31e63..5ff10b7 100644 --- a/src/lib/elm_entry.c +++ b/src/lib/elm_entry.c @@ -82,7 +82,6 @@ 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; @@ -90,6 +89,7 @@ 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,7 +613,6 @@ _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; @@ -638,8 +637,12 @@ _elm_win_recalc_job(void *data) wd->deferred_recalc_job = NULL; evas_object_geometry_get(wd->ent, NULL, NULL, &resw, NULL); - edje_object_size_min_restricted_calc(wd->ent, &minw, &minh, resw, 0); + /* 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); elm_coords_finger_size_adjust(1, &fw, 1, &minh); wd->entmw = fw; wd->entmh = minh; @@ -686,7 +689,7 @@ _elm_win_recalc_job(void *data) } } - if ((wd->deferred_cur) && (elm_object_focus_get(data))) + if (wd->deferred_cur) { Evas_Coord cx, cy, cw, ch; edje_object_part_text_cursor_geometry_get(wd->ent, "elm.text", @@ -1073,7 +1076,6 @@ 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); @@ -1179,10 +1181,11 @@ _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 formats = ELM_SEL_FORMAT_MARKUP; wd->selection_asked = EINA_TRUE; - formats = ELM_SEL_FORMAT_MARKUP; - if (!wd->textonly) + 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_CLIPBOARD, formats, data, NULL, NULL); #endif @@ -1194,46 +1197,57 @@ _store_selection(Elm_Sel_Type seltype, Evas_Object *obj) { Widget_Data *wd = elm_widget_data_get(obj); const char *sel; - char *sel_str; + char *sel_str = NULL; + Elm_Sel_Format formats = ELM_SEL_FORMAT_MARKUP; if (!wd) return; sel = edje_object_part_text_selection_get(wd->ent, "elm.text"); - sel_str = strdup(sel); - if (!sel_str) - return; - if (wd->textonly) + if (wd->cnp_mode == ELM_CNP_MODE_PLAINTEXT) { - while (EINA_TRUE) + 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->cnp_mode == ELM_CNP_MODE_NO_IMAGE) { - 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) + while (EINA_TRUE) { - eina_strbuf_append(buf, sel_str); - eina_strbuf_remove(buf, sindex, eindex); - sel_str = eina_strbuf_string_steal(buf); - eina_strbuf_free(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); + } } } } - elm_selection_set(seltype, obj, ELM_SEL_FORMAT_MARKUP, sel_str); + elm_selection_set(seltype, obj, formats, sel_str); if (seltype == ELM_SEL_CLIPBOARD) - eina_stringshare_replace(&wd->cut_sel, sel_str); + eina_stringshare_replace(&wd->cut_sel, sel); free(sel_str); } @@ -1294,7 +1308,7 @@ _clipboard_menu(void *data, Evas_Object *obj, void *event_info __UNUSED__) #endif cnpwidgetdata = data; elm_cbhm_helper_init(obj); - if (elm_entry_cnp_textonly_get(obj)) + if (elm_entry_cnp_mode_get(obj) != ELM_CNP_MODE_MARKUP) elm_cbhm_send_raw_data("show0"); else elm_cbhm_send_raw_data("show1"); @@ -2447,8 +2461,14 @@ _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); - elm_selection_get(ELM_SEL_SECONDARY,ELM_SEL_FORMAT_MARKUP,data,NULL,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); } // end for cbhm @@ -2938,7 +2958,7 @@ elm_entry_add(Evas_Object *parent) wd->disabled = EINA_FALSE; wd->context_menu = EINA_TRUE; wd->autosave = EINA_TRUE; - wd->textonly = EINA_FALSE; + wd->cnp_mode = ELM_CNP_MODE_MARKUP; wd->autoperiod = EINA_TRUE; wd->ent = edje_object_add(e); @@ -3071,7 +3091,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->textonly = wd->textonly; + ext_mod->cnp_mode = wd->cnp_mode; } EAPI void @@ -3083,7 +3103,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_textonly_set(obj, EINA_TRUE); + elm_entry_cnp_mode_set(obj, ELM_CNP_MODE_NO_IMAGE); _theme_hook(obj); if (wd->scroller) { @@ -3197,7 +3217,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, @@ -3211,7 +3231,7 @@ if (0) { evas_textblock_cursor_free(cur); return !ret; -} + } char *str = elm_entry_markup_to_utf8(elm_entry_entry_get(obj)); if (!str) return EINA_TRUE; @@ -3222,6 +3242,27 @@ if (0) { 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) { @@ -3857,26 +3898,41 @@ 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; - textonly = !!textonly; - if (wd->textonly == textonly) return; - wd->textonly = !!textonly; - if (!textonly) format |= ELM_SEL_FORMAT_IMAGE; + 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; #ifdef HAVE_ELEMENTARY_X elm_drop_target_add(obj, format, _drag_drop_cb, NULL); #endif } -EAPI Eina_Bool -elm_entry_cnp_textonly_get(const Evas_Object *obj) +EAPI Elm_CNP_Mode +elm_entry_cnp_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->textonly; + return wd->cnp_mode; } EAPI void diff --git a/src/lib/elm_flipselector.c b/src/lib/elm_flipselector.c index ffbbc63..fa327b4 100644 --- a/src/lib/elm_flipselector.c +++ b/src/lib/elm_flipselector.c @@ -34,6 +34,7 @@ struct _Elm_Flipselector_Item }; typedef struct _Widget_Data Widget_Data; +typedef struct _Elm_Flipselector_Item Elm_Flipselector_Item; struct _Widget_Data { @@ -67,13 +68,70 @@ static const Evas_Smart_Cb_Description _signals[] = { {NULL, NULL} }; -#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 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); +} static Elm_Flipselector_Item * _item_new(Evas_Object *obj, const char *label, Evas_Smart_Cb func, const void *data) @@ -83,8 +141,11 @@ _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; + 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); len = strlen(label); if (len > wd->max_len) @@ -112,14 +173,12 @@ _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); @@ -132,8 +191,7 @@ _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)); @@ -170,8 +228,8 @@ _sentinel_eval(Widget_Data *wd) EINA_LIST_FOREACH(wd->items, l, it) { - if (strlen(elm_flipselector_item_label_get(it)) > - strlen(elm_flipselector_item_label_get(DATA_GET(wd->sentinel)))) + if (strlen(elm_object_item_text_get((Elm_Object_Item *) it)) > + strlen(elm_object_item_text_get(DATA_GET(wd->sentinel)))) wd->sentinel = l; } } @@ -189,14 +247,12 @@ _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); @@ -242,9 +298,7 @@ _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); } @@ -256,19 +310,15 @@ _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; @@ -280,10 +330,8 @@ _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; @@ -294,8 +342,7 @@ 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)) @@ -318,16 +365,13 @@ _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_flipselector_item_label_get(DATA_GET(wd->sentinel)); - + const char *label = elm_object_item_text_get(DATA_GET(wd->sentinel)); tmp = edje_object_part_text_get(wd->base, "top"); edje_object_part_text_set(wd->base, "top", label); } @@ -336,8 +380,7 @@ _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; @@ -353,17 +396,14 @@ _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); } @@ -373,8 +413,7 @@ _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); @@ -399,8 +438,7 @@ _flip_up(Widget_Data *wd) { Elm_Flipselector_Item *item; - if (!wd->current) - return; + if (!wd->current) return; if (wd->current == wd->items) { @@ -411,8 +449,7 @@ _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); } @@ -422,8 +459,7 @@ _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); @@ -446,13 +482,11 @@ 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); @@ -463,8 +497,7 @@ _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) @@ -474,8 +507,7 @@ _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); } @@ -485,8 +517,7 @@ _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); @@ -508,13 +539,11 @@ 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); @@ -524,11 +553,9 @@ 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; } @@ -589,8 +616,7 @@ 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); @@ -605,8 +631,7 @@ 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); @@ -615,7 +640,7 @@ elm_flipselector_flip_prev(Evas_Object *obj) _flipselector_unwalk(wd); } -EAPI Elm_Flipselector_Item * +EAPI Elm_Object_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; @@ -624,22 +649,21 @@ 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_flipselector_item_label_get(item)) > - strlen(elm_flipselector_item_label_get(DATA_GET(wd->sentinel))))) + (strlen(elm_object_item_text_get((Elm_Object_Item *) item)) > + strlen(elm_object_item_text_get(DATA_GET(wd->sentinel))))) { wd->sentinel = eina_list_last(wd->items); _sizing_eval(obj); @@ -648,10 +672,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 item; + return (Elm_Object_Item *) item; } -EAPI Elm_Flipselector_Item * +EAPI Elm_Object_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; @@ -660,22 +684,21 @@ 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_flipselector_item_label_get(item)) > - strlen(elm_flipselector_item_label_get(DATA_GET(wd->sentinel))))) + (strlen(elm_object_item_text_get((Elm_Object_Item *) item)) > + strlen(elm_object_item_text_get(DATA_GET(wd->sentinel))))) { wd->sentinel = wd->items; _sizing_eval(obj); @@ -684,7 +707,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 item; + return (Elm_Object_Item *) item; } /* TODO: account for deleted items? */ @@ -694,13 +717,11 @@ 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_Flipselector_Item * +EAPI Elm_Object_Item * elm_flipselector_first_item_get(const Evas_Object *obj) { ELM_CHECK_WIDTYPE(obj, widtype) NULL; @@ -710,21 +731,17 @@ 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 it; + if (it->deleted) continue; + return (Elm_Object_Item *) it; } - return NULL; } -EAPI Elm_Flipselector_Item * +EAPI Elm_Object_Item * elm_flipselector_last_item_get(const Evas_Object *obj) { ELM_CHECK_WIDTYPE(obj, widtype) NULL; @@ -734,49 +751,42 @@ 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 it; + if (it->deleted) continue; + return (Elm_Object_Item *) it; } - return NULL; } -EAPI Elm_Flipselector_Item * +EAPI Elm_Object_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_Flipselector_Item *item, Eina_Bool selected) +elm_flipselector_item_selected_set(Elm_Object_Item *it, Eina_Bool selected) { - ELM_FLIPSELECTOR_ITEM_CHECK_DELETED_RETURN(item); + ELM_OBJ_ITEM_CHECK_OR_RETURN(it); - Elm_Flipselector_Item *_item, *cur; + Elm_Flipselector_Item *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); @@ -797,8 +807,7 @@ elm_flipselector_item_selected_set(Elm_Flipselector_Item *item, Eina_Bool select EINA_LIST_FOREACH(wd->items, l, _item) { - if (_item == cur) - flipside = MSG_FLIP_DOWN; + if (_item == cur) flipside = MSG_FLIP_DOWN; if (_item == item) { @@ -812,26 +821,29 @@ elm_flipselector_item_selected_set(Elm_Flipselector_Item *item, Eina_Bool select } EAPI Eina_Bool -elm_flipselector_item_selected_get(const Elm_Flipselector_Item *item) +elm_flipselector_item_selected_get(const Elm_Object_Item *it) { - ELM_FLIPSELECTOR_ITEM_CHECK_DELETED_RETURN(item, EINA_FALSE); + ELM_OBJ_ITEM_CHECK_OR_RETURN(it, 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_Flipselector_Item *item) +elm_flipselector_item_del(Elm_Object_Item *it) { - ELM_FLIPSELECTOR_ITEM_CHECK_DELETED_RETURN(item); - + ELM_OBJ_ITEM_CHECK_OR_RETURN(it); 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) { @@ -844,112 +856,64 @@ elm_flipselector_item_del(Elm_Flipselector_Item *item) 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_Flipselector_Item *item) +elm_flipselector_item_label_get(const Elm_Object_Item *it) { - 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; + return _item_text_get_hook(it, NULL); } EAPI void -elm_flipselector_item_label_set(Elm_Flipselector_Item *item, const char *label) +elm_flipselector_item_label_set(Elm_Object_Item *it, const char *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; + _item_text_set_hook(it, NULL, label); } -EAPI Elm_Flipselector_Item * -elm_flipselector_item_prev_get(Elm_Flipselector_Item *item) +EAPI Elm_Object_Item * +elm_flipselector_item_prev_get(Elm_Object_Item *it) { - ELM_FLIPSELECTOR_ITEM_CHECK_DELETED_RETURN(item, NULL); + ELM_OBJ_ITEM_CHECK_OR_RETURN(it, NULL); - Elm_Flipselector_Item *_item; + Elm_Flipselector_Item *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_Flipselector_Item * -elm_flipselector_item_next_get(Elm_Flipselector_Item *item) +EAPI Elm_Object_Item * +elm_flipselector_item_next_get(Elm_Object_Item *it) { - ELM_FLIPSELECTOR_ITEM_CHECK_DELETED_RETURN(item, NULL); + ELM_OBJ_ITEM_CHECK_OR_RETURN(it, NULL); - Elm_Flipselector_Item *_item; + Elm_Flipselector_Item *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; } @@ -959,9 +923,7 @@ 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; } @@ -971,8 +933,6 @@ 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.0; + if (!wd) return 0; return wd->first_interval; } diff --git a/src/lib/elm_gengrid.c b/src/lib/elm_gengrid.c index 6aea4ef..af2f4be 100644 --- a/src/lib/elm_gengrid.c +++ b/src/lib/elm_gengrid.c @@ -137,6 +137,10 @@ 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[] = { @@ -157,6 +161,10 @@ 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} }; @@ -1612,6 +1620,39 @@ _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__) @@ -1670,6 +1711,10 @@ 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 7bbf256..50b2342 100644 --- a/src/lib/elm_genlist.c +++ b/src/lib/elm_genlist.c @@ -4336,41 +4336,52 @@ 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; + Elm_Genlist_Item *it2, *it3; Evas_Coord y, h; - if (!it->wd->effect_mode || !it->wd->move_effect_mode) + if (!wd->effect_mode || !wd->move_effect_mode) _item_subitems_clear(it); else { - if ((!it->wd->item_moving_effect_timer) && (it->flags != ELM_GENLIST_ITEM_GROUP) && - it->wd->move_effect_mode != ELM_GENLIST_ITEM_MOVE_EFFECT_DELETE ) + if ((!wd->item_moving_effect_timer) && (it->flags != ELM_GENLIST_ITEM_GROUP) && + wd->move_effect_mode != ELM_GENLIST_ITEM_MOVE_EFFECT_DELETE) { - it->wd->expand_item = it; + wd->expand_item = it; _item_flip_effect_show(it); evas_object_geometry_get(VIEW(it), NULL, &y, NULL, &h); - it->wd->expand_item_end = y + h; + 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); - 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; + 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; } else - it->wd->expand_item_gap = 0; + wd->expand_item_gap = 0; - evas_object_raise(it->wd->alpha_bg); - evas_object_show(it->wd->alpha_bg); + evas_object_raise(wd->alpha_bg); + evas_object_show(wd->alpha_bg); - it->wd->start_time = current_time_get(); - it->wd->item_moving_effect_timer = ecore_animator_add(_item_moving_effect_timer_cb, it->wd); + wd->start_time = current_time_get(); + wd->item_moving_effect_timer = ecore_animator_add(_item_moving_effect_timer_cb, wd); } else _item_subitems_clear(it); @@ -5517,7 +5528,6 @@ _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; @@ -5533,14 +5543,7 @@ _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 4104bb5..3f22bc2 100644 --- a/src/lib/elm_imageslider.c +++ b/src/lib/elm_imageslider.c @@ -1,20 +1,8 @@ -/* -* -* 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()) @@ -140,7 +128,6 @@ _del_hook(Evas_Object *obj) } if (wd) free(wd); - } // Whenever require processing theme, Call this function @@ -178,7 +165,6 @@ _sizing_eval(Evas_Object *obj) _imageslider_move(obj, e, obj, NULL); _imageslider_resize(obj, e, obj, NULL); - } // Whenever MOVE event occurs, Call this function. @@ -201,7 +187,6 @@ _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. @@ -285,7 +270,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_content_part_set(wd->ly[BLOCK_RIGHT], "swl.photo", NULL); + elm_object_part_content_set(wd->ly[BLOCK_RIGHT], "swl.photo", NULL); } else { @@ -294,7 +279,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_content_part_set(wd->ly[BLOCK_LEFT], "swl.photo", NULL); + elm_object_part_content_set(wd->ly[BLOCK_LEFT], "swl.photo", NULL); } } @@ -504,14 +489,14 @@ _check_drag(int state, void *data) it = eina_list_data_get(l[state]); - eo = (Evas_Object*)elm_object_content_part_get(wd->ly[state], "swl.photo"); + eo = elm_object_part_content_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_content_part_set(wd->ly[state], "swl.photo", NULL); + elm_object_part_content_set(wd->ly[state], "swl.photo", NULL); } else return 1; @@ -630,10 +615,10 @@ _imageslider_update(Widget_Data * wd) for (i = 0; i < BLOCK_MAX; i++) { - eo = (Evas_Object*)elm_object_content_part_get((const Evas_Object*)wd->ly[i], "swl.photo"); + eo = elm_object_part_content_get((const Evas_Object*)wd->ly[i], "swl.photo"); if (!l[i]) { - elm_object_content_part_set(wd->ly[i], "swl.photo", NULL); + elm_object_part_content_set(wd->ly[i], "swl.photo", NULL); } else { @@ -646,21 +631,13 @@ _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_content_part_set(wd->ly[i], "swl.photo", eo); + elm_object_part_content_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) { @@ -707,17 +684,6 @@ 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) { @@ -744,18 +710,6 @@ 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) { @@ -787,17 +741,6 @@ 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) { @@ -821,13 +764,6 @@ 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) { @@ -855,14 +791,6 @@ 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) { @@ -878,14 +806,6 @@ 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) { @@ -903,13 +823,6 @@ 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) { @@ -934,21 +847,13 @@ elm_imageslider_item_selected_set(Elm_Imageslider_Item * it) for (i = 0; i < BLOCK_MAX; i++) { - eo = (Evas_Object*)elm_object_content_part_get(wd->ly[i], "swl.photo"); + eo = elm_object_part_content_get(wd->ly[i], "swl.photo"); if (eo) - elm_object_content_part_set(wd->ly[i], "swl.photo", NULL); + elm_object_part_content_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) { @@ -957,14 +862,6 @@ 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) { @@ -978,14 +875,6 @@ 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) { @@ -1011,14 +900,6 @@ 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) { @@ -1044,13 +925,6 @@ 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) { @@ -1064,13 +938,6 @@ 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) { @@ -1084,13 +951,6 @@ 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) { @@ -1101,10 +961,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_content_part_set(wd->ly[BLOCK_LEFT], "swl.photo", NULL); + elm_object_part_content_set(wd->ly[BLOCK_LEFT], "swl.photo", NULL); else if (it == eina_list_data_get(wd->cur)) - elm_object_content_part_set(wd->ly[BLOCK_CENTER], "swl.photo", NULL); + elm_object_part_content_set(wd->ly[BLOCK_CENTER], "swl.photo", NULL); else if (it == eina_list_data_get(eina_list_next(wd->cur))) - elm_object_content_part_set(wd->ly[BLOCK_RIGHT], "swl.photo", NULL); + elm_object_part_content_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 d7acc84..4cc2453 100644 --- a/src/lib/elm_main.c +++ b/src/lib/elm_main.c @@ -918,6 +918,10 @@ 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) @@ -2121,7 +2125,7 @@ elm_object_signal_emit(Evas_Object *obj, } EAPI void -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) +elm_object_signal_callback_add(Evas_Object *obj, const char *emission, const char *source, Edje_Signal_Cb func, void *data) { EINA_SAFETY_ON_NULL_RETURN(obj); EINA_SAFETY_ON_NULL_RETURN(func); @@ -2129,7 +2133,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, void (*func) (void *data, Evas_Object *o, const char *emission, const char *source)) +elm_object_signal_callback_del(Evas_Object *obj, const char *emission, const char *source, Edje_Signal_Cb func) { EINA_SAFETY_ON_NULL_RETURN_VAL(obj, NULL); EINA_SAFETY_ON_NULL_RETURN_VAL(func, NULL); @@ -2201,20 +2205,41 @@ elm_object_item_content_part_set(Elm_Object_Item *it, const char *part, Evas_Object *content) { - elm_widget_item_content_part_set(it, part, 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); } EAPI Evas_Object * elm_object_item_content_part_get(const Elm_Object_Item *it, const char *part) { - return elm_widget_item_content_part_get(it, 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); } EAPI Evas_Object * elm_object_item_content_part_unset(Elm_Object_Item *it, const char *part) { - return elm_widget_item_content_part_unset(it, 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); } EAPI void @@ -2222,13 +2247,39 @@ elm_object_item_text_part_set(Elm_Object_Item *it, const char *part, const char *label) { - elm_widget_item_text_part_set(it, part, 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); } EAPI const char * elm_object_item_text_part_get(const Elm_Object_Item *it, const char *part) { - return elm_widget_item_text_part_get(it, 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); } EAPI void * @@ -2246,18 +2297,16 @@ 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(it, emission, source); + _elm_widget_item_signal_emit((Elm_Widget_Item *) it, emission, source); } -EAPI void -elm_object_access_info_set(Evas_Object *obj, const char *txt) +EAPI void elm_object_item_disabled_set(Elm_Object_Item *it, Eina_Bool disabled) { - elm_widget_access_info_set(obj, txt); + _elm_widget_item_disabled_set((Elm_Widget_Item *) it, disabled); } -EAPI void -elm_object_item_access_info_set(Elm_Object_Item *it, const char *txt) +EAPI Eina_Bool elm_object_item_disabled_get(const Elm_Object_Item *it) { - _elm_widget_item_access_info_set((Elm_Widget_Item *)it, txt); + return _elm_widget_item_disabled_get((Elm_Widget_Item *) it); } diff --git a/src/lib/elm_map.c b/src/lib/elm_map.c index 9d7acd5..01b24b3 100644 --- a/src/lib/elm_map.c +++ b/src/lib/elm_map.c @@ -6,6 +6,8 @@ #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; @@ -1240,7 +1242,7 @@ _process_download_list(Evas_Object *obj) { ELM_CHECK_WIDTYPE(obj, widtype); Widget_Data *wd = elm_widget_data_get(obj); - Eina_List *l; + Eina_List *l, *ll; Evas_Coord ox, oy, ow, oh, cvx, cvy, cvw, cvh, tx, ty, gw, gh, xx, yy, ww, hh; Grid_Item *gi; @@ -1250,7 +1252,7 @@ _process_download_list(Evas_Object *obj) gw = wd->size.w; gh = wd->size.h; - EINA_LIST_FOREACH(wd->download_list, l, gi) + EINA_LIST_FOREACH_SAFE(wd->download_list, l, ll, gi) { xx = gi->out.x; yy = gi->out.y; @@ -1279,7 +1281,7 @@ _process_download_list(Evas_Object *obj) } } - EINA_LIST_REVERSE_FOREACH(wd->download_list, l, gi) + EINA_LIST_REVERSE_FOREACH_SAFE(wd->download_list, l, ll, gi) { if (gi->wd->download_num >= MAX_CONCURRENT_DOWNLOAD) break; @@ -1318,22 +1320,13 @@ 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) - { - free(g); - return NULL; - } - if (g->zoom < wd->src->zoom_min) - { - free(g); - return NULL; - } + if (g->zoom > wd->src->zoom_max) return NULL; + if (g->zoom < wd->src->zoom_min) return NULL; int size = pow(2.0, wd->zoom); g->gw = size; @@ -2933,15 +2926,14 @@ _parse_kml(void *data) char *buf; fseek(f, 0, SEEK_SET); - buf = malloc(sz + 1); + buf = malloc(sz); 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); @@ -3026,15 +3018,14 @@ _parse_name(void *data) char *buf; fseek(f, 0, SEEK_SET); - buf = malloc(sz + 1); + buf = malloc(sz); 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); @@ -3158,9 +3149,12 @@ _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; @@ -3291,11 +3285,16 @@ 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; @@ -3437,21 +3436,31 @@ 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); @@ -3465,21 +3474,31 @@ 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; @@ -3505,11 +3524,17 @@ 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; @@ -3534,11 +3559,17 @@ 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; @@ -3550,11 +3581,17 @@ 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); @@ -3571,42 +3608,62 @@ 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); @@ -3620,11 +3677,17 @@ 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); @@ -3644,11 +3707,20 @@ 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); @@ -3663,26 +3735,48 @@ 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; @@ -3698,11 +3792,21 @@ 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; @@ -3882,11 +3986,21 @@ 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; @@ -3949,33 +4063,51 @@ 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; @@ -4019,28 +4151,42 @@ 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) { @@ -4051,11 +4197,15 @@ 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; @@ -4064,11 +4214,15 @@ 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); @@ -4077,46 +4231,76 @@ 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); @@ -4130,11 +4314,17 @@ 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); @@ -4142,49 +4332,79 @@ 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; @@ -4219,83 +4439,123 @@ 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); @@ -4305,16 +4565,25 @@ 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 * @@ -4326,6 +4595,7 @@ 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]; @@ -4406,11 +4676,22 @@ 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; @@ -4446,67 +4727,113 @@ 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) { @@ -4524,11 +4851,15 @@ 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); @@ -4537,11 +4868,18 @@ 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); @@ -4549,11 +4887,18 @@ 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); @@ -4563,22 +4908,32 @@ 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); @@ -4589,12 +4944,18 @@ 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); @@ -4602,8 +4963,14 @@ 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) { @@ -4684,7 +5051,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 = NULL; + char **str; unsigned int ele, idx; char search_url[PATH_MAX]; char buf[PATH_MAX]; @@ -4704,10 +5071,7 @@ _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 03abcdd..0af8b74 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; - Eina_Bool textonly : 1; + Elm_CNP_Mode cnp_mode : 2; }; EAPI void elm_entry_extension_module_data_get(Evas_Object *obj,Elm_Entry_Extension_data *ext_mod); diff --git a/src/lib/elm_popup.c b/src/lib/elm_popup.c index abc43c6..219ed30 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_content_part_set(wd->action_area, buf, action_data->btn); + elm_object_part_content_set(wd->action_area, buf, action_data->btn); } - elm_object_content_part_set(wd->layout, "elm.swallow.buttonArea", wd->action_area); + elm_object_part_content_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_content_part_set(wd->content_area, "elm.swallow.content", wd->desc_label); + elm_object_part_content_set(wd->content_area, "elm.swallow.content", wd->desc_label); } else if (wd->content) { - elm_object_content_part_set(wd->content_area, "elm.swallow.content", wd->content); + elm_object_part_content_set(wd->content_area, "elm.swallow.content", wd->content); } - elm_object_content_part_set(wd->layout, "elm.swallow.content", wd->content_area); + elm_object_part_content_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_content_part_set(wd->action_area, buf, btn); + elm_object_part_content_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_content_part_set(wd->layout, "elm.swallow.buttonArea", wd->action_area); + elm_object_part_content_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_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); + 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); 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_content_part_set(wd->layout, "elm.swallow.title.icon", wd->title_icon); + elm_object_part_content_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_content_part_set(wd->content_area, "elm.swallow.content", content); - elm_object_content_part_set(wd->layout, "elm.swallow.content", wd->content_area); + 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); 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_content_part_set(wd->layout, "elm.swallow.buttonArea", wd->action_area); + elm_object_part_content_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 c1da756..6c70a69 100644 --- a/src/lib/elm_priv.h +++ b/src/lib/elm_priv.h @@ -39,6 +39,7 @@ 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 9ada9fb..205455b 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 032e072..c111130 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 deleted file mode 100644 index 187478f..0000000 --- a/src/lib/elm_scrolled_grid.c +++ /dev/null @@ -1,1564 +0,0 @@ -/* - * 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 d26c6d9..722931b 100644 --- a/src/lib/elm_searchbar.c +++ b/src/lib/elm_searchbar.c @@ -4,14 +4,6 @@ #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 @@ -175,13 +167,6 @@ _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; @@ -235,40 +220,16 @@ 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; @@ -278,14 +239,6 @@ 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; @@ -295,15 +248,6 @@ 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); @@ -314,15 +258,6 @@ 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); @@ -342,14 +277,6 @@ 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); @@ -366,15 +293,6 @@ 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 2407392..bd6ca90 100644 --- a/src/lib/elm_slider.c +++ b/src/lib/elm_slider.c @@ -602,8 +602,7 @@ static void _content_set_hook(Evas_Object *obj, const char *part, Evas_Object *content) { ELM_CHECK_WIDTYPE(obj, widtype); - if (!part) return; - if (!strcmp(part, "icon")) + if (!part || !strcmp(part, "icon")) _icon_set(obj, content); else if (!strcmp(part, "end")) _end_set(obj, content); @@ -614,10 +613,9 @@ _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 (!strcmp(part, "icon")) + if (!part || !strcmp(part, "icon")) return wd->icon; else if (!strcmp(part, "end")) return wd->end; @@ -628,8 +626,7 @@ static Evas_Object * _content_unset_hook(Evas_Object *obj, const char *part) { ELM_CHECK_WIDTYPE(obj, widtype) NULL; - if (!part) return NULL; - if (!strcmp(part, "icon")) + if (!part || !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 deleted file mode 100644 index dd71d0d..0000000 --- a/src/lib/elm_slidingdrawer.c +++ /dev/null @@ -1,295 +0,0 @@ -/* - * @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 1e54310..bd8adb9 100644 --- a/src/lib/elm_stackedicon.c +++ b/src/lib/elm_stackedicon.c @@ -2,13 +2,6 @@ #include "elm_priv.h" -/** - * @defgroup Stackedicon Stackedicon - * @ingroup Elementary - * - * This is a Stackedicon. - */ - #define MAX_ITEM_NUM (9) #define MAX_MOVE_INTERVAL (0.2) @@ -693,14 +686,6 @@ _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) { @@ -732,15 +717,6 @@ 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; @@ -768,15 +744,6 @@ 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; @@ -804,16 +771,9 @@ 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); @@ -834,14 +794,6 @@ 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; @@ -849,4 +801,3 @@ 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 46915e0..4265bda 100644 --- a/src/lib/elm_store.c +++ b/src/lib/elm_store.c @@ -1686,13 +1686,6 @@ _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) { @@ -1705,14 +1698,6 @@ 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) { @@ -1721,15 +1706,6 @@ 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) { @@ -1738,15 +1714,6 @@ 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) { @@ -1755,15 +1722,6 @@ 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) { @@ -1772,14 +1730,6 @@ 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) { @@ -1804,14 +1754,6 @@ 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) { @@ -1836,14 +1778,6 @@ 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) { @@ -1855,14 +1789,6 @@ 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) { @@ -1882,15 +1808,6 @@ 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) { @@ -1930,13 +1847,6 @@ 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) { @@ -1953,13 +1863,6 @@ 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) { @@ -1980,13 +1883,6 @@ 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) { @@ -2041,6 +1937,3 @@ 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 b8ccfed..3382b67 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, 1 + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1 }; static Eina_List *themes = NULL; @@ -24,6 +24,11 @@ _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); @@ -111,6 +116,79 @@ _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) { @@ -224,6 +302,8 @@ _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); @@ -433,6 +513,8 @@ 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) { @@ -556,3 +638,10 @@ 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 188d20b..4da82fb 100644 --- a/src/lib/elm_tickernoti.c +++ b/src/lib/elm_tickernoti.c @@ -1,13 +1,6 @@ #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 @@ -513,15 +506,6 @@ _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) { @@ -559,13 +543,6 @@ 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) { @@ -575,13 +552,6 @@ 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) { @@ -596,13 +566,6 @@ 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) { @@ -640,14 +603,6 @@ 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) { @@ -658,14 +613,6 @@ 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) { @@ -675,107 +622,42 @@ 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) { @@ -785,15 +667,6 @@ 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) { @@ -811,133 +684,54 @@ 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 5cdd33c..2d02c80 100644 --- a/src/lib/elm_toggle.c +++ b/src/lib/elm_toggle.c @@ -50,7 +50,6 @@ 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 216a28d..5557e0a 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)) + if (elm_widget_type_check(obj, type, __func__)) 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 d893fef..cb90a85 100644 --- a/src/lib/elm_video.c +++ b/src/lib/elm_video.c @@ -279,14 +279,13 @@ 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); - edje_object_part_swallow(wd->layout, "elm.swallow.video", wd->emotion); elm_widget_sub_object_add(obj, wd->emotion); + edje_object_part_swallow(wd->layout, "elm.swallow.video", 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 4f1198d..6e8b044 100644 --- a/src/lib/elm_widget.c +++ b/src/lib/elm_widget.c @@ -26,6 +26,7 @@ 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; @@ -1219,6 +1220,47 @@ 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) @@ -1315,6 +1357,24 @@ 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, @@ -1906,7 +1966,7 @@ elm_widget_focused_object_clear(Evas_Object *obj) EAPI void elm_widget_focus_steal(Evas_Object *obj) { - Evas_Object *parent, *o; + Evas_Object *parent, *parent2, *o; API_ENTRY return; if (sd->focused) return; @@ -1923,24 +1983,30 @@ elm_widget_focus_steal(Evas_Object *obj) if (sd->focused) break; parent = o; } - if (!elm_widget_parent_get(parent)) - elm_widget_focused_object_clear(parent); + if ((!elm_widget_parent_get(parent)) && + (!elm_widget_parent2_get(parent))) + elm_widget_focused_object_clear(parent); else { - parent = elm_widget_parent_get(parent); + parent2 = elm_widget_parent_get(parent); + if (!parent2) parent2 = elm_widget_parent2_get(parent); + parent = parent2; sd = evas_object_smart_data_get(parent); - if ((sd->resize_obj) && (elm_widget_focus_get(sd->resize_obj))) - elm_widget_focused_object_clear(sd->resize_obj); - else + if (sd) { - const Eina_List *l; - Evas_Object *child; - EINA_LIST_FOREACH(sd->subobjs, l, child) + if ((sd->resize_obj) && (elm_widget_focus_get(sd->resize_obj))) + elm_widget_focused_object_clear(sd->resize_obj); + else { - if (elm_widget_focus_get(child)) + const Eina_List *l; + Evas_Object *child; + EINA_LIST_FOREACH(sd->subobjs, l, child) { - elm_widget_focused_object_clear(child); - break; + if (elm_widget_focus_get(child)) + { + elm_widget_focused_object_clear(child); + break; + } } } } @@ -2547,7 +2613,8 @@ elm_widget_is_check(const Evas_Object *obj) EAPI Eina_Bool elm_widget_type_check(const Evas_Object *obj, - const char *type) + const char *type, + const char *func) { const char *provided, *expected = "(unknown)"; static int abort_on_warn = -1; @@ -2560,7 +2627,7 @@ elm_widget_type_check(const Evas_Object *obj, if ((!provided) || (!provided[0])) provided = "(unknown)"; } - ERR("Passing Object: %p, of type: '%s' when expecting type: '%s'", obj, provided, expected); + ERR("Passing Object: %p in function: %s, of type: '%s' when expecting type: '%s'", obj, func, provided, expected); if (abort_on_warn == -1) { if (getenv("ELM_ERROR_ABORT")) abort_on_warn = 1; @@ -2830,6 +2897,31 @@ _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 964d061..329333d 100644 --- a/src/lib/elm_widget.h +++ b/src/lib/elm_widget.h @@ -201,6 +201,8 @@ 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 @@ -260,8 +262,10 @@ 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! */ }; @@ -317,11 +321,12 @@ 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, 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_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_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); @@ -348,6 +353,8 @@ 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); /** @@ -404,7 +411,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); +EAPI Eina_Bool elm_widget_type_check(const Evas_Object *obj, const char *type, const char *func); 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); @@ -454,7 +461,9 @@ 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); @@ -587,42 +596,6 @@ 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() */ @@ -658,7 +631,21 @@ 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 { \ @@ -696,7 +683,7 @@ EAPI void elm_widget_tree_dot_dump(const Evas_Object *top, FILE *out if (!elm_widget_is_check(obj)) return #define ELM_CHECK_WIDTYPE(obj, widtype) \ - if (!elm_widget_type_check((obj), (widtype))) return + if (!obj || !elm_widget_type_check((obj), (widtype), __func__)) return #define ELM_WIDGET_ITEM_WIDTYPE_CHECK_OR_RETURN(it, ...) \ ELM_WIDGET_ITEM_CHECK_OR_RETURN((Elm_Widget_Item *)it, __VA_ARGS__); \ @@ -704,7 +691,7 @@ EAPI void elm_widget_tree_dot_dump(const Evas_Object *top, FILE *out #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))) goto label; + if (!elm_widget_type_check((it->base.widget), (widtype), __func__)) goto label; #define ELM_WIDGET_STANDARD_SETUP(wdat, wdtype, par, evas, ob, ret) \ do { \ @@ -745,7 +732,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!) */ @@ -763,6 +750,7 @@ 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 fae74b7..1a3cd34 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(win->win_obj); + elm_object_focus_set(win->win_obj, EINA_TRUE); win->show_count++; } else @@ -409,6 +409,26 @@ _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; @@ -1342,43 +1362,35 @@ 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 software X11."); \ - win->ee = ecore_evas_software_x11_new(NULL, 0, 0, 0, 1, 1); \ - elm_engine_set(ELM_SOFTWARE_X11); \ + 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)); \ } while (0) #define ENGINE_COMPARE(name) (!strcmp(_elm_config->engine, name)) switch (type) { case ELM_WIN_INLINED_IMAGE: - { - 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; - } - } - } - } - } - } + 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; + } break; default: if (ENGINE_COMPARE(ELM_SOFTWARE_X11)) @@ -1388,6 +1400,7 @@ 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)) { @@ -1541,6 +1554,8 @@ 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 | @@ -2151,6 +2166,16 @@ 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 12e7ef7..1c1daa2 100644 --- a/src/lib/els_cursor.c +++ b/src/lib/els_cursor.c @@ -300,9 +300,8 @@ _elm_cursor_cur_set(Elm_Cursor *cur) if (cur->use_engine) { #ifdef HAVE_ELEMENTARY_X - struct _Cursor_Id cur_search, *cur_id; + struct _Cursor_Id *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 259fe8b..e4893ab 100755 --- a/src/lib/els_icon.c +++ b/src/lib/els_icon.c @@ -2,6 +2,12 @@ #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 @@ -76,23 +82,21 @@ _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) - { - 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) goto out; - sd->edje = EINA_FALSE; - } + 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: if (!sd->size) evas_object_image_load_size_set(sd->obj, sd->size, sd->size); @@ -114,7 +118,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 %zu byte chunk of memory (%p)", size, sd->obj); + ERR("Things are going bad for some random " FMT_SIZE_T " 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 832a8bc..99b6b07 100644 --- a/src/lib/els_tooltip.c +++ b/src/lib/els_tooltip.c @@ -1,6 +1,14 @@ #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, ...) \ @@ -239,9 +247,6 @@ _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); @@ -337,7 +342,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); @@ -348,61 +353,75 @@ _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), &cw, &ch, NULL, NULL); + elm_win_screen_size_get(elm_object_top_widget_get(tt->owner), NULL, NULL, &cw, &ch); 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(elm_object_top_widget_get(tt->owner), &x, &y); + elm_win_screen_position_get(win, &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 > tx)) + else if ((tx > px) && (px > tw)) { 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 > ty)) + else if ((ty > py) && (py > th)) { 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; @@ -410,6 +429,7 @@ _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; @@ -418,7 +438,6 @@ _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; @@ -427,7 +446,12 @@ _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 5dbe3a6..3956a40 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 6713104..0831e37 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->textonly) + if (ext_mod->cnp_mode != ELM_CNP_MODE_MARKUP) elm_cbhm_send_raw_data("show0"); else elm_cbhm_send_raw_data("show1"); @@ -208,6 +208,7 @@ 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); @@ -242,14 +243,19 @@ obj_longpress(Evas_Object *obj) { if (!elm_entry_is_empty(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 ); + 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 ); } } + +#ifdef HAVE_ELEMENTARY_X + if (cbhm_count) +#else if (1) // need way to detect if someone has a selection +#endif { if (ext_mod->editable) - elm_ctxpopup_item_append(ext_mod->popup, "Paste", NULL, _paste, obj ); + added_item = 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 @@ -262,7 +268,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); - elm_ctxpopup_item_append(ext_mod->popup, NULL, icon, _clipboard_menu, obj); + added_item = 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 @@ -273,24 +279,32 @@ obj_longpress(Evas_Object *obj) { if (ext_mod->have_selection) { - elm_ctxpopup_item_append(ext_mod->popup, "Copy", NULL, _copy, obj ); + added_item = elm_ctxpopup_item_append(ext_mod->popup, "Copy", NULL, _copy, obj ); if (ext_mod->editable) - elm_ctxpopup_item_append(ext_mod->popup, "Cut", NULL, _cut, obj ); + added_item = elm_ctxpopup_item_append(ext_mod->popup, "Cut", NULL, _cut, obj ); +#ifdef HAVE_ELEMENTARY_X + if (ext_mod->editable && cbhm_count) +#else if (ext_mod->editable) - elm_ctxpopup_item_append(ext_mod->popup, "Paste", NULL, _paste, obj ); +#endif + added_item = elm_ctxpopup_item_append(ext_mod->popup, "Paste", NULL, _paste, obj ); } else { _cancel(obj,ext_mod->popup,NULL); if (!elm_entry_is_empty(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 ); + 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 ); } +#ifdef HAVE_ELEMENTARY_X + if (cbhm_count) +#else if (1) // need way to detect if someone has a selection +#endif { if (ext_mod->editable) - elm_ctxpopup_item_append(ext_mod->popup, "Paste", NULL, _paste, obj ); + added_item = elm_ctxpopup_item_append(ext_mod->popup, "Paste", NULL, _paste, obj ); } } // start for cbhm @@ -303,7 +317,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); - elm_ctxpopup_item_append(ext_mod->popup, NULL, icon, _clipboard_menu, obj); + added_item = 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 @@ -311,9 +325,9 @@ obj_longpress(Evas_Object *obj) } EINA_LIST_FOREACH(ext_mod->items, l, it) { - elm_ctxpopup_item_append(ext_mod->popup, it->label, NULL, _item_clicked, it ); + added_item = elm_ctxpopup_item_append(ext_mod->popup, it->label, NULL, _item_clicked, it ); } - if (ext_mod->popup) + if (ext_mod->popup && added_item) { 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 83c28df..854857b 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->textonly) + if (ext_mod->cnp_mode != ELM_CNP_MODE_MARKUP) 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 2a6ef7d..381f711 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->textonly) - 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->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 } static void -- 2.7.4