+ g_free (uri);
+}
+
+static void
+on_vfs_volume_unmounted(GnomeVFSVolumeMonitor *volume_monitor,
+ GnomeVFSVolume *volume, gpointer user_data)
+{
+ ModestTnyAccountStore *self = MODEST_TNY_ACCOUNT_STORE(user_data);
+
+ /* Check whether this was the external MMC1 card: */
+ gchar *uri = gnome_vfs_volume_get_activation_uri (volume);
+ if (uri && (strcmp (uri, MODEST_MCC1_VOLUMEPATH_URI) == 0)) {
+ printf ("DEBUG: %s: MMC1 card unmounted.\n", __FUNCTION__);
+
+ /* TODO: Just add an account and emit (and respond to)
+ * TnyAccountStore::accountinserted signal?
+ */
+ recreate_all_accounts (self);
+
+ g_signal_emit (G_OBJECT(self), signals[ACCOUNT_UPDATE_SIGNAL], 0,
+ NULL);
+ }
+
+ g_free (uri);
+}
+
+static void
+on_account_removed (ModestAccountMgr *acc_mgr,
+ const gchar *account,
+ gboolean server_account,
+ gpointer user_data)
+{
+ ModestTnyAccountStore *self = MODEST_TNY_ACCOUNT_STORE(user_data);
+ TnyAccount *store_account;
+
+ /* Clear the account cache */
+ store_account = modest_tny_account_store_get_tny_account_by (self,
+ MODEST_TNY_ACCOUNT_STORE_QUERY_NAME,
+ account);
+ if (store_account) {
+ tny_store_account_delete_cache (TNY_STORE_ACCOUNT (store_account));
+
+ g_signal_emit (G_OBJECT (self),
+ tny_account_store_signals [TNY_ACCOUNT_STORE_ACCOUNT_REMOVED],
+ 0, store_account);
+
+ g_object_unref (store_account);
+ } else
+ g_printerr ("modest: cannot find server account for %s", account);
+
+ /* FIXME: make this more finegrained; changes do not
+ * really affect _all_ accounts, and some do not
+ * affect tny accounts at all (such as 'last_update')
+ */
+ recreate_all_accounts (self);
+