Statistics
| Revision:

root / src / summaryview.h @ 1695

History | View | Annotate | Download (8.2 kB)

1
/*
2
 * Sylpheed -- a GTK+ based, lightweight, and fast e-mail client
3
 * Copyright (C) 1999-2007 Hiroyuki Yamamoto
4
 *
5
 * This program is free software; you can redistribute it and/or modify
6
 * it under the terms of the GNU General Public License as published by
7
 * the Free Software Foundation; either version 2 of the License, or
8
 * (at your option) any later version.
9
 *
10
 * This program is distributed in the hope that it will be useful,
11
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
 * GNU General Public License for more details.
14
 *
15
 * You should have received a copy of the GNU General Public License
16
 * along with this program; if not, write to the Free Software
17
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18
 */
19
20
#ifndef __SUMMARY_H__
21
#define __SUMMARY_H__
22
23
#include <glib.h>
24
#include <gdk/gdk.h>
25
#include <gtk/gtkwidget.h>
26
#include <gtk/gtkitemfactory.h>
27
#include <gtk/gtktreestore.h>
28
#include <gtk/gtktreeview.h>
29
#include <gtk/gtkdnd.h>
30
31
typedef struct _SummaryView                SummaryView;
32
typedef struct _SummaryColumnState        SummaryColumnState;
33
34
#include "enums.h"
35
#include "mainwindow.h"
36
#include "folderview.h"
37
#include "headerview.h"
38
#include "messageview.h"
39
#include "compose.h"
40
#include "filter.h"
41
#include "folder.h"
42
#include "procmsg.h"
43
44
typedef enum
45
{
46
        SUMMARY_NONE,
47
        SUMMARY_SELECTED_NONE,
48
        SUMMARY_SELECTED_SINGLE,
49
        SUMMARY_SELECTED_MULTIPLE
50
} SummarySelection;
51
52
struct _SummaryColumnState
53
{
54
        SummaryColumnType type;
55
        gboolean visible;
56
};
57
58
struct _SummaryView
59
{
60
        GtkWidget *vbox;
61
62
        GtkWidget *search_hbox;
63
        GtkWidget *filter_optmenu;
64
        GtkWidget *filter_menu;
65
        GtkWidget *search_label;
66
        GtkWidget *search_entry;
67
        GtkWidget *search_clear_btn;
68
69
        GtkWidget *scrolledwin;
70
        GtkWidget *treeview;
71
72
        GtkTreeStore *store;
73
        GtkTreeSelection *selection;
74
        GtkTreeViewColumn *columns[N_SUMMARY_VISIBLE_COLS];
75
76
        GtkWidget *hseparator;
77
        GtkWidget *hbox;
78
        GtkWidget *hbox_l;
79
        GtkWidget *statlabel_folder;
80
        GtkWidget *statlabel_select;
81
        GtkWidget *statlabel_msgs;
82
        GtkWidget *toggle_eventbox;
83
        GtkWidget *toggle_arrow;
84
        GtkWidget *popupmenu;
85
        GtkWidget *colorlabel_menu;
86
87
        GtkItemFactory *popupfactory;
88
89
        GtkWidget *reedit_menuitem;
90
        GtkWidget *reedit_separator;
91
        GtkWidget *junk_menuitem;
92
        GtkWidget *nojunk_menuitem;
93
        GtkWidget *junk_separator;
94
95
        GtkWidget *window;
96
97
        GtkTreeRowReference *selected;
98
        GtkTreeRowReference *displayed;
99
100
        GList *selection_list;
101
102
        gboolean display_msg;
103
104
        SummaryColumnState col_state[N_SUMMARY_VISIBLE_COLS];
105
        gint col_pos[N_SUMMARY_VISIBLE_COLS];
106
107
        GdkColor color_marked;
108
        GdkColor color_dim;
109
110
        guint lock_count;
111
112
        MainWindow  *mainwin;
113
        FolderView  *folderview;
114
        HeaderView  *headerview;
115
        MessageView *messageview;
116
117
        FolderItem *folder_item;
118
119
        /* current message status */
120
        gint64 total_size;
121
        gint deleted;
122
        gint moved;
123
        gint copied;
124
125
/*
126
private:
127
*/
128
        /* table for looking up message-id */
129
        GHashTable *msgid_table;
130
131
        /* all message list */
132
        GSList *all_mlist;
133
        /* filtered message list */
134
        GSList *flt_mlist;
135
136
        gint64 total_flt_msg_size;
137
        gint flt_msg_total;
138
        gint flt_deleted;
139
        gint flt_moved;
140
        gint flt_copied;
141
        gint flt_new;
142
        gint flt_unread;
143
144
        gboolean on_filter;
145
146
        /* list for moving/deleting messages */
147
        GSList *tmp_mlist;
148
        FolderItem *to_folder;
149
        /* table for updating folder tree */
150
        GHashTable *folder_table;
151
        /* counter for filtering */
152
        gint filtered;
153
        gint flt_count;
154
        gint flt_total;
155
156
        gboolean on_button_press;
157
158
        /* for DnD */
159
        gboolean can_toggle_selection;
160
        gboolean on_drag;
161
        GtkTreePath *pressed_path;
162
        gchar *drag_list;
163
164
        /* unthreading */
165
        GSList *pos_list;
166
};
167
168
SummaryView        *summary_create(void);
169
170
void summary_init                  (SummaryView                *summaryview);
171
gboolean summary_show                  (SummaryView                *summaryview,
172
                                   FolderItem                *fitem,
173
                                   gboolean                 update_cache);
