Add member physical_uri to ESummaryMailFolder.

Removed member name.  Renamed FolderStore.folders to
FolderStore.path_to_folder and added
FolderStore.physical_uri_to_folder.
(new_folder_cb): Set physical_uri member.
(update_folder_cb): Likewise.
(new_folder_cb): Pass physical_uri to
e_summary_mail_idle_get_info().  Also g_strdup() it since that's
what it expects.
(remove_folder_cb): Free physical_uri.
(mail_change_notify): Compare against folder->physical_uri, not
->path.
(e_summary_mail_reconfigure): Pass folder->physical_uri to
e_summary_mail_get_info, not ->path.
(e_summary_mail_uri_to_name): Removed.
(e_summary_folder_init_folder_store): Initialize path_to_folder
and physical_uri_to_folder.
(new_folder_cb): Add the folder to the physical_uri_to_folder hash
too.
(mail_change_notify): Use physical_uri_to_folder to figure out the
folder from the uri.
(e_summary_mail_reconfigure): Here as well.

svn path=/trunk/; revision=18239
This commit is contained in:
Ettore Perazzoli
2002-09-26 20:22:45 +00:00
parent 97cc462bb3
commit ec11be672d
3 changed files with 59 additions and 32 deletions

View File

@ -1,3 +1,35 @@
2002-09-26 Ettore Perazzoli <ettore@ximian.com>
[#28903]
* e-summary-mail.c: Add member physical_uri to ESummaryMailFolder.
Removed member name. Renamed FolderStore.folders to
FolderStore.path_to_folder and added
FolderStore.physical_uri_to_folder.
(new_folder_cb): Set physical_uri member.
(update_folder_cb): Likewise.
(new_folder_cb): Pass physical_uri to
e_summary_mail_idle_get_info(). Also g_strdup() it since that's
what it expects.
(remove_folder_cb): Free physical_uri.
(mail_change_notify): Compare against folder->physical_uri, not
->path.
(e_summary_mail_reconfigure): Pass folder->physical_uri to
e_summary_mail_get_info, not ->path.
(e_summary_mail_uri_to_name): Removed.
(e_summary_folder_init_folder_store): Initialize path_to_folder
and physical_uri_to_folder.
(new_folder_cb): Add the folder to the physical_uri_to_folder hash
too.
(mail_change_notify): Use physical_uri_to_folder to figure out the
folder from the uri.
(e_summary_mail_reconfigure): Here as well.
2002-09-26 Ettore Perazzoli <ettore@ximian.com>
* e-summary-preferences.c (vector_from_folder_list): Remove
debugging message.
2002-09-26 Ettore Perazzoli <ettore@ximian.com>
* e-summary-preferences.c (folder_list_from_vector): Do some

View File

@ -55,7 +55,9 @@ typedef struct _FolderStore {
EvolutionStorageListener *storage_listener;
GSList *storage_list;
GHashTable *folders;
GHashTable *path_to_folder;
GHashTable *physical_uri_to_folder;
GList *shown;
} FolderStore;
@ -87,9 +89,9 @@ typedef struct _StorageInfo {
} StorageInfo;
typedef struct _ESummaryMailFolder {
char *name;
char *path;
char *uri;
char *physical_uri;
int count;
int unread;
@ -125,7 +127,7 @@ folder_gen_html (ESummary *summary,
{
char *str, *pretty_name;
pretty_name = make_pretty_foldername (summary, folder->name);
pretty_name = make_pretty_foldername (summary, folder->path);
str = g_strdup_printf ("<tr><td><a href=\"%s\"><pre>%s</pre></a></td><td align=\"Left\"><pre>%d/%d</pre></td></tr>",
folder->uri, pretty_name, folder->unread, folder->count);
g_print ("%s\n", folder->uri);
@ -225,20 +227,24 @@ new_folder_cb (EvolutionStorageListener *listener,
ESummaryMailFolder *mail_folder;
GList *p;
if (strcmp (folder->type, "mail") != 0) {
if (strcmp (folder->type, "mail") != 0)
return;
if (strncmp (folder->evolutionUri, "evolution:", 10) != 0)
return;
}
mail_folder = g_new (ESummaryMailFolder, 1);
mail_folder->si = si;
mail_folder->path = g_strdup (folder->physicalUri);
mail_folder->uri = g_strdup (folder->evolutionUri);
mail_folder->name = g_strdup (path);
mail_folder->physical_uri = g_strdup (folder->physicalUri);
mail_folder->path = g_strdup (path);
mail_folder->count = -1;
mail_folder->unread = -1;
mail_folder->init = FALSE;
g_hash_table_insert (folder_store->folders, mail_folder->path, mail_folder);
g_hash_table_insert (folder_store->path_to_folder, mail_folder->path, mail_folder);
g_hash_table_insert (folder_store->physical_uri_to_folder, mail_folder->physical_uri, mail_folder);
si->folders = g_list_prepend (si->folders, mail_folder);
global_preferences = e_summary_preferences_get_global ();
@ -248,7 +254,7 @@ new_folder_cb (EvolutionStorageListener *listener,
if (strcmp (f->physical_uri, folder->physicalUri) == 0) {
folder_store->shown = g_list_append (folder_store->shown, mail_folder);
g_idle_add (e_summary_mail_idle_get_info,
g_strdup (mail_folder->path));
g_strdup (mail_folder->physical_uri));
}
}
}
@ -262,14 +268,15 @@ update_folder_cb (EvolutionStorageListener *listener,
ESummaryMailFolder *mail_folder;
GList *p;
mail_folder = g_hash_table_lookup (folder_store->folders, path);
mail_folder = g_hash_table_lookup (folder_store->path_to_folder, path);
if (mail_folder == NULL) {
return;
}
for (p = folder_store->shown; p; p = p->next) {
if (p->data == mail_folder) {
g_idle_add (e_summary_mail_idle_get_info, mail_folder->path);
g_idle_add (e_summary_mail_idle_get_info,
g_strdup (mail_folder->physical_uri));
return;
}
}
@ -283,7 +290,7 @@ remove_folder_cb (EvolutionStorageListener *listener,
ESummaryMailFolder *mail_folder;
GList *p;
mail_folder = g_hash_table_lookup (folder_store->folders, path);
mail_folder = g_hash_table_lookup (folder_store->path_to_folder, path);
if (mail_folder == NULL) {
return;
}
@ -297,10 +304,10 @@ remove_folder_cb (EvolutionStorageListener *listener,
}
}
g_hash_table_remove (folder_store->folders, path);
g_free (mail_folder->name);
g_hash_table_remove (folder_store->path_to_folder, path);
g_free (mail_folder->path);
g_free (mail_folder->uri);
g_free (mail_folder->physical_uri);
g_free (mail_folder);
}
@ -317,7 +324,7 @@ mail_change_notify (BonoboListener *listener,
GList *p;
count = arg->_value;
folder = g_hash_table_lookup (folder_store->folders, count->path);
folder = g_hash_table_lookup (folder_store->physical_uri_to_folder, count->path);
if (folder == NULL) {
return;
@ -331,7 +338,7 @@ mail_change_notify (BonoboListener *listener,
global_preferences = e_summary_preferences_get_global ();
for (p = global_preferences->display_folders; p; p = p->next) {
ESummaryPrefsFolder *f = p->data;
if (strcmp (f->physical_uri, folder->path) == 0) {
if (strcmp (f->physical_uri, folder->physical_uri) == 0) {
e_summary_redraw_all (); /* All summaries should be redrawn, not just this one */
return;
}
@ -533,10 +540,10 @@ e_summary_mail_reconfigure (void)
}
#endif
uri = g_strdup (f->physical_uri);
folder = g_hash_table_lookup (folder_store->folders, uri);
folder = g_hash_table_lookup (folder_store->physical_uri_to_folder, uri);
if (folder != NULL) {
if (folder->init == FALSE) {
e_summary_mail_get_info (folder->path);
e_summary_mail_get_info (folder->physical_uri);
}
folder_store->shown = g_list_append (folder_store->shown, folder);
}
@ -761,19 +768,7 @@ e_summary_mail_fill_list (ESummaryTable *est)
}
}
#endif
const char *
e_summary_mail_uri_to_name (const char *uri)
{
ESummaryMailFolder *folder;
folder = g_hash_table_lookup (folder_store->folders, uri);
if (folder == NULL) {
return NULL;
} else {
return folder->name;
}
}
#if 0
static void
free_folder (gpointer key,
@ -919,7 +914,8 @@ e_summary_folder_init_folder_store (GNOME_Evolution_Shell shell)
folder_store->corba_listener = bonobo_object_corba_objref (BONOBO_OBJECT (listener));
/* Create a hash table for the folders */
folder_store->folders = g_hash_table_new (g_str_hash, g_str_equal);
folder_store->path_to_folder = g_hash_table_new (g_str_hash, g_str_equal);
folder_store->physical_uri_to_folder = g_hash_table_new (g_str_hash, g_str_equal);
/* Wait for the mailer to tell us we're ready to register */
lazy_register_storages ();

View File

@ -231,7 +231,6 @@ vector_from_folder_list (GList *flist)
vector = string->str;
g_string_free (string, FALSE);
g_print ("vector: %s\n", vector);
return vector;
}