2010-01-23 [pawel] 3.7.4cvs10
[claws.git] / src / addressbook.c
index a54968114c9b9dda968615a3322d5e6dbd7402ed..f9161ec6900e29e66c37943b3cc839a80a8f4881 100644 (file)
@@ -665,7 +665,6 @@ void addressbook_destroy( void ) {
 void addressbook_set_target_compose(Compose *target)
 {
        addrbook.target_compose = target;
-       addressbook_button_set_sensitive();
 }
 
 Compose *addressbook_get_target_compose(void)
@@ -710,7 +709,7 @@ static gboolean key_pressed(GtkWidget *widget, GdkEventKey *event, gpointer data
 static void addressbook_size_allocate_cb(GtkWidget *widget,
                                         GtkAllocation *allocation)
 {
-       g_return_if_fail(allocation != NULL);
+       cm_return_if_fail(allocation != NULL);
 
        prefs_common.addressbookwin_width = allocation->width;
        prefs_common.addressbookwin_height = allocation->height;
@@ -1409,25 +1408,6 @@ static void addressbook_ds_show_message( AddressDataSource *ds ) {
        addressbook_status_show( addressbook_msgbuf );
 }
 
-static void addressbook_button_set_sensitive(void)
-{
-       gboolean to_sens  = FALSE;
-       gboolean cc_sens  = FALSE;
-       gboolean bcc_sens = FALSE;
-
-       if (!addrbook.window) return;
-
-       if (addrbook.target_compose) {
-               to_sens = TRUE;
-               cc_sens = TRUE;
-               bcc_sens = TRUE;
-       }
-
-       gtk_widget_set_sensitive(addrbook.to_btn, to_sens);
-       gtk_widget_set_sensitive(addrbook.cc_btn, cc_sens);
-       gtk_widget_set_sensitive(addrbook.bcc_btn, bcc_sens);
-}
-
 static void addressbook_edit_clicked(GtkButton *button, gpointer data)
 {
        addressbook_edit_address_cb(NULL, NULL);
@@ -1459,7 +1439,7 @@ static void addressbook_del_clicked(GtkButton *button, gpointer data)
        gboolean refreshList = FALSE;
        
        pobj = gtk_cmctree_node_get_row_data(ctree, addrbook.opened );
-       g_return_if_fail(pobj != NULL);
+       cm_return_if_fail(pobj != NULL);
 
        /* Test whether anything selected for deletion */
        nodeList = addrbook.listSelected;
@@ -1766,7 +1746,7 @@ static void addressbook_to_clicked(GtkButton *button, gpointer data)
        addr = (char *)gtk_entry_get_text( GTK_ENTRY( addrbook.entry) );
        if ( addr ) {
                compose_entry_append(
-                       compose, addr, (ComposeEntryType)data );
+                       compose, addr, (ComposeEntryType)data , PREF_NONE);
        }
 
        /* Select from address list */
@@ -1781,7 +1761,7 @@ static void addressbook_to_clicked(GtkButton *button, gpointer data)
                            aio->type == ADDR_ITEM_EMAIL ) {
                                addr = addressbook_format_address( aio );
                                compose_entry_append(
-                                       compose, addr, (ComposeEntryType) data );
+                                       compose, addr, (ComposeEntryType) data, PREF_NONE );
                                g_free( addr );
                        }
                        else if( aio->type == ADDR_ITEM_GROUP ) {
@@ -1793,7 +1773,7 @@ static void addressbook_to_clicked(GtkButton *button, gpointer data)
                                        addr = addressbook_format_address(
                                                        ( AddrItemObject * ) email );
                                        compose_entry_append(
-                                               compose, addr, (ComposeEntryType) data );
+                                               compose, addr, (ComposeEntryType) data, PREF_NONE );
                                        g_free( addr );
                                        nodeMail = g_list_next( nodeMail );
                                }
@@ -1813,7 +1793,7 @@ static void addressbook_to_clicked(GtkButton *button, gpointer data)
                                addr = addressbook_format_address(
                                                ( AddrItemObject * ) email );
                                compose_entry_append(
-                                       compose, addr, (ComposeEntryType) data );
+                                       compose, addr, (ComposeEntryType) data, PREF_NONE );
                                g_free( addr );
                                nodeMail = g_list_next( nodeMail );
                        }
