@ -56,6 +56,13 @@ typedef enum
ONLINE
} GncListType ;
typedef struct
{
guint inv_dialog_shown_bayes : 1 ;
guint inv_dialog_shown_nbayes : 1 ;
guint inv_dialog_shown_online : 1 ;
} GncInvFlags ;
typedef struct
{
GtkWidget * dialog ;
@ -80,6 +87,7 @@ typedef struct
GtkWidget * expand_button ;
GtkWidget * collapse_button ;
GtkWidget * remove_button ;
GncInvFlags inv_dialog_shown ;
} ImapDialog ;
@ -371,6 +379,13 @@ gnc_imap_invalid_maps_dialog (ImapDialog *imap_dialog)
else
{
gtk_widget_show ( imap_dialog - > remove_button ) ;
if ( imap_dialog - > type = = BAYES )
imap_dialog - > inv_dialog_shown . inv_dialog_shown_bayes = TRUE ;
if ( imap_dialog - > type = = NBAYES )
imap_dialog - > inv_dialog_shown . inv_dialog_shown_nbayes = TRUE ;
if ( imap_dialog - > type = = ONLINE )
imap_dialog - > inv_dialog_shown . inv_dialog_shown_online = TRUE ;
}
g_free ( message ) ;
g_free ( message2 ) ;
@ -378,6 +393,24 @@ gnc_imap_invalid_maps_dialog (ImapDialog *imap_dialog)
}
}
static void
gnc_imap_invalid_maps ( ImapDialog * imap_dialog )
{
gboolean inv_dialog_shown = FALSE ;
if ( ( imap_dialog - > type = = BAYES ) & & ( imap_dialog - > inv_dialog_shown . inv_dialog_shown_bayes ) )
inv_dialog_shown = TRUE ;
if ( ( imap_dialog - > type = = NBAYES ) & & ( imap_dialog - > inv_dialog_shown . inv_dialog_shown_nbayes ) )
inv_dialog_shown = TRUE ;
if ( ( imap_dialog - > type = = ONLINE ) & & ( imap_dialog - > inv_dialog_shown . inv_dialog_shown_online ) )
inv_dialog_shown = TRUE ;
if ( ! inv_dialog_shown )
gnc_imap_invalid_maps_dialog ( imap_dialog ) ;
}
void
gnc_imap_dialog_response_cb ( GtkDialog * dialog , gint response_id , gpointer user_data )
{
@ -519,9 +552,22 @@ list_type_selected_cb (GtkToggleButton* button, ImapDialog *imap_dialog)
// Lets do this only on change of list type
if ( type ! = imap_dialog - > type )
{
gboolean inv_dialog_shown = FALSE ;
imap_dialog - > type = type ;
get_account_info ( imap_dialog ) ;
gnc_imap_invalid_maps_dialog ( imap_dialog ) ;
if ( ( imap_dialog - > type = = BAYES ) & & ( imap_dialog - > inv_dialog_shown . inv_dialog_shown_bayes ) )
inv_dialog_shown = TRUE ;
if ( ( imap_dialog - > type = = NBAYES ) & & ( imap_dialog - > inv_dialog_shown . inv_dialog_shown_nbayes ) )
inv_dialog_shown = TRUE ;
if ( ( imap_dialog - > type = = ONLINE ) & & ( imap_dialog - > inv_dialog_shown . inv_dialog_shown_online ) )
inv_dialog_shown = TRUE ;
if ( ! inv_dialog_shown )
gnc_imap_invalid_maps_dialog ( imap_dialog ) ;
}
}