More detail menu style Change box to genlist
authorleerang song <leerang.song@samsung.com>
Tue, 18 Dec 2012 06:07:59 +0000 (15:07 +0900)
committerleerang song <leerang.song@samsung.com>
Tue, 18 Dec 2012 06:07:59 +0000 (15:07 +0900)
[Issue#] N_SE-13109
[Problem] N/A
[Cause] N/A
[Solution] style Change box to genlist
[SCMRequest] N/A

webapp-detail/detailview.cpp
webapp-detail/detailview.h [changed mode: 0644->0755]
webapp-detail/mainview.cpp [changed mode: 0644->0755]

index 95f5c21..864e814 100755 (executable)
@@ -22,7 +22,7 @@
 #include <dpl/assert.h>
 #include <dpl/utils/wrt_global_settings.h>
 
-#include <ui-gadget.h>
+#include <ui-gadget-module.h>
 
 #include "detailview.h"
 #include "advancedview.h"
@@ -616,56 +616,380 @@ void DetailView::_mouse_up_advanced_settings(void* data,
     }
 }
 
-Evas_Object *DetailView::loadView(void)
+void DetailView:: clearDataPopupCallback(void *data, Evas_Object *obj,
+       void *event_info)
 {
-    Evas_Object *scr;
+    Evas_Object *popup;
+    Evas_Object *btn1;
+    Evas_Object *btn2;
+    DetailData *detailData;
 
-    resetBase();
+    Elm_Object_Item *it;
+    it = static_cast<Elm_Object_Item *>(event_info);
+    Assert(it);
+    elm_genlist_item_selected_set(it, EINA_FALSE);
+    detailData = static_cast<DetailData *>(data);
+
+    popup = elm_popup_add(detailData->m_detailView->m_naviframe);
+    evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+    elm_object_text_set(popup,"Do you want to clear data?");
+    btn1 = elm_button_add(popup);
+    elm_object_text_set(btn1, "OK");
+    elm_object_part_content_set(popup, "button1", btn1);
+    evas_object_smart_callback_add(btn1, "clicked", clearDataCallback, popup);
+    btn2 = elm_button_add(popup);
+    elm_object_text_set(btn2, "Cancel");
+    elm_object_part_content_set(popup, "button2", btn2);
+    evas_object_smart_callback_add(btn2, "clicked", closeCallback, popup);
+    evas_object_show(popup);
+}
+
+char *DetailView::getText(void *data,
+                        Evas_Object */*obj*/,
+                        const char *part)
+{
+    DetailData *detailData;
+    const char *str;
+
+    detailData = static_cast<DetailData *>(data);
+    Assert(detailData);
+    if (!strcmp(part, "elm.text"))
+        str = detailData->m_title.c_str();
+    else if (!strcmp(part, "elm.text.1"))
+        str = detailData->m_subtitle.c_str();
+    else if(!strcmp(part, "elm.text.2"))
+        str = detailData->m_title.c_str();
+    else
+        str = NULL;
+    return strdup(str);
+}
+
+char *DetailView::getTitle(void *data,
+                        Evas_Object */*obj*/,
+                        const char *part)
+{
+    DetailData *detailData;
+    const char *str;
+
+    detailData = static_cast<DetailData *>(data);
+    Assert(detailData);
+
+    if (!strcmp(part, "elm.text"))
+        str = detailData->m_title.c_str();
+    else if (!strcmp(part, "elm.text.1"))
+        str = detailData->m_title.c_str();
+    else
+        str = "";
+    return strdup(str);
+}
+
+void DetailView::addDefInfo(Evas_Object *gl)
+{
+    DPL::OptionalString ver;
+
+    Assert(m_dao);
+
+    ver = m_dao->getVersion();
+    addTitleText(gl,D_("IDS_COM_BODY_DETAILS_NAME"),
+            m_localizedInfo.name.IsNull() ? "" :
+            DPL::ToUTF8String((*m_localizedInfo.name)).c_str());
+    addTitleText(gl,"version", ver.IsNull() ? "" :
+            DPL::ToUTF8String((*ver)).c_str());
+    addTitleText(gl,"Domain",m_dao->isTrusted() ? "Trusted" : "Untrusted");
+    addTitleText(gl,D_("IDS_COM_BODY_DESCRIPTION"),
+            m_localizedInfo.description.IsNull() ? "" :
+            DPL::ToUTF8String((*m_localizedInfo.description)).c_str());
+}
+
+void DetailView::addViewModes(Evas_Object *gl)
+{
+    DPL::String mode;
+    WrtDB::WindowModeList modes;
+
+    Assert(m_dao);
 
+    modes = m_dao->getWindowModes();
+    if (modes.size() > 0) {
+        FOREACH(it, modes)
+            mode += *it + L",";
+        /* remove comma */
+        mode.resize(mode.length() - 1);
+        /* FIXME: i18n */
+        addTitleText(gl,"View modes", DPL::ToUTF8String(mode).c_str());
+    } else {
+        /* FIXME: i18n */
+      addTitleText(gl,"View modes", "");
+    }
+}
+
+void DetailView::addAuthorInfo(Evas_Object *gl)
+{
+    DPL::OptionalString name;
+    DPL::OptionalString email;
+    DPL::OptionalString homepage;
+
+    Assert(m_dao);
+    addTitle(gl,D_("IDS_COM_BODY_AUTHOR"));
+
+    name = m_dao->getAuthorName();
+    addTitleText(gl,D_("IDS_COM_BODY_DETAILS_NAME"),
+            name.IsNull() ? "" :
+            DPL::ToUTF8String((*name)).c_str());
+
+    email = m_dao->getAuthorEmail();
+    if (!email.IsNull())
+        addTitleText(gl,D_("IDS_COM_BODY_EMAIL"),
+                DPL::ToUTF8String((*email)).c_str());
+
+    homepage = m_dao->getAuthorHref();
+    /* FIXME: i18n */
+    if (!homepage.IsNull())
+        addTitleText(gl,"Homepage",
+                DPL::ToUTF8String((*homepage)).c_str());
+}
+
+void DetailView::addDepth(Evas_Object *gl)
+{
+    static Elm_Genlist_Item_Class itc;
+    Elm_Object_Item *it;
+    Assert(gl);
+
+    try {
+        itc.item_style = "dialogue/separator/21/with_line";
+        itc.func.text_get = NULL;
+        itc.func.content_get = NULL;
+        itc.func.state_get = NULL;
+        itc.func.del = NULL;
+        it = elm_genlist_item_append(gl,
+                                &itc,
+                                NULL,
+                                NULL,
+                                ELM_GENLIST_ITEM_NONE,
+                                NULL,
+                                NULL);
+        elm_genlist_item_select_mode_set(it,
+        ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+    } catch (const std::bad_alloc &) {
+    }
+}
+
+void DetailView::addTitle(Evas_Object *gl, const char* title)
+{
+    static Elm_Genlist_Item_Class itc;
+    Elm_Object_Item *it;
+
+    DetailData *detailData;
+    Assert(gl);
+    try {
+
+    detailData = new DetailData(this,
+                              title,
+                              title);
+    itc.item_style = "dialogue/title";
+    itc.func.text_get = getTitle ;
+    itc.func.content_get = NULL;
+    itc.func.state_get = NULL;
+    itc.func.del = NULL;
+
+    it = elm_genlist_item_append(gl,
+                            &itc,
+                            static_cast<void *>(detailData),
+                            NULL,
+                            ELM_GENLIST_ITEM_NONE,
+                            NULL,
+                            NULL);
+    elm_genlist_item_select_mode_set(it,
+        ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+    } catch (const std::bad_alloc &) {
+    }
+}
+
+void DetailView::addTitleText(
+    Evas_Object *gl, const char* title, const char* subtitle)
+{
+    static Elm_Genlist_Item_Class itc;
+    Elm_Object_Item *it;
+    DetailData *detailData;
+    Assert(gl);
+    try {
+    detailData = new DetailData(this,
+                              title,
+                              subtitle);
+    itc.item_style = "dialogue/2text.2";
+    itc.func.text_get =getText ;
+    itc.func.content_get = NULL;
+    itc.func.state_get = NULL;
+    itc.func.del = NULL;
+    it = elm_genlist_item_append(gl,
+                            &itc,
+                            static_cast<void *>(detailData),
+                            NULL,
+                            ELM_GENLIST_ITEM_NONE,
+                            NULL,
+                            NULL);
+    elm_genlist_item_select_mode_set(it,
+        ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+    } catch (const std::bad_alloc &) {
+    }
+}
+
+void DetailView::addLicenseInfo(Evas_Object *gl, const char* title)
+{
+    static Elm_Genlist_Item_Class itc;
+    DetailData *detailData;
+    Elm_Object_Item *it;
+
+    Assert(gl);
+    try {
+    detailData = new DetailData(this,
+                              title,
+                              title);
+    itc.item_style = "dialogue/1text";
+    itc.func.text_get =getTitle ;
+    itc.func.content_get = NULL;
+    itc.func.state_get = NULL;
+    itc.func.del = NULL;
+
+    it = elm_genlist_item_append(gl,
+                            &itc,
+                            static_cast<void *>(detailData),
+                            NULL,
+                            ELM_GENLIST_ITEM_NONE,
+                            NULL,
+                            NULL);
+    elm_object_item_disabled_set(it, EINA_TRUE);
+    } catch (const std::bad_alloc &) {
+    }
+}
+
+void DetailView::addClearData(Evas_Object *gl, const char* title)
+{
+    static Elm_Genlist_Item_Class itc;
+    DetailData *detailData;
+    Elm_Object_Item *it;
+
+    Assert(gl);
     try {
+    detailData = new DetailData(this,
+                              title,
+                              title);
+    itc.item_style = "dialogue/1text";
+    itc.func.text_get =getTitle ;
+    itc.func.content_get = NULL;
+    itc.func.state_get = NULL;
+    itc.func.del = NULL;
+    it = elm_genlist_item_append(gl,
+                            &itc,
+                            static_cast<void *>(detailData),
+                            NULL,
+                            ELM_GENLIST_ITEM_NONE,
+                            clearDataPopupCallback,
+                            static_cast<void *>(detailData));
+    elm_genlist_item_select_mode_set(it,
+        ELM_OBJECT_SELECT_MODE_ALWAYS);
+    } catch (const std::bad_alloc &) {
+    }
+}
+
+void DetailView::addAdvancedSetting(Evas_Object *gl, const char* title)
+{
+    static Elm_Genlist_Item_Class itc;
+    DetailData *detailData;
+    Elm_Object_Item *it;
+
+    Assert(gl);
+    try {
+    detailData = new DetailData(this,
+                              title,
+                              title);
+    itc.item_style = "dialogue/1text";
+    itc.func.text_get =getTitle ;
+    itc.func.content_get = NULL;
+    itc.func.state_get = NULL;
+    itc.func.del = NULL;
+    it = elm_genlist_item_append(gl,
+                            &itc,
+                            static_cast<void *>(detailData),
+                            NULL,
+                            ELM_GENLIST_ITEM_NONE,
+                            NULL,
+                            NULL);
+    elm_object_item_disabled_set(it, EINA_TRUE);
+    } catch (const std::bad_alloc &) {
+    }
+}
+
+Evas_Object *DetailView::loadView(void)
+{
+    Evas_Object *win;
+    resetBase();
+    try {
+        win = static_cast<Evas_Object *>(ug_get_window());
+        Assert(win);
+        m_gl = elm_genlist_add(m_naviframe);
+        elm_object_style_set(m_gl, "dialogue");
+
         m_dao.Reset(new WrtDB::WidgetDAO(m_appID));
         getLocalizedInfo();
 
-        scr = elm_scroller_add(m_parent);
-        if (!scr)
-            return NULL;
-
-        m_bx = elm_box_add(scr);
-        if (!m_bx) {
-            evas_object_del(scr);
+        if (!m_gl) {
+            evas_object_del(m_naviframe);
             return NULL;
         }
-        evas_object_size_hint_weight_set(m_bx, EVAS_HINT_EXPAND, 0.0);
-        evas_object_size_hint_align_set(m_bx, EVAS_HINT_FILL, 0.0);
-        elm_object_content_set(scr, m_bx);
-        evas_object_show(m_bx);
-
-        addDefInfo();
-        addViewModes();
-        addAuthorInfo();
+        addDepth(m_gl);
+        addDefInfo(m_gl);
+        addViewModes(m_gl);
+        addAuthorInfo(m_gl);
         if (!GlobalSettings::TestModeEnabled())
-            addLicense();
-        //Delete auto save ID/password menu temporary
-        //addSaveLoginInfo();
-        addClearData();
-        addAdvancedSettings();
-        resetBase(scr);
-
-        return scr;
+            addLicenseInfo(m_gl,"Licence infomation");
+        addClearData(m_gl, "Clear data");
+        addAdvancedSetting(m_gl, "Advanced Setting");
+        pushToNaviFrame();
 
+    return win;
     } catch (const std::bad_alloc &) {
-        return NULL;
+         return NULL;
     }
 }
 
-DetailView::DetailView(Evas_Object* navi, Evas_Object* parent, int appID) :
+void DetailView::onBackBtnClicked(void *data,
+                                Evas_Object */*obj*/,
+                                void */*event_info*/)
+{
+    DetailView* This;
+
+    This= static_cast<DetailView *>(data);
+    Assert(This);
+    ug_destroy_me(This->m_ug);
+}
+bool DetailView::pushToNaviFrame(void)
+{
+    Evas_Object *btn;
+
+    Assert(m_naviframe);
+    btn = elm_button_add(m_naviframe);
+    if (!btn)
+        return false;
+
+    elm_object_style_set(btn, "naviframe/end_btn/default");
+    evas_object_smart_callback_add(btn, "clicked", onBackBtnClicked, this);
+    elm_naviframe_item_push(m_naviframe,
+                            "More Details",
+                            btn,
+                            NULL,
+                            m_gl,
+                            NULL);
+    return true;
+}
+
+DetailView::DetailView(Evas_Object* navi, ui_gadget_h ug, int appID) :
     m_naviframe(navi),
-    m_parent(parent),
     m_bx(NULL),
     m_appID(appID),
-    m_licenseInfo(NULL)
+    m_licenseInfo(NULL),
+    m_ug(ug)
 {
-    Assert(parent);
+    Assert(navi);
     m_dao.Reset();
 }
 
@@ -674,5 +998,4 @@ DetailView::~DetailView(void)
     if (m_licenseInfo)
         delete m_licenseInfo;
 }
-
-} /* WebAppDetailSetting */
+}
old mode 100644 (file)
new mode 100755 (executable)
index d717e5d..50a566b
@@ -18,6 +18,7 @@
 #define WEB_SRC_SETTING_WEBAPP_DETAIL_DETAILVIEW_H_
 
 #include <Evas.h>
+#include <ui-gadget.h>
 
 #undef None
 #include <dpl/wrt-dao-rw/widget_dao.h>
@@ -48,7 +49,8 @@ class DetailView : public View
     Evas_Object *m_bx;
     Evas_Object *check_webkit;
     Evas_Object *check_login;
-
+    Evas_Object *m_gl;
+    ui_gadget_h m_ug;
     DPL::ScopedPtr<WrtDB::WidgetDAO> m_dao;
     WrtDB::WidgetLocalizedInfo m_localizedInfo;
     int m_appID;
@@ -102,14 +104,53 @@ class DetailView : public View
             Evas *e,
             Evas_Object *obj,
             void *event_info);
