Statistics
| Revision:

root / src / summaryview.h @ 1913

History | View | Annotate | Download (8.4 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 *statlabel_folder;
79
        GtkWidget *statlabel_select;
80
        GtkWidget *statlabel_msgs;
81
        GtkWidget *toggle_eventbox;
82
        GtkWidget *toggle_arrow;
83
        GtkWidget *popupmenu;
84
        GtkWidget *colorlabel_menu;
85
86
        GtkItemFactory *popupfactory;
87
88
        GtkWidget *reedit_menuitem;
89
        GtkWidget *reedit_separator;
90
        GtkWidget *junk_menuitem;
91
        GtkWidget *nojunk_menuitem;
92
        GtkWidget *junk_separator;
93
94
        GtkWidget *window;
95
96
        GtkTreeRowReference *selected;
97
        GtkTreeRowReference *displayed;
98
99
        GList *selection_list;
100
101
        gboolean display_msg;
102
103
        SummaryColumnState col_state[N_SUMMARY_VISIBLE_COLS];
104
        gint col_pos[N_SUMMARY_VISIBLE_COLS];
105
106
        GdkColor color_marked;
107
        GdkColor color_dim;
108
109
        guint lock_count;
110
111
        MainWindow  *mainwin;
112
        FolderView  *folderview;
113
        HeaderView  *headerview;
114
        MessageView *messageview;
115
116
        FolderItem *folder_item;
117
118
        /* current message status */
119
        gint64 total_size;
120
        gint deleted;
121
        gint moved;
122
        gint copied;
123
124
/*
125
private:
126
*/
127
        /* table for looking up message-id */
128
        GHashTable *msgid_table;
129
130
        /* all message list */
131
        GSList *all_mlist;
132
        /* filtered message list */
133
        GSList *flt_mlist;
134
135
        gint64 total_flt_msg_size;
136
        gint flt_msg_total;
137
        gint flt_deleted;
138
        gint flt_moved;
139
        gint flt_copied;
140
        gint flt_new;
141
        gint flt_unread;
142
143
        gboolean on_filter;
144
145
        /* list for moving/deleting messages */
146
        GSList *tmp_mlist;
147
        FolderItem *to_folder;
148
        /* table for updating folder tree */
149
        GHashTable *folder_table;
150
        /* counter for filtering */
151
        gint filtered;
152
        gint flt_count;
153
        gint flt_total;
154
155
        gboolean on_button_press;
156
157
        /* for DnD */
158
        gboolean can_toggle_selection;
159
        gboolean on_drag;
160
        GtkTreePath *pressed_path;
161
        gchar *drag_list;
162
163
        /* unthreading */
164
        GSList *pos_list;
165
};
166
167
SummaryView        *summary_create(void);
168
169
void summary_init                  (SummaryView                *summaryview);
170
gboolean summary_show                  (SummaryView                *summaryview,
171
                                   FolderItem                *fitem,
172
                                   gboolean                 update_cache);
173
void summary_clear_list                  (SummaryView                *summaryview);
174
void summary_clear_all                  (SummaryView                *summaryview);
175
176
void summary_lock                  (SummaryView                *summaryview);
177
void summary_unlock                  (SummaryView                *summaryview);
178
gboolean summary_is_locked          (SummaryView                *summaryview);
179
180
SummarySelection summary_get_selection_type        (SummaryView        *summaryview);
181
GSList *summary_get_selected_msg_list                (SummaryView        *summaryview);
182
GSList *summary_get_changed_msg_list                (SummaryView        *summaryview);
183
GSList *summary_get_msg_list                        (SummaryView        *summaryview);
184
GSList *summary_get_flagged_msg_list                (SummaryView        *summaryview,
185
                                                 MsgPermFlags         flags);
186
187
MsgInfo *summary_get_msginfo_by_msgnum                (SummaryView        *summaryview,
188
                                                 guint                 msgnum);
189
190
void summary_select_prev_unread          (SummaryView                *summaryview);
191
void summary_select_next_unread          (SummaryView                *summaryview);
192
void summary_select_prev_new          (SummaryView                *summaryview);
193
void summary_select_next_new          (SummaryView                *summaryview);
194
void summary_select_prev_marked          (SummaryView                *summaryview);
195
void summary_select_next_marked          (SummaryView                *summaryview);
196
void summary_select_prev_labeled  (SummaryView                *summaryview);
197
void summary_select_next_labeled  (SummaryView                *summaryview);
198
void summary_select_by_msgnum          (SummaryView                *summaryview,
199
                                   guint                 msgnum);
