Changeset 29

Show
Ignore:
Timestamp:
02/09/06 12:45:18
Author:
pvanhoof
Message:

SummaryWindow? stuff

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/libtinymailui/Makefile.am

    r19 r29  
    77libtinymailui_1_0_headers =             \ 
    88        tny-msg-header-list-model.h     \ 
    9         tny-account-tree-model.h 
     9        tny-account-tree-model.h        \ 
     10        tny-summary-window-iface.h 
    1011 
    1112libtinymailui_1_0_la_SOURCES =          \ 
    1213        $(libtinymailui_1_0_headers)    \ 
    1314        tny-msg-header-list-model.c     \ 
    14         tny-account-tree-model.c 
     15        tny-account-tree-model.c        \ 
     16        tny-summary-window-iface.c 
    1517 
    1618libtinymailui_1_0_la_LIBADD =           \ 
  • trunk/tinymail/tny-main.c

    r25 r29  
    2020#include <gtk/gtk.h> 
    2121#include <tny-summary-window.h> 
     22#include <tny-summary-window-iface.h> 
     23#include <tny-account-store-iface.h> 
     24#include <tny-account-store.h> 
    2225 
    2326int  
     
    3033 
    3134        window = GTK_WINDOW (tny_summary_window_new ()); 
     35 
     36        tny_summary_window_iface_set_account_store (TNY_SUMMARY_WINDOW_IFACE (window), 
     37                TNY_ACCOUNT_STORE_IFACE (tny_account_store_get_instance ())); 
     38 
    3239        gtk_widget_show (GTK_WIDGET (window)); 
    3340 
  • trunk/tinymail/tny-summary-window.c

    r28 r29  
    3333 
    3434#include <tny-summary-window.h> 
     35#include <tny-summary-window-iface.h> 
    3536 
    3637static GObjectClass *parent_class = NULL; 
    3738 
    3839 
     40typedef struct _TnySummaryWindowPriv TnySummaryWindowPriv; 
     41 
     42struct _TnySummaryWindowPriv 
     43{ 
     44        TnyAccountStoreIface *account_store; 
     45        GtkTreeView *mailbox_view, *header_view; 
     46}; 
     47 
     48#define TNY_SUMMARY_WINDOW_GET_PRIVATE(o)       \ 
     49        (G_TYPE_INSTANCE_GET_PRIVATE ((o), TNY_SUMMARY_WINDOW_TYPE, TnySummaryWindowPriv)) 
     50 
     51static void  
     52reload_accounts (TnySummaryWindowPriv *priv) 
     53{ 
     54        TnyAccountStoreIface *account_store = priv->account_store; 
     55        GtkTreeModel *mailbox_model = GTK_TREE_MODEL (tny_account_tree_model_new ()); 
     56        const GList* accounts; 
     57 
     58        accounts = tny_account_store_iface_get_accounts (account_store); 
     59         
     60        while (accounts) 
     61        { 
     62                TnyAccountIface *account = accounts->data; 
     63 
     64                tny_account_tree_model_add (TNY_ACCOUNT_TREE_MODEL  
     65                        (mailbox_model), account); 
     66 
     67                accounts = g_list_next (accounts); 
     68        } 
     69 
     70        gtk_tree_view_set_model (GTK_TREE_VIEW (priv->mailbox_view), mailbox_model); 
     71 
     72        return; 
     73} 
     74 
     75static void 
     76tny_summary_window_set_account_store (TnySummaryWindowIface *self, TnyAccountStoreIface *account_store) 
     77{ 
     78        TnySummaryWindowPriv *priv = TNY_SUMMARY_WINDOW_GET_PRIVATE (self); 
     79 
     80        if (priv->account_store) 
     81                g_object_unref (G_OBJECT (priv->account_store)); 
     82 
     83        g_object_ref (G_OBJECT (account_store)); 
     84 
     85        priv->account_store = account_store; 
     86 
     87        reload_accounts (priv); 
     88 
     89        return; 
     90} 
    3991 
    4092static void 
     
    180232{ 
    181233        TnySummaryWindow *self = (TnySummaryWindow *)instance; 
     234        TnySummaryWindowPriv *priv = TNY_SUMMARY_WINDOW_GET_PRIVATE (self); 
    182235        GtkWindow *window = GTK_WINDOW (self); 
     236 
     237 
    183238        GtkWidget *hbox; 
    184         GtkWidget *mailbox_view; 
    185         GtkWidget *header_view; 
    186239        GtkWidget *mailbox_sw; 
    187240        GtkWidget *header_sw; 
     
    191244        GtkTreeSelection *select; 
    192245        gint t = 0, i = 0; 
    193         const GList *accounts; 
    194  
    195         TnyAccountStoreIface *account_store = TNY_ACCOUNT_STORE_IFACE 
    196                 (tny_account_store_get_instance ()); 
    197246 
    198247        gtk_window_set_title (window, "Tinymail"); 
     
    212261                                        GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); 
    213262         
    214         header_view = gtk_tree_view_new (); 
    215         gtk_tree_view_set_rules_hint (GTK_TREE_VIEW (header_view), TRUE); 
    216         gtk_tree_view_set_fixed_height_mode (GTK_TREE_VIEW(header_view), TRUE); 
    217         mailbox_view = gtk_tree_view_new (); 
    218         gtk_tree_view_set_rules_hint (GTK_TREE_VIEW (mailbox_view), TRUE); 
    219          
    220         gtk_container_add (GTK_CONTAINER (header_sw), header_view); 
    221         gtk_container_add (GTK_CONTAINER (mailbox_sw), mailbox_view); 
     263        priv->header_view = GTK_TREE_VIEW (gtk_tree_view_new ()); 
     264 
     265        gtk_tree_view_set_rules_hint (GTK_TREE_VIEW (priv->header_view), TRUE); 
     266        gtk_tree_view_set_fixed_height_mode (GTK_TREE_VIEW(priv->header_view), TRUE); 
     267 
     268        priv->mailbox_view = GTK_TREE_VIEW (gtk_tree_view_new ()); 
     269        gtk_tree_view_set_rules_hint (GTK_TREE_VIEW (priv->mailbox_view), TRUE); 
     270         
     271        gtk_container_add (GTK_CONTAINER (header_sw), GTK_WIDGET (priv->header_view)); 
     272        gtk_container_add (GTK_CONTAINER (mailbox_sw), GTK_WIDGET (priv->mailbox_view)); 
    222273 
    223274        /* mailbox_view columns */ 
     
    225276        column = gtk_tree_view_column_new_with_attributes ("Folder", renderer, 
    226277                        "text", TNY_ACCOUNT_TREE_MODEL_NAME_COLUMN, NULL); 
    227         gtk_tree_view_append_column (GTK_TREE_VIEW(mailbox_view), column); 
     278        gtk_tree_view_append_column (GTK_TREE_VIEW(priv->mailbox_view), column); 
    228279 
    229280        renderer = gtk_cell_renderer_text_new (); 
    230281        column = gtk_tree_view_column_new_with_attributes ("Folder", renderer, 
    231282                        "text", TNY_ACCOUNT_TREE_MODEL_UNREAD_COLUMN, NULL); 
    232         gtk_tree_view_append_column (GTK_TREE_VIEW(mailbox_view), column); 
     283        gtk_tree_view_append_column (GTK_TREE_VIEW(priv->mailbox_view), column); 
    233284 
    234285        /* header_view columns */ 
     
    240291        gtk_tree_view_column_set_sizing (column, GTK_TREE_VIEW_COLUMN_FIXED); 
    241292        gtk_tree_view_column_set_fixed_width (column, 200); 
    242         gtk_tree_view_append_column (GTK_TREE_VIEW(header_view), column); 
     293 
     294        gtk_tree_view_append_column (GTK_TREE_VIEW(priv->header_view), column); 
    243295         
    244296        renderer = gtk_cell_renderer_text_new (); 
     
    248300        gtk_tree_view_column_set_sizing (column, GTK_TREE_VIEW_COLUMN_FIXED); 
    249301        gtk_tree_view_column_set_fixed_width (column, 200); 
    250         gtk_tree_view_append_column (GTK_TREE_VIEW(header_view), column); 
     302 
     303        gtk_tree_view_append_column (GTK_TREE_VIEW(priv->header_view), column); 
    251304 
    252305        renderer = gtk_cell_renderer_text_new (); 
     
    256309        gtk_tree_view_column_set_sizing (column, GTK_TREE_VIEW_COLUMN_FIXED); 
    257310        gtk_tree_view_column_set_fixed_width (column, 200); 
    258         gtk_tree_view_append_column (GTK_TREE_VIEW(header_view), column); 
    259  
    260         mailbox_model = GTK_TREE_MODEL (tny_account_tree_model_new ()); 
    261  
    262  
    263         accounts = tny_account_store_iface_get_accounts (account_store); 
    264          
    265         while (accounts) 
    266         { 
    267                 TnyAccountIface *account = accounts->data; 
    268  
    269                 tny_account_tree_model_add (TNY_ACCOUNT_TREE_MODEL  
    270                         (mailbox_model), account); 
    271  
    272                 accounts = g_list_next (accounts); 
    273         } 
    274  
    275         gtk_tree_view_set_model (GTK_TREE_VIEW (mailbox_view), mailbox_model); 
    276  
    277         select = gtk_tree_view_get_selection (GTK_TREE_VIEW (mailbox_view)); 
     311 
     312        gtk_tree_view_append_column (GTK_TREE_VIEW(priv->header_view), column); 
     313 
     314        select = gtk_tree_view_get_selection (GTK_TREE_VIEW (priv->mailbox_view)); 
     315 
    278316        gtk_tree_selection_set_mode (select, GTK_SELECTION_SINGLE); 
    279317        g_signal_connect (G_OBJECT (select), "changed", 
    280                 G_CALLBACK (on_mailbox_view_tree_selection_changed), header_view); 
    281  
    282  
    283         select = gtk_tree_view_get_selection (GTK_TREE_VIEW (header_view)); 
     318                G_CALLBACK (on_mailbox_view_tree_selection_changed), priv->header_view); 
     319 
     320        select = gtk_tree_view_get_selection (GTK_TREE_VIEW (priv->header_view)); 
    284321        gtk_tree_selection_set_mode (select, GTK_SELECTION_SINGLE); 
    285322        g_signal_connect (G_OBJECT (select), "changed", 
    286                 G_CALLBACK (on_header_view_tree_selection_changed), header_view); 
    287  
    288  
    289         g_signal_connect(G_OBJECT (header_view), "row-activated",  
    290                 G_CALLBACK (on_header_view_tree_row_activated), header_view); 
    291  
     323                G_CALLBACK (on_header_view_tree_selection_changed), priv->header_view); 
     324 
     325        g_signal_connect(G_OBJECT (priv->header_view), "row-activated",  
     326                G_CALLBACK (on_header_view_tree_row_activated), priv->header_view); 
    292327 
    293328        gtk_box_pack_start (GTK_BOX (hbox), mailbox_sw, FALSE, FALSE, 0); 
     
    311346} 
    312347 
     348static void 
     349tny_summary_window_iface_init (gpointer g_iface, gpointer iface_data) 
     350{ 
     351        TnySummaryWindowIfaceClass *klass = (TnySummaryWindowIfaceClass *)g_iface; 
     352 
     353        klass->set_account_store_func = tny_summary_window_set_account_store; 
     354 
     355        return; 
     356} 
    313357 
    314358static void  
     
    321365 
    322366        object_class->finalize = tny_summary_window_finalize; 
     367 
     368        g_type_class_add_private (object_class, sizeof (TnySummaryWindowPriv)); 
    323369 
    324370        return; 
     
    345391                }; 
    346392 
     393                static const GInterfaceInfo tny_summary_window_iface_info =  
     394                { 
     395                  (GInterfaceInitFunc) tny_summary_window_iface_init, /* interface_init */ 
     396                  NULL,         /* interface_finalize */ 
     397                  NULL          /* interface_data */ 
     398                }; 
     399 
    347400                type = g_type_register_static (GTK_TYPE_WINDOW, 
    348401                        "TnySummaryWindow", 
    349402                        &info, 0); 
    350403 
     404                g_type_add_interface_static (type, TNY_SUMMARY_WINDOW_IFACE_TYPE,  
     405                        &tny_summary_window_iface_info); 
     406 
    351407        } 
    352408 
  • trunk/tinymail/tny-summary-window.h

    r25 r29  
    4747}; 
    4848 
    49 GType               tny_summary_window_get_type       (void); 
    50 TnySummaryWindow*   tny_summary_window_new            (void); 
     49GType               tny_summary_window_get_type          (void); 
     50TnySummaryWindow*   tny_summary_window_new               (void); 
    5151 
    5252