summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicolas Dufresne <nicolas.dufresne@collabora.co.uk>2011-02-22 19:34:48 -0500
committerNicolas Dufresne <nicolas.dufresne@collabora.co.uk>2011-02-22 19:34:48 -0500
commita51796d7f3ed86ae5656ad58b98de64710a21270 (patch)
tree19d8c0dffc98194dc64bed47be46793337c33ad1
parent2fc6dc7fe60e1ea689557d464f45ceea2119cd73 (diff)
downloadtelepathy-logger-a51796d7f3ed86ae5656ad58b98de64710a21270.tar.gz
Introduce TplEventTypeMask to be able to select event type
-rw-r--r--telepathy-logger/log-manager-internal.h8
-rw-r--r--telepathy-logger/log-manager.c44
-rw-r--r--telepathy-logger/log-manager.h16
-rw-r--r--telepathy-logger/log-store-internal.h25
-rw-r--r--telepathy-logger/log-store-pidgin.c27
-rw-r--r--telepathy-logger/log-store-xml.c27
-rw-r--r--telepathy-logger/log-store.c34
-rw-r--r--tests/dbus/test-searches.c3
-rw-r--r--tests/dbus/test-tpl-log-store-pidgin.c18
-rw-r--r--tests/dbus/test-tpl-log-store-xml.c26
10 files changed, 156 insertions, 72 deletions
diff --git a/telepathy-logger/log-manager-internal.h b/telepathy-logger/log-manager-internal.h
index d6a13d7..5ea9718 100644
--- a/telepathy-logger/log-manager-internal.h
+++ b/telepathy-logger/log-manager-internal.h
@@ -36,16 +36,19 @@ gboolean _tpl_log_manager_register_log_store (TplLogManager *self,
GList * _tpl_log_manager_get_dates (TplLogManager *manager,
TpAccount *account,
- TplEntity *target);
+ TplEntity *target,
+ gint type_mask);
GList * _tpl_log_manager_get_events_for_date (TplLogManager *manager,
TpAccount *account,
TplEntity *target,
+ gint type_mask,
const GDate *date);
GList * _tpl_log_manager_get_filtered_events (TplLogManager *manager,
TpAccount *account,
TplEntity *target,
+ gint type_mask,
guint num_events,
TplLogEventFilter filter,
gpointer user_data);
@@ -54,7 +57,8 @@ GList * _tpl_log_manager_get_entities (TplLogManager *manager,
TpAccount *account);
GList * _tpl_log_manager_search (TplLogManager *manager,
- const gchar *text);
+ const gchar *text,
+ gint type_mask);
void _tpl_log_manager_clear (TplLogManager *self);
diff --git a/telepathy-logger/log-manager.c b/telepathy-logger/log-manager.c
index 5f12413..c2bbbdb 100644
--- a/telepathy-logger/log-manager.c
+++ b/telepathy-logger/log-manager.c
@@ -97,6 +97,7 @@ typedef struct
{
TpAccount *account;
TplEntity *target;
+ gint type_mask;
GDate *date;
guint num_events;
TplLogEventFilter filter;
@@ -454,7 +455,8 @@ _tpl_log_manager_register_log_store (TplLogManager *self,
gboolean
tpl_log_manager_exists (TplLogManager *manager,
TpAccount *account,
- TplEntity *target)
+ TplEntity *target,
+ gint type_mask)
{
GList *l;
TplLogManagerPriv *priv;
@@ -466,7 +468,8 @@ tpl_log_manager_exists (TplLogManager *manager,
for (l = priv->readable_stores; l != NULL; l = g_list_next (l))
{
- if (_tpl_log_store_exists (TPL_LOG_STORE (l->data), account, target))
+ if (_tpl_log_store_exists (TPL_LOG_STORE (l->data), account, target,
+ type_mask))
return TRUE;
}
@@ -492,7 +495,8 @@ tpl_log_manager_exists (TplLogManager *manager,
GList *
_tpl_log_manager_get_dates (TplLogManager *manager,
TpAccount *account,
- TplEntity *target)
+ TplEntity *target,
+ gint type_mask)
{
GList *l, *out = NULL;
TplLogManagerPriv *priv;
@@ -509,7 +513,7 @@ _tpl_log_manager_get_dates (TplLogManager *manager,
/* Insert dates of each store in the out list. Keep the out list sorted
* and avoid to insert dups. */
- new = _tpl_log_store_get_dates (store, account, target);
+ new = _tpl_log_store_get_dates (store, account, target, type_mask);
while (new)
{
if (g_list_find_custom (out, new->data,
@@ -532,6 +536,7 @@ GList *
_tpl_log_manager_get_events_for_date (TplLogManager *manager,
TpAccount *account,
TplEntity *target,
+ gint type_mask,
const GDate *date)
{
GList *l, *out = NULL;
@@ -547,7 +552,7 @@ _tpl_log_manager_get_events_for_date (TplLogManager *manager,
TplLogStore *store = TPL_LOG_STORE (l->data);
out = g_list_concat (out, _tpl_log_store_get_events_for_date (store,
- account, target, date));
+ account, target, type_mask, date));
}
return out;
@@ -578,6 +583,7 @@ GList *
_tpl_log_manager_get_filtered_events (TplLogManager *manager,
TpAccount *account,
TplEntity *target,
+ gint type_mask,
guint num_events,
TplLogEventFilter filter,
gpointer user_data)
@@ -600,7 +606,7 @@ _tpl_log_manager_get_filtered_events (TplLogManager *manager,
GList *new;
new = _tpl_log_store_get_filtered_events (store, account, target,
- num_events, filter, user_data);
+ type_mask, num_events, filter, user_data);
while (new != NULL)
{
if (i < num_events)
@@ -713,7 +719,8 @@ _tpl_log_manager_get_entities (TplLogManager *manager,
GList *
_tpl_log_manager_search (TplLogManager *manager,
- const gchar *text)
+ const gchar *text,
+ gint type_mask)
{
GList *l, *out = NULL;
TplLogManagerPriv *priv;
@@ -727,7 +734,8 @@ _tpl_log_manager_search (TplLogManager *manager,
{
TplLogStore *store = TPL_LOG_STORE (l->data);
- out = g_list_concat (out, _tpl_log_store_search_new (store, text));
+ out = g_list_concat (out, _tpl_log_store_search_new (store, text,
+ type_mask));
}
return out;
@@ -920,7 +928,7 @@ _get_dates_async_thread (GSimpleAsyncResult *simple,
event_info = async_data->request;
lst = _tpl_log_manager_get_dates (async_data->manager,
- event_info->account, event_info->target);
+ event_info->account, event_info->target, event_info->type_mask);
g_simple_async_result_set_op_res_gpointer (simple, lst,
_list_of_date_free);
@@ -932,6 +940,7 @@ _get_dates_async_thread (GSimpleAsyncResult *simple,
* @manager: a #TplLogManager
* @account: a #TpAccount
* @target: a non-NULL #TplEntity
+ * @type_mask: event type filter see #TplEventTypeMask
* @callback: a callback to call when the request is satisfied
* @user_data: data to pass to @callback
*
@@ -945,6 +954,7 @@ void
tpl_log_manager_get_dates_async (TplLogManager *manager,
TpAccount *account,
TplEntity *target,
+ gint type_mask,
GAsyncReadyCallback callback,
gpointer user_data)
{
@@ -958,6 +968,7 @@ tpl_log_manager_get_dates_async (TplLogManager *manager,
event_info->account = g_object_ref (account);
event_info->target = g_object_ref (target);
+ event_info->type_mask = type_mask;
async_data->manager = g_object_ref (manager);
async_data->request = event_info;
@@ -1026,6 +1037,7 @@ _get_events_for_date_async_thread (GSimpleAsyncResult *simple,
lst = _tpl_log_manager_get_events_for_date (async_data->manager,
event_info->account,
event_info->target,
+ event_info->type_mask,
event_info->date);
g_simple_async_result_set_op_res_gpointer (simple, lst,
@@ -1038,6 +1050,7 @@ _get_events_for_date_async_thread (GSimpleAsyncResult *simple,
* @manager: a #TplLogManager
* @account: a #TpAccount
* @target: a non-NULL #TplEntity
+ * @type_mask: event type filter see #TplEventTypeMask
* @date: a #GDate
* @callback: a callback to call when the request is satisfied
* @user_data: data to pass to @callback
@@ -1048,6 +1061,7 @@ void
tpl_log_manager_get_events_for_date_async (TplLogManager *manager,
TpAccount *account,
TplEntity *target,
+ gint type_mask,
const GDate *date,
GAsyncReadyCallback callback,
gpointer user_data)
@@ -1063,6 +1077,7 @@ tpl_log_manager_get_events_for_date_async (TplLogManager *manager,
event_info->account = g_object_ref (account);
event_info->target = g_object_ref (target);
+ event_info->type_mask = type_mask;
event_info->date = copy_date (date);
async_data->manager = g_object_ref (manager);
@@ -1130,7 +1145,8 @@ _get_filtered_events_async_thread (GSimpleAsyncResult *simple,
event_info = async_data->request;
lst = _tpl_log_manager_get_filtered_events (async_data->manager,
- event_info->account, event_info->target, event_info->num_events,
+ event_info->account, event_info->target,
+ event_info->type_mask, event_info->num_events,
event_info->filter, event_info->user_data);
g_simple_async_result_set_op_res_gpointer (simple, lst,
@@ -1143,6 +1159,7 @@ _get_filtered_events_async_thread (GSimpleAsyncResult *simple,
* @manager: a #TplLogManager
* @account: a #TpAccount
* @target: a non-NULL #TplEntity
+ * @type_mask: event type filter see #TplEventTypeMask
* @num_event: number of maximum events to fetch
* @filter: an optional filter function
* @filter_user_data: user data to pass to @filter
@@ -1155,6 +1172,7 @@ void
tpl_log_manager_get_filtered_events_async (TplLogManager *manager,
TpAccount *account,
TplEntity *target,
+ gint type_mask,
guint num_events,
TplLogEventFilter filter,
gpointer filter_user_data,
@@ -1172,6 +1190,7 @@ tpl_log_manager_get_filtered_events_async (TplLogManager *manager,
event_info->account = g_object_ref (account);
event_info->target = g_object_ref (target);
+ event_info->type_mask = type_mask;
event_info->num_events = num_events;
event_info->filter = filter;
event_info->user_data = filter_user_data;
@@ -1337,7 +1356,7 @@ _search_async_thread (GSimpleAsyncResult *simple,
event_info = async_data->request;
lst = _tpl_log_manager_search (async_data->manager,
- event_info->search_text);
+ event_info->search_text, event_info->type_mask);
g_simple_async_result_set_op_res_gpointer (simple, lst,
(GDestroyNotify) tpl_log_manager_search_free);
@@ -1348,6 +1367,7 @@ _search_async_thread (GSimpleAsyncResult *simple,
* tpl_log_manager_search_async:
* @manager: a #TplLogManager
* @text: the pattern to search
+ * @type_mask: event type filter see #TplEventTypeMask
* @callback: a callback to call when the request is satisfied
* @user_data: data to pass to @callback
*
@@ -1356,6 +1376,7 @@ _search_async_thread (GSimpleAsyncResult *simple,
void
tpl_log_manager_search_async (TplLogManager *manager,
const gchar *text,
+ gint type_mask,
GAsyncReadyCallback callback,
gpointer user_data)
{
@@ -1366,6 +1387,7 @@ tpl_log_manager_search_async (TplLogManager *manager,
g_return_if_fail (TPL_IS_LOG_MANAGER (manager));
event_info->search_text = g_strdup (text);
+ event_info->type_mask = type_mask;
async_data->manager = g_object_ref (manager);
async_data->request = event_info;
diff --git a/telepathy-logger/log-manager.h b/telepathy-logger/log-manager.h
index 2509339..a690f66 100644
--- a/telepathy-logger/log-manager.h
+++ b/telepathy-logger/log-manager.h
@@ -61,11 +61,10 @@ typedef struct
typedef enum
{
- TPL_EVENT_SEARCH_TEXT = 1 << 0,
- TPL_EVENT_SEARCH_TEXT_ROOM = 1 << 1,
- TPL_EVENT_SEARCH_CALL = 1 << 2,
- TPL_EVENT_SEARCH_ALL = 0xffff
-} TplEventSearchType;
+ TPL_EVENT_MASK_TEXT = 1 << 0,
+ TPL_EVENT_MASK_ANY = 0xffff
+} TplEventTypeMask;
+
typedef struct
{
@@ -83,11 +82,13 @@ TplLogManager *tpl_log_manager_dup_singleton (void);
gboolean tpl_log_manager_exists (TplLogManager *manager,
TpAccount *account,
- TplEntity *target);
+ TplEntity *target,
+ gint type_mask);
void tpl_log_manager_get_dates_async (TplLogManager *manager,
TpAccount *account,
TplEntity *target,
+ gint type_mask,
GAsyncReadyCallback callback,
gpointer user_data);
@@ -99,6 +100,7 @@ gboolean tpl_log_manager_get_dates_finish (TplLogManager *self,
void tpl_log_manager_get_events_for_date_async (TplLogManager *manager,
TpAccount *account,
TplEntity *target,
+ gint type_mask,
const GDate *date,
GAsyncReadyCallback callback,
gpointer user_data);
@@ -111,6 +113,7 @@ gboolean tpl_log_manager_get_events_for_date_finish (TplLogManager *self,
void tpl_log_manager_get_filtered_events_async (TplLogManager *manager,
TpAccount *account,
TplEntity *target,
+ gint type_mask,
guint num_events,
TplLogEventFilter filter,
gpointer filter_user_data,
@@ -134,6 +137,7 @@ gboolean tpl_log_manager_get_entities_finish (TplLogManager *self,
void tpl_log_manager_search_async (TplLogManager *manager,
const gchar *text,
+ gint type_mask,
GAsyncReadyCallback callback,
gpointer user_data);
diff --git a/telepathy-logger/log-store-internal.h b/telepathy-logger/log-store-internal.h
index 6a295f2..6f09a6b 100644
--- a/telepathy-logger/log-store-internal.h
+++ b/telepathy-logger/log-store-internal.h
@@ -63,19 +63,19 @@ typedef struct
const gchar * (*get_name) (TplLogStore *self);
gboolean (*exists) (TplLogStore *self, TpAccount *account,
- TplEntity *target);
+ TplEntity *target, gint type_mask);
gboolean (*add_event) (TplLogStore *self, TplEvent *event,
GError **error);
GList * (*get_dates) (TplLogStore *self, TpAccount *account,
- TplEntity *target);
+ TplEntity *target, gint type_mask);
GList * (*get_events_for_date) (TplLogStore *self, TpAccount *account,
- TplEntity *target, const GDate *date);
+ TplEntity *target, gint type_mask, const GDate *date);
GList * (*get_recent_events) (TplLogStore *self, TpAccount *account,
- TplEntity *target);
+ TplEntity *target, gint type_mask);
GList * (*get_entities) (TplLogStore *self, TpAccount *account);
- GList * (*search_new) (TplLogStore *self, const gchar *text);
+ GList * (*search_new) (TplLogStore *self, const gchar *text, gint type_mask);
GList * (*get_filtered_events) (TplLogStore *self, TpAccount *account,
- TplEntity *target, guint num_events,
+ TplEntity *target, gint type_mask, guint num_events,
TplLogEventFilter filter, gpointer user_data);
void (*clear) (TplLogStore *self);
void (*clear_account) (TplLogStore *self, TpAccount *account);
@@ -87,19 +87,20 @@ GType _tpl_log_store_get_type (void);
const gchar * _tpl_log_store_get_name (TplLogStore *self);
gboolean _tpl_log_store_exists (TplLogStore *self, TpAccount *account,
- TplEntity *target);
+ TplEntity *target, gint type_mask);
gboolean _tpl_log_store_add_event (TplLogStore *self, TplEvent *event,
GError **error);
GList * _tpl_log_store_get_dates (TplLogStore *self, TpAccount *account,
- TplEntity *target);
+ TplEntity *target, gint type_mask);
GList * _tpl_log_store_get_events_for_date (TplLogStore *self,
- TpAccount *account, TplEntity *target, const GDate *date);
+ TpAccount *account, TplEntity *target, gint type_mask, const GDate *date);
GList * _tpl_log_store_get_recent_events (TplLogStore *self,
- TpAccount *account, TplEntity *target);
+ TpAccount *account, TplEntity *target, gint type_mask);
GList * _tpl_log_store_get_entities (TplLogStore *self, TpAccount *account);
-GList * _tpl_log_store_search_new (TplLogStore *self, const gchar *text);
+GList * _tpl_log_store_search_new (TplLogStore *self, const gchar *text,
+ gint type_mask);
GList * _tpl_log_store_get_filtered_events (TplLogStore *self,
- TpAccount *account, TplEntity *target, guint num_events,
+ TpAccount *account, TplEntity *target, gint type_mask, guint num_events,
TplLogEventFilter filter, gpointer user_data);
void _tpl_log_store_clear (TplLogStore *self);
void _tpl_log_store_clear_account (TplLogStore *self, TpAccount *account);
diff --git a/telepathy-logger/log-store-pidgin.c b/telepathy-logger/log-store-pidgin.c
index 4ec5fd3..8784690 100644
--- a/telepathy-logger/log-store-pidgin.c
+++ b/telepathy-logger/log-store-pidgin.c
@@ -371,11 +371,15 @@ log_store_pidgin_get_dir (TplLogStore *self,
static gboolean
log_store_pidgin_exists (TplLogStore *self,
TpAccount *account,
- TplEntity *target)
+ TplEntity *target,
+ gint type_mask)
{
gchar *dir;
gboolean exists;
+ if (!(type_mask & TPL_EVENT_MASK_TEXT))
+ return FALSE;
+
dir = log_store_pidgin_get_dir (self, account, target);
if (dir != NULL)
@@ -432,7 +436,8 @@ log_store_pidgin_get_time (const gchar *filename)
static GList *
log_store_pidgin_get_dates (TplLogStore *self,
TpAccount *account,
- TplEntity *target)
+ TplEntity *target,
+ gint type_mask)
{
GList *dates = NULL;
gchar *directory;
@@ -443,6 +448,9 @@ log_store_pidgin_get_dates (TplLogStore *self,
g_return_val_if_fail (TP_IS_ACCOUNT (account), NULL);
g_return_val_if_fail (TPL_IS_ENTITY (target), NULL);
+ if (!(type_mask & TPL_EVENT_MASK_TEXT))
+ return NULL;
+
directory = log_store_pidgin_get_dir (self, account, target);
if (directory == NULL)
@@ -1021,7 +1029,8 @@ _log_store_pidgin_search_in_files (TplLogStorePidgin *self,
static GList *
log_store_pidgin_search_new (TplLogStore *self,
- const gchar *text)
+ const gchar *text,
+ gint type_mask)
{
GList *files;
GList *retval;
@@ -1029,6 +1038,9 @@ log_store_pidgin_search_new (TplLogStore *self,
g_return_val_if_fail (TPL_IS_LOG_STORE_PIDGIN (self), NULL);
g_return_val_if_fail (!tp_str_empty (text), NULL);
+ if (!(type_mask & TPL_EVENT_MASK_TEXT))
+ return NULL;
+
files = log_store_pidgin_get_all_files (self, NULL);
DEBUG ("Found %d log files in total", g_list_length (files));
@@ -1085,6 +1097,7 @@ static GList *
log_store_pidgin_get_events_for_date (TplLogStore *self,
TpAccount *account,
TplEntity *target,
+ gint type_mask,
const GDate *date)
{
GList *events, *filenames;
@@ -1093,6 +1106,9 @@ log_store_pidgin_get_events_for_date (TplLogStore *self,
g_return_val_if_fail (TP_IS_ACCOUNT (account), NULL);
g_return_val_if_fail (TPL_IS_ENTITY (target), NULL);
+ if (!(type_mask & TPL_EVENT_MASK_TEXT))
+ return NULL;
+
/* pidgin stores multiple files related to the same date */
filenames = log_store_pidgin_get_filenames_for_date (self, account,
target, date);
@@ -1133,6 +1149,7 @@ static GList *
log_store_pidgin_get_filtered_events (TplLogStore *self,
TpAccount *account,
TplEntity *target,
+ gint type_mask,
guint num_events,
TplLogEventFilter filter,
gpointer user_data)
@@ -1140,7 +1157,7 @@ log_store_pidgin_get_filtered_events (TplLogStore *self,
GList *dates, *l, *events = NULL;
guint i = 0;
- dates = log_store_pidgin_get_dates (self, account, target);
+ dates = log_store_pidgin_get_dates (self, account, target, type_mask);
for (l = g_list_last (dates); l != NULL && i < num_events; l = l->prev)
{
@@ -1149,7 +1166,7 @@ log_store_pidgin_get_filtered_events (TplLogStore *self,
/* FIXME: We should really restrict the event parsing to get only
* the newest num_events. */
new_events = log_store_pidgin_get_events_for_date (self, account,
- target, l->data);
+ target, type_mask, l->data);
n = new_events;
while (n != NULL)
diff --git a/telepathy-logger/log-store-xml.c b/telepathy-logger/log-store-xml.c
index f100790..c9f4093 100644
--- a/telepathy-logger/log-store-xml.c
+++ b/telepathy-logger/log-store-xml.c
@@ -557,7 +557,8 @@ log_store_xml_add_event (TplLogStore *store,
static gboolean
log_store_xml_exists (TplLogStore *store,
TpAccount *account,
- TplEntity *target)
+ TplEntity *target,
+ gint type_mask)
{
TplLogStoreXml *self = (TplLogStoreXml *) store;
gchar *dir;
@@ -567,6 +568,9 @@ log_store_xml_exists (TplLogStore *store,
g_return_val_if_fail (TP_IS_ACCOUNT (account), FALSE);
g_return_val_if_fail (TPL_IS_ENTITY (target), FALSE);
+ if (!(type_mask & TPL_EVENT_MASK_TEXT))
+ return FALSE;
+
dir = log_store_xml_get_dir (self, account, target);
exists = g_file_test (dir, G_FILE_TEST_EXISTS | G_FILE_TEST_IS_DIR);
g_free (dir);
@@ -599,7 +603,8 @@ create_date_from_string (const gchar *str)
static GList *
log_store_xml_get_dates (TplLogStore *store,
TpAccount *account,
- TplEntity *target)
+ TplEntity *target,
+ gint type_mask)
{
TplLogStoreXml *self = (TplLogStoreXml *) store;
GList *dates = NULL;
@@ -612,6 +617,9 @@ log_store_xml_get_dates (TplLogStore *store,
g_return_val_if_fail (TP_IS_ACCOUNT (account), NULL);
g_return_val_if_fail (TPL_IS_ENTITY (target), NULL);
+ if (!(type_mask & TPL_EVENT_MASK_TEXT))
+ return NULL;
+
directory = log_store_xml_get_dir (self, account, target);
dir = g_dir_open (directory, 0, NULL);
if (!dir)
@@ -1059,7 +1067,8 @@ fail:
static GList *
log_store_xml_search_new (TplLogStore *store,
- const gchar *text)
+ const gchar *text,
+ gint type_mask)
{
TplLogStoreXml *self = (TplLogStoreXml *) store;
GList *files;
@@ -1067,6 +1076,9 @@ log_store_xml_search_new (TplLogStore *store,
g_return_val_if_fail (TPL_IS_LOG_STORE_XML (self), NULL);
g_return_val_if_fail (!TPL_STR_EMPTY (text), NULL);
+ if (!(type_mask & TPL_EVENT_MASK_TEXT))
+ return NULL;
+
files = log_store_xml_get_all_files (self, NULL);
DEBUG ("Found %d log files in total", g_list_length (files));
@@ -1128,6 +1140,7 @@ static GList *
log_store_xml_get_events_for_date (TplLogStore *store,
TpAccount *account,
TplEntity *target,
+ gint type_mask,
const GDate *date)
{
TplLogStoreXml *self = (TplLogStoreXml *) store;
@@ -1139,6 +1152,9 @@ log_store_xml_get_events_for_date (TplLogStore *store,
g_return_val_if_fail (TPL_IS_ENTITY (target), NULL);
g_return_val_if_fail (date != NULL, NULL);
+ if (!(type_mask & TPL_EVENT_MASK_TEXT))
+ return NULL;
+
filename = log_store_xml_get_filename_for_date (self, account, target,
date);
events = log_store_xml_get_events_for_file (self, account, filename);
@@ -1265,6 +1281,7 @@ static GList *
log_store_xml_get_filtered_events (TplLogStore *store,
TpAccount *account,
TplEntity *target,
+ gint type_mask,
guint num_events,
TplLogEventFilter filter,
gpointer user_data)
@@ -1277,7 +1294,7 @@ log_store_xml_get_filtered_events (TplLogStore *store,
g_return_val_if_fail (TP_IS_ACCOUNT (account), NULL);
g_return_val_if_fail (TPL_IS_ENTITY (target), NULL);
- dates = log_store_xml_get_dates (store, account, target);
+ dates = log_store_xml_get_dates (store, account, target, type_mask);
for (l = g_list_last (dates); l != NULL && i < num_events;
l = g_list_previous (l))
@@ -1287,7 +1304,7 @@ log_store_xml_get_filtered_events (TplLogStore *store,
/* FIXME: We should really restrict the event parsing to get only
* the newest num_events. */
new_events = log_store_xml_get_events_for_date (store, account,
- target, l->data);
+ target, type_mask, l->data);
n = new_events;
while (n != NULL)
diff --git a/telepathy-logger/log-store.c b/telepathy-logger/log-store.c
index 18a564b..7f36138 100644
--- a/telepathy-logger/log-store.c
+++ b/telepathy-logger/log-store.c
@@ -121,13 +121,15 @@ _tpl_log_store_get_name (TplLogStore *self)
gboolean
_tpl_log_store_exists (TplLogStore *self,
TpAccount *account,
- TplEntity *target)
+ TplEntity *target,
+ gint type_mask)
{
g_return_val_if_fail (TPL_IS_LOG_STORE (self), FALSE);
if (!TPL_LOG_STORE_GET_INTERFACE (self)->exists)
return FALSE;
- return TPL_LOG_STORE_GET_INTERFACE (self)->exists (self, account, target);
+ return TPL_LOG_STORE_GET_INTERFACE (self)->exists (self, account, target,
+ type_mask);
}
@@ -167,6 +169,7 @@ _tpl_log_store_add_event (TplLogStore *self,
* @self: a TplLogStore
* @account: a TpAccount
* @target: a #TplEntity
+ * @type_mask: event type mask see #TplEventTypeMask
*
* Retrieves a list of #GDate, corresponding to each day
* at least an event was sent to or received from @id.
@@ -178,14 +181,15 @@ _tpl_log_store_add_event (TplLogStore *self,
GList *
_tpl_log_store_get_dates (TplLogStore *self,
TpAccount *account,
- TplEntity *target)
+ TplEntity *target,
+ gint type_mask)
{
g_return_val_if_fail (TPL_IS_LOG_STORE (self), NULL);
if (TPL_LOG_STORE_GET_INTERFACE (self)->get_dates == NULL)
return NULL;
return TPL_LOG_STORE_GET_INTERFACE (self)->get_dates (self, account,
- target);
+ target, type_mask);
}
@@ -194,8 +198,7 @@ _tpl_log_store_get_dates (TplLogStore *self,
* @self: a TplLogStore
* @account: a TpAccount
* @target: a #TplEntity
- * @id: a non-NULL identifier
- * @type: the event type of @id
+ * @type_mask: event type mask see #TplEventTypeMask
* @date: a #GDate
*
* Retrieves a list of events, with timestamp matching @date.
@@ -208,6 +211,7 @@ GList *
_tpl_log_store_get_events_for_date (TplLogStore *self,
TpAccount *account,
TplEntity *target,
+ gint type_mask,
const GDate *date)
{
g_return_val_if_fail (TPL_IS_LOG_STORE (self), NULL);
@@ -215,21 +219,22 @@ _tpl_log_store_get_events_for_date (TplLogStore *self,
return NULL;
return TPL_LOG_STORE_GET_INTERFACE (self)->get_events_for_date (self,
- account, target, date);
+ account, target, type_mask, date);
}
GList *
_tpl_log_store_get_recent_events (TplLogStore *self,
TpAccount *account,
- TplEntity *target)
+ TplEntity *target,
+ gint type_mask)
{
g_return_val_if_fail (TPL_IS_LOG_STORE (self), NULL);
if (TPL_LOG_STORE_GET_INTERFACE (self)->get_recent_events == NULL)
return NULL;
return TPL_LOG_STORE_GET_INTERFACE (self)->get_recent_events (self, account,
- target);
+ target, type_mask);
}
@@ -261,6 +266,7 @@ _tpl_log_store_get_entities (TplLogStore *self,
* _tpl_log_store_search_new:
* @self: a TplLogStore
* @text: a text to be searched among text messages
+ * @type_mask: event type mask see #TplEventTypeMask
*
* Searches all textual log entries matching @text.
*
@@ -270,13 +276,15 @@ _tpl_log_store_get_entities (TplLogStore *self,
*/
GList *
_tpl_log_store_search_new (TplLogStore *self,
- const gchar *text)
+ const gchar *text,
+ gint type_mask)
{
g_return_val_if_fail (TPL_IS_LOG_STORE (self), NULL);
if (TPL_LOG_STORE_GET_INTERFACE (self)->search_new == NULL)
return NULL;
- return TPL_LOG_STORE_GET_INTERFACE (self)->search_new (self, text);
+ return TPL_LOG_STORE_GET_INTERFACE (self)->search_new (self, text,
+ type_mask);
}
@@ -285,6 +293,7 @@ _tpl_log_store_search_new (TplLogStore *self,
* @self: a TplLogStore
* @account: a TpAccount
* @target: a #TplEntity
+ * @type_mask: event type mask see #TplEventTypeMask
* @num_events: max number of events to return
* @filter: filter function
* @user_data: data be passed to @filter, may be NULL
@@ -302,6 +311,7 @@ GList *
_tpl_log_store_get_filtered_events (TplLogStore *self,
TpAccount *account,
TplEntity *target,
+ gint type_mask,
guint num_events,
TplLogEventFilter filter,
gpointer user_data)
@@ -311,7 +321,7 @@ _tpl_log_store_get_filtered_events (TplLogStore *self,
return NULL;
return TPL_LOG_STORE_GET_INTERFACE (self)->get_filtered_events (self,
- account, target, num_events, filter, user_data);
+ account, target, type_mask, num_events, filter, user_data);
}
diff --git a/tests/dbus/test-searches.c b/tests/dbus/test-searches.c
index dbf3f56..a9324b7 100644
--- a/tests/dbus/test-searches.c
+++ b/tests/dbus/test-searches.c
@@ -95,7 +95,8 @@ test_get_dates (TestCaseFixture *fixture,
TplEntity *entity;
entity = tpl_entity_new (ID, TPL_ENTITY_CONTACT, NULL, NULL);
- ret = _tpl_log_manager_get_dates (fixture->manager, fixture->account, entity);
+ ret = _tpl_log_manager_get_dates (fixture->manager, fixture->account, entity,
+ TPL_EVENT_MASK_ANY);
g_object_unref (entity);
/* it includes 1 date from libpurple logs, 5 from TpLogger. Empathy
diff --git a/tests/dbus/test-tpl-log-store-pidgin.c b/tests/dbus/test-tpl-log-store-pidgin.c
index 0a6435f..7076e74 100644
--- a/tests/dbus/test-tpl-log-store-pidgin.c
+++ b/tests/dbus/test-tpl-log-store-pidgin.c
@@ -272,7 +272,7 @@ test_get_dates_jabber (PidginTestCaseFixture *fixture,
/* Chatroom messages */
dates = log_store_pidgin_get_dates (TPL_LOG_STORE (fixture->store),
- fixture->account, fixture->room);
+ fixture->account, fixture->room, TPL_EVENT_MASK_ANY);
g_assert_cmpint (g_list_length (dates), ==, 2);
@@ -291,7 +291,7 @@ test_get_dates_jabber (PidginTestCaseFixture *fixture,
/* 1-1 messages */
dates = log_store_pidgin_get_dates (TPL_LOG_STORE (fixture->store),
- fixture->account, fixture->contact);
+ fixture->account, fixture->contact, TPL_EVENT_MASK_ANY);
g_assert_cmpint (g_list_length (dates), ==, 1);
@@ -312,7 +312,8 @@ test_get_dates_irc (PidginTestCaseFixture *fixture,
dates = log_store_pidgin_get_dates (TPL_LOG_STORE (fixture->store),
fixture->account,
- fixture->irc_room);
+ fixture->irc_room,
+ TPL_EVENT_MASK_ANY);
g_assert_cmpint (g_list_length (dates), ==, 1);
@@ -362,6 +363,7 @@ test_get_events_for_date_jabber (PidginTestCaseFixture *fixture,
l = log_store_pidgin_get_events_for_date (TPL_LOG_STORE (fixture->store),
fixture->account,
fixture->room,
+ TPL_EVENT_MASK_ANY,
date);
g_assert_cmpint (g_list_length (l), ==, 6);
@@ -378,6 +380,7 @@ test_get_events_for_date_jabber (PidginTestCaseFixture *fixture,
l = log_store_pidgin_get_events_for_date (TPL_LOG_STORE (fixture->store),
fixture->account,
fixture->contact,
+ TPL_EVENT_MASK_ANY,
date);
g_assert_cmpint (g_list_length (l), ==, 2);
@@ -427,7 +430,8 @@ test_search_new (PidginTestCaseFixture *fixture,
/* empty search */
l = log_store_pidgin_search_new (TPL_LOG_STORE (fixture->store),
- "I do not exist in this log store data base!");
+ "I do not exist in this log store data base!",
+ TPL_EVENT_MASK_ANY);
g_assert_cmpint (g_list_length (l), ==, 0);
@@ -435,7 +439,8 @@ test_search_new (PidginTestCaseFixture *fixture,
/* non empty search matching 1-1 */
l = log_store_pidgin_search_new (TPL_LOG_STORE (fixture->store),
- "hey you");
+ "hey you",
+ TPL_EVENT_MASK_ANY);
g_assert_cmpint (g_list_length (l), ==, 1);
@@ -445,7 +450,8 @@ test_search_new (PidginTestCaseFixture *fixture,
/* non empty search, checking chatrooms are also searched */
l = log_store_pidgin_search_new (TPL_LOG_STORE (fixture->store),
- "disco remote servers");
+ "disco remote servers",
+ TPL_EVENT_MASK_ANY);
g_assert_cmpint (g_list_length (l), ==, 1);
diff --git a/tests/dbus/test-tpl-log-store-xml.c b/tests/dbus/test-tpl-log-store-xml.c
index 7090584..8db04ba 100644
--- a/tests/dbus/test-tpl-log-store-xml.c
+++ b/tests/dbus/test-tpl-log-store-xml.c
@@ -90,7 +90,8 @@ test_clear (XmlTestCaseFixture *fixture,
{
GList *hits;
hits = _tpl_log_store_search_new (TPL_LOG_STORE (fixture->store),
- "1263405203");
+ "1263405203",
+ TPL_EVENT_MASK_TEXT);
g_assert (hits != NULL);
g_assert_cmpint (g_list_length (hits), ==, 1);
@@ -100,7 +101,8 @@ test_clear (XmlTestCaseFixture *fixture,
_tpl_log_store_clear (TPL_LOG_STORE (fixture->store));
hits = _tpl_log_store_search_new (TPL_LOG_STORE (fixture->store),
- "1263405203");
+ "1263405203",
+ TPL_EVENT_MASK_TEXT);
g_assert_cmpint (g_list_length (hits), ==, 0);
}
@@ -117,14 +119,14 @@ test_clear_account (XmlTestCaseFixture *fixture,
const gchar *cleared = "f95e605a3ae97c463b626a3538567bc90fc58730";
hits = _tpl_log_store_search_new (TPL_LOG_STORE (fixture->store),
- kept);
+ kept, TPL_EVENT_MASK_TEXT);
g_assert_cmpint (g_list_length (hits), ==, 1);
tpl_log_manager_search_free (hits);
hits = _tpl_log_store_search_new (TPL_LOG_STORE (fixture->store),
- cleared);
+ cleared, TPL_EVENT_MASK_TEXT);
g_assert_cmpint (g_list_length (hits), ==, 1);
@@ -141,14 +143,14 @@ test_clear_account (XmlTestCaseFixture *fixture,
g_object_unref (account);
hits = _tpl_log_store_search_new (TPL_LOG_STORE (fixture->store),
- kept);
+ kept, TPL_EVENT_MASK_TEXT);
g_assert_cmpint (g_list_length (hits), ==, 1);
tpl_log_manager_search_free (hits);
hits = _tpl_log_store_search_new (TPL_LOG_STORE (fixture->store),
- cleared);
+ cleared, TPL_EVENT_MASK_TEXT);
g_assert_cmpint (g_list_length (hits), ==, 0);
}
@@ -179,21 +181,21 @@ test_clear_entity (XmlTestCaseFixture *fixture,
}
hits = _tpl_log_store_search_new (TPL_LOG_STORE (fixture->store),
- always_kept);
+ always_kept, TPL_EVENT_MASK_TEXT);
g_assert_cmpint (g_list_length (hits), ==, 1);
tpl_log_manager_search_free (hits);
hits = _tpl_log_store_search_new (TPL_LOG_STORE (fixture->store),
- kept);
+ kept, TPL_EVENT_MASK_TEXT);
g_assert_cmpint (g_list_length (hits), ==, 1);
tpl_log_manager_search_free (hits);
hits = _tpl_log_store_search_new (TPL_LOG_STORE (fixture->store),
- cleared);
+ cleared, TPL_EVENT_MASK_TEXT);
g_assert_cmpint (g_list_length (hits), ==, 1);
@@ -217,21 +219,21 @@ test_clear_entity (XmlTestCaseFixture *fixture,
g_object_unref (entity);
hits = _tpl_log_store_search_new (TPL_LOG_STORE (fixture->store),
- always_kept);
+ always_kept, TPL_EVENT_MASK_TEXT);
g_assert_cmpint (g_list_length (hits), ==, 1);
tpl_log_manager_search_free (hits);
hits = _tpl_log_store_search_new (TPL_LOG_STORE (fixture->store),
- kept);
+ kept, TPL_EVENT_MASK_TEXT);
g_assert_cmpint (g_list_length (hits), ==, 1);
tpl_log_manager_search_free (hits);
hits = _tpl_log_store_search_new (TPL_LOG_STORE (fixture->store),
- cleared);
+ cleared, TPL_EVENT_MASK_TEXT);
g_assert_cmpint (g_list_length (hits), ==, 0);
}