[Title] Set separator between list items.
[profile/ivi/org.tizen.browser.git] / src / browser-multi-window / browser-multi-window-view.h
1 /*
2  * Copyright 2012  Samsung Electronics Co., Ltd
3  *
4  * Licensed under the Flora License, Version 1.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *    http://www.tizenopensource.org/license
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  *
16  */
17
18 #ifndef BROWSER_MULTI_WINDOW_VIEW_H
19 #define BROWSER_MULTI_WINDOW_VIEW_H
20
21 #include "browser-common-view.h"
22 #include "browser-config.h"
23
24 class Browser_Window;
25
26 class Browser_Multi_Window_View : public Browser_Common_View {
27 public:
28         Browser_Multi_Window_View(void);
29         ~Browser_Multi_Window_View(void);
30
31         Eina_Bool init(double duration = 0.5, Eina_Bool grid_mode = EINA_FALSE);
32         void close_multi_window(void);
33
34         typedef struct _gengrid_callback_param {
35                 void *multi_window_view;
36                 int index;
37         } gengrid_callback_param;
38
39         Eina_Bool _is_grid_mode(void);
40         Eina_Bool is_reordering_mode(void) { return m_is_reordering; }
41 private:
42         Eina_Bool _create_main_layout(void);
43         Eina_Bool _show_zoom_out_effect(void);
44         Eina_Bool _show_zoom_in_effect(Evas_Object *item);
45         Eina_Bool _show_new_window_scroll_effect(void);
46         Eina_Bool _show_zoom_in_new_window_effect(void);
47         Eina_Bool _show_delete_window_scroll_effect(void);
48         void _set_multi_window_mode(Eina_Bool is_multi_window);
49         Eina_Bool _fill_multi_window_items(void);
50         void _snapshot_clicked(Evas_Object *layout_edje);
51         void __zoom_out_finished(void);
52         void _scroller_animation_stop(void);
53         int _get_scroll_page_size(void);
54         void __delete_window_icon_clicked(Evas_Object *layout_edje);
55         void _delete_window_scroll_finished(void);
56         Eina_Bool _create_gengrid(void);
57         Eina_Bool _show_grid_mode_zoom_in_effect(int index);
58         Eina_Bool __delete_window_icon_grid_mode(int index);
59         Eina_Bool _reorder_windows(void);
60         void _show_grey_effect(void);
61         Evas_Object *_create_control_bar(void);
62
63         /* gengrid event callback functions */
64         static Evas_Object *_get_gengrid_icon_cb(void *data, Evas_Object *obj, const char *part);
65
66         /* elementary event callback functions */
67         static void __close_multi_window_button_clicked_cb(void *data,
68                                                 Evas_Object *obj, void *event_info);
69         static void __new_window_button_clicked_cb(void *data, Evas_Object *obj,
70                                                 void *event_info);
71         static void __view_change_button_clicked_cb(void *data, Evas_Object *obj,
72                                                 void *event_info);
73         static void __scroller_animation_stop_cb(void *data, Evas_Object *obj,
74                                                                 void *event_info);
75         static void __gengrid_item_moved_cb(void *data, Evas_Object *obj, void *event_info);
76         static void __gengrid_item_longpress_cb(void *data, Evas_Object *obj, void *event_info);
77         static void __index_selected_cb(void *data, Evas_Object *obj, void *event_info);
78
79         /* transit del callback functions */
80         static void __zoom_in_finished_cb(void *data, Elm_Transit *transit);
81         static void __zoom_out_finished_cb(void *data, Elm_Transit *transit);
82         static void __new_window_zoom_in_finished_cb(void *data, Elm_Transit *transit);
83         static void __delete_window_scroll_finished_cb(void *data, Elm_Transit *transit);
84         static void __new_window_scroll_finished_cb(void *data, Elm_Transit *transit);
85
86         /* edje event callback functions */
87         static void __snapshot_clicked_cb(void *data, Evas_Object *obj,
88                                         const char *emission, const char *source);
89         static void __delete_window_icon_clicked_cb(void *data, Evas_Object *obj,
90                                         const char *emission, const char *source);
91         static void __delete_window_icon_grid_mode_clicked_cb(void *data, Evas_Object *obj,
92                                                 const char *emission, const char *source);
93         static void __snapshot_grid_mode_clicked_cb(void *data, Evas_Object *obj,
94                                                 const char *emission, const char *source);
95         static void __delete_gengrid_cb(void *data, Evas_Object *obj, const char *emission,
96                                                 const char *source);
97
98         /* Ecore idler callback functions */
99         static Eina_Bool __zoom_out_effect_idler_cb(void *data);
100
101         Evas_Object *m_main_layout;
102         Evas_Object *m_scroller;
103         Evas_Object *m_item_box;
104         Evas_Object *m_zoom_effect_image;
105         Evas_Object *m_flip_effect_image;
106         Elm_Transit *m_zoom_transit;
107         Elm_Transit *m_zoom_move_transit;
108         Elm_Transit *m_scroll_move_transit;
109
110         Evas_Object *m_dummy_front_item_layout;
111         Evas_Object *m_dummy_front_item_snapshot;
112         Evas_Object *m_dummy_end_item_layout;
113         Evas_Object *m_dummy_end_item_snapshot;
114
115         Evas_Object *m_page_control;
116
117         int m_select_item_index;
118         int m_current_position_index;
119         std::vector<Evas_Object *> m_item_list;
120
121         Evas_Object *m_gengrid;
122         Elm_Gengrid_Item_Class m_gengrid_item_class;
123         gengrid_callback_param m_callback_param[BROWSER_MULTI_WINDOW_MAX_COUNT];
124
125         Eina_Bool m_is_reordering;
126         Ecore_Idler *m_zoom_out_effect_idler;
127         double m_zoom_out_duration;
128
129         Elm_Object_Item *m_index_items[BROWSER_MULTI_WINDOW_MAX_COUNT];
130         Elm_Object_Item *m_new_window_button;
131         Elm_Object_Item *m_change_view_button;
132         Evas_Object *m_cancel_button;
133         Evas_Object *m_controlbar;
134
135         Eina_Bool m_init_grid_mode;
136 };
137 #endif /* BROWSER_MULTI_WINDOW_VIEW_H */
138