summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSaulo Moraes <s.moraes@samsung.com>2017-09-19 10:20:43 -0300
committerSaulo Aldighieri Moraes <s.moraes@samsung.com>2017-09-19 10:21:03 -0300
commitb480fa9f5cc75492da87597666932b96c93bc750 (patch)
tree1623d5719d13b0f5be6ecd5ef41b0da8edbfd884
parent0f4721c49418111f6ff3ca8f58a328315e95bd13 (diff)
downloadprivacy-setting-b480fa9f5cc75492da87597666932b96c93bc750.tar.gz
privacy-setting-b480fa9f5cc75492da87597666932b96c93bc750.tar.bz2
privacy-setting-b480fa9f5cc75492da87597666932b96c93bc750.zip
Adding DLP feature
Change-Id: I52dfd0a7610b40febc8a9b739a3c4629bfd7c8cd
-rw-r--r--common/include/common_ctxpopup.h44
-rw-r--r--common/include/common_edit_field.h114
-rw-r--r--common/include/common_popup.h59
-rw-r--r--common/include/common_utils.h69
-rw-r--r--common/src/common_ctxpopup.c67
-rw-r--r--common/src/common_edit_field.c169
-rw-r--r--common/src/common_popup.c64
-rw-r--r--common/src/common_utils.c124
-rwxr-xr-xpo/ar.po269
-rwxr-xr-xpo/az.po269
-rwxr-xr-xpo/bg.po269
-rwxr-xr-xpo/ca.po269
-rwxr-xr-xpo/cs.po269
-rwxr-xr-xpo/da.po269
-rwxr-xr-xpo/de.po269
-rwxr-xr-xpo/el_GR.po269
-rwxr-xr-xpo/en.po269
-rwxr-xr-xpo/en_PH.po269
-rwxr-xr-xpo/en_US.po269
-rwxr-xr-xpo/es_ES.po269
-rwxr-xr-xpo/es_US.po269
-rwxr-xr-xpo/et.po269
-rwxr-xr-xpo/eu.po269
-rwxr-xr-xpo/fi.po269
-rwxr-xr-xpo/fr.po269
-rwxr-xr-xpo/fr_CA.po269
-rwxr-xr-xpo/ga.po269
-rwxr-xr-xpo/gl.po269
-rwxr-xr-xpo/hi.po269
-rwxr-xr-xpo/hr.po269
-rwxr-xr-xpo/hu.po269
-rwxr-xr-xpo/hy.po269
-rwxr-xr-xpo/is.po269
-rwxr-xr-xpo/it_IT.po269
-rwxr-xr-xpo/ja_JP.po269
-rwxr-xr-xpo/ka.po269
-rwxr-xr-xpo/kk.po269
-rwxr-xr-xpo/ko_KR.po269
-rwxr-xr-xpo/lt.po269
-rwxr-xr-xpo/lv.po269
-rwxr-xr-xpo/mk.po269
-rwxr-xr-xpo/nb.po269
-rwxr-xr-xpo/nl.po269
-rwxr-xr-xpo/pl.po269
-rwxr-xr-xpo/pt_BR.po269
-rwxr-xr-xpo/pt_PT.po269
-rwxr-xr-xpo/ro.po269
-rwxr-xr-xpo/ru_RU.po269
-rwxr-xr-xpo/sk.po269
-rwxr-xr-xpo/sl.po269
-rwxr-xr-xpo/sr.po269
-rwxr-xr-xpo/sv.po269
-rwxr-xr-xpo/tr_TR.po269
-rwxr-xr-xpo/uk.po269
-rwxr-xr-xpo/uz.po269
-rwxr-xr-xpo/zh_CN.po269
-rwxr-xr-xpo/zh_HK.po269
-rwxr-xr-xpo/zh_TW.po269
-rwxr-xr-xui/CMakeLists.txt22
-rw-r--r--ui/include/privacy_setting.h96
-rw-r--r--ui/include/privacy_view.h163
-rw-r--r--ui/src/privacy_dlp_choose_apps_view.c577
-rw-r--r--ui/src/privacy_dlp_choose_rule_template_view.c370
-rw-r--r--ui/src/privacy_dlp_log_detailed_view.c253
-rw-r--r--ui/src/privacy_dlp_menu_view.c814
-rw-r--r--ui/src/privacy_dlp_pattern_create_view.c252
-rw-r--r--ui/src/privacy_dlp_pattern_delete_view.c328
-rw-r--r--ui/src/privacy_dlp_pattern_detailed_view.c275
-rw-r--r--ui/src/privacy_dlp_pattern_list_view.c345
-rw-r--r--ui/src/privacy_dlp_reports_app_rank_view.c246
-rw-r--r--ui/src/privacy_dlp_reports_data_stat_view.c232
-rw-r--r--ui/src/privacy_dlp_reports_del_view.c457
-rw-r--r--ui/src/privacy_dlp_reports_full_view.c365
-rw-r--r--ui/src/privacy_dlp_reports_rules_and_patterns_view.c107
-rw-r--r--ui/src/privacy_dlp_rule_create_view.c199
-rw-r--r--ui/src/privacy_dlp_rule_delete_view.c332
-rw-r--r--ui/src/privacy_dlp_rule_detailed_view.c320
-rw-r--r--ui/src/privacy_dlp_rule_edit_view.c450
-rw-r--r--ui/src/privacy_dlp_rule_list_view.c341
-rw-r--r--ui/src/privacy_menu_view.c3
-rw-r--r--ui/src/privacy_view.c89
81 files changed, 20786 insertions, 10 deletions
diff --git a/common/include/common_ctxpopup.h b/common/include/common_ctxpopup.h
new file mode 100644
index 0000000..eaea655
--- /dev/null
+++ b/common/include/common_ctxpopup.h
@@ -0,0 +1,44 @@
+/*
+ * 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 common_ctxpopup.h
+ * @version 1.0
+ * @brief Helper functions that encapsulate ctxpopup menus creation and deletion.
+ * @see https://developer.tizen.org/development/guides/native-application/user-interface/efl/ui-components/mobile-ui-components/ctxpopup
+ */
+
+#ifndef __UI_PRIVACY_SETTING_COMMON_CTXPOPUP_H_
+#define __UI_PRIVACY_SETTING_COMMON_CTXPOPUP_H_
+
+#include "common_utils.h"
+#include <Elementary.h>
+
+/**
+ * @brief create a ctxpopup object
+ * @param[in] ad app_data
+ *
+ * @return the ctxpopup object
+ */
+Evas_Object *create_ctxpop(struct app_data_s *ad);
+
+/**
+ * @brief delete a ctxpopup object
+ * @param[in] ctxpopup the ctxpopup to delete
+ *
+ */
+void delete_ctxpopup(Evas_Object *ctxpopup);
+
+#endif
diff --git a/common/include/common_edit_field.h b/common/include/common_edit_field.h
new file mode 100644
index 0000000..cf7f714
--- /dev/null
+++ b/common/include/common_edit_field.h
@@ -0,0 +1,114 @@
+/*
+ * 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 common_edit_field.h
+ * @version 1.0
+ * @brief Helper functions that encapsulate text entry objects.
+ */
+
+#ifndef __UI_PRIVACY_SETTING_COMMON_EDIT_FIELD_H_
+#define __UI_PRIVACY_SETTING_COMMON_EDIT_FIELD_H_
+
+#include <efl_extension.h>
+#include <stdbool.h>
+
+typedef void dlp_edit_field;
+
+typedef struct {
+ Evas_Smart_Cb changed_cb;
+ void *data;
+} dlp_edit_field_changed_cb_s;
+
+/**
+ * @brief get the text from an edit_field entry
+ * @param[in] edit_field an edit_field struct
+ *
+ * @return the text from the entry
+ */
+const char *get_text_from_edit_field(dlp_edit_field *edit_field);
+
+/**
+ * @brief get the edit field (layout element) from an edit_field struct
+ * @param[in] edit_field an edit_field struct
+ *
+ * @return the layout object
+ */
+Evas_Object *get_evas_edit_field(dlp_edit_field *edit_field);
+
+/**
+ * @brief check if the text is empty for an edit_field
+ * @param[in] edit_field the edit_field struct
+ *
+ * @return true if the text is empty
+ */
+bool is_edit_field_empty(dlp_edit_field *edit_field);
+
+/**
+ * @brief create and add an edit_field widget to a grid widget
+ * @param[in] rule_grid a grid widget for the container
+ * @param[in] text the text to set in the edit_field entry
+ * @param[in] editable true if the text can be edited
+ * @param[in] limit_size filter limit size (may be NULL)
+ * @param[in] col the start column to attach the entry field
+ * @param[in] row the start row to attach the entry field
+ * @param[in] col_span the column width for the entry field
+ * @param[in] row_span the row height for the entry field
+ * @param[in] changed_cb_data a callback for when the entry data is changed
+ *
+ * @return the new edit_field struct
+ * @see free_edit_field()
+ */
+dlp_edit_field *add_edit_field_to_grid(
+ Evas_Object *rule_grid,
+ const char *text,
+ bool editable,
+ const Elm_Entry_Filter_Limit_Size *limit_size,
+ int col,
+ int row,
+ int col_span,
+ int row_span,
+ dlp_edit_field_changed_cb_s *changed_cb_data);
+
+/**
+ * @brief create an edit_field widget and struct
+ * @param[in] parent a container widget to hold the entry_field
+ * @param[in] guide_text the guide text to set for the edit_field entry
+ * @param[in] text the text to set in the edit_field entry
+ * @param[in] multiline true if the entry widget can hold multiline text
+ * @param[in] editable true if the text can be edited
+ * @param[in] limit_size maximum number of characters or bytes allowed (may be NULL)
+ * @param[in] changed_cb_data a callback for when the entry data is changed
+ *
+ * @return the new edit_field struct
+ * @see free_edit_field()
+ */
+dlp_edit_field *create_edit_field(
+ Evas_Object *parent,
+ const char *guide_text,
+ const char* text,
+ bool multiline,
+ bool editable,
+ const Elm_Entry_Filter_Limit_Size *limit_size,
+ dlp_edit_field_changed_cb_s *changed_cb);
+
+/**
+ * @brief free an edit_field struct
+ * @param[in] edit_field an edit_field struct
+ *
+ */
+void free_edit_field(dlp_edit_field *edit_field);
+
+#endif
diff --git a/common/include/common_popup.h b/common/include/common_popup.h
new file mode 100644
index 0000000..430e284
--- /dev/null
+++ b/common/include/common_popup.h
@@ -0,0 +1,59 @@
+/*
+ * 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 common_popup.h
+ * @version 1.0
+ * @brief Helper functions for the two button popup
+ */
+
+#ifndef __UI_PRIVACY_SETTING_COMMON_POPUP_H_
+#define __UI_PRIVACY_SETTING_COMMON_POPUP_H_
+
+#include <efl_extension.h>
+
+/**
+ * @brief destroy a popup object
+ * @param[in] popup The popup object to destroy
+ *
+ */
+void destroy_popup(Evas_Object *popup);
+
+/**
+ * @brief create a two button popup object
+ * @param[in] parent The parent widget
+ * @param[in] popup_title The title text
+ * @param[in] popup_text The text to display in the popup
+ * @param[in] button1_label The button text for button1
+ * @param[in] button1_cb The callback function for when button1 is clicked
+ * @param[in] button2_label The button text for button2
+ * @param[in] button2_cb The callback function for when button2 is clicked
+ * @param[in] dismiss_popup_cb The callback function for when the popup is dismissed
+ * @param[in] data User data to be passed to the callback funtions
+ *
+ * @return the ctxpopup object
+ * @see destroy_popup()
+ */Evas_Object* create_two_buttons_popup(
+ Evas_Object *parent,
+ const char *popup_title,
+ const char *popup_text,
+ const char *button1_label,
+ Evas_Smart_Cb button1_cb,
+ const char *button2_label,
+ Evas_Smart_Cb button2_cb,
+ Evas_Smart_Cb dismiss_popup_cb,
+ void* data);
+
+#endif
diff --git a/common/include/common_utils.h b/common/include/common_utils.h
index 0eace1f..4e05bea 100644
--- a/common/include/common_utils.h
+++ b/common/include/common_utils.h
@@ -1,4 +1,4 @@
-/**
+/*
* Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
*
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -13,11 +13,11 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-/*
- * @file common_utils.h
+/**
+ * @file common_utils.h
* @author Yunjin Lee (yunjin-.lee@samsung.com)
* @version 1.0
- * @brief
+ * @brief Miscelleneous utility functions for the privacy-setting interface
*/
#ifndef __UI_PRIVACY_SETTING_COMMON_UTILS_H_
@@ -62,8 +62,69 @@ extern "C" {
Evas_Object *common_genlist_add(Evas_Object *parent);
+
+/**
+ * @brief add a back button to the screen
+ * @param[in] ad pointer to app_data struct
+ *
+ * @return the button object
+ */
Evas_Object *common_back_btn_add(struct app_data_s *ad);
+/**
+ * @brief Adds a button to a naviframe
+ * @param[in] nf The naviframe to which the button will be added
+ * @param[in] nf_it The naviframe part in which the button will be displayed
+ * @param[in] left_side If true, button will be diplayed on the screen's left. If false, button will be displayed on the screen's right
+ * @param[in] text The text to be displayed on the button
+ * @param[in] btn_clicked_cb The callback to be called when the button is pressed
+ * @param[in] data The data to be passed to the callback
+ * @return a pointer to the added button
+ */
+Evas_Object *common_naviframe_btn_add(
+ Evas_Object *nf,
+ Elm_Object_Item *nf_it,
+ const bool left_side,
+ const char* text,
+ Evas_Smart_Cb btn_clicked_cb,
+ void* data);
+
+/**
+ * @brief add a check button to the screen
+ * @param[in] parent parent widget to add to
+ *
+ * @return the checkbutton object
+ */
+Evas_Object *common_create_check(Evas_Object *parent);
+
+/**
+ * @brief display a toast message
+ * @param[in] text the text to display
+ * @param[in] obj the parent object
+ *
+ */
+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);
+
#ifdef _cplusplus
}
#endif
diff --git a/common/src/common_ctxpopup.c b/common/src/common_ctxpopup.c
new file mode 100644
index 0000000..a2b6d88
--- /dev/null
+++ b/common/src/common_ctxpopup.c
@@ -0,0 +1,67 @@
+/**
+ * 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 common_ctxpopup.c
+ * @version 1.0
+ * @brief Helper functions that encapsulate ctxpopup menus creation and deletion.
+ */
+
+#include "common_ctxpopup.h"
+#include <efl_extension.h>
+
+static void _dismiss_menu_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ delete_ctxpopup(obj);
+}
+
+void move_menu_popup(Evas_Object *app_win, Evas_Object *ctxpopup)
+{
+ Evas_Coord w, h;
+ int pos = -1;
+
+ elm_win_screen_size_get(app_win, NULL, NULL, &w, &h);
+ pos = elm_win_rotation_get(app_win);
+
+ switch (pos) {
+ case 0:
+ case 180:
+ evas_object_move(ctxpopup, 0, h);
+ break;
+ case 90:
+ evas_object_move(ctxpopup, 0, w);
+ break;
+ case 270:
+ evas_object_move(ctxpopup, h, w);
+ break;
+ }
+}
+
+void delete_ctxpopup(Evas_Object *ctxpopup)
+{
+ evas_object_del(ctxpopup);
+}
+
+Evas_Object *create_ctxpop(struct app_data_s *ad)
+{
+ Evas_Object *ctxpopup = elm_ctxpopup_add(ad->nf);
+ elm_object_style_set(ctxpopup, "more/default");
+ elm_ctxpopup_auto_hide_disabled_set(ctxpopup, EINA_TRUE);
+ eext_object_event_callback_add(ctxpopup, EEXT_CALLBACK_BACK, _dismiss_menu_cb, NULL);
+ evas_object_smart_callback_add(ctxpopup, "dismissed", _dismiss_menu_cb, NULL);
+ move_menu_popup(ad->win, ctxpopup);
+ evas_object_show(ctxpopup);
+ return ctxpopup;
+}
diff --git a/common/src/common_edit_field.c b/common/src/common_edit_field.c
new file mode 100644
index 0000000..854dd21
--- /dev/null
+++ b/common/src/common_edit_field.c
@@ -0,0 +1,169 @@
+/*
+ * 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 common_edit_field.c
+ * @version 1.0
+ * @brief Helper functions that encapsulate text entry objects.
+ */
+
+#include "common_utils.h"
+
+#include "common_edit_field.h"
+
+typedef struct {
+ Evas_Object *edit_field;
+ Evas_Object *entry;
+ dlp_edit_field_changed_cb_s *changed_cb;
+} dlp_edit_field_data_s;
+
+static void _edit_field_focused_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ Evas_Object *edit_field = (Evas_Object *)data;
+ elm_object_signal_emit(edit_field, "elm,state,focused", "");
+
+ if (!elm_entry_is_empty(obj))
+ elm_object_signal_emit(edit_field, "elm,action,show,button", "");
+}
+
+static void _edit_field_unfocused_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ Evas_Object *edit_field = (Evas_Object *)data;
+ elm_object_signal_emit(edit_field, "elm,state,unfocused", "");
+ elm_object_signal_emit(edit_field, elm_entry_is_empty(obj) ? "elm,action,hide,button" : "elm,action,show,button", "");
+}
+
+static void _edit_field_changed_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ dlp_edit_field_data_s *edit_field = data;
+ elm_object_signal_emit(edit_field->edit_field, elm_entry_is_empty(obj) ? "elm,action,hide,button" : "elm,action,show,button", "");
+ if (NULL != edit_field->changed_cb)
+ edit_field->changed_cb->changed_cb(edit_field->changed_cb->data, obj, event_info);
+}
+
+static void _edit_field_clear_button_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ Evas_Object *entry = (Evas_Object *)data;
+ elm_entry_entry_set(entry, "");
+}
+
+const char *get_text_from_edit_field(dlp_edit_field *edit_field)
+{
+ if (NULL == edit_field) {
+ LOGE("Invalid parameter");
+ return NULL;
+ }
+ dlp_edit_field_data_s *data = edit_field;
+ Evas_Object *entry = elm_object_part_content_get(data->edit_field, "elm.swallow.content");
+ return elm_entry_entry_get(entry);
+}
+
+Evas_Object *get_evas_edit_field(dlp_edit_field *edit_field)
+{
+ if (NULL == edit_field) {
+ LOGE("Invalid parameter");
+ return NULL;
+ }
+ dlp_edit_field_data_s *data = edit_field;
+ return data->edit_field;
+}
+
+bool is_edit_field_empty(dlp_edit_field *edit_field)
+{
+ if (NULL == edit_field) {
+ LOGW("NULL parameter");
+ return true;
+ }
+ dlp_edit_field_data_s *data = edit_field;
+ return elm_entry_is_empty(data->entry) ? true : false;
+}
+
+dlp_edit_field *add_edit_field_to_grid(
+ Evas_Object *rule_grid,
+ const char *text,
+ bool editable,
+ const Elm_Entry_Filter_Limit_Size *limit_size,
+ int col,
+ int row,
+ int col_span,
+ int row_span,
+ dlp_edit_field_changed_cb_s *changed_cb_data)
+{
+ dlp_edit_field *edit_field = create_edit_field(rule_grid, "", text, false, editable, limit_size, changed_cb_data);
+ elm_grid_pack(rule_grid, get_evas_edit_field(edit_field), col, row, col_span, row_span);
+ return edit_field;
+}
+
+dlp_edit_field *create_edit_field(
+ Evas_Object *parent,
+ const char *guide_text,
+ const char* text,
+ bool multiline,
+ bool editable,
+ const Elm_Entry_Filter_Limit_Size *limit_size,
+ dlp_edit_field_changed_cb_s *changed_cb)
+{
+ if (NULL == parent) {
+ LOGE("Invalid parameter");
+ return NULL;
+ }
+
+ dlp_edit_field_data_s *data = malloc(sizeof(dlp_edit_field_data_s));
+ if (NULL == data) {
+ LOGE("Failed to allocate memory");
+ return NULL;
+ }
+ data->edit_field = elm_layout_add(parent);
+ data->entry = elm_entry_add(data->edit_field);
+ data->changed_cb = changed_cb;
+
+ elm_layout_theme_set(data->edit_field, "layout", "application", "default");
+ evas_object_size_hint_weight_set(data->edit_field, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(data->edit_field, EVAS_HINT_FILL, 0);
+ evas_object_show(data->edit_field);
+
+ elm_entry_single_line_set(data->entry, !(Eina_Bool)multiline);
+ elm_entry_scrollable_set(data->entry, EINA_TRUE);
+ if (NULL != limit_size)
+ elm_entry_markup_filter_append(data->entry, elm_entry_filter_limit_size, (void *)limit_size);
+
+ if (editable) {
+ elm_entry_editable_set(data->entry, EINA_TRUE);
+ elm_layout_theme_set(data->edit_field, "layout", "editfield", multiline ? "multiline" : "singleline");
+
+ evas_object_smart_callback_add(data->entry, "focused", _edit_field_focused_cb, data->edit_field);
+ evas_object_smart_callback_add(data->entry, "unfocused", _edit_field_unfocused_cb, data->edit_field);
+ evas_object_smart_callback_add(data->entry, "changed", _edit_field_changed_cb, data);
+ evas_object_smart_callback_add(data->entry, "preedit,changed", _edit_field_changed_cb, data->edit_field);
+
+ Evas_Object *clear_button = elm_button_add(data->edit_field);
+ elm_object_style_set(clear_button, "editfield_clear");
+ evas_object_smart_callback_add(clear_button, "clicked", _edit_field_clear_button_clicked_cb, data->entry);
+ elm_object_part_content_set(data->edit_field, "elm.swallow.button", clear_button);
+ } else
+ elm_entry_editable_set(data->entry, EINA_FALSE);
+
+ elm_entry_entry_set(data->entry, text);
+ elm_object_part_text_set(data->entry, "elm.guide", guide_text);
+ elm_object_part_content_set(data->edit_field, "elm.swallow.content", data->entry);
+ evas_object_show(data->edit_field);
+
+ return data;
+}
+
+void free_edit_field(dlp_edit_field *edit_field)
+{
+ free((dlp_edit_field_data_s *)edit_field);
+}
diff --git a/common/src/common_popup.c b/common/src/common_popup.c
new file mode 100644
index 0000000..47c390c
--- /dev/null
+++ b/common/src/common_popup.c
@@ -0,0 +1,64 @@
+/*
+ * 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 common_popup.c
+ * @version 1.0
+ * @brief Helper functions for the two button popup
+ */
+
+#include <efl_extension.h>
+#include "common_popup.h"
+
+void destroy_popup(Evas_Object *popup)
+{
+ elm_popup_dismiss(popup);
+ evas_object_del(popup);
+}
+
+void add_button_to_popup(Evas_Object *popup, void *data, const char* button_text, const char* button_part, Evas_Smart_Cb button_callback)
+{
+ Evas_Object *button = elm_button_add(popup);
+ elm_object_style_set(button, "popup");
+ elm_object_text_set(button, button_text);
+ elm_object_part_content_set(popup, button_part, button);
+ evas_object_smart_callback_add(button, "clicked", button_callback, data);
+}
+
+Evas_Object* create_two_buttons_popup(Evas_Object *parent, const char *popup_title, const char *popup_text,
+ const char *button1_label, Evas_Smart_Cb button1_cb, const char *button2_label,
+ Evas_Smart_Cb button2_cb, Evas_Smart_Cb dismiss_popup_cb, void* data)
+{
+ /* Create the popup */
+ Evas_Object *popup = elm_popup_add(parent);
+ elm_popup_align_set(popup, ELM_NOTIFY_ALIGN_FILL, 1.0);
+ evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+
+ /* Add title and text to popup */
+ elm_object_part_text_set(popup, "title,text", popup_title);
+ elm_object_text_set(popup, popup_text);
+
+ /* Add "OK" and "Cancel" buttons to popup */
+ add_button_to_popup(popup, data, button1_label, "button1", button1_cb);
+ add_button_to_popup(popup, data, button2_label, "button2", button2_cb);
+
+ /* Add callback to popup dismiss popup when user press the hardware back key */
+ eext_object_event_callback_add(popup, EEXT_CALLBACK_BACK, dismiss_popup_cb, data);
+
+ /* Display popup */
+ evas_object_show(popup);
+
+ return popup;
+}
diff --git a/common/src/common_utils.c b/common/src/common_utils.c
index 9acd88f..bacb394 100644
--- a/common/src/common_utils.c
+++ b/common/src/common_utils.c
@@ -13,11 +13,11 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-/*
+/**
* @file common_utils.c
- * @author Yunjin Lee (yunjin-.lee@samsung.com)
- * @version 1.0
- * @brief
+ * @author Yunjin Lee (yunjin-.lee@samsung.com)
+ * @version 1.0
+ * @brief Miscelleneous utility functions for the privacy-setting interface
*/
#include <efl_extension.h>
@@ -55,3 +55,119 @@ Evas_Object *common_back_btn_add(struct app_data_s *ad)
return btn;
}
+
+/**
+ * @brief Adds a button to a naviframe
+ * @param[in] nf The naviframe to which the button will be added
+ * @param[in] nf_it The naviframe part in which the button will be displayed
+ * @param[in] left_side If true, button will be diplayed on the screen's left. If false, button will be displayed on the screen's right
+ * @param[in] text The text to be displayed on the button
+ * @param[in] btn_clicked_cb The callback to be called when the button is pressed
+ * @param[in] data The data to be passed to the callback
+ * @return a pointer to the added button
+ */
+Evas_Object *common_naviframe_btn_add(
+ 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;
+}
+
+Evas_Object *common_create_check(Evas_Object *parent)
+{
+ Evas_Object *check;
+ check = elm_check_add(parent);
+ elm_check_state_set(check, EINA_FALSE);
+ return check;
+}
+
+static void _dismissed_toast_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ evas_object_del(obj);
+}
+
+void show_toast_notification(const char *text, Evas_Object *obj)
+{
+ Evas_Object *toast = elm_popup_add(obj);
+ elm_object_style_set(toast, "toast");
+ evas_object_size_hint_weight_set(toast, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ eext_object_event_callback_add(toast, EEXT_CALLBACK_BACK, eext_popup_back_cb, NULL);
+
+ elm_object_text_set(toast, text);
+
+ evas_object_smart_callback_add(toast, "block,clicked", _dismissed_toast_cb, obj);
+ elm_popup_timeout_set(toast, 2.0);
+ evas_object_smart_callback_add(toast, "timeout", _dismissed_toast_cb, 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)
+{
+ 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)
+{
+ 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;
+}
+
+gint _compare_pattern_id_cb(gconstpointer lhs, gconstpointer rhs)
+{
+ const int lhs_int = GPOINTER_TO_INT(lhs);
+ const int rhs_int = GPOINTER_TO_INT(rhs);
+ if (lhs_int < rhs_int)
+ return -1;
+ else if (lhs_int == rhs_int)
+ return 0;
+ else
+ 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;
+}
diff --git a/po/ar.po b/po/ar.po
index 07207eb..6614faa 100755
--- a/po/ar.po
+++ b/po/ar.po
@@ -31,3 +31,272 @@ msgstr "للمرة %d"
msgid "IDS_ST_HEADER_PRIVACY_AND_SECURITY_ABB"
msgstr "الخصوصية والحماية"
+msgid "IDS_ST_HEADER_DATA_LEAK_MONITOR_SWA"
+msgstr "Data leak monitor"
+
+msgid "IDS_ST_MBODY_DATA_LEAK_MONITOR_SWA"
+msgstr "Data leak monitor"
+
+msgid "IDS_ST_SBODY_PREVENT_APPS_FROM_LEAKING_YOUR_SENSITIVE_DATA_WITHOUT_AUTHORISATION_SWA"
+msgstr "Prevent apps from leaking your sensitive data without authorisation."
+
+msgid "IDS_ST_SBODY_TO_ALLOW_THIS_FUNCTION_TO_MONITOR_YOUR_PERSONAL_INFORMATION_YOU_NEED_TO_SET_UP_YOUR_PROFILE_IN_CONTACTS_SWA"
+msgstr "To allow this function to monitor your personal information, you need to set up your profile in Contacts."
+
+msgid "IDS_ST_MBODY_PROTECTION_MODE_SWA"
+msgstr "Protection mode"
+
+msgid "IDS_ST_MBODY_BASIC_M_MODE_SWA"
+msgstr "Basic"
+
+msgid "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"
+msgstr "Monitor your main sensitive data to prevent it from being leaked by most apps. This mode is suitable for regular users."
+
+msgid "IDS_ST_MBODY_ADVANCED_M_MODE_SWA"
+msgstr "Advanced"
+
+msgid "IDS_ST_SBODY_SET_UP_STRICT_RULES_TO_PREVENT_DATA_LEAKAGE_SWA"
+msgstr "Set up strict rules to prevent data leakage."
+
+msgid "IDS_ST_SBODY_THIS_MODE_WILL_AFFECT_APP_PERFORMANCE_SWA"
+msgstr "This mode will affect app performance."
+
+msgid "IDS_ST_POP_SOME_APPS_MAY_BE_BLOCKED_SWA"
+msgstr "Some apps may be blocked."
+
+msgid "IDS_ST_HEADER_TURN_ON_ADVANCED_PROTECTION_MODE_SWA"
+msgstr "Turn on Advanced protection mode"
+
+msgid "IDS_ST_MBODY_CUSTOM_M_MODE_SWA"
+msgstr "Custom"
+
+msgid "IDS_ST_SBODY_CHANGE_DEFAULT_RULES_AND_PATTERNS_AND_CREATE_YOUR_OWN_TO_SET_UP_A_CUSTOMISED_PROTECTION_MODE_SWA"
+msgstr "Change default rules and patterns and create your own to set up a customised protection mode."
+
+msgid "IDS_ST_HEADER_REPORTS_SWA"
+msgstr "Reports"
+
+msgid "IDS_ST_MBODY_FULL_REPORTS_SWA"
+msgstr "Full reports"
+
+msgid "IDS_ST_MBODY_APP_RANKINGS_SWA"
+msgstr "App rankings"
+
+msgid "IDS_ST_MBODY_DATA_STATISTICS_SWA"
+msgstr "Data statistics"
+
+msgid "IDS_ST_MBODY_RULES_AND_PATTERNS_SWA"
+msgstr "Rules and patterns"
+
+msgid "IDS_ST_NPBODY_NO_REPORTS_SWA"
+msgstr "No reports"
+
+msgid "IDS_ST_HEADER_SETTINGS_SWA"
+msgstr "Settings"
+
+msgid "IDS_ST_MBODY_KEEP_LOGS_SWA"
+msgstr "Keep logs"
+
+msgid "IDS_LOGS_CLEANED"
+msgstr "Logs cleaned"
+
+msgid "IDS_LOGS_CLEANED_FAILED"
+msgstr "Failed to clean logs"
+
+msgid "IDS_ST_OPT_1_WEEK_SWA"
+msgstr "1 week"
+
+msgid "IDS_ST_OPT_1_DAY_SWA"
+msgstr "1 day"
+
+msgid "IDS_ST_OPT_1_MONTH_SWA"
+msgstr "1 month"
+
+msgid "IDS_ST_HEADER_REPORT_DETAILS_SWA"
+msgstr "Report details"
+
+msgid "IDS_ST_BODY_CATEGORY_C_SWA"
+msgstr "Category:"
+
+msgid "IDS_ST_BODY_APP_C_SWA"
+msgstr "App:"
+
+msgid "IDS_ST_BODY_DESTINATION_C_SWA"
+msgstr "Destination:"
+
+msgid "IDS_ST_BODY_PATTERN_C_SWA"
+msgstr "Pattern:"
+
+msgid "IDS_ST_BODY_DLP_ACTION"
+msgstr "Action"
+
+msgid "IDS_ST_BODY_PACKET_C_SWA"
+msgstr "Packet:"
+
+msgid "IDS_ST_BODY_DLP_ACTION_ALLOW"
+msgstr "Allow"
+
+msgid "IDS_ST_BODY_DLP_ACTION_DENY"
+msgstr "Deny"
+
+msgid "IDS_ST_BODY_DLP_ACTION_SANITIZE"
+msgstr "Sanitize"
+
+msgid "IDS_ST_BODY_DLP_ACTION_ALL_RULES"
+msgstr "All Rules"
+
+msgid "IDS_ST_OPT_QUICK_M_PROTECTION_MODE_SWA"
+msgstr "Quick"
+
+msgid "IDS_ST_SBODY_CREATE_RULES_QUICKLY_AND_EASILY_SWA"
+msgstr "Create rules quickly and easily."
+
+msgid "IDS_ST_MBODY_CUSTOM_SWA"
+msgstr "Custom"
+
+msgid "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"
+msgstr "Create rules from scratch to give you full control of your data protection. Use this option to create non-standard rules."
+
+msgid "IDS_ST_HEADER_CUSTOM_PROTECTION_MODE_SWA"
+msgstr "Custom protection mode"
+
+msgid "IDS_ST_TAB_RULES_SWA"
+msgstr "Rules"
+
+msgid "IDS_ST_TAB_PATTERNS_SWA"
+msgstr "Patterns"
+
+msgid "IDS_ST_HEADER_SELECT_TEMPLATE_SWA"
+msgstr "Select template"
+
+msgid "IDS_ST_HEADER_SELECT_APPS_SWA"
+msgstr "Select apps"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_CHOOSE_ACTION"
+msgstr "Select Action"
+
+msgid "IDS_ST_ACBUTTON_NEXT_SWA"
+msgstr "NEXT"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_OK"
+msgstr "OK"
+
+msgid "IDS_ST_ACBUTTON_DONE_SWA"
+msgstr "DONE"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_RULE_CREATED_MESSAGE"
+msgstr "Rule created."
+
+msgid "IDS_ST_TPOP_RULE_DELETED_SWA"
+msgstr "Rule deleted."
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_DELETE_RULE_POPUP_TITLE"
+msgstr "Delete Rule"
+
+msgid "IDS_ST_HEADER_DELETE_PATTERNS_SWA"
+msgstr "Delete patterns"
+
+msgid "IDS_ST_POP_THIS_RULE_WILL_BE_DELETED_ABB_SWA"
+msgstr "This rule will be deleted."
+
+msgid "IDS_ST_HEADER_CREATE_PATTERN_SWA"
+msgstr "Create pattern"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_PATTERN"
+msgstr "Custom"
+
+msgid "IDS_ST_TPOP_PD_PATTERNS_DELETED_SWA"
+msgstr "%d patterns deleted."
+
+msgid "IDS_ST_OPT_EDIT_SWA"
+msgstr "Edit"
+
+msgid "IDS_ST_OPT_CREATE_SWA"
+msgstr "Create"
+
+msgid "IDS_ST_OPT_ALL_PATTERNS_SWA"
+msgstr "All patterns"
+
+msgid "IDS_ST_BODY_NAME_SWA"
+msgstr "Name"
+
+msgid "IDS_ST_BODY_DESCRIPTION_SWA"
+msgstr "Description"
+
+msgid "IDS_ST_BODY_CATEGORY_SWA"
+msgstr "Category"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CATEGORY_NAME"
+msgstr "Category name"
+
+msgid "IDS_ST_OPT_STRING_MATCH_SWA"
+msgstr "String match"
+
+msgid "IDS_ST_OPT_REGULAR_EXPRESSION_SWA"
+msgstr "Regular expression"
+
+msgid "IDS_ST_POP_PD_PATTERNS_WILL_BE_DELETED_ABB_SWA"
+msgstr "%d patterns will be deleted."
+
+msgid "IDS_ST_POP_THIS_REPORT_WILL_BE_DELETED_ABB_SWA"
+msgstr "This report will be deleted."
+
+msgid "IDS_ST_OPT_DELETE_SWA"
+msgstr "Delete"
+
+msgid "IDS_ST_HEADER_DELETE_REPORT_SWA"
+msgstr "Delete report"
+
+msgid "IDS_ST_POP_PD_REPORTS_WILL_BE_DELETED_ABB_SWA"
+msgstr "%d reports will be deleted."
+
+msgid "IDS_ST_TPOP_1_REPORT_DELETED_SWA"
+msgstr "1 report deleted."
+
+msgid "IDS_ST_MBODY_SELECT_ALL_SWA"
+msgstr "Select all"
+
+msgid "IDS_ST_ACBUTTON_DELETE_SWA"
+msgstr "DELETE"
+
+msgid "IDS_ST_ACBUTTON_CANCEL_SWA"
+msgstr "CANCEL"
+
+msgid "IDS_ST_TPOP_PD_REPORTS_DELETED_SWA"
+msgstr "%d reports deleted."
+
+msgid "IDS_ST_HEADER_SELECT_ITEMS_SWA"
+msgstr "Select items"
+
+msgid "IDS_ST_HEADER_PD_SELECTED_SWA"
+msgstr "%d selected"
+
+msgid "IDS_ST_TPOP_BASIC_PROTECTION_MODE_TURNED_ON_SWA"
+msgstr "Basic protection mode turned on."
+
+msgid "IDS_ST_TPOP_RULE_CREATED_SWA"
+msgstr "Rule created. Custom protection mode turned on."
+
+msgid "IDS_ST_TPOP_ADVANCED_PROTECTION_MODE_TURNED_ON_SWA"
+msgstr "Advanced protection mode turned on."
+
+msgid "IDS_ST_HEADER_DETAILS_SWA"
+msgstr "Details"
+
+msgid "IDS_ST_BODY_STRING_TYPE_SWA"
+msgstr "String type"
+
+msgid "IDS_ST_BODY_SEARCH_TERM_SWA"
+msgstr "Search term"
+
+msgid "IDS_ST_BODY_LEAKS_CAPTURED_SWA"
+msgstr "Leaks captured"
+
+msgid "IDS_ST_SBODY_TOTAL_LEAKS_SWA"
+msgstr "Total leaks"
+
+msgid "IDS_ST_HEADER_RULE_DETAILS_SWA"
+msgstr "Rule details"
+
+msgid "IDS_ST_HEADER_PATTERN_DETAILS_SWA"
+msgstr "Pattern details"
diff --git a/po/az.po b/po/az.po
index 01dfd3a..60f5d42 100755
--- a/po/az.po
+++ b/po/az.po
@@ -31,3 +31,272 @@ msgstr "%d dəfə"
msgid "IDS_ST_HEADER_PRIVACY_AND_SECURITY_ABB"
msgstr "Məxfilik və təhlükəs"
+msgid "IDS_ST_HEADER_DATA_LEAK_MONITOR_SWA"
+msgstr "Data leak monitor"
+
+msgid "IDS_ST_MBODY_DATA_LEAK_MONITOR_SWA"
+msgstr "Data leak monitor"
+
+msgid "IDS_ST_SBODY_PREVENT_APPS_FROM_LEAKING_YOUR_SENSITIVE_DATA_WITHOUT_AUTHORISATION_SWA"
+msgstr "Prevent apps from leaking your sensitive data without authorisation."
+
+msgid "IDS_ST_SBODY_TO_ALLOW_THIS_FUNCTION_TO_MONITOR_YOUR_PERSONAL_INFORMATION_YOU_NEED_TO_SET_UP_YOUR_PROFILE_IN_CONTACTS_SWA"
+msgstr "To allow this function to monitor your personal information, you need to set up your profile in Contacts."
+
+msgid "IDS_ST_MBODY_PROTECTION_MODE_SWA"
+msgstr "Protection mode"
+
+msgid "IDS_ST_MBODY_BASIC_M_MODE_SWA"
+msgstr "Basic"
+
+msgid "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"
+msgstr "Monitor your main sensitive data to prevent it from being leaked by most apps. This mode is suitable for regular users."
+
+msgid "IDS_ST_MBODY_ADVANCED_M_MODE_SWA"
+msgstr "Advanced"
+
+msgid "IDS_ST_SBODY_SET_UP_STRICT_RULES_TO_PREVENT_DATA_LEAKAGE_SWA"
+msgstr "Set up strict rules to prevent data leakage."
+
+msgid "IDS_ST_SBODY_THIS_MODE_WILL_AFFECT_APP_PERFORMANCE_SWA"
+msgstr "This mode will affect app performance."
+
+msgid "IDS_ST_POP_SOME_APPS_MAY_BE_BLOCKED_SWA"
+msgstr "Some apps may be blocked."
+
+msgid "IDS_ST_HEADER_TURN_ON_ADVANCED_PROTECTION_MODE_SWA"
+msgstr "Turn on Advanced protection mode"
+
+msgid "IDS_ST_MBODY_CUSTOM_M_MODE_SWA"
+msgstr "Custom"
+
+msgid "IDS_ST_SBODY_CHANGE_DEFAULT_RULES_AND_PATTERNS_AND_CREATE_YOUR_OWN_TO_SET_UP_A_CUSTOMISED_PROTECTION_MODE_SWA"
+msgstr "Change default rules and patterns and create your own to set up a customised protection mode."
+
+msgid "IDS_ST_HEADER_REPORTS_SWA"
+msgstr "Reports"
+
+msgid "IDS_ST_MBODY_FULL_REPORTS_SWA"
+msgstr "Full reports"
+
+msgid "IDS_ST_MBODY_APP_RANKINGS_SWA"
+msgstr "App rankings"
+
+msgid "IDS_ST_MBODY_DATA_STATISTICS_SWA"
+msgstr "Data statistics"
+
+msgid "IDS_ST_MBODY_RULES_AND_PATTERNS_SWA"
+msgstr "Rules and patterns"
+
+msgid "IDS_ST_NPBODY_NO_REPORTS_SWA"
+msgstr "No reports"
+
+msgid "IDS_ST_HEADER_SETTINGS_SWA"
+msgstr "Settings"
+
+msgid "IDS_ST_MBODY_KEEP_LOGS_SWA"
+msgstr "Keep logs"
+
+msgid "IDS_LOGS_CLEANED"
+msgstr "Logs cleaned"
+
+msgid "IDS_LOGS_CLEANED_FAILED"
+msgstr "Failed to clean logs"
+
+msgid "IDS_ST_OPT_1_WEEK_SWA"
+msgstr "1 week"
+
+msgid "IDS_ST_OPT_1_DAY_SWA"
+msgstr "1 day"
+
+msgid "IDS_ST_OPT_1_MONTH_SWA"
+msgstr "1 month"
+
+msgid "IDS_ST_HEADER_REPORT_DETAILS_SWA"
+msgstr "Report details"
+
+msgid "IDS_ST_BODY_CATEGORY_C_SWA"
+msgstr "Category:"
+
+msgid "IDS_ST_BODY_APP_C_SWA"
+msgstr "App:"
+
+msgid "IDS_ST_BODY_DESTINATION_C_SWA"
+msgstr "Destination:"
+
+msgid "IDS_ST_BODY_PATTERN_C_SWA"
+msgstr "Pattern:"
+
+msgid "IDS_ST_BODY_DLP_ACTION"
+msgstr "Action"
+
+msgid "IDS_ST_BODY_PACKET_C_SWA"
+msgstr "Packet:"
+
+msgid "IDS_ST_BODY_DLP_ACTION_ALLOW"
+msgstr "Allow"
+
+msgid "IDS_ST_BODY_DLP_ACTION_DENY"
+msgstr "Deny"
+
+msgid "IDS_ST_BODY_DLP_ACTION_SANITIZE"
+msgstr "Sanitize"
+
+msgid "IDS_ST_BODY_DLP_ACTION_ALL_RULES"
+msgstr "All Rules"
+
+msgid "IDS_ST_OPT_QUICK_M_PROTECTION_MODE_SWA"
+msgstr "Quick"
+
+msgid "IDS_ST_SBODY_CREATE_RULES_QUICKLY_AND_EASILY_SWA"
+msgstr "Create rules quickly and easily."
+
+msgid "IDS_ST_MBODY_CUSTOM_SWA"
+msgstr "Custom"
+
+msgid "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"
+msgstr "Create rules from scratch to give you full control of your data protection. Use this option to create non-standard rules."
+
+msgid "IDS_ST_HEADER_CUSTOM_PROTECTION_MODE_SWA"
+msgstr "Custom protection mode"
+
+msgid "IDS_ST_TAB_RULES_SWA"
+msgstr "Rules"
+
+msgid "IDS_ST_TAB_PATTERNS_SWA"
+msgstr "Patterns"
+
+msgid "IDS_ST_HEADER_SELECT_TEMPLATE_SWA"
+msgstr "Select template"
+
+msgid "IDS_ST_HEADER_SELECT_APPS_SWA"
+msgstr "Select apps"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_CHOOSE_ACTION"
+msgstr "Select Action"
+
+msgid "IDS_ST_ACBUTTON_NEXT_SWA"
+msgstr "NEXT"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_OK"
+msgstr "OK"
+
+msgid "IDS_ST_ACBUTTON_DONE_SWA"
+msgstr "DONE"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_RULE_CREATED_MESSAGE"
+msgstr "Rule created."
+
+msgid "IDS_ST_TPOP_RULE_DELETED_SWA"
+msgstr "Rule deleted."
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_DELETE_RULE_POPUP_TITLE"
+msgstr "Delete Rule"
+
+msgid "IDS_ST_HEADER_DELETE_PATTERNS_SWA"
+msgstr "Delete patterns"
+
+msgid "IDS_ST_POP_THIS_RULE_WILL_BE_DELETED_ABB_SWA"
+msgstr "This rule will be deleted."
+
+msgid "IDS_ST_HEADER_CREATE_PATTERN_SWA"
+msgstr "Create pattern"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_PATTERN"
+msgstr "Custom"
+
+msgid "IDS_ST_TPOP_PD_PATTERNS_DELETED_SWA"
+msgstr "%d patterns deleted."
+
+msgid "IDS_ST_OPT_EDIT_SWA"
+msgstr "Edit"
+
+msgid "IDS_ST_OPT_CREATE_SWA"
+msgstr "Create"
+
+msgid "IDS_ST_OPT_ALL_PATTERNS_SWA"
+msgstr "All patterns"
+
+msgid "IDS_ST_BODY_NAME_SWA"
+msgstr "Name"
+
+msgid "IDS_ST_BODY_DESCRIPTION_SWA"
+msgstr "Description"
+
+msgid "IDS_ST_BODY_CATEGORY_SWA"
+msgstr "Category"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CATEGORY_NAME"
+msgstr "Category name"
+
+msgid "IDS_ST_OPT_STRING_MATCH_SWA"
+msgstr "String match"
+
+msgid "IDS_ST_OPT_REGULAR_EXPRESSION_SWA"
+msgstr "Regular expression"
+
+msgid "IDS_ST_POP_PD_PATTERNS_WILL_BE_DELETED_ABB_SWA"
+msgstr "%d patterns will be deleted."
+
+msgid "IDS_ST_POP_THIS_REPORT_WILL_BE_DELETED_ABB_SWA"
+msgstr "This report will be deleted."
+
+msgid "IDS_ST_OPT_DELETE_SWA"
+msgstr "Delete"
+
+msgid "IDS_ST_HEADER_DELETE_REPORT_SWA"
+msgstr "Delete report"
+
+msgid "IDS_ST_POP_PD_REPORTS_WILL_BE_DELETED_ABB_SWA"
+msgstr "%d reports will be deleted."
+
+msgid "IDS_ST_TPOP_1_REPORT_DELETED_SWA"
+msgstr "1 report deleted."
+
+msgid "IDS_ST_MBODY_SELECT_ALL_SWA"
+msgstr "Select all"
+
+msgid "IDS_ST_ACBUTTON_DELETE_SWA"
+msgstr "DELETE"
+
+msgid "IDS_ST_ACBUTTON_CANCEL_SWA"
+msgstr "CANCEL"
+
+msgid "IDS_ST_TPOP_PD_REPORTS_DELETED_SWA"
+msgstr "%d reports deleted."
+
+msgid "IDS_ST_HEADER_SELECT_ITEMS_SWA"
+msgstr "Select items"
+
+msgid "IDS_ST_HEADER_PD_SELECTED_SWA"
+msgstr "%d selected"
+
+msgid "IDS_ST_TPOP_BASIC_PROTECTION_MODE_TURNED_ON_SWA"
+msgstr "Basic protection mode turned on."
+
+msgid "IDS_ST_TPOP_RULE_CREATED_SWA"
+msgstr "Rule created. Custom protection mode turned on."
+
+msgid "IDS_ST_TPOP_ADVANCED_PROTECTION_MODE_TURNED_ON_SWA"
+msgstr "Advanced protection mode turned on."
+
+msgid "IDS_ST_HEADER_DETAILS_SWA"
+msgstr "Details"
+
+msgid "IDS_ST_BODY_STRING_TYPE_SWA"
+msgstr "String type"
+
+msgid "IDS_ST_BODY_SEARCH_TERM_SWA"
+msgstr "Search term"
+
+msgid "IDS_ST_BODY_LEAKS_CAPTURED_SWA"
+msgstr "Leaks captured"
+
+msgid "IDS_ST_SBODY_TOTAL_LEAKS_SWA"
+msgstr "Total leaks"
+
+msgid "IDS_ST_HEADER_RULE_DETAILS_SWA"
+msgstr "Rule details"
+
+msgid "IDS_ST_HEADER_PATTERN_DETAILS_SWA"
+msgstr "Pattern details"
diff --git a/po/bg.po b/po/bg.po
index 8bb19cc..c091afe 100755
--- a/po/bg.po
+++ b/po/bg.po
@@ -31,3 +31,272 @@ msgstr "%d пъти"
msgid "IDS_ST_HEADER_PRIVACY_AND_SECURITY_ABB"
msgstr "Поверителност и защита"
+msgid "IDS_ST_HEADER_DATA_LEAK_MONITOR_SWA"
+msgstr "Data leak monitor"
+
+msgid "IDS_ST_MBODY_DATA_LEAK_MONITOR_SWA"
+msgstr "Data leak monitor"
+
+msgid "IDS_ST_SBODY_PREVENT_APPS_FROM_LEAKING_YOUR_SENSITIVE_DATA_WITHOUT_AUTHORISATION_SWA"
+msgstr "Prevent apps from leaking your sensitive data without authorisation."
+
+msgid "IDS_ST_SBODY_TO_ALLOW_THIS_FUNCTION_TO_MONITOR_YOUR_PERSONAL_INFORMATION_YOU_NEED_TO_SET_UP_YOUR_PROFILE_IN_CONTACTS_SWA"
+msgstr "To allow this function to monitor your personal information, you need to set up your profile in Contacts."
+
+msgid "IDS_ST_MBODY_PROTECTION_MODE_SWA"
+msgstr "Protection mode"
+
+msgid "IDS_ST_MBODY_BASIC_M_MODE_SWA"
+msgstr "Basic"
+
+msgid "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"
+msgstr "Monitor your main sensitive data to prevent it from being leaked by most apps. This mode is suitable for regular users."
+
+msgid "IDS_ST_MBODY_ADVANCED_M_MODE_SWA"
+msgstr "Advanced"
+
+msgid "IDS_ST_SBODY_SET_UP_STRICT_RULES_TO_PREVENT_DATA_LEAKAGE_SWA"
+msgstr "Set up strict rules to prevent data leakage."
+
+msgid "IDS_ST_SBODY_THIS_MODE_WILL_AFFECT_APP_PERFORMANCE_SWA"
+msgstr "This mode will affect app performance."
+
+msgid "IDS_ST_POP_SOME_APPS_MAY_BE_BLOCKED_SWA"
+msgstr "Some apps may be blocked."
+
+msgid "IDS_ST_HEADER_TURN_ON_ADVANCED_PROTECTION_MODE_SWA"
+msgstr "Turn on Advanced protection mode"
+
+msgid "IDS_ST_MBODY_CUSTOM_M_MODE_SWA"
+msgstr "Custom"
+
+msgid "IDS_ST_SBODY_CHANGE_DEFAULT_RULES_AND_PATTERNS_AND_CREATE_YOUR_OWN_TO_SET_UP_A_CUSTOMISED_PROTECTION_MODE_SWA"
+msgstr "Change default rules and patterns and create your own to set up a customised protection mode."
+
+msgid "IDS_ST_HEADER_REPORTS_SWA"
+msgstr "Reports"
+
+msgid "IDS_ST_MBODY_FULL_REPORTS_SWA"
+msgstr "Full reports"
+
+msgid "IDS_ST_MBODY_APP_RANKINGS_SWA"
+msgstr "App rankings"
+
+msgid "IDS_ST_MBODY_DATA_STATISTICS_SWA"
+msgstr "Data statistics"
+
+msgid "IDS_ST_MBODY_RULES_AND_PATTERNS_SWA"
+msgstr "Rules and patterns"
+
+msgid "IDS_ST_NPBODY_NO_REPORTS_SWA"
+msgstr "No reports"
+
+msgid "IDS_ST_HEADER_SETTINGS_SWA"
+msgstr "Settings"
+
+msgid "IDS_ST_MBODY_KEEP_LOGS_SWA"
+msgstr "Keep logs"
+
+msgid "IDS_LOGS_CLEANED"
+msgstr "Logs cleaned"
+
+msgid "IDS_LOGS_CLEANED_FAILED"
+msgstr "Failed to clean logs"
+
+msgid "IDS_ST_OPT_1_WEEK_SWA"
+msgstr "1 week"
+
+msgid "IDS_ST_OPT_1_DAY_SWA"
+msgstr "1 day"
+
+msgid "IDS_ST_OPT_1_MONTH_SWA"
+msgstr "1 month"
+
+msgid "IDS_ST_HEADER_REPORT_DETAILS_SWA"
+msgstr "Report details"
+
+msgid "IDS_ST_BODY_CATEGORY_C_SWA"
+msgstr "Category:"
+
+msgid "IDS_ST_BODY_APP_C_SWA"
+msgstr "App:"
+
+msgid "IDS_ST_BODY_DESTINATION_C_SWA"
+msgstr "Destination:"
+
+msgid "IDS_ST_BODY_PATTERN_C_SWA"
+msgstr "Pattern:"
+
+msgid "IDS_ST_BODY_DLP_ACTION"
+msgstr "Action"
+
+msgid "IDS_ST_BODY_PACKET_C_SWA"
+msgstr "Packet:"
+
+msgid "IDS_ST_BODY_DLP_ACTION_ALLOW"
+msgstr "Allow"
+
+msgid "IDS_ST_BODY_DLP_ACTION_DENY"
+msgstr "Deny"
+
+msgid "IDS_ST_BODY_DLP_ACTION_SANITIZE"
+msgstr "Sanitize"
+
+msgid "IDS_ST_BODY_DLP_ACTION_ALL_RULES"
+msgstr "All Rules"
+
+msgid "IDS_ST_OPT_QUICK_M_PROTECTION_MODE_SWA"
+msgstr "Quick"
+
+msgid "IDS_ST_SBODY_CREATE_RULES_QUICKLY_AND_EASILY_SWA"
+msgstr "Create rules quickly and easily."
+
+msgid "IDS_ST_MBODY_CUSTOM_SWA"
+msgstr "Custom"
+
+msgid "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"
+msgstr "Create rules from scratch to give you full control of your data protection. Use this option to create non-standard rules."
+
+msgid "IDS_ST_HEADER_CUSTOM_PROTECTION_MODE_SWA"
+msgstr "Custom protection mode"
+
+msgid "IDS_ST_TAB_RULES_SWA"
+msgstr "Rules"
+
+msgid "IDS_ST_TAB_PATTERNS_SWA"
+msgstr "Patterns"
+
+msgid "IDS_ST_HEADER_SELECT_TEMPLATE_SWA"
+msgstr "Select template"
+
+msgid "IDS_ST_HEADER_SELECT_APPS_SWA"
+msgstr "Select apps"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_CHOOSE_ACTION"
+msgstr "Select Action"
+
+msgid "IDS_ST_ACBUTTON_NEXT_SWA"
+msgstr "NEXT"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_OK"
+msgstr "OK"
+
+msgid "IDS_ST_ACBUTTON_DONE_SWA"
+msgstr "DONE"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_RULE_CREATED_MESSAGE"
+msgstr "Rule created."
+
+msgid "IDS_ST_TPOP_RULE_DELETED_SWA"
+msgstr "Rule deleted."
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_DELETE_RULE_POPUP_TITLE"
+msgstr "Delete Rule"
+
+msgid "IDS_ST_HEADER_DELETE_PATTERNS_SWA"
+msgstr "Delete patterns"
+
+msgid "IDS_ST_POP_THIS_RULE_WILL_BE_DELETED_ABB_SWA"
+msgstr "This rule will be deleted."
+
+msgid "IDS_ST_HEADER_CREATE_PATTERN_SWA"
+msgstr "Create pattern"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_PATTERN"
+msgstr "Custom"
+
+msgid "IDS_ST_TPOP_PD_PATTERNS_DELETED_SWA"
+msgstr "%d patterns deleted."
+
+msgid "IDS_ST_OPT_EDIT_SWA"
+msgstr "Edit"
+
+msgid "IDS_ST_OPT_CREATE_SWA"
+msgstr "Create"
+
+msgid "IDS_ST_OPT_ALL_PATTERNS_SWA"
+msgstr "All patterns"
+
+msgid "IDS_ST_BODY_NAME_SWA"
+msgstr "Name"
+
+msgid "IDS_ST_BODY_DESCRIPTION_SWA"
+msgstr "Description"
+
+msgid "IDS_ST_BODY_CATEGORY_SWA"
+msgstr "Category"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CATEGORY_NAME"
+msgstr "Category name"
+
+msgid "IDS_ST_OPT_STRING_MATCH_SWA"
+msgstr "String match"
+
+msgid "IDS_ST_OPT_REGULAR_EXPRESSION_SWA"
+msgstr "Regular expression"
+
+msgid "IDS_ST_POP_PD_PATTERNS_WILL_BE_DELETED_ABB_SWA"
+msgstr "%d patterns will be deleted."
+
+msgid "IDS_ST_POP_THIS_REPORT_WILL_BE_DELETED_ABB_SWA"
+msgstr "This report will be deleted."
+
+msgid "IDS_ST_OPT_DELETE_SWA"
+msgstr "Delete"
+
+msgid "IDS_ST_HEADER_DELETE_REPORT_SWA"
+msgstr "Delete report"
+
+msgid "IDS_ST_POP_PD_REPORTS_WILL_BE_DELETED_ABB_SWA"
+msgstr "%d reports will be deleted."
+
+msgid "IDS_ST_TPOP_1_REPORT_DELETED_SWA"
+msgstr "1 report deleted."
+
+msgid "IDS_ST_MBODY_SELECT_ALL_SWA"
+msgstr "Select all"
+
+msgid "IDS_ST_ACBUTTON_DELETE_SWA"
+msgstr "DELETE"
+
+msgid "IDS_ST_ACBUTTON_CANCEL_SWA"
+msgstr "CANCEL"
+
+msgid "IDS_ST_TPOP_PD_REPORTS_DELETED_SWA"
+msgstr "%d reports deleted."
+
+msgid "IDS_ST_HEADER_SELECT_ITEMS_SWA"
+msgstr "Select items"
+
+msgid "IDS_ST_HEADER_PD_SELECTED_SWA"
+msgstr "%d selected"
+
+msgid "IDS_ST_TPOP_BASIC_PROTECTION_MODE_TURNED_ON_SWA"
+msgstr "Basic protection mode turned on."
+
+msgid "IDS_ST_TPOP_RULE_CREATED_SWA"
+msgstr "Rule created. Custom protection mode turned on."
+
+msgid "IDS_ST_TPOP_ADVANCED_PROTECTION_MODE_TURNED_ON_SWA"
+msgstr "Advanced protection mode turned on."
+
+msgid "IDS_ST_HEADER_DETAILS_SWA"
+msgstr "Details"
+
+msgid "IDS_ST_BODY_STRING_TYPE_SWA"
+msgstr "String type"
+
+msgid "IDS_ST_BODY_SEARCH_TERM_SWA"
+msgstr "Search term"
+
+msgid "IDS_ST_BODY_LEAKS_CAPTURED_SWA"
+msgstr "Leaks captured"
+
+msgid "IDS_ST_SBODY_TOTAL_LEAKS_SWA"
+msgstr "Total leaks"
+
+msgid "IDS_ST_HEADER_RULE_DETAILS_SWA"
+msgstr "Rule details"
+
+msgid "IDS_ST_HEADER_PATTERN_DETAILS_SWA"
+msgstr "Pattern details"
diff --git a/po/ca.po b/po/ca.po
index fdf2ef1..8a1eec2 100755
--- a/po/ca.po
+++ b/po/ca.po
@@ -31,3 +31,272 @@ msgstr "%d vegades"
msgid "IDS_ST_HEADER_PRIVACY_AND_SECURITY_ABB"
msgstr "Privadesa i seguretat"
+msgid "IDS_ST_HEADER_DATA_LEAK_MONITOR_SWA"
+msgstr "Data leak monitor"
+
+msgid "IDS_ST_MBODY_DATA_LEAK_MONITOR_SWA"
+msgstr "Data leak monitor"
+
+msgid "IDS_ST_SBODY_PREVENT_APPS_FROM_LEAKING_YOUR_SENSITIVE_DATA_WITHOUT_AUTHORISATION_SWA"
+msgstr "Prevent apps from leaking your sensitive data without authorisation."
+
+msgid "IDS_ST_SBODY_TO_ALLOW_THIS_FUNCTION_TO_MONITOR_YOUR_PERSONAL_INFORMATION_YOU_NEED_TO_SET_UP_YOUR_PROFILE_IN_CONTACTS_SWA"
+msgstr "To allow this function to monitor your personal information, you need to set up your profile in Contacts."
+
+msgid "IDS_ST_MBODY_PROTECTION_MODE_SWA"
+msgstr "Protection mode"
+
+msgid "IDS_ST_MBODY_BASIC_M_MODE_SWA"
+msgstr "Basic"
+
+msgid "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"
+msgstr "Monitor your main sensitive data to prevent it from being leaked by most apps. This mode is suitable for regular users."
+
+msgid "IDS_ST_MBODY_ADVANCED_M_MODE_SWA"
+msgstr "Advanced"
+
+msgid "IDS_ST_SBODY_SET_UP_STRICT_RULES_TO_PREVENT_DATA_LEAKAGE_SWA"
+msgstr "Set up strict rules to prevent data leakage."
+
+msgid "IDS_ST_SBODY_THIS_MODE_WILL_AFFECT_APP_PERFORMANCE_SWA"
+msgstr "This mode will affect app performance."
+
+msgid "IDS_ST_POP_SOME_APPS_MAY_BE_BLOCKED_SWA"
+msgstr "Some apps may be blocked."
+
+msgid "IDS_ST_HEADER_TURN_ON_ADVANCED_PROTECTION_MODE_SWA"
+msgstr "Turn on Advanced protection mode"
+
+msgid "IDS_ST_MBODY_CUSTOM_M_MODE_SWA"
+msgstr "Custom"
+
+msgid "IDS_ST_SBODY_CHANGE_DEFAULT_RULES_AND_PATTERNS_AND_CREATE_YOUR_OWN_TO_SET_UP_A_CUSTOMISED_PROTECTION_MODE_SWA"
+msgstr "Change default rules and patterns and create your own to set up a customised protection mode."
+
+msgid "IDS_ST_HEADER_REPORTS_SWA"
+msgstr "Reports"
+
+msgid "IDS_ST_MBODY_FULL_REPORTS_SWA"
+msgstr "Full reports"
+
+msgid "IDS_ST_MBODY_APP_RANKINGS_SWA"
+msgstr "App rankings"
+
+msgid "IDS_ST_MBODY_DATA_STATISTICS_SWA"
+msgstr "Data statistics"
+
+msgid "IDS_ST_MBODY_RULES_AND_PATTERNS_SWA"
+msgstr "Rules and patterns"
+
+msgid "IDS_ST_NPBODY_NO_REPORTS_SWA"
+msgstr "No reports"
+
+msgid "IDS_ST_HEADER_SETTINGS_SWA"
+msgstr "Settings"
+
+msgid "IDS_ST_MBODY_KEEP_LOGS_SWA"
+msgstr "Keep logs"
+
+msgid "IDS_LOGS_CLEANED"
+msgstr "Logs cleaned"
+
+msgid "IDS_LOGS_CLEANED_FAILED"
+msgstr "Failed to clean logs"
+
+msgid "IDS_ST_OPT_1_WEEK_SWA"
+msgstr "1 week"
+
+msgid "IDS_ST_OPT_1_DAY_SWA"
+msgstr "1 day"
+
+msgid "IDS_ST_OPT_1_MONTH_SWA"
+msgstr "1 month"
+
+msgid "IDS_ST_HEADER_REPORT_DETAILS_SWA"
+msgstr "Report details"
+
+msgid "IDS_ST_BODY_CATEGORY_C_SWA"
+msgstr "Category:"
+
+msgid "IDS_ST_BODY_APP_C_SWA"
+msgstr "App:"
+
+msgid "IDS_ST_BODY_DESTINATION_C_SWA"
+msgstr "Destination:"
+
+msgid "IDS_ST_BODY_PATTERN_C_SWA"
+msgstr "Pattern:"
+
+msgid "IDS_ST_BODY_DLP_ACTION"
+msgstr "Action"
+
+msgid "IDS_ST_BODY_PACKET_C_SWA"
+msgstr "Packet:"
+
+msgid "IDS_ST_BODY_DLP_ACTION_ALLOW"
+msgstr "Allow"
+
+msgid "IDS_ST_BODY_DLP_ACTION_DENY"
+msgstr "Deny"
+
+msgid "IDS_ST_BODY_DLP_ACTION_SANITIZE"
+msgstr "Sanitize"
+
+msgid "IDS_ST_BODY_DLP_ACTION_ALL_RULES"
+msgstr "All Rules"
+
+msgid "IDS_ST_OPT_QUICK_M_PROTECTION_MODE_SWA"
+msgstr "Quick"
+
+msgid "IDS_ST_SBODY_CREATE_RULES_QUICKLY_AND_EASILY_SWA"
+msgstr "Create rules quickly and easily."
+
+msgid "IDS_ST_MBODY_CUSTOM_SWA"
+msgstr "Custom"
+
+msgid "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"
+msgstr "Create rules from scratch to give you full control of your data protection. Use this option to create non-standard rules."
+
+msgid "IDS_ST_HEADER_CUSTOM_PROTECTION_MODE_SWA"
+msgstr "Custom protection mode"
+
+msgid "IDS_ST_TAB_RULES_SWA"
+msgstr "Rules"
+
+msgid "IDS_ST_TAB_PATTERNS_SWA"
+msgstr "Patterns"
+
+msgid "IDS_ST_HEADER_SELECT_TEMPLATE_SWA"
+msgstr "Select template"
+
+msgid "IDS_ST_HEADER_SELECT_APPS_SWA"
+msgstr "Select apps"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_CHOOSE_ACTION"
+msgstr "Select Action"
+
+msgid "IDS_ST_ACBUTTON_NEXT_SWA"
+msgstr "NEXT"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_OK"
+msgstr "OK"
+
+msgid "IDS_ST_ACBUTTON_DONE_SWA"
+msgstr "DONE"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_RULE_CREATED_MESSAGE"
+msgstr "Rule created."
+
+msgid "IDS_ST_TPOP_RULE_DELETED_SWA"
+msgstr "Rule deleted."
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_DELETE_RULE_POPUP_TITLE"
+msgstr "Delete Rule"
+
+msgid "IDS_ST_HEADER_DELETE_PATTERNS_SWA"
+msgstr "Delete patterns"
+
+msgid "IDS_ST_POP_THIS_RULE_WILL_BE_DELETED_ABB_SWA"
+msgstr "This rule will be deleted."
+
+msgid "IDS_ST_HEADER_CREATE_PATTERN_SWA"
+msgstr "Create pattern"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_PATTERN"
+msgstr "Custom"
+
+msgid "IDS_ST_TPOP_PD_PATTERNS_DELETED_SWA"
+msgstr "%d patterns deleted."
+
+msgid "IDS_ST_OPT_EDIT_SWA"
+msgstr "Edit"
+
+msgid "IDS_ST_OPT_CREATE_SWA"
+msgstr "Create"
+
+msgid "IDS_ST_OPT_ALL_PATTERNS_SWA"
+msgstr "All patterns"
+
+msgid "IDS_ST_BODY_NAME_SWA"
+msgstr "Name"
+
+msgid "IDS_ST_BODY_DESCRIPTION_SWA"
+msgstr "Description"
+
+msgid "IDS_ST_BODY_CATEGORY_SWA"
+msgstr "Category"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CATEGORY_NAME"
+msgstr "Category name"
+
+msgid "IDS_ST_OPT_STRING_MATCH_SWA"
+msgstr "String match"
+
+msgid "IDS_ST_OPT_REGULAR_EXPRESSION_SWA"
+msgstr "Regular expression"
+
+msgid "IDS_ST_POP_PD_PATTERNS_WILL_BE_DELETED_ABB_SWA"
+msgstr "%d patterns will be deleted."
+
+msgid "IDS_ST_POP_THIS_REPORT_WILL_BE_DELETED_ABB_SWA"
+msgstr "This report will be deleted."
+
+msgid "IDS_ST_OPT_DELETE_SWA"
+msgstr "Delete"
+
+msgid "IDS_ST_HEADER_DELETE_REPORT_SWA"
+msgstr "Delete report"
+
+msgid "IDS_ST_POP_PD_REPORTS_WILL_BE_DELETED_ABB_SWA"
+msgstr "%d reports will be deleted."
+
+msgid "IDS_ST_TPOP_1_REPORT_DELETED_SWA"
+msgstr "1 report deleted."
+
+msgid "IDS_ST_MBODY_SELECT_ALL_SWA"
+msgstr "Select all"
+
+msgid "IDS_ST_ACBUTTON_DELETE_SWA"
+msgstr "DELETE"
+
+msgid "IDS_ST_ACBUTTON_CANCEL_SWA"
+msgstr "CANCEL"
+
+msgid "IDS_ST_TPOP_PD_REPORTS_DELETED_SWA"
+msgstr "%d reports deleted."
+
+msgid "IDS_ST_HEADER_SELECT_ITEMS_SWA"
+msgstr "Select items"
+
+msgid "IDS_ST_HEADER_PD_SELECTED_SWA"
+msgstr "%d selected"
+
+msgid "IDS_ST_TPOP_BASIC_PROTECTION_MODE_TURNED_ON_SWA"
+msgstr "Basic protection mode turned on."
+
+msgid "IDS_ST_TPOP_RULE_CREATED_SWA"
+msgstr "Rule created. Custom protection mode turned on."
+
+msgid "IDS_ST_TPOP_ADVANCED_PROTECTION_MODE_TURNED_ON_SWA"
+msgstr "Advanced protection mode turned on."
+
+msgid "IDS_ST_HEADER_DETAILS_SWA"
+msgstr "Details"
+
+msgid "IDS_ST_BODY_STRING_TYPE_SWA"
+msgstr "String type"
+
+msgid "IDS_ST_BODY_SEARCH_TERM_SWA"
+msgstr "Search term"
+
+msgid "IDS_ST_BODY_LEAKS_CAPTURED_SWA"
+msgstr "Leaks captured"
+
+msgid "IDS_ST_SBODY_TOTAL_LEAKS_SWA"
+msgstr "Total leaks"
+
+msgid "IDS_ST_HEADER_RULE_DETAILS_SWA"
+msgstr "Rule details"
+
+msgid "IDS_ST_HEADER_PATTERN_DETAILS_SWA"
+msgstr "Pattern details"
diff --git a/po/cs.po b/po/cs.po
index b6cc4c2..d927368 100755
--- a/po/cs.po
+++ b/po/cs.po
@@ -31,3 +31,272 @@ msgstr "%dkrát"
msgid "IDS_ST_HEADER_PRIVACY_AND_SECURITY_ABB"
msgstr "Ochr. os. údajů a zab."
+msgid "IDS_ST_HEADER_DATA_LEAK_MONITOR_SWA"
+msgstr "Data leak monitor"
+
+msgid "IDS_ST_MBODY_DATA_LEAK_MONITOR_SWA"
+msgstr "Data leak monitor"
+
+msgid "IDS_ST_SBODY_PREVENT_APPS_FROM_LEAKING_YOUR_SENSITIVE_DATA_WITHOUT_AUTHORISATION_SWA"
+msgstr "Prevent apps from leaking your sensitive data without authorisation."
+
+msgid "IDS_ST_SBODY_TO_ALLOW_THIS_FUNCTION_TO_MONITOR_YOUR_PERSONAL_INFORMATION_YOU_NEED_TO_SET_UP_YOUR_PROFILE_IN_CONTACTS_SWA"
+msgstr "To allow this function to monitor your personal information, you need to set up your profile in Contacts."
+
+msgid "IDS_ST_MBODY_PROTECTION_MODE_SWA"
+msgstr "Protection mode"
+
+msgid "IDS_ST_MBODY_BASIC_M_MODE_SWA"
+msgstr "Basic"
+
+msgid "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"
+msgstr "Monitor your main sensitive data to prevent it from being leaked by most apps. This mode is suitable for regular users."
+
+msgid "IDS_ST_MBODY_ADVANCED_M_MODE_SWA"
+msgstr "Advanced"
+
+msgid "IDS_ST_SBODY_SET_UP_STRICT_RULES_TO_PREVENT_DATA_LEAKAGE_SWA"
+msgstr "Set up strict rules to prevent data leakage."
+
+msgid "IDS_ST_SBODY_THIS_MODE_WILL_AFFECT_APP_PERFORMANCE_SWA"
+msgstr "This mode will affect app performance."
+
+msgid "IDS_ST_POP_SOME_APPS_MAY_BE_BLOCKED_SWA"
+msgstr "Some apps may be blocked."
+
+msgid "IDS_ST_HEADER_TURN_ON_ADVANCED_PROTECTION_MODE_SWA"
+msgstr "Turn on Advanced protection mode"
+
+msgid "IDS_ST_MBODY_CUSTOM_M_MODE_SWA"
+msgstr "Custom"
+
+msgid "IDS_ST_SBODY_CHANGE_DEFAULT_RULES_AND_PATTERNS_AND_CREATE_YOUR_OWN_TO_SET_UP_A_CUSTOMISED_PROTECTION_MODE_SWA"
+msgstr "Change default rules and patterns and create your own to set up a customised protection mode."
+
+msgid "IDS_ST_HEADER_REPORTS_SWA"
+msgstr "Reports"
+
+msgid "IDS_ST_MBODY_FULL_REPORTS_SWA"
+msgstr "Full reports"
+
+msgid "IDS_ST_MBODY_APP_RANKINGS_SWA"
+msgstr "App rankings"
+
+msgid "IDS_ST_MBODY_DATA_STATISTICS_SWA"
+msgstr "Data statistics"
+
+msgid "IDS_ST_MBODY_RULES_AND_PATTERNS_SWA"
+msgstr "Rules and patterns"
+
+msgid "IDS_ST_NPBODY_NO_REPORTS_SWA"
+msgstr "No reports"
+
+msgid "IDS_ST_HEADER_SETTINGS_SWA"
+msgstr "Settings"
+
+msgid "IDS_ST_MBODY_KEEP_LOGS_SWA"
+msgstr "Keep logs"
+
+msgid "IDS_LOGS_CLEANED"
+msgstr "Logs cleaned"
+
+msgid "IDS_LOGS_CLEANED_FAILED"
+msgstr "Failed to clean logs"
+
+msgid "IDS_ST_OPT_1_WEEK_SWA"
+msgstr "1 week"
+
+msgid "IDS_ST_OPT_1_DAY_SWA"
+msgstr "1 day"
+
+msgid "IDS_ST_OPT_1_MONTH_SWA"
+msgstr "1 month"
+
+msgid "IDS_ST_HEADER_REPORT_DETAILS_SWA"
+msgstr "Report details"
+
+msgid "IDS_ST_BODY_CATEGORY_C_SWA"
+msgstr "Category:"
+
+msgid "IDS_ST_BODY_APP_C_SWA"
+msgstr "App:"
+
+msgid "IDS_ST_BODY_DESTINATION_C_SWA"
+msgstr "Destination:"
+
+msgid "IDS_ST_BODY_PATTERN_C_SWA"
+msgstr "Pattern:"
+
+msgid "IDS_ST_BODY_DLP_ACTION"
+msgstr "Action"
+
+msgid "IDS_ST_BODY_PACKET_C_SWA"
+msgstr "Packet:"
+
+msgid "IDS_ST_BODY_DLP_ACTION_ALLOW"
+msgstr "Allow"
+
+msgid "IDS_ST_BODY_DLP_ACTION_DENY"
+msgstr "Deny"
+
+msgid "IDS_ST_BODY_DLP_ACTION_SANITIZE"
+msgstr "Sanitize"
+
+msgid "IDS_ST_BODY_DLP_ACTION_ALL_RULES"
+msgstr "All Rules"
+
+msgid "IDS_ST_OPT_QUICK_M_PROTECTION_MODE_SWA"
+msgstr "Quick"
+
+msgid "IDS_ST_SBODY_CREATE_RULES_QUICKLY_AND_EASILY_SWA"
+msgstr "Create rules quickly and easily."
+
+msgid "IDS_ST_MBODY_CUSTOM_SWA"
+msgstr "Custom"
+
+msgid "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"
+msgstr "Create rules from scratch to give you full control of your data protection. Use this option to create non-standard rules."
+
+msgid "IDS_ST_HEADER_CUSTOM_PROTECTION_MODE_SWA"
+msgstr "Custom protection mode"
+
+msgid "IDS_ST_TAB_RULES_SWA"
+msgstr "Rules"
+
+msgid "IDS_ST_TAB_PATTERNS_SWA"
+msgstr "Patterns"
+
+msgid "IDS_ST_HEADER_SELECT_TEMPLATE_SWA"
+msgstr "Select template"
+
+msgid "IDS_ST_HEADER_SELECT_APPS_SWA"
+msgstr "Select apps"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_CHOOSE_ACTION"
+msgstr "Select Action"
+
+msgid "IDS_ST_ACBUTTON_NEXT_SWA"
+msgstr "NEXT"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_OK"
+msgstr "OK"
+
+msgid "IDS_ST_ACBUTTON_DONE_SWA"
+msgstr "DONE"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_RULE_CREATED_MESSAGE"
+msgstr "Rule created."
+
+msgid "IDS_ST_TPOP_RULE_DELETED_SWA"
+msgstr "Rule deleted."
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_DELETE_RULE_POPUP_TITLE"
+msgstr "Delete Rule"
+
+msgid "IDS_ST_HEADER_DELETE_PATTERNS_SWA"
+msgstr "Delete patterns"
+
+msgid "IDS_ST_POP_THIS_RULE_WILL_BE_DELETED_ABB_SWA"
+msgstr "This rule will be deleted."
+
+msgid "IDS_ST_HEADER_CREATE_PATTERN_SWA"
+msgstr "Create pattern"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_PATTERN"
+msgstr "Custom"
+
+msgid "IDS_ST_TPOP_PD_PATTERNS_DELETED_SWA"
+msgstr "%d patterns deleted."
+
+msgid "IDS_ST_OPT_EDIT_SWA"
+msgstr "Edit"
+
+msgid "IDS_ST_OPT_CREATE_SWA"
+msgstr "Create"
+
+msgid "IDS_ST_OPT_ALL_PATTERNS_SWA"
+msgstr "All patterns"
+
+msgid "IDS_ST_BODY_NAME_SWA"
+msgstr "Name"
+
+msgid "IDS_ST_BODY_DESCRIPTION_SWA"
+msgstr "Description"
+
+msgid "IDS_ST_BODY_CATEGORY_SWA"
+msgstr "Category"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CATEGORY_NAME"
+msgstr "Category name"
+
+msgid "IDS_ST_OPT_STRING_MATCH_SWA"
+msgstr "String match"
+
+msgid "IDS_ST_OPT_REGULAR_EXPRESSION_SWA"
+msgstr "Regular expression"
+
+msgid "IDS_ST_POP_PD_PATTERNS_WILL_BE_DELETED_ABB_SWA"
+msgstr "%d patterns will be deleted."
+
+msgid "IDS_ST_POP_THIS_REPORT_WILL_BE_DELETED_ABB_SWA"
+msgstr "This report will be deleted."
+
+msgid "IDS_ST_OPT_DELETE_SWA"
+msgstr "Delete"
+
+msgid "IDS_ST_HEADER_DELETE_REPORT_SWA"
+msgstr "Delete report"
+
+msgid "IDS_ST_POP_PD_REPORTS_WILL_BE_DELETED_ABB_SWA"
+msgstr "%d reports will be deleted."
+
+msgid "IDS_ST_TPOP_1_REPORT_DELETED_SWA"
+msgstr "1 report deleted."
+
+msgid "IDS_ST_MBODY_SELECT_ALL_SWA"
+msgstr "Select all"
+
+msgid "IDS_ST_ACBUTTON_DELETE_SWA"
+msgstr "DELETE"
+
+msgid "IDS_ST_ACBUTTON_CANCEL_SWA"
+msgstr "CANCEL"
+
+msgid "IDS_ST_TPOP_PD_REPORTS_DELETED_SWA"
+msgstr "%d reports deleted."
+
+msgid "IDS_ST_HEADER_SELECT_ITEMS_SWA"
+msgstr "Select items"
+
+msgid "IDS_ST_HEADER_PD_SELECTED_SWA"
+msgstr "%d selected"
+
+msgid "IDS_ST_TPOP_BASIC_PROTECTION_MODE_TURNED_ON_SWA"
+msgstr "Basic protection mode turned on."
+
+msgid "IDS_ST_TPOP_RULE_CREATED_SWA"
+msgstr "Rule created. Custom protection mode turned on."
+
+msgid "IDS_ST_TPOP_ADVANCED_PROTECTION_MODE_TURNED_ON_SWA"
+msgstr "Advanced protection mode turned on."
+
+msgid "IDS_ST_HEADER_DETAILS_SWA"
+msgstr "Details"
+
+msgid "IDS_ST_BODY_STRING_TYPE_SWA"
+msgstr "String type"
+
+msgid "IDS_ST_BODY_SEARCH_TERM_SWA"
+msgstr "Search term"
+
+msgid "IDS_ST_BODY_LEAKS_CAPTURED_SWA"
+msgstr "Leaks captured"
+
+msgid "IDS_ST_SBODY_TOTAL_LEAKS_SWA"
+msgstr "Total leaks"
+
+msgid "IDS_ST_HEADER_RULE_DETAILS_SWA"
+msgstr "Rule details"
+
+msgid "IDS_ST_HEADER_PATTERN_DETAILS_SWA"
+msgstr "Pattern details"
diff --git a/po/da.po b/po/da.po
index 1d496b6..b48e3f8 100755
--- a/po/da.po
+++ b/po/da.po
@@ -31,3 +31,272 @@ msgstr "%d gange"
msgid "IDS_ST_HEADER_PRIVACY_AND_SECURITY_ABB"
msgstr "Fortroligh. & sikkerh."
+msgid "IDS_ST_HEADER_DATA_LEAK_MONITOR_SWA"
+msgstr "Data leak monitor"
+
+msgid "IDS_ST_MBODY_DATA_LEAK_MONITOR_SWA"
+msgstr "Data leak monitor"
+
+msgid "IDS_ST_SBODY_PREVENT_APPS_FROM_LEAKING_YOUR_SENSITIVE_DATA_WITHOUT_AUTHORISATION_SWA"
+msgstr "Prevent apps from leaking your sensitive data without authorisation."
+
+msgid "IDS_ST_SBODY_TO_ALLOW_THIS_FUNCTION_TO_MONITOR_YOUR_PERSONAL_INFORMATION_YOU_NEED_TO_SET_UP_YOUR_PROFILE_IN_CONTACTS_SWA"
+msgstr "To allow this function to monitor your personal information, you need to set up your profile in Contacts."
+
+msgid "IDS_ST_MBODY_PROTECTION_MODE_SWA"
+msgstr "Protection mode"
+
+msgid "IDS_ST_MBODY_BASIC_M_MODE_SWA"
+msgstr "Basic"
+
+msgid "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"
+msgstr "Monitor your main sensitive data to prevent it from being leaked by most apps. This mode is suitable for regular users."
+
+msgid "IDS_ST_MBODY_ADVANCED_M_MODE_SWA"
+msgstr "Advanced"
+
+msgid "IDS_ST_SBODY_SET_UP_STRICT_RULES_TO_PREVENT_DATA_LEAKAGE_SWA"
+msgstr "Set up strict rules to prevent data leakage."
+
+msgid "IDS_ST_SBODY_THIS_MODE_WILL_AFFECT_APP_PERFORMANCE_SWA"
+msgstr "This mode will affect app performance."
+
+msgid "IDS_ST_POP_SOME_APPS_MAY_BE_BLOCKED_SWA"
+msgstr "Some apps may be blocked."
+
+msgid "IDS_ST_HEADER_TURN_ON_ADVANCED_PROTECTION_MODE_SWA"
+msgstr "Turn on Advanced protection mode"
+
+msgid "IDS_ST_MBODY_CUSTOM_M_MODE_SWA"
+msgstr "Custom"
+
+msgid "IDS_ST_SBODY_CHANGE_DEFAULT_RULES_AND_PATTERNS_AND_CREATE_YOUR_OWN_TO_SET_UP_A_CUSTOMISED_PROTECTION_MODE_SWA"
+msgstr "Change default rules and patterns and create your own to set up a customised protection mode."
+
+msgid "IDS_ST_HEADER_REPORTS_SWA"
+msgstr "Reports"
+
+msgid "IDS_ST_MBODY_FULL_REPORTS_SWA"
+msgstr "Full reports"
+
+msgid "IDS_ST_MBODY_APP_RANKINGS_SWA"
+msgstr "App rankings"
+
+msgid "IDS_ST_MBODY_DATA_STATISTICS_SWA"
+msgstr "Data statistics"
+
+msgid "IDS_ST_MBODY_RULES_AND_PATTERNS_SWA"
+msgstr "Rules and patterns"
+
+msgid "IDS_ST_NPBODY_NO_REPORTS_SWA"
+msgstr "No reports"
+
+msgid "IDS_ST_HEADER_SETTINGS_SWA"
+msgstr "Settings"
+
+msgid "IDS_ST_MBODY_KEEP_LOGS_SWA"
+msgstr "Keep logs"
+
+msgid "IDS_LOGS_CLEANED"
+msgstr "Logs cleaned"
+
+msgid "IDS_LOGS_CLEANED_FAILED"
+msgstr "Failed to clean logs"
+
+msgid "IDS_ST_OPT_1_WEEK_SWA"
+msgstr "1 week"
+
+msgid "IDS_ST_OPT_1_DAY_SWA"
+msgstr "1 day"
+
+msgid "IDS_ST_OPT_1_MONTH_SWA"
+msgstr "1 month"
+
+msgid "IDS_ST_HEADER_REPORT_DETAILS_SWA"
+msgstr "Report details"
+
+msgid "IDS_ST_BODY_CATEGORY_C_SWA"
+msgstr "Category:"
+
+msgid "IDS_ST_BODY_APP_C_SWA"
+msgstr "App:"
+
+msgid "IDS_ST_BODY_DESTINATION_C_SWA"
+msgstr "Destination:"
+
+msgid "IDS_ST_BODY_PATTERN_C_SWA"
+msgstr "Pattern:"
+
+msgid "IDS_ST_BODY_DLP_ACTION"
+msgstr "Action"
+
+msgid "IDS_ST_BODY_PACKET_C_SWA"
+msgstr "Packet:"
+
+msgid "IDS_ST_BODY_DLP_ACTION_ALLOW"
+msgstr "Allow"
+
+msgid "IDS_ST_BODY_DLP_ACTION_DENY"
+msgstr "Deny"
+
+msgid "IDS_ST_BODY_DLP_ACTION_SANITIZE"
+msgstr "Sanitize"
+
+msgid "IDS_ST_BODY_DLP_ACTION_ALL_RULES"
+msgstr "All Rules"
+
+msgid "IDS_ST_OPT_QUICK_M_PROTECTION_MODE_SWA"
+msgstr "Quick"
+
+msgid "IDS_ST_SBODY_CREATE_RULES_QUICKLY_AND_EASILY_SWA"
+msgstr "Create rules quickly and easily."
+
+msgid "IDS_ST_MBODY_CUSTOM_SWA"
+msgstr "Custom"
+
+msgid "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"
+msgstr "Create rules from scratch to give you full control of your data protection. Use this option to create non-standard rules."
+
+msgid "IDS_ST_HEADER_CUSTOM_PROTECTION_MODE_SWA"
+msgstr "Custom protection mode"
+
+msgid "IDS_ST_TAB_RULES_SWA"
+msgstr "Rules"
+
+msgid "IDS_ST_TAB_PATTERNS_SWA"
+msgstr "Patterns"
+
+msgid "IDS_ST_HEADER_SELECT_TEMPLATE_SWA"
+msgstr "Select template"
+
+msgid "IDS_ST_HEADER_SELECT_APPS_SWA"
+msgstr "Select apps"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_CHOOSE_ACTION"
+msgstr "Select Action"
+
+msgid "IDS_ST_ACBUTTON_NEXT_SWA"
+msgstr "NEXT"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_OK"
+msgstr "OK"
+
+msgid "IDS_ST_ACBUTTON_DONE_SWA"
+msgstr "DONE"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_RULE_CREATED_MESSAGE"
+msgstr "Rule created."
+
+msgid "IDS_ST_TPOP_RULE_DELETED_SWA"
+msgstr "Rule deleted."
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_DELETE_RULE_POPUP_TITLE"
+msgstr "Delete Rule"
+
+msgid "IDS_ST_HEADER_DELETE_PATTERNS_SWA"
+msgstr "Delete patterns"
+
+msgid "IDS_ST_POP_THIS_RULE_WILL_BE_DELETED_ABB_SWA"
+msgstr "This rule will be deleted."
+
+msgid "IDS_ST_HEADER_CREATE_PATTERN_SWA"
+msgstr "Create pattern"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_PATTERN"
+msgstr "Custom"
+
+msgid "IDS_ST_TPOP_PD_PATTERNS_DELETED_SWA"
+msgstr "%d patterns deleted."
+
+msgid "IDS_ST_OPT_EDIT_SWA"
+msgstr "Edit"
+
+msgid "IDS_ST_OPT_CREATE_SWA"
+msgstr "Create"
+
+msgid "IDS_ST_OPT_ALL_PATTERNS_SWA"
+msgstr "All patterns"
+
+msgid "IDS_ST_BODY_NAME_SWA"
+msgstr "Name"
+
+msgid "IDS_ST_BODY_DESCRIPTION_SWA"
+msgstr "Description"
+
+msgid "IDS_ST_BODY_CATEGORY_SWA"
+msgstr "Category"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CATEGORY_NAME"
+msgstr "Category name"
+
+msgid "IDS_ST_OPT_STRING_MATCH_SWA"
+msgstr "String match"
+
+msgid "IDS_ST_OPT_REGULAR_EXPRESSION_SWA"
+msgstr "Regular expression"
+
+msgid "IDS_ST_POP_PD_PATTERNS_WILL_BE_DELETED_ABB_SWA"
+msgstr "%d patterns will be deleted."
+
+msgid "IDS_ST_POP_THIS_REPORT_WILL_BE_DELETED_ABB_SWA"
+msgstr "This report will be deleted."
+
+msgid "IDS_ST_OPT_DELETE_SWA"
+msgstr "Delete"
+
+msgid "IDS_ST_HEADER_DELETE_REPORT_SWA"
+msgstr "Delete report"
+
+msgid "IDS_ST_POP_PD_REPORTS_WILL_BE_DELETED_ABB_SWA"
+msgstr "%d reports will be deleted."
+
+msgid "IDS_ST_TPOP_1_REPORT_DELETED_SWA"
+msgstr "1 report deleted."
+
+msgid "IDS_ST_MBODY_SELECT_ALL_SWA"
+msgstr "Select all"
+
+msgid "IDS_ST_ACBUTTON_DELETE_SWA"
+msgstr "DELETE"
+
+msgid "IDS_ST_ACBUTTON_CANCEL_SWA"
+msgstr "CANCEL"
+
+msgid "IDS_ST_TPOP_PD_REPORTS_DELETED_SWA"
+msgstr "%d reports deleted."
+
+msgid "IDS_ST_HEADER_SELECT_ITEMS_SWA"
+msgstr "Select items"
+
+msgid "IDS_ST_HEADER_PD_SELECTED_SWA"
+msgstr "%d selected"
+
+msgid "IDS_ST_TPOP_BASIC_PROTECTION_MODE_TURNED_ON_SWA"
+msgstr "Basic protection mode turned on."
+
+msgid "IDS_ST_TPOP_RULE_CREATED_SWA"
+msgstr "Rule created. Custom protection mode turned on."
+
+msgid "IDS_ST_TPOP_ADVANCED_PROTECTION_MODE_TURNED_ON_SWA"
+msgstr "Advanced protection mode turned on."
+
+msgid "IDS_ST_HEADER_DETAILS_SWA"
+msgstr "Details"
+
+msgid "IDS_ST_BODY_STRING_TYPE_SWA"
+msgstr "String type"
+
+msgid "IDS_ST_BODY_SEARCH_TERM_SWA"
+msgstr "Search term"
+
+msgid "IDS_ST_BODY_LEAKS_CAPTURED_SWA"
+msgstr "Leaks captured"
+
+msgid "IDS_ST_SBODY_TOTAL_LEAKS_SWA"
+msgstr "Total leaks"
+
+msgid "IDS_ST_HEADER_RULE_DETAILS_SWA"
+msgstr "Rule details"
+
+msgid "IDS_ST_HEADER_PATTERN_DETAILS_SWA"
+msgstr "Pattern details"
diff --git a/po/de.po b/po/de.po
index 3c3b06c..c9b36ff 100755
--- a/po/de.po
+++ b/po/de.po
@@ -31,3 +31,272 @@ msgstr "%d Mal"
msgid "IDS_ST_HEADER_PRIVACY_AND_SECURITY_ABB"
msgstr "Datenschutz/Sicherheit"
+msgid "IDS_ST_HEADER_DATA_LEAK_MONITOR_SWA"
+msgstr "Data leak monitor"
+
+msgid "IDS_ST_MBODY_DATA_LEAK_MONITOR_SWA"
+msgstr "Data leak monitor"
+
+msgid "IDS_ST_SBODY_PREVENT_APPS_FROM_LEAKING_YOUR_SENSITIVE_DATA_WITHOUT_AUTHORISATION_SWA"
+msgstr "Prevent apps from leaking your sensitive data without authorisation."
+
+msgid "IDS_ST_SBODY_TO_ALLOW_THIS_FUNCTION_TO_MONITOR_YOUR_PERSONAL_INFORMATION_YOU_NEED_TO_SET_UP_YOUR_PROFILE_IN_CONTACTS_SWA"
+msgstr "To allow this function to monitor your personal information, you need to set up your profile in Contacts."
+
+msgid "IDS_ST_MBODY_PROTECTION_MODE_SWA"
+msgstr "Protection mode"
+
+msgid "IDS_ST_MBODY_BASIC_M_MODE_SWA"
+msgstr "Basic"
+
+msgid "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"
+msgstr "Monitor your main sensitive data to prevent it from being leaked by most apps. This mode is suitable for regular users."
+
+msgid "IDS_ST_MBODY_ADVANCED_M_MODE_SWA"
+msgstr "Advanced"
+
+msgid "IDS_ST_SBODY_SET_UP_STRICT_RULES_TO_PREVENT_DATA_LEAKAGE_SWA"
+msgstr "Set up strict rules to prevent data leakage."
+
+msgid "IDS_ST_SBODY_THIS_MODE_WILL_AFFECT_APP_PERFORMANCE_SWA"
+msgstr "This mode will affect app performance."
+
+msgid "IDS_ST_POP_SOME_APPS_MAY_BE_BLOCKED_SWA"
+msgstr "Some apps may be blocked."
+
+msgid "IDS_ST_HEADER_TURN_ON_ADVANCED_PROTECTION_MODE_SWA"
+msgstr "Turn on Advanced protection mode"
+
+msgid "IDS_ST_MBODY_CUSTOM_M_MODE_SWA"
+msgstr "Custom"
+
+msgid "IDS_ST_SBODY_CHANGE_DEFAULT_RULES_AND_PATTERNS_AND_CREATE_YOUR_OWN_TO_SET_UP_A_CUSTOMISED_PROTECTION_MODE_SWA"
+msgstr "Change default rules and patterns and create your own to set up a customised protection mode."
+
+msgid "IDS_ST_HEADER_REPORTS_SWA"
+msgstr "Reports"
+
+msgid "IDS_ST_MBODY_FULL_REPORTS_SWA"
+msgstr "Full reports"
+
+msgid "IDS_ST_MBODY_APP_RANKINGS_SWA"
+msgstr "App rankings"
+
+msgid "IDS_ST_MBODY_DATA_STATISTICS_SWA"
+msgstr "Data statistics"
+
+msgid "IDS_ST_MBODY_RULES_AND_PATTERNS_SWA"
+msgstr "Rules and patterns"
+
+msgid "IDS_ST_NPBODY_NO_REPORTS_SWA"
+msgstr "No reports"
+
+msgid "IDS_ST_HEADER_SETTINGS_SWA"
+msgstr "Settings"
+
+msgid "IDS_ST_MBODY_KEEP_LOGS_SWA"
+msgstr "Keep logs"
+
+msgid "IDS_LOGS_CLEANED"
+msgstr "Logs cleaned"
+
+msgid "IDS_LOGS_CLEANED_FAILED"
+msgstr "Failed to clean logs"
+
+msgid "IDS_ST_OPT_1_WEEK_SWA"
+msgstr "1 week"
+
+msgid "IDS_ST_OPT_1_DAY_SWA"
+msgstr "1 day"
+
+msgid "IDS_ST_OPT_1_MONTH_SWA"
+msgstr "1 month"
+
+msgid "IDS_ST_HEADER_REPORT_DETAILS_SWA"
+msgstr "Report details"
+
+msgid "IDS_ST_BODY_CATEGORY_C_SWA"
+msgstr "Category:"
+
+msgid "IDS_ST_BODY_APP_C_SWA"
+msgstr "App:"
+
+msgid "IDS_ST_BODY_DESTINATION_C_SWA"
+msgstr "Destination:"
+
+msgid "IDS_ST_BODY_PATTERN_C_SWA"
+msgstr "Pattern:"
+
+msgid "IDS_ST_BODY_DLP_ACTION"
+msgstr "Action"
+
+msgid "IDS_ST_BODY_PACKET_C_SWA"
+msgstr "Packet:"
+
+msgid "IDS_ST_BODY_DLP_ACTION_ALLOW"
+msgstr "Allow"
+
+msgid "IDS_ST_BODY_DLP_ACTION_DENY"
+msgstr "Deny"
+
+msgid "IDS_ST_BODY_DLP_ACTION_SANITIZE"
+msgstr "Sanitize"
+
+msgid "IDS_ST_BODY_DLP_ACTION_ALL_RULES"
+msgstr "All Rules"
+
+msgid "IDS_ST_OPT_QUICK_M_PROTECTION_MODE_SWA"
+msgstr "Quick"
+
+msgid "IDS_ST_SBODY_CREATE_RULES_QUICKLY_AND_EASILY_SWA"
+msgstr "Create rules quickly and easily."
+
+msgid "IDS_ST_MBODY_CUSTOM_SWA"
+msgstr "Custom"
+
+msgid "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"
+msgstr "Create rules from scratch to give you full control of your data protection. Use this option to create non-standard rules."
+
+msgid "IDS_ST_HEADER_CUSTOM_PROTECTION_MODE_SWA"
+msgstr "Custom protection mode"
+
+msgid "IDS_ST_TAB_RULES_SWA"
+msgstr "Rules"
+
+msgid "IDS_ST_TAB_PATTERNS_SWA"
+msgstr "Patterns"
+
+msgid "IDS_ST_HEADER_SELECT_TEMPLATE_SWA"
+msgstr "Select template"
+
+msgid "IDS_ST_HEADER_SELECT_APPS_SWA"
+msgstr "Select apps"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_CHOOSE_ACTION"
+msgstr "Select Action"
+
+msgid "IDS_ST_ACBUTTON_NEXT_SWA"
+msgstr "NEXT"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_OK"
+msgstr "OK"
+
+msgid "IDS_ST_ACBUTTON_DONE_SWA"
+msgstr "DONE"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_RULE_CREATED_MESSAGE"
+msgstr "Rule created."
+
+msgid "IDS_ST_TPOP_RULE_DELETED_SWA"
+msgstr "Rule deleted."
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_DELETE_RULE_POPUP_TITLE"
+msgstr "Delete Rule"
+
+msgid "IDS_ST_HEADER_DELETE_PATTERNS_SWA"
+msgstr "Delete patterns"
+
+msgid "IDS_ST_POP_THIS_RULE_WILL_BE_DELETED_ABB_SWA"
+msgstr "This rule will be deleted."
+
+msgid "IDS_ST_HEADER_CREATE_PATTERN_SWA"
+msgstr "Create pattern"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_PATTERN"
+msgstr "Custom"
+
+msgid "IDS_ST_TPOP_PD_PATTERNS_DELETED_SWA"
+msgstr "%d patterns deleted."
+
+msgid "IDS_ST_OPT_EDIT_SWA"
+msgstr "Edit"
+
+msgid "IDS_ST_OPT_CREATE_SWA"
+msgstr "Create"
+
+msgid "IDS_ST_OPT_ALL_PATTERNS_SWA"
+msgstr "All patterns"
+
+msgid "IDS_ST_BODY_NAME_SWA"
+msgstr "Name"
+
+msgid "IDS_ST_BODY_DESCRIPTION_SWA"
+msgstr "Description"
+
+msgid "IDS_ST_BODY_CATEGORY_SWA"
+msgstr "Category"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CATEGORY_NAME"
+msgstr "Category name"
+
+msgid "IDS_ST_OPT_STRING_MATCH_SWA"
+msgstr "String match"
+
+msgid "IDS_ST_OPT_REGULAR_EXPRESSION_SWA"
+msgstr "Regular expression"
+
+msgid "IDS_ST_POP_PD_PATTERNS_WILL_BE_DELETED_ABB_SWA"
+msgstr "%d patterns will be deleted."
+
+msgid "IDS_ST_POP_THIS_REPORT_WILL_BE_DELETED_ABB_SWA"
+msgstr "This report will be deleted."
+
+msgid "IDS_ST_OPT_DELETE_SWA"
+msgstr "Delete"
+
+msgid "IDS_ST_HEADER_DELETE_REPORT_SWA"
+msgstr "Delete report"
+
+msgid "IDS_ST_POP_PD_REPORTS_WILL_BE_DELETED_ABB_SWA"
+msgstr "%d reports will be deleted."
+
+msgid "IDS_ST_TPOP_1_REPORT_DELETED_SWA"
+msgstr "1 report deleted."
+
+msgid "IDS_ST_MBODY_SELECT_ALL_SWA"
+msgstr "Select all"
+
+msgid "IDS_ST_ACBUTTON_DELETE_SWA"
+msgstr "DELETE"
+
+msgid "IDS_ST_ACBUTTON_CANCEL_SWA"
+msgstr "CANCEL"
+
+msgid "IDS_ST_TPOP_PD_REPORTS_DELETED_SWA"
+msgstr "%d reports deleted."
+
+msgid "IDS_ST_HEADER_SELECT_ITEMS_SWA"
+msgstr "Select items"
+
+msgid "IDS_ST_HEADER_PD_SELECTED_SWA"
+msgstr "%d selected"
+
+msgid "IDS_ST_TPOP_BASIC_PROTECTION_MODE_TURNED_ON_SWA"
+msgstr "Basic protection mode turned on."
+
+msgid "IDS_ST_TPOP_RULE_CREATED_SWA"
+msgstr "Rule created. Custom protection mode turned on."
+
+msgid "IDS_ST_TPOP_ADVANCED_PROTECTION_MODE_TURNED_ON_SWA"
+msgstr "Advanced protection mode turned on."
+
+msgid "IDS_ST_HEADER_DETAILS_SWA"
+msgstr "Details"
+
+msgid "IDS_ST_BODY_STRING_TYPE_SWA"
+msgstr "String type"
+
+msgid "IDS_ST_BODY_SEARCH_TERM_SWA"
+msgstr "Search term"
+
+msgid "IDS_ST_BODY_LEAKS_CAPTURED_SWA"
+msgstr "Leaks captured"
+
+msgid "IDS_ST_SBODY_TOTAL_LEAKS_SWA"
+msgstr "Total leaks"
+
+msgid "IDS_ST_HEADER_RULE_DETAILS_SWA"
+msgstr "Rule details"
+
+msgid "IDS_ST_HEADER_PATTERN_DETAILS_SWA"
+msgstr "Pattern details"
diff --git a/po/el_GR.po b/po/el_GR.po
index 9a1ac90..441ea90 100755
--- a/po/el_GR.po
+++ b/po/el_GR.po
@@ -31,3 +31,272 @@ msgstr "%d φορές"
msgid "IDS_ST_HEADER_PRIVACY_AND_SECURITY_ABB"
msgstr "Απόρρητο και ασφάλεια"
+msgid "IDS_ST_HEADER_DATA_LEAK_MONITOR_SWA"
+msgstr "Data leak monitor"
+
+msgid "IDS_ST_MBODY_DATA_LEAK_MONITOR_SWA"
+msgstr "Data leak monitor"
+
+msgid "IDS_ST_SBODY_PREVENT_APPS_FROM_LEAKING_YOUR_SENSITIVE_DATA_WITHOUT_AUTHORISATION_SWA"
+msgstr "Prevent apps from leaking your sensitive data without authorisation."
+
+msgid "IDS_ST_SBODY_TO_ALLOW_THIS_FUNCTION_TO_MONITOR_YOUR_PERSONAL_INFORMATION_YOU_NEED_TO_SET_UP_YOUR_PROFILE_IN_CONTACTS_SWA"
+msgstr "To allow this function to monitor your personal information, you need to set up your profile in Contacts."
+
+msgid "IDS_ST_MBODY_PROTECTION_MODE_SWA"
+msgstr "Protection mode"
+
+msgid "IDS_ST_MBODY_BASIC_M_MODE_SWA"
+msgstr "Basic"
+
+msgid "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"
+msgstr "Monitor your main sensitive data to prevent it from being leaked by most apps. This mode is suitable for regular users."
+
+msgid "IDS_ST_MBODY_ADVANCED_M_MODE_SWA"
+msgstr "Advanced"
+
+msgid "IDS_ST_SBODY_SET_UP_STRICT_RULES_TO_PREVENT_DATA_LEAKAGE_SWA"
+msgstr "Set up strict rules to prevent data leakage."
+
+msgid "IDS_ST_SBODY_THIS_MODE_WILL_AFFECT_APP_PERFORMANCE_SWA"
+msgstr "This mode will affect app performance."
+
+msgid "IDS_ST_POP_SOME_APPS_MAY_BE_BLOCKED_SWA"
+msgstr "Some apps may be blocked."
+
+msgid "IDS_ST_HEADER_TURN_ON_ADVANCED_PROTECTION_MODE_SWA"
+msgstr "Turn on Advanced protection mode"
+
+msgid "IDS_ST_MBODY_CUSTOM_M_MODE_SWA"
+msgstr "Custom"
+
+msgid "IDS_ST_SBODY_CHANGE_DEFAULT_RULES_AND_PATTERNS_AND_CREATE_YOUR_OWN_TO_SET_UP_A_CUSTOMISED_PROTECTION_MODE_SWA"
+msgstr "Change default rules and patterns and create your own to set up a customised protection mode."
+
+msgid "IDS_ST_HEADER_REPORTS_SWA"
+msgstr "Reports"
+
+msgid "IDS_ST_MBODY_FULL_REPORTS_SWA"
+msgstr "Full reports"
+
+msgid "IDS_ST_MBODY_APP_RANKINGS_SWA"
+msgstr "App rankings"
+
+msgid "IDS_ST_MBODY_DATA_STATISTICS_SWA"
+msgstr "Data statistics"
+
+msgid "IDS_ST_MBODY_RULES_AND_PATTERNS_SWA"
+msgstr "Rules and patterns"
+
+msgid "IDS_ST_NPBODY_NO_REPORTS_SWA"
+msgstr "No reports"
+
+msgid "IDS_ST_HEADER_SETTINGS_SWA"
+msgstr "Settings"
+
+msgid "IDS_ST_MBODY_KEEP_LOGS_SWA"
+msgstr "Keep logs"
+
+msgid "IDS_LOGS_CLEANED"
+msgstr "Logs cleaned"
+
+msgid "IDS_LOGS_CLEANED_FAILED"
+msgstr "Failed to clean logs"
+
+msgid "IDS_ST_OPT_1_WEEK_SWA"
+msgstr "1 week"
+
+msgid "IDS_ST_OPT_1_DAY_SWA"
+msgstr "1 day"
+
+msgid "IDS_ST_OPT_1_MONTH_SWA"
+msgstr "1 month"
+
+msgid "IDS_ST_HEADER_REPORT_DETAILS_SWA"
+msgstr "Report details"
+
+msgid "IDS_ST_BODY_CATEGORY_C_SWA"
+msgstr "Category:"
+
+msgid "IDS_ST_BODY_APP_C_SWA"
+msgstr "App:"
+
+msgid "IDS_ST_BODY_DESTINATION_C_SWA"
+msgstr "Destination:"
+
+msgid "IDS_ST_BODY_PATTERN_C_SWA"
+msgstr "Pattern:"
+
+msgid "IDS_ST_BODY_DLP_ACTION"
+msgstr "Action"
+
+msgid "IDS_ST_BODY_PACKET_C_SWA"
+msgstr "Packet:"
+
+msgid "IDS_ST_BODY_DLP_ACTION_ALLOW"
+msgstr "Allow"
+
+msgid "IDS_ST_BODY_DLP_ACTION_DENY"
+msgstr "Deny"
+
+msgid "IDS_ST_BODY_DLP_ACTION_SANITIZE"
+msgstr "Sanitize"
+
+msgid "IDS_ST_BODY_DLP_ACTION_ALL_RULES"
+msgstr "All Rules"
+
+msgid "IDS_ST_OPT_QUICK_M_PROTECTION_MODE_SWA"
+msgstr "Quick"
+
+msgid "IDS_ST_SBODY_CREATE_RULES_QUICKLY_AND_EASILY_SWA"
+msgstr "Create rules quickly and easily."
+
+msgid "IDS_ST_MBODY_CUSTOM_SWA"
+msgstr "Custom"
+
+msgid "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"
+msgstr "Create rules from scratch to give you full control of your data protection. Use this option to create non-standard rules."
+
+msgid "IDS_ST_HEADER_CUSTOM_PROTECTION_MODE_SWA"
+msgstr "Custom protection mode"
+
+msgid "IDS_ST_TAB_RULES_SWA"
+msgstr "Rules"
+
+msgid "IDS_ST_TAB_PATTERNS_SWA"
+msgstr "Patterns"
+
+msgid "IDS_ST_HEADER_SELECT_TEMPLATE_SWA"
+msgstr "Select template"
+
+msgid "IDS_ST_HEADER_SELECT_APPS_SWA"
+msgstr "Select apps"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_CHOOSE_ACTION"
+msgstr "Select Action"
+
+msgid "IDS_ST_ACBUTTON_NEXT_SWA"
+msgstr "NEXT"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_OK"
+msgstr "OK"
+
+msgid "IDS_ST_ACBUTTON_DONE_SWA"
+msgstr "DONE"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_RULE_CREATED_MESSAGE"
+msgstr "Rule created."
+
+msgid "IDS_ST_TPOP_RULE_DELETED_SWA"
+msgstr "Rule deleted."
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_DELETE_RULE_POPUP_TITLE"
+msgstr "Delete Rule"
+
+msgid "IDS_ST_HEADER_DELETE_PATTERNS_SWA"
+msgstr "Delete patterns"
+
+msgid "IDS_ST_POP_THIS_RULE_WILL_BE_DELETED_ABB_SWA"
+msgstr "This rule will be deleted."
+
+msgid "IDS_ST_HEADER_CREATE_PATTERN_SWA"
+msgstr "Create pattern"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_PATTERN"
+msgstr "Custom"
+
+msgid "IDS_ST_TPOP_PD_PATTERNS_DELETED_SWA"
+msgstr "%d patterns deleted."
+
+msgid "IDS_ST_OPT_EDIT_SWA"
+msgstr "Edit"
+
+msgid "IDS_ST_OPT_CREATE_SWA"
+msgstr "Create"
+
+msgid "IDS_ST_OPT_ALL_PATTERNS_SWA"
+msgstr "All patterns"
+
+msgid "IDS_ST_BODY_NAME_SWA"
+msgstr "Name"
+
+msgid "IDS_ST_BODY_DESCRIPTION_SWA"
+msgstr "Description"
+
+msgid "IDS_ST_BODY_CATEGORY_SWA"
+msgstr "Category"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CATEGORY_NAME"
+msgstr "Category name"
+
+msgid "IDS_ST_OPT_STRING_MATCH_SWA"
+msgstr "String match"
+
+msgid "IDS_ST_OPT_REGULAR_EXPRESSION_SWA"
+msgstr "Regular expression"
+
+msgid "IDS_ST_POP_PD_PATTERNS_WILL_BE_DELETED_ABB_SWA"
+msgstr "%d patterns will be deleted."
+
+msgid "IDS_ST_POP_THIS_REPORT_WILL_BE_DELETED_ABB_SWA"
+msgstr "This report will be deleted."
+
+msgid "IDS_ST_OPT_DELETE_SWA"
+msgstr "Delete"
+
+msgid "IDS_ST_HEADER_DELETE_REPORT_SWA"
+msgstr "Delete report"
+
+msgid "IDS_ST_POP_PD_REPORTS_WILL_BE_DELETED_ABB_SWA"
+msgstr "%d reports will be deleted."
+
+msgid "IDS_ST_TPOP_1_REPORT_DELETED_SWA"
+msgstr "1 report deleted."
+
+msgid "IDS_ST_MBODY_SELECT_ALL_SWA"
+msgstr "Select all"
+
+msgid "IDS_ST_ACBUTTON_DELETE_SWA"
+msgstr "DELETE"
+
+msgid "IDS_ST_ACBUTTON_CANCEL_SWA"
+msgstr "CANCEL"
+
+msgid "IDS_ST_TPOP_PD_REPORTS_DELETED_SWA"
+msgstr "%d reports deleted."
+
+msgid "IDS_ST_HEADER_SELECT_ITEMS_SWA"
+msgstr "Select items"
+
+msgid "IDS_ST_HEADER_PD_SELECTED_SWA"
+msgstr "%d selected"
+
+msgid "IDS_ST_TPOP_BASIC_PROTECTION_MODE_TURNED_ON_SWA"
+msgstr "Basic protection mode turned on."
+
+msgid "IDS_ST_TPOP_RULE_CREATED_SWA"
+msgstr "Rule created. Custom protection mode turned on."
+
+msgid "IDS_ST_TPOP_ADVANCED_PROTECTION_MODE_TURNED_ON_SWA"
+msgstr "Advanced protection mode turned on."
+
+msgid "IDS_ST_HEADER_DETAILS_SWA"
+msgstr "Details"
+
+msgid "IDS_ST_BODY_STRING_TYPE_SWA"
+msgstr "String type"
+
+msgid "IDS_ST_BODY_SEARCH_TERM_SWA"
+msgstr "Search term"
+
+msgid "IDS_ST_BODY_LEAKS_CAPTURED_SWA"
+msgstr "Leaks captured"
+
+msgid "IDS_ST_SBODY_TOTAL_LEAKS_SWA"
+msgstr "Total leaks"
+
+msgid "IDS_ST_HEADER_RULE_DETAILS_SWA"
+msgstr "Rule details"
+
+msgid "IDS_ST_HEADER_PATTERN_DETAILS_SWA"
+msgstr "Pattern details"
diff --git a/po/en.po b/po/en.po
index cf9a1fb..e833d9f 100755
--- a/po/en.po
+++ b/po/en.po
@@ -31,3 +31,272 @@ msgstr "%d times"
msgid "IDS_ST_HEADER_PRIVACY_AND_SECURITY_ABB"
msgstr "Privacy and security"
+msgid "IDS_ST_HEADER_DATA_LEAK_MONITOR_SWA"
+msgstr "Data leak monitor"
+
+msgid "IDS_ST_MBODY_DATA_LEAK_MONITOR_SWA"
+msgstr "Data leak monitor"
+
+msgid "IDS_ST_SBODY_PREVENT_APPS_FROM_LEAKING_YOUR_SENSITIVE_DATA_WITHOUT_AUTHORISATION_SWA"
+msgstr "Prevent apps from leaking your sensitive data without authorisation."
+
+msgid "IDS_ST_SBODY_TO_ALLOW_THIS_FUNCTION_TO_MONITOR_YOUR_PERSONAL_INFORMATION_YOU_NEED_TO_SET_UP_YOUR_PROFILE_IN_CONTACTS_SWA"
+msgstr "To allow this function to monitor your personal information, you need to set up your profile in Contacts."
+
+msgid "IDS_ST_MBODY_PROTECTION_MODE_SWA"
+msgstr "Protection mode"
+
+msgid "IDS_ST_MBODY_BASIC_M_MODE_SWA"
+msgstr "Basic"
+
+msgid "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"
+msgstr "Monitor your main sensitive data to prevent it from being leaked by most apps. This mode is suitable for regular users."
+
+msgid "IDS_ST_MBODY_ADVANCED_M_MODE_SWA"
+msgstr "Advanced"
+
+msgid "IDS_ST_SBODY_SET_UP_STRICT_RULES_TO_PREVENT_DATA_LEAKAGE_SWA"
+msgstr "Set up strict rules to prevent data leakage."
+
+msgid "IDS_ST_SBODY_THIS_MODE_WILL_AFFECT_APP_PERFORMANCE_SWA"
+msgstr "This mode will affect app performance."
+
+msgid "IDS_ST_POP_SOME_APPS_MAY_BE_BLOCKED_SWA"
+msgstr "Some apps may be blocked."
+
+msgid "IDS_ST_HEADER_TURN_ON_ADVANCED_PROTECTION_MODE_SWA"
+msgstr "Turn on Advanced protection mode"
+
+msgid "IDS_ST_MBODY_CUSTOM_M_MODE_SWA"
+msgstr "Custom"
+
+msgid "IDS_ST_SBODY_CHANGE_DEFAULT_RULES_AND_PATTERNS_AND_CREATE_YOUR_OWN_TO_SET_UP_A_CUSTOMISED_PROTECTION_MODE_SWA"
+msgstr "Change default rules and patterns and create your own to set up a customised protection mode."
+
+msgid "IDS_ST_HEADER_REPORTS_SWA"
+msgstr "Reports"
+
+msgid "IDS_ST_MBODY_FULL_REPORTS_SWA"
+msgstr "Full reports"
+
+msgid "IDS_ST_MBODY_APP_RANKINGS_SWA"
+msgstr "App rankings"
+
+msgid "IDS_ST_MBODY_DATA_STATISTICS_SWA"
+msgstr "Data statistics"
+
+msgid "IDS_ST_MBODY_RULES_AND_PATTERNS_SWA"
+msgstr "Rules and patterns"
+
+msgid "IDS_ST_NPBODY_NO_REPORTS_SWA"
+msgstr "No reports"
+
+msgid "IDS_ST_HEADER_SETTINGS_SWA"
+msgstr "Settings"
+
+msgid "IDS_ST_MBODY_KEEP_LOGS_SWA"
+msgstr "Keep logs"
+
+msgid "IDS_LOGS_CLEANED"
+msgstr "Logs cleaned"
+
+msgid "IDS_LOGS_CLEANED_FAILED"
+msgstr "Failed to clean logs"
+
+msgid "IDS_ST_OPT_1_WEEK_SWA"
+msgstr "1 week"
+
+msgid "IDS_ST_OPT_1_DAY_SWA"
+msgstr "1 day"
+
+msgid "IDS_ST_OPT_1_MONTH_SWA"
+msgstr "1 month"
+
+msgid "IDS_ST_HEADER_REPORT_DETAILS_SWA"
+msgstr "Report details"
+
+msgid "IDS_ST_BODY_CATEGORY_C_SWA"
+msgstr "Category:"
+
+msgid "IDS_ST_BODY_APP_C_SWA"
+msgstr "App:"
+
+msgid "IDS_ST_BODY_DESTINATION_C_SWA"
+msgstr "Destination:"
+
+msgid "IDS_ST_BODY_PATTERN_C_SWA"
+msgstr "Pattern:"
+
+msgid "IDS_ST_BODY_DLP_ACTION"
+msgstr "Action"
+
+msgid "IDS_ST_BODY_PACKET_C_SWA"
+msgstr "Packet:"
+
+msgid "IDS_ST_BODY_DLP_ACTION_ALLOW"
+msgstr "Allow"
+
+msgid "IDS_ST_BODY_DLP_ACTION_DENY"
+msgstr "Deny"
+
+msgid "IDS_ST_BODY_DLP_ACTION_SANITIZE"
+msgstr "Sanitize"
+
+msgid "IDS_ST_BODY_DLP_ACTION_ALL_RULES"
+msgstr "All Rules"
+
+msgid "IDS_ST_OPT_QUICK_M_PROTECTION_MODE_SWA"
+msgstr "Quick"
+
+msgid "IDS_ST_SBODY_CREATE_RULES_QUICKLY_AND_EASILY_SWA"
+msgstr "Create rules quickly and easily."
+
+msgid "IDS_ST_MBODY_CUSTOM_SWA"
+msgstr "Custom"
+
+msgid "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"
+msgstr "Create rules from scratch to give you full control of your data protection. Use this option to create non-standard rules."
+
+msgid "IDS_ST_HEADER_CUSTOM_PROTECTION_MODE_SWA"
+msgstr "Custom protection mode"
+
+msgid "IDS_ST_TAB_RULES_SWA"
+msgstr "Rules"
+
+msgid "IDS_ST_TAB_PATTERNS_SWA"
+msgstr "Patterns"
+
+msgid "IDS_ST_HEADER_SELECT_TEMPLATE_SWA"
+msgstr "Select template"
+
+msgid "IDS_ST_HEADER_SELECT_APPS_SWA"
+msgstr "Select apps"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_CHOOSE_ACTION"
+msgstr "Select Action"
+
+msgid "IDS_ST_ACBUTTON_NEXT_SWA"
+msgstr "NEXT"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_OK"
+msgstr "OK"
+
+msgid "IDS_ST_ACBUTTON_DONE_SWA"
+msgstr "DONE"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_RULE_CREATED_MESSAGE"
+msgstr "Rule created."
+
+msgid "IDS_ST_TPOP_RULE_DELETED_SWA"
+msgstr "Rule deleted."
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_DELETE_RULE_POPUP_TITLE"
+msgstr "Delete Rule"
+
+msgid "IDS_ST_HEADER_DELETE_PATTERNS_SWA"
+msgstr "Delete patterns"
+
+msgid "IDS_ST_POP_THIS_RULE_WILL_BE_DELETED_ABB_SWA"
+msgstr "This rule will be deleted."
+
+msgid "IDS_ST_HEADER_CREATE_PATTERN_SWA"
+msgstr "Create pattern"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_PATTERN"
+msgstr "Custom"
+
+msgid "IDS_ST_TPOP_PD_PATTERNS_DELETED_SWA"
+msgstr "%d patterns deleted."
+
+msgid "IDS_ST_OPT_EDIT_SWA"
+msgstr "Edit"
+
+msgid "IDS_ST_OPT_CREATE_SWA"
+msgstr "Create"
+
+msgid "IDS_ST_OPT_ALL_PATTERNS_SWA"
+msgstr "All patterns"
+
+msgid "IDS_ST_BODY_NAME_SWA"
+msgstr "Name"
+
+msgid "IDS_ST_BODY_DESCRIPTION_SWA"
+msgstr "Description"
+
+msgid "IDS_ST_BODY_CATEGORY_SWA"
+msgstr "Category"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CATEGORY_NAME"
+msgstr "Category name"
+
+msgid "IDS_ST_OPT_STRING_MATCH_SWA"
+msgstr "String match"
+
+msgid "IDS_ST_OPT_REGULAR_EXPRESSION_SWA"
+msgstr "Regular expression"
+
+msgid "IDS_ST_POP_PD_PATTERNS_WILL_BE_DELETED_ABB_SWA"
+msgstr "%d patterns will be deleted."
+
+msgid "IDS_ST_POP_THIS_REPORT_WILL_BE_DELETED_ABB_SWA"
+msgstr "This report will be deleted."
+
+msgid "IDS_ST_OPT_DELETE_SWA"
+msgstr "Delete"
+
+msgid "IDS_ST_HEADER_DELETE_REPORT_SWA"
+msgstr "Delete report"
+
+msgid "IDS_ST_POP_PD_REPORTS_WILL_BE_DELETED_ABB_SWA"
+msgstr "%d reports will be deleted."
+
+msgid "IDS_ST_TPOP_1_REPORT_DELETED_SWA"
+msgstr "1 report deleted."
+
+msgid "IDS_ST_MBODY_SELECT_ALL_SWA"
+msgstr "Select all"
+
+msgid "IDS_ST_ACBUTTON_DELETE_SWA"
+msgstr "DELETE"
+
+msgid "IDS_ST_ACBUTTON_CANCEL_SWA"
+msgstr "CANCEL"
+
+msgid "IDS_ST_TPOP_PD_REPORTS_DELETED_SWA"
+msgstr "%d reports deleted."
+
+msgid "IDS_ST_HEADER_SELECT_ITEMS_SWA"
+msgstr "Select items"
+
+msgid "IDS_ST_HEADER_PD_SELECTED_SWA"
+msgstr "%d selected"
+
+msgid "IDS_ST_TPOP_BASIC_PROTECTION_MODE_TURNED_ON_SWA"
+msgstr "Basic protection mode turned on."
+
+msgid "IDS_ST_TPOP_RULE_CREATED_SWA"
+msgstr "Rule created. Custom protection mode turned on."
+
+msgid "IDS_ST_TPOP_ADVANCED_PROTECTION_MODE_TURNED_ON_SWA"
+msgstr "Advanced protection mode turned on."
+
+msgid "IDS_ST_HEADER_DETAILS_SWA"
+msgstr "Details"
+
+msgid "IDS_ST_BODY_STRING_TYPE_SWA"
+msgstr "String type"
+
+msgid "IDS_ST_BODY_SEARCH_TERM_SWA"
+msgstr "Search term"
+
+msgid "IDS_ST_BODY_LEAKS_CAPTURED_SWA"
+msgstr "Leaks captured"
+
+msgid "IDS_ST_SBODY_TOTAL_LEAKS_SWA"
+msgstr "Total leaks"
+
+msgid "IDS_ST_HEADER_RULE_DETAILS_SWA"
+msgstr "Rule details"
+
+msgid "IDS_ST_HEADER_PATTERN_DETAILS_SWA"
+msgstr "Pattern details"
diff --git a/po/en_PH.po b/po/en_PH.po
index cf9a1fb..e833d9f 100755
--- a/po/en_PH.po
+++ b/po/en_PH.po
@@ -31,3 +31,272 @@ msgstr "%d times"
msgid "IDS_ST_HEADER_PRIVACY_AND_SECURITY_ABB"
msgstr "Privacy and security"
+msgid "IDS_ST_HEADER_DATA_LEAK_MONITOR_SWA"
+msgstr "Data leak monitor"
+
+msgid "IDS_ST_MBODY_DATA_LEAK_MONITOR_SWA"
+msgstr "Data leak monitor"
+
+msgid "IDS_ST_SBODY_PREVENT_APPS_FROM_LEAKING_YOUR_SENSITIVE_DATA_WITHOUT_AUTHORISATION_SWA"
+msgstr "Prevent apps from leaking your sensitive data without authorisation."
+
+msgid "IDS_ST_SBODY_TO_ALLOW_THIS_FUNCTION_TO_MONITOR_YOUR_PERSONAL_INFORMATION_YOU_NEED_TO_SET_UP_YOUR_PROFILE_IN_CONTACTS_SWA"
+msgstr "To allow this function to monitor your personal information, you need to set up your profile in Contacts."
+
+msgid "IDS_ST_MBODY_PROTECTION_MODE_SWA"
+msgstr "Protection mode"
+
+msgid "IDS_ST_MBODY_BASIC_M_MODE_SWA"
+msgstr "Basic"
+
+msgid "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"
+msgstr "Monitor your main sensitive data to prevent it from being leaked by most apps. This mode is suitable for regular users."
+
+msgid "IDS_ST_MBODY_ADVANCED_M_MODE_SWA"
+msgstr "Advanced"
+
+msgid "IDS_ST_SBODY_SET_UP_STRICT_RULES_TO_PREVENT_DATA_LEAKAGE_SWA"
+msgstr "Set up strict rules to prevent data leakage."
+
+msgid "IDS_ST_SBODY_THIS_MODE_WILL_AFFECT_APP_PERFORMANCE_SWA"
+msgstr "This mode will affect app performance."
+
+msgid "IDS_ST_POP_SOME_APPS_MAY_BE_BLOCKED_SWA"
+msgstr "Some apps may be blocked."
+
+msgid "IDS_ST_HEADER_TURN_ON_ADVANCED_PROTECTION_MODE_SWA"
+msgstr "Turn on Advanced protection mode"
+
+msgid "IDS_ST_MBODY_CUSTOM_M_MODE_SWA"
+msgstr "Custom"
+
+msgid "IDS_ST_SBODY_CHANGE_DEFAULT_RULES_AND_PATTERNS_AND_CREATE_YOUR_OWN_TO_SET_UP_A_CUSTOMISED_PROTECTION_MODE_SWA"
+msgstr "Change default rules and patterns and create your own to set up a customised protection mode."
+
+msgid "IDS_ST_HEADER_REPORTS_SWA"
+msgstr "Reports"
+
+msgid "IDS_ST_MBODY_FULL_REPORTS_SWA"
+msgstr "Full reports"
+
+msgid "IDS_ST_MBODY_APP_RANKINGS_SWA"
+msgstr "App rankings"
+
+msgid "IDS_ST_MBODY_DATA_STATISTICS_SWA"
+msgstr "Data statistics"
+
+msgid "IDS_ST_MBODY_RULES_AND_PATTERNS_SWA"
+msgstr "Rules and patterns"
+
+msgid "IDS_ST_NPBODY_NO_REPORTS_SWA"
+msgstr "No reports"
+
+msgid "IDS_ST_HEADER_SETTINGS_SWA"
+msgstr "Settings"
+
+msgid "IDS_ST_MBODY_KEEP_LOGS_SWA"
+msgstr "Keep logs"
+
+msgid "IDS_LOGS_CLEANED"
+msgstr "Logs cleaned"
+
+msgid "IDS_LOGS_CLEANED_FAILED"
+msgstr "Failed to clean logs"
+
+msgid "IDS_ST_OPT_1_WEEK_SWA"
+msgstr "1 week"
+
+msgid "IDS_ST_OPT_1_DAY_SWA"
+msgstr "1 day"
+
+msgid "IDS_ST_OPT_1_MONTH_SWA"
+msgstr "1 month"
+
+msgid "IDS_ST_HEADER_REPORT_DETAILS_SWA"
+msgstr "Report details"
+
+msgid "IDS_ST_BODY_CATEGORY_C_SWA"
+msgstr "Category:"
+
+msgid "IDS_ST_BODY_APP_C_SWA"
+msgstr "App:"
+
+msgid "IDS_ST_BODY_DESTINATION_C_SWA"
+msgstr "Destination:"
+
+msgid "IDS_ST_BODY_PATTERN_C_SWA"
+msgstr "Pattern:"
+
+msgid "IDS_ST_BODY_DLP_ACTION"
+msgstr "Action"
+
+msgid "IDS_ST_BODY_PACKET_C_SWA"
+msgstr "Packet:"
+
+msgid "IDS_ST_BODY_DLP_ACTION_ALLOW"
+msgstr "Allow"
+
+msgid "IDS_ST_BODY_DLP_ACTION_DENY"
+msgstr "Deny"
+
+msgid "IDS_ST_BODY_DLP_ACTION_SANITIZE"
+msgstr "Sanitize"
+
+msgid "IDS_ST_BODY_DLP_ACTION_ALL_RULES"
+msgstr "All Rules"
+
+msgid "IDS_ST_OPT_QUICK_M_PROTECTION_MODE_SWA"
+msgstr "Quick"
+
+msgid "IDS_ST_SBODY_CREATE_RULES_QUICKLY_AND_EASILY_SWA"
+msgstr "Create rules quickly and easily."
+
+msgid "IDS_ST_MBODY_CUSTOM_SWA"
+msgstr "Custom"
+
+msgid "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"
+msgstr "Create rules from scratch to give you full control of your data protection. Use this option to create non-standard rules."
+
+msgid "IDS_ST_HEADER_CUSTOM_PROTECTION_MODE_SWA"
+msgstr "Custom protection mode"
+
+msgid "IDS_ST_TAB_RULES_SWA"
+msgstr "Rules"
+
+msgid "IDS_ST_TAB_PATTERNS_SWA"
+msgstr "Patterns"
+
+msgid "IDS_ST_HEADER_SELECT_TEMPLATE_SWA"
+msgstr "Select template"
+
+msgid "IDS_ST_HEADER_SELECT_APPS_SWA"
+msgstr "Select apps"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_CHOOSE_ACTION"
+msgstr "Select Action"
+
+msgid "IDS_ST_ACBUTTON_NEXT_SWA"
+msgstr "NEXT"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_OK"
+msgstr "OK"
+
+msgid "IDS_ST_ACBUTTON_DONE_SWA"
+msgstr "DONE"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_RULE_CREATED_MESSAGE"
+msgstr "Rule created."
+
+msgid "IDS_ST_TPOP_RULE_DELETED_SWA"
+msgstr "Rule deleted."
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_DELETE_RULE_POPUP_TITLE"
+msgstr "Delete Rule"
+
+msgid "IDS_ST_HEADER_DELETE_PATTERNS_SWA"
+msgstr "Delete patterns"
+
+msgid "IDS_ST_POP_THIS_RULE_WILL_BE_DELETED_ABB_SWA"
+msgstr "This rule will be deleted."
+
+msgid "IDS_ST_HEADER_CREATE_PATTERN_SWA"
+msgstr "Create pattern"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_PATTERN"
+msgstr "Custom"
+
+msgid "IDS_ST_TPOP_PD_PATTERNS_DELETED_SWA"
+msgstr "%d patterns deleted."
+
+msgid "IDS_ST_OPT_EDIT_SWA"
+msgstr "Edit"
+
+msgid "IDS_ST_OPT_CREATE_SWA"
+msgstr "Create"
+
+msgid "IDS_ST_OPT_ALL_PATTERNS_SWA"
+msgstr "All patterns"
+
+msgid "IDS_ST_BODY_NAME_SWA"
+msgstr "Name"
+
+msgid "IDS_ST_BODY_DESCRIPTION_SWA"
+msgstr "Description"
+
+msgid "IDS_ST_BODY_CATEGORY_SWA"
+msgstr "Category"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CATEGORY_NAME"
+msgstr "Category name"
+
+msgid "IDS_ST_OPT_STRING_MATCH_SWA"
+msgstr "String match"
+
+msgid "IDS_ST_OPT_REGULAR_EXPRESSION_SWA"
+msgstr "Regular expression"
+
+msgid "IDS_ST_POP_PD_PATTERNS_WILL_BE_DELETED_ABB_SWA"
+msgstr "%d patterns will be deleted."
+
+msgid "IDS_ST_POP_THIS_REPORT_WILL_BE_DELETED_ABB_SWA"
+msgstr "This report will be deleted."
+
+msgid "IDS_ST_OPT_DELETE_SWA"
+msgstr "Delete"
+
+msgid "IDS_ST_HEADER_DELETE_REPORT_SWA"
+msgstr "Delete report"
+
+msgid "IDS_ST_POP_PD_REPORTS_WILL_BE_DELETED_ABB_SWA"
+msgstr "%d reports will be deleted."
+
+msgid "IDS_ST_TPOP_1_REPORT_DELETED_SWA"
+msgstr "1 report deleted."
+
+msgid "IDS_ST_MBODY_SELECT_ALL_SWA"
+msgstr "Select all"
+
+msgid "IDS_ST_ACBUTTON_DELETE_SWA"
+msgstr "DELETE"
+
+msgid "IDS_ST_ACBUTTON_CANCEL_SWA"
+msgstr "CANCEL"
+
+msgid "IDS_ST_TPOP_PD_REPORTS_DELETED_SWA"
+msgstr "%d reports deleted."
+
+msgid "IDS_ST_HEADER_SELECT_ITEMS_SWA"
+msgstr "Select items"
+
+msgid "IDS_ST_HEADER_PD_SELECTED_SWA"
+msgstr "%d selected"
+
+msgid "IDS_ST_TPOP_BASIC_PROTECTION_MODE_TURNED_ON_SWA"
+msgstr "Basic protection mode turned on."
+
+msgid "IDS_ST_TPOP_RULE_CREATED_SWA"
+msgstr "Rule created. Custom protection mode turned on."
+
+msgid "IDS_ST_TPOP_ADVANCED_PROTECTION_MODE_TURNED_ON_SWA"
+msgstr "Advanced protection mode turned on."
+
+msgid "IDS_ST_HEADER_DETAILS_SWA"
+msgstr "Details"
+
+msgid "IDS_ST_BODY_STRING_TYPE_SWA"
+msgstr "String type"
+
+msgid "IDS_ST_BODY_SEARCH_TERM_SWA"
+msgstr "Search term"
+
+msgid "IDS_ST_BODY_LEAKS_CAPTURED_SWA"
+msgstr "Leaks captured"
+
+msgid "IDS_ST_SBODY_TOTAL_LEAKS_SWA"
+msgstr "Total leaks"
+
+msgid "IDS_ST_HEADER_RULE_DETAILS_SWA"
+msgstr "Rule details"
+
+msgid "IDS_ST_HEADER_PATTERN_DETAILS_SWA"
+msgstr "Pattern details"
diff --git a/po/en_US.po b/po/en_US.po
index cf9a1fb..e833d9f 100755
--- a/po/en_US.po
+++ b/po/en_US.po
@@ -31,3 +31,272 @@ msgstr "%d times"
msgid "IDS_ST_HEADER_PRIVACY_AND_SECURITY_ABB"
msgstr "Privacy and security"
+msgid "IDS_ST_HEADER_DATA_LEAK_MONITOR_SWA"
+msgstr "Data leak monitor"
+
+msgid "IDS_ST_MBODY_DATA_LEAK_MONITOR_SWA"
+msgstr "Data leak monitor"
+
+msgid "IDS_ST_SBODY_PREVENT_APPS_FROM_LEAKING_YOUR_SENSITIVE_DATA_WITHOUT_AUTHORISATION_SWA"
+msgstr "Prevent apps from leaking your sensitive data without authorisation."
+
+msgid "IDS_ST_SBODY_TO_ALLOW_THIS_FUNCTION_TO_MONITOR_YOUR_PERSONAL_INFORMATION_YOU_NEED_TO_SET_UP_YOUR_PROFILE_IN_CONTACTS_SWA"
+msgstr "To allow this function to monitor your personal information, you need to set up your profile in Contacts."
+
+msgid "IDS_ST_MBODY_PROTECTION_MODE_SWA"
+msgstr "Protection mode"
+
+msgid "IDS_ST_MBODY_BASIC_M_MODE_SWA"
+msgstr "Basic"
+
+msgid "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"
+msgstr "Monitor your main sensitive data to prevent it from being leaked by most apps. This mode is suitable for regular users."
+
+msgid "IDS_ST_MBODY_ADVANCED_M_MODE_SWA"
+msgstr "Advanced"
+
+msgid "IDS_ST_SBODY_SET_UP_STRICT_RULES_TO_PREVENT_DATA_LEAKAGE_SWA"
+msgstr "Set up strict rules to prevent data leakage."
+
+msgid "IDS_ST_SBODY_THIS_MODE_WILL_AFFECT_APP_PERFORMANCE_SWA"
+msgstr "This mode will affect app performance."
+
+msgid "IDS_ST_POP_SOME_APPS_MAY_BE_BLOCKED_SWA"
+msgstr "Some apps may be blocked."
+
+msgid "IDS_ST_HEADER_TURN_ON_ADVANCED_PROTECTION_MODE_SWA"
+msgstr "Turn on Advanced protection mode"
+
+msgid "IDS_ST_MBODY_CUSTOM_M_MODE_SWA"
+msgstr "Custom"
+
+msgid "IDS_ST_SBODY_CHANGE_DEFAULT_RULES_AND_PATTERNS_AND_CREATE_YOUR_OWN_TO_SET_UP_A_CUSTOMISED_PROTECTION_MODE_SWA"
+msgstr "Change default rules and patterns and create your own to set up a customised protection mode."
+
+msgid "IDS_ST_HEADER_REPORTS_SWA"
+msgstr "Reports"
+
+msgid "IDS_ST_MBODY_FULL_REPORTS_SWA"
+msgstr "Full reports"
+
+msgid "IDS_ST_MBODY_APP_RANKINGS_SWA"
+msgstr "App rankings"
+
+msgid "IDS_ST_MBODY_DATA_STATISTICS_SWA"
+msgstr "Data statistics"
+
+msgid "IDS_ST_MBODY_RULES_AND_PATTERNS_SWA"
+msgstr "Rules and patterns"
+
+msgid "IDS_ST_NPBODY_NO_REPORTS_SWA"
+msgstr "No reports"
+
+msgid "IDS_ST_HEADER_SETTINGS_SWA"
+msgstr "Settings"
+
+msgid "IDS_ST_MBODY_KEEP_LOGS_SWA"
+msgstr "Keep logs"
+
+msgid "IDS_LOGS_CLEANED"
+msgstr "Logs cleaned"
+
+msgid "IDS_LOGS_CLEANED_FAILED"
+msgstr "Failed to clean logs"
+
+msgid "IDS_ST_OPT_1_WEEK_SWA"
+msgstr "1 week"
+
+msgid "IDS_ST_OPT_1_DAY_SWA"
+msgstr "1 day"
+
+msgid "IDS_ST_OPT_1_MONTH_SWA"
+msgstr "1 month"
+
+msgid "IDS_ST_HEADER_REPORT_DETAILS_SWA"
+msgstr "Report details"
+
+msgid "IDS_ST_BODY_CATEGORY_C_SWA"
+msgstr "Category:"
+
+msgid "IDS_ST_BODY_APP_C_SWA"
+msgstr "App:"
+
+msgid "IDS_ST_BODY_DESTINATION_C_SWA"
+msgstr "Destination:"
+
+msgid "IDS_ST_BODY_PATTERN_C_SWA"
+msgstr "Pattern:"
+
+msgid "IDS_ST_BODY_DLP_ACTION"
+msgstr "Action"
+
+msgid "IDS_ST_BODY_PACKET_C_SWA"
+msgstr "Packet:"
+
+msgid "IDS_ST_BODY_DLP_ACTION_ALLOW"
+msgstr "Allow"
+
+msgid "IDS_ST_BODY_DLP_ACTION_DENY"
+msgstr "Deny"
+
+msgid "IDS_ST_BODY_DLP_ACTION_SANITIZE"
+msgstr "Sanitize"
+
+msgid "IDS_ST_BODY_DLP_ACTION_ALL_RULES"
+msgstr "All Rules"
+
+msgid "IDS_ST_OPT_QUICK_M_PROTECTION_MODE_SWA"
+msgstr "Quick"
+
+msgid "IDS_ST_SBODY_CREATE_RULES_QUICKLY_AND_EASILY_SWA"
+msgstr "Create rules quickly and easily."
+
+msgid "IDS_ST_MBODY_CUSTOM_SWA"
+msgstr "Custom"
+
+msgid "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"
+msgstr "Create rules from scratch to give you full control of your data protection. Use this option to create non-standard rules."
+
+msgid "IDS_ST_HEADER_CUSTOM_PROTECTION_MODE_SWA"
+msgstr "Custom protection mode"
+
+msgid "IDS_ST_TAB_RULES_SWA"
+msgstr "Rules"
+
+msgid "IDS_ST_TAB_PATTERNS_SWA"
+msgstr "Patterns"
+
+msgid "IDS_ST_HEADER_SELECT_TEMPLATE_SWA"
+msgstr "Select template"
+
+msgid "IDS_ST_HEADER_SELECT_APPS_SWA"
+msgstr "Select apps"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_CHOOSE_ACTION"
+msgstr "Select Action"
+
+msgid "IDS_ST_ACBUTTON_NEXT_SWA"
+msgstr "NEXT"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_OK"
+msgstr "OK"
+
+msgid "IDS_ST_ACBUTTON_DONE_SWA"
+msgstr "DONE"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_RULE_CREATED_MESSAGE"
+msgstr "Rule created."
+
+msgid "IDS_ST_TPOP_RULE_DELETED_SWA"
+msgstr "Rule deleted."
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_DELETE_RULE_POPUP_TITLE"
+msgstr "Delete Rule"
+
+msgid "IDS_ST_HEADER_DELETE_PATTERNS_SWA"
+msgstr "Delete patterns"
+
+msgid "IDS_ST_POP_THIS_RULE_WILL_BE_DELETED_ABB_SWA"
+msgstr "This rule will be deleted."
+
+msgid "IDS_ST_HEADER_CREATE_PATTERN_SWA"
+msgstr "Create pattern"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_PATTERN"
+msgstr "Custom"
+
+msgid "IDS_ST_TPOP_PD_PATTERNS_DELETED_SWA"
+msgstr "%d patterns deleted."
+
+msgid "IDS_ST_OPT_EDIT_SWA"
+msgstr "Edit"
+
+msgid "IDS_ST_OPT_CREATE_SWA"
+msgstr "Create"
+
+msgid "IDS_ST_OPT_ALL_PATTERNS_SWA"
+msgstr "All patterns"
+
+msgid "IDS_ST_BODY_NAME_SWA"
+msgstr "Name"
+
+msgid "IDS_ST_BODY_DESCRIPTION_SWA"
+msgstr "Description"
+
+msgid "IDS_ST_BODY_CATEGORY_SWA"
+msgstr "Category"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CATEGORY_NAME"
+msgstr "Category name"
+
+msgid "IDS_ST_OPT_STRING_MATCH_SWA"
+msgstr "String match"
+
+msgid "IDS_ST_OPT_REGULAR_EXPRESSION_SWA"
+msgstr "Regular expression"
+
+msgid "IDS_ST_POP_PD_PATTERNS_WILL_BE_DELETED_ABB_SWA"
+msgstr "%d patterns will be deleted."
+
+msgid "IDS_ST_POP_THIS_REPORT_WILL_BE_DELETED_ABB_SWA"
+msgstr "This report will be deleted."
+
+msgid "IDS_ST_OPT_DELETE_SWA"
+msgstr "Delete"
+
+msgid "IDS_ST_HEADER_DELETE_REPORT_SWA"
+msgstr "Delete report"
+
+msgid "IDS_ST_POP_PD_REPORTS_WILL_BE_DELETED_ABB_SWA"
+msgstr "%d reports will be deleted."
+
+msgid "IDS_ST_TPOP_1_REPORT_DELETED_SWA"
+msgstr "1 report deleted."
+
+msgid "IDS_ST_MBODY_SELECT_ALL_SWA"
+msgstr "Select all"
+
+msgid "IDS_ST_ACBUTTON_DELETE_SWA"
+msgstr "DELETE"
+
+msgid "IDS_ST_ACBUTTON_CANCEL_SWA"
+msgstr "CANCEL"
+
+msgid "IDS_ST_TPOP_PD_REPORTS_DELETED_SWA"
+msgstr "%d reports deleted."
+
+msgid "IDS_ST_HEADER_SELECT_ITEMS_SWA"
+msgstr "Select items"
+
+msgid "IDS_ST_HEADER_PD_SELECTED_SWA"
+msgstr "%d selected"
+
+msgid "IDS_ST_TPOP_BASIC_PROTECTION_MODE_TURNED_ON_SWA"
+msgstr "Basic protection mode turned on."
+
+msgid "IDS_ST_TPOP_RULE_CREATED_SWA"
+msgstr "Rule created. Custom protection mode turned on."
+
+msgid "IDS_ST_TPOP_ADVANCED_PROTECTION_MODE_TURNED_ON_SWA"
+msgstr "Advanced protection mode turned on."
+
+msgid "IDS_ST_HEADER_DETAILS_SWA"
+msgstr "Details"
+
+msgid "IDS_ST_BODY_STRING_TYPE_SWA"
+msgstr "String type"
+
+msgid "IDS_ST_BODY_SEARCH_TERM_SWA"
+msgstr "Search term"
+
+msgid "IDS_ST_BODY_LEAKS_CAPTURED_SWA"
+msgstr "Leaks captured"
+
+msgid "IDS_ST_SBODY_TOTAL_LEAKS_SWA"
+msgstr "Total leaks"
+
+msgid "IDS_ST_HEADER_RULE_DETAILS_SWA"
+msgstr "Rule details"
+
+msgid "IDS_ST_HEADER_PATTERN_DETAILS_SWA"
+msgstr "Pattern details"
diff --git a/po/es_ES.po b/po/es_ES.po
index 339d344..191e166 100755
--- a/po/es_ES.po
+++ b/po/es_ES.po
@@ -31,3 +31,272 @@ msgstr "%d veces"
msgid "IDS_ST_HEADER_PRIVACY_AND_SECURITY_ABB"
msgstr "Privacidad y seguridad"
+msgid "IDS_ST_HEADER_DATA_LEAK_MONITOR_SWA"
+msgstr "Data leak monitor"
+
+msgid "IDS_ST_MBODY_DATA_LEAK_MONITOR_SWA"
+msgstr "Data leak monitor"
+
+msgid "IDS_ST_SBODY_PREVENT_APPS_FROM_LEAKING_YOUR_SENSITIVE_DATA_WITHOUT_AUTHORISATION_SWA"
+msgstr "Prevent apps from leaking your sensitive data without authorisation."
+
+msgid "IDS_ST_SBODY_TO_ALLOW_THIS_FUNCTION_TO_MONITOR_YOUR_PERSONAL_INFORMATION_YOU_NEED_TO_SET_UP_YOUR_PROFILE_IN_CONTACTS_SWA"
+msgstr "To allow this function to monitor your personal information, you need to set up your profile in Contacts."
+
+msgid "IDS_ST_MBODY_PROTECTION_MODE_SWA"
+msgstr "Protection mode"
+
+msgid "IDS_ST_MBODY_BASIC_M_MODE_SWA"
+msgstr "Basic"
+
+msgid "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"
+msgstr "Monitor your main sensitive data to prevent it from being leaked by most apps. This mode is suitable for regular users."
+
+msgid "IDS_ST_MBODY_ADVANCED_M_MODE_SWA"
+msgstr "Advanced"
+
+msgid "IDS_ST_SBODY_SET_UP_STRICT_RULES_TO_PREVENT_DATA_LEAKAGE_SWA"
+msgstr "Set up strict rules to prevent data leakage."
+
+msgid "IDS_ST_SBODY_THIS_MODE_WILL_AFFECT_APP_PERFORMANCE_SWA"
+msgstr "This mode will affect app performance."
+
+msgid "IDS_ST_POP_SOME_APPS_MAY_BE_BLOCKED_SWA"
+msgstr "Some apps may be blocked."
+
+msgid "IDS_ST_HEADER_TURN_ON_ADVANCED_PROTECTION_MODE_SWA"
+msgstr "Turn on Advanced protection mode"
+
+msgid "IDS_ST_MBODY_CUSTOM_M_MODE_SWA"
+msgstr "Custom"
+
+msgid "IDS_ST_SBODY_CHANGE_DEFAULT_RULES_AND_PATTERNS_AND_CREATE_YOUR_OWN_TO_SET_UP_A_CUSTOMISED_PROTECTION_MODE_SWA"
+msgstr "Change default rules and patterns and create your own to set up a customised protection mode."
+
+msgid "IDS_ST_HEADER_REPORTS_SWA"
+msgstr "Reports"
+
+msgid "IDS_ST_MBODY_FULL_REPORTS_SWA"
+msgstr "Full reports"
+
+msgid "IDS_ST_MBODY_APP_RANKINGS_SWA"
+msgstr "App rankings"
+
+msgid "IDS_ST_MBODY_DATA_STATISTICS_SWA"
+msgstr "Data statistics"
+
+msgid "IDS_ST_MBODY_RULES_AND_PATTERNS_SWA"
+msgstr "Rules and patterns"
+
+msgid "IDS_ST_NPBODY_NO_REPORTS_SWA"
+msgstr "No reports"
+
+msgid "IDS_ST_HEADER_SETTINGS_SWA"
+msgstr "Settings"
+
+msgid "IDS_ST_MBODY_KEEP_LOGS_SWA"
+msgstr "Keep logs"
+
+msgid "IDS_LOGS_CLEANED"
+msgstr "Logs cleaned"
+
+msgid "IDS_LOGS_CLEANED_FAILED"
+msgstr "Failed to clean logs"
+
+msgid "IDS_ST_OPT_1_WEEK_SWA"
+msgstr "1 week"
+
+msgid "IDS_ST_OPT_1_DAY_SWA"
+msgstr "1 day"
+
+msgid "IDS_ST_OPT_1_MONTH_SWA"
+msgstr "1 month"
+
+msgid "IDS_ST_HEADER_REPORT_DETAILS_SWA"
+msgstr "Report details"
+
+msgid "IDS_ST_BODY_CATEGORY_C_SWA"
+msgstr "Category:"
+
+msgid "IDS_ST_BODY_APP_C_SWA"
+msgstr "App:"
+
+msgid "IDS_ST_BODY_DESTINATION_C_SWA"
+msgstr "Destination:"
+
+msgid "IDS_ST_BODY_PATTERN_C_SWA"
+msgstr "Pattern:"
+
+msgid "IDS_ST_BODY_DLP_ACTION"
+msgstr "Action"
+
+msgid "IDS_ST_BODY_PACKET_C_SWA"
+msgstr "Packet:"
+
+msgid "IDS_ST_BODY_DLP_ACTION_ALLOW"
+msgstr "Allow"
+
+msgid "IDS_ST_BODY_DLP_ACTION_DENY"
+msgstr "Deny"
+
+msgid "IDS_ST_BODY_DLP_ACTION_SANITIZE"
+msgstr "Sanitize"
+
+msgid "IDS_ST_BODY_DLP_ACTION_ALL_RULES"
+msgstr "All Rules"
+
+msgid "IDS_ST_OPT_QUICK_M_PROTECTION_MODE_SWA"
+msgstr "Quick"
+
+msgid "IDS_ST_SBODY_CREATE_RULES_QUICKLY_AND_EASILY_SWA"
+msgstr "Create rules quickly and easily."
+
+msgid "IDS_ST_MBODY_CUSTOM_SWA"
+msgstr "Custom"
+
+msgid "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"
+msgstr "Create rules from scratch to give you full control of your data protection. Use this option to create non-standard rules."
+
+msgid "IDS_ST_HEADER_CUSTOM_PROTECTION_MODE_SWA"
+msgstr "Custom protection mode"
+
+msgid "IDS_ST_TAB_RULES_SWA"
+msgstr "Rules"
+
+msgid "IDS_ST_TAB_PATTERNS_SWA"
+msgstr "Patterns"
+
+msgid "IDS_ST_HEADER_SELECT_TEMPLATE_SWA"
+msgstr "Select template"
+
+msgid "IDS_ST_HEADER_SELECT_APPS_SWA"
+msgstr "Select apps"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_CHOOSE_ACTION"
+msgstr "Select Action"
+
+msgid "IDS_ST_ACBUTTON_NEXT_SWA"
+msgstr "NEXT"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_OK"
+msgstr "OK"
+
+msgid "IDS_ST_ACBUTTON_DONE_SWA"
+msgstr "DONE"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_RULE_CREATED_MESSAGE"
+msgstr "Rule created."
+
+msgid "IDS_ST_TPOP_RULE_DELETED_SWA"
+msgstr "Rule deleted."
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_DELETE_RULE_POPUP_TITLE"
+msgstr "Delete Rule"
+
+msgid "IDS_ST_HEADER_DELETE_PATTERNS_SWA"
+msgstr "Delete patterns"
+
+msgid "IDS_ST_POP_THIS_RULE_WILL_BE_DELETED_ABB_SWA"
+msgstr "This rule will be deleted."
+
+msgid "IDS_ST_HEADER_CREATE_PATTERN_SWA"
+msgstr "Create pattern"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_PATTERN"
+msgstr "Custom"
+
+msgid "IDS_ST_TPOP_PD_PATTERNS_DELETED_SWA"
+msgstr "%d patterns deleted."
+
+msgid "IDS_ST_OPT_EDIT_SWA"
+msgstr "Edit"
+
+msgid "IDS_ST_OPT_CREATE_SWA"
+msgstr "Create"
+
+msgid "IDS_ST_OPT_ALL_PATTERNS_SWA"
+msgstr "All patterns"
+
+msgid "IDS_ST_BODY_NAME_SWA"
+msgstr "Name"
+
+msgid "IDS_ST_BODY_DESCRIPTION_SWA"
+msgstr "Description"
+
+msgid "IDS_ST_BODY_CATEGORY_SWA"
+msgstr "Category"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CATEGORY_NAME"
+msgstr "Category name"
+
+msgid "IDS_ST_OPT_STRING_MATCH_SWA"
+msgstr "String match"
+
+msgid "IDS_ST_OPT_REGULAR_EXPRESSION_SWA"
+msgstr "Regular expression"
+
+msgid "IDS_ST_POP_PD_PATTERNS_WILL_BE_DELETED_ABB_SWA"
+msgstr "%d patterns will be deleted."
+
+msgid "IDS_ST_POP_THIS_REPORT_WILL_BE_DELETED_ABB_SWA"
+msgstr "This report will be deleted."
+
+msgid "IDS_ST_OPT_DELETE_SWA"
+msgstr "Delete"
+
+msgid "IDS_ST_HEADER_DELETE_REPORT_SWA"
+msgstr "Delete report"
+
+msgid "IDS_ST_POP_PD_REPORTS_WILL_BE_DELETED_ABB_SWA"
+msgstr "%d reports will be deleted."
+
+msgid "IDS_ST_TPOP_1_REPORT_DELETED_SWA"
+msgstr "1 report deleted."
+
+msgid "IDS_ST_MBODY_SELECT_ALL_SWA"
+msgstr "Select all"
+
+msgid "IDS_ST_ACBUTTON_DELETE_SWA"
+msgstr "DELETE"
+
+msgid "IDS_ST_ACBUTTON_CANCEL_SWA"
+msgstr "CANCEL"
+
+msgid "IDS_ST_TPOP_PD_REPORTS_DELETED_SWA"
+msgstr "%d reports deleted."
+
+msgid "IDS_ST_HEADER_SELECT_ITEMS_SWA"
+msgstr "Select items"
+
+msgid "IDS_ST_HEADER_PD_SELECTED_SWA"
+msgstr "%d selected"
+
+msgid "IDS_ST_TPOP_BASIC_PROTECTION_MODE_TURNED_ON_SWA"
+msgstr "Basic protection mode turned on."
+
+msgid "IDS_ST_TPOP_RULE_CREATED_SWA"
+msgstr "Rule created. Custom protection mode turned on."
+
+msgid "IDS_ST_TPOP_ADVANCED_PROTECTION_MODE_TURNED_ON_SWA"
+msgstr "Advanced protection mode turned on."
+
+msgid "IDS_ST_HEADER_DETAILS_SWA"
+msgstr "Details"
+
+msgid "IDS_ST_BODY_STRING_TYPE_SWA"
+msgstr "String type"
+
+msgid "IDS_ST_BODY_SEARCH_TERM_SWA"
+msgstr "Search term"
+
+msgid "IDS_ST_BODY_LEAKS_CAPTURED_SWA"
+msgstr "Leaks captured"
+
+msgid "IDS_ST_SBODY_TOTAL_LEAKS_SWA"
+msgstr "Total leaks"
+
+msgid "IDS_ST_HEADER_RULE_DETAILS_SWA"
+msgstr "Rule details"
+
+msgid "IDS_ST_HEADER_PATTERN_DETAILS_SWA"
+msgstr "Pattern details"
diff --git a/po/es_US.po b/po/es_US.po
index c5b0fa9..6664827 100755
--- a/po/es_US.po
+++ b/po/es_US.po
@@ -31,3 +31,272 @@ msgstr "%d veces"
msgid "IDS_ST_HEADER_PRIVACY_AND_SECURITY_ABB"
msgstr "Privacidad y seguridad"
+msgid "IDS_ST_HEADER_DATA_LEAK_MONITOR_SWA"
+msgstr "Data leak monitor"
+
+msgid "IDS_ST_MBODY_DATA_LEAK_MONITOR_SWA"
+msgstr "Data leak monitor"
+
+msgid "IDS_ST_SBODY_PREVENT_APPS_FROM_LEAKING_YOUR_SENSITIVE_DATA_WITHOUT_AUTHORISATION_SWA"
+msgstr "Prevent apps from leaking your sensitive data without authorisation."
+
+msgid "IDS_ST_SBODY_TO_ALLOW_THIS_FUNCTION_TO_MONITOR_YOUR_PERSONAL_INFORMATION_YOU_NEED_TO_SET_UP_YOUR_PROFILE_IN_CONTACTS_SWA"
+msgstr "To allow this function to monitor your personal information, you need to set up your profile in Contacts."
+
+msgid "IDS_ST_MBODY_PROTECTION_MODE_SWA"
+msgstr "Protection mode"
+
+msgid "IDS_ST_MBODY_BASIC_M_MODE_SWA"
+msgstr "Basic"
+
+msgid "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"
+msgstr "Monitor your main sensitive data to prevent it from being leaked by most apps. This mode is suitable for regular users."
+
+msgid "IDS_ST_MBODY_ADVANCED_M_MODE_SWA"
+msgstr "Advanced"
+
+msgid "IDS_ST_SBODY_SET_UP_STRICT_RULES_TO_PREVENT_DATA_LEAKAGE_SWA"
+msgstr "Set up strict rules to prevent data leakage."
+
+msgid "IDS_ST_SBODY_THIS_MODE_WILL_AFFECT_APP_PERFORMANCE_SWA"
+msgstr "This mode will affect app performance."
+
+msgid "IDS_ST_POP_SOME_APPS_MAY_BE_BLOCKED_SWA"
+msgstr "Some apps may be blocked."
+
+msgid "IDS_ST_HEADER_TURN_ON_ADVANCED_PROTECTION_MODE_SWA"
+msgstr "Turn on Advanced protection mode"
+
+msgid "IDS_ST_MBODY_CUSTOM_M_MODE_SWA"
+msgstr "Custom"
+
+msgid "IDS_ST_SBODY_CHANGE_DEFAULT_RULES_AND_PATTERNS_AND_CREATE_YOUR_OWN_TO_SET_UP_A_CUSTOMISED_PROTECTION_MODE_SWA"
+msgstr "Change default rules and patterns and create your own to set up a customised protection mode."
+
+msgid "IDS_ST_HEADER_REPORTS_SWA"
+msgstr "Reports"
+
+msgid "IDS_ST_MBODY_FULL_REPORTS_SWA"
+msgstr "Full reports"
+
+msgid "IDS_ST_MBODY_APP_RANKINGS_SWA"
+msgstr "App rankings"
+
+msgid "IDS_ST_MBODY_DATA_STATISTICS_SWA"
+msgstr "Data statistics"
+
+msgid "IDS_ST_MBODY_RULES_AND_PATTERNS_SWA"
+msgstr "Rules and patterns"
+
+msgid "IDS_ST_NPBODY_NO_REPORTS_SWA"
+msgstr "No reports"
+
+msgid "IDS_ST_HEADER_SETTINGS_SWA"
+msgstr "Settings"
+
+msgid "IDS_ST_MBODY_KEEP_LOGS_SWA"
+msgstr "Keep logs"
+
+msgid "IDS_LOGS_CLEANED"
+msgstr "Logs cleaned"
+
+msgid "IDS_LOGS_CLEANED_FAILED"
+msgstr "Failed to clean logs"
+
+msgid "IDS_ST_OPT_1_WEEK_SWA"
+msgstr "1 week"
+
+msgid "IDS_ST_OPT_1_DAY_SWA"
+msgstr "1 day"
+
+msgid "IDS_ST_OPT_1_MONTH_SWA"
+msgstr "1 month"
+
+msgid "IDS_ST_HEADER_REPORT_DETAILS_SWA"
+msgstr "Report details"
+
+msgid "IDS_ST_BODY_CATEGORY_C_SWA"
+msgstr "Category:"
+
+msgid "IDS_ST_BODY_APP_C_SWA"
+msgstr "App:"
+
+msgid "IDS_ST_BODY_DESTINATION_C_SWA"
+msgstr "Destination:"
+
+msgid "IDS_ST_BODY_PATTERN_C_SWA"
+msgstr "Pattern:"
+
+msgid "IDS_ST_BODY_DLP_ACTION"
+msgstr "Action"
+
+msgid "IDS_ST_BODY_PACKET_C_SWA"
+msgstr "Packet:"
+
+msgid "IDS_ST_BODY_DLP_ACTION_ALLOW"
+msgstr "Allow"
+
+msgid "IDS_ST_BODY_DLP_ACTION_DENY"
+msgstr "Deny"
+
+msgid "IDS_ST_BODY_DLP_ACTION_SANITIZE"
+msgstr "Sanitize"
+
+msgid "IDS_ST_BODY_DLP_ACTION_ALL_RULES"
+msgstr "All Rules"
+
+msgid "IDS_ST_OPT_QUICK_M_PROTECTION_MODE_SWA"
+msgstr "Quick"
+
+msgid "IDS_ST_SBODY_CREATE_RULES_QUICKLY_AND_EASILY_SWA"
+msgstr "Create rules quickly and easily."
+
+msgid "IDS_ST_MBODY_CUSTOM_SWA"
+msgstr "Custom"
+
+msgid "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"
+msgstr "Create rules from scratch to give you full control of your data protection. Use this option to create non-standard rules."
+
+msgid "IDS_ST_HEADER_CUSTOM_PROTECTION_MODE_SWA"
+msgstr "Custom protection mode"
+
+msgid "IDS_ST_TAB_RULES_SWA"
+msgstr "Rules"
+
+msgid "IDS_ST_TAB_PATTERNS_SWA"
+msgstr "Patterns"
+
+msgid "IDS_ST_HEADER_SELECT_TEMPLATE_SWA"
+msgstr "Select template"
+
+msgid "IDS_ST_HEADER_SELECT_APPS_SWA"
+msgstr "Select apps"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_CHOOSE_ACTION"
+msgstr "Select Action"
+
+msgid "IDS_ST_ACBUTTON_NEXT_SWA"
+msgstr "NEXT"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_OK"
+msgstr "OK"
+
+msgid "IDS_ST_ACBUTTON_DONE_SWA"
+msgstr "DONE"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_RULE_CREATED_MESSAGE"
+msgstr "Rule created."
+
+msgid "IDS_ST_TPOP_RULE_DELETED_SWA"
+msgstr "Rule deleted."
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_DELETE_RULE_POPUP_TITLE"
+msgstr "Delete Rule"
+
+msgid "IDS_ST_HEADER_DELETE_PATTERNS_SWA"
+msgstr "Delete patterns"
+
+msgid "IDS_ST_POP_THIS_RULE_WILL_BE_DELETED_ABB_SWA"
+msgstr "This rule will be deleted."
+
+msgid "IDS_ST_HEADER_CREATE_PATTERN_SWA"
+msgstr "Create pattern"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_PATTERN"
+msgstr "Custom"
+
+msgid "IDS_ST_TPOP_PD_PATTERNS_DELETED_SWA"
+msgstr "%d patterns deleted."
+
+msgid "IDS_ST_OPT_EDIT_SWA"
+msgstr "Edit"
+
+msgid "IDS_ST_OPT_CREATE_SWA"
+msgstr "Create"
+
+msgid "IDS_ST_OPT_ALL_PATTERNS_SWA"
+msgstr "All patterns"
+
+msgid "IDS_ST_BODY_NAME_SWA"
+msgstr "Name"
+
+msgid "IDS_ST_BODY_DESCRIPTION_SWA"
+msgstr "Description"
+
+msgid "IDS_ST_BODY_CATEGORY_SWA"
+msgstr "Category"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CATEGORY_NAME"
+msgstr "Category name"
+
+msgid "IDS_ST_OPT_STRING_MATCH_SWA"
+msgstr "String match"
+
+msgid "IDS_ST_OPT_REGULAR_EXPRESSION_SWA"
+msgstr "Regular expression"
+
+msgid "IDS_ST_POP_PD_PATTERNS_WILL_BE_DELETED_ABB_SWA"
+msgstr "%d patterns will be deleted."
+
+msgid "IDS_ST_POP_THIS_REPORT_WILL_BE_DELETED_ABB_SWA"
+msgstr "This report will be deleted."
+
+msgid "IDS_ST_OPT_DELETE_SWA"
+msgstr "Delete"
+
+msgid "IDS_ST_HEADER_DELETE_REPORT_SWA"
+msgstr "Delete report"
+
+msgid "IDS_ST_POP_PD_REPORTS_WILL_BE_DELETED_ABB_SWA"
+msgstr "%d reports will be deleted."
+
+msgid "IDS_ST_TPOP_1_REPORT_DELETED_SWA"
+msgstr "1 report deleted."
+
+msgid "IDS_ST_MBODY_SELECT_ALL_SWA"
+msgstr "Select all"
+
+msgid "IDS_ST_ACBUTTON_DELETE_SWA"
+msgstr "DELETE"
+
+msgid "IDS_ST_ACBUTTON_CANCEL_SWA"
+msgstr "CANCEL"
+
+msgid "IDS_ST_TPOP_PD_REPORTS_DELETED_SWA"
+msgstr "%d reports deleted."
+
+msgid "IDS_ST_HEADER_SELECT_ITEMS_SWA"
+msgstr "Select items"
+
+msgid "IDS_ST_HEADER_PD_SELECTED_SWA"
+msgstr "%d selected"
+
+msgid "IDS_ST_TPOP_BASIC_PROTECTION_MODE_TURNED_ON_SWA"
+msgstr "Basic protection mode turned on."
+
+msgid "IDS_ST_TPOP_RULE_CREATED_SWA"
+msgstr "Rule created. Custom protection mode turned on."
+
+msgid "IDS_ST_TPOP_ADVANCED_PROTECTION_MODE_TURNED_ON_SWA"
+msgstr "Advanced protection mode turned on."
+
+msgid "IDS_ST_HEADER_DETAILS_SWA"
+msgstr "Details"
+
+msgid "IDS_ST_BODY_STRING_TYPE_SWA"
+msgstr "String type"
+
+msgid "IDS_ST_BODY_SEARCH_TERM_SWA"
+msgstr "Search term"
+
+msgid "IDS_ST_BODY_LEAKS_CAPTURED_SWA"
+msgstr "Leaks captured"
+
+msgid "IDS_ST_SBODY_TOTAL_LEAKS_SWA"
+msgstr "Total leaks"
+
+msgid "IDS_ST_HEADER_RULE_DETAILS_SWA"
+msgstr "Rule details"
+
+msgid "IDS_ST_HEADER_PATTERN_DETAILS_SWA"
+msgstr "Pattern details"
diff --git a/po/et.po b/po/et.po
index fa62e80..5e890ab 100755
--- a/po/et.po
+++ b/po/et.po
@@ -31,3 +31,272 @@ msgstr "%d korda"
msgid "IDS_ST_HEADER_PRIVACY_AND_SECURITY_ABB"
msgstr "Privaatsus ja turval."
+msgid "IDS_ST_HEADER_DATA_LEAK_MONITOR_SWA"
+msgstr "Data leak monitor"
+
+msgid "IDS_ST_MBODY_DATA_LEAK_MONITOR_SWA"
+msgstr "Data leak monitor"
+
+msgid "IDS_ST_SBODY_PREVENT_APPS_FROM_LEAKING_YOUR_SENSITIVE_DATA_WITHOUT_AUTHORISATION_SWA"
+msgstr "Prevent apps from leaking your sensitive data without authorisation."
+
+msgid "IDS_ST_SBODY_TO_ALLOW_THIS_FUNCTION_TO_MONITOR_YOUR_PERSONAL_INFORMATION_YOU_NEED_TO_SET_UP_YOUR_PROFILE_IN_CONTACTS_SWA"
+msgstr "To allow this function to monitor your personal information, you need to set up your profile in Contacts."
+
+msgid "IDS_ST_MBODY_PROTECTION_MODE_SWA"
+msgstr "Protection mode"
+
+msgid "IDS_ST_MBODY_BASIC_M_MODE_SWA"
+msgstr "Basic"
+
+msgid "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"
+msgstr "Monitor your main sensitive data to prevent it from being leaked by most apps. This mode is suitable for regular users."
+
+msgid "IDS_ST_MBODY_ADVANCED_M_MODE_SWA"
+msgstr "Advanced"
+
+msgid "IDS_ST_SBODY_SET_UP_STRICT_RULES_TO_PREVENT_DATA_LEAKAGE_SWA"
+msgstr "Set up strict rules to prevent data leakage."
+
+msgid "IDS_ST_SBODY_THIS_MODE_WILL_AFFECT_APP_PERFORMANCE_SWA"
+msgstr "This mode will affect app performance."
+
+msgid "IDS_ST_POP_SOME_APPS_MAY_BE_BLOCKED_SWA"
+msgstr "Some apps may be blocked."
+
+msgid "IDS_ST_HEADER_TURN_ON_ADVANCED_PROTECTION_MODE_SWA"
+msgstr "Turn on Advanced protection mode"
+
+msgid "IDS_ST_MBODY_CUSTOM_M_MODE_SWA"
+msgstr "Custom"
+
+msgid "IDS_ST_SBODY_CHANGE_DEFAULT_RULES_AND_PATTERNS_AND_CREATE_YOUR_OWN_TO_SET_UP_A_CUSTOMISED_PROTECTION_MODE_SWA"
+msgstr "Change default rules and patterns and create your own to set up a customised protection mode."
+
+msgid "IDS_ST_HEADER_REPORTS_SWA"
+msgstr "Reports"
+
+msgid "IDS_ST_MBODY_FULL_REPORTS_SWA"
+msgstr "Full reports"
+
+msgid "IDS_ST_MBODY_APP_RANKINGS_SWA"
+msgstr "App rankings"
+
+msgid "IDS_ST_MBODY_DATA_STATISTICS_SWA"
+msgstr "Data statistics"
+
+msgid "IDS_ST_MBODY_RULES_AND_PATTERNS_SWA"
+msgstr "Rules and patterns"
+
+msgid "IDS_ST_NPBODY_NO_REPORTS_SWA"
+msgstr "No reports"
+
+msgid "IDS_ST_HEADER_SETTINGS_SWA"
+msgstr "Settings"
+
+msgid "IDS_ST_MBODY_KEEP_LOGS_SWA"
+msgstr "Keep logs"
+
+msgid "IDS_LOGS_CLEANED"
+msgstr "Logs cleaned"
+
+msgid "IDS_LOGS_CLEANED_FAILED"
+msgstr "Failed to clean logs"
+
+msgid "IDS_ST_OPT_1_WEEK_SWA"
+msgstr "1 week"
+
+msgid "IDS_ST_OPT_1_DAY_SWA"
+msgstr "1 day"
+
+msgid "IDS_ST_OPT_1_MONTH_SWA"
+msgstr "1 month"
+
+msgid "IDS_ST_HEADER_REPORT_DETAILS_SWA"
+msgstr "Report details"
+
+msgid "IDS_ST_BODY_CATEGORY_C_SWA"
+msgstr "Category:"
+
+msgid "IDS_ST_BODY_APP_C_SWA"
+msgstr "App:"
+
+msgid "IDS_ST_BODY_DESTINATION_C_SWA"
+msgstr "Destination:"
+
+msgid "IDS_ST_BODY_PATTERN_C_SWA"
+msgstr "Pattern:"
+
+msgid "IDS_ST_BODY_DLP_ACTION"
+msgstr "Action"
+
+msgid "IDS_ST_BODY_PACKET_C_SWA"
+msgstr "Packet:"
+
+msgid "IDS_ST_BODY_DLP_ACTION_ALLOW"
+msgstr "Allow"
+
+msgid "IDS_ST_BODY_DLP_ACTION_DENY"
+msgstr "Deny"
+
+msgid "IDS_ST_BODY_DLP_ACTION_SANITIZE"
+msgstr "Sanitize"
+
+msgid "IDS_ST_BODY_DLP_ACTION_ALL_RULES"
+msgstr "All Rules"
+
+msgid "IDS_ST_OPT_QUICK_M_PROTECTION_MODE_SWA"
+msgstr "Quick"
+
+msgid "IDS_ST_SBODY_CREATE_RULES_QUICKLY_AND_EASILY_SWA"
+msgstr "Create rules quickly and easily."
+
+msgid "IDS_ST_MBODY_CUSTOM_SWA"
+msgstr "Custom"
+
+msgid "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"
+msgstr "Create rules from scratch to give you full control of your data protection. Use this option to create non-standard rules."
+
+msgid "IDS_ST_HEADER_CUSTOM_PROTECTION_MODE_SWA"
+msgstr "Custom protection mode"
+
+msgid "IDS_ST_TAB_RULES_SWA"
+msgstr "Rules"
+
+msgid "IDS_ST_TAB_PATTERNS_SWA"
+msgstr "Patterns"
+
+msgid "IDS_ST_HEADER_SELECT_TEMPLATE_SWA"
+msgstr "Select template"
+
+msgid "IDS_ST_HEADER_SELECT_APPS_SWA"
+msgstr "Select apps"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_CHOOSE_ACTION"
+msgstr "Select Action"
+
+msgid "IDS_ST_ACBUTTON_NEXT_SWA"
+msgstr "NEXT"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_OK"
+msgstr "OK"
+
+msgid "IDS_ST_ACBUTTON_DONE_SWA"
+msgstr "DONE"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_RULE_CREATED_MESSAGE"
+msgstr "Rule created."
+
+msgid "IDS_ST_TPOP_RULE_DELETED_SWA"
+msgstr "Rule deleted."
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_DELETE_RULE_POPUP_TITLE"
+msgstr "Delete Rule"
+
+msgid "IDS_ST_HEADER_DELETE_PATTERNS_SWA"
+msgstr "Delete patterns"
+
+msgid "IDS_ST_POP_THIS_RULE_WILL_BE_DELETED_ABB_SWA"
+msgstr "This rule will be deleted."
+
+msgid "IDS_ST_HEADER_CREATE_PATTERN_SWA"
+msgstr "Create pattern"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_PATTERN"
+msgstr "Custom"
+
+msgid "IDS_ST_TPOP_PD_PATTERNS_DELETED_SWA"
+msgstr "%d patterns deleted."
+
+msgid "IDS_ST_OPT_EDIT_SWA"
+msgstr "Edit"
+
+msgid "IDS_ST_OPT_CREATE_SWA"
+msgstr "Create"
+
+msgid "IDS_ST_OPT_ALL_PATTERNS_SWA"
+msgstr "All patterns"
+
+msgid "IDS_ST_BODY_NAME_SWA"
+msgstr "Name"
+
+msgid "IDS_ST_BODY_DESCRIPTION_SWA"
+msgstr "Description"
+
+msgid "IDS_ST_BODY_CATEGORY_SWA"
+msgstr "Category"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CATEGORY_NAME"
+msgstr "Category name"
+
+msgid "IDS_ST_OPT_STRING_MATCH_SWA"
+msgstr "String match"
+
+msgid "IDS_ST_OPT_REGULAR_EXPRESSION_SWA"
+msgstr "Regular expression"
+
+msgid "IDS_ST_POP_PD_PATTERNS_WILL_BE_DELETED_ABB_SWA"
+msgstr "%d patterns will be deleted."
+
+msgid "IDS_ST_POP_THIS_REPORT_WILL_BE_DELETED_ABB_SWA"
+msgstr "This report will be deleted."
+
+msgid "IDS_ST_OPT_DELETE_SWA"
+msgstr "Delete"
+
+msgid "IDS_ST_HEADER_DELETE_REPORT_SWA"
+msgstr "Delete report"
+
+msgid "IDS_ST_POP_PD_REPORTS_WILL_BE_DELETED_ABB_SWA"
+msgstr "%d reports will be deleted."
+
+msgid "IDS_ST_TPOP_1_REPORT_DELETED_SWA"
+msgstr "1 report deleted."
+
+msgid "IDS_ST_MBODY_SELECT_ALL_SWA"
+msgstr "Select all"
+
+msgid "IDS_ST_ACBUTTON_DELETE_SWA"
+msgstr "DELETE"
+
+msgid "IDS_ST_ACBUTTON_CANCEL_SWA"
+msgstr "CANCEL"
+
+msgid "IDS_ST_TPOP_PD_REPORTS_DELETED_SWA"
+msgstr "%d reports deleted."
+
+msgid "IDS_ST_HEADER_SELECT_ITEMS_SWA"
+msgstr "Select items"
+
+msgid "IDS_ST_HEADER_PD_SELECTED_SWA"
+msgstr "%d selected"
+
+msgid "IDS_ST_TPOP_BASIC_PROTECTION_MODE_TURNED_ON_SWA"
+msgstr "Basic protection mode turned on."
+
+msgid "IDS_ST_TPOP_RULE_CREATED_SWA"
+msgstr "Rule created. Custom protection mode turned on."
+
+msgid "IDS_ST_TPOP_ADVANCED_PROTECTION_MODE_TURNED_ON_SWA"
+msgstr "Advanced protection mode turned on."
+
+msgid "IDS_ST_HEADER_DETAILS_SWA"
+msgstr "Details"
+
+msgid "IDS_ST_BODY_STRING_TYPE_SWA"
+msgstr "String type"
+
+msgid "IDS_ST_BODY_SEARCH_TERM_SWA"
+msgstr "Search term"
+
+msgid "IDS_ST_BODY_LEAKS_CAPTURED_SWA"
+msgstr "Leaks captured"
+
+msgid "IDS_ST_SBODY_TOTAL_LEAKS_SWA"
+msgstr "Total leaks"
+
+msgid "IDS_ST_HEADER_RULE_DETAILS_SWA"
+msgstr "Rule details"
+
+msgid "IDS_ST_HEADER_PATTERN_DETAILS_SWA"
+msgstr "Pattern details"
diff --git a/po/eu.po b/po/eu.po
index b29867b..206e4d4 100755
--- a/po/eu.po
+++ b/po/eu.po
@@ -31,3 +31,272 @@ msgstr "%d aldiz"
msgid "IDS_ST_HEADER_PRIVACY_AND_SECURITY_ABB"
msgstr "Pribatutas./Segurtasuna"
+msgid "IDS_ST_HEADER_DATA_LEAK_MONITOR_SWA"
+msgstr "Data leak monitor"
+
+msgid "IDS_ST_MBODY_DATA_LEAK_MONITOR_SWA"
+msgstr "Data leak monitor"
+
+msgid "IDS_ST_SBODY_PREVENT_APPS_FROM_LEAKING_YOUR_SENSITIVE_DATA_WITHOUT_AUTHORISATION_SWA"
+msgstr "Prevent apps from leaking your sensitive data without authorisation."
+
+msgid "IDS_ST_SBODY_TO_ALLOW_THIS_FUNCTION_TO_MONITOR_YOUR_PERSONAL_INFORMATION_YOU_NEED_TO_SET_UP_YOUR_PROFILE_IN_CONTACTS_SWA"
+msgstr "To allow this function to monitor your personal information, you need to set up your profile in Contacts."
+
+msgid "IDS_ST_MBODY_PROTECTION_MODE_SWA"
+msgstr "Protection mode"
+
+msgid "IDS_ST_MBODY_BASIC_M_MODE_SWA"
+msgstr "Basic"
+
+msgid "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"
+msgstr "Monitor your main sensitive data to prevent it from being leaked by most apps. This mode is suitable for regular users."
+
+msgid "IDS_ST_MBODY_ADVANCED_M_MODE_SWA"
+msgstr "Advanced"
+
+msgid "IDS_ST_SBODY_SET_UP_STRICT_RULES_TO_PREVENT_DATA_LEAKAGE_SWA"
+msgstr "Set up strict rules to prevent data leakage."
+
+msgid "IDS_ST_SBODY_THIS_MODE_WILL_AFFECT_APP_PERFORMANCE_SWA"
+msgstr "This mode will affect app performance."
+
+msgid "IDS_ST_POP_SOME_APPS_MAY_BE_BLOCKED_SWA"
+msgstr "Some apps may be blocked."
+
+msgid "IDS_ST_HEADER_TURN_ON_ADVANCED_PROTECTION_MODE_SWA"
+msgstr "Turn on Advanced protection mode"
+
+msgid "IDS_ST_MBODY_CUSTOM_M_MODE_SWA"
+msgstr "Custom"
+
+msgid "IDS_ST_SBODY_CHANGE_DEFAULT_RULES_AND_PATTERNS_AND_CREATE_YOUR_OWN_TO_SET_UP_A_CUSTOMISED_PROTECTION_MODE_SWA"
+msgstr "Change default rules and patterns and create your own to set up a customised protection mode."
+
+msgid "IDS_ST_HEADER_REPORTS_SWA"
+msgstr "Reports"
+
+msgid "IDS_ST_MBODY_FULL_REPORTS_SWA"
+msgstr "Full reports"
+
+msgid "IDS_ST_MBODY_APP_RANKINGS_SWA"
+msgstr "App rankings"
+
+msgid "IDS_ST_MBODY_DATA_STATISTICS_SWA"
+msgstr "Data statistics"
+
+msgid "IDS_ST_MBODY_RULES_AND_PATTERNS_SWA"
+msgstr "Rules and patterns"
+
+msgid "IDS_ST_NPBODY_NO_REPORTS_SWA"
+msgstr "No reports"
+
+msgid "IDS_ST_HEADER_SETTINGS_SWA"
+msgstr "Settings"
+
+msgid "IDS_ST_MBODY_KEEP_LOGS_SWA"
+msgstr "Keep logs"
+
+msgid "IDS_LOGS_CLEANED"
+msgstr "Logs cleaned"
+
+msgid "IDS_LOGS_CLEANED_FAILED"
+msgstr "Failed to clean logs"
+
+msgid "IDS_ST_OPT_1_WEEK_SWA"
+msgstr "1 week"
+
+msgid "IDS_ST_OPT_1_DAY_SWA"
+msgstr "1 day"
+
+msgid "IDS_ST_OPT_1_MONTH_SWA"
+msgstr "1 month"
+
+msgid "IDS_ST_HEADER_REPORT_DETAILS_SWA"
+msgstr "Report details"
+
+msgid "IDS_ST_BODY_CATEGORY_C_SWA"
+msgstr "Category:"
+
+msgid "IDS_ST_BODY_APP_C_SWA"
+msgstr "App:"
+
+msgid "IDS_ST_BODY_DESTINATION_C_SWA"
+msgstr "Destination:"
+
+msgid "IDS_ST_BODY_PATTERN_C_SWA"
+msgstr "Pattern:"
+
+msgid "IDS_ST_BODY_DLP_ACTION"
+msgstr "Action"
+
+msgid "IDS_ST_BODY_PACKET_C_SWA"
+msgstr "Packet:"
+
+msgid "IDS_ST_BODY_DLP_ACTION_ALLOW"
+msgstr "Allow"
+
+msgid "IDS_ST_BODY_DLP_ACTION_DENY"
+msgstr "Deny"
+
+msgid "IDS_ST_BODY_DLP_ACTION_SANITIZE"
+msgstr "Sanitize"
+
+msgid "IDS_ST_BODY_DLP_ACTION_ALL_RULES"
+msgstr "All Rules"
+
+msgid "IDS_ST_OPT_QUICK_M_PROTECTION_MODE_SWA"
+msgstr "Quick"
+
+msgid "IDS_ST_SBODY_CREATE_RULES_QUICKLY_AND_EASILY_SWA"
+msgstr "Create rules quickly and easily."
+
+msgid "IDS_ST_MBODY_CUSTOM_SWA"
+msgstr "Custom"
+
+msgid "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"
+msgstr "Create rules from scratch to give you full control of your data protection. Use this option to create non-standard rules."
+
+msgid "IDS_ST_HEADER_CUSTOM_PROTECTION_MODE_SWA"
+msgstr "Custom protection mode"
+
+msgid "IDS_ST_TAB_RULES_SWA"
+msgstr "Rules"
+
+msgid "IDS_ST_TAB_PATTERNS_SWA"
+msgstr "Patterns"
+
+msgid "IDS_ST_HEADER_SELECT_TEMPLATE_SWA"
+msgstr "Select template"
+
+msgid "IDS_ST_HEADER_SELECT_APPS_SWA"
+msgstr "Select apps"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_CHOOSE_ACTION"
+msgstr "Select Action"
+
+msgid "IDS_ST_ACBUTTON_NEXT_SWA"
+msgstr "NEXT"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_OK"
+msgstr "OK"
+
+msgid "IDS_ST_ACBUTTON_DONE_SWA"
+msgstr "DONE"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_RULE_CREATED_MESSAGE"
+msgstr "Rule created."
+
+msgid "IDS_ST_TPOP_RULE_DELETED_SWA"
+msgstr "Rule deleted."
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_DELETE_RULE_POPUP_TITLE"
+msgstr "Delete Rule"
+
+msgid "IDS_ST_HEADER_DELETE_PATTERNS_SWA"
+msgstr "Delete patterns"
+
+msgid "IDS_ST_POP_THIS_RULE_WILL_BE_DELETED_ABB_SWA"
+msgstr "This rule will be deleted."
+
+msgid "IDS_ST_HEADER_CREATE_PATTERN_SWA"
+msgstr "Create pattern"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_PATTERN"
+msgstr "Custom"
+
+msgid "IDS_ST_TPOP_PD_PATTERNS_DELETED_SWA"
+msgstr "%d patterns deleted."
+
+msgid "IDS_ST_OPT_EDIT_SWA"
+msgstr "Edit"
+
+msgid "IDS_ST_OPT_CREATE_SWA"
+msgstr "Create"
+
+msgid "IDS_ST_OPT_ALL_PATTERNS_SWA"
+msgstr "All patterns"
+
+msgid "IDS_ST_BODY_NAME_SWA"
+msgstr "Name"
+
+msgid "IDS_ST_BODY_DESCRIPTION_SWA"
+msgstr "Description"
+
+msgid "IDS_ST_BODY_CATEGORY_SWA"
+msgstr "Category"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CATEGORY_NAME"
+msgstr "Category name"
+
+msgid "IDS_ST_OPT_STRING_MATCH_SWA"
+msgstr "String match"
+
+msgid "IDS_ST_OPT_REGULAR_EXPRESSION_SWA"
+msgstr "Regular expression"
+
+msgid "IDS_ST_POP_PD_PATTERNS_WILL_BE_DELETED_ABB_SWA"
+msgstr "%d patterns will be deleted."
+
+msgid "IDS_ST_POP_THIS_REPORT_WILL_BE_DELETED_ABB_SWA"
+msgstr "This report will be deleted."
+
+msgid "IDS_ST_OPT_DELETE_SWA"
+msgstr "Delete"
+
+msgid "IDS_ST_HEADER_DELETE_REPORT_SWA"
+msgstr "Delete report"
+
+msgid "IDS_ST_POP_PD_REPORTS_WILL_BE_DELETED_ABB_SWA"
+msgstr "%d reports will be deleted."
+
+msgid "IDS_ST_TPOP_1_REPORT_DELETED_SWA"
+msgstr "1 report deleted."
+
+msgid "IDS_ST_MBODY_SELECT_ALL_SWA"
+msgstr "Select all"
+
+msgid "IDS_ST_ACBUTTON_DELETE_SWA"
+msgstr "DELETE"
+
+msgid "IDS_ST_ACBUTTON_CANCEL_SWA"
+msgstr "CANCEL"
+
+msgid "IDS_ST_TPOP_PD_REPORTS_DELETED_SWA"
+msgstr "%d reports deleted."
+
+msgid "IDS_ST_HEADER_SELECT_ITEMS_SWA"
+msgstr "Select items"
+
+msgid "IDS_ST_HEADER_PD_SELECTED_SWA"
+msgstr "%d selected"
+
+msgid "IDS_ST_TPOP_BASIC_PROTECTION_MODE_TURNED_ON_SWA"
+msgstr "Basic protection mode turned on."
+
+msgid "IDS_ST_TPOP_RULE_CREATED_SWA"
+msgstr "Rule created. Custom protection mode turned on."
+
+msgid "IDS_ST_TPOP_ADVANCED_PROTECTION_MODE_TURNED_ON_SWA"
+msgstr "Advanced protection mode turned on."
+
+msgid "IDS_ST_HEADER_DETAILS_SWA"
+msgstr "Details"
+
+msgid "IDS_ST_BODY_STRING_TYPE_SWA"
+msgstr "String type"
+
+msgid "IDS_ST_BODY_SEARCH_TERM_SWA"
+msgstr "Search term"
+
+msgid "IDS_ST_BODY_LEAKS_CAPTURED_SWA"
+msgstr "Leaks captured"
+
+msgid "IDS_ST_SBODY_TOTAL_LEAKS_SWA"
+msgstr "Total leaks"
+
+msgid "IDS_ST_HEADER_RULE_DETAILS_SWA"
+msgstr "Rule details"
+
+msgid "IDS_ST_HEADER_PATTERN_DETAILS_SWA"
+msgstr "Pattern details"
diff --git a/po/fi.po b/po/fi.po
index f9a265c..0da9230 100755
--- a/po/fi.po
+++ b/po/fi.po
@@ -31,3 +31,272 @@ msgstr "%d kertaa"
msgid "IDS_ST_HEADER_PRIVACY_AND_SECURITY_ABB"
msgstr "Yksityisyys ja tietot."
+msgid "IDS_ST_HEADER_DATA_LEAK_MONITOR_SWA"
+msgstr "Data leak monitor"
+
+msgid "IDS_ST_MBODY_DATA_LEAK_MONITOR_SWA"
+msgstr "Data leak monitor"
+
+msgid "IDS_ST_SBODY_PREVENT_APPS_FROM_LEAKING_YOUR_SENSITIVE_DATA_WITHOUT_AUTHORISATION_SWA"
+msgstr "Prevent apps from leaking your sensitive data without authorisation."
+
+msgid "IDS_ST_SBODY_TO_ALLOW_THIS_FUNCTION_TO_MONITOR_YOUR_PERSONAL_INFORMATION_YOU_NEED_TO_SET_UP_YOUR_PROFILE_IN_CONTACTS_SWA"
+msgstr "To allow this function to monitor your personal information, you need to set up your profile in Contacts."
+
+msgid "IDS_ST_MBODY_PROTECTION_MODE_SWA"
+msgstr "Protection mode"
+
+msgid "IDS_ST_MBODY_BASIC_M_MODE_SWA"
+msgstr "Basic"
+
+msgid "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"
+msgstr "Monitor your main sensitive data to prevent it from being leaked by most apps. This mode is suitable for regular users."
+
+msgid "IDS_ST_MBODY_ADVANCED_M_MODE_SWA"
+msgstr "Advanced"
+
+msgid "IDS_ST_SBODY_SET_UP_STRICT_RULES_TO_PREVENT_DATA_LEAKAGE_SWA"
+msgstr "Set up strict rules to prevent data leakage."
+
+msgid "IDS_ST_SBODY_THIS_MODE_WILL_AFFECT_APP_PERFORMANCE_SWA"
+msgstr "This mode will affect app performance."
+
+msgid "IDS_ST_POP_SOME_APPS_MAY_BE_BLOCKED_SWA"
+msgstr "Some apps may be blocked."
+
+msgid "IDS_ST_HEADER_TURN_ON_ADVANCED_PROTECTION_MODE_SWA"
+msgstr "Turn on Advanced protection mode"
+
+msgid "IDS_ST_MBODY_CUSTOM_M_MODE_SWA"
+msgstr "Custom"
+
+msgid "IDS_ST_SBODY_CHANGE_DEFAULT_RULES_AND_PATTERNS_AND_CREATE_YOUR_OWN_TO_SET_UP_A_CUSTOMISED_PROTECTION_MODE_SWA"
+msgstr "Change default rules and patterns and create your own to set up a customised protection mode."
+
+msgid "IDS_ST_HEADER_REPORTS_SWA"
+msgstr "Reports"
+
+msgid "IDS_ST_MBODY_FULL_REPORTS_SWA"
+msgstr "Full reports"
+
+msgid "IDS_ST_MBODY_APP_RANKINGS_SWA"
+msgstr "App rankings"
+
+msgid "IDS_ST_MBODY_DATA_STATISTICS_SWA"
+msgstr "Data statistics"
+
+msgid "IDS_ST_MBODY_RULES_AND_PATTERNS_SWA"
+msgstr "Rules and patterns"
+
+msgid "IDS_ST_NPBODY_NO_REPORTS_SWA"
+msgstr "No reports"
+
+msgid "IDS_ST_HEADER_SETTINGS_SWA"
+msgstr "Settings"
+
+msgid "IDS_ST_MBODY_KEEP_LOGS_SWA"
+msgstr "Keep logs"
+
+msgid "IDS_LOGS_CLEANED"
+msgstr "Logs cleaned"
+
+msgid "IDS_LOGS_CLEANED_FAILED"
+msgstr "Failed to clean logs"
+
+msgid "IDS_ST_OPT_1_WEEK_SWA"
+msgstr "1 week"
+
+msgid "IDS_ST_OPT_1_DAY_SWA"
+msgstr "1 day"
+
+msgid "IDS_ST_OPT_1_MONTH_SWA"
+msgstr "1 month"
+
+msgid "IDS_ST_HEADER_REPORT_DETAILS_SWA"
+msgstr "Report details"
+
+msgid "IDS_ST_BODY_CATEGORY_C_SWA"
+msgstr "Category:"
+
+msgid "IDS_ST_BODY_APP_C_SWA"
+msgstr "App:"
+
+msgid "IDS_ST_BODY_DESTINATION_C_SWA"
+msgstr "Destination:"
+
+msgid "IDS_ST_BODY_PATTERN_C_SWA"
+msgstr "Pattern:"
+
+msgid "IDS_ST_BODY_DLP_ACTION"
+msgstr "Action"
+
+msgid "IDS_ST_BODY_PACKET_C_SWA"
+msgstr "Packet:"
+
+msgid "IDS_ST_BODY_DLP_ACTION_ALLOW"
+msgstr "Allow"
+
+msgid "IDS_ST_BODY_DLP_ACTION_DENY"
+msgstr "Deny"
+
+msgid "IDS_ST_BODY_DLP_ACTION_SANITIZE"
+msgstr "Sanitize"
+
+msgid "IDS_ST_BODY_DLP_ACTION_ALL_RULES"
+msgstr "All Rules"
+
+msgid "IDS_ST_OPT_QUICK_M_PROTECTION_MODE_SWA"
+msgstr "Quick"
+
+msgid "IDS_ST_SBODY_CREATE_RULES_QUICKLY_AND_EASILY_SWA"
+msgstr "Create rules quickly and easily."
+
+msgid "IDS_ST_MBODY_CUSTOM_SWA"
+msgstr "Custom"
+
+msgid "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"
+msgstr "Create rules from scratch to give you full control of your data protection. Use this option to create non-standard rules."
+
+msgid "IDS_ST_HEADER_CUSTOM_PROTECTION_MODE_SWA"
+msgstr "Custom protection mode"
+
+msgid "IDS_ST_TAB_RULES_SWA"
+msgstr "Rules"
+
+msgid "IDS_ST_TAB_PATTERNS_SWA"
+msgstr "Patterns"
+
+msgid "IDS_ST_HEADER_SELECT_TEMPLATE_SWA"
+msgstr "Select template"
+
+msgid "IDS_ST_HEADER_SELECT_APPS_SWA"
+msgstr "Select apps"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_CHOOSE_ACTION"
+msgstr "Select Action"
+
+msgid "IDS_ST_ACBUTTON_NEXT_SWA"
+msgstr "NEXT"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_OK"
+msgstr "OK"
+
+msgid "IDS_ST_ACBUTTON_DONE_SWA"
+msgstr "DONE"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_RULE_CREATED_MESSAGE"
+msgstr "Rule created."
+
+msgid "IDS_ST_TPOP_RULE_DELETED_SWA"
+msgstr "Rule deleted."
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_DELETE_RULE_POPUP_TITLE"
+msgstr "Delete Rule"
+
+msgid "IDS_ST_HEADER_DELETE_PATTERNS_SWA"
+msgstr "Delete patterns"
+
+msgid "IDS_ST_POP_THIS_RULE_WILL_BE_DELETED_ABB_SWA"
+msgstr "This rule will be deleted."
+
+msgid "IDS_ST_HEADER_CREATE_PATTERN_SWA"
+msgstr "Create pattern"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_PATTERN"
+msgstr "Custom"
+
+msgid "IDS_ST_TPOP_PD_PATTERNS_DELETED_SWA"
+msgstr "%d patterns deleted."
+
+msgid "IDS_ST_OPT_EDIT_SWA"
+msgstr "Edit"
+
+msgid "IDS_ST_OPT_CREATE_SWA"
+msgstr "Create"
+
+msgid "IDS_ST_OPT_ALL_PATTERNS_SWA"
+msgstr "All patterns"
+
+msgid "IDS_ST_BODY_NAME_SWA"
+msgstr "Name"
+
+msgid "IDS_ST_BODY_DESCRIPTION_SWA"
+msgstr "Description"
+
+msgid "IDS_ST_BODY_CATEGORY_SWA"
+msgstr "Category"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CATEGORY_NAME"
+msgstr "Category name"
+
+msgid "IDS_ST_OPT_STRING_MATCH_SWA"
+msgstr "String match"
+
+msgid "IDS_ST_OPT_REGULAR_EXPRESSION_SWA"
+msgstr "Regular expression"
+
+msgid "IDS_ST_POP_PD_PATTERNS_WILL_BE_DELETED_ABB_SWA"
+msgstr "%d patterns will be deleted."
+
+msgid "IDS_ST_POP_THIS_REPORT_WILL_BE_DELETED_ABB_SWA"
+msgstr "This report will be deleted."
+
+msgid "IDS_ST_OPT_DELETE_SWA"
+msgstr "Delete"
+
+msgid "IDS_ST_HEADER_DELETE_REPORT_SWA"
+msgstr "Delete report"
+
+msgid "IDS_ST_POP_PD_REPORTS_WILL_BE_DELETED_ABB_SWA"
+msgstr "%d reports will be deleted."
+
+msgid "IDS_ST_TPOP_1_REPORT_DELETED_SWA"
+msgstr "1 report deleted."
+
+msgid "IDS_ST_MBODY_SELECT_ALL_SWA"
+msgstr "Select all"
+
+msgid "IDS_ST_ACBUTTON_DELETE_SWA"
+msgstr "DELETE"
+
+msgid "IDS_ST_ACBUTTON_CANCEL_SWA"
+msgstr "CANCEL"
+
+msgid "IDS_ST_TPOP_PD_REPORTS_DELETED_SWA"
+msgstr "%d reports deleted."
+
+msgid "IDS_ST_HEADER_SELECT_ITEMS_SWA"
+msgstr "Select items"
+
+msgid "IDS_ST_HEADER_PD_SELECTED_SWA"
+msgstr "%d selected"
+
+msgid "IDS_ST_TPOP_BASIC_PROTECTION_MODE_TURNED_ON_SWA"
+msgstr "Basic protection mode turned on."
+
+msgid "IDS_ST_TPOP_RULE_CREATED_SWA"
+msgstr "Rule created. Custom protection mode turned on."
+
+msgid "IDS_ST_TPOP_ADVANCED_PROTECTION_MODE_TURNED_ON_SWA"
+msgstr "Advanced protection mode turned on."
+
+msgid "IDS_ST_HEADER_DETAILS_SWA"
+msgstr "Details"
+
+msgid "IDS_ST_BODY_STRING_TYPE_SWA"
+msgstr "String type"
+
+msgid "IDS_ST_BODY_SEARCH_TERM_SWA"
+msgstr "Search term"
+
+msgid "IDS_ST_BODY_LEAKS_CAPTURED_SWA"
+msgstr "Leaks captured"
+
+msgid "IDS_ST_SBODY_TOTAL_LEAKS_SWA"
+msgstr "Total leaks"
+
+msgid "IDS_ST_HEADER_RULE_DETAILS_SWA"
+msgstr "Rule details"
+
+msgid "IDS_ST_HEADER_PATTERN_DETAILS_SWA"
+msgstr "Pattern details"
diff --git a/po/fr.po b/po/fr.po
index 3c4fd7b..c11056a 100755
--- a/po/fr.po
+++ b/po/fr.po
@@ -31,3 +31,272 @@ msgstr "%d fois"
msgid "IDS_ST_HEADER_PRIVACY_AND_SECURITY_ABB"
msgstr "Confidentialité/sécu."
+msgid "IDS_ST_HEADER_DATA_LEAK_MONITOR_SWA"
+msgstr "Data leak monitor"
+
+msgid "IDS_ST_MBODY_DATA_LEAK_MONITOR_SWA"
+msgstr "Data leak monitor"
+
+msgid "IDS_ST_SBODY_PREVENT_APPS_FROM_LEAKING_YOUR_SENSITIVE_DATA_WITHOUT_AUTHORISATION_SWA"
+msgstr "Prevent apps from leaking your sensitive data without authorisation."
+
+msgid "IDS_ST_SBODY_TO_ALLOW_THIS_FUNCTION_TO_MONITOR_YOUR_PERSONAL_INFORMATION_YOU_NEED_TO_SET_UP_YOUR_PROFILE_IN_CONTACTS_SWA"
+msgstr "To allow this function to monitor your personal information, you need to set up your profile in Contacts."
+
+msgid "IDS_ST_MBODY_PROTECTION_MODE_SWA"
+msgstr "Protection mode"
+
+msgid "IDS_ST_MBODY_BASIC_M_MODE_SWA"
+msgstr "Basic"
+
+msgid "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"
+msgstr "Monitor your main sensitive data to prevent it from being leaked by most apps. This mode is suitable for regular users."
+
+msgid "IDS_ST_MBODY_ADVANCED_M_MODE_SWA"
+msgstr "Advanced"
+
+msgid "IDS_ST_SBODY_SET_UP_STRICT_RULES_TO_PREVENT_DATA_LEAKAGE_SWA"
+msgstr "Set up strict rules to prevent data leakage."
+
+msgid "IDS_ST_SBODY_THIS_MODE_WILL_AFFECT_APP_PERFORMANCE_SWA"
+msgstr "This mode will affect app performance."
+
+msgid "IDS_ST_POP_SOME_APPS_MAY_BE_BLOCKED_SWA"
+msgstr "Some apps may be blocked."
+
+msgid "IDS_ST_HEADER_TURN_ON_ADVANCED_PROTECTION_MODE_SWA"
+msgstr "Turn on Advanced protection mode"
+
+msgid "IDS_ST_MBODY_CUSTOM_M_MODE_SWA"
+msgstr "Custom"
+
+msgid "IDS_ST_SBODY_CHANGE_DEFAULT_RULES_AND_PATTERNS_AND_CREATE_YOUR_OWN_TO_SET_UP_A_CUSTOMISED_PROTECTION_MODE_SWA"
+msgstr "Change default rules and patterns and create your own to set up a customised protection mode."
+
+msgid "IDS_ST_HEADER_REPORTS_SWA"
+msgstr "Reports"
+
+msgid "IDS_ST_MBODY_FULL_REPORTS_SWA"
+msgstr "Full reports"
+
+msgid "IDS_ST_MBODY_APP_RANKINGS_SWA"
+msgstr "App rankings"
+
+msgid "IDS_ST_MBODY_DATA_STATISTICS_SWA"
+msgstr "Data statistics"
+
+msgid "IDS_ST_MBODY_RULES_AND_PATTERNS_SWA"
+msgstr "Rules and patterns"
+
+msgid "IDS_ST_NPBODY_NO_REPORTS_SWA"
+msgstr "No reports"
+
+msgid "IDS_ST_HEADER_SETTINGS_SWA"
+msgstr "Settings"
+
+msgid "IDS_ST_MBODY_KEEP_LOGS_SWA"
+msgstr "Keep logs"
+
+msgid "IDS_LOGS_CLEANED"
+msgstr "Logs cleaned"
+
+msgid "IDS_LOGS_CLEANED_FAILED"
+msgstr "Failed to clean logs"
+
+msgid "IDS_ST_OPT_1_WEEK_SWA"
+msgstr "1 week"
+
+msgid "IDS_ST_OPT_1_DAY_SWA"
+msgstr "1 day"
+
+msgid "IDS_ST_OPT_1_MONTH_SWA"
+msgstr "1 month"
+
+msgid "IDS_ST_HEADER_REPORT_DETAILS_SWA"
+msgstr "Report details"
+
+msgid "IDS_ST_BODY_CATEGORY_C_SWA"
+msgstr "Category:"
+
+msgid "IDS_ST_BODY_APP_C_SWA"
+msgstr "App:"
+
+msgid "IDS_ST_BODY_DESTINATION_C_SWA"
+msgstr "Destination:"
+
+msgid "IDS_ST_BODY_PATTERN_C_SWA"
+msgstr "Pattern:"
+
+msgid "IDS_ST_BODY_DLP_ACTION"
+msgstr "Action"
+
+msgid "IDS_ST_BODY_PACKET_C_SWA"
+msgstr "Packet:"
+
+msgid "IDS_ST_BODY_DLP_ACTION_ALLOW"
+msgstr "Allow"
+
+msgid "IDS_ST_BODY_DLP_ACTION_DENY"
+msgstr "Deny"
+
+msgid "IDS_ST_BODY_DLP_ACTION_SANITIZE"
+msgstr "Sanitize"
+
+msgid "IDS_ST_BODY_DLP_ACTION_ALL_RULES"
+msgstr "All Rules"
+
+msgid "IDS_ST_OPT_QUICK_M_PROTECTION_MODE_SWA"
+msgstr "Quick"
+
+msgid "IDS_ST_SBODY_CREATE_RULES_QUICKLY_AND_EASILY_SWA"
+msgstr "Create rules quickly and easily."
+
+msgid "IDS_ST_MBODY_CUSTOM_SWA"
+msgstr "Custom"
+
+msgid "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"
+msgstr "Create rules from scratch to give you full control of your data protection. Use this option to create non-standard rules."
+
+msgid "IDS_ST_HEADER_CUSTOM_PROTECTION_MODE_SWA"
+msgstr "Custom protection mode"
+
+msgid "IDS_ST_TAB_RULES_SWA"
+msgstr "Rules"
+
+msgid "IDS_ST_TAB_PATTERNS_SWA"
+msgstr "Patterns"
+
+msgid "IDS_ST_HEADER_SELECT_TEMPLATE_SWA"
+msgstr "Select template"
+
+msgid "IDS_ST_HEADER_SELECT_APPS_SWA"
+msgstr "Select apps"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_CHOOSE_ACTION"
+msgstr "Select Action"
+
+msgid "IDS_ST_ACBUTTON_NEXT_SWA"
+msgstr "NEXT"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_OK"
+msgstr "OK"
+
+msgid "IDS_ST_ACBUTTON_DONE_SWA"
+msgstr "DONE"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_RULE_CREATED_MESSAGE"
+msgstr "Rule created."
+
+msgid "IDS_ST_TPOP_RULE_DELETED_SWA"
+msgstr "Rule deleted."
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_DELETE_RULE_POPUP_TITLE"
+msgstr "Delete Rule"
+
+msgid "IDS_ST_HEADER_DELETE_PATTERNS_SWA"
+msgstr "Delete patterns"
+
+msgid "IDS_ST_POP_THIS_RULE_WILL_BE_DELETED_ABB_SWA"
+msgstr "This rule will be deleted."
+
+msgid "IDS_ST_HEADER_CREATE_PATTERN_SWA"
+msgstr "Create pattern"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_PATTERN"
+msgstr "Custom"
+
+msgid "IDS_ST_TPOP_PD_PATTERNS_DELETED_SWA"
+msgstr "%d patterns deleted."
+
+msgid "IDS_ST_OPT_EDIT_SWA"
+msgstr "Edit"
+
+msgid "IDS_ST_OPT_CREATE_SWA"
+msgstr "Create"
+
+msgid "IDS_ST_OPT_ALL_PATTERNS_SWA"
+msgstr "All patterns"
+
+msgid "IDS_ST_BODY_NAME_SWA"
+msgstr "Name"
+
+msgid "IDS_ST_BODY_DESCRIPTION_SWA"
+msgstr "Description"
+
+msgid "IDS_ST_BODY_CATEGORY_SWA"
+msgstr "Category"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CATEGORY_NAME"
+msgstr "Category name"
+
+msgid "IDS_ST_OPT_STRING_MATCH_SWA"
+msgstr "String match"
+
+msgid "IDS_ST_OPT_REGULAR_EXPRESSION_SWA"
+msgstr "Regular expression"
+
+msgid "IDS_ST_POP_PD_PATTERNS_WILL_BE_DELETED_ABB_SWA"
+msgstr "%d patterns will be deleted."
+
+msgid "IDS_ST_POP_THIS_REPORT_WILL_BE_DELETED_ABB_SWA"
+msgstr "This report will be deleted."
+
+msgid "IDS_ST_OPT_DELETE_SWA"
+msgstr "Delete"
+
+msgid "IDS_ST_HEADER_DELETE_REPORT_SWA"
+msgstr "Delete report"
+
+msgid "IDS_ST_POP_PD_REPORTS_WILL_BE_DELETED_ABB_SWA"
+msgstr "%d reports will be deleted."
+
+msgid "IDS_ST_TPOP_1_REPORT_DELETED_SWA"
+msgstr "1 report deleted."
+
+msgid "IDS_ST_MBODY_SELECT_ALL_SWA"
+msgstr "Select all"
+
+msgid "IDS_ST_ACBUTTON_DELETE_SWA"
+msgstr "DELETE"
+
+msgid "IDS_ST_ACBUTTON_CANCEL_SWA"
+msgstr "CANCEL"
+
+msgid "IDS_ST_TPOP_PD_REPORTS_DELETED_SWA"
+msgstr "%d reports deleted."
+
+msgid "IDS_ST_HEADER_SELECT_ITEMS_SWA"
+msgstr "Select items"
+
+msgid "IDS_ST_HEADER_PD_SELECTED_SWA"
+msgstr "%d selected"
+
+msgid "IDS_ST_TPOP_BASIC_PROTECTION_MODE_TURNED_ON_SWA"
+msgstr "Basic protection mode turned on."
+
+msgid "IDS_ST_TPOP_RULE_CREATED_SWA"
+msgstr "Rule created. Custom protection mode turned on."
+
+msgid "IDS_ST_TPOP_ADVANCED_PROTECTION_MODE_TURNED_ON_SWA"
+msgstr "Advanced protection mode turned on."
+
+msgid "IDS_ST_HEADER_DETAILS_SWA"
+msgstr "Details"
+
+msgid "IDS_ST_BODY_STRING_TYPE_SWA"
+msgstr "String type"
+
+msgid "IDS_ST_BODY_SEARCH_TERM_SWA"
+msgstr "Search term"
+
+msgid "IDS_ST_BODY_LEAKS_CAPTURED_SWA"
+msgstr "Leaks captured"
+
+msgid "IDS_ST_SBODY_TOTAL_LEAKS_SWA"
+msgstr "Total leaks"
+
+msgid "IDS_ST_HEADER_RULE_DETAILS_SWA"
+msgstr "Rule details"
+
+msgid "IDS_ST_HEADER_PATTERN_DETAILS_SWA"
+msgstr "Pattern details"
diff --git a/po/fr_CA.po b/po/fr_CA.po
index d05fa76..b49fcb3 100755
--- a/po/fr_CA.po
+++ b/po/fr_CA.po
@@ -31,3 +31,272 @@ msgstr "%d fois"
msgid "IDS_ST_HEADER_PRIVACY_AND_SECURITY_ABB"
msgstr "Confidentialité/sécu."
+msgid "IDS_ST_HEADER_DATA_LEAK_MONITOR_SWA"
+msgstr "Data leak monitor"
+
+msgid "IDS_ST_MBODY_DATA_LEAK_MONITOR_SWA"
+msgstr "Data leak monitor"
+
+msgid "IDS_ST_SBODY_PREVENT_APPS_FROM_LEAKING_YOUR_SENSITIVE_DATA_WITHOUT_AUTHORISATION_SWA"
+msgstr "Prevent apps from leaking your sensitive data without authorisation."
+
+msgid "IDS_ST_SBODY_TO_ALLOW_THIS_FUNCTION_TO_MONITOR_YOUR_PERSONAL_INFORMATION_YOU_NEED_TO_SET_UP_YOUR_PROFILE_IN_CONTACTS_SWA"
+msgstr "To allow this function to monitor your personal information, you need to set up your profile in Contacts."
+
+msgid "IDS_ST_MBODY_PROTECTION_MODE_SWA"
+msgstr "Protection mode"
+
+msgid "IDS_ST_MBODY_BASIC_M_MODE_SWA"
+msgstr "Basic"
+
+msgid "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"
+msgstr "Monitor your main sensitive data to prevent it from being leaked by most apps. This mode is suitable for regular users."
+
+msgid "IDS_ST_MBODY_ADVANCED_M_MODE_SWA"
+msgstr "Advanced"
+
+msgid "IDS_ST_SBODY_SET_UP_STRICT_RULES_TO_PREVENT_DATA_LEAKAGE_SWA"
+msgstr "Set up strict rules to prevent data leakage."
+
+msgid "IDS_ST_SBODY_THIS_MODE_WILL_AFFECT_APP_PERFORMANCE_SWA"
+msgstr "This mode will affect app performance."
+
+msgid "IDS_ST_POP_SOME_APPS_MAY_BE_BLOCKED_SWA"
+msgstr "Some apps may be blocked."
+
+msgid "IDS_ST_HEADER_TURN_ON_ADVANCED_PROTECTION_MODE_SWA"
+msgstr "Turn on Advanced protection mode"
+
+msgid "IDS_ST_MBODY_CUSTOM_M_MODE_SWA"
+msgstr "Custom"
+
+msgid "IDS_ST_SBODY_CHANGE_DEFAULT_RULES_AND_PATTERNS_AND_CREATE_YOUR_OWN_TO_SET_UP_A_CUSTOMISED_PROTECTION_MODE_SWA"
+msgstr "Change default rules and patterns and create your own to set up a customised protection mode."
+
+msgid "IDS_ST_HEADER_REPORTS_SWA"
+msgstr "Reports"
+
+msgid "IDS_ST_MBODY_FULL_REPORTS_SWA"
+msgstr "Full reports"
+
+msgid "IDS_ST_MBODY_APP_RANKINGS_SWA"
+msgstr "App rankings"
+
+msgid "IDS_ST_MBODY_DATA_STATISTICS_SWA"
+msgstr "Data statistics"
+
+msgid "IDS_ST_MBODY_RULES_AND_PATTERNS_SWA"
+msgstr "Rules and patterns"
+
+msgid "IDS_ST_NPBODY_NO_REPORTS_SWA"
+msgstr "No reports"
+
+msgid "IDS_ST_HEADER_SETTINGS_SWA"
+msgstr "Settings"
+
+msgid "IDS_ST_MBODY_KEEP_LOGS_SWA"
+msgstr "Keep logs"
+
+msgid "IDS_LOGS_CLEANED"
+msgstr "Logs cleaned"
+
+msgid "IDS_LOGS_CLEANED_FAILED"
+msgstr "Failed to clean logs"
+
+msgid "IDS_ST_OPT_1_WEEK_SWA"
+msgstr "1 week"
+
+msgid "IDS_ST_OPT_1_DAY_SWA"
+msgstr "1 day"
+
+msgid "IDS_ST_OPT_1_MONTH_SWA"
+msgstr "1 month"
+
+msgid "IDS_ST_HEADER_REPORT_DETAILS_SWA"
+msgstr "Report details"
+
+msgid "IDS_ST_BODY_CATEGORY_C_SWA"
+msgstr "Category:"
+
+msgid "IDS_ST_BODY_APP_C_SWA"
+msgstr "App:"
+
+msgid "IDS_ST_BODY_DESTINATION_C_SWA"
+msgstr "Destination:"
+
+msgid "IDS_ST_BODY_PATTERN_C_SWA"
+msgstr "Pattern:"
+
+msgid "IDS_ST_BODY_DLP_ACTION"
+msgstr "Action"
+
+msgid "IDS_ST_BODY_PACKET_C_SWA"
+msgstr "Packet:"
+
+msgid "IDS_ST_BODY_DLP_ACTION_ALLOW"
+msgstr "Allow"
+
+msgid "IDS_ST_BODY_DLP_ACTION_DENY"
+msgstr "Deny"
+
+msgid "IDS_ST_BODY_DLP_ACTION_SANITIZE"
+msgstr "Sanitize"
+
+msgid "IDS_ST_BODY_DLP_ACTION_ALL_RULES"
+msgstr "All Rules"
+
+msgid "IDS_ST_OPT_QUICK_M_PROTECTION_MODE_SWA"
+msgstr "Quick"
+
+msgid "IDS_ST_SBODY_CREATE_RULES_QUICKLY_AND_EASILY_SWA"
+msgstr "Create rules quickly and easily."
+
+msgid "IDS_ST_MBODY_CUSTOM_SWA"
+msgstr "Custom"
+
+msgid "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"
+msgstr "Create rules from scratch to give you full control of your data protection. Use this option to create non-standard rules."
+
+msgid "IDS_ST_HEADER_CUSTOM_PROTECTION_MODE_SWA"
+msgstr "Custom protection mode"
+
+msgid "IDS_ST_TAB_RULES_SWA"
+msgstr "Rules"
+
+msgid "IDS_ST_TAB_PATTERNS_SWA"
+msgstr "Patterns"
+
+msgid "IDS_ST_HEADER_SELECT_TEMPLATE_SWA"
+msgstr "Select template"
+
+msgid "IDS_ST_HEADER_SELECT_APPS_SWA"
+msgstr "Select apps"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_CHOOSE_ACTION"
+msgstr "Select Action"
+
+msgid "IDS_ST_ACBUTTON_NEXT_SWA"
+msgstr "NEXT"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_OK"
+msgstr "OK"
+
+msgid "IDS_ST_ACBUTTON_DONE_SWA"
+msgstr "DONE"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_RULE_CREATED_MESSAGE"
+msgstr "Rule created."
+
+msgid "IDS_ST_TPOP_RULE_DELETED_SWA"
+msgstr "Rule deleted."
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_DELETE_RULE_POPUP_TITLE"
+msgstr "Delete Rule"
+
+msgid "IDS_ST_HEADER_DELETE_PATTERNS_SWA"
+msgstr "Delete patterns"
+
+msgid "IDS_ST_POP_THIS_RULE_WILL_BE_DELETED_ABB_SWA"
+msgstr "This rule will be deleted."
+
+msgid "IDS_ST_HEADER_CREATE_PATTERN_SWA"
+msgstr "Create pattern"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_PATTERN"
+msgstr "Custom"
+
+msgid "IDS_ST_TPOP_PD_PATTERNS_DELETED_SWA"
+msgstr "%d patterns deleted."
+
+msgid "IDS_ST_OPT_EDIT_SWA"
+msgstr "Edit"
+
+msgid "IDS_ST_OPT_CREATE_SWA"
+msgstr "Create"
+
+msgid "IDS_ST_OPT_ALL_PATTERNS_SWA"
+msgstr "All patterns"
+
+msgid "IDS_ST_BODY_NAME_SWA"
+msgstr "Name"
+
+msgid "IDS_ST_BODY_DESCRIPTION_SWA"
+msgstr "Description"
+
+msgid "IDS_ST_BODY_CATEGORY_SWA"
+msgstr "Category"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CATEGORY_NAME"
+msgstr "Category name"
+
+msgid "IDS_ST_OPT_STRING_MATCH_SWA"
+msgstr "String match"
+
+msgid "IDS_ST_OPT_REGULAR_EXPRESSION_SWA"
+msgstr "Regular expression"
+
+msgid "IDS_ST_POP_PD_PATTERNS_WILL_BE_DELETED_ABB_SWA"
+msgstr "%d patterns will be deleted."
+
+msgid "IDS_ST_POP_THIS_REPORT_WILL_BE_DELETED_ABB_SWA"
+msgstr "This report will be deleted."
+
+msgid "IDS_ST_OPT_DELETE_SWA"
+msgstr "Delete"
+
+msgid "IDS_ST_HEADER_DELETE_REPORT_SWA"
+msgstr "Delete report"
+
+msgid "IDS_ST_POP_PD_REPORTS_WILL_BE_DELETED_ABB_SWA"
+msgstr "%d reports will be deleted."
+
+msgid "IDS_ST_TPOP_1_REPORT_DELETED_SWA"
+msgstr "1 report deleted."
+
+msgid "IDS_ST_MBODY_SELECT_ALL_SWA"
+msgstr "Select all"
+
+msgid "IDS_ST_ACBUTTON_DELETE_SWA"
+msgstr "DELETE"
+
+msgid "IDS_ST_ACBUTTON_CANCEL_SWA"
+msgstr "CANCEL"
+
+msgid "IDS_ST_TPOP_PD_REPORTS_DELETED_SWA"
+msgstr "%d reports deleted."
+
+msgid "IDS_ST_HEADER_SELECT_ITEMS_SWA"
+msgstr "Select items"
+
+msgid "IDS_ST_HEADER_PD_SELECTED_SWA"
+msgstr "%d selected"
+
+msgid "IDS_ST_TPOP_BASIC_PROTECTION_MODE_TURNED_ON_SWA"
+msgstr "Basic protection mode turned on."
+
+msgid "IDS_ST_TPOP_RULE_CREATED_SWA"
+msgstr "Rule created. Custom protection mode turned on."
+
+msgid "IDS_ST_TPOP_ADVANCED_PROTECTION_MODE_TURNED_ON_SWA"
+msgstr "Advanced protection mode turned on."
+
+msgid "IDS_ST_HEADER_DETAILS_SWA"
+msgstr "Details"
+
+msgid "IDS_ST_BODY_STRING_TYPE_SWA"
+msgstr "String type"
+
+msgid "IDS_ST_BODY_SEARCH_TERM_SWA"
+msgstr "Search term"
+
+msgid "IDS_ST_BODY_LEAKS_CAPTURED_SWA"
+msgstr "Leaks captured"
+
+msgid "IDS_ST_SBODY_TOTAL_LEAKS_SWA"
+msgstr "Total leaks"
+
+msgid "IDS_ST_HEADER_RULE_DETAILS_SWA"
+msgstr "Rule details"
+
+msgid "IDS_ST_HEADER_PATTERN_DETAILS_SWA"
+msgstr "Pattern details"
diff --git a/po/ga.po b/po/ga.po
index ce73536..87e1ec8 100755
--- a/po/ga.po
+++ b/po/ga.po
@@ -31,3 +31,272 @@ msgstr "%d uair"
msgid "IDS_ST_HEADER_PRIVACY_AND_SECURITY_ABB"
msgstr "Príobháid & slándáil"
+msgid "IDS_ST_HEADER_DATA_LEAK_MONITOR_SWA"
+msgstr "Data leak monitor"
+
+msgid "IDS_ST_MBODY_DATA_LEAK_MONITOR_SWA"
+msgstr "Data leak monitor"
+
+msgid "IDS_ST_SBODY_PREVENT_APPS_FROM_LEAKING_YOUR_SENSITIVE_DATA_WITHOUT_AUTHORISATION_SWA"
+msgstr "Prevent apps from leaking your sensitive data without authorisation."
+
+msgid "IDS_ST_SBODY_TO_ALLOW_THIS_FUNCTION_TO_MONITOR_YOUR_PERSONAL_INFORMATION_YOU_NEED_TO_SET_UP_YOUR_PROFILE_IN_CONTACTS_SWA"
+msgstr "To allow this function to monitor your personal information, you need to set up your profile in Contacts."
+
+msgid "IDS_ST_MBODY_PROTECTION_MODE_SWA"
+msgstr "Protection mode"
+
+msgid "IDS_ST_MBODY_BASIC_M_MODE_SWA"
+msgstr "Basic"
+
+msgid "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"
+msgstr "Monitor your main sensitive data to prevent it from being leaked by most apps. This mode is suitable for regular users."
+
+msgid "IDS_ST_MBODY_ADVANCED_M_MODE_SWA"
+msgstr "Advanced"
+
+msgid "IDS_ST_SBODY_SET_UP_STRICT_RULES_TO_PREVENT_DATA_LEAKAGE_SWA"
+msgstr "Set up strict rules to prevent data leakage."
+
+msgid "IDS_ST_SBODY_THIS_MODE_WILL_AFFECT_APP_PERFORMANCE_SWA"
+msgstr "This mode will affect app performance."
+
+msgid "IDS_ST_POP_SOME_APPS_MAY_BE_BLOCKED_SWA"
+msgstr "Some apps may be blocked."
+
+msgid "IDS_ST_HEADER_TURN_ON_ADVANCED_PROTECTION_MODE_SWA"
+msgstr "Turn on Advanced protection mode"
+
+msgid "IDS_ST_MBODY_CUSTOM_M_MODE_SWA"
+msgstr "Custom"
+
+msgid "IDS_ST_SBODY_CHANGE_DEFAULT_RULES_AND_PATTERNS_AND_CREATE_YOUR_OWN_TO_SET_UP_A_CUSTOMISED_PROTECTION_MODE_SWA"
+msgstr "Change default rules and patterns and create your own to set up a customised protection mode."
+
+msgid "IDS_ST_HEADER_REPORTS_SWA"
+msgstr "Reports"
+
+msgid "IDS_ST_MBODY_FULL_REPORTS_SWA"
+msgstr "Full reports"
+
+msgid "IDS_ST_MBODY_APP_RANKINGS_SWA"
+msgstr "App rankings"
+
+msgid "IDS_ST_MBODY_DATA_STATISTICS_SWA"
+msgstr "Data statistics"
+
+msgid "IDS_ST_MBODY_RULES_AND_PATTERNS_SWA"
+msgstr "Rules and patterns"
+
+msgid "IDS_ST_NPBODY_NO_REPORTS_SWA"
+msgstr "No reports"
+
+msgid "IDS_ST_HEADER_SETTINGS_SWA"
+msgstr "Settings"
+
+msgid "IDS_ST_MBODY_KEEP_LOGS_SWA"
+msgstr "Keep logs"
+
+msgid "IDS_LOGS_CLEANED"
+msgstr "Logs cleaned"
+
+msgid "IDS_LOGS_CLEANED_FAILED"
+msgstr "Failed to clean logs"
+
+msgid "IDS_ST_OPT_1_WEEK_SWA"
+msgstr "1 week"
+
+msgid "IDS_ST_OPT_1_DAY_SWA"
+msgstr "1 day"
+
+msgid "IDS_ST_OPT_1_MONTH_SWA"
+msgstr "1 month"
+
+msgid "IDS_ST_HEADER_REPORT_DETAILS_SWA"
+msgstr "Report details"
+
+msgid "IDS_ST_BODY_CATEGORY_C_SWA"
+msgstr "Category:"
+
+msgid "IDS_ST_BODY_APP_C_SWA"
+msgstr "App:"
+
+msgid "IDS_ST_BODY_DESTINATION_C_SWA"
+msgstr "Destination:"
+
+msgid "IDS_ST_BODY_PATTERN_C_SWA"
+msgstr "Pattern:"
+
+msgid "IDS_ST_BODY_DLP_ACTION"
+msgstr "Action"
+
+msgid "IDS_ST_BODY_PACKET_C_SWA"
+msgstr "Packet:"
+
+msgid "IDS_ST_BODY_DLP_ACTION_ALLOW"
+msgstr "Allow"
+
+msgid "IDS_ST_BODY_DLP_ACTION_DENY"
+msgstr "Deny"
+
+msgid "IDS_ST_BODY_DLP_ACTION_SANITIZE"
+msgstr "Sanitize"
+
+msgid "IDS_ST_BODY_DLP_ACTION_ALL_RULES"
+msgstr "All Rules"
+
+msgid "IDS_ST_OPT_QUICK_M_PROTECTION_MODE_SWA"
+msgstr "Quick"
+
+msgid "IDS_ST_SBODY_CREATE_RULES_QUICKLY_AND_EASILY_SWA"
+msgstr "Create rules quickly and easily."
+
+msgid "IDS_ST_MBODY_CUSTOM_SWA"
+msgstr "Custom"
+
+msgid "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"
+msgstr "Create rules from scratch to give you full control of your data protection. Use this option to create non-standard rules."
+
+msgid "IDS_ST_HEADER_CUSTOM_PROTECTION_MODE_SWA"
+msgstr "Custom protection mode"
+
+msgid "IDS_ST_TAB_RULES_SWA"
+msgstr "Rules"
+
+msgid "IDS_ST_TAB_PATTERNS_SWA"
+msgstr "Patterns"
+
+msgid "IDS_ST_HEADER_SELECT_TEMPLATE_SWA"
+msgstr "Select template"
+
+msgid "IDS_ST_HEADER_SELECT_APPS_SWA"
+msgstr "Select apps"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_CHOOSE_ACTION"
+msgstr "Select Action"
+
+msgid "IDS_ST_ACBUTTON_NEXT_SWA"
+msgstr "NEXT"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_OK"
+msgstr "OK"
+
+msgid "IDS_ST_ACBUTTON_DONE_SWA"
+msgstr "DONE"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_RULE_CREATED_MESSAGE"
+msgstr "Rule created."
+
+msgid "IDS_ST_TPOP_RULE_DELETED_SWA"
+msgstr "Rule deleted."
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_DELETE_RULE_POPUP_TITLE"
+msgstr "Delete Rule"
+
+msgid "IDS_ST_HEADER_DELETE_PATTERNS_SWA"
+msgstr "Delete patterns"
+
+msgid "IDS_ST_POP_THIS_RULE_WILL_BE_DELETED_ABB_SWA"
+msgstr "This rule will be deleted."
+
+msgid "IDS_ST_HEADER_CREATE_PATTERN_SWA"
+msgstr "Create pattern"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_PATTERN"
+msgstr "Custom"
+
+msgid "IDS_ST_TPOP_PD_PATTERNS_DELETED_SWA"
+msgstr "%d patterns deleted."
+
+msgid "IDS_ST_OPT_EDIT_SWA"
+msgstr "Edit"
+
+msgid "IDS_ST_OPT_CREATE_SWA"
+msgstr "Create"
+
+msgid "IDS_ST_OPT_ALL_PATTERNS_SWA"
+msgstr "All patterns"
+
+msgid "IDS_ST_BODY_NAME_SWA"
+msgstr "Name"
+
+msgid "IDS_ST_BODY_DESCRIPTION_SWA"
+msgstr "Description"
+
+msgid "IDS_ST_BODY_CATEGORY_SWA"
+msgstr "Category"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CATEGORY_NAME"
+msgstr "Category name"
+
+msgid "IDS_ST_OPT_STRING_MATCH_SWA"
+msgstr "String match"
+
+msgid "IDS_ST_OPT_REGULAR_EXPRESSION_SWA"
+msgstr "Regular expression"
+
+msgid "IDS_ST_POP_PD_PATTERNS_WILL_BE_DELETED_ABB_SWA"
+msgstr "%d patterns will be deleted."
+
+msgid "IDS_ST_POP_THIS_REPORT_WILL_BE_DELETED_ABB_SWA"
+msgstr "This report will be deleted."
+
+msgid "IDS_ST_OPT_DELETE_SWA"
+msgstr "Delete"
+
+msgid "IDS_ST_HEADER_DELETE_REPORT_SWA"
+msgstr "Delete report"
+
+msgid "IDS_ST_POP_PD_REPORTS_WILL_BE_DELETED_ABB_SWA"
+msgstr "%d reports will be deleted."
+
+msgid "IDS_ST_TPOP_1_REPORT_DELETED_SWA"
+msgstr "1 report deleted."
+
+msgid "IDS_ST_MBODY_SELECT_ALL_SWA"
+msgstr "Select all"
+
+msgid "IDS_ST_ACBUTTON_DELETE_SWA"
+msgstr "DELETE"
+
+msgid "IDS_ST_ACBUTTON_CANCEL_SWA"
+msgstr "CANCEL"
+
+msgid "IDS_ST_TPOP_PD_REPORTS_DELETED_SWA"
+msgstr "%d reports deleted."
+
+msgid "IDS_ST_HEADER_SELECT_ITEMS_SWA"
+msgstr "Select items"
+
+msgid "IDS_ST_HEADER_PD_SELECTED_SWA"
+msgstr "%d selected"
+
+msgid "IDS_ST_TPOP_BASIC_PROTECTION_MODE_TURNED_ON_SWA"
+msgstr "Basic protection mode turned on."
+
+msgid "IDS_ST_TPOP_RULE_CREATED_SWA"
+msgstr "Rule created. Custom protection mode turned on."
+
+msgid "IDS_ST_TPOP_ADVANCED_PROTECTION_MODE_TURNED_ON_SWA"
+msgstr "Advanced protection mode turned on."
+
+msgid "IDS_ST_HEADER_DETAILS_SWA"
+msgstr "Details"
+
+msgid "IDS_ST_BODY_STRING_TYPE_SWA"
+msgstr "String type"
+
+msgid "IDS_ST_BODY_SEARCH_TERM_SWA"
+msgstr "Search term"
+
+msgid "IDS_ST_BODY_LEAKS_CAPTURED_SWA"
+msgstr "Leaks captured"
+
+msgid "IDS_ST_SBODY_TOTAL_LEAKS_SWA"
+msgstr "Total leaks"
+
+msgid "IDS_ST_HEADER_RULE_DETAILS_SWA"
+msgstr "Rule details"
+
+msgid "IDS_ST_HEADER_PATTERN_DETAILS_SWA"
+msgstr "Pattern details"
diff --git a/po/gl.po b/po/gl.po
index 524ca17..5d2e79f 100755
--- a/po/gl.po
+++ b/po/gl.po
@@ -31,3 +31,272 @@ msgstr "%d veces"
msgid "IDS_ST_HEADER_PRIVACY_AND_SECURITY_ABB"
msgstr "Privacid. e seguridade"
+msgid "IDS_ST_HEADER_DATA_LEAK_MONITOR_SWA"
+msgstr "Data leak monitor"
+
+msgid "IDS_ST_MBODY_DATA_LEAK_MONITOR_SWA"
+msgstr "Data leak monitor"
+
+msgid "IDS_ST_SBODY_PREVENT_APPS_FROM_LEAKING_YOUR_SENSITIVE_DATA_WITHOUT_AUTHORISATION_SWA"
+msgstr "Prevent apps from leaking your sensitive data without authorisation."
+
+msgid "IDS_ST_SBODY_TO_ALLOW_THIS_FUNCTION_TO_MONITOR_YOUR_PERSONAL_INFORMATION_YOU_NEED_TO_SET_UP_YOUR_PROFILE_IN_CONTACTS_SWA"
+msgstr "To allow this function to monitor your personal information, you need to set up your profile in Contacts."
+
+msgid "IDS_ST_MBODY_PROTECTION_MODE_SWA"
+msgstr "Protection mode"
+
+msgid "IDS_ST_MBODY_BASIC_M_MODE_SWA"
+msgstr "Basic"
+
+msgid "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"
+msgstr "Monitor your main sensitive data to prevent it from being leaked by most apps. This mode is suitable for regular users."
+
+msgid "IDS_ST_MBODY_ADVANCED_M_MODE_SWA"
+msgstr "Advanced"
+
+msgid "IDS_ST_SBODY_SET_UP_STRICT_RULES_TO_PREVENT_DATA_LEAKAGE_SWA"
+msgstr "Set up strict rules to prevent data leakage."
+
+msgid "IDS_ST_SBODY_THIS_MODE_WILL_AFFECT_APP_PERFORMANCE_SWA"
+msgstr "This mode will affect app performance."
+
+msgid "IDS_ST_POP_SOME_APPS_MAY_BE_BLOCKED_SWA"
+msgstr "Some apps may be blocked."
+
+msgid "IDS_ST_HEADER_TURN_ON_ADVANCED_PROTECTION_MODE_SWA"
+msgstr "Turn on Advanced protection mode"
+
+msgid "IDS_ST_MBODY_CUSTOM_M_MODE_SWA"
+msgstr "Custom"
+
+msgid "IDS_ST_SBODY_CHANGE_DEFAULT_RULES_AND_PATTERNS_AND_CREATE_YOUR_OWN_TO_SET_UP_A_CUSTOMISED_PROTECTION_MODE_SWA"
+msgstr "Change default rules and patterns and create your own to set up a customised protection mode."
+
+msgid "IDS_ST_HEADER_REPORTS_SWA"
+msgstr "Reports"
+
+msgid "IDS_ST_MBODY_FULL_REPORTS_SWA"
+msgstr "Full reports"
+
+msgid "IDS_ST_MBODY_APP_RANKINGS_SWA"
+msgstr "App rankings"
+
+msgid "IDS_ST_MBODY_DATA_STATISTICS_SWA"
+msgstr "Data statistics"
+
+msgid "IDS_ST_MBODY_RULES_AND_PATTERNS_SWA"
+msgstr "Rules and patterns"
+
+msgid "IDS_ST_NPBODY_NO_REPORTS_SWA"
+msgstr "No reports"
+
+msgid "IDS_ST_HEADER_SETTINGS_SWA"
+msgstr "Settings"
+
+msgid "IDS_ST_MBODY_KEEP_LOGS_SWA"
+msgstr "Keep logs"
+
+msgid "IDS_LOGS_CLEANED"
+msgstr "Logs cleaned"
+
+msgid "IDS_LOGS_CLEANED_FAILED"
+msgstr "Failed to clean logs"
+
+msgid "IDS_ST_OPT_1_WEEK_SWA"
+msgstr "1 week"
+
+msgid "IDS_ST_OPT_1_DAY_SWA"
+msgstr "1 day"
+
+msgid "IDS_ST_OPT_1_MONTH_SWA"
+msgstr "1 month"
+
+msgid "IDS_ST_HEADER_REPORT_DETAILS_SWA"
+msgstr "Report details"
+
+msgid "IDS_ST_BODY_CATEGORY_C_SWA"
+msgstr "Category:"
+
+msgid "IDS_ST_BODY_APP_C_SWA"
+msgstr "App:"
+
+msgid "IDS_ST_BODY_DESTINATION_C_SWA"
+msgstr "Destination:"
+
+msgid "IDS_ST_BODY_PATTERN_C_SWA"
+msgstr "Pattern:"
+
+msgid "IDS_ST_BODY_DLP_ACTION"
+msgstr "Action"
+
+msgid "IDS_ST_BODY_PACKET_C_SWA"
+msgstr "Packet:"
+
+msgid "IDS_ST_BODY_DLP_ACTION_ALLOW"
+msgstr "Allow"
+
+msgid "IDS_ST_BODY_DLP_ACTION_DENY"
+msgstr "Deny"
+
+msgid "IDS_ST_BODY_DLP_ACTION_SANITIZE"
+msgstr "Sanitize"
+
+msgid "IDS_ST_BODY_DLP_ACTION_ALL_RULES"
+msgstr "All Rules"
+
+msgid "IDS_ST_OPT_QUICK_M_PROTECTION_MODE_SWA"
+msgstr "Quick"
+
+msgid "IDS_ST_SBODY_CREATE_RULES_QUICKLY_AND_EASILY_SWA"
+msgstr "Create rules quickly and easily."
+
+msgid "IDS_ST_MBODY_CUSTOM_SWA"
+msgstr "Custom"
+
+msgid "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"
+msgstr "Create rules from scratch to give you full control of your data protection. Use this option to create non-standard rules."
+
+msgid "IDS_ST_HEADER_CUSTOM_PROTECTION_MODE_SWA"
+msgstr "Custom protection mode"
+
+msgid "IDS_ST_TAB_RULES_SWA"
+msgstr "Rules"
+
+msgid "IDS_ST_TAB_PATTERNS_SWA"
+msgstr "Patterns"
+
+msgid "IDS_ST_HEADER_SELECT_TEMPLATE_SWA"
+msgstr "Select template"
+
+msgid "IDS_ST_HEADER_SELECT_APPS_SWA"
+msgstr "Select apps"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_CHOOSE_ACTION"
+msgstr "Select Action"
+
+msgid "IDS_ST_ACBUTTON_NEXT_SWA"
+msgstr "NEXT"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_OK"
+msgstr "OK"
+
+msgid "IDS_ST_ACBUTTON_DONE_SWA"
+msgstr "DONE"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_RULE_CREATED_MESSAGE"
+msgstr "Rule created."
+
+msgid "IDS_ST_TPOP_RULE_DELETED_SWA"
+msgstr "Rule deleted."
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_DELETE_RULE_POPUP_TITLE"
+msgstr "Delete Rule"
+
+msgid "IDS_ST_HEADER_DELETE_PATTERNS_SWA"
+msgstr "Delete patterns"
+
+msgid "IDS_ST_POP_THIS_RULE_WILL_BE_DELETED_ABB_SWA"
+msgstr "This rule will be deleted."
+
+msgid "IDS_ST_HEADER_CREATE_PATTERN_SWA"
+msgstr "Create pattern"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_PATTERN"
+msgstr "Custom"
+
+msgid "IDS_ST_TPOP_PD_PATTERNS_DELETED_SWA"
+msgstr "%d patterns deleted."
+
+msgid "IDS_ST_OPT_EDIT_SWA"
+msgstr "Edit"
+
+msgid "IDS_ST_OPT_CREATE_SWA"
+msgstr "Create"
+
+msgid "IDS_ST_OPT_ALL_PATTERNS_SWA"
+msgstr "All patterns"
+
+msgid "IDS_ST_BODY_NAME_SWA"
+msgstr "Name"
+
+msgid "IDS_ST_BODY_DESCRIPTION_SWA"
+msgstr "Description"
+
+msgid "IDS_ST_BODY_CATEGORY_SWA"
+msgstr "Category"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CATEGORY_NAME"
+msgstr "Category name"
+
+msgid "IDS_ST_OPT_STRING_MATCH_SWA"
+msgstr "String match"
+
+msgid "IDS_ST_OPT_REGULAR_EXPRESSION_SWA"
+msgstr "Regular expression"
+
+msgid "IDS_ST_POP_PD_PATTERNS_WILL_BE_DELETED_ABB_SWA"
+msgstr "%d patterns will be deleted."
+
+msgid "IDS_ST_POP_THIS_REPORT_WILL_BE_DELETED_ABB_SWA"
+msgstr "This report will be deleted."
+
+msgid "IDS_ST_OPT_DELETE_SWA"
+msgstr "Delete"
+
+msgid "IDS_ST_HEADER_DELETE_REPORT_SWA"
+msgstr "Delete report"
+
+msgid "IDS_ST_POP_PD_REPORTS_WILL_BE_DELETED_ABB_SWA"
+msgstr "%d reports will be deleted."
+
+msgid "IDS_ST_TPOP_1_REPORT_DELETED_SWA"
+msgstr "1 report deleted."
+
+msgid "IDS_ST_MBODY_SELECT_ALL_SWA"
+msgstr "Select all"
+
+msgid "IDS_ST_ACBUTTON_DELETE_SWA"
+msgstr "DELETE"
+
+msgid "IDS_ST_ACBUTTON_CANCEL_SWA"
+msgstr "CANCEL"
+
+msgid "IDS_ST_TPOP_PD_REPORTS_DELETED_SWA"
+msgstr "%d reports deleted."
+
+msgid "IDS_ST_HEADER_SELECT_ITEMS_SWA"
+msgstr "Select items"
+
+msgid "IDS_ST_HEADER_PD_SELECTED_SWA"
+msgstr "%d selected"
+
+msgid "IDS_ST_TPOP_BASIC_PROTECTION_MODE_TURNED_ON_SWA"
+msgstr "Basic protection mode turned on."
+
+msgid "IDS_ST_TPOP_RULE_CREATED_SWA"
+msgstr "Rule created. Custom protection mode turned on."
+
+msgid "IDS_ST_TPOP_ADVANCED_PROTECTION_MODE_TURNED_ON_SWA"
+msgstr "Advanced protection mode turned on."
+
+msgid "IDS_ST_HEADER_DETAILS_SWA"
+msgstr "Details"
+
+msgid "IDS_ST_BODY_STRING_TYPE_SWA"
+msgstr "String type"
+
+msgid "IDS_ST_BODY_SEARCH_TERM_SWA"
+msgstr "Search term"
+
+msgid "IDS_ST_BODY_LEAKS_CAPTURED_SWA"
+msgstr "Leaks captured"
+
+msgid "IDS_ST_SBODY_TOTAL_LEAKS_SWA"
+msgstr "Total leaks"
+
+msgid "IDS_ST_HEADER_RULE_DETAILS_SWA"
+msgstr "Rule details"
+
+msgid "IDS_ST_HEADER_PATTERN_DETAILS_SWA"
+msgstr "Pattern details"
diff --git a/po/hi.po b/po/hi.po
index e913c4f..4e1a134 100755
--- a/po/hi.po
+++ b/po/hi.po
@@ -31,3 +31,272 @@ msgstr "%d बार"
msgid "IDS_ST_HEADER_PRIVACY_AND_SECURITY_ABB"
msgstr "गोपनीयता और सुरक्षा"
+msgid "IDS_ST_HEADER_DATA_LEAK_MONITOR_SWA"
+msgstr "Data leak monitor"
+
+msgid "IDS_ST_MBODY_DATA_LEAK_MONITOR_SWA"
+msgstr "Data leak monitor"
+
+msgid "IDS_ST_SBODY_PREVENT_APPS_FROM_LEAKING_YOUR_SENSITIVE_DATA_WITHOUT_AUTHORISATION_SWA"
+msgstr "Prevent apps from leaking your sensitive data without authorisation."
+
+msgid "IDS_ST_SBODY_TO_ALLOW_THIS_FUNCTION_TO_MONITOR_YOUR_PERSONAL_INFORMATION_YOU_NEED_TO_SET_UP_YOUR_PROFILE_IN_CONTACTS_SWA"
+msgstr "To allow this function to monitor your personal information, you need to set up your profile in Contacts."
+
+msgid "IDS_ST_MBODY_PROTECTION_MODE_SWA"
+msgstr "Protection mode"
+
+msgid "IDS_ST_MBODY_BASIC_M_MODE_SWA"
+msgstr "Basic"
+
+msgid "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"
+msgstr "Monitor your main sensitive data to prevent it from being leaked by most apps. This mode is suitable for regular users."
+
+msgid "IDS_ST_MBODY_ADVANCED_M_MODE_SWA"
+msgstr "Advanced"
+
+msgid "IDS_ST_SBODY_SET_UP_STRICT_RULES_TO_PREVENT_DATA_LEAKAGE_SWA"
+msgstr "Set up strict rules to prevent data leakage."
+
+msgid "IDS_ST_SBODY_THIS_MODE_WILL_AFFECT_APP_PERFORMANCE_SWA"
+msgstr "This mode will affect app performance."
+
+msgid "IDS_ST_POP_SOME_APPS_MAY_BE_BLOCKED_SWA"
+msgstr "Some apps may be blocked."
+
+msgid "IDS_ST_HEADER_TURN_ON_ADVANCED_PROTECTION_MODE_SWA"
+msgstr "Turn on Advanced protection mode"
+
+msgid "IDS_ST_MBODY_CUSTOM_M_MODE_SWA"
+msgstr "Custom"
+
+msgid "IDS_ST_SBODY_CHANGE_DEFAULT_RULES_AND_PATTERNS_AND_CREATE_YOUR_OWN_TO_SET_UP_A_CUSTOMISED_PROTECTION_MODE_SWA"
+msgstr "Change default rules and patterns and create your own to set up a customised protection mode."
+
+msgid "IDS_ST_HEADER_REPORTS_SWA"
+msgstr "Reports"
+
+msgid "IDS_ST_MBODY_FULL_REPORTS_SWA"
+msgstr "Full reports"
+
+msgid "IDS_ST_MBODY_APP_RANKINGS_SWA"
+msgstr "App rankings"
+
+msgid "IDS_ST_MBODY_DATA_STATISTICS_SWA"
+msgstr "Data statistics"
+
+msgid "IDS_ST_MBODY_RULES_AND_PATTERNS_SWA"
+msgstr "Rules and patterns"
+
+msgid "IDS_ST_NPBODY_NO_REPORTS_SWA"
+msgstr "No reports"
+
+msgid "IDS_ST_HEADER_SETTINGS_SWA"
+msgstr "Settings"
+
+msgid "IDS_ST_MBODY_KEEP_LOGS_SWA"
+msgstr "Keep logs"
+
+msgid "IDS_LOGS_CLEANED"
+msgstr "Logs cleaned"
+
+msgid "IDS_LOGS_CLEANED_FAILED"
+msgstr "Failed to clean logs"
+
+msgid "IDS_ST_OPT_1_WEEK_SWA"
+msgstr "1 week"
+
+msgid "IDS_ST_OPT_1_DAY_SWA"
+msgstr "1 day"
+
+msgid "IDS_ST_OPT_1_MONTH_SWA"
+msgstr "1 month"
+
+msgid "IDS_ST_HEADER_REPORT_DETAILS_SWA"
+msgstr "Report details"
+
+msgid "IDS_ST_BODY_CATEGORY_C_SWA"
+msgstr "Category:"
+
+msgid "IDS_ST_BODY_APP_C_SWA"
+msgstr "App:"
+
+msgid "IDS_ST_BODY_DESTINATION_C_SWA"
+msgstr "Destination:"
+
+msgid "IDS_ST_BODY_PATTERN_C_SWA"
+msgstr "Pattern:"
+
+msgid "IDS_ST_BODY_DLP_ACTION"
+msgstr "Action"
+
+msgid "IDS_ST_BODY_PACKET_C_SWA"
+msgstr "Packet:"
+
+msgid "IDS_ST_BODY_DLP_ACTION_ALLOW"
+msgstr "Allow"
+
+msgid "IDS_ST_BODY_DLP_ACTION_DENY"
+msgstr "Deny"
+
+msgid "IDS_ST_BODY_DLP_ACTION_SANITIZE"
+msgstr "Sanitize"
+
+msgid "IDS_ST_BODY_DLP_ACTION_ALL_RULES"
+msgstr "All Rules"
+
+msgid "IDS_ST_OPT_QUICK_M_PROTECTION_MODE_SWA"
+msgstr "Quick"
+
+msgid "IDS_ST_SBODY_CREATE_RULES_QUICKLY_AND_EASILY_SWA"
+msgstr "Create rules quickly and easily."
+
+msgid "IDS_ST_MBODY_CUSTOM_SWA"
+msgstr "Custom"
+
+msgid "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"
+msgstr "Create rules from scratch to give you full control of your data protection. Use this option to create non-standard rules."
+
+msgid "IDS_ST_HEADER_CUSTOM_PROTECTION_MODE_SWA"
+msgstr "Custom protection mode"
+
+msgid "IDS_ST_TAB_RULES_SWA"
+msgstr "Rules"
+
+msgid "IDS_ST_TAB_PATTERNS_SWA"
+msgstr "Patterns"
+
+msgid "IDS_ST_HEADER_SELECT_TEMPLATE_SWA"
+msgstr "Select template"
+
+msgid "IDS_ST_HEADER_SELECT_APPS_SWA"
+msgstr "Select apps"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_CHOOSE_ACTION"
+msgstr "Select Action"
+
+msgid "IDS_ST_ACBUTTON_NEXT_SWA"
+msgstr "NEXT"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_OK"
+msgstr "OK"
+
+msgid "IDS_ST_ACBUTTON_DONE_SWA"
+msgstr "DONE"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_RULE_CREATED_MESSAGE"
+msgstr "Rule created."
+
+msgid "IDS_ST_TPOP_RULE_DELETED_SWA"
+msgstr "Rule deleted."
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_DELETE_RULE_POPUP_TITLE"
+msgstr "Delete Rule"
+
+msgid "IDS_ST_HEADER_DELETE_PATTERNS_SWA"
+msgstr "Delete patterns"
+
+msgid "IDS_ST_POP_THIS_RULE_WILL_BE_DELETED_ABB_SWA"
+msgstr "This rule will be deleted."
+
+msgid "IDS_ST_HEADER_CREATE_PATTERN_SWA"
+msgstr "Create pattern"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_PATTERN"
+msgstr "Custom"
+
+msgid "IDS_ST_TPOP_PD_PATTERNS_DELETED_SWA"
+msgstr "%d patterns deleted."
+
+msgid "IDS_ST_OPT_EDIT_SWA"
+msgstr "Edit"
+
+msgid "IDS_ST_OPT_CREATE_SWA"
+msgstr "Create"
+
+msgid "IDS_ST_OPT_ALL_PATTERNS_SWA"
+msgstr "All patterns"
+
+msgid "IDS_ST_BODY_NAME_SWA"
+msgstr "Name"
+
+msgid "IDS_ST_BODY_DESCRIPTION_SWA"
+msgstr "Description"
+
+msgid "IDS_ST_BODY_CATEGORY_SWA"
+msgstr "Category"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CATEGORY_NAME"
+msgstr "Category name"
+
+msgid "IDS_ST_OPT_STRING_MATCH_SWA"
+msgstr "String match"
+
+msgid "IDS_ST_OPT_REGULAR_EXPRESSION_SWA"
+msgstr "Regular expression"
+
+msgid "IDS_ST_POP_PD_PATTERNS_WILL_BE_DELETED_ABB_SWA"
+msgstr "%d patterns will be deleted."
+
+msgid "IDS_ST_POP_THIS_REPORT_WILL_BE_DELETED_ABB_SWA"
+msgstr "This report will be deleted."
+
+msgid "IDS_ST_OPT_DELETE_SWA"
+msgstr "Delete"
+
+msgid "IDS_ST_HEADER_DELETE_REPORT_SWA"
+msgstr "Delete report"
+
+msgid "IDS_ST_POP_PD_REPORTS_WILL_BE_DELETED_ABB_SWA"
+msgstr "%d reports will be deleted."
+
+msgid "IDS_ST_TPOP_1_REPORT_DELETED_SWA"
+msgstr "1 report deleted."
+
+msgid "IDS_ST_MBODY_SELECT_ALL_SWA"
+msgstr "Select all"
+
+msgid "IDS_ST_ACBUTTON_DELETE_SWA"
+msgstr "DELETE"
+
+msgid "IDS_ST_ACBUTTON_CANCEL_SWA"
+msgstr "CANCEL"
+
+msgid "IDS_ST_TPOP_PD_REPORTS_DELETED_SWA"
+msgstr "%d reports deleted."
+
+msgid "IDS_ST_HEADER_SELECT_ITEMS_SWA"
+msgstr "Select items"
+
+msgid "IDS_ST_HEADER_PD_SELECTED_SWA"
+msgstr "%d selected"
+
+msgid "IDS_ST_TPOP_BASIC_PROTECTION_MODE_TURNED_ON_SWA"
+msgstr "Basic protection mode turned on."
+
+msgid "IDS_ST_TPOP_RULE_CREATED_SWA"
+msgstr "Rule created. Custom protection mode turned on."
+
+msgid "IDS_ST_TPOP_ADVANCED_PROTECTION_MODE_TURNED_ON_SWA"
+msgstr "Advanced protection mode turned on."
+
+msgid "IDS_ST_HEADER_DETAILS_SWA"
+msgstr "Details"
+
+msgid "IDS_ST_BODY_STRING_TYPE_SWA"
+msgstr "String type"
+
+msgid "IDS_ST_BODY_SEARCH_TERM_SWA"
+msgstr "Search term"
+
+msgid "IDS_ST_BODY_LEAKS_CAPTURED_SWA"
+msgstr "Leaks captured"
+
+msgid "IDS_ST_SBODY_TOTAL_LEAKS_SWA"
+msgstr "Total leaks"
+
+msgid "IDS_ST_HEADER_RULE_DETAILS_SWA"
+msgstr "Rule details"
+
+msgid "IDS_ST_HEADER_PATTERN_DETAILS_SWA"
+msgstr "Pattern details"
diff --git a/po/hr.po b/po/hr.po
index 1f84725..be0e362 100755
--- a/po/hr.po
+++ b/po/hr.po
@@ -31,3 +31,272 @@ msgstr "%d puta"
msgid "IDS_ST_HEADER_PRIVACY_AND_SECURITY_ABB"
msgstr "Privatnost i sigurnost"
+msgid "IDS_ST_HEADER_DATA_LEAK_MONITOR_SWA"
+msgstr "Data leak monitor"
+
+msgid "IDS_ST_MBODY_DATA_LEAK_MONITOR_SWA"
+msgstr "Data leak monitor"
+
+msgid "IDS_ST_SBODY_PREVENT_APPS_FROM_LEAKING_YOUR_SENSITIVE_DATA_WITHOUT_AUTHORISATION_SWA"
+msgstr "Prevent apps from leaking your sensitive data without authorisation."
+
+msgid "IDS_ST_SBODY_TO_ALLOW_THIS_FUNCTION_TO_MONITOR_YOUR_PERSONAL_INFORMATION_YOU_NEED_TO_SET_UP_YOUR_PROFILE_IN_CONTACTS_SWA"
+msgstr "To allow this function to monitor your personal information, you need to set up your profile in Contacts."
+
+msgid "IDS_ST_MBODY_PROTECTION_MODE_SWA"
+msgstr "Protection mode"
+
+msgid "IDS_ST_MBODY_BASIC_M_MODE_SWA"
+msgstr "Basic"
+
+msgid "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"
+msgstr "Monitor your main sensitive data to prevent it from being leaked by most apps. This mode is suitable for regular users."
+
+msgid "IDS_ST_MBODY_ADVANCED_M_MODE_SWA"
+msgstr "Advanced"
+
+msgid "IDS_ST_SBODY_SET_UP_STRICT_RULES_TO_PREVENT_DATA_LEAKAGE_SWA"
+msgstr "Set up strict rules to prevent data leakage."
+
+msgid "IDS_ST_SBODY_THIS_MODE_WILL_AFFECT_APP_PERFORMANCE_SWA"
+msgstr "This mode will affect app performance."
+
+msgid "IDS_ST_POP_SOME_APPS_MAY_BE_BLOCKED_SWA"
+msgstr "Some apps may be blocked."
+
+msgid "IDS_ST_HEADER_TURN_ON_ADVANCED_PROTECTION_MODE_SWA"
+msgstr "Turn on Advanced protection mode"
+
+msgid "IDS_ST_MBODY_CUSTOM_M_MODE_SWA"
+msgstr "Custom"
+
+msgid "IDS_ST_SBODY_CHANGE_DEFAULT_RULES_AND_PATTERNS_AND_CREATE_YOUR_OWN_TO_SET_UP_A_CUSTOMISED_PROTECTION_MODE_SWA"
+msgstr "Change default rules and patterns and create your own to set up a customised protection mode."
+
+msgid "IDS_ST_HEADER_REPORTS_SWA"
+msgstr "Reports"
+
+msgid "IDS_ST_MBODY_FULL_REPORTS_SWA"
+msgstr "Full reports"
+
+msgid "IDS_ST_MBODY_APP_RANKINGS_SWA"
+msgstr "App rankings"
+
+msgid "IDS_ST_MBODY_DATA_STATISTICS_SWA"
+msgstr "Data statistics"
+
+msgid "IDS_ST_MBODY_RULES_AND_PATTERNS_SWA"
+msgstr "Rules and patterns"
+
+msgid "IDS_ST_NPBODY_NO_REPORTS_SWA"
+msgstr "No reports"
+
+msgid "IDS_ST_HEADER_SETTINGS_SWA"
+msgstr "Settings"
+
+msgid "IDS_ST_MBODY_KEEP_LOGS_SWA"
+msgstr "Keep logs"
+
+msgid "IDS_LOGS_CLEANED"
+msgstr "Logs cleaned"
+
+msgid "IDS_LOGS_CLEANED_FAILED"
+msgstr "Failed to clean logs"
+
+msgid "IDS_ST_OPT_1_WEEK_SWA"
+msgstr "1 week"
+
+msgid "IDS_ST_OPT_1_DAY_SWA"
+msgstr "1 day"
+
+msgid "IDS_ST_OPT_1_MONTH_SWA"
+msgstr "1 month"
+
+msgid "IDS_ST_HEADER_REPORT_DETAILS_SWA"
+msgstr "Report details"
+
+msgid "IDS_ST_BODY_CATEGORY_C_SWA"
+msgstr "Category:"
+
+msgid "IDS_ST_BODY_APP_C_SWA"
+msgstr "App:"
+
+msgid "IDS_ST_BODY_DESTINATION_C_SWA"
+msgstr "Destination:"
+
+msgid "IDS_ST_BODY_PATTERN_C_SWA"
+msgstr "Pattern:"
+
+msgid "IDS_ST_BODY_DLP_ACTION"
+msgstr "Action"
+
+msgid "IDS_ST_BODY_PACKET_C_SWA"
+msgstr "Packet:"
+
+msgid "IDS_ST_BODY_DLP_ACTION_ALLOW"
+msgstr "Allow"
+
+msgid "IDS_ST_BODY_DLP_ACTION_DENY"
+msgstr "Deny"
+
+msgid "IDS_ST_BODY_DLP_ACTION_SANITIZE"
+msgstr "Sanitize"
+
+msgid "IDS_ST_BODY_DLP_ACTION_ALL_RULES"
+msgstr "All Rules"
+
+msgid "IDS_ST_OPT_QUICK_M_PROTECTION_MODE_SWA"
+msgstr "Quick"
+
+msgid "IDS_ST_SBODY_CREATE_RULES_QUICKLY_AND_EASILY_SWA"
+msgstr "Create rules quickly and easily."
+
+msgid "IDS_ST_MBODY_CUSTOM_SWA"
+msgstr "Custom"
+
+msgid "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"
+msgstr "Create rules from scratch to give you full control of your data protection. Use this option to create non-standard rules."
+
+msgid "IDS_ST_HEADER_CUSTOM_PROTECTION_MODE_SWA"
+msgstr "Custom protection mode"
+
+msgid "IDS_ST_TAB_RULES_SWA"
+msgstr "Rules"
+
+msgid "IDS_ST_TAB_PATTERNS_SWA"
+msgstr "Patterns"
+
+msgid "IDS_ST_HEADER_SELECT_TEMPLATE_SWA"
+msgstr "Select template"
+
+msgid "IDS_ST_HEADER_SELECT_APPS_SWA"
+msgstr "Select apps"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_CHOOSE_ACTION"
+msgstr "Select Action"
+
+msgid "IDS_ST_ACBUTTON_NEXT_SWA"
+msgstr "NEXT"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_OK"
+msgstr "OK"
+
+msgid "IDS_ST_ACBUTTON_DONE_SWA"
+msgstr "DONE"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_RULE_CREATED_MESSAGE"
+msgstr "Rule created."
+
+msgid "IDS_ST_TPOP_RULE_DELETED_SWA"
+msgstr "Rule deleted."
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_DELETE_RULE_POPUP_TITLE"
+msgstr "Delete Rule"
+
+msgid "IDS_ST_HEADER_DELETE_PATTERNS_SWA"
+msgstr "Delete patterns"
+
+msgid "IDS_ST_POP_THIS_RULE_WILL_BE_DELETED_ABB_SWA"
+msgstr "This rule will be deleted."
+
+msgid "IDS_ST_HEADER_CREATE_PATTERN_SWA"
+msgstr "Create pattern"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_PATTERN"
+msgstr "Custom"
+
+msgid "IDS_ST_TPOP_PD_PATTERNS_DELETED_SWA"
+msgstr "%d patterns deleted."
+
+msgid "IDS_ST_OPT_EDIT_SWA"
+msgstr "Edit"
+
+msgid "IDS_ST_OPT_CREATE_SWA"
+msgstr "Create"
+
+msgid "IDS_ST_OPT_ALL_PATTERNS_SWA"
+msgstr "All patterns"
+
+msgid "IDS_ST_BODY_NAME_SWA"
+msgstr "Name"
+
+msgid "IDS_ST_BODY_DESCRIPTION_SWA"
+msgstr "Description"
+
+msgid "IDS_ST_BODY_CATEGORY_SWA"
+msgstr "Category"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CATEGORY_NAME"
+msgstr "Category name"
+
+msgid "IDS_ST_OPT_STRING_MATCH_SWA"
+msgstr "String match"
+
+msgid "IDS_ST_OPT_REGULAR_EXPRESSION_SWA"
+msgstr "Regular expression"
+
+msgid "IDS_ST_POP_PD_PATTERNS_WILL_BE_DELETED_ABB_SWA"
+msgstr "%d patterns will be deleted."
+
+msgid "IDS_ST_POP_THIS_REPORT_WILL_BE_DELETED_ABB_SWA"
+msgstr "This report will be deleted."
+
+msgid "IDS_ST_OPT_DELETE_SWA"
+msgstr "Delete"
+
+msgid "IDS_ST_HEADER_DELETE_REPORT_SWA"
+msgstr "Delete report"
+
+msgid "IDS_ST_POP_PD_REPORTS_WILL_BE_DELETED_ABB_SWA"
+msgstr "%d reports will be deleted."
+
+msgid "IDS_ST_TPOP_1_REPORT_DELETED_SWA"
+msgstr "1 report deleted."
+
+msgid "IDS_ST_MBODY_SELECT_ALL_SWA"
+msgstr "Select all"
+
+msgid "IDS_ST_ACBUTTON_DELETE_SWA"
+msgstr "DELETE"
+
+msgid "IDS_ST_ACBUTTON_CANCEL_SWA"
+msgstr "CANCEL"
+
+msgid "IDS_ST_TPOP_PD_REPORTS_DELETED_SWA"
+msgstr "%d reports deleted."
+
+msgid "IDS_ST_HEADER_SELECT_ITEMS_SWA"
+msgstr "Select items"
+
+msgid "IDS_ST_HEADER_PD_SELECTED_SWA"
+msgstr "%d selected"
+
+msgid "IDS_ST_TPOP_BASIC_PROTECTION_MODE_TURNED_ON_SWA"
+msgstr "Basic protection mode turned on."
+
+msgid "IDS_ST_TPOP_RULE_CREATED_SWA"
+msgstr "Rule created. Custom protection mode turned on."
+
+msgid "IDS_ST_TPOP_ADVANCED_PROTECTION_MODE_TURNED_ON_SWA"
+msgstr "Advanced protection mode turned on."
+
+msgid "IDS_ST_HEADER_DETAILS_SWA"
+msgstr "Details"
+
+msgid "IDS_ST_BODY_STRING_TYPE_SWA"
+msgstr "String type"
+
+msgid "IDS_ST_BODY_SEARCH_TERM_SWA"
+msgstr "Search term"
+
+msgid "IDS_ST_BODY_LEAKS_CAPTURED_SWA"
+msgstr "Leaks captured"
+
+msgid "IDS_ST_SBODY_TOTAL_LEAKS_SWA"
+msgstr "Total leaks"
+
+msgid "IDS_ST_HEADER_RULE_DETAILS_SWA"
+msgstr "Rule details"
+
+msgid "IDS_ST_HEADER_PATTERN_DETAILS_SWA"
+msgstr "Pattern details"
diff --git a/po/hu.po b/po/hu.po
index 94cd734..5c2af4c 100755
--- a/po/hu.po
+++ b/po/hu.po
@@ -31,3 +31,272 @@ msgstr "%d ízben"
msgid "IDS_ST_HEADER_PRIVACY_AND_SECURITY_ABB"
msgstr "Adatvéd. és biztonság"
+msgid "IDS_ST_HEADER_DATA_LEAK_MONITOR_SWA"
+msgstr "Data leak monitor"
+
+msgid "IDS_ST_MBODY_DATA_LEAK_MONITOR_SWA"
+msgstr "Data leak monitor"
+
+msgid "IDS_ST_SBODY_PREVENT_APPS_FROM_LEAKING_YOUR_SENSITIVE_DATA_WITHOUT_AUTHORISATION_SWA"
+msgstr "Prevent apps from leaking your sensitive data without authorisation."
+
+msgid "IDS_ST_SBODY_TO_ALLOW_THIS_FUNCTION_TO_MONITOR_YOUR_PERSONAL_INFORMATION_YOU_NEED_TO_SET_UP_YOUR_PROFILE_IN_CONTACTS_SWA"
+msgstr "To allow this function to monitor your personal information, you need to set up your profile in Contacts."
+
+msgid "IDS_ST_MBODY_PROTECTION_MODE_SWA"
+msgstr "Protection mode"
+
+msgid "IDS_ST_MBODY_BASIC_M_MODE_SWA"
+msgstr "Basic"
+
+msgid "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"
+msgstr "Monitor your main sensitive data to prevent it from being leaked by most apps. This mode is suitable for regular users."
+
+msgid "IDS_ST_MBODY_ADVANCED_M_MODE_SWA"
+msgstr "Advanced"
+
+msgid "IDS_ST_SBODY_SET_UP_STRICT_RULES_TO_PREVENT_DATA_LEAKAGE_SWA"
+msgstr "Set up strict rules to prevent data leakage."
+
+msgid "IDS_ST_SBODY_THIS_MODE_WILL_AFFECT_APP_PERFORMANCE_SWA"
+msgstr "This mode will affect app performance."
+
+msgid "IDS_ST_POP_SOME_APPS_MAY_BE_BLOCKED_SWA"
+msgstr "Some apps may be blocked."
+
+msgid "IDS_ST_HEADER_TURN_ON_ADVANCED_PROTECTION_MODE_SWA"
+msgstr "Turn on Advanced protection mode"
+
+msgid "IDS_ST_MBODY_CUSTOM_M_MODE_SWA"
+msgstr "Custom"
+
+msgid "IDS_ST_SBODY_CHANGE_DEFAULT_RULES_AND_PATTERNS_AND_CREATE_YOUR_OWN_TO_SET_UP_A_CUSTOMISED_PROTECTION_MODE_SWA"
+msgstr "Change default rules and patterns and create your own to set up a customised protection mode."
+
+msgid "IDS_ST_HEADER_REPORTS_SWA"
+msgstr "Reports"
+
+msgid "IDS_ST_MBODY_FULL_REPORTS_SWA"
+msgstr "Full reports"
+
+msgid "IDS_ST_MBODY_APP_RANKINGS_SWA"
+msgstr "App rankings"
+
+msgid "IDS_ST_MBODY_DATA_STATISTICS_SWA"
+msgstr "Data statistics"
+
+msgid "IDS_ST_MBODY_RULES_AND_PATTERNS_SWA"
+msgstr "Rules and patterns"
+
+msgid "IDS_ST_NPBODY_NO_REPORTS_SWA"
+msgstr "No reports"
+
+msgid "IDS_ST_HEADER_SETTINGS_SWA"
+msgstr "Settings"
+
+msgid "IDS_ST_MBODY_KEEP_LOGS_SWA"
+msgstr "Keep logs"
+
+msgid "IDS_LOGS_CLEANED"
+msgstr "Logs cleaned"
+
+msgid "IDS_LOGS_CLEANED_FAILED"
+msgstr "Failed to clean logs"
+
+msgid "IDS_ST_OPT_1_WEEK_SWA"
+msgstr "1 week"
+
+msgid "IDS_ST_OPT_1_DAY_SWA"
+msgstr "1 day"
+
+msgid "IDS_ST_OPT_1_MONTH_SWA"
+msgstr "1 month"
+
+msgid "IDS_ST_HEADER_REPORT_DETAILS_SWA"
+msgstr "Report details"
+
+msgid "IDS_ST_BODY_CATEGORY_C_SWA"
+msgstr "Category:"
+
+msgid "IDS_ST_BODY_APP_C_SWA"
+msgstr "App:"
+
+msgid "IDS_ST_BODY_DESTINATION_C_SWA"
+msgstr "Destination:"
+
+msgid "IDS_ST_BODY_PATTERN_C_SWA"
+msgstr "Pattern:"
+
+msgid "IDS_ST_BODY_DLP_ACTION"
+msgstr "Action"
+
+msgid "IDS_ST_BODY_PACKET_C_SWA"
+msgstr "Packet:"
+
+msgid "IDS_ST_BODY_DLP_ACTION_ALLOW"
+msgstr "Allow"
+
+msgid "IDS_ST_BODY_DLP_ACTION_DENY"
+msgstr "Deny"
+
+msgid "IDS_ST_BODY_DLP_ACTION_SANITIZE"
+msgstr "Sanitize"
+
+msgid "IDS_ST_BODY_DLP_ACTION_ALL_RULES"
+msgstr "All Rules"
+
+msgid "IDS_ST_OPT_QUICK_M_PROTECTION_MODE_SWA"
+msgstr "Quick"
+
+msgid "IDS_ST_SBODY_CREATE_RULES_QUICKLY_AND_EASILY_SWA"
+msgstr "Create rules quickly and easily."
+
+msgid "IDS_ST_MBODY_CUSTOM_SWA"
+msgstr "Custom"
+
+msgid "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"
+msgstr "Create rules from scratch to give you full control of your data protection. Use this option to create non-standard rules."
+
+msgid "IDS_ST_HEADER_CUSTOM_PROTECTION_MODE_SWA"
+msgstr "Custom protection mode"
+
+msgid "IDS_ST_TAB_RULES_SWA"
+msgstr "Rules"
+
+msgid "IDS_ST_TAB_PATTERNS_SWA"
+msgstr "Patterns"
+
+msgid "IDS_ST_HEADER_SELECT_TEMPLATE_SWA"
+msgstr "Select template"
+
+msgid "IDS_ST_HEADER_SELECT_APPS_SWA"
+msgstr "Select apps"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_CHOOSE_ACTION"
+msgstr "Select Action"
+
+msgid "IDS_ST_ACBUTTON_NEXT_SWA"
+msgstr "NEXT"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_OK"
+msgstr "OK"
+
+msgid "IDS_ST_ACBUTTON_DONE_SWA"
+msgstr "DONE"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_RULE_CREATED_MESSAGE"
+msgstr "Rule created."
+
+msgid "IDS_ST_TPOP_RULE_DELETED_SWA"
+msgstr "Rule deleted."
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_DELETE_RULE_POPUP_TITLE"
+msgstr "Delete Rule"
+
+msgid "IDS_ST_HEADER_DELETE_PATTERNS_SWA"
+msgstr "Delete patterns"
+
+msgid "IDS_ST_POP_THIS_RULE_WILL_BE_DELETED_ABB_SWA"
+msgstr "This rule will be deleted."
+
+msgid "IDS_ST_HEADER_CREATE_PATTERN_SWA"
+msgstr "Create pattern"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_PATTERN"
+msgstr "Custom"
+
+msgid "IDS_ST_TPOP_PD_PATTERNS_DELETED_SWA"
+msgstr "%d patterns deleted."
+
+msgid "IDS_ST_OPT_EDIT_SWA"
+msgstr "Edit"
+
+msgid "IDS_ST_OPT_CREATE_SWA"
+msgstr "Create"
+
+msgid "IDS_ST_OPT_ALL_PATTERNS_SWA"
+msgstr "All patterns"
+
+msgid "IDS_ST_BODY_NAME_SWA"
+msgstr "Name"
+
+msgid "IDS_ST_BODY_DESCRIPTION_SWA"
+msgstr "Description"
+
+msgid "IDS_ST_BODY_CATEGORY_SWA"
+msgstr "Category"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CATEGORY_NAME"
+msgstr "Category name"
+
+msgid "IDS_ST_OPT_STRING_MATCH_SWA"
+msgstr "String match"
+
+msgid "IDS_ST_OPT_REGULAR_EXPRESSION_SWA"
+msgstr "Regular expression"
+
+msgid "IDS_ST_POP_PD_PATTERNS_WILL_BE_DELETED_ABB_SWA"
+msgstr "%d patterns will be deleted."
+
+msgid "IDS_ST_POP_THIS_REPORT_WILL_BE_DELETED_ABB_SWA"
+msgstr "This report will be deleted."
+
+msgid "IDS_ST_OPT_DELETE_SWA"
+msgstr "Delete"
+
+msgid "IDS_ST_HEADER_DELETE_REPORT_SWA"
+msgstr "Delete report"
+
+msgid "IDS_ST_POP_PD_REPORTS_WILL_BE_DELETED_ABB_SWA"
+msgstr "%d reports will be deleted."
+
+msgid "IDS_ST_TPOP_1_REPORT_DELETED_SWA"
+msgstr "1 report deleted."
+
+msgid "IDS_ST_MBODY_SELECT_ALL_SWA"
+msgstr "Select all"
+
+msgid "IDS_ST_ACBUTTON_DELETE_SWA"
+msgstr "DELETE"
+
+msgid "IDS_ST_ACBUTTON_CANCEL_SWA"
+msgstr "CANCEL"
+
+msgid "IDS_ST_TPOP_PD_REPORTS_DELETED_SWA"
+msgstr "%d reports deleted."
+
+msgid "IDS_ST_HEADER_SELECT_ITEMS_SWA"
+msgstr "Select items"
+
+msgid "IDS_ST_HEADER_PD_SELECTED_SWA"
+msgstr "%d selected"
+
+msgid "IDS_ST_TPOP_BASIC_PROTECTION_MODE_TURNED_ON_SWA"
+msgstr "Basic protection mode turned on."
+
+msgid "IDS_ST_TPOP_RULE_CREATED_SWA"
+msgstr "Rule created. Custom protection mode turned on."
+
+msgid "IDS_ST_TPOP_ADVANCED_PROTECTION_MODE_TURNED_ON_SWA"
+msgstr "Advanced protection mode turned on."
+
+msgid "IDS_ST_HEADER_DETAILS_SWA"
+msgstr "Details"
+
+msgid "IDS_ST_BODY_STRING_TYPE_SWA"
+msgstr "String type"
+
+msgid "IDS_ST_BODY_SEARCH_TERM_SWA"
+msgstr "Search term"
+
+msgid "IDS_ST_BODY_LEAKS_CAPTURED_SWA"
+msgstr "Leaks captured"
+
+msgid "IDS_ST_SBODY_TOTAL_LEAKS_SWA"
+msgstr "Total leaks"
+
+msgid "IDS_ST_HEADER_RULE_DETAILS_SWA"
+msgstr "Rule details"
+
+msgid "IDS_ST_HEADER_PATTERN_DETAILS_SWA"
+msgstr "Pattern details"
diff --git a/po/hy.po b/po/hy.po
index 9e0f45c..a2781cb 100755
--- a/po/hy.po
+++ b/po/hy.po
@@ -31,3 +31,272 @@ msgstr "%d անգամ"
msgid "IDS_ST_HEADER_PRIVACY_AND_SECURITY_ABB"
msgstr "Գաղտն. և անվտանգութ."
+msgid "IDS_ST_HEADER_DATA_LEAK_MONITOR_SWA"
+msgstr "Data leak monitor"
+
+msgid "IDS_ST_MBODY_DATA_LEAK_MONITOR_SWA"
+msgstr "Data leak monitor"
+
+msgid "IDS_ST_SBODY_PREVENT_APPS_FROM_LEAKING_YOUR_SENSITIVE_DATA_WITHOUT_AUTHORISATION_SWA"
+msgstr "Prevent apps from leaking your sensitive data without authorisation."
+
+msgid "IDS_ST_SBODY_TO_ALLOW_THIS_FUNCTION_TO_MONITOR_YOUR_PERSONAL_INFORMATION_YOU_NEED_TO_SET_UP_YOUR_PROFILE_IN_CONTACTS_SWA"
+msgstr "To allow this function to monitor your personal information, you need to set up your profile in Contacts."
+
+msgid "IDS_ST_MBODY_PROTECTION_MODE_SWA"
+msgstr "Protection mode"
+
+msgid "IDS_ST_MBODY_BASIC_M_MODE_SWA"
+msgstr "Basic"
+
+msgid "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"
+msgstr "Monitor your main sensitive data to prevent it from being leaked by most apps. This mode is suitable for regular users."
+
+msgid "IDS_ST_MBODY_ADVANCED_M_MODE_SWA"
+msgstr "Advanced"
+
+msgid "IDS_ST_SBODY_SET_UP_STRICT_RULES_TO_PREVENT_DATA_LEAKAGE_SWA"
+msgstr "Set up strict rules to prevent data leakage."
+
+msgid "IDS_ST_SBODY_THIS_MODE_WILL_AFFECT_APP_PERFORMANCE_SWA"
+msgstr "This mode will affect app performance."
+
+msgid "IDS_ST_POP_SOME_APPS_MAY_BE_BLOCKED_SWA"
+msgstr "Some apps may be blocked."
+
+msgid "IDS_ST_HEADER_TURN_ON_ADVANCED_PROTECTION_MODE_SWA"
+msgstr "Turn on Advanced protection mode"
+
+msgid "IDS_ST_MBODY_CUSTOM_M_MODE_SWA"
+msgstr "Custom"
+
+msgid "IDS_ST_SBODY_CHANGE_DEFAULT_RULES_AND_PATTERNS_AND_CREATE_YOUR_OWN_TO_SET_UP_A_CUSTOMISED_PROTECTION_MODE_SWA"
+msgstr "Change default rules and patterns and create your own to set up a customised protection mode."
+
+msgid "IDS_ST_HEADER_REPORTS_SWA"
+msgstr "Reports"
+
+msgid "IDS_ST_MBODY_FULL_REPORTS_SWA"
+msgstr "Full reports"
+
+msgid "IDS_ST_MBODY_APP_RANKINGS_SWA"
+msgstr "App rankings"
+
+msgid "IDS_ST_MBODY_DATA_STATISTICS_SWA"
+msgstr "Data statistics"
+
+msgid "IDS_ST_MBODY_RULES_AND_PATTERNS_SWA"
+msgstr "Rules and patterns"
+
+msgid "IDS_ST_NPBODY_NO_REPORTS_SWA"
+msgstr "No reports"
+
+msgid "IDS_ST_HEADER_SETTINGS_SWA"
+msgstr "Settings"
+
+msgid "IDS_ST_MBODY_KEEP_LOGS_SWA"
+msgstr "Keep logs"
+
+msgid "IDS_LOGS_CLEANED"
+msgstr "Logs cleaned"
+
+msgid "IDS_LOGS_CLEANED_FAILED"
+msgstr "Failed to clean logs"
+
+msgid "IDS_ST_OPT_1_WEEK_SWA"
+msgstr "1 week"
+
+msgid "IDS_ST_OPT_1_DAY_SWA"
+msgstr "1 day"
+
+msgid "IDS_ST_OPT_1_MONTH_SWA"
+msgstr "1 month"
+
+msgid "IDS_ST_HEADER_REPORT_DETAILS_SWA"
+msgstr "Report details"
+
+msgid "IDS_ST_BODY_CATEGORY_C_SWA"
+msgstr "Category:"
+
+msgid "IDS_ST_BODY_APP_C_SWA"
+msgstr "App:"
+
+msgid "IDS_ST_BODY_DESTINATION_C_SWA"
+msgstr "Destination:"
+
+msgid "IDS_ST_BODY_PATTERN_C_SWA"
+msgstr "Pattern:"
+
+msgid "IDS_ST_BODY_DLP_ACTION"
+msgstr "Action"
+
+msgid "IDS_ST_BODY_PACKET_C_SWA"
+msgstr "Packet:"
+
+msgid "IDS_ST_BODY_DLP_ACTION_ALLOW"
+msgstr "Allow"
+
+msgid "IDS_ST_BODY_DLP_ACTION_DENY"
+msgstr "Deny"
+
+msgid "IDS_ST_BODY_DLP_ACTION_SANITIZE"
+msgstr "Sanitize"
+
+msgid "IDS_ST_BODY_DLP_ACTION_ALL_RULES"
+msgstr "All Rules"
+
+msgid "IDS_ST_OPT_QUICK_M_PROTECTION_MODE_SWA"
+msgstr "Quick"
+
+msgid "IDS_ST_SBODY_CREATE_RULES_QUICKLY_AND_EASILY_SWA"
+msgstr "Create rules quickly and easily."
+
+msgid "IDS_ST_MBODY_CUSTOM_SWA"
+msgstr "Custom"
+
+msgid "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"
+msgstr "Create rules from scratch to give you full control of your data protection. Use this option to create non-standard rules."
+
+msgid "IDS_ST_HEADER_CUSTOM_PROTECTION_MODE_SWA"
+msgstr "Custom protection mode"
+
+msgid "IDS_ST_TAB_RULES_SWA"
+msgstr "Rules"
+
+msgid "IDS_ST_TAB_PATTERNS_SWA"
+msgstr "Patterns"
+
+msgid "IDS_ST_HEADER_SELECT_TEMPLATE_SWA"
+msgstr "Select template"
+
+msgid "IDS_ST_HEADER_SELECT_APPS_SWA"
+msgstr "Select apps"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_CHOOSE_ACTION"
+msgstr "Select Action"
+
+msgid "IDS_ST_ACBUTTON_NEXT_SWA"
+msgstr "NEXT"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_OK"
+msgstr "OK"
+
+msgid "IDS_ST_ACBUTTON_DONE_SWA"
+msgstr "DONE"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_RULE_CREATED_MESSAGE"
+msgstr "Rule created."
+
+msgid "IDS_ST_TPOP_RULE_DELETED_SWA"
+msgstr "Rule deleted."
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_DELETE_RULE_POPUP_TITLE"
+msgstr "Delete Rule"
+
+msgid "IDS_ST_HEADER_DELETE_PATTERNS_SWA"
+msgstr "Delete patterns"
+
+msgid "IDS_ST_POP_THIS_RULE_WILL_BE_DELETED_ABB_SWA"
+msgstr "This rule will be deleted."
+
+msgid "IDS_ST_HEADER_CREATE_PATTERN_SWA"
+msgstr "Create pattern"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_PATTERN"
+msgstr "Custom"
+
+msgid "IDS_ST_TPOP_PD_PATTERNS_DELETED_SWA"
+msgstr "%d patterns deleted."
+
+msgid "IDS_ST_OPT_EDIT_SWA"
+msgstr "Edit"
+
+msgid "IDS_ST_OPT_CREATE_SWA"
+msgstr "Create"
+
+msgid "IDS_ST_OPT_ALL_PATTERNS_SWA"
+msgstr "All patterns"
+
+msgid "IDS_ST_BODY_NAME_SWA"
+msgstr "Name"
+
+msgid "IDS_ST_BODY_DESCRIPTION_SWA"
+msgstr "Description"
+
+msgid "IDS_ST_BODY_CATEGORY_SWA"
+msgstr "Category"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CATEGORY_NAME"
+msgstr "Category name"
+
+msgid "IDS_ST_OPT_STRING_MATCH_SWA"
+msgstr "String match"
+
+msgid "IDS_ST_OPT_REGULAR_EXPRESSION_SWA"
+msgstr "Regular expression"
+
+msgid "IDS_ST_POP_PD_PATTERNS_WILL_BE_DELETED_ABB_SWA"
+msgstr "%d patterns will be deleted."
+
+msgid "IDS_ST_POP_THIS_REPORT_WILL_BE_DELETED_ABB_SWA"
+msgstr "This report will be deleted."
+
+msgid "IDS_ST_OPT_DELETE_SWA"
+msgstr "Delete"
+
+msgid "IDS_ST_HEADER_DELETE_REPORT_SWA"
+msgstr "Delete report"
+
+msgid "IDS_ST_POP_PD_REPORTS_WILL_BE_DELETED_ABB_SWA"
+msgstr "%d reports will be deleted."
+
+msgid "IDS_ST_TPOP_1_REPORT_DELETED_SWA"
+msgstr "1 report deleted."
+
+msgid "IDS_ST_MBODY_SELECT_ALL_SWA"
+msgstr "Select all"
+
+msgid "IDS_ST_ACBUTTON_DELETE_SWA"
+msgstr "DELETE"
+
+msgid "IDS_ST_ACBUTTON_CANCEL_SWA"
+msgstr "CANCEL"
+
+msgid "IDS_ST_TPOP_PD_REPORTS_DELETED_SWA"
+msgstr "%d reports deleted."
+
+msgid "IDS_ST_HEADER_SELECT_ITEMS_SWA"
+msgstr "Select items"
+
+msgid "IDS_ST_HEADER_PD_SELECTED_SWA"
+msgstr "%d selected"
+
+msgid "IDS_ST_TPOP_BASIC_PROTECTION_MODE_TURNED_ON_SWA"
+msgstr "Basic protection mode turned on."
+
+msgid "IDS_ST_TPOP_RULE_CREATED_SWA"
+msgstr "Rule created. Custom protection mode turned on."
+
+msgid "IDS_ST_TPOP_ADVANCED_PROTECTION_MODE_TURNED_ON_SWA"
+msgstr "Advanced protection mode turned on."
+
+msgid "IDS_ST_HEADER_DETAILS_SWA"
+msgstr "Details"
+
+msgid "IDS_ST_BODY_STRING_TYPE_SWA"
+msgstr "String type"
+
+msgid "IDS_ST_BODY_SEARCH_TERM_SWA"
+msgstr "Search term"
+
+msgid "IDS_ST_BODY_LEAKS_CAPTURED_SWA"
+msgstr "Leaks captured"
+
+msgid "IDS_ST_SBODY_TOTAL_LEAKS_SWA"
+msgstr "Total leaks"
+
+msgid "IDS_ST_HEADER_RULE_DETAILS_SWA"
+msgstr "Rule details"
+
+msgid "IDS_ST_HEADER_PATTERN_DETAILS_SWA"
+msgstr "Pattern details"
diff --git a/po/is.po b/po/is.po
index d6c6128..0c3f9af 100755
--- a/po/is.po
+++ b/po/is.po
@@ -31,3 +31,272 @@ msgstr "%d sinnum"
msgid "IDS_ST_HEADER_PRIVACY_AND_SECURITY_ABB"
msgstr "Persónuvernd og öryggi"
+msgid "IDS_ST_HEADER_DATA_LEAK_MONITOR_SWA"
+msgstr "Data leak monitor"
+
+msgid "IDS_ST_MBODY_DATA_LEAK_MONITOR_SWA"
+msgstr "Data leak monitor"
+
+msgid "IDS_ST_SBODY_PREVENT_APPS_FROM_LEAKING_YOUR_SENSITIVE_DATA_WITHOUT_AUTHORISATION_SWA"
+msgstr "Prevent apps from leaking your sensitive data without authorisation."
+
+msgid "IDS_ST_SBODY_TO_ALLOW_THIS_FUNCTION_TO_MONITOR_YOUR_PERSONAL_INFORMATION_YOU_NEED_TO_SET_UP_YOUR_PROFILE_IN_CONTACTS_SWA"
+msgstr "To allow this function to monitor your personal information, you need to set up your profile in Contacts."
+
+msgid "IDS_ST_MBODY_PROTECTION_MODE_SWA"
+msgstr "Protection mode"
+
+msgid "IDS_ST_MBODY_BASIC_M_MODE_SWA"
+msgstr "Basic"
+
+msgid "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"
+msgstr "Monitor your main sensitive data to prevent it from being leaked by most apps. This mode is suitable for regular users."
+
+msgid "IDS_ST_MBODY_ADVANCED_M_MODE_SWA"
+msgstr "Advanced"
+
+msgid "IDS_ST_SBODY_SET_UP_STRICT_RULES_TO_PREVENT_DATA_LEAKAGE_SWA"
+msgstr "Set up strict rules to prevent data leakage."
+
+msgid "IDS_ST_SBODY_THIS_MODE_WILL_AFFECT_APP_PERFORMANCE_SWA"
+msgstr "This mode will affect app performance."
+
+msgid "IDS_ST_POP_SOME_APPS_MAY_BE_BLOCKED_SWA"
+msgstr "Some apps may be blocked."
+
+msgid "IDS_ST_HEADER_TURN_ON_ADVANCED_PROTECTION_MODE_SWA"
+msgstr "Turn on Advanced protection mode"
+
+msgid "IDS_ST_MBODY_CUSTOM_M_MODE_SWA"
+msgstr "Custom"
+
+msgid "IDS_ST_SBODY_CHANGE_DEFAULT_RULES_AND_PATTERNS_AND_CREATE_YOUR_OWN_TO_SET_UP_A_CUSTOMISED_PROTECTION_MODE_SWA"
+msgstr "Change default rules and patterns and create your own to set up a customised protection mode."
+
+msgid "IDS_ST_HEADER_REPORTS_SWA"
+msgstr "Reports"
+
+msgid "IDS_ST_MBODY_FULL_REPORTS_SWA"
+msgstr "Full reports"
+
+msgid "IDS_ST_MBODY_APP_RANKINGS_SWA"
+msgstr "App rankings"
+
+msgid "IDS_ST_MBODY_DATA_STATISTICS_SWA"
+msgstr "Data statistics"
+
+msgid "IDS_ST_MBODY_RULES_AND_PATTERNS_SWA"
+msgstr "Rules and patterns"
+
+msgid "IDS_ST_NPBODY_NO_REPORTS_SWA"
+msgstr "No reports"
+
+msgid "IDS_ST_HEADER_SETTINGS_SWA"
+msgstr "Settings"
+
+msgid "IDS_ST_MBODY_KEEP_LOGS_SWA"
+msgstr "Keep logs"
+
+msgid "IDS_LOGS_CLEANED"
+msgstr "Logs cleaned"
+
+msgid "IDS_LOGS_CLEANED_FAILED"
+msgstr "Failed to clean logs"
+
+msgid "IDS_ST_OPT_1_WEEK_SWA"
+msgstr "1 week"
+
+msgid "IDS_ST_OPT_1_DAY_SWA"
+msgstr "1 day"
+
+msgid "IDS_ST_OPT_1_MONTH_SWA"
+msgstr "1 month"
+
+msgid "IDS_ST_HEADER_REPORT_DETAILS_SWA"
+msgstr "Report details"
+
+msgid "IDS_ST_BODY_CATEGORY_C_SWA"
+msgstr "Category:"
+
+msgid "IDS_ST_BODY_APP_C_SWA"
+msgstr "App:"
+
+msgid "IDS_ST_BODY_DESTINATION_C_SWA"
+msgstr "Destination:"
+
+msgid "IDS_ST_BODY_PATTERN_C_SWA"
+msgstr "Pattern:"
+
+msgid "IDS_ST_BODY_DLP_ACTION"
+msgstr "Action"
+
+msgid "IDS_ST_BODY_PACKET_C_SWA"
+msgstr "Packet:"
+
+msgid "IDS_ST_BODY_DLP_ACTION_ALLOW"
+msgstr "Allow"
+
+msgid "IDS_ST_BODY_DLP_ACTION_DENY"
+msgstr "Deny"
+
+msgid "IDS_ST_BODY_DLP_ACTION_SANITIZE"
+msgstr "Sanitize"
+
+msgid "IDS_ST_BODY_DLP_ACTION_ALL_RULES"
+msgstr "All Rules"
+
+msgid "IDS_ST_OPT_QUICK_M_PROTECTION_MODE_SWA"
+msgstr "Quick"
+
+msgid "IDS_ST_SBODY_CREATE_RULES_QUICKLY_AND_EASILY_SWA"
+msgstr "Create rules quickly and easily."
+
+msgid "IDS_ST_MBODY_CUSTOM_SWA"
+msgstr "Custom"
+
+msgid "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"
+msgstr "Create rules from scratch to give you full control of your data protection. Use this option to create non-standard rules."
+
+msgid "IDS_ST_HEADER_CUSTOM_PROTECTION_MODE_SWA"
+msgstr "Custom protection mode"
+
+msgid "IDS_ST_TAB_RULES_SWA"
+msgstr "Rules"
+
+msgid "IDS_ST_TAB_PATTERNS_SWA"
+msgstr "Patterns"
+
+msgid "IDS_ST_HEADER_SELECT_TEMPLATE_SWA"
+msgstr "Select template"
+
+msgid "IDS_ST_HEADER_SELECT_APPS_SWA"
+msgstr "Select apps"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_CHOOSE_ACTION"
+msgstr "Select Action"
+
+msgid "IDS_ST_ACBUTTON_NEXT_SWA"
+msgstr "NEXT"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_OK"
+msgstr "OK"
+
+msgid "IDS_ST_ACBUTTON_DONE_SWA"
+msgstr "DONE"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_RULE_CREATED_MESSAGE"
+msgstr "Rule created."
+
+msgid "IDS_ST_TPOP_RULE_DELETED_SWA"
+msgstr "Rule deleted."
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_DELETE_RULE_POPUP_TITLE"
+msgstr "Delete Rule"
+
+msgid "IDS_ST_HEADER_DELETE_PATTERNS_SWA"
+msgstr "Delete patterns"
+
+msgid "IDS_ST_POP_THIS_RULE_WILL_BE_DELETED_ABB_SWA"
+msgstr "This rule will be deleted."
+
+msgid "IDS_ST_HEADER_CREATE_PATTERN_SWA"
+msgstr "Create pattern"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_PATTERN"
+msgstr "Custom"
+
+msgid "IDS_ST_TPOP_PD_PATTERNS_DELETED_SWA"
+msgstr "%d patterns deleted."
+
+msgid "IDS_ST_OPT_EDIT_SWA"
+msgstr "Edit"
+
+msgid "IDS_ST_OPT_CREATE_SWA"
+msgstr "Create"
+
+msgid "IDS_ST_OPT_ALL_PATTERNS_SWA"
+msgstr "All patterns"
+
+msgid "IDS_ST_BODY_NAME_SWA"
+msgstr "Name"
+
+msgid "IDS_ST_BODY_DESCRIPTION_SWA"
+msgstr "Description"
+
+msgid "IDS_ST_BODY_CATEGORY_SWA"
+msgstr "Category"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CATEGORY_NAME"
+msgstr "Category name"
+
+msgid "IDS_ST_OPT_STRING_MATCH_SWA"
+msgstr "String match"
+
+msgid "IDS_ST_OPT_REGULAR_EXPRESSION_SWA"
+msgstr "Regular expression"
+
+msgid "IDS_ST_POP_PD_PATTERNS_WILL_BE_DELETED_ABB_SWA"
+msgstr "%d patterns will be deleted."
+
+msgid "IDS_ST_POP_THIS_REPORT_WILL_BE_DELETED_ABB_SWA"
+msgstr "This report will be deleted."
+
+msgid "IDS_ST_OPT_DELETE_SWA"
+msgstr "Delete"
+
+msgid "IDS_ST_HEADER_DELETE_REPORT_SWA"
+msgstr "Delete report"
+
+msgid "IDS_ST_POP_PD_REPORTS_WILL_BE_DELETED_ABB_SWA"
+msgstr "%d reports will be deleted."
+
+msgid "IDS_ST_TPOP_1_REPORT_DELETED_SWA"
+msgstr "1 report deleted."
+
+msgid "IDS_ST_MBODY_SELECT_ALL_SWA"
+msgstr "Select all"
+
+msgid "IDS_ST_ACBUTTON_DELETE_SWA"
+msgstr "DELETE"
+
+msgid "IDS_ST_ACBUTTON_CANCEL_SWA"
+msgstr "CANCEL"
+
+msgid "IDS_ST_TPOP_PD_REPORTS_DELETED_SWA"
+msgstr "%d reports deleted."
+
+msgid "IDS_ST_HEADER_SELECT_ITEMS_SWA"
+msgstr "Select items"
+
+msgid "IDS_ST_HEADER_PD_SELECTED_SWA"
+msgstr "%d selected"
+
+msgid "IDS_ST_TPOP_BASIC_PROTECTION_MODE_TURNED_ON_SWA"
+msgstr "Basic protection mode turned on."
+
+msgid "IDS_ST_TPOP_RULE_CREATED_SWA"
+msgstr "Rule created. Custom protection mode turned on."
+
+msgid "IDS_ST_TPOP_ADVANCED_PROTECTION_MODE_TURNED_ON_SWA"
+msgstr "Advanced protection mode turned on."
+
+msgid "IDS_ST_HEADER_DETAILS_SWA"
+msgstr "Details"
+
+msgid "IDS_ST_BODY_STRING_TYPE_SWA"
+msgstr "String type"
+
+msgid "IDS_ST_BODY_SEARCH_TERM_SWA"
+msgstr "Search term"
+
+msgid "IDS_ST_BODY_LEAKS_CAPTURED_SWA"
+msgstr "Leaks captured"
+
+msgid "IDS_ST_SBODY_TOTAL_LEAKS_SWA"
+msgstr "Total leaks"
+
+msgid "IDS_ST_HEADER_RULE_DETAILS_SWA"
+msgstr "Rule details"
+
+msgid "IDS_ST_HEADER_PATTERN_DETAILS_SWA"
+msgstr "Pattern details"
diff --git a/po/it_IT.po b/po/it_IT.po
index 2386e21..d2ec452 100755
--- a/po/it_IT.po
+++ b/po/it_IT.po
@@ -31,3 +31,272 @@ msgstr "%d volte"
msgid "IDS_ST_HEADER_PRIVACY_AND_SECURITY_ABB"
msgstr "Privacy ed emergenza"
+msgid "IDS_ST_HEADER_DATA_LEAK_MONITOR_SWA"
+msgstr "Data leak monitor"
+
+msgid "IDS_ST_MBODY_DATA_LEAK_MONITOR_SWA"
+msgstr "Data leak monitor"
+
+msgid "IDS_ST_SBODY_PREVENT_APPS_FROM_LEAKING_YOUR_SENSITIVE_DATA_WITHOUT_AUTHORISATION_SWA"
+msgstr "Prevent apps from leaking your sensitive data without authorisation."
+
+msgid "IDS_ST_SBODY_TO_ALLOW_THIS_FUNCTION_TO_MONITOR_YOUR_PERSONAL_INFORMATION_YOU_NEED_TO_SET_UP_YOUR_PROFILE_IN_CONTACTS_SWA"
+msgstr "To allow this function to monitor your personal information, you need to set up your profile in Contacts."
+
+msgid "IDS_ST_MBODY_PROTECTION_MODE_SWA"
+msgstr "Protection mode"
+
+msgid "IDS_ST_MBODY_BASIC_M_MODE_SWA"
+msgstr "Basic"
+
+msgid "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"
+msgstr "Monitor your main sensitive data to prevent it from being leaked by most apps. This mode is suitable for regular users."
+
+msgid "IDS_ST_MBODY_ADVANCED_M_MODE_SWA"
+msgstr "Advanced"
+
+msgid "IDS_ST_SBODY_SET_UP_STRICT_RULES_TO_PREVENT_DATA_LEAKAGE_SWA"
+msgstr "Set up strict rules to prevent data leakage."
+
+msgid "IDS_ST_SBODY_THIS_MODE_WILL_AFFECT_APP_PERFORMANCE_SWA"
+msgstr "This mode will affect app performance."
+
+msgid "IDS_ST_POP_SOME_APPS_MAY_BE_BLOCKED_SWA"
+msgstr "Some apps may be blocked."
+
+msgid "IDS_ST_HEADER_TURN_ON_ADVANCED_PROTECTION_MODE_SWA"
+msgstr "Turn on Advanced protection mode"
+
+msgid "IDS_ST_MBODY_CUSTOM_M_MODE_SWA"
+msgstr "Custom"
+
+msgid "IDS_ST_SBODY_CHANGE_DEFAULT_RULES_AND_PATTERNS_AND_CREATE_YOUR_OWN_TO_SET_UP_A_CUSTOMISED_PROTECTION_MODE_SWA"
+msgstr "Change default rules and patterns and create your own to set up a customised protection mode."
+
+msgid "IDS_ST_HEADER_REPORTS_SWA"
+msgstr "Reports"
+
+msgid "IDS_ST_MBODY_FULL_REPORTS_SWA"
+msgstr "Full reports"
+
+msgid "IDS_ST_MBODY_APP_RANKINGS_SWA"
+msgstr "App rankings"
+
+msgid "IDS_ST_MBODY_DATA_STATISTICS_SWA"
+msgstr "Data statistics"
+
+msgid "IDS_ST_MBODY_RULES_AND_PATTERNS_SWA"
+msgstr "Rules and patterns"
+
+msgid "IDS_ST_NPBODY_NO_REPORTS_SWA"
+msgstr "No reports"
+
+msgid "IDS_ST_HEADER_SETTINGS_SWA"
+msgstr "Settings"
+
+msgid "IDS_ST_MBODY_KEEP_LOGS_SWA"
+msgstr "Keep logs"
+
+msgid "IDS_LOGS_CLEANED"
+msgstr "Logs cleaned"
+
+msgid "IDS_LOGS_CLEANED_FAILED"
+msgstr "Failed to clean logs"
+
+msgid "IDS_ST_OPT_1_WEEK_SWA"
+msgstr "1 week"
+
+msgid "IDS_ST_OPT_1_DAY_SWA"
+msgstr "1 day"
+
+msgid "IDS_ST_OPT_1_MONTH_SWA"
+msgstr "1 month"
+
+msgid "IDS_ST_HEADER_REPORT_DETAILS_SWA"
+msgstr "Report details"
+
+msgid "IDS_ST_BODY_CATEGORY_C_SWA"
+msgstr "Category:"
+
+msgid "IDS_ST_BODY_APP_C_SWA"
+msgstr "App:"
+
+msgid "IDS_ST_BODY_DESTINATION_C_SWA"
+msgstr "Destination:"
+
+msgid "IDS_ST_BODY_PATTERN_C_SWA"
+msgstr "Pattern:"
+
+msgid "IDS_ST_BODY_DLP_ACTION"
+msgstr "Action"
+
+msgid "IDS_ST_BODY_PACKET_C_SWA"
+msgstr "Packet:"
+
+msgid "IDS_ST_BODY_DLP_ACTION_ALLOW"
+msgstr "Allow"
+
+msgid "IDS_ST_BODY_DLP_ACTION_DENY"
+msgstr "Deny"
+
+msgid "IDS_ST_BODY_DLP_ACTION_SANITIZE"
+msgstr "Sanitize"
+
+msgid "IDS_ST_BODY_DLP_ACTION_ALL_RULES"
+msgstr "All Rules"
+
+msgid "IDS_ST_OPT_QUICK_M_PROTECTION_MODE_SWA"
+msgstr "Quick"
+
+msgid "IDS_ST_SBODY_CREATE_RULES_QUICKLY_AND_EASILY_SWA"
+msgstr "Create rules quickly and easily."
+
+msgid "IDS_ST_MBODY_CUSTOM_SWA"
+msgstr "Custom"
+
+msgid "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"
+msgstr "Create rules from scratch to give you full control of your data protection. Use this option to create non-standard rules."
+
+msgid "IDS_ST_HEADER_CUSTOM_PROTECTION_MODE_SWA"
+msgstr "Custom protection mode"
+
+msgid "IDS_ST_TAB_RULES_SWA"
+msgstr "Rules"
+
+msgid "IDS_ST_TAB_PATTERNS_SWA"
+msgstr "Patterns"
+
+msgid "IDS_ST_HEADER_SELECT_TEMPLATE_SWA"
+msgstr "Select template"
+
+msgid "IDS_ST_HEADER_SELECT_APPS_SWA"
+msgstr "Select apps"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_CHOOSE_ACTION"
+msgstr "Select Action"
+
+msgid "IDS_ST_ACBUTTON_NEXT_SWA"
+msgstr "NEXT"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_OK"
+msgstr "OK"
+
+msgid "IDS_ST_ACBUTTON_DONE_SWA"
+msgstr "DONE"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_RULE_CREATED_MESSAGE"
+msgstr "Rule created."
+
+msgid "IDS_ST_TPOP_RULE_DELETED_SWA"
+msgstr "Rule deleted."
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_DELETE_RULE_POPUP_TITLE"
+msgstr "Delete Rule"
+
+msgid "IDS_ST_HEADER_DELETE_PATTERNS_SWA"
+msgstr "Delete patterns"
+
+msgid "IDS_ST_POP_THIS_RULE_WILL_BE_DELETED_ABB_SWA"
+msgstr "This rule will be deleted."
+
+msgid "IDS_ST_HEADER_CREATE_PATTERN_SWA"
+msgstr "Create pattern"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_PATTERN"
+msgstr "Custom"
+
+msgid "IDS_ST_TPOP_PD_PATTERNS_DELETED_SWA"
+msgstr "%d patterns deleted."
+
+msgid "IDS_ST_OPT_EDIT_SWA"
+msgstr "Edit"
+
+msgid "IDS_ST_OPT_CREATE_SWA"
+msgstr "Create"
+
+msgid "IDS_ST_OPT_ALL_PATTERNS_SWA"
+msgstr "All patterns"
+
+msgid "IDS_ST_BODY_NAME_SWA"
+msgstr "Name"
+
+msgid "IDS_ST_BODY_DESCRIPTION_SWA"
+msgstr "Description"
+
+msgid "IDS_ST_BODY_CATEGORY_SWA"
+msgstr "Category"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CATEGORY_NAME"
+msgstr "Category name"
+
+msgid "IDS_ST_OPT_STRING_MATCH_SWA"
+msgstr "String match"
+
+msgid "IDS_ST_OPT_REGULAR_EXPRESSION_SWA"
+msgstr "Regular expression"
+
+msgid "IDS_ST_POP_PD_PATTERNS_WILL_BE_DELETED_ABB_SWA"
+msgstr "%d patterns will be deleted."
+
+msgid "IDS_ST_POP_THIS_REPORT_WILL_BE_DELETED_ABB_SWA"
+msgstr "This report will be deleted."
+
+msgid "IDS_ST_OPT_DELETE_SWA"
+msgstr "Delete"
+
+msgid "IDS_ST_HEADER_DELETE_REPORT_SWA"
+msgstr "Delete report"
+
+msgid "IDS_ST_POP_PD_REPORTS_WILL_BE_DELETED_ABB_SWA"
+msgstr "%d reports will be deleted."
+
+msgid "IDS_ST_TPOP_1_REPORT_DELETED_SWA"
+msgstr "1 report deleted."
+
+msgid "IDS_ST_MBODY_SELECT_ALL_SWA"
+msgstr "Select all"
+
+msgid "IDS_ST_ACBUTTON_DELETE_SWA"
+msgstr "DELETE"
+
+msgid "IDS_ST_ACBUTTON_CANCEL_SWA"
+msgstr "CANCEL"
+
+msgid "IDS_ST_TPOP_PD_REPORTS_DELETED_SWA"
+msgstr "%d reports deleted."
+
+msgid "IDS_ST_HEADER_SELECT_ITEMS_SWA"
+msgstr "Select items"
+
+msgid "IDS_ST_HEADER_PD_SELECTED_SWA"
+msgstr "%d selected"
+
+msgid "IDS_ST_TPOP_BASIC_PROTECTION_MODE_TURNED_ON_SWA"
+msgstr "Basic protection mode turned on."
+
+msgid "IDS_ST_TPOP_RULE_CREATED_SWA"
+msgstr "Rule created. Custom protection mode turned on."
+
+msgid "IDS_ST_TPOP_ADVANCED_PROTECTION_MODE_TURNED_ON_SWA"
+msgstr "Advanced protection mode turned on."
+
+msgid "IDS_ST_HEADER_DETAILS_SWA"
+msgstr "Details"
+
+msgid "IDS_ST_BODY_STRING_TYPE_SWA"
+msgstr "String type"
+
+msgid "IDS_ST_BODY_SEARCH_TERM_SWA"
+msgstr "Search term"
+
+msgid "IDS_ST_BODY_LEAKS_CAPTURED_SWA"
+msgstr "Leaks captured"
+
+msgid "IDS_ST_SBODY_TOTAL_LEAKS_SWA"
+msgstr "Total leaks"
+
+msgid "IDS_ST_HEADER_RULE_DETAILS_SWA"
+msgstr "Rule details"
+
+msgid "IDS_ST_HEADER_PATTERN_DETAILS_SWA"
+msgstr "Pattern details"
diff --git a/po/ja_JP.po b/po/ja_JP.po
index ce91a71..af26c04 100755
--- a/po/ja_JP.po
+++ b/po/ja_JP.po
@@ -31,3 +31,272 @@ msgstr "%d回"
msgid "IDS_ST_HEADER_PRIVACY_AND_SECURITY_ABB"
msgstr "プライバシーとセキュリティ"
+msgid "IDS_ST_HEADER_DATA_LEAK_MONITOR_SWA"
+msgstr "Data leak monitor"
+
+msgid "IDS_ST_MBODY_DATA_LEAK_MONITOR_SWA"
+msgstr "Data leak monitor"
+
+msgid "IDS_ST_SBODY_PREVENT_APPS_FROM_LEAKING_YOUR_SENSITIVE_DATA_WITHOUT_AUTHORISATION_SWA"
+msgstr "Prevent apps from leaking your sensitive data without authorisation."
+
+msgid "IDS_ST_SBODY_TO_ALLOW_THIS_FUNCTION_TO_MONITOR_YOUR_PERSONAL_INFORMATION_YOU_NEED_TO_SET_UP_YOUR_PROFILE_IN_CONTACTS_SWA"
+msgstr "To allow this function to monitor your personal information, you need to set up your profile in Contacts."
+
+msgid "IDS_ST_MBODY_PROTECTION_MODE_SWA"
+msgstr "Protection mode"
+
+msgid "IDS_ST_MBODY_BASIC_M_MODE_SWA"
+msgstr "Basic"
+
+msgid "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"
+msgstr "Monitor your main sensitive data to prevent it from being leaked by most apps. This mode is suitable for regular users."
+
+msgid "IDS_ST_MBODY_ADVANCED_M_MODE_SWA"
+msgstr "Advanced"
+
+msgid "IDS_ST_SBODY_SET_UP_STRICT_RULES_TO_PREVENT_DATA_LEAKAGE_SWA"
+msgstr "Set up strict rules to prevent data leakage."
+
+msgid "IDS_ST_SBODY_THIS_MODE_WILL_AFFECT_APP_PERFORMANCE_SWA"
+msgstr "This mode will affect app performance."
+
+msgid "IDS_ST_POP_SOME_APPS_MAY_BE_BLOCKED_SWA"
+msgstr "Some apps may be blocked."
+
+msgid "IDS_ST_HEADER_TURN_ON_ADVANCED_PROTECTION_MODE_SWA"
+msgstr "Turn on Advanced protection mode"
+
+msgid "IDS_ST_MBODY_CUSTOM_M_MODE_SWA"
+msgstr "Custom"
+
+msgid "IDS_ST_SBODY_CHANGE_DEFAULT_RULES_AND_PATTERNS_AND_CREATE_YOUR_OWN_TO_SET_UP_A_CUSTOMISED_PROTECTION_MODE_SWA"
+msgstr "Change default rules and patterns and create your own to set up a customised protection mode."
+
+msgid "IDS_ST_HEADER_REPORTS_SWA"
+msgstr "Reports"
+
+msgid "IDS_ST_MBODY_FULL_REPORTS_SWA"
+msgstr "Full reports"
+
+msgid "IDS_ST_MBODY_APP_RANKINGS_SWA"
+msgstr "App rankings"
+
+msgid "IDS_ST_MBODY_DATA_STATISTICS_SWA"
+msgstr "Data statistics"
+
+msgid "IDS_ST_MBODY_RULES_AND_PATTERNS_SWA"
+msgstr "Rules and patterns"
+
+msgid "IDS_ST_NPBODY_NO_REPORTS_SWA"
+msgstr "No reports"
+
+msgid "IDS_ST_HEADER_SETTINGS_SWA"
+msgstr "Settings"
+
+msgid "IDS_ST_MBODY_KEEP_LOGS_SWA"
+msgstr "Keep logs"
+
+msgid "IDS_LOGS_CLEANED"
+msgstr "Logs cleaned"
+
+msgid "IDS_LOGS_CLEANED_FAILED"
+msgstr "Failed to clean logs"
+
+msgid "IDS_ST_OPT_1_WEEK_SWA"
+msgstr "1 week"
+
+msgid "IDS_ST_OPT_1_DAY_SWA"
+msgstr "1 day"
+
+msgid "IDS_ST_OPT_1_MONTH_SWA"
+msgstr "1 month"
+
+msgid "IDS_ST_HEADER_REPORT_DETAILS_SWA"
+msgstr "Report details"
+
+msgid "IDS_ST_BODY_CATEGORY_C_SWA"
+msgstr "Category:"
+
+msgid "IDS_ST_BODY_APP_C_SWA"
+msgstr "App:"
+
+msgid "IDS_ST_BODY_DESTINATION_C_SWA"
+msgstr "Destination:"
+
+msgid "IDS_ST_BODY_PATTERN_C_SWA"
+msgstr "Pattern:"
+
+msgid "IDS_ST_BODY_DLP_ACTION"
+msgstr "Action"
+
+msgid "IDS_ST_BODY_PACKET_C_SWA"
+msgstr "Packet:"
+
+msgid "IDS_ST_BODY_DLP_ACTION_ALLOW"
+msgstr "Allow"
+
+msgid "IDS_ST_BODY_DLP_ACTION_DENY"
+msgstr "Deny"
+
+msgid "IDS_ST_BODY_DLP_ACTION_SANITIZE"
+msgstr "Sanitize"
+
+msgid "IDS_ST_BODY_DLP_ACTION_ALL_RULES"
+msgstr "All Rules"
+
+msgid "IDS_ST_OPT_QUICK_M_PROTECTION_MODE_SWA"
+msgstr "Quick"
+
+msgid "IDS_ST_SBODY_CREATE_RULES_QUICKLY_AND_EASILY_SWA"
+msgstr "Create rules quickly and easily."
+
+msgid "IDS_ST_MBODY_CUSTOM_SWA"
+msgstr "Custom"
+
+msgid "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"
+msgstr "Create rules from scratch to give you full control of your data protection. Use this option to create non-standard rules."
+
+msgid "IDS_ST_HEADER_CUSTOM_PROTECTION_MODE_SWA"
+msgstr "Custom protection mode"
+
+msgid "IDS_ST_TAB_RULES_SWA"
+msgstr "Rules"
+
+msgid "IDS_ST_TAB_PATTERNS_SWA"
+msgstr "Patterns"
+
+msgid "IDS_ST_HEADER_SELECT_TEMPLATE_SWA"
+msgstr "Select template"
+
+msgid "IDS_ST_HEADER_SELECT_APPS_SWA"
+msgstr "Select apps"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_CHOOSE_ACTION"
+msgstr "Select Action"
+
+msgid "IDS_ST_ACBUTTON_NEXT_SWA"
+msgstr "NEXT"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_OK"
+msgstr "OK"
+
+msgid "IDS_ST_ACBUTTON_DONE_SWA"
+msgstr "DONE"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_RULE_CREATED_MESSAGE"
+msgstr "Rule created."
+
+msgid "IDS_ST_TPOP_RULE_DELETED_SWA"
+msgstr "Rule deleted."
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_DELETE_RULE_POPUP_TITLE"
+msgstr "Delete Rule"
+
+msgid "IDS_ST_HEADER_DELETE_PATTERNS_SWA"
+msgstr "Delete patterns"
+
+msgid "IDS_ST_POP_THIS_RULE_WILL_BE_DELETED_ABB_SWA"
+msgstr "This rule will be deleted."
+
+msgid "IDS_ST_HEADER_CREATE_PATTERN_SWA"
+msgstr "Create pattern"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_PATTERN"
+msgstr "Custom"
+
+msgid "IDS_ST_TPOP_PD_PATTERNS_DELETED_SWA"
+msgstr "%d patterns deleted."
+
+msgid "IDS_ST_OPT_EDIT_SWA"
+msgstr "Edit"
+
+msgid "IDS_ST_OPT_CREATE_SWA"
+msgstr "Create"
+
+msgid "IDS_ST_OPT_ALL_PATTERNS_SWA"
+msgstr "All patterns"
+
+msgid "IDS_ST_BODY_NAME_SWA"
+msgstr "Name"
+
+msgid "IDS_ST_BODY_DESCRIPTION_SWA"
+msgstr "Description"
+
+msgid "IDS_ST_BODY_CATEGORY_SWA"
+msgstr "Category"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CATEGORY_NAME"
+msgstr "Category name"
+
+msgid "IDS_ST_OPT_STRING_MATCH_SWA"
+msgstr "String match"
+
+msgid "IDS_ST_OPT_REGULAR_EXPRESSION_SWA"
+msgstr "Regular expression"
+
+msgid "IDS_ST_POP_PD_PATTERNS_WILL_BE_DELETED_ABB_SWA"
+msgstr "%d patterns will be deleted."
+
+msgid "IDS_ST_POP_THIS_REPORT_WILL_BE_DELETED_ABB_SWA"
+msgstr "This report will be deleted."
+
+msgid "IDS_ST_OPT_DELETE_SWA"
+msgstr "Delete"
+
+msgid "IDS_ST_HEADER_DELETE_REPORT_SWA"
+msgstr "Delete report"
+
+msgid "IDS_ST_POP_PD_REPORTS_WILL_BE_DELETED_ABB_SWA"
+msgstr "%d reports will be deleted."
+
+msgid "IDS_ST_TPOP_1_REPORT_DELETED_SWA"
+msgstr "1 report deleted."
+
+msgid "IDS_ST_MBODY_SELECT_ALL_SWA"
+msgstr "Select all"
+
+msgid "IDS_ST_ACBUTTON_DELETE_SWA"
+msgstr "DELETE"
+
+msgid "IDS_ST_ACBUTTON_CANCEL_SWA"
+msgstr "CANCEL"
+
+msgid "IDS_ST_TPOP_PD_REPORTS_DELETED_SWA"
+msgstr "%d reports deleted."
+
+msgid "IDS_ST_HEADER_SELECT_ITEMS_SWA"
+msgstr "Select items"
+
+msgid "IDS_ST_HEADER_PD_SELECTED_SWA"
+msgstr "%d selected"
+
+msgid "IDS_ST_TPOP_BASIC_PROTECTION_MODE_TURNED_ON_SWA"
+msgstr "Basic protection mode turned on."
+
+msgid "IDS_ST_TPOP_RULE_CREATED_SWA"
+msgstr "Rule created. Custom protection mode turned on."
+
+msgid "IDS_ST_TPOP_ADVANCED_PROTECTION_MODE_TURNED_ON_SWA"
+msgstr "Advanced protection mode turned on."
+
+msgid "IDS_ST_HEADER_DETAILS_SWA"
+msgstr "Details"
+
+msgid "IDS_ST_BODY_STRING_TYPE_SWA"
+msgstr "String type"
+
+msgid "IDS_ST_BODY_SEARCH_TERM_SWA"
+msgstr "Search term"
+
+msgid "IDS_ST_BODY_LEAKS_CAPTURED_SWA"
+msgstr "Leaks captured"
+
+msgid "IDS_ST_SBODY_TOTAL_LEAKS_SWA"
+msgstr "Total leaks"
+
+msgid "IDS_ST_HEADER_RULE_DETAILS_SWA"
+msgstr "Rule details"
+
+msgid "IDS_ST_HEADER_PATTERN_DETAILS_SWA"
+msgstr "Pattern details"
diff --git a/po/ka.po b/po/ka.po
index c70b93d..e23ec3e 100755
--- a/po/ka.po
+++ b/po/ka.po
@@ -31,3 +31,272 @@ msgstr "%d-ჯერ"
msgid "IDS_ST_HEADER_PRIVACY_AND_SECURITY_ABB"
msgstr "კონფიდენციალურ., დაცვა"
+msgid "IDS_ST_HEADER_DATA_LEAK_MONITOR_SWA"
+msgstr "Data leak monitor"
+
+msgid "IDS_ST_MBODY_DATA_LEAK_MONITOR_SWA"
+msgstr "Data leak monitor"
+
+msgid "IDS_ST_SBODY_PREVENT_APPS_FROM_LEAKING_YOUR_SENSITIVE_DATA_WITHOUT_AUTHORISATION_SWA"
+msgstr "Prevent apps from leaking your sensitive data without authorisation."
+
+msgid "IDS_ST_SBODY_TO_ALLOW_THIS_FUNCTION_TO_MONITOR_YOUR_PERSONAL_INFORMATION_YOU_NEED_TO_SET_UP_YOUR_PROFILE_IN_CONTACTS_SWA"
+msgstr "To allow this function to monitor your personal information, you need to set up your profile in Contacts."
+
+msgid "IDS_ST_MBODY_PROTECTION_MODE_SWA"
+msgstr "Protection mode"
+
+msgid "IDS_ST_MBODY_BASIC_M_MODE_SWA"
+msgstr "Basic"
+
+msgid "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"
+msgstr "Monitor your main sensitive data to prevent it from being leaked by most apps. This mode is suitable for regular users."
+
+msgid "IDS_ST_MBODY_ADVANCED_M_MODE_SWA"
+msgstr "Advanced"
+
+msgid "IDS_ST_SBODY_SET_UP_STRICT_RULES_TO_PREVENT_DATA_LEAKAGE_SWA"
+msgstr "Set up strict rules to prevent data leakage."
+
+msgid "IDS_ST_SBODY_THIS_MODE_WILL_AFFECT_APP_PERFORMANCE_SWA"
+msgstr "This mode will affect app performance."
+
+msgid "IDS_ST_POP_SOME_APPS_MAY_BE_BLOCKED_SWA"
+msgstr "Some apps may be blocked."
+
+msgid "IDS_ST_HEADER_TURN_ON_ADVANCED_PROTECTION_MODE_SWA"
+msgstr "Turn on Advanced protection mode"
+
+msgid "IDS_ST_MBODY_CUSTOM_M_MODE_SWA"
+msgstr "Custom"
+
+msgid "IDS_ST_SBODY_CHANGE_DEFAULT_RULES_AND_PATTERNS_AND_CREATE_YOUR_OWN_TO_SET_UP_A_CUSTOMISED_PROTECTION_MODE_SWA"
+msgstr "Change default rules and patterns and create your own to set up a customised protection mode."
+
+msgid "IDS_ST_HEADER_REPORTS_SWA"
+msgstr "Reports"
+
+msgid "IDS_ST_MBODY_FULL_REPORTS_SWA"
+msgstr "Full reports"
+
+msgid "IDS_ST_MBODY_APP_RANKINGS_SWA"
+msgstr "App rankings"
+
+msgid "IDS_ST_MBODY_DATA_STATISTICS_SWA"
+msgstr "Data statistics"
+
+msgid "IDS_ST_MBODY_RULES_AND_PATTERNS_SWA"
+msgstr "Rules and patterns"
+
+msgid "IDS_ST_NPBODY_NO_REPORTS_SWA"
+msgstr "No reports"
+
+msgid "IDS_ST_HEADER_SETTINGS_SWA"
+msgstr "Settings"
+
+msgid "IDS_ST_MBODY_KEEP_LOGS_SWA"
+msgstr "Keep logs"
+
+msgid "IDS_LOGS_CLEANED"
+msgstr "Logs cleaned"
+
+msgid "IDS_LOGS_CLEANED_FAILED"
+msgstr "Failed to clean logs"
+
+msgid "IDS_ST_OPT_1_WEEK_SWA"
+msgstr "1 week"
+
+msgid "IDS_ST_OPT_1_DAY_SWA"
+msgstr "1 day"
+
+msgid "IDS_ST_OPT_1_MONTH_SWA"
+msgstr "1 month"
+
+msgid "IDS_ST_HEADER_REPORT_DETAILS_SWA"
+msgstr "Report details"
+
+msgid "IDS_ST_BODY_CATEGORY_C_SWA"
+msgstr "Category:"
+
+msgid "IDS_ST_BODY_APP_C_SWA"
+msgstr "App:"
+
+msgid "IDS_ST_BODY_DESTINATION_C_SWA"
+msgstr "Destination:"
+
+msgid "IDS_ST_BODY_PATTERN_C_SWA"
+msgstr "Pattern:"
+
+msgid "IDS_ST_BODY_DLP_ACTION"
+msgstr "Action"
+
+msgid "IDS_ST_BODY_PACKET_C_SWA"
+msgstr "Packet:"
+
+msgid "IDS_ST_BODY_DLP_ACTION_ALLOW"
+msgstr "Allow"
+
+msgid "IDS_ST_BODY_DLP_ACTION_DENY"
+msgstr "Deny"
+
+msgid "IDS_ST_BODY_DLP_ACTION_SANITIZE"
+msgstr "Sanitize"
+
+msgid "IDS_ST_BODY_DLP_ACTION_ALL_RULES"
+msgstr "All Rules"
+
+msgid "IDS_ST_OPT_QUICK_M_PROTECTION_MODE_SWA"
+msgstr "Quick"
+
+msgid "IDS_ST_SBODY_CREATE_RULES_QUICKLY_AND_EASILY_SWA"
+msgstr "Create rules quickly and easily."
+
+msgid "IDS_ST_MBODY_CUSTOM_SWA"
+msgstr "Custom"
+
+msgid "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"
+msgstr "Create rules from scratch to give you full control of your data protection. Use this option to create non-standard rules."
+
+msgid "IDS_ST_HEADER_CUSTOM_PROTECTION_MODE_SWA"
+msgstr "Custom protection mode"
+
+msgid "IDS_ST_TAB_RULES_SWA"
+msgstr "Rules"
+
+msgid "IDS_ST_TAB_PATTERNS_SWA"
+msgstr "Patterns"
+
+msgid "IDS_ST_HEADER_SELECT_TEMPLATE_SWA"
+msgstr "Select template"
+
+msgid "IDS_ST_HEADER_SELECT_APPS_SWA"
+msgstr "Select apps"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_CHOOSE_ACTION"
+msgstr "Select Action"
+
+msgid "IDS_ST_ACBUTTON_NEXT_SWA"
+msgstr "NEXT"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_OK"
+msgstr "OK"
+
+msgid "IDS_ST_ACBUTTON_DONE_SWA"
+msgstr "DONE"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_RULE_CREATED_MESSAGE"
+msgstr "Rule created."
+
+msgid "IDS_ST_TPOP_RULE_DELETED_SWA"
+msgstr "Rule deleted."
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_DELETE_RULE_POPUP_TITLE"
+msgstr "Delete Rule"
+
+msgid "IDS_ST_HEADER_DELETE_PATTERNS_SWA"
+msgstr "Delete patterns"
+
+msgid "IDS_ST_POP_THIS_RULE_WILL_BE_DELETED_ABB_SWA"
+msgstr "This rule will be deleted."
+
+msgid "IDS_ST_HEADER_CREATE_PATTERN_SWA"
+msgstr "Create pattern"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_PATTERN"
+msgstr "Custom"
+
+msgid "IDS_ST_TPOP_PD_PATTERNS_DELETED_SWA"
+msgstr "%d patterns deleted."
+
+msgid "IDS_ST_OPT_EDIT_SWA"
+msgstr "Edit"
+
+msgid "IDS_ST_OPT_CREATE_SWA"
+msgstr "Create"
+
+msgid "IDS_ST_OPT_ALL_PATTERNS_SWA"
+msgstr "All patterns"
+
+msgid "IDS_ST_BODY_NAME_SWA"
+msgstr "Name"
+
+msgid "IDS_ST_BODY_DESCRIPTION_SWA"
+msgstr "Description"
+
+msgid "IDS_ST_BODY_CATEGORY_SWA"
+msgstr "Category"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CATEGORY_NAME"
+msgstr "Category name"
+
+msgid "IDS_ST_OPT_STRING_MATCH_SWA"
+msgstr "String match"
+
+msgid "IDS_ST_OPT_REGULAR_EXPRESSION_SWA"
+msgstr "Regular expression"
+
+msgid "IDS_ST_POP_PD_PATTERNS_WILL_BE_DELETED_ABB_SWA"
+msgstr "%d patterns will be deleted."
+
+msgid "IDS_ST_POP_THIS_REPORT_WILL_BE_DELETED_ABB_SWA"
+msgstr "This report will be deleted."
+
+msgid "IDS_ST_OPT_DELETE_SWA"
+msgstr "Delete"
+
+msgid "IDS_ST_HEADER_DELETE_REPORT_SWA"
+msgstr "Delete report"
+
+msgid "IDS_ST_POP_PD_REPORTS_WILL_BE_DELETED_ABB_SWA"
+msgstr "%d reports will be deleted."
+
+msgid "IDS_ST_TPOP_1_REPORT_DELETED_SWA"
+msgstr "1 report deleted."
+
+msgid "IDS_ST_MBODY_SELECT_ALL_SWA"
+msgstr "Select all"
+
+msgid "IDS_ST_ACBUTTON_DELETE_SWA"
+msgstr "DELETE"
+
+msgid "IDS_ST_ACBUTTON_CANCEL_SWA"
+msgstr "CANCEL"
+
+msgid "IDS_ST_TPOP_PD_REPORTS_DELETED_SWA"
+msgstr "%d reports deleted."
+
+msgid "IDS_ST_HEADER_SELECT_ITEMS_SWA"
+msgstr "Select items"
+
+msgid "IDS_ST_HEADER_PD_SELECTED_SWA"
+msgstr "%d selected"
+
+msgid "IDS_ST_TPOP_BASIC_PROTECTION_MODE_TURNED_ON_SWA"
+msgstr "Basic protection mode turned on."
+
+msgid "IDS_ST_TPOP_RULE_CREATED_SWA"
+msgstr "Rule created. Custom protection mode turned on."
+
+msgid "IDS_ST_TPOP_ADVANCED_PROTECTION_MODE_TURNED_ON_SWA"
+msgstr "Advanced protection mode turned on."
+
+msgid "IDS_ST_HEADER_DETAILS_SWA"
+msgstr "Details"
+
+msgid "IDS_ST_BODY_STRING_TYPE_SWA"
+msgstr "String type"
+
+msgid "IDS_ST_BODY_SEARCH_TERM_SWA"
+msgstr "Search term"
+
+msgid "IDS_ST_BODY_LEAKS_CAPTURED_SWA"
+msgstr "Leaks captured"
+
+msgid "IDS_ST_SBODY_TOTAL_LEAKS_SWA"
+msgstr "Total leaks"
+
+msgid "IDS_ST_HEADER_RULE_DETAILS_SWA"
+msgstr "Rule details"
+
+msgid "IDS_ST_HEADER_PATTERN_DETAILS_SWA"
+msgstr "Pattern details"
diff --git a/po/kk.po b/po/kk.po
index d40540e..980bb9c 100755
--- a/po/kk.po
+++ b/po/kk.po
@@ -31,3 +31,272 @@ msgstr "%d уақыты"
msgid "IDS_ST_HEADER_PRIVACY_AND_SECURITY_ABB"
msgstr "Құпиялылық-қауіпсіздік"
+msgid "IDS_ST_HEADER_DATA_LEAK_MONITOR_SWA"
+msgstr "Data leak monitor"
+
+msgid "IDS_ST_MBODY_DATA_LEAK_MONITOR_SWA"
+msgstr "Data leak monitor"
+
+msgid "IDS_ST_SBODY_PREVENT_APPS_FROM_LEAKING_YOUR_SENSITIVE_DATA_WITHOUT_AUTHORISATION_SWA"
+msgstr "Prevent apps from leaking your sensitive data without authorisation."
+
+msgid "IDS_ST_SBODY_TO_ALLOW_THIS_FUNCTION_TO_MONITOR_YOUR_PERSONAL_INFORMATION_YOU_NEED_TO_SET_UP_YOUR_PROFILE_IN_CONTACTS_SWA"
+msgstr "To allow this function to monitor your personal information, you need to set up your profile in Contacts."
+
+msgid "IDS_ST_MBODY_PROTECTION_MODE_SWA"
+msgstr "Protection mode"
+
+msgid "IDS_ST_MBODY_BASIC_M_MODE_SWA"
+msgstr "Basic"
+
+msgid "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"
+msgstr "Monitor your main sensitive data to prevent it from being leaked by most apps. This mode is suitable for regular users."
+
+msgid "IDS_ST_MBODY_ADVANCED_M_MODE_SWA"
+msgstr "Advanced"
+
+msgid "IDS_ST_SBODY_SET_UP_STRICT_RULES_TO_PREVENT_DATA_LEAKAGE_SWA"
+msgstr "Set up strict rules to prevent data leakage."
+
+msgid "IDS_ST_SBODY_THIS_MODE_WILL_AFFECT_APP_PERFORMANCE_SWA"
+msgstr "This mode will affect app performance."
+
+msgid "IDS_ST_POP_SOME_APPS_MAY_BE_BLOCKED_SWA"
+msgstr "Some apps may be blocked."
+
+msgid "IDS_ST_HEADER_TURN_ON_ADVANCED_PROTECTION_MODE_SWA"
+msgstr "Turn on Advanced protection mode"
+
+msgid "IDS_ST_MBODY_CUSTOM_M_MODE_SWA"
+msgstr "Custom"
+
+msgid "IDS_ST_SBODY_CHANGE_DEFAULT_RULES_AND_PATTERNS_AND_CREATE_YOUR_OWN_TO_SET_UP_A_CUSTOMISED_PROTECTION_MODE_SWA"
+msgstr "Change default rules and patterns and create your own to set up a customised protection mode."
+
+msgid "IDS_ST_HEADER_REPORTS_SWA"
+msgstr "Reports"
+
+msgid "IDS_ST_MBODY_FULL_REPORTS_SWA"
+msgstr "Full reports"
+
+msgid "IDS_ST_MBODY_APP_RANKINGS_SWA"
+msgstr "App rankings"
+
+msgid "IDS_ST_MBODY_DATA_STATISTICS_SWA"
+msgstr "Data statistics"
+
+msgid "IDS_ST_MBODY_RULES_AND_PATTERNS_SWA"
+msgstr "Rules and patterns"
+
+msgid "IDS_ST_NPBODY_NO_REPORTS_SWA"
+msgstr "No reports"
+
+msgid "IDS_ST_HEADER_SETTINGS_SWA"
+msgstr "Settings"
+
+msgid "IDS_ST_MBODY_KEEP_LOGS_SWA"
+msgstr "Keep logs"
+
+msgid "IDS_LOGS_CLEANED"
+msgstr "Logs cleaned"
+
+msgid "IDS_LOGS_CLEANED_FAILED"
+msgstr "Failed to clean logs"
+
+msgid "IDS_ST_OPT_1_WEEK_SWA"
+msgstr "1 week"
+
+msgid "IDS_ST_OPT_1_DAY_SWA"
+msgstr "1 day"
+
+msgid "IDS_ST_OPT_1_MONTH_SWA"
+msgstr "1 month"
+
+msgid "IDS_ST_HEADER_REPORT_DETAILS_SWA"
+msgstr "Report details"
+
+msgid "IDS_ST_BODY_CATEGORY_C_SWA"
+msgstr "Category:"
+
+msgid "IDS_ST_BODY_APP_C_SWA"
+msgstr "App:"
+
+msgid "IDS_ST_BODY_DESTINATION_C_SWA"
+msgstr "Destination:"
+
+msgid "IDS_ST_BODY_PATTERN_C_SWA"
+msgstr "Pattern:"
+
+msgid "IDS_ST_BODY_DLP_ACTION"
+msgstr "Action"
+
+msgid "IDS_ST_BODY_PACKET_C_SWA"
+msgstr "Packet:"
+
+msgid "IDS_ST_BODY_DLP_ACTION_ALLOW"
+msgstr "Allow"
+
+msgid "IDS_ST_BODY_DLP_ACTION_DENY"
+msgstr "Deny"
+
+msgid "IDS_ST_BODY_DLP_ACTION_SANITIZE"
+msgstr "Sanitize"
+
+msgid "IDS_ST_BODY_DLP_ACTION_ALL_RULES"
+msgstr "All Rules"
+
+msgid "IDS_ST_OPT_QUICK_M_PROTECTION_MODE_SWA"
+msgstr "Quick"
+
+msgid "IDS_ST_SBODY_CREATE_RULES_QUICKLY_AND_EASILY_SWA"
+msgstr "Create rules quickly and easily."
+
+msgid "IDS_ST_MBODY_CUSTOM_SWA"
+msgstr "Custom"
+
+msgid "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"
+msgstr "Create rules from scratch to give you full control of your data protection. Use this option to create non-standard rules."
+
+msgid "IDS_ST_HEADER_CUSTOM_PROTECTION_MODE_SWA"
+msgstr "Custom protection mode"
+
+msgid "IDS_ST_TAB_RULES_SWA"
+msgstr "Rules"
+
+msgid "IDS_ST_TAB_PATTERNS_SWA"
+msgstr "Patterns"
+
+msgid "IDS_ST_HEADER_SELECT_TEMPLATE_SWA"
+msgstr "Select template"
+
+msgid "IDS_ST_HEADER_SELECT_APPS_SWA"
+msgstr "Select apps"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_CHOOSE_ACTION"
+msgstr "Select Action"
+
+msgid "IDS_ST_ACBUTTON_NEXT_SWA"
+msgstr "NEXT"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_OK"
+msgstr "OK"
+
+msgid "IDS_ST_ACBUTTON_DONE_SWA"
+msgstr "DONE"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_RULE_CREATED_MESSAGE"
+msgstr "Rule created."
+
+msgid "IDS_ST_TPOP_RULE_DELETED_SWA"
+msgstr "Rule deleted."
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_DELETE_RULE_POPUP_TITLE"
+msgstr "Delete Rule"
+
+msgid "IDS_ST_HEADER_DELETE_PATTERNS_SWA"
+msgstr "Delete patterns"
+
+msgid "IDS_ST_POP_THIS_RULE_WILL_BE_DELETED_ABB_SWA"
+msgstr "This rule will be deleted."
+
+msgid "IDS_ST_HEADER_CREATE_PATTERN_SWA"
+msgstr "Create pattern"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_PATTERN"
+msgstr "Custom"
+
+msgid "IDS_ST_TPOP_PD_PATTERNS_DELETED_SWA"
+msgstr "%d patterns deleted."
+
+msgid "IDS_ST_OPT_EDIT_SWA"
+msgstr "Edit"
+
+msgid "IDS_ST_OPT_CREATE_SWA"
+msgstr "Create"
+
+msgid "IDS_ST_OPT_ALL_PATTERNS_SWA"
+msgstr "All patterns"
+
+msgid "IDS_ST_BODY_NAME_SWA"
+msgstr "Name"
+
+msgid "IDS_ST_BODY_DESCRIPTION_SWA"
+msgstr "Description"
+
+msgid "IDS_ST_BODY_CATEGORY_SWA"
+msgstr "Category"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CATEGORY_NAME"
+msgstr "Category name"
+
+msgid "IDS_ST_OPT_STRING_MATCH_SWA"
+msgstr "String match"
+
+msgid "IDS_ST_OPT_REGULAR_EXPRESSION_SWA"
+msgstr "Regular expression"
+
+msgid "IDS_ST_POP_PD_PATTERNS_WILL_BE_DELETED_ABB_SWA"
+msgstr "%d patterns will be deleted."
+
+msgid "IDS_ST_POP_THIS_REPORT_WILL_BE_DELETED_ABB_SWA"
+msgstr "This report will be deleted."
+
+msgid "IDS_ST_OPT_DELETE_SWA"
+msgstr "Delete"
+
+msgid "IDS_ST_HEADER_DELETE_REPORT_SWA"
+msgstr "Delete report"
+
+msgid "IDS_ST_POP_PD_REPORTS_WILL_BE_DELETED_ABB_SWA"
+msgstr "%d reports will be deleted."
+
+msgid "IDS_ST_TPOP_1_REPORT_DELETED_SWA"
+msgstr "1 report deleted."
+
+msgid "IDS_ST_MBODY_SELECT_ALL_SWA"
+msgstr "Select all"
+
+msgid "IDS_ST_ACBUTTON_DELETE_SWA"
+msgstr "DELETE"
+
+msgid "IDS_ST_ACBUTTON_CANCEL_SWA"
+msgstr "CANCEL"
+
+msgid "IDS_ST_TPOP_PD_REPORTS_DELETED_SWA"
+msgstr "%d reports deleted."
+
+msgid "IDS_ST_HEADER_SELECT_ITEMS_SWA"
+msgstr "Select items"
+
+msgid "IDS_ST_HEADER_PD_SELECTED_SWA"
+msgstr "%d selected"
+
+msgid "IDS_ST_TPOP_BASIC_PROTECTION_MODE_TURNED_ON_SWA"
+msgstr "Basic protection mode turned on."
+
+msgid "IDS_ST_TPOP_RULE_CREATED_SWA"
+msgstr "Rule created. Custom protection mode turned on."
+
+msgid "IDS_ST_TPOP_ADVANCED_PROTECTION_MODE_TURNED_ON_SWA"
+msgstr "Advanced protection mode turned on."
+
+msgid "IDS_ST_HEADER_DETAILS_SWA"
+msgstr "Details"
+
+msgid "IDS_ST_BODY_STRING_TYPE_SWA"
+msgstr "String type"
+
+msgid "IDS_ST_BODY_SEARCH_TERM_SWA"
+msgstr "Search term"
+
+msgid "IDS_ST_BODY_LEAKS_CAPTURED_SWA"
+msgstr "Leaks captured"
+
+msgid "IDS_ST_SBODY_TOTAL_LEAKS_SWA"
+msgstr "Total leaks"
+
+msgid "IDS_ST_HEADER_RULE_DETAILS_SWA"
+msgstr "Rule details"
+
+msgid "IDS_ST_HEADER_PATTERN_DETAILS_SWA"
+msgstr "Pattern details"
diff --git a/po/ko_KR.po b/po/ko_KR.po
index a79d62b..6ab9fe2 100755
--- a/po/ko_KR.po
+++ b/po/ko_KR.po
@@ -31,3 +31,272 @@ msgstr "%d회"
msgid "IDS_ST_HEADER_PRIVACY_AND_SECURITY_ABB"
msgstr "개인정보 보호 및 보안"
+msgid "IDS_ST_HEADER_DATA_LEAK_MONITOR_SWA"
+msgstr "Data leak monitor"
+
+msgid "IDS_ST_MBODY_DATA_LEAK_MONITOR_SWA"
+msgstr "Data leak monitor"
+
+msgid "IDS_ST_SBODY_PREVENT_APPS_FROM_LEAKING_YOUR_SENSITIVE_DATA_WITHOUT_AUTHORISATION_SWA"
+msgstr "Prevent apps from leaking your sensitive data without authorisation."
+
+msgid "IDS_ST_SBODY_TO_ALLOW_THIS_FUNCTION_TO_MONITOR_YOUR_PERSONAL_INFORMATION_YOU_NEED_TO_SET_UP_YOUR_PROFILE_IN_CONTACTS_SWA"
+msgstr "To allow this function to monitor your personal information, you need to set up your profile in Contacts."
+
+msgid "IDS_ST_MBODY_PROTECTION_MODE_SWA"
+msgstr "Protection mode"
+
+msgid "IDS_ST_MBODY_BASIC_M_MODE_SWA"
+msgstr "Basic"
+
+msgid "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"
+msgstr "Monitor your main sensitive data to prevent it from being leaked by most apps. This mode is suitable for regular users."
+
+msgid "IDS_ST_MBODY_ADVANCED_M_MODE_SWA"
+msgstr "Advanced"
+
+msgid "IDS_ST_SBODY_SET_UP_STRICT_RULES_TO_PREVENT_DATA_LEAKAGE_SWA"
+msgstr "Set up strict rules to prevent data leakage."
+
+msgid "IDS_ST_SBODY_THIS_MODE_WILL_AFFECT_APP_PERFORMANCE_SWA"
+msgstr "This mode will affect app performance."
+
+msgid "IDS_ST_POP_SOME_APPS_MAY_BE_BLOCKED_SWA"
+msgstr "Some apps may be blocked."
+
+msgid "IDS_ST_HEADER_TURN_ON_ADVANCED_PROTECTION_MODE_SWA"
+msgstr "Turn on Advanced protection mode"
+
+msgid "IDS_ST_MBODY_CUSTOM_M_MODE_SWA"
+msgstr "Custom"
+
+msgid "IDS_ST_SBODY_CHANGE_DEFAULT_RULES_AND_PATTERNS_AND_CREATE_YOUR_OWN_TO_SET_UP_A_CUSTOMISED_PROTECTION_MODE_SWA"
+msgstr "Change default rules and patterns and create your own to set up a customised protection mode."
+
+msgid "IDS_ST_HEADER_REPORTS_SWA"
+msgstr "Reports"
+
+msgid "IDS_ST_MBODY_FULL_REPORTS_SWA"
+msgstr "Full reports"
+
+msgid "IDS_ST_MBODY_APP_RANKINGS_SWA"
+msgstr "App rankings"
+
+msgid "IDS_ST_MBODY_DATA_STATISTICS_SWA"
+msgstr "Data statistics"
+
+msgid "IDS_ST_MBODY_RULES_AND_PATTERNS_SWA"
+msgstr "Rules and patterns"
+
+msgid "IDS_ST_NPBODY_NO_REPORTS_SWA"
+msgstr "No reports"
+
+msgid "IDS_ST_HEADER_SETTINGS_SWA"
+msgstr "Settings"
+
+msgid "IDS_ST_MBODY_KEEP_LOGS_SWA"
+msgstr "Keep logs"
+
+msgid "IDS_LOGS_CLEANED"
+msgstr "Logs cleaned"
+
+msgid "IDS_LOGS_CLEANED_FAILED"
+msgstr "Failed to clean logs"
+
+msgid "IDS_ST_OPT_1_WEEK_SWA"
+msgstr "1 week"
+
+msgid "IDS_ST_OPT_1_DAY_SWA"
+msgstr "1 day"
+
+msgid "IDS_ST_OPT_1_MONTH_SWA"
+msgstr "1 month"
+
+msgid "IDS_ST_HEADER_REPORT_DETAILS_SWA"
+msgstr "Report details"
+
+msgid "IDS_ST_BODY_CATEGORY_C_SWA"
+msgstr "Category:"
+
+msgid "IDS_ST_BODY_APP_C_SWA"
+msgstr "App:"
+
+msgid "IDS_ST_BODY_DESTINATION_C_SWA"
+msgstr "Destination:"
+
+msgid "IDS_ST_BODY_PATTERN_C_SWA"
+msgstr "Pattern:"
+
+msgid "IDS_ST_BODY_DLP_ACTION"
+msgstr "Action"
+
+msgid "IDS_ST_BODY_PACKET_C_SWA"
+msgstr "Packet:"
+
+msgid "IDS_ST_BODY_DLP_ACTION_ALLOW"
+msgstr "Allow"
+
+msgid "IDS_ST_BODY_DLP_ACTION_DENY"
+msgstr "Deny"
+
+msgid "IDS_ST_BODY_DLP_ACTION_SANITIZE"
+msgstr "Sanitize"
+
+msgid "IDS_ST_BODY_DLP_ACTION_ALL_RULES"
+msgstr "All Rules"
+
+msgid "IDS_ST_OPT_QUICK_M_PROTECTION_MODE_SWA"
+msgstr "Quick"
+
+msgid "IDS_ST_SBODY_CREATE_RULES_QUICKLY_AND_EASILY_SWA"
+msgstr "Create rules quickly and easily."
+
+msgid "IDS_ST_MBODY_CUSTOM_SWA"
+msgstr "Custom"
+
+msgid "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"
+msgstr "Create rules from scratch to give you full control of your data protection. Use this option to create non-standard rules."
+
+msgid "IDS_ST_HEADER_CUSTOM_PROTECTION_MODE_SWA"
+msgstr "Custom protection mode"
+
+msgid "IDS_ST_TAB_RULES_SWA"
+msgstr "Rules"
+
+msgid "IDS_ST_TAB_PATTERNS_SWA"
+msgstr "Patterns"
+
+msgid "IDS_ST_HEADER_SELECT_TEMPLATE_SWA"
+msgstr "Select template"
+
+msgid "IDS_ST_HEADER_SELECT_APPS_SWA"
+msgstr "Select apps"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_CHOOSE_ACTION"
+msgstr "Select Action"
+
+msgid "IDS_ST_ACBUTTON_NEXT_SWA"
+msgstr "NEXT"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_OK"
+msgstr "OK"
+
+msgid "IDS_ST_ACBUTTON_DONE_SWA"
+msgstr "DONE"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_RULE_CREATED_MESSAGE"
+msgstr "Rule created."
+
+msgid "IDS_ST_TPOP_RULE_DELETED_SWA"
+msgstr "Rule deleted."
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_DELETE_RULE_POPUP_TITLE"
+msgstr "Delete Rule"
+
+msgid "IDS_ST_HEADER_DELETE_PATTERNS_SWA"
+msgstr "Delete patterns"
+
+msgid "IDS_ST_POP_THIS_RULE_WILL_BE_DELETED_ABB_SWA"
+msgstr "This rule will be deleted."
+
+msgid "IDS_ST_HEADER_CREATE_PATTERN_SWA"
+msgstr "Create pattern"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_PATTERN"
+msgstr "Custom"
+
+msgid "IDS_ST_TPOP_PD_PATTERNS_DELETED_SWA"
+msgstr "%d patterns deleted."
+
+msgid "IDS_ST_OPT_EDIT_SWA"
+msgstr "Edit"
+
+msgid "IDS_ST_OPT_CREATE_SWA"
+msgstr "Create"
+
+msgid "IDS_ST_OPT_ALL_PATTERNS_SWA"
+msgstr "All patterns"
+
+msgid "IDS_ST_BODY_NAME_SWA"
+msgstr "Name"
+
+msgid "IDS_ST_BODY_DESCRIPTION_SWA"
+msgstr "Description"
+
+msgid "IDS_ST_BODY_CATEGORY_SWA"
+msgstr "Category"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CATEGORY_NAME"
+msgstr "Category name"
+
+msgid "IDS_ST_OPT_STRING_MATCH_SWA"
+msgstr "String match"
+
+msgid "IDS_ST_OPT_REGULAR_EXPRESSION_SWA"
+msgstr "Regular expression"
+
+msgid "IDS_ST_POP_PD_PATTERNS_WILL_BE_DELETED_ABB_SWA"
+msgstr "%d patterns will be deleted."
+
+msgid "IDS_ST_POP_THIS_REPORT_WILL_BE_DELETED_ABB_SWA"
+msgstr "This report will be deleted."
+
+msgid "IDS_ST_OPT_DELETE_SWA"
+msgstr "Delete"
+
+msgid "IDS_ST_HEADER_DELETE_REPORT_SWA"
+msgstr "Delete report"
+
+msgid "IDS_ST_POP_PD_REPORTS_WILL_BE_DELETED_ABB_SWA"
+msgstr "%d reports will be deleted."
+
+msgid "IDS_ST_TPOP_1_REPORT_DELETED_SWA"
+msgstr "1 report deleted."
+
+msgid "IDS_ST_MBODY_SELECT_ALL_SWA"
+msgstr "Select all"
+
+msgid "IDS_ST_ACBUTTON_DELETE_SWA"
+msgstr "DELETE"
+
+msgid "IDS_ST_ACBUTTON_CANCEL_SWA"
+msgstr "CANCEL"
+
+msgid "IDS_ST_TPOP_PD_REPORTS_DELETED_SWA"
+msgstr "%d reports deleted."
+
+msgid "IDS_ST_HEADER_SELECT_ITEMS_SWA"
+msgstr "Select items"
+
+msgid "IDS_ST_HEADER_PD_SELECTED_SWA"
+msgstr "%d selected"
+
+msgid "IDS_ST_TPOP_BASIC_PROTECTION_MODE_TURNED_ON_SWA"
+msgstr "Basic protection mode turned on."
+
+msgid "IDS_ST_TPOP_RULE_CREATED_SWA"
+msgstr "Rule created. Custom protection mode turned on."
+
+msgid "IDS_ST_TPOP_ADVANCED_PROTECTION_MODE_TURNED_ON_SWA"
+msgstr "Advanced protection mode turned on."
+
+msgid "IDS_ST_HEADER_DETAILS_SWA"
+msgstr "Details"
+
+msgid "IDS_ST_BODY_STRING_TYPE_SWA"
+msgstr "String type"
+
+msgid "IDS_ST_BODY_SEARCH_TERM_SWA"
+msgstr "Search term"
+
+msgid "IDS_ST_BODY_LEAKS_CAPTURED_SWA"
+msgstr "Leaks captured"
+
+msgid "IDS_ST_SBODY_TOTAL_LEAKS_SWA"
+msgstr "Total leaks"
+
+msgid "IDS_ST_HEADER_RULE_DETAILS_SWA"
+msgstr "Rule details"
+
+msgid "IDS_ST_HEADER_PATTERN_DETAILS_SWA"
+msgstr "Pattern details"
diff --git a/po/lt.po b/po/lt.po
index b36c28b..64c82ba 100755
--- a/po/lt.po
+++ b/po/lt.po
@@ -31,3 +31,272 @@ msgstr "%d kartų"
msgid "IDS_ST_HEADER_PRIVACY_AND_SECURITY_ABB"
msgstr "Privatumas ir sauga"
+msgid "IDS_ST_HEADER_DATA_LEAK_MONITOR_SWA"
+msgstr "Data leak monitor"
+
+msgid "IDS_ST_MBODY_DATA_LEAK_MONITOR_SWA"
+msgstr "Data leak monitor"
+
+msgid "IDS_ST_SBODY_PREVENT_APPS_FROM_LEAKING_YOUR_SENSITIVE_DATA_WITHOUT_AUTHORISATION_SWA"
+msgstr "Prevent apps from leaking your sensitive data without authorisation."
+
+msgid "IDS_ST_SBODY_TO_ALLOW_THIS_FUNCTION_TO_MONITOR_YOUR_PERSONAL_INFORMATION_YOU_NEED_TO_SET_UP_YOUR_PROFILE_IN_CONTACTS_SWA"
+msgstr "To allow this function to monitor your personal information, you need to set up your profile in Contacts."
+
+msgid "IDS_ST_MBODY_PROTECTION_MODE_SWA"
+msgstr "Protection mode"
+
+msgid "IDS_ST_MBODY_BASIC_M_MODE_SWA"
+msgstr "Basic"
+
+msgid "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"
+msgstr "Monitor your main sensitive data to prevent it from being leaked by most apps. This mode is suitable for regular users."
+
+msgid "IDS_ST_MBODY_ADVANCED_M_MODE_SWA"
+msgstr "Advanced"
+
+msgid "IDS_ST_SBODY_SET_UP_STRICT_RULES_TO_PREVENT_DATA_LEAKAGE_SWA"
+msgstr "Set up strict rules to prevent data leakage."
+
+msgid "IDS_ST_SBODY_THIS_MODE_WILL_AFFECT_APP_PERFORMANCE_SWA"
+msgstr "This mode will affect app performance."
+
+msgid "IDS_ST_POP_SOME_APPS_MAY_BE_BLOCKED_SWA"
+msgstr "Some apps may be blocked."
+
+msgid "IDS_ST_HEADER_TURN_ON_ADVANCED_PROTECTION_MODE_SWA"
+msgstr "Turn on Advanced protection mode"
+
+msgid "IDS_ST_MBODY_CUSTOM_M_MODE_SWA"
+msgstr "Custom"
+
+msgid "IDS_ST_SBODY_CHANGE_DEFAULT_RULES_AND_PATTERNS_AND_CREATE_YOUR_OWN_TO_SET_UP_A_CUSTOMISED_PROTECTION_MODE_SWA"
+msgstr "Change default rules and patterns and create your own to set up a customised protection mode."
+
+msgid "IDS_ST_HEADER_REPORTS_SWA"
+msgstr "Reports"
+
+msgid "IDS_ST_MBODY_FULL_REPORTS_SWA"
+msgstr "Full reports"
+
+msgid "IDS_ST_MBODY_APP_RANKINGS_SWA"
+msgstr "App rankings"
+
+msgid "IDS_ST_MBODY_DATA_STATISTICS_SWA"
+msgstr "Data statistics"
+
+msgid "IDS_ST_MBODY_RULES_AND_PATTERNS_SWA"
+msgstr "Rules and patterns"
+
+msgid "IDS_ST_NPBODY_NO_REPORTS_SWA"
+msgstr "No reports"
+
+msgid "IDS_ST_HEADER_SETTINGS_SWA"
+msgstr "Settings"
+
+msgid "IDS_ST_MBODY_KEEP_LOGS_SWA"
+msgstr "Keep logs"
+
+msgid "IDS_LOGS_CLEANED"
+msgstr "Logs cleaned"
+
+msgid "IDS_LOGS_CLEANED_FAILED"
+msgstr "Failed to clean logs"
+
+msgid "IDS_ST_OPT_1_WEEK_SWA"
+msgstr "1 week"
+
+msgid "IDS_ST_OPT_1_DAY_SWA"
+msgstr "1 day"
+
+msgid "IDS_ST_OPT_1_MONTH_SWA"
+msgstr "1 month"
+
+msgid "IDS_ST_HEADER_REPORT_DETAILS_SWA"
+msgstr "Report details"
+
+msgid "IDS_ST_BODY_CATEGORY_C_SWA"
+msgstr "Category:"
+
+msgid "IDS_ST_BODY_APP_C_SWA"
+msgstr "App:"
+
+msgid "IDS_ST_BODY_DESTINATION_C_SWA"
+msgstr "Destination:"
+
+msgid "IDS_ST_BODY_PATTERN_C_SWA"
+msgstr "Pattern:"
+
+msgid "IDS_ST_BODY_DLP_ACTION"
+msgstr "Action"
+
+msgid "IDS_ST_BODY_PACKET_C_SWA"
+msgstr "Packet:"
+
+msgid "IDS_ST_BODY_DLP_ACTION_ALLOW"
+msgstr "Allow"
+
+msgid "IDS_ST_BODY_DLP_ACTION_DENY"
+msgstr "Deny"
+
+msgid "IDS_ST_BODY_DLP_ACTION_SANITIZE"
+msgstr "Sanitize"
+
+msgid "IDS_ST_BODY_DLP_ACTION_ALL_RULES"
+msgstr "All Rules"
+
+msgid "IDS_ST_OPT_QUICK_M_PROTECTION_MODE_SWA"
+msgstr "Quick"
+
+msgid "IDS_ST_SBODY_CREATE_RULES_QUICKLY_AND_EASILY_SWA"
+msgstr "Create rules quickly and easily."
+
+msgid "IDS_ST_MBODY_CUSTOM_SWA"
+msgstr "Custom"
+
+msgid "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"
+msgstr "Create rules from scratch to give you full control of your data protection. Use this option to create non-standard rules."
+
+msgid "IDS_ST_HEADER_CUSTOM_PROTECTION_MODE_SWA"
+msgstr "Custom protection mode"
+
+msgid "IDS_ST_TAB_RULES_SWA"
+msgstr "Rules"
+
+msgid "IDS_ST_TAB_PATTERNS_SWA"
+msgstr "Patterns"
+
+msgid "IDS_ST_HEADER_SELECT_TEMPLATE_SWA"
+msgstr "Select template"
+
+msgid "IDS_ST_HEADER_SELECT_APPS_SWA"
+msgstr "Select apps"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_CHOOSE_ACTION"
+msgstr "Select Action"
+
+msgid "IDS_ST_ACBUTTON_NEXT_SWA"
+msgstr "NEXT"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_OK"
+msgstr "OK"
+
+msgid "IDS_ST_ACBUTTON_DONE_SWA"
+msgstr "DONE"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_RULE_CREATED_MESSAGE"
+msgstr "Rule created."
+
+msgid "IDS_ST_TPOP_RULE_DELETED_SWA"
+msgstr "Rule deleted."
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_DELETE_RULE_POPUP_TITLE"
+msgstr "Delete Rule"
+
+msgid "IDS_ST_HEADER_DELETE_PATTERNS_SWA"
+msgstr "Delete patterns"
+
+msgid "IDS_ST_POP_THIS_RULE_WILL_BE_DELETED_ABB_SWA"
+msgstr "This rule will be deleted."
+
+msgid "IDS_ST_HEADER_CREATE_PATTERN_SWA"
+msgstr "Create pattern"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_PATTERN"
+msgstr "Custom"
+
+msgid "IDS_ST_TPOP_PD_PATTERNS_DELETED_SWA"
+msgstr "%d patterns deleted."
+
+msgid "IDS_ST_OPT_EDIT_SWA"
+msgstr "Edit"
+
+msgid "IDS_ST_OPT_CREATE_SWA"
+msgstr "Create"
+
+msgid "IDS_ST_OPT_ALL_PATTERNS_SWA"
+msgstr "All patterns"
+
+msgid "IDS_ST_BODY_NAME_SWA"
+msgstr "Name"
+
+msgid "IDS_ST_BODY_DESCRIPTION_SWA"
+msgstr "Description"
+
+msgid "IDS_ST_BODY_CATEGORY_SWA"
+msgstr "Category"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CATEGORY_NAME"
+msgstr "Category name"
+
+msgid "IDS_ST_OPT_STRING_MATCH_SWA"
+msgstr "String match"
+
+msgid "IDS_ST_OPT_REGULAR_EXPRESSION_SWA"
+msgstr "Regular expression"
+
+msgid "IDS_ST_POP_PD_PATTERNS_WILL_BE_DELETED_ABB_SWA"
+msgstr "%d patterns will be deleted."
+
+msgid "IDS_ST_POP_THIS_REPORT_WILL_BE_DELETED_ABB_SWA"
+msgstr "This report will be deleted."
+
+msgid "IDS_ST_OPT_DELETE_SWA"
+msgstr "Delete"
+
+msgid "IDS_ST_HEADER_DELETE_REPORT_SWA"
+msgstr "Delete report"
+
+msgid "IDS_ST_POP_PD_REPORTS_WILL_BE_DELETED_ABB_SWA"
+msgstr "%d reports will be deleted."
+
+msgid "IDS_ST_TPOP_1_REPORT_DELETED_SWA"
+msgstr "1 report deleted."
+
+msgid "IDS_ST_MBODY_SELECT_ALL_SWA"
+msgstr "Select all"
+
+msgid "IDS_ST_ACBUTTON_DELETE_SWA"
+msgstr "DELETE"
+
+msgid "IDS_ST_ACBUTTON_CANCEL_SWA"
+msgstr "CANCEL"
+
+msgid "IDS_ST_TPOP_PD_REPORTS_DELETED_SWA"
+msgstr "%d reports deleted."
+
+msgid "IDS_ST_HEADER_SELECT_ITEMS_SWA"
+msgstr "Select items"
+
+msgid "IDS_ST_HEADER_PD_SELECTED_SWA"
+msgstr "%d selected"
+
+msgid "IDS_ST_TPOP_BASIC_PROTECTION_MODE_TURNED_ON_SWA"
+msgstr "Basic protection mode turned on."
+
+msgid "IDS_ST_TPOP_RULE_CREATED_SWA"
+msgstr "Rule created. Custom protection mode turned on."
+
+msgid "IDS_ST_TPOP_ADVANCED_PROTECTION_MODE_TURNED_ON_SWA"
+msgstr "Advanced protection mode turned on."
+
+msgid "IDS_ST_HEADER_DETAILS_SWA"
+msgstr "Details"
+
+msgid "IDS_ST_BODY_STRING_TYPE_SWA"
+msgstr "String type"
+
+msgid "IDS_ST_BODY_SEARCH_TERM_SWA"
+msgstr "Search term"
+
+msgid "IDS_ST_BODY_LEAKS_CAPTURED_SWA"
+msgstr "Leaks captured"
+
+msgid "IDS_ST_SBODY_TOTAL_LEAKS_SWA"
+msgstr "Total leaks"
+
+msgid "IDS_ST_HEADER_RULE_DETAILS_SWA"
+msgstr "Rule details"
+
+msgid "IDS_ST_HEADER_PATTERN_DETAILS_SWA"
+msgstr "Pattern details"
diff --git a/po/lv.po b/po/lv.po
index 2d9ee1b..c2d1b28 100755
--- a/po/lv.po
+++ b/po/lv.po
@@ -31,3 +31,272 @@ msgstr "%d reizes"
msgid "IDS_ST_HEADER_PRIVACY_AND_SECURITY_ABB"
msgstr "Konfidenc. un drošība"
+msgid "IDS_ST_HEADER_DATA_LEAK_MONITOR_SWA"
+msgstr "Data leak monitor"
+
+msgid "IDS_ST_MBODY_DATA_LEAK_MONITOR_SWA"
+msgstr "Data leak monitor"
+
+msgid "IDS_ST_SBODY_PREVENT_APPS_FROM_LEAKING_YOUR_SENSITIVE_DATA_WITHOUT_AUTHORISATION_SWA"
+msgstr "Prevent apps from leaking your sensitive data without authorisation."
+
+msgid "IDS_ST_SBODY_TO_ALLOW_THIS_FUNCTION_TO_MONITOR_YOUR_PERSONAL_INFORMATION_YOU_NEED_TO_SET_UP_YOUR_PROFILE_IN_CONTACTS_SWA"
+msgstr "To allow this function to monitor your personal information, you need to set up your profile in Contacts."
+
+msgid "IDS_ST_MBODY_PROTECTION_MODE_SWA"
+msgstr "Protection mode"
+
+msgid "IDS_ST_MBODY_BASIC_M_MODE_SWA"
+msgstr "Basic"
+
+msgid "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"
+msgstr "Monitor your main sensitive data to prevent it from being leaked by most apps. This mode is suitable for regular users."
+
+msgid "IDS_ST_MBODY_ADVANCED_M_MODE_SWA"
+msgstr "Advanced"
+
+msgid "IDS_ST_SBODY_SET_UP_STRICT_RULES_TO_PREVENT_DATA_LEAKAGE_SWA"
+msgstr "Set up strict rules to prevent data leakage."
+
+msgid "IDS_ST_SBODY_THIS_MODE_WILL_AFFECT_APP_PERFORMANCE_SWA"
+msgstr "This mode will affect app performance."
+
+msgid "IDS_ST_POP_SOME_APPS_MAY_BE_BLOCKED_SWA"
+msgstr "Some apps may be blocked."
+
+msgid "IDS_ST_HEADER_TURN_ON_ADVANCED_PROTECTION_MODE_SWA"
+msgstr "Turn on Advanced protection mode"
+
+msgid "IDS_ST_MBODY_CUSTOM_M_MODE_SWA"
+msgstr "Custom"
+
+msgid "IDS_ST_SBODY_CHANGE_DEFAULT_RULES_AND_PATTERNS_AND_CREATE_YOUR_OWN_TO_SET_UP_A_CUSTOMISED_PROTECTION_MODE_SWA"
+msgstr "Change default rules and patterns and create your own to set up a customised protection mode."
+
+msgid "IDS_ST_HEADER_REPORTS_SWA"
+msgstr "Reports"
+
+msgid "IDS_ST_MBODY_FULL_REPORTS_SWA"
+msgstr "Full reports"
+
+msgid "IDS_ST_MBODY_APP_RANKINGS_SWA"
+msgstr "App rankings"
+
+msgid "IDS_ST_MBODY_DATA_STATISTICS_SWA"
+msgstr "Data statistics"
+
+msgid "IDS_ST_MBODY_RULES_AND_PATTERNS_SWA"
+msgstr "Rules and patterns"
+
+msgid "IDS_ST_NPBODY_NO_REPORTS_SWA"
+msgstr "No reports"
+
+msgid "IDS_ST_HEADER_SETTINGS_SWA"
+msgstr "Settings"
+
+msgid "IDS_ST_MBODY_KEEP_LOGS_SWA"
+msgstr "Keep logs"
+
+msgid "IDS_LOGS_CLEANED"
+msgstr "Logs cleaned"
+
+msgid "IDS_LOGS_CLEANED_FAILED"
+msgstr "Failed to clean logs"
+
+msgid "IDS_ST_OPT_1_WEEK_SWA"
+msgstr "1 week"
+
+msgid "IDS_ST_OPT_1_DAY_SWA"
+msgstr "1 day"
+
+msgid "IDS_ST_OPT_1_MONTH_SWA"
+msgstr "1 month"
+
+msgid "IDS_ST_HEADER_REPORT_DETAILS_SWA"
+msgstr "Report details"
+
+msgid "IDS_ST_BODY_CATEGORY_C_SWA"
+msgstr "Category:"
+
+msgid "IDS_ST_BODY_APP_C_SWA"
+msgstr "App:"
+
+msgid "IDS_ST_BODY_DESTINATION_C_SWA"
+msgstr "Destination:"
+
+msgid "IDS_ST_BODY_PATTERN_C_SWA"
+msgstr "Pattern:"
+
+msgid "IDS_ST_BODY_DLP_ACTION"
+msgstr "Action"
+
+msgid "IDS_ST_BODY_PACKET_C_SWA"
+msgstr "Packet:"
+
+msgid "IDS_ST_BODY_DLP_ACTION_ALLOW"
+msgstr "Allow"
+
+msgid "IDS_ST_BODY_DLP_ACTION_DENY"
+msgstr "Deny"
+
+msgid "IDS_ST_BODY_DLP_ACTION_SANITIZE"
+msgstr "Sanitize"
+
+msgid "IDS_ST_BODY_DLP_ACTION_ALL_RULES"
+msgstr "All Rules"
+
+msgid "IDS_ST_OPT_QUICK_M_PROTECTION_MODE_SWA"
+msgstr "Quick"
+
+msgid "IDS_ST_SBODY_CREATE_RULES_QUICKLY_AND_EASILY_SWA"
+msgstr "Create rules quickly and easily."
+
+msgid "IDS_ST_MBODY_CUSTOM_SWA"
+msgstr "Custom"
+
+msgid "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"
+msgstr "Create rules from scratch to give you full control of your data protection. Use this option to create non-standard rules."
+
+msgid "IDS_ST_HEADER_CUSTOM_PROTECTION_MODE_SWA"
+msgstr "Custom protection mode"
+
+msgid "IDS_ST_TAB_RULES_SWA"
+msgstr "Rules"
+
+msgid "IDS_ST_TAB_PATTERNS_SWA"
+msgstr "Patterns"
+
+msgid "IDS_ST_HEADER_SELECT_TEMPLATE_SWA"
+msgstr "Select template"
+
+msgid "IDS_ST_HEADER_SELECT_APPS_SWA"
+msgstr "Select apps"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_CHOOSE_ACTION"
+msgstr "Select Action"
+
+msgid "IDS_ST_ACBUTTON_NEXT_SWA"
+msgstr "NEXT"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_OK"
+msgstr "OK"
+
+msgid "IDS_ST_ACBUTTON_DONE_SWA"
+msgstr "DONE"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_RULE_CREATED_MESSAGE"
+msgstr "Rule created."
+
+msgid "IDS_ST_TPOP_RULE_DELETED_SWA"
+msgstr "Rule deleted."
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_DELETE_RULE_POPUP_TITLE"
+msgstr "Delete Rule"
+
+msgid "IDS_ST_HEADER_DELETE_PATTERNS_SWA"
+msgstr "Delete patterns"
+
+msgid "IDS_ST_POP_THIS_RULE_WILL_BE_DELETED_ABB_SWA"
+msgstr "This rule will be deleted."
+
+msgid "IDS_ST_HEADER_CREATE_PATTERN_SWA"
+msgstr "Create pattern"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_PATTERN"
+msgstr "Custom"
+
+msgid "IDS_ST_TPOP_PD_PATTERNS_DELETED_SWA"
+msgstr "%d patterns deleted."
+
+msgid "IDS_ST_OPT_EDIT_SWA"
+msgstr "Edit"
+
+msgid "IDS_ST_OPT_CREATE_SWA"
+msgstr "Create"
+
+msgid "IDS_ST_OPT_ALL_PATTERNS_SWA"
+msgstr "All patterns"
+
+msgid "IDS_ST_BODY_NAME_SWA"
+msgstr "Name"
+
+msgid "IDS_ST_BODY_DESCRIPTION_SWA"
+msgstr "Description"
+
+msgid "IDS_ST_BODY_CATEGORY_SWA"
+msgstr "Category"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CATEGORY_NAME"
+msgstr "Category name"
+
+msgid "IDS_ST_OPT_STRING_MATCH_SWA"
+msgstr "String match"
+
+msgid "IDS_ST_OPT_REGULAR_EXPRESSION_SWA"
+msgstr "Regular expression"
+
+msgid "IDS_ST_POP_PD_PATTERNS_WILL_BE_DELETED_ABB_SWA"
+msgstr "%d patterns will be deleted."
+
+msgid "IDS_ST_POP_THIS_REPORT_WILL_BE_DELETED_ABB_SWA"
+msgstr "This report will be deleted."
+
+msgid "IDS_ST_OPT_DELETE_SWA"
+msgstr "Delete"
+
+msgid "IDS_ST_HEADER_DELETE_REPORT_SWA"
+msgstr "Delete report"
+
+msgid "IDS_ST_POP_PD_REPORTS_WILL_BE_DELETED_ABB_SWA"
+msgstr "%d reports will be deleted."
+
+msgid "IDS_ST_TPOP_1_REPORT_DELETED_SWA"
+msgstr "1 report deleted."
+
+msgid "IDS_ST_MBODY_SELECT_ALL_SWA"
+msgstr "Select all"
+
+msgid "IDS_ST_ACBUTTON_DELETE_SWA"
+msgstr "DELETE"
+
+msgid "IDS_ST_ACBUTTON_CANCEL_SWA"
+msgstr "CANCEL"
+
+msgid "IDS_ST_TPOP_PD_REPORTS_DELETED_SWA"
+msgstr "%d reports deleted."
+
+msgid "IDS_ST_HEADER_SELECT_ITEMS_SWA"
+msgstr "Select items"
+
+msgid "IDS_ST_HEADER_PD_SELECTED_SWA"
+msgstr "%d selected"
+
+msgid "IDS_ST_TPOP_BASIC_PROTECTION_MODE_TURNED_ON_SWA"
+msgstr "Basic protection mode turned on."
+
+msgid "IDS_ST_TPOP_RULE_CREATED_SWA"
+msgstr "Rule created. Custom protection mode turned on."
+
+msgid "IDS_ST_TPOP_ADVANCED_PROTECTION_MODE_TURNED_ON_SWA"
+msgstr "Advanced protection mode turned on."
+
+msgid "IDS_ST_HEADER_DETAILS_SWA"
+msgstr "Details"
+
+msgid "IDS_ST_BODY_STRING_TYPE_SWA"
+msgstr "String type"
+
+msgid "IDS_ST_BODY_SEARCH_TERM_SWA"
+msgstr "Search term"
+
+msgid "IDS_ST_BODY_LEAKS_CAPTURED_SWA"
+msgstr "Leaks captured"
+
+msgid "IDS_ST_SBODY_TOTAL_LEAKS_SWA"
+msgstr "Total leaks"
+
+msgid "IDS_ST_HEADER_RULE_DETAILS_SWA"
+msgstr "Rule details"
+
+msgid "IDS_ST_HEADER_PATTERN_DETAILS_SWA"
+msgstr "Pattern details"
diff --git a/po/mk.po b/po/mk.po
index 9bc8beb..7701164 100755
--- a/po/mk.po
+++ b/po/mk.po
@@ -31,3 +31,272 @@ msgstr "%d пати"
msgid "IDS_ST_HEADER_PRIVACY_AND_SECURITY_ABB"
msgstr "Приват. и безбедност"
+msgid "IDS_ST_HEADER_DATA_LEAK_MONITOR_SWA"
+msgstr "Data leak monitor"
+
+msgid "IDS_ST_MBODY_DATA_LEAK_MONITOR_SWA"
+msgstr "Data leak monitor"
+
+msgid "IDS_ST_SBODY_PREVENT_APPS_FROM_LEAKING_YOUR_SENSITIVE_DATA_WITHOUT_AUTHORISATION_SWA"
+msgstr "Prevent apps from leaking your sensitive data without authorisation."
+
+msgid "IDS_ST_SBODY_TO_ALLOW_THIS_FUNCTION_TO_MONITOR_YOUR_PERSONAL_INFORMATION_YOU_NEED_TO_SET_UP_YOUR_PROFILE_IN_CONTACTS_SWA"
+msgstr "To allow this function to monitor your personal information, you need to set up your profile in Contacts."
+
+msgid "IDS_ST_MBODY_PROTECTION_MODE_SWA"
+msgstr "Protection mode"
+
+msgid "IDS_ST_MBODY_BASIC_M_MODE_SWA"
+msgstr "Basic"
+
+msgid "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"
+msgstr "Monitor your main sensitive data to prevent it from being leaked by most apps. This mode is suitable for regular users."
+
+msgid "IDS_ST_MBODY_ADVANCED_M_MODE_SWA"
+msgstr "Advanced"
+
+msgid "IDS_ST_SBODY_SET_UP_STRICT_RULES_TO_PREVENT_DATA_LEAKAGE_SWA"
+msgstr "Set up strict rules to prevent data leakage."
+
+msgid "IDS_ST_SBODY_THIS_MODE_WILL_AFFECT_APP_PERFORMANCE_SWA"
+msgstr "This mode will affect app performance."
+
+msgid "IDS_ST_POP_SOME_APPS_MAY_BE_BLOCKED_SWA"
+msgstr "Some apps may be blocked."
+
+msgid "IDS_ST_HEADER_TURN_ON_ADVANCED_PROTECTION_MODE_SWA"
+msgstr "Turn on Advanced protection mode"
+
+msgid "IDS_ST_MBODY_CUSTOM_M_MODE_SWA"
+msgstr "Custom"
+
+msgid "IDS_ST_SBODY_CHANGE_DEFAULT_RULES_AND_PATTERNS_AND_CREATE_YOUR_OWN_TO_SET_UP_A_CUSTOMISED_PROTECTION_MODE_SWA"
+msgstr "Change default rules and patterns and create your own to set up a customised protection mode."
+
+msgid "IDS_ST_HEADER_REPORTS_SWA"
+msgstr "Reports"
+
+msgid "IDS_ST_MBODY_FULL_REPORTS_SWA"
+msgstr "Full reports"
+
+msgid "IDS_ST_MBODY_APP_RANKINGS_SWA"
+msgstr "App rankings"
+
+msgid "IDS_ST_MBODY_DATA_STATISTICS_SWA"
+msgstr "Data statistics"
+
+msgid "IDS_ST_MBODY_RULES_AND_PATTERNS_SWA"
+msgstr "Rules and patterns"
+
+msgid "IDS_ST_NPBODY_NO_REPORTS_SWA"
+msgstr "No reports"
+
+msgid "IDS_ST_HEADER_SETTINGS_SWA"
+msgstr "Settings"
+
+msgid "IDS_ST_MBODY_KEEP_LOGS_SWA"
+msgstr "Keep logs"
+
+msgid "IDS_LOGS_CLEANED"
+msgstr "Logs cleaned"
+
+msgid "IDS_LOGS_CLEANED_FAILED"
+msgstr "Failed to clean logs"
+
+msgid "IDS_ST_OPT_1_WEEK_SWA"
+msgstr "1 week"
+
+msgid "IDS_ST_OPT_1_DAY_SWA"
+msgstr "1 day"
+
+msgid "IDS_ST_OPT_1_MONTH_SWA"
+msgstr "1 month"
+
+msgid "IDS_ST_HEADER_REPORT_DETAILS_SWA"
+msgstr "Report details"
+
+msgid "IDS_ST_BODY_CATEGORY_C_SWA"
+msgstr "Category:"
+
+msgid "IDS_ST_BODY_APP_C_SWA"
+msgstr "App:"
+
+msgid "IDS_ST_BODY_DESTINATION_C_SWA"
+msgstr "Destination:"
+
+msgid "IDS_ST_BODY_PATTERN_C_SWA"
+msgstr "Pattern:"
+
+msgid "IDS_ST_BODY_DLP_ACTION"
+msgstr "Action"
+
+msgid "IDS_ST_BODY_PACKET_C_SWA"
+msgstr "Packet:"
+
+msgid "IDS_ST_BODY_DLP_ACTION_ALLOW"
+msgstr "Allow"
+
+msgid "IDS_ST_BODY_DLP_ACTION_DENY"
+msgstr "Deny"
+
+msgid "IDS_ST_BODY_DLP_ACTION_SANITIZE"
+msgstr "Sanitize"
+
+msgid "IDS_ST_BODY_DLP_ACTION_ALL_RULES"
+msgstr "All Rules"
+
+msgid "IDS_ST_OPT_QUICK_M_PROTECTION_MODE_SWA"
+msgstr "Quick"
+
+msgid "IDS_ST_SBODY_CREATE_RULES_QUICKLY_AND_EASILY_SWA"
+msgstr "Create rules quickly and easily."
+
+msgid "IDS_ST_MBODY_CUSTOM_SWA"
+msgstr "Custom"
+
+msgid "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"
+msgstr "Create rules from scratch to give you full control of your data protection. Use this option to create non-standard rules."
+
+msgid "IDS_ST_HEADER_CUSTOM_PROTECTION_MODE_SWA"
+msgstr "Custom protection mode"
+
+msgid "IDS_ST_TAB_RULES_SWA"
+msgstr "Rules"
+
+msgid "IDS_ST_TAB_PATTERNS_SWA"
+msgstr "Patterns"
+
+msgid "IDS_ST_HEADER_SELECT_TEMPLATE_SWA"
+msgstr "Select template"
+
+msgid "IDS_ST_HEADER_SELECT_APPS_SWA"
+msgstr "Select apps"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_CHOOSE_ACTION"
+msgstr "Select Action"
+
+msgid "IDS_ST_ACBUTTON_NEXT_SWA"
+msgstr "NEXT"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_OK"
+msgstr "OK"
+
+msgid "IDS_ST_ACBUTTON_DONE_SWA"
+msgstr "DONE"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_RULE_CREATED_MESSAGE"
+msgstr "Rule created."
+
+msgid "IDS_ST_TPOP_RULE_DELETED_SWA"
+msgstr "Rule deleted."
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_DELETE_RULE_POPUP_TITLE"
+msgstr "Delete Rule"
+
+msgid "IDS_ST_HEADER_DELETE_PATTERNS_SWA"
+msgstr "Delete patterns"
+
+msgid "IDS_ST_POP_THIS_RULE_WILL_BE_DELETED_ABB_SWA"
+msgstr "This rule will be deleted."
+
+msgid "IDS_ST_HEADER_CREATE_PATTERN_SWA"
+msgstr "Create pattern"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_PATTERN"
+msgstr "Custom"
+
+msgid "IDS_ST_TPOP_PD_PATTERNS_DELETED_SWA"
+msgstr "%d patterns deleted."
+
+msgid "IDS_ST_OPT_EDIT_SWA"
+msgstr "Edit"
+
+msgid "IDS_ST_OPT_CREATE_SWA"
+msgstr "Create"
+
+msgid "IDS_ST_OPT_ALL_PATTERNS_SWA"
+msgstr "All patterns"
+
+msgid "IDS_ST_BODY_NAME_SWA"
+msgstr "Name"
+
+msgid "IDS_ST_BODY_DESCRIPTION_SWA"
+msgstr "Description"
+
+msgid "IDS_ST_BODY_CATEGORY_SWA"
+msgstr "Category"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CATEGORY_NAME"
+msgstr "Category name"
+
+msgid "IDS_ST_OPT_STRING_MATCH_SWA"
+msgstr "String match"
+
+msgid "IDS_ST_OPT_REGULAR_EXPRESSION_SWA"
+msgstr "Regular expression"
+
+msgid "IDS_ST_POP_PD_PATTERNS_WILL_BE_DELETED_ABB_SWA"
+msgstr "%d patterns will be deleted."
+
+msgid "IDS_ST_POP_THIS_REPORT_WILL_BE_DELETED_ABB_SWA"
+msgstr "This report will be deleted."
+
+msgid "IDS_ST_OPT_DELETE_SWA"
+msgstr "Delete"
+
+msgid "IDS_ST_HEADER_DELETE_REPORT_SWA"
+msgstr "Delete report"
+
+msgid "IDS_ST_POP_PD_REPORTS_WILL_BE_DELETED_ABB_SWA"
+msgstr "%d reports will be deleted."
+
+msgid "IDS_ST_TPOP_1_REPORT_DELETED_SWA"
+msgstr "1 report deleted."
+
+msgid "IDS_ST_MBODY_SELECT_ALL_SWA"
+msgstr "Select all"
+
+msgid "IDS_ST_ACBUTTON_DELETE_SWA"
+msgstr "DELETE"
+
+msgid "IDS_ST_ACBUTTON_CANCEL_SWA"
+msgstr "CANCEL"
+
+msgid "IDS_ST_TPOP_PD_REPORTS_DELETED_SWA"
+msgstr "%d reports deleted."
+
+msgid "IDS_ST_HEADER_SELECT_ITEMS_SWA"
+msgstr "Select items"
+
+msgid "IDS_ST_HEADER_PD_SELECTED_SWA"
+msgstr "%d selected"
+
+msgid "IDS_ST_TPOP_BASIC_PROTECTION_MODE_TURNED_ON_SWA"
+msgstr "Basic protection mode turned on."
+
+msgid "IDS_ST_TPOP_RULE_CREATED_SWA"
+msgstr "Rule created. Custom protection mode turned on."
+
+msgid "IDS_ST_TPOP_ADVANCED_PROTECTION_MODE_TURNED_ON_SWA"
+msgstr "Advanced protection mode turned on."
+
+msgid "IDS_ST_HEADER_DETAILS_SWA"
+msgstr "Details"
+
+msgid "IDS_ST_BODY_STRING_TYPE_SWA"
+msgstr "String type"
+
+msgid "IDS_ST_BODY_SEARCH_TERM_SWA"
+msgstr "Search term"
+
+msgid "IDS_ST_BODY_LEAKS_CAPTURED_SWA"
+msgstr "Leaks captured"
+
+msgid "IDS_ST_SBODY_TOTAL_LEAKS_SWA"
+msgstr "Total leaks"
+
+msgid "IDS_ST_HEADER_RULE_DETAILS_SWA"
+msgstr "Rule details"
+
+msgid "IDS_ST_HEADER_PATTERN_DETAILS_SWA"
+msgstr "Pattern details"
diff --git a/po/nb.po b/po/nb.po
index 8166e2c..bba2ac6 100755
--- a/po/nb.po
+++ b/po/nb.po
@@ -31,3 +31,272 @@ msgstr "%d ganger"
msgid "IDS_ST_HEADER_PRIVACY_AND_SECURITY_ABB"
msgstr "Personv. og sikkerhet"
+msgid "IDS_ST_HEADER_DATA_LEAK_MONITOR_SWA"
+msgstr "Data leak monitor"
+
+msgid "IDS_ST_MBODY_DATA_LEAK_MONITOR_SWA"
+msgstr "Data leak monitor"
+
+msgid "IDS_ST_SBODY_PREVENT_APPS_FROM_LEAKING_YOUR_SENSITIVE_DATA_WITHOUT_AUTHORISATION_SWA"
+msgstr "Prevent apps from leaking your sensitive data without authorisation."
+
+msgid "IDS_ST_SBODY_TO_ALLOW_THIS_FUNCTION_TO_MONITOR_YOUR_PERSONAL_INFORMATION_YOU_NEED_TO_SET_UP_YOUR_PROFILE_IN_CONTACTS_SWA"
+msgstr "To allow this function to monitor your personal information, you need to set up your profile in Contacts."
+
+msgid "IDS_ST_MBODY_PROTECTION_MODE_SWA"
+msgstr "Protection mode"
+
+msgid "IDS_ST_MBODY_BASIC_M_MODE_SWA"
+msgstr "Basic"
+
+msgid "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"
+msgstr "Monitor your main sensitive data to prevent it from being leaked by most apps. This mode is suitable for regular users."
+
+msgid "IDS_ST_MBODY_ADVANCED_M_MODE_SWA"
+msgstr "Advanced"
+
+msgid "IDS_ST_SBODY_SET_UP_STRICT_RULES_TO_PREVENT_DATA_LEAKAGE_SWA"
+msgstr "Set up strict rules to prevent data leakage."
+
+msgid "IDS_ST_SBODY_THIS_MODE_WILL_AFFECT_APP_PERFORMANCE_SWA"
+msgstr "This mode will affect app performance."
+
+msgid "IDS_ST_POP_SOME_APPS_MAY_BE_BLOCKED_SWA"
+msgstr "Some apps may be blocked."
+
+msgid "IDS_ST_HEADER_TURN_ON_ADVANCED_PROTECTION_MODE_SWA"
+msgstr "Turn on Advanced protection mode"
+
+msgid "IDS_ST_MBODY_CUSTOM_M_MODE_SWA"
+msgstr "Custom"
+
+msgid "IDS_ST_SBODY_CHANGE_DEFAULT_RULES_AND_PATTERNS_AND_CREATE_YOUR_OWN_TO_SET_UP_A_CUSTOMISED_PROTECTION_MODE_SWA"
+msgstr "Change default rules and patterns and create your own to set up a customised protection mode."
+
+msgid "IDS_ST_HEADER_REPORTS_SWA"
+msgstr "Reports"
+
+msgid "IDS_ST_MBODY_FULL_REPORTS_SWA"
+msgstr "Full reports"
+
+msgid "IDS_ST_MBODY_APP_RANKINGS_SWA"
+msgstr "App rankings"
+
+msgid "IDS_ST_MBODY_DATA_STATISTICS_SWA"
+msgstr "Data statistics"
+
+msgid "IDS_ST_MBODY_RULES_AND_PATTERNS_SWA"
+msgstr "Rules and patterns"
+
+msgid "IDS_ST_NPBODY_NO_REPORTS_SWA"
+msgstr "No reports"
+
+msgid "IDS_ST_HEADER_SETTINGS_SWA"
+msgstr "Settings"
+
+msgid "IDS_ST_MBODY_KEEP_LOGS_SWA"
+msgstr "Keep logs"
+
+msgid "IDS_LOGS_CLEANED"
+msgstr "Logs cleaned"
+
+msgid "IDS_LOGS_CLEANED_FAILED"
+msgstr "Failed to clean logs"
+
+msgid "IDS_ST_OPT_1_WEEK_SWA"
+msgstr "1 week"
+
+msgid "IDS_ST_OPT_1_DAY_SWA"
+msgstr "1 day"
+
+msgid "IDS_ST_OPT_1_MONTH_SWA"
+msgstr "1 month"
+
+msgid "IDS_ST_HEADER_REPORT_DETAILS_SWA"
+msgstr "Report details"
+
+msgid "IDS_ST_BODY_CATEGORY_C_SWA"
+msgstr "Category:"
+
+msgid "IDS_ST_BODY_APP_C_SWA"
+msgstr "App:"
+
+msgid "IDS_ST_BODY_DESTINATION_C_SWA"
+msgstr "Destination:"
+
+msgid "IDS_ST_BODY_PATTERN_C_SWA"
+msgstr "Pattern:"
+
+msgid "IDS_ST_BODY_DLP_ACTION"
+msgstr "Action"
+
+msgid "IDS_ST_BODY_PACKET_C_SWA"
+msgstr "Packet:"
+
+msgid "IDS_ST_BODY_DLP_ACTION_ALLOW"
+msgstr "Allow"
+
+msgid "IDS_ST_BODY_DLP_ACTION_DENY"
+msgstr "Deny"
+
+msgid "IDS_ST_BODY_DLP_ACTION_SANITIZE"
+msgstr "Sanitize"
+
+msgid "IDS_ST_BODY_DLP_ACTION_ALL_RULES"
+msgstr "All Rules"
+
+msgid "IDS_ST_OPT_QUICK_M_PROTECTION_MODE_SWA"
+msgstr "Quick"
+
+msgid "IDS_ST_SBODY_CREATE_RULES_QUICKLY_AND_EASILY_SWA"
+msgstr "Create rules quickly and easily."
+
+msgid "IDS_ST_MBODY_CUSTOM_SWA"
+msgstr "Custom"
+
+msgid "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"
+msgstr "Create rules from scratch to give you full control of your data protection. Use this option to create non-standard rules."
+
+msgid "IDS_ST_HEADER_CUSTOM_PROTECTION_MODE_SWA"
+msgstr "Custom protection mode"
+
+msgid "IDS_ST_TAB_RULES_SWA"
+msgstr "Rules"
+
+msgid "IDS_ST_TAB_PATTERNS_SWA"
+msgstr "Patterns"
+
+msgid "IDS_ST_HEADER_SELECT_TEMPLATE_SWA"
+msgstr "Select template"
+
+msgid "IDS_ST_HEADER_SELECT_APPS_SWA"
+msgstr "Select apps"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_CHOOSE_ACTION"
+msgstr "Select Action"
+
+msgid "IDS_ST_ACBUTTON_NEXT_SWA"
+msgstr "NEXT"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_OK"
+msgstr "OK"
+
+msgid "IDS_ST_ACBUTTON_DONE_SWA"
+msgstr "DONE"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_RULE_CREATED_MESSAGE"
+msgstr "Rule created."
+
+msgid "IDS_ST_TPOP_RULE_DELETED_SWA"
+msgstr "Rule deleted."
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_DELETE_RULE_POPUP_TITLE"
+msgstr "Delete Rule"
+
+msgid "IDS_ST_HEADER_DELETE_PATTERNS_SWA"
+msgstr "Delete patterns"
+
+msgid "IDS_ST_POP_THIS_RULE_WILL_BE_DELETED_ABB_SWA"
+msgstr "This rule will be deleted."
+
+msgid "IDS_ST_HEADER_CREATE_PATTERN_SWA"
+msgstr "Create pattern"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_PATTERN"
+msgstr "Custom"
+
+msgid "IDS_ST_TPOP_PD_PATTERNS_DELETED_SWA"
+msgstr "%d patterns deleted."
+
+msgid "IDS_ST_OPT_EDIT_SWA"
+msgstr "Edit"
+
+msgid "IDS_ST_OPT_CREATE_SWA"
+msgstr "Create"
+
+msgid "IDS_ST_OPT_ALL_PATTERNS_SWA"
+msgstr "All patterns"
+
+msgid "IDS_ST_BODY_NAME_SWA"
+msgstr "Name"
+
+msgid "IDS_ST_BODY_DESCRIPTION_SWA"
+msgstr "Description"
+
+msgid "IDS_ST_BODY_CATEGORY_SWA"
+msgstr "Category"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CATEGORY_NAME"
+msgstr "Category name"
+
+msgid "IDS_ST_OPT_STRING_MATCH_SWA"
+msgstr "String match"
+
+msgid "IDS_ST_OPT_REGULAR_EXPRESSION_SWA"
+msgstr "Regular expression"
+
+msgid "IDS_ST_POP_PD_PATTERNS_WILL_BE_DELETED_ABB_SWA"
+msgstr "%d patterns will be deleted."
+
+msgid "IDS_ST_POP_THIS_REPORT_WILL_BE_DELETED_ABB_SWA"
+msgstr "This report will be deleted."
+
+msgid "IDS_ST_OPT_DELETE_SWA"
+msgstr "Delete"
+
+msgid "IDS_ST_HEADER_DELETE_REPORT_SWA"
+msgstr "Delete report"
+
+msgid "IDS_ST_POP_PD_REPORTS_WILL_BE_DELETED_ABB_SWA"
+msgstr "%d reports will be deleted."
+
+msgid "IDS_ST_TPOP_1_REPORT_DELETED_SWA"
+msgstr "1 report deleted."
+
+msgid "IDS_ST_MBODY_SELECT_ALL_SWA"
+msgstr "Select all"
+
+msgid "IDS_ST_ACBUTTON_DELETE_SWA"
+msgstr "DELETE"
+
+msgid "IDS_ST_ACBUTTON_CANCEL_SWA"
+msgstr "CANCEL"
+
+msgid "IDS_ST_TPOP_PD_REPORTS_DELETED_SWA"
+msgstr "%d reports deleted."
+
+msgid "IDS_ST_HEADER_SELECT_ITEMS_SWA"
+msgstr "Select items"
+
+msgid "IDS_ST_HEADER_PD_SELECTED_SWA"
+msgstr "%d selected"
+
+msgid "IDS_ST_TPOP_BASIC_PROTECTION_MODE_TURNED_ON_SWA"
+msgstr "Basic protection mode turned on."
+
+msgid "IDS_ST_TPOP_RULE_CREATED_SWA"
+msgstr "Rule created. Custom protection mode turned on."
+
+msgid "IDS_ST_TPOP_ADVANCED_PROTECTION_MODE_TURNED_ON_SWA"
+msgstr "Advanced protection mode turned on."
+
+msgid "IDS_ST_HEADER_DETAILS_SWA"
+msgstr "Details"
+
+msgid "IDS_ST_BODY_STRING_TYPE_SWA"
+msgstr "String type"
+
+msgid "IDS_ST_BODY_SEARCH_TERM_SWA"
+msgstr "Search term"
+
+msgid "IDS_ST_BODY_LEAKS_CAPTURED_SWA"
+msgstr "Leaks captured"
+
+msgid "IDS_ST_SBODY_TOTAL_LEAKS_SWA"
+msgstr "Total leaks"
+
+msgid "IDS_ST_HEADER_RULE_DETAILS_SWA"
+msgstr "Rule details"
+
+msgid "IDS_ST_HEADER_PATTERN_DETAILS_SWA"
+msgstr "Pattern details"
diff --git a/po/nl.po b/po/nl.po
index 413ec19..b9d4df5 100755
--- a/po/nl.po
+++ b/po/nl.po
@@ -31,3 +31,272 @@ msgstr "%d keer"
msgid "IDS_ST_HEADER_PRIVACY_AND_SECURITY_ABB"
msgstr "Privacy en beveiliging"
+msgid "IDS_ST_HEADER_DATA_LEAK_MONITOR_SWA"
+msgstr "Data leak monitor"
+
+msgid "IDS_ST_MBODY_DATA_LEAK_MONITOR_SWA"
+msgstr "Data leak monitor"
+
+msgid "IDS_ST_SBODY_PREVENT_APPS_FROM_LEAKING_YOUR_SENSITIVE_DATA_WITHOUT_AUTHORISATION_SWA"
+msgstr "Prevent apps from leaking your sensitive data without authorisation."
+
+msgid "IDS_ST_SBODY_TO_ALLOW_THIS_FUNCTION_TO_MONITOR_YOUR_PERSONAL_INFORMATION_YOU_NEED_TO_SET_UP_YOUR_PROFILE_IN_CONTACTS_SWA"
+msgstr "To allow this function to monitor your personal information, you need to set up your profile in Contacts."
+
+msgid "IDS_ST_MBODY_PROTECTION_MODE_SWA"
+msgstr "Protection mode"
+
+msgid "IDS_ST_MBODY_BASIC_M_MODE_SWA"
+msgstr "Basic"
+
+msgid "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"
+msgstr "Monitor your main sensitive data to prevent it from being leaked by most apps. This mode is suitable for regular users."
+
+msgid "IDS_ST_MBODY_ADVANCED_M_MODE_SWA"
+msgstr "Advanced"
+
+msgid "IDS_ST_SBODY_SET_UP_STRICT_RULES_TO_PREVENT_DATA_LEAKAGE_SWA"
+msgstr "Set up strict rules to prevent data leakage."
+
+msgid "IDS_ST_SBODY_THIS_MODE_WILL_AFFECT_APP_PERFORMANCE_SWA"
+msgstr "This mode will affect app performance."
+
+msgid "IDS_ST_POP_SOME_APPS_MAY_BE_BLOCKED_SWA"
+msgstr "Some apps may be blocked."
+
+msgid "IDS_ST_HEADER_TURN_ON_ADVANCED_PROTECTION_MODE_SWA"
+msgstr "Turn on Advanced protection mode"
+
+msgid "IDS_ST_MBODY_CUSTOM_M_MODE_SWA"
+msgstr "Custom"
+
+msgid "IDS_ST_SBODY_CHANGE_DEFAULT_RULES_AND_PATTERNS_AND_CREATE_YOUR_OWN_TO_SET_UP_A_CUSTOMISED_PROTECTION_MODE_SWA"
+msgstr "Change default rules and patterns and create your own to set up a customised protection mode."
+
+msgid "IDS_ST_HEADER_REPORTS_SWA"
+msgstr "Reports"
+
+msgid "IDS_ST_MBODY_FULL_REPORTS_SWA"
+msgstr "Full reports"
+
+msgid "IDS_ST_MBODY_APP_RANKINGS_SWA"
+msgstr "App rankings"
+
+msgid "IDS_ST_MBODY_DATA_STATISTICS_SWA"
+msgstr "Data statistics"
+
+msgid "IDS_ST_MBODY_RULES_AND_PATTERNS_SWA"
+msgstr "Rules and patterns"
+
+msgid "IDS_ST_NPBODY_NO_REPORTS_SWA"
+msgstr "No reports"
+
+msgid "IDS_ST_HEADER_SETTINGS_SWA"
+msgstr "Settings"
+
+msgid "IDS_ST_MBODY_KEEP_LOGS_SWA"
+msgstr "Keep logs"
+
+msgid "IDS_LOGS_CLEANED"
+msgstr "Logs cleaned"
+
+msgid "IDS_LOGS_CLEANED_FAILED"
+msgstr "Failed to clean logs"
+
+msgid "IDS_ST_OPT_1_WEEK_SWA"
+msgstr "1 week"
+
+msgid "IDS_ST_OPT_1_DAY_SWA"
+msgstr "1 day"
+
+msgid "IDS_ST_OPT_1_MONTH_SWA"
+msgstr "1 month"
+
+msgid "IDS_ST_HEADER_REPORT_DETAILS_SWA"
+msgstr "Report details"
+
+msgid "IDS_ST_BODY_CATEGORY_C_SWA"
+msgstr "Category:"
+
+msgid "IDS_ST_BODY_APP_C_SWA"
+msgstr "App:"
+
+msgid "IDS_ST_BODY_DESTINATION_C_SWA"
+msgstr "Destination:"
+
+msgid "IDS_ST_BODY_PATTERN_C_SWA"
+msgstr "Pattern:"
+
+msgid "IDS_ST_BODY_DLP_ACTION"
+msgstr "Action"
+
+msgid "IDS_ST_BODY_PACKET_C_SWA"
+msgstr "Packet:"
+
+msgid "IDS_ST_BODY_DLP_ACTION_ALLOW"
+msgstr "Allow"
+
+msgid "IDS_ST_BODY_DLP_ACTION_DENY"
+msgstr "Deny"
+
+msgid "IDS_ST_BODY_DLP_ACTION_SANITIZE"
+msgstr "Sanitize"
+
+msgid "IDS_ST_BODY_DLP_ACTION_ALL_RULES"
+msgstr "All Rules"
+
+msgid "IDS_ST_OPT_QUICK_M_PROTECTION_MODE_SWA"
+msgstr "Quick"
+
+msgid "IDS_ST_SBODY_CREATE_RULES_QUICKLY_AND_EASILY_SWA"
+msgstr "Create rules quickly and easily."
+
+msgid "IDS_ST_MBODY_CUSTOM_SWA"
+msgstr "Custom"
+
+msgid "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"
+msgstr "Create rules from scratch to give you full control of your data protection. Use this option to create non-standard rules."
+
+msgid "IDS_ST_HEADER_CUSTOM_PROTECTION_MODE_SWA"
+msgstr "Custom protection mode"
+
+msgid "IDS_ST_TAB_RULES_SWA"
+msgstr "Rules"
+
+msgid "IDS_ST_TAB_PATTERNS_SWA"
+msgstr "Patterns"
+
+msgid "IDS_ST_HEADER_SELECT_TEMPLATE_SWA"
+msgstr "Select template"
+
+msgid "IDS_ST_HEADER_SELECT_APPS_SWA"
+msgstr "Select apps"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_CHOOSE_ACTION"
+msgstr "Select Action"
+
+msgid "IDS_ST_ACBUTTON_NEXT_SWA"
+msgstr "NEXT"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_OK"
+msgstr "OK"
+
+msgid "IDS_ST_ACBUTTON_DONE_SWA"
+msgstr "DONE"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_RULE_CREATED_MESSAGE"
+msgstr "Rule created."
+
+msgid "IDS_ST_TPOP_RULE_DELETED_SWA"
+msgstr "Rule deleted."
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_DELETE_RULE_POPUP_TITLE"
+msgstr "Delete Rule"
+
+msgid "IDS_ST_HEADER_DELETE_PATTERNS_SWA"
+msgstr "Delete patterns"
+
+msgid "IDS_ST_POP_THIS_RULE_WILL_BE_DELETED_ABB_SWA"
+msgstr "This rule will be deleted."
+
+msgid "IDS_ST_HEADER_CREATE_PATTERN_SWA"
+msgstr "Create pattern"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_PATTERN"
+msgstr "Custom"
+
+msgid "IDS_ST_TPOP_PD_PATTERNS_DELETED_SWA"
+msgstr "%d patterns deleted."
+
+msgid "IDS_ST_OPT_EDIT_SWA"
+msgstr "Edit"
+
+msgid "IDS_ST_OPT_CREATE_SWA"
+msgstr "Create"
+
+msgid "IDS_ST_OPT_ALL_PATTERNS_SWA"
+msgstr "All patterns"
+
+msgid "IDS_ST_BODY_NAME_SWA"
+msgstr "Name"
+
+msgid "IDS_ST_BODY_DESCRIPTION_SWA"
+msgstr "Description"
+
+msgid "IDS_ST_BODY_CATEGORY_SWA"
+msgstr "Category"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CATEGORY_NAME"
+msgstr "Category name"
+
+msgid "IDS_ST_OPT_STRING_MATCH_SWA"
+msgstr "String match"
+
+msgid "IDS_ST_OPT_REGULAR_EXPRESSION_SWA"
+msgstr "Regular expression"
+
+msgid "IDS_ST_POP_PD_PATTERNS_WILL_BE_DELETED_ABB_SWA"
+msgstr "%d patterns will be deleted."
+
+msgid "IDS_ST_POP_THIS_REPORT_WILL_BE_DELETED_ABB_SWA"
+msgstr "This report will be deleted."
+
+msgid "IDS_ST_OPT_DELETE_SWA"
+msgstr "Delete"
+
+msgid "IDS_ST_HEADER_DELETE_REPORT_SWA"
+msgstr "Delete report"
+
+msgid "IDS_ST_POP_PD_REPORTS_WILL_BE_DELETED_ABB_SWA"
+msgstr "%d reports will be deleted."
+
+msgid "IDS_ST_TPOP_1_REPORT_DELETED_SWA"
+msgstr "1 report deleted."
+
+msgid "IDS_ST_MBODY_SELECT_ALL_SWA"
+msgstr "Select all"
+
+msgid "IDS_ST_ACBUTTON_DELETE_SWA"
+msgstr "DELETE"
+
+msgid "IDS_ST_ACBUTTON_CANCEL_SWA"
+msgstr "CANCEL"
+
+msgid "IDS_ST_TPOP_PD_REPORTS_DELETED_SWA"
+msgstr "%d reports deleted."
+
+msgid "IDS_ST_HEADER_SELECT_ITEMS_SWA"
+msgstr "Select items"
+
+msgid "IDS_ST_HEADER_PD_SELECTED_SWA"
+msgstr "%d selected"
+
+msgid "IDS_ST_TPOP_BASIC_PROTECTION_MODE_TURNED_ON_SWA"
+msgstr "Basic protection mode turned on."
+
+msgid "IDS_ST_TPOP_RULE_CREATED_SWA"
+msgstr "Rule created. Custom protection mode turned on."
+
+msgid "IDS_ST_TPOP_ADVANCED_PROTECTION_MODE_TURNED_ON_SWA"
+msgstr "Advanced protection mode turned on."
+
+msgid "IDS_ST_HEADER_DETAILS_SWA"
+msgstr "Details"
+
+msgid "IDS_ST_BODY_STRING_TYPE_SWA"
+msgstr "String type"
+
+msgid "IDS_ST_BODY_SEARCH_TERM_SWA"
+msgstr "Search term"
+
+msgid "IDS_ST_BODY_LEAKS_CAPTURED_SWA"
+msgstr "Leaks captured"
+
+msgid "IDS_ST_SBODY_TOTAL_LEAKS_SWA"
+msgstr "Total leaks"
+
+msgid "IDS_ST_HEADER_RULE_DETAILS_SWA"
+msgstr "Rule details"
+
+msgid "IDS_ST_HEADER_PATTERN_DETAILS_SWA"
+msgstr "Pattern details"
diff --git a/po/pl.po b/po/pl.po
index 64c26b2..2d684ac 100755
--- a/po/pl.po
+++ b/po/pl.po
@@ -31,3 +31,272 @@ msgstr "%d razy"
msgid "IDS_ST_HEADER_PRIVACY_AND_SECURITY_ABB"
msgstr "Prywatność i bezpiecz."
+msgid "IDS_ST_HEADER_DATA_LEAK_MONITOR_SWA"
+msgstr "Data leak monitor"
+
+msgid "IDS_ST_MBODY_DATA_LEAK_MONITOR_SWA"
+msgstr "Data leak monitor"
+
+msgid "IDS_ST_SBODY_PREVENT_APPS_FROM_LEAKING_YOUR_SENSITIVE_DATA_WITHOUT_AUTHORISATION_SWA"
+msgstr "Prevent apps from leaking your sensitive data without authorisation."
+
+msgid "IDS_ST_SBODY_TO_ALLOW_THIS_FUNCTION_TO_MONITOR_YOUR_PERSONAL_INFORMATION_YOU_NEED_TO_SET_UP_YOUR_PROFILE_IN_CONTACTS_SWA"
+msgstr "To allow this function to monitor your personal information, you need to set up your profile in Contacts."
+
+msgid "IDS_ST_MBODY_PROTECTION_MODE_SWA"
+msgstr "Protection mode"
+
+msgid "IDS_ST_MBODY_BASIC_M_MODE_SWA"
+msgstr "Basic"
+
+msgid "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"
+msgstr "Monitor your main sensitive data to prevent it from being leaked by most apps. This mode is suitable for regular users."
+
+msgid "IDS_ST_MBODY_ADVANCED_M_MODE_SWA"
+msgstr "Advanced"
+
+msgid "IDS_ST_SBODY_SET_UP_STRICT_RULES_TO_PREVENT_DATA_LEAKAGE_SWA"
+msgstr "Set up strict rules to prevent data leakage."
+
+msgid "IDS_ST_SBODY_THIS_MODE_WILL_AFFECT_APP_PERFORMANCE_SWA"
+msgstr "This mode will affect app performance."
+
+msgid "IDS_ST_POP_SOME_APPS_MAY_BE_BLOCKED_SWA"
+msgstr "Some apps may be blocked."
+
+msgid "IDS_ST_HEADER_TURN_ON_ADVANCED_PROTECTION_MODE_SWA"
+msgstr "Turn on Advanced protection mode"
+
+msgid "IDS_ST_MBODY_CUSTOM_M_MODE_SWA"
+msgstr "Custom"
+
+msgid "IDS_ST_SBODY_CHANGE_DEFAULT_RULES_AND_PATTERNS_AND_CREATE_YOUR_OWN_TO_SET_UP_A_CUSTOMISED_PROTECTION_MODE_SWA"
+msgstr "Change default rules and patterns and create your own to set up a customised protection mode."
+
+msgid "IDS_ST_HEADER_REPORTS_SWA"
+msgstr "Reports"
+
+msgid "IDS_ST_MBODY_FULL_REPORTS_SWA"
+msgstr "Full reports"
+
+msgid "IDS_ST_MBODY_APP_RANKINGS_SWA"
+msgstr "App rankings"
+
+msgid "IDS_ST_MBODY_DATA_STATISTICS_SWA"
+msgstr "Data statistics"
+
+msgid "IDS_ST_MBODY_RULES_AND_PATTERNS_SWA"
+msgstr "Rules and patterns"
+
+msgid "IDS_ST_NPBODY_NO_REPORTS_SWA"
+msgstr "No reports"
+
+msgid "IDS_ST_HEADER_SETTINGS_SWA"
+msgstr "Settings"
+
+msgid "IDS_ST_MBODY_KEEP_LOGS_SWA"
+msgstr "Keep logs"
+
+msgid "IDS_LOGS_CLEANED"
+msgstr "Logs cleaned"
+
+msgid "IDS_LOGS_CLEANED_FAILED"
+msgstr "Failed to clean logs"
+
+msgid "IDS_ST_OPT_1_WEEK_SWA"
+msgstr "1 week"
+
+msgid "IDS_ST_OPT_1_DAY_SWA"
+msgstr "1 day"
+
+msgid "IDS_ST_OPT_1_MONTH_SWA"
+msgstr "1 month"
+
+msgid "IDS_ST_HEADER_REPORT_DETAILS_SWA"
+msgstr "Report details"
+
+msgid "IDS_ST_BODY_CATEGORY_C_SWA"
+msgstr "Category:"
+
+msgid "IDS_ST_BODY_APP_C_SWA"
+msgstr "App:"
+
+msgid "IDS_ST_BODY_DESTINATION_C_SWA"
+msgstr "Destination:"
+
+msgid "IDS_ST_BODY_PATTERN_C_SWA"
+msgstr "Pattern:"
+
+msgid "IDS_ST_BODY_DLP_ACTION"
+msgstr "Action"
+
+msgid "IDS_ST_BODY_PACKET_C_SWA"
+msgstr "Packet:"
+
+msgid "IDS_ST_BODY_DLP_ACTION_ALLOW"
+msgstr "Allow"
+
+msgid "IDS_ST_BODY_DLP_ACTION_DENY"
+msgstr "Deny"
+
+msgid "IDS_ST_BODY_DLP_ACTION_SANITIZE"
+msgstr "Sanitize"
+
+msgid "IDS_ST_BODY_DLP_ACTION_ALL_RULES"
+msgstr "All Rules"
+
+msgid "IDS_ST_OPT_QUICK_M_PROTECTION_MODE_SWA"
+msgstr "Quick"
+
+msgid "IDS_ST_SBODY_CREATE_RULES_QUICKLY_AND_EASILY_SWA"
+msgstr "Create rules quickly and easily."
+
+msgid "IDS_ST_MBODY_CUSTOM_SWA"
+msgstr "Custom"
+
+msgid "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"
+msgstr "Create rules from scratch to give you full control of your data protection. Use this option to create non-standard rules."
+
+msgid "IDS_ST_HEADER_CUSTOM_PROTECTION_MODE_SWA"
+msgstr "Custom protection mode"
+
+msgid "IDS_ST_TAB_RULES_SWA"
+msgstr "Rules"
+
+msgid "IDS_ST_TAB_PATTERNS_SWA"
+msgstr "Patterns"
+
+msgid "IDS_ST_HEADER_SELECT_TEMPLATE_SWA"
+msgstr "Select template"
+
+msgid "IDS_ST_HEADER_SELECT_APPS_SWA"
+msgstr "Select apps"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_CHOOSE_ACTION"
+msgstr "Select Action"
+
+msgid "IDS_ST_ACBUTTON_NEXT_SWA"
+msgstr "NEXT"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_OK"
+msgstr "OK"
+
+msgid "IDS_ST_ACBUTTON_DONE_SWA"
+msgstr "DONE"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_RULE_CREATED_MESSAGE"
+msgstr "Rule created."
+
+msgid "IDS_ST_TPOP_RULE_DELETED_SWA"
+msgstr "Rule deleted."
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_DELETE_RULE_POPUP_TITLE"
+msgstr "Delete Rule"
+
+msgid "IDS_ST_HEADER_DELETE_PATTERNS_SWA"
+msgstr "Delete patterns"
+
+msgid "IDS_ST_POP_THIS_RULE_WILL_BE_DELETED_ABB_SWA"
+msgstr "This rule will be deleted."
+
+msgid "IDS_ST_HEADER_CREATE_PATTERN_SWA"
+msgstr "Create pattern"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_PATTERN"
+msgstr "Custom"
+
+msgid "IDS_ST_TPOP_PD_PATTERNS_DELETED_SWA"
+msgstr "%d patterns deleted."
+
+msgid "IDS_ST_OPT_EDIT_SWA"
+msgstr "Edit"
+
+msgid "IDS_ST_OPT_CREATE_SWA"
+msgstr "Create"
+
+msgid "IDS_ST_OPT_ALL_PATTERNS_SWA"
+msgstr "All patterns"
+
+msgid "IDS_ST_BODY_NAME_SWA"
+msgstr "Name"
+
+msgid "IDS_ST_BODY_DESCRIPTION_SWA"
+msgstr "Description"
+
+msgid "IDS_ST_BODY_CATEGORY_SWA"
+msgstr "Category"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CATEGORY_NAME"
+msgstr "Category name"
+
+msgid "IDS_ST_OPT_STRING_MATCH_SWA"
+msgstr "String match"
+
+msgid "IDS_ST_OPT_REGULAR_EXPRESSION_SWA"
+msgstr "Regular expression"
+
+msgid "IDS_ST_POP_PD_PATTERNS_WILL_BE_DELETED_ABB_SWA"
+msgstr "%d patterns will be deleted."
+
+msgid "IDS_ST_POP_THIS_REPORT_WILL_BE_DELETED_ABB_SWA"
+msgstr "This report will be deleted."
+
+msgid "IDS_ST_OPT_DELETE_SWA"
+msgstr "Delete"
+
+msgid "IDS_ST_HEADER_DELETE_REPORT_SWA"
+msgstr "Delete report"
+
+msgid "IDS_ST_POP_PD_REPORTS_WILL_BE_DELETED_ABB_SWA"
+msgstr "%d reports will be deleted."
+
+msgid "IDS_ST_TPOP_1_REPORT_DELETED_SWA"
+msgstr "1 report deleted."
+
+msgid "IDS_ST_MBODY_SELECT_ALL_SWA"
+msgstr "Select all"
+
+msgid "IDS_ST_ACBUTTON_DELETE_SWA"
+msgstr "DELETE"
+
+msgid "IDS_ST_ACBUTTON_CANCEL_SWA"
+msgstr "CANCEL"
+
+msgid "IDS_ST_TPOP_PD_REPORTS_DELETED_SWA"
+msgstr "%d reports deleted."
+
+msgid "IDS_ST_HEADER_SELECT_ITEMS_SWA"
+msgstr "Select items"
+
+msgid "IDS_ST_HEADER_PD_SELECTED_SWA"
+msgstr "%d selected"
+
+msgid "IDS_ST_TPOP_BASIC_PROTECTION_MODE_TURNED_ON_SWA"
+msgstr "Basic protection mode turned on."
+
+msgid "IDS_ST_TPOP_RULE_CREATED_SWA"
+msgstr "Rule created. Custom protection mode turned on."
+
+msgid "IDS_ST_TPOP_ADVANCED_PROTECTION_MODE_TURNED_ON_SWA"
+msgstr "Advanced protection mode turned on."
+
+msgid "IDS_ST_HEADER_DETAILS_SWA"
+msgstr "Details"
+
+msgid "IDS_ST_BODY_STRING_TYPE_SWA"
+msgstr "String type"
+
+msgid "IDS_ST_BODY_SEARCH_TERM_SWA"
+msgstr "Search term"
+
+msgid "IDS_ST_BODY_LEAKS_CAPTURED_SWA"
+msgstr "Leaks captured"
+
+msgid "IDS_ST_SBODY_TOTAL_LEAKS_SWA"
+msgstr "Total leaks"
+
+msgid "IDS_ST_HEADER_RULE_DETAILS_SWA"
+msgstr "Rule details"
+
+msgid "IDS_ST_HEADER_PATTERN_DETAILS_SWA"
+msgstr "Pattern details"
diff --git a/po/pt_BR.po b/po/pt_BR.po
index 3f98674..300aa8e 100755
--- a/po/pt_BR.po
+++ b/po/pt_BR.po
@@ -31,3 +31,272 @@ msgstr "%d vezes"
msgid "IDS_ST_HEADER_PRIVACY_AND_SECURITY_ABB"
msgstr "Privacid. e segurança"
+msgid "IDS_ST_HEADER_DATA_LEAK_MONITOR_SWA"
+msgstr "Data leak monitor"
+
+msgid "IDS_ST_MBODY_DATA_LEAK_MONITOR_SWA"
+msgstr "Data leak monitor"
+
+msgid "IDS_ST_SBODY_PREVENT_APPS_FROM_LEAKING_YOUR_SENSITIVE_DATA_WITHOUT_AUTHORISATION_SWA"
+msgstr "Prevent apps from leaking your sensitive data without authorisation."
+
+msgid "IDS_ST_SBODY_TO_ALLOW_THIS_FUNCTION_TO_MONITOR_YOUR_PERSONAL_INFORMATION_YOU_NEED_TO_SET_UP_YOUR_PROFILE_IN_CONTACTS_SWA"
+msgstr "To allow this function to monitor your personal information, you need to set up your profile in Contacts."
+
+msgid "IDS_ST_MBODY_PROTECTION_MODE_SWA"
+msgstr "Protection mode"
+
+msgid "IDS_ST_MBODY_BASIC_M_MODE_SWA"
+msgstr "Basic"
+
+msgid "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"
+msgstr "Monitor your main sensitive data to prevent it from being leaked by most apps. This mode is suitable for regular users."
+
+msgid "IDS_ST_MBODY_ADVANCED_M_MODE_SWA"
+msgstr "Advanced"
+
+msgid "IDS_ST_SBODY_SET_UP_STRICT_RULES_TO_PREVENT_DATA_LEAKAGE_SWA"
+msgstr "Set up strict rules to prevent data leakage."
+
+msgid "IDS_ST_SBODY_THIS_MODE_WILL_AFFECT_APP_PERFORMANCE_SWA"
+msgstr "This mode will affect app performance."
+
+msgid "IDS_ST_POP_SOME_APPS_MAY_BE_BLOCKED_SWA"
+msgstr "Some apps may be blocked."
+
+msgid "IDS_ST_HEADER_TURN_ON_ADVANCED_PROTECTION_MODE_SWA"
+msgstr "Turn on Advanced protection mode"
+
+msgid "IDS_ST_MBODY_CUSTOM_M_MODE_SWA"
+msgstr "Custom"
+
+msgid "IDS_ST_SBODY_CHANGE_DEFAULT_RULES_AND_PATTERNS_AND_CREATE_YOUR_OWN_TO_SET_UP_A_CUSTOMISED_PROTECTION_MODE_SWA"
+msgstr "Change default rules and patterns and create your own to set up a customised protection mode."
+
+msgid "IDS_ST_HEADER_REPORTS_SWA"
+msgstr "Reports"
+
+msgid "IDS_ST_MBODY_FULL_REPORTS_SWA"
+msgstr "Full reports"
+
+msgid "IDS_ST_MBODY_APP_RANKINGS_SWA"
+msgstr "App rankings"
+
+msgid "IDS_ST_MBODY_DATA_STATISTICS_SWA"
+msgstr "Data statistics"
+
+msgid "IDS_ST_MBODY_RULES_AND_PATTERNS_SWA"
+msgstr "Rules and patterns"
+
+msgid "IDS_ST_NPBODY_NO_REPORTS_SWA"
+msgstr "No reports"
+
+msgid "IDS_ST_HEADER_SETTINGS_SWA"
+msgstr "Settings"
+
+msgid "IDS_ST_MBODY_KEEP_LOGS_SWA"
+msgstr "Keep logs"
+
+msgid "IDS_LOGS_CLEANED"
+msgstr "Logs cleaned"
+
+msgid "IDS_LOGS_CLEANED_FAILED"
+msgstr "Failed to clean logs"
+
+msgid "IDS_ST_OPT_1_WEEK_SWA"
+msgstr "1 week"
+
+msgid "IDS_ST_OPT_1_DAY_SWA"
+msgstr "1 day"
+
+msgid "IDS_ST_OPT_1_MONTH_SWA"
+msgstr "1 month"
+
+msgid "IDS_ST_HEADER_REPORT_DETAILS_SWA"
+msgstr "Report details"
+
+msgid "IDS_ST_BODY_CATEGORY_C_SWA"
+msgstr "Category:"
+
+msgid "IDS_ST_BODY_APP_C_SWA"
+msgstr "App:"
+
+msgid "IDS_ST_BODY_DESTINATION_C_SWA"
+msgstr "Destination:"
+
+msgid "IDS_ST_BODY_PATTERN_C_SWA"
+msgstr "Pattern:"
+
+msgid "IDS_ST_BODY_DLP_ACTION"
+msgstr "Action"
+
+msgid "IDS_ST_BODY_PACKET_C_SWA"
+msgstr "Packet:"
+
+msgid "IDS_ST_BODY_DLP_ACTION_ALLOW"
+msgstr "Allow"
+
+msgid "IDS_ST_BODY_DLP_ACTION_DENY"
+msgstr "Deny"
+
+msgid "IDS_ST_BODY_DLP_ACTION_SANITIZE"
+msgstr "Sanitize"
+
+msgid "IDS_ST_BODY_DLP_ACTION_ALL_RULES"
+msgstr "All Rules"
+
+msgid "IDS_ST_OPT_QUICK_M_PROTECTION_MODE_SWA"
+msgstr "Quick"
+
+msgid "IDS_ST_SBODY_CREATE_RULES_QUICKLY_AND_EASILY_SWA"
+msgstr "Create rules quickly and easily."
+
+msgid "IDS_ST_MBODY_CUSTOM_SWA"
+msgstr "Custom"
+
+msgid "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"
+msgstr "Create rules from scratch to give you full control of your data protection. Use this option to create non-standard rules."
+
+msgid "IDS_ST_HEADER_CUSTOM_PROTECTION_MODE_SWA"
+msgstr "Custom protection mode"
+
+msgid "IDS_ST_TAB_RULES_SWA"
+msgstr "Rules"
+
+msgid "IDS_ST_TAB_PATTERNS_SWA"
+msgstr "Patterns"
+
+msgid "IDS_ST_HEADER_SELECT_TEMPLATE_SWA"
+msgstr "Select template"
+
+msgid "IDS_ST_HEADER_SELECT_APPS_SWA"
+msgstr "Select apps"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_CHOOSE_ACTION"
+msgstr "Select Action"
+
+msgid "IDS_ST_ACBUTTON_NEXT_SWA"
+msgstr "NEXT"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_OK"
+msgstr "OK"
+
+msgid "IDS_ST_ACBUTTON_DONE_SWA"
+msgstr "DONE"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_RULE_CREATED_MESSAGE"
+msgstr "Rule created."
+
+msgid "IDS_ST_TPOP_RULE_DELETED_SWA"
+msgstr "Rule deleted."
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_DELETE_RULE_POPUP_TITLE"
+msgstr "Delete Rule"
+
+msgid "IDS_ST_HEADER_DELETE_PATTERNS_SWA"
+msgstr "Delete patterns"
+
+msgid "IDS_ST_POP_THIS_RULE_WILL_BE_DELETED_ABB_SWA"
+msgstr "This rule will be deleted."
+
+msgid "IDS_ST_HEADER_CREATE_PATTERN_SWA"
+msgstr "Create pattern"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_PATTERN"
+msgstr "Custom"
+
+msgid "IDS_ST_TPOP_PD_PATTERNS_DELETED_SWA"
+msgstr "%d patterns deleted."
+
+msgid "IDS_ST_OPT_EDIT_SWA"
+msgstr "Edit"
+
+msgid "IDS_ST_OPT_CREATE_SWA"
+msgstr "Create"
+
+msgid "IDS_ST_OPT_ALL_PATTERNS_SWA"
+msgstr "All patterns"
+
+msgid "IDS_ST_BODY_NAME_SWA"
+msgstr "Name"
+
+msgid "IDS_ST_BODY_DESCRIPTION_SWA"
+msgstr "Description"
+
+msgid "IDS_ST_BODY_CATEGORY_SWA"
+msgstr "Category"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CATEGORY_NAME"
+msgstr "Category name"
+
+msgid "IDS_ST_OPT_STRING_MATCH_SWA"
+msgstr "String match"
+
+msgid "IDS_ST_OPT_REGULAR_EXPRESSION_SWA"
+msgstr "Regular expression"
+
+msgid "IDS_ST_POP_PD_PATTERNS_WILL_BE_DELETED_ABB_SWA"
+msgstr "%d patterns will be deleted."
+
+msgid "IDS_ST_POP_THIS_REPORT_WILL_BE_DELETED_ABB_SWA"
+msgstr "This report will be deleted."
+
+msgid "IDS_ST_OPT_DELETE_SWA"
+msgstr "Delete"
+
+msgid "IDS_ST_HEADER_DELETE_REPORT_SWA"
+msgstr "Delete report"
+
+msgid "IDS_ST_POP_PD_REPORTS_WILL_BE_DELETED_ABB_SWA"
+msgstr "%d reports will be deleted."
+
+msgid "IDS_ST_TPOP_1_REPORT_DELETED_SWA"
+msgstr "1 report deleted."
+
+msgid "IDS_ST_MBODY_SELECT_ALL_SWA"
+msgstr "Select all"
+
+msgid "IDS_ST_ACBUTTON_DELETE_SWA"
+msgstr "DELETE"
+
+msgid "IDS_ST_ACBUTTON_CANCEL_SWA"
+msgstr "CANCEL"
+
+msgid "IDS_ST_TPOP_PD_REPORTS_DELETED_SWA"
+msgstr "%d reports deleted."
+
+msgid "IDS_ST_HEADER_SELECT_ITEMS_SWA"
+msgstr "Select items"
+
+msgid "IDS_ST_HEADER_PD_SELECTED_SWA"
+msgstr "%d selected"
+
+msgid "IDS_ST_TPOP_BASIC_PROTECTION_MODE_TURNED_ON_SWA"
+msgstr "Basic protection mode turned on."
+
+msgid "IDS_ST_TPOP_RULE_CREATED_SWA"
+msgstr "Rule created. Custom protection mode turned on."
+
+msgid "IDS_ST_TPOP_ADVANCED_PROTECTION_MODE_TURNED_ON_SWA"
+msgstr "Advanced protection mode turned on."
+
+msgid "IDS_ST_HEADER_DETAILS_SWA"
+msgstr "Details"
+
+msgid "IDS_ST_BODY_STRING_TYPE_SWA"
+msgstr "String type"
+
+msgid "IDS_ST_BODY_SEARCH_TERM_SWA"
+msgstr "Search term"
+
+msgid "IDS_ST_BODY_LEAKS_CAPTURED_SWA"
+msgstr "Leaks captured"
+
+msgid "IDS_ST_SBODY_TOTAL_LEAKS_SWA"
+msgstr "Total leaks"
+
+msgid "IDS_ST_HEADER_RULE_DETAILS_SWA"
+msgstr "Rule details"
+
+msgid "IDS_ST_HEADER_PATTERN_DETAILS_SWA"
+msgstr "Pattern details"
diff --git a/po/pt_PT.po b/po/pt_PT.po
index ea115dc..ec8e8b3 100755
--- a/po/pt_PT.po
+++ b/po/pt_PT.po
@@ -31,3 +31,272 @@ msgstr "%d vezes"
msgid "IDS_ST_HEADER_PRIVACY_AND_SECURITY_ABB"
msgstr "Privacidade e segurança"
+msgid "IDS_ST_HEADER_DATA_LEAK_MONITOR_SWA"
+msgstr "Data leak monitor"
+
+msgid "IDS_ST_MBODY_DATA_LEAK_MONITOR_SWA"
+msgstr "Data leak monitor"
+
+msgid "IDS_ST_SBODY_PREVENT_APPS_FROM_LEAKING_YOUR_SENSITIVE_DATA_WITHOUT_AUTHORISATION_SWA"
+msgstr "Prevent apps from leaking your sensitive data without authorisation."
+
+msgid "IDS_ST_SBODY_TO_ALLOW_THIS_FUNCTION_TO_MONITOR_YOUR_PERSONAL_INFORMATION_YOU_NEED_TO_SET_UP_YOUR_PROFILE_IN_CONTACTS_SWA"
+msgstr "To allow this function to monitor your personal information, you need to set up your profile in Contacts."
+
+msgid "IDS_ST_MBODY_PROTECTION_MODE_SWA"
+msgstr "Protection mode"
+
+msgid "IDS_ST_MBODY_BASIC_M_MODE_SWA"
+msgstr "Basic"
+
+msgid "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"
+msgstr "Monitor your main sensitive data to prevent it from being leaked by most apps. This mode is suitable for regular users."
+
+msgid "IDS_ST_MBODY_ADVANCED_M_MODE_SWA"
+msgstr "Advanced"
+
+msgid "IDS_ST_SBODY_SET_UP_STRICT_RULES_TO_PREVENT_DATA_LEAKAGE_SWA"
+msgstr "Set up strict rules to prevent data leakage."
+
+msgid "IDS_ST_SBODY_THIS_MODE_WILL_AFFECT_APP_PERFORMANCE_SWA"
+msgstr "This mode will affect app performance."
+
+msgid "IDS_ST_POP_SOME_APPS_MAY_BE_BLOCKED_SWA"
+msgstr "Some apps may be blocked."
+
+msgid "IDS_ST_HEADER_TURN_ON_ADVANCED_PROTECTION_MODE_SWA"
+msgstr "Turn on Advanced protection mode"
+
+msgid "IDS_ST_MBODY_CUSTOM_M_MODE_SWA"
+msgstr "Custom"
+
+msgid "IDS_ST_SBODY_CHANGE_DEFAULT_RULES_AND_PATTERNS_AND_CREATE_YOUR_OWN_TO_SET_UP_A_CUSTOMISED_PROTECTION_MODE_SWA"
+msgstr "Change default rules and patterns and create your own to set up a customised protection mode."
+
+msgid "IDS_ST_HEADER_REPORTS_SWA"
+msgstr "Reports"
+
+msgid "IDS_ST_MBODY_FULL_REPORTS_SWA"
+msgstr "Full reports"
+
+msgid "IDS_ST_MBODY_APP_RANKINGS_SWA"
+msgstr "App rankings"
+
+msgid "IDS_ST_MBODY_DATA_STATISTICS_SWA"
+msgstr "Data statistics"
+
+msgid "IDS_ST_MBODY_RULES_AND_PATTERNS_SWA"
+msgstr "Rules and patterns"
+
+msgid "IDS_ST_NPBODY_NO_REPORTS_SWA"
+msgstr "No reports"
+
+msgid "IDS_ST_HEADER_SETTINGS_SWA"
+msgstr "Settings"
+
+msgid "IDS_ST_MBODY_KEEP_LOGS_SWA"
+msgstr "Keep logs"
+
+msgid "IDS_LOGS_CLEANED"
+msgstr "Logs cleaned"
+
+msgid "IDS_LOGS_CLEANED_FAILED"
+msgstr "Failed to clean logs"
+
+msgid "IDS_ST_OPT_1_WEEK_SWA"
+msgstr "1 week"
+
+msgid "IDS_ST_OPT_1_DAY_SWA"
+msgstr "1 day"
+
+msgid "IDS_ST_OPT_1_MONTH_SWA"
+msgstr "1 month"
+
+msgid "IDS_ST_HEADER_REPORT_DETAILS_SWA"
+msgstr "Report details"
+
+msgid "IDS_ST_BODY_CATEGORY_C_SWA"
+msgstr "Category:"
+
+msgid "IDS_ST_BODY_APP_C_SWA"
+msgstr "App:"
+
+msgid "IDS_ST_BODY_DESTINATION_C_SWA"
+msgstr "Destination:"
+
+msgid "IDS_ST_BODY_PATTERN_C_SWA"
+msgstr "Pattern:"
+
+msgid "IDS_ST_BODY_DLP_ACTION"
+msgstr "Action"
+
+msgid "IDS_ST_BODY_PACKET_C_SWA"
+msgstr "Packet:"
+
+msgid "IDS_ST_BODY_DLP_ACTION_ALLOW"
+msgstr "Allow"
+
+msgid "IDS_ST_BODY_DLP_ACTION_DENY"
+msgstr "Deny"
+
+msgid "IDS_ST_BODY_DLP_ACTION_SANITIZE"
+msgstr "Sanitize"
+
+msgid "IDS_ST_BODY_DLP_ACTION_ALL_RULES"
+msgstr "All Rules"
+
+msgid "IDS_ST_OPT_QUICK_M_PROTECTION_MODE_SWA"
+msgstr "Quick"
+
+msgid "IDS_ST_SBODY_CREATE_RULES_QUICKLY_AND_EASILY_SWA"
+msgstr "Create rules quickly and easily."
+
+msgid "IDS_ST_MBODY_CUSTOM_SWA"
+msgstr "Custom"
+
+msgid "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"
+msgstr "Create rules from scratch to give you full control of your data protection. Use this option to create non-standard rules."
+
+msgid "IDS_ST_HEADER_CUSTOM_PROTECTION_MODE_SWA"
+msgstr "Custom protection mode"
+
+msgid "IDS_ST_TAB_RULES_SWA"
+msgstr "Rules"
+
+msgid "IDS_ST_TAB_PATTERNS_SWA"
+msgstr "Patterns"
+
+msgid "IDS_ST_HEADER_SELECT_TEMPLATE_SWA"
+msgstr "Select template"
+
+msgid "IDS_ST_HEADER_SELECT_APPS_SWA"
+msgstr "Select apps"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_CHOOSE_ACTION"
+msgstr "Select Action"
+
+msgid "IDS_ST_ACBUTTON_NEXT_SWA"
+msgstr "NEXT"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_OK"
+msgstr "OK"
+
+msgid "IDS_ST_ACBUTTON_DONE_SWA"
+msgstr "DONE"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_RULE_CREATED_MESSAGE"
+msgstr "Rule created."
+
+msgid "IDS_ST_TPOP_RULE_DELETED_SWA"
+msgstr "Rule deleted."
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_DELETE_RULE_POPUP_TITLE"
+msgstr "Delete Rule"
+
+msgid "IDS_ST_HEADER_DELETE_PATTERNS_SWA"
+msgstr "Delete patterns"
+
+msgid "IDS_ST_POP_THIS_RULE_WILL_BE_DELETED_ABB_SWA"
+msgstr "This rule will be deleted."
+
+msgid "IDS_ST_HEADER_CREATE_PATTERN_SWA"
+msgstr "Create pattern"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_PATTERN"
+msgstr "Custom"
+
+msgid "IDS_ST_TPOP_PD_PATTERNS_DELETED_SWA"
+msgstr "%d patterns deleted."
+
+msgid "IDS_ST_OPT_EDIT_SWA"
+msgstr "Edit"
+
+msgid "IDS_ST_OPT_CREATE_SWA"
+msgstr "Create"
+
+msgid "IDS_ST_OPT_ALL_PATTERNS_SWA"
+msgstr "All patterns"
+
+msgid "IDS_ST_BODY_NAME_SWA"
+msgstr "Name"
+
+msgid "IDS_ST_BODY_DESCRIPTION_SWA"
+msgstr "Description"
+
+msgid "IDS_ST_BODY_CATEGORY_SWA"
+msgstr "Category"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CATEGORY_NAME"
+msgstr "Category name"
+
+msgid "IDS_ST_OPT_STRING_MATCH_SWA"
+msgstr "String match"
+
+msgid "IDS_ST_OPT_REGULAR_EXPRESSION_SWA"
+msgstr "Regular expression"
+
+msgid "IDS_ST_POP_PD_PATTERNS_WILL_BE_DELETED_ABB_SWA"
+msgstr "%d patterns will be deleted."
+
+msgid "IDS_ST_POP_THIS_REPORT_WILL_BE_DELETED_ABB_SWA"
+msgstr "This report will be deleted."
+
+msgid "IDS_ST_OPT_DELETE_SWA"
+msgstr "Delete"
+
+msgid "IDS_ST_HEADER_DELETE_REPORT_SWA"
+msgstr "Delete report"
+
+msgid "IDS_ST_POP_PD_REPORTS_WILL_BE_DELETED_ABB_SWA"
+msgstr "%d reports will be deleted."
+
+msgid "IDS_ST_TPOP_1_REPORT_DELETED_SWA"
+msgstr "1 report deleted."
+
+msgid "IDS_ST_MBODY_SELECT_ALL_SWA"
+msgstr "Select all"
+
+msgid "IDS_ST_ACBUTTON_DELETE_SWA"
+msgstr "DELETE"
+
+msgid "IDS_ST_ACBUTTON_CANCEL_SWA"
+msgstr "CANCEL"
+
+msgid "IDS_ST_TPOP_PD_REPORTS_DELETED_SWA"
+msgstr "%d reports deleted."
+
+msgid "IDS_ST_HEADER_SELECT_ITEMS_SWA"
+msgstr "Select items"
+
+msgid "IDS_ST_HEADER_PD_SELECTED_SWA"
+msgstr "%d selected"
+
+msgid "IDS_ST_TPOP_BASIC_PROTECTION_MODE_TURNED_ON_SWA"
+msgstr "Basic protection mode turned on."
+
+msgid "IDS_ST_TPOP_RULE_CREATED_SWA"
+msgstr "Rule created. Custom protection mode turned on."
+
+msgid "IDS_ST_TPOP_ADVANCED_PROTECTION_MODE_TURNED_ON_SWA"
+msgstr "Advanced protection mode turned on."
+
+msgid "IDS_ST_HEADER_DETAILS_SWA"
+msgstr "Details"
+
+msgid "IDS_ST_BODY_STRING_TYPE_SWA"
+msgstr "String type"
+
+msgid "IDS_ST_BODY_SEARCH_TERM_SWA"
+msgstr "Search term"
+
+msgid "IDS_ST_BODY_LEAKS_CAPTURED_SWA"
+msgstr "Leaks captured"
+
+msgid "IDS_ST_SBODY_TOTAL_LEAKS_SWA"
+msgstr "Total leaks"
+
+msgid "IDS_ST_HEADER_RULE_DETAILS_SWA"
+msgstr "Rule details"
+
+msgid "IDS_ST_HEADER_PATTERN_DETAILS_SWA"
+msgstr "Pattern details"
diff --git a/po/ro.po b/po/ro.po
index 5ffe182..f51f907 100755
--- a/po/ro.po
+++ b/po/ro.po
@@ -31,3 +31,272 @@ msgstr "%d ori"
msgid "IDS_ST_HEADER_PRIVACY_AND_SECURITY_ABB"
msgstr "Confid. și securitate"
+msgid "IDS_ST_HEADER_DATA_LEAK_MONITOR_SWA"
+msgstr "Data leak monitor"
+
+msgid "IDS_ST_MBODY_DATA_LEAK_MONITOR_SWA"
+msgstr "Data leak monitor"
+
+msgid "IDS_ST_SBODY_PREVENT_APPS_FROM_LEAKING_YOUR_SENSITIVE_DATA_WITHOUT_AUTHORISATION_SWA"
+msgstr "Prevent apps from leaking your sensitive data without authorisation."
+
+msgid "IDS_ST_SBODY_TO_ALLOW_THIS_FUNCTION_TO_MONITOR_YOUR_PERSONAL_INFORMATION_YOU_NEED_TO_SET_UP_YOUR_PROFILE_IN_CONTACTS_SWA"
+msgstr "To allow this function to monitor your personal information, you need to set up your profile in Contacts."
+
+msgid "IDS_ST_MBODY_PROTECTION_MODE_SWA"
+msgstr "Protection mode"
+
+msgid "IDS_ST_MBODY_BASIC_M_MODE_SWA"
+msgstr "Basic"
+
+msgid "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"
+msgstr "Monitor your main sensitive data to prevent it from being leaked by most apps. This mode is suitable for regular users."
+
+msgid "IDS_ST_MBODY_ADVANCED_M_MODE_SWA"
+msgstr "Advanced"
+
+msgid "IDS_ST_SBODY_SET_UP_STRICT_RULES_TO_PREVENT_DATA_LEAKAGE_SWA"
+msgstr "Set up strict rules to prevent data leakage."
+
+msgid "IDS_ST_SBODY_THIS_MODE_WILL_AFFECT_APP_PERFORMANCE_SWA"
+msgstr "This mode will affect app performance."
+
+msgid "IDS_ST_POP_SOME_APPS_MAY_BE_BLOCKED_SWA"
+msgstr "Some apps may be blocked."
+
+msgid "IDS_ST_HEADER_TURN_ON_ADVANCED_PROTECTION_MODE_SWA"
+msgstr "Turn on Advanced protection mode"
+
+msgid "IDS_ST_MBODY_CUSTOM_M_MODE_SWA"
+msgstr "Custom"
+
+msgid "IDS_ST_SBODY_CHANGE_DEFAULT_RULES_AND_PATTERNS_AND_CREATE_YOUR_OWN_TO_SET_UP_A_CUSTOMISED_PROTECTION_MODE_SWA"
+msgstr "Change default rules and patterns and create your own to set up a customised protection mode."
+
+msgid "IDS_ST_HEADER_REPORTS_SWA"
+msgstr "Reports"
+
+msgid "IDS_ST_MBODY_FULL_REPORTS_SWA"
+msgstr "Full reports"
+
+msgid "IDS_ST_MBODY_APP_RANKINGS_SWA"
+msgstr "App rankings"
+
+msgid "IDS_ST_MBODY_DATA_STATISTICS_SWA"
+msgstr "Data statistics"
+
+msgid "IDS_ST_MBODY_RULES_AND_PATTERNS_SWA"
+msgstr "Rules and patterns"
+
+msgid "IDS_ST_NPBODY_NO_REPORTS_SWA"
+msgstr "No reports"
+
+msgid "IDS_ST_HEADER_SETTINGS_SWA"
+msgstr "Settings"
+
+msgid "IDS_ST_MBODY_KEEP_LOGS_SWA"
+msgstr "Keep logs"
+
+msgid "IDS_LOGS_CLEANED"
+msgstr "Logs cleaned"
+
+msgid "IDS_LOGS_CLEANED_FAILED"
+msgstr "Failed to clean logs"
+
+msgid "IDS_ST_OPT_1_WEEK_SWA"
+msgstr "1 week"
+
+msgid "IDS_ST_OPT_1_DAY_SWA"
+msgstr "1 day"
+
+msgid "IDS_ST_OPT_1_MONTH_SWA"
+msgstr "1 month"
+
+msgid "IDS_ST_HEADER_REPORT_DETAILS_SWA"
+msgstr "Report details"
+
+msgid "IDS_ST_BODY_CATEGORY_C_SWA"
+msgstr "Category:"
+
+msgid "IDS_ST_BODY_APP_C_SWA"
+msgstr "App:"
+
+msgid "IDS_ST_BODY_DESTINATION_C_SWA"
+msgstr "Destination:"
+
+msgid "IDS_ST_BODY_PATTERN_C_SWA"
+msgstr "Pattern:"
+
+msgid "IDS_ST_BODY_DLP_ACTION"
+msgstr "Action"
+
+msgid "IDS_ST_BODY_PACKET_C_SWA"
+msgstr "Packet:"
+
+msgid "IDS_ST_BODY_DLP_ACTION_ALLOW"
+msgstr "Allow"
+
+msgid "IDS_ST_BODY_DLP_ACTION_DENY"
+msgstr "Deny"
+
+msgid "IDS_ST_BODY_DLP_ACTION_SANITIZE"
+msgstr "Sanitize"
+
+msgid "IDS_ST_BODY_DLP_ACTION_ALL_RULES"
+msgstr "All Rules"
+
+msgid "IDS_ST_OPT_QUICK_M_PROTECTION_MODE_SWA"
+msgstr "Quick"
+
+msgid "IDS_ST_SBODY_CREATE_RULES_QUICKLY_AND_EASILY_SWA"
+msgstr "Create rules quickly and easily."
+
+msgid "IDS_ST_MBODY_CUSTOM_SWA"
+msgstr "Custom"
+
+msgid "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"
+msgstr "Create rules from scratch to give you full control of your data protection. Use this option to create non-standard rules."
+
+msgid "IDS_ST_HEADER_CUSTOM_PROTECTION_MODE_SWA"
+msgstr "Custom protection mode"
+
+msgid "IDS_ST_TAB_RULES_SWA"
+msgstr "Rules"
+
+msgid "IDS_ST_TAB_PATTERNS_SWA"
+msgstr "Patterns"
+
+msgid "IDS_ST_HEADER_SELECT_TEMPLATE_SWA"
+msgstr "Select template"
+
+msgid "IDS_ST_HEADER_SELECT_APPS_SWA"
+msgstr "Select apps"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_CHOOSE_ACTION"
+msgstr "Select Action"
+
+msgid "IDS_ST_ACBUTTON_NEXT_SWA"
+msgstr "NEXT"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_OK"
+msgstr "OK"
+
+msgid "IDS_ST_ACBUTTON_DONE_SWA"
+msgstr "DONE"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_RULE_CREATED_MESSAGE"
+msgstr "Rule created."
+
+msgid "IDS_ST_TPOP_RULE_DELETED_SWA"
+msgstr "Rule deleted."
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_DELETE_RULE_POPUP_TITLE"
+msgstr "Delete Rule"
+
+msgid "IDS_ST_HEADER_DELETE_PATTERNS_SWA"
+msgstr "Delete patterns"
+
+msgid "IDS_ST_POP_THIS_RULE_WILL_BE_DELETED_ABB_SWA"
+msgstr "This rule will be deleted."
+
+msgid "IDS_ST_HEADER_CREATE_PATTERN_SWA"
+msgstr "Create pattern"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_PATTERN"
+msgstr "Custom"
+
+msgid "IDS_ST_TPOP_PD_PATTERNS_DELETED_SWA"
+msgstr "%d patterns deleted."
+
+msgid "IDS_ST_OPT_EDIT_SWA"
+msgstr "Edit"
+
+msgid "IDS_ST_OPT_CREATE_SWA"
+msgstr "Create"
+
+msgid "IDS_ST_OPT_ALL_PATTERNS_SWA"
+msgstr "All patterns"
+
+msgid "IDS_ST_BODY_NAME_SWA"
+msgstr "Name"
+
+msgid "IDS_ST_BODY_DESCRIPTION_SWA"
+msgstr "Description"
+
+msgid "IDS_ST_BODY_CATEGORY_SWA"
+msgstr "Category"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CATEGORY_NAME"
+msgstr "Category name"
+
+msgid "IDS_ST_OPT_STRING_MATCH_SWA"
+msgstr "String match"
+
+msgid "IDS_ST_OPT_REGULAR_EXPRESSION_SWA"
+msgstr "Regular expression"
+
+msgid "IDS_ST_POP_PD_PATTERNS_WILL_BE_DELETED_ABB_SWA"
+msgstr "%d patterns will be deleted."
+
+msgid "IDS_ST_POP_THIS_REPORT_WILL_BE_DELETED_ABB_SWA"
+msgstr "This report will be deleted."
+
+msgid "IDS_ST_OPT_DELETE_SWA"
+msgstr "Delete"
+
+msgid "IDS_ST_HEADER_DELETE_REPORT_SWA"
+msgstr "Delete report"
+
+msgid "IDS_ST_POP_PD_REPORTS_WILL_BE_DELETED_ABB_SWA"
+msgstr "%d reports will be deleted."
+
+msgid "IDS_ST_TPOP_1_REPORT_DELETED_SWA"
+msgstr "1 report deleted."
+
+msgid "IDS_ST_MBODY_SELECT_ALL_SWA"
+msgstr "Select all"
+
+msgid "IDS_ST_ACBUTTON_DELETE_SWA"
+msgstr "DELETE"
+
+msgid "IDS_ST_ACBUTTON_CANCEL_SWA"
+msgstr "CANCEL"
+
+msgid "IDS_ST_TPOP_PD_REPORTS_DELETED_SWA"
+msgstr "%d reports deleted."
+
+msgid "IDS_ST_HEADER_SELECT_ITEMS_SWA"
+msgstr "Select items"
+
+msgid "IDS_ST_HEADER_PD_SELECTED_SWA"
+msgstr "%d selected"
+
+msgid "IDS_ST_TPOP_BASIC_PROTECTION_MODE_TURNED_ON_SWA"
+msgstr "Basic protection mode turned on."
+
+msgid "IDS_ST_TPOP_RULE_CREATED_SWA"
+msgstr "Rule created. Custom protection mode turned on."
+
+msgid "IDS_ST_TPOP_ADVANCED_PROTECTION_MODE_TURNED_ON_SWA"
+msgstr "Advanced protection mode turned on."
+
+msgid "IDS_ST_HEADER_DETAILS_SWA"
+msgstr "Details"
+
+msgid "IDS_ST_BODY_STRING_TYPE_SWA"
+msgstr "String type"
+
+msgid "IDS_ST_BODY_SEARCH_TERM_SWA"
+msgstr "Search term"
+
+msgid "IDS_ST_BODY_LEAKS_CAPTURED_SWA"
+msgstr "Leaks captured"
+
+msgid "IDS_ST_SBODY_TOTAL_LEAKS_SWA"
+msgstr "Total leaks"
+
+msgid "IDS_ST_HEADER_RULE_DETAILS_SWA"
+msgstr "Rule details"
+
+msgid "IDS_ST_HEADER_PATTERN_DETAILS_SWA"
+msgstr "Pattern details"
diff --git a/po/ru_RU.po b/po/ru_RU.po
index 31691d0..01b9337 100755
--- a/po/ru_RU.po
+++ b/po/ru_RU.po
@@ -31,3 +31,272 @@ msgstr "%d раз."
msgid "IDS_ST_HEADER_PRIVACY_AND_SECURITY_ABB"
msgstr "Конфиденц. и безопасн."
+msgid "IDS_ST_HEADER_DATA_LEAK_MONITOR_SWA"
+msgstr "Data leak monitor"
+
+msgid "IDS_ST_MBODY_DATA_LEAK_MONITOR_SWA"
+msgstr "Data leak monitor"
+
+msgid "IDS_ST_SBODY_PREVENT_APPS_FROM_LEAKING_YOUR_SENSITIVE_DATA_WITHOUT_AUTHORISATION_SWA"
+msgstr "Prevent apps from leaking your sensitive data without authorisation."
+
+msgid "IDS_ST_SBODY_TO_ALLOW_THIS_FUNCTION_TO_MONITOR_YOUR_PERSONAL_INFORMATION_YOU_NEED_TO_SET_UP_YOUR_PROFILE_IN_CONTACTS_SWA"
+msgstr "To allow this function to monitor your personal information, you need to set up your profile in Contacts."
+
+msgid "IDS_ST_MBODY_PROTECTION_MODE_SWA"
+msgstr "Protection mode"
+
+msgid "IDS_ST_MBODY_BASIC_M_MODE_SWA"
+msgstr "Basic"
+
+msgid "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"
+msgstr "Monitor your main sensitive data to prevent it from being leaked by most apps. This mode is suitable for regular users."
+
+msgid "IDS_ST_MBODY_ADVANCED_M_MODE_SWA"
+msgstr "Advanced"
+
+msgid "IDS_ST_SBODY_SET_UP_STRICT_RULES_TO_PREVENT_DATA_LEAKAGE_SWA"
+msgstr "Set up strict rules to prevent data leakage."
+
+msgid "IDS_ST_SBODY_THIS_MODE_WILL_AFFECT_APP_PERFORMANCE_SWA"
+msgstr "This mode will affect app performance."
+
+msgid "IDS_ST_POP_SOME_APPS_MAY_BE_BLOCKED_SWA"
+msgstr "Some apps may be blocked."
+
+msgid "IDS_ST_HEADER_TURN_ON_ADVANCED_PROTECTION_MODE_SWA"
+msgstr "Turn on Advanced protection mode"
+
+msgid "IDS_ST_MBODY_CUSTOM_M_MODE_SWA"
+msgstr "Custom"
+
+msgid "IDS_ST_SBODY_CHANGE_DEFAULT_RULES_AND_PATTERNS_AND_CREATE_YOUR_OWN_TO_SET_UP_A_CUSTOMISED_PROTECTION_MODE_SWA"
+msgstr "Change default rules and patterns and create your own to set up a customised protection mode."
+
+msgid "IDS_ST_HEADER_REPORTS_SWA"
+msgstr "Reports"
+
+msgid "IDS_ST_MBODY_FULL_REPORTS_SWA"
+msgstr "Full reports"
+
+msgid "IDS_ST_MBODY_APP_RANKINGS_SWA"
+msgstr "App rankings"
+
+msgid "IDS_ST_MBODY_DATA_STATISTICS_SWA"
+msgstr "Data statistics"
+
+msgid "IDS_ST_MBODY_RULES_AND_PATTERNS_SWA"
+msgstr "Rules and patterns"
+
+msgid "IDS_ST_NPBODY_NO_REPORTS_SWA"
+msgstr "No reports"
+
+msgid "IDS_ST_HEADER_SETTINGS_SWA"
+msgstr "Settings"
+
+msgid "IDS_ST_MBODY_KEEP_LOGS_SWA"
+msgstr "Keep logs"
+
+msgid "IDS_LOGS_CLEANED"
+msgstr "Logs cleaned"
+
+msgid "IDS_LOGS_CLEANED_FAILED"
+msgstr "Failed to clean logs"
+
+msgid "IDS_ST_OPT_1_WEEK_SWA"
+msgstr "1 week"
+
+msgid "IDS_ST_OPT_1_DAY_SWA"
+msgstr "1 day"
+
+msgid "IDS_ST_OPT_1_MONTH_SWA"
+msgstr "1 month"
+
+msgid "IDS_ST_HEADER_REPORT_DETAILS_SWA"
+msgstr "Report details"
+
+msgid "IDS_ST_BODY_CATEGORY_C_SWA"
+msgstr "Category:"
+
+msgid "IDS_ST_BODY_APP_C_SWA"
+msgstr "App:"
+
+msgid "IDS_ST_BODY_DESTINATION_C_SWA"
+msgstr "Destination:"
+
+msgid "IDS_ST_BODY_PATTERN_C_SWA"
+msgstr "Pattern:"
+
+msgid "IDS_ST_BODY_DLP_ACTION"
+msgstr "Action"
+
+msgid "IDS_ST_BODY_PACKET_C_SWA"
+msgstr "Packet:"
+
+msgid "IDS_ST_BODY_DLP_ACTION_ALLOW"
+msgstr "Allow"
+
+msgid "IDS_ST_BODY_DLP_ACTION_DENY"
+msgstr "Deny"
+
+msgid "IDS_ST_BODY_DLP_ACTION_SANITIZE"
+msgstr "Sanitize"
+
+msgid "IDS_ST_BODY_DLP_ACTION_ALL_RULES"
+msgstr "All Rules"
+
+msgid "IDS_ST_OPT_QUICK_M_PROTECTION_MODE_SWA"
+msgstr "Quick"
+
+msgid "IDS_ST_SBODY_CREATE_RULES_QUICKLY_AND_EASILY_SWA"
+msgstr "Create rules quickly and easily."
+
+msgid "IDS_ST_MBODY_CUSTOM_SWA"
+msgstr "Custom"
+
+msgid "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"
+msgstr "Create rules from scratch to give you full control of your data protection. Use this option to create non-standard rules."
+
+msgid "IDS_ST_HEADER_CUSTOM_PROTECTION_MODE_SWA"
+msgstr "Custom protection mode"
+
+msgid "IDS_ST_TAB_RULES_SWA"
+msgstr "Rules"
+
+msgid "IDS_ST_TAB_PATTERNS_SWA"
+msgstr "Patterns"
+
+msgid "IDS_ST_HEADER_SELECT_TEMPLATE_SWA"
+msgstr "Select template"
+
+msgid "IDS_ST_HEADER_SELECT_APPS_SWA"
+msgstr "Select apps"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_CHOOSE_ACTION"
+msgstr "Select Action"
+
+msgid "IDS_ST_ACBUTTON_NEXT_SWA"
+msgstr "NEXT"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_OK"
+msgstr "OK"
+
+msgid "IDS_ST_ACBUTTON_DONE_SWA"
+msgstr "DONE"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_RULE_CREATED_MESSAGE"
+msgstr "Rule created."
+
+msgid "IDS_ST_TPOP_RULE_DELETED_SWA"
+msgstr "Rule deleted."
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_DELETE_RULE_POPUP_TITLE"
+msgstr "Delete Rule"
+
+msgid "IDS_ST_HEADER_DELETE_PATTERNS_SWA"
+msgstr "Delete patterns"
+
+msgid "IDS_ST_POP_THIS_RULE_WILL_BE_DELETED_ABB_SWA"
+msgstr "This rule will be deleted."
+
+msgid "IDS_ST_HEADER_CREATE_PATTERN_SWA"
+msgstr "Create pattern"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_PATTERN"
+msgstr "Custom"
+
+msgid "IDS_ST_TPOP_PD_PATTERNS_DELETED_SWA"
+msgstr "%d patterns deleted."
+
+msgid "IDS_ST_OPT_EDIT_SWA"
+msgstr "Edit"
+
+msgid "IDS_ST_OPT_CREATE_SWA"
+msgstr "Create"
+
+msgid "IDS_ST_OPT_ALL_PATTERNS_SWA"
+msgstr "All patterns"
+
+msgid "IDS_ST_BODY_NAME_SWA"
+msgstr "Name"
+
+msgid "IDS_ST_BODY_DESCRIPTION_SWA"
+msgstr "Description"
+
+msgid "IDS_ST_BODY_CATEGORY_SWA"
+msgstr "Category"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CATEGORY_NAME"
+msgstr "Category name"
+
+msgid "IDS_ST_OPT_STRING_MATCH_SWA"
+msgstr "String match"
+
+msgid "IDS_ST_OPT_REGULAR_EXPRESSION_SWA"
+msgstr "Regular expression"
+
+msgid "IDS_ST_POP_PD_PATTERNS_WILL_BE_DELETED_ABB_SWA"
+msgstr "%d patterns will be deleted."
+
+msgid "IDS_ST_POP_THIS_REPORT_WILL_BE_DELETED_ABB_SWA"
+msgstr "This report will be deleted."
+
+msgid "IDS_ST_OPT_DELETE_SWA"
+msgstr "Delete"
+
+msgid "IDS_ST_HEADER_DELETE_REPORT_SWA"
+msgstr "Delete report"
+
+msgid "IDS_ST_POP_PD_REPORTS_WILL_BE_DELETED_ABB_SWA"
+msgstr "%d reports will be deleted."
+
+msgid "IDS_ST_TPOP_1_REPORT_DELETED_SWA"
+msgstr "1 report deleted."
+
+msgid "IDS_ST_MBODY_SELECT_ALL_SWA"
+msgstr "Select all"
+
+msgid "IDS_ST_ACBUTTON_DELETE_SWA"
+msgstr "DELETE"
+
+msgid "IDS_ST_ACBUTTON_CANCEL_SWA"
+msgstr "CANCEL"
+
+msgid "IDS_ST_TPOP_PD_REPORTS_DELETED_SWA"
+msgstr "%d reports deleted."
+
+msgid "IDS_ST_HEADER_SELECT_ITEMS_SWA"
+msgstr "Select items"
+
+msgid "IDS_ST_HEADER_PD_SELECTED_SWA"
+msgstr "%d selected"
+
+msgid "IDS_ST_TPOP_BASIC_PROTECTION_MODE_TURNED_ON_SWA"
+msgstr "Basic protection mode turned on."
+
+msgid "IDS_ST_TPOP_RULE_CREATED_SWA"
+msgstr "Rule created. Custom protection mode turned on."
+
+msgid "IDS_ST_TPOP_ADVANCED_PROTECTION_MODE_TURNED_ON_SWA"
+msgstr "Advanced protection mode turned on."
+
+msgid "IDS_ST_HEADER_DETAILS_SWA"
+msgstr "Details"
+
+msgid "IDS_ST_BODY_STRING_TYPE_SWA"
+msgstr "String type"
+
+msgid "IDS_ST_BODY_SEARCH_TERM_SWA"
+msgstr "Search term"
+
+msgid "IDS_ST_BODY_LEAKS_CAPTURED_SWA"
+msgstr "Leaks captured"
+
+msgid "IDS_ST_SBODY_TOTAL_LEAKS_SWA"
+msgstr "Total leaks"
+
+msgid "IDS_ST_HEADER_RULE_DETAILS_SWA"
+msgstr "Rule details"
+
+msgid "IDS_ST_HEADER_PATTERN_DETAILS_SWA"
+msgstr "Pattern details"
diff --git a/po/sk.po b/po/sk.po
index 4e376df..ac0a311 100755
--- a/po/sk.po
+++ b/po/sk.po
@@ -31,3 +31,272 @@ msgstr "%d krát"
msgid "IDS_ST_HEADER_PRIVACY_AND_SECURITY_ABB"
msgstr "Súkromie a zabezpečenie"
+msgid "IDS_ST_HEADER_DATA_LEAK_MONITOR_SWA"
+msgstr "Data leak monitor"
+
+msgid "IDS_ST_MBODY_DATA_LEAK_MONITOR_SWA"
+msgstr "Data leak monitor"
+
+msgid "IDS_ST_SBODY_PREVENT_APPS_FROM_LEAKING_YOUR_SENSITIVE_DATA_WITHOUT_AUTHORISATION_SWA"
+msgstr "Prevent apps from leaking your sensitive data without authorisation."
+
+msgid "IDS_ST_SBODY_TO_ALLOW_THIS_FUNCTION_TO_MONITOR_YOUR_PERSONAL_INFORMATION_YOU_NEED_TO_SET_UP_YOUR_PROFILE_IN_CONTACTS_SWA"
+msgstr "To allow this function to monitor your personal information, you need to set up your profile in Contacts."
+
+msgid "IDS_ST_MBODY_PROTECTION_MODE_SWA"
+msgstr "Protection mode"
+
+msgid "IDS_ST_MBODY_BASIC_M_MODE_SWA"
+msgstr "Basic"
+
+msgid "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"
+msgstr "Monitor your main sensitive data to prevent it from being leaked by most apps. This mode is suitable for regular users."
+
+msgid "IDS_ST_MBODY_ADVANCED_M_MODE_SWA"
+msgstr "Advanced"
+
+msgid "IDS_ST_SBODY_SET_UP_STRICT_RULES_TO_PREVENT_DATA_LEAKAGE_SWA"
+msgstr "Set up strict rules to prevent data leakage."
+
+msgid "IDS_ST_SBODY_THIS_MODE_WILL_AFFECT_APP_PERFORMANCE_SWA"
+msgstr "This mode will affect app performance."
+
+msgid "IDS_ST_POP_SOME_APPS_MAY_BE_BLOCKED_SWA"
+msgstr "Some apps may be blocked."
+
+msgid "IDS_ST_HEADER_TURN_ON_ADVANCED_PROTECTION_MODE_SWA"
+msgstr "Turn on Advanced protection mode"
+
+msgid "IDS_ST_MBODY_CUSTOM_M_MODE_SWA"
+msgstr "Custom"
+
+msgid "IDS_ST_SBODY_CHANGE_DEFAULT_RULES_AND_PATTERNS_AND_CREATE_YOUR_OWN_TO_SET_UP_A_CUSTOMISED_PROTECTION_MODE_SWA"
+msgstr "Change default rules and patterns and create your own to set up a customised protection mode."
+
+msgid "IDS_ST_HEADER_REPORTS_SWA"
+msgstr "Reports"
+
+msgid "IDS_ST_MBODY_FULL_REPORTS_SWA"
+msgstr "Full reports"
+
+msgid "IDS_ST_MBODY_APP_RANKINGS_SWA"
+msgstr "App rankings"
+
+msgid "IDS_ST_MBODY_DATA_STATISTICS_SWA"
+msgstr "Data statistics"
+
+msgid "IDS_ST_MBODY_RULES_AND_PATTERNS_SWA"
+msgstr "Rules and patterns"
+
+msgid "IDS_ST_NPBODY_NO_REPORTS_SWA"
+msgstr "No reports"
+
+msgid "IDS_ST_HEADER_SETTINGS_SWA"
+msgstr "Settings"
+
+msgid "IDS_ST_MBODY_KEEP_LOGS_SWA"
+msgstr "Keep logs"
+
+msgid "IDS_LOGS_CLEANED"
+msgstr "Logs cleaned"
+
+msgid "IDS_LOGS_CLEANED_FAILED"
+msgstr "Failed to clean logs"
+
+msgid "IDS_ST_OPT_1_WEEK_SWA"
+msgstr "1 week"
+
+msgid "IDS_ST_OPT_1_DAY_SWA"
+msgstr "1 day"
+
+msgid "IDS_ST_OPT_1_MONTH_SWA"
+msgstr "1 month"
+
+msgid "IDS_ST_HEADER_REPORT_DETAILS_SWA"
+msgstr "Report details"
+
+msgid "IDS_ST_BODY_CATEGORY_C_SWA"
+msgstr "Category:"
+
+msgid "IDS_ST_BODY_APP_C_SWA"
+msgstr "App:"
+
+msgid "IDS_ST_BODY_DESTINATION_C_SWA"
+msgstr "Destination:"
+
+msgid "IDS_ST_BODY_PATTERN_C_SWA"
+msgstr "Pattern:"
+
+msgid "IDS_ST_BODY_DLP_ACTION"
+msgstr "Action"
+
+msgid "IDS_ST_BODY_PACKET_C_SWA"
+msgstr "Packet:"
+
+msgid "IDS_ST_BODY_DLP_ACTION_ALLOW"
+msgstr "Allow"
+
+msgid "IDS_ST_BODY_DLP_ACTION_DENY"
+msgstr "Deny"
+
+msgid "IDS_ST_BODY_DLP_ACTION_SANITIZE"
+msgstr "Sanitize"
+
+msgid "IDS_ST_BODY_DLP_ACTION_ALL_RULES"
+msgstr "All Rules"
+
+msgid "IDS_ST_OPT_QUICK_M_PROTECTION_MODE_SWA"
+msgstr "Quick"
+
+msgid "IDS_ST_SBODY_CREATE_RULES_QUICKLY_AND_EASILY_SWA"
+msgstr "Create rules quickly and easily."
+
+msgid "IDS_ST_MBODY_CUSTOM_SWA"
+msgstr "Custom"
+
+msgid "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"
+msgstr "Create rules from scratch to give you full control of your data protection. Use this option to create non-standard rules."
+
+msgid "IDS_ST_HEADER_CUSTOM_PROTECTION_MODE_SWA"
+msgstr "Custom protection mode"
+
+msgid "IDS_ST_TAB_RULES_SWA"
+msgstr "Rules"
+
+msgid "IDS_ST_TAB_PATTERNS_SWA"
+msgstr "Patterns"
+
+msgid "IDS_ST_HEADER_SELECT_TEMPLATE_SWA"
+msgstr "Select template"
+
+msgid "IDS_ST_HEADER_SELECT_APPS_SWA"
+msgstr "Select apps"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_CHOOSE_ACTION"
+msgstr "Select Action"
+
+msgid "IDS_ST_ACBUTTON_NEXT_SWA"
+msgstr "NEXT"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_OK"
+msgstr "OK"
+
+msgid "IDS_ST_ACBUTTON_DONE_SWA"
+msgstr "DONE"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_RULE_CREATED_MESSAGE"
+msgstr "Rule created."
+
+msgid "IDS_ST_TPOP_RULE_DELETED_SWA"
+msgstr "Rule deleted."
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_DELETE_RULE_POPUP_TITLE"
+msgstr "Delete Rule"
+
+msgid "IDS_ST_HEADER_DELETE_PATTERNS_SWA"
+msgstr "Delete patterns"
+
+msgid "IDS_ST_POP_THIS_RULE_WILL_BE_DELETED_ABB_SWA"
+msgstr "This rule will be deleted."
+
+msgid "IDS_ST_HEADER_CREATE_PATTERN_SWA"
+msgstr "Create pattern"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_PATTERN"
+msgstr "Custom"
+
+msgid "IDS_ST_TPOP_PD_PATTERNS_DELETED_SWA"
+msgstr "%d patterns deleted."
+
+msgid "IDS_ST_OPT_EDIT_SWA"
+msgstr "Edit"
+
+msgid "IDS_ST_OPT_CREATE_SWA"
+msgstr "Create"
+
+msgid "IDS_ST_OPT_ALL_PATTERNS_SWA"
+msgstr "All patterns"
+
+msgid "IDS_ST_BODY_NAME_SWA"
+msgstr "Name"
+
+msgid "IDS_ST_BODY_DESCRIPTION_SWA"
+msgstr "Description"
+
+msgid "IDS_ST_BODY_CATEGORY_SWA"
+msgstr "Category"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CATEGORY_NAME"
+msgstr "Category name"
+
+msgid "IDS_ST_OPT_STRING_MATCH_SWA"
+msgstr "String match"
+
+msgid "IDS_ST_OPT_REGULAR_EXPRESSION_SWA"
+msgstr "Regular expression"
+
+msgid "IDS_ST_POP_PD_PATTERNS_WILL_BE_DELETED_ABB_SWA"
+msgstr "%d patterns will be deleted."
+
+msgid "IDS_ST_POP_THIS_REPORT_WILL_BE_DELETED_ABB_SWA"
+msgstr "This report will be deleted."
+
+msgid "IDS_ST_OPT_DELETE_SWA"
+msgstr "Delete"
+
+msgid "IDS_ST_HEADER_DELETE_REPORT_SWA"
+msgstr "Delete report"
+
+msgid "IDS_ST_POP_PD_REPORTS_WILL_BE_DELETED_ABB_SWA"
+msgstr "%d reports will be deleted."
+
+msgid "IDS_ST_TPOP_1_REPORT_DELETED_SWA"
+msgstr "1 report deleted."
+
+msgid "IDS_ST_MBODY_SELECT_ALL_SWA"
+msgstr "Select all"
+
+msgid "IDS_ST_ACBUTTON_DELETE_SWA"
+msgstr "DELETE"
+
+msgid "IDS_ST_ACBUTTON_CANCEL_SWA"
+msgstr "CANCEL"
+
+msgid "IDS_ST_TPOP_PD_REPORTS_DELETED_SWA"
+msgstr "%d reports deleted."
+
+msgid "IDS_ST_HEADER_SELECT_ITEMS_SWA"
+msgstr "Select items"
+
+msgid "IDS_ST_HEADER_PD_SELECTED_SWA"
+msgstr "%d selected"
+
+msgid "IDS_ST_TPOP_BASIC_PROTECTION_MODE_TURNED_ON_SWA"
+msgstr "Basic protection mode turned on."
+
+msgid "IDS_ST_TPOP_RULE_CREATED_SWA"
+msgstr "Rule created. Custom protection mode turned on."
+
+msgid "IDS_ST_TPOP_ADVANCED_PROTECTION_MODE_TURNED_ON_SWA"
+msgstr "Advanced protection mode turned on."
+
+msgid "IDS_ST_HEADER_DETAILS_SWA"
+msgstr "Details"
+
+msgid "IDS_ST_BODY_STRING_TYPE_SWA"
+msgstr "String type"
+
+msgid "IDS_ST_BODY_SEARCH_TERM_SWA"
+msgstr "Search term"
+
+msgid "IDS_ST_BODY_LEAKS_CAPTURED_SWA"
+msgstr "Leaks captured"
+
+msgid "IDS_ST_SBODY_TOTAL_LEAKS_SWA"
+msgstr "Total leaks"
+
+msgid "IDS_ST_HEADER_RULE_DETAILS_SWA"
+msgstr "Rule details"
+
+msgid "IDS_ST_HEADER_PATTERN_DETAILS_SWA"
+msgstr "Pattern details"
diff --git a/po/sl.po b/po/sl.po
index b3e21fa..f0d7062 100755
--- a/po/sl.po
+++ b/po/sl.po
@@ -31,3 +31,272 @@ msgstr "%d-krat"
msgid "IDS_ST_HEADER_PRIVACY_AND_SECURITY_ABB"
msgstr "Zasebnost in varnost"
+msgid "IDS_ST_HEADER_DATA_LEAK_MONITOR_SWA"
+msgstr "Data leak monitor"
+
+msgid "IDS_ST_MBODY_DATA_LEAK_MONITOR_SWA"
+msgstr "Data leak monitor"
+
+msgid "IDS_ST_SBODY_PREVENT_APPS_FROM_LEAKING_YOUR_SENSITIVE_DATA_WITHOUT_AUTHORISATION_SWA"
+msgstr "Prevent apps from leaking your sensitive data without authorisation."
+
+msgid "IDS_ST_SBODY_TO_ALLOW_THIS_FUNCTION_TO_MONITOR_YOUR_PERSONAL_INFORMATION_YOU_NEED_TO_SET_UP_YOUR_PROFILE_IN_CONTACTS_SWA"
+msgstr "To allow this function to monitor your personal information, you need to set up your profile in Contacts."
+
+msgid "IDS_ST_MBODY_PROTECTION_MODE_SWA"
+msgstr "Protection mode"
+
+msgid "IDS_ST_MBODY_BASIC_M_MODE_SWA"
+msgstr "Basic"
+
+msgid "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"
+msgstr "Monitor your main sensitive data to prevent it from being leaked by most apps. This mode is suitable for regular users."
+
+msgid "IDS_ST_MBODY_ADVANCED_M_MODE_SWA"
+msgstr "Advanced"
+
+msgid "IDS_ST_SBODY_SET_UP_STRICT_RULES_TO_PREVENT_DATA_LEAKAGE_SWA"
+msgstr "Set up strict rules to prevent data leakage."
+
+msgid "IDS_ST_SBODY_THIS_MODE_WILL_AFFECT_APP_PERFORMANCE_SWA"
+msgstr "This mode will affect app performance."
+
+msgid "IDS_ST_POP_SOME_APPS_MAY_BE_BLOCKED_SWA"
+msgstr "Some apps may be blocked."
+
+msgid "IDS_ST_HEADER_TURN_ON_ADVANCED_PROTECTION_MODE_SWA"
+msgstr "Turn on Advanced protection mode"
+
+msgid "IDS_ST_MBODY_CUSTOM_M_MODE_SWA"
+msgstr "Custom"
+
+msgid "IDS_ST_SBODY_CHANGE_DEFAULT_RULES_AND_PATTERNS_AND_CREATE_YOUR_OWN_TO_SET_UP_A_CUSTOMISED_PROTECTION_MODE_SWA"
+msgstr "Change default rules and patterns and create your own to set up a customised protection mode."
+
+msgid "IDS_ST_HEADER_REPORTS_SWA"
+msgstr "Reports"
+
+msgid "IDS_ST_MBODY_FULL_REPORTS_SWA"
+msgstr "Full reports"
+
+msgid "IDS_ST_MBODY_APP_RANKINGS_SWA"
+msgstr "App rankings"
+
+msgid "IDS_ST_MBODY_DATA_STATISTICS_SWA"
+msgstr "Data statistics"
+
+msgid "IDS_ST_MBODY_RULES_AND_PATTERNS_SWA"
+msgstr "Rules and patterns"
+
+msgid "IDS_ST_NPBODY_NO_REPORTS_SWA"
+msgstr "No reports"
+
+msgid "IDS_ST_HEADER_SETTINGS_SWA"
+msgstr "Settings"
+
+msgid "IDS_ST_MBODY_KEEP_LOGS_SWA"
+msgstr "Keep logs"
+
+msgid "IDS_LOGS_CLEANED"
+msgstr "Logs cleaned"
+
+msgid "IDS_LOGS_CLEANED_FAILED"
+msgstr "Failed to clean logs"
+
+msgid "IDS_ST_OPT_1_WEEK_SWA"
+msgstr "1 week"
+
+msgid "IDS_ST_OPT_1_DAY_SWA"
+msgstr "1 day"
+
+msgid "IDS_ST_OPT_1_MONTH_SWA"
+msgstr "1 month"
+
+msgid "IDS_ST_HEADER_REPORT_DETAILS_SWA"
+msgstr "Report details"
+
+msgid "IDS_ST_BODY_CATEGORY_C_SWA"
+msgstr "Category:"
+
+msgid "IDS_ST_BODY_APP_C_SWA"
+msgstr "App:"
+
+msgid "IDS_ST_BODY_DESTINATION_C_SWA"
+msgstr "Destination:"
+
+msgid "IDS_ST_BODY_PATTERN_C_SWA"
+msgstr "Pattern:"
+
+msgid "IDS_ST_BODY_DLP_ACTION"
+msgstr "Action"
+
+msgid "IDS_ST_BODY_PACKET_C_SWA"
+msgstr "Packet:"
+
+msgid "IDS_ST_BODY_DLP_ACTION_ALLOW"
+msgstr "Allow"
+
+msgid "IDS_ST_BODY_DLP_ACTION_DENY"
+msgstr "Deny"
+
+msgid "IDS_ST_BODY_DLP_ACTION_SANITIZE"
+msgstr "Sanitize"
+
+msgid "IDS_ST_BODY_DLP_ACTION_ALL_RULES"
+msgstr "All Rules"
+
+msgid "IDS_ST_OPT_QUICK_M_PROTECTION_MODE_SWA"
+msgstr "Quick"
+
+msgid "IDS_ST_SBODY_CREATE_RULES_QUICKLY_AND_EASILY_SWA"
+msgstr "Create rules quickly and easily."
+
+msgid "IDS_ST_MBODY_CUSTOM_SWA"
+msgstr "Custom"
+
+msgid "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"
+msgstr "Create rules from scratch to give you full control of your data protection. Use this option to create non-standard rules."
+
+msgid "IDS_ST_HEADER_CUSTOM_PROTECTION_MODE_SWA"
+msgstr "Custom protection mode"
+
+msgid "IDS_ST_TAB_RULES_SWA"
+msgstr "Rules"
+
+msgid "IDS_ST_TAB_PATTERNS_SWA"
+msgstr "Patterns"
+
+msgid "IDS_ST_HEADER_SELECT_TEMPLATE_SWA"
+msgstr "Select template"
+
+msgid "IDS_ST_HEADER_SELECT_APPS_SWA"
+msgstr "Select apps"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_CHOOSE_ACTION"
+msgstr "Select Action"
+
+msgid "IDS_ST_ACBUTTON_NEXT_SWA"
+msgstr "NEXT"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_OK"
+msgstr "OK"
+
+msgid "IDS_ST_ACBUTTON_DONE_SWA"
+msgstr "DONE"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_RULE_CREATED_MESSAGE"
+msgstr "Rule created."
+
+msgid "IDS_ST_TPOP_RULE_DELETED_SWA"
+msgstr "Rule deleted."
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_DELETE_RULE_POPUP_TITLE"
+msgstr "Delete Rule"
+
+msgid "IDS_ST_HEADER_DELETE_PATTERNS_SWA"
+msgstr "Delete patterns"
+
+msgid "IDS_ST_POP_THIS_RULE_WILL_BE_DELETED_ABB_SWA"
+msgstr "This rule will be deleted."
+
+msgid "IDS_ST_HEADER_CREATE_PATTERN_SWA"
+msgstr "Create pattern"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_PATTERN"
+msgstr "Custom"
+
+msgid "IDS_ST_TPOP_PD_PATTERNS_DELETED_SWA"
+msgstr "%d patterns deleted."
+
+msgid "IDS_ST_OPT_EDIT_SWA"
+msgstr "Edit"
+
+msgid "IDS_ST_OPT_CREATE_SWA"
+msgstr "Create"
+
+msgid "IDS_ST_OPT_ALL_PATTERNS_SWA"
+msgstr "All patterns"
+
+msgid "IDS_ST_BODY_NAME_SWA"
+msgstr "Name"
+
+msgid "IDS_ST_BODY_DESCRIPTION_SWA"
+msgstr "Description"
+
+msgid "IDS_ST_BODY_CATEGORY_SWA"
+msgstr "Category"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CATEGORY_NAME"
+msgstr "Category name"
+
+msgid "IDS_ST_OPT_STRING_MATCH_SWA"
+msgstr "String match"
+
+msgid "IDS_ST_OPT_REGULAR_EXPRESSION_SWA"
+msgstr "Regular expression"
+
+msgid "IDS_ST_POP_PD_PATTERNS_WILL_BE_DELETED_ABB_SWA"
+msgstr "%d patterns will be deleted."
+
+msgid "IDS_ST_POP_THIS_REPORT_WILL_BE_DELETED_ABB_SWA"
+msgstr "This report will be deleted."
+
+msgid "IDS_ST_OPT_DELETE_SWA"
+msgstr "Delete"
+
+msgid "IDS_ST_HEADER_DELETE_REPORT_SWA"
+msgstr "Delete report"
+
+msgid "IDS_ST_POP_PD_REPORTS_WILL_BE_DELETED_ABB_SWA"
+msgstr "%d reports will be deleted."
+
+msgid "IDS_ST_TPOP_1_REPORT_DELETED_SWA"
+msgstr "1 report deleted."
+
+msgid "IDS_ST_MBODY_SELECT_ALL_SWA"
+msgstr "Select all"
+
+msgid "IDS_ST_ACBUTTON_DELETE_SWA"
+msgstr "DELETE"
+
+msgid "IDS_ST_ACBUTTON_CANCEL_SWA"
+msgstr "CANCEL"
+
+msgid "IDS_ST_TPOP_PD_REPORTS_DELETED_SWA"
+msgstr "%d reports deleted."
+
+msgid "IDS_ST_HEADER_SELECT_ITEMS_SWA"
+msgstr "Select items"
+
+msgid "IDS_ST_HEADER_PD_SELECTED_SWA"
+msgstr "%d selected"
+
+msgid "IDS_ST_TPOP_BASIC_PROTECTION_MODE_TURNED_ON_SWA"
+msgstr "Basic protection mode turned on."
+
+msgid "IDS_ST_TPOP_RULE_CREATED_SWA"
+msgstr "Rule created. Custom protection mode turned on."
+
+msgid "IDS_ST_TPOP_ADVANCED_PROTECTION_MODE_TURNED_ON_SWA"
+msgstr "Advanced protection mode turned on."
+
+msgid "IDS_ST_HEADER_DETAILS_SWA"
+msgstr "Details"
+
+msgid "IDS_ST_BODY_STRING_TYPE_SWA"
+msgstr "String type"
+
+msgid "IDS_ST_BODY_SEARCH_TERM_SWA"
+msgstr "Search term"
+
+msgid "IDS_ST_BODY_LEAKS_CAPTURED_SWA"
+msgstr "Leaks captured"
+
+msgid "IDS_ST_SBODY_TOTAL_LEAKS_SWA"
+msgstr "Total leaks"
+
+msgid "IDS_ST_HEADER_RULE_DETAILS_SWA"
+msgstr "Rule details"
+
+msgid "IDS_ST_HEADER_PATTERN_DETAILS_SWA"
+msgstr "Pattern details"
diff --git a/po/sr.po b/po/sr.po
index e6b5303..90b4b3f 100755
--- a/po/sr.po
+++ b/po/sr.po
@@ -31,3 +31,272 @@ msgstr "%d puta"
msgid "IDS_ST_HEADER_PRIVACY_AND_SECURITY_ABB"
msgstr "Privatnost i bezbednost"
+msgid "IDS_ST_HEADER_DATA_LEAK_MONITOR_SWA"
+msgstr "Data leak monitor"
+
+msgid "IDS_ST_MBODY_DATA_LEAK_MONITOR_SWA"
+msgstr "Data leak monitor"
+
+msgid "IDS_ST_SBODY_PREVENT_APPS_FROM_LEAKING_YOUR_SENSITIVE_DATA_WITHOUT_AUTHORISATION_SWA"
+msgstr "Prevent apps from leaking your sensitive data without authorisation."
+
+msgid "IDS_ST_SBODY_TO_ALLOW_THIS_FUNCTION_TO_MONITOR_YOUR_PERSONAL_INFORMATION_YOU_NEED_TO_SET_UP_YOUR_PROFILE_IN_CONTACTS_SWA"
+msgstr "To allow this function to monitor your personal information, you need to set up your profile in Contacts."
+
+msgid "IDS_ST_MBODY_PROTECTION_MODE_SWA"
+msgstr "Protection mode"
+
+msgid "IDS_ST_MBODY_BASIC_M_MODE_SWA"
+msgstr "Basic"
+
+msgid "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"
+msgstr "Monitor your main sensitive data to prevent it from being leaked by most apps. This mode is suitable for regular users."
+
+msgid "IDS_ST_MBODY_ADVANCED_M_MODE_SWA"
+msgstr "Advanced"
+
+msgid "IDS_ST_SBODY_SET_UP_STRICT_RULES_TO_PREVENT_DATA_LEAKAGE_SWA"
+msgstr "Set up strict rules to prevent data leakage."
+
+msgid "IDS_ST_SBODY_THIS_MODE_WILL_AFFECT_APP_PERFORMANCE_SWA"
+msgstr "This mode will affect app performance."
+
+msgid "IDS_ST_POP_SOME_APPS_MAY_BE_BLOCKED_SWA"
+msgstr "Some apps may be blocked."
+
+msgid "IDS_ST_HEADER_TURN_ON_ADVANCED_PROTECTION_MODE_SWA"
+msgstr "Turn on Advanced protection mode"
+
+msgid "IDS_ST_MBODY_CUSTOM_M_MODE_SWA"
+msgstr "Custom"
+
+msgid "IDS_ST_SBODY_CHANGE_DEFAULT_RULES_AND_PATTERNS_AND_CREATE_YOUR_OWN_TO_SET_UP_A_CUSTOMISED_PROTECTION_MODE_SWA"
+msgstr "Change default rules and patterns and create your own to set up a customised protection mode."
+
+msgid "IDS_ST_HEADER_REPORTS_SWA"
+msgstr "Reports"
+
+msgid "IDS_ST_MBODY_FULL_REPORTS_SWA"
+msgstr "Full reports"
+
+msgid "IDS_ST_MBODY_APP_RANKINGS_SWA"
+msgstr "App rankings"
+
+msgid "IDS_ST_MBODY_DATA_STATISTICS_SWA"
+msgstr "Data statistics"
+
+msgid "IDS_ST_MBODY_RULES_AND_PATTERNS_SWA"
+msgstr "Rules and patterns"
+
+msgid "IDS_ST_NPBODY_NO_REPORTS_SWA"
+msgstr "No reports"
+
+msgid "IDS_ST_HEADER_SETTINGS_SWA"
+msgstr "Settings"
+
+msgid "IDS_ST_MBODY_KEEP_LOGS_SWA"
+msgstr "Keep logs"
+
+msgid "IDS_LOGS_CLEANED"
+msgstr "Logs cleaned"
+
+msgid "IDS_LOGS_CLEANED_FAILED"
+msgstr "Failed to clean logs"
+
+msgid "IDS_ST_OPT_1_WEEK_SWA"
+msgstr "1 week"
+
+msgid "IDS_ST_OPT_1_DAY_SWA"
+msgstr "1 day"
+
+msgid "IDS_ST_OPT_1_MONTH_SWA"
+msgstr "1 month"
+
+msgid "IDS_ST_HEADER_REPORT_DETAILS_SWA"
+msgstr "Report details"
+
+msgid "IDS_ST_BODY_CATEGORY_C_SWA"
+msgstr "Category:"
+
+msgid "IDS_ST_BODY_APP_C_SWA"
+msgstr "App:"
+
+msgid "IDS_ST_BODY_DESTINATION_C_SWA"
+msgstr "Destination:"
+
+msgid "IDS_ST_BODY_PATTERN_C_SWA"
+msgstr "Pattern:"
+
+msgid "IDS_ST_BODY_DLP_ACTION"
+msgstr "Action"
+
+msgid "IDS_ST_BODY_PACKET_C_SWA"
+msgstr "Packet:"
+
+msgid "IDS_ST_BODY_DLP_ACTION_ALLOW"
+msgstr "Allow"
+
+msgid "IDS_ST_BODY_DLP_ACTION_DENY"
+msgstr "Deny"
+
+msgid "IDS_ST_BODY_DLP_ACTION_SANITIZE"
+msgstr "Sanitize"
+
+msgid "IDS_ST_BODY_DLP_ACTION_ALL_RULES"
+msgstr "All Rules"
+
+msgid "IDS_ST_OPT_QUICK_M_PROTECTION_MODE_SWA"
+msgstr "Quick"
+
+msgid "IDS_ST_SBODY_CREATE_RULES_QUICKLY_AND_EASILY_SWA"
+msgstr "Create rules quickly and easily."
+
+msgid "IDS_ST_MBODY_CUSTOM_SWA"
+msgstr "Custom"
+
+msgid "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"
+msgstr "Create rules from scratch to give you full control of your data protection. Use this option to create non-standard rules."
+
+msgid "IDS_ST_HEADER_CUSTOM_PROTECTION_MODE_SWA"
+msgstr "Custom protection mode"
+
+msgid "IDS_ST_TAB_RULES_SWA"
+msgstr "Rules"
+
+msgid "IDS_ST_TAB_PATTERNS_SWA"
+msgstr "Patterns"
+
+msgid "IDS_ST_HEADER_SELECT_TEMPLATE_SWA"
+msgstr "Select template"
+
+msgid "IDS_ST_HEADER_SELECT_APPS_SWA"
+msgstr "Select apps"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_CHOOSE_ACTION"
+msgstr "Select Action"
+
+msgid "IDS_ST_ACBUTTON_NEXT_SWA"
+msgstr "NEXT"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_OK"
+msgstr "OK"
+
+msgid "IDS_ST_ACBUTTON_DONE_SWA"
+msgstr "DONE"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_RULE_CREATED_MESSAGE"
+msgstr "Rule created."
+
+msgid "IDS_ST_TPOP_RULE_DELETED_SWA"
+msgstr "Rule deleted."
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_DELETE_RULE_POPUP_TITLE"
+msgstr "Delete Rule"
+
+msgid "IDS_ST_HEADER_DELETE_PATTERNS_SWA"
+msgstr "Delete patterns"
+
+msgid "IDS_ST_POP_THIS_RULE_WILL_BE_DELETED_ABB_SWA"
+msgstr "This rule will be deleted."
+
+msgid "IDS_ST_HEADER_CREATE_PATTERN_SWA"
+msgstr "Create pattern"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_PATTERN"
+msgstr "Custom"
+
+msgid "IDS_ST_TPOP_PD_PATTERNS_DELETED_SWA"
+msgstr "%d patterns deleted."
+
+msgid "IDS_ST_OPT_EDIT_SWA"
+msgstr "Edit"
+
+msgid "IDS_ST_OPT_CREATE_SWA"
+msgstr "Create"
+
+msgid "IDS_ST_OPT_ALL_PATTERNS_SWA"
+msgstr "All patterns"
+
+msgid "IDS_ST_BODY_NAME_SWA"
+msgstr "Name"
+
+msgid "IDS_ST_BODY_DESCRIPTION_SWA"
+msgstr "Description"
+
+msgid "IDS_ST_BODY_CATEGORY_SWA"
+msgstr "Category"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CATEGORY_NAME"
+msgstr "Category name"
+
+msgid "IDS_ST_OPT_STRING_MATCH_SWA"
+msgstr "String match"
+
+msgid "IDS_ST_OPT_REGULAR_EXPRESSION_SWA"
+msgstr "Regular expression"
+
+msgid "IDS_ST_POP_PD_PATTERNS_WILL_BE_DELETED_ABB_SWA"
+msgstr "%d patterns will be deleted."
+
+msgid "IDS_ST_POP_THIS_REPORT_WILL_BE_DELETED_ABB_SWA"
+msgstr "This report will be deleted."
+
+msgid "IDS_ST_OPT_DELETE_SWA"
+msgstr "Delete"
+
+msgid "IDS_ST_HEADER_DELETE_REPORT_SWA"
+msgstr "Delete report"
+
+msgid "IDS_ST_POP_PD_REPORTS_WILL_BE_DELETED_ABB_SWA"
+msgstr "%d reports will be deleted."
+
+msgid "IDS_ST_TPOP_1_REPORT_DELETED_SWA"
+msgstr "1 report deleted."
+
+msgid "IDS_ST_MBODY_SELECT_ALL_SWA"
+msgstr "Select all"
+
+msgid "IDS_ST_ACBUTTON_DELETE_SWA"
+msgstr "DELETE"
+
+msgid "IDS_ST_ACBUTTON_CANCEL_SWA"
+msgstr "CANCEL"
+
+msgid "IDS_ST_TPOP_PD_REPORTS_DELETED_SWA"
+msgstr "%d reports deleted."
+
+msgid "IDS_ST_HEADER_SELECT_ITEMS_SWA"
+msgstr "Select items"
+
+msgid "IDS_ST_HEADER_PD_SELECTED_SWA"
+msgstr "%d selected"
+
+msgid "IDS_ST_TPOP_BASIC_PROTECTION_MODE_TURNED_ON_SWA"
+msgstr "Basic protection mode turned on."
+
+msgid "IDS_ST_TPOP_RULE_CREATED_SWA"
+msgstr "Rule created. Custom protection mode turned on."
+
+msgid "IDS_ST_TPOP_ADVANCED_PROTECTION_MODE_TURNED_ON_SWA"
+msgstr "Advanced protection mode turned on."
+
+msgid "IDS_ST_HEADER_DETAILS_SWA"
+msgstr "Details"
+
+msgid "IDS_ST_BODY_STRING_TYPE_SWA"
+msgstr "String type"
+
+msgid "IDS_ST_BODY_SEARCH_TERM_SWA"
+msgstr "Search term"
+
+msgid "IDS_ST_BODY_LEAKS_CAPTURED_SWA"
+msgstr "Leaks captured"
+
+msgid "IDS_ST_SBODY_TOTAL_LEAKS_SWA"
+msgstr "Total leaks"
+
+msgid "IDS_ST_HEADER_RULE_DETAILS_SWA"
+msgstr "Rule details"
+
+msgid "IDS_ST_HEADER_PATTERN_DETAILS_SWA"
+msgstr "Pattern details"
diff --git a/po/sv.po b/po/sv.po
index 8c7bb47..0183191 100755
--- a/po/sv.po
+++ b/po/sv.po
@@ -31,3 +31,272 @@ msgstr "%d gånger"
msgid "IDS_ST_HEADER_PRIVACY_AND_SECURITY_ABB"
msgstr "Sekretess och säkerhet"
+msgid "IDS_ST_HEADER_DATA_LEAK_MONITOR_SWA"
+msgstr "Data leak monitor"
+
+msgid "IDS_ST_MBODY_DATA_LEAK_MONITOR_SWA"
+msgstr "Data leak monitor"
+
+msgid "IDS_ST_SBODY_PREVENT_APPS_FROM_LEAKING_YOUR_SENSITIVE_DATA_WITHOUT_AUTHORISATION_SWA"
+msgstr "Prevent apps from leaking your sensitive data without authorisation."
+
+msgid "IDS_ST_SBODY_TO_ALLOW_THIS_FUNCTION_TO_MONITOR_YOUR_PERSONAL_INFORMATION_YOU_NEED_TO_SET_UP_YOUR_PROFILE_IN_CONTACTS_SWA"
+msgstr "To allow this function to monitor your personal information, you need to set up your profile in Contacts."
+
+msgid "IDS_ST_MBODY_PROTECTION_MODE_SWA"
+msgstr "Protection mode"
+
+msgid "IDS_ST_MBODY_BASIC_M_MODE_SWA"
+msgstr "Basic"
+
+msgid "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"
+msgstr "Monitor your main sensitive data to prevent it from being leaked by most apps. This mode is suitable for regular users."
+
+msgid "IDS_ST_MBODY_ADVANCED_M_MODE_SWA"
+msgstr "Advanced"
+
+msgid "IDS_ST_SBODY_SET_UP_STRICT_RULES_TO_PREVENT_DATA_LEAKAGE_SWA"
+msgstr "Set up strict rules to prevent data leakage."
+
+msgid "IDS_ST_SBODY_THIS_MODE_WILL_AFFECT_APP_PERFORMANCE_SWA"
+msgstr "This mode will affect app performance."
+
+msgid "IDS_ST_POP_SOME_APPS_MAY_BE_BLOCKED_SWA"
+msgstr "Some apps may be blocked."
+
+msgid "IDS_ST_HEADER_TURN_ON_ADVANCED_PROTECTION_MODE_SWA"
+msgstr "Turn on Advanced protection mode"
+
+msgid "IDS_ST_MBODY_CUSTOM_M_MODE_SWA"
+msgstr "Custom"
+
+msgid "IDS_ST_SBODY_CHANGE_DEFAULT_RULES_AND_PATTERNS_AND_CREATE_YOUR_OWN_TO_SET_UP_A_CUSTOMISED_PROTECTION_MODE_SWA"
+msgstr "Change default rules and patterns and create your own to set up a customised protection mode."
+
+msgid "IDS_ST_HEADER_REPORTS_SWA"
+msgstr "Reports"
+
+msgid "IDS_ST_MBODY_FULL_REPORTS_SWA"
+msgstr "Full reports"
+
+msgid "IDS_ST_MBODY_APP_RANKINGS_SWA"
+msgstr "App rankings"
+
+msgid "IDS_ST_MBODY_DATA_STATISTICS_SWA"
+msgstr "Data statistics"
+
+msgid "IDS_ST_MBODY_RULES_AND_PATTERNS_SWA"
+msgstr "Rules and patterns"
+
+msgid "IDS_ST_NPBODY_NO_REPORTS_SWA"
+msgstr "No reports"
+
+msgid "IDS_ST_HEADER_SETTINGS_SWA"
+msgstr "Settings"
+
+msgid "IDS_ST_MBODY_KEEP_LOGS_SWA"
+msgstr "Keep logs"
+
+msgid "IDS_LOGS_CLEANED"
+msgstr "Logs cleaned"
+
+msgid "IDS_LOGS_CLEANED_FAILED"
+msgstr "Failed to clean logs"
+
+msgid "IDS_ST_OPT_1_WEEK_SWA"
+msgstr "1 week"
+
+msgid "IDS_ST_OPT_1_DAY_SWA"
+msgstr "1 day"
+
+msgid "IDS_ST_OPT_1_MONTH_SWA"
+msgstr "1 month"
+
+msgid "IDS_ST_HEADER_REPORT_DETAILS_SWA"
+msgstr "Report details"
+
+msgid "IDS_ST_BODY_CATEGORY_C_SWA"
+msgstr "Category:"
+
+msgid "IDS_ST_BODY_APP_C_SWA"
+msgstr "App:"
+
+msgid "IDS_ST_BODY_DESTINATION_C_SWA"
+msgstr "Destination:"
+
+msgid "IDS_ST_BODY_PATTERN_C_SWA"
+msgstr "Pattern:"
+
+msgid "IDS_ST_BODY_DLP_ACTION"
+msgstr "Action"
+
+msgid "IDS_ST_BODY_PACKET_C_SWA"
+msgstr "Packet:"
+
+msgid "IDS_ST_BODY_DLP_ACTION_ALLOW"
+msgstr "Allow"
+
+msgid "IDS_ST_BODY_DLP_ACTION_DENY"
+msgstr "Deny"
+
+msgid "IDS_ST_BODY_DLP_ACTION_SANITIZE"
+msgstr "Sanitize"
+
+msgid "IDS_ST_BODY_DLP_ACTION_ALL_RULES"
+msgstr "All Rules"
+
+msgid "IDS_ST_OPT_QUICK_M_PROTECTION_MODE_SWA"
+msgstr "Quick"
+
+msgid "IDS_ST_SBODY_CREATE_RULES_QUICKLY_AND_EASILY_SWA"
+msgstr "Create rules quickly and easily."
+
+msgid "IDS_ST_MBODY_CUSTOM_SWA"
+msgstr "Custom"
+
+msgid "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"
+msgstr "Create rules from scratch to give you full control of your data protection. Use this option to create non-standard rules."
+
+msgid "IDS_ST_HEADER_CUSTOM_PROTECTION_MODE_SWA"
+msgstr "Custom protection mode"
+
+msgid "IDS_ST_TAB_RULES_SWA"
+msgstr "Rules"
+
+msgid "IDS_ST_TAB_PATTERNS_SWA"
+msgstr "Patterns"
+
+msgid "IDS_ST_HEADER_SELECT_TEMPLATE_SWA"
+msgstr "Select template"
+
+msgid "IDS_ST_HEADER_SELECT_APPS_SWA"
+msgstr "Select apps"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_CHOOSE_ACTION"
+msgstr "Select Action"
+
+msgid "IDS_ST_ACBUTTON_NEXT_SWA"
+msgstr "NEXT"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_OK"
+msgstr "OK"
+
+msgid "IDS_ST_ACBUTTON_DONE_SWA"
+msgstr "DONE"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_RULE_CREATED_MESSAGE"
+msgstr "Rule created."
+
+msgid "IDS_ST_TPOP_RULE_DELETED_SWA"
+msgstr "Rule deleted."
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_DELETE_RULE_POPUP_TITLE"
+msgstr "Delete Rule"
+
+msgid "IDS_ST_HEADER_DELETE_PATTERNS_SWA"
+msgstr "Delete patterns"
+
+msgid "IDS_ST_POP_THIS_RULE_WILL_BE_DELETED_ABB_SWA"
+msgstr "This rule will be deleted."
+
+msgid "IDS_ST_HEADER_CREATE_PATTERN_SWA"
+msgstr "Create pattern"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_PATTERN"
+msgstr "Custom"
+
+msgid "IDS_ST_TPOP_PD_PATTERNS_DELETED_SWA"
+msgstr "%d patterns deleted."
+
+msgid "IDS_ST_OPT_EDIT_SWA"
+msgstr "Edit"
+
+msgid "IDS_ST_OPT_CREATE_SWA"
+msgstr "Create"
+
+msgid "IDS_ST_OPT_ALL_PATTERNS_SWA"
+msgstr "All patterns"
+
+msgid "IDS_ST_BODY_NAME_SWA"
+msgstr "Name"
+
+msgid "IDS_ST_BODY_DESCRIPTION_SWA"
+msgstr "Description"
+
+msgid "IDS_ST_BODY_CATEGORY_SWA"
+msgstr "Category"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CATEGORY_NAME"
+msgstr "Category name"
+
+msgid "IDS_ST_OPT_STRING_MATCH_SWA"
+msgstr "String match"
+
+msgid "IDS_ST_OPT_REGULAR_EXPRESSION_SWA"
+msgstr "Regular expression"
+
+msgid "IDS_ST_POP_PD_PATTERNS_WILL_BE_DELETED_ABB_SWA"
+msgstr "%d patterns will be deleted."
+
+msgid "IDS_ST_POP_THIS_REPORT_WILL_BE_DELETED_ABB_SWA"
+msgstr "This report will be deleted."
+
+msgid "IDS_ST_OPT_DELETE_SWA"
+msgstr "Delete"
+
+msgid "IDS_ST_HEADER_DELETE_REPORT_SWA"
+msgstr "Delete report"
+
+msgid "IDS_ST_POP_PD_REPORTS_WILL_BE_DELETED_ABB_SWA"
+msgstr "%d reports will be deleted."
+
+msgid "IDS_ST_TPOP_1_REPORT_DELETED_SWA"
+msgstr "1 report deleted."
+
+msgid "IDS_ST_MBODY_SELECT_ALL_SWA"
+msgstr "Select all"
+
+msgid "IDS_ST_ACBUTTON_DELETE_SWA"
+msgstr "DELETE"
+
+msgid "IDS_ST_ACBUTTON_CANCEL_SWA"
+msgstr "CANCEL"
+
+msgid "IDS_ST_TPOP_PD_REPORTS_DELETED_SWA"
+msgstr "%d reports deleted."
+
+msgid "IDS_ST_HEADER_SELECT_ITEMS_SWA"
+msgstr "Select items"
+
+msgid "IDS_ST_HEADER_PD_SELECTED_SWA"
+msgstr "%d selected"
+
+msgid "IDS_ST_TPOP_BASIC_PROTECTION_MODE_TURNED_ON_SWA"
+msgstr "Basic protection mode turned on."
+
+msgid "IDS_ST_TPOP_RULE_CREATED_SWA"
+msgstr "Rule created. Custom protection mode turned on."
+
+msgid "IDS_ST_TPOP_ADVANCED_PROTECTION_MODE_TURNED_ON_SWA"
+msgstr "Advanced protection mode turned on."
+
+msgid "IDS_ST_HEADER_DETAILS_SWA"
+msgstr "Details"
+
+msgid "IDS_ST_BODY_STRING_TYPE_SWA"
+msgstr "String type"
+
+msgid "IDS_ST_BODY_SEARCH_TERM_SWA"
+msgstr "Search term"
+
+msgid "IDS_ST_BODY_LEAKS_CAPTURED_SWA"
+msgstr "Leaks captured"
+
+msgid "IDS_ST_SBODY_TOTAL_LEAKS_SWA"
+msgstr "Total leaks"
+
+msgid "IDS_ST_HEADER_RULE_DETAILS_SWA"
+msgstr "Rule details"
+
+msgid "IDS_ST_HEADER_PATTERN_DETAILS_SWA"
+msgstr "Pattern details"
diff --git a/po/tr_TR.po b/po/tr_TR.po
index 8ced949..3f670f8 100755
--- a/po/tr_TR.po
+++ b/po/tr_TR.po
@@ -31,3 +31,272 @@ msgstr "%d kere"
msgid "IDS_ST_HEADER_PRIVACY_AND_SECURITY_ABB"
msgstr "Gizlilik ve güvenlik"
+msgid "IDS_ST_HEADER_DATA_LEAK_MONITOR_SWA"
+msgstr "Data leak monitor"
+
+msgid "IDS_ST_MBODY_DATA_LEAK_MONITOR_SWA"
+msgstr "Data leak monitor"
+
+msgid "IDS_ST_SBODY_PREVENT_APPS_FROM_LEAKING_YOUR_SENSITIVE_DATA_WITHOUT_AUTHORISATION_SWA"
+msgstr "Prevent apps from leaking your sensitive data without authorisation."
+
+msgid "IDS_ST_SBODY_TO_ALLOW_THIS_FUNCTION_TO_MONITOR_YOUR_PERSONAL_INFORMATION_YOU_NEED_TO_SET_UP_YOUR_PROFILE_IN_CONTACTS_SWA"
+msgstr "To allow this function to monitor your personal information, you need to set up your profile in Contacts."
+
+msgid "IDS_ST_MBODY_PROTECTION_MODE_SWA"
+msgstr "Protection mode"
+
+msgid "IDS_ST_MBODY_BASIC_M_MODE_SWA"
+msgstr "Basic"
+
+msgid "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"
+msgstr "Monitor your main sensitive data to prevent it from being leaked by most apps. This mode is suitable for regular users."
+
+msgid "IDS_ST_MBODY_ADVANCED_M_MODE_SWA"
+msgstr "Advanced"
+
+msgid "IDS_ST_SBODY_SET_UP_STRICT_RULES_TO_PREVENT_DATA_LEAKAGE_SWA"
+msgstr "Set up strict rules to prevent data leakage."
+
+msgid "IDS_ST_SBODY_THIS_MODE_WILL_AFFECT_APP_PERFORMANCE_SWA"
+msgstr "This mode will affect app performance."
+
+msgid "IDS_ST_POP_SOME_APPS_MAY_BE_BLOCKED_SWA"
+msgstr "Some apps may be blocked."
+
+msgid "IDS_ST_HEADER_TURN_ON_ADVANCED_PROTECTION_MODE_SWA"
+msgstr "Turn on Advanced protection mode"
+
+msgid "IDS_ST_MBODY_CUSTOM_M_MODE_SWA"
+msgstr "Custom"
+
+msgid "IDS_ST_SBODY_CHANGE_DEFAULT_RULES_AND_PATTERNS_AND_CREATE_YOUR_OWN_TO_SET_UP_A_CUSTOMISED_PROTECTION_MODE_SWA"
+msgstr "Change default rules and patterns and create your own to set up a customised protection mode."
+
+msgid "IDS_ST_HEADER_REPORTS_SWA"
+msgstr "Reports"
+
+msgid "IDS_ST_MBODY_FULL_REPORTS_SWA"
+msgstr "Full reports"
+
+msgid "IDS_ST_MBODY_APP_RANKINGS_SWA"
+msgstr "App rankings"
+
+msgid "IDS_ST_MBODY_DATA_STATISTICS_SWA"
+msgstr "Data statistics"
+
+msgid "IDS_ST_MBODY_RULES_AND_PATTERNS_SWA"
+msgstr "Rules and patterns"
+
+msgid "IDS_ST_NPBODY_NO_REPORTS_SWA"
+msgstr "No reports"
+
+msgid "IDS_ST_HEADER_SETTINGS_SWA"
+msgstr "Settings"
+
+msgid "IDS_ST_MBODY_KEEP_LOGS_SWA"
+msgstr "Keep logs"
+
+msgid "IDS_LOGS_CLEANED"
+msgstr "Logs cleaned"
+
+msgid "IDS_LOGS_CLEANED_FAILED"
+msgstr "Failed to clean logs"
+
+msgid "IDS_ST_OPT_1_WEEK_SWA"
+msgstr "1 week"
+
+msgid "IDS_ST_OPT_1_DAY_SWA"
+msgstr "1 day"
+
+msgid "IDS_ST_OPT_1_MONTH_SWA"
+msgstr "1 month"
+
+msgid "IDS_ST_HEADER_REPORT_DETAILS_SWA"
+msgstr "Report details"
+
+msgid "IDS_ST_BODY_CATEGORY_C_SWA"
+msgstr "Category:"
+
+msgid "IDS_ST_BODY_APP_C_SWA"
+msgstr "App:"
+
+msgid "IDS_ST_BODY_DESTINATION_C_SWA"
+msgstr "Destination:"
+
+msgid "IDS_ST_BODY_PATTERN_C_SWA"
+msgstr "Pattern:"
+
+msgid "IDS_ST_BODY_DLP_ACTION"
+msgstr "Action"
+
+msgid "IDS_ST_BODY_PACKET_C_SWA"
+msgstr "Packet:"
+
+msgid "IDS_ST_BODY_DLP_ACTION_ALLOW"
+msgstr "Allow"
+
+msgid "IDS_ST_BODY_DLP_ACTION_DENY"
+msgstr "Deny"
+
+msgid "IDS_ST_BODY_DLP_ACTION_SANITIZE"
+msgstr "Sanitize"
+
+msgid "IDS_ST_BODY_DLP_ACTION_ALL_RULES"
+msgstr "All Rules"
+
+msgid "IDS_ST_OPT_QUICK_M_PROTECTION_MODE_SWA"
+msgstr "Quick"
+
+msgid "IDS_ST_SBODY_CREATE_RULES_QUICKLY_AND_EASILY_SWA"
+msgstr "Create rules quickly and easily."
+
+msgid "IDS_ST_MBODY_CUSTOM_SWA"
+msgstr "Custom"
+
+msgid "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"
+msgstr "Create rules from scratch to give you full control of your data protection. Use this option to create non-standard rules."
+
+msgid "IDS_ST_HEADER_CUSTOM_PROTECTION_MODE_SWA"
+msgstr "Custom protection mode"
+
+msgid "IDS_ST_TAB_RULES_SWA"
+msgstr "Rules"
+
+msgid "IDS_ST_TAB_PATTERNS_SWA"
+msgstr "Patterns"
+
+msgid "IDS_ST_HEADER_SELECT_TEMPLATE_SWA"
+msgstr "Select template"
+
+msgid "IDS_ST_HEADER_SELECT_APPS_SWA"
+msgstr "Select apps"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_CHOOSE_ACTION"
+msgstr "Select Action"
+
+msgid "IDS_ST_ACBUTTON_NEXT_SWA"
+msgstr "NEXT"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_OK"
+msgstr "OK"
+
+msgid "IDS_ST_ACBUTTON_DONE_SWA"
+msgstr "DONE"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_RULE_CREATED_MESSAGE"
+msgstr "Rule created."
+
+msgid "IDS_ST_TPOP_RULE_DELETED_SWA"
+msgstr "Rule deleted."
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_DELETE_RULE_POPUP_TITLE"
+msgstr "Delete Rule"
+
+msgid "IDS_ST_HEADER_DELETE_PATTERNS_SWA"
+msgstr "Delete patterns"
+
+msgid "IDS_ST_POP_THIS_RULE_WILL_BE_DELETED_ABB_SWA"
+msgstr "This rule will be deleted."
+
+msgid "IDS_ST_HEADER_CREATE_PATTERN_SWA"
+msgstr "Create pattern"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_PATTERN"
+msgstr "Custom"
+
+msgid "IDS_ST_TPOP_PD_PATTERNS_DELETED_SWA"
+msgstr "%d patterns deleted."
+
+msgid "IDS_ST_OPT_EDIT_SWA"
+msgstr "Edit"
+
+msgid "IDS_ST_OPT_CREATE_SWA"
+msgstr "Create"
+
+msgid "IDS_ST_OPT_ALL_PATTERNS_SWA"
+msgstr "All patterns"
+
+msgid "IDS_ST_BODY_NAME_SWA"
+msgstr "Name"
+
+msgid "IDS_ST_BODY_DESCRIPTION_SWA"
+msgstr "Description"
+
+msgid "IDS_ST_BODY_CATEGORY_SWA"
+msgstr "Category"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CATEGORY_NAME"
+msgstr "Category name"
+
+msgid "IDS_ST_OPT_STRING_MATCH_SWA"
+msgstr "String match"
+
+msgid "IDS_ST_OPT_REGULAR_EXPRESSION_SWA"
+msgstr "Regular expression"
+
+msgid "IDS_ST_POP_PD_PATTERNS_WILL_BE_DELETED_ABB_SWA"
+msgstr "%d patterns will be deleted."
+
+msgid "IDS_ST_POP_THIS_REPORT_WILL_BE_DELETED_ABB_SWA"
+msgstr "This report will be deleted."
+
+msgid "IDS_ST_OPT_DELETE_SWA"
+msgstr "Delete"
+
+msgid "IDS_ST_HEADER_DELETE_REPORT_SWA"
+msgstr "Delete report"
+
+msgid "IDS_ST_POP_PD_REPORTS_WILL_BE_DELETED_ABB_SWA"
+msgstr "%d reports will be deleted."
+
+msgid "IDS_ST_TPOP_1_REPORT_DELETED_SWA"
+msgstr "1 report deleted."
+
+msgid "IDS_ST_MBODY_SELECT_ALL_SWA"
+msgstr "Select all"
+
+msgid "IDS_ST_ACBUTTON_DELETE_SWA"
+msgstr "DELETE"
+
+msgid "IDS_ST_ACBUTTON_CANCEL_SWA"
+msgstr "CANCEL"
+
+msgid "IDS_ST_TPOP_PD_REPORTS_DELETED_SWA"
+msgstr "%d reports deleted."
+
+msgid "IDS_ST_HEADER_SELECT_ITEMS_SWA"
+msgstr "Select items"
+
+msgid "IDS_ST_HEADER_PD_SELECTED_SWA"
+msgstr "%d selected"
+
+msgid "IDS_ST_TPOP_BASIC_PROTECTION_MODE_TURNED_ON_SWA"
+msgstr "Basic protection mode turned on."
+
+msgid "IDS_ST_TPOP_RULE_CREATED_SWA"
+msgstr "Rule created. Custom protection mode turned on."
+
+msgid "IDS_ST_TPOP_ADVANCED_PROTECTION_MODE_TURNED_ON_SWA"
+msgstr "Advanced protection mode turned on."
+
+msgid "IDS_ST_HEADER_DETAILS_SWA"
+msgstr "Details"
+
+msgid "IDS_ST_BODY_STRING_TYPE_SWA"
+msgstr "String type"
+
+msgid "IDS_ST_BODY_SEARCH_TERM_SWA"
+msgstr "Search term"
+
+msgid "IDS_ST_BODY_LEAKS_CAPTURED_SWA"
+msgstr "Leaks captured"
+
+msgid "IDS_ST_SBODY_TOTAL_LEAKS_SWA"
+msgstr "Total leaks"
+
+msgid "IDS_ST_HEADER_RULE_DETAILS_SWA"
+msgstr "Rule details"
+
+msgid "IDS_ST_HEADER_PATTERN_DETAILS_SWA"
+msgstr "Pattern details"
diff --git a/po/uk.po b/po/uk.po
index 4525dab..f3fcdf5 100755
--- a/po/uk.po
+++ b/po/uk.po
@@ -31,3 +31,272 @@ msgstr "%d разів"
msgid "IDS_ST_HEADER_PRIVACY_AND_SECURITY_ABB"
msgstr "Конфіденц. та безпека"
+msgid "IDS_ST_HEADER_DATA_LEAK_MONITOR_SWA"
+msgstr "Data leak monitor"
+
+msgid "IDS_ST_MBODY_DATA_LEAK_MONITOR_SWA"
+msgstr "Data leak monitor"
+
+msgid "IDS_ST_SBODY_PREVENT_APPS_FROM_LEAKING_YOUR_SENSITIVE_DATA_WITHOUT_AUTHORISATION_SWA"
+msgstr "Prevent apps from leaking your sensitive data without authorisation."
+
+msgid "IDS_ST_SBODY_TO_ALLOW_THIS_FUNCTION_TO_MONITOR_YOUR_PERSONAL_INFORMATION_YOU_NEED_TO_SET_UP_YOUR_PROFILE_IN_CONTACTS_SWA"
+msgstr "To allow this function to monitor your personal information, you need to set up your profile in Contacts."
+
+msgid "IDS_ST_MBODY_PROTECTION_MODE_SWA"
+msgstr "Protection mode"
+
+msgid "IDS_ST_MBODY_BASIC_M_MODE_SWA"
+msgstr "Basic"
+
+msgid "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"
+msgstr "Monitor your main sensitive data to prevent it from being leaked by most apps. This mode is suitable for regular users."
+
+msgid "IDS_ST_MBODY_ADVANCED_M_MODE_SWA"
+msgstr "Advanced"
+
+msgid "IDS_ST_SBODY_SET_UP_STRICT_RULES_TO_PREVENT_DATA_LEAKAGE_SWA"
+msgstr "Set up strict rules to prevent data leakage."
+
+msgid "IDS_ST_SBODY_THIS_MODE_WILL_AFFECT_APP_PERFORMANCE_SWA"
+msgstr "This mode will affect app performance."
+
+msgid "IDS_ST_POP_SOME_APPS_MAY_BE_BLOCKED_SWA"
+msgstr "Some apps may be blocked."
+
+msgid "IDS_ST_HEADER_TURN_ON_ADVANCED_PROTECTION_MODE_SWA"
+msgstr "Turn on Advanced protection mode"
+
+msgid "IDS_ST_MBODY_CUSTOM_M_MODE_SWA"
+msgstr "Custom"
+
+msgid "IDS_ST_SBODY_CHANGE_DEFAULT_RULES_AND_PATTERNS_AND_CREATE_YOUR_OWN_TO_SET_UP_A_CUSTOMISED_PROTECTION_MODE_SWA"
+msgstr "Change default rules and patterns and create your own to set up a customised protection mode."
+
+msgid "IDS_ST_HEADER_REPORTS_SWA"
+msgstr "Reports"
+
+msgid "IDS_ST_MBODY_FULL_REPORTS_SWA"
+msgstr "Full reports"
+
+msgid "IDS_ST_MBODY_APP_RANKINGS_SWA"
+msgstr "App rankings"
+
+msgid "IDS_ST_MBODY_DATA_STATISTICS_SWA"
+msgstr "Data statistics"
+
+msgid "IDS_ST_MBODY_RULES_AND_PATTERNS_SWA"
+msgstr "Rules and patterns"
+
+msgid "IDS_ST_NPBODY_NO_REPORTS_SWA"
+msgstr "No reports"
+
+msgid "IDS_ST_HEADER_SETTINGS_SWA"
+msgstr "Settings"
+
+msgid "IDS_ST_MBODY_KEEP_LOGS_SWA"
+msgstr "Keep logs"
+
+msgid "IDS_LOGS_CLEANED"
+msgstr "Logs cleaned"
+
+msgid "IDS_LOGS_CLEANED_FAILED"
+msgstr "Failed to clean logs"
+
+msgid "IDS_ST_OPT_1_WEEK_SWA"
+msgstr "1 week"
+
+msgid "IDS_ST_OPT_1_DAY_SWA"
+msgstr "1 day"
+
+msgid "IDS_ST_OPT_1_MONTH_SWA"
+msgstr "1 month"
+
+msgid "IDS_ST_HEADER_REPORT_DETAILS_SWA"
+msgstr "Report details"
+
+msgid "IDS_ST_BODY_CATEGORY_C_SWA"
+msgstr "Category:"
+
+msgid "IDS_ST_BODY_APP_C_SWA"
+msgstr "App:"
+
+msgid "IDS_ST_BODY_DESTINATION_C_SWA"
+msgstr "Destination:"
+
+msgid "IDS_ST_BODY_PATTERN_C_SWA"
+msgstr "Pattern:"
+
+msgid "IDS_ST_BODY_DLP_ACTION"
+msgstr "Action"
+
+msgid "IDS_ST_BODY_PACKET_C_SWA"
+msgstr "Packet:"
+
+msgid "IDS_ST_BODY_DLP_ACTION_ALLOW"
+msgstr "Allow"
+
+msgid "IDS_ST_BODY_DLP_ACTION_DENY"
+msgstr "Deny"
+
+msgid "IDS_ST_BODY_DLP_ACTION_SANITIZE"
+msgstr "Sanitize"
+
+msgid "IDS_ST_BODY_DLP_ACTION_ALL_RULES"
+msgstr "All Rules"
+
+msgid "IDS_ST_OPT_QUICK_M_PROTECTION_MODE_SWA"
+msgstr "Quick"
+
+msgid "IDS_ST_SBODY_CREATE_RULES_QUICKLY_AND_EASILY_SWA"
+msgstr "Create rules quickly and easily."
+
+msgid "IDS_ST_MBODY_CUSTOM_SWA"
+msgstr "Custom"
+
+msgid "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"
+msgstr "Create rules from scratch to give you full control of your data protection. Use this option to create non-standard rules."
+
+msgid "IDS_ST_HEADER_CUSTOM_PROTECTION_MODE_SWA"
+msgstr "Custom protection mode"
+
+msgid "IDS_ST_TAB_RULES_SWA"
+msgstr "Rules"
+
+msgid "IDS_ST_TAB_PATTERNS_SWA"
+msgstr "Patterns"
+
+msgid "IDS_ST_HEADER_SELECT_TEMPLATE_SWA"
+msgstr "Select template"
+
+msgid "IDS_ST_HEADER_SELECT_APPS_SWA"
+msgstr "Select apps"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_CHOOSE_ACTION"
+msgstr "Select Action"
+
+msgid "IDS_ST_ACBUTTON_NEXT_SWA"
+msgstr "NEXT"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_OK"
+msgstr "OK"
+
+msgid "IDS_ST_ACBUTTON_DONE_SWA"
+msgstr "DONE"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_RULE_CREATED_MESSAGE"
+msgstr "Rule created."
+
+msgid "IDS_ST_TPOP_RULE_DELETED_SWA"
+msgstr "Rule deleted."
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_DELETE_RULE_POPUP_TITLE"
+msgstr "Delete Rule"
+
+msgid "IDS_ST_HEADER_DELETE_PATTERNS_SWA"
+msgstr "Delete patterns"
+
+msgid "IDS_ST_POP_THIS_RULE_WILL_BE_DELETED_ABB_SWA"
+msgstr "This rule will be deleted."
+
+msgid "IDS_ST_HEADER_CREATE_PATTERN_SWA"
+msgstr "Create pattern"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_PATTERN"
+msgstr "Custom"
+
+msgid "IDS_ST_TPOP_PD_PATTERNS_DELETED_SWA"
+msgstr "%d patterns deleted."
+
+msgid "IDS_ST_OPT_EDIT_SWA"
+msgstr "Edit"
+
+msgid "IDS_ST_OPT_CREATE_SWA"
+msgstr "Create"
+
+msgid "IDS_ST_OPT_ALL_PATTERNS_SWA"
+msgstr "All patterns"
+
+msgid "IDS_ST_BODY_NAME_SWA"
+msgstr "Name"
+
+msgid "IDS_ST_BODY_DESCRIPTION_SWA"
+msgstr "Description"
+
+msgid "IDS_ST_BODY_CATEGORY_SWA"
+msgstr "Category"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CATEGORY_NAME"
+msgstr "Category name"
+
+msgid "IDS_ST_OPT_STRING_MATCH_SWA"
+msgstr "String match"
+
+msgid "IDS_ST_OPT_REGULAR_EXPRESSION_SWA"
+msgstr "Regular expression"
+
+msgid "IDS_ST_POP_PD_PATTERNS_WILL_BE_DELETED_ABB_SWA"
+msgstr "%d patterns will be deleted."
+
+msgid "IDS_ST_POP_THIS_REPORT_WILL_BE_DELETED_ABB_SWA"
+msgstr "This report will be deleted."
+
+msgid "IDS_ST_OPT_DELETE_SWA"
+msgstr "Delete"
+
+msgid "IDS_ST_HEADER_DELETE_REPORT_SWA"
+msgstr "Delete report"
+
+msgid "IDS_ST_POP_PD_REPORTS_WILL_BE_DELETED_ABB_SWA"
+msgstr "%d reports will be deleted."
+
+msgid "IDS_ST_TPOP_1_REPORT_DELETED_SWA"
+msgstr "1 report deleted."
+
+msgid "IDS_ST_MBODY_SELECT_ALL_SWA"
+msgstr "Select all"
+
+msgid "IDS_ST_ACBUTTON_DELETE_SWA"
+msgstr "DELETE"
+
+msgid "IDS_ST_ACBUTTON_CANCEL_SWA"
+msgstr "CANCEL"
+
+msgid "IDS_ST_TPOP_PD_REPORTS_DELETED_SWA"
+msgstr "%d reports deleted."
+
+msgid "IDS_ST_HEADER_SELECT_ITEMS_SWA"
+msgstr "Select items"
+
+msgid "IDS_ST_HEADER_PD_SELECTED_SWA"
+msgstr "%d selected"
+
+msgid "IDS_ST_TPOP_BASIC_PROTECTION_MODE_TURNED_ON_SWA"
+msgstr "Basic protection mode turned on."
+
+msgid "IDS_ST_TPOP_RULE_CREATED_SWA"
+msgstr "Rule created. Custom protection mode turned on."
+
+msgid "IDS_ST_TPOP_ADVANCED_PROTECTION_MODE_TURNED_ON_SWA"
+msgstr "Advanced protection mode turned on."
+
+msgid "IDS_ST_HEADER_DETAILS_SWA"
+msgstr "Details"
+
+msgid "IDS_ST_BODY_STRING_TYPE_SWA"
+msgstr "String type"
+
+msgid "IDS_ST_BODY_SEARCH_TERM_SWA"
+msgstr "Search term"
+
+msgid "IDS_ST_BODY_LEAKS_CAPTURED_SWA"
+msgstr "Leaks captured"
+
+msgid "IDS_ST_SBODY_TOTAL_LEAKS_SWA"
+msgstr "Total leaks"
+
+msgid "IDS_ST_HEADER_RULE_DETAILS_SWA"
+msgstr "Rule details"
+
+msgid "IDS_ST_HEADER_PATTERN_DETAILS_SWA"
+msgstr "Pattern details"
diff --git a/po/uz.po b/po/uz.po
index 2e3dc9d..9ae1c16 100755
--- a/po/uz.po
+++ b/po/uz.po
@@ -31,3 +31,272 @@ msgstr "%d marta"
msgid "IDS_ST_HEADER_PRIVACY_AND_SECURITY_ABB"
msgstr "Maxfiy. va xavfsizlik"
+msgid "IDS_ST_HEADER_DATA_LEAK_MONITOR_SWA"
+msgstr "Data leak monitor"
+
+msgid "IDS_ST_MBODY_DATA_LEAK_MONITOR_SWA"
+msgstr "Data leak monitor"
+
+msgid "IDS_ST_SBODY_PREVENT_APPS_FROM_LEAKING_YOUR_SENSITIVE_DATA_WITHOUT_AUTHORISATION_SWA"
+msgstr "Prevent apps from leaking your sensitive data without authorisation."
+
+msgid "IDS_ST_SBODY_TO_ALLOW_THIS_FUNCTION_TO_MONITOR_YOUR_PERSONAL_INFORMATION_YOU_NEED_TO_SET_UP_YOUR_PROFILE_IN_CONTACTS_SWA"
+msgstr "To allow this function to monitor your personal information, you need to set up your profile in Contacts."
+
+msgid "IDS_ST_MBODY_PROTECTION_MODE_SWA"
+msgstr "Protection mode"
+
+msgid "IDS_ST_MBODY_BASIC_M_MODE_SWA"
+msgstr "Basic"
+
+msgid "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"
+msgstr "Monitor your main sensitive data to prevent it from being leaked by most apps. This mode is suitable for regular users."
+
+msgid "IDS_ST_MBODY_ADVANCED_M_MODE_SWA"
+msgstr "Advanced"
+
+msgid "IDS_ST_SBODY_SET_UP_STRICT_RULES_TO_PREVENT_DATA_LEAKAGE_SWA"
+msgstr "Set up strict rules to prevent data leakage."
+
+msgid "IDS_ST_SBODY_THIS_MODE_WILL_AFFECT_APP_PERFORMANCE_SWA"
+msgstr "This mode will affect app performance."
+
+msgid "IDS_ST_POP_SOME_APPS_MAY_BE_BLOCKED_SWA"
+msgstr "Some apps may be blocked."
+
+msgid "IDS_ST_HEADER_TURN_ON_ADVANCED_PROTECTION_MODE_SWA"
+msgstr "Turn on Advanced protection mode"
+
+msgid "IDS_ST_MBODY_CUSTOM_M_MODE_SWA"
+msgstr "Custom"
+
+msgid "IDS_ST_SBODY_CHANGE_DEFAULT_RULES_AND_PATTERNS_AND_CREATE_YOUR_OWN_TO_SET_UP_A_CUSTOMISED_PROTECTION_MODE_SWA"
+msgstr "Change default rules and patterns and create your own to set up a customised protection mode."
+
+msgid "IDS_ST_HEADER_REPORTS_SWA"
+msgstr "Reports"
+
+msgid "IDS_ST_MBODY_FULL_REPORTS_SWA"
+msgstr "Full reports"
+
+msgid "IDS_ST_MBODY_APP_RANKINGS_SWA"
+msgstr "App rankings"
+
+msgid "IDS_ST_MBODY_DATA_STATISTICS_SWA"
+msgstr "Data statistics"
+
+msgid "IDS_ST_MBODY_RULES_AND_PATTERNS_SWA"
+msgstr "Rules and patterns"
+
+msgid "IDS_ST_NPBODY_NO_REPORTS_SWA"
+msgstr "No reports"
+
+msgid "IDS_ST_HEADER_SETTINGS_SWA"
+msgstr "Settings"
+
+msgid "IDS_ST_MBODY_KEEP_LOGS_SWA"
+msgstr "Keep logs"
+
+msgid "IDS_LOGS_CLEANED"
+msgstr "Logs cleaned"
+
+msgid "IDS_LOGS_CLEANED_FAILED"
+msgstr "Failed to clean logs"
+
+msgid "IDS_ST_OPT_1_WEEK_SWA"
+msgstr "1 week"
+
+msgid "IDS_ST_OPT_1_DAY_SWA"
+msgstr "1 day"
+
+msgid "IDS_ST_OPT_1_MONTH_SWA"
+msgstr "1 month"
+
+msgid "IDS_ST_HEADER_REPORT_DETAILS_SWA"
+msgstr "Report details"
+
+msgid "IDS_ST_BODY_CATEGORY_C_SWA"
+msgstr "Category:"
+
+msgid "IDS_ST_BODY_APP_C_SWA"
+msgstr "App:"
+
+msgid "IDS_ST_BODY_DESTINATION_C_SWA"
+msgstr "Destination:"
+
+msgid "IDS_ST_BODY_PATTERN_C_SWA"
+msgstr "Pattern:"
+
+msgid "IDS_ST_BODY_DLP_ACTION"
+msgstr "Action"
+
+msgid "IDS_ST_BODY_PACKET_C_SWA"
+msgstr "Packet:"
+
+msgid "IDS_ST_BODY_DLP_ACTION_ALLOW"
+msgstr "Allow"
+
+msgid "IDS_ST_BODY_DLP_ACTION_DENY"
+msgstr "Deny"
+
+msgid "IDS_ST_BODY_DLP_ACTION_SANITIZE"
+msgstr "Sanitize"
+
+msgid "IDS_ST_BODY_DLP_ACTION_ALL_RULES"
+msgstr "All Rules"
+
+msgid "IDS_ST_OPT_QUICK_M_PROTECTION_MODE_SWA"
+msgstr "Quick"
+
+msgid "IDS_ST_SBODY_CREATE_RULES_QUICKLY_AND_EASILY_SWA"
+msgstr "Create rules quickly and easily."
+
+msgid "IDS_ST_MBODY_CUSTOM_SWA"
+msgstr "Custom"
+
+msgid "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"
+msgstr "Create rules from scratch to give you full control of your data protection. Use this option to create non-standard rules."
+
+msgid "IDS_ST_HEADER_CUSTOM_PROTECTION_MODE_SWA"
+msgstr "Custom protection mode"
+
+msgid "IDS_ST_TAB_RULES_SWA"
+msgstr "Rules"
+
+msgid "IDS_ST_TAB_PATTERNS_SWA"
+msgstr "Patterns"
+
+msgid "IDS_ST_HEADER_SELECT_TEMPLATE_SWA"
+msgstr "Select template"
+
+msgid "IDS_ST_HEADER_SELECT_APPS_SWA"
+msgstr "Select apps"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_CHOOSE_ACTION"
+msgstr "Select Action"
+
+msgid "IDS_ST_ACBUTTON_NEXT_SWA"
+msgstr "NEXT"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_OK"
+msgstr "OK"
+
+msgid "IDS_ST_ACBUTTON_DONE_SWA"
+msgstr "DONE"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_RULE_CREATED_MESSAGE"
+msgstr "Rule created."
+
+msgid "IDS_ST_TPOP_RULE_DELETED_SWA"
+msgstr "Rule deleted."
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_DELETE_RULE_POPUP_TITLE"
+msgstr "Delete Rule"
+
+msgid "IDS_ST_HEADER_DELETE_PATTERNS_SWA"
+msgstr "Delete patterns"
+
+msgid "IDS_ST_POP_THIS_RULE_WILL_BE_DELETED_ABB_SWA"
+msgstr "This rule will be deleted."
+
+msgid "IDS_ST_HEADER_CREATE_PATTERN_SWA"
+msgstr "Create pattern"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_PATTERN"
+msgstr "Custom"
+
+msgid "IDS_ST_TPOP_PD_PATTERNS_DELETED_SWA"
+msgstr "%d patterns deleted."
+
+msgid "IDS_ST_OPT_EDIT_SWA"
+msgstr "Edit"
+
+msgid "IDS_ST_OPT_CREATE_SWA"
+msgstr "Create"
+
+msgid "IDS_ST_OPT_ALL_PATTERNS_SWA"
+msgstr "All patterns"
+
+msgid "IDS_ST_BODY_NAME_SWA"
+msgstr "Name"
+
+msgid "IDS_ST_BODY_DESCRIPTION_SWA"
+msgstr "Description"
+
+msgid "IDS_ST_BODY_CATEGORY_SWA"
+msgstr "Category"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CATEGORY_NAME"
+msgstr "Category name"
+
+msgid "IDS_ST_OPT_STRING_MATCH_SWA"
+msgstr "String match"
+
+msgid "IDS_ST_OPT_REGULAR_EXPRESSION_SWA"
+msgstr "Regular expression"
+
+msgid "IDS_ST_POP_PD_PATTERNS_WILL_BE_DELETED_ABB_SWA"
+msgstr "%d patterns will be deleted."
+
+msgid "IDS_ST_POP_THIS_REPORT_WILL_BE_DELETED_ABB_SWA"
+msgstr "This report will be deleted."
+
+msgid "IDS_ST_OPT_DELETE_SWA"
+msgstr "Delete"
+
+msgid "IDS_ST_HEADER_DELETE_REPORT_SWA"
+msgstr "Delete report"
+
+msgid "IDS_ST_POP_PD_REPORTS_WILL_BE_DELETED_ABB_SWA"
+msgstr "%d reports will be deleted."
+
+msgid "IDS_ST_TPOP_1_REPORT_DELETED_SWA"
+msgstr "1 report deleted."
+
+msgid "IDS_ST_MBODY_SELECT_ALL_SWA"
+msgstr "Select all"
+
+msgid "IDS_ST_ACBUTTON_DELETE_SWA"
+msgstr "DELETE"
+
+msgid "IDS_ST_ACBUTTON_CANCEL_SWA"
+msgstr "CANCEL"
+
+msgid "IDS_ST_TPOP_PD_REPORTS_DELETED_SWA"
+msgstr "%d reports deleted."
+
+msgid "IDS_ST_HEADER_SELECT_ITEMS_SWA"
+msgstr "Select items"
+
+msgid "IDS_ST_HEADER_PD_SELECTED_SWA"
+msgstr "%d selected"
+
+msgid "IDS_ST_TPOP_BASIC_PROTECTION_MODE_TURNED_ON_SWA"
+msgstr "Basic protection mode turned on."
+
+msgid "IDS_ST_TPOP_RULE_CREATED_SWA"
+msgstr "Rule created. Custom protection mode turned on."
+
+msgid "IDS_ST_TPOP_ADVANCED_PROTECTION_MODE_TURNED_ON_SWA"
+msgstr "Advanced protection mode turned on."
+
+msgid "IDS_ST_HEADER_DETAILS_SWA"
+msgstr "Details"
+
+msgid "IDS_ST_BODY_STRING_TYPE_SWA"
+msgstr "String type"
+
+msgid "IDS_ST_BODY_SEARCH_TERM_SWA"
+msgstr "Search term"
+
+msgid "IDS_ST_BODY_LEAKS_CAPTURED_SWA"
+msgstr "Leaks captured"
+
+msgid "IDS_ST_SBODY_TOTAL_LEAKS_SWA"
+msgstr "Total leaks"
+
+msgid "IDS_ST_HEADER_RULE_DETAILS_SWA"
+msgstr "Rule details"
+
+msgid "IDS_ST_HEADER_PATTERN_DETAILS_SWA"
+msgstr "Pattern details"
diff --git a/po/zh_CN.po b/po/zh_CN.po
index e9161cc..5000e39 100755
--- a/po/zh_CN.po
+++ b/po/zh_CN.po
@@ -31,3 +31,272 @@ msgstr "%d 次"
msgid "IDS_ST_HEADER_PRIVACY_AND_SECURITY_ABB"
msgstr "隐私和安全"
+msgid "IDS_ST_HEADER_DATA_LEAK_MONITOR_SWA"
+msgstr "Data leak monitor"
+
+msgid "IDS_ST_MBODY_DATA_LEAK_MONITOR_SWA"
+msgstr "Data leak monitor"
+
+msgid "IDS_ST_SBODY_PREVENT_APPS_FROM_LEAKING_YOUR_SENSITIVE_DATA_WITHOUT_AUTHORISATION_SWA"
+msgstr "Prevent apps from leaking your sensitive data without authorisation."
+
+msgid "IDS_ST_SBODY_TO_ALLOW_THIS_FUNCTION_TO_MONITOR_YOUR_PERSONAL_INFORMATION_YOU_NEED_TO_SET_UP_YOUR_PROFILE_IN_CONTACTS_SWA"
+msgstr "To allow this function to monitor your personal information, you need to set up your profile in Contacts."
+
+msgid "IDS_ST_MBODY_PROTECTION_MODE_SWA"
+msgstr "Protection mode"
+
+msgid "IDS_ST_MBODY_BASIC_M_MODE_SWA"
+msgstr "Basic"
+
+msgid "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"
+msgstr "Monitor your main sensitive data to prevent it from being leaked by most apps. This mode is suitable for regular users."
+
+msgid "IDS_ST_MBODY_ADVANCED_M_MODE_SWA"
+msgstr "Advanced"
+
+msgid "IDS_ST_SBODY_SET_UP_STRICT_RULES_TO_PREVENT_DATA_LEAKAGE_SWA"
+msgstr "Set up strict rules to prevent data leakage."
+
+msgid "IDS_ST_SBODY_THIS_MODE_WILL_AFFECT_APP_PERFORMANCE_SWA"
+msgstr "This mode will affect app performance."
+
+msgid "IDS_ST_POP_SOME_APPS_MAY_BE_BLOCKED_SWA"
+msgstr "Some apps may be blocked."
+
+msgid "IDS_ST_HEADER_TURN_ON_ADVANCED_PROTECTION_MODE_SWA"
+msgstr "Turn on Advanced protection mode"
+
+msgid "IDS_ST_MBODY_CUSTOM_M_MODE_SWA"
+msgstr "Custom"
+
+msgid "IDS_ST_SBODY_CHANGE_DEFAULT_RULES_AND_PATTERNS_AND_CREATE_YOUR_OWN_TO_SET_UP_A_CUSTOMISED_PROTECTION_MODE_SWA"
+msgstr "Change default rules and patterns and create your own to set up a customised protection mode."
+
+msgid "IDS_ST_HEADER_REPORTS_SWA"
+msgstr "Reports"
+
+msgid "IDS_ST_MBODY_FULL_REPORTS_SWA"
+msgstr "Full reports"
+
+msgid "IDS_ST_MBODY_APP_RANKINGS_SWA"
+msgstr "App rankings"
+
+msgid "IDS_ST_MBODY_DATA_STATISTICS_SWA"
+msgstr "Data statistics"
+
+msgid "IDS_ST_MBODY_RULES_AND_PATTERNS_SWA"
+msgstr "Rules and patterns"
+
+msgid "IDS_ST_NPBODY_NO_REPORTS_SWA"
+msgstr "No reports"
+
+msgid "IDS_ST_HEADER_SETTINGS_SWA"
+msgstr "Settings"
+
+msgid "IDS_ST_MBODY_KEEP_LOGS_SWA"
+msgstr "Keep logs"
+
+msgid "IDS_LOGS_CLEANED"
+msgstr "Logs cleaned"
+
+msgid "IDS_LOGS_CLEANED_FAILED"
+msgstr "Failed to clean logs"
+
+msgid "IDS_ST_OPT_1_WEEK_SWA"
+msgstr "1 week"
+
+msgid "IDS_ST_OPT_1_DAY_SWA"
+msgstr "1 day"
+
+msgid "IDS_ST_OPT_1_MONTH_SWA"
+msgstr "1 month"
+
+msgid "IDS_ST_HEADER_REPORT_DETAILS_SWA"
+msgstr "Report details"
+
+msgid "IDS_ST_BODY_CATEGORY_C_SWA"
+msgstr "Category:"
+
+msgid "IDS_ST_BODY_APP_C_SWA"
+msgstr "App:"
+
+msgid "IDS_ST_BODY_DESTINATION_C_SWA"
+msgstr "Destination:"
+
+msgid "IDS_ST_BODY_PATTERN_C_SWA"
+msgstr "Pattern:"
+
+msgid "IDS_ST_BODY_DLP_ACTION"
+msgstr "Action"
+
+msgid "IDS_ST_BODY_PACKET_C_SWA"
+msgstr "Packet:"
+
+msgid "IDS_ST_BODY_DLP_ACTION_ALLOW"
+msgstr "Allow"
+
+msgid "IDS_ST_BODY_DLP_ACTION_DENY"
+msgstr "Deny"
+
+msgid "IDS_ST_BODY_DLP_ACTION_SANITIZE"
+msgstr "Sanitize"
+
+msgid "IDS_ST_BODY_DLP_ACTION_ALL_RULES"
+msgstr "All Rules"
+
+msgid "IDS_ST_OPT_QUICK_M_PROTECTION_MODE_SWA"
+msgstr "Quick"
+
+msgid "IDS_ST_SBODY_CREATE_RULES_QUICKLY_AND_EASILY_SWA"
+msgstr "Create rules quickly and easily."
+
+msgid "IDS_ST_MBODY_CUSTOM_SWA"
+msgstr "Custom"
+
+msgid "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"
+msgstr "Create rules from scratch to give you full control of your data protection. Use this option to create non-standard rules."
+
+msgid "IDS_ST_HEADER_CUSTOM_PROTECTION_MODE_SWA"
+msgstr "Custom protection mode"
+
+msgid "IDS_ST_TAB_RULES_SWA"
+msgstr "Rules"
+
+msgid "IDS_ST_TAB_PATTERNS_SWA"
+msgstr "Patterns"
+
+msgid "IDS_ST_HEADER_SELECT_TEMPLATE_SWA"
+msgstr "Select template"
+
+msgid "IDS_ST_HEADER_SELECT_APPS_SWA"
+msgstr "Select apps"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_CHOOSE_ACTION"
+msgstr "Select Action"
+
+msgid "IDS_ST_ACBUTTON_NEXT_SWA"
+msgstr "NEXT"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_OK"
+msgstr "OK"
+
+msgid "IDS_ST_ACBUTTON_DONE_SWA"
+msgstr "DONE"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_RULE_CREATED_MESSAGE"
+msgstr "Rule created."
+
+msgid "IDS_ST_TPOP_RULE_DELETED_SWA"
+msgstr "Rule deleted."
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_DELETE_RULE_POPUP_TITLE"
+msgstr "Delete Rule"
+
+msgid "IDS_ST_HEADER_DELETE_PATTERNS_SWA"
+msgstr "Delete patterns"
+
+msgid "IDS_ST_POP_THIS_RULE_WILL_BE_DELETED_ABB_SWA"
+msgstr "This rule will be deleted."
+
+msgid "IDS_ST_HEADER_CREATE_PATTERN_SWA"
+msgstr "Create pattern"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_PATTERN"
+msgstr "Custom"
+
+msgid "IDS_ST_TPOP_PD_PATTERNS_DELETED_SWA"
+msgstr "%d patterns deleted."
+
+msgid "IDS_ST_OPT_EDIT_SWA"
+msgstr "Edit"
+
+msgid "IDS_ST_OPT_CREATE_SWA"
+msgstr "Create"
+
+msgid "IDS_ST_OPT_ALL_PATTERNS_SWA"
+msgstr "All patterns"
+
+msgid "IDS_ST_BODY_NAME_SWA"
+msgstr "Name"
+
+msgid "IDS_ST_BODY_DESCRIPTION_SWA"
+msgstr "Description"
+
+msgid "IDS_ST_BODY_CATEGORY_SWA"
+msgstr "Category"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CATEGORY_NAME"
+msgstr "Category name"
+
+msgid "IDS_ST_OPT_STRING_MATCH_SWA"
+msgstr "String match"
+
+msgid "IDS_ST_OPT_REGULAR_EXPRESSION_SWA"
+msgstr "Regular expression"
+
+msgid "IDS_ST_POP_PD_PATTERNS_WILL_BE_DELETED_ABB_SWA"
+msgstr "%d patterns will be deleted."
+
+msgid "IDS_ST_POP_THIS_REPORT_WILL_BE_DELETED_ABB_SWA"
+msgstr "This report will be deleted."
+
+msgid "IDS_ST_OPT_DELETE_SWA"
+msgstr "Delete"
+
+msgid "IDS_ST_HEADER_DELETE_REPORT_SWA"
+msgstr "Delete report"
+
+msgid "IDS_ST_POP_PD_REPORTS_WILL_BE_DELETED_ABB_SWA"
+msgstr "%d reports will be deleted."
+
+msgid "IDS_ST_TPOP_1_REPORT_DELETED_SWA"
+msgstr "1 report deleted."
+
+msgid "IDS_ST_MBODY_SELECT_ALL_SWA"
+msgstr "Select all"
+
+msgid "IDS_ST_ACBUTTON_DELETE_SWA"
+msgstr "DELETE"
+
+msgid "IDS_ST_ACBUTTON_CANCEL_SWA"
+msgstr "CANCEL"
+
+msgid "IDS_ST_TPOP_PD_REPORTS_DELETED_SWA"
+msgstr "%d reports deleted."
+
+msgid "IDS_ST_HEADER_SELECT_ITEMS_SWA"
+msgstr "Select items"
+
+msgid "IDS_ST_HEADER_PD_SELECTED_SWA"
+msgstr "%d selected"
+
+msgid "IDS_ST_TPOP_BASIC_PROTECTION_MODE_TURNED_ON_SWA"
+msgstr "Basic protection mode turned on."
+
+msgid "IDS_ST_TPOP_RULE_CREATED_SWA"
+msgstr "Rule created. Custom protection mode turned on."
+
+msgid "IDS_ST_TPOP_ADVANCED_PROTECTION_MODE_TURNED_ON_SWA"
+msgstr "Advanced protection mode turned on."
+
+msgid "IDS_ST_HEADER_DETAILS_SWA"
+msgstr "Details"
+
+msgid "IDS_ST_BODY_STRING_TYPE_SWA"
+msgstr "String type"
+
+msgid "IDS_ST_BODY_SEARCH_TERM_SWA"
+msgstr "Search term"
+
+msgid "IDS_ST_BODY_LEAKS_CAPTURED_SWA"
+msgstr "Leaks captured"
+
+msgid "IDS_ST_SBODY_TOTAL_LEAKS_SWA"
+msgstr "Total leaks"
+
+msgid "IDS_ST_HEADER_RULE_DETAILS_SWA"
+msgstr "Rule details"
+
+msgid "IDS_ST_HEADER_PATTERN_DETAILS_SWA"
+msgstr "Pattern details"
diff --git a/po/zh_HK.po b/po/zh_HK.po
index 15e5ebb..a5d2d43 100755
--- a/po/zh_HK.po
+++ b/po/zh_HK.po
@@ -31,3 +31,272 @@ msgstr "%d 次"
msgid "IDS_ST_HEADER_PRIVACY_AND_SECURITY_ABB"
msgstr "私隱與安全"
+msgid "IDS_ST_HEADER_DATA_LEAK_MONITOR_SWA"
+msgstr "Data leak monitor"
+
+msgid "IDS_ST_MBODY_DATA_LEAK_MONITOR_SWA"
+msgstr "Data leak monitor"
+
+msgid "IDS_ST_SBODY_PREVENT_APPS_FROM_LEAKING_YOUR_SENSITIVE_DATA_WITHOUT_AUTHORISATION_SWA"
+msgstr "Prevent apps from leaking your sensitive data without authorisation."
+
+msgid "IDS_ST_SBODY_TO_ALLOW_THIS_FUNCTION_TO_MONITOR_YOUR_PERSONAL_INFORMATION_YOU_NEED_TO_SET_UP_YOUR_PROFILE_IN_CONTACTS_SWA"
+msgstr "To allow this function to monitor your personal information, you need to set up your profile in Contacts."
+
+msgid "IDS_ST_MBODY_PROTECTION_MODE_SWA"
+msgstr "Protection mode"
+
+msgid "IDS_ST_MBODY_BASIC_M_MODE_SWA"
+msgstr "Basic"
+
+msgid "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"
+msgstr "Monitor your main sensitive data to prevent it from being leaked by most apps. This mode is suitable for regular users."
+
+msgid "IDS_ST_MBODY_ADVANCED_M_MODE_SWA"
+msgstr "Advanced"
+
+msgid "IDS_ST_SBODY_SET_UP_STRICT_RULES_TO_PREVENT_DATA_LEAKAGE_SWA"
+msgstr "Set up strict rules to prevent data leakage."
+
+msgid "IDS_ST_SBODY_THIS_MODE_WILL_AFFECT_APP_PERFORMANCE_SWA"
+msgstr "This mode will affect app performance."
+
+msgid "IDS_ST_POP_SOME_APPS_MAY_BE_BLOCKED_SWA"
+msgstr "Some apps may be blocked."
+
+msgid "IDS_ST_HEADER_TURN_ON_ADVANCED_PROTECTION_MODE_SWA"
+msgstr "Turn on Advanced protection mode"
+
+msgid "IDS_ST_MBODY_CUSTOM_M_MODE_SWA"
+msgstr "Custom"
+
+msgid "IDS_ST_SBODY_CHANGE_DEFAULT_RULES_AND_PATTERNS_AND_CREATE_YOUR_OWN_TO_SET_UP_A_CUSTOMISED_PROTECTION_MODE_SWA"
+msgstr "Change default rules and patterns and create your own to set up a customised protection mode."
+
+msgid "IDS_ST_HEADER_REPORTS_SWA"
+msgstr "Reports"
+
+msgid "IDS_ST_MBODY_FULL_REPORTS_SWA"
+msgstr "Full reports"
+
+msgid "IDS_ST_MBODY_APP_RANKINGS_SWA"
+msgstr "App rankings"
+
+msgid "IDS_ST_MBODY_DATA_STATISTICS_SWA"
+msgstr "Data statistics"
+
+msgid "IDS_ST_MBODY_RULES_AND_PATTERNS_SWA"
+msgstr "Rules and patterns"
+
+msgid "IDS_ST_NPBODY_NO_REPORTS_SWA"
+msgstr "No reports"
+
+msgid "IDS_ST_HEADER_SETTINGS_SWA"
+msgstr "Settings"
+
+msgid "IDS_ST_MBODY_KEEP_LOGS_SWA"
+msgstr "Keep logs"
+
+msgid "IDS_LOGS_CLEANED"
+msgstr "Logs cleaned"
+
+msgid "IDS_LOGS_CLEANED_FAILED"
+msgstr "Failed to clean logs"
+
+msgid "IDS_ST_OPT_1_WEEK_SWA"
+msgstr "1 week"
+
+msgid "IDS_ST_OPT_1_DAY_SWA"
+msgstr "1 day"
+
+msgid "IDS_ST_OPT_1_MONTH_SWA"
+msgstr "1 month"
+
+msgid "IDS_ST_HEADER_REPORT_DETAILS_SWA"
+msgstr "Report details"
+
+msgid "IDS_ST_BODY_CATEGORY_C_SWA"
+msgstr "Category:"
+
+msgid "IDS_ST_BODY_APP_C_SWA"
+msgstr "App:"
+
+msgid "IDS_ST_BODY_DESTINATION_C_SWA"
+msgstr "Destination:"
+
+msgid "IDS_ST_BODY_PATTERN_C_SWA"
+msgstr "Pattern:"
+
+msgid "IDS_ST_BODY_DLP_ACTION"
+msgstr "Action"
+
+msgid "IDS_ST_BODY_PACKET_C_SWA"
+msgstr "Packet:"
+
+msgid "IDS_ST_BODY_DLP_ACTION_ALLOW"
+msgstr "Allow"
+
+msgid "IDS_ST_BODY_DLP_ACTION_DENY"
+msgstr "Deny"
+
+msgid "IDS_ST_BODY_DLP_ACTION_SANITIZE"
+msgstr "Sanitize"
+
+msgid "IDS_ST_BODY_DLP_ACTION_ALL_RULES"
+msgstr "All Rules"
+
+msgid "IDS_ST_OPT_QUICK_M_PROTECTION_MODE_SWA"
+msgstr "Quick"
+
+msgid "IDS_ST_SBODY_CREATE_RULES_QUICKLY_AND_EASILY_SWA"
+msgstr "Create rules quickly and easily."
+
+msgid "IDS_ST_MBODY_CUSTOM_SWA"
+msgstr "Custom"
+
+msgid "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"
+msgstr "Create rules from scratch to give you full control of your data protection. Use this option to create non-standard rules."
+
+msgid "IDS_ST_HEADER_CUSTOM_PROTECTION_MODE_SWA"
+msgstr "Custom protection mode"
+
+msgid "IDS_ST_TAB_RULES_SWA"
+msgstr "Rules"
+
+msgid "IDS_ST_TAB_PATTERNS_SWA"
+msgstr "Patterns"
+
+msgid "IDS_ST_HEADER_SELECT_TEMPLATE_SWA"
+msgstr "Select template"
+
+msgid "IDS_ST_HEADER_SELECT_APPS_SWA"
+msgstr "Select apps"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_CHOOSE_ACTION"
+msgstr "Select Action"
+
+msgid "IDS_ST_ACBUTTON_NEXT_SWA"
+msgstr "NEXT"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_OK"
+msgstr "OK"
+
+msgid "IDS_ST_ACBUTTON_DONE_SWA"
+msgstr "DONE"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_RULE_CREATED_MESSAGE"
+msgstr "Rule created."
+
+msgid "IDS_ST_TPOP_RULE_DELETED_SWA"
+msgstr "Rule deleted."
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_DELETE_RULE_POPUP_TITLE"
+msgstr "Delete Rule"
+
+msgid "IDS_ST_HEADER_DELETE_PATTERNS_SWA"
+msgstr "Delete patterns"
+
+msgid "IDS_ST_POP_THIS_RULE_WILL_BE_DELETED_ABB_SWA"
+msgstr "This rule will be deleted."
+
+msgid "IDS_ST_HEADER_CREATE_PATTERN_SWA"
+msgstr "Create pattern"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_PATTERN"
+msgstr "Custom"
+
+msgid "IDS_ST_TPOP_PD_PATTERNS_DELETED_SWA"
+msgstr "%d patterns deleted."
+
+msgid "IDS_ST_OPT_EDIT_SWA"
+msgstr "Edit"
+
+msgid "IDS_ST_OPT_CREATE_SWA"
+msgstr "Create"
+
+msgid "IDS_ST_OPT_ALL_PATTERNS_SWA"
+msgstr "All patterns"
+
+msgid "IDS_ST_BODY_NAME_SWA"
+msgstr "Name"
+
+msgid "IDS_ST_BODY_DESCRIPTION_SWA"
+msgstr "Description"
+
+msgid "IDS_ST_BODY_CATEGORY_SWA"
+msgstr "Category"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CATEGORY_NAME"
+msgstr "Category name"
+
+msgid "IDS_ST_OPT_STRING_MATCH_SWA"
+msgstr "String match"
+
+msgid "IDS_ST_OPT_REGULAR_EXPRESSION_SWA"
+msgstr "Regular expression"
+
+msgid "IDS_ST_POP_PD_PATTERNS_WILL_BE_DELETED_ABB_SWA"
+msgstr "%d patterns will be deleted."
+
+msgid "IDS_ST_POP_THIS_REPORT_WILL_BE_DELETED_ABB_SWA"
+msgstr "This report will be deleted."
+
+msgid "IDS_ST_OPT_DELETE_SWA"
+msgstr "Delete"
+
+msgid "IDS_ST_HEADER_DELETE_REPORT_SWA"
+msgstr "Delete report"
+
+msgid "IDS_ST_POP_PD_REPORTS_WILL_BE_DELETED_ABB_SWA"
+msgstr "%d reports will be deleted."
+
+msgid "IDS_ST_TPOP_1_REPORT_DELETED_SWA"
+msgstr "1 report deleted."
+
+msgid "IDS_ST_MBODY_SELECT_ALL_SWA"
+msgstr "Select all"
+
+msgid "IDS_ST_ACBUTTON_DELETE_SWA"
+msgstr "DELETE"
+
+msgid "IDS_ST_ACBUTTON_CANCEL_SWA"
+msgstr "CANCEL"
+
+msgid "IDS_ST_TPOP_PD_REPORTS_DELETED_SWA"
+msgstr "%d reports deleted."
+
+msgid "IDS_ST_HEADER_SELECT_ITEMS_SWA"
+msgstr "Select items"
+
+msgid "IDS_ST_HEADER_PD_SELECTED_SWA"
+msgstr "%d selected"
+
+msgid "IDS_ST_TPOP_BASIC_PROTECTION_MODE_TURNED_ON_SWA"
+msgstr "Basic protection mode turned on."
+
+msgid "IDS_ST_TPOP_RULE_CREATED_SWA"
+msgstr "Rule created. Custom protection mode turned on."
+
+msgid "IDS_ST_TPOP_ADVANCED_PROTECTION_MODE_TURNED_ON_SWA"
+msgstr "Advanced protection mode turned on."
+
+msgid "IDS_ST_HEADER_DETAILS_SWA"
+msgstr "Details"
+
+msgid "IDS_ST_BODY_STRING_TYPE_SWA"
+msgstr "String type"
+
+msgid "IDS_ST_BODY_SEARCH_TERM_SWA"
+msgstr "Search term"
+
+msgid "IDS_ST_BODY_LEAKS_CAPTURED_SWA"
+msgstr "Leaks captured"
+
+msgid "IDS_ST_SBODY_TOTAL_LEAKS_SWA"
+msgstr "Total leaks"
+
+msgid "IDS_ST_HEADER_RULE_DETAILS_SWA"
+msgstr "Rule details"
+
+msgid "IDS_ST_HEADER_PATTERN_DETAILS_SWA"
+msgstr "Pattern details"
diff --git a/po/zh_TW.po b/po/zh_TW.po
index 2c437ee..6ad7077 100755
--- a/po/zh_TW.po
+++ b/po/zh_TW.po
@@ -31,3 +31,272 @@ msgstr "%d 次"
msgid "IDS_ST_HEADER_PRIVACY_AND_SECURITY_ABB"
msgstr "隱私權與安全性"
+msgid "IDS_ST_HEADER_DATA_LEAK_MONITOR_SWA"
+msgstr "Data leak monitor"
+
+msgid "IDS_ST_MBODY_DATA_LEAK_MONITOR_SWA"
+msgstr "Data leak monitor"
+
+msgid "IDS_ST_SBODY_PREVENT_APPS_FROM_LEAKING_YOUR_SENSITIVE_DATA_WITHOUT_AUTHORISATION_SWA"
+msgstr "Prevent apps from leaking your sensitive data without authorisation."
+
+msgid "IDS_ST_SBODY_TO_ALLOW_THIS_FUNCTION_TO_MONITOR_YOUR_PERSONAL_INFORMATION_YOU_NEED_TO_SET_UP_YOUR_PROFILE_IN_CONTACTS_SWA"
+msgstr "To allow this function to monitor your personal information, you need to set up your profile in Contacts."
+
+msgid "IDS_ST_MBODY_PROTECTION_MODE_SWA"
+msgstr "Protection mode"
+
+msgid "IDS_ST_MBODY_BASIC_M_MODE_SWA"
+msgstr "Basic"
+
+msgid "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"
+msgstr "Monitor your main sensitive data to prevent it from being leaked by most apps. This mode is suitable for regular users."
+
+msgid "IDS_ST_MBODY_ADVANCED_M_MODE_SWA"
+msgstr "Advanced"
+
+msgid "IDS_ST_SBODY_SET_UP_STRICT_RULES_TO_PREVENT_DATA_LEAKAGE_SWA"
+msgstr "Set up strict rules to prevent data leakage."
+
+msgid "IDS_ST_SBODY_THIS_MODE_WILL_AFFECT_APP_PERFORMANCE_SWA"
+msgstr "This mode will affect app performance."
+
+msgid "IDS_ST_POP_SOME_APPS_MAY_BE_BLOCKED_SWA"
+msgstr "Some apps may be blocked."
+
+msgid "IDS_ST_HEADER_TURN_ON_ADVANCED_PROTECTION_MODE_SWA"
+msgstr "Turn on Advanced protection mode"
+
+msgid "IDS_ST_MBODY_CUSTOM_M_MODE_SWA"
+msgstr "Custom"
+
+msgid "IDS_ST_SBODY_CHANGE_DEFAULT_RULES_AND_PATTERNS_AND_CREATE_YOUR_OWN_TO_SET_UP_A_CUSTOMISED_PROTECTION_MODE_SWA"
+msgstr "Change default rules and patterns and create your own to set up a customised protection mode."
+
+msgid "IDS_ST_HEADER_REPORTS_SWA"
+msgstr "Reports"
+
+msgid "IDS_ST_MBODY_FULL_REPORTS_SWA"
+msgstr "Full reports"
+
+msgid "IDS_ST_MBODY_APP_RANKINGS_SWA"
+msgstr "App rankings"
+
+msgid "IDS_ST_MBODY_DATA_STATISTICS_SWA"
+msgstr "Data statistics"
+
+msgid "IDS_ST_MBODY_RULES_AND_PATTERNS_SWA"
+msgstr "Rules and patterns"
+
+msgid "IDS_ST_NPBODY_NO_REPORTS_SWA"
+msgstr "No reports"
+
+msgid "IDS_ST_HEADER_SETTINGS_SWA"
+msgstr "Settings"
+
+msgid "IDS_ST_MBODY_KEEP_LOGS_SWA"
+msgstr "Keep logs"
+
+msgid "IDS_LOGS_CLEANED"
+msgstr "Logs cleaned"
+
+msgid "IDS_LOGS_CLEANED_FAILED"
+msgstr "Failed to clean logs"
+
+msgid "IDS_ST_OPT_1_WEEK_SWA"
+msgstr "1 week"
+
+msgid "IDS_ST_OPT_1_DAY_SWA"
+msgstr "1 day"
+
+msgid "IDS_ST_OPT_1_MONTH_SWA"
+msgstr "1 month"
+
+msgid "IDS_ST_HEADER_REPORT_DETAILS_SWA"
+msgstr "Report details"
+
+msgid "IDS_ST_BODY_CATEGORY_C_SWA"
+msgstr "Category:"
+
+msgid "IDS_ST_BODY_APP_C_SWA"
+msgstr "App:"
+
+msgid "IDS_ST_BODY_DESTINATION_C_SWA"
+msgstr "Destination:"
+
+msgid "IDS_ST_BODY_PATTERN_C_SWA"
+msgstr "Pattern:"
+
+msgid "IDS_ST_BODY_DLP_ACTION"
+msgstr "Action"
+
+msgid "IDS_ST_BODY_PACKET_C_SWA"
+msgstr "Packet:"
+
+msgid "IDS_ST_BODY_DLP_ACTION_ALLOW"
+msgstr "Allow"
+
+msgid "IDS_ST_BODY_DLP_ACTION_DENY"
+msgstr "Deny"
+
+msgid "IDS_ST_BODY_DLP_ACTION_SANITIZE"
+msgstr "Sanitize"
+
+msgid "IDS_ST_BODY_DLP_ACTION_ALL_RULES"
+msgstr "All Rules"
+
+msgid "IDS_ST_OPT_QUICK_M_PROTECTION_MODE_SWA"
+msgstr "Quick"
+
+msgid "IDS_ST_SBODY_CREATE_RULES_QUICKLY_AND_EASILY_SWA"
+msgstr "Create rules quickly and easily."
+
+msgid "IDS_ST_MBODY_CUSTOM_SWA"
+msgstr "Custom"
+
+msgid "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"
+msgstr "Create rules from scratch to give you full control of your data protection. Use this option to create non-standard rules."
+
+msgid "IDS_ST_HEADER_CUSTOM_PROTECTION_MODE_SWA"
+msgstr "Custom protection mode"
+
+msgid "IDS_ST_TAB_RULES_SWA"
+msgstr "Rules"
+
+msgid "IDS_ST_TAB_PATTERNS_SWA"
+msgstr "Patterns"
+
+msgid "IDS_ST_HEADER_SELECT_TEMPLATE_SWA"
+msgstr "Select template"
+
+msgid "IDS_ST_HEADER_SELECT_APPS_SWA"
+msgstr "Select apps"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_CHOOSE_ACTION"
+msgstr "Select Action"
+
+msgid "IDS_ST_ACBUTTON_NEXT_SWA"
+msgstr "NEXT"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_OK"
+msgstr "OK"
+
+msgid "IDS_ST_ACBUTTON_DONE_SWA"
+msgstr "DONE"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_RULE_CREATED_MESSAGE"
+msgstr "Rule created."
+
+msgid "IDS_ST_TPOP_RULE_DELETED_SWA"
+msgstr "Rule deleted."
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_DELETE_RULE_POPUP_TITLE"
+msgstr "Delete Rule"
+
+msgid "IDS_ST_HEADER_DELETE_PATTERNS_SWA"
+msgstr "Delete patterns"
+
+msgid "IDS_ST_POP_THIS_RULE_WILL_BE_DELETED_ABB_SWA"
+msgstr "This rule will be deleted."
+
+msgid "IDS_ST_HEADER_CREATE_PATTERN_SWA"
+msgstr "Create pattern"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CUSTOM_PATTERN"
+msgstr "Custom"
+
+msgid "IDS_ST_TPOP_PD_PATTERNS_DELETED_SWA"
+msgstr "%d patterns deleted."
+
+msgid "IDS_ST_OPT_EDIT_SWA"
+msgstr "Edit"
+
+msgid "IDS_ST_OPT_CREATE_SWA"
+msgstr "Create"
+
+msgid "IDS_ST_OPT_ALL_PATTERNS_SWA"
+msgstr "All patterns"
+
+msgid "IDS_ST_BODY_NAME_SWA"
+msgstr "Name"
+
+msgid "IDS_ST_BODY_DESCRIPTION_SWA"
+msgstr "Description"
+
+msgid "IDS_ST_BODY_CATEGORY_SWA"
+msgstr "Category"
+
+msgid "IDS_ST_BODY_DLP_CREATE_RULES_MENU_CATEGORY_NAME"
+msgstr "Category name"
+
+msgid "IDS_ST_OPT_STRING_MATCH_SWA"
+msgstr "String match"
+
+msgid "IDS_ST_OPT_REGULAR_EXPRESSION_SWA"
+msgstr "Regular expression"
+
+msgid "IDS_ST_POP_PD_PATTERNS_WILL_BE_DELETED_ABB_SWA"
+msgstr "%d patterns will be deleted."
+
+msgid "IDS_ST_POP_THIS_REPORT_WILL_BE_DELETED_ABB_SWA"
+msgstr "This report will be deleted."
+
+msgid "IDS_ST_OPT_DELETE_SWA"
+msgstr "Delete"
+
+msgid "IDS_ST_HEADER_DELETE_REPORT_SWA"
+msgstr "Delete report"
+
+msgid "IDS_ST_POP_PD_REPORTS_WILL_BE_DELETED_ABB_SWA"
+msgstr "%d reports will be deleted."
+
+msgid "IDS_ST_TPOP_1_REPORT_DELETED_SWA"
+msgstr "1 report deleted."
+
+msgid "IDS_ST_MBODY_SELECT_ALL_SWA"
+msgstr "Select all"
+
+msgid "IDS_ST_ACBUTTON_DELETE_SWA"
+msgstr "DELETE"
+
+msgid "IDS_ST_ACBUTTON_CANCEL_SWA"
+msgstr "CANCEL"
+
+msgid "IDS_ST_TPOP_PD_REPORTS_DELETED_SWA"
+msgstr "%d reports deleted."
+
+msgid "IDS_ST_HEADER_SELECT_ITEMS_SWA"
+msgstr "Select items"
+
+msgid "IDS_ST_HEADER_PD_SELECTED_SWA"
+msgstr "%d selected"
+
+msgid "IDS_ST_TPOP_BASIC_PROTECTION_MODE_TURNED_ON_SWA"
+msgstr "Basic protection mode turned on."
+
+msgid "IDS_ST_TPOP_RULE_CREATED_SWA"
+msgstr "Rule created. Custom protection mode turned on."
+
+msgid "IDS_ST_TPOP_ADVANCED_PROTECTION_MODE_TURNED_ON_SWA"
+msgstr "Advanced protection mode turned on."
+
+msgid "IDS_ST_HEADER_DETAILS_SWA"
+msgstr "Details"
+
+msgid "IDS_ST_BODY_STRING_TYPE_SWA"
+msgstr "String type"
+
+msgid "IDS_ST_BODY_SEARCH_TERM_SWA"
+msgstr "Search term"
+
+msgid "IDS_ST_BODY_LEAKS_CAPTURED_SWA"
+msgstr "Leaks captured"
+
+msgid "IDS_ST_SBODY_TOTAL_LEAKS_SWA"
+msgstr "Total leaks"
+
+msgid "IDS_ST_HEADER_RULE_DETAILS_SWA"
+msgstr "Rule details"
+
+msgid "IDS_ST_HEADER_PATTERN_DETAILS_SWA"
+msgstr "Pattern details"
diff --git a/ui/CMakeLists.txt b/ui/CMakeLists.txt
index f712051..1c9ea65 100755
--- a/ui/CMakeLists.txt
+++ b/ui/CMakeLists.txt
@@ -5,12 +5,34 @@ pkg_check_modules(${pkg_name} REQUIRED glib-2.0 evas elementary edje eina efl-ex
SET(SRCS
${CMAKE_SOURCE_DIR}/common/src/common_utils.c
+ ${CMAKE_SOURCE_DIR}/common/src/common_ctxpopup.c
+ ${CMAKE_SOURCE_DIR}/common/src/common_edit_field.c
+ ${CMAKE_SOURCE_DIR}/common/src/common_popup.c
src/main_privacy_setting.c
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})
diff --git a/ui/include/privacy_setting.h b/ui/include/privacy_setting.h
index a7c9cb5..0993de1 100644
--- a/ui/include/privacy_setting.h
+++ b/ui/include/privacy_setting.h
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-/*
+/**
* @file privacy_setting.h
* @author Yunjin Lee <yunjin-.lee@samsung.com>
* @version 1.0
@@ -26,9 +26,103 @@
#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_BODY_DLP_CREATE_RULES_MENU_CUSTOM_RULE_CREATED_MESSAGE"
+#define PRIVACY_MENU_DLP_CREATE_RULES_MENU_OK "IDS_ST_BODY_DLP_CREATE_RULES_MENU_OK"
+#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_BODY_DLP_CREATE_RULES_MENU_DELETE_RULE_POPUP_TITLE"
+#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;
diff --git a/ui/include/privacy_view.h b/ui/include/privacy_view.h
index c2c6d95..5c8146f 100644
--- a/ui/include/privacy_view.h
+++ b/ui/include/privacy_view.h
@@ -13,20 +13,29 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-/*
+/**
* @file privacy_view.h
* @author Yunjin Lee <yunjin-.lee@samsung.com>
* @version 1.0
* @brief
*/
+#ifndef __UI_PRIVACY_SETTING_PRIVACY_VIEW_H_
+#define __UI_PRIVACY_SETTING_PRIVACY_VIEW_H_
#include <Elementary.h>
#include <glib.h>
#include <app.h>
+#include <dlog.h>
#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 {
char* pkgid;
char* label;
@@ -66,13 +75,165 @@ 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);
+/* privacy_list_view */
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
new file mode 100644
index 0000000..f3bc0eb
--- /dev/null
+++ b/ui/src/privacy_dlp_choose_apps_view.c
@@ -0,0 +1,577 @@
+/*
+ * 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>
+
+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;
+
+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);
+ free(app_item);
+ }
+}
+
+size_t get_number_of_selected_apps(Evas_Object *genlist);
+void set_app_item_check_state(Elm_Object_Item *item, const bool state);
+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 = malloc(sizeof(get_custom_rule_s));
+
+ if (rule != NULL) {
+ 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);
+ } else {
+ return false;
+ }
+ }
+ 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);
+}
+
+/**
+ * @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 = malloc(sizeof(application_item_s));
+
+ if (app != NULL) {
+ 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
+ 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 = strdup("");
+ } else {
+ 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("");
+ }
+
+ choose_app_data_s *choose_app_data = user_data;
+ if (NULL == choose_app_data->editing_rule)
+ app->is_checked = true;
+ else {
+ app->is_checked = (0 == strcmp(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);
+}
+
+static gint _compare_apps_id_cb(gconstpointer lhs, gconstpointer rhs)
+{
+ return strcmp(((const application_item_s *)lhs)->id, (const char*)rhs);
+}
+
+/**
+ * @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);
+ elm_image_file_set(icon, app_item->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;
+}
+
+/**
+ * @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_full(choose_app_data->app_list, free_application_item);
+ choose_app_data->app_list = NULL;
+
+ g_list_free_full(choose_app_data->editing_rules_list, free);
+ 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);
+}
+
+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;
+}
+
+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 = calloc(1, sizeof(application_item_s));
+ if (NULL != select_all_item) {
+ 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 || (NULL != editing_rule && '\0' == editing_rule->application_id[0]));
+ select_all_item->check = NULL;
+ data->app_list = g_list_prepend(data->app_list, select_all_item);
+ }
+}
+
+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);
+ }
+}
+
+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);
+ }
+}
+
+/**
+ * @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;
+ g_list_free_full(data.app_list, free_application_item);
+ 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);
+
+ 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 = NULL;
+ Elm_Object_Item *it = NULL;
+ GList* l;
+ for (l = data.app_list; l != NULL; l = l->next) {
+ // append item to the genlist
+ 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");
+ }
+
+ 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
new file mode 100644
index 0000000..d3f5919
--- /dev/null
+++ b/ui/src/privacy_dlp_choose_rule_template_view.c
@@ -0,0 +1,370 @@
+/*
+ * 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 = malloc(sizeof(get_pattern_s));
+
+ if (dlp_pattern != NULL) {
+ 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_append(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);
+ free(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
+ */
+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_rule);
+ 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;
+ }
+
+ 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;
+
+ Elm_Object_Item *it = NULL;
+ GList* l;
+ for (l = quick_rule_template_data.pattern_list; l != NULL; l = l->next) {
+ quick_rule_template_item_s *item = calloc(1, sizeof(quick_rule_template_item_s));
+
+ if (item != NULL) {
+ // item data
+ item->pattern = l->data;
+ item->radio = NULL;
+
+ // append item to the genlist
+ 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);
+ } else {
+ LOGE("privacy_guard_client_foreach_dlp_patterns() failed to calloc quick_rule_template_item_s");
+ }
+ }
+
+ 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
new file mode 100644
index 0000000..6fbb069
--- /dev/null
+++ b/ui/src/privacy_dlp_log_detailed_view.c
@@ -0,0 +1,253 @@
+/**
+ * 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_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);
+
+ destroy_popup(ldd->confirm_popup);
+ ldd->confirm_popup = NULL;
+ 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;
+ destroy_popup(ldd->confirm_popup);
+ ldd->confirm_popup = NULL;
+}
+
+static void _log_details_delete_menu_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ log_details_data_s *ldd = data;
+ delete_ctxpopup(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_CREATE_RULES_MENU_OK),
+ _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);
+}
+
+static void _log_details_menu_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ log_details_data_s *ldd = data;
+ 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);
+}
+
+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);
+}
+
+char* get_log_action(int action)
+{
+ switch (action) {
+ case PRIV_GUARD_DLP_ACTION_ALLOW:
+ return dgettext("privacy-setting", PRIVACY_MENU_DLP_REPORTS_DETAILS_ACTION_ALLOW);
+ case PRIV_GUARD_DLP_ACTION_DENY:
+ return dgettext("privacy-setting", PRIVACY_MENU_DLP_REPORTS_DETAILS_ACTION_DENY);
+ case PRIV_GUARD_DLP_ACTION_SANITIZE:
+ return dgettext("privacy-setting", PRIVACY_MENU_DLP_REPORTS_DETAILS_ACTION_SANITIZE);
+ default:
+ return " ";
+ }
+}
+
+bool is_undisplayable_char(const unsigned char value)
+{
+ return (value != 0xa && value != 0xd && (value < ' ' || value > '~'));
+}
+
+/**
+ * @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);
+
+ char *log_info_syntax = "<br><b>%s </b> %s<br>";
+
+ size_t string_mem_needed = snprintf(NULL, 0, log_info_syntax, dgettext("privacy-setting", PRIVACY_MENU_DLP_REPORTS_DETAILS_CATEGORY), detailed_log.category.text);
+ char *string_buf = malloc(string_mem_needed + 1);
+ if (NULL != string_buf) {
+ snprintf(string_buf, string_mem_needed+1, log_info_syntax, dgettext("privacy-setting", PRIVACY_MENU_DLP_REPORTS_DETAILS_CATEGORY), detailed_log.category.text);
+ elm_entry_entry_insert(entry, string_buf);
+ free(string_buf);
+ }
+
+ string_mem_needed = snprintf(NULL, 0, log_info_syntax, dgettext("privacy-setting", PRIVACY_MENU_DLP_REPORTS_DETAILS_APPLICATION), detailed_log.application_name);
+ string_buf = malloc(string_mem_needed + 1);
+ if (NULL != string_buf) {
+ snprintf(string_buf, string_mem_needed+1, log_info_syntax, dgettext("privacy-setting", PRIVACY_MENU_DLP_REPORTS_DETAILS_APPLICATION), detailed_log.application_name);
+ elm_entry_entry_insert(entry, string_buf);
+ free(string_buf);
+ }
+
+ string_mem_needed = snprintf(NULL, 0, log_info_syntax, dgettext("privacy-setting", PRIVACY_MENU_DLP_REPORTS_DETAILS_DESTINATION), detailed_log.destination);
+ string_buf = malloc(string_mem_needed + 1);
+ if (NULL != string_buf) {
+ snprintf(string_buf, string_mem_needed+1, log_info_syntax, dgettext("privacy-setting", PRIVACY_MENU_DLP_REPORTS_DETAILS_DESTINATION), detailed_log.destination);
+ elm_entry_entry_insert(entry, string_buf);
+ free(string_buf);
+ }
+
+ string_mem_needed = snprintf(NULL, 0, log_info_syntax, dgettext("privacy-setting", PRIVACY_MENU_DLP_REPORTS_DETAILS_PATTERN), detailed_log.pattern_name);
+ string_buf = malloc(string_mem_needed + 1);
+ if (NULL != string_buf) {
+ snprintf(string_buf, string_mem_needed+1, log_info_syntax, dgettext("privacy-setting", PRIVACY_MENU_DLP_REPORTS_DETAILS_PATTERN), detailed_log.pattern_name);
+ elm_entry_entry_insert(entry, string_buf);
+ free(string_buf);
+ }
+
+ // NOTE: code below is commented out because only allow actions will be
+ // released to Tizen 4.0, so action information is not meaningful.
+ // string_mem_needed = snprintf(NULL, 0, log_info_syntax, dgettext("privacy-setting", PRIVACY_MENU_DLP_REPORTS_DETAILS_ACTION), get_log_action(detailed_log.action));
+ // string_buf = malloc(string_mem_needed+1);
+ // sprintf(string_buf, log_info_syntax, dgettext("privacy-setting", PRIVACY_MENU_DLP_REPORTS_DETAILS_ACTION), get_log_action(detailed_log.action));
+ // elm_entry_entry_insert(entry, string_buf);
+ // free(string_buf);
+
+ string_mem_needed = snprintf(NULL, 0, "<br><b>%s</b><br>", dgettext("privacy-setting", PRIVACY_MENU_DLP_REPORTS_DETAILS_LOG));
+ string_buf = malloc(string_mem_needed + 1);
+ if (NULL != string_buf) {
+ snprintf(string_buf, string_mem_needed+1, "<br><b>%s</b><br>", dgettext("privacy-setting", PRIVACY_MENU_DLP_REPORTS_DETAILS_LOG));
+ elm_entry_entry_insert(entry, string_buf);
+ free(string_buf);
+ }
+
+ // 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;
+ char *raw_packet = malloc(packet_len + 1);
+
+ if (raw_packet != NULL) {
+ 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] = '.';
+ }
+
+ const unsigned char last_byte = 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));
+
+ free(raw_packet);
+ }
+
+ 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_BACK, _log_details_back_cb, &log_details_data);
+ 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
new file mode 100644
index 0000000..22fd0d7
--- /dev/null
+++ b/ui/src/privacy_dlp_menu_view.c
@@ -0,0 +1,814 @@
+/*
+ * 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")) {
+ const char *format = "%s<font_size=25><br/>%s</font_size>";
+ int string_mem_needed = snprintf(NULL, 0, format,
+ dgettext("privacy-setting", PRIVACY_MENU_DLP_DESCRIPTION),
+ dgettext("privacy-setting", PRIVACY_MENU_DLP_DESCRIPTION_NOTE));
+ char *string_buf = malloc(string_mem_needed+1);
+
+ if (string_buf != NULL) {
+ snprintf(string_buf, string_mem_needed, format,
+ dgettext("privacy-setting", PRIVACY_MENU_DLP_DESCRIPTION),
+ dgettext("privacy-setting", PRIVACY_MENU_DLP_DESCRIPTION_NOTE));
+ return string_buf;
+ }
+ }
+
+ 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:
+ {
+ const char *format = "%s<font_size=25><br/>%s</font_size>";
+ int string_mem_needed = snprintf(NULL, 0, format,
+ dgettext("privacy-setting", PRIVACY_MENU_DLP_PROFILE_ADVANCED_DESCRIPTION),
+ dgettext("privacy-setting", PRIVACY_MENU_DLP_PROFILE_ADVANCED_DESCRIPTION_NOTE));
+ char *string_buf = malloc(string_mem_needed+1);
+
+ if (string_buf != NULL) {
+ snprintf(string_buf, string_mem_needed, format,
+ dgettext("privacy-setting", PRIVACY_MENU_DLP_PROFILE_ADVANCED_DESCRIPTION),
+ dgettext("privacy-setting", PRIVACY_MENU_DLP_PROFILE_ADVANCED_DESCRIPTION_NOTE));
+ return string_buf;
+ }
+
+ break;
+ }
+ 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 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_OK),
+ _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)
+{
+ item_data_s *id = data;
+ free(id);
+}
+
+/*
+ * @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, NULL, 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_append(menu_reports_list, PRIVACY_MENU_DLP_REPORTS_FULL);
+ menu_reports_list = g_list_append(menu_reports_list, PRIVACY_MENU_DLP_REPORTS_APP_RANK);
+ menu_reports_list = g_list_append(menu_reports_list, PRIVACY_MENU_DLP_REPORTS_STATISTICS);
+ menu_reports_list = g_list_append(menu_reports_list, PRIVACY_MENU_DLP_REPORTS_RULES_AND_PATTERNS);
+
+ 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 = calloc(1, sizeof(item_data_s)); // note that id is freed in _gl_del_item_cb
+ if (NULL != id) {
+ 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
new file mode 100644
index 0000000..c6d834f
--- /dev/null
+++ b/ui/src/privacy_dlp_pattern_create_view.c
@@ -0,0 +1,252 @@
+/*
+ * 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_append(pcvd->category_list, strdup(category));
+ return true;
+}
+
+static void _pattern_create_view_free_category_cb(void *category)
+{
+ free((char *)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_edit_field_empty(pcvd->name_edit_field)
+ && !is_edit_field_empty(pcvd->description_edit_field)
+ && PRIV_GUARD_ERROR_SUCCESS == privacy_guard_client_validate_pattern(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;
+
+ const int res = privacy_guard_client_add_dlp_pattern(
+ get_text_from_edit_field(pcvd->name_edit_field),
+ get_text_from_edit_field(pcvd->description_edit_field),
+ 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));
+}
+
+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_Object_Item *item = 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;
+}
+
+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);
+
+ 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
new file mode 100644
index 0000000..fa9e860
--- /dev/null
+++ b/ui/src/privacy_dlp_pattern_delete_view.c
@@ -0,0 +1,328 @@
+/*
+ * 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 };
+
+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) {
+ const char *format = dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_DELETE_PATTERN_MESSAGE);
+ const size_t buffer_len = snprintf(NULL, 0, format, total_patterns_deleted) + 1;
+ char *string_buffer = malloc(buffer_len);
+ if (NULL != string_buffer) {
+ snprintf(string_buffer, buffer_len, format, total_patterns_deleted);
+ show_toast_notification(string_buffer, pdvd->ad->win);
+ free(string_buffer);
+ }
+ }
+}
+
+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);
+ const char *format = dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_DELETE_PATTERN_POPUP_MESSAGE_MESSAGE);
+ const size_t buff_len = snprintf(NULL, 0, format, number_of_selected_patterns) + 1;
+ char *confirm_del_msg = malloc(buff_len);
+ if (NULL != confirm_del_msg) {
+ snprintf(confirm_del_msg, buff_len, 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,
+ dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_OK),
+ _pattern_delete_popup_ok_cb,
+ dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_CANCEL),
+ _pattern_delete_popup_cancel_cb,
+ NULL,
+ pdvd);
+ free(confirm_del_msg);
+ }
+}
+
+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)
+{
+ 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;
+}
+
+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;
+}
+
+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 = malloc(sizeof(pattern_delete_item_s));
+ if (NULL != item) {
+ 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);
+ }
+}
+
+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 = malloc(sizeof(pattern_delete_item_s));
+ if (NULL != item) {
+ item->pattern = l->data;
+ item->is_checked = false;
+ item->check = NULL;
+ data->pattern_item_list = g_list_append(data->pattern_item_list, item);
+ }
+ }
+}
+
+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;
+ Elm_Object_Item *it = NULL;
+ GList* l;
+ for (l = data.pattern_item_list; l != NULL; l = l->next) {
+ // append item to the genlist
+ 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);
+ }
+
+ 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
new file mode 100644
index 0000000..99cdd05
--- /dev/null
+++ b/ui/src/privacy_dlp_pattern_detailed_view.c
@@ -0,0 +1,275 @@
+/*
+ * 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 *delete_popup;
+} pattern_detailed_view_data_s;
+
+static pattern_detailed_view_data_s pattern_detailed_view_data = { .ad = NULL };
+
+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;
+ const int leaks_captured = pattern->leaks_count;
+ const size_t string_mem_needed = snprintf(NULL, 0, "%d", leaks_captured);
+ char *string_buf = calloc(string_mem_needed+1, sizeof(char));
+ if (NULL != string_buf) {
+ snprintf(string_buf, string_mem_needed, "%d", leaks_captured);
+ return string_buf;
+ }
+ }
+ 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;
+ destroy_popup(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;
+
+ destroy_popup(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);
+
+ const char *format = dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_DELETE_PATTERN_MESSAGE);
+ const size_t buffer_len = snprintf(NULL, 0, format, 1) + 1;
+ char *string_buffer = malloc(buffer_len);
+ if (NULL != string_buffer) {
+ snprintf(string_buffer, buffer_len, format, 1);
+ show_toast_notification(string_buffer, pdvd->ad->win);
+ free(string_buffer);
+ }
+ } 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_delete_rule_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ pattern_detailed_view_data_s *pdvd = data;
+ delete_ctxpopup(pdvd->ctxpopup);
+
+ const char *format = dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_DELETE_PATTERN_POPUP_MESSAGE_MESSAGE);
+ const size_t buff_len = snprintf(NULL, 0, format, 1) + 1;
+ char *confirm_del_msg = malloc(buff_len);
+ if (NULL != confirm_del_msg) {
+ snprintf(confirm_del_msg, buff_len, 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,
+ dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_OK),
+ _pattern_detailed_view_delete_ok_cb,
+ dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_CANCEL),
+ _pattern_detailed_view_delete_cancel_cb,
+ NULL,
+ pdvd);
+ free(confirm_del_msg);
+ }
+}
+
+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) {
+ 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);
+ }
+}
+
+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);
+}
+
+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;
+}
+
+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);
+
+ 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
new file mode 100644
index 0000000..41e4a8f
--- /dev/null
+++ b/ui/src/privacy_dlp_pattern_list_view.c
@@ -0,0 +1,345 @@
+/*
+ * 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
+};
+
+void create_pattern_genlist(dlp_pattern_list_data_s* data);
+void set_pattern_filter_text(Evas_Object *category_hoversel, dlp_pattern_list_data_s* data);
+bool has_deletable_pattern(const GList *pattern_list);
+
+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_append(data->category_list, strdup(category));
+ return true;
+}
+
+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 = malloc(sizeof(get_pattern_s)); // this pattern is freed at delete_pattern_list()
+ if (NULL != dlp_pattern) {
+ 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_append(data->pattern_list, dlp_pattern);
+ }
+ return true;
+}
+
+static void _pattern_genlist_del_cb(void *data, Evas_Object *obj)
+{
+ dlp_item_pattern_s *item = (dlp_item_pattern_s *)data;
+ free(item);
+}
+
+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;
+
+ delete_ctxpopup(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;
+
+ delete_ctxpopup(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;
+ 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);
+}
+
+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;
+
+ /* Delete all the rules */
+ GList* l;
+ for (l = pattern_list_data.pattern_list; l != NULL; l = l->next) {
+ get_pattern_s* pattern = (get_pattern_s*)(l->data);
+ free(pattern);
+ }
+ /* Delete pattern list */
+ g_list_free(pattern_list_data.pattern_list);
+ pattern_list_data.pattern_list = NULL;
+}
+
+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);
+}
+
+void set_empty_pattern_genlist(Evas_Object *pattern_genlist)
+{
+ elm_layout_theme_set(pattern_genlist, "layout", "nocontents", "default");
+}
+
+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 = calloc(1, sizeof(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 {
+ free(item);
+ }
+ }
+
+ elm_genlist_item_class_free(itc);
+ }
+
+ return pattern_count;
+}
+
+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;
+ const char *category;
+ for (l = data->category_list; l != NULL; l = l->next) {
+ 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);
+}
+
+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);
+}
+
+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);
+}
+
+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);
+
+ /* 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);
+
+ 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
new file mode 100644
index 0000000..58efa5c
--- /dev/null
+++ b/ui/src/privacy_dlp_reports_app_rank_view.c
@@ -0,0 +1,246 @@
+/**
+ * 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 = (leak_log_get_app_count_s *)malloc(sizeof(leak_log_get_app_count_s));
+ if (data) {
+ 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_name[LEN_APPLICATION_ICON - 1] = '\0';
+ data->leak_count = leak_count;
+
+ dlp_leak_log_list = g_list_append(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(&item->first_time_stamp);
+ size += strftime(string_buf + size, 100 - size, "%b %d, %Y - To: ", timestamp);
+
+ timestamp = gmtime(&item->last_time_stamp);
+ 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)
+{
+ leak_log_get_app_count_s *item = data;
+ free(item);
+}
+
+/**
+ * @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);
+
+ 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;
+
+ Elm_Object_Item *it = NULL;
+ 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
+ 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);
+
+ 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;
+
+ Elm_Object_Item *it = NULL;
+ 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
+ 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
new file mode 100644
index 0000000..7ebd202
--- /dev/null
+++ b/ui/src/privacy_dlp_reports_data_stat_view.c
@@ -0,0 +1,232 @@
+/**
+ * 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 = (leak_log_get_category_count_s *)malloc(sizeof(leak_log_get_category_count_s));
+
+ if (data != NULL) {
+ strncpy(data->category.text, category, LEN_CATEGORY);
+ 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_append(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(&item->first_time_stamp);
+ size += strftime(string_buf + size, 100 - size, "%b %d, %Y - To: ", timestamp);
+
+ timestamp = gmtime(&item->last_time_stamp);
+ 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)
+{
+ leak_log_get_category_count_s *item = data;
+ free(item);
+}
+
+/**
+ * @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);
+
+ 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;
+
+ Elm_Object_Item *it = NULL;
+ 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
+ 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);
+
+ 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;
+
+ Elm_Object_Item *it = NULL;
+ 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
+ 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
new file mode 100644
index 0000000..90d25a2
--- /dev/null
+++ b/ui/src/privacy_dlp_reports_del_view.c
@@ -0,0 +1,457 @@
+/**
+ * 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;
+ 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,
+ .genlist = NULL,
+ .confirm_delete_popup = NULL,
+ .delete_button = NULL,
+ .naviframe_title = NULL
+};
+
+Evas_Object *create_check(Evas_Object *parent);
+size_t get_number_of_selected_logs(Evas_Object *genlist);
+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) {
+ size_t 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) {
+ char *toast_msg = NULL;
+ if (total_deleted_logs > 1) {
+ const char *format = dgettext("privacy-setting", PRIVACY_MENU_DLP_LOG_LOGS_DELETED);
+ const size_t buff_len = snprintf(NULL, 0, format, total_deleted_logs) + 1;
+ toast_msg = malloc(buff_len);
+ if (toast_msg != NULL)
+ snprintf(toast_msg, buff_len, format, total_deleted_logs);
+ } else {
+ toast_msg = dgettext("privacy-setting", PRIVACY_MENU_DLP_LOG_DELETED);
+ }
+
+ show_toast_notification(toast_msg, rdd->ad->win);
+
+ if (total_deleted_logs > 1)
+ free(toast_msg);
+ }
+
+ destroy_popup(rdd->confirm_delete_popup);
+ rdd->confirm_delete_popup = NULL;
+ elm_naviframe_item_pop(rdd->ad->nf);
+
+ 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;
+
+ const size_t number_of_selected_logs = get_number_of_selected_logs(rdd->genlist);
+ const char *format = dgettext("privacy-setting", PRIVACY_MENU_DLP_LOG_LOGS_WILL_BE_DELETED);
+ const size_t buff_len = snprintf(NULL, 0, format, number_of_selected_logs) + 1;
+ char *confirm_del_msg = malloc(buff_len);
+
+ if (confirm_del_msg != NULL) {
+ snprintf(confirm_del_msg, buff_len, format, number_of_selected_logs);
+
+ rdd->confirm_delete_popup = create_two_buttons_popup(
+ rdd->genlist,
+ dgettext("privacy-setting", PRIVACY_MENU_DLP_LOG_DELETE_LOG),
+ confirm_del_msg,
+ dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_OK),
+ _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);
+
+ free(confirm_del_msg);
+ }
+}
+
+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)
+{
+ 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(&item->data->time_stamp);
+ strftime(time_str, sizeof(time_str), "%a, %x %X", timeinfo);
+
+ size_t string_mem_needed = snprintf(NULL, 0,
+ "%s<br>%s",
+ item->data->destination,
+ time_str);
+
+ char *string_buf = malloc(string_mem_needed + 1);
+
+ if (string_buf != NULL) {
+ snprintf(string_buf,
+ string_mem_needed+1,
+ "%s<br>%s",
+ item->data->destination,
+ time_str);
+
+ char *multiline = strdup(string_buf);
+ free(string_buf);
+
+ return multiline;
+ }
+ }
+
+ return NULL;
+}
+
+static Evas_Object *_reports_del_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.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)
+{
+ dlp_item_log_s *item = data;
+ free(item);
+}
+
+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);
+}
+
+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);
+
+ const char *format = dgettext("privacy-setting", PRIVACY_MENU_DLP_LOG_DELETE_LOGS_TITLE_SELECTED);
+ const size_t buffer_len = snprintf(NULL, 0, format, number_of_selected_logs) + 1;
+ char *string_buffer = malloc(buffer_len);
+
+ if (string_buffer != NULL) {
+ snprintf(string_buffer, buffer_len, format, number_of_selected_logs);
+ elm_object_item_part_text_set(data->naviframe_title, "default", string_buffer);
+ free(string_buffer);
+ }
+
+ } 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));
+ }
+}
+
+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;
+}
+
+Evas_Object *create_check(Evas_Object *parent)
+{
+ Evas_Object *check;
+ check = elm_check_add(parent);
+ elm_check_state_set(check, EINA_FALSE);
+ return check;
+}
+
+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;
+}
+
+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;
+
+ dlp_item_log_s *item = calloc(1, sizeof(dlp_item_log_s));
+
+ if (item != NULL) {
+ 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);
+}
+
+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 = calloc(1, sizeof(dlp_item_log_s));
+
+ if (item != NULL) {
+ // 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);
+}
+
+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;
+
+ 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
new file mode 100644
index 0000000..a509d96
--- /dev/null
+++ b/ui/src/privacy_dlp_reports_full_view.c
@@ -0,0 +1,365 @@
+/*
+ * 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
+void set_action_filter_text(Evas_Object *action_hoversel, int action);
+void create_reports_genlist(reports_full_view_data_s *data);
+
+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 = (dlp_log_s *)malloc(sizeof(dlp_log_s));
+
+ if (data != NULL) {
+ 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_append(reports_full_view_data.dlp_leak_log_list, data);
+ }
+
+ return true;
+}
+
+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(&item->data->time_stamp);
+ strftime(time_str, sizeof(time_str), "%a, %x %X", timeinfo);
+
+ size_t string_mem_needed = snprintf(NULL, 0,
+ "%s<br>%s",
+ item->data->destination,
+ time_str);
+
+ char *string_buf = malloc(string_mem_needed+1);
+
+ if (string_buf != NULL) {
+ snprintf(string_buf,
+ string_mem_needed+1,
+ "%s<br>%s",
+ item->data->destination,
+ time_str);
+
+ char *multiline = strdup(string_buf);
+ free(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)
+{
+ dlp_item_log_s *item = (dlp_item_log_s *)data;
+
+ if (strcmp(part, "elm.swallow.icon") == 0) {
+ int x, y;
+ 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(item);
+}
+
+void apply_action_filter(reports_full_view_data_s *data, Evas_Object *obj, int action)
+{
+ data->current_action = action;
+ set_action_filter_text(obj, action);
+ elm_box_unpack(data->box, data->genlist);
+ evas_object_del(data->genlist);
+ create_reports_genlist(data);
+}
+
+static void _reports_full_delete_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ reports_full_view_data_s *rfvd = data;
+ delete_ctxpopup(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) {
+ rfvd->ctxpopup = create_ctxpop(rfvd->ad);
+ elm_ctxpopup_item_append(rfvd->ctxpopup, "Delete", NULL, _reports_full_delete_cb, data);
+ }
+}
+
+const char *get_action_text(unsigned int action)
+{
+ if (action < ACTION_TOTAL)
+ return ACTION_TEXT[action];
+ else
+ return NULL;
+}
+
+void set_action_filter_text(Evas_Object *action_hoversel, int action)
+{
+ char text[ACTION_TEXT_LEN + 1];
+ text[ACTION_TEXT_LEN] = 0;
+ const char *format = "<color=#FFFFFFFF>%s</color>";
+ const char *action_text = get_action_text(action);
+ snprintf(text, ACTION_TEXT_LEN, format, action_text);
+ elm_object_text_set(action_hoversel, text);
+}
+
+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 = calloc(1, sizeof(dlp_item_log_s));
+
+ if (item != NULL) {
+ // 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;
+}
+
+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;
+}
+
+/**
+ * @brief Creates essential objects for the screen.
+ */
+void create_privacy_dlp_reports_full_view(dlp_statistics_cb_s *scb, struct app_data_s *ad)
+{
+ if (reports_full_view_data.dlp_leak_log_list != NULL) {
+ g_list_free(reports_full_view_data.dlp_leak_log_list);
+ reports_full_view_data.dlp_leak_log_list = NULL;
+ }
+
+ stats_cb = scb;
+
+ reports_full_view_data.ad = ad;
+
+ 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);
+ }
+
+ /* 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);
+
+ 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;
+ }
+
+ if (reports_full_view_data.dlp_leak_log_list != NULL) {
+ g_list_free(reports_full_view_data.dlp_leak_log_list);
+ reports_full_view_data.dlp_leak_log_list = NULL;
+ }
+
+ 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);
+ }
+
+ 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
new file mode 100644
index 0000000..09f3594
--- /dev/null
+++ b/ui/src/privacy_dlp_reports_rules_and_patterns_view.c
@@ -0,0 +1,107 @@
+/**
+ * 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();
+
+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);
+}
+
+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
new file mode 100644
index 0000000..faf2a55
--- /dev/null
+++ b/ui/src/privacy_dlp_rule_create_view.c
@@ -0,0 +1,199 @@
+/*
+ * 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
new file mode 100644
index 0000000..c52ba7a
--- /dev/null
+++ b/ui/src/privacy_dlp_rule_delete_view.c
@@ -0,0 +1,332 @@
+/*
+ * 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 };
+
+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)
+{
+ 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_CREATE_RULES_MENU_OK),
+ _rule_delete_popup_ok_cb,
+ dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_CANCEL),
+ _rule_delete_popup_cancel_cb,
+ NULL,
+ 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;
+ }
+}
+
+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;
+}
+
+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 = malloc(sizeof(rule_delete_item_s));
+
+ if (item != NULL) {
+ item->rule = l->data;
+ item->is_checked = false;
+ item->check = NULL;
+
+ data->rule_item_list = g_list_append(data->rule_item_list, item);
+ }
+ }
+}
+
+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 = malloc(sizeof(rule_delete_item_s));
+ if (item != NULL) {
+ 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);
+ }
+}
+
+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);
+
+ 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;
+ Elm_Object_Item *it = NULL;
+ GList* l = data.rule_item_list;
+
+ while (l != NULL) {
+ // append item to the genlist
+ 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;
+ if (SELECT_ALL_RULES_ITEM == rule->id) {
+ l = l->next;
+ continue;
+ }
+
+ // 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;
+ }
+ }
+
+ 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
new file mode 100644
index 0000000..0d3535d
--- /dev/null
+++ b/ui/src/privacy_dlp_rule_detailed_view.c
@@ -0,0 +1,320 @@
+/**
+ * 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 };
+
+char* get_rule_action(int action);
+static bool delete_rules_by_pattern_and_action(const get_custom_rule_s *current_rule);
+
+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;
+}
+
+void _rule_detailed_view_edit_rule_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ rule_detailed_view_data_s *rdvd = data;
+
+ delete_ctxpopup(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);
+}
+
+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);
+
+ destroy_popup(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);
+}
+
+void _rule_detailed_view_delete_cancel_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ rule_detailed_view_data_s *rdvd = data;
+ destroy_popup(rdvd->delete_popup);
+}
+
+void _rule_detailed_view_delete_rule_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ rule_detailed_view_data_s *rdvd = data;
+
+ delete_ctxpopup(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_CREATE_RULES_MENU_OK),
+ _rule_detailed_view_delete_ok_cb,
+ dgettext("privacy-setting", PRIVACY_MENU_DLP_CREATE_RULES_MENU_CANCEL),
+ _rule_detailed_view_delete_cancel_cb,
+ NULL,
+ rdvd);
+}
+
+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;
+}
+
+void _rule_detailed_view_menu_button_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ rule_detailed_view_data_s *rdvd = data;
+ 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);
+}
+
+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;
+}
+
+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 ('\0' == data->pattern_name[0]) {
+ LOGE("Pattern %d not found in database", data->current_rule.pattern_id);
+ strncpy(data->pattern_name, "(null)", LEN_PATTERN);
+ }
+}
+
+char* get_rule_action(int action)
+{
+ switch (action) {
+ case PRIV_GUARD_DLP_ACTION_ALLOW: return "Allow";
+ case PRIV_GUARD_DLP_ACTION_DENY: return "Deny";
+ case PRIV_GUARD_DLP_ACTION_SANITIZE: return "Sanitize";
+ default: return "";
+ }
+}
+
+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);
+}
+
+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';
+}
+
+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
new file mode 100644
index 0000000..39dbdfe
--- /dev/null
+++ b/ui/src/privacy_dlp_rule_edit_view.c
@@ -0,0 +1,450 @@
+/*
+ * 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_append(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);
+ name[LEN_NAME - 1] = '\0';
+
+ char description[LEN_DESCRIPTION];
+ strncpy(description, get_text_from_edit_field(red->description_edit_field), 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;
+
+ char rule_name[LEN_NAME];
+ 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);
+ red->edited_rule.name[LEN_NAME - 1] = '\0';
+
+ strncpy(red->edited_rule.description, get_text_from_edit_field(red->description_edit_field), 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 = malloc(sizeof(get_pattern_s));
+
+ if (dlp_pattern != NULL) {
+ 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_edit_field_empty(red->name_edit_field)
+ && !is_edit_field_empty(red->description_edit_field)
+ && NULL != 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);
+}
+
+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 && '\0' == hoversel_text[0]) {
+ 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_append(data->pattern_list, custom_pattern);
+
+ 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 != 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_append(rule_edit_data.pattern_list, custom_pattern);
+
+ 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
new file mode 100644
index 0000000..de6d8ab
--- /dev/null
+++ b/ui/src/privacy_dlp_rule_list_view.c
@@ -0,0 +1,341 @@
+/*
+ * 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
+};
+
+void apply_rule_action_filter(dlp_rule_list_data_s *rld, Evas_Object *obj, int action);
+void create_rule_genlist(dlp_rule_list_data_s *data);
+const char *get_rule_action_text(rule_action_filter action);
+void set_rule_action_filter_text(Evas_Object *action_hoversel, int action);
+
+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 = (get_custom_rule_s *)malloc(sizeof(get_custom_rule_s));
+
+ if (rule != NULL) {
+ 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)
+{
+ get_custom_rule_s *item = (get_custom_rule_s *)data;
+ free(item);
+}
+
+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;
+ delete_ctxpopup(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;
+ delete_ctxpopup(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;
+ 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);
+}
+
+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;
+
+ /* Delete all the rules */
+ GList* l;
+ for (l = rule_list_data.rule_list; l != NULL; l = l->next) {
+ get_custom_rule_s* rule = (get_custom_rule_s*)l->data;
+ free(rule);
+ }
+
+ g_list_free(rule_list_data.rule_list);
+ rule_list_data.rule_list = NULL;
+}
+
+void apply_rule_action_filter(dlp_rule_list_data_s *data, Evas_Object *obj, int action)
+{
+ data->action = action;
+ set_rule_action_filter_text(obj, action);
+ elm_box_unpack(data->rule_box, data->rule_genlist);
+ evas_object_del(data->rule_genlist);
+ create_rule_genlist(data);
+}
+
+const char *get_rule_action_text(rule_action_filter action)
+{
+ switch (action) {
+ case ACTION_ALLOW:
+ return "Allow";
+ case ACTION_DENY:
+ return "Deny";
+ case ACTION_SANITIZE:
+ return "Sanitize";
+ default:
+ return "All rules";
+ }
+}
+
+void set_rule_action_filter_text(Evas_Object *action_hoversel, int action)
+{
+ char text[ACTION_TEXT_LEN + 1];
+ text[ACTION_TEXT_LEN] = 0;
+ const char *format = "<color=#FFFFFFFF>%s</color>";
+ const char *action_text = get_rule_action_text(action);
+ snprintf(text, ACTION_TEXT_LEN, format, action_text);
+ elm_object_text_set(action_hoversel, text);
+}
+
+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 = calloc(1, sizeof(dlp_item_rule_s));
+
+ if (item != NULL) {
+ // 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;
+ } else {
+ LOGE("populate_genlist() failed to calloc dlp_item_rule_s");
+ }
+ }
+
+ elm_genlist_item_class_free(itc);
+ }
+
+ return rule_count;
+}
+
+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);
+}
+
+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);
+}
+
+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_menu_view.c b/ui/src/privacy_menu_view.c
index 47faa7d..5179756 100644
--- a/ui/src/privacy_menu_view.c
+++ b/ui/src/privacy_menu_view.c
@@ -82,6 +82,8 @@ static void menu_selected_cb(void *data, Evas_Object *obj, void *event_info)
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);
}
@@ -99,6 +101,7 @@ void create_privacy_menu_view(struct app_data_s *ad)
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
new file mode 100644
index 0000000..a1250de
--- /dev/null
+++ b/ui/src/privacy_view.c
@@ -0,0 +1,89 @@
+/*
+ * 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;
+// }
+// }
+//}
+