pjs/mailnews/addrbook/public/nsIAddrDatabase.idl

300 строки
14 KiB
Plaintext

/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* The contents of this file are subject to the Mozilla Public License Version
* 1.1 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
* http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
* for the specific language governing rights and limitations under the
* License.
*
* The Original Code is mozilla.org code.
*
* The Initial Developer of the Original Code is
* Netscape Communications Corporation.
* Portions created by the Initial Developer are Copyright (C) 1998
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
* Seth Spitzer <sspitzer@netscape.com>
* Mark Banner <mark@standard8.demon.co.uk>
*
* Alternatively, the contents of this file may be used under the terms of
* either of the GNU General Public License Version 2 or later (the "GPL"),
* or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
#include "nsIAddrDBAnnouncer.idl"
#include "nsIAbCard.idl"
#include "nsIAbDirectory.idl"
interface nsIFile;
interface nsIMdbTableRowCursor;
interface nsIMdbEnv;
interface nsIMdbRow;
%{C++
// this is the prefix we for attributes that are specific
// to the mozilla addressbook, and weren't in 4.x and aren't specified in
// RFC 2789. used when exporting and import LDIF
// see nsTextAddress.cpp, nsAddressBook.cpp
#define MOZ_AB_LDIF_PREFIX "mozilla"
// note, GeneratedName is not a real column
// if you change any of this, make sure to change
// Get / Set CardValue in nsAbCardProperty.cpp
#define kFirstNameColumn "FirstName"
#define kLastNameColumn "LastName"
#define kPhoneticFirstNameColumn "PhoneticFirstName"
#define kPhoneticLastNameColumn "PhoneticLastName"
#define kPhoneticNameColumn "_PhoneticName"
#define kDisplayNameColumn "DisplayName"
#define kNicknameColumn "NickName"
#define kPriEmailColumn "PrimaryEmail"
#define k2ndEmailColumn "SecondEmail"
#define kDefaultEmailColumn "DefaultEmail"
#define kCardTypeColumn "CardType"
#define kPreferMailFormatColumn "PreferMailFormat"
#define kPopularityIndexColumn "PopularityIndex"
#define kWorkPhoneColumn "WorkPhone"
#define kHomePhoneColumn "HomePhone"
#define kFaxColumn "FaxNumber"
#define kPagerColumn "PagerNumber"
#define kCellularColumn "CellularNumber"
#define kWorkPhoneTypeColumn "WorkPhoneType"
#define kHomePhoneTypeColumn "HomePhoneType"
#define kFaxTypeColumn "FaxNumberType"
#define kPagerTypeColumn "PagerNumberType"
#define kCellularTypeColumn "CellularNumberType"
#define kHomeAddressColumn "HomeAddress"
#define kHomeAddress2Column "HomeAddress2"
#define kHomeCityColumn "HomeCity"
#define kHomeStateColumn "HomeState"
#define kHomeZipCodeColumn "HomeZipCode"
#define kHomeCountryColumn "HomeCountry"
#define kWorkAddressColumn "WorkAddress"
#define kWorkAddress2Column "WorkAddress2"
#define kWorkCityColumn "WorkCity"
#define kWorkStateColumn "WorkState"
#define kWorkZipCodeColumn "WorkZipCode"
#define kWorkCountryColumn "WorkCountry"
#define kJobTitleColumn "JobTitle"
#define kDepartmentColumn "Department"
#define kCompanyColumn "Company"
#define kAimScreenNameColumn "_AimScreenName"
#define kAnniversaryYearColumn "AnniversaryYear"
#define kAnniversaryMonthColumn "AnniversaryMonth"
#define kAnniversaryDayColumn "AnniversaryDay"
#define kSpouseNameColumn "SpouseName"
#define kFamilyNameColumn "FamilyName"
#define kDefaultAddressColumn "DefaultAddress"
#define kCategoryColumn "Category"
// webPage1 is work web page
#define kWebPage1Column "WebPage1"
// webPage2 is home web page
#define kWebPage2Column "WebPage2"
#define kBirthYearColumn "BirthYear"
#define kBirthMonthColumn "BirthMonth"
#define kBirthDayColumn "BirthDay"
#define kCustom1Column "Custom1"
#define kCustom2Column "Custom2"
#define kCustom3Column "Custom3"
#define kCustom4Column "Custom4"
#define kNotesColumn "Notes"
#define kLastModifiedDateColumn "LastModifiedDate"
#define kAddressCharSetColumn "AddrCharSet"
#define kMailListName "ListName"
#define kMailListNickName "ListNickName"
#define kMailListDescription "ListDescription"
#define kMailListTotalAddresses "ListTotalAddresses"
// not shown in the UI
#define kLowerPriEmailColumn "LowercasePrimaryEmail"
// Palm Integration
#define CARD_ATTRIB_PALMID "PalmRecId"
#define CARD_ATTRIB_DISPLAY "DisplayName"
%}
[scriptable, uuid(14d89995-e6c5-11d8-9a39-000a95dc234c)]
interface nsAddrDBCommitType
{
const long kSmallCommit = 0;
const long kLargeCommit = 1;
const long kSessionCommit = 2;
const long kCompressCommit = 3;
};
[scriptable, uuid(BEBB5B43-B81E-4cff-91ED-B8DAD6F7D9F5)]
interface nsIAddrDatabase : nsIAddrDBAnnouncer {
/**
* Path to the address book database that this instance represents.
*/
attribute nsIFile dbPath;
nsIAddrDatabase open(in nsIFile dbFile, in boolean create, in boolean upgrading);
void close(in boolean forceCommit);
/**
* Open the MDB database synchronously creating it if required. If
* successful, this routine will set up the m_mdbStore and m_mdbEnv of the
* database object so other database calls can work.
*
* @param dbName The location of the database file
* to open.
* @param create If set to true, will create the
* database file if it does not
* already exist.
* @exception NS_ERROR_FILE_NOT_FOUND The file was not found at the
* specified location (and create was
* false).
* @exception NS_ERROR_FILE_ACCESS_DENIED The file could not be opened as
* access was denied.
*/
void openMDB(in nsIFile dbName, in boolean create);
void closeMDB(in boolean commit);
void commit(in unsigned long commitType);
void forceClosed();
void createNewCardAndAddToDB(in nsIAbCard newCard, in boolean aNotify);
void createNewCardAndAddToDBWithKey(in nsIAbCard newCard, in boolean aNotify, out unsigned long key);
void createNewListCardAndAddToDB(in nsIAbDirectory list, in unsigned long listRowID, in nsIAbCard newCard, in boolean aNotify);
void createMailListAndAddToDB(in nsIAbDirectory newList, in boolean aNotify);
void createMailListAndAddToDBWithKey(in nsIAbDirectory newList, in boolean aNotify, out PRUint32 key);
/**
* Enumerate the cards in the directory. The enumerator will return the
* cards associated with mailing lists too.
*
* @param directory the directory of which to enumerate the cards.
* @return an enumerator.
*/
nsISimpleEnumerator enumerateCards(in nsIAbDirectory directory);
/**
* Enumerate the cards associated with the mailing lists in the directory.
*
* @param directory the directory of which to enumerate the cards.
* @return an enumerator.
*/
nsISimpleEnumerator enumerateListAddresses(in nsIAbDirectory directory);
void getMailingListsFromDB(in nsIAbDirectory parentDir);
void deleteCard(in nsIAbCard card, in boolean aNotify);
void editCard(in nsIAbCard card, in boolean aNotify);
boolean containsCard(in nsIAbCard card);
void deleteMailList(in nsIAbDirectory mailList, in boolean aNotify);
void editMailList(in nsIAbDirectory mailList, in nsIAbCard listCard, in boolean aNotify);
boolean containsMailList(in nsIAbDirectory mailList);
void deleteCardFromMailList(in nsIAbDirectory mailList, in nsIAbCard card, in boolean aNotify);
readonly attribute wstring directoryName;
/**
* aUTF8Value needs to be in UTF-8
*/
nsIAbCard getCardFromAttribute(in nsIAbDirectory directory, in string aName, in string aUTF8Value, in boolean caseInsensitive);
PRBool findMailListbyUnicodeName(in wstring listName);
void getCardCount(out PRUint32 count);
[noscript] readonly attribute nsIMdbRow newRow;
[noscript] readonly attribute nsIMdbRow newListRow;
[noscript] void addCardRowToDB(in nsIMdbRow newRow);
[noscript] void addLdifListMember(in nsIMdbRow row, in string value);
[noscript] void addFirstName(in nsIMdbRow row, in string value);
[noscript] void addLastName(in nsIMdbRow row, in string value);
[noscript] void addPhoneticFirstName(in nsIMdbRow row, in string value);
[noscript] void addPhoneticLastName(in nsIMdbRow row, in string value);
[noscript] void addDisplayName(in nsIMdbRow row, in string value);
[noscript] void addNickName(in nsIMdbRow row, in string value);
[noscript] void addPrimaryEmail(in nsIMdbRow row, in string value);
[noscript] void add2ndEmail(in nsIMdbRow row, in string value);
[noscript] void addDefaultEmail(in nsIMdbRow row, in string value);
[noscript] void addCardType(in nsIMdbRow row, in string value);
[noscript] void addWorkPhone(in nsIMdbRow row, in string value);
[noscript] void addHomePhone(in nsIMdbRow row, in string value);
[noscript] void addFaxNumber(in nsIMdbRow row, in string value);
[noscript] void addPagerNumber(in nsIMdbRow row, in string value);
[noscript] void addCellularNumber(in nsIMdbRow row, in string value);
[noscript] void addWorkPhoneType(in nsIMdbRow row, in string value);
[noscript] void addHomePhoneType(in nsIMdbRow row, in string value);
[noscript] void addFaxNumberType(in nsIMdbRow row, in string value);
[noscript] void addPagerNumberType(in nsIMdbRow row, in string value);
[noscript] void addCellularNumberType(in nsIMdbRow row, in string value);
[noscript] void addHomeAddress(in nsIMdbRow row, in string value);
[noscript] void addHomeAddress2(in nsIMdbRow row, in string value);
[noscript] void addHomeCity(in nsIMdbRow row, in string value);
[noscript] void addHomeState(in nsIMdbRow row, in string value);
[noscript] void addHomeZipCode(in nsIMdbRow row, in string value);
[noscript] void addHomeCountry(in nsIMdbRow row, in string value);
[noscript] void addWorkAddress(in nsIMdbRow row, in string value);
[noscript] void addWorkAddress2(in nsIMdbRow row, in string value);
[noscript] void addWorkCity(in nsIMdbRow row, in string value);
[noscript] void addWorkState(in nsIMdbRow row, in string value);
[noscript] void addWorkZipCode(in nsIMdbRow row, in string value);
[noscript] void addWorkCountry(in nsIMdbRow row, in string value);
[noscript] void addJobTitle(in nsIMdbRow row, in string value);
[noscript] void addDepartment(in nsIMdbRow row, in string value);
[noscript] void addCompany(in nsIMdbRow row, in string value);
[noscript] void addAimScreenName(in nsIMdbRow row, in string value);
[noscript] void addAnniversaryYear(in nsIMdbRow row, in string value);
[noscript] void addAnniversaryMonth(in nsIMdbRow row, in string value);
[noscript] void addAnniversaryDay(in nsIMdbRow row, in string value);
[noscript] void addSpouseName(in nsIMdbRow row, in string value);
[noscript] void addFamilyName(in nsIMdbRow row, in string value);
[noscript] void addDefaultAddress(in nsIMdbRow row, in string value);
[noscript] void addCategory(in nsIMdbRow row, in string value);
[noscript] void addWebPage1(in nsIMdbRow row, in string value);
[noscript] void addWebPage2(in nsIMdbRow row, in string value);
[noscript] void addBirthYear(in nsIMdbRow row, in string value);
[noscript] void addBirthMonth(in nsIMdbRow row, in string value);
[noscript] void addBirthDay(in nsIMdbRow row, in string value);
[noscript] void addCustom1(in nsIMdbRow row, in string value);
[noscript] void addCustom2(in nsIMdbRow row, in string value);
[noscript] void addCustom3(in nsIMdbRow row, in string value);
[noscript] void addCustom4(in nsIMdbRow row, in string value);
[noscript] void addNotes(in nsIMdbRow row, in string value);
[noscript] void addPreferMailFormat(in nsIMdbRow row, in unsigned long value);
[noscript] void addPopularityIndex(in nsIMdbRow row, in unsigned long value);
[noscript] void addListName(in nsIMdbRow row, in string value);
[noscript] void addListNickName(in nsIMdbRow row, in string value);
[noscript] void addListDescription(in nsIMdbRow row, in string value);
[noscript] void addListDirNode(in nsIMdbRow listRow);
/**
* use for getting and setting generic string attributes
* like _AimScreenName
*/
void setCardValue(in nsIAbCard card, in string name, in wstring value, in boolean notify);
wstring getCardValue(in nsIAbCard card, in string name);
void getDeletedCardList(out unsigned long aCount, out nsISupportsArray aDeletedList);
void getDeletedCardCount(out unsigned long count);
void AddListCardColumnsToRow(in nsIAbCard aPCard,
in nsIMdbRow aPListRow,
in unsigned long aPos,
out nsIAbCard aPNewCard,
in boolean aInMailingList);
void InitCardFromRow(in nsIAbCard aNewCard,in nsIMdbRow aCardRow);
void SetListAddressTotal(in nsIMdbRow aListRow, in PRUint32 aTotal);
nsIMdbRow FindRowByCard(in nsIAbCard aCard);
};