2001-04-21
+ * added option to warn about queued messages on exit [sergey]:
+
+ * src/compose.c: compose_queue(): call folder_item_scan()
+ and folderview_update_item() after queueing.
+ * src/folderview.c: folderview_update_node(): draw the queue
+ folder in bold font if there are queued messages.
+ * src/mainwindow.c: queued_messages(): new function.
+ app_exit_cb(): display warning if there are queued messages
+ if warn_queued_on_exit is set.
+ * prefs_common.[ch]: add warn_queued_on_exit option.
+
* enhanced GnuPG key selection support [sergey]:
* src/select-keys.c: updated to newer version from Win32
}
g_free(queue_path);
+ folder_item_scan(queue);
+ folderview_update_item(queue, TRUE);
+
return 0;
}
style = gtk_style_copy(prev_style);
if (style) {
- /* if unread messages exist, print with bold font */
- if (item->unread > 0 && boldfont)
+ gboolean use_bold, use_color;
+
+ if (item->stype == F_QUEUE) {
+ /* highlight queue folder if there are any messages */
+ use_bold = use_color = (item->total > 0);
+ } else {
+ /* if unread messages exist, print with bold font */
+ use_bold = (item->unread > 0);
+ /* if new messages exist, print with colored letter */
+ use_color = (item->new > 0);
+ }
+
+ if (use_bold && boldfont)
style->font = boldfont;
else
style->font = ctree_style->font;
- /* if new messages exist, print with colored letter */
- if (item->new > 0) {
+ if (use_color) {
style->fg[GTK_STATE_NORMAL] = folderview->color_new;
style->fg[GTK_STATE_SELECTED] = folderview->color_new;
} else {
summary_print(mainwin->summaryview);
}
+static gint queued_messages(void)
+{
+ FolderItem *queue = folder_get_default_queue();
+ folder_item_scan(queue);
+ return queue->total;
+}
+
static void app_exit_cb(MainWindow *mainwin, guint action, GtkWidget *widget)
{
if (prefs_common.confirm_on_exit) {
return;
}
+ if (prefs_common.warn_queued_on_exit && queued_messages() > 0) {
+ if (alertpanel(_("Queued messages"),
+ _("Some unsent messages are queued. Exit now?"),
+ _("OK"), _("Cancel"), NULL) != G_ALERTDEFAULT)
+ return;
+ }
+
manage_window_focus_in(mainwin->window, NULL, NULL);
app_will_exit(widget, mainwin);
}
GtkWidget *checkbtn_confonexit;
GtkWidget *checkbtn_cleanonexit;
GtkWidget *checkbtn_askonclean;
+ GtkWidget *checkbtn_warnqueued;
GtkWidget *checkbtn_addaddrbyclick;
} interface;
{"ask_on_cleaning", "TRUE", &prefs_common.ask_on_clean, P_BOOL,
&interface.checkbtn_askonclean,
prefs_set_data_from_toggle, prefs_set_toggle},
+ {"warn_queued_on_exit", "TRUE", &prefs_common.warn_queued_on_exit,
+ P_BOOL, &interface.checkbtn_warnqueued,
+ prefs_set_data_from_toggle, prefs_set_toggle},
/* Other */
{"uri_open_command", "netscape -remote 'openURL(%s,raise)'",
GtkWidget *checkbtn_confonexit;
GtkWidget *checkbtn_cleanonexit;
GtkWidget *checkbtn_askonclean;
+ GtkWidget *checkbtn_warnqueued;
vbox1 = gtk_vbox_new (FALSE, VSPACING);
gtk_widget_show (vbox1);
_("Ask before emptying"));
SET_TOGGLE_SENSITIVITY (checkbtn_cleanonexit, checkbtn_askonclean);
+ PACK_CHECK_BUTTON (vbox_exit, checkbtn_warnqueued,
+ _("Warn if there are queued messages on exit"));
+
interface.checkbtn_emacs = checkbtn_emacs;
interface.checkbtn_openunread = checkbtn_openunread;
interface.checkbtn_openinbox = checkbtn_openinbox;
interface.checkbtn_confonexit = checkbtn_confonexit;
interface.checkbtn_cleanonexit = checkbtn_cleanonexit;
interface.checkbtn_askonclean = checkbtn_askonclean;
+ interface.checkbtn_warnqueued = checkbtn_warnqueued;
}
static void prefs_other_create(void)
gboolean confirm_on_exit;
gboolean clean_on_exit;
gboolean ask_on_clean;
+ gboolean warn_queued_on_exit;
/* Other */
gchar *uri_cmd;