Added new dbus methods to emit some signals.
authorJosé Dapena Paz <jdapena@igalia.com>
Tue, 26 Jan 2010 10:19:05 +0000 (11:19 +0100)
committerJosé Dapena Paz <jdapena@igalia.com>
Tue, 26 Jan 2010 10:41:41 +0000 (11:41 +0100)
libmodest-dbus-client/src/libmodest-dbus-api.h
src/dbus_api/modest-dbus-callbacks.c
src/dbus_api/modest-dbus-callbacks.h

index d4bda8c..f15714c 100644 (file)
@@ -124,4 +124,16 @@ enum ModestDbusUpdateFolderCountsArguments
        MODEST_DBUS_UPDATE_FOLDER_COUNTS_ARGS_COUNT
 };
 
+/* signal emitted when an account has been created */
+#define MODEST_DBUS_SIGNAL_ACCOUNT_CREATED "account_created"
+
+/* signal emitted when an account has been removed */
+#define MODEST_DBUS_SIGNAL_ACCOUNT_REMOVED "account_removed"
+
+/* signal emitted when a folder is updated */
+#define MODEST_DBUS_SIGNAL_FOLDER_UPDATED "folder_updated"
+
+/* signal emitted when a message read/unread flag is changed */
+#define MODEST_DBUS_SIGNAL_MSG_READ_CHANGED "msg_read_changed"
+
 #endif /* __MODEST_DBUS_API__ */
index 8bff930..a765be7 100644 (file)
@@ -2262,3 +2262,115 @@ notify_error_in_dbus_callback (gpointer user_data)
 
        return FALSE;
 }
+
+gboolean
+modest_dbus_emit_account_created_signal (DBusConnection *con, 
+                                        const gchar *account_id)
+{
+       DBusMessage *signal;
+       dbus_bool_t result;
+
+       signal = dbus_message_new_signal (MODEST_DBUS_OBJECT, MODEST_DBUS_IFACE,
+                                         MODEST_DBUS_SIGNAL_ACCOUNT_CREATED);
+
+       if (signal == NULL)
+               return FALSE;
+
+       if (!dbus_message_append_args  (signal,
+                                       DBUS_TYPE_STRING, &account_id,
+                                       DBUS_TYPE_INVALID)) {
+               dbus_message_unref (signal);
+               return FALSE;
+       }
+
+       result = dbus_connection_send (con, signal, NULL);
+
+       dbus_message_unref (signal);
+
+       return result?TRUE:FALSE;
+}
+
+gboolean
+modest_dbus_emit_account_removed_signal (DBusConnection *con,
+                                        const gchar *account_id)
+{
+       DBusMessage *signal;
+       dbus_bool_t result;
+
+       signal = dbus_message_new_signal (MODEST_DBUS_OBJECT, MODEST_DBUS_IFACE,
+                                         MODEST_DBUS_SIGNAL_ACCOUNT_REMOVED);
+
+       if (signal == NULL)
+               return FALSE;
+
+       if (!dbus_message_append_args  (signal,
+                                       DBUS_TYPE_STRING, &account_id,
+                                       DBUS_TYPE_INVALID)) {
+               dbus_message_unref (signal);
+               return FALSE;
+       }
+
+       result = dbus_connection_send (con, signal, NULL);
+
+       dbus_message_unref (signal);
+
+       return result?TRUE:FALSE;
+}
+
+gboolean
+modest_dbus_emit_folder_updated_signal (DBusConnection *con, 
+                                       const gchar *account_id,
+                                       const gchar *folder_path)
+{
+       DBusMessage *signal;
+       dbus_bool_t result;
+
+       signal = dbus_message_new_signal (MODEST_DBUS_OBJECT, MODEST_DBUS_IFACE,
+                                         MODEST_DBUS_SIGNAL_FOLDER_UPDATED);
+
+       if (signal == NULL)
+               return FALSE;
+
+       if (!dbus_message_append_args  (signal,
+                                       DBUS_TYPE_STRING, &account_id,
+                                       DBUS_TYPE_STRING, &folder_path,
+                                       DBUS_TYPE_INVALID)) {
+               dbus_message_unref (signal);
+               return FALSE;
+       }
+
+       result = dbus_connection_send (con, signal, NULL);
+
+       dbus_message_unref (signal);
+
+       return result?TRUE:FALSE;
+}
+
+gboolean
+modest_dbus_emit_msg_read_changed_signal (DBusConnection *con,
+                                         const gchar *uid,
+                                         gboolean is_read)
+{
+       DBusMessage *signal;
+       dbus_bool_t result;
+
+       signal = dbus_message_new_signal (MODEST_DBUS_OBJECT, MODEST_DBUS_IFACE,
+                                         MODEST_DBUS_SIGNAL_MSG_READ_CHANGED);
+
+       if (signal == NULL)
+               return FALSE;
+
+       if (!dbus_message_append_args  (signal,
+                                       DBUS_TYPE_STRING, &uid,
+                                       DBUS_TYPE_BOOLEAN, &is_read,
+                                       DBUS_TYPE_INVALID)) {
+               dbus_message_unref (signal);
+               return FALSE;
+       }
+
+       result = dbus_connection_send (con, signal, NULL);
+
+       dbus_message_unref (signal);
+
+       return result?TRUE:FALSE;
+}
index 2aeb746..d5e1fc3 100644 (file)
@@ -44,4 +44,10 @@ void modest_osso_cb_hw_state_handler(osso_hw_state_t *state, gpointer data);
 DBusHandlerResult modest_dbus_req_filter (DBusConnection *con,
                        DBusMessage    *message,
                        void           *user_data);
+
+gboolean modest_dbus_emit_account_created_signal (DBusConnection *con, const gchar *account_id);
+gboolean modest_dbus_emit_account_removed_signal (DBusConnection *con, const gchar *account_id);
+gboolean modest_dbus_emit_folder_updated_signal (DBusConnection *con, const gchar *account_id, const gchar *folder_path);
+gboolean modest_dbus_emit_msg_read_changed_signal (DBusConnection *con, const gchar *msg_uid, gboolean is_read);
+
 #endif /* __MODEST_DBUS_CALLBACKS_H__ */