X-Git-Url: http://git.maemo.org/git/?a=blobdiff_plain;f=src%2Fmodest-account-mgr.c;h=4a079cc2c4608137c1fc7d0c4a3af239e2a4cc0f;hb=fd2fd1985a2218f833f9d480cc2398ced1ff0e0a;hp=3ea2ed627166e6281e7c1a8abdeb2c261f21f9cc;hpb=a9e70c921dfadd98751af998d5266dae38ca1df8;p=modest diff --git a/src/modest-account-mgr.c b/src/modest-account-mgr.c index 3ea2ed6..4a079cc 100644 --- a/src/modest-account-mgr.c +++ b/src/modest-account-mgr.c @@ -3,6 +3,8 @@ /* insert (c)/licensing information) */ #include +#include "modest-marshal.h" +#include "modest-account-keys.h" #include "modest-account-mgr.h" /* 'private'/'protected' functions */ @@ -16,8 +18,9 @@ static gchar *get_server_account_keyname (const gchar * accname, /* list my signals */ enum { - /* MY_SIGNAL_1, */ - /* MY_SIGNAL_2, */ + ACCOUNT_CHANGE_SIGNAL, + ACCOUNT_REMOVE_SIGNAL, + ACCOUNT_ADD_SIGNAL, LAST_SIGNAL }; @@ -32,8 +35,23 @@ struct _ModestAccountMgrPrivate { /* 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) @@ -64,6 +82,7 @@ static void modest_account_mgr_class_init (ModestAccountMgrClass * klass) { GObjectClass *gobject_class; + GType paramtypes[2] = {G_TYPE_POINTER, G_TYPE_POINTER}; gobject_class = (GObjectClass *) klass; @@ -73,12 +92,26 @@ modest_account_mgr_class_init (ModestAccountMgrClass * 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); } @@ -118,6 +151,9 @@ modest_account_mgr_new (ModestConf * conf) * 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; } @@ -130,7 +166,6 @@ modest_account_mgr_add_account (ModestAccountMgr * self, const gchar * name, { ModestAccountMgrPrivate *priv; gchar *key; - gboolean retval; g_return_val_if_fail (self, FALSE); g_return_val_if_fail (name, FALSE); @@ -264,7 +299,7 @@ modest_account_mgr_remove_server_account (ModestAccountMgr * self, const gchar * name, GError ** err) { ModestAccountMgrPrivate *priv; - gchar *acckey, *key; + gchar *acckey; gboolean retval; g_return_val_if_fail (self, FALSE); @@ -367,7 +402,7 @@ modest_account_mgr_server_account_names (ModestAccountMgr * self, 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 "/"); @@ -377,7 +412,7 @@ modest_account_mgr_account_names (ModestAccountMgr * self, GError ** err) 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); } @@ -668,12 +703,12 @@ account_exists (ModestAccountMgr * self, const gchar * name, 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);