#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"
}
}
-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();
}
if (m_licenseInfo)
delete m_licenseInfo;
}
-
-} /* WebAppDetailSetting */
+}