summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--extensions/Logger.xml7
-rw-r--r--telepathy-logger/dbus-service.c19
2 files changed, 26 insertions, 0 deletions
diff --git a/extensions/Logger.xml b/extensions/Logger.xml
index bb2a456..c05d726 100644
--- a/extensions/Logger.xml
+++ b/extensions/Logger.xml
@@ -153,6 +153,13 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
</tp:docstring>
</method>
+ <method name="Clear"
+ tp:name-for-bindings="Clear">
+ <tp:docstring>
+ Clear all the log. This will not erase the favourite contacts.
+ </tp:docstring>
+ </method>
+
<signal name="FavouriteContactsChanged"
tp:name-for-bindings="Favourite_Contacts_Changed">
<tp:docstring>
diff --git a/telepathy-logger/dbus-service.c b/telepathy-logger/dbus-service.c
index 9f853bc..dd40667 100644
--- a/telepathy-logger/dbus-service.c
+++ b/telepathy-logger/dbus-service.c
@@ -34,6 +34,7 @@
#include <telepathy-logger/event-internal.h>
#include <telepathy-logger/text-event.h>
#include <telepathy-logger/log-manager.h>
+#include <telepathy-logger/log-manager-internal.h>
#include <extensions/extensions.h>
@@ -921,6 +922,23 @@ tpl_dbus_service_remove_favourite_contact (TplSvcLogger *logger,
pendingproc_remove_favourite_contact (NULL, closure);
}
+
+static void
+tpl_dbus_service_clear (TplSvcLogger *logger,
+ DBusGMethodInvocation *context)
+{
+ TplDBusService *self = TPL_DBUS_SERVICE (logger);
+
+ g_return_if_fail (TPL_IS_DBUS_SERVICE (self));
+ g_return_if_fail (context != NULL);
+
+ /* We want to clear synchronously to avoid concurent write */
+ _tpl_log_manager_clear (self->priv->manager);
+
+ tpl_svc_logger_return_from_clear (context);
+}
+
+
static void
tpl_logger_iface_init (gpointer iface,
gpointer iface_data)
@@ -932,5 +950,6 @@ tpl_logger_iface_init (gpointer iface,
IMPLEMENT (get_favourite_contacts);
IMPLEMENT (add_favourite_contact);
IMPLEMENT (remove_favourite_contact);
+ IMPLEMENT (clear);
#undef IMPLEMENT
}