-
+    static void clearDataPopupCallback(void *data,
+            Evas_Object *obj,
+            void *event_info);
+    static char *getText(void *data,
+                        Evas_Object *obj,
+                        const char *part);
+    static char *getTitle(void *data,
+                        Evas_Object *obj,
+                        const char *part);
+    void addDefInfo(Evas_Object *gl);
+    void addViewModes(Evas_Object *gl);
+    void addAuthorInfo(Evas_Object *gl);
+    void addDepth(Evas_Object *gl);
+    void addTitle(Evas_Object *gl, const char* title);
+    void addTitleText(
+        Evas_Object *gl, const char* title, const char* subtitle);
+    void addLicenseInfo(Evas_Object *gl, const char* title);
+    void addClearData(Evas_Object *gl, const char* title);
+    void addAdvancedSetting(Evas_Object *gl, const char* title);
+    static void onBackBtnClicked(void *data,
+                                    Evas_Object *obj,
+                                    void *event_info);
+    bool pushToNaviFrame(void);
   public:
-    DetailView(Evas_Object* naviframe, Evas_Object* parent, int appID);
+    DetailView(Evas_Object* naviframe, ui_gadget_h ug, int appID);
     ~DetailView(void);
 
     Evas_Object *loadView(void);
 };
 
+class DetailData
+{
+  public:
+    DetailView *m_detailView;
+    std::string m_title;
+    std::string m_subtitle;
+    int m_dataType;
+    DetailData(DetailView *detailView,
+              const char *title,
+              const char *subtitle) :
+        m_detailView(detailView),
+        m_title(title),
+        m_subtitle(subtitle) { };
+
+    ~DetailData(void) { };
+};
+
 } /* WebAppDetailSetting */
 
 #endif /* WEB_SRC_SETTING_WEBAPP_DETAIL_DETAILVIEW_H_ */
