void e_mail_shell_view_restore_state (EMailShellView *mail_shell_view) { EMailShellContent *mail_shell_content; EShellSearchbar *searchbar; EMailReader *reader; EMailView *mail_view; CamelFolder *folder; CamelVeeFolder *vee_folder; const gchar *old_state_group; gchar *folder_uri; gchar *new_state_group; /* XXX Move this to EMailShellContent. */ g_return_if_fail (E_IS_MAIL_SHELL_VIEW (mail_shell_view)); mail_shell_content = mail_shell_view->priv->mail_shell_content; mail_view = e_mail_shell_content_get_mail_view (mail_shell_content); searchbar = e_mail_shell_content_get_searchbar (mail_shell_content); reader = E_MAIL_READER (mail_view); folder = e_mail_reader_ref_folder (reader); if (folder == NULL) { if (e_shell_searchbar_get_state_group (searchbar)) { e_shell_searchbar_set_state_group (searchbar, NULL); e_shell_searchbar_load_state (searchbar); } return; } /* Do not restore state if we're running a "Current Account" * or "All Accounts" search, since we don't want the search * criteria to be destroyed in those cases. */ vee_folder = mail_shell_view->priv->search_account_all; if (vee_folder != NULL && folder == CAMEL_FOLDER (vee_folder)) goto exit; vee_folder = mail_shell_view->priv->search_account_current; if (vee_folder != NULL && folder == CAMEL_FOLDER (vee_folder)) goto exit; folder_uri = e_mail_folder_uri_from_folder (folder); new_state_group = g_strdup_printf ("Folder %s", folder_uri); old_state_group = e_shell_searchbar_get_state_group (searchbar); g_free (folder_uri); /* Avoid loading search state unnecessarily. */ if (g_strcmp0 (new_state_group, old_state_group) != 0) { e_shell_searchbar_set_state_group (searchbar, new_state_group); e_shell_searchbar_load_state (searchbar); } g_free (new_state_group); exit: g_clear_object (&folder); }
static void shell_searchbar_save_search_filter (EShellSearchbar *searchbar) { EShellView *shell_view; EActionComboBox *action_combo_box; GtkRadioAction *radio_action; GKeyFile *key_file; const gchar *action_name; const gchar *state_group; const gchar *key; shell_view = e_shell_searchbar_get_shell_view (searchbar); state_group = e_shell_searchbar_get_state_group (searchbar); g_return_if_fail (state_group != NULL); key = STATE_KEY_SEARCH_FILTER; key_file = e_shell_view_get_state_key_file (shell_view); action_combo_box = e_shell_searchbar_get_filter_combo_box (searchbar); radio_action = e_action_combo_box_get_action (action_combo_box); if (radio_action != NULL) radio_action = e_radio_action_get_current_action (radio_action); if (radio_action != NULL) { action_name = gtk_action_get_name (GTK_ACTION (radio_action)); g_key_file_set_string (key_file, state_group, key, action_name); } else g_key_file_remove_key (key_file, state_group, key, NULL); e_shell_view_set_state_dirty (shell_view); }
static void shell_searchbar_save_search_text (EShellSearchbar *searchbar) { EShellView *shell_view; GKeyFile *key_file; const gchar *search_text; const gchar *state_group; const gchar *key; shell_view = e_shell_searchbar_get_shell_view (searchbar); state_group = e_shell_searchbar_get_state_group (searchbar); g_return_if_fail (state_group != NULL); key = STATE_KEY_SEARCH_TEXT; key_file = e_shell_view_get_state_key_file (shell_view); search_text = e_shell_searchbar_get_search_text (searchbar); if (search_text != NULL && *search_text != '\0') g_key_file_set_string (key_file, state_group, key, search_text); else g_key_file_remove_key (key_file, state_group, key, NULL); e_shell_view_set_state_dirty (shell_view); }
static void shell_searchbar_get_property (GObject *object, guint property_id, GValue *value, GParamSpec *pspec) { switch (property_id) { case PROP_EXPRESS_MODE: g_value_set_boolean ( value, e_shell_searchbar_get_express_mode ( E_SHELL_SEARCHBAR (object))); return; case PROP_FILTER_COMBO_BOX: g_value_set_object ( value, e_shell_searchbar_get_filter_combo_box ( E_SHELL_SEARCHBAR (object))); return; case PROP_LABELS_VISIBLE: g_value_set_boolean ( value, e_shell_searchbar_get_labels_visible ( E_SHELL_SEARCHBAR (object))); return; case PROP_FILTER_VISIBLE: g_value_set_boolean ( value, e_shell_searchbar_get_filter_visible ( E_SHELL_SEARCHBAR (object))); return; case PROP_SEARCH_HINT: g_value_set_string ( value, e_shell_searchbar_get_search_hint ( E_SHELL_SEARCHBAR (object))); return; case PROP_SEARCH_OPTION: g_value_set_object ( value, e_shell_searchbar_get_search_option ( E_SHELL_SEARCHBAR (object))); return; case PROP_SEARCH_TEXT: g_value_set_string ( value, e_shell_searchbar_get_search_text ( E_SHELL_SEARCHBAR (object))); return; case PROP_SEARCH_VISIBLE: g_value_set_boolean ( value, e_shell_searchbar_get_search_visible ( E_SHELL_SEARCHBAR (object))); return; case PROP_SCOPE_COMBO_BOX: g_value_set_object ( value, e_shell_searchbar_get_scope_combo_box ( E_SHELL_SEARCHBAR (object))); return; case PROP_SCOPE_VISIBLE: g_value_set_boolean ( value, e_shell_searchbar_get_scope_visible ( E_SHELL_SEARCHBAR (object))); return; case PROP_SHELL_VIEW: g_value_set_object ( value, e_shell_searchbar_get_shell_view ( E_SHELL_SEARCHBAR (object))); return; case PROP_STATE_GROUP: g_value_set_string ( value, e_shell_searchbar_get_state_group ( E_SHELL_SEARCHBAR (object))); return; } G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); }