Files
evolution/mail/folder-browser.h
Peter Williams 866a960fd9 Fix bug #215... desensitize menu items based on the number of selected
2001-08-09  Peter Williams  <peterw@ximian.com>

	Fix bug #215... desensitize menu items based on the number of
	selected messages (and whether there's a message in the pane)

	* folder-browser-ui.c (folder_browser_ui_add_message): Sensitize
	the menu items appropriately based on the old state.
	(fbui_sensitize_items): New function. Set the sensitivity of a
	list of commands.
	(folder_browser_ui_set_selection_state): New function. Move the FB
	to a new state of selected-ness, and sensitize menu items
	appropriately.
	(folder_browser_ui_message_loaded): New function. When notified
	that a message has been loaded, sensitize some menu items.

	* folder-browser-ui.h: Prototype new functions.

	* folder-browser.h: New enumeration,
	FolderBrowserSelectionState, that records the previous state
	of the selection (_NONE, _SINGLE, _MULTIPLE).

	* folder-browser.c (got_folder): If the component is set,
	set our selection state to _NONE, because that's the default
	state of the ETree.
	(on_selection_changed): When the number of selected messages
	is updated, notify the FBUI code of our new state.
	(folder_browser_gui_init): Hook up to the selection_changed
	signal and default to the _NONE selection state.
	(done_message_selected): Notify when a message is loaded.

2001-08-08  Peter Williams  <peterw@ximian.com>

	* mail-folder-cache.c: Display how many messages are selected,
	too.
	(make_folder_status): If multiple messages are selected, add that
	to the string (the 0 and 1 cases are boring)
	(selection_changed): New function, update the selected count.
	(mail_folder_cache_note_fb): Connect to the selection_changed
	signal.

svn path=/trunk/; revision=12012
2001-08-14 15:26:00 +00:00

162 lines
5.5 KiB
C

/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
#ifndef _FOLDER_BROWSER_H_
#define _FOLDER_BROWSER_H_
#include <gtk/gtktable.h>
#include "camel/camel-stream.h"
#include <bonobo/bonobo-property-bag.h>
#include <bonobo/bonobo-ui-component.h>
#include <widgets/misc/e-filter-bar.h>
#include "widgets/menus/gal-view-menus.h"
#include "filter/filter-rule.h"
#include "filter/filter-context.h" /*eek*/
#include "message-list.h"
#include "mail-display.h"
#include "mail-types.h"
#include "shell/Evolution.h"
#define FOLDER_BROWSER_TYPE (folder_browser_get_type ())
#define FOLDER_BROWSER(o) (GTK_CHECK_CAST ((o), FOLDER_BROWSER_TYPE, FolderBrowser))
#define FOLDER_BROWSER_CLASS(k) (GTK_CHECK_CLASS_CAST((k), FOLDER_BROWSER_TYPE, FolderBrowserClass))
#define IS_FOLDER_BROWSER(o) (GTK_CHECK_TYPE ((o), FOLDER_BROWSER_TYPE))
#define IS_FOLDER_BROWSER_CLASS(k) (GTK_CHECK_CLASS_TYPE ((k), FOLDER_BROWSER_TYPE))
typedef enum _FolderBrowserSelectionState {
FB_SELSTATE_NONE,
FB_SELSTATE_SINGLE,
FB_SELSTATE_MULTIPLE,
FB_SELSTATE_UNDEFINED
} FolderBrowserSelectionState;
struct _FolderBrowser {
GtkTable parent;
BonoboPropertyBag *properties;
GNOME_Evolution_Shell shell;
BonoboUIComponent *uicomp;
/*
* The current URI being displayed by the FolderBrowser
*/
char *uri;
CamelFolder *folder;
int unread_count; /* last known unread message count */
/* async loading stuff */
char *loading_uid;/* what uid am i loading now */
char *pending_uid; /* what uid should i load next */
char *new_uid; /* place to save the next uid during idle timeout */
char *loaded_uid; /* what we have loaded */
guint loading_id, seen_id;
/* a folder we are expunging, dont use other than to compare the pointer value */
CamelFolder *expunging;
/* set to true when we are reconfiguring stuff == can't do much else */
int reconfigure;
MessageList *message_list;
MailDisplay *mail_display;
GtkWidget *vpaned;
EFilterBar *search;
FilterRule *search_full; /* if we have a full search active */
gboolean preview_shown;
gboolean threaded;
gboolean pref_master;
FolderBrowserSelectionState selection_state;
/* View collection and the menu handler object */
GalViewCollection *view_collection;
GalViewMenus *view_menus;
GtkWidget *invisible;
GByteArray *clipboard_selection;
};
typedef struct {
GtkTableClass parent_class;
/* signals */
void (*folder_loaded) (FolderBrowser *fb, const char *uri);
void (*message_loaded) (FolderBrowser *fb, const char *uid);
} FolderBrowserClass;
struct fb_ondemand_closure {
FilterRule *rule;
FolderBrowser *fb;
gchar *path;
};
GtkType folder_browser_get_type (void);
GtkWidget *folder_browser_new (const GNOME_Evolution_Shell shell);
void folder_browser_set_ui_component (FolderBrowser *fb,
BonoboUIComponent *uicomp);
gboolean folder_browser_set_uri (FolderBrowser *folder_browser,
const char *uri);
void folder_browser_set_message_preview (FolderBrowser *folder_browser,
gboolean show_message_preview);
void folder_browser_clear_search (FolderBrowser *fb);
void folder_browser_cut (GtkWidget *widget, FolderBrowser *fb);
void folder_browser_copy (GtkWidget *widget, FolderBrowser *fb);
void folder_browser_paste (GtkWidget *widget, FolderBrowser *fb);
/* callbacks for functions on the folder-browser */
void vfolder_subject (GtkWidget *w, FolderBrowser *fb);
void vfolder_sender (GtkWidget *w, FolderBrowser *fb);
void vfolder_recipient (GtkWidget *w, FolderBrowser *fb);
void vfolder_mlist (GtkWidget *w, FolderBrowser *fb);
void filter_subject (GtkWidget *w, FolderBrowser *fb);
void filter_sender (GtkWidget *w, FolderBrowser *fb);
void filter_recipient (GtkWidget *w, FolderBrowser *fb);
void filter_mlist (GtkWidget *w, FolderBrowser *fb);
void hide_read(GtkWidget *w, FolderBrowser *fb);
void hide_deleted(GtkWidget *w, FolderBrowser *fb);
void hide_selected(GtkWidget *w, FolderBrowser *fb);
void hide_none(GtkWidget *w, FolderBrowser *fb);
void hide_subject(GtkWidget *w, FolderBrowser *fb);
void hide_sender(GtkWidget *w, FolderBrowser *fb);
void folder_browser_toggle_preview (BonoboUIComponent *component,
const char *path,
Bonobo_UIComponent_EventType type,
const char *state,
gpointer user_data);
void folder_browser_toggle_threads (BonoboUIComponent *component,
const char *path,
Bonobo_UIComponent_EventType type,
const char *state,
gpointer user_data);
void folder_browser_toggle_hide_deleted (BonoboUIComponent *component,
const char *path,
Bonobo_UIComponent_EventType type,
const char *state,
gpointer user_data);
void folder_browser_set_message_display_style (BonoboUIComponent *component,
const char *path,
Bonobo_UIComponent_EventType type,
const char *state,
gpointer user_data);
gboolean folder_browser_is_drafts (FolderBrowser *fb);
gboolean folder_browser_is_sent (FolderBrowser *fb);
gboolean folder_browser_is_outbox (FolderBrowser *fb);
#endif /* _FOLDER_BROWSER_H_ */