/* insert (c)/licensing information) */
#include <string.h>
+#include "modest-marshal.h"
+#include "modest-account-keys.h"
#include "modest-account-mgr.h"
/* 'private'/'protected' functions */
/* list my signals */
enum {
- /* MY_SIGNAL_1, */
- /* MY_SIGNAL_2, */
+ ACCOUNT_CHANGE_SIGNAL,
+ ACCOUNT_REMOVE_SIGNAL,
+ ACCOUNT_ADD_SIGNAL,
LAST_SIGNAL
};
/* globals */
static GObjectClass *parent_class = NULL;
-/* uncomment the following if you have defined any signals */
-/* static guint signals[LAST_SIGNAL] = {0}; */
+static guint signals[LAST_SIGNAL] = {0};
+
+
+/* map configuration changes to account changes */
+static void
+modest_account_mgr_check_change (ModestConf *conf, const gchar *key,
+ const gchar *new_value, gpointer user_data)
+{
+ ModestAccountMgr *amgr = user_data;
+
+
+
+ g_signal_emit (amgr, signals[ACCOUNT_CHANGE_SIGNAL], 0, key, new_value);
+
+ g_message ("value changed: %s %s\n", key, new_value);
+}
+
GType
modest_account_mgr_get_type (void)
modest_account_mgr_class_init (ModestAccountMgrClass * klass)
{
GObjectClass *gobject_class;
+ GType paramtypes[2] = {G_TYPE_POINTER, G_TYPE_POINTER};
gobject_class = (GObjectClass *) klass;
g_type_class_add_private (gobject_class,
sizeof (ModestAccountMgrPrivate));
- /* signal definitions go here, e.g.: */
-/* signals[MY_SIGNAL_1] = */
-/* g_signal_new ("my_signal_1",....); */
-/* signals[MY_SIGNAL_2] = */
-/* g_signal_new ("my_signal_2",....); */
-/* etc. */
+ /* signal definitions */
+ signals[ACCOUNT_ADD_SIGNAL] =
+ g_signal_newv ("account-add",
+ G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST,
+ NULL, NULL, NULL,
+ g_cclosure_marshal_VOID__POINTER,
+ G_TYPE_NONE, 1, paramtypes);
+
+ signals[ACCOUNT_REMOVE_SIGNAL] =
+ g_signal_newv ("account-remove",
+ G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST,
+ NULL, NULL, NULL,
+ g_cclosure_marshal_VOID__POINTER,
+ G_TYPE_NONE, 1, paramtypes);
+ signals[ACCOUNT_CHANGE_SIGNAL] =
+ g_signal_newv ("account-change",
+ G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST,
+ NULL, NULL, NULL,
+ modest_marshal_VOID__POINTER_POINTER,
+ G_TYPE_NONE, 2, paramtypes);
}
* ModestConf should outlive the ModestAccountMgr though
*/
g_object_ref (G_OBJECT (priv->modest_conf = conf));
+
+ g_signal_connect (G_OBJECT (conf), "key-changed",
+ G_CALLBACK (modest_account_mgr_check_change), obj);
return obj;
}
{
ModestAccountMgrPrivate *priv;
gchar *key;
- gboolean retval;
g_return_val_if_fail (self, FALSE);
g_return_val_if_fail (name, FALSE);
const gchar * name, GError ** err)
{
ModestAccountMgrPrivate *priv;
- gchar *acckey, *key;
+ gchar *acckey;
gboolean retval;
g_return_val_if_fail (self, FALSE);
GSList *
modest_account_mgr_account_names (ModestAccountMgr * self, GError ** err)
{
- GSList *accounts, *cursor;
+ GSList *accounts;
ModestAccountMgrPrivate *priv;
const size_t prefix_len = strlen (MODEST_ACCOUNT_NAMESPACE "/");
priv = MODEST_ACCOUNT_MGR_GET_PRIVATE (self);
accounts = modest_conf_list_subkeys (priv->modest_conf,
- MODEST_ACCOUNT_NAMESPACE, err);
+ MODEST_ACCOUNT_NAMESPACE, err);
return strip_prefix_from_elements (accounts, prefix_len);
}
gboolean retval;
g_return_val_if_fail (self, FALSE);
- g_return_val_if_fail (name, FALSE);
+ g_return_val_if_fail (name, FALSE);
if (server_account)
- keyname = get_account_keyname (name, NULL);
- else
keyname = get_server_account_keyname (name, NULL);
+ else
+ keyname = get_account_keyname (name, NULL);
priv = MODEST_ACCOUNT_MGR_GET_PRIVATE (self);
retval = modest_conf_key_exists (priv->modest_conf, keyname, err);