#include <modest-account-mgr-helpers.h>
#include <widgets/modest-msg-edit-window.h>
-#include <widgets/modest-combo-box.h>
+#include <modest-selector-picker.h>
#include <widgets/modest-recpt-editor.h>
#include <widgets/modest-attachments-view.h>
#endif
#include <modest-utils.h>
#include "modest-maemo-utils.h"
+#include <modest-ui-constants.h>
#define DEFAULT_FONT_SIZE 3
#define DEFAULT_FONT 2
#define DEFAULT_SIZE_BUTTON_FONT_FAMILY "Sans"
-#define DEFAULT_SIZE_COMBOBOX_WIDTH 80
#define DEFAULT_MAIN_VBOX_SPACING 6
#define SUBJECT_MAX_LENGTH 1000
#define IMAGE_MAX_WIDTH 560
static void modest_msg_edit_window_font_change (GtkCheckMenuItem *menu_item,
gpointer userdata);
static void modest_msg_edit_window_setup_toolbar (ModestMsgEditWindow *window);
-static gboolean modest_msg_edit_window_window_state_event (GtkWidget *widget,
- GdkEventWindowState *event,
- gpointer userdata);
+
static void modest_msg_edit_window_open_addressbook (ModestMsgEditWindow *window,
ModestRecptEditor *editor);
static void modest_msg_edit_window_add_attachment_clicked (GtkButton *button,
ModestWindowPrivate *parent_priv = MODEST_WINDOW_GET_PRIVATE (self);
conf = modest_runtime_get_conf ();
- action = gtk_ui_manager_get_action (parent_priv->ui_manager,
- "/MenuBar/ViewMenu/ShowToolbarMenu/ViewShowToolbarNormalScreenMenu");
- modest_utils_toggle_action_set_active_block_notify (GTK_TOGGLE_ACTION (action),
- modest_conf_get_bool (conf, MODEST_CONF_EDIT_WINDOW_SHOW_TOOLBAR, NULL));
- action = gtk_ui_manager_get_action (parent_priv->ui_manager,
- "/MenuBar/ViewMenu/ShowToolbarMenu/ViewShowToolbarFullScreenMenu");
- modest_utils_toggle_action_set_active_block_notify (GTK_TOGGLE_ACTION (action),
- modest_conf_get_bool (conf, MODEST_CONF_EDIT_WINDOW_SHOW_TOOLBAR_FULLSCREEN, NULL));
-
- /* set initial state of cc and bcc */
- action = gtk_ui_manager_get_action (parent_priv->ui_manager, "/MenuBar/ViewMenu/ViewCcFieldMenu");
- modest_utils_toggle_action_set_active_block_notify (GTK_TOGGLE_ACTION (action),
- modest_conf_get_bool(modest_runtime_get_conf(), MODEST_CONF_SHOW_CC, NULL));
- action = gtk_ui_manager_get_action (parent_priv->ui_manager, "/MenuBar/ViewMenu/ViewBccFieldMenu");
- modest_utils_toggle_action_set_active_block_notify (GTK_TOGGLE_ACTION (action),
- modest_conf_get_bool(modest_runtime_get_conf(), MODEST_CONF_SHOW_BCC, NULL));
/* Dim at start clipboard actions */
action = gtk_ui_manager_get_action (parent_priv->ui_manager, "/MenuBar/EditMenu/CutMenu");
action = gtk_ui_manager_get_action (parent_priv->ui_manager, "/MenuBar/AttachmentsMenu/RemoveAttachmentsMenu");
gtk_action_set_sensitive (action, FALSE);
- modest_widget_memory_restore (conf,
- G_OBJECT(self), MODEST_CONF_EDIT_WINDOW_KEY);
+ modest_widget_memory_restore (conf, G_OBJECT(self), MODEST_CONF_EDIT_WINDOW_KEY);
}
}
-/* FIXME: this is a dup from the one in gtk/ */
-
/**
* @result: A ModestPairList, which must be freed with modest_pair_list_free().
*/
G_CALLBACK (body_changed), obj);
g_signal_connect (G_OBJECT (priv->text_buffer), "modified-changed",
G_CALLBACK (body_changed), obj);
- g_signal_connect (G_OBJECT (obj), "window-state-event",
- G_CALLBACK (modest_msg_edit_window_window_state_event),
- NULL);
g_signal_connect (G_OBJECT (priv->text_buffer), "end-user-action",
G_CALLBACK (text_buffer_end_user_action), obj);
g_signal_connect (G_OBJECT (priv->text_buffer), "mark-set",
static void
init_window (ModestMsgEditWindow *obj)
{
- GtkWidget *from_caption, *to_caption, *subject_caption;
+ GtkWidget *to_caption, *subject_caption;
GtkWidget *main_vbox;
ModestMsgEditWindowPrivate *priv;
GtkActionGroup *action_group;
GdkPixbuf *window_icon = NULL;
GError *error = NULL;
- GtkSizeGroup *size_group;
+ GtkSizeGroup *title_size_group;
+ GtkSizeGroup *value_size_group;
GtkWidget *subject_box;
GtkWidget *attachment_icon;
GtkWidget *window_box;
#if (GTK_MINOR_VERSION >= 10)
GdkAtom deserialize_type;
#endif
+
priv = MODEST_MSG_EDIT_WINDOW_GET_PRIVATE(obj);
parent_priv = MODEST_WINDOW_GET_PRIVATE (obj);
parent_priv->menubar = NULL;
- size_group = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL);
+ title_size_group = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL);
+ value_size_group = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL);
- /* Note: This ModestPairList* must exist for as long as the combo
- * that uses it, because the ModestComboBox uses the ID opaquely,
+ /* Note: This ModestPairList* must exist for as long as the picker
+ * that uses it, because the ModestSelectorPicker uses the ID opaquely,
* so it can't know how to manage its memory. */
- priv->from_field = modest_combo_box_new (NULL, g_str_equal);
+ priv->from_field = modest_selector_picker_new (MODEST_EDITABLE_SIZE,
+ HILDON_BUTTON_ARRANGEMENT_HORIZONTAL,
+ NULL, g_str_equal);
+ modest_maemo_utils_set_hbutton_layout (title_size_group, value_size_group,
+ _("mail_va_from"), priv->from_field);
priv->to_field = modest_recpt_editor_new ();
priv->cc_field = modest_recpt_editor_new ();
subject_box = gtk_hbox_new (FALSE, 0);
priv->priority_icon = gtk_image_new ();
gtk_box_pack_start (GTK_BOX (subject_box), priv->priority_icon, FALSE, FALSE, 0);
- priv->subject_field = gtk_entry_new_with_max_length (SUBJECT_MAX_LENGTH);
+ priv->subject_field = hildon_entry_new (MODEST_EDITABLE_SIZE);
+ gtk_entry_set_max_length (GTK_ENTRY (priv->subject_field) ,SUBJECT_MAX_LENGTH);
g_object_set (G_OBJECT (priv->subject_field), "truncate-multiline", TRUE, NULL);
hildon_gtk_entry_set_input_mode (GTK_ENTRY (priv->subject_field),
HILDON_GTK_INPUT_MODE_FULL | HILDON_GTK_INPUT_MODE_AUTOCAP);
GTK_WIDGET_UNSET_FLAGS (GTK_WIDGET (priv->add_attachment_button), GTK_CAN_FOCUS);
gtk_button_set_relief (GTK_BUTTON (priv->add_attachment_button), GTK_RELIEF_NONE);
gtk_button_set_focus_on_click (GTK_BUTTON (priv->add_attachment_button), FALSE);
- gtk_button_set_alignment (GTK_BUTTON (priv->add_attachment_button), 1.0, 1.0);
+ gtk_button_set_alignment (GTK_BUTTON (priv->add_attachment_button), 1.0, 0.5);
attachment_icon = gtk_image_new_from_icon_name (MODEST_HEADER_ICON_ATTACH, GTK_ICON_SIZE_BUTTON);
gtk_container_add (GTK_CONTAINER (priv->add_attachment_button), attachment_icon);
gtk_box_pack_start (GTK_BOX (subject_box), priv->add_attachment_button, FALSE, FALSE, 0);
priv->header_box = gtk_vbox_new (FALSE, 0);
- from_caption = hildon_caption_new (size_group, _("mail_va_from"), priv->from_field, NULL, 0);
- to_caption = hildon_caption_new (size_group, _("mail_va_to"), priv->to_field, NULL, 0);
- priv->cc_caption = hildon_caption_new (size_group, _("mail_va_cc"), priv->cc_field, NULL, 0);
- priv->bcc_caption = hildon_caption_new (size_group, _("mail_va_hotfix1"), priv->bcc_field, NULL, 0);
- subject_caption = hildon_caption_new (size_group, _("mail_va_subject"), subject_box, NULL, 0);
- priv->attachments_caption = hildon_caption_new (size_group, _("mail_va_attachment"), priv->attachments_view, NULL, 0);
- g_object_unref (size_group);
-
- size_group = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL);
- modest_recpt_editor_set_field_size_group (MODEST_RECPT_EDITOR (priv->to_field), size_group);
- modest_recpt_editor_set_field_size_group (MODEST_RECPT_EDITOR (priv->cc_field), size_group);
- modest_recpt_editor_set_field_size_group (MODEST_RECPT_EDITOR (priv->bcc_field), size_group);
- gtk_size_group_add_widget (size_group, priv->subject_field);
- gtk_size_group_add_widget (size_group, priv->attachments_view);
- g_object_unref (size_group);
-
- gtk_box_pack_start (GTK_BOX (priv->header_box), from_caption, FALSE, FALSE, 0);
+ to_caption = modest_maemo_utils_create_captioned (title_size_group, value_size_group,
+ _("mail_va_to"), priv->to_field);
+ priv->cc_caption = modest_maemo_utils_create_captioned (title_size_group, value_size_group,
+ _("mail_va_cc"), priv->cc_field);
+ priv->bcc_caption = modest_maemo_utils_create_captioned (title_size_group, value_size_group,
+ _("mail_va_hotfix1"), priv->bcc_field);
+ subject_caption = modest_maemo_utils_create_captioned (title_size_group, value_size_group,
+ _("mail_va_subject"), subject_box);
+ priv->attachments_caption = modest_maemo_utils_create_captioned (title_size_group, value_size_group,
+ _("mail_va_attachment"),
+ priv->attachments_view);
+ /* modest_recpt_editor_set_field_size_group (MODEST_RECPT_EDITOR (priv->to_field), value_size_group); */
+ /* modest_recpt_editor_set_field_size_group (MODEST_RECPT_EDITOR (priv->cc_field), value_size_group); */
+ /* modest_recpt_editor_set_field_size_group (MODEST_RECPT_EDITOR (priv->bcc_field), value_size_group); */
+ g_object_unref (title_size_group);
+ g_object_unref (value_size_group);
+
+ gtk_box_pack_start (GTK_BOX (priv->header_box), priv->from_field, 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);
g_object_unref (priv->attachments);
g_object_unref (priv->images);
- /* This had to stay alive for as long as the combobox that used it: */
+ /* This had to stay alive for as long as the picker that used it: */
modest_pair_list_free (priv->from_field_protos);
G_OBJECT_CLASS(parent_class)->finalize (obj);
readed = tny_stream_read (TNY_STREAM (stream), (char *) read_buffer, 128);
size += readed;
if (!gdk_pixbuf_loader_write (loader, read_buffer, readed, &error)) {
+ if (error)
+ g_error_free (error);
break;
}
}
gtk_widget_grab_focus (priv->msg_body);
}
- /* TODO: lower priority, select in the From: combo to the
- value that comes from msg <- not sure, should it be
- allowed? */
-
DEBUG_BUFFER (WP_TEXT_BUFFER (priv->text_buffer));
gtk_text_buffer_get_start_iter (priv->text_buffer, &iter);
parent_priv->menubar = modest_maemo_utils_get_manager_menubar_as_menu (parent_priv->ui_manager, "/MenuBar");
hildon_window_set_menu (HILDON_WINDOW (obj), GTK_MENU (parent_priv->menubar));
priv->from_field_protos = get_transports ();
- modest_combo_box_set_pair_list (MODEST_COMBO_BOX (priv->from_field), priv->from_field_protos);
- modest_combo_box_set_active_id (MODEST_COMBO_BOX (priv->from_field), (gpointer) account_name);
+ modest_selector_picker_set_pair_list (MODEST_SELECTOR_PICKER (priv->from_field), priv->from_field_protos);
+ modest_selector_picker_set_active_id (MODEST_SELECTOR_PICKER (priv->from_field), (gpointer) account_name);
+ hildon_button_set_title (HILDON_BUTTON (priv->from_field),
+ _("mail_va_from"));
+ hildon_button_set_value (HILDON_BUTTON (priv->from_field),
+ hildon_touch_selector_get_current_text
+ (HILDON_TOUCH_SELECTOR (hildon_picker_button_get_selector (HILDON_PICKER_BUTTON (priv->from_field)))));
modest_msg_edit_window_setup_toolbar (MODEST_MSG_EDIT_WINDOW (obj));
hildon_window_add_toolbar (HILDON_WINDOW (obj), GTK_TOOLBAR (priv->find_toolbar));
modest_dimming_rules_group_add_widget_rule (toolbar_rules_group, priv->font_face_toolitem,
G_CALLBACK (modest_ui_dimming_rules_on_set_style),
MODEST_WINDOW (obj));
- modest_dimming_rules_group_add_rules (clipboard_rules_group,
- modest_msg_edit_window_clipboard_dimming_entries,
- G_N_ELEMENTS (modest_msg_edit_window_clipboard_dimming_entries),
- MODEST_WINDOW (obj));
/* Insert dimming rules group for this window */
modest_ui_dimming_manager_insert_rules_group (parent_priv->ui_dimming_manager, menu_rules_group);
modest_ui_dimming_manager_insert_rules_group (parent_priv->ui_dimming_manager, toolbar_rules_group);
priv = MODEST_MSG_EDIT_WINDOW_GET_PRIVATE (edit_window);
- account_name = modest_combo_box_get_active_id (MODEST_COMBO_BOX (priv->from_field));
+ account_name = modest_selector_picker_get_active_id (MODEST_SELECTOR_PICKER (priv->from_field));
g_return_val_if_fail (account_name, NULL);
text_buffer_refresh_attributes (WP_TEXT_BUFFER (priv->text_buffer), self);
+ g_free (buffer_format);
g_free (current_format);
/* Check dimming rules */
priv = MODEST_MSG_EDIT_WINDOW_GET_PRIVATE (window);
if (wp_text_buffer_is_rich_text (WP_TEXT_BUFFER (priv->text_buffer))) {
- action = gtk_ui_manager_get_action (parent_priv->ui_manager, "/MenuBar/FormatMenu/FileFormatMenu/FileFormatFormattedTextMenu");
+ action = gtk_ui_manager_get_action (parent_priv->ui_manager, "/MenuBar/FormatMenu/FileFormatFormattedTextMenu");
if (!gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (action)))
modest_utils_toggle_action_set_active_block_notify (GTK_TOGGLE_ACTION (action), TRUE);
} else {
- action = gtk_ui_manager_get_action (parent_priv->ui_manager, "/MenuBar/FormatMenu/FileFormatMenu/FileFormatPlainTextMenu");
+ action = gtk_ui_manager_get_action (parent_priv->ui_manager, "/MenuBar/FormatMenu/FileFormatPlainTextMenu");
if (!gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (action)))
modest_utils_toggle_action_set_active_block_notify (GTK_TOGGLE_ACTION (action), TRUE);
}
modest_maemo_utils_setup_images_filechooser (GTK_FILE_CHOOSER (dialog));
modest_window_mgr_set_modal (modest_runtime_get_window_mgr (),
- GTK_WINDOW (dialog));
+ GTK_WINDOW (dialog), GTK_WINDOW (window));
response = gtk_dialog_run (GTK_DIALOG (dialog));
switch (response) {
insert_mark = gtk_text_buffer_get_insert (GTK_TEXT_BUFFER (priv->text_buffer));
gtk_text_buffer_get_iter_at_mark (GTK_TEXT_BUFFER (priv->text_buffer), &position, insert_mark);
wp_text_buffer_insert_image (WP_TEXT_BUFFER (priv->text_buffer), &position, g_strdup (tny_mime_part_get_content_id (mime_part)), pixbuf);
+ g_object_unref (pixbuf);
}
tny_list_prepend (priv->images, (GObject *) mime_part);
dialog = hildon_file_chooser_dialog_new (GTK_WINDOW (window), GTK_FILE_CHOOSER_ACTION_OPEN);
gtk_window_set_title (GTK_WINDOW (dialog), _("mcen_ti_select_attachment_title"));
gtk_file_chooser_set_select_multiple (GTK_FILE_CHOOSER (dialog), TRUE);
- modest_window_mgr_set_modal (modest_runtime_get_window_mgr (), GTK_WINDOW (dialog));
+ modest_window_mgr_set_modal (modest_runtime_get_window_mgr (), GTK_WINDOW (dialog), GTK_WINDOW (window));
response = gtk_dialog_run (GTK_DIALOG (dialog));
switch (response) {
}
}
-static gboolean
-modest_msg_edit_window_window_state_event (GtkWidget *widget, GdkEventWindowState *event, gpointer userdata)
-{
- if (event->changed_mask & GDK_WINDOW_STATE_FULLSCREEN) {
- ModestWindowPrivate *parent_priv;
- ModestWindowMgr *mgr;
- gboolean is_fullscreen;
- GtkAction *fs_toggle_action;
- gboolean active;
-
- mgr = modest_runtime_get_window_mgr ();
- is_fullscreen = (modest_window_mgr_get_fullscreen_mode (mgr))?1:0;
-
- parent_priv = MODEST_WINDOW_GET_PRIVATE (widget);
-
- fs_toggle_action = gtk_ui_manager_get_action (parent_priv->ui_manager, "/MenuBar/ViewMenu/ViewToggleFullscreenMenu");
- active = (gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (fs_toggle_action)))?1:0;
- if (is_fullscreen != active)
- gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (fs_toggle_action), is_fullscreen);
- }
-
- return FALSE;
-
-}
-
void
modest_msg_edit_window_show_cc (ModestMsgEditWindow *window,
gboolean show)
gboolean show_toolbar)
{
ModestWindowPrivate *parent_priv;
- const gchar *action_name;
- GtkAction *action;
-
+
g_return_if_fail (MODEST_IS_MSG_EDIT_WINDOW (self));
parent_priv = MODEST_WINDOW_GET_PRIVATE(self);
gtk_widget_show (GTK_WIDGET (parent_priv->toolbar));
else
gtk_widget_hide (GTK_WIDGET (parent_priv->toolbar));
-
- /* Update also the actions (to update the toggles in the
- menus), we have to do it manually because some other window
- of the same time could have changed it (remember that the
- toolbar fullscreen mode is shared by all the windows of the
- same type */
- if (modest_window_mgr_get_fullscreen_mode (modest_runtime_get_window_mgr ()))
- action_name = "/MenuBar/ViewMenu/ShowToolbarMenu/ViewShowToolbarFullScreenMenu";
- else
- action_name = "/MenuBar/ViewMenu/ShowToolbarMenu/ViewShowToolbarNormalScreenMenu";
-
- action = gtk_ui_manager_get_action (parent_priv->ui_manager, action_name);
- modest_utils_toggle_action_set_active_block_notify (GTK_TOGGLE_ACTION (action),
- show_toolbar);
-
}
void
switch (priority_flags) {
case TNY_HEADER_FLAG_HIGH_PRIORITY:
- gtk_image_set_from_icon_name (GTK_IMAGE (priv->priority_icon), "qgn_list_messaging_high", GTK_ICON_SIZE_MENU);
+ gtk_image_set_from_icon_name (GTK_IMAGE (priv->priority_icon), MODEST_HEADER_ICON_HIGH, GTK_ICON_SIZE_MENU);
gtk_widget_show (priv->priority_icon);
priority_action = gtk_ui_manager_get_action (parent_priv->ui_manager,
"/MenuBar/ToolsMenu/MessagePriorityMenu/MessagePriorityHighMenu");
break;
case TNY_HEADER_FLAG_LOW_PRIORITY:
- gtk_image_set_from_icon_name (GTK_IMAGE (priv->priority_icon), "qgn_list_messaging_low", GTK_ICON_SIZE_MENU);
+ gtk_image_set_from_icon_name (GTK_IMAGE (priv->priority_icon), "MODEST_HEADER_ICON_LOW", GTK_ICON_SIZE_MENU);
gtk_widget_show (priv->priority_icon);
priority_action = gtk_ui_manager_get_action (parent_priv->ui_manager,
"/MenuBar/ToolsMenu/MessagePriorityMenu/MessagePriorityLowMenu");
if (response == GTK_RESPONSE_OK) {
wp_text_buffer_enable_rich_text (WP_TEXT_BUFFER (priv->text_buffer), FALSE);
} else {
- GtkToggleAction *action = GTK_TOGGLE_ACTION (gtk_ui_manager_get_action (parent_priv->ui_manager, "/MenuBar/FormatMenu/FileFormatMenu/FileFormatFormattedTextMenu"));
+ 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);
}
}
dialog = hildon_font_selection_dialog_new (GTK_WINDOW (window), NULL);
modest_window_mgr_set_modal (modest_runtime_get_window_mgr(),
- GTK_WINDOW(dialog));
+ GTK_WINDOW(dialog), GTK_WINDOW (window));
/* First we get the currently selected font information */
wp_text_buffer_get_attributes (WP_TEXT_BUFFER (priv->text_buffer), &oldfmt, TRUE);
NULL);
modest_window_mgr_set_modal (modest_runtime_get_window_mgr (),
- GTK_WINDOW (dialog));
+ GTK_WINDOW (dialog), GTK_WINDOW (window));
gtk_widget_show_all (dialog);
priv->font_dialog = dialog;
response = gtk_dialog_run (GTK_DIALOG (dialog));
return TRUE;
if (gtk_text_buffer_get_modified (priv->text_buffer))
return TRUE;
- account_name = modest_combo_box_get_active_id (MODEST_COMBO_BOX (priv->from_field));
+ account_name = modest_selector_picker_get_active_id (MODEST_SELECTOR_PICKER (priv->from_field));
if (!priv->original_account_name || strcmp(account_name, priv->original_account_name)) {
return TRUE;
}
priv->msg_uid = NULL;
}
priv->msg_uid = modest_tny_folder_get_header_unique_id (header);
- if (GTK_WIDGET_REALIZED (window))
- modest_window_mgr_register_window (mgr, MODEST_WINDOW (window));
+ if (GTK_WIDGET_REALIZED (window)) {
+ if (!modest_window_mgr_register_window (mgr, MODEST_WINDOW (window), NULL)) {
+ gtk_widget_destroy (GTK_WIDGET (window));
+ return;
+ }
+ }
}
priv->draft_msg = draft;
ModestMsgEditWindowPrivate *priv = MODEST_MSG_EDIT_WINDOW_GET_PRIVATE (userdata);
gchar *tag_name;
- if (tag == NULL+13) return;
+ if (tag == NULL) return;
g_object_get (G_OBJECT (tag), "name", &tag_name, NULL);
if ((tag_name != NULL) && (g_str_has_prefix (tag_name, "image-tag-replace-"))) {
replace_with_images (window, priv->images);