2 * Copyright 2012 Samsung Electronics Co., Ltd
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
8 * http://www.tizenopensource.org/license
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.
18 #ifndef BROWSER_MULTI_WINDOW_VIEW_H
19 #define BROWSER_MULTI_WINDOW_VIEW_H
21 #include "browser-common-view.h"
22 #include "browser-config.h"
26 class Browser_Multi_Window_View : public Browser_Common_View {
28 Browser_Multi_Window_View(void);
29 ~Browser_Multi_Window_View(void);
31 Eina_Bool init(double duration = 0.5, Eina_Bool grid_mode = EINA_FALSE);
32 void close_multi_window(void);
34 typedef struct _gengrid_callback_param {
35 void *multi_window_view;
37 } gengrid_callback_param;
39 Eina_Bool _is_grid_mode(void);
40 Eina_Bool is_reordering_mode(void) { return m_is_reordering; }
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);
63 /* gengrid event callback functions */
64 static Evas_Object *_get_gengrid_icon_cb(void *data, Evas_Object *obj, const char *part);
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,
71 static void __view_change_button_clicked_cb(void *data, Evas_Object *obj,
73 static void __scroller_animation_stop_cb(void *data, Evas_Object *obj,
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);
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);
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,
98 /* Ecore idler callback functions */
99 static Eina_Bool __zoom_out_effect_idler_cb(void *data);
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;
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;
115 Evas_Object *m_page_control;
117 int m_select_item_index;
118 int m_current_position_index;
119 std::vector<Evas_Object *> m_item_list;
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];
125 Eina_Bool m_is_reordering;
126 Ecore_Idler *m_zoom_out_effect_idler;
127 double m_zoom_out_duration;
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;
135 Eina_Bool m_init_grid_mode;
137 #endif /* BROWSER_MULTI_WINDOW_VIEW_H */