summaryrefslogtreecommitdiffstats
path: root/comm/mailnews/import/src/nsWMImport.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'comm/mailnews/import/src/nsWMImport.cpp')
-rw-r--r--comm/mailnews/import/src/nsWMImport.cpp199
1 files changed, 199 insertions, 0 deletions
diff --git a/comm/mailnews/import/src/nsWMImport.cpp b/comm/mailnews/import/src/nsWMImport.cpp
new file mode 100644
index 0000000000..a3b5dd45b2
--- /dev/null
+++ b/comm/mailnews/import/src/nsWMImport.cpp
@@ -0,0 +1,199 @@
+/* -*- 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/. */
+
+/*
+ * Windows Live Mail (Win32) import mail and addressbook interfaces
+ */
+
+#include "nscore.h"
+#include "nsString.h"
+#include "nsMsgUtils.h"
+#include "nsWMImport.h"
+#include "nsIImportMail.h"
+#include "nsIImportMailboxDescriptor.h"
+#include "nsXPCOM.h"
+#include "nsWMSettings.h"
+#include "nsTextFormatter.h"
+#include "nsWMStringBundle.h"
+#include "nsUnicharUtils.h"
+
+#include "ImportDebug.h"
+
+class ImportWMMailImpl : public nsIImportMail {
+ public:
+ ImportWMMailImpl();
+
+ static nsresult Create(nsIImportMail** aImport);
+
+ // nsISupports interface
+ NS_DECL_THREADSAFE_ISUPPORTS
+
+ // nsIImportmail interface
+
+ /* void GetDefaultLocation (out nsIFile location, out boolean found, out
+ * boolean userVerify); */
+ NS_IMETHOD GetDefaultLocation(nsIFile** location, bool* found,
+ bool* userVerify);
+
+ /* nsIArray FindMailboxes (in nsIFile location); */
+ NS_IMETHOD FindMailboxes(nsIFile* location,
+ nsTArray<RefPtr<nsIImportMailboxDescriptor>>& boxes);
+
+ NS_IMETHOD ImportMailbox(nsIImportMailboxDescriptor* source,
+ nsIMsgFolder* dstFolder, char16_t** pErrorLog,
+ char16_t** pSuccessLog, bool* fatalError);
+
+ /* unsigned long GetImportProgress (); */
+ NS_IMETHOD GetImportProgress(uint32_t* _retval);
+
+ NS_IMETHOD TranslateFolderName(const nsAString& aFolderName,
+ nsAString& _retval);
+
+ public:
+ static void ReportSuccess(nsString& name, int32_t count, nsString* pStream);
+ static void ReportError(int32_t errorNum, nsString& name, nsString* pStream);
+ static void AddLinebreak(nsString* pStream);
+ static void SetLogs(nsString& success, nsString& error, char16_t** pError,
+ char16_t** pSuccess);
+
+ private:
+ virtual ~ImportWMMailImpl();
+};
+
+nsWMImport::nsWMImport() {
+ IMPORT_LOG0("nsWMImport Module Created\n");
+ nsWMStringBundle::GetStringBundle();
+}
+
+nsWMImport::~nsWMImport() { IMPORT_LOG0("nsWMImport Module Deleted\n"); }
+
+NS_IMPL_ISUPPORTS(nsWMImport, nsIImportModule)
+
+NS_IMETHODIMP nsWMImport::GetName(char16_t** name) {
+ NS_ENSURE_ARG_POINTER(name);
+ // nsString title = "Windows Live Mail";
+ // *name = ToNewUnicode(title);
+ *name = nsWMStringBundle::GetStringByID(WMIMPORT_NAME);
+
+ return NS_OK;
+}
+
+NS_IMETHODIMP nsWMImport::GetDescription(char16_t** name) {
+ NS_ENSURE_ARG_POINTER(name);
+
+ // nsString desc = "Windows Live Mail mail and address books";
+ // *name = ToNewUnicode(desc);
+ *name = nsWMStringBundle::GetStringByID(WMIMPORT_DESCRIPTION);
+ return NS_OK;
+}
+
+NS_IMETHODIMP nsWMImport::GetSupports(char** supports) {
+ NS_ASSERTION(supports != nullptr, "null ptr");
+ if (!supports) return NS_ERROR_NULL_POINTER;
+
+ *supports = strdup(kWMSupportsString);
+ return NS_OK;
+}
+
+NS_IMETHODIMP nsWMImport::GetSupportsUpgrade(bool* pUpgrade) {
+ NS_ASSERTION(pUpgrade != nullptr, "null ptr");
+ if (!pUpgrade) return NS_ERROR_NULL_POINTER;
+
+ *pUpgrade = true;
+ return NS_OK;
+}
+
+NS_IMETHODIMP nsWMImport::GetImportInterface(const char* pImportType,
+ nsISupports** ppInterface) {
+ NS_ENSURE_ARG_POINTER(pImportType);
+ NS_ENSURE_ARG_POINTER(ppInterface);
+
+ *ppInterface = nullptr;
+ nsresult rv;
+
+ if (!strcmp(pImportType, "settings")) {
+ nsCOMPtr<nsIImportSettings> pSettings;
+ rv = nsWMSettings::Create(getter_AddRefs(pSettings));
+ if (NS_SUCCEEDED(rv)) {
+ nsCOMPtr<nsISupports> pInterface(do_QueryInterface(pSettings));
+ pInterface.forget(ppInterface);
+ }
+ return rv;
+ }
+
+ return NS_ERROR_NOT_AVAILABLE;
+}
+
+/////////////////////////////////////////////////////////////////////////////////
+nsresult ImportWMMailImpl::Create(nsIImportMail** aImport) {
+ NS_ENSURE_ARG_POINTER(aImport);
+ NS_ADDREF(*aImport = new ImportWMMailImpl());
+ return NS_OK;
+}
+
+ImportWMMailImpl::ImportWMMailImpl() {}
+
+ImportWMMailImpl::~ImportWMMailImpl() {}
+
+NS_IMPL_ISUPPORTS(ImportWMMailImpl, nsIImportMail)
+
+NS_IMETHODIMP ImportWMMailImpl::TranslateFolderName(
+ const nsAString& aFolderName, nsAString& _retval) {
+ return NS_ERROR_NOT_IMPLEMENTED;
+}
+
+NS_IMETHODIMP ImportWMMailImpl::GetDefaultLocation(nsIFile** ppLoc, bool* found,
+ bool* userVerify) {
+ return NS_ERROR_NOT_IMPLEMENTED;
+}
+
+NS_IMETHODIMP ImportWMMailImpl::FindMailboxes(
+ nsIFile* pLoc, nsTArray<RefPtr<nsIImportMailboxDescriptor>>& boxes) {
+ return NS_ERROR_NOT_IMPLEMENTED;
+}
+
+void ImportWMMailImpl::AddLinebreak(nsString* pStream) {
+ if (pStream) pStream->Append(char16_t('\n'));
+}
+
+void ImportWMMailImpl::ReportSuccess(nsString& name, int32_t count,
+ nsString* pStream) {
+ if (!pStream) return;
+ // load the success string
+ char16_t* pFmt = nsWMStringBundle::GetStringByID(WMIMPORT_MAILBOX_SUCCESS);
+ nsString pText;
+ nsTextFormatter::ssprintf(pText, pFmt, name.get(), count);
+ pStream->Append(pText);
+ nsWMStringBundle::FreeString(pFmt);
+ AddLinebreak(pStream);
+}
+
+void ImportWMMailImpl::ReportError(int32_t errorNum, nsString& name,
+ nsString* pStream) {
+ if (!pStream) return;
+ // load the error string
+ char16_t* pFmt = nsWMStringBundle::GetStringByID(errorNum);
+ nsString pText;
+ nsTextFormatter::ssprintf(pText, pFmt, name.get());
+ pStream->Append(pText);
+ nsWMStringBundle::FreeString(pFmt);
+ AddLinebreak(pStream);
+}
+
+void ImportWMMailImpl::SetLogs(nsString& success, nsString& error,
+ char16_t** pError, char16_t** pSuccess) {
+ if (pError) *pError = ToNewUnicode(error);
+ if (pSuccess) *pSuccess = ToNewUnicode(success);
+}
+
+NS_IMETHODIMP ImportWMMailImpl::ImportMailbox(
+ nsIImportMailboxDescriptor* pSource, nsIMsgFolder* pDstFolder,
+ char16_t** pErrorLog, char16_t** pSuccessLog, bool* fatalError) {
+ return NS_ERROR_NOT_IMPLEMENTED;
+}
+
+NS_IMETHODIMP ImportWMMailImpl::GetImportProgress(uint32_t* pDoneSoFar) {
+ return NS_ERROR_NOT_IMPLEMENTED;
+}