#include "allowed-calls.h"
#include <Evas.h>
+#include <app_preference.h>
#include <Elementary.h>
#include "log.h"
#include "common-efl.h"
+#include <notification_setting_internal.h>
+
+#define PREF_PREFX "db/private/org.tizen.setting-notification/"
+#define DO_NOT_SHOW_CONTACT_POPUP_AGAIN PREF_PREFX "/do_not_show_contact_popup_again"
+#define DO_NOT_SHOW_FAVORITE_POPUP_AGAIN PREF_PREFX "/do_not_show_favorite_popup_again"
+#define DO_NOT_SHOW_NOBODY_POPUP_AGAIN PREF_PREFX "/do_not_show_nobody_popup_again"
+
+bool check_state = false;
static char *items[4] = {
- "IDS_QP_TAB4_ALL_M_RECEIVED_ALL",
+ "IDS_ST_MBODY_EVERYONE_ABB",
"IDS_CST_OPT_CONTACTS_ONLY",
"IDS_ST_MBODY_FAVOURITE_CONTACTS_ONLY_ABB",
- "IDS_QP_TAB4_NONE_M_BLOCEKD"
+ "IDS_ST_MBODY_NOBODY_ABB"
};
+static void set_do_not_show_contact_popup_again(bool value)
+{
+ preference_set_boolean(DO_NOT_SHOW_CONTACT_POPUP_AGAIN, value);
+}
+
+static bool get_do_not_show_contact_popup_again()
+{
+ bool value = false;
+ preference_get_boolean(DO_NOT_SHOW_CONTACT_POPUP_AGAIN, &value);
+ return value;
+}
+
+static bool is_existing_do_not_show_contact_popup_again()
+{
+ bool value = false;
+ preference_is_existing(DO_NOT_SHOW_CONTACT_POPUP_AGAIN, &value);
+ return value;
+}
+
+static void set_do_not_show_favorite_popup_again(bool value)
+{
+ preference_set_boolean(DO_NOT_SHOW_FAVORITE_POPUP_AGAIN, value);
+}
+
+static bool get_do_not_show_favorite_popup_again()
+{
+ bool value = false;
+ preference_get_boolean(DO_NOT_SHOW_FAVORITE_POPUP_AGAIN, &value);
+ return value;
+}
+
+static bool is_existing_do_not_show_favorite_popup_again()
+{
+ bool value = false;
+ preference_is_existing(DO_NOT_SHOW_FAVORITE_POPUP_AGAIN, &value);
+ return value;
+}
+
+static void set_do_not_show_nobody_popup_again(bool value)
+{
+ preference_set_boolean(DO_NOT_SHOW_NOBODY_POPUP_AGAIN, value);
+}
+
+static bool get_do_not_show_nobody_popup_again()
+{
+ bool value = false;
+ preference_get_boolean(DO_NOT_SHOW_NOBODY_POPUP_AGAIN, &value);
+ return value;
+}
+
+static bool is_existing_do_not_show_nobody_popup_again()
+{
+ bool value = false;
+ preference_is_existing(DO_NOT_SHOW_NOBODY_POPUP_AGAIN, &value);
+ return value;
+}
+
+const char *get_allowed_calls_string()
+{
+ NOTISET_TRACE_BEGIN;
+ int value = 0;
+ notification_system_setting_get_dnd_allow_exceptions(get_system_setting(), NOTIFICATION_DND_ALLOWED_CALLS, &value);
+ return items[value];
+}
+
static void popup_hide_cb(void *data, Evas_Object *obj, void *event_info)
{
evas_object_del(obj);
static char *gl_text_get_cb(void *data, Evas_Object *obj, const char *part)
{
- int index = (int)data;
- return strdup(APP_STRING(items[index]));
+ if(!strcmp(part, "elm.text"))
+ {
+ int index = (int)data;
+ return strdup(APP_STRING(items[index]));
+ }
+ return NULL;
}
static void popup_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info)
{
NOTISET_TRACE_BEGIN;
Evas_Object *popup = data;
- //TODO: need to be implemented after API appear
evas_object_del(popup);
+
+ if(check_state)
+ {
+ int value = 0;
+ notification_system_setting_get_dnd_allow_exceptions(get_system_setting(), NOTIFICATION_DND_ALLOWED_CALLS, &value);
+ if(value == NOTIFICATION_DND_ALLOWED_CALLS_CONTACT)
+ set_do_not_show_contact_popup_again(false);
+ else if(value == NOTIFICATION_DND_ALLOWED_CALLS_FAVORITE)
+ set_do_not_show_favorite_popup_again(false);
+ else
+ set_do_not_show_nobody_popup_again(false);
+ }
+}
+
+static void popup_check_item_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ NOTISET_TRACE_BEGIN;
+ check_state = elm_check_state_get(obj);
+}
+
+static void update_allowed_calls_item()
+{
+ elm_genlist_item_update(elm_genlist_item_prev_get(elm_genlist_last_item_get(get_app_ui_data()->list_main)));
}
static void create_reject_calls_popup(const char *title_text, const char *content)
evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
eext_object_event_callback_add(popup, EEXT_CALLBACK_BACK, popup_hide_cb, NULL);
- evas_object_smart_callback_add(popup, "dismissed", popup_hide_cb, NULL);
- evas_object_smart_callback_add(popup, "block,clicked", popup_hide_cb, NULL);
/* layout */
layout = elm_layout_add(popup);
/* ok button */
btn = elm_button_add(popup);
elm_object_style_set(btn, "bottom");
- elm_object_text_set(btn, APP_STRING("IDS_TPLATFORM_ACBUTTON_DONE_ABB"));
+ elm_object_text_set(btn, APP_STRING("IDS_ST_BUTTON_OK_ABB6"));
elm_object_part_content_set(popup, "button1", btn);
evas_object_smart_callback_add(btn, "clicked", popup_btn_clicked_cb, popup);
check = elm_check_add(popup);
elm_object_text_set(check, APP_STRING("IDS_ST_OPT_DONT_SHOW_AGAIN_ABB"));
elm_object_part_content_set(layout, "elm.swallow.end", check);
+ evas_object_smart_callback_add(check, "changed", popup_check_item_clicked_cb, NULL);
/* scroller */
scroller = elm_scroller_add(layout);
evas_object_show(popup);
}
-static void all_item_clicked()
+static void everyone_item_clicked()
{
NOTISET_TRACE_BEGIN;
- //TODO: need to be implemented after API appear
+ notification_system_setting_set_dnd_allow_exceptions(get_system_setting(), NOTIFICATION_DND_ALLOWED_CALLS, NOTIFICATION_DND_ALLOWED_CALLS_EVERYONE);
+ update_allowed_calls_item();
}
static void contacts_only_clicked()
{
NOTISET_TRACE_BEGIN;
- create_reject_calls_popup("IDS_ST_HEADER_REJECT_CALLS_ABB2",
- "IDS_ST_BODY_INCOMING_CALLS_FROM_CONTACTS_YOU_HAVE_NOT_ALLOWED_WILL_BE_REJECTED_AUTOMATICALLY");
- //TODO: need to be implemented after API appear
+
+ notification_system_setting_set_dnd_allow_exceptions(get_system_setting(), NOTIFICATION_DND_ALLOWED_CALLS, NOTIFICATION_DND_ALLOWED_CALLS_CONTACT);
+ update_allowed_calls_item();
+
+ if(!is_existing_do_not_show_contact_popup_again())
+ set_do_not_show_contact_popup_again(true);
+
+ if(get_do_not_show_contact_popup_again())
+ create_reject_calls_popup("IDS_ST_HEADER_REJECT_CALLS_ABB2",
+ "IDS_ST_BODY_INCOMING_CALLS_FROM_CONTACTS_YOU_HAVE_NOT_ALLOWED_WILL_BE_REJECTED_AUTOMATICALLY");
}
static void favorite_contacts_only_clicked()
{
NOTISET_TRACE_BEGIN;
- create_reject_calls_popup("IDS_ST_HEADER_REJECT_CALLS_ABB2",
- "IDS_ST_BODY_INCOMING_CALLS_FROM_CONTACTS_YOU_HAVE_NOT_ALLOWED_WILL_BE_REJECTED_AUTOMATICALLY");
- //TODO: need to be implemented after API appear
+
+ notification_system_setting_set_dnd_allow_exceptions(get_system_setting(), NOTIFICATION_DND_ALLOWED_CALLS, NOTIFICATION_DND_ALLOWED_CALLS_FAVORITE);
+ update_allowed_calls_item();
+
+ if(!is_existing_do_not_show_favorite_popup_again())
+ set_do_not_show_favorite_popup_again(true);
+
+ if(get_do_not_show_favorite_popup_again())
+ create_reject_calls_popup("IDS_ST_HEADER_REJECT_CALLS_ABB2",
+ "IDS_ST_BODY_INCOMING_CALLS_FROM_CONTACTS_YOU_HAVE_NOT_ALLOWED_WILL_BE_REJECTED_AUTOMATICALLY");
}
-static void none_item_clicked()
+static void nobody_item_clicked()
{
NOTISET_TRACE_BEGIN;
- create_reject_calls_popup("IDS_ST_HEADER_REJECT_ALL_CALLS_ABB",
- "IDS_ST_POP_ALL_INCOMING_CALLS_WILL_BE_REJECTED_AUTOMATICALLY");
- //TODO: need to be implemented after API appear
+
+ notification_system_setting_set_dnd_allow_exceptions(get_system_setting(), NOTIFICATION_DND_ALLOWED_CALLS, NOTIFICATION_DND_ALLOWED_CALLS_NOBODY);
+ update_allowed_calls_item();
+
+ if(!is_existing_do_not_show_nobody_popup_again())
+ set_do_not_show_nobody_popup_again(true);
+
+ if(get_do_not_show_nobody_popup_again())
+ create_reject_calls_popup("IDS_ST_HEADER_REJECT_ALL_CALLS_ABB", "IDS_ST_POP_ALL_INCOMING_CALLS_WILL_BE_REJECTED_AUTOMATICALLY");
}
static void gl_sel_cb(void *data, Evas_Object *obj, void *event_info)
switch (index)
{
case 0:
- all_item_clicked();
+ everyone_item_clicked();
break;
case 1:
contacts_only_clicked();
favorite_contacts_only_clicked();
break;
case 3:
- none_item_clicked();
+ nobody_item_clicked();
break;
}
evas_object_del(popup);