#define __MODEST_ACCOUNT_MGR_H__
#include <glib-object.h>
-#include "modest-conf.h"
-#include "modest-account-keys.h"
-#include "modest-proto.h"
+#include <modest-conf.h>
+#include <modest-account-keys.h>
+#include <modest-protocol-mgr.h>
G_BEGIN_DECLS
struct _ModestAccountMgrClass {
GObjectClass parent_class;
- void (* account_removed) (ModestAccountMgr *obj, const gchar* account, gboolean server_account, gpointer user_data);
- void (* account_changed) (ModestAccountMgr *obj, const gchar* account, const gchar* key, gboolean server_account,
+ void (* account_removed) (ModestAccountMgr *obj, const gchar* account,
+ gboolean server_account, gpointer user_data);
+ void (* account_changed) (ModestAccountMgr *obj, const gchar* account,
+ const gchar* key, gboolean server_account,
gpointer user_data);
};
+/*
+ * some convenience structs to get bulk data about an account
+ */
+struct _ModestServerAccountData {
+ gchar *account_name;
+ gchar *hostname;
+ gchar *username;
+ gchar *proto;
+ gchar *password;
+};
+typedef struct _ModestServerAccountData ModestServerAccountData;
+
+struct _ModestAccountData {
+ gchar *account_name;
+ gchar *full_name;
+ gchar *email;
+ gboolean enabled;
+
+ ModestServerAccountData *transport_account;
+ ModestServerAccountData *store_account;
+};
+typedef struct _ModestAccountData ModestAccountData;
+
+
/**
* modest_ui_get_type:
/**
* modest_account_mgr_add_account:
* @self: a ModestAccountMgr instance
- * @name: the name of the account to create
+ * @name: name (id) of the account, which is a valid UTF8 string that does not contain '/'
* @store_name: the store account (ie. POP/IMAP)
* @transport_name: the transport account (ie. sendmail/SMTP)
* @err: a GError ptr, or NULL to ignore.
/**
* modest_account_mgr_add_server_account:
* @self: a ModestAccountMgr instance
- * @name: name (id) of the account
+ * @name: name (id) of the account, which is a valid UTF8 string that does not contain '/'
* @hostname: the hostname
* @username: the username
* @password: the password
* error or if there are no server accounts. The caller must free the returned GSList
*/
GSList* modest_account_mgr_search_server_accounts (ModestAccountMgr *self,
- const gchar* account_name,
- ModestProtoType type,
- const gchar* proto,
- gboolean only_enabled);
+ const gchar* account_name,
+ ModestProtocolType type,
+ const gchar* proto);
/**
* modest_account_mgr_account_exists:
gboolean server_account,
GError **err);
-
/**
- * modest_account_mgr_enable_account:
+ * modest_account_mgr_get_account_data:
* @self: a ModestAccountMgr instance
- * @name: the account name to disable
- * @server_account: if TRUE, this is a server account
+ * @name: the name of the account
*
- * enable an account that has been disabled with 'modest_account_mgr_disable_account'
+ * get information about an account
*
- * Returns: TRUE if it worked, FALSE otherwise
+ * Returns: a ModestAccountData structure with information about the account.
+ * the data should not be changed, and be freed with modest_account_mgr_free_account_data
*/
-gboolean modest_account_mgr_enable_account (ModestAccountMgr *self, const gchar* name,
- gboolean is_server_account);
+ModestAccountData *modest_account_mgr_get_account_data (ModestAccountMgr *self,
+ const gchar* name);
+/**
+ * modest_account_mgr_free_account_data:
+ * @self: a ModestAccountMgr instance
+ * @data: a ModestAccountData instance
+ *
+ * free the account data structure
+ */
+void modest_account_mgr_free_account_data (ModestAccountMgr *self,
+ ModestAccountData *data);
/**
- * modest_account_mgr_disable_account:
+ * modest_account_mgr_account_set_enabled
* @self: a ModestAccountMgr instance
- * @name: the account name to disable
- * @server_account: if TRUE, this is a server account
+ * @name: the account name
+ * @enabled: if TRUE, the account will be enabled, if FALSE, it will be disabled
*
- * disable an account. this will also stop change notification until
- * modest_account_mgr_enable_account is called. However, in case of removal, the
- * appropriate signal will still be emitted.
+ * enable/disabled an account
*
* Returns: TRUE if it worked, FALSE otherwise
*/
-gboolean modest_account_mgr_disable_account (ModestAccountMgr *self, const gchar* name,
- gboolean is_server_account);
-
+gboolean modest_account_mgr_account_set_enabled (ModestAccountMgr *self, const gchar* name,
+ gboolean enabled);
/**
- * modest_account_mgr_account_is_enabled:
+ * modest_account_mgr_account_get_enabled:
* @self: a ModestAccountMgr instance
* @name: the account name to check
- * @server_account: if TRUE, this is a server account
*
* check whether a certain account is enabled
*
* Returns: TRUE if it is enabled, FALSE otherwise
*/
-gboolean modest_account_mgr_account_is_enabled (ModestAccountMgr *self, const gchar* name,
- gboolean is_server_account);
-
-
+gboolean modest_account_mgr_account_get_enabled (ModestAccountMgr *self, const gchar* name);
/**
* @server_account: if TRUE, this is a server account
* @err: a GError ptr, or NULL to ignore.
*
- * set a config string for an account
+ * set a config string for an account.
*
* Returns: TRUE if setting the value succeeded, or FALSE in case of error.
* @err gives details in case of error
gboolean server_account,
GError **err);
+
+/**
+ * modest_account_mgr_get_list:
+ * @self: a ModestAccountMgr instance
+ * @name: the name of the account
+ * @key: the key of the value to get
+ * @list_type: the type of the members of the list
+ * @server_account: if TRUE, this is a server account
+ * @err: a GError ptr, or NULL to ignore.
+ *
+ * get a config list of values of type @list_type of an account
+ *
+ * Returns: a newly allocated list of elements
+ * @err gives details in case of error
+ */
+GSList* modest_account_mgr_get_list (ModestAccountMgr *self,
+ const gchar *name,
+ const gchar *key,
+ ModestConfValueType list_type,
+ gboolean server_account,
+ GError **err);
+
+/**
+ * modest_account_mgr_unset:
+ * @self: a ModestAccountMgr instance
+ * @name: the name of the account
+ * @key: the key of the value to unset
+ * @server_account: if TRUE, this is a server account
+ * @err: a GError ptr, or NULL to ignore.
+ *
+ * unsets the config value of an account and all their children keys
+ *
+ * Returns: TRUE if unsetting the value succeeded, or FALSE in case of error.
+ * @err gives details in case of error
+ */
+gboolean modest_account_mgr_unset (ModestAccountMgr *self,
+ const gchar *name,
+ const gchar *key,
+ gboolean server_account,
+ GError **err);
+
G_END_DECLS
#endif /* __MODEST_ACCOUNT_MGR_H__ */