Bug #632962 - Duplicate "On this computer" sources after update
This commit is contained in:
@ -293,21 +293,18 @@ mail_capplet_shell_new (gint socket_id, gboolean just_druid, gboolean main_loop)
|
||||
return GTK_WIDGET (shell);
|
||||
}
|
||||
|
||||
#define LOCAL_BASE_URI "local:"
|
||||
#define PERSONAL_RELATIVE_URI "system"
|
||||
|
||||
static void
|
||||
setup_abooks ()
|
||||
setup_abooks (void)
|
||||
{
|
||||
gchar *base_dir, *uri;
|
||||
GSList *groups;
|
||||
ESourceGroup *group;
|
||||
ESourceList *list = NULL;
|
||||
ESourceGroup *on_this_computer = NULL;
|
||||
ESource *personal_source = NULL;
|
||||
|
||||
base_dir = g_build_filename (e_get_user_data_dir (), "addressbook", "local", NULL);
|
||||
uri = g_filename_to_uri (base_dir, NULL, NULL);
|
||||
|
||||
if (!e_book_get_addressbooks (&list, NULL)) {
|
||||
g_warning ("Unable to get books\n");
|
||||
return;
|
||||
@ -317,16 +314,25 @@ setup_abooks ()
|
||||
if (groups) {
|
||||
/* groups are already there, we need to search for things... */
|
||||
GSList *g;
|
||||
gchar *base_dir, *base_uri;
|
||||
|
||||
base_dir = g_build_filename (e_get_user_data_dir (), "addressbook", "local", NULL);
|
||||
base_uri = g_filename_to_uri (base_dir, NULL, NULL);
|
||||
|
||||
for (g = groups; g; g = g->next) {
|
||||
|
||||
group = E_SOURCE_GROUP (g->data);
|
||||
|
||||
if (!on_this_computer && !strcmp (uri, e_source_group_peek_base_uri (group))) {
|
||||
if (strcmp (base_uri, e_source_group_peek_base_uri (group)) == 0)
|
||||
e_source_group_set_base_uri (group, LOCAL_BASE_URI);
|
||||
|
||||
if (!on_this_computer && !strcmp (LOCAL_BASE_URI, e_source_group_peek_base_uri (group))) {
|
||||
on_this_computer = g_object_ref (group);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
g_free (base_dir);
|
||||
g_free (base_uri);
|
||||
}
|
||||
|
||||
if (on_this_computer) {
|
||||
@ -349,7 +355,7 @@ setup_abooks ()
|
||||
}
|
||||
else {
|
||||
/* create the local source group */
|
||||
group = e_source_group_new (_("On This Computer"), uri);
|
||||
group = e_source_group_new (_("On This Computer"), LOCAL_BASE_URI);
|
||||
e_source_list_add_group (list, group, -1);
|
||||
|
||||
on_this_computer = group;
|
||||
@ -372,7 +378,5 @@ setup_abooks ()
|
||||
|
||||
e_source_list_sync (list, NULL);
|
||||
g_object_unref (list);
|
||||
g_free (uri);
|
||||
g_free (base_dir);
|
||||
}
|
||||
|
||||
|
||||
@ -66,6 +66,7 @@ typedef struct {
|
||||
GtkWidget *progress;
|
||||
} MigrationContext;
|
||||
|
||||
#define LOCAL_BASE_URI "local:"
|
||||
#define LDAP_BASE_URI "ldap://"
|
||||
#define PERSONAL_RELATIVE_URI "system"
|
||||
|
||||
@ -77,27 +78,28 @@ create_groups (MigrationContext *context,
|
||||
{
|
||||
GSList *groups;
|
||||
ESourceGroup *group;
|
||||
gchar *base_uri, *base_uri_proto;
|
||||
|
||||
*on_this_computer = NULL;
|
||||
*on_ldap_servers = NULL;
|
||||
*personal_source = NULL;
|
||||
|
||||
base_uri = g_build_filename (context->data_dir, "local", NULL);
|
||||
|
||||
base_uri_proto = g_filename_to_uri (base_uri, NULL, NULL);
|
||||
|
||||
groups = e_source_list_peek_groups (context->source_list);
|
||||
if (groups) {
|
||||
/* groups are already there, we need to search for things... */
|
||||
GSList *g;
|
||||
gchar *base_dir, *base_uri;
|
||||
|
||||
base_dir = g_build_filename (context->data_dir, "local", NULL);
|
||||
base_uri = g_filename_to_uri (base_dir, NULL, NULL);
|
||||
|
||||
for (g = groups; g; g = g->next) {
|
||||
|
||||
group = E_SOURCE_GROUP (g->data);
|
||||
|
||||
if (strcmp (base_uri, e_source_group_peek_base_uri (group)) == 0)
|
||||
e_source_group_set_base_uri (group, LOCAL_BASE_URI);
|
||||
|
||||
if (!*on_this_computer &&
|
||||
!strcmp (base_uri_proto,
|
||||
!strcmp (LOCAL_BASE_URI,
|
||||
e_source_group_peek_base_uri (group)))
|
||||
*on_this_computer = g_object_ref (group);
|
||||
else if (!*on_ldap_servers &&
|
||||
@ -105,6 +107,9 @@ create_groups (MigrationContext *context,
|
||||
e_source_group_peek_base_uri (group)))
|
||||
*on_ldap_servers = g_object_ref (group);
|
||||
}
|
||||
|
||||
g_free (base_dir);
|
||||
g_free (base_uri);
|
||||
}
|
||||
|
||||
if (*on_this_computer) {
|
||||
@ -127,7 +132,7 @@ create_groups (MigrationContext *context,
|
||||
}
|
||||
else {
|
||||
/* create the local source group */
|
||||
group = e_source_group_new (_("On This Computer"), base_uri_proto);
|
||||
group = e_source_group_new (_("On This Computer"), LOCAL_BASE_URI);
|
||||
e_source_list_add_group (context->source_list, group, -1);
|
||||
|
||||
*on_this_computer = group;
|
||||
@ -150,9 +155,6 @@ create_groups (MigrationContext *context,
|
||||
|
||||
*on_ldap_servers = group;
|
||||
}
|
||||
|
||||
g_free (base_uri_proto);
|
||||
g_free (base_uri);
|
||||
}
|
||||
|
||||
static MigrationContext *
|
||||
|
||||
@ -43,6 +43,7 @@
|
||||
|
||||
#include "e-cal-shell-backend.h"
|
||||
|
||||
#define LOCAL_BASE_URI "local:"
|
||||
#define WEBCAL_BASE_URI "webcal://"
|
||||
#define CONTACTS_BASE_URI "contacts://"
|
||||
#define BAD_CONTACTS_BASE_URI "contact://"
|
||||
@ -80,8 +81,6 @@ create_calendar_sources (EShellBackend *shell_backend,
|
||||
EShellSettings *shell_settings;
|
||||
GSList *groups;
|
||||
ESourceGroup *group;
|
||||
gchar *base_uri, *base_uri_proto;
|
||||
const gchar *base_dir;
|
||||
|
||||
*on_this_computer = NULL;
|
||||
*on_the_web = NULL;
|
||||
@ -91,15 +90,14 @@ create_calendar_sources (EShellBackend *shell_backend,
|
||||
shell = e_shell_backend_get_shell (shell_backend);
|
||||
shell_settings = e_shell_get_shell_settings (shell);
|
||||
|
||||
base_dir = e_shell_backend_get_data_dir (shell_backend);
|
||||
base_uri = g_build_filename (base_dir, "local", NULL);
|
||||
|
||||
base_uri_proto = g_filename_to_uri (base_uri, NULL, NULL);
|
||||
|
||||
groups = e_source_list_peek_groups (source_list);
|
||||
if (groups) {
|
||||
/* groups are already there, we need to search for things... */
|
||||
GSList *g;
|
||||
gchar *base_dir, *base_uri;
|
||||
|
||||
base_dir = g_build_filename (e_shell_backend_get_data_dir (shell_backend), "local", NULL);
|
||||
base_uri = g_filename_to_uri (base_dir, NULL, NULL);
|
||||
|
||||
for (g = groups; g; g = g->next) {
|
||||
|
||||
@ -109,9 +107,9 @@ create_calendar_sources (EShellBackend *shell_backend,
|
||||
e_source_group_set_base_uri (group, CONTACTS_BASE_URI);
|
||||
|
||||
if (!strcmp (base_uri, e_source_group_peek_base_uri (group)))
|
||||
e_source_group_set_base_uri (group, base_uri_proto);
|
||||
e_source_group_set_base_uri (group, LOCAL_BASE_URI);
|
||||
|
||||
if (!*on_this_computer && !strcmp (base_uri_proto,
|
||||
if (!*on_this_computer && !strcmp (LOCAL_BASE_URI,
|
||||
e_source_group_peek_base_uri (group)))
|
||||
*on_this_computer = g_object_ref (group);
|
||||
|
||||
@ -123,6 +121,9 @@ create_calendar_sources (EShellBackend *shell_backend,
|
||||
e_source_group_peek_base_uri (group)))
|
||||
*contacts = g_object_ref (group);
|
||||
}
|
||||
|
||||
g_free (base_dir);
|
||||
g_free (base_uri);
|
||||
}
|
||||
|
||||
if (*on_this_computer) {
|
||||
@ -144,7 +145,7 @@ create_calendar_sources (EShellBackend *shell_backend,
|
||||
}
|
||||
} else {
|
||||
/* create the local source group */
|
||||
group = e_source_group_new (_("On This Computer"), base_uri_proto);
|
||||
group = e_source_group_new (_("On This Computer"), LOCAL_BASE_URI);
|
||||
e_source_list_add_group (source_list, group, -1);
|
||||
|
||||
*on_this_computer = group;
|
||||
@ -199,9 +200,6 @@ create_calendar_sources (EShellBackend *shell_backend,
|
||||
|
||||
*contacts = group;
|
||||
}
|
||||
|
||||
g_free (base_uri_proto);
|
||||
g_free (base_uri);
|
||||
}
|
||||
|
||||
gboolean
|
||||
|
||||
@ -35,6 +35,7 @@
|
||||
|
||||
#include "e-memo-shell-backend.h"
|
||||
|
||||
#define LOCAL_BASE_URI "local:"
|
||||
#define WEBCAL_BASE_URI "webcal://"
|
||||
#define PERSONAL_RELATIVE_URI "system"
|
||||
#define GROUPWISE_BASE_URI "groupwise://"
|
||||
@ -50,8 +51,6 @@ create_memo_sources (EShellBackend *shell_backend,
|
||||
EShellSettings *shell_settings;
|
||||
GSList *groups;
|
||||
ESourceGroup *group;
|
||||
gchar *base_uri, *base_uri_proto;
|
||||
const gchar *base_dir;
|
||||
|
||||
*on_this_computer = NULL;
|
||||
*on_the_web = NULL;
|
||||
@ -60,25 +59,29 @@ create_memo_sources (EShellBackend *shell_backend,
|
||||
shell = e_shell_backend_get_shell (shell_backend);
|
||||
shell_settings = e_shell_get_shell_settings (shell);
|
||||
|
||||
base_dir = e_shell_backend_get_data_dir (shell_backend);
|
||||
base_uri = g_build_filename (base_dir, "local", NULL);
|
||||
|
||||
base_uri_proto = g_filename_to_uri (base_uri, NULL, NULL);
|
||||
|
||||
groups = e_source_list_peek_groups (source_list);
|
||||
if (groups) {
|
||||
/* groups are already there, we need to search for things... */
|
||||
GSList *g;
|
||||
gchar *base_dir, *base_uri;
|
||||
|
||||
base_dir = g_build_filename (e_shell_backend_get_data_dir (shell_backend), "local", NULL);
|
||||
base_uri = g_filename_to_uri (base_dir, NULL, NULL);
|
||||
|
||||
for (g = groups; g; g = g->next) {
|
||||
|
||||
group = E_SOURCE_GROUP (g->data);
|
||||
|
||||
if (!*on_this_computer && !strcmp (base_uri_proto, e_source_group_peek_base_uri (group)))
|
||||
if (strcmp (base_uri, e_source_group_peek_base_uri (group)) == 0)
|
||||
e_source_group_set_base_uri (group, LOCAL_BASE_URI);
|
||||
|
||||
if (!*on_this_computer && !strcmp (LOCAL_BASE_URI, e_source_group_peek_base_uri (group)))
|
||||
*on_this_computer = g_object_ref (group);
|
||||
else if (!*on_the_web && !strcmp (WEBCAL_BASE_URI, e_source_group_peek_base_uri (group)))
|
||||
*on_the_web = g_object_ref (group);
|
||||
}
|
||||
|
||||
g_free (base_dir);
|
||||
g_free (base_uri);
|
||||
}
|
||||
|
||||
if (*on_this_computer) {
|
||||
@ -100,7 +103,7 @@ create_memo_sources (EShellBackend *shell_backend,
|
||||
}
|
||||
} else {
|
||||
/* create the local source group */
|
||||
group = e_source_group_new (_("On This Computer"), base_uri_proto);
|
||||
group = e_source_group_new (_("On This Computer"), LOCAL_BASE_URI);
|
||||
e_source_list_add_group (source_list, group, -1);
|
||||
|
||||
*on_this_computer = group;
|
||||
@ -148,9 +151,6 @@ create_memo_sources (EShellBackend *shell_backend,
|
||||
|
||||
*on_the_web = group;
|
||||
}
|
||||
|
||||
g_free (base_uri_proto);
|
||||
g_free (base_uri);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
|
||||
@ -43,6 +43,7 @@
|
||||
|
||||
#include "e-task-shell-backend.h"
|
||||
|
||||
#define LOCAL_BASE_URI "local:"
|
||||
#define WEBCAL_BASE_URI "webcal://"
|
||||
#define PERSONAL_RELATIVE_URI "system"
|
||||
|
||||
@ -57,8 +58,6 @@ create_task_sources (EShellBackend *shell_backend,
|
||||
EShellSettings *shell_settings;
|
||||
GSList *groups;
|
||||
ESourceGroup *group;
|
||||
gchar *base_uri, *base_uri_proto;
|
||||
const gchar *base_dir;
|
||||
|
||||
*on_this_computer = NULL;
|
||||
*on_the_web = NULL;
|
||||
@ -67,27 +66,31 @@ create_task_sources (EShellBackend *shell_backend,
|
||||
shell = e_shell_backend_get_shell (shell_backend);
|
||||
shell_settings = e_shell_get_shell_settings (shell);
|
||||
|
||||
base_dir = e_shell_backend_get_data_dir (shell_backend);
|
||||
base_uri = g_build_filename (base_dir, "local", NULL);
|
||||
|
||||
base_uri_proto = g_filename_to_uri (base_uri, NULL, NULL);
|
||||
|
||||
groups = e_source_list_peek_groups (source_list);
|
||||
if (groups) {
|
||||
/* groups are already there, we need to search for things... */
|
||||
GSList *g;
|
||||
gchar *base_dir, *base_uri;
|
||||
|
||||
base_dir = g_build_filename (e_shell_backend_get_data_dir (shell_backend), "local", NULL);
|
||||
base_uri = g_filename_to_uri (base_dir, NULL, NULL);
|
||||
|
||||
for (g = groups; g; g = g->next) {
|
||||
|
||||
group = E_SOURCE_GROUP (g->data);
|
||||
|
||||
if (!*on_this_computer && !strcmp (base_uri_proto,
|
||||
if (strcmp (base_uri, e_source_group_peek_base_uri (group)) == 0)
|
||||
e_source_group_set_base_uri (group, LOCAL_BASE_URI);
|
||||
|
||||
if (!*on_this_computer && !strcmp (LOCAL_BASE_URI,
|
||||
e_source_group_peek_base_uri (group)))
|
||||
*on_this_computer = g_object_ref (group);
|
||||
else if (!*on_the_web && !strcmp (WEBCAL_BASE_URI,
|
||||
e_source_group_peek_base_uri (group)))
|
||||
*on_the_web = g_object_ref (group);
|
||||
}
|
||||
|
||||
g_free (base_dir);
|
||||
g_free (base_uri);
|
||||
}
|
||||
|
||||
if (*on_this_computer) {
|
||||
@ -109,7 +112,7 @@ create_task_sources (EShellBackend *shell_backend,
|
||||
}
|
||||
} else {
|
||||
/* create the local source group */
|
||||
group = e_source_group_new (_("On This Computer"), base_uri_proto);
|
||||
group = e_source_group_new (_("On This Computer"), LOCAL_BASE_URI);
|
||||
e_source_list_add_group (source_list, group, -1);
|
||||
|
||||
*on_this_computer = group;
|
||||
@ -157,9 +160,6 @@ create_task_sources (EShellBackend *shell_backend,
|
||||
|
||||
*on_the_web = group;
|
||||
}
|
||||
|
||||
g_free (base_uri_proto);
|
||||
g_free (base_uri);
|
||||
}
|
||||
|
||||
gboolean
|
||||
|
||||
Reference in New Issue
Block a user