--- /dev/null
+/*
+ * Copyright (c) 2009 - 2015 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.
+ *
+ */
+
+#include "app-details.h"
+
+typedef enum
+{
+ APP_DETAILS_ALLOW_NOTI = 1,
+ APP_DETAILS_GROUP_INDEX,
+ APP_DETAILS_POPUP_NOTI,
+ APP_DETAILS_APP_BADGE,
+ APP_DETAILS_NOTI_ON_LOCK,
+ APP_DETAILS_MAX
+} App_Details_Items;
+
+item_info_s *g_app_info = NULL;
+
+static void close_app_details_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ NOTISET_TRACE_BEGIN;
+ ret_if(!data);
+ elm_naviframe_item_pop(data);
+}
+
+static Eina_Bool allow_noti_status_get()
+{
+ return get_allow_to_nofity(g_app_info->appid);
+}
+
+static void allow_noti_status_set(Eina_Bool value)
+{
+ set_allow_to_nofity(g_app_info->appid, value);
+}
+
+static void allow_noti_check_changed_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ Eina_Bool state = elm_check_state_get(obj);
+ allow_noti_status_set(state);
+}
+
+static Eina_Bool popup_noti_status_get()
+{
+ /*TODO: implement when API appears */
+ return EINA_TRUE;
+}
+
+static void popup_noti_status_set(Eina_Bool value)
+{
+ /*TODO: implement when API appears */
+}
+
+static void popup_noti_check_changed_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ Eina_Bool state = elm_check_state_get(obj);
+ popup_noti_status_set(state);
+}
+
+static Eina_Bool app_badge_status_get()
+{
+ /*TODO: implement when API appears */
+ return EINA_TRUE;
+}
+
+static void app_badge_status_set(Eina_Bool value)
+{
+ /*TODO: implement when API appears */
+}
+
+static void app_badge_check_changed_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ Eina_Bool state = elm_check_state_get(obj);
+ app_badge_status_set(state);
+}
+
+static const char *noti_on_lock_screen_status_get()
+{
+ /*TODO: implement when API appears */
+ return "IDS_QP_OPT_SHOW_ALL_CONTENT_ABB";
+}
+
+static char *app_details_gl_text_get_cb(void *data, Evas_Object *obj, const char *part)
+{
+ retv_if(!data, NULL);
+ App_Details_Items item = (App_Details_Items)data;
+
+ switch (item) {
+ case APP_DETAILS_ALLOW_NOTI:
+ if(!strcmp(part, "elm.text"))
+ {
+ return strdup(APP_STRING("IDS_ST_MBODY_ALLOW_NOTIFICATIONS"));
+ }
+ break;
+ /*TODO: get IDS for strings below*/
+ case APP_DETAILS_GROUP_INDEX:
+ if(!strcmp(part, "elm.text"))
+ {
+ return strdup("Details");
+ }
+ break;
+ case APP_DETAILS_POPUP_NOTI:
+ if(!strcmp(part, "elm.text"))
+ {
+ return strdup("Pop-up notification");
+ }
+ else if(!strcmp(part, "elm.text.multiline"))
+ {
+ return strdup("Show pop-up notification on the top of the screen.");
+ }
+ break;
+ case APP_DETAILS_APP_BADGE:
+ if(!strcmp(part, "elm.text"))
+ {
+ return strdup("App badge");
+ }
+ else if(!strcmp(part, "elm.text.sub"))
+ {
+ return strdup("Show badge on the app icon");
+ }
+ break;
+ case APP_DETAILS_NOTI_ON_LOCK:
+ if(!strcmp(part, "elm.text"))
+ {
+ return strdup("Notification on lock screen");
+ }
+ else if(!strcmp(part, "elm.text.sub"))
+ {
+ return strdup(APP_STRING(noti_on_lock_screen_status_get()));
+ }
+ break;
+ default:
+ NOTISET_ERR("Wrong App_Details_Items value used");
+ break;
+ }
+ return NULL;
+}
+
+static Evas_Object *app_details_gl_content_get_cb(void *data, Evas_Object *obj, const char *part)
+{
+ Evas_Object *check = NULL;
+ retv_if(!data, NULL);
+ App_Details_Items item = (App_Details_Items)data;
+
+ switch (item) {
+ case APP_DETAILS_ALLOW_NOTI:
+ if(!strcmp(part, "elm.swallow.end"))
+ {
+ check = create_on_off_check(obj);
+ elm_check_state_set(check, allow_noti_status_get());
+ evas_object_smart_callback_add(check, "changed", allow_noti_check_changed_cb, NULL);
+ return check;
+ }
+ else if(!strcmp(part, "elm.swallow.icon"))
+ {
+ return create_icon(obj, g_app_info->icon);
+ }
+ break;
+ case APP_DETAILS_POPUP_NOTI:
+ if(!strcmp(part, "elm.swallow.end"))
+ {
+ check = create_on_off_check(obj);
+ elm_check_state_set(check, popup_noti_status_get());
+ evas_object_smart_callback_add(check, "changed", popup_noti_check_changed_cb, NULL);
+ return check;
+ }
+ break;
+ case APP_DETAILS_APP_BADGE:
+ if(!strcmp(part, "elm.swallow.end"))
+ {
+ check = create_on_off_check(obj);
+ elm_check_state_set(check, app_badge_status_get());
+ evas_object_smart_callback_add(check, "changed", app_badge_check_changed_cb, NULL);
+ return check;
+ }
+ break;
+ default:
+ NOTISET_ERR("Wrong App_Details_Items value used");
+ break;
+ }
+ return NULL;
+}
+
+static void app_details_gl_del_cb(void *data, Evas_Object *obj EINA_UNUSED)
+{
+}
+
+static void app_details_gl_selected_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info)
+{
+ Elm_Object_Item *it = (Elm_Object_Item*)event_info;
+ elm_genlist_item_selected_set(it, EINA_FALSE);
+
+ Evas_Object *check = elm_object_item_part_content_get(it, "elm.swallow.end");
+ if (check) {
+ elm_check_state_set(check, !elm_check_state_get(check));
+ evas_object_smart_callback_call(check, "changed", NULL);
+ }
+}
+
+static void app_details_gl_append(Evas_Object *genlist, char *style, App_Details_Items item_name)
+{
+ NOTISET_TRACE_BEGIN;
+ Elm_Object_Item *gen_item = NULL;
+ Elm_Genlist_Item_Class *itc = elm_genlist_item_class_new();
+ ret_if(!itc);
+
+ itc->item_style = style;
+ itc->func.text_get = app_details_gl_text_get_cb;
+ itc->func.content_get = app_details_gl_content_get_cb;
+ itc->func.del = app_details_gl_del_cb;
+
+ gen_item = elm_genlist_item_append(genlist, /* genlist object */
+ itc, /* item class */
+ (void *)item_name, /* item class user data */
+ NULL, /* parent item */
+ ELM_GENLIST_ITEM_NONE, /* item type */
+ app_details_gl_selected_cb, /* select smart callback */
+ (void *)item_name); /* smart callback user data */
+ if(style && !strcmp(style, "group_index"))
+ elm_genlist_item_select_mode_set(gen_item, ELM_OBJECT_SELECT_MODE_NONE);
+ elm_genlist_item_class_free(itc);
+}
+
+void app_details_create_view(ug_data *data, item_info_s *app_info)
+{
+ ret_if(!data || !app_info);
+
+ g_app_info = app_info;
+
+ Evas_Object *back_btn = elm_button_add(data->naviframe);
+ elm_object_style_set(back_btn, "naviframe/back_btn/default");
+ evas_object_smart_callback_add(back_btn, "clicked", close_app_details_cb, data->naviframe);
+
+ /* Push to naviframe */
+ Evas_Object *genlist = elm_genlist_add(data->naviframe);
+ elm_genlist_mode_set(genlist, ELM_LIST_COMPRESS);
+ 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);
+
+ app_details_gl_append(genlist, "type1", APP_DETAILS_ALLOW_NOTI);
+ app_details_gl_append(genlist, "group_index", APP_DETAILS_GROUP_INDEX);
+ /* TODO: Show this items only if API allows [ */
+ app_details_gl_append(genlist, "multiline", APP_DETAILS_POPUP_NOTI);
+ app_details_gl_append(genlist, "type1", APP_DETAILS_APP_BADGE);
+ /* ] */
+ app_details_gl_append(genlist, "type1", APP_DETAILS_NOTI_ON_LOCK);
+
+ elm_naviframe_item_push(data->naviframe, g_app_info->name, back_btn, NULL, genlist, NULL);
+}
#include "set-scedule-info.h"
#include "allowed-calls.h"
#include "lock_screen_content.h"
+#include "app-details.h"
#define ICON_SIZE 82
Elm_Object_Item *it = (Elm_Object_Item*)event_info;
elm_genlist_item_selected_set(it, EINA_FALSE);
+ void *item_data = elm_object_item_data_get(it);
+ if(item_data)
+ {
+ app_details_create_view(g_ug_data, (item_info_s*)item_data);
+ return;
+ }
+
Evas_Object *check = elm_object_item_part_content_get(it, "elm.swallow.end");
if (!check) {
check = elm_object_item_part_content_get(it, "elm.icon.right");
}
+Evas_Object *create_on_off_check(Evas_Object *parent)
+{
+ Evas_Object *check = elm_check_add(parent);
+ elm_object_style_set(check, "on&off");
+ evas_object_show(check);
+ evas_object_pass_events_set(check, 1);
+ evas_object_propagate_events_set(check, 0);
+ return check;
+}
+
Evas_Object* create_custom_layout(Evas_Object *parent, char* group_name)
{
Evas_Object *layout = create_layout(parent);
{
if(data_list->item_style == ITEM_STYLE_TYPE_ONE)
{
- content = elm_check_add(obj);
- elm_object_style_set(content, "on&off");
+ content = create_on_off_check(obj);
elm_check_state_set(content, data_list->allow_to_notify);
- evas_object_show(content);
- evas_object_pass_events_set(content, 1);
evas_object_smart_callback_add(content, "changed", _allow_to_nofity_check_changed_cb, data_list);
- evas_object_propagate_events_set(content, 0);
return content;
}
else if(data_list->item_style == ITEM_STYLE_DEFAULT)
{
- content = elm_check_add(obj);
- elm_object_style_set(content, "on&off");
+ content = create_on_off_check(obj);
elm_check_state_set(content, data_list->do_not_disturb_except);
- evas_object_show(content);
- evas_object_pass_events_set(content, 1);
evas_object_smart_callback_add(content, "changed", _excepted_check_changed_cb, data_list);
- evas_object_propagate_events_set(content, 0);
return content;
}
else if(data_list->item_style == ITEM_STYLE_RADIO)
void append_gl_item_list(Evas_Object *genlist, Eina_List* list, int style) {
NOTISET_TRACE_BEGIN;
+ Elm_Object_Item *gen_item = NULL;
Elm_Genlist_Item_Class *itc = elm_genlist_item_class_new();
ret_if(!itc);
while (list) {
item = (item_info_s*)eina_list_data_get(list);
item->item_style = style;
- elm_genlist_item_append(genlist, /* genlist object */
+ gen_item = elm_genlist_item_append(genlist, /* genlist object */
itc, /* item class */
item, /* item class user data */
NULL, /* parent item */
ELM_GENLIST_ITEM_NONE, /* item type */
gl_selected_cb, /* select smart callback */
NULL); /* smart callback user data */
+ elm_object_item_data_set(gen_item, item);
list = eina_list_next(list);
}
elm_genlist_item_class_free(itc);
if(!strcmp(data, "do-not-disturb") && !strcmp(part, "elm.swallow.end"))
{
Evas_Object *check = NULL;
- check = elm_check_add(obj);
- elm_object_style_set(check, "on&off");
+ check = create_on_off_check(obj);
elm_check_state_set(check, get_do_not_disturb());
- evas_object_show(check);
- evas_object_pass_events_set(check, 1);
evas_object_smart_callback_add(check, "changed", _do_not_disturb_check_changed_cb, NULL);
- evas_object_propagate_events_set(check, 0);
return check;
}
if(!strcmp(data, "set-schedule") && !strcmp("elm.swallow.end", part))
{
- Evas_Object *check = elm_check_add(obj);
- elm_object_style_set(check, "on&off");
+ Evas_Object *check = create_on_off_check(obj);
elm_check_state_set(check, get_schedule());
- evas_object_show(check);
- evas_object_pass_events_set(check, 1);
- evas_object_propagate_events_set(check, 0);
evas_object_smart_callback_add(check, "changed", set_schedule_check_changed_cb, NULL);
return check;
}
{
if (!strcmp(part, "elm.swallow.end") ) {
Evas_Object *check = NULL;
- check = elm_check_add(obj);
- elm_object_style_set(check, "on&off");
+ check = create_on_off_check(obj);
elm_check_state_set(check, get_allow_all());
- evas_object_show(check);
- evas_object_pass_events_set(check, 1);
evas_object_smart_callback_add(check, "changed", _app_notif_allow_all_check_changed_cb, obj);
- evas_object_propagate_events_set(check, 0);
return check;
}
return NULL;