old mode 100644 (file)
new mode 100755 (executable)
index df0a524..1d71924
@@ -96,51 +96,27 @@ Evas_Object *MainView::createToolBar(Evas_Object *parent)
 Evas_Object *MainView::createContent(Evas_Object *parent)
 {
     Evas_Object *nf;
-    Evas_Object *btn;
-    Evas_Object *toolBar;
-    Evas_Object *ly;
-    Elm_Object_Item *it;
 
     Assert(parent);
     nf = elm_naviframe_add(parent);
     if (!nf)
-        return NULL;
-
-    ly = elm_layout_add(nf);
-    if (!ly)
-        goto del_nf;
-    elm_layout_file_set(ly, EDJFILE, GRP_CONTENT);
-
-    btn = elm_button_add(nf);
-    if (!btn)
-        goto del_nf;
-    elm_object_style_set(btn, "naviframe/end_btn/default");
-    evas_object_smart_callback_add(btn, "clicked", onBackBtnClicked, this);
-    /* FIXME: i18n */
-    it = elm_naviframe_item_push(nf, "More details", btn, NULL, ly, NULL);
-
-    toolBar = createToolBar(nf);
-    if (!toolBar)
-        goto del_nf;
-    elm_object_item_part_content_set(it, "optionheader", toolBar);
+    return NULL;
 
     try {
-        m_detail.Reset(new DetailView(nf, ly, m_appID));
-        elm_object_part_content_set(ly, PART_DETAIL, m_detail->loadView());
-        m_perm.Reset(new PermView(ly, m_appID));
-        elm_object_part_content_set(ly, PART_PERM, m_perm->loadView());
-        m_subCtnt = ly;
-
-        return nf;
+    m_detail.Reset(new DetailView(nf, m_ug, m_appID));
+    if (!m_detail->loadView())
+        goto del_list;
+    return nf;
 
     } catch (const std::bad_alloc &) {
-        m_detail.Reset();
-        m_perm.Reset();
+    m_detail.Reset();
+    goto del_nf;
     }
 
-del_nf:
+    del_list:
+    m_detail.Reset();
+    del_nf:
     evas_object_del(nf);
-
     return NULL;
 }