1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425
|
/*
Copyright (C) 2009-2010 ProFUSION embedded systems
Copyright (C) 2009-2010 Samsung Electronics
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public License
along with this library; see the file COPYING.LIB. If not, write to
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*/
#ifndef ewk_history_h
#define ewk_history_h
#include <Eina.h>
#include <Evas.h>
#include <cairo.h>
#ifdef __cplusplus
extern "C" {
#endif
/**
* @file ewk_history.h
* @brief The history (back-forward list) associated with a given ewk_view.
*
* Changing the history affects immediately the view, changing the
* current uri, for example.
*
* When ewk_view is navigated or uris are set, history automatically
* updates. That's why no direct access to history structure is
* allowed.
*/
typedef struct _Ewk_History Ewk_History;
/**
* Represents one item from Ewk_History.
*/
typedef struct _Ewk_History_Item Ewk_History_Item;
/**
* Clear the current history, if there is any.
*
* @param history which history instance to modify.
*
* @return @c EINA_TRUE on success, @c EINA_FALSE on failure.
*/
EAPI Eina_Bool ewk_history_clear(Ewk_History *history);
/**
* Go forward in history one item, if possible.
*
* @param history which history instance to modify.
*
* @return @c EINA_TRUE on success, @c EINA_FALSE on failure.
*/
EAPI Eina_Bool ewk_history_forward(Ewk_History *history);
/**
* Go back in history one item, if possible.
*
* @param history which history instance to modify.
*
* @return @c EINA_TRUE on success, @c EINA_FALSE on failure.
*/
EAPI Eina_Bool ewk_history_back(Ewk_History *history);
/**
* Adds the given item to history.
*
* Memory handling: This will not modify or even take references to
* given item (Ewk_History_Item), so you should still handle it with
* ewk_history_item_free().
*
* @param history which history instance to modify.
* @param item reference to add to history. Unmodified. Must @b not be @c NULL.
*
* @return @c EINA_TRUE on success, @c EINA_FALSE on failure.
*/
EAPI Eina_Bool ewk_history_history_item_add(Ewk_History *history, const Ewk_History_Item *item);
/**
* Sets the given item as current in history (go to item).
*
* Memory handling: This will not modify or even take references to
* given item (Ewk_History_Item), so you should still handle it with
* ewk_history_item_free().
*
* @param history which history instance to modify.
* @param item reference to go to history. Unmodified. Must @b not be @c NULL.
*
* @return @c EINA_TRUE on success, @c EINA_FALSE on failure.
*/
EAPI Eina_Bool ewk_history_history_item_set(Ewk_History *history, const Ewk_History_Item *item);
/**
* Get the first item from back list, if any.
*
* @param history which history instance to query.
*
* @return the @b newly allocated item instance. This memory must be
* released with ewk_history_item_free() after use.
*/
EAPI Ewk_History_Item *ewk_history_history_item_back_get(const Ewk_History *history);
/**
* Get the current item in history, if any.
*
* @param history which history instance to query.
*
* @return the @b newly allocated item instance or @c NULL on error. This memory
* must be released with ewk_history_item_free() after use.
*/
EAPI Ewk_History_Item *ewk_history_history_item_current_get(const Ewk_History *history);
/**
* Get the first item from forward list, if any.
*
* @param history which history instance to query.
*
* @return the @b newly allocated item instance. This memory must be
* released with ewk_history_item_free() after use.
*/
EAPI Ewk_History_Item *ewk_history_history_item_forward_get(const Ewk_History *history);
/**
* Get item at given position, if any at that index.
*
* @param history which history instance to query.
* @param index position of item to get.
*
* @return the @b newly allocated item instance. This memory must be
* released with ewk_history_item_free() after use.
*/
EAPI Ewk_History_Item *ewk_history_history_item_nth_get(const Ewk_History *history, int index);
/**
* Queries if given item is in history.
*
* Memory handling: This will not modify or even take references to
* given item (Ewk_History_Item), so you should still handle it with
* ewk_history_item_free().
*
* @param history which history instance to modify.
* @param item reference to check in history. Must @b not be @c NULL.
*
* @return @c EINA_TRUE if in history, @c EINA_FALSE if not or failure.
*/
EAPI Eina_Bool ewk_history_history_item_contains(const Ewk_History *history, const Ewk_History_Item *item);
/**
* Get the whole forward list.
*
* @param history which history instance to query.
*
* @return a newly allocated list of @b newly allocated item
* instance. This memory of each item must be released with
* ewk_history_item_free() after use. use
* ewk_history_item_list_free() for convenience.
*
* @see ewk_history_item_list_free()
* @see ewk_history_forward_list_get_with_limit()
*/
EAPI Eina_List *ewk_history_forward_list_get(const Ewk_History *history);
/**
* Get the forward list within the given limit.
*
* @param history which history instance to query.
* @param limit the maximum number of items to return.
*
* @return a newly allocated list of @b newly allocated item
* instance. This memory of each item must be released with
* ewk_history_item_free() after use. use
* ewk_history_item_list_free() for convenience.
*
* @see ewk_history_item_list_free()
* @see ewk_history_forward_list_length()
* @see ewk_history_forward_list_get()
*/
EAPI Eina_List *ewk_history_forward_list_get_with_limit(const Ewk_History *history, int limit);
/**
* Get the whole size of forward list.
*
* @param history which history instance to query.
*
* @return number of elements in whole list.
*
* @see ewk_history_forward_list_get_with_limit()
*/
EAPI int ewk_history_forward_list_length(const Ewk_History *history);
/**
* Get the whole back list.
*
* @param history which history instance to query.
*
* @return a newly allocated list of @b newly allocated item
* instance. This memory of each item must be released with
* ewk_history_item_free() after use. use
* ewk_history_item_list_free() for convenience.
*
* @see ewk_history_item_list_free()
* @see ewk_history_back_list_get_with_limit()
*/
EAPI Eina_List *ewk_history_back_list_get(const Ewk_History *history);
/**
* Get the back list within the given limit.
*
* @param history which history instance to query.
* @param limit the maximum number of items to return.
*
* @return a newly allocated list of @b newly allocated item
* instance. This memory of each item must be released with
* ewk_history_item_free() after use. use
* ewk_history_item_list_free() for convenience.
*
* @see ewk_history_item_list_free()
* @see ewk_history_back_list_length()
* @see ewk_history_back_list_get()
*/
EAPI Eina_List *ewk_history_back_list_get_with_limit(const Ewk_History *history, int limit);
/**
* Get the whole size of back list.
*
* @param history which history instance to query.
*
* @return number of elements in whole list.
*
* @see ewk_history_back_list_get_with_limit()
*/
EAPI int ewk_history_back_list_length(const Ewk_History *history);
/**
* Get maximum capacity of given history.
*
* @param history which history instance to query.
*
* @return maximum number of entries this history will hold.
*/
EAPI int ewk_history_limit_get(Ewk_History *history);
/**
* Set maximum capacity of given history.
*
* @param history which history instance to modify.
* @param limit maximum size to allow.
*
* @return @c EINA_TRUE on success, @c EINA_FALSE otherwise.
*/
EAPI Eina_Bool ewk_history_limit_set(const Ewk_History *history, int limit);
/**
* Create a new history item with given URI and title.
*
* @param uri where this resource is located.
* @param title resource title.
*
* @return newly allocated history item or @c NULL on errors. You must
* free this item with ewk_history_item_free().
*/
EAPI Ewk_History_Item *ewk_history_item_new(const char *uri, const char *title);
/**
* Free given history item instance.
*
* @param item what to free.
*/
EAPI void ewk_history_item_free(Ewk_History_Item *item);
/**
* Free given list and associated history items instances.
*
* @param history_items list of items to free (both list nodes and
* item instances).
*/
EAPI void ewk_history_item_list_free(Eina_List *history_items);
/**
* Query title for given history item.
*
* @param item history item to query.
*
* @return the title pointer, that may be @c NULL. This pointer is
* guaranteed to be eina_stringshare, so whenever possible
* save yourself some cpu cycles and use
* eina_stringshare_ref() instead of eina_stringshare_add() or
* strdup().
*/
EAPI const char *ewk_history_item_title_get(const Ewk_History_Item *item);
/**
* Query alternate title for given history item.
*
* @param item history item to query.
*
* @return the alternate title pointer, that may be @c NULL. This
* pointer is guaranteed to be eina_stringshare, so whenever
* possible save yourself some cpu cycles and use
* eina_stringshare_ref() instead of eina_stringshare_add() or
* strdup().
*/
EAPI const char *ewk_history_item_title_alternate_get(const Ewk_History_Item *item);
/**
* Set alternate title for given history item.
*
* @param item history item to query.
* @param title new alternate title to use for given item. No
* references are kept after this function returns.
*/
EAPI void ewk_history_item_title_alternate_set(Ewk_History_Item *item, const char *title);
/**
* Query URI for given history item.
*
* @param item history item to query.
*
* @return the URI pointer, that may be @c NULL. This pointer is
* guaranteed to be eina_stringshare, so whenever possible
* save yourself some cpu cycles and use
* eina_stringshare_ref() instead of eina_stringshare_add() or
* strdup().
*/
EAPI const char *ewk_history_item_uri_get(const Ewk_History_Item *item);
/**
* Query original URI for given history item.
*
* @param item history item to query.
*
* @return the original URI pointer, that may be @c NULL. This pointer
* is guaranteed to be eina_stringshare, so whenever possible
* save yourself some cpu cycles and use
* eina_stringshare_ref() instead of eina_stringshare_add() or
* strdup().
*/
EAPI const char *ewk_history_item_uri_original_get(const Ewk_History_Item *item);
/**
* Query last visited time for given history item.
*
* @param item history item to query.
*
* @return the time in seconds this item was visited.
*/
EAPI double ewk_history_item_time_last_visited_get(const Ewk_History_Item *item);
/**
* Get the icon (aka favicon) associated with this history item.
*
* @note in order to have this working, one must open icon database
* with ewk_settings_icon_database_path_set().
*
* @param item history item to query.
*
* @return the surface reference or @c NULL on errors. Note that the
* reference may be to a standard fallback icon.
*/
EAPI cairo_surface_t *ewk_history_item_icon_surface_get(const Ewk_History_Item *item);
/**
* Add an Evas_Object of type 'image' to given canvas with history item icon.
*
* This is an utility function that creates an Evas_Object of type
* image set to have fill always match object size
* (evas_object_image_filled_add()), saving some code to use it from Evas.
*
* @note in order to have this working, one must open icon database
* with ewk_settings_icon_database_path_set().
*
* @param item history item to query.
* @param canvas evas instance where to add resulting object.
*
* @return newly allocated Evas_Object instance or @c NULL on
* errors. Delete the object with evas_object_del().
*/
EAPI Evas_Object *ewk_history_item_icon_object_add(const Ewk_History_Item *item, Evas *canvas);
/**
* Query if given item is still in page cache.
*
* @param item history item to query.
*
* @return @c EINA_TRUE if in cache, @c EINA_FALSE otherwise.
*/
EAPI Eina_Bool ewk_history_item_page_cache_exists(const Ewk_History_Item *item);
/**
* Query number of times item was visited.
*
* @param item history item to query.
*
* @return number of visits.
*/
EAPI int ewk_history_item_visit_count(const Ewk_History_Item *item);
/**
* Query if last visit to item was failure or not.
*
* @param item history item to query.
*
* @return @c EINA_TRUE if last visit was failure, @c EINA_FALSE if it
* was fine.
*/
EAPI Eina_Bool ewk_history_item_visit_last_failed(const Ewk_History_Item *item);
#ifdef __cplusplus
}
#endif
#endif // ewk_history_h
|