/* -*- Mode: IDL; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- * * The contents of this file are subject to the Netscape Public License * Version 1.0 (the "NPL"); you may not use this file except in * compliance with the NPL. You may obtain a copy of the NPL at * http://www.mozilla.org/NPL/ * * Software distributed under the NPL is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL * for the specific language governing rights and limitations under the * NPL. * * The Initial Developer of this code under the NPL is Netscape * Communications Corporation. Portions created by Netscape are * Copyright (C) 1998 Netscape Communications Corporation. All Rights * Reserved. */ #include "nsISupports.idl" #include "nsIMsgAccount.idl" #include "nsIMsgIdentity.idl" #include "nsIMsgIncomingServer.idl" #include "nsISupportsArray.idl" interface nsIMsgFolderCache; [scriptable, uuid(6ed2cc00-e623-11d2-b7fc-00805f05ffa5)] interface nsIMsgAccountManager : nsISupports { nsIMsgAccount createAccount(); nsIMsgAccount getAccount(in string key); void RemoveAccount(in nsIMsgAccount account); /* * creates a new identity and assigns it a new, unique "key" */ nsIMsgIdentity createIdentity(); /* * creates a new server and assigns it a new, unique "key" * the given type will be used to construct a ProgID */ nsIMsgIncomingServer createIncomingServer(in string type); /* * get the identity with the given key * if the identity does not exist, it will be created */ nsIMsgIdentity getIdentity(in string key); /* * Gets the existing incoming server with the given key * if the server's type does not exist in the preference, * an error is returned/thrown */ nsIMsgIncomingServer getIncomingServer(in string key); /* account list stuff */ /* defaultAccount should always be set if there are any accounts * in the account manager. You can only set the defaultAccount to an * account already in the account manager */ attribute nsIMsgAccount defaultAccount; /** * ordered list of all accounts, by the order they are in the prefs * array of nsIMsgAccount */ readonly attribute nsISupportsArray accounts; /* list of all identities in all accounts * array of nsIMsgIdentity */ readonly attribute nsISupportsArray allIdentities; /* list of all servers in all accounts * array of nsIMsgIncomingServer */ readonly attribute nsISupportsArray allServers; /* * search for the server with the given username, hostname, and type * the type is the same as is specified in the preferences, * i.e. "imap", "pop3", or "nntp" */ nsIMsgIncomingServer FindServer(in string userName, in string hostname, in string type); /** * find the index of this server in the (ordered) list of accounts */ long FindServerIndex(in nsIMsgIncomingServer server); nsIMsgAccount FindAccountForServer(in nsIMsgIncomingServer server); /* given a server, return all identities in accounts that have this server * returns an array of nsIMsgIdentity */ nsISupportsArray GetIdentitiesForServer(in nsIMsgIncomingServer server); /* given an identity, return all servers in accounts that have * this identity * returns an array of nsIMsgIncomingServer */ nsISupportsArray GetServersForIdentity(in nsIMsgIdentity identity); /* load accounts kicks off the creation of all accounts. You do not need * to call this and all accounts should be loaded lazily if you use any * of the above. */ void LoadAccounts(); /* unload accounts frees all the account manager data structures */ void UnloadAccounts(); void WriteToFolderCache(in nsIMsgFolderCache folderCache); /* search for 4.x mailnews prefs, and migrate to 5.0 prefs */ void UpgradePrefs(); };