Source code

Revision control

Copy as Markdown

Other Tools

/* vim: set ts=2 et sw=2 tw=80: */
/* 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 "nscore.h"
#include "nsIImportService.h"
#include "nsIImportMail.h"
#include "nsIImportGeneric.h"
#include "nsIImportAddressBooks.h"
#include "nsIImportSettings.h"
#include "nsIImportFilters.h"
#include "nsXPCOM.h"
#include "nsISupportsPrimitives.h"
#include "nsTextFormatter.h"
#include "nsUnicharUtils.h"
#include "nsCOMPtr.h"
#include "nsServiceManagerUtils.h"
#include "nsComponentManagerUtils.h"
#include "nsBeckyImport.h"
#include "nsBeckyMail.h"
#include "nsBeckyAddressBooks.h"
#include "nsBeckySettings.h"
#include "nsBeckyFilters.h"
#include "nsBeckyStringBundle.h"
nsBeckyImport::nsBeckyImport() {}
nsBeckyImport::~nsBeckyImport() {}
NS_IMPL_ISUPPORTS(nsBeckyImport, nsIImportModule)
NS_IMETHODIMP
nsBeckyImport::GetName(char16_t** aName) {
NS_ENSURE_ARG_POINTER(aName);
*aName = nsBeckyStringBundle::GetStringByName("BeckyImportName");
return NS_OK;
}
NS_IMETHODIMP
nsBeckyImport::GetDescription(char16_t** aDescription) {
NS_ENSURE_ARG_POINTER(aDescription);
*aDescription =
nsBeckyStringBundle::GetStringByName("BeckyImportDescription");
return NS_OK;
}
NS_IMETHODIMP
nsBeckyImport::GetSupports(char** aSupports) {
NS_ENSURE_ARG_POINTER(aSupports);
*aSupports = strdup(kBeckySupportsString);
return NS_OK;
}
NS_IMETHODIMP
nsBeckyImport::GetSupportsUpgrade(bool* aUpgrade) {
NS_ENSURE_ARG_POINTER(aUpgrade);
*aUpgrade = true;
return NS_OK;
}
nsresult nsBeckyImport::GetMailImportInterface(nsISupports** aInterface) {
nsCOMPtr<nsIImportMail> importer;
nsresult rv = nsBeckyMail::Create(getter_AddRefs(importer));
NS_ENSURE_SUCCESS(rv, rv);
nsCOMPtr<nsIImportService> importService(
do_GetService(NS_IMPORTSERVICE_CONTRACTID, &rv));
NS_ENSURE_SUCCESS(rv, rv);
nsCOMPtr<nsIImportGeneric> generic;
rv = importService->CreateNewGenericMail(getter_AddRefs(generic));
NS_ENSURE_SUCCESS(rv, rv);
generic->SetData("mailInterface", importer);
nsString name;
name.Adopt(nsBeckyStringBundle::GetStringByName("BeckyImportName"));
nsCOMPtr<nsISupportsString> nameString(
do_CreateInstance(NS_SUPPORTS_STRING_CONTRACTID, &rv));
NS_ENSURE_SUCCESS(rv, rv);
nameString->SetData(name);
generic->SetData("name", nameString);
return CallQueryInterface(generic, aInterface);
}
nsresult nsBeckyImport::GetAddressBookImportInterface(
nsISupports** aInterface) {
nsresult rv;
nsCOMPtr<nsIImportAddressBooks> importer;
rv = nsBeckyAddressBooks::Create(getter_AddRefs(importer));
NS_ENSURE_SUCCESS(rv, rv);
nsCOMPtr<nsIImportService> importService(
do_GetService(NS_IMPORTSERVICE_CONTRACTID, &rv));
NS_ENSURE_SUCCESS(rv, rv);
nsCOMPtr<nsIImportGeneric> generic;
rv = importService->CreateNewGenericAddressBooks(getter_AddRefs(generic));
NS_ENSURE_SUCCESS(rv, rv);
generic->SetData("addressInterface", importer);
return CallQueryInterface(generic, aInterface);
}
nsresult nsBeckyImport::GetSettingsImportInterface(nsISupports** aInterface) {
nsresult rv;
nsCOMPtr<nsIImportSettings> importer;
rv = nsBeckySettings::Create(getter_AddRefs(importer));
NS_ENSURE_SUCCESS(rv, rv);
return CallQueryInterface(importer, aInterface);
}
nsresult nsBeckyImport::GetFiltersImportInterface(nsISupports** aInterface) {
nsresult rv;
nsCOMPtr<nsIImportFilters> importer;
rv = nsBeckyFilters::Create(getter_AddRefs(importer));
NS_ENSURE_SUCCESS(rv, rv);
return CallQueryInterface(importer, aInterface);
}
NS_IMETHODIMP
nsBeckyImport::GetImportInterface(const char* aImportType,
nsISupports** aInterface) {
NS_ENSURE_ARG_POINTER(aImportType);
NS_ENSURE_ARG_POINTER(aInterface);
*aInterface = nullptr;
if (!strcmp(aImportType, "mail")) return GetMailImportInterface(aInterface);
if (!strcmp(aImportType, "addressbook"))
return GetAddressBookImportInterface(aInterface);
if (!strcmp(aImportType, "settings"))
return GetSettingsImportInterface(aInterface);
if (!strcmp(aImportType, "filters"))
return GetFiltersImportInterface(aInterface);
return NS_ERROR_NOT_AVAILABLE;
}