Add developer options menu
authorJihoon Chung <jihoon.chung@samsung.com>
Wed, 2 Jan 2013 01:29:13 +0000 (10:29 +0900)
committerGerrit Code Review <gerrit2@kim11>
Wed, 2 Jan 2013 05:51:25 +0000 (14:51 +0900)
[Issue#] N/A
[Problem] N/A
[Cause] N/A
[Solution] Add developer options menu
Current menu has "Memory saving mode"
[SCMRequest] must be imported with wrt-commons

Change-Id: Iba95c5e9cdefe861b67a609ffc5e78eb8880fc69

webapp-detail/advancedview.cpp
webapp-detail/advancedview.h

index b552753..bc1cc12 100644 (file)
@@ -34,8 +34,6 @@
 namespace WebAppDetailSetting {
 
 namespace  {
-std::vector<std::string> groupText = {"Security Settings"};
-
 const char* const ELM_STYLE_ON_OFF = "on&off";
 const char* const ELM_PART_ICON = "elm.icon";
 const char* const EVAS_SMART_CALLBACK_CHANGED = "changed";
@@ -49,11 +47,23 @@ AdvancedView::AdvancedView(Evas_Object *navi, int appID) :
     m_naviframe(navi),
     m_appID(appID)
 {
-    m_menuMap[SECURITY_MENU_INDEX_SECURITY_POPUP_USAGE] = "Show security warnings";
-    m_menuMap[SECURITY_MENU_INDEX_GEOLOCATION_USAGE] = "Location";
-    m_menuMap[SECURITY_MENU_INDEX_WEB_NOTIFICATION_USAGE] = "Web notification";
-    m_menuMap[SECURITY_MENU_INDEX_WEB_DATABASE_USAGE] = "Web database";
-    m_menuMap[SECURITY_MENU_INDEX_FILE_SYSTEM_USAGE] = "File system access";
+    m_groupMenuMap[GROUP_IDX_SECURITY_SETTINGS] = "Security Settings";
+    m_groupMenuMap[GROUP_IDX_DEVELOPER_OPTIONS] = "Developer Options";
+
+    m_menuMap[SECURITY_SETTINGS_IDX_SECURITY_POPUP_USAGE] =
+        "Show security warnings";
+    m_menuMap[SECURITY_SETTINGS_IDX_GEOLOCATION_USAGE] =
+        "Location";
+    m_menuMap[SECURITY_SETTINGS_IDX_WEB_NOTIFICATION_USAGE] =
+        "Web notification";
+    m_menuMap[SECURITY_SETTINGS_IDX_WEB_DATABASE_USAGE] =
+        "Web database";
+    m_menuMap[SECURITY_SETTINGS_IDX_FILE_SYSTEM_USAGE] =
+        "File system access";
+    m_menuMap[SECURITY_SETTINGS_IDX_EXCEPTIONS_SETTINGS] =
+        "Exceptions Settings";
+    m_menuMap[DEVELOPER_OPTIONS_IDX_MEMORY_SAVING_MODE] =
+        "Memory Saving Mode";
 }
 
 AdvancedView::~AdvancedView(void)
@@ -79,52 +89,50 @@ void AdvancedView::delGroupData(void* data,
     delete advancedSettingsData;
 }
 
-char* AdvancedView::getSecuritySettingText(void *data,
+char* AdvancedView::getSettingText(void *data,
                                            Evas_Object* /*obj*/,
                                            const char* /*part*/)
 {
     Assert(data);
-    SecuritySettingsData* securitySettingsData =
-        static_cast<SecuritySettingsData*>(data);
-    return strdup(securitySettingsData->m_menuText.c_str());
+    SettingData* settingData = static_cast<SettingData*>(data);
+    return strdup(settingData->m_menuText.c_str());
 }
 
-Evas_Object* AdvancedView::getSecuritySettingContent(void* data,
+Evas_Object* AdvancedView::getSettingContent(void* data,
                                                      Evas_Object* obj,
                                                      const char* /*part*/)
 {
     Assert(data);
-    SecuritySettingsData* settingsData =
-        static_cast<SecuritySettingsData*>(data);
+    SettingData* settingData =
+        static_cast<SettingData*>(data);
 
     Assert(obj);
     Evas_Object* icon = elm_check_add(obj);
     elm_check_state_set(icon, EINA_TRUE);
     elm_object_style_set(icon, ELM_STYLE_ON_OFF);
-    settingsData->m_iconPart = ELM_PART_ICON;
+    settingData->m_iconPart = ELM_PART_ICON;
 
     evas_object_propagate_events_set(
         icon,
         EINA_FALSE);
-    elm_check_state_set(icon, settingsData->isEnabled() ? EINA_TRUE : EINA_FALSE);
+    elm_check_state_set(icon, settingData->isEnabled() ? EINA_TRUE : EINA_FALSE);
     evas_object_smart_callback_add(icon,
                                    EVAS_SMART_CALLBACK_CHANGED,
-                                   securitySettingChangedCallback,
+                                   settingChangedCallback,
                                    data);
 
     return icon;
 }
 
-void AdvancedView::delSecuritySettingData(void* data,
+void AdvancedView::delSettingData(void* data,
                                           Evas_Object* /*obj*/)
 {
     Assert(data);
-    SecuritySettingsData* securitySettingsData =
-        static_cast<SecuritySettingsData*>(data);
-    delete securitySettingsData;
+    SettingData* settingData = static_cast<SettingData*>(data);
+    delete settingData;
 }
 
-void AdvancedView::securitySettingSelectedCallback(void* data,
+void AdvancedView::settingSelectedCallback(void* data,
                                                    Evas_Object* obj,
                                                    void* eventInfo)
 {
@@ -132,28 +140,28 @@ void AdvancedView::securitySettingSelectedCallback(void* data,
     Elm_Object_Item* item = static_cast<Elm_Object_Item*>(eventInfo);
     elm_genlist_item_selected_set(item, EINA_FALSE);
 
-    SecuritySettingsData* settingsData =
-        static_cast<SecuritySettingsData*>(elm_object_item_data_get(item));
-    Assert(settingsData);
+    SettingData* settingData =
+        static_cast<SettingData*>(elm_object_item_data_get(item));
+    Assert(settingData);
 
     Evas_Object* check =
         elm_object_item_part_content_get(item,
-                                         settingsData->m_iconPart.c_str());
+                                         settingData->m_iconPart.c_str());
     Assert(check);
     bool state = !elm_check_state_get(check);
-    settingsData->saveChange(state);
+    settingData->saveChange(state);
     elm_check_state_set(check, state);
 }
 
-void AdvancedView::securitySettingChangedCallback(void* data,
+void AdvancedView::settingChangedCallback(void* data,
                                                   Evas_Object* obj,
                                                   void* eventInfo)
 {
     Assert(data);
-    SecuritySettingsData* settingsData =
-        static_cast<SecuritySettingsData*>(data);
+    SettingData* settingData =
+        static_cast<SettingData*>(data);
     Assert(obj);
-    settingsData->saveChange(elm_check_state_get(obj));
+    settingData->saveChange(elm_check_state_get(obj));
 }
 
 char* AdvancedView::getSecurityExceptionsSettingsText(void *data,
@@ -186,7 +194,7 @@ bool AdvancedView::loadView(void)
 {
     resetBase();
 
-    Evas_Object *genlist = NULL;
+    Evas_Objectgenlist = NULL;
     genlist = elm_genlist_add(m_naviframe);
 
     // create group menu
@@ -195,90 +203,132 @@ bool AdvancedView::loadView(void)
     itcGroup.func.text_get = getGroupText;
     itcGroup.func.del = delGroupData;
 
-    FOREACH(it, groupText) {
+    for (int index = GROUP_IDX_START; index <= GROUP_IDX_END; index++) {
         Elm_Object_Item* groupItem =
             elm_genlist_item_append(genlist,
                                     &itcGroup,
                                     static_cast<void*>(
                                         new AdvancedSettingsGroupData(
-                                            *it)),
+                                            m_groupMenuMap[index])),
                                     NULL,
                                     ELM_GENLIST_ITEM_NONE,
                                     NULL,
                                     NULL);
         elm_genlist_item_select_mode_set(groupItem,
                                          ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+
+        if (index == GROUP_IDX_SECURITY_SETTINGS) {
+            // create Security Settings menu
+            loadSecuritySettingsMenu(genlist);
+        } else if (index == GROUP_IDX_DEVELOPER_OPTIONS) {
+            // create developer Options menu
+            loadDeveloperOptionsMenu(genlist);
+        } else {
+            LogError("Wrong index");
+        }
+    }
+    elm_naviframe_item_push(m_naviframe,
+                            TEXT_NAVIFRAME_TITLE,
+                            NULL,
+                            NULL,
+                            genlist,
+                            NULL);
+    resetBase(genlist);
+    return true;
+}
+
+void AdvancedView::loadSecuritySettingsMenu(Evas_Object* genlist)
+{
+    for (int index = SECURITY_SETTINGS_IDX_START; index <= SECURITY_SETTINGS_IDX_END; index++) {
+        if (index == SECURITY_SETTINGS_IDX_EXCEPTIONS_SETTINGS) {
+            // create exceptions security settings menu
+            static Elm_Genlist_Item_Class itcSecurityExceptionsSettings = {0,};
+            itcSecurityExceptionsSettings.item_style =
+                ELM_GENLIST_ITEM_CLASS_STYLE_1TEXT;
+            itcSecurityExceptionsSettings.func.text_get = getSecurityExceptionsSettingsText;
+            itcSecurityExceptionsSettings.func.content_get = NULL;
+            itcSecurityExceptionsSettings.func.state_get = NULL;
+            itcSecurityExceptionsSettings.func.del = NULL;
+            elm_genlist_item_append(genlist,
+                                    &itcSecurityExceptionsSettings,
+                                    static_cast<void*>(this),
+                                    NULL,
+                                    ELM_GENLIST_ITEM_NONE,
+                                    securityExceptionsSettingsSelectedCallback,
+                                    NULL);
+
+        } else {
+            // create usage menu
+            static Elm_Genlist_Item_Class itcSecuritySettings = {0,};
+            itcSecuritySettings.item_style =
+                ELM_GENLIST_ITEM_CLASS_STYLE_1TEXT_1ICON_6;
+            itcSecuritySettings.func.text_get = getSettingText;
+            itcSecuritySettings.func.content_get = getSettingContent;
+            itcSecuritySettings.func.state_get = NULL;
+            itcSecuritySettings.func.del = delSettingData;
+
+            elm_genlist_item_append(genlist,
+                                    &itcSecuritySettings,
+                                    static_cast<void*>(
+                                        new SettingData(
+                                            m_appID, index, m_menuMap[index])),
+                                    NULL,
+                                    ELM_GENLIST_ITEM_NONE,
+                                    settingSelectedCallback,
+                                    NULL);
+        }
     }
+}
 
-    // create Security Settings menu
-    static Elm_Genlist_Item_Class itcSecuritySettings = {0,};
-    itcSecuritySettings.item_style =
+void AdvancedView::loadDeveloperOptionsMenu(Evas_Object* genlist)
+{
+    static Elm_Genlist_Item_Class itcDeveloperOptions = {0,};
+    itcDeveloperOptions.item_style =
         ELM_GENLIST_ITEM_CLASS_STYLE_1TEXT_1ICON_6;
-    itcSecuritySettings.func.text_get = getSecuritySettingText;
-    itcSecuritySettings.func.content_get = getSecuritySettingContent;
-    itcSecuritySettings.func.state_get = NULL;
-    itcSecuritySettings.func.del = delSecuritySettingData;
+    itcDeveloperOptions.func.text_get = getSettingText;
+    itcDeveloperOptions.func.content_get = getSettingContent;
+    itcDeveloperOptions.func.state_get = NULL;
+    itcDeveloperOptions.func.del = delSettingData;
 
-    for (int index = SECURITY_MENU_INDEX_START; index <= SECURITY_MENU_INDEX_END; index++) {
+    for (int index = DEVELOPER_OPTIONS_IDX_START; index <= DEVELOPER_OPTIONS_IDX_END; index++) {
         elm_genlist_item_append(genlist,
-                                &itcSecuritySettings,
+                                &itcDeveloperOptions,
                                 static_cast<void*>(
-                                    new SecuritySettingsData(
+                                    new SettingData(
                                         m_appID, index, m_menuMap[index])),
                                 NULL,
                                 ELM_GENLIST_ITEM_NONE,
-                                securitySettingSelectedCallback,
+                                settingSelectedCallback,
                                 NULL);
     }
-
-    static Elm_Genlist_Item_Class itcSecurityExceptionsSettings = {0,};
-    itcSecurityExceptionsSettings.item_style =
-        ELM_GENLIST_ITEM_CLASS_STYLE_1TEXT;
-    itcSecurityExceptionsSettings.func.text_get = getSecurityExceptionsSettingsText;
-    itcSecurityExceptionsSettings.func.content_get = NULL;
-    itcSecurityExceptionsSettings.func.state_get = NULL;
-    itcSecurityExceptionsSettings.func.del = NULL;
-    elm_genlist_item_append(genlist,
-                            &itcSecurityExceptionsSettings,
-                            static_cast<void*>(this),
-                            NULL,
-                            ELM_GENLIST_ITEM_NONE,
-                            securityExceptionsSettingsSelectedCallback,
-                            NULL);
-    elm_naviframe_item_push(m_naviframe,
-                            TEXT_NAVIFRAME_TITLE,
-                            NULL,
-                            NULL,
-                            genlist,
-                            NULL);
-    resetBase(genlist);
-    return true;
 }
 
-SecuritySettingsData::SecuritySettingsData(int appID, int index, std::string menuText) :
-    m_index(static_cast<SecuritySettingsIndex>(index)),
+SettingData::SettingData(int appID, int index, std::string menuText) :
+    m_index(static_cast<MenuIndex>(index)),
     m_menuText(menuText)
 {
     m_dao.Reset(new WrtDB::WidgetDAO(appID));
 }
 
-bool SecuritySettingsData::isEnabled()
+bool SettingData::isEnabled()
 {
     using namespace WrtDB;
     std::string key;
-    if (m_index == SECURITY_MENU_INDEX_SECURITY_POPUP_USAGE) {
+    if (m_index == SECURITY_SETTINGS_IDX_SECURITY_POPUP_USAGE) {
         key = VconfConfig::GetVconfKeyPopupUsage(m_dao->getPkgName());
-    } else if (m_index == SECURITY_MENU_INDEX_GEOLOCATION_USAGE) {
+    } else if (m_index == SECURITY_SETTINGS_IDX_GEOLOCATION_USAGE) {
         key = VconfConfig::GetVconfKeyGeolocationUsage(m_dao->getPkgName());
-    } else if (m_index == SECURITY_MENU_INDEX_WEB_NOTIFICATION_USAGE) {
+    } else if (m_index == SECURITY_SETTINGS_IDX_WEB_NOTIFICATION_USAGE) {
         key = VconfConfig::GetVconfKeyWebNotificationUsage(
             m_dao->getPkgName());
-    } else if (m_index == SECURITY_MENU_INDEX_WEB_DATABASE_USAGE) {
+    } else if (m_index == SECURITY_SETTINGS_IDX_WEB_DATABASE_USAGE) {
         key = VconfConfig::GetVconfKeyWebDatabaseUsage(m_dao->getPkgName());
-    } else if (m_index == SECURITY_MENU_INDEX_FILE_SYSTEM_USAGE) {
+    } else if (m_index == SECURITY_SETTINGS_IDX_FILE_SYSTEM_USAGE) {
         key = VconfConfig::GetVconfKeyFilesystemUsage(m_dao->getPkgName());
+    } else if (m_index == DEVELOPER_OPTIONS_IDX_MEMORY_SAVING_MODE) {
+        key = VconfConfig::GetVconfKeyMemorySavingMode(m_dao->getPkgName());
     } else {
-        Assert("Wrong security settings menu index");
+        Assert("Wrong menu index");
     }
 
     int ret = 0;
@@ -294,25 +344,27 @@ bool SecuritySettingsData::isEnabled()
     return false;
 }
 
-void SecuritySettingsData::saveChange(bool state)
+void SettingData::saveChange(bool state)
 {
     using namespace WrtDB;
     SettingsType result = state ? SETTINGS_TYPE_ON : SETTINGS_TYPE_OFF;
 
     std::string key;
-    if (m_index == SECURITY_MENU_INDEX_SECURITY_POPUP_USAGE) {
+    if (m_index == SECURITY_SETTINGS_IDX_SECURITY_POPUP_USAGE) {
         key = VconfConfig::GetVconfKeyPopupUsage(m_dao->getPkgName());
-    } else if (m_index == SECURITY_MENU_INDEX_GEOLOCATION_USAGE) {
+    } else if (m_index == SECURITY_SETTINGS_IDX_GEOLOCATION_USAGE) {
         key = VconfConfig::GetVconfKeyGeolocationUsage(m_dao->getPkgName());
-    } else if (m_index == SECURITY_MENU_INDEX_WEB_NOTIFICATION_USAGE) {
+    } else if (m_index == SECURITY_SETTINGS_IDX_WEB_NOTIFICATION_USAGE) {
         key = VconfConfig::GetVconfKeyWebNotificationUsage(
             m_dao->getPkgName());
-    } else if (m_index == SECURITY_MENU_INDEX_WEB_DATABASE_USAGE) {
+    } else if (m_index == SECURITY_SETTINGS_IDX_WEB_DATABASE_USAGE) {
         key = VconfConfig::GetVconfKeyWebDatabaseUsage(m_dao->getPkgName());
-    } else if (m_index == SECURITY_MENU_INDEX_FILE_SYSTEM_USAGE) {
+    } else if (m_index == SECURITY_SETTINGS_IDX_FILE_SYSTEM_USAGE) {
         key = VconfConfig::GetVconfKeyFilesystemUsage(m_dao->getPkgName());
+    } else if (m_index == DEVELOPER_OPTIONS_IDX_MEMORY_SAVING_MODE) {
+        key = VconfConfig::GetVconfKeyMemorySavingMode(m_dao->getPkgName());
     } else {
-        Assert("Wrong security settings menu index");
+        Assert("Wrong menu index");
     }
     vconf_set_int(key.c_str(), static_cast<int>(result));
 }
index 3d0296a..0a7d10c 100644 (file)
@@ -34,14 +34,25 @@ namespace WebAppDetailSetting {
 
 class ExceptionsView;
 
-enum SecuritySettingsIndex {
-    SECURITY_MENU_INDEX_START = 0,
-    SECURITY_MENU_INDEX_SECURITY_POPUP_USAGE = SECURITY_MENU_INDEX_START,
-    SECURITY_MENU_INDEX_GEOLOCATION_USAGE,
-    SECURITY_MENU_INDEX_WEB_NOTIFICATION_USAGE,
-    SECURITY_MENU_INDEX_WEB_DATABASE_USAGE,
-    SECURITY_MENU_INDEX_FILE_SYSTEM_USAGE,
-    SECURITY_MENU_INDEX_END = SECURITY_MENU_INDEX_FILE_SYSTEM_USAGE,
+enum GroupSettingsIndex {
+    GROUP_IDX_START = 0,
+    GROUP_IDX_SECURITY_SETTINGS = GROUP_IDX_START,
+    GROUP_IDX_DEVELOPER_OPTIONS,
+    GROUP_IDX_END = GROUP_IDX_DEVELOPER_OPTIONS,
+};
+
+enum MenuIndex {
+    SECURITY_SETTINGS_IDX_START = 0,
+    SECURITY_SETTINGS_IDX_SECURITY_POPUP_USAGE = SECURITY_SETTINGS_IDX_START,
+    SECURITY_SETTINGS_IDX_GEOLOCATION_USAGE,
+    SECURITY_SETTINGS_IDX_WEB_NOTIFICATION_USAGE,
+    SECURITY_SETTINGS_IDX_WEB_DATABASE_USAGE,
+    SECURITY_SETTINGS_IDX_FILE_SYSTEM_USAGE,
+    SECURITY_SETTINGS_IDX_EXCEPTIONS_SETTINGS,
+    SECURITY_SETTINGS_IDX_END = SECURITY_SETTINGS_IDX_EXCEPTIONS_SETTINGS,
+    DEVELOPER_OPTIONS_IDX_START = SECURITY_SETTINGS_IDX_END,
+    DEVELOPER_OPTIONS_IDX_MEMORY_SAVING_MODE = DEVELOPER_OPTIONS_IDX_START,
+    DEVELOPER_OPTIONS_IDX_END = DEVELOPER_OPTIONS_IDX_MEMORY_SAVING_MODE,
 };
 
 class AdvancedView : public View
@@ -51,11 +62,14 @@ class AdvancedView : public View
     ~AdvancedView(void);
 
     bool loadView(void);
+    void loadSecuritySettingsMenu(Evas_Object* genlist);
+    void loadDeveloperOptionsMenu(Evas_Object* genlist);
 
   private:
     Evas_Object *m_naviframe;
     int m_appID;
     DPL::ScopedPtr<ExceptionsView> m_exceptionsView;
+    std::map<int, std::string> m_groupMenuMap;
     std::map<int, std::string> m_menuMap;
 
     static char* getGroupText(
@@ -66,26 +80,25 @@ class AdvancedView : public View
         void* data,
         Evas_Object* obj);
 
-    static char* getSecuritySettingText(
+    static char* getSettingText(
         void* data,
         Evas_Object* obj,
         const char* part);
-    static Evas_Object* getSecuritySettingContent(
+    static Evas_Object* getSettingContent(
         void* data,
         Evas_Object* obj,
         const char* part);
-    static void delSecuritySettingData(
+    static void delSettingData(
         void* data,
         Evas_Object* obj);
-    static void securitySettingSelectedCallback(
+    static void settingSelectedCallback(
         void* data,
         Evas_Object* obj,
         void* eventInfo);
-    static void securitySettingChangedCallback(
+    static void settingChangedCallback(
         void* data,
         Evas_Object* obj,
         void* eventInfo);
-
     static char* getSecurityExceptionsSettingsText(
         void* data,
         Evas_Object* obj,
@@ -106,15 +119,15 @@ class AdvancedSettingsGroupData
     };
 };
 
-class SecuritySettingsData
+class SettingData
 {
   public:
     DPL::ScopedPtr<WrtDB::WidgetDAO> m_dao;
-    SecuritySettingsIndex m_index;
+    MenuIndex m_index;
     std::string m_menuText;
     std::string m_iconPart;
 
-    SecuritySettingsData(int appID, int index, std::string menuText);
+    SettingData(int appID, int index, std::string menuText);
     bool isEnabled();
     void saveChange(bool state);
 };