Fixed prevent issues
[apps/core/preloaded/quickpanel.git] / daemon / notifications / noti_gridbox.c
index 80c9ab7..fbd2457 100755 (executable)
@@ -1,7 +1,7 @@
 /*
  * 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
  *
@@ -39,6 +39,7 @@ typedef struct _gridbox_info_layout {
        int child_w;
        int child_h;
        double scale;
+       int limit_w;
 } gridbox_info_layout;
 
 typedef struct _gridbox_info_animation {
@@ -83,7 +84,9 @@ static void _gridbox_layout(Evas_Object *o, Evas_Object_Box_Data *priv,
        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");
@@ -101,20 +104,23 @@ static void _gridbox_layout(Evas_Object *o, Evas_Object_Box_Data *priv,
        //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++;
@@ -124,7 +130,7 @@ static void _gridbox_layout(Evas_Object *o, Evas_Object_Box_Data *priv,
                        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");
@@ -143,7 +149,8 @@ Evas_Object *gridbox_create(Evas_Object *parent, void *data) {
        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(
@@ -155,7 +162,8 @@ Evas_Object *gridbox_create(Evas_Object *parent, void *data) {
        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);
@@ -185,7 +193,7 @@ Evas_Object *gridbox_create(Evas_Object *parent, void *data) {
        return gridbox;
 }
 
-void gridbox_remove(Evas_Object *gridbox) {
+HAPI void gridbox_remove(Evas_Object *gridbox) {
 
        retif(gridbox == NULL, , "invalid parameter");
 
@@ -208,7 +216,7 @@ void gridbox_remove(Evas_Object *gridbox) {
                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");
@@ -229,7 +237,7 @@ static void _gridbox_call_item_deleted_cb(Evas_Object *gridbox, void *data,
        }
 }
 
-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");
@@ -287,7 +295,7 @@ static void _gridbox_remove_item_anim_cb(void *data, Elm_Transit *transit) {
        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");
@@ -326,7 +334,7 @@ void gridbox_remove_item(Evas_Object *gridbox, Evas_Object *item, int with_anima
        }
 }
 
-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");
 
@@ -344,13 +352,13 @@ void gridbox_remove_all_item(Evas_Object *gridbox, int with_animation) {
        }
 }
 
-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) {
 
@@ -386,14 +394,14 @@ void gridbox_remove_and_add_item(Evas_Object *gridbox, Evas_Object *item
        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");