X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?a=blobdiff_plain;f=shell%2Fev-history.c;h=c06fa25fa8349b94c44dfcb52a82e49f2d481959;hb=b4400b84fbb899a1984c8e145b91a09de3a35516;hp=47fa300cb752ae267973c907ddda543c40005635;hpb=2c91588d544c80f08526a54c98b25aabe3777ef7;p=evince.git diff --git a/shell/ev-history.c b/shell/ev-history.c index 47fa300c..c06fa25f 100644 --- a/shell/ev-history.c +++ b/shell/ev-history.c @@ -15,26 +15,23 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * - * $Id$ */ #include "config.h" #include +#include #include "ev-history.h" struct _EvHistoryPrivate { GList *links; - int current_index; }; static void ev_history_init (EvHistory *history); static void ev_history_class_init (EvHistoryClass *class); -static GObjectClass *parent_class = NULL; - G_DEFINE_TYPE (EvHistory, ev_history, G_TYPE_OBJECT) #define EV_HISTORY_GET_PRIVATE(object)(G_TYPE_INSTANCE_GET_PRIVATE ((object), EV_TYPE_HISTORY, EvHistoryPrivate)) @@ -61,7 +58,7 @@ ev_history_finalize (GObject *object) free_links_list (history->priv->links); - parent_class->finalize (object); + G_OBJECT_CLASS (ev_history_parent_class)->finalize (object); } static void @@ -71,45 +68,39 @@ ev_history_class_init (EvHistoryClass *class) object_class->finalize = ev_history_finalize; - parent_class = g_type_class_peek_parent (class); - g_type_class_add_private (object_class, sizeof (EvHistoryPrivate)); } -void -ev_history_add_link (EvHistory *history, EvBookmark *bookmark) -{ - int length; - - g_return_if_fail (EV_IS_HISTORY (history)); - g_return_if_fail (EV_IS_BOOKMARK (bookmark)); - - g_object_ref (bookmark); - history->priv->links = g_list_append (history->priv->links, - bookmark); - - length = g_list_length (history->priv->links); - history->priv->current_index = length - 1; - - g_print ("Set current\n"); -} +#define HISTORY_LENGTH 7 void -ev_history_add_page (EvHistory *history, int page) +ev_history_add_link (EvHistory *history, EvLink *link) { - EvBookmark *bookmark; - char *title; + GList *l; g_return_if_fail (EV_IS_HISTORY (history)); + g_return_if_fail (EV_IS_LINK (link)); - title = g_strdup_printf (_("Page %d\n"), page); - bookmark = ev_bookmark_new_link (title, page); - g_free (title); + for (l = history->priv->links; l; l = l->next) { + if (!strcmp (ev_link_get_title (EV_LINK (l->data)), ev_link_get_title (link))) { + g_object_unref (G_OBJECT (l->data)); + history->priv->links = g_list_delete_link (history->priv->links, l); + break; + } + } - ev_history_add_link (history, bookmark); + g_object_ref (link); + history->priv->links = g_list_append (history->priv->links, + link); + + if (g_list_length (history->priv->links) > HISTORY_LENGTH) { + g_object_unref (G_OBJECT (history->priv->links->data)); + history->priv->links = g_list_delete_link (history->priv->links, + history->priv->links); + } } -EvBookmark * +EvLink * ev_history_get_link_nth (EvHistory *history, int index) { GList *l; @@ -118,7 +109,7 @@ ev_history_get_link_nth (EvHistory *history, int index) l = g_list_nth (history->priv->links, index); - return EV_BOOKMARK (l->data); + return EV_LINK (l->data); } int @@ -129,24 +120,9 @@ ev_history_get_n_links (EvHistory *history) return g_list_length (history->priv->links); } -int -ev_history_get_current_index (EvHistory *history) -{ - g_return_val_if_fail (EV_IS_HISTORY (history), -1); - - return history->priv->current_index; -} - -void -ev_history_set_current_index (EvHistory *history, int index) -{ - g_return_if_fail (EV_IS_HISTORY (history)); - - history->priv->current_index = index; -} - EvHistory * ev_history_new (void) { return EV_HISTORY (g_object_new (EV_TYPE_HISTORY, NULL)); } +