summaryrefslogtreecommitdiffstats
path: root/comm/mailnews/base/public/nsIFolderLookupService.idl
blob: fece4102adf3a4b73eb61e860408e1d24489e7ae (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
/* 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"

interface nsIMsgFolder;

/**
 * This service provides a way to lookup any nsIMsgFolder.
 *
 * When looking up folders by URL, note that the URL must be encoded to be a
 * valid folder URL. Of particular note are the following requirements:
 * - invalid characters in paths must be percent-encoded
 * - the URL MUST NOT have a trailing slash (excepting root folders)
 * - the case must match the expected value exactly
 * An example of a valid URL is thus:
 * imap://someuser%40google.com@imap.google.com/INBOX
 *
 * The contractid for this service is "@mozilla.org/mail/folder-lookup;1".
 */
[scriptable,uuid(f5ed5997-3945-48fc-a59d-d2191a94bb60)]
interface nsIFolderLookupService : nsISupports
{
  /**
   * Returns a folder with the given URL or null if no such folder exists.
   *
   * @param aUrl The folder URL
   */
  nsIMsgFolder getFolderForURL(in AUTF8String aUrl);

  /**
   * Returns a folder with the given URL.
   * Will happily create and return an invalid (unparented) folder.
   * Will return null if aUrl is not a folder url.
   * NOTE: don't use this for new code! It's here purely to help
   * transition away from RDF-based folder creation.
   *
   * @param aUrl The folder URL
   */
  nsIMsgFolder getOrCreateFolderForURL(in AUTF8String aUrl);

  /**
   * Set pretty name again from original name on all folders,
   * typically used when locale changes.
   */
  void setPrettyNameFromOriginalAllFolders();
};

%{C++
#define NSIFLS_CONTRACTID "@mozilla.org/mail/folder-lookup;1"
%}