[epiphany/history-rewrite: 7/11] Add an EphyHistoryQuery object and switch current query method to use it.
- From: Xan Lopez <xan src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [epiphany/history-rewrite: 7/11] Add an EphyHistoryQuery object and switch current query method to use it.
- Date: Mon, 27 Jun 2011 18:05:40 +0000 (UTC)
commit 0c1e26c1523386aee5f7ac918880af6f144b9f80
Author: Martin Robinson <mrobinson igalia com>
Date: Fri May 13 14:26:31 2011 -0700
Add an EphyHistoryQuery object and switch current query method to use it.
embed/history/ephy-history-service-private.h | 2 +-
embed/history/ephy-history-service-visits-table.c | 6 +++---
embed/history/ephy-history-service.c | 14 +++++++-------
embed/history/ephy-history-types.c | 12 ++++++++++++
embed/history/ephy-history-types.h | 11 +++++++++++
5 files changed, 34 insertions(+), 11 deletions(-)
---
diff --git a/embed/history/ephy-history-service-private.h b/embed/history/ephy-history-service-private.h
index a940bb0..1f8cd7d 100644
--- a/embed/history/ephy-history-service-private.h
+++ b/embed/history/ephy-history-service-private.h
@@ -41,6 +41,6 @@ void ephy_history_service_update_url_row (EphyHisto
gboolean ephy_history_service_initialize_visits_table (EphyHistoryService *self);
void ephy_history_service_add_visit_row (EphyHistoryService *self, EphyHistoryPageVisit *visit);
-GList * ephy_history_service_find_visit_rows_in_time (EphyHistoryService *self, gint64 from, gint64 to);
+GList * ephy_history_service_find_visit_rows (EphyHistoryService *self, EphyHistoryQuery *query);
#endif /* EPHY_HISTORY_SERVICE_PRIVATE_H */
diff --git a/embed/history/ephy-history-service-visits-table.c b/embed/history/ephy-history-service-visits-table.c
index 94fa8c7..90de320 100644
--- a/embed/history/ephy-history-service-visits-table.c
+++ b/embed/history/ephy-history-service-visits-table.c
@@ -101,7 +101,7 @@ create_page_visit_from_statement (EphySQLiteStatement *statement)
}
GList *
-ephy_history_service_find_visit_rows_in_time (EphyHistoryService *self, gint64 from, gint64 to)
+ephy_history_service_find_visit_rows (EphyHistoryService *self, EphyHistoryQuery *query)
{
EphyHistoryServicePrivate *priv = EPHY_HISTORY_SERVICE (self)->priv;
EphySQLiteStatement *statement = NULL;
@@ -119,8 +119,8 @@ ephy_history_service_find_visit_rows_in_time (EphyHistoryService *self, gint64 f
return NULL;
}
- if (FALSE == ephy_sqlite_statement_bind_int (statement, 0, (int) from, &error) ||
- FALSE == ephy_sqlite_statement_bind_int (statement, 1, (int) to, &error)) {
+ if (FALSE == ephy_sqlite_statement_bind_int (statement, 0, (int) query->from, &error) ||
+ FALSE == ephy_sqlite_statement_bind_int (statement, 1, (int) query->to, &error)) {
g_error ("Could not build urls table query statement: %s", error->message);
g_error_free (error);
g_object_unref (statement);
diff --git a/embed/history/ephy-history-service.c b/embed/history/ephy-history-service.c
index c020c71..d07f374 100644
--- a/embed/history/ephy-history-service.c
+++ b/embed/history/ephy-history-service.c
@@ -436,9 +436,9 @@ ephy_history_service_execute_add_visits (EphyHistoryService *self, GList *visits
}
static gboolean
-ephy_history_service_execute_find_visits_in_time (EphyHistoryService *self, gint64 *times, gpointer *result)
+ephy_history_service_execute_find_visits (EphyHistoryService *self, EphyHistoryQuery *query, gpointer *result)
{
- GList *visits = ephy_history_service_find_visit_rows_in_time (self, times[0], times[1]);
+ GList *visits = ephy_history_service_find_visit_rows (self, query);
GList *current = visits;
/* FIXME: We don't have a good way to tell the difference between failures and empty returns */
@@ -491,13 +491,13 @@ ephy_history_service_find_visits_in_time (EphyHistoryService *self, gint64 from,
{
EphyHistoryThreadJobDetails *details;
- gint64 *times = g_malloc(2 * sizeof(gint64));
- times[0] = from;
- times[1] = to;
+ EphyHistoryQuery *query = ephy_history_query_new ();
+ query->from = from;
+ query->to = to;
details = ephy_history_thread_job_details_new (self,
- (EphyHistoryJobMethod) ephy_history_service_execute_find_visits_in_time,
- times, g_free, callback, user_data);
+ (EphyHistoryJobMethod) ephy_history_service_execute_find_visits,
+ query, (GDestroyNotify) ephy_history_query_free, callback, user_data);
ephy_history_service_schedule_idle (self, G_PRIORITY_DEFAULT,
ephy_history_service_execute_job_on_history_thread,
details);
diff --git a/embed/history/ephy-history-types.c b/embed/history/ephy-history-types.c
index 2a8ce38..b27f6cf 100644
--- a/embed/history/ephy-history-types.c
+++ b/embed/history/ephy-history-types.c
@@ -117,3 +117,15 @@ ephy_history_url_free (EphyHistoryURL *url)
g_slice_free1 (sizeof (EphyHistoryURL), url);
}
+EphyHistoryQuery *
+ephy_history_query_new ()
+{
+ return (EphyHistoryQuery*) g_slice_alloc0 (sizeof (EphyHistoryQuery));
+}
+
+void
+ephy_history_query_free (EphyHistoryQuery *query)
+{
+ g_list_free_full (query->substring_list, g_free);
+ g_slice_free1 (sizeof (EphyHistoryQuery), query);
+}
diff --git a/embed/history/ephy-history-types.h b/embed/history/ephy-history-types.h
index 3e77bd7..8ced7f9 100644
--- a/embed/history/ephy-history-types.h
+++ b/embed/history/ephy-history-types.h
@@ -55,6 +55,14 @@ typedef struct _EphyHistoryPageVisit
EphyHistoryPageVisitType visit_type;
} EphyHistoryPageVisit;
+typedef struct _EphyHistoryQuery
+{
+ gint64 from;
+ gint64 to;
+ guint limit;
+ GList* substring_list;
+} EphyHistoryQuery;
+
EphyHistoryPageVisit * ephy_history_page_visit_new (const char *url, gint64 visit_time, EphyHistoryPageVisitType visit_type);
EphyHistoryPageVisit * ephy_history_page_visit_new_with_url (EphyHistoryURL *url, gint64 visit_time, EphyHistoryPageVisitType visit_type);
EphyHistoryPageVisit * ephy_history_page_visit_copy (EphyHistoryPageVisit *visit);
@@ -67,6 +75,9 @@ EphyHistoryURL * ephy_history_url_new (const char *url, const cha
EphyHistoryURL * ephy_history_url_copy (EphyHistoryURL *url);
void ephy_history_url_free (EphyHistoryURL *url);
+EphyHistoryQuery * ephy_history_query_new ();
+void ephy_history_query_free (EphyHistoryQuery *query);
+
G_END_DECLS
#endif /* EPHY_HISTORY_TYPES_H */
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]