@@ -2134,6 +2114,11 @@ static void addressbook_list_menu_setup( void ) {
        gtk_widget_set_sensitive( addrbook.edit_btn, canEdit );
        gtk_widget_set_sensitive( addrbook.del_btn, canDelete );
 
+       if (addrbook.target_compose) {
+               gtk_widget_set_sensitive(addrbook.to_btn, obj ? TRUE : FALSE);  
+               gtk_widget_set_sensitive(addrbook.cc_btn, obj ? TRUE : FALSE);
+               gtk_widget_set_sensitive(addrbook.bcc_btn, obj ? TRUE : FALSE);
+       }
 #ifdef USE_LDAP
        cm_menu_set_sensitive_full( addrbook.ui_manager, "Popups/ABListPopup/BrowseEntry",    canBrowse );
 #endif
@@ -2557,8 +2542,6 @@ static gboolean addressbook_tree_button_pressed(GtkWidget *ctree,
 
        if (obj->type == ADDR_INTERFACE) {
                AdapterInterface *adapter = ADAPTER_INTERFACE(obj);
-               if( !adapter )
-                       goto just_set_sens;
                iface = adapter->interface;
                if( !iface )
                        goto just_set_sens;
@@ -2904,7 +2887,7 @@ static void addressbook_treenode_delete_cb(GtkAction *action, gpointer data)
        if( GTK_CMCTREE_ROW(node)->level == 1 ) return;
 
        obj = gtk_cmctree_node_get_row_data( ctree, node );
-       g_return_if_fail(obj != NULL);
+       cm_return_if_fail(obj != NULL);
 
        if( obj->type == ADDR_DATASOURCE ) {
                ads = ADAPTER_DSOURCE(obj);
@@ -3216,7 +3199,8 @@ static void addressbook_new_address_cb( GtkAction *action, gpointer data ) {
 
                                pobj = gtk_cmctree_node_get_row_data(GTK_CMCTREE(addrbook.ctree), addrbook.treeSelected);
                                ds = addressbook_find_datasource( GTK_CMCTREE_NODE(addrbook.treeSelected) );
-                               abf = ds->rawDataSource;
+                               if (ds)
+                                       abf = ds->rawDataSource;
                        }
 #endif
                        person = addressbook_edit_person( abf, folder, NULL, FALSE,
@@ -3224,7 +3208,7 @@ static void addressbook_new_address_cb( GtkAction *action, gpointer data ) {
                                                                  addressbook_new_address_from_book_post_cb,
                                                                  TRUE );
 #ifdef USE_LDAP
-                       if (abf && abf->type == ADDR_IF_LDAP) {
+                       if (ds && abf && abf->type == ADDR_IF_LDAP) {
                                LdapServer *server = ds->rawDataSource;
                                ldapsvr_set_modified(server, TRUE);
                                ldapsvr_update_book(server, NULL);
@@ -3266,7 +3250,8 @@ static void addressbook_new_address_cb( GtkAction *action, gpointer data ) {
                                return;
                        pobj = gtk_cmctree_node_get_row_data(GTK_CMCTREE(addrbook.ctree), addrbook.treeSelected);
                        ds = addressbook_find_datasource( GTK_CMCTREE_NODE(addrbook.treeSelected) );
-                       abf = ds->rawDataSource;
+                       if (ds)
+                               abf = ds->rawDataSource;
                }
 #endif
                person = addressbook_edit_person( abf, folder, NULL, FALSE,
@@ -3274,7 +3259,7 @@ static void addressbook_new_address_cb( GtkAction *action, gpointer data ) {
                                                          addressbook_new_address_from_folder_post_cb,
                                                          TRUE );
 #ifdef USE_LDAP
-               if (abf && abf->type == ADDR_IF_LDAP) {
+               if (ds && abf && abf->type == ADDR_IF_LDAP) {
                        LdapServer *server = ds->rawDataSource;
                        ldapsvr_set_modified(server, TRUE);
                        ldapsvr_update_book(server, NULL);
@@ -3417,7 +3402,7 @@ static void addressbook_edit_address( gpointer data, guint action, GtkWidget *wi
 
        if( addrbook.listSelected == NULL ) return;
        obj = gtk_cmctree_node_get_row_data( clist, addrbook.listSelected );
-       g_return_if_fail(obj != NULL);
+       cm_return_if_fail(obj != NULL);
 
                ctree = GTK_CMCTREE( addrbook.ctree );
        pobj = gtk_cmctree_node_get_row_data( ctree, addrbook.treeSelected );
@@ -3844,7 +3829,7 @@ static AddressDataSource *addressbook_find_datasource( GtkCMCTreeNode *node ) {
        AddressDataSource *ds = NULL;
        AddressObject *ao;
 
-       g_return_val_if_fail(addrbook.ctree != NULL, NULL);
+       cm_return_val_if_fail(addrbook.ctree != NULL, NULL);
 
        while( node ) {
                if( GTK_CMCTREE_ROW(node)->level < 2 ) return NULL;
@@ -4228,11 +4213,11 @@ static GtkCMCTreeNode *addressbook_add_object(GtkCMCTreeNode *node,
        AddressObjectType otype;
        AddressTypeControlItem *atci = NULL;
 
-       g_return_val_if_fail(node != NULL, NULL);
-       g_return_val_if_fail(obj  != NULL, NULL);
+       cm_return_val_if_fail(node != NULL, NULL);
+       cm_return_val_if_fail(obj  != NULL, NULL);
 
        pobj = gtk_cmctree_node_get_row_data(ctree, node);
-       g_return_val_if_fail(pobj != NULL, NULL);
+       cm_return_val_if_fail(pobj != NULL, NULL);
 
        /* Determine object type to be displayed */
        if( obj->type == ADDR_DATASOURCE ) {
@@ -4325,14 +4310,18 @@ static GtkCMCTreeNode *addressbook_node_add_folder(
        ItemFolder *rootFolder;
 
        /* Only visible folders */
-       if( itemFolder->isHidden ) return NULL;
+       if( itemFolder == NULL || itemFolder->isHidden ) 
+               return NULL;
 
-       if( ds == NULL ) return NULL;
-       if( node == NULL || itemFolder == NULL ) return NULL;
+       if( ds == NULL ) 
+               return NULL;
+       if( node == NULL || itemFolder == NULL ) 
+               return NULL;
 
        /* Determine object type */
        atci = addrbookctl_lookup( otype );
-       if( atci == NULL ) return NULL;
+       if( atci == NULL ) 
+               return NULL;
 
        rootFolder = addrindex_ds_get_root_folder( ds );
        if( itemFolder == rootFolder ) {
@@ -4718,7 +4707,7 @@ static void addressbook_browse_entry_cb( GtkAction *action, gpointer data)
                return;
 
        iface = ds->interface;
-       if(! iface->haveLibrary )
+       if(!iface || !iface->haveLibrary )
                return;
 
        person = NULL;
@@ -4784,17 +4773,28 @@ static void addrbookctl_build_icons( GtkWidget *window ) {
        AddressTypeControlItem *atci;
 
        /* Build icons */
-       g_object_unref(interfacexpm);
-       g_object_unref(folderxpm);
-       g_object_unref(folderopenxpm);
-       g_object_unref(groupxpm);
-       g_object_unref(vcardxpm);
-       g_object_unref(bookxpm);
-       g_object_unref(addressxpm);
-       g_object_unref(jpilotxpm);
-       g_object_unref(categoryxpm);
-       g_object_unref(ldapxpm);
-       g_object_unref(addrsearchxpm);
+       if (interfacexpm)
+               g_object_unref(interfacexpm);
+       if (folderxpm)
+               g_object_unref(folderxpm);
+       if (folderopenxpm)
+               g_object_unref(folderopenxpm);
+       if (groupxpm)
+               g_object_unref(groupxpm);
+       if (vcardxpm)
+               g_object_unref(vcardxpm);
+       if (bookxpm)
+               g_object_unref(bookxpm);
+       if (addressxpm)
+               g_object_unref(addressxpm);
+       if (jpilotxpm)
+               g_object_unref(jpilotxpm);
+       if (categoryxpm)
+               g_object_unref(categoryxpm);
+       if (ldapxpm)
+               g_object_unref(ldapxpm);
+       if (addrsearchxpm)
+               g_object_unref(addrsearchxpm);
        stock_pixbuf_gdk(window, STOCK_PIXMAP_INTERFACE, &interfacexpm );
        stock_pixbuf_gdk(window, STOCK_PIXMAP_DIR_CLOSE, &folderxpm);
        stock_pixbuf_gdk(window, STOCK_PIXMAP_DIR_OPEN, &folderopenxpm);
@@ -5162,7 +5162,7 @@ gchar *addressbook_folder_selection( const gchar *folderpath)
        ItemFolder *folder = NULL;
        gchar *path = NULL;
 
-       g_return_val_if_fail( folderpath != NULL, NULL);
+       cm_return_val_if_fail( folderpath != NULL, NULL);
 
        if ( addressbook_foldersel_selection( _addressIndex_, &book, &folder, folderpath )
                && book != NULL ) {