diff options
Diffstat (limited to 'mailnews/addrbook/src/nsAbMDBDirProperty.cpp')
-rw-r--r-- | mailnews/addrbook/src/nsAbMDBDirProperty.cpp | 145 |
1 files changed, 145 insertions, 0 deletions
diff --git a/mailnews/addrbook/src/nsAbMDBDirProperty.cpp b/mailnews/addrbook/src/nsAbMDBDirProperty.cpp new file mode 100644 index 000000000..7df904d87 --- /dev/null +++ b/mailnews/addrbook/src/nsAbMDBDirProperty.cpp @@ -0,0 +1,145 @@ +/* -*- 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 "nsAbMDBDirProperty.h" +#include "nsIServiceManager.h" +#include "nsStringGlue.h" +#include "nsCOMPtr.h" +#include "nsAbBaseCID.h" +#include "nsAddrDatabase.h" +#include "nsIAbCard.h" +#include "nsIAbListener.h" +#include "nsArrayUtils.h" +#include "mdb.h" +#include "nsComponentManagerUtils.h" + +nsAbMDBDirProperty::nsAbMDBDirProperty(void) + : nsAbDirProperty() +{ + m_dbRowID = 0; +} + +nsAbMDBDirProperty::~nsAbMDBDirProperty(void) +{ +} + + +NS_IMPL_ISUPPORTS_INHERITED(nsAbMDBDirProperty, nsAbDirProperty, + nsIAbDirectory, + nsISupportsWeakReference, nsIAbMDBDirectory) + +//////////////////////////////////////////////////////////////////////////////// + + + +// nsIAbMDBDirectory attributes + +NS_IMETHODIMP nsAbMDBDirProperty::GetDbRowID(uint32_t *aDbRowID) +{ + *aDbRowID = m_dbRowID; + return NS_OK; +} + +NS_IMETHODIMP nsAbMDBDirProperty::SetDbRowID(uint32_t aDbRowID) +{ + m_dbRowID = aDbRowID; + return NS_OK; +} + + +// nsIAbMDBDirectory methods + +/* add mailing list to the parent directory */ +NS_IMETHODIMP nsAbMDBDirProperty::AddMailListToDirectory(nsIAbDirectory *mailList) +{ + if (!m_AddressList) + { + nsresult rv; + m_AddressList = do_CreateInstance(NS_ARRAY_CONTRACTID, &rv); + NS_ENSURE_SUCCESS(rv, rv); + } + + uint32_t position; + if (NS_FAILED(m_AddressList->IndexOf(0, mailList, &position))) + m_AddressList->AppendElement(mailList, false); + + return NS_OK; +} + +/* add addresses to the mailing list */ +NS_IMETHODIMP nsAbMDBDirProperty::AddAddressToList(nsIAbCard *card) +{ + if (!m_AddressList) + { + nsresult rv; + m_AddressList = do_CreateInstance(NS_ARRAY_CONTRACTID, &rv); + NS_ENSURE_SUCCESS(rv, rv); + } + + uint32_t position; + if (NS_FAILED(m_AddressList->IndexOf(0, card, &position))) + m_AddressList->AppendElement(card, false); + + return NS_OK; +} + +NS_IMETHODIMP nsAbMDBDirProperty::CopyDBMailList(nsIAbMDBDirectory* srcListDB) +{ + nsresult err = NS_OK; + nsCOMPtr<nsIAbDirectory> srcList(do_QueryInterface(srcListDB)); + if (NS_FAILED(err)) + return NS_ERROR_NULL_POINTER; + + CopyMailList (srcList); + + uint32_t rowID; + srcListDB->GetDbRowID(&rowID); + SetDbRowID(rowID); + + return NS_OK; +} + + +// nsIAbMDBDirectory NOT IMPLEMENTED methods + +/* nsIAbDirectory addDirectory (in string uriName); */ +NS_IMETHODIMP nsAbMDBDirProperty::AddDirectory(const char *uriName, nsIAbDirectory **_retval) +{ + return NS_ERROR_NOT_IMPLEMENTED; +} + +/* [noscript] void removeElementsFromAddressList (); */ +NS_IMETHODIMP nsAbMDBDirProperty::RemoveElementsFromAddressList() +{ + return NS_ERROR_NOT_IMPLEMENTED; +} + +/* void removeEmailAddressAt (in unsigned long aIndex); */ +NS_IMETHODIMP nsAbMDBDirProperty::RemoveEmailAddressAt(uint32_t aIndex) +{ + return NS_ERROR_NOT_IMPLEMENTED; +} + +/* [noscript] void notifyDirItemAdded (in nsISupports item); */ +NS_IMETHODIMP nsAbMDBDirProperty::NotifyDirItemAdded(nsISupports *item) +{ + return NS_ERROR_NOT_IMPLEMENTED; +} + +/* [noscript] void clearDatabase (); */ +NS_IMETHODIMP nsAbMDBDirProperty::ClearDatabase() +{ + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP nsAbMDBDirProperty::GetDatabaseFile(nsIFile **aResult) +{ + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP nsAbMDBDirProperty::GetDatabase(nsIAddrDatabase **aResult) +{ + return NS_ERROR_NOT_IMPLEMENTED; +} |