empathy r1623 - trunk/src
- From: xclaesse svn gnome org
- To: svn-commits-list gnome org
- Subject: empathy r1623 - trunk/src
- Date: Fri, 17 Oct 2008 12:47:25 +0000 (UTC)
Author: xclaesse
Date: Fri Oct 17 12:47:25 2008
New Revision: 1623
URL: http://svn.gnome.org/viewvc/empathy?rev=1623&view=rev
Log:
Automatically tick "import" only for accounts which are not already present in MC. (Jonny Lamb)
Signed-off-by: Jonny Lamb <jonny lamb collabora co uk>
Modified:
trunk/src/empathy-import-dialog.c
Modified: trunk/src/empathy-import-dialog.c
==============================================================================
--- trunk/src/empathy-import-dialog.c (original)
+++ trunk/src/empathy-import-dialog.c Fri Oct 17 12:47:25 2008
@@ -489,6 +489,27 @@
}
static gboolean
+import_dialog_filter_mc_accounts (McAccount *account,
+ gpointer user_data)
+{
+ gchar *value;
+ const gchar *username;
+ gboolean result;
+
+ username = (const gchar *) user_data;
+
+ if (mc_account_get_param_string (account, "account", &value)
+ == MC_ACCOUNT_SETTING_ABSENT)
+ return FALSE;
+
+ result = tp_strdiff (value, username);
+
+ g_free (value);
+
+ return !result;
+}
+
+static gboolean
import_dialog_add_accounts_to_model (EmpathyImportDialog *dialog)
{
GtkTreeModel *model;
@@ -506,16 +527,39 @@
{
GValue *value, *account_data;
AccountData *data = (AccountData *) account->data;
+ gboolean import;
+ GList *accounts, *all_accounts;
+ McProfile *profile;
account_data = tp_g_value_slice_new (G_TYPE_POINTER);
g_value_set_pointer (account_data, data);
value = g_hash_table_lookup (data->settings, "account");
+ /* Get the profile of the account we're adding to get all current
+ * accounts in MC. */
+ profile = mc_profile_lookup (data->protocol);
+
+ all_accounts = profile ? mc_accounts_list_by_profile (profile) :
+ mc_accounts_list ();
+
+ /* Filter the list of all relevant accounts to remove ones which are NOT
+ * the same as the one we're now adding. */
+ accounts = mc_accounts_filter (all_accounts,
+ import_dialog_filter_mc_accounts,
+ (gpointer) g_value_get_string (value));
+
+ /* Make the checkbox ticked if there is *no* account already with the
+ * relevant details. */
+ import = (g_list_length (accounts) == 0);
+
+ mc_accounts_list_free (accounts);
+ g_object_unref (profile);
+
gtk_list_store_append (GTK_LIST_STORE (model), &iter);
gtk_list_store_set (GTK_LIST_STORE (model), &iter,
- COL_IMPORT, TRUE,
+ COL_IMPORT, import,
COL_PROTOCOL, data->protocol,
COL_NAME, g_value_get_string (value),
COL_SOURCE, "Pidgin",
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]