a2966f23f42f15175b3c9e992e205edd7af9c3b6
[profile/tv/apps/web/browser.git] / services / ZoomUI / ZoomUI.h
1 /*
2  * Copyright (c) 2015 Samsung Electronics Co., Ltd.
3  *
4  * Licensed under the Apache License, Version 2.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.apache.org/licenses/LICENSE-2.0
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 #ifndef ZOOMUI_H
18 #define ZOOMUI_H
19
20 #include <Evas.h>
21 #include <boost/signals2/signal.hpp>
22
23 #include "AbstractUIComponent.h"
24 #include "AbstractService.h"
25 #include "ServiceFactory.h"
26 #include "service_macros.h"
27
28 namespace tizen_browser{
29 namespace base_ui{
30
31 class BROWSER_EXPORT ZoomUI
32         : public tizen_browser::interfaces::AbstractUIComponent
33         , public tizen_browser::core::AbstractService
34 {
35 public:
36     ZoomUI();
37     ~ZoomUI();
38
39     //AbstractUIComponent interface methods
40     void init(Evas_Object* parent);
41     Evas_Object* getContent();
42     void showUI();
43     void hideUI();
44     std::string getName();
45
46     void show(Evas_Object* parent);
47     void showNavigation();
48     void clearItems();
49
50     boost::signals2::signal<void ()> closeZoomUI;
51     boost::signals2::signal<void (int)> setZoom;
52     boost::signals2::signal<int ()> getZoom;
53     boost::signals2::signal<void (const int&, const int&)> scrollView;
54 private:
55     void createLayout(Evas_Object* parent);
56     void createZoomSlider();
57     void createNavigationButtons();
58     void setImageFile(Evas_Object* obj, int direction, bool focused);
59     int calculateSliderValue(int zoom);
60
61     static void _zoom_slider_changed(void * data, Evas_Object * obj, void * event_info);
62     static void _left_button_clicked(void * data, Evas_Object * obj, void * event_info);
63     static void _right_button_clicked(void * data, Evas_Object * obj, void * event_info);
64     static void _up_button_clicked(void * data, Evas_Object * obj, void * event_info);
65     static void _down_button_clicked(void * data, Evas_Object * obj, void * event_info);
66     static void _close_button_clicked(void * data, Evas_Object * obj, void * event_info);
67     static void _cb_focus_in_left_button(void * data, Evas *, Evas_Object *obj, void *);
68     static void _cb_focus_out_left_button(void * data, Evas *, Evas_Object *obj, void *);
69     static void _cb_focus_in_right_button(void * data, Evas *, Evas_Object *obj, void *);
70     static void _cb_focus_out_right_button(void * data, Evas *, Evas_Object *obj, void *);
71     static void _cb_focus_in_up_button(void * data, Evas *, Evas_Object *obj, void *);
72     static void _cb_focus_out_up_button(void * data, Evas *, Evas_Object *obj, void *);
73     static void _cb_focus_in_down_button(void * data, Evas *, Evas_Object *obj, void *);
74     static void _cb_focus_out_down_button(void * data, Evas *, Evas_Object *obj, void *);
75     static Eina_Bool _key_down_cb(void* data, int type, void* event_info);
76     static Eina_Bool _key_up_cb(void* data, int type, void* event_info);
77     static void _zoom_value_confirmed(void* data, Evas* e, Evas_Object* obj, void* event_info);
78
79     std::string m_edjFilePath;
80     Evas_Object* m_layout;
81     Evas_Object* m_zoom_slider;
82     Evas_Object* m_zoom_menu;
83     Evas_Object* m_nav_layout;
84     Evas_Object* m_parent;
85     Evas_Object* m_leftArrow;
86     Evas_Object* m_rightArrow;
87     Evas_Object* m_upArrow;
88     Evas_Object* m_downArrow;
89     Ecore_Event_Handler* m_keyDownHandler;
90     Ecore_Event_Handler* m_keyUpHandler;
91
92     int m_current_translation_x;
93     int m_current_translation_y;
94
95     enum ZoomLevel {
96         ZOOM_50 = 50,
97         ZOOM_75 = 75,
98         ZOOM_100 = 100,
99         ZOOM_150 = 150,
100         ZOOM_200 = 200,
101         ZOOM_300 = 300, 
102
103         ZOOM_MIN = ZOOM_50,
104         ZOOM_DEFAULT = ZOOM_100,
105         ZOOM_MAX = ZOOM_300
106     };
107     enum ArrowType {
108         LEFT = 1,
109         RIGHT = 2,
110         UP = 3,
111         DOWN = 4
112     };
113 };
114
115 }
116 }
117
118 #endif // ZOOMUI_H