1 /*
2 **  Constants.h
3 **
4 **  Copyright (c) 2003-2007 Ludovic Marcotte
5 **  Copyright (C) 2014-2018 Riccardo Mottola
6 **
7 **  Author: Ludovic Marcotte <ludovic@Sophos.ca>
8 **          Riccardo Mottola <rm@gnu.org>
9 **
10 **  This program is free software; you can redistribute it and/or modify
11 **  it under the terms of the GNU General Public License as published by
12 **  the Free Software Foundation; either version 2 of the License, or
13 **  (at your option) any later version.
14 **
15 **  This program is distributed in the hope that it will be useful,
16 **  but WITHOUT ANY WARRANTY; without even the implied warranty of
17 **  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18 **  GNU General Public License for more details.
19 **
20 ** You should have received a copy of the GNU General Public License
21 ** along with this program.  If not, see <http://www.gnu.org/licenses/>.
22 */
23 
24 #ifndef _GNUMail_H_GNUMailConstants
25 #define _GNUMail_H_GNUMailConstants
26 
27 
28 //
29 // Useful macros
30 //
31 #ifdef MACOSX
32 #define RETAIN(object)          [object retain]
33 #define RELEASE(object)         [object release]
34 #define AUTORELEASE(object)     [object autorelease]
35 #define TEST_RELEASE(object)    ({ if (object) [object release]; })
36 #define ASSIGN(object,value)    ({\
37 id __value = (id)(value); \
38 id __object = (id)(object); \
39 if (__value != __object) \
40   { \
41     if (__value != nil) \
42       { \
43         [__value retain]; \
44       } \
45     object = __value; \
46     if (__object != nil) \
47       { \
48         [__object release]; \
49       } \
50   } \
51 })
52 
53 #define DESTROY(object) ({ \
54   if (object) \
55     { \
56       id __o = object; \
57       object = nil; \
58       [__o release]; \
59     } \
60 })
61 
62 #define NSLocalizedString(key, comment) \
63   [[NSBundle mainBundle] localizedStringForKey:(key) value:@"" table:nil]
64 
65 #define _(X) NSLocalizedString (X, @"")
66 
67 
68 //
69 // Only for older Mac versions
70 //
71 #if defined(__APPLE__) && (MAC_OS_X_VERSION_MAX_ALLOWED <= MAC_OS_X_VERSION_10_4)
72 #ifndef NSUInteger
73 #define NSUInteger unsigned int
74 #endif
75 #ifndef NSInteger
76 #define NSInteger int
77 #endif
78 #endif
79 
80 //
81 // Selector comparison as macro on older OS and runtime if available (10.5 Leopard or later)
82 //
83 #if !defined (GNUSTEP) &&  (MAC_OS_X_VERSION_MAX_ALLOWED <= MAC_OS_X_VERSION_10_4)
84 #define sel_isEqual(selector1, selector2) (selector1 ==  selector2)
85 #else
86 #include <objc/runtime.h>
87 #endif
88 
89 #ifdef DEBUG
90 #define NSDebugLog(format, args...) \
91   do { NSLog(format, ##args); } while(0)
92 #else
93 #define NSDebugLog(format, args...)
94 #endif
95 
96 #endif
97 
98 
99 //
100 // Constants for the application
101 //
102 #define RETAIN_PERIOD 300
103 #define THREAD_ARCS_CELL_WIDTH 180
104 #define THREAD_ARCS_CELL_MIN_HEIGHT 105
105 
106 enum {
107   MANUALLY = 0,
108   AUTOMATICALLY = 1,
109   NEVER = 2
110 };
111 
112 enum {
113   SHOW_ALL_HEADERS = 1,
114   HIDE_ALL_HEADERS = 2
115 };
116 
117 enum {
118   DELETE_MESSAGE = 1,
119   UNDELETE_MESSAGE = 2,
120 };
121 
122 enum {
123   MARK_AS_FLAGGED = 1,
124   MARK_AS_UNFLAGGED = 2
125 };
126 
127 enum {
128   MARK_AS_READ = 1,
129   MARK_AS_UNREAD = 2
130 };
131 
132 enum {
133   SHOW_DELETED_MESSAGES = 1,
134   HIDE_DELETED_MESSAGES = 2
135 };
136 
137 enum {
138   SHOW_READ_MESSAGES = 1,
139   HIDE_READ_MESSAGES = 2
140 };
141 
142 enum {
143   THREAD_MESSAGES = 1,
144   UNTHREAD_MESSAGES = 2
145 };
146 
147 enum {
148   OTHER = 0,
149   POP3 = 1,
150   IMAP = 2,
151   UNIX = 3
152 };
153 
154 enum {
155   SECURITY_NONE = 0,
156   SECURITY_SSL = 1,
157   SECURITY_TLS_IF_AVAILABLE = 2,
158   SECURITY_TLS = 3
159 };
160 
161 enum {
162   TRANSPORT_MAILER = 1,
163   TRANSPORT_SMTP = 2
164 };
165 
166 enum {
167   SIGNATURE_BEGINNING = 0,
168   SIGNATURE_END = 1,
169   SIGNATURE_HIDDEN = 2
170 };
171 
172 enum {
173   MOVE_MESSAGES = 1,
174   COPY_MESSAGES = 2
175 };
176 
177 enum {
178   MODE_STANDARD = 1,
179   MODE_EXPERT = 2
180 };
181 
182 enum {
183   TYPE_PLAIN = 1,
184   TYPE_HTML = 2
185 };
186 
187 enum {
188   IMAP_SHOW_ALL = 0,
189   IMAP_SHOW_SUBSCRIBED_ONLY = 1
190 };
191 
192 
193 enum {
194   ACTION_REPLY_TO_MESSAGE = 0,
195   ACTION_VIEW_MESSAGE = 1,
196   ACTION_NO_ACTION = 2
197 };
198 
199 //
200 //
201 //
202 enum {
203   GNUMailComposeMessage,
204   GNUMailForwardMessage,
205   GNUMailRedirectMessage,
206   GNUMailReplyToMessage,
207   GNUMailRestoreFromDrafts
208 };
209 
210 //
211 //
212 //
213 enum {
214   GNUMailDateColumn = 1,
215   GNUMailFlagsColumn = 2,
216   GNUMailFromColumn = 3,
217   GNUMailNumberColumn = 4,
218   GNUMailSizeColumn = 5,
219   GNUMailStatusColumn = 6,
220   GNUMailSubjectColumn = 7
221 };
222 
223 //
224 //
225 //
226 enum {
227   GNUMailSmallIconSize,
228   GNUMailStandardIconSize,
229   GNUMailLargeIconSize
230 };
231 
232 //
233 //
234 //
235 enum {
236   GNUMailDrawerView = 0,
237   GNUMailFloatingView = 1,
238   GNUMail3PaneView = 2,
239   GNUMailWidescreenView = 3
240 };
241 
242 //
243 // Constants for the UI
244 //
245 enum {
246   TextFieldHeight = 21,
247   ButtonHeight = 25,
248 };
249 
250 
251 //
252 // Notifications used in GNUMail
253 //
254 extern NSString *AccountsHaveChanged;
255 extern NSString *FiltersHaveChanged;
256 extern NSString *FontValuesHaveChanged;
257 extern NSString *MessageThreadingNotification;
258 extern NSString *ReloadMessageList;
259 extern NSString *TableColumnsHaveChanged;
260 
261 //
262 // Operations and attributes for folders and messages
263 //
264 extern NSString *FolderExpireDate;
265 extern NSString *MessageData;
266 extern NSString *MessageDestinationChangeEncoding;
267 extern NSString *MessageDestinationFolder;
268 extern NSString *MessageDestinationPasteboard;
269 extern NSString *MessageDestinationStore;
270 extern NSString *MessageExpireDate;
271 extern NSString *MessageFlags;
272 extern NSString *MessageLoading;
273 extern NSString *MessageNumber;
274 extern NSString *MessageOperation;
275 extern NSString *MessagePreloading;
276 extern NSString *MessageRedirecting;
277 extern NSString *MessageViewing;
278 
279 //
280 // Pasteboard data types
281 //
282 extern NSString *MessagePboardType;
283 
284 #endif // _GNUMail_H_GNUMailConstants
285