1 /* 2 * 3 * This program is free software; you can redistribute it and/or modify it 4 * under the terms of the GNU Lesser General Public License as published by 5 * the Free Software Foundation. 6 * 7 * This program is distributed in the hope that it will be useful, but 8 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 9 * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 10 * for more details. 11 * 12 * You should have received a copy of the GNU Lesser General Public License 13 * along with this program; if not, see <http://www.gnu.org/licenses/>. 14 * 15 * 16 * Authors: 17 * Michel Zucchi <notzed@ximian.com> 18 * 19 * Copyright (C) 1999-2008 Novell, Inc. (www.novell.com) 20 * 21 */ 22 23 #ifndef EM_EVENT_H 24 #define EM_EVENT_H 25 26 #include <composer/e-msg-composer.h> 27 28 /* Standard GObject macros */ 29 #define EM_TYPE_EVENT \ 30 (em_event_get_type ()) 31 #define EM_EVENT(obj) \ 32 (G_TYPE_CHECK_INSTANCE_CAST \ 33 ((obj), EM_TYPE_EVENT, EMEvent)) 34 #define EM_EVENT_CLASS(cls) \ 35 (G_TYPE_CHECK_CLASS_CAST \ 36 ((cls), EM_TYPE_EVENT, EMEventClass)) 37 #define EM_IS_EVENT(obj) \ 38 (G_TYPE_CHECK_INSTANCE_TYPE \ 39 ((obj), EM_TYPE_EVENT)) 40 #define EM_IS_EVENT_CLASS(cls) \ 41 (G_TYPE_CHECK_CLASS_TYPE \ 42 ((cls), EM_TYPE_EVENT)) 43 #define EM_EVENT_GET_CLASS(obj) \ 44 (G_TYPE_INSTANCE_GET_CLASS \ 45 ((obj), EM_TYPE_EVENT, EMEventClass)) 46 47 G_BEGIN_DECLS 48 49 typedef struct _EMEvent EMEvent; 50 typedef struct _EMEventClass EMEventClass; 51 typedef struct _EMEventPrivate EMEventPrivate; 52 53 /* Current target description */ 54 enum _em_event_target_t { 55 EM_EVENT_TARGET_FOLDER, 56 EM_EVENT_TARGET_MESSAGE, 57 EM_EVENT_TARGET_COMPOSER, 58 EM_EVENT_TARGET_SEND_RECEIVE, 59 EM_EVENT_TARGET_CUSTOM_ICON, 60 EM_EVENT_TARGET_FOLDER_UNREAD 61 }; 62 63 /* Flags that describe TARGET_FOLDER */ 64 enum { 65 EM_EVENT_FOLDER_NEWMAIL = 1<< 0 66 }; 67 68 /* Flags that describe TARGET_MESSAGE */ 69 enum { 70 EM_EVENT_MESSAGE_REPLY_ALL = 1<< 0, 71 EM_EVENT_MESSAGE_REPLY = 1<< 1 72 }; 73 74 /* Flags that describe TARGET_COMPOSER */ 75 enum { 76 EM_EVENT_COMPOSER_SEND_OPTION = 1<< 0 77 }; 78 79 /* Flags that describe TARGET_SEND_RECEIVE*/ 80 enum { 81 EM_EVENT_SEND_RECEIVE = 1<< 0 82 }; 83 84 /* Flags that describe TARGET_CUSTOM_ICON*/ 85 enum { 86 EM_EVENT_CUSTOM_ICON = 1<< 0 87 }; 88 89 typedef struct _EMEventTargetFolder EMEventTargetFolder; 90 91 struct _EMEventTargetFolder { 92 EEventTarget target; 93 CamelStore *store; 94 gchar *folder_name; 95 guint new; 96 gboolean is_inbox; 97 gchar *display_name; 98 gchar *full_display_name; 99 100 /* valid (non-NULL) when only one new message reported */ 101 gchar *msg_uid; 102 gchar *msg_sender; 103 gchar *msg_subject; 104 }; 105 106 typedef struct _EMEventTargetFolderUnread EMEventTargetFolderUnread; 107 108 struct _EMEventTargetFolderUnread { 109 EEventTarget target; 110 CamelStore *store; 111 gchar *folder_uri; 112 guint unread; 113 gboolean is_inbox; 114 }; 115 116 typedef struct _EMEventTargetMessage EMEventTargetMessage; 117 118 struct _EMEventTargetMessage { 119 EEventTarget target; 120 CamelFolder *folder; 121 gchar *uid; 122 CamelMimeMessage *message; 123 EMsgComposer *composer; 124 }; 125 126 typedef struct _EMEventTargetComposer EMEventTargetComposer; 127 128 struct _EMEventTargetComposer { 129 EEventTarget target; 130 EMsgComposer *composer; 131 }; 132 133 typedef struct _EMEventTargetSendReceive EMEventTargetSendReceive; 134 135 struct _EMEventTargetSendReceive { 136 EEventTarget target; 137 GtkWidget *grid; 138 gpointer data; 139 gint row; 140 }; 141 142 typedef struct _EMEventTargetCustomIcon EMEventTargetCustomIcon; 143 144 struct _EMEventTargetCustomIcon { 145 EEventTarget target; 146 GtkTreeStore *store; 147 GtkTreeIter *iter; 148 const gchar *folder_name; 149 }; 150 151 typedef struct _EEventItem EMEventItem; 152 153 /* The object */ 154 struct _EMEvent { 155 EEvent popup; 156 EMEventPrivate *priv; 157 }; 158 159 struct _EMEventClass { 160 EEventClass popup_class; 161 }; 162 163 GType em_event_get_type (void); 164 EMEvent * em_event_peek (void); 165 EMEventTargetFolder * 166 em_event_target_new_folder (EMEvent *emp, 167 CamelStore *store, 168 const gchar *folder_name, 169 guint32 count_new_msgs, 170 const gchar *msg_uid, 171 const gchar *msg_sender, 172 const gchar *msg_subject); 173 EMEventTargetFolderUnread * 174 em_event_target_new_folder_unread 175 (EMEvent *emp, 176 CamelStore *store, 177 const gchar *folder_uri, 178 guint32 count_unread_msgs); 179 EMEventTargetComposer * 180 em_event_target_new_composer (EMEvent *emp, 181 EMsgComposer *composer, 182 guint32 flags); 183 EMEventTargetMessage * 184 em_event_target_new_message (EMEvent *emp, 185 CamelFolder *folder, 186 CamelMimeMessage *message, 187 const gchar *uid, 188 guint32 flags, 189 EMsgComposer *composer); 190 EMEventTargetSendReceive * 191 em_event_target_new_send_receive 192 (EMEvent *eme, 193 GtkWidget *grid, 194 gpointer data, 195 gint row, 196 guint32 flags); 197 EMEventTargetCustomIcon * 198 em_event_target_new_custom_icon (EMEvent *eme, 199 GtkTreeStore *store, 200 GtkTreeIter *iter, 201 const gchar *uri, 202 guint32 flags); 203 204 G_END_DECLS 205 206 #endif /* EM_EVENT_H */ 207