-bin/homescreen-efl__DEL__eTq3efsJy3ZZoKNlLaZ9YAEzn/s5GNn8Ld3OAWbZ6yw=
+bin/homescreen-efl__DEL__ipNhMGA9YdCS9WORWvE96K43jMicxNCwjm21OChmqWk=
res/edje/add_widget_viewer.edj__DEL__KaDoUUh0Qg+t+Cw1qHJXA6PUxIh2xuIQHnCu9OV4/hc=
res/edje/app_icon.edj__DEL__Eu43j1+2+ea+oxjufrHtApUvLicZcONCnpZkQFMLZUs=
res/edje/apps_chooser_btn.edj__DEL__pAJeOFkfFmGw5h4Uvur4s7KUUVSRScqAnG8rBBiF/b8=
res/locale/zh_HK/LC_MESSAGES/homescreen-efl.mo__DEL__XbmoPGvpjZD09qMkipbn/N/GNg/T74qcAmfZ09aTVIM=
res/locale/zh_TW/LC_MESSAGES/homescreen-efl.mo__DEL__oV3fIhDtXRMBjVuLETwBwYVDwiCHWvpDVpgtektLlM4=
shared/res/homescreen-efl.png__DEL__1d0oEZHqPn+QzNzGIHwj9ODby6x9ggFs9uOsav6jPNs=
-tizen-manifest.xml__DEL__HlwQmaFXgrNH4ygDj7kH+fT/9cUP7JE60jlK1v0pnlo=
-author-signature.xml__DEL__qBw3ojaI9mHXmStXQqj6UheMnUNxYh2vLEsp1lW17ng=
+tizen-manifest.xml__DEL__n71/oOsgirvYilXhpF4alQgL4lw91QqnbgS1i/ve70M=
+author-signature.xml__DEL__X+8Jrm6O6fvHlWPM947dQtNm06dzUhr2o2QQvz8rbJQ=
<SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"></SignatureMethod>
<Reference URI="bin%2Fhomescreen-efl">
<DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"></DigestMethod>
-<DigestValue>eTq3efsJy3ZZoKNlLaZ9YAEzn/s5GNn8Ld3OAWbZ6yw=</DigestValue>
+<DigestValue>ipNhMGA9YdCS9WORWvE96K43jMicxNCwjm21OChmqWk=</DigestValue>
</Reference>
<Reference URI="res%2Fedje%2Fadd_widget_viewer.edj">
<DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"></DigestMethod>
</Reference>
<Reference URI="tizen-manifest.xml">
<DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"></DigestMethod>
-<DigestValue>HlwQmaFXgrNH4ygDj7kH+fT/9cUP7JE60jlK1v0pnlo=</DigestValue>
+<DigestValue>n71/oOsgirvYilXhpF4alQgL4lw91QqnbgS1i/ve70M=</DigestValue>
</Reference>
<Reference URI="#prop">
<Transforms>
</Reference>
</SignedInfo>
<SignatureValue>
-d6OHq4Nq3I1jnehuAEg9cUpAahMi3ddhrop/NS3AuN9u7rKnllR3OJRcfkSRlFvodPyPVt2VhuhG
-wCzgAvUvOxODuHCdT0lwoNrJ2GtVRNVHJAYsgv6zofvvRLmJ+d77w9XtMaehYx+1pKv7d/RL5CpB
-OuqHAY2pFA7UkLpXyhE=
+LdNqJQBfp75uvgHwUBy36Q1xSOuRaswzhY9hwJ4uAzb91/H5gUuZnLwV7PoN5mzki76xM0wEAOv1
+UGGHPcwWtYUTWMfUIyBWICNYmosRIgyymEJAodRwwywP4zixMgB5Da+CviFzED4J0I2Q2CtToSqQ
+pAfWzwF451kqwNBXYRk=
</SignatureValue>
<KeyInfo>
<X509Data>
<SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"></SignatureMethod>
<Reference URI="author-signature.xml">
<DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"></DigestMethod>
-<DigestValue>qBw3ojaI9mHXmStXQqj6UheMnUNxYh2vLEsp1lW17ng=</DigestValue>
+<DigestValue>X+8Jrm6O6fvHlWPM947dQtNm06dzUhr2o2QQvz8rbJQ=</DigestValue>
</Reference>
<Reference URI="bin%2Fhomescreen-efl">
<DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"></DigestMethod>
-<DigestValue>eTq3efsJy3ZZoKNlLaZ9YAEzn/s5GNn8Ld3OAWbZ6yw=</DigestValue>
+<DigestValue>ipNhMGA9YdCS9WORWvE96K43jMicxNCwjm21OChmqWk=</DigestValue>
</Reference>
<Reference URI="res%2Fedje%2Fadd_widget_viewer.edj">
<DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"></DigestMethod>
</Reference>
<Reference URI="tizen-manifest.xml">
<DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"></DigestMethod>
-<DigestValue>HlwQmaFXgrNH4ygDj7kH+fT/9cUP7JE60jlK1v0pnlo=</DigestValue>
+<DigestValue>n71/oOsgirvYilXhpF4alQgL4lw91QqnbgS1i/ve70M=</DigestValue>
</Reference>
<Reference URI="#prop">
<Transforms>
</Reference>
</SignedInfo>
<SignatureValue>
-WBzVKlIahWHYeFKhjahxiS/GhfPjYxFRZclUVLelXGbJ9whOfFvUpzs0D13oLsjqYam+u/woz1An
-T640+CIxwKcZpdnHeW10HRomDXuptNM2VY8PWHo0ZXeOW6i8cI4r8i1TRT8NDCzFokxTIOKLKB3k
-APG31joACyxHygafuz0=
+WsBEmp+6nWUTg/LhM0fltpiZ5Q/ZGaHwhGmQP//ULH+BJf507I8pyd0B1X5vW6BhWOH/FZg2nHFD
+I9n0/kA45DpoLtEaJE2Hv/E76MjDrEMJVGZfTHP32OpVQ+rEpuTUlzBNaE6xPOiFbtFCHR5CjahX
+MbklcMzpsOa10/2+kNY=
</SignatureValue>
<KeyInfo>
<X509Data>
void apps_data_delete_item(app_data_t *item);
void apps_data_delete_list(Eina_List *list);
app_data_t *apps_data_find_item_by_index(int index);
+int apps_data_get_folder_item_count(app_data_t *folder);
#endif /* __APPS_DATA_H__ */
void apps_view_icon_add(app_data_t *item);
void apps_view_hw_menu_key(void);
-void apps_view_hw_home_key(void);
+bool apps_view_hw_home_key(void);
bool apps_view_hw_back_key(void);
view_state_t apps_view_get_state(void);
void apps_view_set_state(view_state_t state);
bool cluster_page_unset(cluster_page_t *page, widget_data_t *item);
bool cluster_page_check_empty_space(cluster_page_t *page, widget_size_type_e type,
int pos_x, int pos_y, int *empty_x, int *empty_y);
+void cluster_page_check_empty_space_pos(cluster_page_t *page, widget_data_t *item, int *out_x, int *out_y);
Evas_Object *cluster_page_thumbnail(cluster_page_t *page);
void cluster_page_drag_cancel(cluster_page_t *page);
void cluster_page_drag_widget(cluster_page_t *page, widget_size_type_e type, int pos_x, int pos_y);
bool cluster_page_drop_widget(cluster_page_t *page, widget_data_t *widget);
+void cluster_page_get_highlight_xy(cluster_page_t *page, int *x, int *y);
#endif /* __CLUSTER_VIEW_PAGE_H__ */
void cluster_view_hide_anim(double pos);
void cluster_view_hw_menu_key(void);
-void cluster_view_hw_home_key(void);
+bool cluster_view_hw_home_key(void);
bool cluster_view_hw_back_key(void);
view_state_t cluster_view_get_state(void);
-void cluster_view_set_state(view_state_t state);
+bool cluster_view_set_state(view_state_t state);
void cluster_view_delete_widget(widget_data_t *item);
bool cluster_view_add_widget(widget_data_t *item, bool scroll);
#define CLUSTER_COL 4
#define CLUSTER_HOME_PAGE 0
#define CLUSTER_MAX_PAGE 6
+#define CLUSTER_VIEW_ALLPAGE_MOVE_GAP 10000
#define PAGE_INDICATOR_PADDING_BOTTON ((16) * (__conf_get_resolution_scale_h()))
#define PAGE_INDICATOR_H ((76) * (__conf_get_resolution_scale_h()))
return;
}
- cluster_data_insert_widget(widget->widget_id, widget->widget_id, *size);
-
+ int type = *size;
free(size);
+ char *widget_id = strdup(widget->widget_id);
cluster_view_set_state(VIEW_STATE_NORMAL);
+
+ cluster_data_insert_widget(widget_id, widget_id, type);
+ free(widget_id);
}
.data_list = NULL
};
-void __apps_data_print(Eina_List *list);
+static void __apps_data_print(Eina_List *list);
static int __apps_data_sort_cb(const void *a , const void *b);
static void __apps_data_item_free(app_data_t *item);
app_data_t *__apps_data_find_item(int db_id);
free(item);
}
-void __apps_data_print(Eina_List *list)
+static void __apps_data_print(Eina_List *list)
{
app_data_t *item = NULL;
Eina_List *find_list;
}
LOGD("========================================");
}
+
+int apps_data_get_folder_item_count(app_data_t *folder)
+{
+ int cnt = 0;
+ app_data_t *item = NULL;
+ Eina_List *find_list;
+ EINA_LIST_FOREACH(apps_data_s.data_list, find_list, item) {
+ if (item->parent_db_id == folder->db_id)
+ cnt += 1;
+ }
+ return cnt;
+}
LOGD("Uninstall :: %s", item->pkg_str);
if (item->is_folder) {
- Evas_Smart_Cb func[3] = { __apps_view_delete_folder_cb, NULL, NULL };
- void *data[3] = { item, NULL, NULL };
- char btn_text[3][STR_MAX] = { "", "", "" };
- char title_text[STR_MAX] = { "" };
- char popup_text[STR_MAX] = { "" };
- snprintf(btn_text[0], sizeof(btn_text[0]), "%s", _("IDS_ST_BUTTON_REMOVE_ABB2"));
- snprintf(btn_text[1], sizeof(btn_text[1]), "%s", _("IDS_CAM_SK_CANCEL"));
- snprintf(title_text, sizeof(title_text), "%s", _("IDS_HS_HEADER_REMOVE_FOLDER_ABB"));
- snprintf(popup_text, sizeof(popup_text), "%s", _("IDS_HS_BODY_FOLDER_WILL_BE_REMOVED_APPLICATIONS_IN_THIS_FOLDER_WILL_NOT_BE_UNINSTALLED"));
- popup_show(2, func, data, btn_text, title_text, popup_text);
+ if (apps_data_get_folder_item_count(item) > 0) {
+ Evas_Smart_Cb func[3] = { __apps_view_delete_folder_cb, NULL, NULL };
+ void *data[3] = { item, NULL, NULL };
+ char btn_text[3][STR_MAX] = { "", "", "" };
+ char title_text[STR_MAX] = { "" };
+ char popup_text[STR_MAX] = { "" };
+ snprintf(btn_text[0], sizeof(btn_text[0]), "%s", _("IDS_ST_BUTTON_REMOVE_ABB2"));
+ snprintf(btn_text[1], sizeof(btn_text[1]), "%s", _("IDS_CAM_SK_CANCEL"));
+ snprintf(title_text, sizeof(title_text), "%s", _("IDS_HS_HEADER_REMOVE_FOLDER_ABB"));
+ snprintf(popup_text, sizeof(popup_text), "%s", _("IDS_HS_BODY_FOLDER_WILL_BE_REMOVED_APPLICATIONS_IN_THIS_FOLDER_WILL_NOT_BE_UNINSTALLED"));
+ popup_show(2, func, data, btn_text, title_text, popup_text);
+ } else {
+ apps_data_delete_folder(item);
+ }
} else if (item->type >= APPS_DATA_TYPE_APP_SHORTCUT) {
LOGD("Delete shortcut");
apps_data_delete_item(item);
menu_change_state_on_hw_menu_key(apps_menu_table);
}
-void apps_view_hw_home_key(void)
+bool apps_view_hw_home_key(void)
{
if (apps_view_s.opened_folder != NULL) {
__apps_view_close_folder_popup(apps_view_s.opened_folder);
}
apps_view_set_state(VIEW_STATE_NORMAL);
+
+ return false;
}
bool apps_view_hw_back_key(void)
static void __apps_view_open_folder_popup(app_data_t *item)
{
+ if (apps_view_s.animator != NULL) {
+ LOGE("apps_view_s.animator != NULL");
+ return ;
+ }
+
char edj_path[PATH_MAX] = {0, };
snprintf(edj_path, sizeof(edj_path), "%s", util_get_res_file_path(EDJE_DIR"/apps_folder_popup.edj"));
static void __apps_view_close_folder_popup(app_data_t *item)
{
- if (apps_view_s.animator == NULL)
- apps_view_s.animator = ecore_animator_timeline_add(HOME_FOLDR_ANIMATION_TIME, __apps_view_hide_folder_anim, NULL);
+ if (apps_view_s.animator != NULL) {
+ LOGE("apps_view_s.animator != NULL");
+ return ;
+ }
+
+ apps_view_s.animator = ecore_animator_timeline_add(HOME_FOLDR_ANIMATION_TIME, __apps_view_hide_folder_anim, NULL);
}
static void __apps_view_close_folder_popup_done(void)
return false;
}
+void cluster_page_check_empty_space_pos(cluster_page_t *page, widget_data_t *item, int *out_x, int *out_y)
+{
+ int x, y;
+ *out_x = INIT_VALUE;
+ *out_y = INIT_VALUE;
+
+ int gx, gy, w, h;
+ evas_object_geometry_get(page->grid, &gx, &gy, &w, &h);
+ if (cluster_page_check_empty_space(page, item->type, item->pos_x, item->pos_y, &x, &y)) {
+ *out_x = gx + x * (w / CLUSTER_COL);
+ *out_y = gy + y * (h / CLUSTER_ROW);
+ } else if (cluster_page_check_empty_space(page, item->type, INIT_VALUE, INIT_VALUE, &x, &y)) {
+ *out_x = gx + x * (w / CLUSTER_COL);
+ *out_y = gy + y * (h / CLUSTER_ROW);
+ } else {
+ *out_x = gx + item->pos_x * (w / CLUSTER_COL);
+ *out_y = gy + item->pos_y * (h / CLUSTER_ROW);
+ }
+}
+
+void cluster_page_get_highlight_xy(cluster_page_t *page, int *x, int *y)
+{
+ int gx, gy, w, h;
+ evas_object_geometry_get(page->grid, &gx, &gy, &w, &h);
+ if (page->highlight_pos_x == INIT_VALUE || page->highlight_pos_y == INIT_VALUE) {
+ *x = INIT_VALUE;
+ *y = INIT_VALUE;
+ } else {
+ *x = gx + page->highlight_pos_x * (w / CLUSTER_COL);
+ *y = gy + page->highlight_pos_y * (h / CLUSTER_ROW);
+ }
+}
+
void __cluster_page_set(cluster_page_t *page, widget_data_t *item)
{
int w, h;
if (page->highlight) {
evas_object_del(page->highlight);
page->highlight = NULL;
+ page->highlight_pos_x = INIT_VALUE;
+ page->highlight_pos_y = INIT_VALUE;
}
}
bool cluster_page_drop_widget(cluster_page_t *page, widget_data_t *widget)
{
- if (!page->highlight || page->highlight_pos_x == INIT_VALUE || page->highlight_pos_y == INIT_VALUE)
+ if (!page->highlight || page->highlight_pos_x == INIT_VALUE || page->highlight_pos_y == INIT_VALUE) {
+ int x, y;
+ if (cluster_page_check_empty_space(page, widget->type, widget->pos_x, widget->pos_y, &x, &y) ||
+ cluster_page_check_empty_space(page, widget->type, INIT_VALUE, INIT_VALUE, &x, &y)) {
+ widget->page_idx = page->page_index;
+ widget->pos_x = x;
+ widget->pos_y = y;
+ __cluster_page_set(page, widget);
+ return true;
+ }
return false;
+ }
elm_grid_unpack(page->grid, page->highlight);
evas_object_del(page->highlight);
widget->pos_x = page->highlight_pos_x;
widget->pos_y = page->highlight_pos_y;
__cluster_page_set(page, widget);
+
+ page->highlight_pos_x = INIT_VALUE;
+ page->highlight_pos_y = INIT_VALUE;
return true;
}
widget_data_t *picked_widget;
Ecore_Timer *edit_mode_scroll_timer;
bool is_srolling;
+ Ecore_Animator *edit_animator;
+ int animation_from_x;
+ int animation_from_y;
+ int animation_to_x;
+ int animation_to_y;
} cluster_view_s = {
.scroller = NULL,
.box = NULL,
.picked_widget = NULL,
.edit_mode_scroll_timer = NULL,
.is_srolling = false,
+ .edit_animator = NULL,
+ .animation_from_x = INIT_VALUE,
+ .animation_from_y = INIT_VALUE,
+ .animation_to_x = INIT_VALUE,
+ .animation_to_y = INIT_VALUE,
};
static int cluster_menu_list[4] = {
static void __cluster_view_edit_pick_up_widget(void *data);
static void __cluster_view_edit_drag_widget(void *data);
static void __cluster_view_edit_drop_widget(void *data);
-
+static Eina_Bool __cluster_view_edit_move_anim(void *data, double pos);
+static void __cluster_view_edit_move_anim_done(void *data);
static Eina_Bool __cluster_view_scroll_timer_cb(void *data);
+static void __cluster_view_scroll_anim_start_cb(void *data, Evas_Object *obj, void *event_info);
static void __cluster_view_scroll_anim_stop_cb(void *data, Evas_Object *obj, void *event_info);
static void __cluster_view_allpage_get_page_pos(int page_idx, int *w, int *h);
static int __cluster_view_allpage_get_page_index(int x, int y);
evas_object_event_callback_add(cluster_view_s.scroller, EVAS_CALLBACK_MOUSE_UP, __clsuter_view_scroller_up_cb, NULL);
evas_object_smart_callback_add(cluster_view_s.scroller, "scroll,anim,stop", __cluster_view_scroll_anim_stop_cb, NULL);
+ evas_object_smart_callback_add(cluster_view_s.scroller, "scroll,anim,start", __cluster_view_scroll_anim_start_cb, NULL);
cluster_view_s.box = elm_box_add(cluster_view_s.scroller);
elm_box_horizontal_set(cluster_view_s.box, EINA_TRUE);
menu_change_state_on_hw_menu_key(cluster_menu_table);
}
-void cluster_view_hw_home_key(void)
+bool cluster_view_hw_home_key(void)
{
if (cluster_view_s.view_state == VIEW_STATE_NORMAL) {
__cluster_view_scroll_to_home();
} else if (cluster_view_s.view_state == VIEW_STATE_ALL_PAGE) {
cluster_view_set_state(VIEW_STATE_NORMAL);
}
+
+ return false;
}
bool cluster_view_hw_back_key(void)
{
- if (cluster_view_s.view_state == VIEW_STATE_NORMAL) {
- return true;
- } else if (cluster_view_s.view_state == VIEW_STATE_EDIT) {
+ if (cluster_view_s.view_state == VIEW_STATE_EDIT) {
cluster_view_set_state(VIEW_STATE_NORMAL);
} else if (cluster_view_s.view_state == VIEW_STATE_ADD_VIEWER) {
cluster_view_set_state(VIEW_STATE_NORMAL);
return cluster_view_s.view_state;
}
-void cluster_view_set_state(view_state_t state)
+bool cluster_view_set_state(view_state_t state)
{
+ if (cluster_view_s.is_srolling) {
+ LOGE("cannot change view-state");
+ return false;
+ }
+
+ if (cluster_view_s.edit_animator) {
+ ecore_animator_del(cluster_view_s.edit_animator);
+ cluster_view_s.edit_animator = NULL;
+ __cluster_view_edit_move_anim_done(cluster_view_s.picked_widget);
+ }
+
if (state == VIEW_STATE_EDIT) {
homescreen_efl_btn_hide(HOMESCREEN_VIEW_HOME);
Eina_List *find_list = NULL;
cluster_page_t *page_item = NULL;
+ elm_box_unpack_all(cluster_view_s.box);
EINA_LIST_FOREACH(cluster_view_s.page_list, find_list, page_item) {
if (page_item->page_layout) {
elm_box_pack_end(cluster_view_s.box, page_item->page_layout);
}
cluster_view_s.view_state = state;
+
+ return true;
}
bool cluster_view_add_widget(widget_data_t *item, bool scroll)
cluster_page_t *page = (cluster_page_t *)eina_list_nth(cluster_view_s.page_list, page_idx);
set_on = cluster_page_set_widget(page, item);
- if (!set_on && !cluster_page_set_widget(page, item)) {
+ if (!set_on) {
Eina_List *find_list = NULL;
cluster_page_t *page_item = NULL;
bool set_on = false;
static void __cluster_view_scroll_to_page(int page_idx, bool animation)
{
if (animation) {
- cluster_view_s.is_srolling = true;
elm_scroller_page_bring_in(cluster_view_s.scroller, page_idx, 0);
} else {
page_indicator_set_current_page(cluster_view_s.indicator, page_idx);
static int __cluster_view_allpage_get_page_index(int x, int y)
{
- double row, col;
- int int_row, int_col;
- int start_y = 0;
- int index = 0;
+ int idx = 0;
+ int sx = CLUSTER_ALL_PAGE_PADDING_SIDE;
+ int sy = 0;
if (cluster_view_s.page_count < 2) {
- start_y = (WINDOW_H - CLUSTER_ALL_PAGE_H) / 2;
+ sy = (WINDOW_H - CLUSTER_ALL_PAGE_H) / 2;
} else if (cluster_view_s.page_count < 4) {
- start_y = (WINDOW_H - (CLUSTER_ALL_PAGE_H * 2 + CLUSTER_ALL_PAGE_GAP_H)) / 2;
+ sy = (WINDOW_H - (CLUSTER_ALL_PAGE_H * 2 + CLUSTER_ALL_PAGE_GAP_H)) / 2;
} else {
- start_y = (WINDOW_H - (CLUSTER_ALL_PAGE_H * 3 + CLUSTER_ALL_PAGE_GAP_H * 2)) / 2;
+ sy = (WINDOW_H - (CLUSTER_ALL_PAGE_H * 3 + CLUSTER_ALL_PAGE_GAP_H * 2)) / 2;
}
- col = (double)(x - CLUSTER_ALL_PAGE_PADDING_SIDE) / (CLUSTER_ALL_PAGE_W + CLUSTER_ALL_PAGE_GAP_W);
- int_col = (int)(col + 0.5);
- row = (double)(y - start_y)/(CLUSTER_ALL_PAGE_H + CLUSTER_ALL_PAGE_GAP_H);
- int_row = (int)(row + 0.5);
-
- if (((int_col - ALLPAGE_MOVE_GAP) < col && (int_col + ALLPAGE_MOVE_GAP) > col) &&
- ((int_row - ALLPAGE_MOVE_GAP) < row && (int_row + ALLPAGE_MOVE_GAP) > row)) {
- index = int_row * 2 + int_col;
- return index;
+ int w = CLUSTER_ALL_PAGE_W + CLUSTER_ALL_PAGE_GAP_W;
+ int h = CLUSTER_ALL_PAGE_H + CLUSTER_ALL_PAGE_GAP_H;
+
+ for (idx=0; idx < cluster_view_s.page_count; idx++) {
+ int row = idx / 2;
+ int col = idx % 2;
+ int ny = sy + (row * h);
+ int nx = sx + (col * w);
+
+ int d = (ny - y) * (ny - y) + (nx - x) * (nx - x);
+ if (d < CLUSTER_VIEW_ALLPAGE_MOVE_GAP) {
+ return (row * 2) + col;
+ }
}
+
return INIT_VALUE;
}
static void __cluster_view_allpage_delete_clicked(void *data, Evas_Object *obj, const char *emission, const char *source)
{
+ if (cluster_view_s.page_count <= 1)
+ return ;
+
cluster_page_t *page_item = (cluster_page_t *)data;
if (eina_list_count(page_item->widget_list) > 0) {
Evas_Smart_Cb func[3] = { __cluster_view_allpage_delete_page_cb, NULL, NULL };
static void __cluster_view_allpage_drop_page(void *data)
{
if (cluster_view_s.picked_page) {
- elm_object_signal_emit(cluster_view_s.picked_page->thumbnail_ly, SIGNAL_ALLPAGE_DELETE_BUTTON_SHOW, SIGNAL_SOURCE);
+ if (cluster_view_s.page_count > 1)
+ elm_object_signal_emit(cluster_view_s.picked_page->thumbnail_ly, SIGNAL_ALLPAGE_DELETE_BUTTON_SHOW, SIGNAL_SOURCE);
elm_object_signal_emit(cluster_view_s.picked_page->thumbnail_ly, SIGNAL_ALLPAGE_DRAG_BG_HIDE, SIGNAL_SOURCE);
int x, y;
}
cluster_view_s.page_list = eina_list_sort(cluster_view_s.page_list,
eina_list_count(cluster_view_s.page_list), __cluster_view_page_sort_cb);
+
+ Eina_List *find_list = NULL, *widget_list = NULL;
+ cluster_page_t *page_item = NULL;
+ widget_data_t *widget_item = NULL;
+ EINA_LIST_FOREACH(cluster_view_s.page_list, find_list, page_item) {
+ EINA_LIST_FOREACH(page_item->widget_list, widget_list, widget_item) {
+ widget_item->page_idx = page_item->page_index;
+ cluster_data_update(widget_item);
+ }
+ }
}
static void __clsuter_view_widget_down_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
Evas_Event_Mouse_Down* ev = event_info;
LOGD("DOWN: (%d,%d)", ev->output.x, ev->output.y);
+ if (cluster_view_s.edit_animator) {
+ LOGE("edit animator is running");
+ return ;
+ }
+
cluster_mouse_info.pressed = true;
cluster_mouse_info.pressed_obj = obj;
if (cluster_view_s.picked_widget) {
__cluster_view_edit_drop_widget(data);
-
- cluster_view_s.picked_widget = NULL;
}
}
static void __cluster_view_edit_drop_widget(void *data)
{
- Evas_Object *widget_layout = cluster_view_s.picked_widget->widget_layout;
- elm_object_signal_emit(widget_layout, SIGNAL_DELETE_BUTTON_SHOW_ANI, SIGNAL_SOURCE);
- elm_object_signal_emit(widget_layout, SIGNAL_CLUSTER_EDIT_STATE, SIGNAL_SOURCE);
-
if (cluster_view_s.edit_mode_scroll_timer) {
ecore_timer_del(cluster_view_s.edit_mode_scroll_timer);
cluster_view_s.edit_mode_scroll_timer = NULL;
}
+ if (cluster_view_s.edit_animator) {
+ ecore_animator_del(cluster_view_s.edit_animator);
+ cluster_view_s.edit_animator = NULL;
+ }
+
+ int to_x, to_y;
+ cluster_view_s.animation_from_x = cluster_mouse_info.move_x - cluster_mouse_info.offset_x;
+ cluster_view_s.animation_from_y = cluster_mouse_info.move_y - cluster_mouse_info.offset_y;
+
+ cluster_page_t *page = (cluster_page_t *)eina_list_nth(cluster_view_s.page_list, cluster_view_s.current_page);
+ cluster_page_get_highlight_xy(page, &to_x, &to_y);
+ if (to_x == INIT_VALUE || to_y == INIT_VALUE) {
+ cluster_page_check_empty_space_pos(page, cluster_view_s.picked_widget, &to_x, &to_y);
+ }
+
+ cluster_view_s.animation_to_x = to_x;
+ cluster_view_s.animation_to_y = to_y;
+
+ cluster_view_s.edit_animator = ecore_animator_timeline_add(HOME_ANIMATION_TIME, __cluster_view_edit_move_anim, NULL);
+}
+static Eina_Bool __cluster_view_edit_move_anim(void *data, double pos)
+{
+ evas_object_move(cluster_view_s.picked_widget->widget_layout,
+ (cluster_view_s.animation_to_x - cluster_view_s.animation_from_x) * pos + cluster_view_s.animation_from_x,
+ (cluster_view_s.animation_to_y - cluster_view_s.animation_from_y) * pos + cluster_view_s.animation_from_y);
+
+ if (pos >= 1.0 - (1e-10)) {
+ __cluster_view_edit_move_anim_done(data);
+
+ cluster_view_s.edit_animator = NULL;
+ return ECORE_CALLBACK_DONE;
+ }
+
+ return ECORE_CALLBACK_RENEW;
+}
+
+static void __cluster_view_edit_move_anim_done(void *data)
+{
+ Evas_Object *widget_layout = cluster_view_s.picked_widget->widget_layout;
+ elm_object_signal_emit(widget_layout, SIGNAL_DELETE_BUTTON_SHOW_ANI, SIGNAL_SOURCE);
+ elm_object_signal_emit(widget_layout, SIGNAL_CLUSTER_EDIT_STATE, SIGNAL_SOURCE);
+
cluster_page_t *page = (cluster_page_t *)eina_list_nth(cluster_view_s.page_list, cluster_view_s.current_page);
if (!cluster_page_drop_widget(page, cluster_view_s.picked_widget)) {
- cluster_view_add_widget(cluster_view_s.picked_widget, false);
+ cluster_view_s.current_page = cluster_view_s.picked_widget->page_idx;
+ __cluster_view_scroll_to_page(cluster_view_s.current_page, true);
+
+ cluster_view_add_widget(cluster_view_s.picked_widget, true);
}
+
+ cluster_view_s.picked_widget = NULL;
}
static void __clsuter_view_scroller_down_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
if (cluster_view_s.view_state != VIEW_STATE_NORMAL)
return ;
+ if (cluster_view_s.edit_animator) {
+ LOGE("edit animator is running");
+ return ;
+ }
+
LOGD("DOWN: (%d,%d)", ev->output.x, ev->output.y);
cluster_mouse_info.pressed = true;
return ECORE_CALLBACK_CANCEL;
}
+static void __cluster_view_scroll_anim_start_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ cluster_view_s.is_srolling = true;
+}
static void __cluster_view_scroll_anim_stop_cb(void *data, Evas_Object *obj, void *event_info)
{
__cluster_view_scroll_to_page(next_page_idx, true);
return ECORE_CALLBACK_RENEW;
}
-
.root_width = 0,
.root_height = 0,
.view_type = HOMESCREEN_VIEW_HOME,
- .animator = NULL
+ .animator = NULL,
};
static void __homescreen_efl_get_window_size(Evas_Object *win);
if (main_info.view_type == HOMESCREEN_VIEW_HOME) {
cluster_view_hw_home_key();
} else if (main_info.view_type == HOMESCREEN_VIEW_APPS) {
- apps_view_hw_home_key();
- __homescreen_efl_change_view();
+ if (apps_view_hw_home_key() == false)
+ __homescreen_efl_change_view();
}
}
#include "conf.h"
#include "edc_conf.h"
+//#define _TEST_
+#ifdef _TEST_
+static Eina_Bool __widget_viewer_test_timer_cb(void *data)
+{
+ Evas_Object *widget = (Evas_Object*) data;
+ evas_object_color_set(widget, rand()%255, rand()%255, rand()%255, 100);
+ return ECORE_CALLBACK_RENEW;
+}
+static int count = 0;
+#endif
static void __widget_viewer_delete_btn_clicked_cb(void *data, Evas_Object *obj, const char *emission, const char *source);
void widget_viewer_init(Evas_Object *win)
evas_object_show(rect);
elm_object_part_content_set(widget_layout, SIZE_SETTER, rect);
-#if 1
+#ifndef _TEST_
Evas_Object *widget = widget_viewer_evas_add_widget(widget_layout, item->pkg_name, NULL, item->period);
evas_object_size_hint_align_set(widget, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(widget, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_color_set(widget, 255, 255, 255, 255);
#else // for TEST
- Evas_Object *widget = evas_object_rectangle_add(evas_object_evas_get(widget_layout));
+/* Evas_Object *widget = evas_object_rectangle_add(evas_object_evas_get(widget_layout));
evas_object_size_hint_align_set(widget, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(widget, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_color_set(widget, 0, 0, 255, 100);
evas_object_show(widget);
+*/
+ char number[1000];
+ sprintf(number, "<font_size=50>%s_%d</font_size>", item->pkg_name, count++);
+ Evas_Object *widget = elm_label_add(evas_object_evas_get(widget_layout));
+ elm_object_style_set(widget, "popup/default");
+ evas_object_size_hint_weight_set(widget, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(widget, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ elm_object_text_set(widget, number);
+ evas_object_color_set(widget, 0, 0, 255, 100);
+ evas_object_show(widget);
+
+ Ecore_Timer *timer = ecore_timer_add(1, __widget_viewer_test_timer_cb, widget);
#endif
elm_object_part_content_set(widget_layout, WIDGET_CONTENT, widget);
<privilege>http://tizen.org/privilege/appmanager.launch</privilege>
<privilege>http://tizen.org/privilege/packagemanager.admin</privilege>
<privilege>http://tizen.org/privilege/shortcut</privilege>
+ <privilege>http://tizen.org/privilege/notification</privilege>
<privilege>http://tizen.org/privilege/packagemanager.info</privilege>
<privilege>http://tizen.org/privilege/widget.viewer</privilege>
</privileges>