/*
* Copyright 2012 Samsung Electronics Co., Ltd
*
- * Licensed under the Flora License, Version 1.0 (the License);
+ * Licensed under the Flora License, Version 1.1 (the License);
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
#include "quickpanel-ui.h"
#include "common.h"
#include "list_util.h"
-#include "quickpanel_theme_def.h"
+#include "quickpanel_def.h"
#include "noti_gridbox.h"
#include "noti_box.h"
int child_w;
int child_h;
double scale;
+ int limit_w;
} gridbox_info_layout;
typedef struct _gridbox_info_animation {
Eina_List *l;
Eina_List *l_next;
Evas_Object_Box_Option *opt;
- int child_w, child_h;
+ int child_w;
+ int space_w = 0;
+ int num_padding_between = 0;
retif(o == NULL, , "invalid parameter");
retif(priv == NULL, , "invalid parameter");
n_children = eina_list_count(priv->children);
DBG("layout function:%d", n_children);
- DBG("ref count:%p(%d)",o, evas_object_ref_get(o));
if (!n_children) {
+ evas_object_size_hint_min_set(o, -1, 0);
return;
}
//box geometry
evas_object_geometry_get(o, &x, &y, &w, &h);
- //set info about children
- opt = eina_list_data_get(priv->children);
- evas_object_size_hint_min_get(opt->obj, &child_w, &child_h);
+ num_padding_between = info_layout->n_per_rows / 2;
+ num_padding_between += (info_layout->n_per_rows > 1 && (info_layout->n_per_rows % 2) > 0) ? 1 : 0;
+
+ space_w = (info_layout->padding_left * 2) + (info_layout->padding_between * num_padding_between);
+ child_w = (info_layout->limit_w - space_w) / info_layout->n_per_rows;
info_layout->child_w = child_w;
- info_layout->child_h = child_h;
- DBG("grid layout children:%d %d", child_w, child_h);
+ DBG("grid layout children pos:%d %d", info_layout->child_w, info_layout->child_h);
int order_children = 1;
EINA_LIST_FOREACH_SAFE(priv->children, l, l_next, opt)
{
_gridbox_layout_get_pos(order_children, &off_x, &off_y, info_layout);
evas_object_move(opt->obj, x + off_x, y + off_y);
+ evas_object_size_hint_min_set(opt->obj, info_layout->child_w,
+ info_layout->child_h);
evas_object_resize(opt->obj, info_layout->child_w,
info_layout->child_h);
order_children++;
off_y + info_layout->child_h + info_layout->padding_bottom);
}
-Evas_Object *gridbox_create(Evas_Object *parent, void *data) {
+HAPI Evas_Object *gridbox_create(Evas_Object *parent, void *data) {
retif(parent == NULL, NULL, "invalid parameter");
retif(data == NULL, NULL, "invalid parameter");
info_layout_portrait->padding_bottom = 12 * ad->scale;
info_layout_portrait->n_per_rows = 2;
info_layout_portrait->child_w = 0; //340;
- info_layout_portrait->child_h = 0; //400;
+ info_layout_portrait->child_h = BOX_HEIGHT_P * ad->scale; //400;
+ info_layout_portrait->limit_w = ad->win_width; //400;
info_layout_portrait->scale = ad->scale;
info_layout_landscape = (gridbox_info_layout *) malloc(
info_layout_landscape->padding_bottom = 12 * ad->scale;
info_layout_landscape->n_per_rows = 3;
info_layout_landscape->child_w = 0; //409;
- info_layout_landscape->child_h = 0; //400;
+ info_layout_landscape->child_h = BOX_HEIGHT_L * ad->scale; //400;
+ info_layout_landscape->limit_w = ad->win_height; //400;
info_layout_landscape->scale = ad->scale;
gridbox = elm_box_add(parent);
elm_box_layout_set(gridbox, _gridbox_layout, info_layout_portrait,
NULL);
- evas_object_ref(gridbox);
evas_object_show(gridbox);
evas_object_data_set(gridbox, E_DATA_LAYOUT_PORTRAIT, info_layout_portrait);
evas_object_data_set(gridbox, E_DATA_CB_DELETE_ITEM, NULL);
evas_object_data_set(gridbox, E_DATA_APP_DATA, ad);
+ qp_item_data *qid
+ = quickpanel_list_util_item_new(QP_ITEM_TYPE_NOTI, NULL);
+ quickpanel_list_util_item_set_tag(gridbox, qid);
+
return gridbox;
}
-void gridbox_remove(Evas_Object *gridbox) {
+HAPI void gridbox_remove(Evas_Object *gridbox) {
retif(gridbox == NULL, , "invalid parameter");
evas_object_data_del(gridbox, E_DATA_LAYOUT_LANDSCAPE);
evas_object_data_del(gridbox, E_DATA_CB_DELETE_ITEM);
evas_object_data_del(gridbox, E_DATA_APP_DATA);
- evas_object_unref(gridbox);
+ quickpanel_list_util_item_del_tag(gridbox);
evas_object_del(gridbox);
if (info_layout_portrait != NULL)
free(info_layout_landscape);
}
-void gridbox_set_item_deleted_cb(Evas_Object *gridbox,
+HAPI void gridbox_set_item_deleted_cb(Evas_Object *gridbox,
void(*deleted_cb)(void *data, Evas_Object *obj)) {
retif(gridbox == NULL, , "invalid parameter");
retif(deleted_cb == NULL, , "invalid parameter");
}
}
-void gridbox_add_item(Evas_Object *gridbox, Evas_Object *item, int is_prepend) {
+HAPI void gridbox_add_item(Evas_Object *gridbox, Evas_Object *item, int is_prepend) {
const char *signal = NULL;
retif(gridbox == NULL, , "invalid parameter");
DBG("remove:%p", info_animation->item);
+ void *node = noti_box_node_get(info_animation->item);
elm_box_unpack(info_animation->gridbox, info_animation->item);
-
- _gridbox_call_item_deleted_cb(info_animation->gridbox,
- noti_box_node_get(info_animation->item), info_animation->item);
noti_box_remove(info_animation->item);
+ _gridbox_call_item_deleted_cb(info_animation->gridbox,
+ node, NULL);
if (info_animation->update_cb != NULL) {
retif(info_animation->container == NULL, , "invalid parameter");
info_animation = NULL;
}
-void gridbox_remove_item(Evas_Object *gridbox, Evas_Object *item, int with_animation) {
+HAPI void gridbox_remove_item(Evas_Object *gridbox, Evas_Object *item, int with_animation) {
DBG("remove:%p", item);
retif(gridbox == NULL, , "invalid parameter");
retif(item == NULL, , "invalid parameter");
info_animation);
elm_transit_go(transit);
} else {
- _gridbox_call_item_deleted_cb(gridbox,
- noti_box_node_get(item), item);
+ void *node = noti_box_node_get(item);
elm_box_unpack(gridbox, item);
noti_box_remove(item);
+ _gridbox_call_item_deleted_cb(gridbox,
+ node, NULL);
}
}
-void gridbox_remove_all_item(Evas_Object *gridbox, int with_animation) {
+HAPI void gridbox_remove_all_item(Evas_Object *gridbox, int with_animation) {
DBG("");
retif(gridbox == NULL, , "invalid parameter");
}
}
-void gridbox_update_item(Evas_Object *gridbox, Evas_Object *item) {
+HAPI void gridbox_update_item(Evas_Object *gridbox, Evas_Object *item) {
retif(gridbox == NULL, , "invalid parameter");
retif(item == NULL, , "invalid parameter");
}
-void gridbox_remove_and_add_item(Evas_Object *gridbox, Evas_Object *item
+HAPI void gridbox_remove_and_add_item(Evas_Object *gridbox, Evas_Object *item
,void (*update_cb)(Evas_Object *list, void *data, int is_prepend)
,void *container, void *data, int pos) {
elm_transit_go(transit);
}
-void gridbox_finalize_rotation_cb(void *data) {
+HAPI void gridbox_finalize_rotation_cb(void *data) {
retif(data == NULL, , "invalid parameter");
Evas_Object *gridbox = data;
elm_box_recalculate(gridbox);
}
-void gridbox_rotation(Evas_Object *gridbox, int angle) {
+HAPI void gridbox_rotation(Evas_Object *gridbox, int angle) {
const char *signal = NULL;
retif(gridbox == NULL, , "invalid parameter");