-static void
-modest_account_mgr_check_change (ModestConf *conf, const gchar *key,
- const gchar *new_value, gpointer user_data)
-{
- ModestAccountMgr *amgr = user_data;
- ModestAccountMgrPrivate *priv = MODEST_ACCOUNT_MGR_GET_PRIVATE (amgr);
-
- if ((strlen (key) > strlen (MODEST_SERVER_ACCOUNT_NAMESPACE "/")
- && g_str_has_prefix (key, MODEST_SERVER_ACCOUNT_NAMESPACE))) {
- gchar *subkey = g_strdup(key + strlen (MODEST_SERVER_ACCOUNT_NAMESPACE "/"));
-
- if (! strstr (subkey, "/")) {/* no more '/' means an account was modified */
- if (new_value) {
- /* covers only one case of two */
- /*
- priv->current_accounts =
- g_slist_prepend (priv->current_accounts, g_strdup (subkey));
- g_signal_emit (amgr, signals[ACCOUNT_ADD_SIGNAL], 0, subkey);
- */
- } else {
- priv->current_accounts =
- delete_account_from_list (priv->current_accounts, subkey);
-
- g_signal_emit (amgr, signals[ACCOUNT_REMOVE_SIGNAL], 0, subkey);
- }
- } else {
- gchar *param;
-
- param = strstr (subkey, "/");
- param [0] = 0;
- param++;
-
- /* that's the second case for a new account */
- if (!find_account_in_list (priv->current_accounts, subkey) && strstr (param, MODEST_ACCOUNT_PROTO)) {
- priv->current_accounts =
- g_slist_prepend (priv->current_accounts, g_strdup (subkey));
- g_signal_emit (amgr, signals[ACCOUNT_ADD_SIGNAL], 0, subkey);
- }
-
- g_signal_emit (amgr, signals[ACCOUNT_CHANGE_SIGNAL], 0, subkey, param, new_value);
- }
-
- g_free (subkey);
- }
+ /* Notify is server account was changed, default account was changed
+ * or when enabled/disabled changes:
+ */
+ if (enabled ||
+ g_str_has_suffix (key, MODEST_ACCOUNT_ENABLED) ||
+ strcmp (key, MODEST_CONF_DEFAULT_ACCOUNT) == 0)
+ g_signal_emit (G_OBJECT(self), signals[ACCOUNT_CHANGED_SIGNAL], 0,
+ account, key, is_server_account);
+
+ g_free (account);