Implemented ZoomUI service
[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 clearItems();
48
49     boost::signals2::signal<void ()> closeZoomUI;
50     boost::signals2::signal<void (int)> setZoom;
51     boost::signals2::signal<void (const int&, const int&)> scrollView;
52 private:
53     void createLayout(Evas_Object* parent);
54     void createZoomSlider();
55     void createNavigationButtons();
56     void setImageFile(Evas_Object* obj, int direction, bool focused);
57
58     static void _zoom_slider_changed(void * data, Evas_Object * obj, void * event_info);
59     static void _left_button_clicked(void * data, Evas_Object * obj, void * event_info);
60     static void _right_button_clicked(void * data, Evas_Object * obj, void * event_info);
61     static void _up_button_clicked(void * data, Evas_Object * obj, void * event_info);
62     static void _down_button_clicked(void * data, Evas_Object * obj, void * event_info);
63     static void _close_button_clicked(void * data, Evas_Object * obj, void * event_info);
64     static void _cb_focus_in_left_button(void * data, Evas *, Evas_Object *obj, void *);
65     static void _cb_focus_out_left_button(void * data, Evas *, Evas_Object *obj, void *);
66     static void _cb_focus_in_right_button(void * data, Evas *, Evas_Object *obj, void *);
67     static void _cb_focus_out_right_button(void * data, Evas *, Evas_Object *obj, void *);
68     static void _cb_focus_in_up_button(void * data, Evas *, Evas_Object *obj, void *);
69     static void _cb_focus_out_up_button(void * data, Evas *, Evas_Object *obj, void *);
70     static void _cb_focus_in_down_button(void * data, Evas *, Evas_Object *obj, void *);
71     static void _cb_focus_out_down_button(void * data, Evas *, Evas_Object *obj, void *);
72
73     std::string m_edjFilePath;
74     Evas_Object* m_layout;
75     Evas_Object* m_zoom_slider;
76     Evas_Object* m_nav_layout;
77     Evas_Object* m_parent;
78
79     int m_current_translation_x;
80     int m_current_translation_y;
81
82     enum ZoomLevel {
83         ZOOM_50 = 50,
84         ZOOM_75 = 75,
85         ZOOM_100 = 100,
86         ZOOM_150 = 150,
87         ZOOM_200 = 200,
88         ZOOM_300 = 300, 
89
90         ZOOM_MIN = ZOOM_50,
91         ZOOM_DEFAULT = ZOOM_100,
92         ZOOM_MAX = ZOOM_300
93     };
94     enum ArrowType {
95         LEFT = 1,
96         RIGHT = 2,
97         UP = 3,
98         DOWN = 4
99     };
100 };
101
102 }
103 }
104
105 #endif // ZOOMUI_H