diff options
author | Matthew Barnes <mbarnes@src.gnome.org> | 2008-09-07 12:02:27 +0800 |
---|---|---|
committer | Matthew Barnes <mbarnes@src.gnome.org> | 2008-09-07 12:02:27 +0800 |
commit | 52d683e48cf1103a9806da95c72abce2db3ae1f4 (patch) | |
tree | b6cee16af70a03666a2d7add2e5bff5c6ed8035c /shell/e-shell-window-actions.c | |
parent | eca687589d106ff87cd4fca7bf581cb0532caf96 (diff) | |
download | gsoc2013-evolution-52d683e48cf1103a9806da95c72abce2db3ae1f4.tar.gz gsoc2013-evolution-52d683e48cf1103a9806da95c72abce2db3ae1f4.tar.zst gsoc2013-evolution-52d683e48cf1103a9806da95c72abce2db3ae1f4.zip |
Progress update:
- Contacts module mostly working now.
- View and search UI not yet working.
- Still refining shell design.
svn path=/branches/kill-bonobo/; revision=36268
Diffstat (limited to 'shell/e-shell-window-actions.c')
-rw-r--r-- | shell/e-shell-window-actions.c | 132 |
1 files changed, 123 insertions, 9 deletions
diff --git a/shell/e-shell-window-actions.c b/shell/e-shell-window-actions.c index 44d82e8bbe..9983d77f36 100644 --- a/shell/e-shell-window-actions.c +++ b/shell/e-shell-window-actions.c @@ -22,10 +22,10 @@ #include <string.h> -#include <e-util/e-dialog-utils.h> -#include <e-util/e-error.h> -#include <e-util/e-print.h> -#include <e-util/e-util.h> +#include <e-dialog-utils.h> +#include <e-error.h> +#include <e-print.h> +#include <e-util.h> #include <gal-define-views-dialog.h> #include <libedataserverui/e-passwords.h> @@ -859,6 +859,77 @@ action_quit_cb (GtkAction *action, } static void +action_search_advanced_cb (GtkAction *action, + EShellWindow *shell_window) +{ +} + +static void +action_search_clear_cb (GtkAction *action, + EShellWindow *shell_window) +{ + EShellView *shell_view; + GtkWidget *widget; + const gchar *view_name; + + /* Dig up the search bar. */ + view_name = e_shell_window_get_current_view (shell_window); + shell_view = e_shell_window_get_view (shell_window, view_name); + widget = e_shell_view_get_content_widget (shell_view); + widget = e_shell_content_get_search_bar (E_SHELL_CONTENT (widget)); + + e_search_bar_set_search_text (E_SEARCH_BAR (widget), NULL); +} + +static void +action_search_edit_cb (GtkAction *action, + EShellWindow *shell_window) +{ + EShellView *shell_view; + RuleContext *context; + RuleEditor *editor; + GtkWidget *widget; + const gchar *filename; + const gchar *view_name; + + /* Dig up the search bar. */ + view_name = e_shell_window_get_current_view (shell_window); + shell_view = e_shell_window_get_view (shell_window, view_name); + widget = e_shell_view_get_content_widget (shell_view); + widget = e_shell_content_get_search_bar (E_SHELL_CONTENT (widget)); + + context = e_search_bar_get_context (E_SEARCH_BAR (widget)); + g_return_if_fail (context != NULL); + + /* XXX I don't know why the RuleContext can't just store + * system and user file names properly. Fix this? */ + filename = g_object_get_data (G_OBJECT (context), "user"); + g_return_if_fail (filename != NULL); + + editor = rule_editor_new ( + context, FILTER_SOURCE_INCOMING, _("Searches")); + gtk_window_set_title (GTK_WINDOW (editor), _("Searches")); + + if (gtk_dialog_run (GTK_DIALOG (editor)) == GTK_RESPONSE_OK) + rule_context_save (context, filename); + + gtk_widget_destroy (GTK_WIDGET (editor)); +} + +static void +action_search_execute_cb (GtkAction *action, + EShellWindow *shell_window) +{ + gtk_action_set_sensitive (action, FALSE); +} + +static void +action_search_save_cb (GtkAction *action, + EShellWindow *shell_window) +{ +} + +static void action_send_receive_cb (GtkAction *action, EShellWindow *shell_window) { @@ -910,12 +981,12 @@ static void action_show_switcher_cb (GtkToggleAction *action, EShellWindow *shell_window) { - GtkWidget *widget; + EShellSwitcher *switcher; gboolean active; - widget = shell_window->priv->switcher; + switcher = E_SHELL_SWITCHER (shell_window->priv->switcher); active = gtk_toggle_action_get_active (action); - g_object_set (widget, "visible", active, NULL); + e_shell_switcher_set_visible (switcher, active); } static void @@ -1102,6 +1173,41 @@ static GtkActionEntry shell_entries[] = { N_("Exit the program"), G_CALLBACK (action_quit_cb) }, + { "search-advanced", + NULL, + N_("_Advanced Search..."), + NULL, + N_("Construct a more advanced search"), + G_CALLBACK (action_search_advanced_cb) }, + + { "search-clear", + GTK_STOCK_CLEAR, + NULL, + "<Control><Shift>q", + N_("Clear the current search parameters"), + G_CALLBACK (action_search_clear_cb) }, + + { "search-edit", + NULL, + N_("_Edit Saved Searches..."), + NULL, + N_("Manage your saved searches"), + G_CALLBACK (action_search_edit_cb) }, + + { "search-execute", + GTK_STOCK_FIND, + N_("_Find Now"), + NULL, + N_("Execute the current search parameters"), + G_CALLBACK (action_search_execute_cb) }, + + { "search-save", + NULL, + N_("_Save Search..."), + NULL, + N_("Save the current search parameters"), + G_CALLBACK (action_search_save_cb) }, + { "send-receive", "mail-send-receive", N_("Send / _Receive"), @@ -1534,6 +1640,7 @@ e_shell_window_create_shell_view_actions (EShellWindow *shell_window) EShellViewClass *class; GtkRadioAction *action; const gchar *view_name; + gchar *accelerator; gchar *action_name; gchar *tooltip; @@ -1588,8 +1695,14 @@ e_shell_window_create_shell_view_actions (EShellWindow *shell_window) gtk_radio_action_set_group (action, group); group = gtk_radio_action_get_group (action); - gtk_action_group_add_action ( - action_group, GTK_ACTION (action)); + /* The first nine views have accelerators Ctrl+(1-9). */ + if (ii < 9) + accelerator = g_strdup_printf ("<Control>%d", ii + 1); + else + accelerator = g_strdup (""); + + gtk_action_group_add_action_with_accel ( + action_group, GTK_ACTION (action), accelerator); e_shell_switcher_add_action (switcher, GTK_ACTION (action)); @@ -1599,6 +1712,7 @@ e_shell_window_create_shell_view_actions (EShellWindow *shell_window) action_name, action_name, GTK_UI_MANAGER_AUTO, FALSE); + g_free (accelerator); g_free (action_name); g_free (tooltip); |