200
gboolean summary_select_by_msginfo(SummaryView                *summaryview,
201
                                   MsgInfo                *msginfo);
202
203
void summary_select_row                  (SummaryView                *summaryview,
204
                                   GtkTreeIter                *iter,
205
                                   gboolean                 display_msg,
206
                                   gboolean                 do_refresh);
207
208
void summary_thread_build          (SummaryView                *summaryview);
209
void summary_unthread                  (SummaryView                *summaryview);
210
211
void summary_expand_threads          (SummaryView                *summaryview);
212
void summary_collapse_threads          (SummaryView                *summaryview);
213
214
void summary_filter                  (SummaryView                *summaryview,
215
                                   gboolean                 selected_only);
216
void summary_filter_open          (SummaryView                *summaryview,
217
                                   FilterCreateType         type);
218
219
void summary_filter_junk          (SummaryView                *summaryview,
220
                                   gboolean                 selected_only);
221
222
void summary_junk                  (SummaryView                *summaryview);
223
void summary_not_junk                  (SummaryView                *summaryview);
224
225
void summary_sort                  (SummaryView                *summaryview,
226
                                   FolderSortKey         sort_key,
227
                                   FolderSortType         sort_type);
228
229
void summary_delete                  (SummaryView                *summaryview);
230
void summary_delete_duplicated          (SummaryView                *summaryview);
231
232
gboolean summary_execute          (SummaryView                *summaryview);
233
234
void summary_attract_by_subject          (SummaryView                *summaryview);
235
236
gint summary_write_cache          (SummaryView                *summaryview);
237
238
void summary_pass_key_press_event (SummaryView                *summaryview,
239
                                   GdkEventKey                *event);
240
241
void summary_display_msg_selected (SummaryView                *summaryview,
242
                                   gboolean                 new_window,
243
                                   gboolean                 all_headers);
244
void summary_redisplay_msg          (SummaryView                *summaryview);
245
void summary_open_msg                  (SummaryView                *summaryview);
246
void summary_view_source          (SummaryView                *summaryview);
247
void summary_reedit                  (SummaryView                *summaryview);
248
gboolean summary_step                  (SummaryView                *summaryview,
249
                                   GtkScrollType         type);
250
void summary_toggle_view          (SummaryView                *summaryview);
251
252
void summary_update_selected_rows (SummaryView                *summaryview);
253
void summary_update_by_msgnum          (SummaryView                *summaryview,
254
                                   guint                 msgnum);
255
256
void summary_move_selected_to          (SummaryView                *summaryview,
257
                                   FolderItem                *to_folder);
258
void summary_move_to                  (SummaryView                *summaryview);
259
void summary_copy_selected_to          (SummaryView                *summaryview,
260
                                   FolderItem                *to_folder);
261
void summary_copy_to                  (SummaryView                *summaryview);
262
void summary_save_as                  (SummaryView                *summaryview);
263
void summary_print                  (SummaryView                *summaryview);
264
void summary_mark                  (SummaryView                *summaryview);
265
void summary_unmark                  (SummaryView                *summaryview);
266
void summary_mark_as_unread          (SummaryView                *summaryview);
267
void summary_mark_as_read          (SummaryView                *summaryview);
268
void summary_mark_thread_as_read  (SummaryView                *summaryview);
269
void summary_mark_all_read          (SummaryView                *summaryview);
270
void summary_add_address          (SummaryView                *summaryview);
271
void summary_select_all                  (SummaryView                *summaryview);
272
void summary_unselect_all          (SummaryView                *summaryview);
273
void summary_select_thread          (SummaryView                *summaryview);
274
275
void summary_reply                  (SummaryView                *summaryview,
276
                                   ComposeMode                 mode);
277
278
void summary_set_colorlabel          (SummaryView                *summaryview,
279
                                   guint                 labelcolor,
280
                                   GtkWidget                *widget);
281
282
void summary_set_column_order          (SummaryView                *summaryview);
283
void summary_get_column_order          (SummaryView                *summaryview);
284
285
void summary_qsearch_reset          (SummaryView                *summaryview);
286
void summary_qsearch_clear_entry  (SummaryView                *summaryview);
287
void summary_qsearch                  (SummaryView                *summaryview);
288
289
#endif /* __SUMMARY_H__ */