Only show invalid mappings dialog once

When you select the type of information to display, the invalid mapping
dialog is shown if necessary on each occasion so this commit changes
that to show it once and then you can use the added button.
This commit is contained in:
Robert Fewell 2020-03-01 12:34:19 +00:00
parent 9fed4b464f
commit 41af84b937

View File

@ -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);
}
}