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