/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ /* Author : Bertrand.Guiheneuf@aful.org */ /* A simple and very dirty hack written to test (and perhaps demonstrate) Camel */ #include #include #include "camel-folder.h" #include "camel-mh-folder.h" #include "camel-mh-store.h" #include "camel.h" static GladeXML *xml; static void add_mail_store (const gchar *store_url); static void show_folder_messages (CamelFolder *folder); void mailbox_row_selected (GtkCTree *ctree, GList *node, gint column, gpointer user_data) { GtkCTreeNode *mailbox_node = GTK_CTREE_NODE (node); CamelFolder *folder; const gchar *mailbox_name; folder = gtk_ctree_node_get_row_data (ctree, mailbox_node); if (folder && IS_CAMEL_FOLDER (folder)) { mailbox_name = camel_folder_get_name (folder); printf ("Mailbox name : %s\n", mailbox_name); show_folder_messages (folder); } else { printf ("Node is a store\n"); } } static void message_destroy_notify (gpointer data) { CamelMimeMessage *message = CAMEL_MIME_MESSAGE (data); gtk_object_unref (GTK_OBJECT (message)); } static void show_folder_messages (CamelFolder *folder) { GtkWidget *message_clist; gint folder_message_count; CamelMimeMessage *message; gint i; gchar *clist_row_text[3]; const char *sent_date, *subject, *sender; gint current_row; message_clist = glade_xml_get_widget (xml, "message-clist"); /* clear old message list */ gtk_clist_clear (GTK_CLIST (message_clist)); folder_message_count = camel_folder_get_message_count (folder); for (i=0; idata; new_folder = camel_store_get_folder (store, subfolder_list->data); new_folder_node = gtk_ctree_insert_node (GTK_CTREE (mailbox_and_store_tree), new_store_node, NULL, new_tree_text, 0, NULL, NULL, NULL, NULL, FALSE, FALSE); gtk_ctree_node_set_row_data (GTK_CTREE (mailbox_and_store_tree), new_folder_node, (gpointer)new_folder); subfolder_list = subfolder_list->next; } } /* ----- */ void on_exit_activate (GtkWidget *widget, void *data) { gtk_main_quit (); } void on_about_activate (GtkWidget *widget, void *data) { GtkWidget *about_widget; about_widget = glade_xml_get_widget (xml, "about_widget"); gtk_widget_show (about_widget); } void on_new_store_activate (GtkWidget *widget, void *data) { GtkWidget *new_store_dialog; GtkWidget *new_store_gnome_entry; GtkWidget *new_store_entry; gchar *url_text; gint pressed_button; new_store_dialog = glade_xml_get_widget (xml, "new_store_dialog"); pressed_button = gnome_dialog_run (GNOME_DIALOG (new_store_dialog)); if ((pressed_button != 0) && (pressed_button != 1)) return; new_store_gnome_entry = glade_xml_get_widget (xml, "new-store-entry"); new_store_entry = gnome_entry_gtk_entry (GNOME_ENTRY (new_store_gnome_entry)); url_text = gtk_entry_get_text (GTK_ENTRY (new_store_entry)); if (url_text) add_mail_store (url_text); } int main(int argc, char *argv[]) { gnome_init ("store_listing", "1.0", argc, argv); glade_gnome_init (); camel_init (); xml = glade_xml_new ("store_listing.glade", NULL); if (xml) glade_xml_signal_autoconnect (xml); gtk_main (); return 0; }