174
void summary_clear_list                  (SummaryView                *summaryview);
175
void summary_clear_all                  (SummaryView                *summaryview);
176
177
void summary_lock                  (SummaryView                *summaryview);
178
void summary_unlock                  (SummaryView                *summaryview);
179
gboolean summary_is_locked          (SummaryView                *summaryview);
180
181
SummarySelection summary_get_selection_type        (SummaryView        *summaryview);
182
GSList *summary_get_selected_msg_list                (SummaryView        *summaryview);
183
GSList *summary_get_changed_msg_list                (SummaryView        *summaryview);
184
GSList *summary_get_msg_list                        (SummaryView        *summaryview);
185
GSList *summary_get_flagged_msg_list                (SummaryView        *summaryview,
186
                                                 MsgPermFlags         flags);
187
188
void summary_select_prev_unread          (SummaryView                *summaryview);
189
void summary_select_next_unread          (SummaryView                *summaryview);
190
void summary_select_prev_new          (SummaryView                *summaryview);
191
void summary_select_next_new          (SummaryView                *summaryview);
192
void summary_select_prev_marked          (SummaryView                *summaryview);
193
void summary_select_next_marked          (SummaryView                *summaryview);
194
void summary_select_prev_labeled  (SummaryView                *summaryview);
195
void summary_select_next_labeled  (SummaryView                *summaryview);
196
void summary_select_by_msgnum          (SummaryView                *summaryview,
197
                                   guint                 msgnum);
198
gboolean summary_select_by_msginfo(SummaryView                *summaryview,
199
                                   MsgInfo                *msginfo);
200
void summary_select_row                  (SummaryView                *summaryview,
201
                                   GtkTreeIter                *iter,
202
                                   gboolean                 display_msg,
203
                                   gboolean                 do_refresh);
204
205
void summary_thread_build          (SummaryView                *summaryview);
206
void summary_unthread                  (SummaryView                *summaryview);
207
208
void summary_expand_threads          (SummaryView                *summaryview);
209
void summary_collapse_threads          (SummaryView                *summaryview);
210
211
void summary_filter                  (SummaryView                *summaryview,
212
                                   gboolean                 selected_only);
213
void summary_filter_open          (SummaryView                *summaryview,
214
                                   FilterCreateType         type);
215
216
void summary_filter_junk          (SummaryView                *summaryview,
217
                                   gboolean                 selected_only);
218
219
void summary_junk                  (SummaryView                *summaryview);
220
void summary_not_junk                  (SummaryView                *summaryview);
221
222
void summary_sort                  (SummaryView                *summaryview,
223
                                   FolderSortKey         sort_key,
224
                                   FolderSortType         sort_type);
225
226
void summary_delete                  (SummaryView                *summaryview);
227
void summary_delete_duplicated          (SummaryView                *summaryview);
228
229
gboolean summary_execute          (SummaryView                *summaryview);
230
231
void summary_attract_by_subject          (SummaryView                *summaryview);
232
233
gint summary_write_cache          (SummaryView                *summaryview);
234
235
void summary_pass_key_press_event (SummaryView                *summaryview,
236
                                   GdkEventKey                *event);
237
238
void summary_display_msg_selected (SummaryView                *summaryview,
239
                                   gboolean                 new_window,
240
                                   gboolean                 all_headers);
241
void summary_redisplay_msg          (SummaryView                *summaryview);
242
void summary_open_msg                  (SummaryView                *summaryview);
243
void summary_view_source          (SummaryView                *summaryview);
244
void summary_reedit                  (SummaryView                *summaryview);
245
gboolean summary_step                  (SummaryView                *summaryview,
246
                                   GtkScrollType         type);
247
void summary_toggle_view          (SummaryView                *summaryview);
248
249
void summary_update_selected_rows (SummaryView                *summaryview);
250
251
void summary_move_selected_to          (SummaryView                *summaryview,
252
                                   FolderItem                *to_folder);
253
void summary_move_to                  (SummaryView                *summaryview);
254
void summary_copy_selected_to          (SummaryView                *summaryview,
255
                                   FolderItem                *to_folder);
256
void summary_copy_to                  (SummaryView                *summaryview);
257
void summary_save_as                  (SummaryView                *summaryview);
258
void summary_print                  (SummaryView                *summaryview);
259
void summary_mark                  (SummaryView                *summaryview);
260
void summary_unmark                  (SummaryView                *summaryview);
261
void summary_mark_as_unread          (SummaryView                *summaryview);
262
void summary_mark_as_read          (SummaryView                *summaryview);
263
void summary_mark_thread_as_read  (SummaryView                *summaryview);
264
void summary_mark_all_read          (SummaryView                *summaryview);
265
void summary_add_address          (SummaryView                *summaryview);
266
void summary_select_all                  (SummaryView                *summaryview);
267
void summary_unselect_all          (SummaryView                *summaryview);
268
void summary_select_thread          (SummaryView                *summaryview);
269
270
void summary_reply                  (SummaryView                *summaryview,
271
                                   ComposeMode                 mode);
272
273
void summary_set_colorlabel          (SummaryView                *summaryview,
274
                                   guint                 labelcolor,
275
                                   GtkWidget                *widget);
276
277
void summary_set_column_order          (SummaryView                *summaryview);
278
void summary_get_column_order          (SummaryView                *summaryview);
279
280
void summary_qsearch_reset          (SummaryView                *summaryview);
281
void summary_qsearch_clear_entry  (SummaryView                *summaryview);
282
void summary_qsearch                  (SummaryView                *summaryview);
283
284
#endif /* __SUMMARY_H__ */