--- /dev/null
+/*
+ * Copyright (c) 2020 Samsung Electronics Co., Ltd.
+ *
+ * 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.
+ */
+
+#define PADDING_SIZE 40
+
+collections
+{
+ base_scale: 1.8;
+
+ group { "main_layout";
+ parts {
+ rect { "base";
+ desc { "default";
+ color: 238 239 241 255;
+ }
+ }
+ spacer { "padding.left"; scale;
+ desc { "default";
+ min: PADDING_SIZE 0;
+ max: PADDING_SIZE -1;
+ fixed: 1 0;
+ align: 0.0 0.0;
+ rel.to: "base";
+ }
+ }
+ spacer { "padding.right"; scale;
+ desc { "default";
+ min: PADDING_SIZE 0;
+ max: PADDING_SIZE -1;
+ fixed: 1 0;
+ align: 1.0 0.0;
+ rel.to: "base";
+ }
+ }
+ swallow { "elm.swallow.content";
+ desc { "default";
+ rel1 { relative: 1.0 0.0; to: "padding.left"; }
+ rel2 { relative: 0.0 1.0; to: "padding.right"; }
+ }
+ }
+ }
+ }
+}
*/
/*
* @file privacy_list_view.c
- * @author Yunjin Lee (yunjin-.lee@samsung.com)
+ * @author Yunjin Lee (yunjin-.lee@samsung.com)
* @version 1.0
* @brief
*/
lreturn_if(!strcmp(part, "elm.text"), , privacy_display, "privacy = %s", privacy_name);
return NULL;
}
+
static void gl_del_cb(void *data, Evas_Object *obj)
{
/* Unrealized callback can be called after this. */
free(data);
}
+static void gl_realized_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ Elm_Object_Item *it = event_info;
+ item_data_s *privacy = elm_object_item_data_get(it);
+ struct app_data_s *ad = (struct app_data_s*)data;
+
+ int idx = g_list_index(ad->privacy_list, privacy);
+ int len = g_list_length(ad->privacy_list);
+
+ if (idx == 0)
+ elm_object_item_signal_emit(it, "elm,state,group,top", "elm");
+ else if (idx == len - 1)
+ elm_object_item_signal_emit(it, "elm,state,group,bottom", "elm");
+ else
+ elm_object_item_signal_emit(it, "elm,state,group,middle", "elm");
+}
+
static Eina_Bool quit_cb(void *data, Elm_Object_Item *it)
{
struct app_data_s* ad = (struct app_data_s*)data;
itc->item_style = "1line";
itc->func.text_get = gl_text_get_cb;
itc->func.del = gl_del_cb;
+
+ evas_object_smart_callback_add(genlist, "realized", gl_realized_cb, ad);
+
int i = 0;
for (i = 0; i < (int)g_list_length(ad->privacy_list); ++i) {
Elm_Object_Item *it = NULL;
#include "privacy_view.h"
static GList* pkg_list;
-static GList* privilege_list;
static GList* pkg_data_list;
static char* privacy_display = NULL;
static char* privacy_name = NULL;
return NULL;
}
+static void gl_realized_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ Elm_Object_Item *it = event_info;
+ pkg_data_s *pd = elm_object_item_data_get(it);
+
+ if (pd == NULL) {
+ elm_object_item_signal_emit(it, "elm,state,group,single", "elm");
+ return;
+ }
+
+ int idx = g_list_index(pkg_data_list, pd);
+ int len = g_list_length(pkg_data_list);
+
+ if (len == 1)
+ elm_object_item_signal_emit(it, "elm,state,group,single", "elm");
+ else if (idx == 0)
+ elm_object_item_signal_emit(it, "elm,state,group,top", "elm");
+ else if (idx == len - 1)
+ elm_object_item_signal_emit(it, "elm,state,group,bottom", "elm");
+ else
+ elm_object_item_signal_emit(it, "elm,state,group,middle", "elm");
+}
+
static void privacy_package_selected_cb(void *data, Evas_Object *obj, void *event_info)
{
Elm_Object_Item *ei = event_info;
log_if(privilege_info_get_privacy_display(ad->privacy, &privacy_display) != PRVMGR_ERR_NONE, 1, "Couldn't get privacy display : %s", ad->privacy);
/* Get privilege list by privacy */
- if (privilege_list != NULL) {
- g_list_free_full(privilege_list, free);
- privilege_list = NULL;
+ if (pkg_list != NULL) {
+ g_list_free_full(pkg_list, free);
+ pkg_list = NULL;
+ }
+ if (pkg_data_list != NULL) {
+ g_list_free_full(pkg_data_list, free_extension_pkg_data);
+ pkg_data_list = NULL;
}
- if (pkg_list != NULL) {
- g_list_free_full(pkg_list, free);
- pkg_list = NULL;
- }
- if (pkg_data_list != NULL) {
- g_list_free_full(pkg_data_list, free_extension_pkg_data);
- pkg_data_list = NULL;
- }
/* Get unique package list filtered by given privacy related privileges */
int ret = privilege_package_info_get_package_list_by_privacy(getuid(), ad->privacy, &pkg_list);
log_if(ret != 0, 1, "privilege_package_info_get_package_list_by_privacy() failed");
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);
+ evas_object_smart_callback_add(genlist, "realized", gl_realized_cb, NULL);
+
/* Set itc */
Elm_Genlist_Item_Class *itc = elm_genlist_item_class_new();
Elm_Genlist_Item_Class *mtc = elm_genlist_item_class_new();
+ Elm_Genlist_Item_Class *ntc = elm_genlist_item_class_new();
itc->item_style = "1line";
itc->func.content_get = gl_content_get_cb;
mtc->func.text_get = gl_menu_desc_text_get_cb;
mtc->func.del = gl_menu_desc_del_cb;
+ ntc->item_style = "group_index";
+ ntc->func.text_get = NULL;
+
it = elm_genlist_item_append(genlist, mtc, NULL, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
log_if(it == NULL, 1, "Error in elm_genlist_item_append");
elm_genlist_item_select_mode_set(it, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+ it = elm_genlist_item_append(genlist, ntc, NULL, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
+ log_if(it == NULL, 1, "error in elm_genlist_item_append");
+ elm_genlist_item_select_mode_set(it, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+
for (l = pkg_data_list; l != NULL; l = l->next) {
pkg_data_s* pkg_data = (pkg_data_s*)l->data;
/* Get privacy status of given package */
}
elm_genlist_item_class_free(itc);
elm_genlist_item_class_free(mtc);
+ elm_genlist_item_class_free(ntc);
}
/* Push naviframe item */
Elm_Object_Item *nf_it = elm_naviframe_item_push(ad->nf, privacy_display, common_back_btn_add(ad), NULL, genlist, NULL);