mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-24 09:27:31 +09:00
Issue #1258 - Part 1: Import mailnews, ldap, and mork from comm-esr52.9.1
This commit is contained in:
parent
23e0d82436
commit
e400f4130a
1564 changed files with 510348 additions and 0 deletions
87
mailnews/addrbook/src/nsAbOutlookDirFactory.cpp
Normal file
87
mailnews/addrbook/src/nsAbOutlookDirFactory.cpp
Normal file
|
|
@ -0,0 +1,87 @@
|
|||
/* -*- 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 "nsAbOutlookDirFactory.h"
|
||||
#include "nsAbWinHelper.h"
|
||||
#include "nsIAbDirectory.h"
|
||||
#include "nsIAbManager.h"
|
||||
#include "nsEnumeratorUtils.h"
|
||||
#include "nsServiceManagerUtils.h"
|
||||
#include "nsComponentManagerUtils.h"
|
||||
#include "nsIMutableArray.h"
|
||||
#include "nsArrayEnumerator.h"
|
||||
#include "nsAbBaseCID.h"
|
||||
#include "mozilla/Logging.h"
|
||||
|
||||
#ifdef PR_LOGGING
|
||||
static PRLogModuleInfo* gAbOutlookDirFactoryLog
|
||||
= PR_NewLogModule("nsAbOutlookDirFactoryLog");
|
||||
#endif
|
||||
|
||||
#define PRINTF(args) MOZ_LOG(nsAbOutlookDirFactoryLog, mozilla::LogLevel::Debug, args)
|
||||
|
||||
|
||||
NS_IMPL_ISUPPORTS(nsAbOutlookDirFactory, nsIAbDirFactory)
|
||||
|
||||
nsAbOutlookDirFactory::nsAbOutlookDirFactory(void)
|
||||
{
|
||||
}
|
||||
|
||||
nsAbOutlookDirFactory::~nsAbOutlookDirFactory(void)
|
||||
{
|
||||
}
|
||||
|
||||
extern const char *kOutlookDirectoryScheme;
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsAbOutlookDirFactory::GetDirectories(const nsAString &aDirName,
|
||||
const nsACString &aURI,
|
||||
const nsACString &aPrefName,
|
||||
nsISimpleEnumerator **aDirectories)
|
||||
{
|
||||
NS_ENSURE_ARG_POINTER(aDirectories);
|
||||
|
||||
*aDirectories = nullptr;
|
||||
nsresult rv = NS_OK;
|
||||
nsCString stub;
|
||||
nsCString entry;
|
||||
nsAbWinType abType = getAbWinType(kOutlookDirectoryScheme,
|
||||
nsCString(aURI).get(), stub, entry);
|
||||
|
||||
if (abType == nsAbWinType_Unknown) {
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
nsAbWinHelperGuard mapiAddBook(abType);
|
||||
nsMapiEntryArray folders;
|
||||
ULONG nbFolders = 0;
|
||||
nsCOMPtr<nsIMutableArray> directories(do_CreateInstance(NS_ARRAY_CONTRACTID));
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
if (!mapiAddBook->IsOK() || !mapiAddBook->GetFolders(folders)) {
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
nsCOMPtr<nsIAbManager> abManager(do_GetService(NS_ABMANAGER_CONTRACTID, &rv));
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
nsAutoCString entryId;
|
||||
nsAutoCString uri;
|
||||
|
||||
for (ULONG i = 0; i < folders.mNbEntries; ++i) {
|
||||
folders.mEntries[i].ToString(entryId);
|
||||
buildAbWinUri(kOutlookDirectoryScheme, abType, uri);
|
||||
uri.Append(entryId);
|
||||
|
||||
nsCOMPtr<nsIAbDirectory> directory;
|
||||
rv = abManager->GetDirectory(uri, getter_AddRefs(directory));
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
directories->AppendElement(directory, false);
|
||||
}
|
||||
return NS_NewArrayEnumerator(aDirectories, directories);
|
||||
}
|
||||
|
||||
// No actual deletion, since you cannot create the address books from Mozilla.
|
||||
NS_IMETHODIMP nsAbOutlookDirFactory::DeleteDirectory(nsIAbDirectory *aDirectory)
|
||||
{
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue