typedef enum
{
- COMPOSE_CALL_ADVANCED_ACTION_MOVE_BEGINNING_OF_LINE,
+ COMPOSE_CALL_ADVANCED_ACTION_UNDEFINED = -1,
+ COMPOSE_CALL_ADVANCED_ACTION_MOVE_BEGINNING_OF_LINE = 0,
COMPOSE_CALL_ADVANCED_ACTION_MOVE_FORWARD_CHARACTER,
COMPOSE_CALL_ADVANCED_ACTION_MOVE_BACKWARD_CHARACTER,
COMPOSE_CALL_ADVANCED_ACTION_MOVE_FORWARD_WORD,
#define COMPOSE_DRAFT_TIMEOUT_UNSET -1
#define COMPOSE_DRAFT_TIMEOUT_FORBIDDEN -2
-static GdkColor default_to_bgcolor = {
+static GdkColor default_header_bgcolor = {
(gulong)0,
(gushort)0,
(gushort)0,
(gushort)0
};
-static GdkColor default_to_color = {
+static GdkColor default_header_color = {
(gulong)0,
(gushort)0,
(gushort)0,
ComposeMode mode,
gboolean batch);
-static void compose_entry_mark_default_to (Compose *compose,
+static void compose_entry_indicate (Compose *compose,
const gchar *address);
static Compose *compose_followup_and_reply_to (MsgInfo *msginfo,
ComposeQuoteMode quote_mode,
static void compose_check_forwards_go (GtkAction *action, gpointer data);
#endif
-static PrefsAccount *compose_guess_forward_account_from_msginfo (MsgInfo *msginfo);
+static PrefsAccount *compose_find_account (MsgInfo *msginfo);
static MsgInfo *compose_msginfo_new_from_compose(Compose *compose);
cm_return_val_if_fail(msginfo != NULL, NULL);
cm_return_val_if_fail(msginfo->folder != NULL, NULL);
- if (!account &&
- !(account = compose_guess_forward_account_from_msginfo
- (msginfo)))
+ if (!account && !(account = compose_find_account(msginfo)))
account = cur_account;
if (!prefs_common.forward_as_attachment)
/* guess account from first selected message */
if (!account &&
- !(account = compose_guess_forward_account_from_msginfo
- (msginfo_list->data)))
+ !(account = compose_find_account(msginfo_list->data)))
account = cur_account;
cm_return_val_if_fail(account != NULL, NULL);
while (*tmp == ' ' || *tmp == '\t')
tmp++;
compose_add_header_entry(compose, header, tmp, pref_type);
+ compose_entry_indicate(compose, tmp);
g_free(o_tmp);
continue;
}
while (*tmp == ' ' || *tmp == '\t')
tmp++;
compose_add_header_entry(compose, header, tmp, pref_type);
+ compose_entry_indicate(compose, tmp);
g_free(o_tmp);
}
}
-static void compose_entry_mark_default_to(Compose *compose, const gchar *mailto)
+static void compose_entry_indicate(Compose *compose, const gchar *mailto)
{
GSList *h_list;
GtkEntry *entry;
!g_utf8_collate(gtk_entry_get_text(entry), mailto)) {
gtk_widget_modify_base(
GTK_WIDGET(((ComposeHeaderEntry *)h_list->data)->entry),
- GTK_STATE_NORMAL, &default_to_bgcolor);
+ GTK_STATE_NORMAL, &default_header_bgcolor);
gtk_widget_modify_text(
GTK_WIDGET(((ComposeHeaderEntry *)h_list->data)->entry),
- GTK_STATE_NORMAL, &default_to_color);
+ GTK_STATE_NORMAL, &default_header_color);
}
}
}
case A_SEND:
compose_send_cb(NULL, compose);
break;
- case A_SENDL:
+ case A_SEND_LATER:
compose_send_later_cb(NULL, compose);
break;
case A_DRAFT:
if (respect_default_to && folder->prefs->enable_default_to) {
compose_entry_append(compose, folder->prefs->default_to,
COMPOSE_TO, PREF_FOLDER);
- compose_entry_mark_default_to(compose, folder->prefs->default_to);
+ compose_entry_indicate(compose, folder->prefs->default_to);
}
if (folder->prefs->enable_default_cc) {
compose_entry_append(compose, folder->prefs->default_cc,
COMPOSE_CC, PREF_FOLDER);
- compose_entry_mark_default_to(compose, folder->prefs->default_cc);
+ compose_entry_indicate(compose, folder->prefs->default_cc);
}
if (folder->prefs->enable_default_bcc) {
compose_entry_append(compose, folder->prefs->default_bcc,
COMPOSE_BCC, PREF_FOLDER);
- compose_entry_mark_default_to(compose, folder->prefs->default_bcc);
+ compose_entry_indicate(compose, folder->prefs->default_bcc);
}
if (folder->prefs->enable_default_replyto) {
compose_entry_append(compose, folder->prefs->default_replyto,
COMPOSE_REPLYTO, PREF_FOLDER);
- compose_entry_mark_default_to(compose, folder->prefs->default_replyto);
+ compose_entry_indicate(compose, folder->prefs->default_replyto);
}
}
compose_entry_append(compose,
msginfo->folder->prefs->default_reply_to,
COMPOSE_TO, PREF_FOLDER);
- compose_entry_mark_default_to(compose,
+ compose_entry_indicate(compose,
msginfo->folder->prefs->default_reply_to);
} else {
gchar *tmp1 = NULL;
}
if (!found_other) {
AlertValue aval;
+ gchar *text;
if (compose->batch) {
gtk_widget_show_all(compose->window);
}
+ text = g_strdup_printf(_("The only recipient is the default '%s' address. Send anyway?"),
+ prefs_common_translated_header_name("Cc"));
aval = alertpanel(_("Send"),
- _("The only recipient is the default CC address. Send anyway?"),
+ text,
GTK_STOCK_CANCEL, g_strconcat("+", _("_Send"), NULL), NULL);
+ g_free(text);
if (aval != G_ALERTALTERNATE)
return FALSE;
}
}
if (!found_other) {
AlertValue aval;
+ gchar *text;
if (compose->batch) {
gtk_widget_show_all(compose->window);
}
+ text = g_strdup_printf(_("The only recipient is the default '%s' address. Send anyway?"),
+ prefs_common_translated_header_name("Bcc"));
aval = alertpanel(_("Send"),
- _("The only recipient is the default BCC address. Send anyway?"),
+ text,
GTK_STOCK_CANCEL, g_strconcat("+", _("_Send"), NULL), NULL);
+ g_free(text);
if (aval != G_ALERTALTERNATE)
return FALSE;
}
cm_return_val_if_fail(account != NULL, NULL);
+ gtkut_convert_int_to_gdk_color(prefs_common.default_header_bgcolor,
+ &default_header_bgcolor);
+ gtkut_convert_int_to_gdk_color(prefs_common.default_header_color,
+ &default_header_color);
+
debug_print("Creating compose window...\n");
compose = g_new0(Compose, 1);
gtk_widget_show(window);
}
- gtkut_convert_int_to_gdk_color(prefs_common.default_to_bgcolor,
- &default_to_bgcolor);
- gtkut_convert_int_to_gdk_color(prefs_common.default_to_color,
- &default_to_color);
-
return compose;
}
ac->address);
gtk_entry_set_text(GTK_ENTRY(from_name), from);
}
+ if (cur_account != compose->account) {
+ gtk_widget_modify_base(
+ GTK_WIDGET(from_name),
+ GTK_STATE_NORMAL, &default_header_bgcolor);
+ gtk_widget_modify_text(
+ GTK_WIDGET(from_name),
+ GTK_STATE_NORMAL, &default_header_color);
+ }
}
COMBOBOX_ADD(menu, name, ac->account_id);
g_free(name);
#endif
}
+static void compose_template_apply_fields_error(const gchar *header)
+{
+ gchar *tr;
+ gchar *text;
+
+ tr = g_strdup(C_("'%s' stands for a header name",
+ "Template '%s' format error."));
+ text = g_strdup_printf(tr, prefs_common_translated_header_name(header));
+ alertpanel_error(text);
+
+ g_free(text);
+ g_free(tr);
+}
+
static void compose_template_apply_fields(Compose *compose, Template *tmpl)
{
MsgInfo* dummyinfo = NULL;
buf = quote_fmt_get_buffer();
if (buf == NULL) {
- alertpanel_error(_("Template From format error."));
+ compose_template_apply_fields_error("From");
} else {
gtk_entry_set_text(GTK_ENTRY(compose->from_name), buf);
}
buf = quote_fmt_get_buffer();
if (buf == NULL) {
- alertpanel_error(_("Template To format error."));
+ compose_template_apply_fields_error("To");
} else {
compose_entry_append(compose, buf, COMPOSE_TO, PREF_TEMPLATE);
}
buf = quote_fmt_get_buffer();
if (buf == NULL) {
- alertpanel_error(_("Template Cc format error."));
+ compose_template_apply_fields_error("Cc");
} else {
compose_entry_append(compose, buf, COMPOSE_CC, PREF_TEMPLATE);
}
buf = quote_fmt_get_buffer();
if (buf == NULL) {
- alertpanel_error(_("Template Bcc format error."));
+ compose_template_apply_fields_error("Bcc");
} else {
compose_entry_append(compose, buf, COMPOSE_BCC, PREF_TEMPLATE);
}
buf = quote_fmt_get_buffer();
if (buf == NULL) {
- alertpanel_error(_("Template Reply-To format error."));
+ compose_template_apply_fields_error("Reply-To");
} else {
compose_entry_append(compose, buf, COMPOSE_REPLYTO, PREF_TEMPLATE);
}
buf = quote_fmt_get_buffer();
if (buf == NULL) {
- alertpanel_error(_("Template subject format error."));
+ compose_template_apply_fields_error("Subject");
} else {
gtk_entry_set_text(GTK_ENTRY(compose->subject_entry), buf);
}
#endif /* G_OS_UNIX */
}
+static gboolean compose_can_autosave(Compose *compose)
+{
+ if (compose->privacy_system && compose->use_encryption)
+ return prefs_common.autosave && prefs_common.autosave_encrypted;
+ else
+ return prefs_common.autosave;
+}
+
#ifdef G_OS_UNIX
static gboolean compose_get_ext_editor_cmd_valid()
{
gtk_text_buffer_set_text(buffer, "", -1);
compose_insert_file(compose, compose->exteditor_file);
compose_changed_cb(NULL, compose);
- compose_draft((gpointer)compose, COMPOSE_AUTO_SAVE);
+
+ /* Check if we should save the draft or not */
+ if (compose_can_autosave(compose))
+ compose_draft((gpointer)compose, COMPOSE_AUTO_SAVE);
if (claws_unlink(compose->exteditor_file) < 0)
FILE_OP_ERROR(compose->exteditor_file, "unlink");
compose->header_nextrow = 1;
compose_create_header_entry(compose);
- if (ac->set_autocc && ac->auto_cc) {
+ if (ac->set_autocc && ac->auto_cc)
compose_entry_append(compose, ac->auto_cc,
COMPOSE_CC, PREF_ACCOUNT);
- compose_entry_mark_default_to(compose, ac->auto_cc);
- }
- if (ac->set_autobcc && ac->auto_bcc) {
+ if (ac->set_autobcc && ac->auto_bcc)
compose_entry_append(compose, ac->auto_bcc,
COMPOSE_BCC, PREF_ACCOUNT);
- compose_entry_mark_default_to(compose, ac->auto_bcc);
- }
- if (ac->set_autoreplyto && ac->auto_replyto) {
+ if (ac->set_autoreplyto && ac->auto_replyto)
compose_entry_append(compose, ac->auto_replyto,
COMPOSE_REPLYTO, PREF_ACCOUNT);
- compose_entry_mark_default_to(compose, ac->auto_replyto);
- }
for (list = saved_list; list; list = list->next) {
state = (HeaderEntryState *) list->data;
compose_add_header_entry(compose, state->header,
state->entry, state->type);
- if (state->entry_marked)
- compose_entry_mark_default_to(compose, state->entry);
g_free(state->header);
g_free(state->entry);
compose_close_cb(NULL, compose);
}
-static gboolean compose_can_autosave(Compose *compose)
-{
- if (compose->privacy_system && compose->use_encryption)
- return prefs_common.autosave && prefs_common.autosave_encrypted;
- else
- return prefs_common.autosave;
-}
-
static void compose_close_cb(GtkAction *action, gpointer data)
{
Compose *compose = (Compose *)data;
DO_ACTION("Edit/Advanced/DelForwWord", COMPOSE_CALL_ADVANCED_ACTION_DELETE_FORWARD_WORD);
DO_ACTION("Edit/Advanced/DelLine", COMPOSE_CALL_ADVANCED_ACTION_DELETE_LINE);
DO_ACTION("Edit/Advanced/DelEndLine", COMPOSE_CALL_ADVANCED_ACTION_DELETE_TO_LINE_END);
- return -1;
+ return COMPOSE_CALL_ADVANCED_ACTION_UNDEFINED;
}
static void compose_advanced_action_cb(GtkAction *gaction, gpointer data)
{
Compose *compose = (Compose *)data;
GtkTextView *text = GTK_TEXT_VIEW(compose->text);
- ComposeCallAdvancedAction action = -1;
+ ComposeCallAdvancedAction action = COMPOSE_CALL_ADVANCED_ACTION_UNDEFINED;
action = compose_call_advanced_action_from_path(gaction);
*\brief Guess originating forward account from MsgInfo and several
* "common preference" settings. Return NULL if no guess.
*/
-static PrefsAccount *compose_guess_forward_account_from_msginfo(MsgInfo *msginfo)
+static PrefsAccount *compose_find_account(MsgInfo *msginfo)
{
PrefsAccount *account = NULL;