*/
#include <modest-header-window.h>
-#include <modest-osso-state-saving.h>
-#include <libosso.h>
-#include <hildon/hildon-pannable-area.h>
-#include <hildon/hildon-helper.h>
+#include <hildon/hildon.h>
+#include <modest-scrollable.h>
#include <modest-window-mgr.h>
#include <modest-window-priv.h>
#include <modest-signal-mgr.h>
#include <modest-ui-actions.h>
#include <modest-platform.h>
#include <modest-text-utils.h>
-#include <hildon/hildon-button.h>
-#include <hildon/hildon-program.h>
-#include <hildon/hildon-banner.h>
#include <modest-ui-dimming-rules.h>
#include <modest-tny-folder.h>
#include <tny-simple-list.h>
GtkWidget *contents_view;
GtkWidget *top_vbox;
GtkWidget *new_message_button;
+ GtkWidget *show_more_button;
/* state bar */
ContentsState contents_state;
/* signals */
GSList *sighandlers;
gulong queue_change_handler;
- gulong sort_column_handler;
gulong notify_model;
/* progress hint */
gboolean progress_hint;
gchar *current_store_account;
- /* sort button */
- GtkWidget *sort_button;
-
/* CSM menu */
GtkWidget *csm_menu;
gdouble x_coord;
static gboolean on_map_event (GtkWidget *widget,
GdkEvent *event,
gpointer userdata);
+#ifdef MODEST_TOOLKIT_HILDON2
static void on_vertical_movement (HildonPannableArea *area,
HildonMovementDirection direction,
gdouble x, gdouble y, gpointer user_data);
+static void on_horizontal_movement (HildonPannableArea *hildonpannable,
+ gint direction,
+ gdouble initial_x,
+ gdouble initial_y,
+ gpointer user_data);
+#endif
static void on_queue_changed (ModestMailOperationQueue *queue,
ModestMailOperation *mail_op,
ModestMailOperationQueueNotification type,
static void on_progress_list_changed (ModestWindowMgr *mgr,
ModestHeaderWindow *self);
static void update_progress_hint (ModestHeaderWindow *self);
-static void on_sort_column_changed (GtkTreeSortable *treesortable,
- gpointer user_data);
-static void update_sort_button (ModestHeaderWindow *self);
-static void on_horizontal_movement (HildonPannableArea *hildonpannable,
- gint direction,
- gdouble initial_x,
- gdouble initial_y,
- gpointer user_data);
static void on_header_view_model_destroyed (gpointer user_data,
GObject *model);
static gboolean on_key_press(GtkWidget *widget,
priv->autoscroll = TRUE;
priv->progress_hint = FALSE;
priv->queue_change_handler = 0;
- priv->sort_column_handler = 0;
priv->model_weak_ref = NULL;
priv->current_store_account = NULL;
- priv->sort_button = NULL;
priv->new_message_button = NULL;
priv->x_coord = 0;
priv->y_coord = 0;
g_object_weak_unref ((GObject *) priv->model_weak_ref,
on_header_view_model_destroyed,
obj);
- if (g_signal_handler_is_connected (G_OBJECT (priv->model_weak_ref),
- priv->sort_column_handler)) {
- g_signal_handler_disconnect (G_OBJECT (priv->model_weak_ref),
- priv->sort_column_handler);
- }
on_header_view_model_destroyed (obj, (GObject *) priv->model_weak_ref);
}
priv->queue_change_handler = 0;
}
- if (priv->header_view) {
- GtkTreeModel *sortable;
-
- sortable = gtk_tree_view_get_model (GTK_TREE_VIEW (priv->header_view));
- if (sortable) {
- if (g_signal_handler_is_connected (G_OBJECT (sortable),
- priv->sort_column_handler)) {
- g_signal_handler_disconnect (G_OBJECT (sortable),
- priv->sort_column_handler);
- priv->sort_column_handler = 0;
- }
- }
- }
-
modest_signal_mgr_disconnect_all_and_destroy (priv->sighandlers);
priv->sighandlers = NULL;
"map-event",
G_CALLBACK (on_map_event),
self);
-
- priv->sighandlers =
- modest_signal_mgr_connect (priv->sighandlers,
- G_OBJECT (priv->contents_view),
- "vertical-movement",
- G_CALLBACK (on_vertical_movement),
- self);
+#ifdef MODEST_TOOLKIT_HILDON2
+ if (HILDON_IS_PANNABLE_AREA (priv->contents_view)) {
+ priv->sighandlers =
+ modest_signal_mgr_connect (priv->sighandlers,
+ G_OBJECT (priv->contents_view),
+ "vertical-movement",
+ G_CALLBACK (on_vertical_movement),
+ self);
+ }
+#endif
/* Mail Operation Queue */
priv->sighandlers = modest_signal_mgr_connect (priv->sighandlers,
"clicked",
G_CALLBACK (modest_ui_actions_on_new_msg), self);
+#ifdef MODEST_TOOLKIT_HILDON2
/* Delete using horizontal gesture */
/* DISABLED because it's unreliabile */
- if (FALSE) {
- priv->sighandlers =
- modest_signal_mgr_connect (priv->sighandlers,
- (GObject *) priv->contents_view,
- "horizontal-movement",
- G_CALLBACK (on_horizontal_movement),
- self);
+ if (HILDON_IS_PANNABLE_AREA (priv->contents_view)) {
+ if (FALSE) {
+ priv->sighandlers =
+ modest_signal_mgr_connect (priv->sighandlers,
+ (GObject *) priv->contents_view,
+ "horizontal-movement",
+ G_CALLBACK (on_horizontal_movement),
+ self);
+ }
}
+#endif
g_signal_connect(G_OBJECT(self), "key-press-event",
priv = MODEST_HEADER_WINDOW_GET_PRIVATE (self);
priv->model_weak_ref = NULL;
- priv->sort_column_handler = 0;
}
static void
g_object_weak_unref ((GObject *) priv->model_weak_ref,
on_header_view_model_destroyed,
self);
- if (g_signal_handler_is_connected (G_OBJECT (priv->model_weak_ref),
- priv->sort_column_handler)) {
- g_signal_handler_disconnect (G_OBJECT (priv->model_weak_ref),
- priv->sort_column_handler);
- }
on_header_view_model_destroyed (self, (GObject *) priv->model_weak_ref);
}
return;
/* Connect the signal. Listen to object destruction to disconnect it */
- priv->sort_column_handler = g_signal_connect ((GObject *) model,
- "sort-column-changed",
- G_CALLBACK (on_sort_column_changed),
- self);
priv->model_weak_ref = model;
g_object_weak_ref ((GObject *) model, on_header_view_model_destroyed, self);
}
return viewport;
}
+#ifdef MODEST_TOOLKIT_HILDON2
static void
on_vertical_movement (HildonPannableArea *area,
HildonMovementDirection direction,
priv->autoscroll = FALSE;
}
-
+#endif
ModestWindow *
modest_header_window_new (TnyFolder *folder, const gchar *account_name, const gchar *mailbox)
self = MODEST_HEADER_WINDOW(g_object_new(MODEST_TYPE_HEADER_WINDOW, NULL));
priv = MODEST_HEADER_WINDOW_GET_PRIVATE(self);
- priv->contents_view = hildon_pannable_area_new ();
+ priv->contents_view = modest_toolkit_factory_create_scrollable (modest_runtime_get_toolkit_factory ());
alignment = gtk_alignment_new (0.0, 0.0, 1.0, 1.0);
gtk_alignment_set_padding (GTK_ALIGNMENT (alignment),
HILDON_MARGIN_HALF, 0,
update_view (self, NULL);
- /* Load previous osso state, for instance if we are being restored from
- * hibernation: */
- modest_osso_load_state ();
-
/* Get device name */
modest_maemo_utils_get_device_name ();
folder_name = modest_tny_folder_get_display_name (folder);
}
- gtk_window_set_title (GTK_WINDOW (self), folder_name);
+ modest_window_set_title (MODEST_WINDOW (self), folder_name);
g_free (folder_name);
}
g_free (account_display_name);
update_progress_hint (self);
- update_sort_button (self);
return MODEST_WINDOW(self);
}
g_return_if_fail (MODEST_IS_HEADER_WINDOW(self));
priv = MODEST_HEADER_WINDOW_GET_PRIVATE (self);
- modest_hildon2_window_add_to_menu (MODEST_HILDON2_WINDOW (self), _("mcen_me_new_message"), "<Control>n",
- APP_MENU_CALLBACK (modest_ui_actions_on_new_msg),
- MODEST_DIMMING_CALLBACK (modest_ui_dimming_rules_on_new_msg));
- modest_hildon2_window_add_to_menu (MODEST_HILDON2_WINDOW (self),
- dngettext(GETTEXT_PACKAGE,
- "mcen_me_move_message",
- "mcen_me_move_messages",
- 2),
- NULL,
- APP_MENU_CALLBACK (set_moveto_edit_mode),
- MODEST_DIMMING_CALLBACK (modest_ui_dimming_rules_on_move_to));
- modest_hildon2_window_add_to_menu (MODEST_HILDON2_WINDOW (self), _("mcen_me_delete_messages"), NULL,
- APP_MENU_CALLBACK (set_delete_edit_mode),
- MODEST_DIMMING_CALLBACK (modest_ui_dimming_rules_on_delete));
- modest_hildon2_window_add_to_menu (MODEST_HILDON2_WINDOW (self), _("mcen_me_folder_details"), NULL,
- APP_MENU_CALLBACK (modest_ui_actions_on_details),
- MODEST_DIMMING_CALLBACK (modest_ui_dimming_rules_on_details));
- priv->sort_button = hildon_button_new (MODEST_EDITABLE_SIZE,
- HILDON_BUTTON_ARRANGEMENT_VERTICAL);
- hildon_button_set_title (HILDON_BUTTON (priv->sort_button), _("mcen_me_sort"));
- g_signal_connect_after (G_OBJECT (priv->sort_button), "clicked",
- G_CALLBACK (modest_ui_actions_on_sort), (gpointer) self);
- hildon_button_set_style(HILDON_BUTTON (priv->sort_button), HILDON_BUTTON_STYLE_PICKER);
- hildon_button_set_title_alignment (HILDON_BUTTON (priv->sort_button), 0.5, 0.5);
- hildon_button_set_value_alignment (HILDON_BUTTON (priv->sort_button), 0.5, 0.5);
- modest_hildon2_window_add_button_to_menu (MODEST_HILDON2_WINDOW (self), GTK_BUTTON (priv->sort_button),
- modest_ui_dimming_rules_on_sort);
- modest_hildon2_window_add_to_menu (MODEST_HILDON2_WINDOW (self), _("mcen_me_inbox_sendandreceive"), NULL,
- APP_MENU_CALLBACK (modest_ui_actions_on_send_receive),
- MODEST_DIMMING_CALLBACK (modest_ui_dimming_rules_on_send_receive));
- modest_hildon2_window_add_to_menu (MODEST_HILDON2_WINDOW (self), _("mcen_me_outbox_cancelsend"), NULL,
- APP_MENU_CALLBACK (modest_ui_actions_cancel_send),
- MODEST_DIMMING_CALLBACK (modest_ui_dimming_rules_on_cancel_sending_all));
+ modest_window_add_to_menu (MODEST_WINDOW (self), _("mcen_me_new_message"), "<Control>n",
+ MODEST_WINDOW_MENU_CALLBACK (modest_ui_actions_on_new_msg),
+ MODEST_DIMMING_CALLBACK (modest_ui_dimming_rules_on_new_msg));
+ modest_window_add_to_menu (MODEST_WINDOW (self), _("mcen_me_inbox_sendandreceive"), NULL,
+ MODEST_WINDOW_MENU_CALLBACK (modest_ui_actions_on_send_receive),
+ MODEST_DIMMING_CALLBACK (modest_ui_dimming_rules_on_send_receive));
+ modest_window_add_to_menu (MODEST_WINDOW (self),
+ dngettext(GETTEXT_PACKAGE,
+ "mcen_me_move_message",
+ "mcen_me_move_messages",
+ 2),
+ NULL,
+ MODEST_WINDOW_MENU_CALLBACK (set_moveto_edit_mode),
+ MODEST_DIMMING_CALLBACK (modest_ui_dimming_rules_on_move_to));
+ modest_window_add_to_menu (MODEST_WINDOW (self), _("mcen_me_delete_messages"), NULL,
+ MODEST_WINDOW_MENU_CALLBACK (set_delete_edit_mode),
+ MODEST_DIMMING_CALLBACK (modest_ui_dimming_rules_on_delete));
+ modest_window_add_to_menu (MODEST_WINDOW (self), _("mcen_me_folder_details"), NULL,
+ MODEST_WINDOW_MENU_CALLBACK (modest_ui_actions_on_details),
+ MODEST_DIMMING_CALLBACK (modest_ui_dimming_rules_on_details));
+
+#ifdef MODEST_TOOLKIT_HILDON2
+ priv->show_more_button = hildon_button_new (MODEST_EDITABLE_SIZE, HILDON_BUTTON_ARRANGEMENT_VERTICAL);
+ hildon_button_set_title (HILDON_BUTTON (priv->show_more_button), _("mcen_va_more"));
+ hildon_button_set_alignment (HILDON_BUTTON (priv->show_more_button), 0.5, 0.5, 1.0, 1.0);
+ hildon_button_set_title_alignment (HILDON_BUTTON (priv->show_more_button), 0.5, 0.5);
+ hildon_button_set_value_alignment (HILDON_BUTTON (priv->show_more_button), 0.5, 0.5);
+ modest_window_add_item_to_menu (MODEST_WINDOW (self), GTK_BUTTON (priv->show_more_button),
+ NULL);
+ gtk_widget_hide_all (priv->show_more_button);
+#endif
+
+ modest_window_add_to_menu (MODEST_WINDOW (self), _("mcen_me_outbox_cancelsend"), NULL,
+ MODEST_WINDOW_MENU_CALLBACK (modest_ui_actions_cancel_send),
+ MODEST_DIMMING_CALLBACK (modest_ui_dimming_rules_on_cancel_sending_all));
}
static void
TnyFolder *folder;
g_return_if_fail (MODEST_IS_HEADER_WINDOW(self));
+
+ /* It could happen when some event is received and the window
+ was previously closed */
+ if (!MODEST_IS_HEADER_WINDOW (self))
+ return;
+
priv = MODEST_HEADER_WINDOW_GET_PRIVATE (self);
folder = modest_header_view_get_folder ((ModestHeaderView *) priv->header_view);
g_return_val_if_fail (MODEST_IS_HEADER_WINDOW (self), FALSE);
if (priv->autoscroll)
- hildon_pannable_area_jump_to (HILDON_PANNABLE_AREA (priv->contents_view), 0.0, 0.0);
+ modest_scrollable_jump_to (MODEST_SCROLLABLE (priv->contents_view), 0.0, 0.0);
return FALSE;
}
}
}
-static void
-on_sort_column_changed (GtkTreeSortable *treesortable,
- gpointer user_data)
-{
- update_sort_button (MODEST_HEADER_WINDOW (user_data));
-}
-
-static void
-update_sort_button (ModestHeaderWindow *self)
-{
- ModestHeaderWindowPrivate *priv;
- GtkTreeSortable *sortable;
- gint current_sort_colid = -1;
- GtkSortType current_sort_type;
- const gchar *value = NULL;
-
- priv = MODEST_HEADER_WINDOW_GET_PRIVATE (self);
-
- /* This could happen as the first time the model is set the
- header_view is still not assigned to priv->header_view */
- if (!priv->header_view)
- return;
-
- sortable = GTK_TREE_SORTABLE (gtk_tree_view_get_model (GTK_TREE_VIEW (priv->header_view)));
-
- if (!gtk_tree_sortable_get_sort_column_id (sortable,
- ¤t_sort_colid, ¤t_sort_type)) {
- value = _("mcen_li_sort_sender_date_newest");
- } else {
- switch (current_sort_colid) {
- case TNY_GTK_HEADER_LIST_MODEL_FLAGS_COLUMN:
- {
- GList *cols = NULL;
- cols = modest_header_view_get_columns (MODEST_HEADER_VIEW (priv->header_view));
- if (cols != NULL) {
- gpointer flags_sort_type_pointer;
- flags_sort_type_pointer = g_object_get_data (G_OBJECT (cols->data),
- MODEST_HEADER_VIEW_FLAG_SORT);
- if (GPOINTER_TO_INT (flags_sort_type_pointer) == TNY_HEADER_FLAG_PRIORITY_MASK)
- value = _("mcen_li_sort_priority");
- else
- value = _("mcen_li_sort_attachment");
- g_list_free(cols);
- }
- }
- break;
- case TNY_GTK_HEADER_LIST_MODEL_TO_COLUMN:
- case TNY_GTK_HEADER_LIST_MODEL_FROM_COLUMN:
- if (current_sort_type == GTK_SORT_ASCENDING)
- value = _("mcen_li_sort_sender_recipient_az");
- else
- value = _("mcen_li_sort_sender_recipient_za");
- break;
- case TNY_GTK_HEADER_LIST_MODEL_DATE_SENT_TIME_T_COLUMN:
- case TNY_GTK_HEADER_LIST_MODEL_DATE_RECEIVED_TIME_T_COLUMN:
- if (current_sort_type == GTK_SORT_ASCENDING)
- value = _("mcen_li_sort_date_oldest");
- else
- value = _("mcen_li_sort_date_newest");
- break;
- case TNY_GTK_HEADER_LIST_MODEL_SUBJECT_COLUMN:
- if (current_sort_type == GTK_SORT_ASCENDING)
- value = _("mcen_li_sort_subject_az");
- else
- value = _("mcen_li_sort_subject_za");
- break;
- case TNY_GTK_HEADER_LIST_MODEL_MESSAGE_SIZE_COLUMN:
- if (current_sort_type == GTK_SORT_ASCENDING)
- value = _("mcen_li_sort_size_smallest");
- else
- value = _("mcen_li_sort_size_largest");
- break;
- }
- }
-
- hildon_button_set_value (HILDON_BUTTON (priv->sort_button), value?value:"");
-}
-
+#ifdef MODEST_TOOLKIT_HILDON2
static void
on_horizontal_movement (HildonPannableArea *hildonpannable,
gint direction,
g_object_unref (header);
}
}
-
+#endif
static gboolean
on_key_press(GtkWidget *widget, GdkEventKey *event, gpointer user_data)
{
ModestHeaderWindowPrivate *priv;
- HildonPannableArea *pannable;
+ ModestScrollable *scrollable;
/* FIXME: set scroll_speed depends on for how long the key was pressed */
gint scroll_speed = 3;
priv = MODEST_HEADER_WINDOW_GET_PRIVATE(user_data);
- pannable = HILDON_PANNABLE_AREA (priv->contents_view);
+ scrollable = MODEST_SCROLLABLE (priv->contents_view);
switch (event->keyval) {
case GDK_Up:
priv->autoscroll = FALSE;
- modest_maemo_utils_scroll_pannable(pannable, 0, -scroll_speed);
+ modest_scrollable_scroll (scrollable, 0, -scroll_speed);
break;
case GDK_Down:
priv->autoscroll = FALSE;
- modest_maemo_utils_scroll_pannable(pannable, 0, scroll_speed);
+ modest_scrollable_scroll (scrollable, 0, scroll_speed);
break;
}