Remove privacy-guard (DLP) from privavy-settings 95/218995/1
authorJose Roberto Ribeiro Junior/Engineer/Security RJose.juniorD Lab /SRBR/Samsung Electronics <jose.junior@samsung.com>
Tue, 22 Oct 2019 12:17:52 +0000 (09:17 -0300)
committerJose Roberto Ribeiro Junior/Security RJose.juniorD Lab /SRBR/Engineer/Samsung Electronics <jose.junior@samsung.com>
Fri, 29 Nov 2019 11:11:10 +0000 (08:11 -0300)
Change-Id: I0814ce537a08b0932361fb74e12513eb365c5ab5

28 files changed:
common/include/common_utils.h
common/src/common_utils.c
packaging/org.tizen.privacy-setting.spec
ui/CMakeLists.txt
ui/include/privacy_setting.h
ui/include/privacy_view.h
ui/src/privacy_dlp_choose_apps_view.c [deleted file]
ui/src/privacy_dlp_choose_rule_template_view.c [deleted file]
ui/src/privacy_dlp_log_detailed_view.c [deleted file]
ui/src/privacy_dlp_menu_view.c [deleted file]
ui/src/privacy_dlp_pattern_create_view.c [deleted file]
ui/src/privacy_dlp_pattern_delete_view.c [deleted file]
ui/src/privacy_dlp_pattern_detailed_view.c [deleted file]
ui/src/privacy_dlp_pattern_list_view.c [deleted file]
ui/src/privacy_dlp_reports_app_rank_view.c [deleted file]
ui/src/privacy_dlp_reports_data_stat_view.c [deleted file]
ui/src/privacy_dlp_reports_del_view.c [deleted file]
ui/src/privacy_dlp_reports_full_view.c [deleted file]
ui/src/privacy_dlp_reports_rules_and_patterns_view.c [deleted file]
ui/src/privacy_dlp_rule_create_view.c [deleted file]
ui/src/privacy_dlp_rule_delete_view.c [deleted file]
ui/src/privacy_dlp_rule_detailed_view.c [deleted file]
ui/src/privacy_dlp_rule_edit_view.c [deleted file]
ui/src/privacy_dlp_rule_list_view.c [deleted file]
ui/src/privacy_guard_list_view.c [deleted file]
ui/src/privacy_guard_package_list_view.c [deleted file]
ui/src/privacy_menu_view.c
ui/src/privacy_view.c [deleted file]

index 0746361d20af63972d1ba4e29aed734de3b083fa..990f97f467b56ebce5bb4bf2c4228e6213b6fb96 100644 (file)
@@ -105,47 +105,6 @@ Evas_Object *common_create_check(Evas_Object *parent);
  */
 void show_toast_notification(const char *text, Evas_Object *obj);
 
-/**
- * @brief Frees a DLP rule structure
- * @param[in] rule pointer to a valid get_custom_rule_s structure
- */
-void free_dlp_rule(void *rule);
-
-/**
- * @brief Frees a DLP pattern structure
- * @param[in] pattern pointer to a valid pattern_s structure
- */
-void free_dlp_pattern(void *pattern);
-
-/**
- * @brief get the patterns that are currently in use by some custom rule
- * @param[out] patterns_not_in_use_list a list of ints containing the IDs of the patterns currently in use by some custom rule
- *
- * @return true if the function succeeds, false if otherwise
-*/
-bool get_pattern_ids_in_use_list(GList **patterns_not_in_use_list);
-
-/**
- * @brief check if parameters form a valid rule
- * @param[in] name the rule name
- * @param[in] description the rule description
- * @param[in] pattern the rule pattern
- *
- * @return true if the rule is valid, false if otherwise
-*/
-bool is_valid_rule(const char *name, const char *description, const get_pattern_s *pattern);
-
-/**
- * @brief check if parameters form a valid pattern
- * @param[in] name the pattern name
- * @param[in] description the pattern description
- * @param[in] type the pattern type
- * @param[in] search_term the pattern search term
- *
- * @return true if the pattern is valid, false if otherwise
-*/
-bool is_valid_pattern(const char *name, const char *description, PgDlpPatternType type, const char *search_term);
-
 /**
  * @brief remove leading spaces from a string. Note: string will be changed in-place
  * @param[in,out] text the string to be left trimmed
index ff92106d15cb7503e421a565dd379bc4cd6245ba..27b933f23cdfe70b5ad2448f5b2af6a7831c1fa7 100644 (file)
@@ -110,39 +110,6 @@ void show_toast_notification(const char *text, Evas_Object *obj)
        evas_object_show(toast);
 }
 
-/**
- * @brief Frees a DLP rule structure
- * @param[in] rule pointer to a valid get_custom_rule_s structure
- */
-void free_dlp_rule(void *rule)
-{
-       g_slice_free(get_custom_rule_s, rule);
-}
-
-/**
- * @brief Frees a DLP pattern structure
- * @param[in] pattern pointer to a valid pattern_s structure
- */
-void free_dlp_pattern(void *pattern)
-{
-       g_slice_free(get_pattern_s, pattern);
-}
-
-static bool _get_pattern_ids_in_use_cb(
-       int id,
-       PgDlpAction action,
-       int pattern_id,
-       const char *name,
-       const char *description,
-       const char *application_id,
-       int leaks_count,
-       void *user_data)
-{
-       GList **pattern_ids_in_use_list = user_data;
-       *pattern_ids_in_use_list = g_list_prepend(*pattern_ids_in_use_list, GINT_TO_POINTER(pattern_id));
-       return true;
-}
-
 static gint _compare_pattern_id_cb(gconstpointer lhs, gconstpointer rhs)
 {
        const int lhs_int = GPOINTER_TO_INT(lhs);
@@ -155,22 +122,6 @@ static gint _compare_pattern_id_cb(gconstpointer lhs, gconstpointer rhs)
                return 1;
 }
 
-bool get_pattern_ids_in_use_list(GList **pattern_ids_in_use_list)
-{
-       *pattern_ids_in_use_list = NULL;
-
-       const int res = privacy_guard_client_foreach_dlp_rules(getuid(), PRIV_GUARD_DLP_PROFILE_CUSTOM,
-               _get_pattern_ids_in_use_cb, pattern_ids_in_use_list);
-       if (PRIV_GUARD_ERROR_SUCCESS != res) {
-               LOGE("privacy_guard_client_foreach_dlp_rules() failed. [%d]", res);
-               return false;
-       }
-
-       *pattern_ids_in_use_list = g_list_sort(*pattern_ids_in_use_list, _compare_pattern_id_cb);
-
-       return true;
-}
-
 // Gets position of first non-space character in a string
 static size_t get_first_non_space_pos(const char *text, const size_t len_text)
 {
@@ -197,25 +148,6 @@ static bool is_valid_text_field(const char *text, const size_t len_text)
        return '\0' != text[pos];
 }
 
-bool is_valid_rule(const char *name, const char *description, const get_pattern_s *pattern)
-{
-       return is_valid_text_field(name, LEN_NAME)
-               && is_valid_text_field(description, LEN_DESCRIPTION)
-               && NULL != pattern;
-}
-
-bool is_valid_pattern(const char *name, const char *description, PgDlpPatternType type, const char *search_term)
-{
-       if (!is_valid_text_field(name, LEN_NAME)
-                       || !is_valid_text_field(description, LEN_DESCRIPTION))
-               return false;
-
-       if (PRIV_GUARD_DLP_PATTERN_STRING == type)
-               return is_valid_text_field(search_term, LEN_PATTERN);
-       else
-               return PRIV_GUARD_ERROR_SUCCESS == privacy_guard_client_validate_pattern(type, search_term);
-}
-
 void left_trim(char *text, const size_t len_text)
 {
        if (NULL == text || 0 == len_text) {
index f8ed6e5c13c655914eb504fccb88e8113e8bd0b4..f24dd8eb49b917ee7eda8a3405936a2277afafcf 100755 (executable)
@@ -24,7 +24,6 @@ BuildRequires: pkgconfig(libtzplatform-config)
 BuildRequires: pkgconfig(security-privilege-manager)
 BuildRequires: pkgconfig(security-manager)
 BuildRequires: pkgconfig(pkgmgr-info)
-BuildRequires: pkgconfig(privacy-guard-setting)
 BuildRequires: pkgconfig(capi-appfw-app-manager)
 BuildRequires: pkgconfig(capi-appfw-application)
 BuildRequires: pkgconfig(notification)
index 9955d2c0ee3fa585d052ffb68e0c2a48d7839ffe..444aafcb19f715d3a6a9f70169268fe64e613e96 100755 (executable)
@@ -1,7 +1,7 @@
 INCLUDE(FindPkgConfig)
 SET(pkg_name "org.tizen.privacy-setting")
 
-pkg_check_modules(${pkg_name} REQUIRED glib-2.0 evas elementary edje eina efl-extension security-privilege-manager icu-i18n dlog security-manager pkgmgr-info privacy-guard-setting capi-appfw-app-manager capi-appfw-application notification)
+pkg_check_modules(${pkg_name} REQUIRED glib-2.0 evas elementary edje eina efl-extension security-privilege-manager icu-i18n dlog security-manager pkgmgr-info capi-appfw-app-manager capi-appfw-application notification)
 
 SET(SRCS
        ${CMAKE_SOURCE_DIR}/common/src/common_utils.c
@@ -12,27 +12,6 @@ SET(SRCS
        src/privacy_menu_view.c
        src/privacy_list_view.c
        src/privacy_package_list_view.c
-       src/privacy_guard_list_view.c
-       src/privacy_guard_package_list_view.c
-       src/privacy_dlp_menu_view.c
-       src/privacy_dlp_reports_full_view.c
-       src/privacy_dlp_reports_app_rank_view.c
-       src/privacy_dlp_reports_data_stat_view.c
-       src/privacy_dlp_log_detailed_view.c
-       src/privacy_dlp_reports_rules_and_patterns_view.c
-       src/privacy_dlp_rule_list_view.c
-       src/privacy_dlp_rule_delete_view.c
-       src/privacy_dlp_rule_detailed_view.c
-       src/privacy_dlp_rule_edit_view.c
-       src/privacy_dlp_pattern_list_view.c
-       src/privacy_dlp_pattern_detailed_view.c
-       src/privacy_dlp_reports_del_view.c
-       src/privacy_dlp_choose_rule_template_view.c
-       src/privacy_dlp_choose_apps_view.c
-       src/privacy_dlp_rule_create_view.c
-       src/privacy_dlp_pattern_create_view.c
-       src/privacy_dlp_pattern_delete_view.c
-       src/privacy_view.c
 )
 
 FOREACH(flag ${${pkg_name}_CFLAGS})
index d21f249e471acfc22adcd71241afac58504b58ef..ea83975b2c2671abe048535efaf5d1905417e732 100644 (file)
 #include <Elementary.h>
 #include <glib.h>
 #include <app.h>
-#include <privacy_guard_client.h>
 
 #define PRIVACY_MENU_SETTING "IDS_ST_HEADER_PRIVACY_SETTINGS_ABB"
 #define PRIVACY_MENU_MONITOR "IDS_ST_HEADER_PRIVACY_MONITOR"
-#define PRIVACY_MENU_DLP "IDS_ST_HEADER_DATA_LEAK_MONITOR_SWA"
-#define PRIVACY_MENU_DLP_TITLE "IDS_ST_MBODY_DATA_LEAK_MONITOR_SWA"
-#define PRIVACY_MENU_DLP_DESCRIPTION "IDS_ST_SBODY_PREVENT_APPS_FROM_LEAKING_YOUR_SENSITIVE_DATA_WITHOUT_AUTHORISATION_SWA"
-#define PRIVACY_MENU_DLP_DESCRIPTION_NOTE "IDS_ST_SBODY_TO_ALLOW_THIS_FUNCTION_TO_MONITOR_YOUR_PERSONAL_INFORMATION_YOU_NEED_TO_SET_UP_YOUR_PROFILE_IN_CONTACTS_SWA"
-#define PRIVACY_MENU_DLP_PROFILE "IDS_ST_MBODY_PROTECTION_MODE_SWA"
-#define PRIVACY_MENU_DLP_PROFILE_BASIC "IDS_ST_MBODY_BASIC_M_MODE_SWA"
-#define PRIVACY_MENU_DLP_PROFILE_ADVANCED "IDS_ST_MBODY_ADVANCED_M_MODE_SWA"
-#define PRIVACY_MENU_DLP_PROFILE_CUSTOM "IDS_ST_MBODY_CUSTOM_M_MODE_SWA"
-#define PRIVACY_MENU_DLP_PROFILE_BASIC_DESCRIPTION "IDS_ST_SBODY_MONITOR_YOUR_MAIN_SENSITIVE_DATA_TO_PREVENT_IT_FROM_BEING_LEAKED_BY_MOST_APPS_THIS_MODE_IS_SUITABLE_FOR_REGULAR_USERS_SWA"
-#define PRIVACY_MENU_DLP_PROFILE_ADVANCED_DESCRIPTION "IDS_ST_SBODY_SET_UP_STRICT_RULES_TO_PREVENT_DATA_LEAKAGE_SWA"
-#define PRIVACY_MENU_DLP_PROFILE_ADVANCED_DESCRIPTION_NOTE "IDS_ST_SBODY_THIS_MODE_WILL_AFFECT_APP_PERFORMANCE_SWA"
-#define PRIVACY_MENU_DLP_PROFILE_ADVANCED_ALERT "IDS_ST_POP_SOME_APPS_MAY_BE_BLOCKED_SWA"
-#define PRIVACY_MENU_DLP_PROFILE_ADVANCED_MODE "IDS_ST_HEADER_TURN_ON_ADVANCED_PROTECTION_MODE_SWA"
-#define PRIVACY_MENU_DLP_PROFILE_CUSTOM_DESCRIPTION "IDS_ST_SBODY_CHANGE_DEFAULT_RULES_AND_PATTERNS_AND_CREATE_YOUR_OWN_TO_SET_UP_A_CUSTOMISED_PROTECTION_MODE_SWA"
-#define PRIVACY_MENU_DLP_REPORTS "IDS_ST_HEADER_REPORTS_SWA"
-#define PRIVACY_MENU_DLP_REPORTS_FULL "IDS_ST_MBODY_FULL_REPORTS_SWA"
-#define PRIVACY_MENU_DLP_REPORTS_APP_RANK "IDS_ST_MBODY_APP_RANKINGS_SWA"
-#define PRIVACY_MENU_DLP_REPORTS_STATISTICS "IDS_ST_MBODY_DATA_STATISTICS_SWA"
-#define PRIVACY_MENU_DLP_REPORTS_RULES_AND_PATTERNS "IDS_ST_MBODY_RULES_AND_PATTERNS_SWA"
-#define PRIVACY_MENU_DLP_REPORTS_EMPTY "IDS_ST_NPBODY_NO_REPORTS_SWA"
-#define PRIVACY_MENU_DLP_REPORTS_LOG_TITLE "IDS_ST_HEADER_REPORT_DETAILS_SWA"
-#define PRIVACY_MENU_DLP_REPORTS_TOTAL_LEAKS "IDS_ST_SBODY_TOTAL_LEAKS_SWA"
-#define PRIVACY_MENU_DLP_SETTINGS "IDS_ST_HEADER_SETTINGS_SWA"
-#define PRIVACY_MENU_DLP_SETTINGS_LOGS_PERIOD "IDS_ST_MBODY_KEEP_LOGS_SWA"
-#define PRIVACY_MENU_DLP_SETTINGS_LOGS_CLEANED "IDS_LOGS_CLEANED"
-#define PRIVACY_MENU_DLP_SETTINGS_LOGS_CLEANED_FAILED "IDS_LOGS_CLEANED_FAILED"
-#define PRIVACY_MENU_DLP_SETTINGS_LOGS_CLEAN_PERIOD_1_DAY "IDS_ST_OPT_1_DAY_SWA"
-#define PRIVACY_MENU_DLP_SETTINGS_LOGS_CLEAN_PERIOD_1_WEEK "IDS_ST_OPT_1_WEEK_SWA"
-#define PRIVACY_MENU_DLP_SETTINGS_LOGS_CLEAN_PERIOD_1_MONTH "IDS_ST_OPT_1_MONTH_SWA"
-#define PRIVACY_MENU_DLP_REPORTS_DETAILS_CATEGORY "IDS_ST_BODY_CATEGORY_C_SWA"
-#define PRIVACY_MENU_DLP_REPORTS_DETAILS_APPLICATION "IDS_ST_BODY_APP_C_SWA"
-#define PRIVACY_MENU_DLP_REPORTS_DETAILS_DESTINATION "IDS_ST_BODY_DESTINATION_C_SWA"
-#define PRIVACY_MENU_DLP_REPORTS_DETAILS_PATTERN "IDS_ST_BODY_PATTERN_C_SWA"
-#define PRIVACY_MENU_DLP_REPORTS_DETAILS_ACTION "IDS_ST_BODY_DLP_ACTION"
-#define PRIVACY_MENU_DLP_REPORTS_DETAILS_LOG "IDS_ST_BODY_PACKET_C_SWA"
-#define PRIVACY_MENU_DLP_REPORTS_DETAILS_ACTION_ALLOW "IDS_ST_BODY_DLP_ACTION_ALLOW"
-#define PRIVACY_MENU_DLP_REPORTS_DETAILS_ACTION_DENY "IDS_ST_BODY_DLP_ACTION_DENY"
-#define PRIVACY_MENU_DLP_REPORTS_DETAILS_ACTION_SANITIZE "IDS_ST_BODY_DLP_ACTION_SANITIZE"
-#define PRIVACY_MENU_DLP_REPORTS_DETAILS_ACTION_ALL_RULES "IDS_ST_BODY_DLP_ACTION_ALL_RULES"
-#define PRIVACY_MENU_DLP_CREATE_RULE_QUICK "IDS_ST_OPT_QUICK_M_PROTECTION_MODE_SWA"
-#define PRIVACY_MENU_DLP_CREATE_RULE_QUICK_DESCRIPTION "IDS_ST_SBODY_CREATE_RULES_QUICKLY_AND_EASILY_SWA"
-#define PRIVACY_MENU_DLP_CREATE_RULE_CUSTOM "IDS_ST_MBODY_CUSTOM_SWA"
-#define PRIVACY_MENU_DLP_CREATE_RULE_CUSTOM_DESCRIPTION "IDS_ST_SBODY_CREATE_RULES_FROM_SCRATCH_TO_GIVE_YOU_FULL_CONTROL_OF_YOUR_DATA_PROTECTION_USE_THIS_OPTION_TO_CREATE_NON_STANDARD_RULES_SWA"
-#define PRIVACY_MENU_DLP_RULES_N_PATTERNS_TITLE "IDS_ST_HEADER_CUSTOM_PROTECTION_MODE_SWA"
-#define PRIVACY_MENU_DLP_RULES_N_PATTERNS_TITLE_RULES "IDS_ST_TAB_RULES_SWA"
-#define PRIVACY_MENU_DLP_RULES_N_PATTERNS_TITLE_PATTERNS "IDS_ST_TAB_PATTERNS_SWA"
-#define PRIVACY_MENU_DLP_RULE_DETAIL_TITLE "IDS_ST_HEADER_RULE_DETAILS_SWA"
-#define PRIVACY_MENU_DLP_PATTERN_DETAIL_TITLE "IDS_ST_HEADER_PATTERN_DETAILS_SWA"
-#define PRIVACY_MENU_DLP_CREATE_RULES_CHOOSE_TEMPLATE "IDS_ST_HEADER_SELECT_TEMPLATE_SWA"
-#define PRIVACY_MENU_DLP_CREATE_RULES_CHOOSE_APPS "IDS_ST_HEADER_SELECT_APPS_SWA"
-#define PRIVACY_MENU_DLP_CREATE_RULES_CHOOSE_ACTION "IDS_ST_BODY_DLP_CREATE_RULES_CHOOSE_ACTION"
-#define PRIVACY_MENU_DLP_CREATE_RULES_MENU_NEXT "IDS_ST_ACBUTTON_NEXT_SWA"
-#define PRIVACY_MENU_DLP_CREATE_RULES_MENU_CANCEL "IDS_ST_ACBUTTON_CANCEL_SWA"
-#define PRIVACY_MENU_DLP_CREATE_RULES_MENU_DONE "IDS_ST_ACBUTTON_DONE_SWA"
-#define PRIVACY_MENU_DLP_CREATE_RULES_MENU_CUSTOM_RULE_CREATED_MESSAGE "IDS_ST_TPOP_RULE_CREATED_SWA"
-#define PRIVACY_MENU_DLP_CREATE_RULES_MENU_DELETE "IDS_ST_OPT_DELETE_SWA"
-#define PRIVACY_MENU_DLP_CREATE_RULES_MENU_DELETE_RULE_MESSAGE "IDS_ST_TPOP_RULE_DELETED_SWA"
-#define PRIVACY_MENU_DLP_CREATE_RULES_MENU_DELETE_RULE_POPUP_TITLE "IDS_ST_OPT_DELETE_SWA"
-#define PRIVACY_MENU_DLP_CREATE_RULES_MENU_DELETE_RULE_MESSAGE_MESSAGE "IDS_ST_POP_THIS_RULE_WILL_BE_DELETED_ABB_SWA"
-#define PRIVACY_MENU_DLP_CREATE_RULES_MENU_DELETE_PATTERN_POPUP_TITLE "IDS_ST_HEADER_DELETE_PATTERNS_SWA"
-#define PRIVACY_MENU_DLP_CREATE_RULES_MENU_DELETE_PATTERN_POPUP_MESSAGE_MESSAGE "IDS_ST_POP_PD_PATTERNS_WILL_BE_DELETED_ABB_SWA"
-#define PRIVACY_MENU_DLP_CREATE_RULES_MENU_DELETE_PATTERN_MESSAGE "IDS_ST_TPOP_PD_PATTERNS_DELETED_SWA"
-#define PRIVACY_MENU_DLP_CREATE_RULES_MENU_EDIT "IDS_ST_OPT_EDIT_SWA"
-#define PRIVACY_MENU_DLP_CREATE_RULES_MENU_SELECT_ALL "IDS_ST_MBODY_SELECT_ALL_SWA"
-#define PRIVACY_MENU_DLP_CREATE_RULES_MENU_CREATE "IDS_ST_OPT_CREATE_SWA"
-#define PRIVACY_MENU_DLP_CREATE_RULES_MENU_ALL_PATTERNS "IDS_ST_OPT_ALL_PATTERNS_SWA"
-#define PRIVACY_MENU_DLP_CREATE_RULES_MENU_NAME "IDS_ST_BODY_NAME_SWA"
-#define PRIVACY_MENU_DLP_CREATE_RULES_MENU_DESCRIPTION "IDS_ST_BODY_DESCRIPTION_SWA"
-#define PRIVACY_MENU_DLP_CREATE_RULES_MENU_CATEGORY "IDS_ST_BODY_CATEGORY_SWA"
-#define PRIVACY_MENU_DLP_CREATE_RULES_MENU_CATEGORY_NAME "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CATEGORY_NAME"
-#define PRIVACY_MENU_DLP_CREATE_RULES_MENU_SEARCH_TYPE_STRING_MATCH "IDS_ST_OPT_STRING_MATCH_SWA"
-#define PRIVACY_MENU_DLP_CREATE_RULES_MENU_SEARCH_TYPE_REGULAR_EXPRESSION "IDS_ST_OPT_REGULAR_EXPRESSION_SWA"
-#define PRIVACY_MENU_DLP_CREATE_PATTERN "IDS_ST_HEADER_CREATE_PATTERN_SWA"
-#define PRIVACY_MENU_DLP_LOG_ITEM_WILL_BE_DELETED "IDS_ST_POP_THIS_REPORT_WILL_BE_DELETED_ABB_SWA"
-#define PRIVACY_MENU_DLP_LOG_DELETE "IDS_ST_OPT_DELETE_SWA"
-#define PRIVACY_MENU_DLP_LOG_DELETE_LOG "IDS_ST_HEADER_DELETE_REPORT_SWA"
-#define PRIVACY_MENU_DLP_LOG_LOGS_WILL_BE_DELETED "IDS_ST_POP_PD_REPORTS_WILL_BE_DELETED_ABB_SWA"
-#define PRIVACY_MENU_DLP_LOG_DELETED "IDS_ST_TPOP_1_REPORT_DELETED_SWA"
-#define PRIVACY_MENU_DLP_LOG_SELECT_ALL "IDS_ST_MBODY_SELECT_ALL_SWA"
-#define PRIVACY_MENU_DLP_LOG_DELETE_BTN "IDS_ST_ACBUTTON_DELETE_SWA"
-#define PRIVACY_MENU_DLP_LOG_CANCEL_BTN "IDS_ST_ACBUTTON_CANCEL_SWA"
-#define PRIVACY_MENU_DLP_LOG_LOGS_DELETED "IDS_ST_TPOP_PD_REPORTS_DELETED_SWA"
-#define PRIVACY_MENU_DLP_LOG_DELETE_LOGS_TITLE "IDS_ST_HEADER_SELECT_ITEMS_SWA"
-#define PRIVACY_MENU_DLP_LOG_DELETE_LOGS_TITLE_SELECTED "IDS_ST_HEADER_PD_SELECTED_SWA"
-#define PRIVACY_MENU_DLP_BASIC_PROTECTION_MODE_APPLIED "IDS_ST_TPOP_BASIC_PROTECTION_MODE_TURNED_ON_SWA"
-#define PRIVACY_MENU_DLP_CUSTOM_PROTECTION_MODE_APPLIED "IDS_ST_TPOP_RULE_CREATED_SWA"
-#define PRIVACY_MENU_DLP_ADVANCED_PROTECTION_MODE_APPLIED "IDS_ST_TPOP_ADVANCED_PROTECTION_MODE_TURNED_ON_SWA"
-#define PRIVACY_MENU_DLP_DETAILS "IDS_ST_HEADER_DETAILS_SWA"
-#define PRIVACY_MENU_DLP_LEAKS_CAPTURED "IDS_ST_BODY_LEAKS_CAPTURED_SWA"
-#define PRIVACY_MENU_DLP_STRING_TYPE "IDS_ST_BODY_STRING_TYPE_SWA"
-#define PRIVACY_MENU_DLP_SEARCH_TERM "IDS_ST_BODY_SEARCH_TERM_SWA"
-#define PRIVACY_MENU_DLP_CATEGORY "IDS_ST_BODY_CATEGORY_SWA"
 
 struct app_data_s {
        Evas_Object *parent_layout;
index 5c8146fc858015533591e38e809aa1b9c806d55e..d16cfeb74d4f8e0d1db25dfaa13f7f1434c4d00f 100644 (file)
 
 #include "privacy_setting.h"
 
-#define KEEP_LOG_1_DAY 1
-#define KEEP_LOG_1_WEEK 7
-#define KEEP_LOG_1_MONTH 30
-
 #define SELECT_ALL_APPS_ITEM_ID NULL
 
 typedef struct {
@@ -75,76 +71,6 @@ typedef struct {
        bool status;
 } pg_item_data_s;
 
-typedef struct {
-       int log_id;
-       char* app_name;
-       char* app_icon;
-       time_t time_stamp;
-       PgDlpAction action;
-       char* destination;
-} dlp_log_s;
-
-typedef struct {
-       dlp_log_s* data;
-       Evas_Object* check;
-       bool is_checked;
-} dlp_item_log_s;
-
-typedef struct {
-       char* app_name;
-       char* app_icon;
-       GList* logs_list;
-} dlp_item_report_s;
-
-typedef struct {
-       get_custom_rule_s* data;
-} dlp_item_rule_s;
-
-typedef struct {
-       get_pattern_s* data;
-} dlp_item_pattern_s;
-
-/**
- * @brief      internal callback called when retrieving logs for the Application Ranking view
- * @param[in] user_id                  The user_id
- * @param[in] name                     The application name
- * @param[in] callback                 The actual callback function to use
- * @param[in] user_data                        User data to pass to the callback
- *
- * @return the result of operation (ERRORCODE : success, ....)
- *
- */
-typedef int (*dlp_foreach_leak_logs_cb) (const int, const char *, privacy_guard_client_leak_logs_cb, void *);
-
-/**
- * @brief      callback called to update the Application Ranking view
- * @param[in] sd                       app_data structure whose naviframe should be used
- */
-typedef void (*dlp_update_stats_cb)(struct app_data_s *);
-
-typedef struct {
-       const char* name;
-       dlp_foreach_leak_logs_cb foreach_leak_logs;
-       dlp_update_stats_cb update_stats;
-} dlp_statistics_cb_s;
-
-typedef struct {
-       char *id;
-       char *name;
-       char *icon_path;
-       bool is_checked;
-       Evas_Object *check;
-} application_item_s;
-
-// Options used in rule action filters (dropdowns)
-typedef enum {
-       ACTION_ALL = 0,
-       ACTION_ALLOW,
-       ACTION_DENY,
-       ACTION_SANITIZE,
-       ACTION_TOTAL ///< Defines the number of action options
-} rule_action_filter;
-
 /* privacy_package_list_view */
 void create_privacy_package_list_view(struct app_data_s *ad);
 
@@ -154,86 +80,4 @@ void create_privacy_list_view(struct app_data_s *ad);
 /* privacy_menu_view */
 void create_privacy_menu_view(struct app_data_s *ad);
 
-/* privacy_guard_list_view */
-void create_privacy_guard_list_view(struct app_data_s *ad);
-
-/* privacy_guard_package_list_view */
-void create_privacy_guard_package_list_view(struct app_data_s *ad);
-
-/* privacy_dlp_menu_view */
-void create_privacy_dlp_menu_view(struct app_data_s *ad);
-
-/* privacy_dlp_reports_full_view */
-void create_privacy_dlp_reports_full_view(dlp_statistics_cb_s *scb, struct app_data_s *ad);
-
-void update_privacy_dlp_reports_full_view(void);
-
-/* privacy_dlp_reports_app_rank_view */
-void create_privacy_dlp_reports_app_rank_view(struct app_data_s *ad);
-
-/* privacy_dlp_reports_data_stat_view */
-void create_privacy_dlp_reports_data_stat_view(struct app_data_s *ad);
-
-/* privacy_dlp_log_detailed_view */
-void create_privacy_dlp_log_detailed_view(dlp_item_log_s *item, struct app_data_s *ad);
-
-/* privacy_dlp_reports_rules_and_patterns_view */
-void create_privacy_dlp_reports_rules_and_patterns_view(struct app_data_s *ad, const dlp_profile_s *config);
-
-/* privacy_dlp_rule_list_view */
-void update_privacy_dlp_rules_list_view(void *rule_list_data);
-
-void create_privacy_dlp_rules_list_view(struct app_data_s *ad, Evas_Object *parent, Elm_Object_Item *pop_to_nf_it, const dlp_profile_s *config);
-
-/* privacy_dlp_pattern_list_view */
-void update_privacy_dlp_patterns_list_view(void *pattern_list_data);
-
-void create_privacy_dlp_patterns_list_view(struct app_data_s *ad, Evas_Object *parent, const dlp_profile_s *config);
-
-/* privacy_dlp_rule_detailed_view */
-void update_privacy_dlp_rule_detailed_view(void *rule_detailed_view_data, const int pattern_id, const char *rule_name, const char *rule_description);
-
-void create_privacy_dlp_rule_detailed_view(struct app_data_s *ad, Elm_Object_Item *pop_to_nf_it, get_custom_rule_s *current_rule, const dlp_profile_s *config, void *rule_list_data);
-
-/* privacy_dlp_rule_edit_view */
-void create_privacy_dlp_rule_edit_view(struct app_data_s *ad, Elm_Object_Item *pop_to_nf_it, dlp_profile_s *config, const get_custom_rule_s *current_rule, const GList *app_list, void *rule_list_data, void *rule_detailed_view_data);
-
-/* privacy_dlp_rule_delete_view */
-void create_privacy_dlp_rule_delete_view(struct app_data_s *ad, const GList *rule_list, void *rule_list_data);
-
-/* privacy_dlp_rule_create_view */
-void deselect_create_rule_radio_group(void);
-
-/* privacy_dlp_rule_edit_view */
-void update_privacy_dlp_rule_edit_view(void *rule_edit_data, const char *pattern, const PgDlpPatternType pattern_type, bool undeletable);
-
-/* privacy_dlp_rule_create_view */
-void create_privacy_dlp_rule_create_view(struct app_data_s *ad, Elm_Object_Item *pop_to_nf_it, dlp_profile_s *config, void *rule_list_data);
-
-/* privacy_dlp_pattern_detailed_view */
-void create_privacy_dlp_pattern_detailed_view(struct app_data_s *ad, const get_pattern_s *current_pattern, const dlp_profile_s *config, void *pattern_list_data);
-
-/* privacy_dlp_reports_del_view */
-void create_privacy_dlp_reports_del_view(GList* log_list, int action, struct app_data_s *ad);
-
-/* privacy_dlp_choose_rule_template_view */
-void clean_up_privacy_dlp_choose_rule_template_view(void);
-
-void create_privacy_dlp_choose_rule_template_view(struct app_data_s *ad, Elm_Object_Item *pop_to_nf_it, dlp_profile_s *config, void *rule_list_view_data);
-
-/* privacy_dlp_choose_apps_view */
-void create_privacy_dlp_choose_apps_view(struct app_data_s *ad, Elm_Object_Item *pop_to_nf_it, dlp_profile_s *config, const get_pattern_s *rule_template, void *rule_list_data, const get_custom_rule_s *editing_rule, const get_custom_rule_s *original_rule);
-
-bool filter_rule_by_action(int rule_action, rule_action_filter filter_action);
-
-/* privacy_dlp_pattern_create_view */
-void create_privacy_dlp_pattern_create_view(struct app_data_s *ad, void *rule_edit_view_data, void *pattern_list_view_data);
-
-/* privacy_dlp_pattern_delete_view */
-void create_privacy_dlp_pattern_delete_view(struct app_data_s *ad, const GList *pattern_list, void *pattern_list_data);
-
-// NOTE: code below is commented out because only allow actions will be
-//       released to Tizen 4.0, so action icons become meaningless.
-//void overlay_action_image(Evas_Object *icon, PgDlpAction action);
-
 #endif /* __UI_PRIVACY_SETTING_COMMON_UTILS_H_ */
diff --git a/ui/src/privacy_dlp_choose_apps_view.c b/ui/src/privacy_dlp_choose_apps_view.c
deleted file mode 100644 (file)
index 749f39c..0000000
+++ /dev/null
@@ -1,610 +0,0 @@
-/*
- * Copyright (c) 2017 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.
- */
-/*
- * @file       privacy_dlp_choose_apps_view.c
- * @version    1.0
- * @brief
- */
-
-#include "common_utils.h"
-#include "privacy_view.h"
-#include <privacy_guard_client.h>
-#include <app_manager.h>
-#include <string.h>
-
-#define DEFAULT_ICON_PATH _TZ_SYS_RO_APP"/org.tizen.privacy-setting/res/icon/default.png"
-
-typedef struct {
-       struct app_data_s *ad;
-       GList *app_list;
-       dlp_profile_s *config;
-       const get_pattern_s *rule_template;
-       const get_custom_rule_s *editing_rule;
-       const get_custom_rule_s *original_rule;
-       GList *editing_rules_list;
-       void *rule_list_data;
-       Evas_Object *genlist;
-       Evas_Object *done_button;
-       Evas_Object *next_button;
-       Elm_Object_Item *pop_to_nf_it;
-} choose_app_data_s;
-
-static void free_application_item(void *item)
-{
-       if (NULL != item) {
-               application_item_s *app_item = item;
-               free(app_item->id);
-               free(app_item->name);
-               free(app_item->icon_path);
-               g_slice_free(application_item_s, item);
-       }
-}
-
-static size_t get_number_of_selected_apps(Evas_Object *genlist);
-static void set_app_item_check_state(Elm_Object_Item *item, const bool state);
-static void delete_unchecked_apps_rules(const GList *editing_rules_list, GList *selected_apps_list);
-
-static bool _choose_apps_get_custom_rules_cb(int id, PgDlpAction action, int pattern_id, const char *name, const char *description, const char *application_id, int leaks_count, void *user_data)
-{
-       choose_app_data_s *data = user_data;
-       const get_custom_rule_s *original_rule = data->original_rule;
-       if (original_rule->action == action && original_rule->pattern_id == pattern_id) {
-               // Note that rule will be freed in _choose_app_nf_pop_cb(), together with data->editing_rules_list
-               get_custom_rule_s *rule = g_slice_new(get_custom_rule_s);
-
-               rule->id = id;
-               rule->action = action;
-               rule->pattern_id = pattern_id;
-               strncpy(rule->name, name, LEN_NAME);
-               rule->name[LEN_NAME - 1] = '\0';
-               strncpy(rule->description, description, LEN_DESCRIPTION);
-               rule->description[LEN_DESCRIPTION - 1] = '\0';
-               rule->leaks_count = leaks_count;
-               strncpy(rule->application_id, application_id, LEN_APPLICATION_ID);
-               rule->application_id[LEN_APPLICATION_ID - 1] = '\0';
-
-               data->editing_rules_list = g_list_prepend(data->editing_rules_list, rule);
-       }
-       return true;
-}
-
-static gint _compare_rule_app_id_cb(gconstpointer lhs, gconstpointer rhs)
-{
-       return strcmp(((const get_custom_rule_s *)lhs)->application_id, (const char *)rhs);
-}
-
-static gint _compare_selected_app_id_cb(gconstpointer lhs, gconstpointer rhs)
-{
-       return strcmp((const char *)lhs, (const char *)rhs);
-}
-
-static char *make_default_app_name(const char *app_id)
-{
-       // uses the last field of the app_id as default app name
-       const char* def_app_name = strrchr(app_id, '.');
-       if (NULL == def_app_name)
-               def_app_name = app_id; // if a dot is not found then use the app_id as default app name
-       else
-               ++def_app_name; // skip the dot
-
-       return strdup(def_app_name); // this must be freed by the caller
-}
-
-/**
- * @brief Internal callback function used to retrieve application information
- * @param[in] app_info appliation handle
- * @param[in] user_data the user data
- * @return this function always returns true
- */
-static bool _choose_app_app_info_cb(app_info_h app_info, void *user_data)
-{
-       // Note that app will be freed in _choose_app_nf_pop_cb(), together with choose_app_data->app_list
-       application_item_s *app = g_slice_new(application_item_s);
-
-       app->id = NULL;
-       int res = app_info_get_app_id(app_info, &(app->id));
-       if (res < 0) {
-               LOGE("app_info_get_id() failed. Error=%d", res);
-               // without an app_id it is not possible to create
-               // an app specific DLP rule, so we bail out
-               free(app);
-               return true;
-       }
-
-       // Note that app->name bellow will be freed by free_application_item(),
-       // called in _choose_app_nf_pop_cb()
-       char *label = NULL;
-       res = app_info_get_label(app_info, &label);
-       if (res < 0) {
-               LOGE("%s: app_info_get_label() failed. Error=%d", app->id, res);
-               app->name = make_default_app_name(app->id);
-       } else {
-               if (is_empty(label)) {
-                       free(label);
-                       label = make_default_app_name(app->id);
-               }
-               app->name = label;
-       }
-
-       // Note that app->icon_path bellow will be freed by free_application_item(),
-       // called in _choose_app_nf_pop_cb()
-       app->icon_path = NULL;
-       res = app_info_get_icon(app_info, &(app->icon_path));
-       if (res < 0) {
-               LOGE("app_info_get_icon() failed. Error=%d", res);
-               app->icon_path = strdup(DEFAULT_ICON_PATH);
-       }
-
-       choose_app_data_s *choose_app_data = user_data;
-       if (NULL == choose_app_data->editing_rule)
-               app->is_checked = true;
-       else {
-               app->is_checked = (is_empty(choose_app_data->editing_rule->application_id)
-                       || g_list_find_custom(choose_app_data->editing_rules_list, app->id, _compare_rule_app_id_cb));
-       }
-
-       app->check = NULL;
-
-       choose_app_data->app_list = g_list_prepend(choose_app_data->app_list, app);
-
-       return true;
-}
-
-static gint _compare_apps_cb(gconstpointer lhs, gconstpointer rhs)
-{
-       return strcasecmp(((const application_item_s *)lhs)->name, ((const application_item_s *)rhs)->name);
-}
-
-/**
- * @brief Internal callback function invoked when application genlist item is displayed
- * @param[in] data The item data passed to the elm_genlist_item_append() function
- * @param[in] obj The object invoking this callback function
- * @param[in] part The name of the item's part being rendered
- * @return the text to be displayed
- */
-static char *_gl_choose_app_text_get_cb(void *data, Evas_Object *obj, const char *part)
-{
-       application_item_s *app_item = data;
-
-       if (!strcmp(part, "elm.text"))
-               return strdup(app_item->name);
-
-       if (strcmp(part, "elm.text.multiline") == 0) {
-               if (SELECT_ALL_APPS_ITEM_ID != app_item->id)
-                       return strdup(app_item->id);
-       }
-
-       return NULL;
-}
-
-/**
- * @brief Internal callback function invoked when application genlist item is displayed
- * @param[in] data The item data passed to the elm_genlist_item_append() function
- * @param[in] obj The object invoking this callback function
- * @param[in] part The name of the item's part being rendered
- * @return the application icon to be displayed
- */
-static Evas_Object *_gl_choose_app_content_get_cb(void *data, Evas_Object *obj, const char *part)
-{
-       application_item_s *app_item = data;
-
-       if (strcmp(part, "elm.swallow.icon") == 0) {
-               if (SELECT_ALL_APPS_ITEM_ID != app_item->id) {
-                       Evas_Object *icon = elm_icon_add(obj);
-                       if (!elm_image_file_set(icon, app_item->icon_path, NULL))
-                               // Sometimes an app has a non-empty icon path, but still fails to set the icon image.
-                               // In these cases, we set the default icon to app
-                               elm_image_file_set(icon, DEFAULT_ICON_PATH, NULL);
-                       evas_object_size_hint_min_set(icon, ELM_SCALE_SIZE(50), ELM_SCALE_SIZE(50));
-                       return icon;
-               }
-       }
-
-       if (strcmp(part, "elm.swallow.end") == 0) {
-               Evas_Object *check = common_create_check(obj);
-               elm_check_state_set(check, app_item->is_checked ? EINA_TRUE : EINA_FALSE);
-               app_item->check = check;
-               return check;
-       }
-
-       return NULL;
-}
-
-static void _gl_choose_app_content_del_cb(void *data, Evas_Object* obj)
-{
-       free_application_item(data);
-}
-
-/**
- * @brief Internal callback function when the choose application menu is popped from naviframe
- * @param[in] data The user data passed to the callback function
- * @param[in] obj The object invoking this callback function
- * @return This function always returns EINA_TRUE
- */
-static Eina_Bool _choose_app_nf_pop_cb(void *data, Evas_Object* obj)
-{
-       choose_app_data_s *choose_app_data = data;
-       g_list_free(choose_app_data->app_list);
-       choose_app_data->app_list = NULL;
-
-       g_list_free_full(choose_app_data->editing_rules_list, free_dlp_rule);
-       choose_app_data->editing_rules_list = NULL;
-
-       if (NULL == choose_app_data->rule_template)
-               // in the create custom rule flow, we return to the create
-               // rule menu so we need to reset that radio group
-               deselect_create_rule_radio_group();
-
-       return EINA_TRUE;
-}
-
-/**
- * @brief Internal callback function when the cancel button is pressed
- * @param[in] data The user data passed to the callback function
- * @param[in] obj The object invoking this callback function
- * @param[in] event_info The structure containing the information on this event
- */
-static void _choose_app_cancel_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       choose_app_data_s *choose_app_data = data;
-       elm_naviframe_item_pop(choose_app_data->ad->nf);
-}
-
-/**
- * @brief Internal callback function when the done button is pressed
- * @param[in] data The user data passed to the callback function
- * @param[in] obj The object invoking this callback function
- * @param[in] event_info The structure containing the information on this event
- */
-static void _choose_app_done_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       const choose_app_data_s *choose_app_data = data;
-       const get_pattern_s *template = choose_app_data->rule_template;
-       const get_custom_rule_s *editing_rule = choose_app_data->editing_rule;
-       bool custom_rule_created = false;
-       GList *selected_apps_list = NULL;
-       GList *l; // note that the 0th element is "select all"
-       for (l = choose_app_data->app_list; l != NULL; l = l->next) {
-               const application_item_s *app_item = l->data;
-               if (NULL == app_item)
-                       continue;
-               if (!app_item->is_checked)
-                       continue;
-
-               const char *app_id = (SELECT_ALL_APPS_ITEM_ID == app_item->id) ? "" : app_item->id;
-               if (NULL == editing_rule) {
-                       // Rule creation
-                       const int res = privacy_guard_client_add_dlp_custom_rule(
-                               getuid(),
-                               PRIV_GUARD_DLP_ACTION_ALLOW,
-                               template->id,
-                               template->name,
-                               template->description,
-                               app_id);
-                       if (PRIV_GUARD_ERROR_SUCCESS == res) {
-                               LOGI("Created custom rule (template id=%d, app id=%s)", template->id, app_item->id);
-                               custom_rule_created = true;
-                       } else {
-                               LOGE("Failed to create custom rule (template id=%d, app id=%s). Error=%d", template->id, app_item->id, res);
-                       }
-               } else {
-                       // Rule editing
-                       const GList *found = g_list_find_custom(choose_app_data->editing_rules_list, app_id, _compare_rule_app_id_cb);
-                       if (NULL != found) {
-                               const get_custom_rule_s *found_rule = found->data;
-                               const int res = privacy_guard_client_update_dlp_custom_rule(
-                                       found_rule->id,
-                                       editing_rule->action,
-                                       editing_rule->pattern_id,
-                                       editing_rule->name,
-                                       editing_rule->description,
-                                       app_id);
-                               if (PRIV_GUARD_ERROR_SUCCESS == res)
-                                       LOGI("Updated custom rule (id=%d)", found_rule->id);
-                               else
-                                       LOGI("Failed to update custom rule (id=%d). Error=%d", editing_rule->id, res);
-                       } else {
-                               const int res = privacy_guard_client_add_dlp_custom_rule(
-                                       getuid(),
-                                       editing_rule->action,
-                                       editing_rule->pattern_id,
-                                       editing_rule->name,
-                                       editing_rule->description,
-                                       app_id);
-                               if (PRIV_GUARD_ERROR_SUCCESS == res)
-                                       LOGI("Created custom rule (app id=%s)", app_id);
-                               else
-                                       LOGE("Failed to create custom rule (app id=%s). Error=%d", app_id, res);
-                       }
-                       selected_apps_list = g_list_prepend(selected_apps_list, (SELECT_ALL_APPS_ITEM_ID == app_item->id) ? "" : app_item->id);
-               }
-
-               if (SELECT_ALL_APPS_ITEM_ID == app_item->id)
-                       break;
-       }
-
-       if (NULL != editing_rule) {
-               // delete rules that were unchecked by the user
-               delete_unchecked_apps_rules(choose_app_data->editing_rules_list, selected_apps_list);
-       }
-
-       g_list_free(selected_apps_list);
-
-       if (custom_rule_created) {
-               if (NULL == choose_app_data->rule_list_data) {
-                       show_toast_notification(
-                               dgettext("privacy-setting", PRIVACY_MENU_DLP_CUSTOM_PROTECTION_MODE_APPLIED),
-                               choose_app_data->ad->win);
-               } else {
-                       show_toast_notification(
-                               dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_CUSTOM_RULE_CREATED_MESSAGE),
-                               choose_app_data->ad->win);
-               }
-       }
-
-       // Update profile
-       if (NULL != choose_app_data->config) {
-               choose_app_data->config->profile = PRIV_GUARD_DLP_PROFILE_CUSTOM;
-               privacy_guard_client_set_dlp_profile(getuid(), choose_app_data->config);
-       }
-       // Refresh main menu to update new profile value
-       elm_genlist_realized_items_update(elm_object_item_part_content_get(choose_app_data->pop_to_nf_it, "default"));
-
-       clean_up_privacy_dlp_choose_rule_template_view();
-
-       elm_naviframe_item_pop_to(choose_app_data->pop_to_nf_it);
-
-       if (NULL != choose_app_data->rule_list_data)
-               // Update rules list view
-               update_privacy_dlp_rules_list_view(choose_app_data->rule_list_data);
-       else
-               // Create rules list view
-               create_privacy_dlp_reports_rules_and_patterns_view(choose_app_data->ad, choose_app_data->config);
-}
-
-static void _choose_app_next_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       choose_app_data_s *choose_app_data = data;
-       create_privacy_dlp_rule_edit_view(
-               choose_app_data->ad,
-               choose_app_data->pop_to_nf_it,
-               choose_app_data->config,
-               NULL,
-               choose_app_data->app_list,
-               choose_app_data->rule_list_data,
-               NULL);
-}
-
-/**
- * @brief Internal callback function when an application item is selected.
- * @param[in] data The user data passed to the elm_genlist_item_append() function
- * @param[in] obj The object invoking this callback function
- * @param[in] event_info The structure containing the information on this event
- */
-static void _choose_app_menu_item_selected_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       /* Get selected item */
-       Elm_Object_Item *ei = event_info;
-       application_item_s *app_item = elm_object_item_data_get(ei);
-
-       /* Unhighlight selected item */
-       elm_genlist_item_selected_set(ei, EINA_FALSE);
-
-       app_item->is_checked = !app_item->is_checked;
-
-       /* Set check box state, in case user tapped outside it */
-       elm_check_state_set(app_item->check, app_item->is_checked ? EINA_TRUE : EINA_FALSE);
-
-       choose_app_data_s *choose_app_data = data;
-       if (SELECT_ALL_APPS_ITEM_ID != app_item->id) {
-               Elm_Object_Item *select_all_item = elm_genlist_nth_item_get(choose_app_data->genlist, 0);
-               if (!app_item->is_checked) {
-                       /* set "Select all" check off */
-                       set_app_item_check_state(select_all_item, false);
-               } else {
-                       bool all_selected = true;
-                       GList *l;
-                       // check if all items are selected. Note that the 1st element of app_list
-                       // is the select button, so we start looping from the 2nd element
-                       for (l = g_list_nth(choose_app_data->app_list, 1); l != NULL; l = l->next) {
-                               if (!((application_item_s *)l->data)->is_checked) {
-                                       all_selected = false;
-                                       break;
-                               }
-                       }
-                       /* if all items are selected, set select all check on */
-                       if (all_selected)
-                               set_app_item_check_state(select_all_item, true);
-               }
-       } else {
-               /* Select or deselect items */
-               ei = elm_genlist_item_next_get(ei);
-               while (NULL != ei) {
-                       set_app_item_check_state(ei, app_item->is_checked);
-                       ei = elm_genlist_item_next_get(ei);
-               }
-       }
-
-       const Eina_Bool disable_next_button = get_number_of_selected_apps(choose_app_data->genlist) == 0 ? EINA_TRUE : EINA_FALSE;
-       if (NULL != choose_app_data->done_button)
-               elm_object_disabled_set(choose_app_data->done_button, disable_next_button);
-       else if (NULL != choose_app_data->next_button)
-               elm_object_disabled_set(choose_app_data->next_button, disable_next_button);
-}
-
-static size_t get_number_of_selected_apps(Evas_Object *genlist)
-{
-       const size_t total_apps = elm_genlist_items_count(genlist);
-       size_t app_count = 0;
-       size_t i;
-       // Count checked log ids
-       for (i = 1; i <= total_apps; ++i) { // note that 0th item is "Select all", so we skip it
-               Elm_Object_Item *item = elm_genlist_nth_item_get(genlist, i);
-               if (NULL != item) {
-                       application_item_s *app_item = elm_object_item_data_get(item);
-                       if (NULL != app_item && app_item->is_checked)
-                               ++app_count;
-               }
-       }
-
-       return app_count;
-}
-
-static void create_select_all_apps_item(choose_app_data_s *data)
-{
-       // Note that select_all_item bellow will be freed by free_application_item(),
-       // called in _choose_app_nf_pop_cb()
-       application_item_s *select_all_item = g_slice_new0(application_item_s);
-       select_all_item->id = SELECT_ALL_APPS_ITEM_ID;
-       select_all_item->name = strdup(dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_SELECT_ALL));
-       const get_custom_rule_s *editing_rule = data->editing_rule;
-       select_all_item->is_checked = (NULL == editing_rule || is_empty(editing_rule->application_id));
-       select_all_item->check = NULL;
-       data->app_list = g_list_prepend(data->app_list, select_all_item);
-}
-
-static void set_app_item_check_state(Elm_Object_Item *item, const bool state)
-{
-       if (NULL != item) {
-               application_item_s *app_item = elm_object_item_data_get(item);
-               app_item->is_checked = state;
-               elm_check_state_set(app_item->check, state ? EINA_TRUE : EINA_FALSE);
-       }
-}
-
-static void delete_unchecked_apps_rules(const GList *editing_rules_list, GList *selected_apps_list)
-{
-       const GList *l;
-       for (l = editing_rules_list; l != NULL; l = l->next) {
-               const get_custom_rule_s *rule = l->data;
-               if (NULL != g_list_find_custom(selected_apps_list, rule->application_id, _compare_selected_app_id_cb))
-                       continue;
-
-               const int res = privacy_guard_client_delete_dlp_custom_rule(rule->id);
-               if (PRIV_GUARD_ERROR_SUCCESS == res)
-                       LOGD("Rule %d deleted", rule->id);
-               else
-                       LOGE("Failed to delete rule %d. Error=%d", rule->id, res);
-       }
-}
-
-static void add_select_all_item_to_genlist(choose_app_data_s *data)
-{
-       Elm_Genlist_Item_Class *itc = elm_genlist_item_class_new();
-       itc->item_style = "singleline";
-       itc->func.text_get = _gl_choose_app_text_get_cb;
-       itc->func.content_get = _gl_choose_app_content_get_cb;
-       itc->func.del = NULL;
-
-       Elm_Object_Item *it = elm_genlist_item_append(data->genlist, itc, data->app_list->data, NULL, ELM_GENLIST_ITEM_NONE, _choose_app_menu_item_selected_cb, data);
-       log_if(it == NULL, 1, "Error in elm_genlist_item_append");
-
-       elm_genlist_item_class_free(itc);
-}
-
-
-/**
- * @brief Displays the Choose Applications view
- * @param[in] ad the appliation data
- * @param[in] pop_to_nf_it the view to return to after user press the done button
- * @param[in] config the user's configuration
- * @param[in] rule_template the pattern to be used as template for new rules
- * @param[in] rule_list_data pointer to a dlp_rule_list_data_s. May be NULL
- * @param[in] editing_rule rule being currently edited. May be NULL
- * @param[in] original_rule original rule (before editing). May be NULL if editing_rule is NULL
- */
-void create_privacy_dlp_choose_apps_view(struct app_data_s *ad, Elm_Object_Item *pop_to_nf_it, dlp_profile_s *config, const get_pattern_s *rule_template, void *rule_list_data, const get_custom_rule_s *editing_rule, const get_custom_rule_s *original_rule)
-{
-       if (NULL == ad || NULL == pop_to_nf_it || (NULL != editing_rule && NULL == original_rule)) {
-               LOGE("Invalid parameter");
-               return;
-       }
-
-       static choose_app_data_s data = { .ad = NULL, .app_list = NULL, .config = NULL, .rule_template = NULL, .genlist = NULL, .pop_to_nf_it = NULL };
-       data.ad = ad;
-       data.app_list = NULL;
-       data.config = config;
-       data.rule_template = rule_template;
-       data.editing_rule = editing_rule;
-       data.original_rule = original_rule;
-       data.editing_rules_list = NULL;
-       data.rule_list_data = rule_list_data;
-       data.pop_to_nf_it = pop_to_nf_it;
-       data.done_button = NULL;
-       data.next_button = NULL;
-
-       if (NULL != data.editing_rule) {
-               const int res = privacy_guard_client_foreach_dlp_rules(getuid(), PRIV_GUARD_DLP_PROFILE_CUSTOM, _choose_apps_get_custom_rules_cb, &data);
-               if (PRIV_GUARD_ERROR_SUCCESS != res) {
-                       LOGE("privacy_guard_client_foreach_dlp_rules() failed. Error=%d", res);
-                       return;
-               }
-       }
-
-       const int res = app_manager_foreach_app_info(_choose_app_app_info_cb, &data);
-       if (res < 0) {
-               LOGE("app_manager_foreach_app_info() failed. Error=%d", res);
-               return;
-       }
-
-       data.app_list = g_list_sort(data.app_list, _compare_apps_cb);
-       create_select_all_apps_item(&data);
-
-       data.genlist = common_genlist_add(ad->nf);
-       evas_object_size_hint_weight_set(data.genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
-       evas_object_size_hint_align_set(data.genlist, EVAS_HINT_FILL, EVAS_HINT_FILL);
-
-       add_select_all_item_to_genlist(&data);
-       Elm_Genlist_Item_Class *itc = elm_genlist_item_class_new();
-       itc->item_style = "multiline";
-       itc->func.text_get = _gl_choose_app_text_get_cb;
-       itc->func.content_get = _gl_choose_app_content_get_cb;
-       itc->func.del = _gl_choose_app_content_del_cb;
-       GList* l;
-       for (l = g_list_nth(data.app_list, 1); l != NULL; l = l->next) {
-               // append item to the genlist
-               Elm_Object_Item *it = NULL;
-               it = elm_genlist_item_append(data.genlist, itc, l->data, NULL, ELM_GENLIST_ITEM_NONE, _choose_app_menu_item_selected_cb, &data);
-               log_if(it == NULL, 1, "Error in elm_genlist_item_append");
-       }
-
-       elm_genlist_item_class_free(itc);
-
-       evas_object_show(data.genlist);
-
-       /* Add genlist to naviframe */
-       Elm_Object_Item *nf_it = elm_naviframe_item_push(
-               ad->nf,
-               dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_CHOOSE_APPS),
-               NULL,
-               NULL,
-               data.genlist,
-               NULL);
-
-       /* set callback to genlist item pop event */
-       elm_naviframe_item_pop_cb_set(nf_it, _choose_app_nf_pop_cb, &data);
-       /* add cancel button to naviframe title bar */
-       common_naviframe_btn_add(ad->nf, nf_it, true, dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_CANCEL),
-               _choose_app_cancel_cb, &data);
-       if (NULL != rule_template || NULL != editing_rule)
-               /* this is the quick rule creation flow or the rule edit flow, so add a done button to naviframe title bar */
-               data.done_button = common_naviframe_btn_add(ad->nf, nf_it, false, dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_DONE),
-                       _choose_app_done_cb, &data);
-       else
-               /* this is the custom rule creation flow, add next button to naviframe title bar */
-               data.next_button = common_naviframe_btn_add(ad->nf, nf_it, false, dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_NEXT),
-                       _choose_app_next_cb, &data);
-}
diff --git a/ui/src/privacy_dlp_choose_rule_template_view.c b/ui/src/privacy_dlp_choose_rule_template_view.c
deleted file mode 100644 (file)
index afa3a2b..0000000
+++ /dev/null
@@ -1,367 +0,0 @@
-/*
- * Copyright (c) 2017 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.
- */
-/*
- * @file       privacy_dlp_choose_rule_template_view.c
- * @version    1.0
- * @brief
- */
-
-#include "common_utils.h"
-#include "privacy_view.h"
-#include <privacy_guard_client.h>
-#include <efl_extension.h>
-
-// Struct used to store rule template menu data
-typedef struct {
-       struct app_data_s *ad;
-       GList *patterns_in_use_list;
-       GList *pattern_list;
-       const get_pattern_s *current_pattern;
-       dlp_profile_s *config;
-       void *rule_list_view_data;
-       Evas_Object *radio_group;
-       Evas_Object *next_button;
-       Elm_Object_Item *pop_to_nf_it;
-} quick_rule_template_data_s;
-
-static quick_rule_template_data_s quick_rule_template_data = {
-       .ad = NULL,
-       .patterns_in_use_list = NULL,
-       .pattern_list = NULL,
-       .current_pattern = NULL,
-       .config = NULL,
-       .radio_group = NULL,
-       .next_button = NULL,
-       .pop_to_nf_it = NULL };
-
-// Struct used to create rule template menu items
-typedef struct {
-       get_pattern_s *pattern;
-       Evas_Object *radio;
-} quick_rule_template_item_s;
-
-static bool _choose_rule_template_dlp_pattern_cb(
-       int id,
-       const char *pattern,
-       const char *name,
-       const char *description,
-       PgDlpPatternType type,
-       const char *category,
-       bool undeletable,
-       int leaks_count,
-       void *user_data)
-{
-       get_pattern_s *dlp_pattern = g_slice_new(get_pattern_s);
-
-       dlp_pattern->id = id;
-       strncpy(dlp_pattern->pattern, pattern, LEN_PATTERN);
-       dlp_pattern->pattern[LEN_PATTERN - 1] = '\0';
-       strncpy(dlp_pattern->name, name, LEN_NAME);
-       dlp_pattern->name[LEN_NAME - 1] = '\0';
-       strncpy(dlp_pattern->description, description, LEN_DESCRIPTION);
-       dlp_pattern->description[LEN_DESCRIPTION - 1] = '\0';
-       dlp_pattern->type = type;
-       strncpy(dlp_pattern->category.text, category, LEN_CATEGORY);
-       dlp_pattern->category.text[LEN_CATEGORY - 1] = '\0';
-       dlp_pattern->undeletable = undeletable;
-       dlp_pattern->leaks_count = leaks_count;
-
-       /* add pattern to pattern list */
-       quick_rule_template_data_s *data = user_data;
-       data->pattern_list = g_list_prepend(data->pattern_list, dlp_pattern);
-
-       return true;
-}
-
-/**
- * @brief Function that will be operated when rule template genlist is deleted.
- * @param[in] data The item data passed to the elm_genlist_item_append() function
- * @param[in] obj The Evas object handle to be passed to the callback function
- */
-static void _gl_rule_template_del_cb(void *data, Evas_Object *obj)
-{
-       quick_rule_template_item_s *item = data;
-       evas_object_del(item->radio);
-       g_slice_free(quick_rule_template_item_s, item);
-}
-
-/**
- * @brief Internal callback function invoked when rule template genlist item displayed
- * @param[in] data The item data passed to the elm_genlist_item_append() function
- * @param[in] obj The object invoking this callback function
- * @param[in] part The name of the item's part being rendered
- */
-static char *_gl_rule_template_text_get_cb(void *data, Evas_Object *obj, const char *part)
-{
-       get_pattern_s *dlp_pattern = ((quick_rule_template_item_s *)data)->pattern;
-
-       if (!strcmp(part, "elm.text"))
-               return strdup(dlp_pattern->name);
-
-       else if (!strcmp(part, "elm.text.multiline"))
-               return strdup(dlp_pattern->description);
-
-       else
-               return NULL;
-}
-
-/**
- * @brief Internal callback function invoked when rule template menu item displayed
- * @param[in] data The item data passed to the elm_genlist_item_append() function
- * @param[in] obj The object invoking this callback function
- * @param[in] part The name of the item's part being rendered
- */
-static Evas_Object* _gl_rule_template_get_cb(void *data, Evas_Object *obj, const char *part)
-{
-       if (strcmp(part, "elm.swallow.end") == 0) {
-               quick_rule_template_item_s *item = data;
-               item->radio = elm_radio_add(obj);
-               elm_radio_state_value_set(item->radio, item->pattern->id);
-               return item->radio;
-       }
-
-       return NULL;
-}
-
-/**
- * @brief Internal callback function when a rule template is selected.
- * @param[in] data The user data passed to the elm_genlist_item_append() function
- * @param[in] obj The object invoking this callback function
- * @param[in] event_info The structure containing the information on this event
- */
-static void _rule_template_menu_item_selected_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       Elm_Object_Item *ei = event_info;
-
-       /* Unhighlight selected item */
-       elm_genlist_item_selected_set(ei, EINA_FALSE);
-
-       /* Set radio group state */
-       quick_rule_template_item_s *item = elm_object_item_data_get(ei);
-       quick_rule_template_data_s *template_menu_data = data;
-       template_menu_data->current_pattern = item->pattern;
-       elm_radio_value_set(template_menu_data->radio_group, item->pattern->id);
-}
-
-/**
- * @brief Internal callback function when a rule template item is realized.
- * @param[in] data The user data passed to the evas_object_smart_callback_add() function
- * @param[in] obj The object invoking this callback function
- * @param[in] event_info The structure containing the information on this event
- */
-static void _gl_rule_template_item_realized_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       quick_rule_template_item_s *item = elm_object_item_data_get(event_info);
-       quick_rule_template_data_s *template_menu_data = data;
-
-       if (NULL == template_menu_data->radio_group &&
-                       NULL == g_list_find(template_menu_data->patterns_in_use_list, GINT_TO_POINTER(item->pattern->id))) {
-               // start of radio group
-               template_menu_data->radio_group = item->radio;
-               template_menu_data->current_pattern = item->pattern;
-               elm_radio_value_set(template_menu_data->radio_group, item->pattern->id);
-               elm_object_disabled_set(quick_rule_template_data.next_button, EINA_FALSE);
-       } else {
-               elm_radio_group_add(item->radio, template_menu_data->radio_group);
-       }
-}
-
-/**
- * @brief Internal callback function when the cancel button is pressed
- * @param[in] data The user data passed to the callback function
- * @param[in] obj The object invoking this callback function
- * @param[in] event_info The structure containing the information on this event
- */
-static void _rule_template_cancel_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       quick_rule_template_data_s *rule_template_data = data;
-       elm_naviframe_item_pop(rule_template_data->ad->nf);
-}
-
-/**
- * @brief Internal callback function when the next button is pressed
- * @param[in] data The user data passed to the callback function
- * @param[in] obj The object invoking this callback function
- * @param[in] event_info The structure containing the information on this event
- */
-static void _rule_template_next_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       quick_rule_template_data_s *rule_template_data = data;
-       create_privacy_dlp_choose_apps_view(
-               rule_template_data->ad,
-               rule_template_data->pop_to_nf_it,
-               rule_template_data->config,
-               rule_template_data->current_pattern,
-               rule_template_data->rule_list_view_data,
-               NULL,
-               NULL);
-}
-
-static void _gl_rule_template_item_swipe(void *data, Evas_Object *obj, void *event_info)
-{
-       Eina_List* items = elm_genlist_realized_items_get(obj);
-       if (NULL == items) {
-               return;
-       }
-
-       void *first_item = eina_list_data_get(items);
-       if (NULL == first_item) {
-               items = eina_list_free(items);
-               return;
-       }
-
-       quick_rule_template_item_s *item_data = elm_object_item_data_get(first_item);
-       if (NULL == item_data) {
-               items = eina_list_free(items);
-               return;
-       }
-
-       // resets radio group head to the genlist's first realized item
-       quick_rule_template_data_s *template_menu_data = data;
-       template_menu_data->radio_group = item_data->radio;
-
-       // add other realized items to radio group
-       size_t i;
-       for (i = 1; i < eina_list_count(items); ++i) {
-               void* nth_item = eina_list_nth(items, i);
-               if (NULL == nth_item) {
-                       return;
-               }
-
-               item_data = elm_object_item_data_get(nth_item);
-               elm_radio_group_add(item_data->radio, template_menu_data->radio_group);
-       }
-
-       if (NULL != template_menu_data->current_pattern)
-               elm_radio_value_set(template_menu_data->radio_group, template_menu_data->current_pattern->id);
-
-       items = eina_list_free(items);
-}
-
-/**
- * @brief Internal callback function when the choose template menu is popped from naviframe
- * @param[in] data The user data passed to the callback function
- * @param[in] obj The object invoking this callback function
- */
-static Eina_Bool _rule_template_nf_pop_cb(void *data, Evas_Object* obj)
-{
-       quick_rule_template_data_s *rule_template_data = data;
-       g_list_free_full(rule_template_data->pattern_list, free_dlp_pattern);
-       rule_template_data->pattern_list = NULL;
-       g_list_free(rule_template_data->patterns_in_use_list);
-       rule_template_data->patterns_in_use_list = NULL;
-       deselect_create_rule_radio_group();
-       return EINA_TRUE;
-}
-
-/**
- * @brief clean up the Choose Rule Template view's data
-*/
-void clean_up_privacy_dlp_choose_rule_template_view()
-{
-       g_list_free_full(quick_rule_template_data.pattern_list, free_dlp_pattern);
-       quick_rule_template_data.pattern_list = NULL;
-}
-
-/**
- * @brief Displays the quick rule creation view
- * @param[in] ad the appliation data
- * @param[in] pop_to_nf_it the view to pop to after user creates a new rule
- * @param[in] config the user's configuration
- * @param[in] rule_list_view_data pointer to a dlp_rule_list_data_s. May be NULL
- */
-void create_privacy_dlp_choose_rule_template_view(struct app_data_s *ad, Elm_Object_Item *pop_to_nf_it, dlp_profile_s *config, void *rule_list_view_data)
-{
-       if (NULL == ad) {
-               LOGE("Invalid parameter");
-               return;
-       }
-
-       quick_rule_template_data.ad = ad;
-       g_list_free(quick_rule_template_data.patterns_in_use_list);
-       g_list_free_full(quick_rule_template_data.pattern_list, free_dlp_pattern);
-       quick_rule_template_data.pattern_list = NULL;
-       quick_rule_template_data.current_pattern = NULL;
-       quick_rule_template_data.config = config;
-       quick_rule_template_data.rule_list_view_data = rule_list_view_data;
-       quick_rule_template_data.radio_group = NULL;
-       quick_rule_template_data.pop_to_nf_it = pop_to_nf_it;
-
-       const bool got_patterns = get_pattern_ids_in_use_list(&(quick_rule_template_data.patterns_in_use_list));
-       log_if(!got_patterns, 1, "get_pattern_ids_in_use_list() failed");
-
-       const int res = privacy_guard_client_foreach_dlp_patterns(_choose_rule_template_dlp_pattern_cb, &quick_rule_template_data);
-       if (PRIV_GUARD_ERROR_SUCCESS != res) {
-               LOGE("privacy_guard_client_foreach_dlp_patterns() failed. [%d]", res);
-               return;
-       }
-       quick_rule_template_data.pattern_list = g_list_reverse(quick_rule_template_data.pattern_list);
-
-       Evas_Object *genlist = common_genlist_add(ad->nf);
-       evas_object_size_hint_weight_set(genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
-       evas_object_size_hint_align_set(genlist, EVAS_HINT_FILL, EVAS_HINT_FILL);
-
-       Elm_Genlist_Item_Class *itc = elm_genlist_item_class_new();
-
-       itc->item_style = "multiline";
-       itc->func.text_get = _gl_rule_template_text_get_cb;
-       itc->func.content_get = _gl_rule_template_get_cb;
-       itc->func.del = _gl_rule_template_del_cb;
-
-       GList* l;
-       for (l = quick_rule_template_data.pattern_list; l != NULL; l = l->next) {
-               quick_rule_template_item_s *item = g_slice_new0(quick_rule_template_item_s);
-
-               // item data
-               item->pattern = l->data;
-               item->radio = NULL;
-
-               // append item to the genlist
-               Elm_Object_Item *it = elm_genlist_item_append(genlist, itc, item, NULL, ELM_GENLIST_ITEM_NONE, _rule_template_menu_item_selected_cb, &quick_rule_template_data);
-               log_if(it == NULL, 1, "Error in elm_genlist_item_append");
-
-               // check if pattern is already in use
-               if (g_list_find(quick_rule_template_data.patterns_in_use_list, GINT_TO_POINTER(item->pattern->id)) != NULL)
-                       elm_object_item_disabled_set(it, EINA_TRUE);
-
-               evas_object_smart_callback_add(genlist, "realized", _gl_rule_template_item_realized_cb, &quick_rule_template_data);
-       }
-
-       elm_genlist_item_class_free(itc);
-
-       evas_object_smart_callback_add(genlist, "swipe", _gl_rule_template_item_swipe, &quick_rule_template_data);
-
-       evas_object_show(genlist);
-
-       /* Add genlist to naviframe */
-       Elm_Object_Item *nf_it = elm_naviframe_item_push(
-               ad->nf,
-               dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_CHOOSE_TEMPLATE),
-               NULL,
-               NULL,
-               genlist,
-               NULL);
-
-       /* set callback to genlist item pop event */
-       elm_naviframe_item_pop_cb_set(nf_it, _rule_template_nf_pop_cb, &quick_rule_template_data);
-       /* add cancel button to naviframe title bar */
-       common_naviframe_btn_add(ad->nf, nf_it, true, dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_CANCEL),
-               _rule_template_cancel_cb, &quick_rule_template_data);
-       /* add next button to naviframe title bar */
-       quick_rule_template_data.next_button = common_naviframe_btn_add(ad->nf, nf_it, false,
-                dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_NEXT), _rule_template_next_cb, &quick_rule_template_data);
-       elm_object_disabled_set(quick_rule_template_data.next_button, EINA_TRUE);
-}
diff --git a/ui/src/privacy_dlp_log_detailed_view.c b/ui/src/privacy_dlp_log_detailed_view.c
deleted file mode 100644 (file)
index a856814..0000000
+++ /dev/null
@@ -1,252 +0,0 @@
-/**
- * Copyright (c) 2017 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.
- */
-/*
- * @file       privacy_dlp_log_detailed_view.c
- * @version    1.0
- * @brief
- */
-
-#include <efl_extension.h>
-#include <glib.h>
-#include <time.h>
-#include <tzplatform_config.h>
-#include <privacy_guard_client.h>
-#include "common_ctxpopup.h"
-#include "common_popup.h"
-#include "common_utils.h"
-#include "privacy_setting.h"
-#include "privacy_view.h"
-#include "privilege_info.h"
-
-typedef struct {
-       struct app_data_s *ad;
-       Evas_Object *entry;
-       Evas_Object *ctxpopup;
-       Evas_Object *confirm_popup;
-       dlp_item_log_s *item;
-} log_details_data_s;
-
-static log_details_data_s log_details_data = {
-       .ad = NULL,
-       .entry = NULL,
-       .ctxpopup = NULL,
-       .confirm_popup = NULL,
-       .item = NULL
-};
-
-static void _log_details_dismiss_menu_cb(void *data, Evas_Object *obj, void *event_info);
-static void _log_details_menu_cb(void *data, Evas_Object *obj, void *event_info);
-static void _log_details_menu_dismissed_cb(void *data, Evas_Object *obj, void *event_info);
-
-static void _log_details_popup_ok_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       log_details_data_s *ldd = data;
-       const dlp_log_s *leak_log = ldd->item->data;
-       const int log_id = leak_log->log_id;
-
-       const int res = privacy_guard_client_purge_leak_logs_by_logid(&log_id, 1);
-       if (PRIV_GUARD_ERROR_SUCCESS == res)
-               show_toast_notification(dgettext("privacy-setting", PRIVACY_MENU_DLP_LOG_DELETED), ldd->entry);
-       else
-               LOGE("Failed to delete logs. Error=%d", res);
-
-       elm_popup_dismiss(ldd->confirm_popup);
-       elm_naviframe_item_pop(ldd->ad->nf);
-       update_privacy_dlp_reports_full_view();
-}
-
-static void _log_details_popup_cancel_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       log_details_data_s *ldd = data;
-       elm_popup_dismiss(ldd->confirm_popup);
-}
-
-static void _log_details_popup_dismissed_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       log_details_data_s *ldd = data;
-       destroy_popup(ldd->confirm_popup);
-       ldd->confirm_popup = NULL;
-       eext_object_event_callback_add(ldd->entry, EEXT_CALLBACK_MORE, _log_details_menu_cb, ldd);
-}
-
-static void _log_details_delete_menu_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       log_details_data_s *ldd = data;
-       elm_ctxpopup_dismiss(ldd->ctxpopup);
-
-       ldd->confirm_popup = create_two_buttons_popup(
-                                    ldd->entry,
-                                    dgettext("privacy-setting", PRIVACY_MENU_DLP_LOG_DELETE_LOG),
-                                    dgettext("privacy-setting", PRIVACY_MENU_DLP_LOG_ITEM_WILL_BE_DELETED),
-                                    dgettext("privacy-setting", PRIVACY_MENU_DLP_LOG_DELETE_BTN),
-                                    _log_details_popup_ok_cb,
-                                    dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_CANCEL),
-                                    _log_details_popup_cancel_cb,
-                                        _log_details_popup_cancel_cb, ldd);
-
-       evas_object_smart_callback_add(ldd->confirm_popup, "dismissed", _log_details_popup_dismissed_cb, ldd);
-}
-
-static void _log_details_menu_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       log_details_data_s *ldd = data;
-
-       if (!ldd->ctxpopup) {
-               ldd->ctxpopup = create_ctxpop(ldd->ad);
-               elm_ctxpopup_item_append(ldd->ctxpopup, dgettext("privacy-setting", PRIVACY_MENU_DLP_LOG_DELETE), NULL, _log_details_delete_menu_cb, data);
-               evas_object_smart_callback_add(ldd->ctxpopup, "dismissed", _log_details_menu_dismissed_cb, ldd);
-       } else {
-               evas_object_show(ldd->ctxpopup);
-       }
-
-       eext_object_event_callback_del(ldd->entry, EEXT_CALLBACK_MORE, _log_details_menu_cb);
-       eext_object_event_callback_add(ldd->entry, EEXT_CALLBACK_MORE, _log_details_dismiss_menu_cb, ldd);
-}
-
-static void _log_details_menu_dismissed_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       log_details_data_s *ldd = data;
-
-       eext_object_event_callback_del(ldd->entry, EEXT_CALLBACK_MORE, _log_details_dismiss_menu_cb);
-       if (NULL == ldd->confirm_popup)
-               eext_object_event_callback_add(ldd->entry, EEXT_CALLBACK_MORE, _log_details_menu_cb, ldd);
-}
-
-static void _log_details_dismiss_menu_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       log_details_data_s *ldd = data;
-       elm_ctxpopup_dismiss(ldd->ctxpopup);
-}
-
-static void _log_details_back_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       log_details_data_s *ldd = data;
-       destroy_popup(ldd->confirm_popup);
-       ldd->confirm_popup = NULL;
-       elm_naviframe_item_pop(ldd->ad->nf);
-}
-
-static bool is_undisplayable_char(const unsigned char value)
-{
-       return (value != 0xa && value != 0xd && (value < ' ' || value > '~'));
-}
-
-static void add_log_info_to_entry(Evas_Object *entry, const char *format, ...)
-{
-       va_list arg_list;
-       va_start(arg_list, format);
-
-       GString* string_buf = g_string_new(NULL);
-       g_string_vprintf(string_buf, format, arg_list);
-       elm_entry_entry_insert(entry, string_buf->str);
-       g_string_free(string_buf, TRUE);
-
-       va_end(arg_list);
-}
-
-static void add_raw_packet_to_entry(Evas_Object *entry, const leak_log_get_detail_data_s *detailed_log)
-{
-       if (detailed_log->leak_len > 0) {
-               // Copy raw packet to a temporary buffer
-               const size_t packet_len = (detailed_log->pkt_len < LEN_RAW_PACKET) ? detailed_log->pkt_len : LEN_RAW_PACKET;
-               const size_t raw_buffer_len = packet_len + 1;
-               char *raw_packet = g_slice_alloc(raw_buffer_len);
-
-               memcpy(raw_packet, detailed_log->raw_packet, packet_len);
-
-               size_t i;
-               // Replaces undisplayable characters with "."
-               for (i = 0; i < packet_len; ++i) {
-                       if (is_undisplayable_char(raw_packet[i]))
-                               raw_packet[i] = '.';
-               }
-
-               char temp_char = raw_packet[detailed_log->leak_offset];
-               raw_packet[detailed_log->leak_offset] = 0;
-               elm_entry_entry_insert(entry, elm_entry_utf8_to_markup(raw_packet));
-               elm_entry_entry_insert(entry, "<hilight>");
-               raw_packet[detailed_log->leak_offset] = temp_char;
-               temp_char = raw_packet[detailed_log->leak_offset + detailed_log->leak_len];
-               raw_packet[detailed_log->leak_offset + detailed_log->leak_len] = 0;
-               elm_entry_entry_insert(entry, elm_entry_utf8_to_markup(raw_packet + detailed_log->leak_offset));
-               elm_entry_entry_insert(entry, "</hilight>");
-               raw_packet[detailed_log->leak_offset + detailed_log->leak_len] = temp_char;
-               // Make sure buffer is zero terminated
-               raw_packet[packet_len] = 0;
-               elm_entry_entry_insert(entry, elm_entry_utf8_to_markup(raw_packet + detailed_log->leak_offset + detailed_log->leak_len));
-
-               g_slice_free1(raw_buffer_len, raw_packet);
-       }
-}
-
-/**
- * @brief Displays leak log details on the screen
- * @param[in] item The log item to be displayed
- * @param[in] ad The application data
- */
-void create_privacy_dlp_log_detailed_view(dlp_item_log_s *item, struct app_data_s *ad)
-{
-       // Create a message entry
-       Evas_Object *entry = elm_entry_add(ad->nf);
-       elm_entry_editable_set(entry, EINA_FALSE);
-       elm_entry_scrollable_set(entry, EINA_TRUE);
-       elm_entry_line_wrap_set(entry, ELM_WRAP_CHAR);
-       elm_scroller_policy_set(entry, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_ON);
-       evas_object_size_hint_align_set(entry, EVAS_HINT_FILL, EVAS_HINT_FILL);
-       evas_object_size_hint_weight_set(entry, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
-
-       uid_t user_id = getuid();
-
-       leak_log_get_detail_data_s detailed_log;
-       int res = privacy_guard_client_get_leak_log_detail(user_id, item->data->log_id, &detailed_log);
-       log_if(res != PRIV_GUARD_ERROR_SUCCESS, 1, "privacy_guard_client_get_leak_log_detail() is failed. [%d]", res);
-
-       const char *log_info_syntax = "<br><b>%s </b> %s<br>";
-       add_log_info_to_entry(entry, log_info_syntax, dgettext("privacy-setting", PRIVACY_MENU_DLP_REPORTS_DETAILS_CATEGORY), detailed_log.category.text);
-       add_log_info_to_entry(entry, log_info_syntax, dgettext("privacy-setting", PRIVACY_MENU_DLP_REPORTS_DETAILS_APPLICATION), detailed_log.application_name);
-       add_log_info_to_entry(entry, log_info_syntax, dgettext("privacy-setting", PRIVACY_MENU_DLP_REPORTS_DETAILS_DESTINATION), detailed_log.destination);
-       add_log_info_to_entry(entry, log_info_syntax, dgettext("privacy-setting", PRIVACY_MENU_DLP_REPORTS_DETAILS_PATTERN), detailed_log.pattern_name);
-       // NOTE: code below is commented out because only allow actions will be
-       //       released to Tizen 4.0, so action information is not meaningful.
-       //add_log_info_to_entry(entry, dgettext("privacy-setting", PRIVACY_MENU_DLP_REPORTS_DETAILS_ACTION), get_log_action(detailed_log.action));
-       add_log_info_to_entry(entry, "<br><b>%s</b><br>", dgettext("privacy-setting", PRIVACY_MENU_DLP_REPORTS_DETAILS_LOG));
-       add_raw_packet_to_entry(entry, &detailed_log);
-
-       evas_object_show(entry);
-
-       log_details_data.ad = ad;
-       log_details_data.item = item;
-       log_details_data.entry = entry;
-
-       if (NULL == log_details_data.confirm_popup) {
-               destroy_popup(log_details_data.confirm_popup);
-               log_details_data.confirm_popup = NULL;
-       }
-
-       log_details_data.ctxpopup = NULL;
-
-       Evas_Object *back_btn = elm_button_add(ad->nf);
-       elm_object_style_set(back_btn, "naviframe/back_btn/default");
-       evas_object_smart_callback_add(back_btn, "clicked", _log_details_back_cb, &log_details_data);
-
-       // Change "Privacy Setting" to proper DID : use dgettext()
-       Elm_Object_Item *nf_it = elm_naviframe_item_push(ad->nf, dgettext("privacy-setting", PRIVACY_MENU_DLP_REPORTS_LOG_TITLE), back_btn, NULL, entry, NULL);
-
-       /* Register the Back and Menu event callback */
-       eext_object_event_callback_add(entry, EEXT_CALLBACK_MORE, _log_details_menu_cb, &log_details_data);
-
-       elm_object_item_domain_text_translatable_set(nf_it, PACKAGE, EINA_TRUE);
-}
diff --git a/ui/src/privacy_dlp_menu_view.c b/ui/src/privacy_dlp_menu_view.c
deleted file mode 100644 (file)
index 1db870e..0000000
+++ /dev/null
@@ -1,824 +0,0 @@
-/*
- * Copyright (c) 2017 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.
- */
-/*
- * @file       privacy_dlp_menu_view.c
- * @version    1.0
- * @brief
- */
-
-#include <efl_extension.h>
-#include <glib.h>
-#include <tzplatform_config.h>
-#include "common_popup.h"
-#include "common_utils.h"
-#include "privacy_setting.h"
-#include "privacy_view.h"
-#include "privilege_info.h"
-
-// Struct used to store profile items
-typedef struct {
-       PgDlpProfile profile;
-       Evas_Object *radio;
-} profile_radio_s;
-
-// Struct used to store keep days radio items
-typedef struct {
-       int id; // radio id
-       Evas_Object *radio; // radio component
-} keep_days_radio_s;
-
-// List used as reference to the Report options in DLP menu
-GList *menu_reports_list;
-
-Elm_Object_Item *profile_item;
-Elm_Object_Item *keepdays_item;
-Elm_Object_Item *main_menu_nf_it;
-Evas_Object *profile_radio_group;
-Evas_Object *paranoid_popup;
-Evas_Object *keep_days_radio_group;
-dlp_profile_s config;
-
-/**
- * @brief Internal callback function invoked when dlp on/off genlist item displayed
- * @param[in] data The user data passed to the elm_genlist_item_append() function
- * @param[in] obj The object invoking this callback function
- * @param[in] part The name of the item's part being rendered
- */
-static char* _gl_enabled_text_get_cb(void *data, Evas_Object *obj, const char *part)
-{
-       if (!strcmp(part, "elm.text")) {
-               return strdup(dgettext("privacy-setting", PRIVACY_MENU_DLP_TITLE));
-
-       } else if (!strcmp(part, "elm.text.multiline")) {
-               GString *string_buf = g_string_new(NULL);
-               g_string_printf(string_buf,     "%s<font_size=25><br/>%s</font_size>",
-                       dgettext("privacy-setting", PRIVACY_MENU_DLP_DESCRIPTION), dgettext("privacy-setting", PRIVACY_MENU_DLP_DESCRIPTION_NOTE));
-               char *description = strdup(string_buf->str);
-               g_string_free(string_buf, TRUE);
-               return description;
-       }
-
-       return NULL;
-}
-
-/**
- * @brief Internal callback function invoked when Protection Mode genlist item displayed
- * @param[in] data The user data passed to the elm_genlist_item_append() function
- * @param[in] obj The object invoking this callback function
- * @param[in] part The name of the item's part being rendered
- */
-static char* _gl_profile_text_get_cb(void *data, Evas_Object *obj, const char *part)
-{
-       if (!strcmp(part, "elm.text"))
-               return strdup(dgettext("privacy-setting", PRIVACY_MENU_DLP_PROFILE));
-
-       else if (!strcmp(part, "elm.text.multiline")) {
-               switch (config.profile) {
-               case PRIV_GUARD_DLP_PROFILE_BASIC:      return strdup(dgettext("privacy-setting", PRIVACY_MENU_DLP_PROFILE_BASIC));
-               case PRIV_GUARD_DLP_PROFILE_ADVANCED:   return strdup(dgettext("privacy-setting", PRIVACY_MENU_DLP_PROFILE_ADVANCED));
-               case PRIV_GUARD_DLP_PROFILE_CUSTOM:     return strdup(dgettext("privacy-setting", PRIVACY_MENU_DLP_PROFILE_CUSTOM));
-               default: LOGE("Invalid dlp profile configuration"); break;
-               }
-       }
-
-       return NULL;
-}
-
-static char* _gl_profile_item_text_get_cb(void *data, Evas_Object *obj, const char *part)
-{
-       profile_radio_s *profile_item = data;
-
-       if (!strcmp(part, "elm.text")) {
-               switch (profile_item->profile) {
-               case PRIV_GUARD_DLP_PROFILE_BASIC:
-                       return strdup(dgettext("privacy-setting", PRIVACY_MENU_DLP_PROFILE_BASIC));
-               case PRIV_GUARD_DLP_PROFILE_CUSTOM:
-                       return strdup(dgettext("privacy-setting", PRIVACY_MENU_DLP_PROFILE_CUSTOM));
-               case PRIV_GUARD_DLP_PROFILE_ADVANCED:
-                       return strdup(dgettext("privacy-setting", PRIVACY_MENU_DLP_PROFILE_ADVANCED));
-               default:
-                       LOGE("Invalid dlp profile configuration");
-                       break;
-               }
-       }
-
-       else if (!strcmp(part, "elm.text.multiline")) {
-               switch (profile_item->profile) {
-               case PRIV_GUARD_DLP_PROFILE_BASIC:
-                       return strdup(dgettext("privacy-setting", PRIVACY_MENU_DLP_PROFILE_BASIC_DESCRIPTION));
-               case PRIV_GUARD_DLP_PROFILE_CUSTOM:
-                       return strdup(dgettext("privacy-setting", PRIVACY_MENU_DLP_PROFILE_CUSTOM_DESCRIPTION));
-               case PRIV_GUARD_DLP_PROFILE_ADVANCED:
-               {
-                       GString *string_buf = g_string_new(NULL);
-                       g_string_printf(string_buf, "%s<font_size=25><br/>%s</font_size>",
-                               dgettext("privacy-setting", PRIVACY_MENU_DLP_PROFILE_ADVANCED_DESCRIPTION),
-                               dgettext("privacy-setting", PRIVACY_MENU_DLP_PROFILE_ADVANCED_DESCRIPTION_NOTE));
-                       char *advanced_description = strdup(string_buf->str);
-                       g_string_free(string_buf, TRUE);
-                       return advanced_description;
-               }
-               default:
-                       LOGE("Invalid dlp profile configuration");
-                       break;
-               }
-       }
-
-       return NULL;
-}
-
-static Evas_Object* _gl_profile_item_content_get_cb(void *data, Evas_Object *obj, const char *part)
-{
-       if (strcmp(part, "elm.swallow.end") == 0) {
-               profile_radio_s *profile_item = data;
-               profile_item->radio = elm_radio_add(obj);
-               return profile_item->radio;
-       }
-
-       return NULL;
-}
-
-static void _gl_profile_item_realized_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       profile_radio_s *profile_item = elm_object_item_data_get(event_info);
-
-       elm_radio_state_value_set(profile_item->radio, profile_item->profile);
-       if (PRIV_GUARD_DLP_PROFILE_BASIC == profile_item->profile) {
-               // start of radio group
-               profile_radio_group = profile_item->radio;
-       } else {
-               elm_radio_group_add(profile_item->radio, profile_radio_group);
-               if (PRIV_GUARD_DLP_PROFILE_ADVANCED == profile_item->profile) {
-                       // set state of radio group
-                       switch (config.profile) {
-                       case PRIV_GUARD_DLP_PROFILE_BASIC:
-                               elm_radio_value_set(profile_radio_group, PRIV_GUARD_DLP_PROFILE_BASIC);
-                               break;
-                       case PRIV_GUARD_DLP_PROFILE_CUSTOM:
-                               elm_radio_value_set(profile_radio_group, PRIV_GUARD_DLP_PROFILE_CUSTOM);
-                               break;
-                       case PRIV_GUARD_DLP_PROFILE_ADVANCED:
-                               elm_radio_value_set(profile_radio_group, PRIV_GUARD_DLP_PROFILE_ADVANCED);
-                               break;
-                       default:
-                               break;
-                       }
-               }
-       }
-}
-
-
-/**
- * @brief Internal callback function invoked when Reports group genlist item displayed
- * @param[in] data The user data passed to the elm_genlist_item_append() function
- * @param[in] obj The object invoking this callback function
- * @param[in] part The name of the item's part being rendered
- */
-static char* _gl_group_reports_text_get_cb(void *data, Evas_Object *obj, const char *part)
-{
-       if (!strcmp(part, "elm.text"))
-               return strdup(dgettext("privacy-setting", PRIVACY_MENU_DLP_REPORTS));
-
-       return NULL;
-}
-
-/**
- * @brief Internal callback function invoked when a Report genlist item is displayed
- * @param[in] data The user data passed to the elm_genlist_item_append() function
- * @param[in] obj The object invoking this callback function
- * @param[in] part The name of the item's part being rendered
- */
-static char* _gl_reports_text_get_cb(void *data, Evas_Object *obj, const char *part)
-{
-       item_data_s *id = data;
-       lreturn_if(!strcmp(part, "elm.text"), , strdup(id->title), "selected menu = %s", id->title);
-       return "FAIL";
-}
-
-/**
- * @brief Internal callback function invoked when Settings group genlist item is displayed
- * @param[in] data The user data passed to the elm_genlist_item_append() function
- * @param[in] obj The object invoking this callback function
- * @param[in] part The name of the item's part being rendered
- */
-static char* _gl_group_settings_text_get_cb(void *data, Evas_Object *obj, const char *part)
-{
-       if (!strcmp(part, "elm.text"))
-               return strdup(dgettext("privacy-setting", PRIVACY_MENU_DLP_SETTINGS));
-
-       return NULL;
-}
-
-/**
- * @brief Internal callback function invoked when text of keepdays item is displayed
- * @param[in] data The user data passed to the elm_genlist_item_append() function
- * @param[in] obj The object invoking this callback function
- * @param[in] part The name of the item's part being rendered
- */
-static char* _gl_keepdays_text_get_cb(void *data, Evas_Object *obj, const char *part)
-{
-       if (!strcmp(part, "elm.text"))
-               return strdup(dgettext("privacy-setting", PRIVACY_MENU_DLP_SETTINGS_LOGS_PERIOD));
-
-       else if (!strcmp(part, "elm.text.multiline")) {
-               switch (config.keep_log_days) {
-               case KEEP_LOG_1_DAY:    return strdup(dgettext("privacy-setting", PRIVACY_MENU_DLP_SETTINGS_LOGS_CLEAN_PERIOD_1_DAY));
-               case KEEP_LOG_1_WEEK:   return strdup(dgettext("privacy-setting", PRIVACY_MENU_DLP_SETTINGS_LOGS_CLEAN_PERIOD_1_WEEK));
-               case KEEP_LOG_1_MONTH:  return strdup(dgettext("privacy-setting", PRIVACY_MENU_DLP_SETTINGS_LOGS_CLEAN_PERIOD_1_MONTH));
-               default: break;
-               }
-       }
-
-       return strdup("");
-}
-
-static char* _gl_keepdays_item_text_get_cb(void *data, Evas_Object *obj, const char *part)
-{
-       const keep_days_radio_s *keep_days_item = data;
-       switch (keep_days_item->id) {
-       case KEEP_LOG_1_DAY:
-               return strdup(dgettext("privacy-setting", PRIVACY_MENU_DLP_SETTINGS_LOGS_CLEAN_PERIOD_1_DAY));
-       case KEEP_LOG_1_WEEK:
-               return strdup(dgettext("privacy-setting", PRIVACY_MENU_DLP_SETTINGS_LOGS_CLEAN_PERIOD_1_WEEK));
-       case KEEP_LOG_1_MONTH:
-               return strdup(dgettext("privacy-setting", PRIVACY_MENU_DLP_SETTINGS_LOGS_CLEAN_PERIOD_1_MONTH));
-       default:
-               LOGE("Invalid keep logs configuration");
-               break;
-       }
-
-       return NULL;
-}
-
-static Evas_Object* _gl_keepdays_item_content_get_cb(void *data, Evas_Object *obj, const char *part)
-{
-       if (strcmp(part, "elm.swallow.end") == 0) {
-               keep_days_radio_s *keep_days_item = data;
-               keep_days_item->radio = elm_radio_add(obj);
-               return keep_days_item->radio;
-       }
-
-       return NULL;
-}
-
-static void _gl_keepdays_item_realized_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       keep_days_radio_s *keep_days_item = elm_object_item_data_get(event_info);
-
-       elm_radio_state_value_set(keep_days_item->radio, keep_days_item->id);
-       if (KEEP_LOG_1_DAY == keep_days_item->id) {
-               // start of radio group
-               keep_days_radio_group = keep_days_item->radio;
-       } else {
-               elm_radio_group_add(keep_days_item->radio, keep_days_radio_group);
-               if (KEEP_LOG_1_MONTH == keep_days_item->id) {
-                       // set state of radio group
-                       switch (config.keep_log_days) {
-                       case KEEP_LOG_1_DAY:
-                               elm_radio_value_set(keep_days_radio_group, KEEP_LOG_1_DAY);
-                               break;
-                       case KEEP_LOG_1_WEEK:
-                               elm_radio_value_set(keep_days_radio_group, KEEP_LOG_1_WEEK);
-                               break;
-                       case KEEP_LOG_1_MONTH:
-                               elm_radio_value_set(keep_days_radio_group, KEEP_LOG_1_MONTH);
-                               break;
-                       default:
-                               break;
-                       }
-               }
-       }
-}
-
-/**
- * @brief Internal callback function invoked when dlp on/off button state change.
- * @param[in] data The user data passed to the evas_object_smart_callback_add() function
- * @param[in] obj The object invoking this callback function
- * @param[in] event_info The structure containing the information on this event
- */
-static void _check_enabled_changed_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       uid_t user_id = getuid();
-
-       int res = privacy_guard_client_set_dlp_profile(user_id, &config);
-       log_if(res != PRIV_GUARD_ERROR_SUCCESS, 1, "privacy_guard_client_set_dlp_profile() is failed. [%d]", res);
-}
-
-/**
- * @brief Internal callback function invoked when DLP on/off genlist item displayed.
- * @param[in] data The user data passed to the elm_genlist_item_append() function
- * @param[in] obj The object invoking this callback function
- * @param[in] part The name of the item's part being rendered
- */
-static Evas_Object *_gl_enabled_content_get_cb(void *data, Evas_Object *obj, const char *part)
-{
-       if (!strcmp(part, "elm.swallow.end")) {
-               Evas_Object *check = elm_check_add(obj);
-
-               evas_object_smart_callback_add(check, "changed", _check_enabled_changed_cb, NULL);
-               evas_object_propagate_events_set(check, EINA_FALSE);
-
-               evas_object_size_hint_weight_set(check, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
-               evas_object_size_hint_align_set(check, EVAS_HINT_FILL, EVAS_HINT_FILL);
-
-               elm_object_style_set(check, "on&off");
-               elm_check_state_set(check, false);
-               elm_check_state_pointer_set(check, (Eina_Bool *)(&(config.enabled)));
-
-               return check;
-       }
-
-       return NULL;
-}
-
-/**
- * @brief Internal callback function when log cleanup period change to monthly.
- * @param[in] config The configuration with new period value
- * @param[in] obj The object invoking this callback function
- */
-static void update_config_value(void *data, Elm_Object_Item* item)
-{
-       struct app_data_s *ad = data;
-
-       privacy_guard_client_set_dlp_profile(getuid(), &config);
-
-       elm_naviframe_item_pop(ad->nf);
-       elm_genlist_item_update(item);
-}
-
-/**
- * @brief Internal callback function called when DLP on/off item is selected
- * @param[in] data The user data passed to the elm_genlist_item_append() function
- * @param[in] obj The object invoking this callback function
- * @param[in] event_info The structure containing the information on this event
- */
-static void _gl_enabled_item_select_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       /* Unhighlight selected item */
-       elm_genlist_item_selected_set(event_info, EINA_FALSE);
-
-       /* get check object */
-       Evas_Object *check = elm_object_item_part_content_get(event_info, "elm.swallow.end");
-
-       /* flip dlp enabled state */
-       config.enabled = elm_check_state_get(check) ? 0 : 1;
-
-       const int res = privacy_guard_client_set_dlp_profile(getuid(), &config);
-       if (PRIV_GUARD_ERROR_SUCCESS == res) {
-               elm_check_state_set(check, config.enabled ? EINA_TRUE : EINA_FALSE);
-       } else {
-               LOGE("privacy_guard_client_set_dlp_profile() is failed. [%d]", res);
-       }
-}
-
-/**
- * @brief Internal callback function when default profile is selected.
- * @param[in] data The user data passed to the evas_object_smart_callback_add() function
- * @param[in] obj The object invoking this callback function
- * @param[in] event_info The structure containing the information on this event
- */
-static void _change_profile_item_select_default_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       Elm_Object_Item *ei = event_info;
-
-       /* Unhighlight selected item */
-       elm_genlist_item_selected_set(ei, EINA_FALSE);
-
-       if (PRIV_GUARD_DLP_PROFILE_BASIC == config.profile) {
-               /* Profile is already set to default, so nothing to do */
-               return;
-       }
-
-       config.profile = PRIV_GUARD_DLP_PROFILE_BASIC;
-       update_config_value(data, profile_item);
-
-       show_toast_notification(
-               dgettext("privacy-setting", PRIVACY_MENU_DLP_BASIC_PROTECTION_MODE_APPLIED),
-               ((struct app_data_s *)data)->win);
-}
-
-static bool _dlp_custom_rule_cb(int id, PgDlpAction action, int pattern_id, const char *name, const char *description, const char *application_id, int leaks_count, void *user_data)
-{
-       int *number_of_rules = user_data;
-       ++(*number_of_rules);
-       return true;
-}
-
-/**
- * @brief Internal callback function when custom profile is selected.
- * @param[in] data The user data passed to the evas_object_smart_callback_add() function
- * @param[in] obj The object invoking this callback function
- * @param[in] event_info The structure containing the information on this event
- */
-static void _change_profile_item_select_custom_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       Elm_Object_Item *ei = event_info;
-
-       /* Unhighlight selected item */
-       elm_genlist_item_selected_set(ei, EINA_FALSE);
-
-       if (PRIV_GUARD_DLP_PROFILE_CUSTOM == config.profile) {
-               /* Profile is already set to default, so nothing to do */
-               return;
-       }
-
-       int number_of_rules = 0;
-       int res = privacy_guard_client_foreach_dlp_rules(getuid(), PRIV_GUARD_DLP_PROFILE_CUSTOM, _dlp_custom_rule_cb, &number_of_rules);
-       if (PRIV_GUARD_ERROR_SUCCESS != res) {
-               LOGE("privacy_guard_client_foreach_dlp_rules() failed. Error=%d", res);
-               return;
-       }
-
-       if (0 == number_of_rules) {
-               //show_create_rule_menu(data);
-               create_privacy_dlp_rule_create_view(data, main_menu_nf_it, &config, NULL);
-       } else {
-               config.profile = PRIV_GUARD_DLP_PROFILE_CUSTOM;
-               update_config_value(data, profile_item);
-               // display rules and patterns list
-               create_privacy_dlp_reports_rules_and_patterns_view(data, &config);
-       }
-}
-
-static void _paranoid_popup_ok_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       config.profile = PRIV_GUARD_DLP_PROFILE_ADVANCED;
-       update_config_value(data, profile_item);
-       show_toast_notification(
-               dgettext("privacy-setting", PRIVACY_MENU_DLP_ADVANCED_PROTECTION_MODE_APPLIED),
-               ((struct app_data_s *)data)->win);
-       destroy_popup(paranoid_popup);
-}
-
-static void _paranoid_popup_cancel_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       elm_radio_value_set(profile_radio_group, config.profile);
-       destroy_popup(paranoid_popup);
-}
-
-/**
- * @brief Internal callback function when paranoid profile is selected.
- * @param[in] data The user data passed to the evas_object_smart_callback_add() function
- * @param[in] obj The object invoking this callback function
- * @param[in] event_info The structure containing the information on this event
- */
-static void _change_profile_item_select_paranoid_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       Elm_Object_Item *ei = event_info;
-
-       /* Unhighlight selected item */
-       elm_genlist_item_selected_set(ei, EINA_FALSE);
-
-       elm_radio_value_set(profile_radio_group, PRIV_GUARD_DLP_PROFILE_ADVANCED);
-
-       if (PRIV_GUARD_DLP_PROFILE_ADVANCED == config.profile) {
-               /* Profile is already set to paranoid, so nothing to do */
-               return;
-       }
-
-       paranoid_popup = create_two_buttons_popup(
-               ((struct app_data_s *)data)->nf,
-               dgettext("privacy-setting", PRIVACY_MENU_DLP_PROFILE_ADVANCED_MODE),
-               dgettext("privacy-setting", PRIVACY_MENU_DLP_PROFILE_ADVANCED_ALERT),
-               dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_DONE),
-               _paranoid_popup_ok_cb,
-               dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_CANCEL),
-               _paranoid_popup_cancel_cb,
-               _paranoid_popup_cancel_cb,
-               data);
-}
-
-/**
- * @brief Internal callback function to dismiss ctxpopup.
- * @param[in] data The user data passed to the evas_object_smart_callback_add() function
- * @param[in] obj The object invoking this callback function
- * @param[in] event_info The structure containing the information on this event
- */
-static void _dismissed_profile_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       Evas_Object *ctxpopup = data;
-
-       evas_object_smart_callback_del(ctxpopup, "dismissed", _dismissed_profile_cb);
-       evas_object_del(ctxpopup);
-}
-
-/**
- * @brief Internal callback function invoked when profile menu is clicked.
- * @param[in] data The user data passed to the evas_object_smart_callback_add() function
- * @param[in] obj The object invoking this callback function
- * @param[in] event_info The structure containing the information on this event
- */
-static void _selected_profile_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       struct app_data_s *ad = data;
-
-       /* Get selected privacy */
-       Elm_Object_Item *ei = event_info;
-
-       /* Unhighlight selected item */
-       elm_genlist_item_selected_set(ei, EINA_FALSE);
-
-       Evas_Object *genlist = NULL;
-       genlist = common_genlist_add(ad->nf);
-       evas_object_size_hint_weight_set(genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
-       evas_object_size_hint_align_set(genlist, EVAS_HINT_FILL, EVAS_HINT_FILL);
-       elm_genlist_mode_set(genlist, ELM_LIST_COMPRESS);
-
-       elm_object_style_set(genlist, "effect");
-
-       Elm_Genlist_Item_Class *itc = elm_genlist_item_class_new();
-
-       itc->item_style = "multiline";
-       itc->func.text_get = _gl_profile_item_text_get_cb;
-       itc->func.content_get = _gl_profile_item_content_get_cb;
-       itc->func.del = NULL;
-
-       static profile_radio_s profile_item_default = { .profile = PRIV_GUARD_DLP_PROFILE_BASIC, .radio = NULL };
-       elm_genlist_item_append(genlist, itc, &profile_item_default, NULL, ELM_GENLIST_ITEM_NONE, _change_profile_item_select_default_cb, ad);
-
-       static profile_radio_s profile_item_custom = { .profile = PRIV_GUARD_DLP_PROFILE_CUSTOM, .radio = NULL };
-       elm_genlist_item_append(genlist, itc, &profile_item_custom, NULL, ELM_GENLIST_ITEM_NONE, _change_profile_item_select_custom_cb, ad);
-
-       static profile_radio_s profile_item_paranoid = { .profile = PRIV_GUARD_DLP_PROFILE_ADVANCED, .radio = NULL };
-       elm_genlist_item_append(genlist, itc, &profile_item_paranoid, NULL, ELM_GENLIST_ITEM_NONE, _change_profile_item_select_paranoid_cb, ad);
-
-       evas_object_smart_callback_add(genlist, "realized", _gl_profile_item_realized_cb, NULL);
-       elm_genlist_item_class_free(itc);
-       evas_object_show(genlist);
-
-       /* Change "Privacy Setting" to proper DID : use dgettext() */
-       Elm_Object_Item *nf_it = elm_naviframe_item_push(ad->nf, dgettext("privacy-setting", PRIVACY_MENU_DLP_PROFILE), common_back_btn_add(ad), NULL, genlist, NULL);
-
-       elm_object_item_domain_text_translatable_set(nf_it, PACKAGE, EINA_TRUE);
-}
-
-/**
- * @brief Internal callback function invoked when a report menu is clicked.
- * @param[in] data The user data passed to the evas_object_smart_callback_add() function
- * @param[in] obj The object invoking this callback function
- * @param[in] event_info The structure containing the information on this event
- */
-static void _selected_report_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       /* Get selected privacy */
-       Elm_Object_Item *ei = event_info;
-       item_data_s *selected_id = elm_object_item_data_get(ei);
-       LOGD("%s is selected, index = %d", selected_id->menu, selected_id->index);
-
-       /* Unhighlight selected item */
-       elm_genlist_item_selected_set(ei, EINA_FALSE);
-
-       struct app_data_s *ad = (struct app_data_s *)data;
-
-       int ret = privilege_info_get_privacy_list(&(ad->privacy_list));
-       log_if(ret != PRVMGR_ERR_NONE, 1, "Failed to get privacy_list");
-
-       if (strstr(selected_id->menu, PRIVACY_MENU_DLP_REPORTS_FULL) != NULL)
-               create_privacy_dlp_reports_full_view(NULL, ad);
-
-       else if (strstr(selected_id->menu, PRIVACY_MENU_DLP_REPORTS_APP_RANK) != NULL)
-               create_privacy_dlp_reports_app_rank_view(ad);
-
-       else if (strstr(selected_id->menu, PRIVACY_MENU_DLP_REPORTS_STATISTICS) != NULL)
-               create_privacy_dlp_reports_data_stat_view(ad);
-
-       else if (strstr(selected_id->menu, PRIVACY_MENU_DLP_REPORTS_RULES_AND_PATTERNS) != NULL)
-               create_privacy_dlp_reports_rules_and_patterns_view(ad, &config);
-}
-
-/**
- * @brief Internal callback function when log cleanup period change to 1 week.
- * @param[in] data The user data passed to the evas_object_smart_callback_add() function
- * @param[in] obj The object invoking this callback function
- * @param[in] event_info The structure containing the information on this event
- */
-static void _change_period_week_ctxpopup_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       config.keep_log_days = KEEP_LOG_1_WEEK;
-       update_config_value(data, keepdays_item);
-}
-
-/**
- * @brief Internal callback function when log cleanup period change to 1 day.
- * @param[in] data The user data passed to the evas_object_smart_callback_add() function
- * @param[in] obj The object invoking this callback function
- * @param[in] event_info The structure containing the information on this event
- */
-static void _change_period_day_ctxpopup_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       config.keep_log_days = KEEP_LOG_1_DAY;
-       update_config_value(data, keepdays_item);
-}
-
-/**
- * @brief Internal callback function when log cleanup period change to monthly.
- * @param[in] data The user data passed to the evas_object_smart_callback_add() function
- * @param[in] obj The object invoking this callback function
- * @param[in] event_info The structure containing the information on this event
- */
-static void _change_period_month_ctxpopup_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       config.keep_log_days = KEEP_LOG_1_MONTH;
-       update_config_value(data, keepdays_item);
-}
-
-/**
- * @brief Internal callback function to dismiss period ctxpopup.
- * @param[in] data The user data passed to the evas_object_smart_callback_add() function
- * @param[in] obj The object invoking this callback function
- * @param[in] event_info The structure containing the information on this event
- */
-static void _dismissed_period_ctxpopup_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       Evas_Object *ctxpopup = data;
-
-       evas_object_smart_callback_del(ctxpopup, "dismissed", _dismissed_period_ctxpopup_cb);
-       evas_object_del(ctxpopup);
-}
-
-/**
- * @brief Internal callback function invoked when a logs keep day config option in menu is clicked.
- * @param[in] data The user data passed to the evas_object_smart_callback_add() function
- * @param[in] obj The object invoking this callback function
- * @param[in] event_info The structure containing the information on this event
- */
-static void _selected_keepdays_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       struct app_data_s *ad = data;
-
-       /* Get selected privacy */
-       Elm_Object_Item *ei = event_info;
-
-
-       /* Unhighlight selected item */
-       elm_genlist_item_selected_set(ei, EINA_FALSE);
-
-       Evas_Object *genlist = NULL;
-       genlist = common_genlist_add(ad->nf);
-       evas_object_size_hint_weight_set(genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
-       evas_object_size_hint_align_set(genlist, EVAS_HINT_FILL, EVAS_HINT_FILL);
-       elm_genlist_mode_set(genlist, ELM_LIST_COMPRESS);
-
-       elm_object_style_set(genlist, "effect");
-
-       Elm_Genlist_Item_Class *itc = elm_genlist_item_class_new();
-
-       itc->item_style = "default";
-       itc->func.text_get = _gl_keepdays_item_text_get_cb;
-       itc->func.content_get = _gl_keepdays_item_content_get_cb;
-       itc->func.del = NULL;
-
-
-       static keep_days_radio_s keep_days_radio_item_1_day = { .id = KEEP_LOG_1_DAY, .radio = NULL };
-       elm_genlist_item_append(genlist, itc, &keep_days_radio_item_1_day, NULL, ELM_GENLIST_ITEM_NONE, _change_period_day_ctxpopup_cb, ad);
-
-       static keep_days_radio_s keep_days_radio_item_1_week = { .id = KEEP_LOG_1_WEEK, .radio = NULL };
-       elm_genlist_item_append(genlist, itc, &keep_days_radio_item_1_week, NULL, ELM_GENLIST_ITEM_NONE, _change_period_week_ctxpopup_cb, ad);
-
-       static keep_days_radio_s keep_days_radio_item_1_month = { .id = KEEP_LOG_1_MONTH, .radio = NULL };
-       elm_genlist_item_append(genlist, itc, &keep_days_radio_item_1_month, NULL, ELM_GENLIST_ITEM_NONE, _change_period_month_ctxpopup_cb, ad);
-
-       elm_genlist_item_class_free(itc);
-
-       evas_object_smart_callback_add(genlist, "realized", _gl_keepdays_item_realized_cb, NULL);
-
-       evas_object_show(genlist);
-
-       /* Change "Privacy Setting" to proper DID : use dgettext() */
-       Elm_Object_Item *nf_it = elm_naviframe_item_push(ad->nf, dgettext("privacy-setting", PRIVACY_MENU_DLP_SETTINGS_LOGS_PERIOD), common_back_btn_add(ad), NULL, genlist, NULL);
-
-       elm_object_item_domain_text_translatable_set(nf_it, PACKAGE, EINA_TRUE);
-}
-
-/*
- * @brief Function will be operated when genlist is deleted.
- * @param[in] data The data to be passed to the callback function
- * @param[in] obj The Evas object handle to be passed to the callback function
- */
-static void _gl_del_item_cb(void *data, Evas_Object *obj)
-{
-       g_slice_free(item_data_s, data);
-}
-
-/*
- * @brief Function will be operated when genlist is deleted.
- * @param[in] data The data to be passed to the callback function
- * @param[in] obj The Evas object handle to be passed to the callback function
- */
-static void _gl_del_config_cb(void *data, Evas_Object *obj)
-{
-}
-
-/**
- * @brief Creates essential objects for the screen.
- */
-void create_privacy_dlp_menu_view(struct app_data_s *ad)
-{
-       Evas_Object *genlist = common_genlist_add(ad->nf);
-
-       uid_t user_id = getuid();
-
-       evas_object_size_hint_weight_set(genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
-       evas_object_size_hint_align_set(genlist, EVAS_HINT_FILL, EVAS_HINT_FILL);
-       elm_genlist_mode_set(genlist, ELM_LIST_COMPRESS);
-
-       // get DLP configuration
-       int res = privacy_guard_client_get_dlp_profile(user_id, &config);
-       log_if(res != PRIV_GUARD_ERROR_SUCCESS, 1, "privacy_guard_client_get_dlp_profile() is failed. [%d]", res);
-
-       // Option to Enable/Disable DLP
-       Elm_Genlist_Item_Class *itc_enabled = elm_genlist_item_class_new();
-
-       itc_enabled->item_style = "multiline";
-       itc_enabled->func.text_get = _gl_enabled_text_get_cb;
-       itc_enabled->func.content_get = _gl_enabled_content_get_cb;
-       itc_enabled->func.del = _gl_del_config_cb;
-
-       elm_genlist_item_append(genlist, itc_enabled, NULL, NULL, ELM_GENLIST_ITEM_NONE, _gl_enabled_item_select_cb, NULL);
-       elm_genlist_item_class_free(itc_enabled);
-
-       // Option to Select Protection Mode
-       Elm_Genlist_Item_Class *itc_profile = elm_genlist_item_class_new();
-
-       itc_profile->item_style = "multiline";
-       itc_profile->func.text_get = _gl_profile_text_get_cb;
-
-       profile_item = elm_genlist_item_append(genlist, itc_profile, NULL, NULL, ELM_GENLIST_ITEM_NONE, _selected_profile_cb, ad);
-       elm_genlist_item_class_free(itc_profile);
-
-       // Options of DLP Reports
-       if (menu_reports_list != NULL) {
-               g_list_free(menu_reports_list);
-               menu_reports_list = NULL;
-       }
-
-       menu_reports_list = g_list_prepend(menu_reports_list, PRIVACY_MENU_DLP_REPORTS_FULL);
-       menu_reports_list = g_list_prepend(menu_reports_list, PRIVACY_MENU_DLP_REPORTS_APP_RANK);
-       menu_reports_list = g_list_prepend(menu_reports_list, PRIVACY_MENU_DLP_REPORTS_STATISTICS);
-       menu_reports_list = g_list_prepend(menu_reports_list, PRIVACY_MENU_DLP_REPORTS_RULES_AND_PATTERNS);
-       menu_reports_list = g_list_reverse(menu_reports_list);
-
-       Elm_Genlist_Item_Class *gtc_reports = elm_genlist_item_class_new();
-       gtc_reports->item_style = "group_index";
-       gtc_reports->func.text_get = _gl_group_reports_text_get_cb;
-
-       Elm_Object_Item *it_reports = elm_genlist_item_append(genlist, gtc_reports, NULL, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
-       log_if(it_reports == NULL, 1, "Error in elm_genlist_item_append");
-
-       Elm_Genlist_Item_Class *itc_reports = elm_genlist_item_class_new();
-       itc_reports->item_style = "default";
-       itc_reports->func.text_get = _gl_reports_text_get_cb;
-       itc_reports->func.del = _gl_del_item_cb;
-
-       elm_genlist_item_select_mode_set(it_reports, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
-
-       int i = 0;
-       for (i = 0; i < (int)g_list_length(menu_reports_list); ++i) {
-               item_data_s *id = g_slice_new0(item_data_s); // note that id is freed in _gl_del_item_cb
-               id->index = i;
-               id->menu = (char*)g_list_nth_data(menu_reports_list, i);
-               id->title = strdup(dgettext("privacy-setting", id->menu));
-               it_reports = elm_genlist_item_append(genlist, itc_reports, id, NULL, ELM_GENLIST_ITEM_NONE, _selected_report_cb, ad);
-               log_if(it_reports == NULL, 1, "Error in elm_genlist_item_append");
-       }
-
-       elm_genlist_item_class_free(itc_reports);
-       elm_genlist_item_class_free(gtc_reports);
-
-       // Settings Group Options
-       Elm_Genlist_Item_Class *gtc_settings = elm_genlist_item_class_new();
-       gtc_settings->item_style = "group_index";
-       gtc_settings->func.text_get = _gl_group_settings_text_get_cb;
-
-       elm_genlist_item_append(genlist, gtc_settings, NULL, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
-       elm_genlist_item_class_free(gtc_settings);
-
-       // Option to select Logs Keep days
-       Elm_Genlist_Item_Class *itc_keepdays = elm_genlist_item_class_new();
-
-       itc_keepdays->item_style = "multiline";
-       itc_keepdays->func.text_get = _gl_keepdays_text_get_cb;
-
-       keepdays_item = elm_genlist_item_append(genlist, itc_keepdays, NULL, NULL, ELM_GENLIST_ITEM_NONE, _selected_keepdays_cb, ad);
-       elm_genlist_item_class_free(itc_keepdays);
-
-       // Show
-       evas_object_show(genlist);
-
-       main_menu_nf_it = elm_naviframe_item_push(ad->nf, dgettext("privacy-setting", PRIVACY_MENU_DLP), common_back_btn_add(ad), NULL, genlist, NULL);
-
-       elm_object_item_domain_text_translatable_set(main_menu_nf_it, PACKAGE, EINA_TRUE);
-}
diff --git a/ui/src/privacy_dlp_pattern_create_view.c b/ui/src/privacy_dlp_pattern_create_view.c
deleted file mode 100644 (file)
index d28fe47..0000000
+++ /dev/null
@@ -1,265 +0,0 @@
-/*
- * Copyright (c) 2017 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.
- */
-/*
- * @file               privacy_dlp_pattern_create_view.c
- * @version     1.0
- * @brief
- */
-
-#include "common_edit_field.h"
-#include "common_utils.h"
-#include "privacy_view.h"
-#include <privacy_guard_client.h>
-
-typedef struct {
-       struct app_data_s *ad;
-       GList *category_list;
-       const char *current_category;
-       PgDlpPatternType current_type;
-       void *rule_edit_view_data;
-       void *pattern_list_view_data;
-       Evas_Object *name_edit_field;
-       Evas_Object *description_edit_field;
-       Evas_Object *category_hoversel;
-       Evas_Object *type_hoversel;
-       Evas_Object *search_string_edit_field;
-       Evas_Object *done_button;
-} pattern_create_view_data_s;
-
-static pattern_create_view_data_s pattern_create_view_data = {
-       .ad = NULL,
-       .category_list = NULL,
-       .current_category = NULL,
-       .pattern_list_view_data = NULL,
-       .name_edit_field = NULL,
-       .description_edit_field = NULL,
-       .category_hoversel = NULL,
-       .done_button = NULL
-};
-
-static bool _pattern_create_view_category_cb(const char *category, void *user_data)
-{
-       pattern_create_view_data_s *pcvd = user_data;
-       pcvd->category_list = g_list_prepend(pcvd->category_list, strdup(category));
-       return true;
-}
-
-static void _pattern_create_view_free_category_cb(void *category)
-{
-       free(category);
-}
-
-static void _pattern_create_field_changed_cb(void *data, Evas_Object *obj, void* event_info)
-{
-       pattern_create_view_data_s *pcvd = data;
-       if (is_valid_pattern(
-                       get_text_from_edit_field(pcvd->name_edit_field),
-                       get_text_from_edit_field(pcvd->description_edit_field),
-                       pcvd->current_type,
-                       get_text_from_edit_field(pcvd->search_string_edit_field)))
-               elm_object_disabled_set(pcvd->done_button, EINA_FALSE);
-       else
-               elm_object_disabled_set(pcvd->done_button, EINA_TRUE);
-}
-
-static void _pattern_create_cancel_cb(void *data, Evas_Object *obj, void* event_info)
-{
-       pattern_create_view_data_s *pcvd = data;
-       elm_naviframe_item_pop(pcvd->ad->nf);
-}
-
-static void _pattern_create_done_cb(void *data, Evas_Object *obj, void* event_info)
-{
-       pattern_create_view_data_s *pcvd = data;
-
-       char name[LEN_NAME];
-       strncpy(name, get_text_from_edit_field(pcvd->name_edit_field), LEN_NAME);
-       left_trim(name, LEN_NAME);
-       name[LEN_NAME - 1] = '\0';
-
-       char description[LEN_DESCRIPTION];
-       strncpy(description, get_text_from_edit_field(pcvd->description_edit_field), LEN_DESCRIPTION);
-       left_trim(description, LEN_DESCRIPTION);
-       description[LEN_DESCRIPTION - 1] = '\0';
-
-       const int res = privacy_guard_client_add_dlp_pattern(
-               name,
-               description,
-               elm_object_text_get(pcvd->category_hoversel),
-               get_text_from_edit_field(pcvd->search_string_edit_field),
-               pcvd->current_type);
-
-       if (PRIV_GUARD_ERROR_SUCCESS == res) {
-               LOGI("Pattern created (name=%s)", get_text_from_edit_field(pcvd->name_edit_field));
-               if (pcvd->pattern_list_view_data)
-                       update_privacy_dlp_patterns_list_view(pcvd->pattern_list_view_data);
-               else if (pcvd->rule_edit_view_data)
-                       update_privacy_dlp_rule_edit_view(
-                               pcvd->rule_edit_view_data,
-                               get_text_from_edit_field(pcvd->search_string_edit_field),
-                               pcvd->current_type,
-                               false);
-       } else {
-               LOGI("privacy_guard_client_add_dlp_pattern() failed. Error=%d", res);
-       }
-
-       elm_naviframe_item_pop(pcvd->ad->nf);
-}
-
-static Eina_Bool _pattern_create_nf_pop_cb(void *data, Evas_Object* obj)
-{
-       pattern_create_view_data_s *pcvd = data;
-
-       g_list_free_full(pcvd->category_list, _pattern_create_view_free_category_cb);
-       pcvd->category_list = NULL;
-       free_edit_field(pcvd->name_edit_field);
-       free_edit_field(pcvd->description_edit_field);
-       free_edit_field(pcvd->search_string_edit_field);
-
-       return EINA_TRUE;
-}
-
-static void _pattern_create_category_item_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       const char *category = data;
-       pattern_create_view_data.current_category = category;
-       elm_object_text_set(obj, category);
-}
-
-static void _pattern_create_type_item_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       const PgDlpPatternType type = (PgDlpPatternType)data;
-       pattern_create_view_data.current_type = type;
-       if (type == PRIV_GUARD_DLP_PATTERN_STRING)
-               elm_object_text_set(obj, dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_SEARCH_TYPE_STRING_MATCH));
-       else
-               elm_object_text_set(obj, dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_SEARCH_TYPE_REGULAR_EXPRESSION));
-}
-
-static Evas_Object *add_category_hoversel_to_grid(Evas_Object *rule_grid, pattern_create_view_data_s *data, int col, int row, int col_span, int row_span)
-{
-       Evas_Object *hoversel = elm_hoversel_add(rule_grid);
-       elm_hoversel_horizontal_set(hoversel, EINA_FALSE);
-       elm_hoversel_hover_parent_set(hoversel, rule_grid);
-
-       GList* l;
-       /* Append patterns to hoversel */
-       for (l = data->category_list; l != NULL; l = l->next) {
-           const char *category = l->data;
-           elm_hoversel_item_add(hoversel, category, NULL, ELM_ICON_NONE, _pattern_create_category_item_cb, category);
-       }
-       if (NULL != data->category_list) {
-               const char *first_category = (const char *)(data->category_list->data);
-               data->current_category = first_category;
-               elm_object_text_set(hoversel, first_category);
-       }
-
-       elm_grid_pack(rule_grid, hoversel, col, row, col_span, row_span);
-       evas_object_show(hoversel);
-
-       return hoversel;
-}
-
-static Evas_Object *add_type_hoversel_to_grid(Evas_Object *rule_grid, pattern_create_view_data_s *data, int col, int row, int col_span, int row_span)
-{
-       Evas_Object *hoversel = elm_hoversel_add(rule_grid);
-       elm_hoversel_horizontal_set(hoversel, EINA_FALSE);
-       elm_hoversel_hover_parent_set(hoversel, rule_grid);
-
-       elm_hoversel_item_add(hoversel, dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_SEARCH_TYPE_STRING_MATCH), NULL, ELM_ICON_NONE, _pattern_create_type_item_cb, (void *)PRIV_GUARD_DLP_PATTERN_STRING);
-       elm_hoversel_item_add(hoversel, dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_SEARCH_TYPE_REGULAR_EXPRESSION), NULL, ELM_ICON_NONE, _pattern_create_type_item_cb, (void *)PRIV_GUARD_DLP_PATTERN_REGEX);
-       elm_object_text_set(hoversel, dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_SEARCH_TYPE_STRING_MATCH));
-       data->current_type = PRIV_GUARD_DLP_PATTERN_STRING;
-
-       elm_grid_pack(rule_grid, hoversel, col, row, col_span, row_span);
-       evas_object_show(hoversel);
-
-       return hoversel;
-}
-
-void create_privacy_dlp_pattern_create_view(struct app_data_s *ad, void *rule_edit_view_data, void *pattern_list_view_data)
-{
-       if (NULL == ad) {
-               LOGE("Invalid parameter");
-               return;
-       }
-
-       pattern_create_view_data.ad = ad;
-       g_list_free_full(pattern_create_view_data.category_list, _pattern_create_view_free_category_cb);
-       pattern_create_view_data.category_list = NULL;
-       pattern_create_view_data.rule_edit_view_data = rule_edit_view_data;
-       pattern_create_view_data.pattern_list_view_data = pattern_list_view_data;
-
-       /* Get dlp custom patterns from privacy guard */
-       const int res = privacy_guard_client_foreach_dlp_categories(_pattern_create_view_category_cb, &pattern_create_view_data);
-       log_if(res != PRIV_GUARD_ERROR_SUCCESS, 1, "privacy_guard_client_foreach_dlp_categories() failed. [%d]", res);
-       pattern_create_view_data.category_list = g_list_reverse(pattern_create_view_data.category_list);
-
-       Evas_Object *bg = elm_bg_add(ad->nf);
-       elm_bg_color_set(bg, 255, 255, 255);
-
-       Evas_Object *rule_grid = elm_grid_add(ad->nf);
-       elm_grid_size_set(rule_grid, 100, 10);
-
-       elm_object_content_set(bg, rule_grid);
-
-       const int col1 = 5;
-       const int col2 = 35;
-       const int col_span1 = 34;
-       const int col_span2 = 65;
-       int row = 0;
-       const int row_span = 1;
-
-       static dlp_edit_field_changed_cb_s edit_field_changed_cb_data;
-       edit_field_changed_cb_data.changed_cb = _pattern_create_field_changed_cb;
-       edit_field_changed_cb_data.data = &pattern_create_view_data;
-
-       /* add pattern name fields to grid */
-       static const Elm_Entry_Filter_Limit_Size name_limit_size = { .max_char_count = 0, .max_byte_count = LEN_NAME - 1 };
-       add_edit_field_to_grid(rule_grid, dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_NAME), false, NULL, col1, row, col_span1, row_span, NULL);
-       pattern_create_view_data.name_edit_field = add_edit_field_to_grid(rule_grid, "", true, &name_limit_size, col2, row++, col_span2, row_span, &edit_field_changed_cb_data);
-
-       /* add rule description fields to grid */
-       static const Elm_Entry_Filter_Limit_Size description_limit_size = { .max_char_count = 0, .max_byte_count = LEN_DESCRIPTION - 1 };
-       add_edit_field_to_grid(rule_grid, dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_DESCRIPTION), false, NULL, col1, row, col_span1, row_span, NULL);
-       pattern_create_view_data.description_edit_field = add_edit_field_to_grid(rule_grid, "", true, &description_limit_size, col2, row++, col_span2, row_span, &edit_field_changed_cb_data);
-
-       /* add rule pattern fields to grid */
-       add_edit_field_to_grid(rule_grid, dgettext("privacy-setting", PRIVACY_MENU_DLP_CATEGORY), false, NULL, col1, row, col_span1, row_span, NULL);
-       pattern_create_view_data.category_hoversel = add_category_hoversel_to_grid(rule_grid, &pattern_create_view_data, col2 + 4, row++, col_span2 - 8, row_span);
-
-       /* add search fields to grid */
-       add_edit_field_to_grid(rule_grid, dgettext("privacy-setting", PRIVACY_MENU_DLP_STRING_TYPE), false, NULL, col1, row, col_span1, row_span, NULL);
-       pattern_create_view_data.type_hoversel = add_type_hoversel_to_grid(rule_grid, &pattern_create_view_data, col2 + 4, row++, col_span2 - 8, row_span);
-
-       /* add string search fields to grid */
-       static const Elm_Entry_Filter_Limit_Size search_string_limit_size = { .max_char_count = 0, .max_byte_count = LEN_PATTERN - 1 };
-       add_edit_field_to_grid(rule_grid, dgettext("privacy-setting", PRIVACY_MENU_DLP_SEARCH_TERM), false, NULL, col1, row, col_span1, row_span, NULL);
-       pattern_create_view_data.search_string_edit_field = add_edit_field_to_grid(rule_grid, "", true, &search_string_limit_size, col2, row, col_span2, row_span, &edit_field_changed_cb_data);
-
-       evas_object_show(rule_grid);
-
-       Elm_Object_Item *nf_it = elm_naviframe_item_push(ad->nf, dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_PATTERN), NULL, NULL, bg, NULL);
-
-       /* set callback to genlist item pop event */
-       elm_naviframe_item_pop_cb_set(nf_it, _pattern_create_nf_pop_cb, &pattern_create_view_data);
-       /* add a cancel button to naviframe title bar */
-       common_naviframe_btn_add(ad->nf, nf_it, true, dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_CANCEL), _pattern_create_cancel_cb, &pattern_create_view_data);
-       /* add a done button to naviframe title bar */
-       pattern_create_view_data.done_button = common_naviframe_btn_add(ad->nf, nf_it, false, dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_DONE), _pattern_create_done_cb, &pattern_create_view_data);
-
-       elm_object_disabled_set(pattern_create_view_data.done_button, EINA_TRUE);
-}
diff --git a/ui/src/privacy_dlp_pattern_delete_view.c b/ui/src/privacy_dlp_pattern_delete_view.c
deleted file mode 100644 (file)
index da7fe88..0000000
+++ /dev/null
@@ -1,322 +0,0 @@
-/*
- * Copyright (c) 2017 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.
- */
-/*
- * @file               privacy_dlp_pattern_delete_view.c
- * @version     1.0
- * @brief
- */
-
-#include "common_popup.h"
-#include "common_utils.h"
-#include "privacy_view.h"
-#include <privacy_guard_client.h>
-#include <app_manager.h>
-
-typedef struct {
-       const get_pattern_s *pattern;
-       bool is_checked;
-       Evas_Object *check;
-} pattern_delete_item_s;
-
-typedef struct {
-       struct app_data_s *ad;
-       GList *pattern_item_list;
-       void *pattern_list_data;
-       Evas_Object *genlist;
-       Evas_Object *confirm_popup;
-       Evas_Object *delete_button;
-} pattern_delete_view_data_s;
-
-#define SELECT_ALL_PATTERNS_ITEM -1
-
-static get_pattern_s pattern_delete_select_all_pattern = { .id = SELECT_ALL_PATTERNS_ITEM };
-
-static size_t get_number_of_selected_patterns(Evas_Object *genlist);
-
-void set_pattern_item_check_state(Elm_Object_Item *item, const bool state)
-{
-       if (NULL != item) {
-               pattern_delete_item_s *pattern_item = elm_object_item_data_get(item);
-               if (!pattern_item->pattern->undeletable) {
-                       pattern_item->is_checked = state;
-                       elm_check_state_set(pattern_item->check, state ? EINA_TRUE : EINA_FALSE);
-               }
-       }
-}
-
-static char * _gl_pattern_delete_text_get_cb(void *data, Evas_Object *obj, const char *part)
-{
-       pattern_delete_item_s *pattern_item = (pattern_delete_item_s *)data;
-       if (strcmp(part, "elm.text") == 0)
-               return strdup(pattern_item->pattern->name);
-
-       return NULL;
-}
-
-static Evas_Object *_gl_pattern_delete_content_get_cb(void *data, Evas_Object *obj, const char *part)
-{
-       pattern_delete_item_s *pattern_item = data;
-
-       if (strcmp(part, "elm.swallow.end") == 0) {
-               Evas_Object *check = common_create_check(obj);
-               elm_check_state_set(check, pattern_item->is_checked ? EINA_TRUE : EINA_FALSE);
-               if (pattern_item->pattern->undeletable)
-                       elm_object_disabled_set(check, EINA_TRUE);
-               pattern_item->check = check;
-               return check;
-       }
-
-       return NULL;
-}
-
-static void _pattern_delete_menu_item_selected_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       /* Get selected item */
-       Elm_Object_Item *ei = event_info;
-       pattern_delete_item_s *pattern_item = elm_object_item_data_get(ei);
-
-       /* Unhighlight selected item */
-       elm_genlist_item_selected_set(ei, EINA_FALSE);
-
-       if (pattern_item->pattern->undeletable)
-               return;
-
-       pattern_item->is_checked = !pattern_item->is_checked;
-
-       /* Set check box state, in case user tapped outside it */
-       elm_check_state_set(pattern_item->check, pattern_item->is_checked ? EINA_TRUE : EINA_FALSE);
-
-       pattern_delete_view_data_s *pdvd = data;
-       if (SELECT_ALL_PATTERNS_ITEM != pattern_item->pattern->id) {
-               Elm_Object_Item *select_all_item = elm_genlist_nth_item_get(pdvd->genlist, 0);
-               if (!pattern_item->is_checked) {
-                       /* set "Select all" check off */
-                       set_pattern_item_check_state(select_all_item, false);
-               } else {
-                       bool all_selected = true;
-                       GList *l;
-                       // check if all items are selected. Note that the 1st element of app_list
-                       // is the select button, so we start looping from the 2nd element
-                       for (l = g_list_nth(pdvd->pattern_item_list, 1); l != NULL; l = l->next) {
-                               if (!((pattern_delete_item_s *)l->data)->is_checked) {
-                                       all_selected = false;
-                                       break;
-                               }
-                       }
-                       /* if all items are selected, set select all check on */
-                       if (all_selected)
-                               set_pattern_item_check_state(select_all_item, true);
-               }
-       } else {
-               /* Select or deselect items */
-               ei = elm_genlist_item_next_get(ei);
-               while (NULL != ei) {
-                       set_pattern_item_check_state(ei, pattern_item->is_checked);
-                       ei = elm_genlist_item_next_get(ei);
-               }
-       }
-
-       elm_object_disabled_set(pdvd->delete_button, get_number_of_selected_patterns(pdvd->genlist) == 0 ? EINA_TRUE : EINA_FALSE);
-}
-
-static void _pattern_delete_popup_cancel_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       pattern_delete_view_data_s *pdvd = data;
-       destroy_popup(pdvd->confirm_popup);
-}
-
-static void _pattern_delete_popup_ok_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       const pattern_delete_view_data_s *pdvd = data;
-       destroy_popup(pdvd->confirm_popup);
-
-       size_t total_patterns_deleted = 0;
-       GList *l; // note that the 0th element is "select all"
-       for (l = g_list_nth(pdvd->pattern_item_list, 1); l != NULL; l = l->next) {
-               const pattern_delete_item_s *pattern_item = l->data;
-               if (NULL == pattern_item)
-                       continue;
-               if (!pattern_item->is_checked)
-                       continue;
-
-               const int res = privacy_guard_client_delete_dlp_pattern(pattern_item->pattern->id);
-               if (PRIV_GUARD_ERROR_SUCCESS == res) {
-                       LOGI("Pattern %d deleted", pattern_item->pattern->id);
-                       ++total_patterns_deleted;
-               } else
-                       LOGE("Failed to delete pattern (id=%d). Error=%d", pattern_item->pattern->id, res);
-       }
-
-       if (NULL != pdvd->pattern_list_data)
-               update_privacy_dlp_patterns_list_view(pdvd->pattern_list_data);
-
-       elm_naviframe_item_pop(pdvd->ad->nf);
-
-       if (total_patterns_deleted > 0) {
-               GString *string_buf = g_string_new(NULL);
-               const char *format = dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_DELETE_PATTERN_MESSAGE);
-               g_string_printf(string_buf, format, total_patterns_deleted);
-               show_toast_notification(string_buf->str, pdvd->ad->win);
-               g_string_free(string_buf, TRUE);
-       }
-}
-
-static void _pattern_delete_done_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       pattern_delete_view_data_s *pdvd = data;
-
-       const size_t number_of_selected_patterns = get_number_of_selected_patterns(pdvd->genlist);
-       GString *confirm_del_msg = g_string_new(NULL);
-       const char *format = dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_DELETE_PATTERN_POPUP_MESSAGE_MESSAGE);
-       g_string_printf(confirm_del_msg, format, number_of_selected_patterns);
-       pdvd->confirm_popup = create_two_buttons_popup(
-               pdvd->genlist,
-               dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_DELETE_PATTERN_POPUP_TITLE),
-               confirm_del_msg->str,
-               dgettext("privacy-setting", PRIVACY_MENU_DLP_LOG_DELETE_BTN),
-               _pattern_delete_popup_ok_cb,
-               dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_CANCEL),
-               _pattern_delete_popup_cancel_cb,
-               _pattern_delete_popup_cancel_cb,
-               pdvd);
-       g_string_free(confirm_del_msg, TRUE);
-}
-
-static void _pattern_delete_cancel_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       pattern_delete_view_data_s *pdvd = data;
-       elm_naviframe_item_pop(pdvd->ad->nf);
-}
-
-static void _free_pattern_delete_item_cb(void *item)
-{
-       g_slice_free(pattern_delete_item_s, item);
-}
-
-static Eina_Bool _pattern_delete_nf_pop_cb(void *data, Evas_Object* obj)
-{
-       pattern_delete_view_data_s *pdvd = data;
-       g_list_free_full(pdvd->pattern_item_list, _free_pattern_delete_item_cb);
-       pdvd->pattern_item_list = NULL;
-       return EINA_TRUE;
-}
-
-static size_t get_number_of_selected_patterns(Evas_Object *genlist)
-{
-       const size_t total_rules = elm_genlist_items_count(genlist);
-       size_t pattern_count = 0;
-       size_t i;
-       // Count checked log ids
-       for (i = 1; i <= total_rules; ++i) { // note that 0th item is "Select all", so we skip it
-               Elm_Object_Item *item = elm_genlist_nth_item_get(genlist, i);
-               if (NULL != item) {
-                       pattern_delete_item_s *pattern_item = elm_object_item_data_get(item);
-                       if (NULL != pattern_item && pattern_item->is_checked)
-                               ++pattern_count;
-               }
-       }
-
-       return pattern_count;
-}
-
-static void create_select_all_patterns_item(pattern_delete_view_data_s *data)
-{
-       strncpy(pattern_delete_select_all_pattern.name, dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_SELECT_ALL), LEN_NAME);
-       pattern_delete_select_all_pattern.name[LEN_NAME - 1] = '\0';
-       // Note that item below will be freed by _free_pattern_delete_item_cb(),
-       // called in _pattern_delete_nf_pop_cb()
-       pattern_delete_item_s *item = g_slice_new(pattern_delete_item_s);
-       item->pattern = &pattern_delete_select_all_pattern;
-       item->is_checked = false;
-       item->check = NULL;
-       data->pattern_item_list = g_list_prepend(data->pattern_item_list, item);
-}
-
-static void populate_pattern_item_list(pattern_delete_view_data_s *data, const GList *pattern_list)
-{
-       const GList* l;
-       for (l = pattern_list; l != NULL; l = l->next) {
-               const get_pattern_s *pattern = l->data;
-               if (pattern->undeletable)
-                       continue;
-
-               // note that item is freed together with pattern_item_list in _pattern_delete_nf_pop_cb
-               pattern_delete_item_s *item = g_slice_new(pattern_delete_item_s);
-               item->pattern = l->data;
-               item->is_checked = false;
-               item->check = NULL;
-               data->pattern_item_list = g_list_prepend(data->pattern_item_list, item);
-       }
-       if (NULL != data->pattern_item_list)
-               data->pattern_item_list = g_list_reverse(data->pattern_item_list);
-}
-
-void create_privacy_dlp_pattern_delete_view(struct app_data_s *ad, const GList *pattern_list, void *pattern_list_data)
-{
-       if (NULL == ad || NULL == pattern_list || NULL == pattern_list_data) {
-               LOGE("Invalid parameter");
-               return;
-       }
-
-       static pattern_delete_view_data_s data;
-       data.ad = ad;
-       populate_pattern_item_list(&data, pattern_list);
-       data.pattern_list_data = pattern_list_data;
-
-       create_select_all_patterns_item(&data);
-
-       data.genlist = common_genlist_add(ad->nf);
-       evas_object_size_hint_weight_set(data.genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
-       evas_object_size_hint_align_set(data.genlist, EVAS_HINT_FILL, EVAS_HINT_FILL);
-
-       Elm_Genlist_Item_Class *itc = elm_genlist_item_class_new();
-       itc->item_style = "default";
-       itc->func.text_get = _gl_pattern_delete_text_get_cb;
-       itc->func.content_get = _gl_pattern_delete_content_get_cb;
-       itc->func.del = NULL;
-       GList* l;
-       for (l = data.pattern_item_list; l != NULL; l = l->next) {
-               // append item to the genlist
-               Elm_Object_Item *it = NULL;
-               it = elm_genlist_item_append(data.genlist, itc, l->data, NULL, ELM_GENLIST_ITEM_NONE, _pattern_delete_menu_item_selected_cb, &data);
-               log_if(it == NULL, 1, "Error in elm_genlist_item_append");
-
-               pattern_delete_item_s *pattern_item = l->data;
-               if (pattern_item->pattern->undeletable)
-                       elm_object_disabled_set(it, EINA_TRUE);
-       }
-
-       elm_genlist_item_class_free(itc);
-
-       evas_object_show(data.genlist);
-
-       /* Add genlist to naviframe */
-       Elm_Object_Item *nf_it = elm_naviframe_item_push(
-               ad->nf,
-               dgettext("privacy-setting", PRIVACY_MENU_DLP_LOG_DELETE_LOGS_TITLE),
-               NULL,
-               NULL,
-               data.genlist,
-               NULL);
-
-       /* set callback to genlist item pop event */
-       elm_naviframe_item_pop_cb_set(nf_it, _pattern_delete_nf_pop_cb, &data);
-       /* add cancel button to naviframe title bar */
-       common_naviframe_btn_add(ad->nf, nf_it, true, dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_CANCEL), _pattern_delete_cancel_cb, &data);
-       /* add delete button to naviframe title bar */
-       data.delete_button = common_naviframe_btn_add(ad->nf, nf_it, false, dgettext("privacy-setting", PRIVACY_MENU_DLP_LOG_DELETE_BTN), _pattern_delete_done_cb, &data);
-       elm_object_disabled_set(data.delete_button, get_number_of_selected_patterns(data.genlist) == 0 ? EINA_TRUE : EINA_FALSE);
-}
diff --git a/ui/src/privacy_dlp_pattern_detailed_view.c b/ui/src/privacy_dlp_pattern_detailed_view.c
deleted file mode 100644 (file)
index e018271..0000000
+++ /dev/null
@@ -1,307 +0,0 @@
-/*
- * Copyright (c) 2017 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.
- */
-/*
- * @file               privacy_dlp_pattern_detailed_view.c
- * @version     1.0
- * @brief
- */
-
-#include "common_ctxpopup.h"
-#include "common_popup.h"
-#include "common_utils.h"
-#include "privacy_view.h"
-#include <efl_extension.h>
-
-typedef struct {
-       struct app_data_s *ad;
-       get_pattern_s current_pattern;
-       void *pattern_list_data;
-       Evas_Object *ctxpopup;
-       Evas_Object *genlist;
-       Evas_Object *delete_popup;
-} pattern_detailed_view_data_s;
-
-static pattern_detailed_view_data_s pattern_detailed_view_data = { .ad = NULL };
-
-static void _pattern_detailed_view_dismiss_menu_cb(void *data, Evas_Object *obj, void *event_info);
-static void _pattern_detailed_view_menu_button_cb(void *data, Evas_Object *obj, void *event_info);
-static void _pattern_detailed_view_menu_dismissed_cb(void *data, Evas_Object *obj, void *event_info);
-
-static char *_gl_pattern_header_text_get_cb(void *data, Evas_Object *obj, const char *part)
-{
-       get_pattern_s *pattern = data;
-       if (strcmp(part, "elm.text") == 0)
-               return strdup(pattern->name);
-
-       if (strcmp(part, "elm.text.multiline") == 0) {
-               if (pattern == NULL)
-                       return strdup("");
-
-               return strdup(pattern->description);
-       }
-
-       return NULL;
-}
-
-static char *_gl_group_pattern_details_text_get_cb(void *data, Evas_Object *obj, const char *part)
-{
-       if (!strcmp(part, "elm.text"))
-               return strdup(dgettext("privacy-setting", PRIVACY_MENU_DLP_DETAILS));
-
-       return NULL;
-}
-
-static char *_gl_pattern_category_text_get_cb(void *data, Evas_Object *obj, const char *part)
-{
-       if (strcmp(part, "elm.text") == 0)
-               return strdup(dgettext("privacy-setting", PRIVACY_MENU_DLP_CATEGORY));
-
-       if (strcmp(part, "elm.text.multiline") == 0) {
-               if (data == NULL)
-                       return strdup("");
-               return strdup(((get_pattern_s *)data)->category.text);
-       }
-
-       return NULL;
-}
-
-static char *_gl_pattern_text_get_cb(void *data, Evas_Object *obj, const char *part)
-{
-       if (strcmp(part, "elm.text") == 0)
-               return strdup(dgettext("privacy-setting", PRIVACY_MENU_DLP_SEARCH_TERM));
-
-       if (strcmp(part, "elm.text.multiline") == 0) {
-               if (data == NULL)
-                       return strdup("");
-
-               return strdup(((get_pattern_s *)data)->pattern);
-       }
-       return NULL;
-}
-
-static char *_gl_pattern_type_get_cb(void *data, Evas_Object *obj, const char *part)
-{
-       if (strcmp(part, "elm.text") == 0)
-               return strdup(dgettext("privacy-setting", PRIVACY_MENU_DLP_STRING_TYPE));
-
-       if (strcmp(part, "elm.text.multiline") == 0) {
-               if (data == NULL)
-                       return strdup("");
-
-               const get_pattern_s *pattern = data;
-               if (PRIV_GUARD_DLP_PATTERN_STRING == pattern->type)
-                       return strdup(dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_SEARCH_TYPE_STRING_MATCH));
-               else if (PRIV_GUARD_DLP_PATTERN_REGEX == pattern->type)
-                       return strdup(dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_SEARCH_TYPE_REGULAR_EXPRESSION));
-               else
-                       return strdup("");
-       }
-
-       return NULL;
-}
-
-static char *_gl_pattern_leaks_count_text_get_cb(void *data, Evas_Object *obj, const char *part)
-{
-       if (strcmp(part, "elm.text") == 0)
-               return strdup(dgettext("privacy-setting", PRIVACY_MENU_DLP_LEAKS_CAPTURED));
-
-       if (strcmp(part, "elm.text.multiline") == 0) {
-               if (data == NULL)
-                       return strdup("");
-
-               const get_pattern_s *pattern = data;
-               GString *string_buf = g_string_new(NULL);
-               g_string_printf(string_buf, "%d", pattern->leaks_count);
-               char *leaks_captured = strdup(string_buf->str);
-               g_string_free(string_buf, TRUE);
-               return leaks_captured;
-       }
-
-       return NULL;
-}
-
-static void _pattern_detailed_view_delete_cancel_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       pattern_detailed_view_data_s *pdvd = data;
-       elm_popup_dismiss(pdvd->delete_popup);
-}
-
-static void _pattern_detailed_view_delete_ok_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       pattern_detailed_view_data_s *pdvd = data;
-
-       elm_popup_dismiss(pdvd->delete_popup);
-
-       const int res = privacy_guard_client_delete_dlp_pattern(pdvd->current_pattern.id);
-       if (PRIV_GUARD_ERROR_SUCCESS == res) {
-               LOGI("Pattern (id=%d) deleted", pdvd->current_pattern.id);
-
-               GString *string_buffer = g_string_new(NULL);
-               const char *format = dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_DELETE_PATTERN_MESSAGE);
-               g_string_printf(string_buffer, format, 1);
-               show_toast_notification(string_buffer->str, pdvd->ad->win);
-               g_string_free(string_buffer, TRUE);
-       } else {
-               LOGE("privacy_guard_client_delete_dlp_pattern() failed. Error=%d", res);
-       }
-
-       if (pdvd->pattern_list_data)
-               update_privacy_dlp_patterns_list_view(pdvd->pattern_list_data);
-       elm_naviframe_item_pop(pdvd->ad->nf);
-}
-
-static void _pattern_detailed_view_popup_dismissed_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       pattern_detailed_view_data_s *pdvd = data;
-       destroy_popup(pdvd->delete_popup);
-       pdvd->delete_popup = NULL;
-       eext_object_event_callback_add(pdvd->genlist, EEXT_CALLBACK_MORE, _pattern_detailed_view_menu_button_cb, pdvd);
-}
-
-static void _pattern_detailed_view_delete_rule_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       pattern_detailed_view_data_s *pdvd = data;
-       elm_ctxpopup_dismiss(pdvd->ctxpopup);
-
-       const char *format = dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_DELETE_PATTERN_POPUP_MESSAGE_MESSAGE);
-       GString *confirm_del_msg = g_string_new(NULL);
-       g_string_printf(confirm_del_msg, format, 1);
-       pdvd->delete_popup = create_two_buttons_popup(
-               pdvd->ad->nf,
-               dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_DELETE_PATTERN_POPUP_TITLE),
-               confirm_del_msg->str,
-               dgettext("privacy-setting", PRIVACY_MENU_DLP_LOG_DELETE_BTN),
-               _pattern_detailed_view_delete_ok_cb,
-               dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_CANCEL),
-               _pattern_detailed_view_delete_cancel_cb,
-               _pattern_detailed_view_delete_cancel_cb,
-               pdvd);
-       g_string_free(confirm_del_msg, TRUE);
-
-       evas_object_smart_callback_add(pdvd->delete_popup, "dismissed", _pattern_detailed_view_popup_dismissed_cb, pdvd);
-}
-
-static void _pattern_detailed_view_menu_button_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       pattern_detailed_view_data_s *pdvd = data;
-       if (!pdvd->current_pattern.undeletable) {
-               eext_object_event_callback_del(pdvd->genlist, EEXT_CALLBACK_MORE, _pattern_detailed_view_menu_button_cb);
-               eext_object_event_callback_add(pdvd->genlist, EEXT_CALLBACK_MORE, _pattern_detailed_view_dismiss_menu_cb, pdvd);
-
-               if (!pdvd->ctxpopup) {
-                       pdvd->ctxpopup = create_ctxpop(pdvd->ad);
-                       elm_ctxpopup_item_append(pdvd->ctxpopup, dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_DELETE), NULL, _pattern_detailed_view_delete_rule_cb, pdvd);
-                       evas_object_smart_callback_add(pdvd->ctxpopup, "dismissed", _pattern_detailed_view_menu_dismissed_cb, pdvd);
-               } else {
-                       evas_object_show(pdvd->ctxpopup);
-               }
-       }
-}
-
-static void _pattern_detailed_view_menu_dismissed_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       pattern_detailed_view_data_s *pdvd = data;
-
-       eext_object_event_callback_del(pdvd->genlist, EEXT_CALLBACK_MORE, _pattern_detailed_view_dismiss_menu_cb);
-       if (NULL == pdvd->delete_popup)
-               eext_object_event_callback_add(pdvd->genlist, EEXT_CALLBACK_MORE, _pattern_detailed_view_menu_button_cb, pdvd);
-}
-
-static void _pattern_detailed_view_dismiss_menu_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       pattern_detailed_view_data_s *pdvd = data;
-       elm_ctxpopup_dismiss(pdvd->ctxpopup);
-}
-
-static void add_pattern_item_to_genlist(Evas_Object *genlist, void* data, const char* item_style, void* func_text_get)
-{
-       Elm_Genlist_Item_Class *itc = elm_genlist_item_class_new();
-       itc->item_style = item_style;
-       itc->func.text_get = func_text_get;
-       Elm_Object_Item *it = elm_genlist_item_append(genlist, itc, data, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
-       log_if(it == NULL, 1, "Error in elm_genlist_item_append");
-       elm_genlist_item_class_free(itc);
-}
-
-static void set_current_pattern(get_pattern_s *current_pattern, const get_pattern_s *pattern)
-{
-       current_pattern->id = pattern->id;
-       strncpy(current_pattern->pattern, pattern->pattern, LEN_PATTERN);
-       current_pattern->pattern[LEN_PATTERN - 1] = '\0';
-       strncpy(current_pattern->name, pattern->name, LEN_NAME);
-       current_pattern->name[LEN_NAME - 1] = '\0';
-       strncpy(current_pattern->description, pattern->description, LEN_DESCRIPTION);
-       current_pattern->name[LEN_DESCRIPTION - 1] = '\0';
-       current_pattern->type = pattern->type;
-       strncpy(current_pattern->category.text, pattern->category.text, LEN_CATEGORY);
-       current_pattern->name[LEN_CATEGORY - 1] = '\0';
-       current_pattern->undeletable = pattern->undeletable;
-       current_pattern->leaks_count = pattern->leaks_count;
-}
-
-static Evas_Object *create_pattern_detail_genlist(pattern_detailed_view_data_s *data)
-{
-       Evas_Object *genlist = common_genlist_add(data->ad->nf);
-       evas_object_size_hint_weight_set(genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
-       evas_object_size_hint_align_set(genlist, EVAS_HINT_FILL, EVAS_HINT_FILL);
-       elm_genlist_mode_set(genlist, ELM_LIST_COMPRESS);
-       elm_genlist_select_mode_set(genlist, ELM_OBJECT_SELECT_MODE_NONE);
-       elm_object_style_set(genlist, "default");
-       /* add header (pattern name and description) to genlist */
-       add_pattern_item_to_genlist(genlist, &(data->current_pattern), "multiline", _gl_pattern_header_text_get_cb);
-       /* add details separator to genlist */
-       add_pattern_item_to_genlist(genlist, NULL, "group_index", _gl_group_pattern_details_text_get_cb);
-       /* add pattern category to genlist */
-       add_pattern_item_to_genlist(genlist, &(data->current_pattern), "multiline", _gl_pattern_category_text_get_cb);
-       /* add pattern type to genlist */
-       add_pattern_item_to_genlist(genlist, &(data->current_pattern), "multiline", _gl_pattern_type_get_cb);
-       /* add pattern pattern to genlist */
-       add_pattern_item_to_genlist(genlist, &(data->current_pattern), "multiline", _gl_pattern_text_get_cb);
-       /* add pattern leaks count to genlist */
-       add_pattern_item_to_genlist(genlist, &(data->current_pattern), "multiline", _gl_pattern_leaks_count_text_get_cb);
-       return genlist;
-}
-
-void create_privacy_dlp_pattern_detailed_view(struct app_data_s *ad, const get_pattern_s *pattern, const dlp_profile_s *config, void *pattern_list_data)
-{
-       if (NULL == ad || NULL == pattern) {
-               LOGE("Invalid parameter");
-               return;
-       }
-
-       pattern_detailed_view_data.ad = ad;
-       pattern_detailed_view_data.pattern_list_data = pattern_list_data;
-
-       set_current_pattern(&(pattern_detailed_view_data.current_pattern), pattern);
-
-       Evas_Object *genlist = create_pattern_detail_genlist(&pattern_detailed_view_data);
-       evas_object_show(genlist);
-       pattern_detailed_view_data.genlist = genlist;
-
-       Elm_Object_Item *nf_it = elm_naviframe_item_push(
-               ad->nf,
-               dgettext("privacy-setting", PRIVACY_MENU_DLP_PATTERN_DETAIL_TITLE),
-               common_back_btn_add(ad),
-               NULL,
-               genlist,
-               NULL);
-
-       if (PRIV_GUARD_DLP_PROFILE_CUSTOM == config->profile)
-               /* Register the Menu key event callback */
-               eext_object_event_callback_add(genlist, EEXT_CALLBACK_MORE, _pattern_detailed_view_menu_button_cb, &pattern_detailed_view_data);
-
-       elm_object_item_domain_text_translatable_set(nf_it, PACKAGE, EINA_TRUE);
-}
diff --git a/ui/src/privacy_dlp_pattern_list_view.c b/ui/src/privacy_dlp_pattern_list_view.c
deleted file mode 100644 (file)
index 8fd1923..0000000
+++ /dev/null
@@ -1,363 +0,0 @@
-/*
- * Copyright (c) 2017 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.
- */
-/*
- * @file       privacy_dlp_pattern_list_view.c
- * @version    1.0
- * @brief
- */
-
-#include "common_ctxpopup.h"
-#include "common_utils.h"
-#include "privacy_view.h"
-#include <privacy_guard_client.h>
-#include <efl_extension.h>
-
-typedef struct {
-       struct app_data_s *ad;
-       GList *pattern_list;
-       GList *category_list;
-       const char *current_category;
-       const dlp_profile_s *config;
-       Evas_Object *view_parent;
-       Evas_Object *pattern_box;
-       Evas_Object *pattern_genlist;
-       Evas_Object *pattern_ctxpopup;
-} dlp_pattern_list_data_s;
-
-static const char const *ALL_PATTERNS = "All patterns";
-
-static dlp_pattern_list_data_s pattern_list_data = {
-       .ad = NULL,
-       .pattern_list = NULL,
-       .current_category = NULL,
-       .view_parent = NULL,
-       .pattern_box = NULL,
-       .pattern_genlist = NULL
-};
-
-static void create_pattern_genlist(dlp_pattern_list_data_s* data);
-static void set_pattern_filter_text(Evas_Object *category_hoversel, dlp_pattern_list_data_s* data);
-static bool has_deletable_pattern(const GList *pattern_list);
-
-static void _pattern_list_view_menu_dismissed_cb(void *data, Evas_Object *obj, void *event_info);
-static void _pattern_list_view_dismiss_menu_cb(void *data, Evas_Object *obj, void *event_info);
-
-static bool _pg_dlp_categories_cb(const char *category, void *user_data)
-{
-       /* add category to category list */
-       dlp_pattern_list_data_s *data = user_data;
-       data->category_list = g_list_prepend(data->category_list, strdup(category));
-       return true;
-}
-
-static bool _pg_dlp_patterns_cb(int id, const char *pattern, const char *name, const char *description, PgDlpPatternType type,
-                        const char *category, bool undeletable, int leaks_count, void *user_data)
-{
-       /* create a new pattern */
-       get_pattern_s *dlp_pattern = g_slice_new(get_pattern_s); // this pattern is freed at delete_pattern_list()
-
-       dlp_pattern->id = id;
-       strncpy(dlp_pattern->pattern, pattern, LEN_PATTERN);
-       dlp_pattern->pattern[LEN_PATTERN - 1] = '\0';
-       strncpy(dlp_pattern->name, name, LEN_NAME);
-       dlp_pattern->name[LEN_NAME - 1] = '\0';
-       strncpy(dlp_pattern->description, description, LEN_DESCRIPTION);
-       dlp_pattern->description[LEN_DESCRIPTION - 1] = '\0';
-       dlp_pattern->type = type;
-       strncpy(dlp_pattern->category.text, category, LEN_CATEGORY);
-       dlp_pattern->category.text[LEN_CATEGORY - 1] = '\0';
-       dlp_pattern->undeletable = undeletable;
-       dlp_pattern->leaks_count = leaks_count;
-       /* add pattern to pattern list */
-       dlp_pattern_list_data_s *data = user_data;
-       data->pattern_list = g_list_prepend(data->pattern_list, dlp_pattern);
-
-       return true;
-}
-
-static void _pattern_genlist_del_cb(void *data, Evas_Object *obj)
-{
-       g_slice_free(dlp_item_pattern_s, data);
-}
-
-static void _pattern_filter_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       dlp_pattern_list_data_s *dpld = data;
-       dpld->current_category = elm_object_item_part_text_get(event_info, "default");
-       set_pattern_filter_text(obj, dpld);
-       elm_box_unpack(dpld->pattern_box, dpld->pattern_genlist);
-       evas_object_del(dpld->pattern_genlist);
-       create_pattern_genlist(dpld);
-}
-
-static char *_pattern_genlist_text_get_cb(void *data, Evas_Object *obj, const char *part)
-{
-       dlp_item_pattern_s *pattern = (dlp_item_pattern_s *)data;
-
-       if (strcmp(part, "elm.text") == 0)
-               return strdup(pattern->data->name);
-
-       if (strcmp(part, "elm.text.multiline") == 0) {
-               if (pattern == NULL)
-                       return "";
-
-               return strdup(pattern->data->description);
-       }
-
-       return NULL;
-}
-
-static void _pattern_genlist_item_selected_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       /* Get selected item */
-       Elm_Object_Item *ei = event_info;
-       dlp_item_pattern_s *item = elm_object_item_data_get(ei);
-
-       /* Unhighlight selected item */
-       elm_genlist_item_selected_set(ei, EINA_FALSE);
-
-       dlp_pattern_list_data_s *dpld = (dlp_pattern_list_data_s *)data;
-       create_privacy_dlp_pattern_detailed_view(dpld->ad, item->data, dpld->config, dpld);
-}
-
-static void _pattern_list_view_create_rule_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       dlp_pattern_list_data_s *dpld = data;
-
-       elm_ctxpopup_dismiss(dpld->pattern_ctxpopup);
-       create_privacy_dlp_pattern_create_view(dpld->ad, NULL, dpld);
-}
-
-static void _pattern_list_view_delete_rules_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       dlp_pattern_list_data_s *dpld = data;
-       elm_ctxpopup_dismiss(dpld->pattern_ctxpopup);
-       create_privacy_dlp_pattern_delete_view(dpld->ad, dpld->pattern_list, dpld);
-}
-
-static void _pattern_list_view_menu_button_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       dlp_pattern_list_data_s *dpld = data;
-
-       eext_object_event_callback_del(dpld->pattern_genlist, EEXT_CALLBACK_MORE, _pattern_list_view_menu_button_cb);
-       eext_object_event_callback_add(dpld->pattern_genlist, EEXT_CALLBACK_MORE, _pattern_list_view_dismiss_menu_cb, dpld);
-
-       if (!dpld->pattern_ctxpopup) {
-               dpld->pattern_ctxpopup = create_ctxpop(dpld->ad);
-               elm_ctxpopup_item_append(dpld->pattern_ctxpopup, dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_CREATE), NULL, _pattern_list_view_create_rule_cb, data);
-               if (has_deletable_pattern(dpld->pattern_list))
-                       elm_ctxpopup_item_append(dpld->pattern_ctxpopup, dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_DELETE), NULL, _pattern_list_view_delete_rules_cb, data);
-               evas_object_smart_callback_add(dpld->pattern_ctxpopup, "dismissed", _pattern_list_view_menu_dismissed_cb, dpld);
-       } else {
-               evas_object_show(dpld->pattern_ctxpopup);
-       }
-}
-
-static void _pattern_list_view_menu_dismissed_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       dlp_pattern_list_data_s *dpld = data;
-
-       eext_object_event_callback_del(dpld->pattern_genlist, EEXT_CALLBACK_MORE, _pattern_list_view_dismiss_menu_cb);
-       eext_object_event_callback_add(dpld->pattern_genlist, EEXT_CALLBACK_MORE, _pattern_list_view_menu_button_cb, dpld);
-}
-
-static void _pattern_list_view_dismiss_menu_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       dlp_pattern_list_data_s *dpld = data;
-       elm_ctxpopup_dismiss(dpld->pattern_ctxpopup);
-}
-
-void delete_category_list()
-{
-       if (NULL == pattern_list_data.category_list)
-               return;
-
-       /* Delete all the categories */
-       GList *l;
-       for (l = pattern_list_data.category_list; l != NULL; l = l->next) {
-               char *category = l->data;
-               free(category);
-       }
-       /* Delete category list */
-       g_list_free(pattern_list_data.category_list);
-       pattern_list_data.category_list = NULL;
-}
-
-void delete_pattern_list()
-{
-       if (NULL == pattern_list_data.pattern_list)
-               return;
-
-       g_list_free_full(pattern_list_data.pattern_list, free_dlp_pattern);
-       pattern_list_data.pattern_list = NULL;
-}
-
-static void set_pattern_filter_text(Evas_Object *category_hoversel, dlp_pattern_list_data_s* data)
-{
-       const char format[] = "<color=#FFFFFFFF left_margin=25>%s</color>";
-       char text[LEN_CATEGORY + 1 + sizeof format];
-       const size_t text_len = sizeof text;
-       snprintf(text, text_len, format, data->current_category);
-       text[text_len - 1] = '\0';
-       elm_object_text_set(category_hoversel, text);
-}
-
-static void set_empty_pattern_genlist(Evas_Object *pattern_genlist)
-{
-       elm_layout_theme_set(pattern_genlist, "layout", "nocontents", "default");
-}
-
-static int populate_pattern_genlist(dlp_pattern_list_data_s* data)
-{
-       int pattern_count = 0;
-
-       if (NULL != data->pattern_list) {
-               Elm_Genlist_Item_Class *itc = elm_genlist_item_class_new();
-               itc->item_style = "multiline";
-               itc->func.text_get = _pattern_genlist_text_get_cb;
-               itc->func.del = _pattern_genlist_del_cb;
-
-               Elm_Object_Item *it = NULL;
-               GList* l;
-               /* Append patterns as genlist item */
-               for (l = data->pattern_list; l != NULL; l = l->next) {
-                       // note item will be freed either in _pattern_genlist_del_cb or at the end of the loop
-                       dlp_item_pattern_s *item = g_slice_new0(dlp_item_pattern_s);
-                       if (NULL == item)
-                               continue;
-
-                       // pattern item data
-                       item->data = (get_pattern_s*)l->data;
-
-                       // append pattern to the genlist
-                       if (strcmp(data->current_category, ALL_PATTERNS) == 0
-                                       || strcmp(data->current_category, item->data->category.text) == 0) {
-                               it = elm_genlist_item_append(data->pattern_genlist, itc, item, NULL, ELM_GENLIST_ITEM_NONE, _pattern_genlist_item_selected_cb, data);
-                               log_if(it == NULL, 1, "Error in elm_genlist_item_append");
-                               ++pattern_count;
-                       } else {
-                               g_slice_free(dlp_item_pattern_s, item);
-                       }
-               }
-
-               elm_genlist_item_class_free(itc);
-       }
-
-       return pattern_count;
-}
-
-static void create_pattern_hoversel(dlp_pattern_list_data_s *data)
-{
-       Evas_Object *pattern_hoversel = elm_hoversel_add(data->pattern_box);
-       elm_hoversel_horizontal_set(pattern_hoversel, EINA_FALSE);
-       elm_hoversel_hover_parent_set(pattern_hoversel, data->pattern_box);
-       // Populate hoversel
-       elm_hoversel_item_add(pattern_hoversel, ALL_PATTERNS, NULL, ELM_ICON_NONE, _pattern_filter_cb, data);
-       GList* l;
-       for (l = data->category_list; l != NULL; l = l->next) {
-               const char *category;
-               category = l->data;
-               elm_hoversel_item_add(pattern_hoversel, category, NULL, ELM_ICON_NONE, _pattern_filter_cb, data);
-       }
-       set_pattern_filter_text(pattern_hoversel, data);
-       evas_object_size_hint_weight_set(pattern_hoversel, EVAS_HINT_EXPAND, 0.0);
-       evas_object_size_hint_align_set(pattern_hoversel, EVAS_HINT_FILL, EVAS_HINT_FILL);
-       evas_object_show(pattern_hoversel);
-       elm_box_pack_end(data->pattern_box, pattern_hoversel);
-}
-
-static void create_pattern_genlist(dlp_pattern_list_data_s* data)
-{
-       data->pattern_genlist = common_genlist_add(data->pattern_box);
-       evas_object_size_hint_weight_set(data->pattern_genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
-       evas_object_size_hint_align_set(data->pattern_genlist, EVAS_HINT_FILL, EVAS_HINT_FILL);
-       if (populate_pattern_genlist(data) == 0)
-               set_empty_pattern_genlist(data->pattern_genlist);
-       evas_object_show(data->pattern_genlist);
-       elm_box_pack_end(data->pattern_box, data->pattern_genlist);
-}
-
-static void create_pattern_list_components(dlp_pattern_list_data_s* data)
-{
-       /* Create box container to hold view's components */
-       data->pattern_box = elm_box_add(data->view_parent);
-       evas_object_show(data->pattern_box);
-
-       create_pattern_hoversel(data);
-       create_pattern_genlist(data);
-
-       elm_object_part_content_set(data->view_parent, "elm.swallow.content", data->pattern_box);
-
-       if (PRIV_GUARD_DLP_PROFILE_CUSTOM == data->config->profile)
-               /* Register the Menu key event callback */
-               eext_object_event_callback_add(data->pattern_box, EEXT_CALLBACK_MORE, _pattern_list_view_menu_button_cb, data);
-}
-
-static bool has_deletable_pattern(const GList *pattern_list)
-{
-       bool has_deletable = false;
-       GList* l;
-       for (l = pattern_list_data.pattern_list; l != NULL; l = l->next) {
-               get_pattern_s* pattern = (get_pattern_s*)(l->data);
-               if (!pattern->undeletable) {
-                       has_deletable = true;
-                       break;
-               }
-       }
-       return has_deletable;
-}
-
-void update_privacy_dlp_patterns_list_view(void *pattern_list_data)
-{
-       if (NULL == pattern_list_data) {
-               LOGE("Invalid parameter");
-               return;
-       }
-
-       dlp_pattern_list_data_s *dpld = pattern_list_data;
-
-       delete_pattern_list();
-
-    /* Get dlp leak logs from privacy guard */
-       const int res = privacy_guard_client_foreach_dlp_patterns(_pg_dlp_patterns_cb, dpld);
-       log_if(res != PRIV_GUARD_ERROR_SUCCESS, 1, "privacy_guard_client_foreach_dlp_custom_rules() is failed. [%d]", res);
-
-       elm_box_unpack(dpld->pattern_box, dpld->pattern_genlist);
-       evas_object_del(dpld->pattern_genlist);
-       create_pattern_list_components(dpld);
-}
-
-void create_privacy_dlp_patterns_list_view(struct app_data_s *ad, Evas_Object *parent, const dlp_profile_s *config)
-{
-       delete_category_list();
-       delete_pattern_list();
-
-       pattern_list_data.ad = ad;
-       pattern_list_data.view_parent = parent;
-       pattern_list_data.current_category = ALL_PATTERNS;
-       pattern_list_data.config = config;
-
-       int res = privacy_guard_client_foreach_dlp_categories(_pg_dlp_categories_cb, &pattern_list_data);
-       log_if(res != PRIV_GUARD_ERROR_SUCCESS, 1, "privacy_guard_client_foreach_dlp_categories() failed. [%d]", res);
-       pattern_list_data.category_list = g_list_reverse(pattern_list_data.category_list);
-
-       /* Get dlp patterns from privacy guard */
-       res = privacy_guard_client_foreach_dlp_patterns(_pg_dlp_patterns_cb, &pattern_list_data);
-       log_if(res != PRIV_GUARD_ERROR_SUCCESS, 1, "privacy_guard_client_foreach_dlp_patterns() failed. [%d]", res);
-       pattern_list_data.pattern_list = g_list_reverse(pattern_list_data.pattern_list);
-
-       create_pattern_list_components(&pattern_list_data);
-}
diff --git a/ui/src/privacy_dlp_reports_app_rank_view.c b/ui/src/privacy_dlp_reports_app_rank_view.c
deleted file mode 100644 (file)
index 7d44e22..0000000
+++ /dev/null
@@ -1,248 +0,0 @@
-/**
- * Copyright (c) 2017 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.
- */
-/*
- * @file       privacy_dlp_reports_app_rank_view.c
- * @version    1.0
- * @brief
- */
-
-#include <efl_extension.h>
-#include <glib.h>
-#include <time.h>
-#include <tzplatform_config.h>
-#include <privacy_guard_client.h>
-#include "common_utils.h"
-#include "privacy_setting.h"
-#include "privacy_view.h"
-#include "privilege_info.h"
-
-#define REPORT_TOTAL_LEAKS_LEN 100
-
-static GList* dlp_leak_log_list = NULL;
-static Evas_Object *genlist = NULL;
-
-void update_privacy_dlp_reports_app_rank_view(struct app_data_s *ad);
-
-static dlp_statistics_cb_s stats_cb = {
-       NULL,
-       privacy_guard_client_foreach_leak_logs_by_app_name,
-       update_privacy_dlp_reports_app_rank_view
-};
-
-static bool _pg_dlp_leak_logs_cb(const char *app_name, time_t first_time_stamp, time_t last_time_stamp, const char *app_icon, int leak_count, void *user_data)
-{
-       // note that data is freed update_privacy_dlp_reports_app_rank_view() and create_privacy_dlp_reports_app_rank_view()
-       leak_log_get_app_count_s *data = g_slice_new(leak_log_get_app_count_s);
-
-       strncpy(data->application_name, app_name, LEN_APPLICATION_NAME);
-       data->application_name[LEN_APPLICATION_NAME - 1] = '\0';
-       data->first_time_stamp = first_time_stamp;
-       data->last_time_stamp = last_time_stamp;
-       strncpy(data->application_icon, app_icon, LEN_APPLICATION_ICON);
-       data->application_icon[LEN_APPLICATION_ICON - 1] = '\0';
-       data->leak_count = leak_count;
-
-       dlp_leak_log_list = g_list_prepend(dlp_leak_log_list, data);
-
-       return true;
-}
-
-static char* _gl_text_get_cb(void *data, Evas_Object *obj, const char *part)
-{
-       leak_log_get_app_count_s *item = (leak_log_get_app_count_s *)data;
-
-       if (strcmp(part, "elm.text") == 0)
-               return strdup(item->application_name);
-
-       if (strcmp(part, "elm.text.multiline") == 0) {
-               if (item == NULL)
-                       return "";
-               char string_buf[REPORT_TOTAL_LEAKS_LEN];
-
-               int size = snprintf(string_buf, REPORT_TOTAL_LEAKS_LEN, "%s: %d<br>From: ",
-                       dgettext("privacy-setting", PRIVACY_MENU_DLP_REPORTS_TOTAL_LEAKS), item->leak_count);
-
-               struct tm timestamp;
-               gmtime_r(&item->first_time_stamp, &timestamp);
-               size += strftime(string_buf + size, 100 - size, "%b %d, %Y - To: ", &timestamp);
-
-               gmtime_r(&item->last_time_stamp, &timestamp);
-               size += strftime(string_buf + size, 100 - size, "%b %d, %Y", &timestamp);
-
-               char *multiline = strdup(string_buf);
-
-               return multiline;
-       }
-
-       return NULL;
-}
-
-/**
- * @brief Internal callback function invoked when genlist item displayed.
- * @param[in] data The user data passed to the elm_genlist_item_append() function
- * @param[in] obj The object invoking this callback function
- * @param[in] part The name of the item's part being rendered
- */
-static Evas_Object *_gl_content_get_cb(void *data, Evas_Object *obj, const char *part)
-{
-       leak_log_get_app_count_s *item = (leak_log_get_app_count_s *)data;
-
-       if (strcmp(part, "elm.swallow.icon") == 0) {
-               Evas_Object *icon = elm_icon_add(obj);
-               elm_image_file_set(icon, item->application_icon, NULL);
-               evas_object_size_hint_min_set(icon, ELM_SCALE_SIZE(50), ELM_SCALE_SIZE(50));
-               return icon;
-       }
-
-       return NULL;
-}
-
-static void _menu_item_selected_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       /* Get selected item */
-       Elm_Object_Item *ei = event_info;
-       leak_log_get_app_count_s *item = elm_object_item_data_get(ei);
-
-       /* Unhighlight selected item */
-       elm_genlist_item_selected_set(ei, EINA_FALSE);
-
-       struct app_data_s *ad = (struct app_data_s *)data;
-
-       stats_cb.name = item->application_name;
-       create_privacy_dlp_reports_full_view(&stats_cb, ad);
-}
-
-/*
- * @brief Function will be operated when genlist is deleted.
- * @param[in] data The data to be passed to the callback function
- * @param[in] obj The Evas object handle to be passed to the callback function
- */
-static void _gl_del_cb(void *data, Evas_Object *obj)
-{
-       g_slice_free(leak_log_get_app_count_s, data);
-}
-
-/**
- * @brief Creates essential objects for the screen.
- */
-void create_privacy_dlp_reports_app_rank_view(struct app_data_s *ad)
-{
-       uid_t user_id = getuid();
-       if (dlp_leak_log_list) {
-               g_list_free(dlp_leak_log_list);
-               dlp_leak_log_list = NULL;
-       }
-
-       /* Get dlp leak logs from privacy guard */
-       int res = privacy_guard_client_foreach_app_leak_count(user_id, _pg_dlp_leak_logs_cb, NULL);
-       log_if(res != PRIV_GUARD_ERROR_SUCCESS, 1, "privacy_guard_client_foreach_app_leak_count() is failed. [%d]", res);
-       dlp_leak_log_list = g_list_reverse(dlp_leak_log_list);
-
-       if (g_list_length(dlp_leak_log_list) == 0) {
-               // No content in the genlist
-
-               /* Create elm_layout and set its style as nocontents/text */
-               genlist = elm_layout_add(ad->nf);
-               elm_layout_theme_set(genlist, "layout", "nocontents", "default");
-               evas_object_size_hint_weight_set(genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
-               evas_object_size_hint_align_set(genlist, EVAS_HINT_FILL, EVAS_HINT_FILL);
-
-               elm_object_part_text_set(genlist, "elm.text", dgettext("privacy-setting", PRIVACY_MENU_DLP_REPORTS_EMPTY));
-
-               elm_layout_signal_emit(genlist, "align.center", "elm");
-
-       } else {
-               genlist = common_genlist_add(ad->nf);
-               evas_object_size_hint_weight_set(genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
-               evas_object_size_hint_align_set(genlist, EVAS_HINT_FILL, EVAS_HINT_FILL);
-               elm_genlist_mode_set(genlist, ELM_LIST_COMPRESS);
-
-               elm_object_style_set(genlist, "effect");
-
-               Elm_Genlist_Item_Class *itc = elm_genlist_item_class_new();
-
-               itc->item_style = "multiline";
-               itc->func.text_get = _gl_text_get_cb;
-               itc->func.content_get = _gl_content_get_cb;
-               itc->func.del = _gl_del_cb;
-
-               GList *elem;
-
-               /* Append privacy related package as genlist item */
-               for (elem = dlp_leak_log_list; elem; elem = elem->next) {
-                       leak_log_get_app_count_s *item = elem->data;
-
-                       // append to the genlist
-                       Elm_Object_Item *it = NULL;
-                       it = elm_genlist_item_append(genlist, itc, item, NULL, ELM_GENLIST_ITEM_NONE, _menu_item_selected_cb, ad);
-                       log_if(it == NULL, 1, "Error in elm_genlist_item_append");
-               }
-
-               elm_genlist_item_class_free(itc);
-       }
-
-       evas_object_show(genlist);
-
-       /* Change "Privacy Setting" to proper DID : use dgettext() */
-       Elm_Object_Item *nf_it = elm_naviframe_item_push(ad->nf, dgettext("privacy-setting", PRIVACY_MENU_DLP_REPORTS_APP_RANK), common_back_btn_add(ad), NULL, genlist, NULL);
-
-       elm_object_item_domain_text_translatable_set(nf_it, PACKAGE, EINA_TRUE);
-}
-
-void update_privacy_dlp_reports_app_rank_view(struct app_data_s *ad)
-{
-       elm_genlist_clear(genlist);
-
-       uid_t user_id = getuid();
-       if (dlp_leak_log_list) {
-               g_list_free(dlp_leak_log_list);
-               dlp_leak_log_list = NULL;
-       }
-
-       /* Get dlp leak logs from privacy guard */
-       int res = privacy_guard_client_foreach_app_leak_count(user_id, _pg_dlp_leak_logs_cb, NULL);
-       log_if(res != PRIV_GUARD_ERROR_SUCCESS, 1, "privacy_guard_client_foreach_app_leak_count() is failed. [%d]", res);
-       dlp_leak_log_list = g_list_reverse(dlp_leak_log_list);
-
-       if (g_list_length(dlp_leak_log_list) == 0) {
-               // No content in the genlist
-               elm_layout_theme_set(genlist, "layout", "nocontents", "default");
-               elm_object_part_text_set(genlist, "elm.text", dgettext("privacy-setting", PRIVACY_MENU_DLP_REPORTS_EMPTY));
-               elm_layout_signal_emit(genlist, "align.center", "elm");
-
-       } else {
-               Elm_Genlist_Item_Class *itc = elm_genlist_item_class_new();
-
-               itc->item_style = "multiline";
-               itc->func.text_get = _gl_text_get_cb;
-               itc->func.content_get = _gl_content_get_cb;
-               itc->func.del = _gl_del_cb;
-
-               GList *elem;
-
-               /* Append privacy related package as genlist item */
-               for (elem = dlp_leak_log_list; elem; elem = elem->next) {
-                       leak_log_get_app_count_s *item = elem->data;
-
-                       // append to the genlist
-                       Elm_Object_Item *it = NULL;
-                       it = elm_genlist_item_append(genlist, itc, item, NULL, ELM_GENLIST_ITEM_NONE, _menu_item_selected_cb, ad);
-                       log_if(it == NULL, 1, "Error in elm_genlist_item_append");
-               }
-
-               elm_genlist_item_class_free(itc);
-       }
-}
diff --git a/ui/src/privacy_dlp_reports_data_stat_view.c b/ui/src/privacy_dlp_reports_data_stat_view.c
deleted file mode 100644 (file)
index 111d204..0000000
+++ /dev/null
@@ -1,234 +0,0 @@
-/**
- * Copyright (c) 2017 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.
- */
-/*
- * @file       privacy_dlp_reports_data_stat_view.c
- * @version    1.0
- * @brief
- */
-
-#include <efl_extension.h>
-#include <glib.h>
-#include <time.h>
-#include <tzplatform_config.h>
-#include <privacy_guard_client.h>
-#include "common_utils.h"
-#include "privacy_setting.h"
-#include "privacy_view.h"
-#include "privilege_info.h"
-
-static GList* dlp_leak_log_list = NULL;
-static Evas_Object *genlist = NULL;
-
-void update_privacy_dlp_reports_data_stat_view(struct app_data_s *ad);
-
-static dlp_statistics_cb_s stats_cb = {
-       NULL,
-       privacy_guard_client_foreach_leak_logs_by_category,
-       update_privacy_dlp_reports_data_stat_view
-};
-
-static bool _pg_dlp_leak_logs_cb(const char *category, time_t first_time_stamp, time_t last_time_stamp, int leak_count, void *user_data)
-{
-       leak_log_get_category_count_s *data = g_slice_new(leak_log_get_category_count_s);
-
-       strncpy(data->category.text, category, LEN_CATEGORY);
-       data->category.text[LEN_CATEGORY - 1] = '\0';
-       data->first_time_stamp = first_time_stamp;
-       data->last_time_stamp = last_time_stamp;
-       data->leak_count = leak_count;
-
-       dlp_leak_log_list = g_list_prepend(dlp_leak_log_list, data);
-
-       return true;
-}
-
-static char* _gl_text_get_cb(void *data, Evas_Object *obj, const char *part)
-{
-       leak_log_get_category_count_s *item = (leak_log_get_category_count_s *)data;
-
-       if (strcmp(part, "elm.text") == 0)
-               return strdup(item->category.text);
-
-       if (strcmp(part, "elm.text.multiline") == 0) {
-               if (item == NULL)
-                       return "";
-               char string_buf[100];
-
-               int size = snprintf(string_buf, 100, "%s: %d<br>From: ", dgettext("privacy-setting",
-                       PRIVACY_MENU_DLP_REPORTS_TOTAL_LEAKS), item->leak_count);
-
-               struct tm timestamp;
-               gmtime_r(&item->first_time_stamp, &timestamp);
-               size += strftime(string_buf + size, 100 - size, "%b %d, %Y - To: ", &timestamp);
-
-               gmtime_r(&item->last_time_stamp, &timestamp);
-               size += strftime(string_buf + size, 100 - size, "%b %d, %Y", &timestamp);
-
-               char *multiline = strdup(string_buf);
-
-               return multiline;
-       }
-
-       return NULL;
-}
-
-/**
- * @brief Internal callback function invoked when genlist item displayed.
- * @param[in] data The user data passed to the elm_genlist_item_append() function
- * @param[in] obj The object invoking this callback function
- * @param[in] part The name of the item's part being rendered
- */
-static Evas_Object *_gl_content_get_cb(void *data, Evas_Object *obj, const char *part)
-{
-       return NULL;
-}
-
-static void _menu_item_selected_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       /* Get selected item */
-       Elm_Object_Item *ei = event_info;
-       leak_log_get_category_count_s *item = elm_object_item_data_get(ei);
-
-       /* Unhighlight selected item */
-       elm_genlist_item_selected_set(ei, EINA_FALSE);
-
-       struct app_data_s *ad = (struct app_data_s *)data;
-
-       stats_cb.name = item->category.text;
-       create_privacy_dlp_reports_full_view(&stats_cb, ad);
-}
-
-/*
- * @brief Function will be operated when genlist is deleted.
- * @param[in] data The data to be passed to the callback function
- * @param[in] obj The Evas object handle to be passed to the callback function
- */
-static void _gl_del_cb(void *data, Evas_Object *obj)
-{
-       g_slice_free(leak_log_get_category_count_s, data);
-}
-
-/**
- * @brief Creates essential objects for the screen.
- */
-void create_privacy_dlp_reports_data_stat_view(struct app_data_s *ad)
-{
-       uid_t user_id = getuid();
-       if (dlp_leak_log_list) {
-               g_list_free(dlp_leak_log_list);
-               dlp_leak_log_list = NULL;
-       }
-
-       /* Get dlp leak logs from privacy guard */
-       int res = privacy_guard_client_foreach_category_leak_count(user_id, _pg_dlp_leak_logs_cb, NULL);
-       log_if(res != PRIV_GUARD_ERROR_SUCCESS, 1, "privacy_guard_client_foreach_category_leak_count() is failed. [%d]", res);
-       dlp_leak_log_list = g_list_reverse(dlp_leak_log_list);
-
-       if (g_list_length(dlp_leak_log_list) == 0) {
-               // No content in the genlist
-
-               /* Create elm_layout and set its style as nocontents/text */
-               genlist = elm_layout_add(ad->nf);
-               elm_layout_theme_set(genlist, "layout", "nocontents", "default");
-               evas_object_size_hint_weight_set(genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
-               evas_object_size_hint_align_set(genlist, EVAS_HINT_FILL, EVAS_HINT_FILL);
-
-               elm_object_part_text_set(genlist, "elm.text", dgettext("privacy-setting", PRIVACY_MENU_DLP_REPORTS_EMPTY));
-
-               elm_layout_signal_emit(genlist, "align.center", "elm");
-
-       } else {
-               genlist = common_genlist_add(ad->nf);
-               evas_object_size_hint_weight_set(genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
-               evas_object_size_hint_align_set(genlist, EVAS_HINT_FILL, EVAS_HINT_FILL);
-               elm_genlist_mode_set(genlist, ELM_LIST_COMPRESS);
-
-               elm_object_style_set(genlist, "effect");
-
-               Elm_Genlist_Item_Class *itc = elm_genlist_item_class_new();
-
-               itc->item_style = "multiline";
-               itc->func.text_get = _gl_text_get_cb;
-               itc->func.content_get = _gl_content_get_cb;
-               itc->func.del = _gl_del_cb;
-
-               GList *elem;
-
-               /* Append privacy related package as genlist item */
-               for (elem = dlp_leak_log_list; elem; elem = elem->next) {
-                       leak_log_get_category_count_s *item = elem->data;
-
-                       // append to the genlist
-                       Elm_Object_Item *it = NULL;
-                       it = elm_genlist_item_append(genlist, itc, item, NULL, ELM_GENLIST_ITEM_NONE, _menu_item_selected_cb, ad);
-                       log_if(it == NULL, 1, "Error in elm_genlist_item_append");
-               }
-
-               elm_genlist_item_class_free(itc);
-       }
-
-       evas_object_show(genlist);
-
-       /* Change "Privacy Setting" to proper DID : use dgettext() */
-       Elm_Object_Item *nf_it = elm_naviframe_item_push(ad->nf, dgettext("privacy-setting", PRIVACY_MENU_DLP_REPORTS_STATISTICS), common_back_btn_add(ad), NULL, genlist, NULL);
-
-       elm_object_item_domain_text_translatable_set(nf_it, PACKAGE, EINA_TRUE);
-}
-
-void update_privacy_dlp_reports_data_stat_view(struct app_data_s *ad)
-{
-       elm_genlist_clear(genlist);
-
-       uid_t user_id = getuid();
-       if (dlp_leak_log_list) {
-               g_list_free(dlp_leak_log_list);
-               dlp_leak_log_list = NULL;
-       }
-
-       /* Get dlp leak logs from privacy guard */
-       int res = privacy_guard_client_foreach_category_leak_count(user_id, _pg_dlp_leak_logs_cb, NULL);
-       log_if(res != PRIV_GUARD_ERROR_SUCCESS, 1, "privacy_guard_client_foreach_app_leak_count() is failed. [%d]", res);
-       dlp_leak_log_list = g_list_reverse(dlp_leak_log_list);
-
-       if (g_list_length(dlp_leak_log_list) == 0) {
-               // No content in the genlist
-               elm_layout_theme_set(genlist, "layout", "nocontents", "default");
-               elm_object_part_text_set(genlist, "elm.text", dgettext("privacy-setting", PRIVACY_MENU_DLP_REPORTS_EMPTY));
-               elm_layout_signal_emit(genlist, "align.center", "elm");
-
-       } else {
-               Elm_Genlist_Item_Class *itc = elm_genlist_item_class_new();
-
-               itc->item_style = "multiline";
-               itc->func.text_get = _gl_text_get_cb;
-               itc->func.content_get = _gl_content_get_cb;
-               itc->func.del = _gl_del_cb;
-
-               GList *elem;
-
-               /* Append privacy related package as genlist item */
-               for (elem = dlp_leak_log_list; elem; elem = elem->next) {
-                       leak_log_get_app_count_s *item = elem->data;
-
-                       // append to the genlist
-                       Elm_Object_Item *it = NULL;
-                       it = elm_genlist_item_append(genlist, itc, item, NULL, ELM_GENLIST_ITEM_NONE, _menu_item_selected_cb, ad);
-                       log_if(it == NULL, 1, "Error in elm_genlist_item_append");
-               }
-
-               elm_genlist_item_class_free(itc);
-       }
-}
diff --git a/ui/src/privacy_dlp_reports_del_view.c b/ui/src/privacy_dlp_reports_del_view.c
deleted file mode 100644 (file)
index d3ccf9d..0000000
+++ /dev/null
@@ -1,437 +0,0 @@
-/**
- * Copyright (c) 2017 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.
- */
-/*
- * @file       privacy_dlp_reports_del_view.c
- * @version    1.0
- * @brief
- */
-
-#include "common_utils.h"
-#include "common_popup.h"
-#include "privacy_view.h"
-#include <efl_extension.h>
-
-#define MAX_DELETE_LOG 100
-
-typedef struct {
-       struct app_data_s *ad;
-       GList *log_list;
-       rule_action_filter action;
-       bool logs_deleted;
-       Evas_Object *genlist;
-       Evas_Object *confirm_delete_popup;
-       Evas_Object *delete_button;
-       Elm_Object_Item *naviframe_title;
-} reports_del_data_s;
-
-static reports_del_data_s reports_del_data = {
-       .ad = NULL,
-       .log_list = NULL,
-       .action = ACTION_ALL,
-       .logs_deleted = false,
-       .genlist = NULL,
-       .confirm_delete_popup = NULL,
-       .delete_button = NULL,
-       .naviframe_title = NULL
-};
-
-static Evas_Object *create_check(Evas_Object *parent);
-static size_t get_number_of_selected_logs(Evas_Object *genlist);
-static void set_view_title_bar(reports_del_data_s *data);
-
-static void _reports_del_popup_ok_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       reports_del_data_s *rdd = data;
-       const size_t total_logs = elm_genlist_items_count(rdd->genlist);
-
-       int log_id[MAX_DELETE_LOG];
-       int res = PRIV_GUARD_ERROR_SUCCESS;
-       size_t total_deleted_logs = 0;
-       size_t i = 1;
-
-       // Select checked log ids and delete them
-       while (i <= total_logs) {
-               int log_count = 0;
-
-               // Select at most MAX_DELETE_LOGs to avoid potential memory problems
-               // and large number of variables in SQL query
-               while (i <= total_logs && log_count < MAX_DELETE_LOG) {
-                       Elm_Object_Item *item = elm_genlist_nth_item_get(rdd->genlist, i);
-
-                       if (NULL != item) {
-                               const dlp_item_log_s *leak_log_item = elm_object_item_data_get(item);
-
-                               if (NULL != leak_log_item && leak_log_item->is_checked)
-                                       log_id[log_count++] = leak_log_item->data->log_id;
-                       }
-
-                       ++i;
-               }
-
-               if (log_count > 0) {
-                       // Delete selected logs
-                       res = privacy_guard_client_purge_leak_logs_by_logid(log_id, log_count);
-                       if (PRIV_GUARD_ERROR_SUCCESS == res) {
-                               LOGI("Deleted %d logs.", log_count);
-                               total_deleted_logs += log_count;
-                       } else {
-                               LOGE("Failed to delete logs. Error=%d", res);
-                       }
-               }
-       }
-
-       if (PRIV_GUARD_ERROR_SUCCESS == res) {
-               GString *toast_msg = g_string_new(NULL);
-               if (total_deleted_logs > 1) {
-                       const char *format = dgettext("privacy-setting", PRIVACY_MENU_DLP_LOG_LOGS_DELETED);
-                       g_string_printf(toast_msg, format, total_deleted_logs);
-               } else {
-                       g_string_assign(toast_msg, dgettext("privacy-setting", PRIVACY_MENU_DLP_LOG_DELETED));
-               }
-
-               show_toast_notification(toast_msg->str, rdd->ad->win);
-
-               g_string_free(toast_msg, TRUE);
-       }
-
-       destroy_popup(rdd->confirm_delete_popup);
-       rdd->confirm_delete_popup = NULL;
-       elm_naviframe_item_pop(rdd->ad->nf);
-
-       rdd->logs_deleted = true; // logs are deleted in the function below, so we set this flag to true
-       update_privacy_dlp_reports_full_view();
-}
-
-static void _reports_del_popup_cancel_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       reports_del_data_s *rdd = data;
-       destroy_popup(rdd->confirm_delete_popup);
-       rdd->confirm_delete_popup = NULL;
-}
-
-static void _reports_del_cancel_btn_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       reports_del_data_s *rdd = data;
-       destroy_popup(rdd->confirm_delete_popup);
-       rdd->confirm_delete_popup = NULL;
-       elm_naviframe_item_pop(rdd->ad->nf);
-}
-
-static void _reports_del_delete_btn_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       reports_del_data_s *rdd = data;
-
-       GString *confirm_del_msg = g_string_new(NULL);
-       const char *format = dgettext("privacy-setting", PRIVACY_MENU_DLP_LOG_LOGS_WILL_BE_DELETED);
-       g_string_printf(confirm_del_msg, format, get_number_of_selected_logs(rdd->genlist));
-       rdd->confirm_delete_popup = create_two_buttons_popup(
-               rdd->genlist,
-               dgettext("privacy-setting", PRIVACY_MENU_DLP_LOG_DELETE_LOG),
-               confirm_del_msg->str,
-               dgettext("privacy-setting", PRIVACY_MENU_DLP_LOG_DELETE_BTN),
-               _reports_del_popup_ok_cb,
-               dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_CANCEL),
-               _reports_del_popup_cancel_cb,
-               _reports_del_popup_cancel_cb,
-               rdd);
-       g_string_free(confirm_del_msg, TRUE);
-}
-
-static char *_reports_del_select_all_text_get_cb(void *data, Evas_Object *obj, const char *part)
-{
-       if (strcmp(part, "elm.text") == 0)
-               return strdup(dgettext("privacy-setting", PRIVACY_MENU_DLP_LOG_SELECT_ALL));
-       return NULL;
-}
-
-static Evas_Object *_reports_del_select_all_content_get_cb(void *data, Evas_Object *obj, const char *part)
-{
-       if (strcmp(part, "elm.swallow.end") == 0) {
-               dlp_item_log_s *item = (dlp_item_log_s *)data;
-               Evas_Object *check = create_check(obj);
-               elm_check_state_set(check, item->is_checked ? EINA_TRUE : EINA_FALSE);
-               item->check = check;
-               return check;
-       }
-       return NULL;
-}
-
-static void _reports_del_select_all_selected_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       /* Get selected ("Select all") item */
-       Elm_Object_Item *ei = event_info;
-       dlp_item_log_s *item = elm_object_item_data_get(ei);
-       item->is_checked = !item->is_checked;
-       const bool is_checked = item->is_checked;
-       const Eina_Bool check_checkbox = is_checked ? EINA_TRUE : EINA_FALSE;
-
-       /* Unhighlight selected item */
-       elm_genlist_item_selected_set(ei, EINA_FALSE);
-
-       while (NULL != ei) {
-               item = elm_object_item_data_get(ei);
-               elm_check_state_set(item->check, check_checkbox);
-               item->is_checked = is_checked;
-               ei = elm_genlist_item_next_get(ei);
-       }
-
-       reports_del_data_s *rdd = data;
-       set_view_title_bar(rdd);
-}
-
-static char *_reports_del_gl_text_get_cb(void *data, Evas_Object *obj, const char *part)
-{
-       if (reports_del_data.logs_deleted)
-               return NULL;
-
-       dlp_item_log_s *item = (dlp_item_log_s *)data;
-
-       if (strcmp(part, "elm.text") == 0)
-               return strdup(item->data->app_name);
-
-       if (strcmp(part, "elm.text.multiline") == 0) {
-               if (item->data == NULL)
-                       return "";
-
-               char time_str[64] = {0,};
-               struct tm timeinfo;
-               localtime_r(&item->data->time_stamp, &timeinfo);
-               strftime(time_str, sizeof(time_str), "%a, %x %X", &timeinfo);
-
-               GString *string_buf = g_string_new(NULL);
-               g_string_printf(string_buf, "%s<br>%s", item->data->destination, time_str);
-               char *multiline = strdup(string_buf->str);
-               g_string_free(string_buf, TRUE);
-
-               return multiline;
-       }
-
-       return NULL;
-}
-
-static Evas_Object *_reports_del_gl_content_get_cb(void *data, Evas_Object *obj, const char *part)
-{
-       if (reports_del_data.logs_deleted)
-               return NULL;
-
-       dlp_item_log_s *item = (dlp_item_log_s *)data;
-
-       if (strcmp(part, "elm.swallow.end") == 0) {
-               Evas_Object *check = create_check(obj);
-               elm_check_state_set(check, item->is_checked ? EINA_TRUE : EINA_FALSE);
-               item->check = check;
-               return check;
-       }
-
-       if (strcmp(part, "elm.swallow.icon") == 0) {
-               if (item->data == NULL)
-                       return NULL;
-
-               Evas_Object *icon = elm_icon_add(obj);
-               elm_image_file_set(icon, item->data->app_icon, NULL);
-               evas_object_size_hint_min_set(icon, ELM_SCALE_SIZE(50), ELM_SCALE_SIZE(50));
-               // NOTE: code below is commented out because only allow actions will be
-               //       released to Tizen 4.0, so action icons become meaningless.
-               //overlay_action_image(icon, item->data->action);
-               return icon;
-       }
-
-       return NULL;
-}
-
-static void _reports_del_gl_del_cb(void *data, Evas_Object *obj)
-{
-       g_slice_free(dlp_item_log_s, data);
-}
-
-static void _reports_del_item_selected_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       /* Get selected item */
-       Elm_Object_Item *ei = event_info;
-       dlp_item_log_s *item = elm_object_item_data_get(ei);
-
-       /* Unhighlight selected item */
-       elm_genlist_item_selected_set(ei, EINA_FALSE);
-
-       item->is_checked = !item->is_checked;
-
-       /* Set check box state, in case user tapped outside it */
-       elm_check_state_set(item->check, item->is_checked ? EINA_TRUE : EINA_FALSE);
-
-       if (!item->is_checked) {
-               // deselect "Select all" check
-               Elm_Object_Item *item = elm_genlist_nth_item_get(((reports_del_data_s *)data)->genlist, 0);
-               if (NULL != item) {
-                       dlp_item_log_s *item_log = elm_object_item_data_get(item);
-                       item_log->is_checked = false;
-                       elm_check_state_set(item_log->check, EINA_FALSE);
-               }
-       }
-
-       reports_del_data_s *rdd = data;
-       set_view_title_bar(rdd);
-}
-
-static void set_view_title_bar(reports_del_data_s *data)
-{
-       const size_t number_of_selected_logs = get_number_of_selected_logs(data->genlist);
-       if (number_of_selected_logs > 0) {
-               elm_object_disabled_set(data->delete_button, EINA_FALSE);
-
-               GString *string_buffer = g_string_new(NULL);
-               const char *format = dgettext("privacy-setting", PRIVACY_MENU_DLP_LOG_DELETE_LOGS_TITLE_SELECTED);
-               g_string_printf(string_buffer, format, number_of_selected_logs);
-
-               elm_object_item_part_text_set(data->naviframe_title, "default", string_buffer->str);
-
-               g_string_free(string_buffer, TRUE);
-       } else {
-               elm_object_disabled_set(data->delete_button, EINA_TRUE);
-               elm_object_item_part_text_set(data->naviframe_title, "default", dgettext("privacy-setting", PRIVACY_MENU_DLP_LOG_DELETE_LOGS_TITLE));
-       }
-}
-
-static size_t get_number_of_selected_logs(Evas_Object *genlist)
-{
-       const size_t total_logs = elm_genlist_items_count(genlist);
-       size_t log_count = 0;
-       size_t i = 0;
-       // Count checked log ids
-       for (i = 1; i <= total_logs; ++i) { // note that 0th item is "Select all", so we skip it
-               Elm_Object_Item *item = elm_genlist_nth_item_get(genlist, i);
-               if (NULL != item) {
-                       dlp_item_log_s *leak_log_item = elm_object_item_data_get(item);
-                       if (NULL != leak_log_item && leak_log_item->is_checked)
-                               ++log_count;
-               }
-       }
-       return log_count;
-}
-
-static Evas_Object *create_check(Evas_Object *parent)
-{
-       Evas_Object *check;
-       check = elm_check_add(parent);
-       elm_check_state_set(check, EINA_FALSE);
-       return check;
-}
-
-static Evas_Object *add_title_button_to_naviframe(Evas_Object *nf, Elm_Object_Item *nf_it, const bool left_side, const char* text,
-               Evas_Smart_Cb btn_clicked_cb, void* data)
-{
-       Evas_Object *btn = elm_button_add(nf);
-       elm_object_style_set(btn, left_side ? "naviframe/title_left" : "naviframe/title_right");
-       elm_object_item_part_content_set(nf_it, left_side ? "title_left_btn" : "title_right_btn", btn);
-       elm_object_text_set(btn, text);
-       evas_object_smart_callback_add(btn, "clicked", btn_clicked_cb, data);
-       return btn;
-}
-
-static void create_select_all_item(reports_del_data_s *data)
-{
-       Elm_Genlist_Item_Class *itc = elm_genlist_item_class_new();
-       itc->item_style = "singleline";
-       itc->func.text_get = _reports_del_select_all_text_get_cb;
-       itc->func.content_get = _reports_del_select_all_content_get_cb;
-       itc->func.del = _reports_del_gl_del_cb;
-
-       dlp_item_log_s *item = g_slice_new0(dlp_item_log_s);
-
-       item->data = NULL; // Select all check has no leak log associated to it
-       item->check = NULL;
-       item->is_checked = false;
-
-       elm_genlist_item_append(data->genlist, itc, item, NULL, ELM_GENLIST_ITEM_NONE, _reports_del_select_all_selected_cb, data);
-       elm_genlist_item_class_free(itc);
-}
-
-static void populate_reports_del_genlist(reports_del_data_s *data)
-{
-       if (NULL == data->log_list)
-               return;
-
-       create_select_all_item(data);
-
-       Elm_Genlist_Item_Class *itc = elm_genlist_item_class_new();
-
-       itc->item_style = "multiline";
-       itc->func.text_get = _reports_del_gl_text_get_cb;
-       itc->func.content_get = _reports_del_gl_content_get_cb;
-       itc->func.del = _reports_del_gl_del_cb;
-
-       Elm_Object_Item *it = NULL;
-       GList* l;
-
-       /* Append privacy related package as genlist item */
-       for (l = data->log_list; l != NULL; l = l->next) {
-               dlp_item_log_s *item = g_slice_new0(dlp_item_log_s);
-
-               // item data
-               item->data = (dlp_log_s*)l->data;
-               item->check = NULL;
-               item->is_checked = false;
-
-               // append to the genlist
-               if (filter_rule_by_action(item->data->action, data->action)) {
-                       it = elm_genlist_item_append(data->genlist, itc, item, NULL, ELM_GENLIST_ITEM_NONE, _reports_del_item_selected_cb, data);
-                       log_if(it == NULL, 1, "Error in elm_genlist_item_append");
-               }
-       }
-
-       elm_genlist_item_class_free(itc);
-}
-
-static void create_reports_del_genlist(reports_del_data_s *data)
-{
-       data->genlist = common_genlist_add(data->ad->nf);
-       evas_object_size_hint_weight_set(data->genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
-       evas_object_size_hint_align_set(data->genlist, EVAS_HINT_FILL, EVAS_HINT_FILL);
-       populate_reports_del_genlist(data);
-       evas_object_show(data->genlist);
-}
-
-void create_privacy_dlp_reports_del_view(GList* log_list, int action, struct app_data_s *ad)
-{
-       if (NULL == log_list || action > 2 || NULL == ad) {
-               LOGE("Invalid parameter");
-               return;
-       }
-
-       reports_del_data.ad = ad;
-       if (NULL == reports_del_data.confirm_delete_popup) {
-               destroy_popup(reports_del_data.confirm_delete_popup);
-               reports_del_data.confirm_delete_popup = NULL;
-       }
-       reports_del_data.log_list = log_list;
-       reports_del_data.action = action;
-       reports_del_data.logs_deleted = false;
-
-       create_reports_del_genlist(&reports_del_data);
-
-       Elm_Object_Item *nf_it = elm_naviframe_item_push(ad->nf, dgettext("privacy-setting", PRIVACY_MENU_DLP_LOG_DELETE_LOGS_TITLE), NULL, NULL, reports_del_data.genlist, NULL);
-
-       reports_del_data.naviframe_title = nf_it;
-
-       /* add cancel and delete buttons to title bar */
-       add_title_button_to_naviframe(ad->nf, nf_it, true, dgettext("privacy-setting", PRIVACY_MENU_DLP_LOG_CANCEL_BTN), _reports_del_cancel_btn_cb, &reports_del_data);
-       reports_del_data.delete_button = add_title_button_to_naviframe(ad->nf, nf_it, false, dgettext("privacy-setting", PRIVACY_MENU_DLP_LOG_DELETE_BTN), _reports_del_delete_btn_cb, &reports_del_data);
-       elm_object_disabled_set(reports_del_data.delete_button, EINA_TRUE);
-
-       /* Register the Back key event callback */
-       eext_object_event_callback_add(ad->nf, EEXT_CALLBACK_BACK, _reports_del_cancel_btn_cb, &reports_del_data);
-
-       elm_object_item_domain_text_translatable_set(nf_it, PACKAGE, EINA_TRUE);
-}
diff --git a/ui/src/privacy_dlp_reports_full_view.c b/ui/src/privacy_dlp_reports_full_view.c
deleted file mode 100644 (file)
index c04e212..0000000
+++ /dev/null
@@ -1,368 +0,0 @@
-/*
- * Copyright (c) 2017 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.
- */
-/*
- * @file       privacy_dlp_reports_full_view.c
- * @version    1.0
- * @brief
- */
-
-#include <math.h>
-#include <efl_extension.h>
-#include <glib.h>
-#include <time.h>
-#include <tzplatform_config.h>
-#include <privacy_guard_client.h>
-#include "common_utils.h"
-#include "common_ctxpopup.h"
-#include "privacy_setting.h"
-#include "privacy_view.h"
-#include "privilege_info.h"
-
-#define ACTION_TEXT_LEN 128
-
-// Rule action filter labels
-static const char *ACTION_TEXT[ACTION_TOTAL];
-static dlp_statistics_cb_s *stats_cb = NULL;
-
-typedef struct {
-       struct app_data_s *ad;
-       GList* dlp_leak_log_list;  // List with each leak in privacy-guard
-       rule_action_filter current_action; // Stores current action filter
-       int leaks_count;   // Number of leaks currently displayed
-       Evas_Object *box;  // Box to hold UI components
-       Evas_Object *genlist;      // Genlist to display each leak
-       Evas_Object *ctxpopup;     // Popup menu
-} reports_full_view_data_s;
-
-static reports_full_view_data_s reports_full_view_data = {
-       .dlp_leak_log_list = NULL,
-       .current_action = ACTION_ALL,
-       .box = NULL,
-       .genlist = NULL,
-       .ctxpopup = NULL
-};
-
-// forward declarations
-static void set_action_filter_text(Evas_Object *action_hoversel, int action);
-static void create_reports_genlist(reports_full_view_data_s *data);
-static void _reports_full_menu_dismissed_cb(void *data, Evas_Object *obj, void *event_info);
-static void _reports_full_dismiss_menu_cb(void *data, Evas_Object *obj, void *event_info);
-
-static bool _pg_dlp_leak_logs_cb(int id, time_t time_stamp, PgDlpAction action, const char *app_name, const char *app_icon, const char *destination, void *user_data)
-{
-       dlp_log_s *data = g_slice_new(dlp_log_s);
-
-       data->log_id = id;
-       data->time_stamp = time_stamp;
-       data->action = action;
-       data->app_name = strdup(app_name);
-       data->app_icon = strdup(app_icon);
-       data->destination = strdup(destination);
-
-       reports_full_view_data.dlp_leak_log_list = g_list_prepend(reports_full_view_data.dlp_leak_log_list, data);
-
-       return true;
-}
-
-static void free_dlp_log_s(void *leak_log)
-{
-       if (NULL != leak_log) {
-               dlp_log_s *dlp_leak_log = leak_log;
-               free(dlp_leak_log->app_name);
-               free(dlp_leak_log->app_icon);
-               free(dlp_leak_log->destination);
-               g_slice_free(dlp_log_s, leak_log);
-       }
-}
-
-static void free_dlp_leak_log_list(reports_full_view_data_s* data)
-{
-       if (data->dlp_leak_log_list != NULL) {
-               g_list_free(data->dlp_leak_log_list);
-               data->dlp_leak_log_list = NULL;
-       }
-}
-
-static char* _gl_text_get_cb(void *data, Evas_Object *obj, const char *part)
-{
-       dlp_item_log_s *item = (dlp_item_log_s *)data;
-
-       if (strcmp(part, "elm.text") == 0)
-               return strdup(item->data->app_name);
-
-       if (strcmp(part, "elm.text.multiline") == 0) {
-               if (item->data == NULL)
-                       return "";
-
-               char time_str[64] = {0,};
-               struct tm timeinfo;
-               localtime_r(&item->data->time_stamp, &timeinfo);
-               strftime(time_str, sizeof(time_str), "%a, %x %X", &timeinfo);
-
-               GString *string_buf = g_string_new(NULL);
-               g_string_printf(string_buf, "%s<br>%s", item->data->destination, time_str);
-               char *multiline = strdup(string_buf->str);
-               g_string_free(string_buf, TRUE);
-
-               return multiline;
-       }
-
-       return NULL;
-}
-
-/**
- * @brief Internal callback function invoked when genlist item displayed.
- * @param[in] data The user data passed to the elm_genlist_item_append() function
- * @param[in] obj The object invoking this callback function
- * @param[in] part The name of the item's part being rendered
- */
-static Evas_Object *_gl_content_get_cb(void *data, Evas_Object *obj, const char *part)
-{
-       dlp_item_log_s *item = (dlp_item_log_s *)data;
-
-       if (strcmp(part, "elm.swallow.icon") == 0) {
-               if (item->data == NULL)
-                       return NULL;
-
-               Evas_Object *icon = elm_icon_add(obj);
-               elm_image_file_set(icon, item->data->app_icon, NULL);
-               evas_object_size_hint_min_set(icon, ELM_SCALE_SIZE(50), ELM_SCALE_SIZE(50));
-               // NOTE: code below is commented out because only allow actions will be
-               //       released to Tizen 4.0, so action icons become meaningless.
-               //overlay_action_image(icon, item->data->action);
-               return icon;
-       }
-
-       return NULL;
-}
-
-static void _menu_item_selected_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       /* Get selected item */
-       Elm_Object_Item *ei = event_info;
-       dlp_item_log_s *item = elm_object_item_data_get(ei);
-
-       /* Unhighlight selected item */
-       elm_genlist_item_selected_set(ei, EINA_FALSE);
-
-       struct app_data_s *ad = (struct app_data_s *)data;
-
-       create_privacy_dlp_log_detailed_view(item, ad);
-
-}
-
-/*
- * @brief Function will be operated when genlist is deleted.
- * @param[in] data The data to be passed to the callback function
- * @param[in] obj The Evas object handle to be passed to the callback function
- */
-static void _gl_del_cb(void *data, Evas_Object *obj)
-{
-       dlp_item_log_s *item = data;
-       free_dlp_log_s(item->data);
-       g_slice_free(dlp_item_log_s, data);
-}
-
-static void _reports_full_delete_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       reports_full_view_data_s *rfvd = data;
-       elm_ctxpopup_dismiss(rfvd->ctxpopup);
-       create_privacy_dlp_reports_del_view(rfvd->dlp_leak_log_list, rfvd->current_action, rfvd->ad);
-}
-
-static void _reports_full_menu_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       reports_full_view_data_s *rfvd = data;
-       if (rfvd->leaks_count > 0) {
-               if (!rfvd->ctxpopup) {
-                       rfvd->ctxpopup = create_ctxpop(rfvd->ad);
-                       elm_ctxpopup_item_append(rfvd->ctxpopup, dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_DELETE),
-                               NULL, _reports_full_delete_cb, data);
-                       evas_object_smart_callback_add(rfvd->ctxpopup, "dismissed", _reports_full_menu_dismissed_cb, rfvd);
-               } else {
-                       evas_object_show(rfvd->ctxpopup);
-               }
-
-               eext_object_event_callback_del(rfvd->genlist, EEXT_CALLBACK_MORE, _reports_full_menu_cb);
-               eext_object_event_callback_add(rfvd->genlist, EEXT_CALLBACK_MORE, _reports_full_dismiss_menu_cb, rfvd);
-       }
-}
-
-static void _reports_full_menu_dismissed_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       reports_full_view_data_s *rfvd = data;
-
-       eext_object_event_callback_del(rfvd->genlist, EEXT_CALLBACK_MORE, _reports_full_dismiss_menu_cb);
-       eext_object_event_callback_add(rfvd->genlist, EEXT_CALLBACK_MORE, _reports_full_menu_cb, rfvd);
-}
-
-static void _reports_full_dismiss_menu_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       reports_full_view_data_s *rfvd = data;
-       elm_ctxpopup_dismiss(rfvd->ctxpopup);
-}
-
-static int populate_reports_genlist(reports_full_view_data_s *data)
-{
-       int leaks_count = 0;
-
-       if (NULL != data->dlp_leak_log_list) {
-               Elm_Genlist_Item_Class *itc = elm_genlist_item_class_new();
-
-               itc->item_style = "multiline";
-               itc->func.text_get = _gl_text_get_cb;
-               itc->func.content_get = _gl_content_get_cb;
-               itc->func.del = _gl_del_cb;
-
-               Elm_Object_Item *it = NULL;
-               GList* l;
-
-               /* Append privacy related package as genlist item */
-               for (l = data->dlp_leak_log_list; l != NULL; l = l->next) {
-                       dlp_item_log_s *item = g_slice_new0(dlp_item_log_s);
-
-                       // item data
-                       item->data = (dlp_log_s*)l->data;
-
-                       // append to the genlist
-                       if (filter_rule_by_action(item->data->action, data->current_action)) {
-                               it = elm_genlist_item_append(data->genlist, itc, item, NULL, ELM_GENLIST_ITEM_NONE, _menu_item_selected_cb, data->ad);
-                               log_if(it == NULL, 1, "Error in elm_genlist_item_append");
-                               if (NULL != it)
-                                       ++leaks_count;
-                       }
-               }
-
-               elm_genlist_item_class_free(itc);
-       }
-
-       return leaks_count;
-}
-
-static void create_reports_genlist(reports_full_view_data_s *data)
-{
-       data->genlist = common_genlist_add(data->box);
-       evas_object_size_hint_weight_set(data->genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
-       evas_object_size_hint_align_set(data->genlist, EVAS_HINT_FILL, EVAS_HINT_FILL);
-       data->leaks_count = populate_reports_genlist(data);
-       if (0 == data->leaks_count) {
-               /* leaks list is empty */
-               elm_layout_theme_set(data->genlist, "layout", "nocontents", "default");
-               elm_object_part_text_set(data->genlist, "elm.text", dgettext("privacy-setting", PRIVACY_MENU_DLP_REPORTS_EMPTY));
-               elm_layout_signal_emit(data->genlist, "align.center", "elm");
-       }
-       evas_object_show(data->genlist);
-       elm_box_pack_end(data->box, data->genlist);
-       /* Register the Menu event callback */
-       eext_object_event_callback_add(data->genlist, EEXT_CALLBACK_MORE, _reports_full_menu_cb, data);
-}
-
-static void full_view_back_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       struct app_data_s *ad = (struct app_data_s *)data;
-       return_if(!ad, , , "ad is null");
-       elm_naviframe_item_pop(ad->nf);
-       if (stats_cb)
-               stats_cb->update_stats(ad);
-}
-
-static Evas_Object *full_view_back_btn_add(struct app_data_s *ad)
-{
-       Evas_Object *btn = elm_button_add(ad->nf);
-       elm_object_style_set(btn, "naviframe/back_btn/default");
-       evas_object_smart_callback_add(btn, "clicked", full_view_back_btn_clicked_cb, ad);
-
-       return btn;
-}
-
-static Eina_Bool _reports_full_view_nf_pop_cb(void *data, Evas_Object* obj)
-{
-       free_dlp_leak_log_list(data);
-       return EINA_TRUE;
-}
-
-/**
- * @brief Creates essential objects for the screen.
- */
-void create_privacy_dlp_reports_full_view(dlp_statistics_cb_s *scb, struct app_data_s *ad)
-{
-       stats_cb = scb;
-
-       reports_full_view_data.dlp_leak_log_list = NULL;
-       reports_full_view_data.ad = ad;
-       reports_full_view_data.leaks_count = 0;
-
-       /* Initialize labels of action's dropdown */
-       ACTION_TEXT[ACTION_ALL] = "All actions";
-       ACTION_TEXT[ACTION_ALLOW] = "Allow";
-       ACTION_TEXT[ACTION_DENY] = "Deny";
-       ACTION_TEXT[ACTION_SANITIZE] = "Sanitize";
-       reports_full_view_data.current_action = ACTION_ALL;
-
-       /* Get privacy guard data (time_stamp, action, pkg, dest, descrip, category, log) list by a privacy */
-       uid_t user_id = getuid();
-
-       /* Get dlp leak logs from privacy guard */
-       if (stats_cb) {
-               int res = stats_cb->foreach_leak_logs(user_id, stats_cb->name, _pg_dlp_leak_logs_cb, NULL);
-               log_if(res != PRIV_GUARD_ERROR_SUCCESS, 1, "stats_cb->foreach_leak_logs() is failed. [%d]", res);
-       } else {
-               int res = privacy_guard_client_foreach_leak_logs(user_id, _pg_dlp_leak_logs_cb, NULL);
-               log_if(res != PRIV_GUARD_ERROR_SUCCESS, 1, "privacy_guard_client_foreach_leak_logs() is failed. [%d]", res);
-       }
-       reports_full_view_data.dlp_leak_log_list = g_list_reverse(reports_full_view_data.dlp_leak_log_list);
-
-       /* Create box container to hold view's components */
-       Evas_Object *box = elm_box_add(ad->nf);
-       evas_object_show(box);
-       reports_full_view_data.box = box;
-
-       create_reports_genlist(&reports_full_view_data);
-
-       /* Change "Privacy Setting" to proper DID : use dgettext() */
-       Elm_Object_Item *nf_it = elm_naviframe_item_push(ad->nf, dgettext("privacy-setting", PRIVACY_MENU_DLP_REPORTS_FULL), full_view_back_btn_add(ad), NULL, box, NULL);
-
-       /* set callback to genlist item pop event */
-       elm_naviframe_item_pop_cb_set(nf_it, _reports_full_view_nf_pop_cb, &reports_full_view_data);
-
-       elm_object_item_domain_text_translatable_set(nf_it, PACKAGE, EINA_TRUE);
-}
-
-void update_privacy_dlp_reports_full_view()
-{
-       if (NULL == reports_full_view_data.genlist) {
-               LOGE("genlist is null");
-               return;
-       }
-
-       free_dlp_leak_log_list(&reports_full_view_data);
-
-       uid_t user_id = getuid();
-
-       /* Get dlp leak logs from privacy guard */
-       if (stats_cb) {
-               int res = stats_cb->foreach_leak_logs(user_id, stats_cb->name, _pg_dlp_leak_logs_cb, NULL);
-               log_if(res != PRIV_GUARD_ERROR_SUCCESS, 1, "stats_cb->foreach_leak_logs() is failed. [%d]", res);
-       } else {
-               int res = privacy_guard_client_foreach_leak_logs(user_id, _pg_dlp_leak_logs_cb, NULL);
-               log_if(res != PRIV_GUARD_ERROR_SUCCESS, 1, "privacy_guard_client_foreach_leak_logs() is failed. [%d]", res);
-       }
-       reports_full_view_data.dlp_leak_log_list = g_list_reverse(reports_full_view_data.dlp_leak_log_list);
-
-       elm_box_unpack(reports_full_view_data.box, reports_full_view_data.genlist);
-       evas_object_del(reports_full_view_data.genlist);
-       create_reports_genlist(&reports_full_view_data);
-}
diff --git a/ui/src/privacy_dlp_reports_rules_and_patterns_view.c b/ui/src/privacy_dlp_reports_rules_and_patterns_view.c
deleted file mode 100644 (file)
index 779a85c..0000000
+++ /dev/null
@@ -1,107 +0,0 @@
-/**
- * Copyright (c) 2017 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.
- */
-/*
- * @file       privacy_dlp_reports_rules_and_patterns_view.c
- * @version    1.0
- * @brief
- */
-
-#include "common_utils.h"
-#include "privacy_setting.h"
-#include "privacy_view.h"
-#include <efl_extension.h>
-
-typedef struct {
-       struct app_data_s *ad;
-       const dlp_profile_s *config;
-       Elm_Object_Item *nf_it;
-       Evas_Object *content;
-} rules_patterns_view_data_s;
-
-static rules_patterns_view_data_s rules_patterns_view_data = {.ad = NULL, .content = NULL};
-
-void delete_category_list();
-void delete_pattern_list();
-void delete_rule_list();
-
-static Eina_Bool _rules_patterns_nf_pop_cb(void *data, Evas_Object* obj)
-{
-       delete_category_list();
-       delete_pattern_list();
-       delete_rule_list();
-       return EINA_TRUE;
-}
-
-static void _toolbar_rule_item_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       rules_patterns_view_data_s *rpvd = data;
-       create_privacy_dlp_rules_list_view(rpvd->ad, rpvd->content, rpvd->nf_it, rpvd->config);
-}
-
-static void _toolbar_pattern_item_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       rules_patterns_view_data_s *rpvd = data;
-       create_privacy_dlp_patterns_list_view(rpvd->ad, rpvd->content, rpvd->config);
-}
-
-static Evas_Object* create_rules_and_patterns_tabbar(rules_patterns_view_data_s *data)
-{
-       Evas_Object *toolbar = elm_toolbar_add(data->ad->nf);
-       elm_object_style_set(toolbar, "tabbar_with_title");
-       elm_toolbar_shrink_mode_set(toolbar, ELM_TOOLBAR_SHRINK_EXPAND);
-       elm_toolbar_transverse_expanded_set(toolbar, EINA_TRUE);
-       Elm_Object_Item *rule_item = elm_toolbar_item_append(
-               toolbar,
-               NULL,
-               dgettext("privacy-setting", PRIVACY_MENU_DLP_RULES_N_PATTERNS_TITLE_RULES),
-               _toolbar_rule_item_cb,
-               data);
-       elm_toolbar_item_append(
-               toolbar,
-               NULL,
-               dgettext("privacy-setting", PRIVACY_MENU_DLP_RULES_N_PATTERNS_TITLE_PATTERNS),
-               _toolbar_pattern_item_cb,
-               data);
-       elm_toolbar_select_mode_set(toolbar, ELM_OBJECT_SELECT_MODE_ALWAYS);
-       elm_toolbar_item_selected_set(rule_item, EINA_TRUE);
-       return toolbar;
-}
-
-void create_privacy_dlp_reports_rules_and_patterns_view(struct app_data_s *ad, const dlp_profile_s *config)
-{
-       if (NULL == ad || NULL == config) {
-               LOGD("Invalid parameter");
-               return;
-       }
-       rules_patterns_view_data.ad = ad;
-       rules_patterns_view_data.config = config;
-       rules_patterns_view_data.content = elm_layout_add(ad->nf);
-       elm_layout_theme_set(rules_patterns_view_data.content, "layout", "application", "default");
-
-       rules_patterns_view_data.nf_it = elm_naviframe_item_push(
-               ad->nf,
-               dgettext("privacy-setting", PRIVACY_MENU_DLP_RULES_N_PATTERNS_TITLE),
-               common_back_btn_add(ad),
-               NULL,
-               rules_patterns_view_data.content,
-               "tabbar");
-
-       elm_naviframe_item_pop_cb_set(rules_patterns_view_data.nf_it, _rules_patterns_nf_pop_cb, ad);
-
-       // Create and set a toolbar into the tabbar part
-       Evas_Object *rules_patterns_tabbar = create_rules_and_patterns_tabbar(&rules_patterns_view_data);
-       elm_object_item_part_content_set(rules_patterns_view_data.nf_it, "tabbar", rules_patterns_tabbar);
-}
diff --git a/ui/src/privacy_dlp_rule_create_view.c b/ui/src/privacy_dlp_rule_create_view.c
deleted file mode 100644 (file)
index faf2a55..0000000
+++ /dev/null
@@ -1,199 +0,0 @@
-/*
- * Copyright (c) 2017 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.
- */
-/*
- * @file       privacy_dlp_rule_create_view.c
- * @version    1.0
- * @brief
- */
-
-#include "common_utils.h"
-#include "privacy_view.h"
-#include <privacy_guard_client.h>
-#include <efl_extension.h>
-
-// Struct used to store create rule menu options
-typedef struct {
-       int item;
-       Evas_Object *radio;
-//     struct app_data_s *ad;
-} create_rule_radio_s;
-
-// Enumeration that defines the options of the create rule menu
-enum {
-       CREATE_RULE_ITEM_QUICK = 0,
-       CREATE_RULE_ITEM_CUSTOM,
-       CREATE_RULE_ITEM_END
-};
-
-typedef struct {
-       struct app_data_s *ad;
-       dlp_profile_s *config;
-       void *rule_list_data;
-       Elm_Object_Item *pop_to_nf_it;
-       Evas_Object *radio_group;
-} rule_create_view_data_s;
-
-static rule_create_view_data_s rule_create_view_data = { .ad = NULL, .config = NULL, .pop_to_nf_it = NULL, .radio_group = NULL};
-
-/**
- * @brief Internal callback function invoked when a Create Rule genlist item is displayed
- * @param[in] data The user data passed to the elm_genlist_item_append() function
- * @param[in] obj The object invoking this callback function
- * @param[in] part The name of the item's part being rendered
- */
-static char* _gl_rule_item_text_get_cb(void *data, Evas_Object *obj, const char *part)
-{
-       create_rule_radio_s* radio_item = data;
-       if (!strcmp(part, "elm.text"))
-               switch (radio_item->item) {
-               case CREATE_RULE_ITEM_QUICK:
-                       return strdup(dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULE_QUICK));
-               case CREATE_RULE_ITEM_CUSTOM:
-                       return strdup(dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULE_CUSTOM));
-               default:
-                       LOGE("Invalid create rule menu item");
-               }
-
-       else if (!strcmp(part, "elm.text.multiline")) {
-               switch (radio_item->item) {
-               case CREATE_RULE_ITEM_QUICK:
-                       return strdup(dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULE_QUICK_DESCRIPTION));
-               case CREATE_RULE_ITEM_CUSTOM:
-                       return strdup(dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULE_CUSTOM_DESCRIPTION));
-               default:
-                       LOGE("Invalid create rule menu item");
-               }
-       }
-
-       return NULL;
-}
-
-/**
- * @brief Internal callback function invoked when a Create Rule genlist item is displayed
- * @param[in] data The user data passed to the elm_genlist_item_append() function
- * @param[in] obj The object invoking this callback function
- * @param[in] part The name of the item's part being rendered
- */
-static Evas_Object* _gl_rule_item_content_get_cb(void *data, Evas_Object *obj, const char *part)
-{
-       if (strcmp(part, "elm.swallow.end") == 0) {
-               create_rule_radio_s *item = data;
-               item->radio = elm_radio_add(obj);
-               return item->radio;
-       }
-
-       return NULL;
-}
-
-static void _gl_create_rule_item_realized_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       create_rule_radio_s *rule_item = elm_object_item_data_get(event_info);
-       rule_create_view_data_s *rcvd = data;
-
-       elm_radio_state_value_set(rule_item->radio, rule_item->item);
-       if (CREATE_RULE_ITEM_QUICK == rule_item->item) {
-               // start of radio group
-               rcvd->radio_group = rule_item->radio;
-       } else {
-               elm_radio_group_add(rule_item->radio, rcvd->radio_group);
-               deselect_create_rule_radio_group();
-       }
-}
-
-/**
- * @brief Internal callback function when quick rule create is selected.
- * @param[in] data The user data passed to the evas_object_smart_callback_add() function
- * @param[in] obj The object invoking this callback function
- * @param[in] event_info The structure containing the information on this event
- */
-static void _create_rule_item_select_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       Elm_Object_Item *ei = event_info;
-
-       /* Unhighlight selected item */
-       elm_genlist_item_selected_set(ei, EINA_FALSE);
-
-       //const create_rule_radio_s *rule_item = data;
-       const create_rule_radio_s *rule_item = elm_object_item_data_get(ei);
-       rule_create_view_data_s *rcvd = data;
-
-       elm_radio_value_set(rcvd->radio_group, rule_item->item);
-
-       switch (rule_item->item) {
-       case CREATE_RULE_ITEM_QUICK:
-               create_privacy_dlp_choose_rule_template_view(rcvd->ad, rcvd->pop_to_nf_it, rcvd->config, rcvd->rule_list_data);
-               break;
-       case CREATE_RULE_ITEM_CUSTOM:
-               create_privacy_dlp_choose_apps_view(rcvd->ad, rcvd->pop_to_nf_it, rcvd->config, NULL, rcvd->rule_list_data, NULL, NULL);
-               break;
-       default:
-               LOGE("Invalid create rule item");
-       }
-}
-
-/**
- * @brief Deselects create rule menu radio group
- */
-void deselect_create_rule_radio_group()
-{
-       elm_radio_value_set(rule_create_view_data.radio_group, CREATE_RULE_ITEM_END);
-}
-
-void create_privacy_dlp_rule_create_view(struct app_data_s *ad, Elm_Object_Item *pop_to_nf_it, dlp_profile_s *config, void *rule_list_data)
-{
-       if (NULL == ad) {
-               LOGE("Invalid parameter");
-               return;
-       }
-
-       rule_create_view_data.ad = ad;
-       rule_create_view_data.config = config;
-       rule_create_view_data.rule_list_data = rule_list_data;
-       rule_create_view_data.pop_to_nf_it = pop_to_nf_it;
-       rule_create_view_data.radio_group = NULL;
-
-       Evas_Object *genlist = NULL;
-       genlist = common_genlist_add(ad->nf);
-       evas_object_size_hint_weight_set(genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
-       evas_object_size_hint_align_set(genlist, EVAS_HINT_FILL, EVAS_HINT_FILL);
-       elm_genlist_mode_set(genlist, ELM_LIST_COMPRESS);
-
-       elm_object_style_set(genlist, "effect");
-
-       Elm_Genlist_Item_Class *itc = elm_genlist_item_class_new();
-
-       itc->item_style = "multiline";
-       itc->func.text_get = _gl_rule_item_text_get_cb;
-       itc->func.content_get = _gl_rule_item_content_get_cb;
-       itc->func.del = NULL;
-
-       static create_rule_radio_s create_rule_item_quick = { .item = CREATE_RULE_ITEM_QUICK, .radio = NULL };
-       //create_rule_item_quick.ad = ad;
-       elm_genlist_item_append(genlist, itc, &create_rule_item_quick, NULL, ELM_GENLIST_ITEM_NONE, _create_rule_item_select_cb, &rule_create_view_data);
-
-       static create_rule_radio_s create_rule_item_custom = { .item = CREATE_RULE_ITEM_CUSTOM, .radio = NULL };
-       //create_rule_item_custom.ad = ad;
-       elm_genlist_item_append(genlist, itc, &create_rule_item_custom, NULL, ELM_GENLIST_ITEM_NONE, _create_rule_item_select_cb, &rule_create_view_data);
-
-       evas_object_smart_callback_add(genlist, "realized", _gl_create_rule_item_realized_cb, &rule_create_view_data);
-       elm_genlist_item_class_free(itc);
-       evas_object_show(genlist);
-
-       /* Change "Privacy Setting" to proper DID : use dgettext() */
-       Elm_Object_Item *nf_it = elm_naviframe_item_push(ad->nf, dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_CREATE), common_back_btn_add(ad), NULL, genlist, NULL);
-
-       elm_object_item_domain_text_translatable_set(nf_it, PACKAGE, EINA_TRUE);
-}
diff --git a/ui/src/privacy_dlp_rule_delete_view.c b/ui/src/privacy_dlp_rule_delete_view.c
deleted file mode 100644 (file)
index 5a0e86e..0000000
+++ /dev/null
@@ -1,343 +0,0 @@
-/*
- * Copyright (c) 2017 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.
- */
-/*
- * @file               privacy_dlp_rule_delete_view.c
- * @version     1.0
- * @brief
- */
-
-#include "common_popup.h"
-#include "common_utils.h"
-#include "privacy_view.h"
-#include <privacy_guard_client.h>
-#include <app_manager.h>
-
-typedef struct {
-       const get_custom_rule_s *rule;
-       bool is_checked;
-       Evas_Object *check;
-} rule_delete_item_s;
-
-typedef struct {
-       struct app_data_s *ad;
-       GList *rule_item_list;
-       void *rule_list_data;
-       Evas_Object *genlist;
-       Evas_Object *delete_button;
-       Evas_Object *confirm_popup;
-} rule_delete_view_data_s;
-
-#define SELECT_ALL_RULES_ITEM -1
-
-static get_custom_rule_s rule_delete_select_all_rule = { .id = SELECT_ALL_RULES_ITEM };
-
-static size_t get_number_of_selected_rules(Evas_Object *genlist);
-static void set_rules_by_pattern_and_action(GList *rule_item_list, const rule_delete_item_s *current_rule_item);
-
-static char *_gl_rule_delete_text_get_cb(void *data, Evas_Object *obj, const char *part)
-{
-       rule_delete_item_s *rule_item = (rule_delete_item_s *)data;
-       if (strcmp(part, "elm.text") == 0)
-               return strdup(rule_item->rule->name);
-
-       if (strcmp(part, "elm.text.multiline") == 0) {
-               // Note that the string allocated by stdup below is freed internally
-               // by Enlightment, when the genlist item is undisplayed
-               if (rule_item != NULL)
-                       return (SELECT_ALL_RULES_ITEM != rule_item->rule->id) ? strdup(rule_item->rule->description) : strdup("");
-       }
-
-       return NULL;
-}
-
-static Evas_Object *_gl_rule_delete_content_get_cb(void *data, Evas_Object *obj, const char *part)
-{
-       rule_delete_item_s *rule_item = data;
-
-       if (strcmp(part, "elm.swallow.end") == 0) {
-               Evas_Object *check = common_create_check(obj);
-               elm_check_state_set(check, rule_item->is_checked ? EINA_TRUE : EINA_FALSE);
-               rule_item->check = check;
-               return check;
-       }
-
-       return NULL;
-}
-
-static void _rule_delete_menu_item_selected_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       /* Get selected item */
-       Elm_Object_Item *ei = event_info;
-       rule_delete_item_s *rule_item = elm_object_item_data_get(ei);
-
-       /* Unhighlight selected item */
-       elm_genlist_item_selected_set(ei, EINA_FALSE);
-
-       rule_item->is_checked = !rule_item->is_checked;
-
-       rule_delete_view_data_s *rdvd = data;
-       if (SELECT_ALL_RULES_ITEM != rule_item->rule->id) {
-               /* check rules with the same pattern and action of the current rule */
-               set_rules_by_pattern_and_action(rdvd->rule_item_list, rule_item);
-
-               rule_delete_item_s *select_all_item = rdvd->rule_item_list->data;
-               if (!rule_item->is_checked) {
-                       /* set "Select all" check off */
-                       select_all_item->is_checked = false;
-               } else {
-                       bool all_selected = true;
-                       GList *l;
-                       // check if all items are selected. Note that the 1st element of app_list
-                       // is the select button, so we start looping from the 2nd element
-                       for (l = g_list_nth(rdvd->rule_item_list, 1); l != NULL; l = l->next)
-                               if (!((rule_delete_item_s *)l->data)->is_checked) {
-                                       all_selected = false;
-                                       break;
-                               }
-
-                       /* if all items are selected, set select all check on */
-                       if (all_selected)
-                               select_all_item->is_checked = true;
-               }
-       } else {
-               /* Select or deselect items */
-               GList *l;
-               for (l = g_list_nth(rdvd->rule_item_list, 1); l != NULL; l = l->next)
-                       ((rule_delete_item_s *)l->data)->is_checked = rule_item->is_checked;
-       }
-
-       elm_object_disabled_set(rdvd->delete_button, get_number_of_selected_rules(rdvd->genlist) == 0 ? EINA_TRUE : EINA_FALSE);
-       elm_genlist_realized_items_update(rdvd->genlist);
-}
-
-static void _rule_delete_popup_ok_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       const rule_delete_view_data_s *rdvd = data;
-       destroy_popup(rdvd->confirm_popup);
-
-       bool rule_deleted = false;
-       GList *l; // note that the 0th element is "select all"
-       for (l = g_list_nth(rdvd->rule_item_list, 1); l != NULL; l = l->next) {
-               const rule_delete_item_s *rule_item = l->data;
-               if (!rule_item->is_checked)
-                       continue;
-
-               const int res = privacy_guard_client_delete_dlp_custom_rule(rule_item->rule->id);
-
-               if (PRIV_GUARD_ERROR_SUCCESS == res) {
-                       LOGD("Rule %d deleted", rule_item->rule->id);
-                       rule_deleted = true;
-               } else
-                       LOGE("Failed to delete rule (id=%d). Error=%d", rule_item->rule->id, res);
-       }
-
-       if (NULL != rdvd->rule_list_data)
-               update_privacy_dlp_rules_list_view(rdvd->rule_list_data);
-
-       elm_naviframe_item_pop(rdvd->ad->nf);
-
-       if (rule_deleted)
-               show_toast_notification(dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_DELETE_RULE_MESSAGE), rdvd->ad->win);
-}
-
-static void _free_rule_delete_item_cb(void *rule_delete_item)
-{
-       g_slice_free(rule_delete_item_s, rule_delete_item);
-}
-
-static Eina_Bool _rule_delete_nf_pop_cb(void *data, Evas_Object* obj)
-{
-       rule_delete_view_data_s *rdvd = data;
-       g_list_free_full(rdvd->rule_item_list, _free_rule_delete_item_cb);
-       rdvd->rule_item_list = NULL;
-       return EINA_TRUE;
-}
-
-static void _rule_delete_popup_cancel_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       rule_delete_view_data_s *rdvd = data;
-       destroy_popup(rdvd->confirm_popup);
-}
-
-static void _rule_delete_cancel_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       rule_delete_view_data_s *rdvd = data;
-       elm_naviframe_item_pop(rdvd->ad->nf);
-}
-
-static void _rule_delete_done_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       rule_delete_view_data_s *rdvd = data;
-       rdvd->confirm_popup = create_two_buttons_popup(
-               rdvd->genlist,
-               dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_DELETE_RULE_POPUP_TITLE),
-               dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_DELETE_RULE_MESSAGE_MESSAGE),
-               dgettext("privacy-setting", PRIVACY_MENU_DLP_LOG_DELETE_BTN),
-               _rule_delete_popup_ok_cb,
-               dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_CANCEL),
-               _rule_delete_popup_cancel_cb,
-               _rule_delete_popup_cancel_cb,
-               rdvd);
-}
-
-static void set_rules_by_pattern_and_action(GList *rule_item_list, const rule_delete_item_s *current_rule_item)
-{
-       const GList *l = g_list_find(rule_item_list, current_rule_item);
-       if (NULL == l || NULL == l->next)
-               return;
-
-       const int pattern_id = current_rule_item->rule->pattern_id;
-       const PgDlpAction action = current_rule_item->rule->action;
-       l = l->next;
-       const get_custom_rule_s *rule = ((rule_delete_item_s *)(l->data))->rule;
-
-       while (NULL != l && pattern_id == rule->pattern_id && action == rule->action) {
-               ((rule_delete_item_s *)(l->data))->is_checked = current_rule_item->is_checked;
-               l = l->next;
-               if (NULL != l)
-                       rule = ((const rule_delete_item_s *)(l->data))->rule;
-       }
-}
-
-static size_t get_number_of_selected_rules(Evas_Object *genlist)
-{
-       const size_t total_rules = elm_genlist_items_count(genlist);
-       size_t rule_count = 0;
-       size_t i;
-       // Count checked log ids
-       for (i = 1; i <= total_rules; ++i) { // note that 0th item is "Select all", so we skip it
-               Elm_Object_Item *item = elm_genlist_nth_item_get(genlist, i);
-               if (NULL != item) {
-                       rule_delete_item_s *rule_item = elm_object_item_data_get(item);
-                       if (NULL != rule_item && rule_item->is_checked)
-                               ++rule_count;
-               }
-       }
-
-       return rule_count;
-}
-
-static void populate_rule_item_list(rule_delete_view_data_s *data, const GList *rule_list)
-{
-       const GList* l;
-       for (l = rule_list; l != NULL; l = l->next) {
-               rule_delete_item_s *item = g_slice_new(rule_delete_item_s);
-
-               item->rule = l->data;
-               item->is_checked = false;
-               item->check = NULL;
-
-               data->rule_item_list = g_list_prepend(data->rule_item_list, item);
-       }
-       data->rule_item_list = g_list_reverse(data->rule_item_list);
-}
-
-static void create_select_all_rules_item(rule_delete_view_data_s *data)
-{
-       strncpy(rule_delete_select_all_rule.name, dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_SELECT_ALL), LEN_NAME);
-       rule_delete_select_all_rule.name[LEN_NAME - 1] = '\0';
-
-       // Note that the variable item below is freed by _free_rule_delete_item_cb(),
-       // called in _rule_delete_nf_pop_cb()
-       rule_delete_item_s *item = g_slice_new(rule_delete_item_s);
-
-       item->rule = &rule_delete_select_all_rule;
-       item->is_checked = false;
-       item->check = NULL;
-
-       data->rule_item_list = g_list_prepend(data->rule_item_list, item);
-}
-
-static void add_select_all_item_to_genlist(rule_delete_view_data_s *data)
-{
-       Elm_Genlist_Item_Class *itc = elm_genlist_item_class_new();
-       itc->item_style = "singleline";
-       itc->func.text_get = _gl_rule_delete_text_get_cb;
-       itc->func.content_get = _gl_rule_delete_content_get_cb;
-       itc->func.del = NULL;
-
-       Elm_Object_Item *it = elm_genlist_item_append(data->genlist, itc, data->rule_item_list->data, NULL, ELM_GENLIST_ITEM_NONE, _rule_delete_menu_item_selected_cb, data);
-       log_if(it == NULL, 1, "Error in elm_genlist_item_append");
-
-       elm_genlist_item_class_free(itc);
-}
-
-void create_privacy_dlp_rule_delete_view(struct app_data_s *ad, const GList *rule_list, void *rule_list_data)
-{
-       if (NULL == ad || NULL == rule_list || NULL == rule_list_data) {
-               LOGE("Invalid parameter");
-               return;
-       }
-
-       static rule_delete_view_data_s data;
-       data.ad = ad;
-       populate_rule_item_list(&data, rule_list);
-       data.rule_list_data = rule_list_data;
-
-       create_select_all_rules_item(&data);
-
-       data.genlist = common_genlist_add(ad->nf);
-       evas_object_size_hint_weight_set(data.genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
-       evas_object_size_hint_align_set(data.genlist, EVAS_HINT_FILL, EVAS_HINT_FILL);
-
-       add_select_all_item_to_genlist(&data);
-       Elm_Genlist_Item_Class *itc = elm_genlist_item_class_new();
-       itc->item_style = "multiline";
-       itc->func.text_get = _gl_rule_delete_text_get_cb;
-       itc->func.content_get = _gl_rule_delete_content_get_cb;
-       itc->func.del = NULL;
-       GList* l = g_list_nth(data.rule_item_list, 1);
-
-       while (l != NULL) {
-               // append item to the genlist
-               Elm_Object_Item *it = NULL;
-               it = elm_genlist_item_append(data.genlist, itc, l->data, NULL, ELM_GENLIST_ITEM_NONE, _rule_delete_menu_item_selected_cb, &data);
-               log_if(it == NULL, 1, "Error in elm_genlist_item_append");
-
-               const get_custom_rule_s *rule = ((rule_delete_item_s *)(l->data))->rule;
-
-               // Skip rules that have the same pattern and action as the current rule
-               const int pattern_id = rule->pattern_id;
-               const PgDlpAction action = rule->action;
-               rule = ((rule_delete_item_s *)(l->data))->rule;
-               while (l != NULL && pattern_id == rule->pattern_id && action == rule->action) {
-                       l = l->next;
-                       if (l != NULL)
-                               rule = ((rule_delete_item_s *)(l->data))->rule;
-               }
-       }
-
-       elm_genlist_item_class_free(itc);
-       
-       evas_object_show(data.genlist);
-
-       /* Add genlist to naviframe */
-       Elm_Object_Item *nf_it = elm_naviframe_item_push(
-               ad->nf,
-               dgettext("privacy-setting", PRIVACY_MENU_DLP_LOG_DELETE_LOGS_TITLE),
-               NULL,
-               NULL,
-               data.genlist,
-               NULL);
-
-       /* set callback to genlist item pop event */
-       elm_naviframe_item_pop_cb_set(nf_it, _rule_delete_nf_pop_cb, &data);
-       /* add cancel button to naviframe title bar */
-       common_naviframe_btn_add(ad->nf, nf_it, true, dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_CANCEL), _rule_delete_cancel_cb, &data);
-       /* add delete button to naviframe title bar */
-       data.delete_button = common_naviframe_btn_add(ad->nf, nf_it, false, dgettext("privacy-setting", PRIVACY_MENU_DLP_LOG_DELETE_BTN), _rule_delete_done_cb, &data);
-       elm_object_disabled_set(data.delete_button, get_number_of_selected_rules(data.genlist) == 0 ? EINA_TRUE : EINA_FALSE);
-}
diff --git a/ui/src/privacy_dlp_rule_detailed_view.c b/ui/src/privacy_dlp_rule_detailed_view.c
deleted file mode 100644 (file)
index b4710e0..0000000
+++ /dev/null
@@ -1,345 +0,0 @@
-/**
- * Copyright (c) 2017 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.
- */
-/*
- * @file       privacy_dlp_rule_detailed_view.c
- * @version    1.0
- * @brief
- */
-
-#include "common_ctxpopup.h"
-#include "common_popup.h"
-#include "common_utils.h"
-#include "privacy_view.h"
-#include <app_manager.h>
-#include <efl_extension.h>
-
-typedef struct {
-       struct app_data_s *ad;
-       get_custom_rule_s current_rule;
-       void *rule_list_data;
-       Elm_Object_Item *pop_to_nf_it;
-       Evas_Object *rule_details_genlist;
-       Evas_Object *ctxpopup;
-       Evas_Object *delete_popup;
-       char pattern_name[LEN_PATTERN];
-} rule_detailed_view_data_s;
-
-typedef struct {
-       int pattern_id;
-       PgDlpAction action;
-       GList *rule_id_list;
-} patttern_action_rules_s;
-
-static rule_detailed_view_data_s rule_detailed_view_data = {
-       .ad = NULL,
-       .rule_details_genlist = NULL };
-
-static char* get_rule_action(int action);
-static bool delete_rules_by_pattern_and_action(const get_custom_rule_s *current_rule);
-static void _rule_detailed_view_dismiss_menu_cb(void *data, Evas_Object *obj, void *event_info);
-static void _rule_detailed_view_menu_button_cb(void *data, Evas_Object *obj, void *event_info);
-static void _rule_detailed_view_menu_dismissed_cb(void *data, Evas_Object *obj, void *event_info);
-
-static bool _pg_dlp_rule_pattern_name_cb(int id, const char *pattern, const char *name, const char *description, PgDlpPatternType type, const char *category, bool undeletable, int leaks_count, void *user_data)
-{
-       rule_detailed_view_data_s *rdvd = user_data;
-       if (id == rdvd->current_rule.pattern_id) {
-               strncpy(rdvd->pattern_name, name, LEN_PATTERN);
-               rdvd->pattern_name[LEN_PATTERN - 1] = 0;
-       }
-       return true;
-}
-
-static char* _gl_rule_header_text_get_cb(void *data, Evas_Object *obj, const char *part)
-{
-       get_custom_rule_s *rule = data;
-
-       if (strcmp(part, "elm.text") == 0)
-               return strdup(rule->name);
-
-       if (strcmp(part, "elm.text.multiline") == 0) {
-               if (rule == NULL)
-                       return strdup("");
-
-               return strdup(rule->description);
-       }
-
-       return NULL;
-}
-
-static char* _gl_group_rule_details_text_get_cb(void *data, Evas_Object *obj, const char *part)
-{
-       if (!strcmp(part, "elm.text"))
-               return strdup(dgettext("privacy-setting", PRIVACY_MENU_DLP_DETAILS));
-
-       return NULL;
-}
-
-static char* _gl_rule_pattern_text_get_cb(void *data, Evas_Object *obj, const char *part)
-{
-       if (strcmp(part, "elm.text") == 0)
-               return strdup(dgettext("privacy-setting", PRIVACY_MENU_DLP_RULES_N_PATTERNS_TITLE_PATTERNS));
-
-       if (strcmp(part, "elm.text.multiline") == 0) {
-               if (data == NULL)
-                       return strdup("");
-
-               return strdup(((rule_detailed_view_data_s *)data)->pattern_name);
-       }
-
-       return NULL;
-}
-
-static void _rule_detailed_view_edit_rule_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       rule_detailed_view_data_s *rdvd = data;
-       elm_ctxpopup_dismiss(rdvd->ctxpopup);
-       create_privacy_dlp_rule_edit_view(rdvd->ad, rdvd->pop_to_nf_it, NULL, &rdvd->current_rule, NULL, rdvd->rule_list_data, rdvd);
-}
-
-static void _rule_detailed_view_delete_ok_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       rule_detailed_view_data_s *rdvd = data;
-
-       if (delete_rules_by_pattern_and_action(&(rdvd->current_rule)))
-               show_toast_notification(dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_DELETE_RULE_MESSAGE), rdvd->ad->win);
-
-       elm_popup_dismiss(rdvd->delete_popup);
-
-       if (NULL != rdvd->rule_list_data)
-               update_privacy_dlp_rules_list_view(rdvd->rule_list_data);
-       elm_naviframe_item_pop(rdvd->ad->nf);
-}
-
-static void _rule_detailed_view_delete_cancel_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       rule_detailed_view_data_s *rdvd = data;
-       elm_popup_dismiss(rdvd->delete_popup);
-}
-
-static void _rule_detailed_view_popup_dismissed_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       rule_detailed_view_data_s *rdvd = data;
-       destroy_popup(rdvd->delete_popup);
-       rdvd->delete_popup = NULL;
-       eext_object_event_callback_add(rdvd->rule_details_genlist, EEXT_CALLBACK_MORE, _rule_detailed_view_menu_button_cb, rdvd);
-}
-
-static void _rule_detailed_view_delete_rule_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       rule_detailed_view_data_s *rdvd = data;
-
-       elm_ctxpopup_dismiss(rdvd->ctxpopup);
-
-       rdvd->delete_popup = create_two_buttons_popup(
-               rdvd->ad->nf,
-               dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_DELETE_RULE_POPUP_TITLE),
-               dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_DELETE_RULE_MESSAGE_MESSAGE),
-               dgettext("privacy-setting", PRIVACY_MENU_DLP_LOG_DELETE_BTN),
-               _rule_detailed_view_delete_ok_cb,
-               dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_CANCEL),
-               _rule_detailed_view_delete_cancel_cb,
-               _rule_detailed_view_delete_cancel_cb,
-               rdvd);
-
-       evas_object_smart_callback_add(rdvd->delete_popup, "dismissed", _rule_detailed_view_popup_dismissed_cb, rdvd);
-}
-
-static Eina_Bool _rule_detailed_view_nf_pop_cb(void *data, Evas_Object* obj)
-{
-       rule_detailed_view_data_s *rdvd = data;
-       if (NULL != rdvd->rule_list_data)
-               update_privacy_dlp_rules_list_view(rdvd->rule_list_data);
-       return TRUE;
-}
-
-static void _rule_detailed_view_menu_button_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       rule_detailed_view_data_s *rdvd = data;
-       eext_object_event_callback_del(rdvd->rule_details_genlist, EEXT_CALLBACK_MORE, _rule_detailed_view_menu_button_cb);
-       eext_object_event_callback_add(rdvd->rule_details_genlist, EEXT_CALLBACK_MORE, _rule_detailed_view_dismiss_menu_cb, rdvd);
-
-       if (!rdvd->ctxpopup) {
-               rdvd->ctxpopup = create_ctxpop(rdvd->ad);
-               elm_ctxpopup_item_append(rdvd->ctxpopup, dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_EDIT), NULL, _rule_detailed_view_edit_rule_cb, data);
-               elm_ctxpopup_item_append(rdvd->ctxpopup, dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_DELETE), NULL, _rule_detailed_view_delete_rule_cb, data);
-               evas_object_smart_callback_add(rdvd->ctxpopup, "dismissed", _rule_detailed_view_menu_dismissed_cb, rdvd);
-       } else {
-               evas_object_show(rdvd->ctxpopup);
-       }
-}
-
-static void _rule_detailed_view_menu_dismissed_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       rule_detailed_view_data_s *rdvd = data;
-
-       eext_object_event_callback_del(rdvd->rule_details_genlist, EEXT_CALLBACK_MORE, _rule_detailed_view_dismiss_menu_cb);
-       if (NULL == rdvd->delete_popup)
-               eext_object_event_callback_add(rdvd->rule_details_genlist, EEXT_CALLBACK_MORE, _rule_detailed_view_menu_button_cb, rdvd);
-}
-
-static void _rule_detailed_view_dismiss_menu_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       rule_detailed_view_data_s *rdvd = data;
-       elm_ctxpopup_dismiss(rdvd->ctxpopup);
-}
-
-static bool _get_rules_by_pattern_action_cb(int id, PgDlpAction action, int pattern_id, const char *name,
-       const char *description, const char *application_id, int leaks_count, void *user_data)
-{
-       patttern_action_rules_s *pattern_action_rules = user_data;
-       if (pattern_id == pattern_action_rules->pattern_id && action == pattern_action_rules->action) {
-               pattern_action_rules->rule_id_list = g_list_prepend(pattern_action_rules->rule_id_list, GINT_TO_POINTER(id));
-       }
-       return true;
-}
-
-static bool delete_rules_by_pattern_and_action(const get_custom_rule_s *current_rule)
-{
-       patttern_action_rules_s pattern_action_rules;
-       pattern_action_rules.pattern_id = current_rule->pattern_id;
-       pattern_action_rules.action = current_rule->action;
-       pattern_action_rules.rule_id_list = NULL;
-
-       const int res = privacy_guard_client_foreach_dlp_rules(getuid(), PRIV_GUARD_DLP_PROFILE_CUSTOM,
-               _get_rules_by_pattern_action_cb, &pattern_action_rules);
-       if (PRIV_GUARD_ERROR_SUCCESS != res) {
-               LOGE("privacy_guard_client_foreach_dlp_rules() failed. Error=%d", res);
-               return false;
-       }
-
-       bool deleted = false;
-       const GList *l;
-       for (l = pattern_action_rules.rule_id_list; l != NULL; l = l->next) {
-               const int rule_id = GPOINTER_TO_INT(l->data);
-               const int res = privacy_guard_client_delete_dlp_custom_rule(rule_id);
-               if (PRIV_GUARD_ERROR_SUCCESS == res) {
-                       LOGD("Rule %d deleted", rule_id);
-                       deleted = true;
-               } else
-                       LOGE("Failed to delete rule %d. Error=%d", rule_id, res);
-       }
-
-       return deleted;
-}
-
-static void set_current_pattern_name(rule_detailed_view_data_s *data)
-{
-       const int res = privacy_guard_client_foreach_dlp_patterns(_pg_dlp_rule_pattern_name_cb, data);
-       if (PRIV_GUARD_ERROR_SUCCESS != res) {
-               LOGE("privacy_guard_client_foreach_dlp_patterns() failed. Error=%d", res);
-               strncpy(data->pattern_name, "(error)", LEN_PATTERN);
-       } else if (is_empty(data->pattern_name)) {
-               LOGE("Pattern %d not found in database", data->current_rule.pattern_id);
-               strncpy(data->pattern_name, "(null)", LEN_PATTERN);
-       }
-}
-
-static void add_rule_item_to_genlist(Evas_Object *genlist, void* data, const char* item_style, void* func_text_get)
-{
-       Elm_Genlist_Item_Class *itc = elm_genlist_item_class_new();
-       itc->item_style = item_style;
-       itc->func.text_get = func_text_get;
-       Elm_Object_Item *it = elm_genlist_item_append(genlist, itc, data, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
-       log_if(it == NULL, 1, "Error in elm_genlist_item_append");
-       elm_genlist_item_class_free(itc);
-}
-
-static void set_current_rule(rule_detailed_view_data_s *data, const get_custom_rule_s *rule)
-{
-       data->current_rule.id = rule->id;
-       data->current_rule.action = rule->action;
-       data->current_rule.pattern_id = rule->pattern_id;
-       strncpy(data->current_rule.name, rule->name, LEN_NAME);
-       data->current_rule.name[LEN_NAME - 1] = '\0';
-       strncpy(data->current_rule.description, rule->description, LEN_DESCRIPTION);
-       data->current_rule.description[LEN_DESCRIPTION - 1] = '\0';
-       data->current_rule.leaks_count = rule->leaks_count;
-       strncpy(data->current_rule.application_id, rule->application_id, LEN_APPLICATION_ID);
-       data->current_rule.application_id[LEN_APPLICATION_ID - 1] = '\0';
-}
-
-static void create_rule_detailed_view_components(rule_detailed_view_data_s *data)
-{
-       Evas_Object *rule_details_genlist = common_genlist_add(data->ad->nf);
-       evas_object_size_hint_weight_set(rule_details_genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
-       evas_object_size_hint_align_set(rule_details_genlist, EVAS_HINT_FILL, EVAS_HINT_FILL);
-       elm_genlist_mode_set(rule_details_genlist, ELM_LIST_COMPRESS);
-       elm_genlist_select_mode_set(rule_details_genlist, ELM_OBJECT_SELECT_MODE_NONE);
-       elm_object_style_set(rule_details_genlist, "default");
-       rule_detailed_view_data.rule_details_genlist = rule_details_genlist;
-       /* add header (rule name and description) to genlist */
-       add_rule_item_to_genlist(rule_details_genlist, &(rule_detailed_view_data.current_rule), "multiline", _gl_rule_header_text_get_cb);
-       /* add details separator to genlist */
-       add_rule_item_to_genlist(rule_details_genlist, NULL, "group_index", _gl_group_rule_details_text_get_cb);
-       /* add rule pattern to genlist */
-       add_rule_item_to_genlist(rule_details_genlist, &rule_detailed_view_data, "multiline", _gl_rule_pattern_text_get_cb);
-
-       evas_object_show(rule_details_genlist);
-}
-
-void update_privacy_dlp_rule_detailed_view(void *rule_detailed_view_data, const int pattern_id, const char *rule_name, const char *rule_description)
-{
-       rule_detailed_view_data_s *data = rule_detailed_view_data;
-
-       // update current rule and pattern
-       data->current_rule.pattern_id = pattern_id;
-       strncpy(data->current_rule.name, rule_name, LEN_NAME);
-       data->current_rule.name[LEN_NAME - 1] = '\0';
-       strncpy(data->current_rule.description, rule_description, LEN_DESCRIPTION);
-       data->current_rule.description[LEN_DESCRIPTION - 1] = '\0';
-       set_current_pattern_name(data);
-
-       // update view components
-       elm_genlist_realized_items_update(data->rule_details_genlist);
-}
-
-void create_privacy_dlp_rule_detailed_view(struct app_data_s *ad, Elm_Object_Item *pop_to_nf_it, get_custom_rule_s *current_rule, const dlp_profile_s *config, void *rule_list_data)
-{
-       if (NULL == ad || NULL == current_rule || NULL == config) {
-               LOGE("Invalid parameter");
-               return;
-       }
-
-       rule_detailed_view_data.ad = ad;
-       rule_detailed_view_data.rule_list_data = rule_list_data;
-       rule_detailed_view_data.ctxpopup = NULL;
-       rule_detailed_view_data.delete_popup = NULL;
-       rule_detailed_view_data.pop_to_nf_it = pop_to_nf_it;
-
-       set_current_rule(&rule_detailed_view_data, current_rule);
-       set_current_pattern_name(&rule_detailed_view_data);
-
-       create_rule_detailed_view_components(&rule_detailed_view_data);
-
-       Elm_Object_Item *nf_it = elm_naviframe_item_push(
-               rule_detailed_view_data.ad->nf,
-               dgettext("privacy-setting", PRIVACY_MENU_DLP_RULE_DETAIL_TITLE),
-               common_back_btn_add(rule_detailed_view_data.ad),
-               NULL,
-               rule_detailed_view_data.rule_details_genlist,
-               NULL);
-
-       if (PRIV_GUARD_DLP_PROFILE_CUSTOM == config->profile)
-               /* Register the Menu key event callback */
-               eext_object_event_callback_add(rule_detailed_view_data.rule_details_genlist, EEXT_CALLBACK_MORE,
-                       _rule_detailed_view_menu_button_cb, &rule_detailed_view_data);
-
-       /* set callback to genlist item pop event */
-       elm_naviframe_item_pop_cb_set(nf_it, _rule_detailed_view_nf_pop_cb, &rule_detailed_view_data);
-
-       elm_object_item_domain_text_translatable_set(nf_it, PACKAGE, EINA_TRUE);
-}
diff --git a/ui/src/privacy_dlp_rule_edit_view.c b/ui/src/privacy_dlp_rule_edit_view.c
deleted file mode 100644 (file)
index 5944962..0000000
+++ /dev/null
@@ -1,461 +0,0 @@
-/*
- * Copyright (c) 2017 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.
- */
-/*
- * @file       privacy_dlp_rule_edit_view.c
- * @version    1.0
- * @brief
- */
-
-#include "common_edit_field.h"
-#include "common_utils.h"
-#include "privacy_view.h"
-#include <privacy_guard_client.h>
-
-typedef struct {
-       struct app_data_s *ad;
-       GList *pattern_list;
-       GList *pattern_ids_in_use_list;
-       dlp_profile_s *config;
-       const get_custom_rule_s *current_rule;
-       get_custom_rule_s edited_rule;
-       const GList *app_list;
-       void *rule_list_data;
-       void *rule_detailed_view_data;
-       Elm_Object_Item *pop_to_nf_it;
-       dlp_edit_field *name_edit_field;
-       dlp_edit_field *description_edit_field;
-       Evas_Object *pattern_hoversel;
-       Evas_Object *done_button;
-       Evas_Object *next_button;
-} rule_edit_data_s;
-
-static rule_edit_data_s rule_edit_data = {
-       .ad = NULL,
-       .pattern_list = NULL,
-       .pattern_ids_in_use_list = NULL,
-       .config = NULL,
-       .current_rule = NULL,
-       .app_list = NULL,
-       .rule_list_data = NULL,
-       .pop_to_nf_it = NULL,
-       .name_edit_field = NULL,
-       .description_edit_field = NULL,
-       .pattern_hoversel = NULL,
-       .done_button = NULL
-};
-static get_pattern_s *current_pattern = NULL;
-
-#define CUSTOM_PATTERN_ITEM_ID -1
-
-get_pattern_s *create_pattern(
-       int id,
-       const char *pattern,
-       const char *name,
-       const char *description,
-       PgDlpPatternType type,
-       const char *category,
-       bool undeletable,
-       int leaks_count);
-static void set_state_of_done_button(rule_edit_data_s *red);
-
-static bool _rule_edit_get_patterns_cb(
-       int id,
-       const char *pattern,
-       const char *name,
-       const char *description,
-       PgDlpPatternType type,
-       const char *category,
-       bool undeletable,
-       int leaks_count,
-       void *user_data)
-{
-       get_pattern_s *dlp_pattern = create_pattern(id, pattern, name, description, type, category, undeletable, leaks_count);
-       rule_edit_data_s *red = user_data;
-       red->pattern_list = g_list_prepend(red->pattern_list, dlp_pattern);
-
-       return true;
-}
-
-static void _rule_edit_pattern_item_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       get_pattern_s *dlp_pattern = data;
-       if (CUSTOM_PATTERN_ITEM_ID == dlp_pattern->id) {
-               create_privacy_dlp_pattern_create_view(rule_edit_data.ad, &rule_edit_data, NULL);
-       } else {
-               current_pattern = dlp_pattern;
-               elm_object_text_set(obj, current_pattern->name);
-       }
-}
-
-static void _rule_edit_cancel_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       rule_edit_data_s *red = data;
-       elm_naviframe_item_pop(red->ad->nf);
-}
-
-static Eina_Bool _rule_edit_nf_pop_cb(void *data, Evas_Object* obj)
-{
-       rule_edit_data_s *red = data;
-       g_list_free_full(red->pattern_list, free_dlp_pattern);
-       red->pattern_list = NULL;
-       free_edit_field(red->name_edit_field);
-       free_edit_field(red->description_edit_field);
-       return EINA_TRUE;
-}
-
-static void _rule_edit_done_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       rule_edit_data_s *red = data;
-
-       char name[LEN_NAME];
-       strncpy(name, get_text_from_edit_field(red->name_edit_field), LEN_NAME);
-       left_trim(name, LEN_NAME);
-       name[LEN_NAME - 1] = '\0';
-
-       char description[LEN_DESCRIPTION];
-       strncpy(description, get_text_from_edit_field(red->description_edit_field), LEN_DESCRIPTION);
-       left_trim(description, LEN_DESCRIPTION);
-       description[LEN_DESCRIPTION - 1] = '\0';
-
-       const int pattern_id = current_pattern->id;
-
-       if (NULL != red->app_list) {
-               bool rule_created = false;
-               const GList *l;
-
-               for (l = red->app_list; l != NULL; l = l->next) {
-                       const application_item_s *app_item = l->data;
-                       if (!app_item->is_checked)
-                               continue;
-
-                       const char *app_id = (SELECT_ALL_APPS_ITEM_ID == app_item->id) ? "" : app_item->id;
-
-                       const int res = privacy_guard_client_add_dlp_custom_rule(getuid(), PRIV_GUARD_DLP_ACTION_ALLOW, pattern_id, name, description, app_id);
-                       if (PRIV_GUARD_ERROR_SUCCESS == res) {
-                               LOGI("created new custom rule: name=%s, description=%s, pattern_id=%d, app_id=%s", name, description, pattern_id, app_id);
-                               rule_created = true;
-                       } else {
-                               LOGE("privacy_guard_client_add_dlp_custom_rule() failed. Error=%d", res);
-                       }
-
-                       if (SELECT_ALL_APPS_ITEM_ID == app_item->id)
-                               break;
-               }
-
-               if (rule_created) {
-                       if (NULL == red->config) {
-                               show_toast_notification(dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_CUSTOM_RULE_CREATED_MESSAGE), red->ad->win);
-                       } else {
-                               // Update profile
-                               red->config->profile = PRIV_GUARD_DLP_PROFILE_CUSTOM;
-                               const int set_prof_res = privacy_guard_client_set_dlp_profile(getuid(), red->config);
-                               if (PRIV_GUARD_ERROR_SUCCESS == set_prof_res) {
-                                       // Refresh main menu to update new profile value
-                                       elm_genlist_realized_items_update(elm_object_item_part_content_get(red->pop_to_nf_it, "default"));
-                                       show_toast_notification(dgettext("privacy-setting", PRIVACY_MENU_DLP_CUSTOM_PROTECTION_MODE_APPLIED), red->ad->win);
-                               } else {
-                                       LOGE("privacy_guard_client_set_dlp_profile() failed. Error=%d", set_prof_res);
-                               }
-                       }
-               }
-       } else if (NULL != red->current_rule) {
-               const int res = privacy_guard_client_update_dlp_custom_rule(
-                       red->current_rule->id,
-                       red->current_rule->action,
-                       pattern_id,
-                       name,
-                       description,
-                       red->current_rule->application_id);
-               if (PRIV_GUARD_ERROR_SUCCESS != res)
-                       LOGE("privacy_guard_client_update_dlp_custom_rule() failed. Error=%d", res);
-       }
-
-       if (NULL != red->pop_to_nf_it)
-               elm_naviframe_item_pop_to(red->pop_to_nf_it);
-       else
-               elm_naviframe_item_pop(red->ad->nf);
-
-       if (NULL != red->rule_list_data)
-               update_privacy_dlp_rules_list_view(red->rule_list_data);
-       else if (NULL != red->rule_detailed_view_data)
-               update_privacy_dlp_rule_detailed_view(red->rule_detailed_view_data, pattern_id, name, description);
-       else
-               create_privacy_dlp_reports_rules_and_patterns_view(red->ad, red->config);
-}
-
-static void _rule_edit_next_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       rule_edit_data_s *red = data;
-
-       red->edited_rule.id = red->current_rule->id;
-       red->edited_rule.pattern_id = current_pattern->id;
-
-       strncpy(red->edited_rule.pattern, elm_object_text_get(red->pattern_hoversel), LEN_PATTERN);
-       red->edited_rule.pattern[LEN_PATTERN - 1] = '\0';
-
-       strncpy(red->edited_rule.name, get_text_from_edit_field(red->name_edit_field), LEN_NAME);
-       left_trim(red->edited_rule.name, LEN_NAME);
-       red->edited_rule.name[LEN_NAME - 1] = '\0';
-
-       strncpy(red->edited_rule.description, get_text_from_edit_field(red->description_edit_field), LEN_DESCRIPTION);
-       left_trim(red->edited_rule.description, LEN_DESCRIPTION);
-       red->edited_rule.description[LEN_DESCRIPTION - 1] = '\0';
-
-       strncpy(red->edited_rule.application_id, red->current_rule->application_id, LEN_APPLICATION_ID);
-       red->edited_rule.application_id[LEN_APPLICATION_ID - 1] = '\0';
-
-       red->edited_rule.leaks_count = red->current_rule->leaks_count;
-
-       create_privacy_dlp_choose_apps_view(red->ad, red->pop_to_nf_it, NULL, NULL, red->rule_list_data, &red->edited_rule, red->current_rule);
-}
-
-static void _rule_edit_field_changed_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       rule_edit_data_s *red = data;
-       set_state_of_done_button(red);
-}
-
-get_pattern_s *create_pattern(
-       int id,
-       const char *pattern,
-       const char *name,
-       const char *description,
-       PgDlpPatternType type,
-       const char *category,
-       bool undeletable,
-       int leaks_count)
-{
-       get_pattern_s *dlp_pattern = g_slice_new(get_pattern_s);
-
-       dlp_pattern->id = id;
-
-       strncpy(dlp_pattern->pattern, pattern, LEN_PATTERN);
-       dlp_pattern->pattern[LEN_PATTERN - 1] = '\0';
-
-       strncpy(dlp_pattern->name, name, LEN_NAME);
-       dlp_pattern->name[LEN_NAME - 1] = '\0';
-
-       strncpy(dlp_pattern->description, description, LEN_DESCRIPTION);
-       dlp_pattern->description[LEN_DESCRIPTION - 1] = '\0';
-
-       dlp_pattern->type = type;
-
-       strncpy(dlp_pattern->category.text, category, LEN_CATEGORY);
-       dlp_pattern->category.text[LEN_CATEGORY - 1] = '\0';
-
-       dlp_pattern->undeletable = undeletable;
-
-       dlp_pattern->leaks_count = leaks_count;
-
-       return dlp_pattern;
-}
-
-static void set_state_of_done_button(rule_edit_data_s *red)
-{
-       const Eina_Bool disable = is_valid_rule(
-               get_text_from_edit_field(red->name_edit_field),
-               get_text_from_edit_field(red->description_edit_field),
-               current_pattern) ? EINA_FALSE : EINA_TRUE;
-       Evas_Object *button = (NULL != red->done_button) ? red->done_button : red->next_button;
-       elm_object_disabled_set(button, disable);
-}
-
-static Evas_Object *add_pattern_hoversel_to_grid(Evas_Object *rule_grid, rule_edit_data_s *data, int col, int row, int col_span, int row_span)
-{
-       Evas_Object *hoversel = elm_hoversel_add(rule_grid);
-       elm_hoversel_horizontal_set(hoversel, EINA_FALSE);
-       elm_hoversel_hover_parent_set(hoversel, rule_grid);
-
-       GList* l;
-       /* Append patterns to hoversel */
-       for (l = data->pattern_list; l != NULL; l = l->next) {
-               get_pattern_s *dlp_pattern = l->data;
-               Elm_Object_Item *item = elm_hoversel_item_add(hoversel, dlp_pattern->name, NULL, ELM_ICON_NONE, _rule_edit_pattern_item_cb, dlp_pattern);
-               if (NULL != data->current_rule && data->current_rule->pattern_id == dlp_pattern->id) {
-                       current_pattern = dlp_pattern;
-                       elm_object_text_set(hoversel, current_pattern->name);
-               } else {
-                       /* check if pattern is already in use */
-                       if (NULL == g_list_find(data->pattern_ids_in_use_list, GINT_TO_POINTER(dlp_pattern->id))) {
-                               /* if pattern is available, set the first available pattern to hoversel */
-                               const char *hoversel_text = elm_object_text_get(hoversel);
-                               if (CUSTOM_PATTERN_ITEM_ID != dlp_pattern->id && NULL == data->current_rule && is_empty(hoversel_text)) {
-                                       current_pattern = dlp_pattern;
-                                       elm_object_text_set(hoversel, current_pattern->name);
-                               }
-                       } else {
-                               /* if pattern is already in use, disable the item */
-                               elm_object_item_disabled_set(item, EINA_TRUE);
-                       }
-               }
-       }
-
-       elm_grid_pack(rule_grid, hoversel, col, row, col_span, row_span);
-       evas_object_show(hoversel);
-
-       return hoversel;
-}
-
-void update_privacy_dlp_rule_edit_view(void *rule_edit_data, const char *pattern, const PgDlpPatternType pattern_type, const bool undeletable)
-{
-       if (NULL == rule_edit_data || NULL == pattern) {
-               LOGD("Invalid parameter");
-               return;
-       }
-
-       rule_edit_data_s *data = rule_edit_data;
-
-       if (!elm_hoversel_expanded_get(data->pattern_hoversel))
-               elm_hoversel_hover_end(data->pattern_hoversel);
-
-       elm_hoversel_clear(data->pattern_hoversel);
-
-       g_list_free_full(data->pattern_list, free_dlp_pattern);
-       data->pattern_list = NULL;
-
-       /* Get dlp custom patterns from privacy guard */
-       const int res = privacy_guard_client_foreach_dlp_patterns(_rule_edit_get_patterns_cb, data);
-       log_if(res != PRIV_GUARD_ERROR_SUCCESS, 1, "privacy_guard_client_foreach_dlp_custom_patterns() failed. [%d]", res);
-
-       get_pattern_s *custom_pattern = create_pattern(CUSTOM_PATTERN_ITEM_ID, "", dgettext("privacy-setting", PRIVACY_MENU_DLP_PROFILE_CUSTOM), "", PRIV_GUARD_DLP_PATTERN_STRING, "", true, 0);
-       data->pattern_list = g_list_prepend(data->pattern_list, custom_pattern);
-
-       data->pattern_list = g_list_reverse(data->pattern_list);
-
-       current_pattern = NULL;
-       GList* l;
-       /* Append patterns to hoversel */
-       for (l = data->pattern_list; l != NULL; l = l->next) {
-               get_pattern_s *dlp_pattern = l->data;
-
-               if (CUSTOM_PATTERN_ITEM_ID != dlp_pattern->id && strcmp(pattern, dlp_pattern->pattern) == 0 && pattern_type == dlp_pattern->type && undeletable == dlp_pattern->undeletable)
-                       current_pattern = dlp_pattern;
-
-               Elm_Object_Item *item = elm_hoversel_item_add(data->pattern_hoversel, dlp_pattern->name, NULL, ELM_ICON_NONE, _rule_edit_pattern_item_cb, dlp_pattern);
-
-               if (NULL != g_list_find(data->pattern_ids_in_use_list, GINT_TO_POINTER(dlp_pattern->id)) && strcmp(dlp_pattern->name,elm_object_text_get(data->pattern_hoversel)))
-                       elm_object_item_disabled_set(item, EINA_TRUE);
-       }
-
-       if (NULL != current_pattern)
-               elm_object_text_set(data->pattern_hoversel, current_pattern->name);
-
-       set_state_of_done_button(data);
-}
-
-/**
- * @brief Displays the Rule Create/Edit view
- * @param[in] ad the appliation data
- * @param[in] pop_to_nf_it the view to pop to after user creates a new rule
- * @param[in] config the user's configuration
- * @param[in] current_rule rule to be edited. If NULL, a new rule will be created
- * @param[in] app_list list of apps to which the new rule will be applied
- * @param[in] rule_list_data pointer to a dlp_rule_list_data_s. May be NULL
- * @param[in] rule_detailed_view_data pointer to a rule_detailed_view_data_s. May be NULL
-*/
-void create_privacy_dlp_rule_edit_view(struct app_data_s *ad, Elm_Object_Item *pop_to_nf_it, dlp_profile_s *config, const get_custom_rule_s *current_rule, const GList *app_list, void *rule_list_data, void *rule_detailed_view_data)
-{
-       if (NULL == ad) {
-               LOGE("Invalid parameter");
-               return;
-       }
-
-       rule_edit_data.ad = ad;
-       g_list_free_full(rule_edit_data.pattern_list, free_dlp_pattern);
-       rule_edit_data.pattern_list = NULL;
-       g_list_free(rule_edit_data.pattern_ids_in_use_list);
-       rule_edit_data.pattern_ids_in_use_list = NULL;
-       rule_edit_data.config = config;
-       rule_edit_data.current_rule = current_rule;
-       rule_edit_data.app_list = app_list;
-       rule_edit_data.rule_list_data = rule_list_data;
-       rule_edit_data.rule_detailed_view_data = rule_detailed_view_data;
-       rule_edit_data.pop_to_nf_it = pop_to_nf_it;
-       rule_edit_data.name_edit_field = NULL;
-       rule_edit_data.description_edit_field = NULL;
-       rule_edit_data.pattern_hoversel = NULL;
-       rule_edit_data.done_button = NULL;
-       rule_edit_data.next_button = NULL;
-
-       current_pattern = NULL;
-
-       const bool got_patterns = get_pattern_ids_in_use_list(&(rule_edit_data.pattern_ids_in_use_list));
-       log_if(!got_patterns, 1, "get_pattern_ids_in_use_list() failed");
-
-       /* Get dlp custom patterns from privacy guard */
-       const int res = privacy_guard_client_foreach_dlp_patterns(_rule_edit_get_patterns_cb, &rule_edit_data);
-       log_if(res != PRIV_GUARD_ERROR_SUCCESS, 1, "privacy_guard_client_foreach_dlp_custom_patterns() failed. [%d]", res);
-
-       get_pattern_s *custom_pattern = create_pattern(CUSTOM_PATTERN_ITEM_ID, "", dgettext("privacy-setting", PRIVACY_MENU_DLP_PROFILE_CUSTOM), "", PRIV_GUARD_DLP_PATTERN_STRING, "", true, 0);
-       rule_edit_data.pattern_list = g_list_prepend(rule_edit_data.pattern_list, custom_pattern);
-
-       rule_edit_data.pattern_list = g_list_reverse(rule_edit_data.pattern_list);
-
-       Evas_Object *bg = elm_bg_add(ad->nf);
-       elm_bg_color_set(bg, 255, 255, 255);
-
-       Evas_Object *rule_grid = elm_grid_add(ad->nf);
-       elm_grid_size_set(rule_grid, 100, 10);
-
-       elm_object_content_set(bg, rule_grid);
-
-       const int col1 = 5;
-       const int col2 = 35;
-       const int col_span1 = 34;
-       const int col_span2 = 65;
-       int row = 0;
-       const int row_span = 1;
-
-       static dlp_edit_field_changed_cb_s edit_field_changed_cb_data;
-       edit_field_changed_cb_data.changed_cb = _rule_edit_field_changed_cb;
-       edit_field_changed_cb_data.data = &rule_edit_data;
-
-       /* add rule name fields to grid */
-       static const Elm_Entry_Filter_Limit_Size name_limit_size = { .max_char_count = 0, .max_byte_count = LEN_NAME - 1 };
-       add_edit_field_to_grid(rule_grid, dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_NAME), false, NULL, col1, row, col_span1, row_span, NULL);
-       rule_edit_data.name_edit_field = add_edit_field_to_grid(rule_grid, NULL == current_rule ? "" : current_rule->name, true, &name_limit_size, col2, row++, col_span2, row_span, &edit_field_changed_cb_data);
-
-       /* add rule description fields to grid */
-       static const Elm_Entry_Filter_Limit_Size description_limit_size = { .max_char_count = 0, .max_byte_count = LEN_DESCRIPTION - 1 };
-       add_edit_field_to_grid(rule_grid, dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_DESCRIPTION), false, NULL, col1, row, col_span1, row_span, NULL);
-       rule_edit_data.description_edit_field = add_edit_field_to_grid(rule_grid, NULL == current_rule ? "" : current_rule->description, true, &description_limit_size, col2, row++, col_span2, row_span, &edit_field_changed_cb_data);
-
-       /* add rule pattern fields to grid */
-       add_edit_field_to_grid(rule_grid, dgettext("privacy-setting", PRIVACY_MENU_DLP_RULES_N_PATTERNS_TITLE_PATTERNS), false, NULL, col1, row, col_span1, row_span, NULL);
-       rule_edit_data.pattern_hoversel = add_pattern_hoversel_to_grid(rule_grid, &rule_edit_data, col2 + 4, row++, col_span2 - 8, row_span);
-
-       evas_object_show(rule_grid);
-
-       Elm_Object_Item *nf_it = elm_naviframe_item_push(
-               ad->nf,
-               NULL == current_rule ? dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_CREATE) : dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_EDIT),
-               NULL,
-               NULL,
-               bg,
-               NULL);
-
-       /* set callback to genlist item pop event */
-       elm_naviframe_item_pop_cb_set(nf_it, _rule_edit_nf_pop_cb, &rule_edit_data);
-       /* add a cancel button to naviframe title bar */
-       common_naviframe_btn_add(ad->nf, nf_it, true, dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_CANCEL), _rule_edit_cancel_cb, &rule_edit_data);
-       if (NULL == current_rule) {
-               /* add a done button to naviframe title bar */
-               rule_edit_data.done_button = common_naviframe_btn_add(ad->nf, nf_it, false, dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_DONE), _rule_edit_done_cb, &rule_edit_data);
-               elm_object_disabled_set(rule_edit_data.done_button, EINA_TRUE);
-       } else
-               /* add a next button to naviframe title bar */
-               rule_edit_data.next_button = common_naviframe_btn_add(ad->nf, nf_it, false, dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_NEXT), _rule_edit_next_cb, &rule_edit_data);
-}
diff --git a/ui/src/privacy_dlp_rule_list_view.c b/ui/src/privacy_dlp_rule_list_view.c
deleted file mode 100644 (file)
index 7ba50a3..0000000
+++ /dev/null
@@ -1,319 +0,0 @@
-/*
- * Copyright (c) 2017 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.
- */
-/*
- * @file               privacy_dlp_rule_list_view.c
- * @version     1.0
- * @brief
- */
-
-#include "common_utils.h"
-#include "common_ctxpopup.h"
-#include "privacy_setting.h"
-#include "privacy_view.h"
-#include <privacy_guard_client.h>
-#include <app_manager.h>
-#include <efl_extension.h>
-
-#define ACTION_TEXT_LEN 128
-
-typedef struct {
-       struct app_data_s *ad;
-       GList *rule_list;
-       rule_action_filter action;
-       const dlp_profile_s *config;
-       Elm_Object_Item *pop_to_nf_it;
-       Evas_Object *view_parent;
-       Evas_Object *rule_box;
-       Evas_Object *rule_genlist;
-       Evas_Object *rule_ctxpopup;
-} dlp_rule_list_data_s;
-
-static dlp_rule_list_data_s rule_list_data = {
-       .ad = NULL,
-       .rule_list = NULL,
-       .action = ACTION_ALL,
-       .config = NULL,
-       .view_parent = NULL,
-       .rule_box = NULL,
-       .rule_genlist = NULL,
-       .rule_ctxpopup = NULL
-};
-
-static void apply_rule_action_filter(dlp_rule_list_data_s *rld, Evas_Object *obj, int action);
-static void create_rule_genlist(dlp_rule_list_data_s *data);
-static const char *get_rule_action_text(rule_action_filter action);
-static void set_rule_action_filter_text(Evas_Object *action_hoversel, int action);
-static void _rule_list_view_dismiss_menu_cb(void *data, Evas_Object *obj, void *event_info);
-static void _rule_list_view_menu_dismissed_cb(void *data, Evas_Object *obj, void *event_info);
-
-static bool _pg_dlp_rules_cb(int id, PgDlpAction action, int pattern_id, const char *name, const char *description, const char *application_id, int leaks_count, void *user_data)
-{
-       /* create a new rule and store db data in it*/
-       get_custom_rule_s *rule = g_slice_new(get_custom_rule_s);
-
-       rule->id = id;
-       rule->action = action;
-       rule->pattern_id = pattern_id;
-       strncpy(rule->name, name, LEN_NAME);
-       rule->name[LEN_NAME - 1] = '\0';
-       strncpy(rule->description, description, LEN_DESCRIPTION);
-       rule->description[LEN_DESCRIPTION - 1] = '\0';
-       rule->leaks_count = leaks_count;
-       strncpy(rule->application_id, application_id, LEN_APPLICATION_ID);
-       rule->application_id[LEN_APPLICATION_ID - 1] = '\0';
-
-       GList **dlp_rules_list = user_data;
-       *dlp_rules_list = g_list_prepend(*dlp_rules_list, rule);
-
-       return true;
-}
-
-static gint _compare_rules_pattern_id_action_cb(gconstpointer lhs, gconstpointer rhs)
-{
-       const get_custom_rule_s *lhs_rule = lhs;
-       const get_custom_rule_s *rhs_rule = rhs;
-
-       if (lhs_rule->pattern_id < rhs_rule->pattern_id)
-               return -1;
-
-       if (lhs_rule->pattern_id > rhs_rule->pattern_id)
-               return 1;
-
-       // note that here we already know that
-       // lhs_rule->pattern_id == rhs_rule->pattern_id,
-       // so we compare the rules actions
-       if (lhs_rule->action == rhs_rule->action)
-               return 0;
-
-       return (lhs_rule->action < rhs_rule->action) ? -1 : 1;
-}
-
-static void _rule_genlist_del_cb(void *data, Evas_Object *obj)
-{
-       g_slice_free(dlp_item_rule_s, data);
-}
-
-static char* _rule_genlist_text_get_cb(void *data, Evas_Object *obj, const char *part)
-{
-       dlp_item_rule_s *rule = (dlp_item_rule_s *)data;
-
-       if (strcmp(part, "elm.text") == 0)
-               return strdup(rule->data->name);
-
-       if (strcmp(part, "elm.text.multiline") == 0) {
-               if (rule == NULL)
-                       return strdup("");
-
-               return strdup(rule->data->description);
-       }
-
-       return NULL;
-}
-
-static void _rule_list_view_create_rule_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       dlp_rule_list_data_s *rld = data;
-       elm_ctxpopup_dismiss(rld->rule_ctxpopup);
-       create_privacy_dlp_rule_create_view(rld->ad, rld->pop_to_nf_it, NULL, rld);
-}
-
-static void _rule_list_view_delete_rules_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       dlp_rule_list_data_s *rld = data;
-       elm_ctxpopup_dismiss(rld->rule_ctxpopup);
-       create_privacy_dlp_rule_delete_view(rld->ad, rld->rule_list, rld);
-}
-
-static void _rule_list_menu_item_selected_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       /* Get selected item */
-       Elm_Object_Item *ei = event_info;
-       dlp_item_rule_s *item = elm_object_item_data_get(ei);
-
-       /* Unhighlight selected item */
-       elm_genlist_item_selected_set(ei, EINA_FALSE);
-
-       dlp_rule_list_data_s *view_data = (dlp_rule_list_data_s *)data;
-       create_privacy_dlp_rule_detailed_view(view_data->ad, view_data->pop_to_nf_it, item->data, view_data->config, view_data);
-}
-
-static void _rule_list_view_menu_button_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       dlp_rule_list_data_s *rld = data;
-
-       eext_object_event_callback_del(rld->rule_genlist, EEXT_CALLBACK_MORE, _rule_list_view_menu_button_cb);
-       eext_object_event_callback_add(rld->rule_genlist, EEXT_CALLBACK_MORE, _rule_list_view_dismiss_menu_cb, rld);
-
-       if (!rld->rule_ctxpopup) {
-               rld->rule_ctxpopup = create_ctxpop(rld->ad);
-               elm_ctxpopup_item_append(rld->rule_ctxpopup, dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_CREATE), NULL, _rule_list_view_create_rule_cb, data);
-               elm_ctxpopup_item_append(rld->rule_ctxpopup, dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_DELETE), NULL, _rule_list_view_delete_rules_cb, data);
-               evas_object_smart_callback_add(rld->rule_ctxpopup, "dismissed", _rule_list_view_menu_dismissed_cb, rld);
-       } else {
-               evas_object_show(rld->rule_ctxpopup);
-       }
-}
-
-static void _rule_list_view_dismiss_menu_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       dlp_rule_list_data_s *rld = data;
-       elm_ctxpopup_dismiss(rld->rule_ctxpopup);
-}
-
-static void _rule_list_view_menu_dismissed_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       dlp_rule_list_data_s *rld = data;
-
-       eext_object_event_callback_del(rld->rule_genlist, EEXT_CALLBACK_MORE, _rule_list_view_dismiss_menu_cb);
-       eext_object_event_callback_add(rld->rule_genlist, EEXT_CALLBACK_MORE, _rule_list_view_menu_button_cb, rld);
-}
-
-static int _compare_rule_list_menu_item_cb(const void *lhs, const void* rhs)
-{
-       const get_custom_rule_s *lhs_rule = ((const dlp_item_rule_s *)elm_object_item_data_get(lhs))->data;
-       const get_custom_rule_s *rhs_rule = ((const dlp_item_rule_s *)elm_object_item_data_get(rhs))->data;
-       return strncasecmp(lhs_rule->name, rhs_rule->name, LEN_NAME);
-}
-
-void delete_rule_list()
-{
-       if (NULL == rule_list_data.rule_list)
-               return;
-
-       g_list_free_full(rule_list_data.rule_list, free_dlp_rule);
-       rule_list_data.rule_list = NULL;
-}
-
-static int populate_genlist(dlp_rule_list_data_s *data)
-{
-       int rule_count = 0;
-
-       if (NULL != data->rule_list) {
-               Elm_Genlist_Item_Class *itc = elm_genlist_item_class_new();
-               itc->item_style = "multiline";
-               itc->func.text_get = _rule_genlist_text_get_cb;
-               itc->func.del = _rule_genlist_del_cb;
-
-               Elm_Object_Item *it = NULL;
-               GList* l = data->rule_list;
-               /* Append rules as genlist item */
-               while (l != NULL) {
-                       dlp_item_rule_s *item = g_slice_new0(dlp_item_rule_s);
-
-                       // rule item data
-                       item->data = (get_custom_rule_s*)l->data;
-                       get_custom_rule_s *rule = (get_custom_rule_s*)l->data;
-
-                       if (filter_rule_by_action(item->data->action, data->action)) {
-                               // append rule to the genlist
-                               it = elm_genlist_item_sorted_insert(
-                                       data->rule_genlist,
-                                       itc,
-                                       item,
-                                       NULL,
-                                       ELM_GENLIST_ITEM_NONE,
-                                       _compare_rule_list_menu_item_cb,
-                                       _rule_list_menu_item_selected_cb,
-                                       data);
-                               log_if(it == NULL, 1, "Error in elm_genlist_item_append");
-                               ++rule_count;
-
-                               const int pattern_id = rule->pattern_id;
-                               const PgDlpAction action = rule->action;
-                               while (l != NULL && pattern_id == rule->pattern_id && action == rule->action) {
-                                       l = l->next;
-                                       if (l != NULL)
-                                               rule = (get_custom_rule_s*)l->data;
-                               }
-                       } else {
-                               l = l->next;
-                       }
-               }
-               elm_genlist_item_class_free(itc);
-       }
-
-       return rule_count;
-}
-
-static void create_rule_genlist(dlp_rule_list_data_s *data)
-{
-       data->rule_genlist = common_genlist_add(data->rule_box);
-       evas_object_size_hint_weight_set(data->rule_genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
-       evas_object_size_hint_align_set(data->rule_genlist, EVAS_HINT_FILL, EVAS_HINT_FILL);
-       if (populate_genlist(data) == 0) {
-               /* rules list is empty */
-               elm_layout_theme_set(data->rule_genlist, "layout", "nocontents", "default");
-       } else {
-               elm_genlist_item_show(elm_genlist_first_item_get(data->rule_genlist), ELM_GENLIST_ITEM_SCROLLTO_IN);
-       }
-       evas_object_show(data->rule_genlist);
-       elm_box_pack_end(data->rule_box, data->rule_genlist);
-}
-
-static void create_rule_list_components(dlp_rule_list_data_s *data)
-{
-       /* Create box container to hold view's components */
-       data->rule_box = elm_box_add(data->view_parent);
-       evas_object_show(data->rule_box);
-
-       create_rule_genlist(data);
-       elm_object_part_content_set(data->view_parent, "elm.swallow.content", data->rule_box);
-
-       if (PRIV_GUARD_DLP_PROFILE_CUSTOM == data->config->profile)
-               /* Register the Menu key event callback */
-               eext_object_event_callback_add(data->rule_box, EEXT_CALLBACK_MORE, _rule_list_view_menu_button_cb, data);
-}
-
-static void create_rule_list(const PgDlpProfile profile, GList **rule_list)
-{
-       delete_rule_list();
-
-       /* Get dlp leak logs from privacy guard */
-       const int res = privacy_guard_client_foreach_dlp_rules(getuid(), profile, _pg_dlp_rules_cb, rule_list);
-       log_if(res != PRIV_GUARD_ERROR_SUCCESS, 1, "privacy_guard_client_foreach_dlp_custom_rules() is failed. [%d]", res);
-
-       /* sort rules by pattern id and action */
-       rule_list_data.rule_list = g_list_sort(rule_list_data.rule_list, _compare_rules_pattern_id_action_cb);
-}
-
-void update_privacy_dlp_rules_list_view(void *rule_list_data)
-{
-       if (NULL == rule_list_data) {
-               LOGE("Invalid parameter");
-               return;
-       }
-
-       dlp_rule_list_data_s *rld = rule_list_data;
-
-       create_rule_list(rld->config->profile, &(rld->rule_list));
-
-       elm_box_unpack(rld->rule_box, rld->rule_genlist);
-       evas_object_del(rld->rule_genlist);
-       create_rule_genlist(rld);
-}
-
-void create_privacy_dlp_rules_list_view(struct app_data_s *ad, Evas_Object *parent, Elm_Object_Item *pop_to_nf_it, const dlp_profile_s *config)
-{
-       rule_list_data.ad = ad;
-
-       rule_list_data.config = config;
-       rule_list_data.view_parent = parent;
-       rule_list_data.pop_to_nf_it = pop_to_nf_it;
-
-       create_rule_list(rule_list_data.config->profile, &rule_list_data.rule_list);
-
-       create_rule_list_components(&rule_list_data);
-}
diff --git a/ui/src/privacy_guard_list_view.c b/ui/src/privacy_guard_list_view.c
deleted file mode 100644 (file)
index 1b24a2b..0000000
+++ /dev/null
@@ -1,89 +0,0 @@
-/**
- * Copyright (c) 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.
- */
-/*
- * @file       privacy_guard_list_view.c
- * @author     Kyoungyong Lee (k.y.lee@samsung.com)
- * @version    1.0
- * @brief
- */
-
-#include <efl_extension.h>
-#include "common_utils.h"
-#include "privacy_setting.h"
-#include "privacy_view.h"
-#include "privilege_info.h"
-
-static char* gl_text_get_cb(void *data, Evas_Object *obj, const char *part)
-{
-       char *privacy_display = NULL;
-       char *privacy_name = (char *) data;
-       privilege_info_get_privacy_display(privacy_name, &privacy_display);
-       lreturn_if(!strcmp(part, "elm.text"), , privacy_display, "privacy = %s", privacy_name);
-
-       return "FAIL";
-}
-static void gl_del_cb(void *data, Evas_Object *obj)
-{
-       /* Unrealized callback can be called after this. */
-       /* Accessing item_data_s can be dangerous on unrealized callback. */
-       if (!data)
-               free(data);
-}
-
-static void _privacy_selected_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       /* Get selected privacy */
-       Elm_Object_Item *ei = event_info;
-       item_data_s *selected_text = elm_object_item_data_get(ei);
-       LOGD("%s is selected", (char*)selected_text);
-
-       /* Unhighlight selected item */
-       elm_genlist_item_selected_set(ei, EINA_FALSE);
-
-       struct app_data_s *ad = (struct app_data_s *)data;
-       return_if(ad == NULL, , , "ad is null");
-
-       ad->privacy = (char *)selected_text;
-
-       create_privacy_guard_package_list_view(ad);
-}
-
-void create_privacy_guard_list_view(struct app_data_s *ad)
-{
-       Evas_Object *genlist = common_genlist_add(ad->nf);
-
-       evas_object_size_hint_weight_set(genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
-       evas_object_size_hint_align_set(genlist, EVAS_HINT_FILL, EVAS_HINT_FILL);
-
-       Elm_Genlist_Item_Class *itc = elm_genlist_item_class_new();
-       itc->item_style = "default";
-       itc->func.text_get = gl_text_get_cb;
-       itc->func.del = gl_del_cb;
-       int i = 0;
-       for (i = 0; i < (int)g_list_length(ad->privacy_list); ++i) {
-               Elm_Object_Item *it = NULL;
-               it = elm_genlist_item_append(genlist, itc, (char *)g_list_nth_data(ad->privacy_list, i), NULL, ELM_GENLIST_ITEM_NONE, _privacy_selected_cb, ad);
-               log_if(it == NULL, 1, "Error in elm_genlist_item_append");
-       }
-       elm_genlist_item_class_free(itc);
-       evas_object_show(genlist);
-
-       /* Change "Privacy Setting" to proper DID : use dgettext() */
-       Elm_Object_Item *nf_it = elm_naviframe_item_push(ad->nf, dgettext("privacy-setting", PRIVACY_MENU_MONITOR), common_back_btn_add(ad), NULL, genlist, NULL);
-
-       elm_object_item_domain_text_translatable_set(nf_it, PACKAGE, EINA_TRUE);
-}
-
diff --git a/ui/src/privacy_guard_package_list_view.c b/ui/src/privacy_guard_package_list_view.c
deleted file mode 100644 (file)
index 5f5f859..0000000
+++ /dev/null
@@ -1,507 +0,0 @@
-/**
- * Copyright (c) 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.
- */
-/*
- * @file       privacy_guard_package_list_view.c
- * @author     Kyoungyong Lee (k.y.lee@samsung.com)
- * @version    1.0
- * @brief
- */
-
-#include <efl_extension.h>
-#include <privilege_info.h>
-#include <glib.h>
-#include <pkgmgr-info.h>
-#include <tzplatform_config.h>
-#include <privacy_guard_client.h>
-#include "common_utils.h"
-#include "privacy_setting.h"
-#include "privacy_view.h"
-
-#define DEFAULT_ICON_PATH _TZ_SYS_RO_APP"/org.tizen.privacy-setting/res/icon/default.png"
-#define SUCCESS 1
-#define FAIL   0
-
-typedef struct pg_data_list_struct {
-       pg_data_s *pg_data;
-       struct pg_data_list_struct *next;
-} pg_data_list;
-
-
-static pg_item_data_s **item_list;
-static int is_last;
-static int len;
-static pg_data_list *start;
-static pg_data_list *cur;
-
-int init_pg_data_list(void)
-{
-       start = (pg_data_list *)malloc(sizeof(pg_data_list) * 1);
-       if (start == NULL) {
-               LOGE("Failed to allocate memory");
-               return FAIL;
-       }
-
-       start->next = NULL;
-       cur = start;
-
-       return SUCCESS;
-}
-
-int add_pg_data(const char *package_id, const int count, const time_t time, const int monitor_policy)
-{
-       pg_data_list *node = (pg_data_list *)malloc(sizeof(pg_data_list) * 1);
-       if (node == NULL) {
-               LOGE("Failed to allocate memory");
-               return FAIL;
-       }
-
-       node->pg_data = (pg_data_s *)malloc(sizeof(pg_data_s));
-       if (node->pg_data == NULL) {
-               LOGE("Failed to allocate memory");
-               free(node);
-               return FAIL;
-       }
-
-       node->next = NULL;
-
-       node->pg_data->pkg_id = strdup(package_id);
-       if (node->pg_data->pkg_id == NULL) {
-               LOGE("Failed to allocate memory");
-               free(node->pg_data);
-               free(node);
-               return FAIL;
-       }
-
-       node->pg_data->count = count;
-       node->pg_data->time = time;
-       node->pg_data->monitor_policy = monitor_policy;
-
-       cur->next = node;
-       cur = node;
-       len++;
-
-       return SUCCESS;
-}
-
-static void free_pg_data(pg_data_list *node, pg_data_list *next)
-{
-       if (next != NULL)
-               free_pg_data(next, next->next);
-
-       if (node == start) {
-               if (start != NULL) {
-                       free(start);
-                       start = NULL;
-               }
-               return;
-       } else {
-
-               if (node != NULL && node->pg_data != NULL && node->pg_data->pkg_id != NULL)
-                       free(node->pg_data->pkg_id);
-
-               if (node != NULL && node->pg_data != NULL)
-                       free(node->pg_data);
-
-               if (node != NULL)
-                       free(node);
-       }
-}
-
-void free_pg_data_list(void)
-{
-       free_pg_data(start, start->next);
-}
-
-static void free_item(pg_item_data_s *data, int *is_description)
-{
-       if (data != NULL) {
-               if (data->label != NULL) {
-                       free(data->label);
-
-                       if (*is_description == 0) {
-                               *is_description = 1;
-                               return;
-                       }
-               }
-               if (data->pkg_id != NULL)
-                       free(data->pkg_id);
-
-               if (data->privacy_id != NULL)
-                       free(data->privacy_id);
-
-               if (data->icon != NULL)
-                       free(data->icon);
-
-               if (data->description != NULL)
-                       free(data->description);
-       }
-
-}
-
-static int _create_privacy_guard_item_list(void)
-{
-       int j = 0;
-       item_list = (pg_item_data_s **)malloc(sizeof(pg_item_data_s *) * len);
-       if (item_list == NULL) {
-               LOGE("Failed to allocate memory");
-               return FAIL;
-       }
-
-       for (j = 0; j < len; j++) {
-               item_list[j] = (pg_item_data_s *)malloc(sizeof(pg_item_data_s));
-               if (item_list[j] == NULL) {
-                       LOGE("Failed to allocate memory");
-                       return FAIL;
-               }
-       }
-
-       return SUCCESS;
-}
-
-static void _free_privacy_guard_item_list(void)
-{
-
-       int is_description = 0;
-       int j = 0;
-
-       for (j = 0; j < len; j++) {
-               free_item(item_list[j], &is_description);
-               free(item_list[j]);
-       }
-
-       free(item_list);
-       item_list = NULL;
-}
-
-static void _gl_del_cb(void *data, Evas_Object *obj)
-{
-       is_last++;
-       if (start != NULL) {
-               free_pg_data_list();
-               start = NULL;
-               cur = NULL;
-       }
-       if (is_last == len) {
-               if (item_list != NULL)
-                       _free_privacy_guard_item_list();
-       }
-}
-
-static void _privacy_package_selected_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       Elm_Object_Item *ei = event_info;
-       pg_item_data_s *id = (pg_item_data_s *)data;
-       Eina_Bool status;
-
-       status = !id->status;
-
-       Evas_Object *check = elm_object_item_part_content_get(ei, "elm.swallow.end");
-       elm_check_state_set(check, status);
-       evas_object_smart_callback_call(check, "changed", data);
-
-       /* Unhighlight selected item */
-       elm_genlist_item_selected_set(ei, EINA_FALSE);
-}
-
-static void _privacy_package_check_changed_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       pg_item_data_s *id = (pg_item_data_s *)data;
-
-       LOGD("current policy: [%d]", id->status);
-       int res = privacy_guard_client_update_monitor_policy(id->user_id, id->pkg_id, id->privacy_id, !id->status);
-       log_if(res != PRIV_GUARD_ERROR_SUCCESS, 1, "privacy_guard_client_update_monitor_policy() is failed. [%d]", res);
-       id->status = !id->status;
-       LOGD("changed policy: [%d]", id->status);
-}
-
-static char* _gl_text_get_cb(void *data, Evas_Object *obj, const char *part)
-{
-       pg_item_data_s *id = data;
-       char *ret = NULL;
-
-       if (!strcmp(part, "elm.text")) {
-               ret = strdup(id->label);
-               if (ret == NULL) {
-                       LOGE("Failed to allocate memory");
-                       return NULL;
-               }
-
-               return ret;
-       }
-
-       if (!strcmp(part, "elm.text.sub") && id->index != 0) {
-               if (id->description == NULL)
-                       return NULL;
-
-               ret = strdup(id->description);
-               if (ret == NULL) {
-                       LOGE("Failed to allocate memory");
-                       return NULL;
-               }
-
-               return ret;
-       }
-
-       return NULL;
-}
-
-static Evas_Object* _gl_content_get_cb(void *data, Evas_Object *obj, const char *part)
-{
-       pg_item_data_s *id = (pg_item_data_s*)data;
-
-       if (id->index == 0)
-               return NULL;
-
-       if (!strcmp("elm.swallow.icon", part)) {
-               Evas_Object *icon;
-               icon = elm_image_add(obj);
-               elm_image_file_set(icon, id->icon, NULL);
-               evas_object_size_hint_min_set(icon, ELM_SCALE_SIZE(70), ELM_SCALE_SIZE(70));
-
-               return icon;
-       }
-
-       if (!strcmp(part, "elm.swallow.end")) {
-               Evas_Object *check;
-               Eina_Bool status = id->status;
-               check = elm_check_add(obj);
-               elm_object_style_set(check, "on&off");
-               elm_check_state_set(check, status);
-               evas_object_repeat_events_set(check, EINA_FALSE);
-               evas_object_propagate_events_set(check, EINA_FALSE);
-               evas_object_size_hint_weight_set(check, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
-               evas_object_size_hint_align_set(check, EVAS_HINT_FILL, EVAS_HINT_FILL);
-               evas_object_smart_callback_add(check, "changed", _privacy_package_check_changed_cb, data);
-               evas_object_show(check);
-
-               return check;
-       }
-
-       return NULL;
-}
-
-static bool _privacy_package_info_cb(const char *package_id, const int count, const time_t time, const int monitor_policy, void *user_data)
-{
-       if (add_pg_data(package_id, count, time, monitor_policy) == FAIL) {
-               LOGE("add_pg_data() is failed.");
-               return false;
-       }
-
-       return true;
-}
-
-void create_privacy_guard_package_list_view(struct app_data_s *ad)
-{
-       Evas_Object *genlist = NULL;
-       is_last = 0;
-       len = 1;
-
-       if (init_pg_data_list() == FAIL) {
-               LOGE("init_pg_data_list() is failed.");
-               return;
-       }
-
-       /* Get privacy guard data (pkg, count, policy) list by a privacy */
-       // user ID
-       uid_t user_id = getuid();
-       // get package_id, count, policy using a privacy
-       int res = privacy_guard_client_foreach_package_info_by_privacy_id(user_id, ad->privacy, _privacy_package_info_cb, NULL);
-       log_if(res != PRIV_GUARD_ERROR_SUCCESS, 1, "privacy_guard_client_foreach_package_info_by_privacy_id() is failed. [%d]", res);
-       // no content in the genlist
-       if (start->next == NULL) {
-               char* privacy_display = NULL;
-               res = privilege_info_get_privacy_display(ad->privacy, &privacy_display);
-               log_if(res != PRVMGR_ERR_NONE, 1, "privilege_info_get_privacy_display() is failed. [%d]", res);
-
-               genlist = elm_layout_add(ad->nf);
-               elm_layout_theme_set(genlist, "layout", "nocontents", "default");
-               evas_object_size_hint_weight_set(genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
-               evas_object_size_hint_align_set(genlist, EVAS_HINT_FILL, EVAS_HINT_FILL);
-
-               elm_object_part_text_set(genlist, "elm.text", dgettext("privacy-setting", "IDS_ST_NPBODY_NO_APPS"));
-               char* no_app_string_format = dgettext("privacy-setting", "IDS_ST_BODY_AFTER_YOU_DOWNLOAD_APPS_THAT_USE_PS_THEY_WILL_BE_SHOWN_HERE");
-               char no_app_string[256];
-               snprintf(no_app_string, sizeof(no_app_string), no_app_string_format, privacy_display);
-
-               elm_object_part_text_set(genlist, "elm.help.text", no_app_string);
-               elm_layout_signal_emit(genlist, "align.center", "elm");
-       } else {
-               genlist = common_genlist_add(ad->nf);
-               evas_object_size_hint_weight_set(genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
-               evas_object_size_hint_align_set(genlist, EVAS_HINT_FILL, EVAS_HINT_FILL);
-
-               /* Set itc */
-               Elm_Genlist_Item_Class *itc = elm_genlist_item_class_new();
-
-               itc->item_style = "type1";
-               itc->func.content_get = _gl_content_get_cb;
-               itc->func.text_get = _gl_text_get_cb;
-               itc->func.del = _gl_del_cb;
-
-               Elm_Object_Item *it = NULL;
-               pg_data_list *l = NULL;
-
-               if (_create_privacy_guard_item_list() == FAIL) {
-                       LOGE("_create_privacy_guard_item_list() is failed.");
-                       elm_genlist_item_class_free(itc);
-                       return;
-               }
-               /* Append guide text to the top of genlist */
-               pg_item_data_s *description_item = item_list[0];
-               description_item->index = 0;
-
-               // first line of the genlist will be filled with a description
-               char str_label[256] = {'\0',};
-               snprintf(str_label, sizeof(str_label), "<wrap=word><ellipsis=-1.0><font_size=35><color=#A9A9A9FF>%s</color></font_size></ellipsis></wrap>", dgettext("privacy-setting", "IDS_ST_BODY_THE_SELECTED_APPS_WILL_BE_MONITORED_FOR_ANY_ATTEMPTS_TO_VIOLATE_YOUR_PRIVACY"));
-               description_item->label = strdup(str_label);
-
-               if (description_item->label == NULL) {
-                       LOGE("Failed to allocate memory");
-                       elm_genlist_item_class_free(itc);
-                       return;
-               }
-               it = elm_genlist_item_append(genlist, itc, description_item, NULL, ELM_GENLIST_ITEM_NONE, _privacy_package_selected_cb, description_item);
-               elm_genlist_item_select_mode_set(it, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
-
-               /* Append privacy related package as genlist item */
-               int idx = 1;
-               for (l = start->next; l != NULL; l = l->next) {
-                       pg_item_data_s *item = item_list[idx];
-                       pg_data_s *data = l->pg_data;
-                       char str_temp[256] = {'\0',};
-                       struct tm timeinfo;
-                       char *label = NULL;
-                       char *icon = NULL;
-                       pkgmgrinfo_pkginfo_h handle;
-
-                       // index
-                       item->index = idx++;
-
-                       // package ID
-                       item->pkg_id = strdup(data->pkg_id);
-                       if (item->pkg_id == NULL) {
-                               LOGE("Failed to allocate memory");
-                               elm_genlist_item_class_free(itc);
-                               return;
-                       }
-                       // package label
-                       res = pkgmgrinfo_pkginfo_get_pkginfo(item->pkg_id, &handle);
-                       if (res != PMINFO_R_OK) {
-                               LOGE("Failed to operate pkgmgrinfo_pkginfo_get_pkginfo [%d]", res);
-                               LOGE("So replace the label to package ID");
-                               label = item->pkg_id;
-                       } else {
-                               res = pkgmgrinfo_pkginfo_get_label(handle, &label);
-                               if (res != PMINFO_R_OK) {
-                                       LOGE("Failed to operate pkgmgrinfo_pkginfo_get_label [%d]", res);
-                                       LOGE("So replace the label to package ID");
-                                       label = item->pkg_id;
-                               }
-                       }
-
-                       // title.. (package label)
-                       snprintf(str_temp, sizeof(str_temp), "%s", label);
-                       item->label = strdup(str_temp);
-                       if (item->label == NULL) {
-                               LOGE("Failed to allocate memory");
-                               elm_genlist_item_class_free(itc);
-                               return;
-                       }
-                       // description - e.g.) 25/08/2010 01:30 PM 21 time(s)
-                       if (data->time > 0) {
-                               localtime_r(&data->time, &timeinfo);
-                               char buf[32];
-                               char str_time[32] = {'\0',};
-                               LOGD("time: %s", asctime_r(&timeinfo, buf));
-                               strftime(str_time, 32, "%d/%m/%Y %I:%M %p", &timeinfo);
-                               char *str_count = dgettext("privacy-setting", "IDS_CLD_BODY_PD_TIMES");
-                               snprintf(str_temp, sizeof(str_temp), str_count, data->count);
-                               snprintf(str_label, sizeof(str_label), "<font_size=27>%s <font color=#3DB9CCFF>%s</font></font_size>", str_time, str_temp);
-                               item->description = strdup(str_label);
-                               if (item->description == NULL) {
-                                       elm_genlist_item_class_free(itc);
-                                       LOGE("Failed to allocate memory");
-                                       return;
-                               }
-                       } else {
-                               item->description = NULL;
-                       }
-
-                       // user ID
-                       item->user_id = user_id;
-
-                       // privacy ID
-                       item->privacy_id = strdup(ad->privacy);
-                       if (item->privacy_id == NULL) {
-                               LOGE("Failed to allocate memory");
-                               elm_genlist_item_class_free(itc);
-                               return;
-                       }
-                       // icon
-                       res = pkgmgrinfo_pkginfo_get_icon(handle, &icon);
-                       if (res != PMINFO_R_OK) {
-                               LOGE("Failed to operate pkgmgrinfo_pkginfo_get_icon [%d]", res);
-                               LOGE("So replace the icon to the default icon");
-                               item->icon = strdup(DEFAULT_ICON_PATH);
-                               if (item->icon == NULL) {
-                                       LOGE("Failed to allocate memory");
-                                       elm_genlist_item_class_free(itc);
-                                       return;
-                               }
-                       } else {
-                               if (EINA_TRUE == ecore_file_exists(icon)) {
-                                       item->icon = strdup(icon);
-                                       if (item->icon == NULL) {
-                                               LOGE("Failed to allocate memory");
-                                               elm_genlist_item_class_free(itc);
-                                               return;
-                                       }
-                               } else {
-                                       LOGD("The icon is not exist for %s. So replace it to the default icon.", label);
-                                       item->icon = strdup(DEFAULT_ICON_PATH);
-                                       if (item->icon == NULL) {
-                                               LOGE("Failed to allocate memory");
-                                               elm_genlist_item_class_free(itc);
-                                               return;
-                                       }
-                               }
-                       }
-
-                       // status
-                       item->status = ((data->monitor_policy == 1) ? EINA_TRUE : EINA_FALSE);
-
-                       pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
-
-                       // append to the genlist
-                       it = elm_genlist_item_append(genlist, itc, item, NULL, ELM_GENLIST_ITEM_NONE, _privacy_package_selected_cb, item);
-                       log_if(it == NULL, 1, "Error in elm_genlist_item_append");
-               }
-
-               elm_genlist_item_class_free(itc);
-       }
-
-       evas_object_show(genlist);
-
-       /* TODO: change nf_it_title to proper DID : use dgettext() */
-       char *privacy_display = NULL;
-       int ret = privilege_info_get_privacy_display(ad->privacy, &privacy_display);
-       log_if(ret != PRVMGR_ERR_NONE, 1, "privacy_display = %s", privacy_display);
-
-       /* Push naviframe item */
-       Elm_Object_Item *nf_it = elm_naviframe_item_push(ad->nf, privacy_display, common_back_btn_add(ad), NULL, genlist, NULL);
-
-       elm_object_item_domain_text_translatable_set(nf_it, PACKAGE, EINA_TRUE);
-}
index 5179756a354d64251e212156933573309144f33f..808478050f5d238bba3352da8707885f418fe46c 100644 (file)
@@ -80,10 +80,6 @@ static void menu_selected_cb(void *data, Evas_Object *obj, void *event_info)
 
        if (strstr(selected_text, dgettext("privacy-setting", PRIVACY_MENU_SETTING)) != NULL) {
                create_privacy_list_view(ad);
-       } else if (strstr(selected_text, dgettext("privacy-setting", PRIVACY_MENU_MONITOR)) != NULL) {/* privacy guard */
-               create_privacy_guard_list_view(ad);
-       } else if (strstr(selected_text, dgettext("privacy-setting", PRIVACY_MENU_DLP)) != NULL) {/* data leak monitor */
-               create_privacy_dlp_menu_view(ad);
        } else {
                LOGE("selected text = %s, no matching menu", selected_text);
        }
@@ -100,8 +96,6 @@ void create_privacy_menu_view(struct app_data_s *ad)
        /* Set privacy menu list */
        privacy_menu_list = NULL;
        privacy_menu_list = g_list_append(privacy_menu_list, PRIVACY_MENU_SETTING);
-       privacy_menu_list = g_list_append(privacy_menu_list, PRIVACY_MENU_MONITOR);
-       privacy_menu_list = g_list_append(privacy_menu_list, PRIVACY_MENU_DLP);
 
        Elm_Genlist_Item_Class *itc = elm_genlist_item_class_new();
        itc->item_style = "default";
diff --git a/ui/src/privacy_view.c b/ui/src/privacy_view.c
deleted file mode 100644 (file)
index a1250de..0000000
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * Copyright (c) 2017 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.
- */
-/*
- * @file        privacy_view.c
- * @version     1.0
- * @brief
- */
-
-#include "privacy_view.h"
-
-bool filter_rule_by_action(int rule_action, rule_action_filter filter_action)
-{
-       switch (filter_action) {
-       case ACTION_ALLOW:
-               return PRIV_GUARD_DLP_ACTION_ALLOW == rule_action;
-       case ACTION_DENY:
-               return PRIV_GUARD_DLP_ACTION_DENY == rule_action;
-       case ACTION_SANITIZE:
-               return PRIV_GUARD_DLP_ACTION_SANITIZE == rule_action;
-       default:
-               return true; // defaults to ACTION_ALL;
-       }
-}
-
-// NOTE: the function below is commented out because only allow actions will be
-//       released to Tizen 4.0, so action icons become meaningless.
-//
-// /**
-//  * @brief Overlay an image related to the action on top of the application icon
-//  * @param[in] icon The icon to be altered
-//  * @param[in] action The type of image to be overlaid
-//  */
-// void overlay_action_image(Evas_Object *icon, PgDlpAction action)
-// {
-//     Evas_Object *img = elm_image_object_get((const Elm_Image *)icon);
-//     Eina_Bool has_alpha = evas_object_image_alpha_get(img);
-//     unsigned char *ptr = (unsigned char *)evas_object_image_data_get(img, EINA_TRUE);
-//     int stride = evas_object_image_stride_get(img);
-//     int psize = 3, width, height;
-//     int radius, x, y;
-
-//     evas_object_image_size_get(img, &width, &height);
-//     radius = width / 4;
-//     if (height / 4 < radius)
-//             radius = height / 4;
-//     if (has_alpha) psize = 4;
-//     float xcenter = (float)(width - radius);
-//     for (y = stride * (height - radius * 2); y < stride * height; y += stride) {
-//             float sliceval = (float)radius * sinf(((float)height - 1. - (float)y / (float)stride) / (float)radius * M_PI / 2.);
-//             for (x = (int)(xcenter - sliceval + .5) * psize; x < (int)(xcenter + sliceval + .5) * psize; x += psize) {
-//                     // order is bgra in elm_image
-//                     switch (action) {
-//                     case PRIV_GUARD_DLP_ACTION_ALLOW:
-//                             ptr[y + x] = 0;
-//                             ptr[y + x + 1] = 255;
-//                             ptr[y + x + 2] = 0;
-//                             break;
-//                     case PRIV_GUARD_DLP_ACTION_DENY:
-//                             ptr[y + x] = 0;
-//                             ptr[y + x + 1] = 0;
-//                             ptr[y + x + 2] = 255;
-//                             break;
-//                     case PRIV_GUARD_DLP_ACTION_SANITIZE:
-//                             ptr[y + x] = 0;
-//                             ptr[y + x + 1] = 255;
-//                             ptr[y + x + 2] = 255;
-//                             break;
-//                     default:
-//                             LOGE("Invalid action type");
-//                             break;
-//                     }
-//                     if (has_alpha) ptr[y + x + 3] = 255;
-//             }
-//     }
-//}
-