-/* Copyright (c) 2006, Nokia Corporation
+/1* Copyright (c) 2006, Nokia Corporation
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
static void update_signature (ModestMsgEditWindow *self,
const gchar *old_account,
const gchar *new_account);
+static void update_branding (ModestMsgEditWindow *self,
+ const gchar *new_account);
static GtkWidget *_create_addressbook_box (GtkSizeGroup *title_size_group, GtkSizeGroup *value_size_group,
const gchar *label, GtkWidget *control);
+static void max_chars_banner_unref (ModestMsgEditWindow *self, GObject *old_ref);
static void DEBUG_BUFFER (WPTextBuffer *buffer)
{
#ifdef DEBUG
GtkTextIter iter;
- g_message ("BEGIN BUFFER OF SIZE %d", gtk_text_buffer_get_char_count (GTK_TEXT_BUFFER (buffer)));
+ g_debug ("BEGIN BUFFER OF SIZE %d", gtk_text_buffer_get_char_count (GTK_TEXT_BUFFER (buffer)));
gtk_text_buffer_get_start_iter (GTK_TEXT_BUFFER (buffer), &iter);
while (!gtk_text_iter_is_end (&iter)) {
g_string_append (output, " ");
}
output = g_string_append (output, "]\n");
- g_message ("%s", output->str);
+ g_debug ("%s", output->str);
g_string_free (output, TRUE);
gtk_text_iter_forward_to_tag_toggle (&iter, NULL);
}
- g_message ("END BUFFER");
+ g_debug ("END BUFFER");
#endif
}
GtkWidget *app_menu;
GtkWidget *cc_button;
GtkWidget *bcc_button;
+
+ GtkWidget *max_chars_banner;
+
+ GtkWidget *brand_icon;
+ GtkWidget *brand_label;
};
#define MODEST_MSG_EDIT_WINDOW_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE((o), \
priv->references = NULL;
priv->in_reply_to = NULL;
+ priv->max_chars_banner = NULL;
if (!is_wp_text_buffer_started) {
is_wp_text_buffer_started = TRUE;
g_signal_connect_swapped (G_OBJECT (priv->bcc_field), "open-addressbook",
G_CALLBACK (modest_msg_edit_window_open_addressbook), obj);
+ g_signal_connect (G_OBJECT (priv->send_button), "clicked",
+ G_CALLBACK (modest_ui_actions_on_send), obj);
+
g_signal_connect (G_OBJECT (priv->from_field), "value-changed",
G_CALLBACK (from_field_changed), obj);
#endif
GtkWidget *from_send_hbox;
GtkWidget *send_icon;
+ GtkWidget *attachments_label;
+ GtkWidget *branding_box;
priv = MODEST_MSG_EDIT_WINDOW_GET_PRIVATE(obj);
parent_priv = MODEST_WINDOW_GET_PRIVATE (obj);
_("mail_va_hotfix1"), priv->bcc_field);
subject_caption = modest_maemo_utils_create_captioned (title_size_group, value_size_group,
_("mail_va_subject"), FALSE, priv->subject_box);
- priv->attachments_caption = modest_maemo_utils_create_captioned_with_size_type (title_size_group, value_size_group,
+ priv->attachments_caption = modest_maemo_utils_create_captioned_with_size_type (NULL, NULL,
_("mail_va_attachment"),
FALSE,
priv->attachments_view,
HILDON_SIZE_AUTO_WIDTH |
HILDON_SIZE_AUTO_HEIGHT);
+ attachments_label = modest_maemo_utils_captioned_get_label_widget (priv->attachments_caption);
+ hildon_gtk_widget_set_theme_size (attachments_label, HILDON_SIZE_AUTO_HEIGHT);
+
+
priv->send_button = hildon_gtk_button_new (HILDON_SIZE_FINGER_HEIGHT);
send_icon = gtk_image_new_from_icon_name (MODEST_TOOLBAR_ICON_MAIL_SEND, HILDON_ICON_SIZE_FINGER);
gtk_container_add (GTK_CONTAINER (priv->send_button), send_icon);
- gtk_size_group_add_widget (title_size_group, send_icon);
+ gtk_widget_set_size_request (GTK_WIDGET (priv->send_button), 148, -1);
g_object_unref (title_size_group);
g_object_unref (value_size_group);
+ priv->brand_icon = gtk_image_new ();
+ gtk_misc_set_alignment (GTK_MISC (priv->brand_icon), 0.5, 0.5);
+ priv->brand_label = gtk_label_new (NULL);
+ gtk_misc_set_alignment (GTK_MISC (priv->brand_label), 0.0, 0.5);
+ gtk_widget_set_no_show_all (priv->brand_icon, TRUE);
+ gtk_widget_set_no_show_all (priv->brand_label, TRUE);
+
from_send_hbox = gtk_hbox_new (FALSE, 0);
gtk_box_pack_start (GTK_BOX (from_send_hbox), priv->from_field, TRUE, TRUE, 0);
gtk_box_pack_start (GTK_BOX (from_send_hbox), priv->send_button, FALSE, FALSE, 0);
+ branding_box = gtk_hbox_new (FALSE, MODEST_MARGIN_DEFAULT);
+ gtk_box_pack_start (GTK_BOX (branding_box), priv->brand_icon, FALSE, FALSE, 0);
+ gtk_box_pack_start (GTK_BOX (branding_box), priv->brand_label, TRUE, TRUE, 0);
+
+
gtk_box_pack_start (GTK_BOX (priv->header_box), from_send_hbox, FALSE, FALSE, 0);
gtk_box_pack_start (GTK_BOX (priv->header_box), to_caption, FALSE, FALSE, 0);
gtk_box_pack_start (GTK_BOX (priv->header_box), priv->cc_caption, FALSE, FALSE, 0);
gtk_box_pack_start (GTK_BOX (priv->header_box), priv->bcc_caption, FALSE, FALSE, 0);
gtk_box_pack_start (GTK_BOX (priv->header_box), subject_caption, FALSE, FALSE, 0);
gtk_box_pack_start (GTK_BOX (priv->header_box), priv->attachments_caption, FALSE, FALSE, 0);
+ gtk_box_pack_start (GTK_BOX (priv->header_box), branding_box, FALSE, FALSE, 0);
gtk_widget_set_no_show_all (priv->attachments_caption, TRUE);
init_wp_text_view_style ();
modest_msg_edit_window_finalize (GObject *obj)
{
ModestMsgEditWindowPrivate *priv = MODEST_MSG_EDIT_WINDOW_GET_PRIVATE (obj);
-
+
+ if (priv->max_chars_banner) {
+ g_object_weak_unref (G_OBJECT (priv->max_chars_banner), (GWeakNotify) max_chars_banner_unref, obj);
+ priv->max_chars_banner = FALSE;
+ }
+
/* Sanity check: shouldn't be needed, the window mgr should
call this function before */
modest_msg_edit_window_disconnect_signals (MODEST_WINDOW (obj));
g_free (priv->last_search);
g_free (priv->references);
g_free (priv->in_reply_to);
- g_object_unref (priv->faces_model);
- g_object_unref (priv->sizes_model);
g_object_unref (priv->attachments);
g_object_unref (priv->images);
priv->font_face_toolitem = tool_item;
/* Set expand and homogeneous for remaining items */
- tool_item = gtk_ui_manager_get_widget (parent_priv->ui_manager, "/ToolBar/ToolbarSend");
- gtk_tool_item_set_expand (GTK_TOOL_ITEM (tool_item), TRUE);
- gtk_tool_item_set_homogeneous (GTK_TOOL_ITEM (tool_item), TRUE);
tool_item = gtk_ui_manager_get_widget (parent_priv->ui_manager, "/ToolBar/ActionsBold");
gtk_tool_item_set_expand (GTK_TOOL_ITEM (tool_item), TRUE);
gtk_tool_item_set_homogeneous (GTK_TOOL_ITEM (tool_item), TRUE);
modest_selector_picker_set_active_id (MODEST_SELECTOR_PICKER (priv->from_field), (gpointer) account_name);
}
priv->last_from_account = modest_selector_picker_get_active_id (MODEST_SELECTOR_PICKER (priv->from_field));
+ update_branding (MODEST_MSG_EDIT_WINDOW (obj), priv->last_from_account);
hildon_button_set_title (HILDON_BUTTON (priv->from_field),
_("mail_va_from"));
hildon_button_set_value (HILDON_BUTTON (priv->from_field),
ModestMsgEditFormat format)
{
ModestMsgEditWindowPrivate *priv;
+ ModestWindowPrivate *parent_priv;
g_return_if_fail (MODEST_IS_MSG_EDIT_WINDOW (self));
priv = MODEST_MSG_EDIT_WINDOW_GET_PRIVATE (self);
+ parent_priv = MODEST_WINDOW_GET_PRIVATE (self);
switch (format) {
case MODEST_MSG_EDIT_FORMAT_HTML:
wp_text_buffer_enable_rich_text (WP_TEXT_BUFFER (priv->text_buffer), TRUE);
+ if (parent_priv->toolbar) gtk_widget_show (parent_priv->toolbar);
break;
case MODEST_MSG_EDIT_FORMAT_TEXT:
wp_text_buffer_enable_rich_text (WP_TEXT_BUFFER (priv->text_buffer), FALSE);
+ if (parent_priv->toolbar) gtk_widget_hide (parent_priv->toolbar);
break;
default:
g_return_if_reached ();
modest_msg_edit_window_attach_file_one (window, uri, allowed_size);
if (total_size > allowed_size) {
- g_warning ("%s: total size: %u",
+ g_debug ("%s: total size: %u",
__FUNCTION__, (unsigned int)total_size);
break;
}
info->valid_fields & GNOME_VFS_FILE_INFO_FIELDS_SIZE) {
size = info->size;
if (size > allowed_size) {
- modest_platform_information_banner (NULL, NULL,
- _FM("sfil_ib_opening_not_allowed"));
+ modest_platform_information_banner (NULL, NULL,
+ _("mail_ib_error_attachment_size"));
g_free (filename);
return 0;
}
} else
- g_warning ("%s: could not get attachment size", __FUNCTION__);
+ g_debug ("%s: could not get attachment size", __FUNCTION__);
stream = create_stream_for_uri (uri);
g_object_unref (att_list);
return;
}
-
} else {
g_object_ref (att_list);
}
g_object_unref (att_list);
/* if the last attachment has been removed, focus the Subject: field */
- if (!modest_attachments_view_has_attachments (MODEST_ATTACHMENTS_VIEW (priv->attachments_view)))
+ if (!modest_attachments_view_has_attachments (MODEST_ATTACHMENTS_VIEW (priv->attachments_view)))
gtk_widget_grab_focus (priv->subject_field);
}
priv = MODEST_MSG_EDIT_WINDOW_GET_PRIVATE (window);
if (editor == NULL) {
- GtkWidget *view_focus;
+ GtkWidget *view_focus, *parent;
view_focus = gtk_window_get_focus (GTK_WINDOW (window));
/* This code should be kept in sync with ModestRecptEditor. The
hbox recpt editor inherits from, we'll need to go up in the
hierarchy to know if the text view is part of the recpt editor
or if it's a different text entry */
-
- if (gtk_widget_get_parent (view_focus)) {
- GtkWidget *first_parent;
-
- first_parent = gtk_widget_get_parent (view_focus);
- if (gtk_widget_get_parent (first_parent) &&
- MODEST_IS_RECPT_EDITOR (gtk_widget_get_parent (first_parent))) {
- editor = MODEST_RECPT_EDITOR (gtk_widget_get_parent (first_parent));
- }
- }
+ parent = gtk_widget_get_parent (view_focus);
+ if (parent && MODEST_IS_RECPT_EDITOR (parent))
+ editor = MODEST_RECPT_EDITOR (parent);
if (editor == NULL)
editor = MODEST_RECPT_EDITOR (priv->to_field);
-
}
- modest_address_book_select_addresses (editor);
-
+ modest_address_book_select_addresses (editor, GTK_WINDOW (window));
}
void
gboolean show_toolbar)
{
ModestWindowPrivate *parent_priv;
+ ModestMsgEditWindowPrivate *priv;
g_return_if_fail (MODEST_IS_MSG_EDIT_WINDOW (self));
+ priv = MODEST_MSG_EDIT_WINDOW_GET_PRIVATE (self);
parent_priv = MODEST_WINDOW_GET_PRIVATE(self);
/* We can not just use the code of
modest_msg_edit_window_setup_toolbar because it has a
mixture of both initialization and creation code. */
- if (show_toolbar)
- gtk_widget_show (GTK_WIDGET (parent_priv->toolbar));
- else
+ if (show_toolbar) {
+ gint current_format;
+ current_format = wp_text_buffer_is_rich_text (WP_TEXT_BUFFER (priv->text_buffer))
+ ? MODEST_FILE_FORMAT_FORMATTED_TEXT : MODEST_FILE_FORMAT_PLAIN_TEXT;
+ if (current_format == MODEST_FILE_FORMAT_PLAIN_TEXT) {
+ gtk_widget_hide (GTK_WIDGET (parent_priv->toolbar));
+ } else {
+ gtk_widget_show (GTK_WIDGET (parent_priv->toolbar));
+ }
+ } else {
gtk_widget_hide (GTK_WIDGET (parent_priv->toolbar));
+ }
}
void
current_format = wp_text_buffer_is_rich_text (WP_TEXT_BUFFER (priv->text_buffer))
? MODEST_FILE_FORMAT_FORMATTED_TEXT : MODEST_FILE_FORMAT_PLAIN_TEXT;
+ gtk_widget_set_no_show_all (GTK_WIDGET (parent_priv->toolbar), TRUE);
+
+ if (parent_priv->toolbar) {
+ if (file_format == MODEST_FILE_FORMAT_PLAIN_TEXT) {
+ gtk_widget_hide (parent_priv->toolbar);
+ } else {
+ gtk_widget_show (parent_priv->toolbar);
+ }
+ }
+
if (current_format != file_format) {
switch (file_format) {
case MODEST_FILE_FORMAT_FORMATTED_TEXT:
gtk_widget_destroy (dialog);
if (response == GTK_RESPONSE_OK) {
wp_text_buffer_enable_rich_text (WP_TEXT_BUFFER (priv->text_buffer), FALSE);
+ if (parent_priv->toolbar) gtk_widget_hide (parent_priv->toolbar);
} else {
GtkToggleAction *action = GTK_TOGGLE_ACTION (gtk_ui_manager_get_action (parent_priv->ui_manager, "/MenuBar/FormatMenu/FileFormatFormattedTextMenu"));
modest_utils_toggle_action_set_active_block_notify (action, TRUE);
{
GtkTextIter end_iter;
gint offset;
+ glong utf8_len;
+
+ ModestMsgEditWindowPrivate *priv = MODEST_MSG_EDIT_WINDOW_GET_PRIVATE (window);
gtk_text_buffer_get_end_iter (GTK_TEXT_BUFFER (buffer), &end_iter);
offset = gtk_text_iter_get_offset (&end_iter);
+ utf8_len = g_utf8_strlen (text, len);
- if (offset + len > MAX_BODY_LENGTH) {
+ if (offset + utf8_len > MAX_BODY_LENGTH) {
g_signal_stop_emission_by_name (G_OBJECT (buffer), "insert-text");
if (offset < MAX_BODY_LENGTH)
{
gchar *result;
+ gchar *utf8_end;
+
+ utf8_end = g_utf8_offset_to_pointer (text, MAX_BODY_LENGTH - offset);
/* Prevent endless recursion */
- result = g_strndup (text, MAX_BODY_LENGTH - offset);
+ result = g_strndup (text, utf8_end - text);
g_signal_handlers_block_by_func (G_OBJECT (buffer), G_CALLBACK (body_insert_text), window);
g_signal_emit_by_name (G_OBJECT (buffer), "insert-text", location,
- (gpointer) result, (gpointer) MAX_BODY_LENGTH - offset,
+ (gpointer) result, (gpointer) (utf8_end - text),
(gpointer) window);
g_signal_handlers_unblock_by_func (G_OBJECT (buffer), G_CALLBACK (body_insert_text), window);
}
}
- if (offset + len > MAX_BODY_LENGTH) {
- hildon_banner_show_information (GTK_WIDGET (window), NULL,
- _CS("ckdg_ib_maximum_characters_reached"));
+ if (offset + utf8_len > MAX_BODY_LENGTH) {
+ if (priv->max_chars_banner == NULL) {
+ priv->max_chars_banner = hildon_banner_show_information (GTK_WIDGET (window), NULL,
+ _CS("ckdg_ib_maximum_characters_reached"));
+ g_object_weak_ref (G_OBJECT (priv->max_chars_banner), (GWeakNotify) max_chars_banner_unref, window);
+ }
}
}
result = TRUE;
if (!gtk_text_iter_forward_search (iter, found_text, GTK_TEXT_SEARCH_VISIBLE_ONLY|GTK_TEXT_SEARCH_TEXT_ONLY,
match_start, match_end, NULL)) {
- g_warning ("Matched string with collate, but not matched in model");
+ g_debug ("Matched string with collate, but not matched in model");
}
g_free (found_text);
}
gtk_text_buffer_end_user_action (priv->text_buffer);
}
+static void update_branding (ModestMsgEditWindow *self,
+ const gchar *new_account)
+{
+ ModestMsgEditWindowPrivate *priv;
+ ModestAccountMgr *mgr;
+ const GdkPixbuf *new_icon = NULL;
+ gchar *new_label = NULL;
+
+ priv = MODEST_MSG_EDIT_WINDOW_GET_PRIVATE (self);
+
+ mgr = modest_runtime_get_account_mgr ();
+
+ modest_account_mgr_get_branding_from_recipient (mgr, new_account, &new_label, &new_icon, MODEST_ICON_SIZE_SMALL);
+ if (new_icon) {
+ gtk_image_set_from_pixbuf (GTK_IMAGE (priv->brand_icon), (GdkPixbuf *) new_icon);
+ gtk_widget_show (priv->brand_icon);
+ } else {
+ gtk_widget_hide (priv->brand_icon);
+ }
+ if (new_label) {
+ gtk_label_set_text (GTK_LABEL (priv->brand_label), new_label);
+ gtk_widget_show (priv->brand_label);
+ g_free (new_label);
+ } else {
+ gtk_widget_hide (priv->brand_label);
+ }
+}
+
static void
from_field_changed (HildonPickerButton *button,
ModestMsgEditWindow *self)
new_account = priv->last_from_account;
update_signature (self, old_account, new_account);
+ update_branding (self, new_account);
}
g_signal_connect (G_OBJECT (html_toggle), "toggled", G_CALLBACK (on_format_toggle), &helper);
g_signal_connect (G_OBJECT (text_toggle), "toggled", G_CALLBACK (on_format_toggle), &helper);
+ modest_window_mgr_set_modal (modest_runtime_get_window_mgr (),
+ GTK_WINDOW (dialog), GTK_WINDOW (window));
+
/* Save settings if the user clicked on done */
if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT) {
TnyHeaderFlags flags;
modest_hildon2_window_add_to_menu (MODEST_HILDON2_WINDOW (self), _("mcen_me_editor_attach_inlineimage"), NULL,
APP_MENU_CALLBACK (modest_ui_actions_on_insert_image),
MODEST_DIMMING_CALLBACK (modest_ui_dimming_rules_on_set_style));
- modest_hildon2_window_add_to_menu (MODEST_HILDON2_WINDOW (self), _("TODO: add attachment"), NULL,
+ modest_hildon2_window_add_to_menu (MODEST_HILDON2_WINDOW (self), _("mcen_me_editor_add_attachment"), NULL,
APP_MENU_CALLBACK (modest_msg_edit_window_add_attachment_clicked),
NULL);
modest_hildon2_window_add_to_menu (MODEST_HILDON2_WINDOW (self), _("mcen_me_inbox_remove_attachments"), NULL,
box = gtk_hbox_new (FALSE, 0);
- align = gtk_alignment_new (0.0, 0.0, 1.0, 1.0);
+ align = gtk_alignment_new (0.0, 0.0, 1.0, 0.0);
gtk_alignment_set_padding (GTK_ALIGNMENT (align), 0, 0, 0, MODEST_MARGIN_DEFAULT);
abook_button = hildon_gtk_button_new (HILDON_SIZE_FINGER_HEIGHT);
gtk_container_add (GTK_CONTAINER (abook_button), label_widget);
gtk_container_add (GTK_CONTAINER (align), abook_button);
+ gtk_widget_set_size_request (label_widget, 148 - MODEST_MARGIN_DOUBLE, -1);
gtk_box_pack_start (GTK_BOX (box), align, FALSE, FALSE, 0);
gtk_box_pack_start (GTK_BOX (box), control, TRUE, TRUE, 0);
if (title_size_group)
return box;
}
+
+static void
+max_chars_banner_unref (ModestMsgEditWindow *self, GObject *old_ref)
+{
+ ModestMsgEditWindowPrivate *priv = NULL;
+
+ g_return_if_fail (MODEST_IS_MSG_EDIT_WINDOW(self));
+
+ priv = MODEST_MSG_EDIT_WINDOW_GET_PRIVATE (self);
+ priv->max_chars_banner = NULL;
+}