summaryrefslogtreecommitdiffstats
path: root/mailnews/base/public/nsIMsgIdentity.idl
blob: 88298bd044da6d4f59e8380a68cc68a28a52a9e0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
/* -*- Mode: IDL; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */

#include "nsISupports.idl"
#include "nsIFile.idl"

/**
 * This interface contains all the personal outgoing mail information
 * for a given person.
 * Each identity is identified by a key, which is the <id> string in
 * the identity preferences, such as in mail.identity.<id>.replyTo.
 */
[scriptable, uuid(9dede9a0-f6fc-4afc-8fc9-a6af52414b3d)]
interface nsIMsgIdentity : nsISupports {
  /**
   * Internal preferences ID.
   */
  attribute ACString key;

  /**
   * Label describing this identity. May be empty.
   */
  attribute AString label;

  /**
   * Pretty display name to identify this specific identity. Will return a
   * composed string like "fullname <email> (label)".
   */
  readonly attribute AString identityName;

  /**
   * User's full name, i.e. John Doe.
   */
  attribute AString fullName;

  /**
   * User's e-mail address, i.e. john@doe.com.
   */
  attribute ACString email;

  /**
   * Formats fullName and email into the proper string to use as sender:
   * name <email>
   */
  readonly attribute AString fullAddress;

  /**
   * Optional replyTo address, i.e. johnNOSPAM@doe.com.
   */
  attribute AUTF8String replyTo;

  /**
   * Optional organization.
   */
  attribute AString organization;

  /**
   * Should we compose with HTML by default?
   */
  attribute boolean composeHtml;

  /**
   * Should we attach a signature from file?
   */
  attribute boolean attachSignature;

  /**
   * Should we attach a vcard by default?
   */
  attribute boolean attachVCard;

  /**
   * Should we automatically quote the original message?
   */
  attribute boolean autoQuote;

  /**
   * What should our quoting preference be?
   */
  attribute long replyOnTop;

  /**
   * Should our signature be at the end of the quoted text when replying
   * above it?
   */
  attribute boolean sigBottom;

  /**
   * Include a signature when forwarding a message?
   */
  attribute boolean sigOnForward;

  /**
   * Include a signature when replying to a message?
   */
  attribute boolean sigOnReply;

  /**
   * The current signature file.
   */
  attribute nsIFile signature;

  /**
   * Modification time of the signature file.
   */
  attribute long signatureDate;

  /**
   * Signature text if not read from file; format depends on htmlSigFormat.
   */
  attribute AString htmlSigText;

  /**
   * Does htmlSigText contain HTML? Use plain text if false.
   */
  attribute boolean htmlSigFormat;

  /**
   * Suppress the double-dash signature separator
   */
  attribute boolean suppressSigSep;

  /**
   * The encoded string representing the vcard.
   */
  attribute ACString escapedVCard;

  attribute boolean doFcc;
  /// URI for the fcc (Sent) folder
  attribute ACString fccFolder;
  attribute boolean fccReplyFollowsParent;

  /**
   * @{
   * these attributes control whether the special folder pickers for
   * fcc, drafts,archives, and templates are set to pick between servers
   * (e.g., Sent on accountName) or to pick any folder on any account.
   * "0" means choose between servers; "1" means use the full folder picker.
   */
  attribute ACString fccFolderPickerMode;
  attribute ACString draftsFolderPickerMode;
  attribute ACString archivesFolderPickerMode;
  attribute ACString tmplFolderPickerMode;
  /** @} */

  // Don't call bccSelf, bccOthers, and bccList directly, they are 
  // only used for migration and backward compatability. Use doBcc
  // and doBccList instead.
  attribute boolean bccSelf;
  attribute boolean bccOthers;
  attribute ACString bccList;

  attribute boolean doCc;
  attribute AUTF8String doCcList;

  attribute boolean doBcc;
  attribute AUTF8String doBccList;
  /**
   * @{
   * URIs for the special folders (drafts, templates, archive)
   */
  attribute ACString draftFolder;
  attribute ACString archiveFolder;
  attribute ACString stationeryFolder;
  /** @} */

  attribute boolean archiveEnabled;
  /**
   * @{
   * This attribute and constants control the granularity of sub-folders of the
   * Archives folder - either messages go in the single archive folder, or a
   * yearly archive folder, or in a monthly archive folder with a yearly
   * parent folder. If the server doesn't support folders that both contain
   * messages and have sub-folders, we will ignore this setting.
   */
  attribute long archiveGranularity;
  const long singleArchiveFolder = 0;
  const long perYearArchiveFolders = 1;
  const long perMonthArchiveFolders = 2;
  /// Maintain the source folder name when creating Archive subfolders
  attribute boolean archiveKeepFolderStructure;
  /** @} */

  attribute boolean showSaveMsgDlg;
  attribute ACString directoryServer;
  attribute boolean overrideGlobalPref;
  /**
   * If this is false, don't append the user's domain
   * to an autocomplete address with no matches
   */
   attribute boolean autocompleteToMyDomain;
  /**
   * valid determines if the UI should use this identity
   * and the wizard uses this to determine whether or not
   * to ask the user to complete all the fields
   */
  attribute boolean valid;

  /**
   * this is really dangerous. this destroys all pref values
   * do not call this unless you know what you're doing!
   */
  void clearAllValues();

  /**
   * the preferred smtp server for this identity.
   * if this is set, this the smtp server that should be used
   * for the message send
   */
  attribute ACString smtpServerKey;

  /**
   * default request for return receipt option for this identity
   * if this is set, the Return Receipt menu item on the compose
   * window will be checked
   */
  readonly attribute boolean requestReturnReceipt;
  readonly attribute long receiptHeaderType;

  /**
   * default request for DSN option for this identity
   * if this is set, the DSN menu item on the compose
   * window will be checked
   */
  readonly attribute boolean requestDSN;

  /* copy the attributes of the identity we pass in */
  void copy(in nsIMsgIdentity identity);

  /** 
   * these generic getter / setters, useful for extending mailnews 
   * note, these attributes persist across sessions
   */
  AString getUnicharAttribute(in string name);
  void setUnicharAttribute(in string name, in AString value);

  ACString getCharAttribute(in string name);
  void setCharAttribute(in string name, in ACString value);

  boolean getBoolAttribute(in string name);
  void setBoolAttribute(in string name, in boolean value);

  long getIntAttribute(in string name);
  void setIntAttribute(in string name, in long value);

  /* useful for debugging */
  AString toString();
};