TizenRefApp-6913 Move contact Name, Phonetic name, Company and Favorite button into... 00/84100/2
authorNataliia Sydorchuk <n.sydorchuk@samsung.com>
Wed, 17 Aug 2016 08:10:06 +0000 (11:10 +0300)
committerNataliia Sydorchuk <n.sydorchuk@samsung.com>
Wed, 17 Aug 2016 08:10:06 +0000 (11:10 +0300)
Change-Id: I93036103c902b5e72cca96375ff00f23784b84c6
Signed-off-by: Nataliia Sydorchuk <n.sydorchuk@samsung.com>
lib-apps-common/inc/Ui/NaviframePage.h
lib-apps-common/inc/Ui/NavigatorPage.h
lib-apps-common/src/Ui/NaviframePage.cpp
lib-contacts/inc/Contacts/Details/BasicInfoItem.h
lib-contacts/inc/Contacts/Details/DetailsView.h
lib-contacts/res/details/edje/ContactsDetailsItemLayout.h
lib-contacts/res/details/edje/ContactsDetailsItemLayoutMetrics.h [deleted file]
lib-contacts/res/details/edje/contacts-details-item-layout.edc
lib-contacts/src/Contacts/Details/ActionFieldItem.cpp
lib-contacts/src/Contacts/Details/BasicInfoItem.cpp
lib-contacts/src/Contacts/Details/DetailsView.cpp

index 7e1c18a..6b26b7d 100644 (file)
@@ -33,6 +33,11 @@ namespace Ui
                virtual void setTitle(const char *title) override;
 
                /**
+                * @see NavigatorPage::setSubtitle()
+                */
+               virtual void setSubtitle(const char *subtitle) override;
+
+               /**
                 * @see NavigatorPage::setTitleVisibility()
                 */
                virtual void setTitleVisibility(bool isVisible) override;
index ff3331c..2daae29 100644 (file)
@@ -52,6 +52,12 @@ namespace Ui
                virtual void setTitle(const char *title) = 0;
 
                /**
+                * @brief Set page subtitle.
+                * @param[in]   subtitle    Page subtitle
+                */
+               virtual void setSubtitle(const char *subtitle) { };
+
+               /**
                 * @brief Set whether to show the page title.
                 * @param[in]   isVisible   Whether page title is visible
                 */
index dd06c63..bfd79e8 100644 (file)
@@ -34,6 +34,11 @@ void NaviframePage::setTitle(const char *title)
        setTitleVisibility(isEnabled);
 }
 
