From de978eb32636804038567dcaaba4a9eebf24dc1c Mon Sep 17 00:00:00 2001 From: Jaakko Keränen Date: Thu, 20 Aug 2020 15:34:48 +0300 Subject: SidebarWidget: Added history items; context menu --- src/visited.c | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) (limited to 'src/visited.c') diff --git a/src/visited.c b/src/visited.c index af976be5..ea9a73c9 100644 --- a/src/visited.c +++ b/src/visited.c @@ -3,6 +3,7 @@ #include #include +#include #include static const size_t maxAgeVisited_Visited_ = 3600 * 24 * 30; /* one month */ @@ -99,6 +100,16 @@ void clear_Visited(iVisited *d) { clear_SortedArray(&d->visited); } +static size_t find_Visited_(const iVisited *d, const iString *url) { + iVisitedUrl visit; + init_VisitedUrl(&visit); + set_String(&visit.url, url); + size_t pos = iInvalidPos; + locate_SortedArray(&d->visited, &visit, &pos); + deinit_VisitedUrl(&visit); + return pos; +} + void visitUrl_Visited(iVisited *d, const iString *url) { iVisitedUrl visit; init_VisitedUrl(&visit); @@ -115,6 +126,14 @@ void visitUrl_Visited(iVisited *d, const iString *url) { insert_SortedArray(&d->visited, &visit); } +void removeUrl_Visited(iVisited *d, const iString *url) { + size_t pos = find_Visited_(d, url); + if (pos != iInvalidPos) { + deinit_VisitedUrl(at_SortedArray(&d->visited, pos)); + remove_Array(&d->visited.values, pos); + } +} + iTime urlVisitTime_Visited(const iVisited *d, const iString *url) { iVisitedUrl item; size_t pos; @@ -126,3 +145,17 @@ iTime urlVisitTime_Visited(const iVisited *d, const iString *url) { deinit_String(&item.url); return item.when; } + +static int cmpWhenDescending_VisitedUrlPtr_(const void *a, const void *b) { + const iVisitedUrl *s = *(const void **) a, *t = *(const void **) b; + return -cmp_Time(&s->when, &t->when); +} + +const iArray *list_Visited(const iVisited *d, size_t count) { + iPtrArray *urls = collectNew_PtrArray(); + iConstForEach(Array, i, &d->visited.values) { + pushBack_PtrArray(urls, i.value); + } + sort_Array(urls, cmpWhenDescending_VisitedUrlPtr_); + return urls; +} -- cgit v1.2.3