DXR is a code search and navigation tool aimed at making sense of large projects. It supports full-text and regex searches as well as structural queries.

Mercurial (620f6a96cee5)

VCS Links

Line Code
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 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311
/* -*- Mode: C++; tab-width: 2; 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 "nsIAddrDBAnnouncer.idl"
#include "nsIAbCard.idl"
#include "nsIAbDirectory.idl"

interface nsIFile;
interface nsIMdbTableRowCursor;
interface nsIMdbEnv;
interface nsIMdbRow;
interface nsIArray;
interface nsISimpleEnumerator;

%{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 kPhoneticNameColumn       "_PhoneticName"
#define kAddressCharSetColumn     "AddrCharSet"
#define kMailListName             "ListName"
#define kMailListNickName         "ListNickName"
#define kMailListDescription      "ListDescription"
#define kMailListTotalAddresses   "ListTotalAddresses"
// not shown in the UI
#define kLowerPriEmailColumn      "LowercasePrimaryEmail"
#define kLower2ndEmailColumn      "LowercaseSecondEmail"

// Palm Integration
#define  CARD_ATTRIB_PALMID "PalmRecId"
#define  CARD_ATTRIB_DISPLAY "DisplayName"

%}

[scriptable, uuid(20d4c6c3-0460-403e-aa9c-813654641566)]
interface nsAddrDBCommitType 
{
  const long kLargeCommit = 1;
  const long kSessionCommit = 2;
  const long kCompressCommit = 3;
};

[scriptable, uuid(c54973e4-d251-4b93-a0d0-81a616225061)]
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();

  /**
   * Create a new card and add to the database
   *
   * @param     aNewCard       the card to be added
   * @param     aNotify        if set to true, all the listeners of the
   *                           database will be notified.
   * @param     aParent        parent directory or mailing list to which the
   *                           card is added. If set to null, listeners of the
   *                           database will not be notified of card creation.
   */
  void createNewCardAndAddToDB(in nsIAbCard aNewCard, in boolean aNotify, in nsIAbDirectory aParent);

  void createNewListCardAndAddToDB(in nsIAbDirectory list, in unsigned long listRowID, in nsIAbCard newCard, in boolean aNotify);

  /**
   * Create a new mailing list and add to the database
   *
   * @param     aNewList       the mailing list to be added.
   * @param     aNotify        if set to true, all the listeners of the
   *                           database will be notified.
   * @param     aParent        parent directory to which the mailing list
   *                           is added. If set to null, listeners of the database
   *                           will not be notified of mailing list creation.
   */
  void createMailListAndAddToDB(in nsIAbDirectory aNewList, in boolean aNotify, in nsIAbDirectory aParent);

  /**
   * 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);

  /**
   * Delete a card from the database.
   *
   * @param     aCard          the card to be deleted.
   * @param     aNotify        if set to true, all the listeners of the
   *                           database will be notified.
   * @param     aParent        parent directory from which the card
   *                           is to be deleted. If set to null, listeners of
   *                           the database will not be notified of card deletion.
   */
  void deleteCard(in nsIAbCard aCard, in boolean aNotify, in nsIAbDirectory aParent);

  /**
   * Edit a card in the database.
   *
   * @param     aCard          the card to be edited.
   * @param     aNotify        if set to true, all the listeners of the
   *                           database will be notified.
   * @param     aParent        parent directory in which the card
   *                           is to be edited. If set to null, listeners of
   *                           the database will not be notified of card entry
   *                           change.
   */
  void editCard(in nsIAbCard aCard, in boolean aNotify, in nsIAbDirectory aParent);
  boolean containsCard(in nsIAbCard card);
  /**
   * Deletes a mailing list from the directory
   *
   * @param aMailList         The nsIAbDirectory implementation of the mailing
   *                          list that is to be deleted.
   * @param aParent           The parent of the mailing list that is being
   *                          deleted. If this is supplied, then a notification
   *                          of card entry change in the database will be made.
   */
  void deleteMailList(in nsIAbDirectory aMailList,
                      [optional] in nsIAbDirectory aParent);
  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);

  /**
   * Gets the first card which matches the attribute/value pair supplied.
   *
   * @param  aDirectory       The current nsIAbDirectory associated with this
   *                          instance of the database.
   * @param  aName            The attribute to look up the value in.
   * @param  aUTF8Value       The value to look up in UTF8 format.
   * @param  aCaseInsensitive Set to true for case-insenstive matching.
   * @result                  Returns an nsIAbCard if one is found, otherwise
   *                          NULL.
   */
  nsIAbCard getCardFromAttribute(in nsIAbDirectory aDirectory, in string aName,
                                 in AUTF8String aUTF8Value,
                                 in boolean aCaseInsensitive);

  /**
   * Gets all cards which matches the attribute/value pair supplied.
   *
   * @param  aDirectory       The current nsIAbDirectory associated with this
   *                          instance of the database.
   * @param  aName            The attribute to look up the value in.
   * @param  aUTF8Value       The value to look up in UTF8 format.
   * @param  aCaseInsensitive Set to true for case-insenstive matching.
   * @result                  Returns an nsISimpleEnumerator of nsIAbCard
   *                          instances.
   */
  nsISimpleEnumerator getCardsFromAttribute(in nsIAbDirectory aDirectory,
                                            in string aName,
                                            in AUTF8String uUTF8Value,
                                            in boolean aCaseInsensitive);

  boolean findMailListbyUnicodeName(in wstring listName);

  void getCardCount(out uint32_t 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 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);

  /**
   * Returns an array of the deleted cards currently stored in the mork file.
   */
  readonly attribute nsIArray deletedCardList;

  /**
   * Returns the count of the deleted card currently stored in the mork file.
   */
  readonly attribute unsigned long deletedCardCount;

  /**
   * Add the column representing the card to the mailing list row
   * in the database.
   *
   * @param     aPCard         the card to be added.
   * @param     aPListRow      the row to which the column will be added.
   * @param     aPos           the position of the card in the mailing list.
   * @param     aPNewCard      a pointer to hold the new card added to the row.
   * @param     aInMailingList If set to true, the card is already present
   *                           in the mailing list
   * @param     aParent        parent mailing list to which the card
   *                           is added. If set to null, listeners of the
   *                           database will not be notified of card creation.
   * @param     aRoot          If the card is created while creating a new mailing 
   *                           list, its set to the parent addressbook.
   *                           Set to null in other case.
   */
  void AddListCardColumnsToRow(in nsIAbCard aPCard,
                               in nsIMdbRow aPListRow,
                               in unsigned long aPos,
                               out nsIAbCard aPNewCard,
                               in boolean aInMailingList,
                               in nsIAbDirectory aParent,
                               in nsIAbDirectory aRoot);
  void InitCardFromRow(in nsIAbCard aNewCard,in nsIMdbRow aCardRow);
  void SetListAddressTotal(in nsIMdbRow aListRow, in uint32_t aTotal);
  nsIMdbRow FindRowByCard(in nsIAbCard aCard);
};