Added required functionality to SearchItem in Contacts ListView. 27/70427/3
authorEugene Kurzberg <i.kurtsberg@samsung.com>
Thu, 19 May 2016 07:57:44 +0000 (10:57 +0300)
committerAleksandr Sapozhnik <a.sapozhnik@samsung.com>
Thu, 19 May 2016 18:48:32 +0000 (11:48 -0700)
Change-Id: I87f8447bf857e4552245cb14a739f4a72bb336fe
Signed-off-by: Eugene Kurzberg <i.kurtsberg@samsung.com>
lib-contacts/inc/Contacts/List/SearchItem.h
lib-contacts/src/Contacts/List/SearchItem.cpp

index f34a6bf3c9e026df1f3236eb02345430fa89f399..cf2124b495a9dc0ceae00da43679017a8210a920 100644 (file)
@@ -19,6 +19,7 @@
 #define CONTACTS_LIST_CONTACT_SEARCH_ITEM_H
 
 #include "Ui/GenlistItem.h"
+#include <string>
 
 namespace Contacts
 {
@@ -33,21 +34,28 @@ namespace Contacts
                        /**
                         * @brief Entry change callback.
                         */
-                       typedef std::function<void()> ChangeCallback;
+                       typedef std::function<void(const char *)> ChangeCallback;
 
                        /**
                         * @brief Set entry changed callback
                         */
                        void setChangeCallback(ChangeCallback callback);
 
+                       /**
+                        * @brief Clear search query.
+                        */
+                       void clear();
+
                private:
                        virtual Elm_Genlist_Item_Class *getItemClass() const override;
                        virtual Evas_Object *getContent(Evas_Object *parent, const char *part) override;
 
                        void onDonePressed(Evas_Object *entry, void *eventInfo);
                        void onChanged(Evas_Object *entry, void *eventInfo);
+                       void notifyChange();
 
                        ChangeCallback m_OnChanged;
+                       std::string m_Text;
                };
        }
 }
index 9c59ddbfeecbe869fdda8512a8439bc18f164f2e..6ed89598bf723057c44f7eaaf572f57965a18457 100644 (file)
 
 using namespace Contacts::List;
 
+void SearchItem::setChangeCallback(ChangeCallback callback)
+{
+       m_OnChanged = std::move(callback);
+}
+
+void SearchItem::clear()
+{
+       Evas_Object *layout = elm_object_item_part_content_get(getObjectItem(), "elm.swallow.content");
+       Ui::Editfield *editfield = static_cast<Ui::Editfield *>(Ui::Control::getControl(layout));
+
+       if (editfield) {
+               elm_entry_entry_set(editfield->getEntry(), "");
+       } else {
+               m_Text.clear();
+               notifyChange();
+       }
+}
+
 Evas_Object *SearchItem::getContent(Evas_Object *parent, const char *part)
 {
        Ui::Editfield *searchField = Ui::Editfield::create(parent, "IDS_PB_NPBODY_SEARCH");
 
        Evas_Object *entry = searchField->getEntry();
+       elm_entry_entry_set(entry, m_Text.c_str());
        elm_entry_input_panel_return_key_autoenabled_set(entry, EINA_TRUE);
-       elm_entry_input_panel_return_key_type_set(entry, ELM_INPUT_PANEL_RETURN_KEY_TYPE_DONE);
+       elm_entry_input_panel_return_key_type_set(entry, ELM_INPUT_PANEL_RETURN_KEY_TYPE_SEARCH);
        evas_object_smart_callback_add(entry, "changed",
                        makeCallback(&SearchItem::onChanged), this);
        evas_object_smart_callback_add(entry, "activated",
@@ -42,19 +61,22 @@ Elm_Genlist_Item_Class *SearchItem::getItemClass() const
        return &itc;
 }
 
-void SearchItem::setChangeCallback(ChangeCallback callback)
-{
-       m_OnChanged = std::move(callback);
-}
-
 void SearchItem::onDonePressed(Evas_Object *entry, void *eventInfo)
 {
        elm_object_focus_set(entry, EINA_FALSE);
 }
 
 void SearchItem::onChanged(Evas_Object *entry, void *eventInfo)
+{
+       m_Text = elm_entry_entry_get(entry);
+       notifyChange();
+}
+
+void SearchItem::notifyChange()
 {
        if (m_OnChanged) {
-               m_OnChanged();
+               char *text = elm_entry_markup_to_utf8(m_Text.c_str());
+               m_OnChanged(text);
+               free(text);
        }
 }