This library is free software; you can redistribute it and/or modify it
under the terms of the GNU Lesser General Public License as published by the
-Free Software Foundation; version 2.1 of the License.
+Free Software Foundation; either version 2.1 of the License.
This library is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
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 <Ecore_Con.h>"
- 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],
[
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}"
g_layer/tap_4.png
-EXTRA_DIST = $(files_DATA) $(files_glayer_DATA)
+EXTRA_DIST = $(files_DATA)
elm_icon_standard_set(ic, "folder");
elm_icon_scale_set(ic, EINA_FALSE, EINA_FALSE);
Elm_Object_Item *it = elm_ctxpopup_item_append(ctxpopup, "Navigate to folder", ic, NULL, NULL);
-elm_object_item_disabled_set(it, EINA_TRUE);
+elm_ctxpopup_item_disabled_set(it, EINA_TRUE);
evas_object_size_hint_weight_set(ctxpopup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_move(ctxpopup, 0, 0);
msgstr ""
"Project-Id-Version: elementary\n"
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
-"POT-Creation-Date: 2011-11-25 15:46+0900\n"
+"POT-Creation-Date: 2011-11-21 18:14+0900\n"
"PO-Revision-Date: 2011-09-26 21:20+0900\n"
"Last-Translator: Sumanth Krishna Mannam <sumanth.m@samsung.com>\n"
"Language-Team: General\n"
msgid "Home"
msgstr ""
-#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1381
-#: src/lib/elm_searchbar.c:211
+#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1382
+#: src/lib/elm_searchbar.c:226
msgid "Cancel"
msgstr ""
msgid "DateTimeFormat"
msgstr "%b %d, %Y %I : %M %p"
-#: src/lib/elm_entry.c:1355
+#: src/lib/elm_entry.c:1356
msgid "Select"
msgstr ""
-#: src/lib/elm_entry.c:1360
+#: src/lib/elm_entry.c:1361
msgid "Paste"
msgstr ""
-#: src/lib/elm_entry.c:1365 src/lib/elm_entry.c:1385
+#: src/lib/elm_entry.c:1366 src/lib/elm_entry.c:1386
msgid "More"
msgstr ""
-#: src/lib/elm_entry.c:1375
+#: src/lib/elm_entry.c:1376
msgid "Copy"
msgstr ""
-#: src/lib/elm_entry.c:1378
+#: src/lib/elm_entry.c:1379
msgid "Cut"
msgstr ""
-#: src/lib/elm_searchbar.c:199
+#: src/lib/elm_searchbar.c:214
msgid "Search"
msgstr ""
msgstr ""
"Project-Id-Version: elementary\n"
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
-"POT-Creation-Date: 2011-11-25 15:46+0900\n"
+"POT-Creation-Date: 2011-11-21 18:14+0900\n"
"PO-Revision-Date: 2011-09-26 21:20+0900\n"
"Last-Translator: Sumanth Krishna Mannam <sumanth.m@samsung.com>\n"
"Language-Team: General\n"
msgid "Home"
msgstr ""
-#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1381
-#: src/lib/elm_searchbar.c:211
+#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1382
+#: src/lib/elm_searchbar.c:226
msgid "Cancel"
msgstr ""
msgid "DateTimeFormat"
msgstr "%b %d, %Y %I : %M %p"
-#: src/lib/elm_entry.c:1355
+#: src/lib/elm_entry.c:1356
msgid "Select"
msgstr ""
-#: src/lib/elm_entry.c:1360
+#: src/lib/elm_entry.c:1361
msgid "Paste"
msgstr ""
-#: src/lib/elm_entry.c:1365 src/lib/elm_entry.c:1385
+#: src/lib/elm_entry.c:1366 src/lib/elm_entry.c:1386
msgid "More"
msgstr ""
-#: src/lib/elm_entry.c:1375
+#: src/lib/elm_entry.c:1376
msgid "Copy"
msgstr ""
-#: src/lib/elm_entry.c:1378
+#: src/lib/elm_entry.c:1379
msgid "Cut"
msgstr ""
-#: src/lib/elm_searchbar.c:199
+#: src/lib/elm_searchbar.c:214
msgid "Search"
msgstr ""
msgstr ""
"Project-Id-Version: elementary 0.7.0.57309\n"
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
-"POT-Creation-Date: 2011-11-25 15:46+0900\n"
+"POT-Creation-Date: 2011-11-21 18:14+0900\n"
"PO-Revision-Date: 2011-09-26 21:20+0900\n"
"Last-Translator: Sumanth Krishna Mannam <sumanth.m@samsung.com>\n"
"Language-Team: General\n"
msgid "Home"
msgstr "Persönlicher Ordner"
-#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1381
-#: src/lib/elm_searchbar.c:211
+#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1382
+#: src/lib/elm_searchbar.c:226
msgid "Cancel"
msgstr "Abbrechen"
msgid "DateTimeFormat"
msgstr "%d. %b %Y %H : %M"
-#: src/lib/elm_entry.c:1355
+#: src/lib/elm_entry.c:1356
msgid "Select"
msgstr "Auswählen"
-#: src/lib/elm_entry.c:1360
+#: src/lib/elm_entry.c:1361
msgid "Paste"
msgstr "Einfügen"
-#: src/lib/elm_entry.c:1365 src/lib/elm_entry.c:1385
+#: src/lib/elm_entry.c:1366 src/lib/elm_entry.c:1386
msgid "More"
msgstr ""
-#: src/lib/elm_entry.c:1375
+#: src/lib/elm_entry.c:1376
msgid "Copy"
msgstr "Kopieren"
-#: src/lib/elm_entry.c:1378
+#: src/lib/elm_entry.c:1379
msgid "Cut"
msgstr "Ausschneiden"
-#: src/lib/elm_searchbar.c:199
+#: src/lib/elm_searchbar.c:214
msgid "Search"
msgstr "Suche"
msgstr ""
"Project-Id-Version: elementary\n"
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
-"POT-Creation-Date: 2011-11-25 15:46+0900\n"
+"POT-Creation-Date: 2011-11-21 18:14+0900\n"
"PO-Revision-Date: 2011-09-26 21:20+0900\n"
"Last-Translator: Sumanth Krishna Mannam <sumanth.m@samsung.com>\n"
"Language-Team: General\n"
msgid "Home"
msgstr ""
-#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1381
-#: src/lib/elm_searchbar.c:211
+#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1382
+#: src/lib/elm_searchbar.c:226
msgid "Cancel"
msgstr ""
msgid "DateTimeFormat"
msgstr "%d %b %Y %I : %M %p"
-#: src/lib/elm_entry.c:1355
+#: src/lib/elm_entry.c:1356
msgid "Select"
msgstr ""
-#: src/lib/elm_entry.c:1360
+#: src/lib/elm_entry.c:1361
msgid "Paste"
msgstr ""
-#: src/lib/elm_entry.c:1365 src/lib/elm_entry.c:1385
+#: src/lib/elm_entry.c:1366 src/lib/elm_entry.c:1386
msgid "More"
msgstr ""
-#: src/lib/elm_entry.c:1375
+#: src/lib/elm_entry.c:1376
msgid "Copy"
msgstr ""
-#: src/lib/elm_entry.c:1378
+#: src/lib/elm_entry.c:1379
msgid "Cut"
msgstr ""
-#: src/lib/elm_searchbar.c:199
+#: src/lib/elm_searchbar.c:214
msgid "Search"
msgstr ""
msgstr ""
"Project-Id-Version: elementary\n"
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
-"POT-Creation-Date: 2011-11-25 15:46+0900\n"
+"POT-Creation-Date: 2011-11-21 18:14+0900\n"
"PO-Revision-Date: 2011-09-26 21:20+0900\n"
"Last-Translator: Sumanth Krishna Mannam <sumanth.m@samsung.com>\n"
"Language-Team: General\n"
msgid "Home"
msgstr ""
-#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1381
-#: src/lib/elm_searchbar.c:211
+#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1382
+#: src/lib/elm_searchbar.c:226
msgid "Cancel"
msgstr ""
msgid "DateTimeFormat"
msgstr "%b %d, %Y %I : %M %p"
-#: src/lib/elm_entry.c:1355
+#: src/lib/elm_entry.c:1356
msgid "Select"
msgstr ""
-#: src/lib/elm_entry.c:1360
+#: src/lib/elm_entry.c:1361
msgid "Paste"
msgstr ""
-#: src/lib/elm_entry.c:1365 src/lib/elm_entry.c:1385
+#: src/lib/elm_entry.c:1366 src/lib/elm_entry.c:1386
msgid "More"
msgstr ""
-#: src/lib/elm_entry.c:1375
+#: src/lib/elm_entry.c:1376
msgid "Copy"
msgstr ""
-#: src/lib/elm_entry.c:1378
+#: src/lib/elm_entry.c:1379
msgid "Cut"
msgstr ""
-#: src/lib/elm_searchbar.c:199
+#: src/lib/elm_searchbar.c:214
msgid "Search"
msgstr ""
msgstr ""
"Project-Id-Version: elementary\n"
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
-"POT-Creation-Date: 2011-11-25 15:46+0900\n"
+"POT-Creation-Date: 2011-11-21 18:14+0900\n"
"PO-Revision-Date: 2011-09-26 21:20+0900\n"
"Last-Translator: Sumanth Krishna Mannam <sumanth.m@samsung.com>\n"
"Language-Team: General\n"
msgid "Home"
msgstr ""
-#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1381
-#: src/lib/elm_searchbar.c:211
+#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1382
+#: src/lib/elm_searchbar.c:226
msgid "Cancel"
msgstr ""
msgid "DateTimeFormat"
msgstr "%d de %b de %Y %H : %M"
-#: src/lib/elm_entry.c:1355
+#: src/lib/elm_entry.c:1356
msgid "Select"
msgstr ""
-#: src/lib/elm_entry.c:1360
+#: src/lib/elm_entry.c:1361
msgid "Paste"
msgstr ""
-#: src/lib/elm_entry.c:1365 src/lib/elm_entry.c:1385
+#: src/lib/elm_entry.c:1366 src/lib/elm_entry.c:1386
msgid "More"
msgstr ""
-#: src/lib/elm_entry.c:1375
+#: src/lib/elm_entry.c:1376
msgid "Copy"
msgstr ""
-#: src/lib/elm_entry.c:1378
+#: src/lib/elm_entry.c:1379
msgid "Cut"
msgstr ""
-#: src/lib/elm_searchbar.c:199
+#: src/lib/elm_searchbar.c:214
msgid "Search"
msgstr ""
msgstr ""
"Project-Id-Version: elementary\n"
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
-"POT-Creation-Date: 2011-11-25 15:46+0900\n"
+"POT-Creation-Date: 2011-11-21 18:14+0900\n"
"PO-Revision-Date: 2011-09-26 21:20+0900\n"
"Last-Translator: Sumanth Krishna Mannam <sumanth.m@samsung.com>\n"
"Language-Team: General\n"
msgid "Home"
msgstr ""
-#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1381
-#: src/lib/elm_searchbar.c:211
+#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1382
+#: src/lib/elm_searchbar.c:226
msgid "Cancel"
msgstr ""
msgid "DateTimeFormat"
msgstr "%b %d, %Y %I : %M %p"
-#: src/lib/elm_entry.c:1355
+#: src/lib/elm_entry.c:1356
msgid "Select"
msgstr ""
-#: src/lib/elm_entry.c:1360
+#: src/lib/elm_entry.c:1361
msgid "Paste"
msgstr ""
-#: src/lib/elm_entry.c:1365 src/lib/elm_entry.c:1385
+#: src/lib/elm_entry.c:1366 src/lib/elm_entry.c:1386
msgid "More"
msgstr ""
-#: src/lib/elm_entry.c:1375
+#: src/lib/elm_entry.c:1376
msgid "Copy"
msgstr ""
-#: src/lib/elm_entry.c:1378
+#: src/lib/elm_entry.c:1379
msgid "Cut"
msgstr ""
-#: src/lib/elm_searchbar.c:199
+#: src/lib/elm_searchbar.c:214
msgid "Search"
msgstr ""
msgstr ""
"Project-Id-Version: Elementary\n"
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
-"POT-Creation-Date: 2011-11-25 15:46+0900\n"
+"POT-Creation-Date: 2011-11-21 18:14+0900\n"
"PO-Revision-Date: 2011-09-26 21:20+0900\n"
"Last-Translator: Sumanth Krishna Mannam <sumanth.m@samsung.com>\n"
"Language-Team: General\n"
msgid "Home"
msgstr "Home"
-#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1381
-#: src/lib/elm_searchbar.c:211
+#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1382
+#: src/lib/elm_searchbar.c:226
msgid "Cancel"
msgstr "Annuler"
msgid "DateTimeFormat"
msgstr "%d %b %Y %H : %M"
-#: src/lib/elm_entry.c:1355
+#: src/lib/elm_entry.c:1356
msgid "Select"
msgstr "Sélectionner"
-#: src/lib/elm_entry.c:1360
+#: src/lib/elm_entry.c:1361
msgid "Paste"
msgstr "Coller"
-#: src/lib/elm_entry.c:1365 src/lib/elm_entry.c:1385
+#: src/lib/elm_entry.c:1366 src/lib/elm_entry.c:1386
msgid "More"
msgstr ""
-#: src/lib/elm_entry.c:1375
+#: src/lib/elm_entry.c:1376
msgid "Copy"
msgstr "Copier"
-#: src/lib/elm_entry.c:1378
+#: src/lib/elm_entry.c:1379
msgid "Cut"
msgstr "Couper"
-#: src/lib/elm_searchbar.c:199
+#: src/lib/elm_searchbar.c:214
msgid "Search"
msgstr "Rechercher"
msgstr ""
"Project-Id-Version: elementary\n"
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
-"POT-Creation-Date: 2011-11-25 15:46+0900\n"
+"POT-Creation-Date: 2011-11-21 18:14+0900\n"
"PO-Revision-Date: 2011-09-26 21:20+0900\n"
"Last-Translator: Sumanth Krishna Mannam <sumanth.m@samsung.com>\n"
"Language-Team: General\n"
msgid "Home"
msgstr ""
-#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1381
-#: src/lib/elm_searchbar.c:211
+#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1382
+#: src/lib/elm_searchbar.c:226
msgid "Cancel"
msgstr "בטל"
msgid "DateTimeFormat"
msgstr "%b %d, %Y %I : %M %p"
-#: src/lib/elm_entry.c:1355
+#: src/lib/elm_entry.c:1356
msgid "Select"
msgstr "התחל בחירה"
-#: src/lib/elm_entry.c:1360
+#: src/lib/elm_entry.c:1361
msgid "Paste"
msgstr "הדבק"
-#: src/lib/elm_entry.c:1365 src/lib/elm_entry.c:1385
+#: src/lib/elm_entry.c:1366 src/lib/elm_entry.c:1386
msgid "More"
msgstr ""
-#: src/lib/elm_entry.c:1375
+#: src/lib/elm_entry.c:1376
msgid "Copy"
msgstr "העתק"
-#: src/lib/elm_entry.c:1378
+#: src/lib/elm_entry.c:1379
msgid "Cut"
msgstr "גזור"
-#: src/lib/elm_searchbar.c:199
+#: src/lib/elm_searchbar.c:214
msgid "Search"
msgstr "לחפש"
msgstr ""
"Project-Id-Version: Elementary\n"
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
-"POT-Creation-Date: 2011-11-25 15:46+0900\n"
+"POT-Creation-Date: 2011-11-21 18:14+0900\n"
"PO-Revision-Date: 2011-09-26 21:20+0900\n"
"Last-Translator: Sumanth Krishna Mannam <sumanth.m@samsung.com>\n"
"Language-Team: General\n"
msgid "Home"
msgstr "Home"
-#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1381
-#: src/lib/elm_searchbar.c:211
+#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1382
+#: src/lib/elm_searchbar.c:226
msgid "Cancel"
msgstr "Annulla"
msgid "DateTimeFormat"
msgstr "%d %b %Y %H : %M"
-#: src/lib/elm_entry.c:1355
+#: src/lib/elm_entry.c:1356
msgid "Select"
msgstr "Seleziona"
-#: src/lib/elm_entry.c:1360
+#: src/lib/elm_entry.c:1361
msgid "Paste"
msgstr "Incolla"
-#: src/lib/elm_entry.c:1365 src/lib/elm_entry.c:1385
+#: src/lib/elm_entry.c:1366 src/lib/elm_entry.c:1386
msgid "More"
msgstr ""
-#: src/lib/elm_entry.c:1375
+#: src/lib/elm_entry.c:1376
msgid "Copy"
msgstr "Copia"
-#: src/lib/elm_entry.c:1378
+#: src/lib/elm_entry.c:1379
msgid "Cut"
msgstr "Taglio"
-#: src/lib/elm_searchbar.c:199
+#: src/lib/elm_searchbar.c:214
msgid "Search"
msgstr "Ricerca"
msgstr ""
"Project-Id-Version: elementary\n"
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
-"POT-Creation-Date: 2011-11-25 15:46+0900\n"
+"POT-Creation-Date: 2011-11-21 18:14+0900\n"
"PO-Revision-Date: 2011-09-26 21:20+0900\n"
"Last-Translator: Sumanth Krishna Mannam <sumanth.m@samsung.com>\n"
"Language-Team: General\n"
msgid "Home"
msgstr ""
-#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1381
-#: src/lib/elm_searchbar.c:211
+#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1382
+#: src/lib/elm_searchbar.c:226
msgid "Cancel"
msgstr ""
msgid "DateTimeFormat"
msgstr "%Y年 %m月 %d日 %H : %M"
-#: src/lib/elm_entry.c:1355
+#: src/lib/elm_entry.c:1356
msgid "Select"
msgstr ""
-#: src/lib/elm_entry.c:1360
+#: src/lib/elm_entry.c:1361
msgid "Paste"
msgstr ""
-#: src/lib/elm_entry.c:1365 src/lib/elm_entry.c:1385
+#: src/lib/elm_entry.c:1366 src/lib/elm_entry.c:1386
msgid "More"
msgstr ""
-#: src/lib/elm_entry.c:1375
+#: src/lib/elm_entry.c:1376
msgid "Copy"
msgstr ""
-#: src/lib/elm_entry.c:1378
+#: src/lib/elm_entry.c:1379
msgid "Cut"
msgstr ""
-#: src/lib/elm_searchbar.c:199
+#: src/lib/elm_searchbar.c:214
msgid "Search"
msgstr ""
msgstr ""
"Project-Id-Version: elementary\n"
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
-"POT-Creation-Date: 2011-11-25 15:46+0900\n"
+"POT-Creation-Date: 2011-11-21 18:14+0900\n"
"PO-Revision-Date: 2011-09-26 21:20+0900\n"
"Last-Translator: Sumanth Krishna Mannam <sumanth.m@samsung.com>\n"
"Language-Team: General\n"
msgid "Home"
msgstr "홈"
-#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1381
-#: src/lib/elm_searchbar.c:211
+#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1382
+#: src/lib/elm_searchbar.c:226
msgid "Cancel"
msgstr "취소"
msgid "DateTimeFormat"
msgstr "%Y년 %m월 %d일 %p %I : %M"
-#: src/lib/elm_entry.c:1355
+#: src/lib/elm_entry.c:1356
msgid "Select"
msgstr "선택"
-#: src/lib/elm_entry.c:1360
+#: src/lib/elm_entry.c:1361
msgid "Paste"
msgstr "붙여넣기"
-#: src/lib/elm_entry.c:1365 src/lib/elm_entry.c:1385
+#: src/lib/elm_entry.c:1366 src/lib/elm_entry.c:1386
msgid "More"
msgstr ""
-#: src/lib/elm_entry.c:1375
+#: src/lib/elm_entry.c:1376
msgid "Copy"
msgstr "복사"
-#: src/lib/elm_entry.c:1378
+#: src/lib/elm_entry.c:1379
msgid "Cut"
msgstr "잘라내기"
-#: src/lib/elm_searchbar.c:199
+#: src/lib/elm_searchbar.c:214
msgid "Search"
msgstr "검색"
msgstr ""
"Project-Id-Version: elementary 0.7.0.57309\n"
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
-"POT-Creation-Date: 2011-11-25 15:46+0900\n"
+"POT-Creation-Date: 2011-11-21 18:14+0900\n"
"PO-Revision-Date: 2011-09-26 21:20+0900\n"
"Last-Translator: Sumanth Krishna Mannam <sumanth.m@samsung.com>\n"
"Language-Team: General\n"
msgid "Home"
msgstr "Persoonlijke map"
-#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1381
-#: src/lib/elm_searchbar.c:211
+#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1382
+#: src/lib/elm_searchbar.c:226
msgid "Cancel"
msgstr "Annuleren"
msgid "DateTimeFormat"
msgstr "%d %b %Y %H : %M"
-#: src/lib/elm_entry.c:1355
+#: src/lib/elm_entry.c:1356
msgid "Select"
msgstr "Selecteren"
-#: src/lib/elm_entry.c:1360
+#: src/lib/elm_entry.c:1361
msgid "Paste"
msgstr "Plakken"
-#: src/lib/elm_entry.c:1365 src/lib/elm_entry.c:1385
+#: src/lib/elm_entry.c:1366 src/lib/elm_entry.c:1386
msgid "More"
msgstr ""
-#: src/lib/elm_entry.c:1375
+#: src/lib/elm_entry.c:1376
msgid "Copy"
msgstr "Kopiëren"
-#: src/lib/elm_entry.c:1378
+#: src/lib/elm_entry.c:1379
msgid "Cut"
msgstr "Knippen"
-#: src/lib/elm_searchbar.c:199
+#: src/lib/elm_searchbar.c:214
msgid "Search"
msgstr "Zoeken"
msgstr ""
"Project-Id-Version: elementary\n"
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
-"POT-Creation-Date: 2011-11-25 15:46+0900\n"
+"POT-Creation-Date: 2011-11-21 18:14+0900\n"
"PO-Revision-Date: 2011-09-26 21:20+0900\n"
"Last-Translator: Sumanth Krishna Mannam <sumanth.m@samsung.com>\n"
"Language-Team: General\n"
msgid "Home"
msgstr ""
-#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1381
-#: src/lib/elm_searchbar.c:211
+#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1382
+#: src/lib/elm_searchbar.c:226
msgid "Cancel"
msgstr ""
msgid "DateTimeFormat"
msgstr "%b %d, %Y %I : %M %p"
-#: src/lib/elm_entry.c:1355
+#: src/lib/elm_entry.c:1356
msgid "Select"
msgstr ""
-#: src/lib/elm_entry.c:1360
+#: src/lib/elm_entry.c:1361
msgid "Paste"
msgstr ""
-#: src/lib/elm_entry.c:1365 src/lib/elm_entry.c:1385
+#: src/lib/elm_entry.c:1366 src/lib/elm_entry.c:1386
msgid "More"
msgstr ""
-#: src/lib/elm_entry.c:1375
+#: src/lib/elm_entry.c:1376
msgid "Copy"
msgstr ""
-#: src/lib/elm_entry.c:1378
+#: src/lib/elm_entry.c:1379
msgid "Cut"
msgstr ""
-#: src/lib/elm_searchbar.c:199
+#: src/lib/elm_searchbar.c:214
msgid "Search"
msgstr ""
msgstr ""
"Project-Id-Version: Elementary\n"
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
-"POT-Creation-Date: 2011-11-25 15:46+0900\n"
+"POT-Creation-Date: 2011-11-21 18:14+0900\n"
"PO-Revision-Date: 2011-09-26 21:20+0900\n"
"Last-Translator: Sumanth Krishna Mannam <sumanth.m@samsung.com>\n"
"Language-Team: General\n"
msgid "Home"
msgstr ""
-#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1381
-#: src/lib/elm_searchbar.c:211
+#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1382
+#: src/lib/elm_searchbar.c:226
msgid "Cancel"
msgstr "Cancelar"
msgid "DateTimeFormat"
msgstr "%d de %b de %Y %H : %M"
-#: src/lib/elm_entry.c:1355
+#: src/lib/elm_entry.c:1356
msgid "Select"
msgstr "Selecionar"
-#: src/lib/elm_entry.c:1360
+#: src/lib/elm_entry.c:1361
msgid "Paste"
msgstr "Colar"
-#: src/lib/elm_entry.c:1365 src/lib/elm_entry.c:1385
+#: src/lib/elm_entry.c:1366 src/lib/elm_entry.c:1386
msgid "More"
msgstr ""
-#: src/lib/elm_entry.c:1375
+#: src/lib/elm_entry.c:1376
msgid "Copy"
msgstr "Copiar"
-#: src/lib/elm_entry.c:1378
+#: src/lib/elm_entry.c:1379
msgid "Cut"
msgstr "Cortar"
-#: src/lib/elm_searchbar.c:199
+#: src/lib/elm_searchbar.c:214
msgid "Search"
msgstr "Búsqueda"
msgstr ""
"Project-Id-Version: elementary\n"
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
-"POT-Creation-Date: 2011-11-25 15:46+0900\n"
+"POT-Creation-Date: 2011-11-21 18:14+0900\n"
"PO-Revision-Date: 2011-09-26 21:20+0900\n"
"Last-Translator: Sumanth Krishna Mannam <sumanth.m@samsung.com>\n"
"Language-Team: General\n"
msgid "Home"
msgstr ""
-#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1381
-#: src/lib/elm_searchbar.c:211
+#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1382
+#: src/lib/elm_searchbar.c:226
msgid "Cancel"
msgstr ""
msgid "DateTimeFormat"
msgstr "%d %b %Yг. %H : %M"
-#: src/lib/elm_entry.c:1355
+#: src/lib/elm_entry.c:1356
msgid "Select"
msgstr ""
-#: src/lib/elm_entry.c:1360
+#: src/lib/elm_entry.c:1361
msgid "Paste"
msgstr ""
-#: src/lib/elm_entry.c:1365 src/lib/elm_entry.c:1385
+#: src/lib/elm_entry.c:1366 src/lib/elm_entry.c:1386
msgid "More"
msgstr ""
-#: src/lib/elm_entry.c:1375
+#: src/lib/elm_entry.c:1376
msgid "Copy"
msgstr ""
-#: src/lib/elm_entry.c:1378
+#: src/lib/elm_entry.c:1379
msgid "Cut"
msgstr ""
-#: src/lib/elm_searchbar.c:199
+#: src/lib/elm_searchbar.c:214
msgid "Search"
msgstr ""
msgstr ""
"Project-Id-Version: elementary\n"
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
-"POT-Creation-Date: 2011-11-25 15:46+0900\n"
+"POT-Creation-Date: 2011-11-21 18:14+0900\n"
"PO-Revision-Date: 2011-09-26 21:20+0900\n"
"Last-Translator: Sumanth Krishna Mannam <sumanth.m@samsung.com>\n"
"Language-Team: General\n"
msgid "Home"
msgstr ""
-#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1381
-#: src/lib/elm_searchbar.c:211
+#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1382
+#: src/lib/elm_searchbar.c:226
msgid "Cancel"
msgstr ""
msgid "DateTimeFormat"
msgstr "%d %b %Y %H : %M"
-#: src/lib/elm_entry.c:1355
+#: src/lib/elm_entry.c:1356
msgid "Select"
msgstr ""
-#: src/lib/elm_entry.c:1360
+#: src/lib/elm_entry.c:1361
msgid "Paste"
msgstr ""
-#: src/lib/elm_entry.c:1365 src/lib/elm_entry.c:1385
+#: src/lib/elm_entry.c:1366 src/lib/elm_entry.c:1386
msgid "More"
msgstr ""
-#: src/lib/elm_entry.c:1375
+#: src/lib/elm_entry.c:1376
msgid "Copy"
msgstr ""
-#: src/lib/elm_entry.c:1378
+#: src/lib/elm_entry.c:1379
msgid "Cut"
msgstr ""
-#: src/lib/elm_searchbar.c:199
+#: src/lib/elm_searchbar.c:214
msgid "Search"
msgstr ""
msgstr ""
"Project-Id-Version: elementary\n"
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
-"POT-Creation-Date: 2011-11-25 15:46+0900\n"
+"POT-Creation-Date: 2011-11-21 18:14+0900\n"
"PO-Revision-Date: 2011-09-26 21:20+0900\n"
"Last-Translator: Sumanth Krishna Mannam <sumanth.m@samsung.com>\n"
"Language-Team: General\n"
msgid "Home"
msgstr ""
-#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1381
-#: src/lib/elm_searchbar.c:211
+#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1382
+#: src/lib/elm_searchbar.c:226
msgid "Cancel"
msgstr ""
msgid "DateTimeFormat"
msgstr "%b %d, %Y %I : %M %p"
-#: src/lib/elm_entry.c:1355
+#: src/lib/elm_entry.c:1356
msgid "Select"
msgstr ""
-#: src/lib/elm_entry.c:1360
+#: src/lib/elm_entry.c:1361
msgid "Paste"
msgstr ""
-#: src/lib/elm_entry.c:1365 src/lib/elm_entry.c:1385
+#: src/lib/elm_entry.c:1366 src/lib/elm_entry.c:1386
msgid "More"
msgstr ""
-#: src/lib/elm_entry.c:1375
+#: src/lib/elm_entry.c:1376
msgid "Copy"
msgstr ""
-#: src/lib/elm_entry.c:1378
+#: src/lib/elm_entry.c:1379
msgid "Cut"
msgstr ""
-#: src/lib/elm_searchbar.c:199
+#: src/lib/elm_searchbar.c:214
msgid "Search"
msgstr ""
msgstr ""
"Project-Id-Version: elementary\n"
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
-"POT-Creation-Date: 2011-11-25 15:46+0900\n"
+"POT-Creation-Date: 2011-11-21 18:14+0900\n"
"PO-Revision-Date: 2011-09-26 21:20+0900\n"
"Last-Translator: Sumanth Krishna Mannam <sumanth.m@samsung.com>\n"
"Language-Team: General\n"
msgid "Home"
msgstr ""
-#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1381
-#: src/lib/elm_searchbar.c:211
+#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1382
+#: src/lib/elm_searchbar.c:226
msgid "Cancel"
msgstr ""
msgid "DateTimeFormat"
msgstr "%b %d, %Y %I : %M %p"
-#: src/lib/elm_entry.c:1355
+#: src/lib/elm_entry.c:1356
msgid "Select"
msgstr ""
-#: src/lib/elm_entry.c:1360
+#: src/lib/elm_entry.c:1361
msgid "Paste"
msgstr ""
-#: src/lib/elm_entry.c:1365 src/lib/elm_entry.c:1385
+#: src/lib/elm_entry.c:1366 src/lib/elm_entry.c:1386
msgid "More"
msgstr ""
-#: src/lib/elm_entry.c:1375
+#: src/lib/elm_entry.c:1376
msgid "Copy"
msgstr ""
-#: src/lib/elm_entry.c:1378
+#: src/lib/elm_entry.c:1379
msgid "Cut"
msgstr ""
-#: src/lib/elm_searchbar.c:199
+#: src/lib/elm_searchbar.c:214
msgid "Search"
msgstr ""
msgstr ""
"Project-Id-Version: elementary\n"
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
-"POT-Creation-Date: 2011-11-25 15:46+0900\n"
+"POT-Creation-Date: 2011-11-21 18:14+0900\n"
"PO-Revision-Date: 2011-09-26 21:20+0900\n"
"Last-Translator: Sumanth Krishna Mannam <sumanth.m@samsung.com>\n"
"Language-Team: General\n"
msgid "Home"
msgstr ""
-#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1381
-#: src/lib/elm_searchbar.c:211
+#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1382
+#: src/lib/elm_searchbar.c:226
msgid "Cancel"
msgstr ""
msgid "DateTimeFormat"
msgstr "%Y年 %m月 %d日 %p %I : %M"
-#: src/lib/elm_entry.c:1355
+#: src/lib/elm_entry.c:1356
msgid "Select"
msgstr ""
-#: src/lib/elm_entry.c:1360
+#: src/lib/elm_entry.c:1361
msgid "Paste"
msgstr ""
-#: src/lib/elm_entry.c:1365 src/lib/elm_entry.c:1385
+#: src/lib/elm_entry.c:1366 src/lib/elm_entry.c:1386
msgid "More"
msgstr ""
-#: src/lib/elm_entry.c:1375
+#: src/lib/elm_entry.c:1376
msgid "Copy"
msgstr ""
-#: src/lib/elm_entry.c:1378
+#: src/lib/elm_entry.c:1379
msgid "Cut"
msgstr ""
-#: src/lib/elm_searchbar.c:199
+#: src/lib/elm_searchbar.c:214
msgid "Search"
msgstr ""
msgstr ""
"Project-Id-Version: elementary\n"
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
-"POT-Creation-Date: 2011-11-25 15:46+0900\n"
+"POT-Creation-Date: 2011-11-21 18:14+0900\n"
"PO-Revision-Date: 2011-09-26 21:20+0900\n"
"Last-Translator: Sumanth Krishna Mannam <sumanth.m@samsung.com>\n"
"Language-Team: General\n"
msgid "Home"
msgstr ""
-#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1381
-#: src/lib/elm_searchbar.c:211
+#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1382
+#: src/lib/elm_searchbar.c:226
msgid "Cancel"
msgstr ""
msgid "DateTimeFormat"
msgstr "%Y年 %m月 %d日 %p %I : %M"
-#: src/lib/elm_entry.c:1355
+#: src/lib/elm_entry.c:1356
msgid "Select"
msgstr ""
-#: src/lib/elm_entry.c:1360
+#: src/lib/elm_entry.c:1361
msgid "Paste"
msgstr ""
-#: src/lib/elm_entry.c:1365 src/lib/elm_entry.c:1385
+#: src/lib/elm_entry.c:1366 src/lib/elm_entry.c:1386
msgid "More"
msgstr ""
-#: src/lib/elm_entry.c:1375
+#: src/lib/elm_entry.c:1376
msgid "Copy"
msgstr ""
-#: src/lib/elm_entry.c:1378
+#: src/lib/elm_entry.c:1379
msgid "Cut"
msgstr ""
-#: src/lib/elm_searchbar.c:199
+#: src/lib/elm_searchbar.c:214
msgid "Search"
msgstr ""
msgstr ""
"Project-Id-Version: elementary\n"
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
-"POT-Creation-Date: 2011-11-25 15:46+0900\n"
+"POT-Creation-Date: 2011-11-21 18:14+0900\n"
"PO-Revision-Date: 2011-09-26 21:20+0900\n"
"Last-Translator: Sumanth Krishna Mannam <sumanth.m@samsung.com>\n"
"Language-Team: General\n"
msgid "Home"
msgstr ""
-#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1381
-#: src/lib/elm_searchbar.c:211
+#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1382
+#: src/lib/elm_searchbar.c:226
msgid "Cancel"
msgstr ""
msgid "DateTimeFormat"
msgstr "%Y年 %m月 %d日 %p %I : %M"
-#: src/lib/elm_entry.c:1355
+#: src/lib/elm_entry.c:1356
msgid "Select"
msgstr ""
-#: src/lib/elm_entry.c:1360
+#: src/lib/elm_entry.c:1361
msgid "Paste"
msgstr ""
-#: src/lib/elm_entry.c:1365 src/lib/elm_entry.c:1385
+#: src/lib/elm_entry.c:1366 src/lib/elm_entry.c:1386
msgid "More"
msgstr ""
-#: src/lib/elm_entry.c:1375
+#: src/lib/elm_entry.c:1376
msgid "Copy"
msgstr ""
-#: src/lib/elm_entry.c:1378
+#: src/lib/elm_entry.c:1379
msgid "Cut"
msgstr ""
-#: src/lib/elm_searchbar.c:199
+#: src/lib/elm_searchbar.c:214
msgid "Search"
msgstr ""
test_map.c \
test_menu.c \
test_multi.c \
-test_multibuttonentry.c \
test_naviframe.c \
test_notify.c \
test_pager.c \
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);
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);
#endif
#ifndef ELM_LIB_QUICKLAUNCH
-
-static void
-_dismissed(void *data __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__)
-{
- evas_object_del(obj);
-}
-
-static void
-_print_current_dir(Evas_Object *obj)
-{
- Elm_Ctxpopup_Direction dir;
- dir = elm_ctxpopup_direction_get(obj);
-
- switch(dir)
- {
- case ELM_CTXPOPUP_DIRECTION_LEFT:
- printf("ctxpopup direction: left!\n");
- break;
- case ELM_CTXPOPUP_DIRECTION_RIGHT:
- printf("ctxpopup direction: right!\n");
- break;
- case ELM_CTXPOPUP_DIRECTION_UP:
- printf("ctxpopup direction: up!\n");
- break;
- case ELM_CTXPOPUP_DIRECTION_DOWN:
- printf("ctxpopup direction: down!\n");
- break;
- case ELM_CTXPOPUP_DIRECTION_UNKNOWN:
- printf("ctxpopup direction: unknow!\n");
- break;
- }
-}
-
static void
_ctxpopup_item_cb(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
{
printf("ctxpopup item selected: %s\n",
- elm_object_item_text_get(event_info));
+ elm_ctxpopup_item_label_get(event_info));
}
#define ITEM_NEW(_hov, _label, _icon) \
_list_item_cb(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
Evas_Object *ctxpopup, *ic;
- Elm_Object_Item *it;
+ Elm_Ctxpopup_Item *it;
Evas_Coord x,y;
ctxpopup = elm_ctxpopup_add(obj);
- evas_object_smart_callback_add(ctxpopup,
- "dismissed",
- _dismissed,
- NULL);
ITEM_NEW(ctxpopup, "Go to home folder", "home");
ITEM_NEW(ctxpopup, "Save file", "file");
ITEM_NEW(ctxpopup, "Delete file", "delete");
ITEM_NEW(ctxpopup, "Navigate to folder", "folder");
- elm_object_item_disabled_set(it, EINA_TRUE);
+ elm_ctxpopup_item_disabled_set(it, EINA_TRUE);
ITEM_NEW(ctxpopup, "Edit entry", "edit");
ITEM_NEW(ctxpopup, "Set date and time", "clock");
- elm_object_item_disabled_set(it, EINA_TRUE);
+ elm_ctxpopup_item_disabled_set(it, EINA_TRUE);
evas_pointer_canvas_xy_get(evas_object_evas_get(obj), &x, &y);
evas_object_size_hint_max_set(ctxpopup, 240, 240);
evas_object_move(ctxpopup, x, y);
evas_object_show(ctxpopup);
- _print_current_dir(ctxpopup);
}
static void
_list_item_cb2(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
Evas_Object *ctxpopup, *ic;
- Elm_Object_Item *it;
+ Elm_Ctxpopup_Item *it;
Evas_Coord x,y;
ctxpopup = elm_ctxpopup_add(obj);
- evas_object_smart_callback_add(ctxpopup,
- "dismissed",
- _dismissed,
- NULL);
ITEM_NEW(ctxpopup, NULL, "home");
ITEM_NEW(ctxpopup, NULL, "file");
ITEM_NEW(ctxpopup, NULL, "delete");
ITEM_NEW(ctxpopup, NULL, "folder");
ITEM_NEW(ctxpopup, NULL, "edit");
- elm_object_item_disabled_set(it, EINA_TRUE);
+ elm_ctxpopup_item_disabled_set(it, EINA_TRUE);
ITEM_NEW(ctxpopup, NULL, "clock");
evas_pointer_canvas_xy_get(evas_object_evas_get(obj), &x, &y);
evas_object_size_hint_max_set(ctxpopup, 240, 240);
evas_object_move(ctxpopup, x, y);
evas_object_show(ctxpopup);
- _print_current_dir(ctxpopup);
}
static void
_list_item_cb3(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
Evas_Object *ctxpopup, *ic;
- Elm_Object_Item *it;
+ Elm_Ctxpopup_Item *it;
Evas_Coord x,y;
ctxpopup = elm_ctxpopup_add(obj);
- evas_object_smart_callback_add(ctxpopup,
- "dismissed",
- _dismissed,
- NULL);
ITEM_NEW(ctxpopup, "Eina", NULL);
ITEM_NEW(ctxpopup, "Eet", NULL);
ITEM_NEW(ctxpopup, "Evas", NULL);
ITEM_NEW(ctxpopup, "Ecore", NULL);
- elm_object_item_disabled_set(it, EINA_TRUE);
+ elm_ctxpopup_item_disabled_set(it, EINA_TRUE);
ITEM_NEW(ctxpopup, "Embryo", NULL);
ITEM_NEW(ctxpopup, "Edje", NULL);
evas_pointer_canvas_xy_get(evas_object_evas_get(obj), &x, &y);
evas_object_move(ctxpopup, x, y);
evas_object_show(ctxpopup);
- _print_current_dir(ctxpopup);
}
static void
_list_item_cb4(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
Evas_Object *ctxpopup, *ic;
- Elm_Object_Item *it;
+ Elm_Ctxpopup_Item *it;
Evas_Coord x,y;
ctxpopup = elm_ctxpopup_add(obj);
- evas_object_smart_callback_add(ctxpopup,
- "dismissed",
- _dismissed,
- NULL);
-
elm_ctxpopup_horizontal_set(ctxpopup, EINA_TRUE);
ITEM_NEW(ctxpopup, NULL, "home");
evas_object_size_hint_max_set(ctxpopup, 240, 240);
evas_object_move(ctxpopup, x, y);
evas_object_show(ctxpopup);
- _print_current_dir(ctxpopup);
}
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);
}
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);
// 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++)
{
// 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++)
{
+#include <Elementary.h>
#ifdef HAVE_CONFIG_H
# include "elementary_config.h"
#endif
-
-#include <Elementary.h>
-
-#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,
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
/* make the file list a tree with dir expandable in place */
elm_fileselector_expandable_set(fs, EINA_FALSE);
/* start the fileselector in the home dir */
- elm_fileselector_path_set(fs, getenv("HOME"));
+ path = getenv("HOME");
+ if (!path) path = "./";
+ elm_fileselector_path_set(fs, path);
/* allow fs to expand in x & y */
evas_object_size_hint_weight_set(fs, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(fs, EVAS_HINT_FILL, EVAS_HINT_FILL);
"wood_01.jpg",
};
-static Elm_Gengrid_Item_Class gic, ggic;
+static Elm_Gengrid_Item_Class gic;
static void
_horizontal_grid(void *data, Evas_Object *obj, void *event_info __UNUSED__)
}
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;
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);
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
{
Evas_Object *win, *bg, *gl, *bt[8], *bx, *bx2, *bx3;
Elm_Genlist_Item *gli = NULL, *git = NULL;
- int i, bt_num;
+ int i, bt_count, bt_num;
win = elm_win_add(NULL, "genlist-group", ELM_WIN_BASIC);
elm_win_title_set(win, "Genlist Group");
elm_box_pack_end(bx, bx3);
evas_object_show(bx3);
+ bt_count = 0;
for (i = 0; i < 500; i++)
{
if (!(i % 10))
{
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");
for (i = 0; i < 1000; i++)
{
- elm_genlist_item_append(gl, &itc1,
- (void *)(long)i/* item data */,
- NULL/* parent */,
- ELM_GENLIST_ITEM_NONE,
- gl_sel/* func */,
- (void *)(long)(i * 10)/* func data */);
+ gli = elm_genlist_item_append(gl, &itc1,
+ (void *)(long)i/* item data */,
+ NULL/* parent */,
+ ELM_GENLIST_ITEM_NONE,
+ gl_sel/* func */,
+ (void *)(long)(i * 10)/* func data */);
}
evas_object_resize(win, 400, 500);
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);
+++ /dev/null
-#include <Elementary.h>
-#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
}
void
-_promote(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
-{
- elm_naviframe_item_promote(data);
-}
-
-void
_page5(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
- Evas_Object *bt, *bt2, *content, *nf = data;
+ Evas_Object *bt, *content, *nf = data;
Elm_Object_Item *it;
bt = elm_button_add(nf);
evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_object_text_set(bt, "Prev");
- bt2 = elm_button_add(nf);
- evas_object_size_hint_align_set(bt2, EVAS_HINT_FILL, EVAS_HINT_FILL);
- elm_object_text_set(bt2, "Page 1");
- evas_object_smart_callback_add(bt2, "clicked", _promote,
- evas_object_data_get(nf, "page1"));
-
content = _content_new(nf, img5);
it = elm_naviframe_item_insert_after(elm_naviframe_top_item_get(nf),
"Page 5",
bt,
- bt2,
+ NULL,
content,
NULL);
bt,
content,
NULL);
-
ic = elm_icon_add(nf);
snprintf(buf, sizeof(buf), "%s/images/logo_small.png",
elm_app_data_dir_get());
elm_icon_file_set(ic, buf, NULL);
evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
- elm_object_item_part_content_set(it, "icon", ic);
+ elm_object_item_content_part_set(it, "icon", ic);
elm_naviframe_item_title_visible_set(it, EINA_FALSE);
evas_object_smart_callback_add(content, "clicked", _title_visible, it);
}
elm_icon_file_set(ic, buf, NULL);
evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
- elm_object_item_part_content_set(it, "icon", ic);
+ elm_object_item_content_part_set(it, "icon", ic);
}
void
content = _content_new(nf, img2);
it = elm_naviframe_item_push(nf, "Page 2", NULL, bt, content, NULL);
- elm_object_item_part_text_set(it, "subtitle", "Here is sub-title part!");
+ elm_object_item_text_part_set(it, "subtitle", "Here is sub-title part!");
}
void
test_naviframe(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
Evas_Object *win, *bg, *nf, *btn, *content;
- Elm_Object_Item *it;
win = elm_win_add(NULL, "naviframe", ELM_WIN_BASIC);
elm_win_title_set(win, "Naviframe");
evas_object_show(btn);
content = _content_new(nf, img1);
- it = elm_naviframe_item_push(nf, "Page 1", NULL, btn, content, NULL);
- evas_object_data_set(nf, "page1", it);
+ elm_naviframe_item_push(nf, "Page 1", NULL, btn, content, NULL);
evas_object_resize(win, 400, 600);
evas_object_show(win);
static void _bstatus(void *data, Evas_Object *obj, void *event_info);
static void _tstatus(void *data, Evas_Object *obj, void *event_info);
static char *_label_get(void *data, Evas_Object *obj, const char *source);
-static Evas_Object *_content_get(void *data, Evas_Object *obj, const char *source);
+static Evas_Object *_icon_get(void *data, Evas_Object *obj, const char *source);
static Eina_Bool _state_get(void *data, Evas_Object *obj, const char *source);
static void _item_del(void *data, Evas_Object *obj);
static void _fill_list(Evas_Object *obj);
}
static Evas_Object *
-_content_get(void *data, Evas_Object *obj, const char *source)
+_icon_get(void *data, Evas_Object *obj, const char *source)
{
if (!strcmp(source, "elm.swallow.icon"))
{
struct dirent *de;
Eina_List *dirs = NULL, *l;
char *real;
+ const char *home;
- if (!(d = opendir(getenv("HOME")))) return;
+#ifdef _WIN32
+ home = evil_homedir_get();
+#else
+ home = getenv("HOME");
+#endif
+ if (!home)
+ home = "./";
+ if (!(d = opendir(home))) return;
while ((de = readdir(d)))
{
char buff[PATH_MAX];
if (de->d_name[0] == '.') continue;
- snprintf(buff, sizeof(buff), "%s/%s", getenv("HOME"), de->d_name);
+ snprintf(buff, sizeof(buff), "%s/%s", home, de->d_name);
if (!ecore_file_is_dir(buff)) continue;
real = ecore_file_realpath(buff);
dirs = eina_list_append(dirs, real);
itc.item_style = "default";
itc.func.label_get = _label_get;
- itc.func.icon_get = _content_get;
+ itc.func.icon_get = _icon_get;
itc.func.state_get = _state_get;
itc.func.del = _item_del;
test_segment_control(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
Evas_Object *win, *bg, *ic, *ic1, *ic2, *ic3, *ic4, *ic5;
- Elm_Segment_Item *it;
+ Elm_Segment_Item *it1, *it2, *it3, *it4, *it5;
Evas_Object * in_layout;
Evas_Object *segment1, *segment2, *segment3, *segment4;
evas_object_size_hint_aspect_set(ic1, EVAS_ASPECT_CONTROL_BOTH, 1, 1);
segment1 = elm_segment_control_add(win);
- elm_segment_control_item_add(segment1, NULL, "Only Text");
- it = elm_segment_control_item_add(segment1, ic, NULL);
- elm_segment_control_item_selected_set(it, EINA_TRUE);
- elm_segment_control_item_add(segment1, ic1, "Text_Icon_test");
- elm_segment_control_item_add(segment1, NULL, "Seg4");
- elm_segment_control_item_add(segment1, NULL, "Seg5");
+ it1 = elm_segment_control_item_add(segment1, NULL, "Only Text");
+ it2 = elm_segment_control_item_add(segment1, ic, NULL);
+ elm_segment_control_item_selected_set(it2, EINA_TRUE);
+ it3 = elm_segment_control_item_add(segment1, ic1, "Text_Icon_test");
+ it4 = elm_segment_control_item_add(segment1, NULL, "Seg4");
+ it5 = elm_segment_control_item_add(segment1, NULL, "Seg5");
segment2 = elm_segment_control_add(win);
- elm_segment_control_item_add(segment2, NULL, "SegmentItem");
- it = elm_segment_control_item_add(segment2, NULL, "SegmentItem");
- elm_segment_control_item_selected_set(it, EINA_TRUE);
- elm_segment_control_item_add(segment2, NULL, "SegmentControlItem");
- elm_segment_control_item_add(segment2, NULL, "SegmentItem");
+ it1 = elm_segment_control_item_add(segment2, NULL, "SegmentItem");
+ it2 = elm_segment_control_item_add(segment2, NULL, "SegmentItem");
+ elm_segment_control_item_selected_set(it2, EINA_TRUE);
+ it3 = elm_segment_control_item_add(segment2, NULL, "SegmentControlItem");
+ it4 = elm_segment_control_item_add(segment2, NULL, "SegmentItem");
ic2 = elm_icon_add(in_layout);
snprintf(buf3, sizeof(buf3), "%s/images/logo.png", elm_app_data_dir_get());
evas_object_size_hint_aspect_set(ic4, EVAS_ASPECT_CONTROL_BOTH, 1, 1);
segment3 = elm_segment_control_add(win);
- elm_segment_control_item_add(segment3, ic2, NULL);
- it = elm_segment_control_item_add(segment3, ic3, NULL);
- elm_segment_control_item_selected_set(it, EINA_TRUE);
- elm_segment_control_item_add(segment3, ic4, NULL);
+ it1 = elm_segment_control_item_add(segment3, ic2, NULL);
+ it2 = elm_segment_control_item_add(segment3, ic3, NULL);
+ elm_segment_control_item_selected_set(it2, EINA_TRUE);
+ it3 = elm_segment_control_item_add(segment3, ic4, NULL);
ic5 = elm_icon_add(in_layout);
snprintf(buf6, sizeof(buf6), "%s/images/logo.png", elm_app_data_dir_get());
evas_object_size_hint_aspect_set(ic5, EVAS_ASPECT_CONTROL_BOTH, 1, 1);
segment4 = elm_segment_control_add(win);
- elm_segment_control_item_add(segment4, NULL, "Disabled");
- it = elm_segment_control_item_add(segment4, ic5, "Disabled");
- elm_segment_control_item_selected_set(it, EINA_TRUE);
- elm_segment_control_item_add(segment4, NULL, "Disabled");
+ it1 = elm_segment_control_item_add(segment4, NULL, "Disabled");
+ it2 = elm_segment_control_item_add(segment4, ic5, "Disabled");
+ elm_segment_control_item_selected_set(it2, EINA_TRUE);
+ it3 = elm_segment_control_item_add(segment4, NULL, "Disabled");
elm_object_disabled_set(segment4, EINA_TRUE);
elm_object_part_content_set(in_layout, "segment1", segment1);
lst = elm_list_add(win);
li = elm_list_item_append(lst, "Hello", NULL, NULL, NULL, NULL);
- elm_list_item_tooltip_content_cb_set(li, _tt_item_label, NULL, NULL);
- elm_list_item_tooltip_size_restrict_disable(li, EINA_TRUE);
+ elm_list_item_tooltip_text_set(li, "Something useful here?");
li = elm_list_item_append(lst, "Icon Tooltip", NULL, NULL, NULL, NULL);
elm_list_item_tooltip_content_cb_set(li, _tt_item_icon, NULL, NULL);
li = elm_list_item_append(lst, "Big Icon Tooltip", NULL, NULL, NULL, NULL);
elm_list_item_tooltip_content_cb_set(li, _tt_item_icon2, NULL, NULL);
- elm_list_item_tooltip_style_set(li, "transparent");
- elm_list_item_tooltip_size_restrict_disable(li, EINA_TRUE);
- li = elm_list_item_append(lst, "Insanely Big Icon Tooltip", NULL, NULL, NULL, NULL);
- elm_list_item_tooltip_content_cb_set(li, _tt_item_icon3, NULL, NULL);
- elm_list_item_tooltip_style_set(li, "transparent");
elm_list_item_tooltip_size_restrict_disable(li, EINA_TRUE);
evas_object_size_hint_weight_set(lst, EVAS_HINT_EXPAND,
EVAS_HINT_EXPAND);
module_la_SOURCES = private.h \
modules.inc \
elm.c \
-elm_actionslider.c \
elm_anchorblock.c \
elm_anchorview.c \
elm_bubble.c \
elm_button.c \
-elm_calendar.c \
elm_check.c \
elm_clock.c \
-elm_colorpalette.c \
+elm_colorpalette.c\
+elm_calendar.c \
elm_datefield.c \
elm_entry.c \
elm_fileselector.c \
elm_fileselector_button.c \
elm_fileselector_entry.c \
-elm_frame.c \
elm_gengrid.c \
elm_genlist.c \
elm_hoversel.c \
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 \
elm_spinner.c \
elm_thumb.c \
elm_toggle.c \
-elm_toolbar.c \
-elm_video.c \
-elm_web.c
+elm_toolbar.c
module_la_LIBADD = $(top_builddir)/src/lib/libelementary.la
module_la_LDFLAGS = -no-undefined -module -avoid-version -shared -fPIC
ctxt = malloc(sizeof(Elm_External_Signals_Proxy_Context) * total);
if (!ctxt) return;
evas_object_event_callback_add
- (obj, EVAS_CALLBACK_FREE, _external_signal_proxy_free_cb, ctxt);
+ (obj, EVAS_CALLBACK_DEL, _external_signal_proxy_free_cb, ctxt);
for (; cls_count > 0; cls_count--, cls_descs++, ctxt++)
{
Evas_Object *content = \
external_common_param_edje_object_get(obj, param);
if ((strcmp(param->s, "")) && (!content)) return EINA_FALSE;
- elm_object_content_set(obj, content);
+ elm_bubble_content_set(obj, content);
return EINA_TRUE;
}
}
static Evas_Object *external_bubble_content_get(void *data __UNUSED__,
const Evas_Object *obj __UNUSED__, const char *content __UNUSED__)
{
- if (!strcmp(content, "content"))
- return elm_object_content_get(obj);
- ERR("unknown content '%s'", content);
- return NULL;
+ ERR("No content.");
+ return NULL;
}
static void
} 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;
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;
}
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"))
{
}
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;
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
+
+
#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
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
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));
static Eina_Bool
external_colorpalette_param_get(void *data __UNUSED__, const Evas_Object *obj __UNUSED__, Edje_External_Param *param __UNUSED__)
{
- //FIXME:getter functions not provided
- return EINA_FALSE;
+ return EINA_FALSE;
+ //FIX ME:getter functions not provided
}
static void *
Elm_Params_colorpalette *mem;
Edje_External_Param *param;
const Eina_List *l;
- int k,m,ll;
+ int k,m,ll ;
k = m = ll = 0;
- char test[5];
+ char test[5] ;
int d = 0;
- char *s = NULL;
+ char *s = NULL ;
mem = calloc(1, sizeof(Elm_Params_colorpalette));
if (!mem)
return NULL;
EINA_LIST_FOREACH(params, l, param)
{
- if (!strcmp(param->name, "row"))
- {
- mem->row = param->i;
- }
+ if (!strcmp(param->name, "row"))
+ {
+ mem->row = param->i;
+ }
else if (!strcmp(param->name, "col"))
+ {
+ mem->col = param->i;
+ }
+ else if (!strcmp(param->name, "color_num"))
+ {
+ mem->color_num = param->i ;
+ }
+
+ else if (!strcmp(param->name, "color_set"))
{
- mem->col = param->i;
- }
- else if (!strcmp(param->name, "color_num"))
- {
- mem->color_num = param->i;
- }
- else if (!strcmp(param->name, "color_set"))
- {
- mem->color = calloc(mem->color_num, sizeof(Elm_Colorpalette_Color));
+ mem->color = (Elm_Colorpalette_Color*) calloc (mem->color_num, sizeof(Elm_Colorpalette_Color));
s = (char*)param->i;
- while (k < (mem->color_num) && (ll <= (int)strlen(s)))
+ while(k <(mem->color_num) && (ll <= (int)strlen(s)))
{
- if (d == 0)
- {
- while(s[ll]!=':')
- test[m++] = s[ll++];
- test[m] = 0;
- ll++;
- m = 0;
- mem->color[k].r = atoi(test);
- d++;
- }
- if (d == 1)
- {
- while(s[ll]!=':')
- test[m++] = s[ll++];
- test[m] = 0;
- ll++;
- m = 0;
- mem->color[k].g = atoi(test);
- d++;
- }
- if (d == 2)
- {
- while(s[ll]!='/' && m<3)
- test[m++] = s[ll++];
- test[m] = 0;
- ll++;
- m = 0;
- mem->color[k].b = atoi(test);
- d = 0;
- }
- }
+ if(d == 0)
+ {
+ while(s[ll]!=':')
+ test[m++] = s[ll++];
+ test[m]= 0 ;
+ ll++ ;
+ m = 0 ;
+ mem->color[k].r = atoi(test) ;
+ d++ ;
+ }
+ if(d == 1)
+ {
+ while(s[ll]!=':')
+ test[m++] = s[ll++];
+ test[m]= 0 ;
+ ll++ ;
+ m = 0 ;
+ mem->color[k].g = atoi(test) ;
+ d++ ;
+ }
+ if(d == 2)
+ {
+ while(s[ll]!='/' && m<3)
+ test[m++] = s[ll++];
+ test[m]= 0 ;
+ ll++ ;
+ m = 0 ;
+ mem->color[k].b = atoi(test) ;
+ d = 0 ;
+ }
+ }
k++;
}
- }
- return mem;
+ }
+ return mem;
}
-static Evas_Object *
-external_colorpalette_content_get(void *data __UNUSED__,
- const Evas_Object *obj __UNUSED__,
- const char *content __UNUSED__)
+static Evas_Object *external_colorpalette_content_get(void *data __UNUSED__,
+ const Evas_Object *obj __UNUSED__, const char *content __UNUSED__)
{
- ERR("No content.");
- return NULL;
+ ERR("No content.");
+ return NULL;
}
static void
if (mem->color)
free(mem->color);
if (mem->color_set)
- free(mem->color_set);
+ free(mem->color_set) ;
free(params);
}
#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
typedef struct _Elm_Params_Genlist
{
Elm_Params base;
- const char *horizontal;
+ const char *horizontal_mode;
Eina_Bool multi:1;
Eina_Bool multi_exists:1;
Eina_Bool always_select:1;
Eina_Bool v_bounce_exists:1;
} Elm_Params_Genlist;
-static const char* list_horizontal_choices[] = {"compress", "scroll", "limit", "expand", NULL};
+static const char* list_horizontal_mode_choices[] = {"compress", "scroll", "limit", "expand", NULL};
static Elm_List_Mode
-_list_horizontal_setting_get(const char *horizontal_str)
+_list_horizontal_mode_setting_get(const char *horizontal_mode_str)
{
unsigned int i;
- assert(sizeof(list_horizontal_choices)/sizeof(list_horizontal_choices[0]) == ELM_LIST_LAST + 1);
+ assert(sizeof(list_horizontal_mode_choices)/sizeof(list_horizontal_mode_choices[0]) == ELM_LIST_LAST + 1);
for (i = 0; i < ELM_LIST_LAST; i++)
{
- if (!strcmp(horizontal_str, list_horizontal_choices[i]))
+ if (!strcmp(horizontal_mode_str, list_horizontal_mode_choices[i]))
return i;
}
return ELM_LIST_LAST;
else if (from_params) p = from_params;
else return;
- if (p->horizontal)
+ if (p->horizontal_mode)
{
- Elm_List_Mode set = _list_horizontal_setting_get(p->horizontal);
+ Elm_List_Mode set = _list_horizontal_mode_setting_get(p->horizontal_mode);
if (set != ELM_LIST_LAST)
elm_genlist_horizontal_mode_set(obj, set);
{
if (param->type == EDJE_EXTERNAL_PARAM_TYPE_CHOICE)
{
- Elm_List_Mode set = _list_horizontal_setting_get(param->s);
+ Elm_List_Mode set = _list_horizontal_mode_setting_get(param->s);
if (set == ELM_LIST_LAST) return EINA_FALSE;
elm_genlist_horizontal_mode_set(obj, set);
if (list_horizontal_mode_set == ELM_LIST_LAST)
return EINA_FALSE;
- param->s = list_horizontal_choices[list_horizontal_mode_set];
+ param->s = list_horizontal_mode_choices[list_horizontal_mode_set];
return EINA_TRUE;
}
}
EINA_LIST_FOREACH(params, l, param)
{
if (!strcmp(param->name, "horizontal mode"))
- mem->horizontal = eina_stringshare_add(param->s);
+ mem->horizontal_mode = eina_stringshare_add(param->s);
else if (!strcmp(param->name, "multi select"))
{
mem->multi = !!param->i;
{
Elm_Params_Genlist *mem = params;
- if (mem->horizontal)
- eina_stringshare_del(mem->horizontal);
+ if (mem->horizontal_mode)
+ eina_stringshare_del(mem->horizontal_mode);
free(mem);
}
static Edje_External_Param_Info external_genlist_params[] = {
DEFINE_EXTERNAL_COMMON_PARAMS,
- EDJE_EXTERNAL_PARAM_INFO_CHOICE_FULL("horizontal mode", "scroll", list_horizontal_choices),
+ EDJE_EXTERNAL_PARAM_INFO_CHOICE_FULL("horizontal mode", "scroll", list_horizontal_mode_choices),
EDJE_EXTERNAL_PARAM_INFO_BOOL("multi select"),
EDJE_EXTERNAL_PARAM_INFO_BOOL("always select"),
EDJE_EXTERNAL_PARAM_INFO_BOOL("no select"),
--- /dev/null
+#include <assert.h>
+
+#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");
--- /dev/null
+#include <assert.h>
+
+#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");
elm_object_part_text_set(obj, "off", p->off);
if (p->state_exists)
- elm_check_state_set(obj, p->state);
+ elm_toggle_state_set(obj, p->state);
}
static Eina_Bool
{
if (param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL)
{
- elm_check_state_set(obj, param->i);
+ elm_toggle_state_set(obj, param->i);
return EINA_TRUE;
}
}
{
if (param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL)
{
- param->i = elm_check_state_get(obj);
+ param->i = elm_toggle_state_get(obj);
return EINA_TRUE;
}
}
};
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")
-DEFINE_TYPE(actionslider)
DEFINE_TYPE(anchorblock)
DEFINE_TYPE(anchorview)
DEFINE_TYPE(bubble)
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)
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)
--- /dev/null
+//Compile with:
+//gcc -g `pkg-config --cflags --libs elementary` animator_example_01.c -o animator_example_01
+
+#include <Elementary.h>
+#include <limits.h>
+#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()
static void
_ctxpopup_item_cb(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
{
- printf("ctxpopup item selected: %s\n", elm_object_item_text_get(event_info));
+ printf("ctxpopup item selected: %s\n", elm_ctxpopup_item_label_get(event_info));
}
Elm_Object_Item *item_new(Evas_Object *ctxpopup, const char * label, const char *icon)
item_new(ctxpopup, "Save file", "file");
item_new(ctxpopup, "Delete file", "delete");
it = item_new(ctxpopup, "Navigate to folder", "folder");
- elm_object_item_disabled_set(it, EINA_TRUE);
+ elm_ctxpopup_item_disabled_set(it, EINA_TRUE);
item_new(ctxpopup, "Edit entry", "edit");
it = item_new(ctxpopup, "Set date and time", "clock");
- elm_object_item_disabled_set(it, EINA_TRUE);
+ elm_ctxpopup_item_disabled_set(it, EINA_TRUE);
evas_pointer_canvas_xy_get(evas_object_evas_get(obj), &x, &y);
evas_object_size_hint_max_set(ctxpopup, 240, 240);
item_new(ctxpopup, NULL, "delete");
item_new(ctxpopup, NULL, "folder");
it = item_new(ctxpopup, NULL, "edit");
- elm_object_item_disabled_set(it, EINA_TRUE);
+ elm_ctxpopup_item_disabled_set(it, EINA_TRUE);
item_new(ctxpopup, NULL, "clock");
evas_pointer_canvas_xy_get(evas_object_evas_get(obj), &x, &y);
Evas_Object *obj __UNUSED__,
void *event_info __UNUSED__)
{
- Elm_Object_Item *it;
+ Elm_Flipselector_Item *it;
Evas_Object *fp = data;
it = elm_flipselector_selected_item_get(fp);
Evas_Object *obj __UNUSED__,
void *event_info __UNUSED__)
{
- Elm_Object_Item *it;
+ Elm_Flipselector_Item *it;
Evas_Object *fp = data;
it = elm_flipselector_selected_item_get(fp);
if (strcmp(ev->keyname, "f") == 0) /* print first item's label */
{
- Elm_Object_Item *it;
+ Elm_Flipselector_Item *it;
it = elm_flipselector_first_item_get(fs);
fprintf(stdout, "Flip selector's first item is: %s\n", it ?
- elm_object_item_text_get(it) : "none");
+ elm_flipselector_item_label_get(it) : "none");
return;
}
if (strcmp(ev->keyname, "l") == 0) /* print last item's label */
{
- Elm_Object_Item *it;
+ Elm_Flipselector_Item *it;
it = elm_flipselector_last_item_get(fs);
fprintf(stdout, "Flip selector's last item is: %s\n", it ?
- elm_object_item_text_get(it) : "none");
+ elm_flipselector_item_label_get(it) : "none");
return;
}
if (strcmp(ev->keyname, "s") == 0) /* print selected item's label */
{
- Elm_Object_Item *it;
+ Elm_Flipselector_Item *it;
it = elm_flipselector_selected_item_get(fs);
fprintf(stdout, "Flip selector's selected item is: %s\n", it ?
- elm_object_item_text_get(it) : "none");
+ elm_flipselector_item_label_get(it) : "none");
return;
}
@author Michael Bouchaud <michael.bouchaud@@gmail.com>
@author Jonathan Atton (Watchwolf) <jonathan.atton@@gmail.com>
@author Brian Wang <brian.wang.0721@@gmail.com>
-@author Mike Blumenkrantz (discomfitor/zmike) <michael.blumenkrantz@@gmail.com>
+@author Mike Blumenkrantz (zmike) <mike@@zentific.com>
@author Samsung Electronics <tbd>
@author Samsung SAIT <tbd>
@author Brett Nash <nash@@nash.id.au>
@author Shinwoo Kim <kimcinoo@@gmail.com>
@author Govindaraju SM <govi.sm@@samsung.com> <govism@@gmail.com>
@author Prince Kumar Dubey <prince.dubey@@samsung.com> <prince.dubey@@gmail.com>
-@author Sung W. Park <sungwoo@@gmail.com>
-@author Thierry el Borgi <thierry@@substantiel.fr>
-@author Shilpa Singh <shilpa.singh@@samsung.com> <shilpasingh.o@@gmail.com>
-@author Chanwook Jung <joey.jung@@samsung.com>
-@author Hyoyoung Chang <hyoyoung.chang@@samsung.com>
-@author Guillaume "Kuri" Friloux <guillaume.friloux@@asp64.com>
-@author Kim Yunhan <spbear@@gmail.com>
-@author Bluezery <ohpowel@@gmail.com>
-@author Nicolas Aguirre <aguirre.nicolas@@gmail.com>
-@author Sanjeev BA <iamsanjeev@@gmail.com>
+@author Sung W. Park <sungwoo@gmail.com>
+@author Thierry el Borgi <thierry@substantiel.fr>
+@author Shilpa Singh <shilpa.singh@samsung.com> <shilpasingh.o@gmail.com>
+@author Chanwook Jung <joey.jung@samsung.com>
+@author Hyoyoung Chang <hyoyoung.chang@samsung.com>
+@author Guillaume "Kuri" Friloux <guillaume.friloux@asp64.com>
+@author Kim Yunhan <spbear@gmail.com>
Please contact <enlightenment-devel@lists.sourceforge.net> to get in
contact with the developers and maintainers.
#include <Ecore_Evas.h>
#include <Ecore_File.h>
#include <Ecore_IMF.h>
-@ELEMENTARY_ECORE_CON_INC@
+#include <Ecore_Con.h>
#include <Edje.h>
#ifdef ELM_EDBUS
# 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" {
*/
typedef Evas_Object *(*Elm_Tooltip_Item_Content_Cb) (void *data, Evas_Object *obj, Evas_Object *tooltip, void *item);
- typedef Eina_Bool (*Elm_Event_Cb) (void *data, Evas_Object *obj, Evas_Object *src, Evas_Callback_Type type, void *event_info); /**< Function prototype definition for callbacks on input events happening on Elementary widgets. @a data will receive the user data pointer passed to elm_object_event_callback_add(). @a src will be a pointer to the widget on which the input event took place. @a type will get the type of this event and @a event_info, the struct with details on this event. */
+ typedef Eina_Bool (*Elm_Event_Cb) (void *data, Evas_Object *obj, Evas_Object *src, Evas_Callback_Type type, void *event_info);
#ifndef ELM_LIB_QUICKLAUNCH
#define ELM_MAIN() int main(int argc, char **argv) {elm_init(argc, argv); return elm_main(argc, argv);} /**< macro to be used after the elm_main() function */
#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
* @param content The new content of the object item
*
* @note Elementary object items may have many contents
- * @deprecated Use elm_object_item_part_content_set instead.
- * @ingroup General
- */
- EINA_DEPRECATED EAPI void elm_object_item_content_part_set(Elm_Object_Item *it, const char *part, Evas_Object *content);
-
- /**
- * Set a content of an object item
- *
- * @param it The Elementary object item
- * @param part The content part name to set (NULL for the default content)
- * @param content The new content of the object item
- *
- * @note Elementary object items may have many contents
*
* @ingroup General
*/
- EAPI void elm_object_item_part_content_set(Elm_Object_Item *it, const char *part, Evas_Object *content);
+ EAPI void elm_object_item_content_part_set(Elm_Object_Item *it, const char *part, Evas_Object *content);
-#define elm_object_item_content_set(it, content) elm_object_item_part_content_set((it), NULL, (content))
-
- /**
- * Get a content of an object item
- *
- * @param it The Elementary object item
- * @param part The content part name to unset (NULL for the default content)
- * @return content of the object item or NULL for any error
- *
- * @note Elementary object items may have many contents
- * @deprecated Use elm_object_item_part_content_get instead.
- * @ingroup General
- */
- EAPI Evas_Object *elm_object_item_content_part_get(const Elm_Object_Item *it, const char *part);
+#define elm_object_item_content_set(it, content) elm_object_item_content_part_set((it), NULL, (content))
/**
* Get a content of an object item
*
* @ingroup General
*/
- EAPI Evas_Object *elm_object_item_part_content_get(const Elm_Object_Item *it, const char *part);
-
-#define elm_object_item_content_get(it) elm_object_item_part_content_get((it), NULL)
+ EAPI Evas_Object *elm_object_item_content_part_get(const Elm_Object_Item *it, const char *part);
- /**
- * Unset a content of an object item
- *
- * @param it The Elementary object item
- * @param part The content part name to unset (NULL for the default content)
- *
- * @note Elementary object items may have many contents
- * @deprecated Use elm_object_item_part_content_unset instead.
- * @ingroup General
- */
- EINA_DEPRECATED EAPI Evas_Object *elm_object_item_content_part_unset(Elm_Object_Item *it, const char *part);
+#define elm_object_item_content_get(it) elm_object_item_content_part_get((it), NULL)
/**
* Unset a content of an object item
*
* @ingroup General
*/
- EAPI Evas_Object *elm_object_item_part_content_unset(Elm_Object_Item *it, const char *part);
-
-#define elm_object_item_content_unset(it) elm_object_item_part_content_unset((it), NULL)
+ EAPI Evas_Object *elm_object_item_content_part_unset(Elm_Object_Item *it, const char *part);
- /**
- * Set a label of an object item
- *
- * @param it The Elementary object item
- * @param part The text part name to set (NULL for the default label)
- * @param label The new text of the label
- *
- * @note Elementary object items may have many labels
- * @deprecated Use elm_object_item_part_text_set instead.
- * @ingroup General
- */
- WILL_DEPRECATE EAPI void elm_object_item_text_part_set(Elm_Object_Item *it, const char *part, const char *label);
+#define elm_object_item_content_unset(it, content) elm_object_item_content_part_unset((it), (content))
/**
* Set a label of an object item
*
* @ingroup General
*/
- EAPI void elm_object_item_part_text_set(Elm_Object_Item *it, const char *part, const char *label);
+ EAPI void elm_object_item_text_part_set(Elm_Object_Item *it, const char *part, const char *label);
-#define elm_object_item_text_set(it, label) elm_object_item_part_text_set((it), NULL, (label))
+#define elm_object_item_text_set(it, label) elm_object_item_text_part_set((it), NULL, (label))
/**
* Get a label of an object item
* @return text of the label or NULL for any error
*
* @note Elementary object items may have many labels
- * @deprecated Use elm_object_item_part_text_get instead.
- * @ingroup General
- */
- WILL_DEPRECATE EAPI const char *elm_object_item_text_part_get(const Elm_Object_Item *it, const char *part);
- /**
- * Get a label of an object item
- *
- * @param it The Elementary object item
- * @param part The text part name to get (NULL for the default label)
- * @return text of the label or NULL for any error
- *
- * @note Elementary object items may have many labels
*
* @ingroup General
*/
- EAPI const char *elm_object_item_part_text_get(const Elm_Object_Item *it, const char *part);
+ EAPI const char *elm_object_item_text_part_get(const Elm_Object_Item *it, const char *part);
/**
* Set the text to read out when in accessibility mode
*/
EAPI void elm_object_item_access_info_set(Elm_Object_Item *it, const char *txt);
-#define elm_object_item_text_get(it) elm_object_item_part_text_get((it), NULL)
+
+#define elm_object_item_text_get(it) elm_object_item_text_part_get((it), NULL)
+
+ /**
+ * Set the text to read out when in accessibility mode
+ *
+ * @param obj The object which is to be described
+ * @param txt The text that describes the widget to people with poor or no vision
+ *
+ * @ingroup General
+ */
+ EAPI void elm_object_access_info_set(Evas_Object *obj, const char *txt);
/**
* Set the text to read out when in accessibility mode
* @param source The signal's source.
* @ingroup General
*/
- EAPI void elm_object_item_signal_emit(Elm_Object_Item *it, const char *emission, const char *source) EINA_ARG_NONNULL(1);
-
- /**
- * Set the disabled state of an widget item.
- *
- * @param obj The Elementary object item
- * @param disabled The state to put in in: @c EINA_TRUE for
- * disabled, @c EINA_FALSE for enabled
- *
- * Elementary object item can be @b disabled, in which state they won't
- * receive input and, in general, will be themed differently from
- * their normal state, usually greyed out. Useful for contexts
- * where you don't want your users to interact with some of the
- * parts of you interface.
- *
- * This sets the state for the widget item, either disabling it or
- * enabling it back.
- *
- * @ingroup Styles
- */
- EAPI void elm_object_item_disabled_set(Elm_Object_Item *it, Eina_Bool disabled) EINA_ARG_NONNULL(1);
-
- /**
- * Get the disabled state of an widget item.
- *
- * @param obj The Elementary object
- * @return @c EINA_TRUE, if the widget item is disabled, @c EINA_FALSE
- * if it's enabled (or on errors)
- *
- * This gets the state of the widget, which might be enabled or disabled.
- *
- * @ingroup Styles
- */
- EAPI Eina_Bool elm_object_item_disabled_get(const Elm_Object_Item *it) EINA_ARG_NONNULL(1);
+ EAPI void elm_object_item_signal_emit(Elm_Object_Item *it, const char *emission, const char *source) EINA_ARG_NONNULL(1);
/**
* @}
* the one receiving input events.
*
* @see elm_object_focus_get()
- * @deprecated use elm_object_focus_set() instead.
*
* @ingroup Focus
*/
- WILL_DEPRECATE EAPI void elm_object_focus(Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EAPI void elm_object_focus(Evas_Object *obj) EINA_ARG_NONNULL(1);
/**
* Remove the focus from an Elementary object
* previous element in the focus chain list.
*
* @see elm_object_focus() and elm_object_focus_custom_chain_get()
- * @deprecated use elm_object_focus_set() instead.
*
* @ingroup Focus
*/
- WILL_DEPRECATE EAPI void elm_object_unfocus(Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EAPI void elm_object_unfocus(Evas_Object *obj) EINA_ARG_NONNULL(1);
/**
* Set the ability for an Element object to be focused
*
* @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.
*
* @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
*/
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.
* @ingroup Bg
*/
- WILL_DEPRECATE EAPI void elm_bg_overlay_set(Evas_Object *obj, Evas_Object *overlay) EINA_ARG_NONNULL(1);
+ EAPI void elm_bg_overlay_set(Evas_Object *obj, Evas_Object *overlay) EINA_ARG_NONNULL(1);
/**
* Get the overlay object used for the background object.
*
* @ingroup Bg
*/
- WILL_DEPRECATE EAPI Evas_Object *elm_bg_overlay_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EAPI Evas_Object *elm_bg_overlay_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
/**
* Set the size of the pixmap representation of the image.
*
* @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.
*
* @param icon The icon object for the button
* @deprecated use elm_object_part_content_set() instead.
*/
- WILL_DEPRECATE EAPI void elm_button_icon_set(Evas_Object *obj, Evas_Object *icon) EINA_ARG_NONNULL(1);
+ EAPI void elm_button_icon_set(Evas_Object *obj, Evas_Object *icon) EINA_ARG_NONNULL(1);
/**
* Get the icon used for the button
*
*
* @deprecated use elm_object_part_content_get() instead
*/
- WILL_DEPRECATE EAPI Evas_Object *elm_button_icon_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EAPI Evas_Object *elm_button_icon_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
/**
* Remove the icon set without deleting it and return the object
*
* @return The icon object that was being used
* @deprecated use elm_object_part_content_unset() instead.
*/
- WILL_DEPRECATE EAPI Evas_Object *elm_button_icon_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EAPI Evas_Object *elm_button_icon_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
/**
* Turn on/off the autorepeat event generated when the button is kept pressed
*
* elm_scroller_content_unset() function.
* @deprecated use elm_object_content_set() instead
*/
- WILL_DEPRECATE EAPI void elm_scroller_content_set(Evas_Object *obj, Evas_Object *child) EINA_ARG_NONNULL(1);
+ EAPI void elm_scroller_content_set(Evas_Object *obj, Evas_Object *child) EINA_ARG_NONNULL(1);
/**
* @brief Get the content of the scroller widget
*
* @see elm_scroller_content_set()
* @deprecated use elm_object_content_get() instead.
*/
- WILL_DEPRECATE EAPI Evas_Object *elm_scroller_content_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EAPI Evas_Object *elm_scroller_content_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
/**
* @brief Unset the content of the scroller widget
*
* @see elm_scroller_content_set()
* @deprecated use elm_object_content_unset() instead.
*/
- WILL_DEPRECATE EAPI Evas_Object *elm_scroller_content_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EAPI Evas_Object *elm_scroller_content_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
/**
* @brief Set custom theme elements for the scroller
*
*
* The Label widget @b doesn't allow text to overflow its boundaries, if the
* text doesn't fit the geometry of the label it will be ellipsized or be
- * cut. Elementary provides several styles for this widget:
+ * cut. Elementary provides several themes for this widget:
* @li default - No animation
* @li marker - Centers the text in the label and make it bold by default
* @li slide_long - The entire text appears from the right of the screen and
* @param size font size
*
* @warning NEVER use this. It is for hyper-special cases only. use styles
- * instead. e.g. "default", "marker", "slide_long" etc.
+ * instead. e.g. "big", "medium", "small" - or better name them by use:
+ * "title", "footnote", "quote" etc.
*/
EAPI void elm_label_fontsize_set(Evas_Object *obj, int fontsize) EINA_ARG_NONNULL(1);
/**
* @param a Alpha property background color of The label object
*
* @warning NEVER use this. It is for hyper-special cases only. use styles
- * instead. e.g. "default", "marker", "slide_long" etc.
+ * instead. e.g. "big", "medium", "small" - or better name them by use:
+ * "title", "footnote", "quote" etc.
*/
EAPI void elm_label_text_color_set(Evas_Object *obj, unsigned int r, unsigned int g, unsigned int b, unsigned int a) EINA_ARG_NONNULL(1);
/**
* @param align align mode ("left", "center", "right")
*
* @warning NEVER use this. It is for hyper-special cases only. use styles
- * instead. e.g. "default", "marker", "slide_long" etc.
+ * instead. e.g. "big", "medium", "small" - or better name them by use:
+ * "title", "footnote", "quote" etc.
*/
EAPI void elm_label_text_align_set(Evas_Object *obj, const char *alignmode) EINA_ARG_NONNULL(1);
/**
* @param a Alpha property background alpha of The label object
*
* @warning NEVER use this. It is for hyper-special cases only. use styles
- * instead. e.g. "default", "marker", "slide_long" etc.
+ * instead. e.g. "big", "medium", "small" - or better name them by use:
+ * "title", "footnote", "quote" etc.
*/
EAPI void elm_label_background_color_set(Evas_Object *obj, unsigned int r, unsigned int g, unsigned int b, unsigned int a) EINA_ARG_NONNULL(1);
/**
*
* @deprecated use elm_object_content_set() instead.
*/
- WILL_DEPRECATE EAPI void elm_frame_content_set(Evas_Object *obj, Evas_Object *content) EINA_ARG_NONNULL(1);
+ EAPI void elm_frame_content_set(Evas_Object *obj, Evas_Object *content) EINA_ARG_NONNULL(1);
/**
* @brief Get the content of the frame widget
*
*
* @deprecated use elm_object_content_get() instead.
*/
- WILL_DEPRECATE EAPI Evas_Object *elm_frame_content_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EAPI Evas_Object *elm_frame_content_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
/**
* @brief Unset the content of the frame widget
*
*
* @deprecated use elm_object_content_unset() instead.
*/
- WILL_DEPRECATE EAPI Evas_Object *elm_frame_content_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EAPI Evas_Object *elm_frame_content_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
/**
* @}
*/
typedef struct _Elm_Gengrid_Item_Class Elm_Gengrid_Item_Class; /**< Gengrid item class definition structs */
typedef struct _Elm_Gengrid_Item Elm_Gengrid_Item; /**< Gengrid item handles */
typedef struct _Elm_Gengrid_Item_Class_Func Elm_Gengrid_Item_Class_Func; /**< Class functions for gengrid item classes. */
- /**
- * Label fetching class function for Elm_Gen_Item_Class.
- * @param data The data passed in the item creation function
- * @param obj The base widget object
- * @param part The part name of the swallow
- * @return The allocated (NOT stringshared) string to set as the label
- */
- typedef char *(*Elm_Gengrid_Item_Label_Get_Cb) (void *data, Evas_Object *obj, const char *part);
- /**
- * Content (swallowed object) fetching class function for Elm_Gen_Item_Class.
- * @param data The data passed in the item creation function
- * @param obj The base widget object
- * @param part The part name of the swallow
- * @return The content object to swallow
- */
- typedef Evas_Object *(*Elm_Gengrid_Item_Content_Get_Cb) (void *data, Evas_Object *obj, const char *part);
- /**
- * State fetching class function for Elm_Gen_Item_Class.
- * @param data The data passed in the item creation function
- * @param obj The base widget object
- * @param part The part name of the swallow
- * @return The hell if I know
- */
- typedef Eina_Bool (*Elm_Gengrid_Item_State_Get_Cb) (void *data, Evas_Object *obj, const char *part);
- /**
- * Deletion class function for Elm_Gen_Item_Class.
- * @param data The data passed in the item creation function
- * @param obj The base widget object
- */
- typedef void (*Elm_Gengrid_Item_Del_Cb) (void *data, Evas_Object *obj);
+ typedef char *(*Elm_Gengrid_Item_Label_Get_Cb) (void *data, Evas_Object *obj, const char *part); /**< Label fetching class function for gengrid item classes. */
+ typedef Evas_Object *(*Elm_Gengrid_Item_Content_Get_Cb) (void *data, Evas_Object *obj, const char *part); /**< Content (swallowed object) fetching class function for gengrid item classes. */
+ typedef Eina_Bool (*Elm_Gengrid_Item_State_Get_Cb) (void *data, Evas_Object *obj, const char *part); /**< State fetching class function for gengrid item classes. */
+ typedef void (*Elm_Gengrid_Item_Del_Cb) (void *data, Evas_Object *obj); /**< Deletion class function for gengrid item classes. */
/* temporary compatibility code */
typedef Elm_Gengrid_Item_Label_Get_Cb GridItemLabelGetFunc EINA_DEPRECATED;
*
* @ingroup Gengrid
*/
- WILL_DEPRECATE EAPI void elm_gengrid_always_select_mode_set(Evas_Object *obj, Eina_Bool always_select) EINA_ARG_NONNULL(1);
+ EAPI void elm_gengrid_always_select_mode_set(Evas_Object *obj, Eina_Bool always_select) EINA_ARG_NONNULL(1);
/**
* Get whether items on a given gengrid widget have their selection
*
* @ingroup Gengrid
*/
- WILL_DEPRECATE EAPI Eina_Bool elm_gengrid_always_select_mode_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EAPI Eina_Bool elm_gengrid_always_select_mode_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
/**
* Set whether items on a given gengrid widget can be selected or not.
*
* @ingroup Gengrid
*/
- WILL_DEPRECATE EAPI void elm_gengrid_no_select_mode_set(Evas_Object *obj, Eina_Bool no_select) EINA_ARG_NONNULL(1);
+ EAPI void elm_gengrid_no_select_mode_set(Evas_Object *obj, Eina_Bool no_select) EINA_ARG_NONNULL(1);
/**
* Get whether items on a given gengrid widget can be selected or
*
* @ingroup Gengrid
*/
- WILL_DEPRECATE EAPI Eina_Bool elm_gengrid_no_select_mode_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EAPI Eina_Bool elm_gengrid_no_select_mode_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
/**
* Enable or disable multi-selection in a given gengrid widget
*
* @ingroup Gengrid
*/
- WILL_DEPRECATE EAPI void elm_gengrid_bounce_set(Evas_Object *obj, Eina_Bool h_bounce, Eina_Bool v_bounce) EINA_ARG_NONNULL(1);
+ EAPI void elm_gengrid_bounce_set(Evas_Object *obj, Eina_Bool h_bounce, Eina_Bool v_bounce) EINA_ARG_NONNULL(1);
/**
* Get whether bouncing effects are enabled or disabled, for a
*
* @ingroup Gengrid
*/
- WILL_DEPRECATE EAPI void elm_gengrid_bounce_get(const Evas_Object *obj, Eina_Bool *h_bounce, Eina_Bool *v_bounce) EINA_ARG_NONNULL(1);
+ EAPI void elm_gengrid_bounce_get(const Evas_Object *obj, Eina_Bool *h_bounce, Eina_Bool *v_bounce) EINA_ARG_NONNULL(1);
/**
* Set a given gengrid widget's scrolling page size, relative to
*
* @ingroup Gengrid
*/
- WILL_DEPRECATE EAPI void elm_gengrid_page_relative_set(Evas_Object *obj, double h_pagerel, double v_pagerel) EINA_ARG_NONNULL(1);
+ EAPI void elm_gengrid_page_relative_set(Evas_Object *obj, double h_pagerel, double v_pagerel) EINA_ARG_NONNULL(1);
/**
* Get a given gengrid widget's scrolling page size, relative to
*
* @ingroup Gengrid
*/
- WILL_DEPRECATE EAPI void elm_gengrid_page_relative_get(const Evas_Object *obj, double *h_pagerel, double *v_pagerel) EINA_ARG_NONNULL(1);
+ EAPI void elm_gengrid_page_relative_get(const Evas_Object *obj, double *h_pagerel, double *v_pagerel) EINA_ARG_NONNULL(1);
/**
* Set a given gengrid widget's scrolling page size
*
* @ingroup Gengrid
*/
- WILL_DEPRECATE EAPI Elm_Gengrid_Item *elm_gengrid_first_item_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EAPI Elm_Gengrid_Item *elm_gengrid_first_item_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
/**
* Get the last item in a given gengrid widget
*
* @ingroup Gengrid
*/
- WILL_DEPRECATE EAPI Elm_Gengrid_Item *elm_gengrid_last_item_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EAPI Elm_Gengrid_Item *elm_gengrid_last_item_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
/**
* Get the @b next item in a gengrid widget's internal list of items,
*
* @ingroup Gengrid
*/
- WILL_DEPRECATE EAPI Elm_Gengrid_Item *elm_gengrid_item_next_get(const Elm_Gengrid_Item *item) EINA_ARG_NONNULL(1);
+ EAPI Elm_Gengrid_Item *elm_gengrid_item_next_get(const Elm_Gengrid_Item *item) EINA_ARG_NONNULL(1);
/**
* Get the @b previous item in a gengrid widget's internal list of items,
*
* @ingroup Gengrid
*/
- WILL_DEPRECATE EAPI Elm_Gengrid_Item *elm_gengrid_item_prev_get(const Elm_Gengrid_Item *item) EINA_ARG_NONNULL(1);
+ EAPI Elm_Gengrid_Item *elm_gengrid_item_prev_get(const Elm_Gengrid_Item *item) EINA_ARG_NONNULL(1);
/**
* Get the gengrid object's handle which contains a given gengrid
*
* @ingroup Gengrid
*/
- WILL_DEPRECATE EAPI Evas_Object *elm_gengrid_item_gengrid_get(const Elm_Gengrid_Item *item) EINA_ARG_NONNULL(1);
+ EAPI Evas_Object *elm_gengrid_item_gengrid_get(const Elm_Gengrid_Item *item) EINA_ARG_NONNULL(1);
/**
* Remove a gengrid item from its parent, deleting it.
*
* @ingroup Gengrid
*/
- WILL_DEPRECATE EAPI void elm_gengrid_item_selected_set(Elm_Gengrid_Item *item, Eina_Bool selected) EINA_ARG_NONNULL(1);
+ EAPI void elm_gengrid_item_selected_set(Elm_Gengrid_Item *item, Eina_Bool selected) EINA_ARG_NONNULL(1);
/**
* Get whether a given gengrid item is selected or not
*
* @ingroup Gengrid
*/
- WILL_DEPRECATE EAPI Eina_Bool elm_gengrid_item_selected_get(const Elm_Gengrid_Item *item) EINA_ARG_NONNULL(1);
+ EAPI Eina_Bool elm_gengrid_item_selected_get(const Elm_Gengrid_Item *item) EINA_ARG_NONNULL(1);
/**
* Get the real Evas object created to implement the view of a
*
* @ingroup Gengrid
*/
- WILL_DEPRECATE EAPI void elm_gengrid_clear(Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EAPI void elm_gengrid_clear(Evas_Object *obj) EINA_ARG_NONNULL(1);
/**
* Get the selected item in a given gengrid widget
* elm_object_content_set/get/unset functions to set, retrieve and unset
* objects as content of the @c SWALLOW. After being set to this part, the
* object size, position, visibility, clipping and other description
- * properties will be totally controlled by the description of the given part
+ * properties will be totally controled by the description of the given part
* (inside the Edje theme file).
*
* One can use @c evas_object_size_hint_* functions on the child to have some
* itself).
*
* A similar effect for having a box with its position, size and other things
- * controlled by the Layout theme would be to create an Elementary @ref Box
+ * controled by the Layout theme would be to create an Elementary @ref Box
* widget and add it as a Content in the @c SWALLOW part.
*
* The main difference of using the Layout Box is that its behavior, the box
* properties like layouting format, padding, align, etc. will be all
- * controlled by the theme. This means, for example, that a signal could be
+ * controled by the theme. This means, for example, that a signal could be
* sent to the Layout theme (with elm_object_signal_emit()) and the theme
* handled the signal by changing the box padding, or align, or both. Using
* the Elementary @ref Box widget is not necessarily harder or easier, it
*
* @ingroup Layout
*/
- WILL_DEPRECATE EAPI void elm_layout_content_set(Evas_Object *obj, const char *swallow, Evas_Object *content) EINA_ARG_NONNULL(1);
+ EAPI void elm_layout_content_set(Evas_Object *obj, const char *swallow, Evas_Object *content) EINA_ARG_NONNULL(1);
/**
* Get the child object in the given content part.
*
*
* @ingroup Layout
*/
- WILL_DEPRECATE EAPI Evas_Object *elm_layout_content_get(const Evas_Object *obj, const char *swallow) EINA_ARG_NONNULL(1);
+ EAPI Evas_Object *elm_layout_content_get(const Evas_Object *obj, const char *swallow) EINA_ARG_NONNULL(1);
/**
* Unset the layout content.
*
*
* @ingroup Layout
*/
- WILL_DEPRECATE EAPI Evas_Object *elm_layout_content_unset(Evas_Object *obj, const char *swallow) EINA_ARG_NONNULL(1);
+ EAPI Evas_Object *elm_layout_content_unset(Evas_Object *obj, const char *swallow) EINA_ARG_NONNULL(1);
/**
* Set the text of the given part
*
*/
EAPI Evas_Object *elm_layout_box_remove(Evas_Object *obj, const char *part, Evas_Object *child) EINA_ARG_NONNULL(1, 2, 3);
/**
- * Remove all children of the given part box.
+ * Remove all child of the given part box.
*
* @param obj The layout object
* @param part The box part name to remove child.
*/
EAPI Evas_Object *elm_layout_table_unpack(Evas_Object *obj, const char *part, Evas_Object *child_obj) EINA_ARG_NONNULL(1, 2, 3);
/**
- * Remove all the child objects of the given part table.
+ * Remove all child of the given part table.
*
* @param obj The layout object
* @param part The table part name to remove child.
*
* @param obj The layout object.
* @param part_name a part from loaded edje group.
- * @param engine_only if cursors should be just provided by the engine (EINA_TRUE)
- * or should also search on widget's theme as well (EINA_FALSE)
+ * @param engine_only if cursors should be just provided by the engine
+ * or should also search on widget's theme as well
*
* @return EINA_TRUE on success or EINA_FALSE on failure, that may be
* part not exists or it did not had a cursor set.
/**
* @def elm_layout_icon_set
- * Convenience macro to set the icon object in a layout that follows the
+ * Convienience macro to set the icon object in a layout that follows the
* Elementary naming convention for its parts.
*
* @ingroup Layout
* Once the content object is set, a previously set one will be deleted. If
* you want to keep that old content object, use the
* elm_notify_content_unset() function.
- *
- * @deprecated use elm_object_content_set() instead
- *
*/
- WILL_DEPRECATE EAPI void elm_notify_content_set(Evas_Object *obj, Evas_Object *content) EINA_ARG_NONNULL(1);
+ EAPI void elm_notify_content_set(Evas_Object *obj, Evas_Object *content) EINA_ARG_NONNULL(1);
/**
* @brief Unset the content of the notify widget
*
* Unparent and return the content object which was set for this widget
*
* @see elm_notify_content_set()
- * @deprecated use elm_object_content_unset() instead
- *
*/
- WILL_DEPRECATE EAPI Evas_Object *elm_notify_content_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EAPI Evas_Object *elm_notify_content_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
/**
* @brief Return the content of the notify widget
*
* @return The content that is being used
*
* @see elm_notify_content_set()
- * @deprecated use elm_object_content_get() instead
- *
*/
- WILL_DEPRECATE EAPI Evas_Object *elm_notify_content_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EAPI Evas_Object *elm_notify_content_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
/**
* @brief Set the notify parent
*
* @brief Sets the target object for the hover.
*
* @param obj The hover object
- * @param target The object to center the hover onto.
+ * @param target The object to center the hover onto. The hover
*
* This function will cause the hover to be centered on the target object.
*/
* @brief Gets the target object for the hover.
*
* @param obj The hover object
- * @return The target object for the hover.
+ * @param parent The object to locate the hover over.
*
* @see elm_hover_target_set()
*/
* "smart". This is a special placement hint and its use case
* independs of the calculations coming from
* elm_hover_best_content_location_get(). Its use is for cases when
- * one desires only one hover content, but with a dynamic special
+ * one desires only one hover content, but with a dinamic special
* placement within the hover area. The content's geometry, whenever
- * it changes, will be used to decide on a best location, not
+ * it changes, will be used to decide on a best location not
* extrapolating the hover's parent object view to show it in (still
* being the hover's target determinant of its medium part -- move and
* resize it to simulate finger sizes, for example). If one of the
* @li full: Items will be placed between the descent and ascent, or the
* lowest point in the line and its highest.
*
- * The next image shows different configurations of items and how
- * the previously mentioned options affect their sizes. In all cases,
+ * The next image shows different configurations of items and how they
+ * are the previously mentioned options affect their sizes. In all cases,
* the green line indicates the ascent, blue for the baseline and red for
* the descent.
*
*/
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
* @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.
*
* @param content The given content of the bubble
*
* This function sets the content shown on the middle of the bubble.
- *
- * @deprecated use elm_object_content_set() instead
- *
*/
- WILL_DEPRECATE EAPI void elm_bubble_content_set(Evas_Object *obj, Evas_Object *content) EINA_ARG_NONNULL(1);
+ EAPI void elm_bubble_content_set(Evas_Object *obj, Evas_Object *content) EINA_ARG_NONNULL(1);
/**
* Get the content shown in the bubble
*
*
* @param obj The bubble object
* @return The content that is being used
- *
- * @deprecated use elm_object_content_get() instead
- *
*/
- WILL_DEPRECATE EAPI Evas_Object *elm_bubble_content_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EAPI Evas_Object *elm_bubble_content_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
/**
* Unset the content shown in the bubble
*
*
* @param obj The bubble object
* @return The content that was being used
- *
- * @deprecated use elm_object_content_unset() instead
- *
*/
- WILL_DEPRECATE EAPI Evas_Object *elm_bubble_content_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EAPI Evas_Object *elm_bubble_content_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
/**
* Set the icon of the bubble
*
*/
typedef enum _Elm_Web_Zoom_Mode
{
- ELM_WEB_ZOOM_MODE_MANUAL = 0, /**< Zoom controlled normally by elm_web_zoom_set */
+ ELM_WEB_ZOOM_MODE_MANUAL = 0, /**< Zoom controled normally by elm_web_zoom_set */
ELM_WEB_ZOOM_MODE_AUTO_FIT, /**< Zoom until content fits in web object */
ELM_WEB_ZOOM_MODE_AUTO_FILL, /**< Zoom until content fills web object */
ELM_WEB_ZOOM_MODE_LAST
* @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.
* @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.
* @ingroup Slider
* @deprecated use elm_object_text_get() instead.
*/
- WILL_DEPRECATE EAPI const char *elm_slider_label_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EAPI const char *elm_slider_label_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
/**
* Set the icon object of the slider object.
* @ingroup Slider
* @deprecated use elm_object_part_content_set() instead.
*/
- WILL_DEPRECATE EAPI void elm_slider_icon_set(Evas_Object *obj, Evas_Object *icon) EINA_ARG_NONNULL(1);
+ EAPI void elm_slider_icon_set(Evas_Object *obj, Evas_Object *icon) EINA_ARG_NONNULL(1);
/**
* Unset an icon set on a given slider widget.
*
* @ingroup Slider
*/
- WILL_DEPRECATE EAPI Evas_Object *elm_slider_icon_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EAPI Evas_Object *elm_slider_icon_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
/**
* Retrieve the icon object set for a given slider widget.
*
* @ingroup Slider
*/
- WILL_DEPRECATE EAPI Evas_Object *elm_slider_icon_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EAPI Evas_Object *elm_slider_icon_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
/**
* Set the end object of the slider object.
*
* @ingroup Slider
*/
- WILL_DEPRECATE EAPI void elm_slider_end_set(Evas_Object *obj, Evas_Object *end) EINA_ARG_NONNULL(1);
+ EAPI void elm_slider_end_set(Evas_Object *obj, Evas_Object *end) EINA_ARG_NONNULL(1);
/**
* Unset an end object set on a given slider widget.
*
* @ingroup Slider
*/
- WILL_DEPRECATE EAPI Evas_Object *elm_slider_end_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EAPI Evas_Object *elm_slider_end_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
/**
* Retrieve the end object set for a given slider widget.
*
* @ingroup Slider
*/
- WILL_DEPRECATE EAPI Evas_Object *elm_slider_end_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EAPI Evas_Object *elm_slider_end_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
/**
* Set the (exact) length of the bar region of a given slider widget.
* theme. It must return @c NULL, when no content is desired, or a valid
* object handle, otherwise. The object will be deleted by the genlist on
* its deletion or when the item is "unrealized". See
- * #Elm_Genlist_Item_Content_Get_Cb.
+ * #Elm_Genlist_Item_Icon_Get_Cb.
* - @c func.state_get - The @c part parameter is the name string of one of
* the state parts in the Edje group implementing the item's theme. Return
* @c EINA_FALSE for false/off or @c EINA_TRUE for true/on. Genlists will
* If the application wants multiple items to be able to be selected,
* elm_genlist_multi_select_set() can enable this. If the list is
* single-selection only (the default), then elm_genlist_selected_item_get()
- * will return the selected item, if any, or NULL if none is selected. If the
+ * will return the selected item, if any, or NULL I none is selected. If the
* list is multi-select then elm_genlist_selected_items_get() will return a
* list (that is only valid as long as no items are modified (added, deleted,
* selected or unselected)).
*
* This removes (and deletes) all items in @p obj, leaving it empty.
*
- * This is deprecated. Please use elm_gen_clear() instead.
- *
* @see elm_genlist_item_del(), to remove just one item.
*
* @ingroup Genlist
*/
- WILL_DEPRECATE EAPI void elm_genlist_clear(Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EAPI void elm_genlist_clear(Evas_Object *obj) EINA_ARG_NONNULL(1);
/**
* Enable or disable multi-selection in the genlist
*
*
* Items will only call their selection func and callback when first
* becoming selected. Any further clicks will do nothing, unless you
- * enable always select with elm_gen_always_select_mode_set().
+ * enable always select with elm_genlist_always_select_mode_set().
* This means that, even if selected, every click will make the selected
* callbacks be called.
- *
- * This function is deprecated. please see elm_gen_always_select_mode_set()
*
* @see elm_genlist_always_select_mode_get()
*
* @ingroup Genlist
*/
- WILL_DEPRECATE EAPI void elm_genlist_always_select_mode_set(Evas_Object *obj, Eina_Bool always_select) EINA_ARG_NONNULL(1);
+ EAPI void elm_genlist_always_select_mode_set(Evas_Object *obj, Eina_Bool always_select) EINA_ARG_NONNULL(1);
/**
* Get the always select mode.
*
*
* @ingroup Genlist
*/
- WILL_DEPRECATE EAPI Eina_Bool elm_genlist_always_select_mode_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EAPI Eina_Bool elm_genlist_always_select_mode_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
/**
* Enable/disable the no select mode.
*
*
* @ingroup Genlist
*/
- WILL_DEPRECATE EAPI void elm_genlist_no_select_mode_set(Evas_Object *obj, Eina_Bool no_select) EINA_ARG_NONNULL(1);
+ EAPI void elm_genlist_no_select_mode_set(Evas_Object *obj, Eina_Bool no_select) EINA_ARG_NONNULL(1);
/**
* Gets whether the no select mode is enabled.
*
*
* @ingroup Genlist
*/
- WILL_DEPRECATE EAPI Eina_Bool elm_genlist_no_select_mode_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EAPI Eina_Bool elm_genlist_no_select_mode_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
/**
* Enable/disable compress mode.
*
*
* @ingroup Genlist
*/
- WILL_DEPRECATE EAPI void elm_genlist_bounce_set(Evas_Object *obj, Eina_Bool h_bounce, Eina_Bool v_bounce) EINA_ARG_NONNULL(1);
+ EAPI void elm_genlist_bounce_set(Evas_Object *obj, Eina_Bool h_bounce, Eina_Bool v_bounce) EINA_ARG_NONNULL(1);
/**
* Get whether the horizontal and vertical bouncing effect is enabled.
*
*
* @ingroup Genlist
*/
- WILL_DEPRECATE EAPI void elm_genlist_bounce_get(const Evas_Object *obj, Eina_Bool *h_bounce, Eina_Bool *v_bounce) EINA_ARG_NONNULL(1);
+ EAPI void elm_genlist_bounce_get(const Evas_Object *obj, Eina_Bool *h_bounce, Eina_Bool *v_bounce) EINA_ARG_NONNULL(1);
/**
* Enable/disable homogenous mode.
*
*
* @ingroup Genlist
*/
- WILL_DEPRECATE EAPI Elm_Genlist_Item *elm_genlist_first_item_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EAPI Elm_Genlist_Item *elm_genlist_first_item_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
/**
* Get the last item in the genlist
*
*
* @ingroup Genlist
*/
- WILL_DEPRECATE EAPI Elm_Genlist_Item *elm_genlist_last_item_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EAPI Elm_Genlist_Item *elm_genlist_last_item_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
/**
* Set the scrollbar policy
*
*
* @ingroup Genlist
*/
- WILL_DEPRECATE EAPI Elm_Genlist_Item *elm_genlist_item_next_get(const Elm_Genlist_Item *item) EINA_ARG_NONNULL(1);
+ EAPI Elm_Genlist_Item *elm_genlist_item_next_get(const Elm_Genlist_Item *item) EINA_ARG_NONNULL(1);
/**
* Get the @b previous item in a genlist widget's internal list of items,
* given a handle to one of those items.
*
* @ingroup Genlist
*/
- WILL_DEPRECATE EAPI Elm_Genlist_Item *elm_genlist_item_prev_get(const Elm_Genlist_Item *item) EINA_ARG_NONNULL(1);
+ EAPI Elm_Genlist_Item *elm_genlist_item_prev_get(const Elm_Genlist_Item *item) EINA_ARG_NONNULL(1);
/**
* Get the genlist object's handle which contains a given genlist
* item
*
* This returns the genlist object itself that an item belongs to.
*
- * This function is deprecated. Please use elm_gen_item_widget_get()
- *
* @ingroup Genlist
*/
- WILL_DEPRECATE EAPI Evas_Object *elm_genlist_item_genlist_get(const Elm_Genlist_Item *item) EINA_ARG_NONNULL(1);
+ EAPI Evas_Object *elm_genlist_item_genlist_get(const Elm_Genlist_Item *item) EINA_ARG_NONNULL(1);
/**
* Get the parent item of the given item
*
*
* @ingroup Genlist
*/
- WILL_DEPRECATE EAPI void elm_genlist_item_selected_set(Elm_Genlist_Item *item, Eina_Bool selected) EINA_ARG_NONNULL(1);
+ EAPI void elm_genlist_item_selected_set(Elm_Genlist_Item *item, Eina_Bool selected) EINA_ARG_NONNULL(1);
/**
* Get whether a given genlist item is selected or not
*
*
* @ingroup Genlist
*/
- WILL_DEPRECATE EAPI Eina_Bool elm_genlist_item_selected_get(const Elm_Genlist_Item *item) EINA_ARG_NONNULL(1);
+ EAPI Eina_Bool elm_genlist_item_selected_get(const Elm_Genlist_Item *item) EINA_ARG_NONNULL(1);
/**
* Sets the expanded state of an item.
*
* @ingroup Genlist
*/
EAPI void elm_genlist_item_contents_orphan(Elm_Genlist_Item *it) EINA_ARG_NONNULL(1);
- WILL_DEPRECATE EAPI void elm_genlist_item_icons_orphan(Elm_Genlist_Item *it) EINA_ARG_NONNULL(1);
+ EAPI void elm_genlist_item_icons_orphan(Elm_Genlist_Item *it) EINA_ARG_NONNULL(1);
/**
* Get the real Evas object created to implement the view of a
* given genlist item
*/
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
*
* @deprecated use elm_object_part_content_set() instead.
*
*/
- WILL_DEPRECATE EAPI void elm_radio_icon_set(Evas_Object *obj, Evas_Object *icon) EINA_ARG_NONNULL(1);
+ EAPI void elm_radio_icon_set(Evas_Object *obj, Evas_Object *icon) EINA_ARG_NONNULL(1);
/**
* @brief Get the icon object of the radio object
*
* @deprecated use elm_object_part_content_get() instead.
*
*/
- WILL_DEPRECATE EAPI Evas_Object *elm_radio_icon_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EAPI Evas_Object *elm_radio_icon_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
/**
* @brief Unset the icon used for the radio object
*
* @deprecated use elm_object_part_content_unset() instead.
*
*/
- WILL_DEPRECATE EAPI Evas_Object *elm_radio_icon_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EAPI Evas_Object *elm_radio_icon_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
/**
* @brief Add this radio to a group of other radio objects
*
* @image html img/widget/pager/preview-00.png
* @image latex img/widget/pager/preview-00.eps
*
- * @brief Widget that allows flipping between one or more “pages”
- * of objects.
- *
- * The flipping between pages of objects is animated. All content
- * in the pager is kept in a stack, being the last content added
- * (visible one) on the top of that stack.
- *
- * Objects can be pushed or popped from the stack or deleted as
- * well. Pushes and pops will animate the widget accordingly to its
- * style (a pop will also delete the child object once the
- * animation is finished). Any object already in the pager can be
- * promoted to the top (from its current stacking position) through
- * the use of elm_pager_content_promote(). New objects are pushed
- * to the top with elm_pager_content_push(). When the top item is
- * no longer wanted, simply pop it with elm_pager_content_pop() and
- * it will also be deleted. If an object is no longer needed and is
- * not the top item, just delete it as normal. You can query which
- * objects are the top and bottom with
+ * @brief Widget that allows flipping between 1 or more “pages” of objects.
+ *
+ * The flipping between “pages” of objects is animated. All content in pager
+ * is kept in a stack, the last content to be added will be on the top of the
+ * stack(be visible).
+ *
+ * Objects can be pushed or popped from the stack or deleted as normal.
+ * Pushes and pops will animate (and a pop will delete the object once the
+ * animation is finished). Any object already in the pager can be promoted to
+ * the top(from its current stacking position) through the use of
+ * elm_pager_content_promote(). Objects are pushed to the top with
+ * elm_pager_content_push() and when the top item is no longer wanted, simply
+ * pop it with elm_pager_content_pop() and it will also be deleted. If an
+ * object is no longer needed and is not the top item, just delete it as
+ * normal. You can query which objects are the top and bottom with
* elm_pager_content_bottom_get() and elm_pager_content_top_get().
*
* Signals that you can add callbacks for are:
- * - @c "show,finished" - when a new page is actually shown on the top
- * - @c "hide,finished" - when a previous page is hidden
- *
- * Only after the first of that signals the child object is
- * guaranteed to be visible, as in @c evas_object_visible_get().
+ * "hide,finished" - when the previous page is hided
*
* This widget has the following styles available:
- * - @c "default"
- * - @c "fade"
- * - @c "fade_translucide"
- * - @c "fade_invisible"
- *
- * @note These styles affect only the flipping animations on the
- * default theme; the appearance when not animating is unaffected
- * by them.
+ * @li default
+ * @li fade
+ * @li fade_translucide
+ * @li fade_invisible
+ * @note This styles affect only the flipping animations, the appearance when
+ * not animating is unaffected by styles.
*
* @ref tutorial_pager gives a good overview of the usage of the API.
* @{
*/
-
/**
* Add a new pager to the parent
*
* @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).
*
* 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
*
* 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.
*
* 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
*
* @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
*
*
* @ingroup Progressbar
*/
- WILL_DEPRECATE EAPI void elm_progressbar_icon_set(Evas_Object *obj, Evas_Object *icon) EINA_ARG_NONNULL(1);
+ EAPI void elm_progressbar_icon_set(Evas_Object *obj, Evas_Object *icon) EINA_ARG_NONNULL(1);
/**
* Retrieve the icon object set for a given progress bar widget
*
* @ingroup Progressbar
*/
- WILL_DEPRECATE EAPI Evas_Object *elm_progressbar_icon_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EAPI Evas_Object *elm_progressbar_icon_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
/**
* Unset an icon set on a given progress bar widget
*
* @ingroup Progressbar
*/
- WILL_DEPRECATE EAPI Evas_Object *elm_progressbar_icon_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EAPI Evas_Object *elm_progressbar_icon_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
/**
* Set the (exact) length of the bar region of a given progress bar
*/
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.
*
* Once the content object is set, a previously set one will be deleted.
* If you want to keep that old content object, use the
* elm_panel_content_unset() function.
- *
- * @deprecated use elm_object_content_set() instead
- *
*/
- WILL_DEPRECATE EAPI void elm_panel_content_set(Evas_Object *obj, Evas_Object *content) EINA_ARG_NONNULL(1);
+ EAPI void elm_panel_content_set(Evas_Object *obj, Evas_Object *content) EINA_ARG_NONNULL(1);
/**
* @brief Get the content of the panel.
*
* Return the content object which is set for this widget.
*
* @see elm_panel_content_set()
- *
- * @deprecated use elm_object_content_get() instead
- *
*/
- WILL_DEPRECATE EAPI Evas_Object *elm_panel_content_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EAPI Evas_Object *elm_panel_content_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
/**
* @brief Unset the content of the panel.
*
* Unparent and return the content object which was set for this widget.
*
* @see elm_panel_content_set()
- *
- * @deprecated use elm_object_content_unset() instead
- *
*/
- WILL_DEPRECATE EAPI Evas_Object *elm_panel_content_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EAPI Evas_Object *elm_panel_content_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
/**
* @brief Set the state of the panel.
*
*
* @ingroup Panes
*/
- WILL_DEPRECATE EAPI Evas_Object *elm_panes_content_right_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EAPI Evas_Object *elm_panes_content_right_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
/**
* Get the size proportion of panes widget's left side.
* @see elm_object_content_unset()
* @see elm_object_content_get()
*
- * @deprecated use elm_object_content_set() instead
- *
* @ingroup Conformant
*/
- WILL_DEPRECATE EAPI void elm_conformant_content_set(Evas_Object *obj, Evas_Object *content) EINA_ARG_NONNULL(1);
+ EAPI void elm_conformant_content_set(Evas_Object *obj, Evas_Object *content) EINA_ARG_NONNULL(1);
/**
* Get the content of the conformant widget.
* @see elm_object_content_set().
* @see elm_object_content_unset()
*
- * @deprecated use elm_object_content_get() instead
- *
* @ingroup Conformant
*/
- WILL_DEPRECATE EAPI Evas_Object *elm_conformant_content_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EAPI Evas_Object *elm_conformant_content_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
/**
* Unset the content of the conformant widget.
*
* @see elm_object_content_set().
*
- * @deprecated use elm_object_content_unset() instead
- *
* @ingroup Conformant
*/
- EINA_DEPRECATED EAPI Evas_Object *elm_conformant_content_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EAPI Evas_Object *elm_conformant_content_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
/**
* Returns the Evas_Object that represents the content area.
*
* To enable map, elm_mapbuf_enabled_set() should be used.
*
- * @deprecated use elm_object_content_set() instead
- *
* @ingroup Mapbuf
*/
- WILL_DEPRECATE EAPI void elm_mapbuf_content_set(Evas_Object *obj, Evas_Object *content) EINA_ARG_NONNULL(1);
+ EAPI void elm_mapbuf_content_set(Evas_Object *obj, Evas_Object *content) EINA_ARG_NONNULL(1);
/**
* Get the content of the mapbuf.
*
* @see elm_mapbuf_content_set() for details.
*
- * @deprecated use elm_object_content_get() instead
- *
* @ingroup Mapbuf
*/
- WILL_DEPRECATE EAPI Evas_Object *elm_mapbuf_content_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EAPI Evas_Object *elm_mapbuf_content_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
/**
* Unset the content of the mapbuf.
*
* @see elm_mapbuf_content_set() for details.
*
- * @deprecated use elm_object_content_unset() instead
- *
* @ingroup Mapbuf
*/
- WILL_DEPRECATE EAPI Evas_Object *elm_mapbuf_content_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EAPI Evas_Object *elm_mapbuf_content_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
/**
* Enable or disable the map.
* @{
*/
+ 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
*
* @ingroup Flipselector
*/
- EAPI Elm_Object_Item *elm_flipselector_item_append(Evas_Object *obj, const char *label, Evas_Smart_Cb func, void *data) EINA_ARG_NONNULL(1);
+ EAPI Elm_Flipselector_Item *elm_flipselector_item_append(Evas_Object *obj, const char *label, Evas_Smart_Cb func, void *data) EINA_ARG_NONNULL(1);
/**
* Prepend a (text) item to a flip selector widget
*
* @ingroup Flipselector
*/
- EAPI Elm_Object_Item *elm_flipselector_item_prepend(Evas_Object *obj, const char *label, Evas_Smart_Cb func, void *data) EINA_ARG_NONNULL(1);
+ EAPI Elm_Flipselector_Item *elm_flipselector_item_prepend(Evas_Object *obj, const char *label, Evas_Smart_Cb func, void *data) EINA_ARG_NONNULL(1);
/**
* Get the internal list of items in a given flip selector widget.
*
* @param obj The flipselector object
- * @return The list of items (#Elm_Object_Item as data) or
+ * @return The list of items (#Elm_Flipselector_Item as data) or
* @c NULL on errors.
*
* This list is @b not to be modified in any way and must not be
* freed. Use the list members with functions like
- * elm_object_item_text_set(),
- * elm_object_item_text_get(),
+ * elm_flipselector_item_label_set(),
+ * elm_flipselector_item_label_get(),
* elm_flipselector_item_del(),
* elm_flipselector_item_selected_get(),
* elm_flipselector_item_selected_set().
*
* @ingroup Flipselector
*/
- EAPI Elm_Object_Item *elm_flipselector_first_item_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EAPI Elm_Flipselector_Item *elm_flipselector_first_item_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
/**
* Get the last item in the given flip selector widget's list of
*
* @ingroup Flipselector
*/
- EAPI Elm_Object_Item *elm_flipselector_last_item_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EAPI Elm_Flipselector_Item *elm_flipselector_last_item_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
/**
* Get the currently selected item in a flip selector widget.
*
* @ingroup Flipselector
*/
- EAPI Elm_Object_Item *elm_flipselector_selected_item_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EAPI Elm_Flipselector_Item *elm_flipselector_selected_item_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
/**
* Set whether a given flip selector widget's item should be the
* currently selected one.
*
- * @param it The flip selector item
+ * @param item The flip selector item
* @param selected @c EINA_TRUE to select it, @c EINA_FALSE to unselect.
*
* This sets whether @p item is or not the selected (thus, under
*
* @ingroup Flipselector
*/
- EAPI void elm_flipselector_item_selected_set(Elm_Object_Item *it, Eina_Bool selected) EINA_ARG_NONNULL(1);
+ EAPI void elm_flipselector_item_selected_set(Elm_Flipselector_Item *item, Eina_Bool selected) EINA_ARG_NONNULL(1);
/**
* Get whether a given flip selector widget's item is the currently
* selected one.
*
- * @param it The flip selector item
+ * @param item The flip selector item
* @return @c EINA_TRUE, if it's selected, @c EINA_FALSE otherwise
* (or on errors).
*
*
* @ingroup Flipselector
*/
- EAPI Eina_Bool elm_flipselector_item_selected_get(const Elm_Object_Item *it) EINA_ARG_NONNULL(1);
+ EAPI Eina_Bool elm_flipselector_item_selected_get(const Elm_Flipselector_Item *item) EINA_ARG_NONNULL(1);
/**
* Delete a given item from a flip selector widget.
*
- * @param it The item to delete
+ * @param item The item to delete
*
* @ingroup Flipselector
*/
- EAPI void elm_flipselector_item_del(Elm_Object_Item *it) EINA_ARG_NONNULL(1);
+ EAPI void elm_flipselector_item_del(Elm_Flipselector_Item *item) EINA_ARG_NONNULL(1);
/**
* Get the label of a given flip selector widget's item.
*
- * @param it The item to get label from
+ * @param item The item to get label from
* @return The text label of @p item or @c NULL, on errors
*
- * @see elm_object_item_text_set()
+ * @see elm_flipselector_item_label_set()
*
- * @deprecated see elm_object_item_text_get() instead
* @ingroup Flipselector
*/
- EINA_DEPRECATED EAPI const char *elm_flipselector_item_label_get(const Elm_Object_Item *it) EINA_ARG_NONNULL(1);
+ EAPI const char *elm_flipselector_item_label_get(const Elm_Flipselector_Item *item) EINA_ARG_NONNULL(1);
/**
* Set the label of a given flip selector widget's item.
*
- * @param it The item to set label on
+ * @param item The item to set label on
* @param label The text label string, in UTF-8 encoding
*
- * @see elm_object_item_text_get()
+ * @see elm_flipselector_item_label_get()
*
- * @deprecated see elm_object_item_text_set() instead
* @ingroup Flipselector
*/
- EINA_DEPRECATED EAPI void elm_flipselector_item_label_set(Elm_Object_Item *it, const char *label) EINA_ARG_NONNULL(1);
+ EAPI void elm_flipselector_item_label_set(Elm_Flipselector_Item *item, const char *label) EINA_ARG_NONNULL(1);
/**
* Gets the item before @p item in a flip selector widget's
* internal list of items.
*
- * @param it The item to fetch previous from
+ * @param item The item to fetch previous from
* @return The item before the @p item, in its parent's list. If
* there is no previous item for @p item or there's an
* error, @c NULL is returned.
*
* @ingroup Flipselector
*/
- EAPI Elm_Object_Item *elm_flipselector_item_prev_get(Elm_Object_Item *it) EINA_ARG_NONNULL(1);
+ EAPI Elm_Flipselector_Item *elm_flipselector_item_prev_get(Elm_Flipselector_Item *item) EINA_ARG_NONNULL(1);
/**
* Gets the item after @p item in a flip selector widget's
* internal list of items.
*
- * @param it The item to fetch next from
+ * @param item The item to fetch next from
* @return The item after the @p item, in its parent's list. If
* there is no next item for @p item or there's an
* error, @c NULL is returned.
*
* @ingroup Flipselector
*/
- EAPI Elm_Object_Item *elm_flipselector_item_next_get(Elm_Object_Item *it) EINA_ARG_NONNULL(1);
+ EAPI Elm_Flipselector_Item *elm_flipselector_item_next_get(Elm_Flipselector_Item *item) EINA_ARG_NONNULL(1);
/**
* Set the interval on time updates for an user mouse button hold
* 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.
* @{
*/
* @param disabled @c EINA_TRUE to disable it, @c EINA_FALSE to enable it
*
* When disabled the item is greyed out to indicate it's state.
- * @deprecated use elm_object_item_disabled_set() instead
*/
- WILL_DEPRECATE EAPI void elm_ctxpopup_item_disabled_set(Elm_Object_Item *it, Eina_Bool disabled) EINA_ARG_NONNULL(1);
+ EAPI void elm_ctxpopup_item_disabled_set(Elm_Object_Item *it, Eina_Bool disabled) EINA_ARG_NONNULL(1);
/**
* @brief Get the ctxpopup item's disabled/enabled state.
*
*
* @see elm_ctxpopup_item_append()
* @see elm_ctxpopup_item_icon_set()
- *
- * @deprecated use elm_object_item_part_content_get() instead
*/
- WILL_DEPRECATE EAPI Evas_Object *elm_ctxpopup_item_icon_get(const Elm_Object_Item *it) EINA_ARG_NONNULL(1);
+ EAPI Evas_Object *elm_ctxpopup_item_icon_get(const Elm_Object_Item *it) EINA_ARG_NONNULL(1);
/**
* @brief Sets the side icon associated with the ctxpopup item
*
* dissapear from the first item.
*
* @see elm_ctxpopup_item_append()
- *
- * @deprecated use elm_object_item_part_content_set() instead
- *
*/
- WILL_DEPRECATE EAPI void elm_ctxpopup_item_icon_set(Elm_Object_Item *it, Evas_Object *icon) EINA_ARG_NONNULL(1);
+ EAPI void elm_ctxpopup_item_icon_set(Elm_Object_Item *it, Evas_Object *icon) EINA_ARG_NONNULL(1);
/**
* @brief Get the label for the given ctxpopup item.
*
*
* @see elm_ctxpopup_item_append()
* @see elm_ctxpopup_item_label_set()
- *
- * @deprecated use elm_object_item_text_get() instead
*/
- WILL_DEPRECATE EAPI const char *elm_ctxpopup_item_label_get(const Elm_Object_Item *it) EINA_ARG_NONNULL(1);
+ EAPI const char *elm_ctxpopup_item_label_get(const Elm_Object_Item *it) EINA_ARG_NONNULL(1);
/**
* @brief (Re)set the label on the given ctxpopup item.
*
* @param it Ctxpopup item
* @param label String to set as label
- *
- * @deprecated use elm_object_item_text_set() instead
*/
- WILL_DEPRECATE EAPI void elm_ctxpopup_item_label_set(Elm_Object_Item *it, const char *label) EINA_ARG_NONNULL(1);
+ EAPI void elm_ctxpopup_item_label_set(Elm_Object_Item *it, const char *label) EINA_ARG_NONNULL(1);
/**
* @brief Set an elm widget as the content of the ctxpopup.
*
* you want to keep that old content object, use the
* elm_ctxpopup_content_unset() function.
*
+ * @deprecated use elm_object_content_set()
+ *
* @warning Ctxpopup can't hold both a item list and a content at the same
* time. When a content is set, any previous items will be removed.
- *
- * @deprecated use elm_object_content_set() instead
- *
*/
- WILL_DEPRECATE EAPI void elm_ctxpopup_content_set(Evas_Object *obj, Evas_Object *content) EINA_ARG_NONNULL(1, 2);
+ EAPI void elm_ctxpopup_content_set(Evas_Object *obj, Evas_Object *content) EINA_ARG_NONNULL(1, 2);
/**
* @brief Unset the ctxpopup content
*
* @deprecated use elm_object_content_unset()
*
* @see elm_ctxpopup_content_set()
- *
- * @deprecated use elm_object_content_unset() instead
- *
*/
- WILL_DEPRECATE EAPI Evas_Object *elm_ctxpopup_content_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EAPI Evas_Object *elm_ctxpopup_content_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
/**
* @brief Set the direction priority of a ctxpopup.
*
#define ELM_STORE_ITEM_MAPPING_END { ELM_STORE_ITEM_MAPPING_NONE, NULL, 0, { .empty = { EINA_TRUE } } }
#define ELM_STORE_ITEM_MAPPING_OFFSET(st, it) offsetof(st, it)
- /**
- * dbsystem Store object
- *
- * @addtogroup DBStore
- * @{
- *
- * @return The new object or NULL if it cannot be created
- */
EAPI Elm_Store *elm_store_dbsystem_new(void);
- /**
- * Sets the item count of a store
- *
- * @param st The store object
- * @param count The item count of an store
- */
EAPI void elm_store_item_count_set(Elm_Store *st, int count) EINA_ARG_NONNULL(1);
- /**
- * Set the select func that select the state of a list item whether true or false
- *
- * @param st The store object
- * @param func The select cb function of an store
- * @param data The new data pointer to set
- */
EAPI void elm_store_item_select_func_set(Elm_Store *st, Elm_Store_Item_Select_Cb func, const void *data) EINA_ARG_NONNULL(1);
- /**
- * Sets the sort func that sort the item with a next in the list
- *
- * @param st The store object
- * @param func The sort cb function of an store
- * @param data The new data pointer to set
- */
EAPI void elm_store_item_sort_func_set(Elm_Store *st, Elm_Store_Item_Sort_Cb func, const void *data) EINA_ARG_NONNULL(1);
- /**
- * Set the store item free func
- *
- * @param st The store object
- * @param func The free cb function of an store
- * @param data The new data pointer to set
- */
EAPI void elm_store_item_free_func_set(Elm_Store *st, Elm_Store_Item_Free_Cb func, const void *data) EINA_ARG_NONNULL(1);
- /**
- * Get the item index that included header items
- *
- * @param sti The store item object
- * @return The item index in genlist
- */
EAPI int elm_store_item_data_index_get(const Elm_Store_Item *sti) EINA_ARG_NONNULL(1);
- /**
- * Get the DB pointer of an item
- *
- * @param sti The store item object
- * @return The DB pointer of item
- */
EAPI void *elm_store_dbsystem_db_get(const Elm_Store_Item *sti) EINA_ARG_NONNULL(1);
- /**
- * Set the DB pointer of an item
- *
- * @param sti The store item object
- * @parm p_db The DB pointer of item
- */
EAPI void elm_store_dbsystem_db_set(Elm_Store *store, void *pDB) EINA_ARG_NONNULL(1);
- /**
- */
EAPI int elm_store_item_index_get(const Elm_Store_Item *sti) EINA_ARG_NONNULL(1);
- /**
- * Append the item to the genlist
- *
- * @param st The store object
- * @param info The store item info dbsystem object
- * @return The item of store
- */
EAPI Elm_Store_Item *elm_store_item_add(Elm_Store *st, Elm_Store_Item_Info *info) EINA_ARG_NONNULL(1);
- /**
- * Realize the visible items to the screen
- *
- * @param st The store object
- */
EAPI void elm_store_item_update(Elm_Store_Item *sti) EINA_ARG_NONNULL(1);
- /**
- * Realize the item to the screen
- *
- * @param sti The store item object
- */
EAPI void elm_store_visible_items_update(Elm_Store *st) EINA_ARG_NONNULL(1);
- /**
- * Delete the item of genlist
- *
- * @param sti The store item object
- */
EAPI void elm_store_item_del(Elm_Store_Item *sti) EINA_ARG_NONNULL(1);
EAPI void elm_store_free(Elm_Store *st);
EAPI Elm_Store *elm_store_filesystem_new(void);
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
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
* @}
*/
- /**
- * @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"
} Elm_Controlbar_Mode_Type;
typedef struct _Elm_Controlbar_Item Elm_Controlbar_Item;
- /**
- * Add a new controlbar object
- *
- * @param parent The parent object
- * @return The new object or NULL if it cannot be created
- */
EAPI Evas_Object *elm_controlbar_add(Evas_Object *parent);
- /**
- * Append new tab item
- *
- * @param obj The controlbar object
- * @param icon_path The icon path of item
- * @param label The label of item
- * @param view The view of item
- * @return The item of controlbar
- */
EAPI Elm_Controlbar_Item *elm_controlbar_tab_item_append(Evas_Object *obj, const char *icon_path, const char *label, Evas_Object *view);
- /**
- * Prepend new tab item
- *
- * @param obj The controlbar object
- * @param icon_path The icon path of item
- * @param label The label of item
- * @param view The view of item
- * @return The item of controlbar
- */
EAPI Elm_Controlbar_Item *elm_controlbar_tab_item_prepend(Evas_Object *obj, const char *icon_path, const char *label, Evas_Object *view);
- /**
- * Insert new tab item before given item
- *
- * @param obj The controlbar object
- * @param before The given item
- * @param icon_path The icon path of item
- * @param label The label of item
- * @param view The view of item
- * @return The item of controlbar
- */
EAPI Elm_Controlbar_Item *elm_controlbar_tab_item_insert_before(Evas_Object *obj, Elm_Controlbar_Item *before, const char *icon_path, const char *label, Evas_Object *view);
- /**
- * Insert new tab item after given item
- *
- * @param obj The controlbar object
- * @param after The given item
- * @param icon_path The icon path of item
- * @param label The label of item
- * @param view The view of item
- * @return The item of controlbar
- */
EAPI Elm_Controlbar_Item *elm_controlbar_tab_item_insert_after(Evas_Object *obj, Elm_Controlbar_Item *after, const char *icon_path, const char *label, Evas_Object *view);
- /**
- * Append new tool item
- *
- * @param obj The controlbar object
- * @param icon_path The icon path of item
- * @param label The label of item
- * @param func Callback function of item
- * @param data The data of callback function
- * @return The item of controlbar
- */
EAPI Elm_Controlbar_Item *elm_controlbar_tool_item_append(Evas_Object *obj, const char *icon_path, const char *label, void (*func) (void *data, Evas_Object *obj, void *event_info), void *data);
- /**
- * Prepend new tool item
- *
- * @param obj The controlbar object
- * @param icon_path The icon path of item
- * @param label The label of item
- * @param func Callback function of item
- * @param data The data of callback function
- * @return The item of controlbar
- */
EAPI Elm_Controlbar_Item *elm_controlbar_tool_item_prepend(Evas_Object *obj, const char *icon_path, const char *label, void (*func) (void *data, Evas_Object *obj, void *event_info), void *data);
- /**
- * Insert new tool item before given item
- *
- * @param obj The controlbar object
- * @param before The given item
- * @param icon_path The icon path of item
- * @param label The label of item
- * @param func Callback function of item
- * @param data The data of callback function
- * @return The item of controlbar
- */
EAPI Elm_Controlbar_Item *elm_controlbar_tool_item_insert_before(Evas_Object *obj, Elm_Controlbar_Item *before, const char *icon_path, const char *label, void (*func) (void *data, Evas_Object *obj, void *event_info), void *data);
- /**
- * Insert new tool item after given item
- *
- * @param obj The controlbar object
- * @param after The given item
- * @param icon_path The icon path of item
- * @param label The label of item
- * @param func Callback function of item
- * @param data The data of callback function
- * @return The item of controlbar
- */
EAPI Elm_Controlbar_Item *elm_controlbar_tool_item_insert_after(Evas_Object *obj, Elm_Controlbar_Item *after, const char *icon_path, const char *label, void (*func) (void *data, Evas_Object *obj, void *event_info), void *data);
- /**
- * Append new object item
- *
- * @param obj The controlbar object
- * @param obj_item The object of item
- * @param sel The number of sel occupied
- * @return The item of controlbar
- */
EAPI Elm_Controlbar_Item *elm_controlbar_object_item_append(Evas_Object *obj, Evas_Object *obj_item, const int sel);
- /**
- * Prepend new object item
- *
- * @param obj The controlbar object
- * @param obj_item The object of item
- * @param sel The number of sel occupied
- * @return The item of controlbar
- */
EAPI Elm_Controlbar_Item *elm_controlbar_object_item_prepend(Evas_Object *obj, Evas_Object *obj_item, const int sel);
- /**
- * Insert new object item before given item
- *
- * @param obj The controlbar object
- * @param before The given item
- * @param obj_item The object of item
- * @param sel The number of sel occupied
- * @return The item of controlbar
- */
EAPI Elm_Controlbar_Item *elm_controlbar_object_item_insert_before(Evas_Object *obj, Elm_Controlbar_Item *before, Evas_Object *obj_item, const int sel);
- /**
- * Insert new object item after given item
- *
- * @param obj The controlbar object
- * @param after The given item
- * @param obj_item The object of item
- * @param sel The number of sel occupied
- * @return The item of controlbar
- */
EAPI Elm_Controlbar_Item *elm_controlbar_object_item_insert_after(Evas_Object *obj, Elm_Controlbar_Item *after, Evas_Object *obj_item, const int sel);
- /**
- * Get the object of the object item
- *
- * @param it The item of controlbar
- * @return The object of the object item
- */
EAPI Evas_Object *elm_controlbar_object_item_object_get(const Elm_Controlbar_Item *it);
- /**
- * Delete item from controlbar
- *
- * @param it The item of controlbar
- */
EAPI void elm_controlbar_item_del(Elm_Controlbar_Item *it);
- /**
- * Select item in controlbar
- *
- * @param it The item of controlbar
- */
EAPI void elm_controlbar_item_select(Elm_Controlbar_Item *it);
- /**
- * Set the visible status of item in bar
- *
- * @param it The item of controlbar
- * @param bar EINA_TRUE or EINA_FALSE
- */
EAPI void elm_controlbar_item_visible_set(Elm_Controlbar_Item *it, Eina_Bool bar);
- /**
- * Get the result which or not item is visible in bar
- *
- * @param it The item of controlbar
- * @return EINA_TRUE or EINA_FALSE
- */
EAPI Eina_Bool elm_controlbar_item_visible_get(const Elm_Controlbar_Item * it);
- /**
- * Set item disable
- *
- * @param it The item of controlbar
- * @param bar EINA_TRUE or EINA_FALSE
- */
EAPI void elm_controlbar_item_disabled_set(Elm_Controlbar_Item * it, Eina_Bool disabled);
- /**
- * Get item disable
- *
- * @param it The item of controlbar
- * @return EINA_TRUE or EINA_FALSE
- */
EAPI Eina_Bool elm_controlbar_item_disabled_get(const Elm_Controlbar_Item * it);
- /**
- * Set the icon of item
- *
- * @param it The item of controlbar
- * @param icon_path The icon path of the item
- * @return The icon object
- */
EAPI void elm_controlbar_item_icon_set(Elm_Controlbar_Item *it, const char *icon_path);
- /**
- * Get the icon of item
- *
- * @param it The item of controlbar
- * @return The icon object
- */
EAPI Evas_Object *elm_controlbar_item_icon_get(const Elm_Controlbar_Item *it);
- /**
- * Set the label of item
- *
- * @param it The item of controlbar
- * @param label The label of item
- */
EAPI void elm_controlbar_item_label_set(Elm_Controlbar_Item *it, const char *label);
- /**
- * Get the label of item
- *
- * @param it The item of controlbar
- * @return The label of item
- */
EAPI const char *elm_controlbar_item_label_get(const Elm_Controlbar_Item *it);
- /**
- * Get the selected item
- *
- * @param obj The controlbar object
- * @return The item of controlbar
- */
EAPI Elm_Controlbar_Item *elm_controlbar_selected_item_get(const Evas_Object *obj);
- /**
- * Get the first item
- *
- * @param obj The controlbar object
- * @return The item of controlbar
- */
EAPI Elm_Controlbar_Item *elm_controlbar_first_item_get(const Evas_Object *obj);
- /**
- * Get the last item
- *
- * @param obj The controlbar object
- * @return The item of controlbar
- */
EAPI Elm_Controlbar_Item *elm_controlbar_last_item_get(const Evas_Object *obj);
- /**
- * Get the items
- *
- * @param obj The controlbar object
- * @return The list of the items
- */
EAPI const Eina_List *elm_controlbar_items_get(const Evas_Object *obj);
- /**
- * Get the previous item
- *
- * @param it The item of controlbar
- * @return The previous item of the parameter item
- */
EAPI Elm_Controlbar_Item *elm_controlbar_item_prev(Elm_Controlbar_Item *it);
- /**
- * Get the next item
- *
- * @param obj The controlbar object
- * @return The next item of the parameter item
- */
EAPI Elm_Controlbar_Item *elm_controlbar_item_next(Elm_Controlbar_Item *it);
- /**
- * Set the view of the item
- *
- * @param it The item of controlbar
- * @param view The view for the item
- */
EAPI void elm_controlbar_item_view_set(Elm_Controlbar_Item *it, Evas_Object * view);
- /**
- * Get the view of the item
- *
- * @param it The item of controlbar
- * @return The view for the item
- */
EAPI Evas_Object *elm_controlbar_item_view_get(const Elm_Controlbar_Item *it);
- /**
- * Unset the view of the item
- *
- * @param it The item of controlbar
- * @return The view for the item
- */
EAPI Evas_Object *elm_controlbar_item_view_unset(Elm_Controlbar_Item *it);
- /**
- * Set the vertical mode of the controlbar
- *
- * @param obj The object of the controlbar
- * @param vertical The vertical mode of the controlbar (TRUE = vertical, FALSE = horizontal)
- */
EAPI Evas_Object *elm_controlbar_item_button_get(const Elm_Controlbar_Item *it);
- /**
- * Set the mode of the controlbar
- *
- * @param obj The object of the controlbar
- * @param mode The mode of the controlbar
- */
EAPI void elm_controlbar_mode_set(Evas_Object *obj, int mode);
- /**
- * Set the alpha of the controlbar
- *
- * @param obj The object of the controlbar
- * @param alpha The alpha value of the controlbar (0-100)
- */
EAPI void elm_controlbar_alpha_set(Evas_Object *obj, int alpha);
- /**
- * Set auto-align mode of the controlbar(It's not prepared yet)
- * If you set the auto-align and add items more than 5,
- * the "more" item will be made and the items more than 5 will be unvisible.
- *
- * @param obj The object of the controlbar
- * @param auto_align The dicision that the controlbar use the auto-align
- */
EAPI void elm_controlbar_item_auto_align_set(Evas_Object *obj, Eina_Bool auto_align);
- /**
- * Get the button object of the item
- *
- * @param it The item of controlbar
- * @return button object of the item
- */
EAPI void elm_controlbar_vertical_set(Evas_Object *obj, Eina_Bool vertical);
- /**
- * @}
- */
-
-
- /**
- * @defgroup Searchbar Searchbar
- * @addtogroup TickerNoti
- * @{
- * @ingroup Elementary
- *
- * This is Searchbar.
- * It can contain a simple entry and button object.
- */
- /**
- * Add a new searchbar to the parent
- * @param parent The parent object
- * @return The new object or NULL if it cannot be created
- */
+ /* SearchBar */
EAPI Evas_Object *elm_searchbar_add(Evas_Object *parent);
- /**
- * set the text of entry
- *
- * @param obj The searchbar object
- * @return void
- */
EAPI void elm_searchbar_text_set(Evas_Object *obj, const char *entry);
- /**
- * get the text of entry
- *
- * @param obj The searchbar object
- * @return string pointer of entry
- */
EAPI const char *elm_searchbar_text_get(Evas_Object *obj);
- /**
- * get the pointer of entry
- *
- * @param obj The searchbar object
- * @return the entry object
- */
EAPI Evas_Object *elm_searchbar_entry_get(Evas_Object *obj);
- /**
- * get the pointer of editfield
- *
- * @param obj The searchbar object
- * @return the editfield object
- */
EAPI Evas_Object *elm_searchbar_editfield_get(Evas_Object *obj);
- /**
- * set the cancel button animation flag
- *
- * @param obj The searchbar object
- * @param cancel_btn_ani_flag The flag of animating cancen button or not
- * @return void
- */
EAPI void elm_searchbar_cancel_button_animation_set(Evas_Object *obj, Eina_Bool cancel_btn_ani_flag);
- /**
- * set the cancel button show mode
- *
- * @param obj The searchbar object
- * @param visible The flag of cancen button show or not
- * @return void
- */
EAPI void elm_searchbar_cancel_button_set(Evas_Object *obj, Eina_Bool visible);
- /**
- * clear searchbar status
- *
- * @param obj The searchbar object
- * @return void
- */
EAPI void elm_searchbar_clear(Evas_Object *obj);
- /**
- * set the searchbar boundary rect mode(with bg rect) set
- *
- * @param obj The searchbar object
- * @param boundary The present flag of boundary rect or not
- * @return void
- */
EAPI void elm_searchbar_boundary_rect_set(Evas_Object *obj, Eina_Bool boundary);
- /**
- * @}
- */
EAPI Evas_Object *elm_page_control_add(Evas_Object *parent);
EAPI void elm_page_control_page_count_set(Evas_Object *obj, unsigned int page_count);
EAPI void elm_nocontents_custom_set(const Evas_Object *obj, Evas_Object *custom);
EAPI Evas_Object *elm_nocontents_custom_get(const Evas_Object *obj);
- /**
- * @defgroup TickerNoti TickerNoti
- * @addtogroup TickerNoti
- * @{
- *
- * This is a notification widget which can be used to display some short information.
- *
- * Parts which can be used with elm_object_text_part_set() and
- * elm_object_text_part_get():
- *
- * @li NULL/"default" - Operates on tickernoti content-text
- *
- * Parts which can be used with elm_object_content_part_set(),
- * elm_object_content_part_get() and elm_object_content_part_unset():
- *
- * @li "icon" - Operates on tickernoti's icon
- * @li "button" - Operates on tickernoti's button
- *
- * smart callbacks called:
- * @li "clicked" - emitted when tickernoti is clicked, except at the
- * swallow/button region, if any.
- * @li "hide" - emitted when the tickernoti is completely hidden. In case of
- * any hide animation, this signal is emitted after the animation.
- */
+ /* TickerNoti */
typedef enum
{
ELM_TICKERNOTI_ORIENT_TOP = 0,
ELM_TICKERNOTI_ORIENT_LAST
} Elm_Tickernoti_Orient;
- /**
- * Add a tickernoti object to @p parent
- *
- * @param parent The parent object
- *
- * @return The tickernoti object, or NULL upon failure
- */
EAPI Evas_Object *elm_tickernoti_add (Evas_Object *parent);
- /**
- * Set the orientation of the tickernoti object
- *
- * @param obj The tickernoti object
- * @param orient The orientation of tickernoti object
- */
EAPI void elm_tickernoti_orient_set (Evas_Object *obj, Elm_Tickernoti_Orient orient) EINA_ARG_NONNULL(1);
- /**
- * Get the orientation of the tickernoti object
- *
- * @param obj The tickernotil object
- * @return The orientation of tickernotil object
- */
EAPI Elm_Tickernoti_Orient elm_tickernoti_orient_get (const Evas_Object *obj) EINA_ARG_NONNULL(1);
- /**
- * Get the rotation of tickernoti object
- *
- * @param obj The tickernotil object
- * @return The rotation angle
- */
EAPI int elm_tickernoti_rotation_get (const Evas_Object *obj) EINA_ARG_NONNULL(1);
- /**
- * Set the rotation angle for the tickernoti object
- *
- * @param obj The tickernoti object
- * @param angle The rotation angle(in degree) will be used on the tickernoti object
- */
EAPI void elm_tickernoti_rotation_set (Evas_Object *obj, int angle) EINA_ARG_NONNULL(1);
- /**
- * Get the view window(elm_win) on the tickernoti object
- *
- * @param obj The tickernotil object
- * @return internal view window(elm_win) object
- */
EAPI Evas_Object *elm_tickernoti_win_get (const Evas_Object *obj) EINA_ARG_NONNULL(1);
/* #### Below APIs and data structures are going to be deprecated, announcment will be made soon ####*/
- /**
- * @deprecated
- */
typedef enum
{
ELM_TICKERNOTI_DEFAULT,
ELM_TICKERNOTI_DETAILVIEW
} Elm_Tickernoti_Mode;
- /**
- * Set the detail label on the tickernoti object
+ EAPI void elm_tickernoti_detailview_label_set (Evas_Object *obj, const char *label) EINA_ARG_NONNULL(1);
+ EAPI const char *elm_tickernoti_detailview_label_get (const Evas_Object *obj)EINA_ARG_NONNULL(1);
+ EAPI void elm_tickernoti_detailview_button_set (Evas_Object *obj, Evas_Object *button) EINA_ARG_NONNULL(2);
+ EAPI Evas_Object *elm_tickernoti_detailview_button_get (const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EAPI void elm_tickernoti_detailview_icon_set (Evas_Object *obj, Evas_Object *icon) EINA_ARG_NONNULL(1);
+ EAPI Evas_Object *elm_tickernoti_detailview_icon_get (const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EAPI Evas_Object *elm_tickernoti_detailview_get (const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EAPI void elm_tickernoti_mode_set (Evas_Object *obj, Elm_Tickernoti_Mode mode) EINA_ARG_NONNULL(1);
+ EAPI Elm_Tickernoti_Mode elm_tickernoti_mode_get (const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EAPI void elm_tickernoti_orientation_set (Evas_Object *obj, Elm_Tickernoti_Orient orient) EINA_ARG_NONNULL(1);
+ EAPI Elm_Tickernoti_Orient elm_tickernoti_orientation_get (const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EAPI void elm_tickernoti_label_set (Evas_Object *obj, const char *label) EINA_ARG_NONNULL(1);
+ EAPI const char *elm_tickernoti_label_get (const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EAPI void elm_tickernoti_icon_set (Evas_Object *obj, Evas_Object *icon) EINA_ARG_NONNULL(1);
+ EAPI Evas_Object *elm_tickernoti_icon_get (const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EAPI void elm_tickernoti_button_set (Evas_Object *obj, Evas_Object *button) EINA_ARG_NONNULL(1);
+ EAPI Evas_Object *elm_tickernoti_button_get (const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ /* ############################################################################### */
+ /*
+ * Parts which can be used with elm_object_text_part_set() and
+ * elm_object_text_part_get():
*
- * @param obj The tickernoti object
- * @param label The label will be used on the tickernoti object
- * @deprecated use elm_object_text_set() instead
- */
- WILL_DEPRECATE EAPI void elm_tickernoti_detailview_label_set (Evas_Object *obj, const char *label) EINA_ARG_NONNULL(1);
- /**
- * Get the detail label used on the tickernoti object
- *
- * @param obj The tickernotil object
- * @return The string inside the label
- * @deprecated use elm_object_text_get() instead
- */
- WILL_DEPRECATE EAPI const char *elm_tickernoti_detailview_label_get (const Evas_Object *obj)EINA_ARG_NONNULL(1);
- /**
- * Set the button object used on the tickernoti object
- *
- * @param obj The tickernotil object
- * @param button The button object will be used on the tickernoti object
- * @deprecated use elm_object_content_part_set() instead with "icon" as part name
- */
- WILL_DEPRECATE EAPI void elm_tickernoti_detailview_button_set (Evas_Object *obj, Evas_Object *button) EINA_ARG_NONNULL(2);
- /**
- * Get the button object used on the tickernoti object
- *
- * @param obj The tickernotil object
- * @return The button object inside the tickernoti
- * @deprecated use elm_object_content_part_get() instead with "button" as part name
- */
- WILL_DEPRECATE EAPI Evas_Object *elm_tickernoti_detailview_button_get (const Evas_Object *obj) EINA_ARG_NONNULL(1);
- /**
- * Set the detail icon object used on the tickernoti object
- *
- * @param obj The tickernotil object
- * @param icon The icon object will be used on the tickernoti object
- * @deprecated use elm_object_content_part_set() instead with "icon" as part name
- */
- WILL_DEPRECATE EAPI void elm_tickernoti_detailview_icon_set (Evas_Object *obj, Evas_Object *icon) EINA_ARG_NONNULL(1);
- /**
- * Get the detail icon object used on the tickernoti object
- *
- * @param obj The tickernotil object
- * @return The icon object inside the tickernoti
- * @deprecated use elm_object_content_part_get() instead with "icon" as part name
- */
- WILL_DEPRECATE EAPI Evas_Object *elm_tickernoti_detailview_icon_get (const Evas_Object *obj) EINA_ARG_NONNULL(1);
- /**
- * Get the view mode on the tickernoti object
- *
- * @param obj The tickernotil object
- * @return The view mode
- * @deprecated removed as now styles are used instead
- */
- WILL_DEPRECATE EAPI Evas_Object *elm_tickernoti_detailview_get (const Evas_Object *obj) EINA_ARG_NONNULL(1);
- /**
- * Set the view mode used on the tickernoti object
- *
- * @param obj The tickernotil object
- * @param mode The view mode will be used on the tickernoti object
- * @deprecated removed as now styles are used instead
- */
- WILL_DEPRECATE EAPI void elm_tickernoti_mode_set (Evas_Object *obj, Elm_Tickernoti_Mode mode) EINA_ARG_NONNULL(1);
- /**
- * Get the detail view window(elm_win) on the tickernoti object
- *
- * @param obj The tickernotil object
- * @return detail view window(elm_win) object
- */
- WILL_DEPRECATE EAPI Elm_Tickernoti_Mode elm_tickernoti_mode_get (const Evas_Object *obj) EINA_ARG_NONNULL(1);
- /**
- * Set the orientation of the tickernoti object
- *
- * @param obj The tickernoti object
- * @param orient The orientation of tickernoti object
- * @deprecated use elm_tickernoti_orient_set() instead
- */
- WILL_DEPRECATE EAPI void elm_tickernoti_orientation_set (Evas_Object *obj, Elm_Tickernoti_Orient orient) EINA_ARG_NONNULL(1);
- /**
- * Get the orientation of the tickernoti object
- *
- * @param obj The tickernotil object
- * @return The orientation of tickernotil object
- * @deprecated use elm_tickernoti_orient_get() instead
- */
- WILL_DEPRECATE EAPI Elm_Tickernoti_Orient elm_tickernoti_orientation_get (const Evas_Object *obj) EINA_ARG_NONNULL(1);
- /**
- * Set the label on the tickernoti object
- *
- * @param obj The tickernoti object
- * @param label The label will be used on the tickernoti object
- * @deprecated use elm_object_text_get()
- */
- WILL_DEPRECATE EAPI void elm_tickernoti_label_set (Evas_Object *obj, const char *label) EINA_ARG_NONNULL(1);
- /**
- * Get the label used on the tickernoti object
- *
- * @param obj The tickernotil object
- * @return The string inside the label
- * @deprecated use elm_object_text_get() instead
- */
- WILL_DEPRECATE EAPI const char *elm_tickernoti_label_get (const Evas_Object *obj) EINA_ARG_NONNULL(1);
- /**
- * Set the icon object of the tickernoti object
- *
- * @param obj The tickernotil object
- * @param icon The icon object will be used on the tickernoti object
- * @deprecated use elm_object_content_part_set() instead with "icon" as part name
- */
- WILL_DEPRECATE EAPI void elm_tickernoti_icon_set (Evas_Object *obj, Evas_Object *icon) EINA_ARG_NONNULL(1);
- /**
- * Get the icon object of the tickernoti object
+ * @li NULL/"default" - Operates on tickernoti content-text
*
- * @param obj The tickernotil object
- * @return The icon object inside the tickernoti
- * @deprecated use elm_object_content_part_get() instead with "icon" as part name
- */
- WILL_DEPRECATE EAPI Evas_Object *elm_tickernoti_icon_get (const Evas_Object *obj) EINA_ARG_NONNULL(1);
- /**
- * Set the action button object used on the tickernoti object
+ * Parts which can be used with elm_object_content_part_set(),
+ * elm_object_content_part_get() and elm_object_content_part_unset():
*
- * @param obj The tickernotil object
- * @param button The button object will be used on the tickernoti object
- * @deprecated use elm_object_content_part_set() instead with "button" as part name
- */
- WILL_DEPRECATE EAPI void elm_tickernoti_button_set (Evas_Object *obj, Evas_Object *button) EINA_ARG_NONNULL(1);
- /**
- * Get the action button object used on the tickernoti object
+ * @li "icon" - Operates on tickernoti's icon
+ * @li "button" - Operates on tickernoti's button
*
- * @param obj The tickernotil object
- * @return The button object inside the tickernoti
- * @deprecated use elm_object_content_part_get() instead with "button" as part name
- */
- WILL_DEPRECATE EAPI Evas_Object *elm_tickernoti_button_get (const Evas_Object *obj) EINA_ARG_NONNULL(1);
- /**
- * @}
+ * smart callbacks called:
+ * @li "clicked" - emitted when tickernoti is clicked, except at the
+ * swallow/button region, if any.
+ * @li "hide" - emitted when the tickernoti is completely hidden. In case of
+ * any hide animation, this signal is emitted after the animation.
*/
- /**
- * @defgroup Colorpalette Colorpalette
- * @ingroup Elementary
- * @addtogroup Colorpalette
- * @{
- *
- * Using colorpalette, you can select a color by clicking
- * a color rectangle on the colorpalette.
- *
- * Smart callbacks that you can add are:
- *
- * clicked - This signal is sent when a color rectangle is clicked.
- */
+ /* colorpalette */
typedef struct _Colorpalette_Color Elm_Colorpalette_Color;
+
struct _Colorpalette_Color
{
unsigned int r, g, b;
};
- /**
- * Add a new colorpalette to the parent.
- *
- * @param parent The parent object
- * @return The new object or NULL if it cannot be created
- *
- * @ingroup Colorpalette
- */
EAPI Evas_Object *elm_colorpalette_add(Evas_Object *parent);
- /**
- * Set colors to the colorpalette.
- *
- * @param obj Colorpalette object
- * @param color_num number of the colors on the colorpalette
- * @param color Color lists
- */
EAPI void elm_colorpalette_color_set(Evas_Object *obj, int color_num, Elm_Colorpalette_Color *color);
- /**
- * Set row/column value for the colorpalette.
- *
- * @param obj Colorpalette object
- * @param row row value for the colorpalette
- * @param col column value for the colorpalette
- */
EAPI void elm_colorpalette_row_column_set(Evas_Object *obj, int row, int col);
-
- /**
- * @}
+ /* smart callbacks called:
+ * "clicked" - when image clicked
*/
/* editfield */
*/
- /**
- * @defgroup Multibuttonenetry Multibuttonenetry
- *
- * @image html img/widget/flipselector/preview-00.png
- * @image latex img/widget/flipselector/preview-00.eps
- *
- * A Multibuttonentry is a widget to allow a user to insert a text button.
- * the text button is inserted by pressing the "return" key. If there is no space in the current row,
- * the new button is entered in the next row. If the button is pressed, it will become focused.
- * The focus can be removed by pressing the "backspace" key.
- * when items are added over 1 lines, if Multibuttonentry lost focus, it becase shrink mode ( made it 1 line)
- *
- * Smart callbacks one can register to:
- * - @c "item,selected" - when item is selected . it can be called by backspace key.
- * - @c "item,added" - when a new multibuttonentry item is added.
- * - @c "item,deleted" -when a multibuttonentry item is deleted.
- * - @c "item,clicked" - selected item of multibuttonentry is clicked.
- * - @c "clicked" - when multibuttonentry is clicked.
- * - @c "focused" - when multibuttonentry is focused.
- * - @c "unfocused" - when multibuttonentry is unfocused.
- * - @c "expanded" - when multibuttonentry is expanded .
- * - @c "shrank" - when multibuttonentry is shrank.
- * - @c "shrank,state,changed" - when shrink mode state of multibuttonentry is changed.
- *
- * Here is an example on its usage:
- * @li @ref multibuttonentry_example
- */
- /**
- * @addtogroup Multibuttonentry
- * @{
- */
+ /* Sliding Drawer */
+ typedef enum _Elm_SlidingDrawer_Pos
+ {
+ ELM_SLIDINGDRAWER_BOTTOM,
+ ELM_SLIDINGDRAWER_LEFT,
+ ELM_SLIDINGDRAWER_RIGHT,
+ ELM_SLIDINGDRAWER_TOP
+ } Elm_SlidingDrawer_Pos;
+
+ typedef struct _Elm_SlidingDrawer_Drag_Value
+ {
+ double x, y;
+ } Elm_SlidingDrawer_Drag_Value;
+
+ EINA_DEPRECATED EAPI Evas_Object *elm_slidingdrawer_add(Evas_Object *parent);
+ EINA_DEPRECATED EAPI void elm_slidingdrawer_content_set (Evas_Object *obj, Evas_Object *content);
+ EINA_DEPRECATED EAPI Evas_Object *elm_slidingdrawer_content_unset(Evas_Object *obj);
+ EINA_DEPRECATED EAPI void elm_slidingdrawer_pos_set(Evas_Object *obj, Elm_SlidingDrawer_Pos pos);
+ EINA_DEPRECATED EAPI void elm_slidingdrawer_max_drag_value_set(Evas_Object *obj, double dw, double dh);
+ EINA_DEPRECATED EAPI void elm_slidingdrawer_drag_value_set(Evas_Object *obj, double dx, double dy);
+ /* multibuttonentry */
typedef struct _Multibuttonentry_Item Elm_Multibuttonentry_Item;
typedef Eina_Bool (*Elm_Multibuttonentry_Item_Verify_Callback) (Evas_Object *obj, const char *item_label, void *item_data, void *data);
-
- /**
- * @brief Add a new multibuttonentry to the parent
- *
- * @param parent The parent object
- * @return The new object or NULL if it cannot be created
- */
EAPI Evas_Object *elm_multibuttonentry_add(Evas_Object *parent);
- /**
- * Get the label
- *
- * @param obj The multibuttonentry object
- * @return The label, or NULL if none
- */
EAPI const char *elm_multibuttonentry_label_get(const Evas_Object *obj);
- /**
- * Set the label
- *
- * @param obj The multibuttonentry object
- * @param label The text label string
- */
EAPI void elm_multibuttonentry_label_set(Evas_Object *obj, const char *label);
- /**
- * Get the entry of the multibuttonentry object
- *
- * @param obj The multibuttonentry object
- * @return The entry object, or NULL if none
- */
EAPI Evas_Object *elm_multibuttonentry_entry_get(const Evas_Object *obj);
- /**
- * Get the guide text
- *
- * @param obj The multibuttonentry object
- * @return The guide text, or NULL if none
- */
EAPI const char * elm_multibuttonentry_guide_text_get(const Evas_Object *obj);
- /**
- * Set the guide text
- *
- * @param obj The multibuttonentry object
- * @param label The guide text string
- */
EAPI void elm_multibuttonentry_guide_text_set(Evas_Object *obj, const char *guidetext);
- /**
- * Get the value of shrink_mode state.
- *
- * @param obj The multibuttonentry object
- * @param the value of shrink mode state.
- */
EAPI int elm_multibuttonentry_contracted_state_get(const Evas_Object *obj);
- /**
- * Set/Unset the multibuttonentry to shrink mode state of single line
- *
- * @param obj The multibuttonentry object
- * @param the value of shrink_mode state. set this to 1 to set the multibuttonentry to shrink state of single line. set this to 0 to unset the contracted state.
- */
EAPI void elm_multibuttonentry_contracted_state_set(Evas_Object *obj, int contracted);
- /**
- * Prepend a new item to the multibuttonentry
- *
- * @param obj The multibuttonentry object
- * @param label The label of new item
- * @param data The ponter to the data to be attached
- * @return A handle to the item added or NULL if not possible
- */
EAPI Elm_Multibuttonentry_Item *elm_multibuttonentry_item_add_start(Evas_Object *obj, const char *label, void *data);
- /**
- * Append a new item to the multibuttonentry
- *
- * @param obj The multibuttonentry object
- * @param label The label of new item
- * @param data The ponter to the data to be attached
- * @return A handle to the item added or NULL if not possible
- */
EAPI Elm_Multibuttonentry_Item *elm_multibuttonentry_item_add_end(Evas_Object *obj, const char *label, void *data);
- /**
- * Add a new item to the multibuttonentry before the indicated object
- *
- * reference.
- * @param obj The multibuttonentry object
- * @param before The item before which to add it
- * @param label The label of new item
- * @param data The ponter to the data to be attached
- * @return A handle to the item added or NULL if not possible
- */
EAPI Elm_Multibuttonentry_Item *elm_multibuttonentry_item_add_before(Evas_Object *obj, const char *label, Elm_Multibuttonentry_Item *before, void *data);
- /**
- * Add a new item to the multibuttonentry after the indicated object
- *
- * @param obj The multibuttonentry object
- * @param after The item after which to add it
- * @param label The label of new item
- * @param data The ponter to the data to be attached
- * @return A handle to the item added or NULL if not possible
- */
EAPI Elm_Multibuttonentry_Item *elm_multibuttonentry_item_add_after(Evas_Object *obj, const char *label, Elm_Multibuttonentry_Item *after, void *data);
- /**
- * Get a list of items in the multibuttonentry
- *
- * @param obj The multibuttonentry object
- * @return The list of items, or NULL if none
- */
EAPI const Eina_List *elm_multibuttonentry_items_get(const Evas_Object *obj);
- /**
- * Get the first item in the multibuttonentry
- *
- * @param obj The multibuttonentry object
- * @return The first item, or NULL if none
- */
EAPI Elm_Multibuttonentry_Item *elm_multibuttonentry_item_first_get(const Evas_Object *obj);
- /**
- * Get the last item in the multibuttonentry
- *
- * @param obj The multibuttonentry object
- * @return The last item, or NULL if none
- */
EAPI Elm_Multibuttonentry_Item *elm_multibuttonentry_item_last_get(const Evas_Object *obj);
- /**
- * Get the selected item in the multibuttonentry
- *
- * @param obj The multibuttonentry object
- * @return The selected item, or NULL if none
- */
EAPI Elm_Multibuttonentry_Item *elm_multibuttonentry_item_selected_get(const Evas_Object *obj);
- /**
- * Set the selected state of an item
- *
- * @param item The item
- * @param selected if it's EINA_TRUE, select the item otherwise, unselect the item
- */
EAPI void elm_multibuttonentry_item_selected_set(Elm_Multibuttonentry_Item *item);
- /**
- * unselect all of items.
- *
- * @param obj The multibuttonentry object
- */
EAPI void elm_multibuttonentry_item_unselect_all(Evas_Object *obj);
- /**
- * Delete a given item
- *
- * @param item The item
- */
EAPI void elm_multibuttonentry_item_del(Elm_Multibuttonentry_Item *item);
- /**
- * Remove all items in the multibuttonentry.
- *
- * @param obj The multibuttonentry object
- */
EAPI void elm_multibuttonentry_items_del(Evas_Object *obj);
- /**
- * Get the label of a given item
- *
- * @param item The item
- * @return The label of a given item, or NULL if none
- */
EAPI const char *elm_multibuttonentry_item_label_get(const Elm_Multibuttonentry_Item *item);
- /**
- * Set the label of a given item
- *
- * @param item The item
- * @param label The text label string
- */
EAPI void elm_multibuttonentry_item_label_set(Elm_Multibuttonentry_Item *item, const char *str);
- /**
- * Get the previous item in the multibuttonentry
- *
- * @param item The item
- * @return The item before the item @p item
- */
EAPI Elm_Multibuttonentry_Item *elm_multibuttonentry_item_prev(Elm_Multibuttonentry_Item *item);
- /**
- * Get the next item in the multibuttonentry
- *
- * @param item The item
- * @return The item after the item @p item
- */
EAPI Elm_Multibuttonentry_Item *elm_multibuttonentry_item_next(Elm_Multibuttonentry_Item *item);
-
EAPI void *elm_multibuttonentry_item_data_get(const Elm_Multibuttonentry_Item *item);
EAPI void elm_multibuttonentry_item_data_set(Elm_Multibuttonentry_Item *item, void *data);
EAPI void elm_multibuttonentry_item_verify_callback_set(Evas_Object *obj, Elm_Multibuttonentry_Item_Verify_Callback func, void *data);
-
- /**
- * @}
- */
-
- /**
- * @defgroup Stackedicon Stackedicon
- * @ingroup Elementary
- * @addtogroup Stackedicon
- * @{
- *
- * This is a Stackedicon.
- * smart callback called:
- * "expanded" - This signal is emitted when a stackedicon is expanded.
- * "clicked" - This signal is emitted when a stackedicon is clicked.
- *
- * available styles:
+ /* smart callback called:
+ * "selected" - This signal is emitted when the selected item of multibuttonentry is changed.
+ * "added" - This signal is emitted when a new multibuttonentry item is added.
+ * "deleted" - This signal is emitted when a multibuttonentry item is deleted.
+ * "expanded" - This signal is emitted when a multibuttonentry is expanded.
+ * "contracted" - This signal is emitted when a multibuttonentry is contracted.
+ * "contracted,state,changed" - This signal is emitted when the contracted state of multibuttonentry is changed.
+ * "item,selected" - This signal is emitted when the selected item of multibuttonentry is changed.
+ * "item,added" - This signal is emitted when a new multibuttonentry item is added.
+ * "item,deleted" - This signal is emitted when a multibuttonentry item is deleted.
+ * "item,clicked" - This signal is emitted when a multibuttonentry item is clicked.
+ * "clicked" - This signal is emitted when a multibuttonentry is clicked.
+ * "unfocused" - This signal is emitted when a multibuttonentry is unfocused.
+ */
+ /* available styles:
* default
*/
+
+ /* stackedicon */
typedef struct _Stackedicon_Item Elm_Stackedicon_Item;
- /**
- * Add a new stackedicon to the parent
- *
- * @param parent The parent object
- * @return The new object or NULL if it cannot be created
- */
EAPI Evas_Object *elm_stackedicon_add(Evas_Object *parent);
- /**
- * This appends a path to the stackedicon
- *
- * @param obj The stackedicon object
- * @param path The image full path
- * @return The new item or NULL if it cannot be created
- */
EAPI Elm_Stackedicon_Item *elm_stackedicon_item_append(Evas_Object *obj, const char *path);
- /**
- * This prepends a path to the stackedicon
- *
- * @param obj The stackedicon object
- * @param path The image full path
- * @return The new item or NULL if it cannot be created
- */
EAPI Elm_Stackedicon_Item *elm_stackedicon_item_prepend(Evas_Object *obj, const char *path);
- /**
- * This delete a path at the stackedicon
- *
- * @param Elm_Stackedicon_Item The delete item
- */
EAPI void elm_stackedicon_item_del(Elm_Stackedicon_Item *it);
- /**
- * Get item list from the stackedicon
- *
- * @param obj The stackedicon object
- * @return The item list or NULL if it cannot be created
- */
EAPI Eina_List *elm_stackedicon_item_list_get(Evas_Object *obj);
- /**
- * @}
+ /* smart callback called:
+ * "expanded" - This signal is emitted when a stackedicon is expanded.
+ * "clicked" - This signal is emitted when a stackedicon is clicked.
+ */
+ /* available styles:
+ * default
*/
-
/* dialoguegroup */
typedef struct _Dialogue_Item Dialogue_Item;
EAPI Eina_Bool elm_dayselector_check_state_get(Evas_Object *obj, Elm_DaySelector_Day day);
EAPI void elm_dayselector_check_state_set(Evas_Object *obj, Elm_DaySelector_Day day, Eina_Bool checked);
- /**
- * @defgroup Imageslider Imageslider
- * @ingroup Elementary
- * @addtogroup Imageslider
- * @{
- *
- * By flicking images on the screen,
- * you can see the images in specific path.
- */
+ /* Image Slider */
typedef struct _Imageslider_Item Elm_Imageslider_Item;
typedef void (*Elm_Imageslider_Cb)(void *data, Evas_Object *obj, void *event_info);
-
- /**
- * Add an Image Slider widget
- *
- * @param parent The parent object
- * @return The new Image slider object or NULL if it cannot be created
- */
EAPI Evas_Object *elm_imageslider_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
- /**
- * Append an Image Slider item
- *
- * @param obj The Image Slider object
- * @param photo_file photo file path
- * @param func callback function
- * @param data callback data
- * @return The Image Slider item handle or NULL
- */
EAPI Elm_Imageslider_Item *elm_imageslider_item_append(Evas_Object *obj, const char *photo_file, Elm_Imageslider_Cb func, void *data) EINA_ARG_NONNULL(1);
- /**
- * Insert an Image Slider item into the Image Slider Widget by using the given index.
- *
- * @param obj The Image Slider object
- * @param photo_file photo file path
- * @param func callback function
- * @param index required position
- * @param data callback data
- * @return The Image Slider item handle or NULL
- */
EAPI Elm_Imageslider_Item *elm_imageslider_item_append_relative(Evas_Object *obj, const char *photo_file, Elm_Imageslider_Cb func, unsigned int index, void *data) EINA_ARG_NONNULL(1);
- /**
- * Prepend Image Slider item
- *
- * @param obj The Image Slider object
- * @param photo_file photo file path
- * @param func callback function
- * @param data callback data
- * @return The imageslider item handle or NULL
- */
EAPI Elm_Imageslider_Item *elm_imageslider_item_prepend(Evas_Object *obj, const char *photo_file, Elm_Imageslider_Cb func, void *data) EINA_ARG_NONNULL(1);
- /**
- * Delete the selected Image Slider item
- *
- * @param it The selected Image Slider item handle
- */
EAPI void elm_imageslider_item_del(Elm_Imageslider_Item *it) EINA_ARG_NONNULL(1);
- /**
- * Get the selected Image Slider item
- *
- * @param obj The Image Slider object
- * @return The selected Image Slider item or NULL
- */
EAPI Elm_Imageslider_Item *elm_imageslider_selected_item_get(Evas_Object *obj) EINA_ARG_NONNULL(1);
- /**
- * Get whether an Image Slider item is selected or not
- *
- * @param it the selected Image Slider item
- * @return EINA_TRUE or EINA_FALSE
- */
EAPI Eina_Bool elm_imageslider_item_selected_get(Elm_Imageslider_Item *it) EINA_ARG_NONNULL(1);
- /**
- * Set the selected Image Slider item
- *
- * @param it The Imaga Slider item
- */
EAPI void elm_imageslider_item_selected_set(Elm_Imageslider_Item *it) EINA_ARG_NONNULL(1);
- /**
- * Get the photo file path of given Image Slider item
- *
- * @param it The Image Slider item
- * @return The photo file path or NULL;
- */
EAPI const char *elm_imageslider_item_photo_file_get(Elm_Imageslider_Item *it) EINA_ARG_NONNULL(1);
- /**
- * Sets the photo file path of given Image Slider item
- *
- * @param it The Image Slider item
- * @param photo_file The photo file path or NULL;
- */
EAPI Elm_Imageslider_Item *elm_imageslider_item_prev(Elm_Imageslider_Item *it) EINA_ARG_NONNULL(1);
- /**
- * Get the previous Image Slider item
- *
- * @param it The Image Slider item
- * @return The previous Image Slider item or NULL
- */
EAPI Elm_Imageslider_Item *elm_imageslider_item_next(Elm_Imageslider_Item *it) EINA_ARG_NONNULL(1);
- /**
- * Get the next Image Slider item
- *
- * @param it The Image Slider item
- * @return The next Image Slider item or NULL
- */
EAPI void elm_imageslider_prev(Evas_Object *obj) EINA_ARG_NONNULL(1);
- /**
- * Move to the previous Image Slider item
- *
- * @param obj The Image Slider object
- */
EAPI void elm_imageslider_next(Evas_Object *obj) EINA_ARG_NONNULL(1);
- /**
- * Move to the next Image Slider item
- *
- * @param obj The Image Slider object
- */
EAPI void elm_imageslider_item_photo_file_set(Elm_Imageslider_Item *it, const char *photo_file) EINA_ARG_NONNULL(1,2);
- /**
- * Updates an Image Slider item
- *
- * @param it The Image Slider item
- */
EAPI void elm_imageslider_item_update(Elm_Imageslider_Item *it) EINA_ARG_NONNULL(1);
- /**
- * @}
- */
#ifdef __cplusplus
}
#endif
elc_fileselector_entry.c \
elc_hoversel.c \
elc_naviframe.c \
-elc_multibuttonentry.c \
+elc_navigationbar.c \
+elc_navigationbar_ex.c\
elc_player.c \
elc_scrolled_entry.c \
elm_access.c \
elm_map.c \
elm_menu.c \
elm_module.c \
+elm_multibuttonentry.c \
elm_nocontents.c \
elm_notify.c \
elm_pagecontrol.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 \
els_pan.h \
els_scroller.c \
els_scroller.h \
-els_tooltip.c \
-elu_ews_wm.c
+els_tooltip.c
libelementary_la_CFLAGS =
libelementary_la_LIBADD = \
const char *label;
Evas_Object *icon;
Evas_Smart_Cb func;
+ Eina_Bool disabled:1;
};
struct _Widget_Data
static Evas_Object * _content_unset_hook(Evas_Object *obj,
const char *item __UNUSED__);
static Evas_Object * _content_get_hook(const Evas_Object *obj,
- const char *part);
-static void _item_text_set_hook(Elm_Object_Item *it,
- const char *part,
- const char *label);
-static const char * _item_text_get_hook(const Elm_Object_Item *it,
- const char *part);
-static void _item_content_set_hook(Elm_Object_Item *it,
- const char *part,
- Evas_Object *content);
-static Evas_Object * _item_content_get_hook(const Elm_Object_Item *it,
- const char *part);
-static void _item_disable_set_hook(Elm_Object_Item *it);
-static void _item_signal_emit_hook(Elm_Object_Item *it,
- const char *emission,
- const char *source);
+ const char *item __UNUSED__);
static void _bg_clicked_cb(void *data, Evas_Object *obj,
const char *emission,
const char *source);
if (item->label)
edje_object_part_text_set(VIEW(item), "elm.text", item->label);
- if (elm_widget_item_disabled_get(item))
+ if (item->disabled)
edje_object_signal_emit(VIEW(item), "elm,state,disabled", "elm");
/*
}
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__)
{
Elm_Ctxpopup_Item *item = data;
if (!item) return;
- if (elm_widget_item_disabled_get(item)) return;
+ if (item->disabled) return;
if (item->func)
item->func((void*) item->base.data, WIDGET(item), data);
EAPI Evas_Object *
elm_ctxpopup_item_icon_get(const Elm_Object_Item *it)
{
- return _item_content_get_hook(it, "icon");
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it, NULL);
+ Elm_Ctxpopup_Item *ctxpopup_it = (Elm_Ctxpopup_Item *) it;
+ return ctxpopup_it->icon;
}
EAPI void
elm_ctxpopup_item_icon_set(Elm_Object_Item *it, Evas_Object *icon)
{
- _item_content_set_hook(it, "icon", icon);
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
+
+ Widget_Data *wd;
+ Elm_Ctxpopup_Item *ctxpopup_it = (Elm_Ctxpopup_Item *) it;
+
+ wd = elm_widget_data_get(WIDGET(ctxpopup_it));
+ if (!wd) return;
+
+ _item_icon_set(ctxpopup_it, icon);
+
+ if (wd->visible)
+ {
+ _scroller_size_reset(wd);
+ _sizing_eval(WIDGET(ctxpopup_it));
+ }
}
EAPI const char *
elm_ctxpopup_item_label_get(const Elm_Object_Item *it)
{
- return _item_text_get_hook(it, NULL);
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it, NULL);
+ Elm_Ctxpopup_Item *ctxpopup_it = (Elm_Ctxpopup_Item *) it;
+ return ctxpopup_it->label;
}
EAPI void
elm_ctxpopup_item_label_set(Elm_Object_Item *it, const char *label)
{
- _item_text_set_hook(it, NULL, label);
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
+
+ Widget_Data *wd;
+ Elm_Ctxpopup_Item *ctxpopup_it = (Elm_Ctxpopup_Item *) it;
+
+ wd = elm_widget_data_get(WIDGET(ctxpopup_it));
+ if (!wd) return;
+
+ _item_label_set(ctxpopup_it, label);
+
+ if (wd->visible)
+ {
+ _scroller_size_reset(wd);
+ _sizing_eval(WIDGET(ctxpopup_it));
+ }
}
EAPI void
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));
EAPI void
elm_ctxpopup_item_disabled_set(Elm_Object_Item *it, Eina_Bool disabled)
{
- elm_object_item_disabled_set(it, disabled);
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
+
+ Widget_Data *wd;
+ Elm_Ctxpopup_Item *ctxpopup_it = (Elm_Ctxpopup_Item *) it;
+
+ wd = elm_widget_data_get(WIDGET(ctxpopup_it));
+ if (!wd) return;
+
+ if (disabled == ctxpopup_it->disabled)
+ return;
+
+ if (disabled)
+ edje_object_signal_emit(VIEW(ctxpopup_it), "elm,state,disabled", "elm");
+ else
+ edje_object_signal_emit(VIEW(ctxpopup_it), "elm,state,enabled", "elm");
+
+ ctxpopup_it->disabled = !!disabled;
}
EAPI Eina_Bool
elm_ctxpopup_item_disabled_get(const Elm_Object_Item *it)
{
- return elm_object_item_disabled_get(it);
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it, EINA_FALSE);
+ Elm_Ctxpopup_Item *ctxpopup_it = (Elm_Ctxpopup_Item *) it;
+ return ctxpopup_it->disabled;
}
EAPI void
evas_object_del(it->title_prev_btn);
it->title_prev_btn = btn;
- if (!btn) return;
+
+ if (!btn)
+ {
+ edje_object_signal_emit(VIEW(it),
+ "elm,state,prev_btn,hide",
+ "elm");
+ return;
+ }
elm_widget_sub_object_add(WIDGET(it), btn);
evas_object_event_callback_add(btn,
evas_object_del(it->title_next_btn);
it->title_next_btn = btn;
- if (!btn) return;
+
+ if (!btn)
+ {
+ edje_object_signal_emit(VIEW(it),
+ "elm,state,next_btn,hide",
+ "elm");
+ return;
+ }
elm_widget_sub_object_add(WIDGET(it), btn);
evas_object_event_callback_add(btn,
evas_object_del(it->icon);
it->icon = icon;
- if (!icon) return;
+
+ if (!icon)
+ {
+ edje_object_signal_emit(VIEW(it),
+ "elm,state,icon,hide",
+ "elm");
+ return;
+ }
elm_widget_sub_object_add(WIDGET(it), icon);
evas_object_event_callback_add(icon,
--- /dev/null
+#include <Elementary.h>
+#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;
+}
--- /dev/null
+#include <Elementary.h>
+#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;
+}
+
+
+
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);
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;
{
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;
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;
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;
}
ELM_CHECK_WIDTYPE(obj, widtype);
Widget_Data *wd;
- if (part && strcmp(part, "icon")) return;
+ if (strcmp(part, "icon")) return;
wd = elm_widget_data_get(obj);
if (!wd) return;
if (wd->icon == content) return;
ELM_CHECK_WIDTYPE(obj, widtype) NULL;
Widget_Data *wd;
- if (part && strcmp(part, "icon")) return NULL;
+ if (strcmp(part, "icon")) return NULL;
wd = elm_widget_data_get(obj);
if (!wd) return NULL;
return wd->icon;
ELM_CHECK_WIDTYPE(obj, widtype) NULL;
Widget_Data *wd;
- if (part && strcmp(part, "icon")) return NULL;
+ if (strcmp(part, "icon")) return NULL;
wd = elm_widget_data_get(obj);
if (!wd) return NULL;
if (!wd->icon) return NULL;
}
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
char *insertStr = str;
// if entry has text only set then remove item tags
- if (elm_entry_cnp_mode_get(entry) != ELM_CNP_MODE_MARKUP)
+ if (elm_entry_cnp_textonly_get(entry))
{
while (EINA_TRUE)
{
{
Elm_Selection_Data ddata;
- str = malloc(data->length);
- memcpy(str, data->data, data->length);
+ str = strdup(data->data);
ddata.x = ddata.y = 0;
ddata.format = ELM_SEL_FORMAT_TEXT;
ddata.data = str;
if (!pi) return EINA_FALSE;
if (!entry) return EINA_FALSE;
- if (elm_entry_cnp_mode_get(entry) != ELM_CNP_MODE_MARKUP) return EINA_FALSE;
+ if (elm_entry_cnp_textonly_get(entry)) return EINA_FALSE;
pasteimage_provider_set(entry);
#include "elm_priv.h"
#include <Ecore.h>
+/**
+ * @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;
*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;
}
+/**
+ * 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);
_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);
break;
case ALPHA:
wd->a = 255.0 * x;
- evas_object_color_set(wd->cp[3]->arrow,
- (wd->er * wd->a) / 255,
- (wd->eg * wd->a) / 255,
- (wd->eb * wd->a) / 255,
- wd->a);
+ evas_object_color_set(wd->cp[3]->arrow, wd->er, wd->eg, wd->eb, wd->a);
break;
default:
break;
+/**
+ * @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 <string.h>
#include <math.h>
};
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);
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__)
{
wd->x = x;
wd->y = y;
evas_object_move(wd->edje, x, y);
- evas_object_geometry_get(elm_object_part_content_get(wd->edje, "bg_image"), NULL, NULL, &width, NULL);
+ evas_object_geometry_get(elm_object_content_part_get(wd->edje, "bg_image"), NULL, NULL, &width, NULL);
evas_object_geometry_get(wd->edje, &x_, &y_, NULL, NULL);
}
wd->w = w;
wd->h = h;
evas_object_resize(wd->edje, w, h);
- evas_object_geometry_get(elm_object_part_content_get(wd->edje, "bg_image"), NULL, NULL, &width, &height);
+ evas_object_geometry_get(elm_object_content_part_get(wd->edje, "bg_image"), NULL, NULL, &width, &height);
evas_object_geometry_get(wd->edje, &x_, &y_, NULL, NULL);
}
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)
_controlbar_resize(obj, obj);
}
+/////////////////////////////////////////////////////////////
+//
+// animation function
+//
+/////////////////////////////////////////////////////////////
+
static Eina_Bool
_move_evas_object(void *data)
{
return ad;
}
+/////////////////////////////////////////////////////////////
+//
+// callback function
+//
+/////////////////////////////////////////////////////////////
+
static int
_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)
{
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;
}
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
if (it->style == TABBAR)
{
- content = elm_object_part_content_unset(wd->edje, "elm.swallow.view");
+ content = elm_object_content_part_unset(wd->edje, "elm.swallow.view");
if (content) evas_object_hide(content);
EINA_LIST_FOREACH(wd->items, l, item){
evas_object_smart_callback_call(it->obj, "view,change,before", it);
}
- elm_object_part_content_set(wd->edje, "elm.swallow.view", it->view);
+ elm_object_content_part_set(wd->edje, "elm.swallow.view", it->view);
}
else if (it->style == TOOLBAR)
{
*item = elm_button_add(parent);
if (*item == NULL) return NULL;
elm_object_style_set(*item, "controlbar/vertical");
- elm_object_part_content_set(obj, "item", *item);
+ elm_object_content_part_set(obj, "item", *item);
if (it->text)
elm_object_text_set(*item, it->text);
}
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)
{
evas_object_size_hint_weight_set(it->base, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(it->base, EVAS_HINT_FILL, EVAS_HINT_FILL);
it->base_item = obj_item;
- elm_object_part_content_set(it->base, "item", it->base_item);
+ elm_object_content_part_set(it->base, "item", it->base_item);
evas_object_show(it->base);
return it;
}
}
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;
if (item->style == TABBAR)
{
- content = elm_object_part_content_unset(wd->edje, "elm.swallow.view");
+ content = elm_object_content_part_unset(wd->edje, "elm.swallow.view");
evas_object_hide(content);
item->selected = EINA_TRUE;
evas_object_smart_callback_call(item->obj, "view,change,before", item);
- elm_object_part_content_set(wd->edje, "elm.swallow.view", item->view);
+ elm_object_content_part_set(wd->edje, "elm.swallow.view", item->view);
}
if ((item->style == TOOLBAR) && (item->func))
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;
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;
return it;
}
-EAPI Evas_Object *
-elm_controlbar_add(Evas_Object *parent)
+///////////////////////////////////////////////////////////////////
+//
+// API function
+//
+////////////////////////////////////////////////////////////////////
+
+/**
+ * Add a new controlbar object
+ *
+ * @param parent The parent object
+ * @return The new object or NULL if it cannot be created
+ *
+ * @ingroup Controlbar
+ */
+EAPI Evas_Object * elm_controlbar_add(Evas_Object * parent)
{
if (parent == NULL) return NULL;
Evas_Object * obj = NULL;
printf("Cannot load bg edj\n");
return NULL;
}
- elm_object_part_content_set(wd->edje, "bg_image", wd->bg);
+ elm_object_content_part_set(wd->edje, "bg_image", wd->bg);
// initialization
evas_object_event_callback_add(wd->edje, EVAS_CALLBACK_RESIZE,
evas_object_event_callback_add(wd->edje, EVAS_CALLBACK_HIDE,
_controlbar_object_hide, obj);
- bg = elm_object_part_content_get(wd->edje, "bg_image");
+ bg = elm_object_content_part_get(wd->edje, "bg_image");
evas_object_event_callback_add(bg, EVAS_CALLBACK_MOVE, _controlbar_object_move, obj);
evas_object_event_callback_add(bg, EVAS_CALLBACK_RESIZE, _controlbar_object_resize, obj);
evas_object_size_hint_weight_set(wd->box, EVAS_HINT_EXPAND,
EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(wd->box, EVAS_HINT_FILL, EVAS_HINT_FILL);
- elm_object_part_content_set(wd->edje, "elm.swallow.items", wd->box);
+ elm_object_content_part_set(wd->edje, "elm.swallow.items", wd->box);
evas_object_show(wd->box);
evas_object_smart_callback_add(obj, "sub-object-del", _sub_del, obj);
return obj;
}
-EAPI Elm_Controlbar_Item *
-elm_controlbar_tab_item_append(Evas_Object *obj, const char *icon_path,
- const char *label, Evas_Object *view)
+/**
+ * Append new tab item
+ *
+ * @param obj The controlbar object
+ * @param icon_path The icon path of item
+ * @param label The label of item
+ * @param view The view of item
+ * @return The item of controlbar
+ *
+ * @ingroup Controlbar
+ */
+EAPI Elm_Controlbar_Item * elm_controlbar_tab_item_append(Evas_Object * obj,
+ const char
+ *icon_path,
+ const char *label,
+ Evas_Object *
+ view)
{
ELM_CHECK_WIDTYPE(obj, widtype) NULL;
Elm_Controlbar_Item * it;
_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));
return it;
}
-EAPI Elm_Controlbar_Item *
-elm_controlbar_tab_item_prepend(Evas_Object *obj, const char *icon_path,
- const char *label, Evas_Object *view)
+/**
+ * Prepend new tab item
+ *
+ * @param obj The controlbar object
+ * @param icon_path The icon path of item
+ * @param label The label of item
+ * @param view The view of item
+ * @return The item of controlbar
+ *
+ * @ingroup Controlbar
+ */
+EAPI Elm_Controlbar_Item * elm_controlbar_tab_item_prepend(Evas_Object *
+ obj,
+ const char
+ *icon_path,
+ const char
+ *label,
+ Evas_Object *
+ view)
{
ELM_CHECK_WIDTYPE(obj, widtype) NULL;
Widget_Data * wd;
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));
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;
{
_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));
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)
{
{
_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));
return it;
}
-EAPI Elm_Controlbar_Item *
-elm_controlbar_tool_item_append(Evas_Object *obj, const char *icon_path,
- const char *label,
- void (*func)(void *data, Evas_Object * obj, void *event_info),
- void *data)
+/**
+ * Append new tool item
+ *
+ * @param obj The controlbar object
+ * @param icon_path The icon path of item
+ * @param label The label of item
+ * @param func Callback function of item
+ * @param data The data of callback function
+ * @return The item of controlbar
+ *
+ * @ingroup Controlbar
+ */
+EAPI Elm_Controlbar_Item * elm_controlbar_tool_item_append(Evas_Object *
+ obj,
+ const char
+ *icon_path,
+ const char
+ *label,
+ void (*func)
+ (void *data,
+ Evas_Object *
+ obj,
+ void
+ *event_info),
+ void *data)
{
ELM_CHECK_WIDTYPE(obj, widtype) NULL;
wd = elm_widget_data_get(obj);
if ((_check_bar_item_number(wd) >= 5) && (wd->auto_align))
{
- if (!wd->more_item)
- {
+ if (!wd->more_item) {
lit = elm_controlbar_last_item_get(obj);
_set_item_visible(lit, EINA_FALSE);
_create_more_item(wd, TOOLBAR);
- }
+ }
_set_items_position(obj, it, NULL, EINA_FALSE);
- }
- else
- {
+ }
+ else{
_set_items_position(obj, it, NULL, EINA_TRUE);
- }
+ }
wd->items = eina_list_append(wd->items, it);
_check_toolbar_line(wd);
_sizing_eval(obj);
return it;
}
-EAPI Elm_Controlbar_Item *
-elm_controlbar_tool_item_prepend(Evas_Object *obj, const char *icon_path,
- const char *label,
- void (*func) (void *data, Evas_Object *obj, void *event_info),
- void *data)
+/**
+ * Prepend new tool item
+ *
+ * @param obj The controlbar object
+ * @param icon_path The icon path of item
+ * @param label The label of item
+ * @param func Callback function of item
+ * @param data The data of callback function
+ * @return The item of controlbar
+ *
+ * @ingroup Controlbar
+ */
+EAPI Elm_Controlbar_Item * elm_controlbar_tool_item_prepend(Evas_Object *
+ obj,
+ const char
+ *icon_path,
+ const char
+ *label,
+ void (*func)
+ (void
+ *data,
+ Evas_Object *
+ obj,
+ void
+ *event_info),
+ void
+ *data)
{
ELM_CHECK_WIDTYPE(obj, widtype) NULL;
Widget_Data * wd;
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;
{
_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;
{
_set_items_position(obj, it, NULL, EINA_FALSE);
}
- }
- else
- {
+ }
+ else{
_set_items_position(obj, it, item, EINA_TRUE);
- }
+ }
wd->items = eina_list_append_relative(wd->items, it, after);
_check_toolbar_line(wd);
_sizing_eval(obj);
return it;
}
-EAPI Elm_Controlbar_Item *
-elm_controlbar_object_item_append(Evas_Object *obj, Evas_Object *obj_item,
- const int sel)
+/**
+ * Append new object item
+ *
+ * @param obj The controlbar object
+ * @param obj_item The object of item
+ * @param sel The number of sel occupied
+ * @return The item of controlbar
+ *
+ * @ingroup Controlbar
+ */
+EAPI Elm_Controlbar_Item * elm_controlbar_object_item_append(Evas_Object *
+ obj,
+ Evas_Object *
+ obj_item,
+ const int sel)
{
ELM_CHECK_WIDTYPE(obj, widtype) NULL;
Widget_Data * wd;
return it;
}
-EAPI Elm_Controlbar_Item *
-elm_controlbar_object_item_prepend(Evas_Object *obj, Evas_Object *obj_item,
- const int sel)
+/**
+ * Prepend new object item
+ *
+ * @param obj The controlbar object
+ * @param obj_item The object of item
+ * @param sel The number of sel occupied
+ * @return The item of controlbar
+ *
+ * @ingroup Controlbar
+ */
+EAPI Elm_Controlbar_Item * elm_controlbar_object_item_prepend(Evas_Object *
+ obj,
+ Evas_Object *
+ obj_item,
+ const int sel)
{
ELM_CHECK_WIDTYPE(obj, widtype) NULL;
Widget_Data * wd;
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;
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;
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;
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;
_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)
{
_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;
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;
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)
{
return it->text;
}
-EAPI Elm_Controlbar_Item *
-elm_controlbar_selected_item_get(const Evas_Object *obj)
+/**
+ * Get the selected item
+ *
+ * @param obj The controlbar object
+ * @return The item of controlbar
+ *
+ * @ingroup Controlbar
+ */
+EAPI Elm_Controlbar_Item * elm_controlbar_selected_item_get(const Evas_Object *
+ obj)
{
ELM_CHECK_WIDTYPE(obj, widtype) NULL;
const Eina_List *l;
return NULL;
}
-EAPI Elm_Controlbar_Item *
-elm_controlbar_first_item_get(const Evas_Object *obj)
+/**
+ * Get the first item
+ *
+ * @param obj The controlbar object
+ * @return The item of controlbar
+ *
+ * @ingroup Controlbar
+ */
+EAPI Elm_Controlbar_Item * elm_controlbar_first_item_get(const Evas_Object * obj)
{
ELM_CHECK_WIDTYPE(obj, widtype) NULL;
Widget_Data * wd = elm_widget_data_get(obj);
return eina_list_data_get(wd->items);
}
-EAPI Elm_Controlbar_Item *
-elm_controlbar_last_item_get(const Evas_Object *obj)
+/**
+ * Get the last item
+ *
+ * @param obj The controlbar object
+ * @return The item of controlbar
+ *
+ * @ingroup Controlbar
+ */
+EAPI Elm_Controlbar_Item * elm_controlbar_last_item_get(const Evas_Object * obj)
{
ELM_CHECK_WIDTYPE(obj, widtype) NULL;
Widget_Data * wd = elm_widget_data_get(obj);
return eina_list_data_get(eina_list_last(wd->items));
}
-EAPI const Eina_List *
-elm_controlbar_items_get(const Evas_Object *obj)
+/**
+ * Get the items
+ *
+ * @param obj The controlbar object
+ * @return The list of the items
+ *
+ * @ingroup Controlbar
+ */
+EAPI const Eina_List * elm_controlbar_items_get(const Evas_Object * obj)
{
ELM_CHECK_WIDTYPE(obj, widtype) NULL;
Widget_Data * wd = elm_widget_data_get(obj);
return wd->items;
}
-EAPI Elm_Controlbar_Item *
-elm_controlbar_item_prev(Elm_Controlbar_Item *it)
+/**
+ * Get the previous item
+ *
+ * @param it The item of controlbar
+ * @return The previous item of the parameter item
+ *
+ * @ingroup Controlbar
+ */
+EAPI Elm_Controlbar_Item * elm_controlbar_item_prev(Elm_Controlbar_Item *
+ it)
{
if (!it) return NULL;
const Eina_List *l;
return NULL;
}
-EAPI Elm_Controlbar_Item *
-elm_controlbar_item_next(Elm_Controlbar_Item *it)
+/**
+ * Get the next item
+ *
+ * @param obj The controlbar object
+ * @return The next item of the parameter item
+ *
+ * @ingroup Controlbar
+ */
+EAPI Elm_Controlbar_Item * elm_controlbar_item_next(Elm_Controlbar_Item *
+ it)
{
if (!it) return NULL;
const Eina_List *l;
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;
_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;
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;
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)
{
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)
{
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)
{
if (!wd) return NULL;
Evas_Object *content;
- if (it->view == elm_object_part_content_get(wd->edje, "elm.swallow.view"))
+ if (it->view == elm_object_content_part_get(wd->edje, "elm.swallow.view"))
{
- content = elm_object_part_content_unset(wd->edje, "elm.swallow.view");
+ content = elm_object_content_part_unset(wd->edje, "elm.swallow.view");
if (content) evas_object_hide(content);
}
else
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)
{
edje_object_signal_emit(_EDJ(wd->edje), "elm,state,small", "elm");
break;
case ELM_CONTROLBAR_MODE_LEFT:
- selected_box = elm_object_part_content_get(wd->edje, "elm.dragable.box");
+ selected_box = elm_object_content_part_get(wd->edje, "elm.dragable.box");
if (selected_box) edje_object_signal_emit(_EDJ(selected_box), "elm,state,left", "elm");
wd->selected_signal = eina_stringshare_add("elm,state,selected_left");
wd->pressed_signal = eina_stringshare_add("elm,state,pressed_left");
_sizing_eval(obj);
return;
case ELM_CONTROLBAR_MODE_RIGHT:
- selected_box = elm_object_part_content_get(wd->edje, "elm.dragable.box");
+ selected_box = elm_object_content_part_get(wd->edje, "elm.dragable.box");
if (selected_box) edje_object_signal_emit(_EDJ(selected_box), "elm,state,right", "elm");
wd->selected_signal = eina_stringshare_add("elm,state,selected_right");
wd->pressed_signal = eina_stringshare_add("elm,state,pressed_right");
default:
break;
}
- selected_box = elm_object_part_content_get(wd->edje, "elm.dragable.box");
+ selected_box = elm_object_content_part_get(wd->edje, "elm.dragable.box");
if (selected_box) edje_object_signal_emit(_EDJ(selected_box), "elm,state,default", "elm");
wd->selected_signal = eina_stringshare_add("elm,state,selected");
wd->pressed_signal = eina_stringshare_add("elm,state,pressed");
_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)
{
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)
{
_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)
{
_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)
{
eina_stringshare_replace(&item->location, location);
_set_item_theme(item, location);
- elm_object_part_content_set(item->bg_layout, "swallow", item->content);
+ elm_object_content_part_set(item->bg_layout, "swallow", item->content);
if ((item->press == EINA_TRUE) && (item->disabled == EINA_FALSE))
edje_object_signal_emit(elm_layout_edje_get(item->bg_layout), "elm,state,press,on", "elm");
else
evas_object_size_hint_align_set(item->bg_layout, EVAS_HINT_FILL, 0.0);
evas_object_show(item->bg_layout);
- elm_object_part_content_set(item->bg_layout, "swallow", item->content);
+ elm_object_content_part_set(item->bg_layout, "swallow", item->content);
return item;
}
}
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);
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;
-}
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;
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
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;
wd->deferred_recalc_job = NULL;
evas_object_geometry_get(wd->ent, NULL, NULL, &resw, NULL);
- /* This is a hack to workaround to avoid the cursor geometry bug
- * in a char-wrap or a mixed-mode textblock in a scroller.
- * The order of calling next 2 functions affects to the size of the textblock cursor.
- * when the textblock core issue is fixed these comments will be removed. */
- edje_object_size_min_restricted_calc(wd->ent, &fw, &fh, 0, 0);
edje_object_size_min_restricted_calc(wd->ent, &minw, &minh, resw, 0);
+ edje_object_size_min_restricted_calc(wd->ent, &fw, &fh, 0, 0);
elm_coords_finger_size_adjust(1, &fw, 1, &minh);
wd->entmw = fw;
wd->entmh = minh;
}
}
- if (wd->deferred_cur)
+ if ((wd->deferred_cur) && (elm_object_focus_get(data)))
{
Evas_Coord cx, cy, cw, ch;
edje_object_part_text_cursor_geometry_get(wd->ent, "elm.text",
_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);
if (wd->sel_notify_handler)
{
#ifdef HAVE_ELEMENTARY_X
- Elm_Sel_Format formats = ELM_SEL_FORMAT_MARKUP;
+ Elm_Sel_Format formats;
wd->selection_asked = EINA_TRUE;
- if (wd->cnp_mode == ELM_CNP_MODE_PLAINTEXT)
- formats = ELM_SEL_FORMAT_TEXT;
- else if (wd->cnp_mode != ELM_CNP_MODE_NO_IMAGE)
+ formats = ELM_SEL_FORMAT_MARKUP;
+ if (!wd->textonly)
formats |= ELM_SEL_FORMAT_IMAGE;
elm_selection_get(ELM_SEL_CLIPBOARD, formats, data, NULL, NULL);
#endif
{
Widget_Data *wd = elm_widget_data_get(obj);
const char *sel;
- char *sel_str = NULL;
- Elm_Sel_Format formats = ELM_SEL_FORMAT_MARKUP;
+ char *sel_str;
if (!wd) return;
sel = edje_object_part_text_selection_get(wd->ent, "elm.text");
- if (wd->cnp_mode == ELM_CNP_MODE_PLAINTEXT)
- {
- sel_str = elm_entry_markup_to_utf8(sel);
- if (!sel_str)
- return;
- formats = ELM_SEL_FORMAT_TEXT;
- }
- else
+ sel_str = strdup(sel);
+ if (!sel_str)
+ return;
+ if (wd->textonly)
{
- sel_str = strdup(sel);
- if (!sel_str)
- return;
- if (wd->cnp_mode == ELM_CNP_MODE_NO_IMAGE)
+ while (EINA_TRUE)
{
- while (EINA_TRUE)
+ char *startTag = NULL;
+ char *endTag = NULL;
+
+ startTag = strstr(sel_str, "<item");
+ if (!startTag)
+ startTag = strstr(sel_str, "</item");
+ if (startTag)
+ endTag = strstr(startTag, ">");
+ else
+ break;
+ if (!endTag || startTag > endTag)
+ break;
+
+ size_t sindex = startTag - sel_str;
+ size_t eindex = endTag - sel_str + 1;
+
+ Eina_Strbuf *buf = eina_strbuf_new();
+ if (buf)
{
- char *startTag = NULL;
- char *endTag = NULL;
-
- startTag = strstr(sel_str, "<item");
- if (!startTag)
- startTag = strstr(sel_str, "</item");
- if (startTag)
- endTag = strstr(startTag, ">");
- else
- break;
- if (!endTag || startTag > endTag)
- break;
-
- size_t sindex = startTag - sel_str;
- size_t eindex = endTag - sel_str + 1;
-
- Eina_Strbuf *buf = eina_strbuf_new();
- if (buf)
- {
- eina_strbuf_append(buf, sel_str);
- eina_strbuf_remove(buf, sindex, eindex);
- sel_str = eina_strbuf_string_steal(buf);
- eina_strbuf_free(buf);
- }
+ eina_strbuf_append(buf, sel_str);
+ eina_strbuf_remove(buf, sindex, eindex);
+ sel_str = eina_strbuf_string_steal(buf);
+ eina_strbuf_free(buf);
}
}
}
- elm_selection_set(seltype, obj, formats, sel_str);
+ elm_selection_set(seltype, obj, ELM_SEL_FORMAT_MARKUP, sel_str);
if (seltype == ELM_SEL_CLIPBOARD)
- eina_stringshare_replace(&wd->cut_sel, sel);
+ eina_stringshare_replace(&wd->cut_sel, sel_str);
free(sel_str);
}
#endif
cnpwidgetdata = data;
elm_cbhm_helper_init(obj);
- if (elm_entry_cnp_mode_get(obj) != ELM_CNP_MODE_MARKUP)
+ if (elm_entry_cnp_textonly_get(obj))
elm_cbhm_send_raw_data("show0");
else
elm_cbhm_send_raw_data("show1");
if (cnpwidgetdata == data)
{
- Widget_Data *wd = elm_widget_data_get(data);
- Elm_Sel_Format formats = ELM_SEL_FORMAT_MARKUP;
evas_object_smart_callback_call(data, SIG_SELECTION_PASTE, NULL);
- if (wd->cnp_mode == ELM_CNP_MODE_PLAINTEXT)
- formats = ELM_SEL_FORMAT_TEXT;
- else if (wd->cnp_mode != ELM_CNP_MODE_NO_IMAGE)
- formats |= ELM_SEL_FORMAT_IMAGE;
- elm_selection_get(ELM_SEL_SECONDARY, formats ,data, NULL, NULL);
+ elm_selection_get(ELM_SEL_SECONDARY,ELM_SEL_FORMAT_MARKUP,data,NULL,NULL);
}
// end for cbhm
wd->disabled = EINA_FALSE;
wd->context_menu = EINA_TRUE;
wd->autosave = EINA_TRUE;
- wd->cnp_mode = ELM_CNP_MODE_MARKUP;
+ wd->textonly = EINA_FALSE;
wd->autoperiod = EINA_TRUE;
wd->ent = edje_object_add(e);
ext_mod->selmode = wd->selmode;
ext_mod->cnpinit = _cnpinit;
ext_mod->context_menu = wd->context_menu;
- ext_mod->cnp_mode = wd->cnp_mode;
+ ext_mod->textonly = wd->textonly;
}
EAPI void
if (wd->single_line == single_line) return;
wd->single_line = single_line;
wd->linewrap = ELM_WRAP_NONE;
- elm_entry_cnp_mode_set(obj, ELM_CNP_MODE_NO_IMAGE);
+ elm_entry_cnp_textonly_set(obj, EINA_TRUE);
_theme_hook(obj);
if (wd->scroller)
{
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,
evas_textblock_cursor_free(cur);
return !ret;
- }
+}
char *str = elm_entry_markup_to_utf8(elm_entry_entry_get(obj));
if (!str) return EINA_TRUE;
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)
{
EAPI void
elm_entry_cnp_textonly_set(Evas_Object *obj, Eina_Bool textonly)
{
- ELM_CHECK_WIDTYPE(obj, widtype);
- elm_entry_cnp_mode_set(obj, textonly ? ELM_CNP_MODE_NO_IMAGE : ELM_CNP_MODE_MARKUP);
-}
-
-EAPI Eina_Bool
-elm_entry_cnp_textonly_get(const Evas_Object *obj)
-{
- ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE;
- return elm_entry_cnp_mode_get(obj) != ELM_CNP_MODE_MARKUP;
-}
-
-EAPI void
-elm_entry_cnp_mode_set(Evas_Object *obj, Elm_CNP_Mode cnp_mode)
-{
Elm_Sel_Format format = ELM_SEL_FORMAT_MARKUP;
ELM_CHECK_WIDTYPE(obj, widtype);
Widget_Data *wd = elm_widget_data_get(obj);
if (!wd) return;
- if (wd->cnp_mode == cnp_mode) return;
- wd->cnp_mode = cnp_mode;
- if (wd->cnp_mode == ELM_CNP_MODE_PLAINTEXT)
- format = ELM_SEL_FORMAT_TEXT;
- else if (cnp_mode == ELM_CNP_MODE_MARKUP) format |= ELM_SEL_FORMAT_IMAGE;
+ textonly = !!textonly;
+ if (wd->textonly == textonly) return;
+ wd->textonly = !!textonly;
+ if (!textonly) format |= ELM_SEL_FORMAT_IMAGE;
#ifdef HAVE_ELEMENTARY_X
elm_drop_target_add(obj, format, _drag_drop_cb, NULL);
#endif
}
-EAPI Elm_CNP_Mode
-elm_entry_cnp_mode_get(const Evas_Object *obj)
+EAPI Eina_Bool
+elm_entry_cnp_textonly_get(const Evas_Object *obj)
{
ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE;
Widget_Data *wd = elm_widget_data_get(obj);
if (!wd) return EINA_FALSE;
- return wd->cnp_mode;
+ return wd->textonly;
}
EAPI void
};
typedef struct _Widget_Data Widget_Data;
-typedef struct _Elm_Flipselector_Item Elm_Flipselector_Item;
struct _Widget_Data
{
{NULL, NULL}
};
-static void
-_item_text_set_hook(Elm_Object_Item *it,
- const char *part,
- const char *label)
-{
- ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
-
- Widget_Data *wd;
- Eina_List *l;
- Elm_Flipselector_Item *item;
-
- if (!label) return;
-
- if (part && strcmp(part ,"default")) return;
-
- item = (Elm_Flipselector_Item *) it;
- wd = elm_widget_data_get(WIDGET(item));
- if ((!wd) || (!wd->items)) return;
-
- l = eina_list_data_find_list(wd->items, item);
- if (!l) return;
-
- eina_stringshare_del(item->label);
- item->label = eina_stringshare_add_length(label, wd->max_len);
-
- if (strlen(label) > strlen(elm_object_item_text_get(DATA_GET(wd->sentinel))))
- wd->sentinel = l;
-
- if (wd->current == l)
- {
- _update_view(WIDGET(item));
- _sizing_eval(wd->self);
- }
-}
-
-static const char *
-_item_text_get_hook(const Elm_Object_Item *it, const char *part)
-{
- ELM_OBJ_ITEM_CHECK_OR_RETURN(it, NULL);
-
- Elm_Flipselector_Item *item, *_item;
- Widget_Data *wd;
- Eina_List *l;
-
- if (part && strcmp(part ,"default")) return NULL;
-
- item = (Elm_Flipselector_Item *) it;
- wd = elm_widget_data_get(WIDGET(item));
- if ((!wd) || (!wd->items)) return NULL;
-
- EINA_LIST_FOREACH(wd->items, l, _item)
- if (_item == item) return item->label;
- return NULL;
-}
-
-static void
-_item_signal_emit_hook(Elm_Object_Item *it,
- const char *emission,
- const char *source)
-{
- ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
- Elm_Flipselector_Item *item = (Elm_Flipselector_Item *) it;
- edje_object_signal_emit(VIEW(item), emission, source);
-}
+#define ELM_FLIPSELECTOR_ITEM_CHECK_DELETED_RETURN(it, ...) \
+ ELM_WIDGET_ITEM_WIDTYPE_CHECK_OR_RETURN(it, __VA_ARGS__); \
+ if (it->deleted) \
+ { \
+ ERR(""#it" has been DELETED.\n"); \
+ return __VA_ARGS__; \
+ } \
static Elm_Flipselector_Item *
_item_new(Evas_Object *obj, const char *label, Evas_Smart_Cb func, const void *data)
Widget_Data *wd = elm_widget_data_get(obj);
it = elm_widget_item_new(obj, Elm_Flipselector_Item);
- if (!it) return NULL;
-
- elm_widget_item_text_set_hook_set(it, _item_text_set_hook);
- elm_widget_item_text_get_hook_set(it, _item_text_get_hook);
- elm_widget_item_signal_emit_hook_set(it, _item_signal_emit_hook);
+ if (!it)
+ return NULL;
len = strlen(label);
if (len > wd->max_len)
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);
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));
EINA_LIST_FOREACH(wd->items, l, it)
{
- if (strlen(elm_object_item_text_get((Elm_Object_Item *) it)) >
- strlen(elm_object_item_text_get(DATA_GET(wd->sentinel))))
+ if (strlen(elm_flipselector_item_label_get(it)) >
+ strlen(elm_flipselector_item_label_get(DATA_GET(wd->sentinel))))
wd->sentinel = l;
}
}
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);
ERR("walking became negative. fixed!\n");
wd->walking = 0;
}
- if (wd->walking) return;
+
+ if (wd->walking)
+ return;
_flipselector_process_deletions(wd);
}
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;
/* 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;
_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))
Evas_Coord minw = -1, minh = -1, w, h;
wd = elm_widget_data_get(obj);
- if (!wd) return;
+ if (!wd)
+ return;
elm_coords_finger_size_adjust(1, &minw, 2, &minh);
if (wd->sentinel)
{
- const char *label = elm_object_item_text_get(DATA_GET(wd->sentinel));
+ const char *label = \
+ elm_flipselector_item_label_get(DATA_GET(wd->sentinel));
+
tmp = edje_object_part_text_get(wd->base, "top");
edje_object_part_text_set(wd->base, "top", label);
}
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;
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);
}
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);
{
Elm_Flipselector_Item *item;
- if (!wd->current) return;
+ if (!wd->current)
+ return;
if (wd->current == wd->items)
{
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);
}
{
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);
_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);
{
Elm_Flipselector_Item *item;
- if (!wd->current) return;
+ if (!wd->current)
+ return;
wd->current = eina_list_next(wd->current);
if (!wd->current)
}
item = DATA_GET(wd->current);
- if (!item) return;
+ if (!item)
+ return;
_send_msg(wd, MSG_FLIP_DOWN, (char *)item->label);
}
{
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);
_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);
_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;
}
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);
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);
_flipselector_unwalk(wd);
}
-EAPI Elm_Object_Item *
+EAPI Elm_Flipselector_Item *
elm_flipselector_item_append(Evas_Object *obj, const char *label, void (*func)(void *data, Evas_Object *obj, void *event_info), void *data)
{
ELM_CHECK_WIDTYPE(obj, widtype) NULL;
Widget_Data *wd;
wd = elm_widget_data_get(obj);
- if (!wd) return NULL;
+ if (!wd)
+ return NULL;
item = _item_new(obj, label, func, data);
- if (!item) return NULL;
+ if (!item)
+ return NULL;
wd->items = eina_list_append(wd->items, item);
- if (!wd->current)
- {
+ if (!wd->current) {
wd->current = wd->items;
_update_view(obj);
- }
+ }
if (!wd->sentinel ||
- (strlen(elm_object_item_text_get((Elm_Object_Item *) item)) >
- strlen(elm_object_item_text_get(DATA_GET(wd->sentinel)))))
+ (strlen(elm_flipselector_item_label_get(item)) >
+ strlen(elm_flipselector_item_label_get(DATA_GET(wd->sentinel)))))
{
wd->sentinel = eina_list_last(wd->items);
_sizing_eval(obj);
if (eina_list_count(wd->items) >= 2)
edje_object_signal_emit(wd->base, "elm,state,button,visible", "elm");
- return (Elm_Object_Item *) item;
+ return item;
}
-EAPI Elm_Object_Item *
+EAPI Elm_Flipselector_Item *
elm_flipselector_item_prepend(Evas_Object *obj, const char *label, void (*func)(void *data, Evas_Object *obj, void *event_info), void *data)
{
ELM_CHECK_WIDTYPE(obj, widtype) NULL;
Widget_Data *wd;
wd = elm_widget_data_get(obj);
- if (!wd) return NULL;
+ if (!wd)
+ return NULL;
item = _item_new(obj, label, func, data);
- if (!item) return NULL;
+ if (!item)
+ return NULL;
wd->items = eina_list_prepend(wd->items, item);
- if (!wd->current)
- {
+ if (!wd->current) {
wd->current = wd->items;
_update_view(obj);
- }
+ }
if (!wd->sentinel ||
- (strlen(elm_object_item_text_get((Elm_Object_Item *) item)) >
- strlen(elm_object_item_text_get(DATA_GET(wd->sentinel)))))
+ (strlen(elm_flipselector_item_label_get(item)) >
+ strlen(elm_flipselector_item_label_get(DATA_GET(wd->sentinel)))))
{
wd->sentinel = wd->items;
_sizing_eval(obj);
if (eina_list_count(wd->items) >= 2)
edje_object_signal_emit(wd->base, "elm,state,button,visible", "elm");
- return (Elm_Object_Item *) item;
+ return item;
}
/* TODO: account for deleted items? */
ELM_CHECK_WIDTYPE(obj, widtype) NULL;
Widget_Data *wd = elm_widget_data_get(obj);
- if (!wd) return NULL;
+ if (!wd)
+ return NULL;
+
return wd->items;
}
-EAPI Elm_Object_Item *
+EAPI Elm_Flipselector_Item *
elm_flipselector_first_item_get(const Evas_Object *obj)
{
ELM_CHECK_WIDTYPE(obj, widtype) NULL;
Eina_List *l;
wd = elm_widget_data_get(obj);
- if (!wd || !wd->items) return NULL;
+ if (!wd || !wd->items)
+ return NULL;
EINA_LIST_FOREACH(wd->items, l, it)
{
- if (it->deleted) continue;
- return (Elm_Object_Item *) it;
+ if (it->deleted)
+ continue;
+
+ return it;
}
+
return NULL;
}
-EAPI Elm_Object_Item *
+EAPI Elm_Flipselector_Item *
elm_flipselector_last_item_get(const Evas_Object *obj)
{
ELM_CHECK_WIDTYPE(obj, widtype) NULL;
Eina_List *l;
wd = elm_widget_data_get(obj);
- if (!wd || !wd->items) return NULL;
+ if (!wd || !wd->items)
+ return NULL;
EINA_LIST_REVERSE_FOREACH(wd->items, l, it)
{
- if (it->deleted) continue;
- return (Elm_Object_Item *) it;
+ if (it->deleted)
+ continue;
+
+ return it;
}
+
return NULL;
}
-EAPI Elm_Object_Item *
+EAPI Elm_Flipselector_Item *
elm_flipselector_selected_item_get(const Evas_Object *obj)
{
ELM_CHECK_WIDTYPE(obj, widtype) NULL;
Widget_Data *wd = elm_widget_data_get(obj);
- if (!wd || !wd->current) return NULL;
+ if (!wd || !wd->current)
+ return NULL;
+
return DATA_GET(wd->current);
}
EAPI void
-elm_flipselector_item_selected_set(Elm_Object_Item *it, Eina_Bool selected)
+elm_flipselector_item_selected_set(Elm_Flipselector_Item *item, Eina_Bool selected)
{
- ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
+ ELM_FLIPSELECTOR_ITEM_CHECK_DELETED_RETURN(item);
- Elm_Flipselector_Item *item, *_item, *cur;
+ Elm_Flipselector_Item *_item, *cur;
int flipside = MSG_FLIP_UP;
Widget_Data *wd;
Eina_List *l;
- item = (Elm_Flipselector_Item *) it;
wd = elm_widget_data_get(WIDGET(item));
- if (!wd) return;
+ if (!wd)
+ return;
cur = DATA_GET(wd->current);
- if ((selected) && (cur == item)) return;
+ if ((selected) && (cur == item))
+ return;
_flipselector_walk(wd);
EINA_LIST_FOREACH(wd->items, l, _item)
{
- if (_item == cur) flipside = MSG_FLIP_DOWN;
+ if (_item == cur)
+ flipside = MSG_FLIP_DOWN;
if (_item == item)
{
}
EAPI Eina_Bool
-elm_flipselector_item_selected_get(const Elm_Object_Item *it)
+elm_flipselector_item_selected_get(const Elm_Flipselector_Item *item)
{
- ELM_OBJ_ITEM_CHECK_OR_RETURN(it, EINA_FALSE);
+ ELM_FLIPSELECTOR_ITEM_CHECK_DELETED_RETURN(item, EINA_FALSE);
Widget_Data *wd;
- Elm_Flipselector_Item *item;
- item = (Elm_Flipselector_Item *) it;
wd = elm_widget_data_get(WIDGET(item));
if (!wd) return EINA_FALSE;
return (eina_list_data_get(wd->current) == item);
}
EAPI void
-elm_flipselector_item_del(Elm_Object_Item *it)
+elm_flipselector_item_del(Elm_Flipselector_Item *item)
{
- ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
+ ELM_FLIPSELECTOR_ITEM_CHECK_DELETED_RETURN(item);
+
Widget_Data *wd;
- Elm_Flipselector_Item *item, *item2;
- Eina_List *l;
- item = (Elm_Flipselector_Item *) it;
wd = elm_widget_data_get(WIDGET(item));
- if (!wd) return;
+ if (!wd)
+ return;
if (wd->walking > 0)
{
wd->items = eina_list_remove(wd->items, item);
_item_free(item);
_sentinel_eval(wd);
+
_flipselector_unwalk(wd);
}
EAPI const char *
-elm_flipselector_item_label_get(const Elm_Object_Item *it)
+elm_flipselector_item_label_get(const Elm_Flipselector_Item *item)
{
- return _item_text_get_hook(it, NULL);
+ ELM_FLIPSELECTOR_ITEM_CHECK_DELETED_RETURN(item, NULL);
+
+ Elm_Flipselector_Item *_item;
+ Widget_Data *wd;
+ Eina_List *l;
+
+ wd = elm_widget_data_get(WIDGET(item));
+ if ((!wd) || (!wd->items))
+ return NULL;
+
+ EINA_LIST_FOREACH(wd->items, l, _item)
+ if (_item == item)
+ return item->label;
+
+ return NULL;
}
EAPI void
-elm_flipselector_item_label_set(Elm_Object_Item *it, const char *label)
+elm_flipselector_item_label_set(Elm_Flipselector_Item *item, const char *label)
{
- _item_text_set_hook(it, NULL, label);
+ ELM_FLIPSELECTOR_ITEM_CHECK_DELETED_RETURN(item);
+
+ Widget_Data *wd;
+ Eina_List *l;
+
+ if ((!item) || (!label))
+ return;
+
+ wd = elm_widget_data_get(WIDGET(item));
+ if ((!wd) || (!wd->items))
+ return;
+
+ l = eina_list_data_find_list(wd->items, item);
+ if (!l)
+ return;
+
+ eina_stringshare_del(item->label);
+ item->label = eina_stringshare_add_length(label, wd->max_len);
+
+ if (strlen(label) >
+ strlen(elm_flipselector_item_label_get(DATA_GET(wd->sentinel))))
+ wd->sentinel = l;
+
+ if (wd->current == l)
+ {
+ _update_view(WIDGET(item));
+ _sizing_eval(wd->self);
+ }
+
+ return;
}
-EAPI Elm_Object_Item *
-elm_flipselector_item_prev_get(Elm_Object_Item *it)
+EAPI Elm_Flipselector_Item *
+elm_flipselector_item_prev_get(Elm_Flipselector_Item *item)
{
- ELM_OBJ_ITEM_CHECK_OR_RETURN(it, NULL);
+ ELM_FLIPSELECTOR_ITEM_CHECK_DELETED_RETURN(item, NULL);
- Elm_Flipselector_Item *item, *_item;
+ Elm_Flipselector_Item *_item;
Widget_Data *wd;
Eina_List *l;
- item = (Elm_Flipselector_Item *) it;
wd = elm_widget_data_get(WIDGET(item));
- if ((!wd) || (!wd->items)) return NULL;
+ if ((!wd) || (!wd->items))
+ return NULL;
EINA_LIST_FOREACH(wd->items, l, _item)
- if (_item == item)
- {
- l = eina_list_prev(l);
- if (!l) return NULL;
- return DATA_GET(l);
- }
+ if (_item == item)
+ {
+ l = eina_list_prev(l);
+ if (!l)
+ return NULL;
+ return DATA_GET(l);
+ }
+
return NULL;
}
-EAPI Elm_Object_Item *
-elm_flipselector_item_next_get(Elm_Object_Item *it)
+EAPI Elm_Flipselector_Item *
+elm_flipselector_item_next_get(Elm_Flipselector_Item *item)
{
- ELM_OBJ_ITEM_CHECK_OR_RETURN(it, NULL);
+ ELM_FLIPSELECTOR_ITEM_CHECK_DELETED_RETURN(item, NULL);
- Elm_Flipselector_Item *item, *_item;
+ Elm_Flipselector_Item *_item;
Widget_Data *wd;
Eina_List *l;
- item = (Elm_Flipselector_Item *) it;
wd = elm_widget_data_get(WIDGET(item));
- if ((!wd) || (!wd->items)) return NULL;
+ if ((!wd) || (!wd->items))
+ return NULL;
EINA_LIST_FOREACH(wd->items, l, _item)
- if (_item == item)
- {
- l = eina_list_next(l);
- if (!l) return NULL;
- return DATA_GET(l);
- }
+ if (_item == item)
+ {
+ l = eina_list_next(l);
+ if (!l)
+ return NULL;
+ return DATA_GET(l);
+ }
+
return NULL;
}
ELM_CHECK_WIDTYPE(obj, widtype);
Widget_Data *wd = elm_widget_data_get(obj);
- if (!wd) return;
+ if (!wd)
+ return;
+
wd->first_interval = interval;
}
ELM_CHECK_WIDTYPE(obj, widtype) 0.0;
Widget_Data *wd = elm_widget_data_get(obj);
- if (!wd) return 0;
+
+ if (!wd)
+ return 0.0;
return wd->first_interval;
}
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[] = {
{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}
};
}
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__)
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);
ELM_WIDGET_ITEM_WIDTYPE_CHECK_OR_RETURN(it);
Widget_Data *wd = elm_widget_data_get(WIDGET(it));
if (!wd) return;
- Elm_Genlist_Item *it2, *it3;
+ Elm_Genlist_Item *it2;
Evas_Coord y, h;
- if (!wd->effect_mode || !wd->move_effect_mode)
+ if (!it->wd->effect_mode || !it->wd->move_effect_mode)
_item_subitems_clear(it);
else
{
- if ((!wd->item_moving_effect_timer) && (it->flags != ELM_GENLIST_ITEM_GROUP) &&
- wd->move_effect_mode != ELM_GENLIST_ITEM_MOVE_EFFECT_DELETE)
+ if ((!it->wd->item_moving_effect_timer) && (it->flags != ELM_GENLIST_ITEM_GROUP) &&
+ it->wd->move_effect_mode != ELM_GENLIST_ITEM_MOVE_EFFECT_DELETE )
{
- wd->expand_item = it;
+ it->wd->expand_item = it;
_item_flip_effect_show(it);
evas_object_geometry_get(VIEW(it), NULL, &y, NULL, &h);
- wd->expand_item_end = y + h;
+ it->wd->expand_item_end = y + h;
- it2= it;
+ it2= it;
do {
it2 = elm_genlist_item_next_get(it2);
if (!it2) break;
} while (it2->expanded_depth > it->expanded_depth);
if (it2)
{
- int diff;
Evas_Coord vy, vh;
evas_output_viewport_get(evas_object_evas_get(wd->pan_smart), NULL, &vy, NULL, &vh);
- diff = it2->old_scrl_y - (vy + vh);
- if (diff > 0)
- {
- it3 = it2;
- while (it3)
- {
- it3->old_scrl_y = it3->old_scrl_y - diff;
- it3 = elm_genlist_item_next_get(it3);
- }
- }
-
- wd->expand_item_gap = wd->expand_item_end - it2->old_scrl_y;
+ it2->old_scrl_y = ((it2->old_scrl_y > vy + vh) ? vy + vh : it2->old_scrl_y);
+ it->wd->expand_item_gap = it->wd->expand_item_end - it2->old_scrl_y;
}
else
- wd->expand_item_gap = 0;
+ it->wd->expand_item_gap = 0;
- evas_object_raise(wd->alpha_bg);
- evas_object_show(wd->alpha_bg);
+ evas_object_raise(it->wd->alpha_bg);
+ evas_object_show(it->wd->alpha_bg);
- wd->start_time = current_time_get();
- wd->item_moving_effect_timer = ecore_animator_add(_item_moving_effect_timer_cb, wd);
+ it->wd->start_time = current_time_get();
+ it->wd->item_moving_effect_timer = ecore_animator_add(_item_moving_effect_timer_cb, it->wd);
}
else
_item_subitems_clear(it);
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;
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)
+/*
+*
+* vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+*/
#include <stdio.h>
#include <math.h>
#include <Elementary.h>
#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())
}
if (wd) free(wd);
+
}
// Whenever require processing theme, Call this function
_imageslider_move(obj, e, obj, NULL);
_imageslider_resize(obj, e, obj, NULL);
+
}
// Whenever MOVE event occurs, Call this function.
wd->y = y;
_imageslider_update_pos(wd, wd->x, wd->y, wd->w);
+
}
// Whenever RESIZE event occurs, Call this fucntion.
wd->ly[BLOCK_LEFT] = wd->ly[BLOCK_CENTER];
wd->ly[BLOCK_CENTER] = wd->ly[BLOCK_RIGHT];
wd->ly[BLOCK_RIGHT] = ly_temp;
- elm_object_part_content_set(wd->ly[BLOCK_RIGHT], "swl.photo", NULL);
+ elm_object_content_part_set(wd->ly[BLOCK_RIGHT], "swl.photo", NULL);
}
else
{
wd->ly[BLOCK_RIGHT] = wd->ly[BLOCK_CENTER];
wd->ly[BLOCK_CENTER] = wd->ly[BLOCK_LEFT];
wd->ly[BLOCK_LEFT] = ly_temp;
- elm_object_part_content_set(wd->ly[BLOCK_LEFT], "swl.photo", NULL);
+ elm_object_content_part_set(wd->ly[BLOCK_LEFT], "swl.photo", NULL);
}
}
it = eina_list_data_get(l[state]);
- eo = elm_object_part_content_get(wd->ly[state], "swl.photo");
+ eo = (Evas_Object*)elm_object_content_part_get(wd->ly[state], "swl.photo");
if (eo)
evas_object_geometry_get(eo, &ix, &iy, &iw, &ih);
edje_object_part_drag_value_get(elm_layout_edje_get(wd->ly[state]), "swl.photo", &dx, &dy);
if ((iw != wd->w) || ((dx != 0) || (dy != 0)))
{
- elm_object_part_content_set(wd->ly[state], "swl.photo", NULL);
+ elm_object_content_part_set(wd->ly[state], "swl.photo", NULL);
}
else
return 1;
for (i = 0; i < BLOCK_MAX; i++)
{
- eo = elm_object_part_content_get((const Evas_Object*)wd->ly[i], "swl.photo");
+ eo = (Evas_Object*)elm_object_content_part_get((const Evas_Object*)wd->ly[i], "swl.photo");
if (!l[i])
{
- elm_object_part_content_set(wd->ly[i], "swl.photo", NULL);
+ elm_object_content_part_set(wd->ly[i], "swl.photo", NULL);
}
else
{
eo = elm_image_add(wd->obj);
//elm_image_prescale_set(eo, wd->w);
elm_image_file_set(eo, it->photo_file, NULL);
- elm_object_part_content_set(wd->ly[i], "swl.photo", eo);
+ elm_object_content_part_set(wd->ly[i], "swl.photo", eo);
}
}
}
_anim(wd);
}
+/**
+* Add an Image Slider widget
+*
+* @param parent The parent object
+* @return The new Image slider object or NULL if it cannot be created
+*
+* @ingroup Imageslider
+*/
EAPI Evas_Object *
elm_imageslider_add(Evas_Object *parent)
{
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)
{
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)
{
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)
{
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)
{
_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)
{
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)
{
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)
{
for (i = 0; i < BLOCK_MAX; i++)
{
- eo = elm_object_part_content_get(wd->ly[i], "swl.photo");
+ eo = (Evas_Object*)elm_object_content_part_get(wd->ly[i], "swl.photo");
if (eo)
- elm_object_part_content_set(wd->ly[i], "swl.photo", NULL);
+ elm_object_content_part_set(wd->ly[i], "swl.photo", NULL);
}
_imageslider_update(wd);
}
+/**
+* Get the photo file path of given Image Slider item
+*
+* @param it The Image Slider item
+* @return The photo file path or NULL;
+*
+* @ingroup Imageslider
+*/
EAPI const char *
elm_imageslider_item_photo_file_get(Elm_Imageslider_Item * it)
{
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)
{
}
}
+/**
+* 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)
{
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)
{
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)
{
_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)
{
_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)
{
if (wd->ani_lock) return;
if (it == eina_list_data_get(eina_list_prev(wd->cur)))
- elm_object_part_content_set(wd->ly[BLOCK_LEFT], "swl.photo", NULL);
+ elm_object_content_part_set(wd->ly[BLOCK_LEFT], "swl.photo", NULL);
else if (it == eina_list_data_get(wd->cur))
- elm_object_part_content_set(wd->ly[BLOCK_CENTER], "swl.photo", NULL);
+ elm_object_content_part_set(wd->ly[BLOCK_CENTER], "swl.photo", NULL);
else if (it == eina_list_data_get(eina_list_next(wd->cur)))
- elm_object_part_content_set(wd->ly[BLOCK_RIGHT], "swl.photo", NULL);
+ elm_object_content_part_set(wd->ly[BLOCK_RIGHT], "swl.photo", NULL);
_imageslider_update(wd);
}
elm_widget_mirrored_automatic_set(obj, automatic);
}
-/**
- * @}
- */
-
EAPI void
elm_object_scale_set(Evas_Object *obj,
double scale)
}
EAPI void
-elm_object_signal_callback_add(Evas_Object *obj, const char *emission, const char *source, Edje_Signal_Cb func, void *data)
+elm_object_signal_callback_add(Evas_Object *obj, const char *emission, const char *source, void (*func) (void *data, Evas_Object *o, const char *emission, const char *source), void *data)
{
EINA_SAFETY_ON_NULL_RETURN(obj);
EINA_SAFETY_ON_NULL_RETURN(func);
}
EAPI void *
-elm_object_signal_callback_del(Evas_Object *obj, const char *emission, const char *source, Edje_Signal_Cb func)
+elm_object_signal_callback_del(Evas_Object *obj, const char *emission, const char *source, void (*func) (void *data, Evas_Object *o, const char *emission, const char *source))
{
EINA_SAFETY_ON_NULL_RETURN_VAL(obj, NULL);
EINA_SAFETY_ON_NULL_RETURN_VAL(func, NULL);
const char *part,
Evas_Object *content)
{
- _elm_widget_item_content_part_set((Elm_Widget_Item *) it, part, content);
-}
-
-EAPI void
-elm_object_item_part_content_set(Elm_Object_Item *it,
- const char *part,
- Evas_Object *content)
-{
- _elm_widget_item_content_part_set((Elm_Widget_Item *) it, part, content);
+ elm_widget_item_content_part_set(it, part, content);
}
EAPI Evas_Object *
elm_object_item_content_part_get(const Elm_Object_Item *it,
const char *part)
{
- return _elm_widget_item_content_part_get((Elm_Widget_Item *) it, part);
-}
-
-EAPI Evas_Object *
-elm_object_item_part_content_get(const Elm_Object_Item *it,
- const char *part)
-{
- return _elm_widget_item_content_part_get((Elm_Widget_Item *) it, part);
+ return elm_widget_item_content_part_get(it, part);
}
EAPI Evas_Object *
elm_object_item_content_part_unset(Elm_Object_Item *it, const char *part)
{
- return _elm_widget_item_content_part_unset((Elm_Widget_Item *) it, part);
-}
-
-EAPI Evas_Object *
-elm_object_item_part_content_unset(Elm_Object_Item *it, const char *part)
-{
- return _elm_widget_item_content_part_unset((Elm_Widget_Item *) it, part);
+ return elm_widget_item_content_part_unset(it, part);
}
EAPI void
const char *part,
const char *label)
{
- _elm_widget_item_text_part_set((Elm_Widget_Item *) it, part, label);
-}
-
-EAPI void
-elm_object_item_part_text_set(Elm_Object_Item *it,
- const char *part,
- const char *label)
-{
- _elm_widget_item_text_part_set((Elm_Widget_Item *) it, part, label);
+ elm_widget_item_text_part_set(it, part, label);
}
EAPI const char *
elm_object_item_text_part_get(const Elm_Object_Item *it, const char *part)
{
- return _elm_widget_item_text_part_get((Elm_Widget_Item *) it, part);
-}
-
-EAPI const char *
-elm_object_item_part_text_get(const Elm_Object_Item *it, const char *part)
-{
- return _elm_widget_item_text_part_get((Elm_Widget_Item *) it, part);
-}
-
-EAPI void
-elm_object_access_info_set(Evas_Object *obj, const char *txt)
-{
- elm_widget_access_info_set(obj, txt);
-}
-
-EAPI void
-elm_object_item_access_info_set(Elm_Object_Item *it, const char *txt)
-{
- _elm_widget_item_access_info_set((Elm_Widget_Item *) it, txt);
+ return elm_widget_item_text_part_get(it, part);
}
EAPI void *
EAPI void
elm_object_item_signal_emit(Elm_Object_Item *it, const char *emission, const char *source)
{
- _elm_widget_item_signal_emit((Elm_Widget_Item *) it, emission, source);
+ elm_widget_item_signal_emit(it, emission, source);
}
-EAPI void elm_object_item_disabled_set(Elm_Object_Item *it, Eina_Bool disabled)
+EAPI void
+elm_object_access_info_set(Evas_Object *obj, const char *txt)
{
- _elm_widget_item_disabled_set((Elm_Widget_Item *) it, disabled);
+ elm_widget_access_info_set(obj, txt);
}
-EAPI Eina_Bool elm_object_item_disabled_get(const Elm_Object_Item *it)
+EAPI void
+elm_object_item_access_info_set(Elm_Object_Item *it, const char *txt)
{
- return _elm_widget_item_disabled_get((Elm_Widget_Item *) it);
+ _elm_widget_item_access_info_set((Elm_Widget_Item *)it, txt);
}
#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;
{
ELM_CHECK_WIDTYPE(obj, widtype);
Widget_Data *wd = elm_widget_data_get(obj);
- Eina_List *l, *ll;
+ Eina_List *l;
Evas_Coord ox, oy, ow, oh, cvx, cvy, cvw, cvh, tx, ty, gw, gh, xx, yy, ww, hh;
Grid_Item *gi;
gw = wd->size.w;
gh = wd->size.h;
- EINA_LIST_FOREACH_SAFE(wd->download_list, l, ll, gi)
+ EINA_LIST_FOREACH(wd->download_list, l, gi)
{
xx = gi->out.x;
yy = gi->out.y;
}
}
- EINA_LIST_REVERSE_FOREACH_SAFE(wd->download_list, l, ll, gi)
+ EINA_LIST_REVERSE_FOREACH(wd->download_list, l, gi)
{
if (gi->wd->download_num >= MAX_CONCURRENT_DOWNLOAD)
break;
if ((!wd) || (!wd->src)) return NULL;
g = calloc(1, sizeof(Grid));
+ if (!g) return NULL;
g->zoom = wd->zoom;
g->tsize = wd->tsize;
g->wd = wd;
- if (g->zoom > wd->src->zoom_max) return NULL;
- if (g->zoom < wd->src->zoom_min) return NULL;
+ if (g->zoom > wd->src->zoom_max)
+ {
+ free(g);
+ return NULL;
+ }
+ if (g->zoom < wd->src->zoom_min)
+ {
+ free(g);
+ return NULL;
+ }
int size = pow(2.0, wd->zoom);
g->gw = size;
char *buf;
fseek(f, 0, SEEK_SET);
- buf = malloc(sz);
+ buf = malloc(sz + 1);
if (buf)
{
+ memset(buf, 0, sz + 1);
if (fread(buf, 1, sz, f))
{
eina_simple_xml_parse(buf, sz, EINA_TRUE, cb_route_dump, &dump);
- free(buf);
}
+ free(buf);
}
}
fclose(f);
char *buf;
fseek(f, 0, SEEK_SET);
- buf = malloc(sz);
+ buf = malloc(sz + 1);
if (buf)
{
+ memset(buf, 0, sz + 1);
if (fread(buf, 1, sz, f))
{
eina_simple_xml_parse(buf, sz, EINA_TRUE, cb_name_dump, &dump);
- free(buf);
}
+ free(buf);
}
}
fclose(f);
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;
}
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;
}
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);
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;
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;
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;
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);
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);
{
*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);
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);
*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;
*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;
}
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;
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;
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)
{
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;
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);
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);
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);
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;
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);
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 *
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];
"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;
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)
{
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);
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);
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);
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);
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);
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)
{
{
ELM_CHECK_WIDTYPE(obj, widtype) strdup("");
Widget_Data *wd = elm_widget_data_get(obj);
- char **str;
+ char **str = NULL;
unsigned int ele, idx;
char search_url[PATH_MAX];
char buf[PATH_MAX];
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
Eina_Bool have_selection: 1;
Eina_Bool selmode :1;
Eina_Bool context_menu : 1;
- Elm_CNP_Mode cnp_mode : 2;
+ Eina_Bool textonly : 1;
};
EAPI void elm_entry_extension_module_data_get(Evas_Object *obj,Elm_Entry_Extension_data *ext_mod);
#include <Elementary.h>
#include "elm_priv.h"
+/**
+ * @defgroup Multibuttonentry Multibuttonentry
+ * @ingroup Elementary
+ *
+ * This is a Multibuttonentry.
+ */
+
#define MAX_STR 256
#define MIN_W_ENTRY 20
typedef enum _Multibuttonentry_Pos
- {
- MULTIBUTTONENTRY_POS_START,
- MULTIBUTTONENTRY_POS_END,
- MULTIBUTTONENTRY_POS_BEFORE,
- MULTIBUTTONENTRY_POS_AFTER,
- MULTIBUTTONENTRY_POS_NUM
- } Multibuttonentry_Pos;
+{
+ MULTIBUTONENTRY_POS_START,
+ MULTIBUTONENTRY_POS_END,
+ MULTIBUTONENTRY_POS_BEFORE,
+ MULTIBUTONENTRY_POS_AFTER,
+ MULTIBUTONENTRY_POS_NUM
+} Multibuttonentry_Pos;
typedef enum _Multibuttonentry_Button_State
- {
- MULTIBUTTONENTRY_BUTTON_STATE_DEFAULT,
- MULTIBUTTONENTRY_BUTTON_STATE_SELECTED,
- MULTIBUTTONENTRY_BUTTON_STATE_NUM
- } Multibuttonentry_Button_State;
-
-typedef enum _MultiButtonEntry_Closed_Button_Type
- {
- MULTIBUTTONENTRY_CLOSED_IMAGE,
- MULTIBUTTONENTRY_CLOSED_LABEL
- } MultiButtonEntry_Closed_Button_Type;
+{
+ MULTIBUTONENTRY_BUTTON_STATE_DEFAULT,
+ MULTIBUTONENTRY_BUTTON_STATE_SELECTED,
+ MULTIBUTONENTRY_BUTTON_STATE_NUM
+} Multibuttonentry_Button_State;
+
+typedef enum _MultiButtonEntry_Closed_Button_Type {
+ MULTIBUTTONENTRY_CLOSED_IMAGE,
+ MULTIBUTTONENTRY_CLOSED_LABEL
+} MultiButtonEntry_Closed_Button_Type;
typedef enum _Multibuttonentry_View_State
- {
- MULTIBUTTONENTRY_VIEW_NONE,
- MULTIBUTTONENTRY_VIEW_GUIDETEXT,
- MULTIBUTTONENTRY_VIEW_ENTRY,
- MULTIBUTTONENTRY_VIEW_CONTRACTED
- } Multibuttonentry_View_State;
-
-struct _Multibuttonentry_Item
- {
- Evas_Object *multibuttonentry;
- Evas_Object *button;
- void *data;
- Evas_Coord vw, rw; // vw: visual width, real width
- Eina_Bool visible: 1;
- };
+{
+ MULTIBUTTONENTRY_VIEW_NONE,
+ MULTIBUTTONENTRY_VIEW_GUIDETEXT,
+ MULTIBUTTONENTRY_VIEW_ENTRY,
+ MULTIBUTTONENTRY_VIEW_CONTRACTED
+} Multibuttonentry_View_State;
+
+struct _Multibuttonentry_Item {
+ Evas_Object *multibuttonentry;
+ Evas_Object *button;
+ void *data;
+ Evas_Coord vw, rw; // vw: visual width, real width
+ Eina_Bool visible: 1;
+};
typedef struct _Widget_Data Widget_Data;
-struct _Widget_Data
- {
- Evas_Object *base;
- Evas_Object *box;
- Evas_Object *entry;
- Evas_Object *label;
- Evas_Object *guidetext;
- Evas_Object *end; // used to represent the total number of invisible buttons
-
- Evas_Object *rect_for_end;
- MultiButtonEntry_Closed_Button_Type end_type;
-
- Eina_List *items;
- Eina_List *current;
-
- int n_str;
- Multibuttonentry_View_State view_state;
-
- Evas_Coord w_box, h_box;
- int contracted;
- Eina_Bool focused: 1;
- Eina_Bool last_btn_select: 1;
- Elm_Multibuttonentry_Item_Verify_Callback add_callback;
- void *add_callback_data;
- };
+struct _Widget_Data {
+ Evas_Object *base;
+ Evas_Object *box;
+ Evas_Object *entry;
+ Evas_Object *label;
+ Evas_Object *guidetext;
+ Evas_Object *end; // used to represent the total number of invisible buttons
+
+ Evas_Object *rectForEnd;
+ MultiButtonEntry_Closed_Button_Type end_type;
+
+ Eina_List *items;
+ Eina_List *current;
+ int n_str;
+ Multibuttonentry_View_State view_state;
+
+ Evas_Coord w_box, h_box;
+ int contracted;
+ Eina_Bool focused: 1;
+ Eina_Bool last_btn_select: 1;
+ Elm_Multibuttonentry_Item_Verify_Callback add_callback;
+ void *add_callback_data;
+};
static const char *widtype = NULL;
static void _del_hook(Evas_Object *obj);
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);
_del_hook(Evas_Object *obj)
{
Widget_Data *wd = elm_widget_data_get(obj);
-
if (!wd) return;
+
if (wd->items)
{
Elm_Multibuttonentry_Item *item;
if (wd->label) evas_object_del (wd->label);
if (wd->guidetext) evas_object_del (wd->guidetext);
if (wd->end) evas_object_del (wd->end);
- if (wd->rect_for_end) evas_object_del(wd->rect_for_end);
+ if (wd->rectForEnd) evas_object_del(wd->rectForEnd);
}
static void
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)
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);
}
_sizing_eval(Evas_Object *obj)
{
Widget_Data *wd = elm_widget_data_get(obj);
+
Evas_Coord minw = -1, minh = -1;
Evas_Coord left, right, top, bottom;
-
if (!wd) return;
+
evas_object_size_hint_min_get(wd->box, &minw, &minh);
edje_object_part_geometry_get(wd->base, "top.left.pad", NULL, NULL, &left, &top);
edje_object_part_geometry_get(wd->base, "bottom.right.pad", NULL, NULL, &right, &bottom);
_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);
{
Evas_Object *eo = (Evas_Object *)data;
Widget_Data *wd = elm_widget_data_get(data);
-
if (!wd) return;
_sizing_eval(eo);
}
{
Widget_Data *wd = elm_widget_data_get(data);
Evas_Coord w, h;
-
if (!wd) return;
+
evas_object_geometry_get(wd->box, NULL, NULL, &w, &h);
if (wd->h_box < h) evas_object_smart_callback_call (data, "expanded", NULL);
_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);
_set_vis_guidetext(Evas_Object *obj)
{
Widget_Data *wd = elm_widget_data_get(obj);
-
if (!wd) return;
+
elm_box_unpack(wd->box, wd->guidetext);
elm_box_unpack(wd->box, wd->entry);
if (wd->view_state == MULTIBUTTONENTRY_VIEW_CONTRACTED) return;
evas_object_show(wd->entry);
if (elm_widget_focus_get(obj) || wd->focused)
if (!wd->current)
- elm_object_focus_set(wd->entry, EINA_TRUE);
+ elm_object_focus(wd->entry);
wd->view_state = MULTIBUTTONENTRY_VIEW_ENTRY;
}
+ return;
}
static void
Widget_Data *wd = elm_widget_data_get(obj);
Eina_List *l;
Elm_Multibuttonentry_Item *item;
-
if (!wd || !wd->box) return;
+
if (wd->view_state == MULTIBUTTONENTRY_VIEW_ENTRY)
evas_object_hide(wd->entry);
else if (wd->view_state == MULTIBUTTONENTRY_VIEW_GUIDETEXT)
evas_object_hide(wd->guidetext);
else if (wd->view_state == MULTIBUTTONENTRY_VIEW_CONTRACTED)
{
- evas_object_hide(wd->rect_for_end);
+ evas_object_hide(wd->rectForEnd);
evas_object_hide(wd->end);
wd->view_state = MULTIBUTTONENTRY_VIEW_NONE;
}
item->visible = EINA_FALSE;
}
}
+
// pack buttons only 1line
w = wd->w_box;
{
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);
*/
}
if (item)
{
int w_label_count = 0;
- char buf[MAX_STR];
+ char buf[MAX_STR] = {0,};
elm_box_pack_end(wd->box, item->button);
evas_object_show(item->button);
Evas_Coord rectSize;
Evas_Coord closed_height = 0;
const char *height_str = edje_object_data_get(wd->base, "closed_height");
-
- if (height_str) closed_height = (Evas_Coord)atoi(height_str);
+ if(height_str) closed_height = (Evas_Coord)atoi(height_str);
elm_box_unpack(wd->box, item->button);
evas_object_hide(item->button);
item->visible = EINA_FALSE;
w += item->vw;
rectSize = w - button_min_width;
- if (!wd->rect_for_end)
+ if (!wd->rectForEnd)
{
Evas *e = evas_object_evas_get(obj);
- wd->rect_for_end = evas_object_rectangle_add(e);
- evas_object_color_set(wd->rect_for_end, 0, 0, 0, 0);
+ wd->rectForEnd = evas_object_rectangle_add(e);
+ evas_object_color_set(wd->rectForEnd, 0, 0, 0, 0);
}
- evas_object_size_hint_min_set(wd->rect_for_end, rectSize, closed_height * elm_scale_get());
- elm_box_pack_end(wd->box, wd->rect_for_end);
- evas_object_show(wd->rect_for_end);
+ evas_object_size_hint_min_set(wd->rectForEnd, rectSize, closed_height * elm_scale_get());
+ elm_box_pack_end(wd->box, wd->rectForEnd);
+ evas_object_show(wd->rectForEnd);
elm_box_pack_end(wd->box, wd->end);
evas_object_show(wd->end);
}
evas_object_hide(wd->end);
- if (wd->rect_for_end) evas_object_hide(wd->rect_for_end);
+ if (wd->rectForEnd) evas_object_hide(wd->rectForEnd);
// pack buttons only 1line
_set_label(Evas_Object *obj, const char* str)
{
Widget_Data *wd = elm_widget_data_get(obj);
-
if (!wd || !str) return;
+
if (wd->label)
{
Evas_Coord width, height, sum_width = 0;
{
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);
_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;
{
Widget_Data *wd = elm_widget_data_get(obj);
Elm_Multibuttonentry_Item *item = NULL;
-
if (!wd) return;
+
if (wd->current)
item = eina_list_data_get(wd->current);
if (item && item->button)
{
- switch (state)
+ switch(state)
{
- case MULTIBUTTONENTRY_BUTTON_STATE_DEFAULT:
+ case MULTIBUTONENTRY_BUTTON_STATE_DEFAULT:
edje_object_signal_emit(item->button, "default", "");
wd->current = NULL;
break;
- case MULTIBUTTONENTRY_BUTTON_STATE_SELECTED:
+ case MULTIBUTONENTRY_BUTTON_STATE_SELECTED:
edje_object_signal_emit(item->button, "focused", "");
evas_object_smart_callback_call(obj, "item,selected", item);
break;
Widget_Data *wd = elm_widget_data_get(obj);
Eina_List *l;
Elm_Multibuttonentry_Item *item;
-
if (!wd) return;
// change the state of previous button to "default"
- _change_current_button_state(obj, MULTIBUTTONENTRY_BUTTON_STATE_DEFAULT);
+ _change_current_button_state(obj, MULTIBUTONENTRY_BUTTON_STATE_DEFAULT);
// change the current
EINA_LIST_FOREACH(wd->items, l, item)
break;
}
}
- // change the state of current button to "focused"
- _change_current_button_state(obj, MULTIBUTTONENTRY_BUTTON_STATE_SELECTED);
+
+ // chagne the state of current button to "focused"
+ _change_current_button_state(obj, MULTIBUTONENTRY_BUTTON_STATE_SELECTED);
+
}
static void
_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);
}
_select_button(Evas_Object *obj, Evas_Object *btn)
{
Widget_Data *wd = elm_widget_data_get(obj);
-
if (!wd) return;
+
if (btn)
{
_change_current_button(obj, btn);
if (elm_widget_focus_get(obj))
{
- elm_object_focus_set(wd->entry, EINA_FALSE);
+ elm_object_unfocus(wd->entry);
evas_object_focus_set(btn, EINA_TRUE);
}
}
else
{
- _change_current_button_state(obj, MULTIBUTTONENTRY_BUTTON_STATE_DEFAULT);
+ _change_current_button_state(obj, MULTIBUTONENTRY_BUTTON_STATE_DEFAULT);
if (elm_widget_focus_get(obj))
- elm_object_focus_set(wd->entry, EINA_TRUE);
+ elm_object_focus(wd->entry);
}
}
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*
_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);
item->vw = vw;
item->visible = EINA_TRUE;
- switch (pos)
+ switch(pos)
{
- case MULTIBUTTONENTRY_POS_START:
+ case MULTIBUTONENTRY_POS_START:
wd->items = eina_list_prepend(wd->items, item);
if (wd->view_state == MULTIBUTTONENTRY_VIEW_CONTRACTED)
{
_set_vis_guidetext(obj);
}
break;
- case MULTIBUTTONENTRY_POS_END:
+ case MULTIBUTONENTRY_POS_END:
wd->items = eina_list_append(wd->items, item);
if (wd->view_state == MULTIBUTTONENTRY_VIEW_CONTRACTED)
{
elm_box_pack_end(wd->box, btn);
}
break;
- case MULTIBUTTONENTRY_POS_BEFORE:
+ case MULTIBUTONENTRY_POS_BEFORE:
if (reference)
wd->items = eina_list_prepend_relative(wd->items, item, reference);
else
}
}
break;
- case MULTIBUTTONENTRY_POS_AFTER:
+ case MULTIBUTONENTRY_POS_AFTER:
if (reference)
wd->items = eina_list_append_relative(wd->items, item, reference);
else
}
}
evas_object_smart_callback_call(obj, "item,added", item);
-
free(str_utf8);
return item;
if (!wd) return;
// add button
- _add_button_item(obj, str, MULTIBUTTONENTRY_POS_END, NULL, NULL);
+ _add_button_item(obj, str, MULTIBUTONENTRY_POS_END, NULL, NULL);
}
static void
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;
}
Widget_Data *wd = elm_widget_data_get(data);
if (!wd) return;
- _change_current_button_state(data, MULTIBUTTONENTRY_BUTTON_STATE_DEFAULT);
- elm_object_focus_set(wd->entry, EINA_TRUE);
+ _change_current_button_state(data, MULTIBUTONENTRY_BUTTON_STATE_DEFAULT);
+ elm_object_focus(wd->entry);
}
static void
{
Widget_Data *wd = elm_widget_data_get(data);
Elm_Multibuttonentry_Item *item = NULL;
-
if (!wd) return;
if (wd->current)
{
item = eina_list_data_get(wd->current);
- elm_object_focus_set(wd->entry, EINA_FALSE);
+ elm_object_unfocus(wd->entry);
evas_object_focus_set(item->button, EINA_TRUE);
}
}
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);
}
_view_init(Evas_Object *obj)
{
Widget_Data *wd = elm_widget_data_get(obj);
-
if (!wd) return;
if (!wd->box)
{
- wd->box = elm_box_add (obj);
- if (!wd->box) return;
+ if (! (wd->box = elm_box_add (obj))) return;
elm_widget_sub_object_add(obj, wd->box);
elm_box_layout_set(wd->box, _box_layout_cb, NULL, NULL);
elm_box_homogeneous_set(wd->box, EINA_FALSE);
edje_object_part_swallow(wd->base, "box.swallow", wd->box);
}
+
if (!wd->label)
{
- wd->label = edje_object_add(evas_object_evas_get(obj));
- if (!wd->label) return;
+ if (!(wd->label = edje_object_add(evas_object_evas_get(obj)))) return;
_elm_theme_object_set(obj, wd->label, "multibuttonentry", "label", elm_widget_style_get(obj));
_set_label(obj, "");
elm_widget_sub_object_add(obj, wd->label);
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;
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;
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;
}
}
+/**
+ * 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)
{
wd->base = edje_object_add(e);
_elm_theme_object_set(obj, wd->base, "multibuttonentry", "base", "default");
elm_widget_resize_object_set(obj, wd->base);
- elm_widget_can_focus_set(obj, EINA_TRUE);
+ elm_widget_can_focus_set(obj,EINA_TRUE);
wd->view_state = MULTIBUTTONENTRY_VIEW_NONE;
wd->focused = EINA_FALSE;
wd->last_btn_select = EINA_TRUE;
wd->n_str = 0;
- wd->rect_for_end= NULL;
+ wd->rectForEnd = NULL;
wd->add_callback = NULL;
wd->add_callback_data = NULL;
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);
_set_label(obj, "");
}
+/**
+ * Get the guide text
+ *
+ * @param obj The multibuttonentry object
+ * @return The guide text, or NULL if none
+ *
+ * @ingroup Multibuttonentry
+ */
EAPI const char *
elm_multibuttonentry_guide_text_get(const Evas_Object *obj)
{
ELM_CHECK_WIDTYPE(obj, widtype) NULL;
Widget_Data *wd = elm_widget_data_get(obj);
-
- if (!wd) return NULL;
+ if (!wd) return NULL;
if (wd->guidetext) return edje_object_part_text_get(wd->guidetext, "elm.text");
return NULL;
}
+/**
+ * Set the guide text
+ *
+ * @param obj The multibuttonentry object
+ * @param label The guide text string
+ *
+ * @ingroup Multibuttonentry
+ */
EAPI void
elm_multibuttonentry_guide_text_set(Evas_Object *obj, const char *guidetext)
{
ELM_CHECK_WIDTYPE(obj, widtype);
Widget_Data *wd = elm_widget_data_get(obj);
-
if (!wd) return;
if (guidetext)
- _set_guidetext(obj, guidetext);
+ _set_guidetext(obj, guidetext);
else
- _set_guidetext(obj, "");
+ _set_guidetext(obj, "");
+
}
+/**
+ * Get the value of contracted state.
+ *
+ * @param obj The multibuttonentry object
+ * @param the value of contracted state.
+ *
+ * @ingroup Multibuttonentry
+ */
EAPI int
elm_multibuttonentry_contracted_state_get(const Evas_Object *obj)
{
ELM_CHECK_WIDTYPE(obj, widtype) -1;
Widget_Data *wd = elm_widget_data_get(obj);
-
if (!wd) return -1;
return wd->view_state == MULTIBUTTONENTRY_VIEW_CONTRACTED ? 1 : 0;
}
+/**
+ * Set/Unset the multibuttonentry to contracted state of single line
+ *
+ * @param obj The multibuttonentry object
+ * @param the value of contracted state. set this to 1 to set the multibuttonentry to contracted state of single line. set this to 0 to unset the contracted state.
+ *
+ * @ingroup Multibuttonentry
+ */
EAPI void
elm_multibuttonentry_contracted_state_set(Evas_Object *obj, int contracted)
{
ELM_CHECK_WIDTYPE(obj, widtype);
Widget_Data *wd = elm_widget_data_get(obj);
-
if (!wd || !wd->box ||
((wd->view_state == MULTIBUTTONENTRY_VIEW_CONTRACTED) ? 1 : 0) == contracted) return;
_contracted_state_set(obj, contracted);
}
+/**
+ * Prepend a new item to the multibuttonentry
+ *
+ * @param obj The multibuttonentry object
+ * @param label The label of new item
+ * @param data The ponter to the data to be attached
+ * @return A handle to the item added or NULL if not possible
+ *
+ * @ingroup Multibuttonentry
+ */
EAPI Elm_Multibuttonentry_Item *
elm_multibuttonentry_item_add_start(Evas_Object *obj, const char *label, void *data)
{
ELM_CHECK_WIDTYPE(obj, widtype) NULL;
Widget_Data *wd = elm_widget_data_get(obj);
Elm_Multibuttonentry_Item *item;
-
if (!wd || !label) return NULL;
- item = _add_button_item(obj, label, MULTIBUTTONENTRY_POS_START, NULL, data);
+ item = _add_button_item(obj, label, MULTIBUTONENTRY_POS_START, NULL, data);
return item;
}
+/**
+ * Append a new item to the multibuttonentry
+ *
+ * @param obj The multibuttonentry object
+ * @param label The label of new item
+ * @param data The ponter to the data to be attached
+ * @return A handle to the item added or NULL if not possible
+ *
+ * @ingroup Multibuttonentry
+ */
EAPI Elm_Multibuttonentry_Item *
elm_multibuttonentry_item_add_end(Evas_Object *obj, const char *label, void *data)
{
ELM_CHECK_WIDTYPE(obj, widtype) NULL;
Widget_Data *wd = elm_widget_data_get(obj);
Elm_Multibuttonentry_Item *item;
-
if (!wd || !label) return NULL;
- item = _add_button_item(obj, label, MULTIBUTTONENTRY_POS_END, NULL, data);
+ item = _add_button_item(obj, label, MULTIBUTONENTRY_POS_END, NULL, data);
return item;
}
+/**
+ * Add a new item to the multibuttonentry before the indicated object
+ *
+ * reference.
+ * @param obj The multibuttonentry object
+ * @param label The label of new item
+ * @param before The item before which to add it
+ * @param data The ponter to the data to be attached
+ * @return A handle to the item added or NULL if not possible
+ *
+ * @ingroup Multibuttonentry
+ */
EAPI Elm_Multibuttonentry_Item *
elm_multibuttonentry_item_add_before(Evas_Object *obj, const char *label, Elm_Multibuttonentry_Item *before, void *data)
{
ELM_CHECK_WIDTYPE(obj, widtype) NULL;
Widget_Data *wd = elm_widget_data_get(obj);
Elm_Multibuttonentry_Item *item;
-
if (!wd || !label) return NULL;
- item = _add_button_item(obj, label, MULTIBUTTONENTRY_POS_BEFORE, before, data);
+ item = _add_button_item(obj, label, MULTIBUTONENTRY_POS_BEFORE, before, data);
return item;
}
+/**
+ * Add a new item to the multibuttonentry after the indicated object
+ *
+ * @param obj The multibuttonentry object
+ * @param label The label of new item
+ * @param after The item after which to add it
+ * @param data The ponter to the data to be attached
+ * @return A handle to the item added or NULL if not possible
+ *
+ * @ingroup Multibuttonentry
+ */
EAPI Elm_Multibuttonentry_Item *
elm_multibuttonentry_item_add_after(Evas_Object *obj, const char *label, Elm_Multibuttonentry_Item *after, void *data)
{
ELM_CHECK_WIDTYPE(obj, widtype) NULL;
Widget_Data *wd = elm_widget_data_get(obj);
Elm_Multibuttonentry_Item *item;
-
if (!wd || !label) return NULL;
- item = _add_button_item(obj, label, MULTIBUTTONENTRY_POS_AFTER, after, data);
+ item = _add_button_item(obj, label, MULTIBUTONENTRY_POS_AFTER, after, data);
return item;
}
+/**
+ * Get a list of items in the multibuttonentry
+ *
+ * @param obj The multibuttonentry object
+ * @return The list of items, or NULL if none
+ *
+ * @ingroup Multibuttonentry
+ */
EAPI const Eina_List *
elm_multibuttonentry_items_get(const Evas_Object *obj)
{
ELM_CHECK_WIDTYPE(obj, widtype) NULL;
Widget_Data *wd = elm_widget_data_get(obj);
-
if (!wd) return NULL;
return wd->items;
}
+/**
+ * Get the first item in the multibuttonentry
+ *
+ * @param obj The multibuttonentry object
+ * @return The first item, or NULL if none
+ *
+ * @ingroup Multibuttonentry
+ */
EAPI Elm_Multibuttonentry_Item *
elm_multibuttonentry_item_first_get(const Evas_Object *obj)
{
ELM_CHECK_WIDTYPE(obj, widtype) NULL;
Widget_Data *wd = elm_widget_data_get(obj);
-
if (!wd || !wd->items) return NULL;
return eina_list_data_get(wd->items);
}
+/**
+ * Get the last item in the multibuttonentry
+ *
+ * @param obj The multibuttonentry object
+ * @return The last item, or NULL if none
+ *
+ * @ingroup Multibuttonentry
+ */
EAPI Elm_Multibuttonentry_Item *
elm_multibuttonentry_item_last_get(const Evas_Object *obj)
{
ELM_CHECK_WIDTYPE(obj, widtype) NULL;
Widget_Data *wd = elm_widget_data_get(obj);
-
if (!wd || !wd->items) return NULL;
return eina_list_data_get(eina_list_last(wd->items));
}
+/**
+ * Get the selected item in the multibuttonentry
+ *
+ * @param obj The multibuttonentry object
+ * @return The selected item, or NULL if none
+ *
+ * @ingroup Multibuttonentry
+ */
EAPI Elm_Multibuttonentry_Item *
elm_multibuttonentry_item_selected_get(const Evas_Object *obj)
{
ELM_CHECK_WIDTYPE(obj, widtype) NULL;
Widget_Data *wd = elm_widget_data_get(obj);
-
if (!wd || !wd->current) return NULL;
return eina_list_data_get(wd->current);
}
+/**
+ * Set the selected state of an item
+ *
+ * @param item The item
+ *
+ * @ingroup Multibuttonentry
+ */
EAPI void
elm_multibuttonentry_item_selected_set(Elm_Multibuttonentry_Item *item)
{
}
}
+/**
+ * unselect all of items.
+ *
+ * @param obj The multibuttonentry object
+ *
+ * @ingroup Multibuttonentry
+ */
EAPI void
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)
{
_view_update(obj);
}
+/**
+ * Delete a given item
+ *
+ * @param item The item
+ *
+ * @ingroup Multibuttonentry
+ */
EAPI void
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)
{
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)
{
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)
{
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);
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)
{
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)
{
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)
{
elm_object_style_set(action_data->btn, buf);
++index;
snprintf(buf, sizeof(buf), "actionbtn%d", index);
- elm_object_part_content_set(wd->action_area, buf, action_data->btn);
+ elm_object_content_part_set(wd->action_area, buf, action_data->btn);
}
- elm_object_part_content_set(wd->layout, "elm.swallow.buttonArea", wd->action_area);
+ elm_object_content_part_set(wd->layout, "elm.swallow.buttonArea", wd->action_area);
}
if (wd->content_area)
{
{
snprintf(buf, sizeof(buf), "popup_description/%s", elm_widget_style_get(obj));
elm_object_style_set(wd->desc_label, buf);
- elm_object_part_content_set(wd->content_area, "elm.swallow.content", wd->desc_label);
+ elm_object_content_part_set(wd->content_area, "elm.swallow.content", wd->desc_label);
}
else if (wd->content)
{
- elm_object_part_content_set(wd->content_area, "elm.swallow.content", wd->content);
+ elm_object_content_part_set(wd->content_area, "elm.swallow.content", wd->content);
}
- elm_object_part_content_set(wd->layout, "elm.swallow.content", wd->content_area);
+ elm_object_content_part_set(wd->layout, "elm.swallow.content", wd->content_area);
}
if (wd->title_area)
{
btn = _elm_popup_add_button(obj, text, response);
++index;
snprintf(buf, sizeof(buf), "actionbtn%d", index);
- elm_object_part_content_set(wd->action_area, buf, btn);
+ elm_object_content_part_set(wd->action_area, buf, btn);
evas_object_event_callback_add(wd->action_area, EVAS_CALLBACK_CHANGED_SIZE_HINTS,
_changed_size_hints, obj);
text = va_arg(args, char*);
va_list args;
va_start(args, first_button_text);
wd->action_area = elm_layout_add(popup);
- elm_object_part_content_set(wd->layout, "elm.swallow.buttonArea", wd->action_area);
+ elm_object_content_part_set(wd->layout, "elm.swallow.buttonArea", wd->action_area);
snprintf(buf,sizeof(buf), "buttons%d", no_of_buttons);
wd->no_of_buttons = no_of_buttons;
elm_layout_theme_set(wd->action_area, "popup", buf, elm_widget_style_get(popup));
evas_object_size_hint_weight_set(wd->desc_label, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(wd->desc_label, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_show(wd->desc_label);
- elm_object_part_content_set(wd->content_area, "elm.swallow.content", wd->desc_label);
- elm_object_part_content_set(wd->layout, "elm.swallow.content", wd->content_area);
+ elm_object_content_part_set(wd->content_area, "elm.swallow.content", wd->desc_label);
+ elm_object_content_part_set(wd->layout, "elm.swallow.content", wd->content_area);
evas_object_event_callback_add(wd->content_area, EVAS_CALLBACK_CHANGED_SIZE_HINTS,
_changed_size_hints, obj);
_sizing_eval(obj);
wd->title_icon = NULL;
}
wd->title_icon = icon;
- elm_object_part_content_set(wd->layout, "elm.swallow.title.icon", wd->title_icon);
+ elm_object_content_part_set(wd->layout, "elm.swallow.title.icon", wd->title_icon);
edje_object_signal_emit(elm_layout_edje_get(wd->layout), "elm,state,title,icon,visible", "elm");
edje_object_message_signal_process(wd->layout);
_sizing_eval(obj);
{
wd->content_area = elm_layout_add(obj);
elm_layout_theme_set(wd->content_area, "popup","content", elm_widget_style_get(obj));
- elm_object_part_content_set(wd->content_area, "elm.swallow.content", content);
- elm_object_part_content_set(wd->layout, "elm.swallow.content", wd->content_area);
+ elm_object_content_part_set(wd->content_area, "elm.swallow.content", content);
+ elm_object_content_part_set(wd->layout, "elm.swallow.content", wd->content_area);
evas_object_event_callback_add(wd->content_area, EVAS_CALLBACK_CHANGED_SIZE_HINTS,
_changed_size_hints, obj);
}
wd->action_area = NULL;
}
wd->action_area = elm_layout_add(obj);
- elm_object_part_content_set(wd->layout, "elm.swallow.buttonArea", wd->action_area);
+ elm_object_content_part_set(wd->layout, "elm.swallow.buttonArea", wd->action_area);
evas_object_size_hint_weight_set(wd->action_area, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(wd->action_area, EVAS_HINT_FILL, EVAS_HINT_FILL);
snprintf(buf, sizeof(buf), "buttons%d", no_of_buttons);
Eina_List *themes;
Eina_List *extension;
Eina_Hash *cache;
- Eina_Hash *cache_data;
Elm_Theme *ref_theme;
Eina_List *referrers;
const char *theme;
{
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;
{
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;
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;
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;
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;
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;
--- /dev/null
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+#include <Elementary.h>
+#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);
+}
#include <Elementary.h>
#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
}
+/**
+ * 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;
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;
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;
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);
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);
_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);
// 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);
_content_set_hook(Evas_Object *obj, const char *part, Evas_Object *content)
{
ELM_CHECK_WIDTYPE(obj, widtype);
- if (!part || !strcmp(part, "icon"))
+ if (!part) return;
+ if (!strcmp(part, "icon"))
_icon_set(obj, content);
else if (!strcmp(part, "end"))
_end_set(obj, content);
{
ELM_CHECK_WIDTYPE(obj, widtype) NULL;
Widget_Data *wd;
+ if (!part) return NULL;
wd = elm_widget_data_get(obj);
if (!wd) return NULL;
- if (!part || !strcmp(part, "icon"))
+ if (!strcmp(part, "icon"))
return wd->icon;
else if (!strcmp(part, "end"))
return wd->end;
_content_unset_hook(Evas_Object *obj, const char *part)
{
ELM_CHECK_WIDTYPE(obj, widtype) NULL;
- if (!part || !strcmp(part, "icon"))
+ if (!part) return NULL;
+ if (!strcmp(part, "icon"))
return _icon_unset(obj);
else if (!strcmp(part, "end"))
return _end_unset(obj);
--- /dev/null
+/*
+ * @defgroup SlidingDrawer SlidingDrawer
+ * @ingroup Elementary
+ *
+ * This is a slidingdrawer.
+ */
+
+#include <Elementary.h>
+#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 \r
+_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;
+}
#include "elm_priv.h"
+/**
+ * @defgroup Stackedicon Stackedicon
+ * @ingroup Elementary
+ *
+ * This is a Stackedicon.
+ */
+
#define MAX_ITEM_NUM (9)
#define MAX_MOVE_INTERVAL (0.2)
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)
{
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;
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;
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);
_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;
if (!wd) return NULL;
return wd->list;
}
+
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)
{
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)
{
}
+/**
+ * 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)
{
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)
{
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)
{
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)
{
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)
{
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)
{
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)
{
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)
{
}
}
+/**
+ * Realize the visible items to the screen
+ *
+ * @param st The store object
+ *
+ * @ingroup Store
+ */
EAPI void
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)
{
}
}
+/**
+ * Delete the item of genlist
+ *
+ * @param sti The store item object
+ *
+ * @ingroup Store
+ */
EAPI void
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
+
static Elm_Theme theme_default =
{
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1
+ NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1
};
static Eina_List *themes = NULL;
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);
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)
{
}
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);
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)
{
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);
-}
#include <Elementary.h>
#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
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)
{
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)
{
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)
{
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)
{
#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)
{
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)
{
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)
{
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)
{
}
}
+/**
+ * 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)
{
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)
{
EINA_LIST_FOREACH(transit->objs, elist, obj)
{
- if (elm_widget_type_check(obj, type, __func__))
+ if (elm_widget_type_check(obj, type))
elm_icon_file_set(obj,
eina_list_nth(image_animation->images, count), NULL);
}
wd->layout = edje_object_add(e);
_elm_theme_object_set(obj, wd->layout, "video", "base", "default");
elm_widget_resize_object_set(obj, wd->layout);
+ elm_widget_sub_object_add(obj, wd->layout);
evas_object_show(wd->layout);
evas_object_size_hint_weight_set(wd->layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
wd->emotion = emotion_object_add(e);
emotion_object_init(wd->emotion, NULL);
- elm_widget_sub_object_add(obj, wd->emotion);
edje_object_part_swallow(wd->layout, "elm.swallow.video", wd->emotion);
+ elm_widget_sub_object_add(obj, wd->emotion);
evas_object_smart_callback_add(wd->emotion, "open_done", _open_done, obj);
evas_object_smart_callback_add(wd->emotion, "playback_started", _playback_started, obj);
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;
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)
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,
EAPI void
elm_widget_focus_steal(Evas_Object *obj)
{
- Evas_Object *parent, *parent2, *o;
+ Evas_Object *parent, *o;
API_ENTRY return;
if (sd->focused) return;
if (sd->focused) break;
parent = o;
}
- if ((!elm_widget_parent_get(parent)) &&
- (!elm_widget_parent2_get(parent)))
- elm_widget_focused_object_clear(parent);
+ if (!elm_widget_parent_get(parent))
+ elm_widget_focused_object_clear(parent);
else
{
- parent2 = elm_widget_parent_get(parent);
- if (!parent2) parent2 = elm_widget_parent2_get(parent);
- parent = parent2;
+ parent = elm_widget_parent_get(parent);
sd = evas_object_smart_data_get(parent);
- if (sd)
+ if ((sd->resize_obj) && (elm_widget_focus_get(sd->resize_obj)))
+ elm_widget_focused_object_clear(sd->resize_obj);
+ else
{
- if ((sd->resize_obj) && (elm_widget_focus_get(sd->resize_obj)))
- elm_widget_focused_object_clear(sd->resize_obj);
- else
+ const Eina_List *l;
+ Evas_Object *child;
+ EINA_LIST_FOREACH(sd->subobjs, l, child)
{
- const Eina_List *l;
- Evas_Object *child;
- EINA_LIST_FOREACH(sd->subobjs, l, child)
+ if (elm_widget_focus_get(child))
{
- if (elm_widget_focus_get(child))
- {
- elm_widget_focused_object_clear(child);
- break;
- }
+ elm_widget_focused_object_clear(child);
+ break;
}
}
}
EAPI Eina_Bool
elm_widget_type_check(const Evas_Object *obj,
- const char *type,
- const char *func)
+ const char *type)
{
const char *provided, *expected = "(unknown)";
static int abort_on_warn = -1;
if ((!provided) || (!provided[0]))
provided = "(unknown)";
}
- ERR("Passing Object: %p in function: %s, of type: '%s' when expecting type: '%s'", obj, func, provided, expected);
+ ERR("Passing Object: %p, of type: '%s' when expecting type: '%s'", obj, provided, expected);
if (abort_on_warn == -1)
{
if (getenv("ELM_ERROR_ABORT")) abort_on_warn = 1;
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
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
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! */
};
EAPI void elm_widget_resize_object_set(Evas_Object *obj, Evas_Object *sobj);
EAPI void elm_widget_hover_object_set(Evas_Object *obj, Evas_Object *sobj);
EAPI void elm_widget_signal_emit(Evas_Object *obj, const char *emission, const char *source);
-EAPI void elm_widget_signal_callback_add(Evas_Object *obj, const char *emission, const char *source, Edje_Signal_Cb func, void *data);
-EAPI void *elm_widget_signal_callback_del(Evas_Object *obj, const char *emission, const char *source, Edje_Signal_Cb func);
+EAPI void elm_widget_signal_callback_add(Evas_Object *obj, const char *emission, const char *source, void (*func) (void *data, Evas_Object *o, const char *emission, const char *source), void *data);
+EAPI void *elm_widget_signal_callback_del(Evas_Object *obj, const char *emission, const char *source, void (*func) (void *data, Evas_Object *o, const char *emission, const char *source));
EAPI void elm_widget_can_focus_set(Evas_Object *obj, Eina_Bool can_focus);
EAPI Eina_Bool elm_widget_can_focus_get(const Evas_Object *obj);
EAPI Eina_Bool elm_widget_child_can_focus_get(const Evas_Object *obj);
-EAPI Eina_List *elm_widget_can_focus_child_list_get(const Evas_Object *obj);
EAPI void elm_widget_tree_unfocusable_set(Evas_Object *obj, Eina_Bool tree_unfocusable);
EAPI Eina_Bool elm_widget_tree_unfocusable_get(const Evas_Object *obj);
EAPI void elm_widget_highlight_ignore_set(Evas_Object *obj, Eina_Bool ignore);
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);
/**
EAPI void elm_widget_type_register(const char **ptr);
EAPI void elm_widget_type_unregister(const char **ptr);
EAPI Eina_Bool elm_widget_is_check(const Evas_Object *obj);
-EAPI Eina_Bool elm_widget_type_check(const Evas_Object *obj, const char *type, const char *func);
+EAPI Eina_Bool elm_widget_type_check(const Evas_Object *obj, const char *type);
EAPI Eina_List *elm_widget_stringlist_get(const char *str);
EAPI void elm_widget_stringlist_free(Eina_List *list);
EAPI void elm_widget_focus_hide_handle(Evas_Object *obj);
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);
#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()
*/
*/
#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 { \
if (!elm_widget_is_check(obj)) return
#define ELM_CHECK_WIDTYPE(obj, widtype) \
- if (!obj || !elm_widget_type_check((obj), (widtype), __func__)) return
+ if (!elm_widget_type_check((obj), (widtype))) return
#define ELM_WIDGET_ITEM_WIDTYPE_CHECK_OR_RETURN(it, ...) \
ELM_WIDGET_ITEM_CHECK_OR_RETURN((Elm_Widget_Item *)it, __VA_ARGS__); \
#define ELM_WIDGET_ITEM_WIDTYPE_CHECK_OR_GOTO(it, label) \
ELM_WIDGET_ITEM_CHECK_OR_GOTO((Elm_Widget_Item *)it, label); \
- if (!elm_widget_type_check((it->base.widget), (widtype), __func__)) goto label;
+ if (!elm_widget_type_check((it->base.widget), (widtype))) goto label;
#define ELM_WIDGET_STANDARD_SETUP(wdat, wdtype, par, evas, ob, ret) \
do { \
/** 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!) */
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*);
_elm_widget_top_win_focused_set(win->win_obj, EINA_TRUE);
if (win->show_count == 1)
{
- elm_object_focus_set(win->win_obj, EINA_TRUE);
+ elm_object_focus(win->win_obj);
win->show_count++;
}
else
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;
#define FALLBACK_TRY(engine) \
if (!win->ee) \
- do { \
- CRITICAL(engine " engine creation failed. Trying default."); \
- win->ee = ecore_evas_new(NULL, 0, 0, 1, 1, NULL); \
- if (win->ee) \
- elm_engine_set(ecore_evas_engine_name_get(win->ee)); \
+ do { \
+ CRITICAL(engine " engine creation failed. Trying software X11."); \
+ win->ee = ecore_evas_software_x11_new(NULL, 0, 0, 0, 1, 1); \
+ elm_engine_set(ELM_SOFTWARE_X11); \
} while (0)
#define ENGINE_COMPARE(name) (!strcmp(_elm_config->engine, name))
switch (type)
{
case ELM_WIN_INLINED_IMAGE:
- if (!parent) break;
- {
- Evas *e = evas_object_evas_get(parent);
- Ecore_Evas *ee;
- if (!e) break;
- ee = ecore_evas_ecore_evas_get(e);
- if (!ee) break;
- win->img_obj = ecore_evas_object_image_new(ee);
- if (!win->img_obj) break;
- win->ee = ecore_evas_object_ecore_evas_get(win->img_obj);
- if (win->ee)
- {
- _win_inlined_image_set(win);
- break;
- }
- evas_object_del(win->img_obj);
- win->img_obj = NULL;
- }
+ {
+ if (parent)
+ {
+ Evas *e = evas_object_evas_get(parent);
+ if (e)
+ {
+ Ecore_Evas *ee = ecore_evas_ecore_evas_get(e);
+ if (ee)
+ {
+ win->img_obj = ecore_evas_object_image_new(ee);
+ if (win->img_obj)
+ {
+ win->ee = ecore_evas_object_ecore_evas_get(win->img_obj);
+ if (win->ee)
+ {
+ _win_inlined_image_set(win);
+ }
+ else
+ {
+ evas_object_del(win->img_obj);
+ win->img_obj = NULL;
+ }
+ }
+ }
+ }
+ }
+ }
break;
default:
if (ENGINE_COMPARE(ELM_SOFTWARE_X11))
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))
{
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 |
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)
{
if (cur->use_engine)
{
#ifdef HAVE_ELEMENTARY_X
- struct _Cursor_Id *cur_id;
+ struct _Cursor_Id cur_search, *cur_id;
+ cur_search.name = cur->cursor_name;
cur_id = bsearch(&(cur->cursor_name), _cursors, _cursors_count,
sizeof(struct _Cursor_Id), _elm_cursor_strcmp);
#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
/* smart code here */
/* NOTE: Do not merge upstream for the if (sd->edje) { } statements
But wonder whether the edje resource icons have no problem. */
- if (!sd->edje) goto out;
-
- if (sd->prev) evas_object_del(sd->prev);
- pclip = evas_object_clip_get(sd->obj);
- if (sd->obj) sd->prev = sd->obj;
- sd->obj = evas_object_image_add(evas_object_evas_get(obj));
- evas_object_event_callback_add(sd->obj, EVAS_CALLBACK_IMAGE_PRELOADED,
- _preloaded, sd);
- evas_object_smart_member_add(sd->obj, obj);
- if (sd->prev) evas_object_smart_member_add(sd->prev, obj);
- evas_object_image_scale_hint_set(sd->obj, EVAS_IMAGE_SCALE_HINT_STATIC);
- evas_object_clip_set(sd->obj, pclip);
+ if (sd->edje)
+ {
+ if (sd->prev) evas_object_del(sd->prev);
+ pclip = evas_object_clip_get(sd->obj);
+ if (sd->obj) sd->prev = sd->obj;
+ sd->obj = evas_object_image_add(evas_object_evas_get(obj));
+ evas_object_event_callback_add(sd->obj,
+ EVAS_CALLBACK_IMAGE_PRELOADED,
+ _preloaded, sd);
+ evas_object_smart_member_add(sd->obj, obj);
+ if (sd->prev) evas_object_smart_member_add(sd->prev, obj);
+ evas_object_image_scale_hint_set(sd->obj,
+ EVAS_IMAGE_SCALE_HINT_STATIC);
+ evas_object_clip_set(sd->obj, pclip);
- sd->edje = EINA_FALSE;
-out:
+ sd->edje = EINA_FALSE;
+ }
if (!sd->size)
evas_object_image_load_size_set(sd->obj, sd->size, sd->size);
evas_object_image_preload(sd->obj, EINA_FALSE);
if (evas_object_image_load_error_get(sd->obj) != EVAS_LOAD_ERROR_NONE)
{
- ERR("Things are going bad for some random " FMT_SIZE_T " byte chunk of memory (%p)", size, sd->obj);
+ ERR("Things are going bad for some random %zu byte chunk of memory (%p)", size, sd->obj);
return EINA_FALSE;
}
_smart_reconfigure(sd);
#include <Elementary.h>
#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, ...) \
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);
_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);
if (ominh < 1) ominh = 10; /* at least it is noticeable */
edje_object_size_min_restricted_calc(tt->tooltip, &tw, &th, ominw, ominh);
- TTDBG("TTSIZE: tw=%d,th=%d,ominw=%d,ominh=%d\n", tw, th, ominw, ominh);
if (tt->tt_win)
- elm_win_screen_size_get(elm_object_top_widget_get(tt->owner), NULL, NULL, &cw, &ch);
+ elm_win_screen_size_get(elm_object_top_widget_get(tt->owner), &cw, &ch, NULL, NULL);
if (!cw)
evas_output_size_get(tt->tt_evas ?: tt->evas, &cw, &ch);
- TTDBG("SCREEN: cw=%d,ch=%d\n", cw, ch);
evas_object_geometry_get(tt->eventarea, &ox, &oy, &ow, &oh);
- TTDBG("EVENTAREA: ox=%d,oy=%d,ow=%d,oh=%d\n", ox, oy, ow, oh);
if (tt->tt_win)
{
int x, y;
- Evas_Object *win = elm_object_top_widget_get(tt->owner);
#ifdef HAVE_ELEMENTARY_X
- Ecore_X_Window xwin = elm_win_xwindow_get(win);
ecore_x_pointer_xy_get(xwin, &px, &py);
#endif
- elm_win_screen_position_get(win, &x, &y);
+ elm_win_screen_position_get(elm_object_top_widget_get(tt->owner), &x, &y);
ox += x;
- if (px) px += x;
oy += y;
- if (py) py += y;
}
else
evas_pointer_canvas_xy_get(tt->evas, &px, &py);
- TTDBG("POINTER: px=%d,py=%d\n", px, py);
+
inside_eventarea = ((px >= ox) && (py >= oy) &&
(px <= ox + ow) && (py <= oy + oh));
if (inside_eventarea)
{
- /* try to position bottom right corner at pointer */
tx = px - tw;
ty = py - th;
- TTDBG("INIT (EVENTAREA)\n");
}
else
{
- /* try centered on middle of eventarea */
tx = ox + (ow / 2) - (tw / 2);
if (0 > (th - oy - oh)) ty = oy + th;
else ty = oy - oh;
- TTDBG("INIT (INTERPRETED)\n");
}
- TTDBG("ADJUST (POINTER): tx=%d,ty=%d\n", tx, ty);
+
if (tx < 0)
{
- /* if we're offscreen, try to flip over the Y axis */
if (abs((tx + 2 * tw) - cw) < abs(tx))
tx += tw;
}
- else if ((tx > px) && (px > tw))
+ else if ((tx > px) && (px > tx))
{
if (tx + tw < cw)
tx += tw;
}
if (ty < 0)
{
- /* if we're offscreen, try to flip over the X axis */
if (abs((ty + 2 * th) - ch) < abs(ty))
ty += th;
}
- else if ((ty > py) && (py > th))
+ else if ((ty > py) && (py > ty))
{
if (ty + th < ch)
ty += th;
}
- TTDBG("ADJUST (FLIP): tx=%d,ty=%d\n", tx, ty);
if (inside_eventarea)
{
if ((tx == px) && ((tx + tw + tt->pad.x < cw) || (tx + tw > cw))) tx += tt->pad.x;
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;
}
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;
}
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);
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
#endif
ext_mod->cnpinit(data,obj,event_info);
elm_cbhm_helper_init(obj);
- if (ext_mod->cnp_mode != ELM_CNP_MODE_MARKUP)
+ if (ext_mod->textonly)
elm_cbhm_send_raw_data("show0");
else
elm_cbhm_send_raw_data("show1");
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);
{
if (!elm_entry_is_empty(obj))
{
- added_item = elm_ctxpopup_item_append(ext_mod->popup, "Select", NULL, _select, obj );
- added_item = elm_ctxpopup_item_append(ext_mod->popup, "Select All", NULL, _select_all, obj );
+ elm_ctxpopup_item_append(ext_mod->popup, "Select", NULL, _select, obj );
+ elm_ctxpopup_item_append(ext_mod->popup, "Select All", NULL, _select_all, obj );
}
}
-
-#ifdef HAVE_ELEMENTARY_X
- if (cbhm_count)
-#else
if (1) // need way to detect if someone has a selection
-#endif
{
if (ext_mod->editable)
- added_item = elm_ctxpopup_item_append(ext_mod->popup, "Paste", NULL, _paste, obj );
+ elm_ctxpopup_item_append(ext_mod->popup, "Paste", NULL, _paste, obj );
}
//elm_ctxpopup_item_append(wd->ctxpopup, NULL, "Selectall",_select_all, obj );
// start for cbhm
icon = elm_icon_add(ext_mod->popup);
snprintf(buf, sizeof(buf), "%s/images/copypaste_icon_clipboard.png", PACKAGE_DATA_DIR);
elm_icon_file_set(icon, buf, NULL);
- added_item = elm_ctxpopup_item_append(ext_mod->popup, NULL, icon, _clipboard_menu, obj);
+ elm_ctxpopup_item_append(ext_mod->popup, NULL, icon, _clipboard_menu, obj);
//elm_ctxpopup_item_append(ext_mod->popup, "More", NULL, _clipboard_menu, obj );
}
// end for cbhm
{
if (ext_mod->have_selection)
{
- added_item = elm_ctxpopup_item_append(ext_mod->popup, "Copy", NULL, _copy, obj );
+ elm_ctxpopup_item_append(ext_mod->popup, "Copy", NULL, _copy, obj );
if (ext_mod->editable)
- added_item = elm_ctxpopup_item_append(ext_mod->popup, "Cut", NULL, _cut, obj );
-#ifdef HAVE_ELEMENTARY_X
- if (ext_mod->editable && cbhm_count)
-#else
+ elm_ctxpopup_item_append(ext_mod->popup, "Cut", NULL, _cut, obj );
if (ext_mod->editable)
-#endif
- added_item = elm_ctxpopup_item_append(ext_mod->popup, "Paste", NULL, _paste, obj );
+ elm_ctxpopup_item_append(ext_mod->popup, "Paste", NULL, _paste, obj );
}
else
{
_cancel(obj,ext_mod->popup,NULL);
if (!elm_entry_is_empty(obj))
{
- added_item = elm_ctxpopup_item_append(ext_mod->popup, "Select", NULL, _select, obj );
- added_item = elm_ctxpopup_item_append(ext_mod->popup, "Select All", NULL, _select_all, obj );
+ elm_ctxpopup_item_append(ext_mod->popup, "Select", NULL, _select, obj );
+ elm_ctxpopup_item_append(ext_mod->popup, "Select All", NULL, _select_all, obj );
}
-#ifdef HAVE_ELEMENTARY_X
- if (cbhm_count)
-#else
if (1) // need way to detect if someone has a selection
-#endif
{
if (ext_mod->editable)
- added_item = elm_ctxpopup_item_append(ext_mod->popup, "Paste", NULL, _paste, obj );
+ elm_ctxpopup_item_append(ext_mod->popup, "Paste", NULL, _paste, obj );
}
}
// start for cbhm
icon = elm_icon_add(ext_mod->popup);
snprintf(buf, sizeof(buf), "%s/images/copypaste_icon_clipboard.png", PACKAGE_DATA_DIR);
elm_icon_file_set(icon, buf, NULL);
- added_item = elm_ctxpopup_item_append(ext_mod->popup, NULL, icon, _clipboard_menu, obj);
+ elm_ctxpopup_item_append(ext_mod->popup, NULL, icon, _clipboard_menu, obj);
//elm_ctxpopup_item_append(ext_mod->popup, "More", NULL, _clipboard_menu, obj );
}
// end for cbhm
}
EINA_LIST_FOREACH(ext_mod->items, l, it)
{
- added_item = elm_ctxpopup_item_append(ext_mod->popup, it->label, NULL, _item_clicked, it );
+ elm_ctxpopup_item_append(ext_mod->popup, it->label, NULL, _item_clicked, it );
}
- if (ext_mod->popup && added_item)
+ if (ext_mod->popup)
{
elm_object_scroll_freeze_push(ext_mod->popup);
_ctxpopup_position(obj);
#endif
ext_mod->cnpinit(data,obj,event_info);
elm_cbhm_helper_init(obj);
- if (ext_mod->cnp_mode != ELM_CNP_MODE_MARKUP)
+ if (ext_mod->textonly)
elm_cbhm_send_raw_data("show0");
else
elm_cbhm_send_raw_data("show1");
static void
_clipboard_menu(void *data, Evas_Object *obj, void *event_info)
{
- // start for cbhm
+ // start for cbhm
#ifdef HAVE_ELEMENTARY_X
- ecore_x_selection_secondary_set(elm_win_xwindow_get(obj), "",1);
+ ecore_x_selection_secondary_set(elm_win_xwindow_get(obj), "",1);
#endif
- ext_mod->cnpinit(data,obj,event_info);
- elm_cbhm_helper_init(obj);
- if (ext_mod->cnp_mode != ELM_CNP_MODE_MARKUP)
- elm_cbhm_send_raw_data("show0");
- else
- elm_cbhm_send_raw_data("show1");
- evas_object_hide(ext_mod->popup);
- // end for cbhm
+ ext_mod->cnpinit(data,obj,event_info);
+ elm_cbhm_helper_init(obj);
+ if (ext_mod->textonly)
+ elm_cbhm_send_raw_data("show0");
+ else
+ elm_cbhm_send_raw_data("show1");
+ evas_object_hide(ext_mod->popup);
+ // end for cbhm
}
static void