Added proper tree item support in GenlistGroupItem. 16/54916/1
authorEugene Kurzberg <i.kurtsberg@samsung.com>
Fri, 18 Dec 2015 10:45:22 +0000 (12:45 +0200)
committerEugene Kurzberg <i.kurtsberg@samsung.com>
Fri, 18 Dec 2015 10:45:22 +0000 (12:45 +0200)
Change-Id: I9f08936bc2ca82ec4c1e3e097cc96928f2e3e406
Signed-off-by: Eugene Kurzberg <i.kurtsberg@samsung.com>
lib-common/inc/Ui/GenlistGroupItem.h
lib-common/inc/Ui/GenlistItem.h
lib-common/src/Ui/GenlistGroupItem.cpp
lib-common/src/Ui/GenlistItem.cpp
lib-contact/inc/Contacts/Input/ContactFieldItem.h
lib-contact/src/Contacts/Input/ContactFieldItem.cpp

index ebead8f..7c38e07 100644 (file)
@@ -53,7 +53,12 @@ namespace Ui
                /**
                 * @see GenlistItem::isGroupItem()
                 */
-               virtual bool isGroupItem() const;
+               virtual bool isGroupItem() const override;
+
+               /**
+                * @return Whether subitems are shown.
+                */
+               bool isExpanded() const;
 
                /**
                 * @return Group item of the next group or nullptr if none.
index 18caf16..e996771 100644 (file)
@@ -51,6 +51,11 @@ namespace Ui
                virtual bool isGroupItem() const;
 
                /**
+                * @return Item type.
+                */
+               Elm_Genlist_Item_Type getType() const;
+
+               /**
                 * @return Genlist object item.
                 */
                Elm_Object_Item *getObjectItem() const;
index 3012917..4fea7a6 100644 (file)
@@ -60,6 +60,20 @@ bool GenlistGroupItem::isGroupItem() const
        return true;
 }
 
+bool GenlistGroupItem::isExpanded() const
+{
+       Elm_Object_Item *item = getObjectItem();
+       if (!item) {
+               return false;
+       }
+
+       if (getType() == ELM_GENLIST_ITEM_TREE) {
+               return elm_genlist_item_expanded_get(item);
+       }
+
+       return true;
+}
+
 GenlistGroupItem *GenlistGroupItem::getNextGroupItem() const
 {
        GenlistItem *item = m_LastItem ? m_LastItem->getNextItem() : getNextItem();
@@ -92,7 +106,7 @@ void GenlistGroupItem::insertSubItem(GenlistItem *item, GenlistItem *sibling,
        }
 
        Genlist *genlist = getParent();
-       if (genlist) {
+       if (genlist && isExpanded()) {
                genlist->insert(item, this, sibling, position);
        } else {
                auto pos = m_ItemsCache.end();
@@ -116,7 +130,9 @@ void GenlistGroupItem::insertSubItem(GenlistItem *item, GenlistItem *sibling,
 
 void GenlistGroupItem::onInserted()
 {
-       insertSubItems();
+       if (isExpanded()) {
+               insertSubItems();
+       }
 }
 
 void GenlistGroupItem::onPop()
index 48f8554..6a0957c 100644 (file)
@@ -61,6 +61,11 @@ bool GenlistItem::isGroupItem() const
        return false;
 }
 
+Elm_Genlist_Item_Type GenlistItem::getType() const
+{
+       return m_ItemType;
+}
+
 Elm_Object_Item *GenlistItem::getObjectItem() const
 {
        return m_Item;
index 1d805cd..4ad6d79 100644 (file)
@@ -70,6 +70,11 @@ namespace Contacts
                         */
                        virtual Evas_Object *getContent(Evas_Object *parent, const char *part) override;
 
+                       /**
+                        * @see GenlistItem::onInserted()
+                        */
+                       virtual void onInserted() override;
+
                private:
                        void onRemovePressed(Evas_Object *button, void *eventInfo);
 
index 285a7e6..cb85aa3 100644 (file)
@@ -73,6 +73,11 @@ Evas_Object *ContactFieldItem::getContent(Evas_Object *parent, const char *part)
        }
 }
 
+void ContactFieldItem::onInserted()
+{
+       elm_genlist_item_expanded_set(getObjectItem(), EINA_TRUE);
+}
+
 void ContactFieldItem::onRemovePressed(Evas_Object *button, void *eventInfo)
 {
        if (m_OnRemove) {