The source code moved from the SPIN with license changed to Flora 1.1
[apps/native/home/homescreen-efl.git] / inc / page_scroller.h
1 /*
2  * Copyright 2012  Samsung Electronics Co., Ltd
3  *
4  * Licensed under the Flora License, Version 1.1 (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://floralicense.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 #ifndef PAGE_SCROLLER_H_
18 #define PAGE_SCROLLER_H_
19
20
21 #include <stdbool.h>
22 #include <Evas.h>
23 #include <Eina.h>
24
25 /**
26  * @brief Creates new elm_scroller widget and sets standart parameters used in
27  * homescreen application.
28  * @param page_width page width.
29  * @param page_height page height.
30  *
31  * @return Pointer to created elm_scroller widget/
32  */
33 extern Evas_Object *page_scroller_create(int page_width, int page_height);
34
35 /**
36  * @brief Removes all data connected with the page scroller object.
37  *
38  * @param page_scroller Page scroller pointer.
39  */
40 extern void page_scroller_destroy(Evas_Object *page_scroller);
41
42 /**
43  * @brief Add new page to the page scroller
44  *
45  * @param page_scroller Page scroller Evas_Object pointer.
46  * @param page Page Evas_Object pointer.
47  *
48  * @return true if no errors.
49  */
50 extern bool page_scroller_add_page(Evas_Object *page_scroller,
51         Evas_Object *page);
52
53 /**
54  * @brief Removes the page from the page scroller.
55  * @param page_scroller Page scroller object pointer.
56  * @param page Page which will be removed.
57  */
58 extern void page_scroller_remove_page(Evas_Object *page_scroller,
59         Evas_Object *page);
60
61 /**
62  * @brief Gets the page from the given page scroller.
63  * @param page_scroller Pointer to elm_scroller widget.
64  * @param n page number.
65  *
66  * @return Page Evas_Object pointer.
67  */
68 extern Evas_Object *page_scroller_get_page(Evas_Object *page_scroller, int n);
69
70 /**
71  * @brief Gets all pages inserted in the page scroller list.
72  * @param page_scroller Pointer to page scroller Evas_Object
73  * @return List of all pages.
74  */
75 extern Eina_List *page_scroller_get_all_pages(Evas_Object *page_scroller);
76
77 /**
78  * @brief Blocks page scroller movement.
79  *
80  * @param page_scroller Pointer to page scroller widget.
81  * @return true if no errors.
82  */
83 extern bool page_scroller_freeze(Evas_Object *page_scroller);
84
85 /**
86  * @brief Unblocks page scroller movement.
87  *
88  * @param page_scroller Pointer to page scroller Evas_Object.
89  * @return true if no errors.
90  */
91 extern bool page_scroller_unfreeze(Evas_Object *page_scroller);
92
93 /**
94  * @brief Returns elm_scroller pointer from page scroller layout.
95  *
96  * @param page_scroller Page scroller Evas_Object pointer.
97  * @return elm_scroller pointer or NULL if errors occurred.
98  */
99 extern Evas_Object *page_scroller_get_scroller(Evas_Object *page_scroller);
100
101 /**
102  * @brief Unpack all pages from the page scroller widget.
103  * @param page_scroller Page scroller Evas_Object.
104  * @return List of all pages (Evas_Objects)
105  */
106 extern Eina_List *page_scroller_unpack_pages(Evas_Object *page_scroller);
107
108 /**
109  * @brief Pack all pages into the page scroller widget.
110  *
111  * @param page_scroller Pointer to page scroller widget.
112  * @param page_list List of pages to pack.
113  */
114 extern void page_scroller_pack_pages(Evas_Object *page_scroller,
115         Eina_List *page_list);
116
117 /**
118  * @brief Gets page thumbnail (proxy object)
119  *
120  * @param page Pointer to page scroller page.
121  * @param int width of miniature
122  * @param int height of miniature
123  * @return Page copy (miniature) or NULL if errors occurred.
124  */
125 extern Evas_Object *page_scroller_get_page_thumbnail(Evas_Object *page,
126         unsigned int w, unsigned int h);
127
128 /**
129  * @brief Gets the elm_box pointer from the Page_Scroller Evas_Object.
130  *
131  * @param page_scroller Pointer to Page Scroller Evas_Object
132  * @return elm_box pointer placed in  the Page scroller widget.
133  */
134 extern Evas_Object *page_scroller_obtain_box(Evas_Object *page_scroller);
135
136 /**
137  * @brief Get total number of pages
138  * @param page_scroller Elm_scroller pointer
139  * @return pages count if ok, -1 if error
140  */
141
142 extern int page_scroller_get_page_count(Evas_Object *page_scroller);
143 /**
144  * @brief Get current page
145  * @return current page number or -1 if something went wrong
146  */
147 extern int page_scroller_get_current_page(Evas_Object *page_scroller);
148
149 /**
150  * @brief Set current page of the scroller
151  * @param page_scroller Pointer to elm_scroller
152  * @param idx index of page
153  * @return true if success
154  */
155 extern bool page_scroller_set_current_page(Evas_Object *page_scroller, int idx);
156
157 /**
158  * @brief Shows page without animation
159  *
160  * @param page_scroller elm_scroller_pointer
161  * @param idx page index
162  */
163 void page_scroller_show_page(Evas_Object *page_scroller, int idx);
164 #endif /* PAGE_SCROLLER_H_ */