+void NaviframePage::setSubtitle(const char *subtitle)
+{
+       elm_object_item_translatable_part_text_set(m_NaviItem, "elm.text.subtitle", subtitle);
+}
+
 void NaviframePage::setTitleVisibility(bool isVisible)
 {
        elm_naviframe_item_title_enabled_set(m_NaviItem, isVisible, EINA_TRUE);
index 241e942..2570a86 100644 (file)
 #include <contacts.h>
 #include <string>
 
+namespace Ui
+{
+       class NavigatorPage;
+}
+
 namespace Contacts
 {
        namespace Model
@@ -46,10 +51,6 @@ namespace Contacts
                class BasicInfoItem : public Ui::GenItem
                {
                public:
-                       /**
-                        * @brief Back button pressed callback
-                        */
-                       typedef std::function<void()> BackCallback;
 
                        /**
                         * @brief Create basic info item.
@@ -64,10 +65,10 @@ namespace Contacts
                        void setSelectMode(Ux::SelectMode mode);
 
                        /**
-                        * @brief Set "back" button callback.
-                        * @param[in]   callback    "back" button callback
+                        * @brief Show title.
+                        * @param[in]   page    The page
                         */
-                       void setBackCallback(BackCallback callback);
+                       void showTitle(Ui::NavigatorPage *page);
 
                protected:
                        /**
@@ -76,21 +77,11 @@ namespace Contacts
                        virtual Elm_Genlist_Item_Class *getItemClass() const override;
 
                        /**
-                        * @see GenItem::getText()
-                        */
-                       virtual char *getText(Evas_Object *parent, const char *part) override;
-
-                       /**
                         * @see GenItem::getContent()
                         */
                        virtual Evas_Object *getContent(Evas_Object *parent, const char *part) override;
 
                        /**
-                        * @see GenItem::getState()
-                        */
-                       virtual Eina_Bool getState(Evas_Object *parent, const char *part) override;
-
-                       /**
                         * @see GenItem::onSelected()
                         */
                        virtual void onSelected() override;
@@ -101,14 +92,15 @@ namespace Contacts
                        virtual bool onLongpressed() override;
 
                private:
-                       std::string formatCompanyString();
-                       Evas_Object *createBackButton(Evas_Object *parent);
+                       std::string formatAdditionalInfoString();
                        Evas_Object *createFavButton(Evas_Object *parent);
 
-                       void onBackPressed(Evas_Object *button, void *eventInfo);
                        void onFavChanged(Evas_Object *check, void *eventInfo);
                        void onFieldUpdated(Model::ContactField &field, contacts_changed_e change);
 
+                       Ui::NavigatorPage *m_Page;
+                       Evas_Object *m_FavButton;
+
                        Model::Contact &m_Contact;
                        Model::ContactBoolField *m_Favorite;
 
@@ -122,8 +114,10 @@ namespace Contacts
                        Model::ContactTextField &m_CompanyName;
                        Model::ContactTextField &m_JobTitle;
 
+                       Model::ContactObject &m_Nickname;
+                       Model::ContactTextField &m_NicknameText;
+
                        Ux::SelectMode m_SelectMode;
-                       BackCallback m_OnBackPressed;
 
                        App::AppControl m_Request;
                };
index 24613a9..fce7efd 100644 (file)
@@ -61,6 +61,7 @@ namespace Contacts
                private:
                        virtual Evas_Object *onCreate(Evas_Object *parent) override;
                        virtual void onCreated() override;
+                       virtual void onPageAttached(Ui::NavigatorPage *page) override;
                        virtual void onMenuPressed() override;
 
                        virtual void onSelectAllInsert(Ui::GenItem *item) override;
index ee1e294..3fdef51 100644 (file)
 #define CONTACTS_DETAILS_ITEM_LAYOUT_H
 
 #include "ContactsDetailsPath.h"
-#include "../../../../lib-common/res/details/edje/DetailsItemLayout.h"
-
-#define CONTACTS_DETAILS_ITEM_STYLE      "contacts_details_item"
-
-#define PART_FAV_BTN            "swallow.favorite"
-
-#define PART_PHONETIC_NAME      "text.phonetic_name"
-#define PART_COMPANY            "text.company"
 
 #define GROUP_ICON_CALL         "icon_call"
 #define GROUP_ICON_MESSAGE      "icon_message"
diff --git a/lib-contacts/res/details/edje/ContactsDetailsItemLayoutMetrics.h b/lib-contacts/res/details/edje/ContactsDetailsItemLayoutMetrics.h
deleted file mode 100644 (file)
index 975c367..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Copyright (c) 2015-2016 Samsung Electronics Co., Ltd All Rights Reserved
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-#ifndef CONTACTS_DETAILS_ITEM_LAYOUT_METRICS_H
-#define CONTACTS_DETAILS_ITEM_LAYOUT_METRICS_H
-
-#include "../../../../lib-common/res/details/edje/DetailsItemLayoutMetrics.h"
-
-#define FAV_BTN_WH 80
-#define FAV_BTN_T BACK_BTN_T
-#define FAV_BTN_R 17
-
-#define PHONETIC_NAME_H 48
-#define PHONETIC_NAME_TEXT_SIZE 36
-
-#define COMPANY_H 48
-#define COMPANY_TEXT_SIZE 36
-
-#endif /* CONTACTS_DETAILS_ITEM_LAYOUT_METRICS_H */
index 32701d4..7e22451 100644 (file)
  */
 
 #include "ContactsDetailsItemLayout.h"
-#include "ContactsDetailsItemLayoutMetrics.h"
 
 #include "../../../../lib-apps-common/res/apps-common/edje/apps-common-utils.edc"
 #include "../../../../lib-common/res/details/edje/details-item-layout.edc"
 
-styles {
-       style {
-               name: "phonetic_name_style";
-               base: "font=Tizen:style=Light font_size="PHONETIC_NAME_TEXT_SIZE" align=center wrap=mixed color=#fafafa ellipsis=1.0";
-       }
-       style {
-               name: "company_style";
-               base: "font=Tizen:style=Light font_size="COMPANY_TEXT_SIZE" align=center wrap=mixed color=#fafafa ellipsis=1.0";
-       }
-}
-
 collections
 {
        base_scale: 2.6;
@@ -44,126 +32,4 @@ collections
                        "touch_icon_normal", "touch_icon_pressed");
        IMAGE_WITH_COLOR_AND_TOUCH(GROUP_ICON_INTERNET, DETAILS_ICON_INTERNET,
                        "touch_icon_normal", "touch_icon_pressed");
-
-       group {
-               name: "elm/genlist/item/"CONTACTS_DETAILS_ITEM_STYLE"/default";
-               alias: "elm/genlist/item_compress/"CONTACTS_DETAILS_ITEM_STYLE"/default";
-               alias: "elm/genlist/tree/"CONTACTS_DETAILS_ITEM_STYLE"/default";
-               alias: "elm/genlist/tree_compress/"CONTACTS_DETAILS_ITEM_STYLE"/default";
-               inherit: "elm/genlist/item/"DETAILS_ITEM_STYLE"/default";
-
-               data.item: "texts" PART_NAME" "PART_PHONETIC_NAME" "PART_COMPANY;
-               data.item: "contents" PART_BACK_BTN" "PART_FAV_BTN" "PART_THUMBNAIL;
-               data.item: "states" PART_PHONETIC_NAME" "PART_COMPANY;
-
-               parts {
-                       spacer { "spacer.right_top"; scale;
-                               desc { "default";
-                                       min: FAV_BTN_R FAV_BTN_T;
-                                       align: 1.0 0.0;
-                                       rel1.relative: 1.0 0.0;
-                                       rel2.relative: 1.0 0.0;
-                               }
-                       }
-                       swallow { PART_FAV_BTN; scale;
-                               desc { "default";
-                                       min: FAV_BTN_WH FAV_BTN_WH;
-                                       align: 1.0 0.0;
-                                       rel1 { relative: 0.0 1.0; to: "spacer.right_top"; }
-                                       rel2 { relative: 0.0 1.0; to: "spacer.right_top"; }
-                               }
-                       }
-                       spacer { "spacer.phonetic_name_top"; scale;
-                               desc { "default";
-                                       align: 0.5 0.0;
-                                       rel1 { relative: 0.0 1.0; to_y: PART_NAME; }
-                                       rel2 { relative: 1.0 1.0; to_y: PART_NAME; }
-                               }
-                               desc { "visible";
-                                       inherit: "default";
-                                       min: 0 TEXT_T;
-                               }
-                       }
-                       textblock { PART_PHONETIC_NAME; scale;
-                               desc { "default";
-                                       max: 0 0;
-                                       align: 0.5 0.0;
-                                       rel1 { relative: 1.0 1.0; to_x: "spacer.text_left"; to_y: "spacer.phonetic_name_top"; }
-                                       rel2 { relative: 0.0 1.0; to_x: "spacer.text_right"; }
-                                       text {
-                                               align: 0.5 0.0;
-                                               style: "phonetic_name_style";
-                                       }
-                               }
-                               desc { "visible";
-                                       inherit: "default";
-                                       min: 0 PHONETIC_NAME_H;
-                                       max: -1 PHONETIC_NAME_H;
-                               }
-                       }
-                       spacer { "spacer.company_top"; scale;
-                               desc { "default";
-                                       align: 0.5 0.0;
-                                       rel1 { relative: 0.0 1.0; to_y: PART_PHONETIC_NAME; }
-                                       rel2 { relative: 1.0 1.0; to_y: PART_PHONETIC_NAME; }
-                               }
-                               desc { "visible";
-                                       inherit: "default";
-                                       min: 0 TEXT_T;
-                               }
-                       }
-                       textblock { PART_COMPANY; scale;
-                               desc { "default";
-                                       max: 0 0;
-                                       align: 0.5 0.0;
-                                       rel1 { relative: 1.0 1.0; to_x: "spacer.text_left"; to_y: "spacer.company_top"; }
-                                       rel2 { relative: 0.0 1.0; to_x: "spacer.text_right"; }
-                                       text {
-                                               align: 0.5 0.0;
-                                               style: "company_style";
-                                       }
-                               }
-                               desc { "visible";
-                                       inherit: "default";
-                                       min: 0 COMPANY_H;
-                                       max: -1 COMPANY_H;
-                               }
-                       }
-                       spacer { "spacer.bottom"; scale;
-                               desc { "default";
-                                       rel1 { relative: 0.0 1.0; to_y: PART_COMPANY; }
-                               }
-                       }
-               }
-               programs {
-                       program {
-                               signal: "elm,state,"PART_PHONETIC_NAME",active";
-                               source: "elm";
-                               action: STATE_SET "visible" 0.0;
-                               target: "spacer.phonetic_name_top";
-                               target: PART_PHONETIC_NAME;
-                       }
-                       program {
-                               signal: "elm,state,"PART_PHONETIC_NAME",passive";
-                               source: "elm";
-                               action: STATE_SET "default" 0.0;
-                               target: "spacer.phonetic_name_top";
-                               target: PART_PHONETIC_NAME;
-                       }
-                       program {
-                               signal: "elm,state,"PART_COMPANY",active";
-                               source: "elm";
-                               action: STATE_SET "visible" 0.0;
-                               target: "spacer.company_top";
-                               target: PART_COMPANY;
-                       }
-                       program {
-                               signal: "elm,state,"PART_COMPANY",passive";
-                               source: "elm";
-                               action: STATE_SET "default" 0.0;
-                               target: "spacer.company_top";
-                               target: PART_COMPANY;
-                       }
-               }
-       }
 }
index bc90e7e..3990f9a 100644 (file)
@@ -25,7 +25,7 @@
 #include "Utils/Callback.h"
 
 #include "ContactsDetailsItemLayout.h"
-#include "ContactsDetailsItemLayoutMetrics.h"
+#include "DetailsItemLayoutMetrics.h"
 
 #define PART_ACTION_BUTTON1 "elm.swallow.icon.2"
 #define PART_ACTION_BUTTON2 "elm.swallow.end"
index 9418910..750d9dd 100644 (file)
 #include "App/AppControlRequest.h"
 #include "Ui/Genlist.h"
 #include "Ui/Menu.h"
+#include "Ui/NavigatorPage.h"
 #include "Ui/Thumbnail.h"
 #include "Utils/Callback.h"
 
-#include "ContactsDetailsItemLayout.h"
+#include "DetailsItemLayout.h"
 
 using namespace Contacts::Details;
 using namespace Contacts::Model;
 using namespace std::placeholders;
 
 BasicInfoItem::BasicInfoItem(Contact &contact)
-       : m_Contact     (contact),
+       : m_Page        (nullptr),
+         m_FavButton   (nullptr),
+         m_Contact     (contact),
          m_Favorite    (contact.getFieldById<ContactBoolField>(FieldFavorite)),
 
          m_Image       (*contact.getFieldById<ContactObject>(FieldImage)),
@@ -47,6 +50,9 @@ BasicInfoItem::BasicInfoItem(Contact &contact)
          m_CompanyName (*m_Company.getFieldById<ContactTextField>(CompanyFieldName)),
          m_JobTitle    (*m_Company.getFieldById<ContactTextField>(CompanyFieldJobTitle)),
 
+         m_Nickname    (*contact.getFieldById<ContactObject>(FieldNickname)),
+         m_NicknameText(*m_Nickname.getField<ContactTextField>(0)),
+
          m_SelectMode(Ux::SelectNone)
 {
        m_Contact.setUpdateCallback(std::bind(&BasicInfoItem::onFieldUpdated, this, _1, _2));
@@ -55,44 +61,28 @@ BasicInfoItem::BasicInfoItem(Contact &contact)
 void BasicInfoItem::setSelectMode(Ux::SelectMode mode)
 {
        m_SelectMode = mode;
-       elm_genlist_item_fields_update(getObjectItem(), PART_BACK_BTN, ELM_GENLIST_ITEM_FIELD_CONTENT);
-       elm_genlist_item_fields_update(getObjectItem(), PART_FAV_BTN, ELM_GENLIST_ITEM_FIELD_CONTENT);
 }
 
-void BasicInfoItem::setBackCallback(BackCallback callback)
+void BasicInfoItem::showTitle(Ui::NavigatorPage *page)
 {
-       m_OnBackPressed = std::move(callback);
+       m_Page = page;
+
+       if (m_SelectMode == Ux::SelectNone && m_Page) {
+               m_Page->setTitleVisibility(true);
+               m_Page->setTitle(m_Name.getValue());
+               m_Page->setContent("title_right_btn", createFavButton(getParent()->getEvasObject()));
+               m_Page->setSubtitle(formatAdditionalInfoString().c_str());
+       }
 }
 
 Elm_Genlist_Item_Class *BasicInfoItem::getItemClass() const
 {
-       static Elm_Genlist_Item_Class itc = createItemClass(CONTACTS_DETAILS_ITEM_STYLE);
+       static Elm_Genlist_Item_Class itc = createItemClass(DETAILS_ITEM_STYLE);
        return &itc;
 }
 
-char *BasicInfoItem::getText(Evas_Object *parent, const char *part)
-{
-       if (strcmp(part, PART_NAME) == 0) {
-               return Utils::safeDup(m_Name.getValue());
-       } else if (strcmp(part, PART_PHONETIC_NAME) == 0) {
-               return strdup(m_PhoneticName.getValue().c_str());
-       } else if (strcmp(part, PART_COMPANY) == 0) {
-               return strdup(formatCompanyString().c_str());
-       }
-
-       return nullptr;
-}
-
 Evas_Object *BasicInfoItem::getContent(Evas_Object *parent, const char *part)
 {
-       if (m_SelectMode == Ux::SelectNone) {
-               if (strcmp(part, PART_BACK_BTN) == 0) {
-                       return createBackButton(parent);
-               } else if (m_Favorite && strcmp(part, PART_FAV_BTN) == 0) {
-                       return createFavButton(parent);
-               }
-       }
-
        if (strcmp(part, PART_THUMBNAIL) == 0) {
                auto control = Ui::Thumbnail::create(parent, Ui::Thumbnail::SizeLarge);
                control->setImagePath(m_ImagePath.getValue());
@@ -102,17 +92,6 @@ Evas_Object *BasicInfoItem::getContent(Evas_Object *parent, const char *part)
        return nullptr;
 }
 
-Eina_Bool BasicInfoItem::getState(Evas_Object *parent, const char *part)
-{
-       if (strcmp(part, PART_PHONETIC_NAME) == 0) {
-               return !m_PhoneticName.isEmpty();
-       } else if (strcmp(part, PART_COMPANY) == 0) {
-               return !m_Company.isEmpty();
-       }
-
-       return EINA_FALSE;
-}
-
 void BasicInfoItem::onSelected()
 {
        const char *path = m_ImagePath.getValue();
@@ -158,52 +137,46 @@ bool BasicInfoItem::onLongpressed()
        return true;
 }
 
-std::string BasicInfoItem::formatCompanyString()
+std::string BasicInfoItem::formatAdditionalInfoString()
 {
-       const char *companyName = m_CompanyName.getValue();
-       const char *jobTitle = m_JobTitle.getValue();
-
        std::string value;
-       if (companyName) {
-               value += companyName;
-       }
-
-       if (jobTitle) {
-               if (!value.empty()) {
-                       value += ", ";
+       auto addInfo = [&value](const char *info) {
+               if (info) {
+                       if (!value.empty()) {
+                               value += ", ";
+                       }
+                       value += info;
                }
-               value += jobTitle;
-       }
+       };
+       addInfo(m_PhoneticName.getValue().c_str());
+       addInfo(m_CompanyName.getValue());
+       addInfo(m_JobTitle.getValue());
+       addInfo(m_NicknameText.getValue());
 
        return value;
 }
 
-Evas_Object *BasicInfoItem::createBackButton(Evas_Object *parent)
-{
-       Evas_Object *button = elm_button_add(parent);
-       elm_object_style_set(button, "naviframe/back_btn/default");
-       evas_object_smart_callback_add(button, "clicked",
-                       makeCallback(&BasicInfoItem::onBackPressed), this);
-       evas_object_propagate_events_set(button, EINA_FALSE);
-       return button;
-}
-
 Evas_Object *BasicInfoItem::createFavButton(Evas_Object *parent)
 {
-       Evas_Object *check = elm_check_add(parent);
-       elm_object_style_set(check, "favorite");
-       elm_check_state_set(check, m_Favorite->getValue());
-       evas_object_smart_callback_add(check, "changed",
+       if(!m_Favorite) {
+               return nullptr;
+       }
+
+       Evas_Object *box = elm_box_add(parent);
+
+       m_FavButton = elm_check_add(box);
+       elm_object_style_set(m_FavButton, "favorite");
+       elm_check_state_set(m_FavButton, m_Favorite->getValue());
+       evas_object_smart_callback_add(m_FavButton, "changed",
                        makeCallback(&BasicInfoItem::onFavChanged), this);
-       evas_object_propagate_events_set(check, EINA_FALSE);
-       return check;
-}
+       evas_object_propagate_events_set(m_FavButton, EINA_FALSE);
 
-void BasicInfoItem::onBackPressed(Evas_Object *button, void *eventInfo)
-{
-       if (m_OnBackPressed) {
-               m_OnBackPressed();
-       }
+       evas_object_size_hint_weight_set(m_FavButton, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(m_FavButton, 0.8, EVAS_HINT_FILL);
+       evas_object_show(m_FavButton);
+       elm_box_pack_end(box, m_FavButton);
+
+       return box;
 }
 
 void BasicInfoItem::onFavChanged(Evas_Object *check, void *eventInfo)
@@ -215,27 +188,21 @@ void BasicInfoItem::onFavChanged(Evas_Object *check, void *eventInfo)
 void BasicInfoItem::onFieldUpdated(ContactField &field, contacts_changed_e change)
 {
        if (&field == &m_Contact && change == CONTACTS_CHANGE_DELETED) {
-               /* FIXME: Add possibility to get View from child control */
-               if (m_OnBackPressed) {
-                       m_OnBackPressed();
-               }
+               m_Page->close();
                return;
        }
 
-       const char *part = nullptr;
-       if (&field == m_Favorite) {
-               part = PART_FAV_BTN;
-       } else if (&field == &m_Image) {
-               part = PART_THUMBNAIL;
-       } else if (&field == &m_Name) {
-               part = PART_NAME;
-       } else if (&field == &m_PhoneticName) {
-               part = PART_PHONETIC_NAME;
-       } else if (&field == &m_Company) {
-               part = PART_COMPANY;
+       if (m_SelectMode == Ux::SelectNone && m_Page) {
+               if (&field == m_Favorite) {
+                       elm_check_state_set(m_FavButton, m_Favorite->getValue());
+               } else if (&field == &m_Name) {
+                       m_Page->setTitle(m_Name.getValue());
+               } else if (&field == &m_PhoneticName || &field == &m_Company || &field == &m_Nickname) {
+                       m_Page->setSubtitle(formatAdditionalInfoString().c_str());
+               }
        }
 
-       if (part) {
-               elm_genlist_item_fields_update(getObjectItem(), part, ELM_GENLIST_ITEM_FIELD_ALL);
+       if (&field == &m_Image) {
+               elm_genlist_item_fields_update(getObjectItem(), PART_THUMBNAIL, ELM_GENLIST_ITEM_FIELD_ALL);
        }
 }
index 4f713a8..282db66 100644 (file)
@@ -35,7 +35,7 @@
 #include "Utils/Logger.h"
 #include "Utils/Range.h"
 
-#include "ContactsDetailsItemLayout.h"
+#include "ContactsDetailsPath.h"
 
 #include <app_i18n.h>
 
@@ -61,7 +61,7 @@ namespace
                /* [FieldMessenger]    = */ true,
                /* [FieldEvent]        = */ true,
                /* [FieldNote]         = */ true,
-               /* [FieldNickname]     = */ true,
+               /* [FieldNickname]     = */ false,
                /* [FieldRelationship] = */ true,
                /* [FieldRingtone]     = */ true,
                /* [FieldGroups]       = */ true
@@ -93,9 +93,6 @@ void DetailsView::onCreated()
 
        m_BasicInfoItem = new BasicInfoItem(m_Contact);
        m_BasicInfoItem->setSelectMode(getSelectMode());
-       m_BasicInfoItem->setBackCallback([this] {
-               getPage()->close();
-       });
        m_Genlist->insert(m_BasicInfoItem);
 
        for (auto &&field : m_Contact) {
@@ -127,6 +124,11 @@ void DetailsView::onCreated()
        }
 }
 
+void DetailsView::onPageAttached(Ui::NavigatorPage *page)
+{
+       m_BasicInfoItem->showTitle(page);
+}
+
 void DetailsView::onMenuPressed()
 {
        if (getSelectMode() != Ux::SelectNone) {