#include "modest-scroll-area.h"
#include "modest-hildon-includes.h"
+#ifdef MODEST_HAVE_HILDON0_WIDGETS
+#include <hildon-widgets/hildon-color-chooser.h>
+#endif
#include "widgets/modest-msg-edit-window-ui.h"
+#ifdef MODEST_HAVE_HILDON0_WIDGETS
+#include <libgnomevfs/gnome-vfs-mime-utils.h>
+#else
#include <libgnomevfs/gnome-vfs-mime.h>
+#endif
#include "modest-maemo-utils.h"
static void style_insensitive_press (GtkWidget *widget, ModestMsgEditWindow *editor);
static void remove_attachment_insensitive_press (GtkWidget *widget, ModestMsgEditWindow *editor);
static void zoom_insensitive_press (GtkWidget *widget, ModestMsgEditWindow *editor);
+static void paste_insensitive_press (GtkWidget *widget, ModestMsgEditWindow *editor);
static void setup_insensitive_handlers (ModestMsgEditWindow *editor);
static void reset_modified (ModestMsgEditWindow *editor);
-static gboolean is_modified (ModestMsgEditWindow *editor);
static void text_buffer_refresh_attributes (WPTextBuffer *buffer, ModestMsgEditWindow *window);
static void text_buffer_delete_range (GtkTextBuffer *buffer, GtkTextIter *start, GtkTextIter *end, gpointer userdata);
gulong system_clipboard_change_handler_id;
TnyMsg *draft_msg;
+ gboolean sent;
};
#define MODEST_MSG_EDIT_WINDOW_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE((o), \
priv->draft_msg = NULL;
priv->clipboard_change_handler_id = 0;
priv->system_clipboard_change_handler_id = 0;
+ priv->sent = FALSE;
}
GtkSizeGroup *size_group;
GtkWidget *frame;
- GtkWidget *scroll_area;
GtkWidget *subject_box;
GtkWidget *attachment_icon;
GtkWidget *window_box;
gtk_container_add (GTK_CONTAINER(obj), window_box);
priv->scroll_area = modest_scroll_area_new (priv->scroll, priv->msg_body);
gtk_container_add (GTK_CONTAINER (frame), priv->scroll_area);
+
+ /*
+ TODO: scroll_area was never instantiated.
+ Stop building without warnings-as-errors. murrayc.
gtk_container_set_focus_vadjustment (GTK_CONTAINER (scroll_area),
gtk_scrolled_window_get_vadjustment (GTK_SCROLLED_WINDOW (priv->scroll)));
+ */
priv->clipboard_change_handler_id = g_signal_connect (G_OBJECT (gtk_clipboard_get (GDK_SELECTION_PRIMARY)), "owner-change",
G_CALLBACK (modest_msg_edit_window_clipboard_owner_change), obj);
G_OBJECT_CLASS(parent_class)->finalize (obj);
}
-static gboolean
-on_delete_event (GtkWidget *widget, GdkEvent *event, ModestMsgEditWindow *self)
-{
- GtkWidget *close_dialog;
- ModestMsgEditWindowPrivate *priv;
- gint response;
-
- priv = MODEST_MSG_EDIT_WINDOW_GET_PRIVATE (self);
- modest_window_save_state (MODEST_WINDOW (self));
- if (is_modified (self)) {
- close_dialog = hildon_note_new_confirmation (GTK_WINDOW (self), _("mcen_nc_no_email_message_modified_save_changes"));
- response = gtk_dialog_run (GTK_DIALOG (close_dialog));
- gtk_widget_destroy (close_dialog);
-
- if (response != GTK_RESPONSE_CANCEL) {
- modest_ui_actions_on_save_to_drafts (NULL, self);
- }
- }
-/* /\* remove old message from drafts *\/ */
-/* if (priv->draft_msg) { */
-/* TnyHeader *header = tny_msg_get_header (priv->draft_msg); */
-/* TnyAccount *account = modest_tny_account_store_get_server_account (modest_runtime_get_account_store(), */
-/* account_name, */
-/* TNY_ACCOUNT_TYPE_STORE); */
-/* TnyFolder *folder = modest_tny_account_get_special_folder (account, TNY_FOLDER_TYPE_DRAFTS); */
-/* g_return_val_if_fail (TNY_IS_HEADER (header), FALSE); */
-/* g_return_val_if_fail (TNY_IS_FOLDER (folder), FALSE); */
-/* tny_folder_remove_msg (folder, header, NULL); */
-/* g_object_unref (folder); */
-/* g_object_unref (header); */
-/* g_object_unref (priv->draft_msg); */
-/* priv->draft_msg = NULL; */
-/* } */
- gtk_widget_destroy (GTK_WIDGET (self));
-
- return TRUE;
-}
-
static GtkWidget *
menubar_to_menu (GtkUIManager *ui_manager)
{
if (to)
modest_recpt_editor_set_recipients (MODEST_RECPT_EDITOR (priv->to_field), to);
- if (cc)
+ if (cc) {
modest_recpt_editor_set_recipients (MODEST_RECPT_EDITOR (priv->cc_field), cc);
- if (bcc)
+ gtk_widget_set_no_show_all (priv->cc_caption, FALSE);
+ gtk_widget_show (priv->cc_caption);
+ } else if (!modest_conf_get_bool (modest_runtime_get_conf (), MODEST_CONF_SHOW_CC, NULL)) {
+ gtk_widget_set_no_show_all (priv->cc_caption, FALSE);
+ gtk_widget_hide (priv->cc_caption);
+ }
+ if (bcc) {
modest_recpt_editor_set_recipients (MODEST_RECPT_EDITOR (priv->bcc_field), bcc);
+ gtk_widget_set_no_show_all (priv->cc_caption, FALSE);
+ gtk_widget_show (priv->bcc_caption);
+ } else if (!modest_conf_get_bool (modest_runtime_get_conf (), MODEST_CONF_SHOW_BCC, NULL)) {
+ gtk_widget_set_no_show_all (priv->bcc_caption, FALSE);
+ gtk_widget_hide (priv->bcc_caption);
+ }
if (subject)
gtk_entry_set_text (GTK_ENTRY(priv->subject_field), subject);
modest_msg_edit_window_set_priority_flags (MODEST_MSG_EDIT_WINDOW(self),
gtk_window_set_icon_from_file (GTK_WINDOW(obj), MODEST_APP_ICON, NULL);
- g_signal_connect (G_OBJECT(obj), "delete-event",
- G_CALLBACK(on_delete_event), obj);
-
modest_window_set_active_account (MODEST_WINDOW(obj), account_name);
modest_msg_edit_window_setup_toolbar (MODEST_MSG_EDIT_WINDOW (obj));
const gchar *mime_type;
gchar *basename;
gchar *content_id;
-
+#ifdef MODEST_HAVE_HILDON0_WIDGETS
+ mime_type = gnome_vfs_get_mime_type(filename);
+#else
mime_type = gnome_vfs_get_file_mime_type_fast (filename, NULL);
+#endif
mime_part = tny_platform_factory_new_mime_part
(modest_runtime_get_platform_factory ());
stream = TNY_STREAM (tny_fs_stream_new (file_id));
GdkColor *new_color;
priv = MODEST_MSG_EDIT_WINDOW_GET_PRIVATE (window);
-#ifdef MODEST_HILDON_VERSION_0
+#ifdef MODEST_HAVE_HILDON0_WIDGETS
new_color = hildon_color_button_get_color (HILDON_COLOR_BUTTON (priv->font_color_button));
#else
GdkColor col;
hildon_color_button_get_color (HILDON_COLOR_BUTTON(priv->font_color_button), &col);
new_color = &col;
-#endif /*MODEST_HILDON_VERSION_0*/
+#endif /*#ifdef MODEST_HAVE_HILDON0_WIDGETS*/
wp_text_buffer_set_attribute (WP_TEXT_BUFFER (priv->text_buffer), WPT_FORECOLOR, (gpointer) new_color);
parent_priv = MODEST_WINDOW_GET_PRIVATE (window);
zoom_radio_action = GTK_RADIO_ACTION (gtk_ui_manager_get_action (parent_priv->ui_manager,
"/MenuBar/ViewMenu/ZoomMenu/Zoom50Menu"));
+#ifdef MODEST_HAVE_HILDON0_WIDGETS
+ /* FIXME: Not availible before Gtk 2.10 */
+#else
gtk_radio_action_set_current_value (zoom_radio_action, (gint) (zoom*100.0+0.1));
+#endif
}
static gdouble
gboolean show)
{
ModestMsgEditWindowPrivate *priv = NULL;
+ const gchar *recipients;
g_return_if_fail (MODEST_IS_MSG_EDIT_WINDOW (window));
priv = MODEST_MSG_EDIT_WINDOW_GET_PRIVATE (window);
gtk_widget_set_no_show_all (priv->cc_caption, TRUE);
- if (show)
+ recipients = modest_recpt_editor_get_recipients (MODEST_RECPT_EDITOR (priv->cc_field));
+ if ((show) || ((recipients != NULL) && (recipients[0] != '\0')))
gtk_widget_show (priv->cc_caption);
else
gtk_widget_hide (priv->cc_caption);
gboolean show)
{
ModestMsgEditWindowPrivate *priv = NULL;
+ const gchar *recipients;
g_return_if_fail (MODEST_IS_MSG_EDIT_WINDOW (window));
priv = MODEST_MSG_EDIT_WINDOW_GET_PRIVATE (window);
gtk_widget_set_no_show_all (priv->bcc_caption, TRUE);
- if (show)
+ recipients = modest_recpt_editor_get_recipients (MODEST_RECPT_EDITOR (priv->bcc_field));
+ if ((show) || ((recipients != NULL) && (recipients[0] != '\0')))
gtk_widget_show (priv->bcc_caption);
else
gtk_widget_hide (priv->bcc_caption);
g_signal_connect (G_OBJECT (widget), "insensitive-press", G_CALLBACK (remove_attachment_insensitive_press), window);
widget = gtk_ui_manager_get_widget (parent_priv->ui_manager, "/MenuBar/ViewMenu/ZoomMenu");
g_signal_connect (G_OBJECT (widget), "insensitive-press", G_CALLBACK (zoom_insensitive_press), window);
+
+ widget = gtk_ui_manager_get_widget (parent_priv->ui_manager, "/MenuBar/EditMenu/PasteMenu");
+ g_signal_connect (G_OBJECT (widget), "insensitive-press", G_CALLBACK (paste_insensitive_press), window);
}
static void
gtk_text_buffer_set_modified (priv->text_buffer, FALSE);
}
-static gboolean
-is_modified (ModestMsgEditWindow *editor)
+gboolean
+modest_msg_edit_window_is_modified (ModestMsgEditWindow *editor)
{
ModestMsgEditWindowPrivate *priv = MODEST_MSG_EDIT_WINDOW_GET_PRIVATE (editor);
GtkTextBuffer *buffer;
ModestWindowPrivate *parent_priv = MODEST_WINDOW_GET_PRIVATE (window);
GtkAction *action = NULL;
GtkClipboard *clipboard = NULL;
+ GtkWidget *focused;
+ gboolean active;
+
+ focused = gtk_window_get_focus (GTK_WINDOW (window));
clipboard = gtk_clipboard_get (GDK_SELECTION_CLIPBOARD);
+ active = gtk_clipboard_wait_is_text_available (clipboard);
+
+ if (active) {
+ if (MODEST_IS_ATTACHMENTS_VIEW (focused))
+ active = FALSE;
+ }
action = gtk_ui_manager_get_action (parent_priv->ui_manager, "/MenuBar/EditMenu/PasteMenu");
- gtk_action_set_sensitive (action, gtk_clipboard_wait_is_text_available (clipboard));
+ gtk_action_set_sensitive (action, active);
}
+static void
+paste_insensitive_press (GtkWidget *widget, ModestMsgEditWindow *editor)
+{
+ GtkWidget *focused = gtk_window_get_focus (GTK_WINDOW (editor));
+
+ if (MODEST_IS_ATTACHMENTS_VIEW (focused))
+ hildon_banner_show_information (NULL, NULL, dgettext("hildon-common-strings", "ckct_ib_unable_to_paste_here"));
+ else
+ hildon_banner_show_information (NULL, NULL, dgettext("hildon-common-strings", "ecoc_ib_edwin_nothing_to_paste"));
+
+}
+
+
static void
modest_msg_edit_window_system_clipboard_owner_change (GtkClipboard *clipboard,
GdkEvent *event,
update_zoom_dimming (window);
}
+
+gboolean
+modest_msg_edit_window_get_sent (ModestMsgEditWindow *window)
+{
+ ModestMsgEditWindowPrivate *priv;
+
+ priv = MODEST_MSG_EDIT_WINDOW_GET_PRIVATE(window);
+ return priv->sent;
+}
+
+void
+modest_msg_edit_window_set_sent (ModestMsgEditWindow *window,
+ gboolean sent)
+{
+ ModestMsgEditWindowPrivate *priv;
+
+ priv = MODEST_MSG_EDIT_WINDOW_GET_PRIVATE(window);
+ priv->sent = sent;
+}