diff -r 4e54af54a4a1 -r 6c59112cfd31 emailservices/nmclientapi/src/nmapimailboxsettings_p.cpp --- a/emailservices/nmclientapi/src/nmapimailboxsettings_p.cpp Wed Sep 15 17:47:19 2010 +0300 +++ b/emailservices/nmclientapi/src/nmapimailboxsettings_p.cpp Thu Sep 30 11:43:07 2010 +0300 @@ -18,11 +18,10 @@ #include "nmapiheaders.h" #include - namespace EmailClientApi { -NmApiMailboxSettingsPrivate::NmApiMailboxSettingsPrivate(QObject *parent) : - QObject(parent), +NmApiMailboxSettingsPrivate::NmApiMailboxSettingsPrivate(QObject *parent) : + QObject(parent), mFactory(NULL), mDeleteMailboxOperation(NULL) { @@ -36,43 +35,87 @@ NM_FUNCTION; NmApiDataPluginFactory::releaseInstance(mFactory); if(mDeleteMailboxOperation && mDeleteMailboxOperation->isRunning()) { - mDeleteMailboxOperation->cancelOperation(); + mDeleteMailboxOperation->cancelOperation(); } } bool NmApiMailboxSettingsPrivate::listMailboxIds(QList &idList) { - NM_FUNCTION; + NM_FUNCTION; QList mailboxIds; bool ret = false; idList.clear(); - + NmDataPluginInterface *instance = mFactory->interfaceInstance(); if (instance) { if (instance->listMailboxIds(mailboxIds) == KErrNone) { - + foreach (NmId boxId, mailboxIds) { idList.append(boxId.id()); } - - ret = true; + + ret = true; } - } - + } + return ret; } +QString NmApiMailboxSettingsPrivate::getMailboxType(quint64 mailboxId) +{ + QString mailboxType; + //Return null string if mailbox is not resolved or some error occurs + TRAP_IGNORE(mailboxType = resolveMailboxTypeL(mailboxId)); + NM_ERROR(!mailboxType.isNull(), QString("Can not receive mailbox type") + + QString::number(mailboxId)); + return mailboxType; +} + +QString NmApiMailboxSettingsPrivate::resolveMailboxTypeL(quint64 mailboxId) +{ + QString mailboxType; + quint32 serviceId = mailboxId; + CEmailAccounts *accounts = CEmailAccounts::NewLC(); + + RArray imapAccounts; + CleanupClosePushL(imapAccounts); + accounts->GetImapAccountsL(imapAccounts); + for (int i=0; i < imapAccounts.Count(); ++i) { + if (imapAccounts[i].iImapService == serviceId) { + mailboxType = NmApiMailboxTypeImap; + break; + } + } + CleanupStack::PopAndDestroy(&imapAccounts); + + if (mailboxType.isNull()) { + RArray popAccounts; + CleanupClosePushL(popAccounts); + accounts->GetPopAccountsL(popAccounts); + for (int i = 0; i < popAccounts.Count(); ++i) { + if (popAccounts[i].iPopService == serviceId) { + mailboxType = NmApiMailboxTypePop; + break; + } + } + CleanupStack::PopAndDestroy(&popAccounts); + } + CleanupStack::PopAndDestroy(accounts); + return mailboxType; +} + + bool NmApiMailboxSettingsPrivate::loadSettings(quint64 mailboxId, NmApiMailboxSettingsData &data) { NM_FUNCTION; - QScopedPointer settingsManager(new NmApiSettingsManager(mailboxId)); + QScopedPointer settingsManager(new NmApiSettingsManager(mailboxId)); return settingsManager->load(mailboxId, data); } bool NmApiMailboxSettingsPrivate::saveSettings(const NmApiMailboxSettingsData &data) { NM_FUNCTION; - QScopedPointer settingsManager(new NmApiSettingsManager(data.mailboxId())); + QScopedPointer settingsManager(new NmApiSettingsManager(data.mailboxId())); return settingsManager->save(data); } @@ -84,10 +127,10 @@ Q_UNUSED(mailboxType); Q_UNUSED(data); bool ret = false; - + /*QT_TRY { if (mailboxType==NmApiMailboxTypePop || mailboxType==NmApiMailboxTypeImap) { - QScopedPointer popImapManager(new NmApiPopImapSettingsManager()); + QScopedPointer popImapManager(new NmApiPopImapSettingsManager()); popImapManager->createMailbox(mailboxType, data); ret = true; } @@ -99,41 +142,26 @@ QT_CATCH(...){ ret = false; }*/ - + return ret; } bool NmApiMailboxSettingsPrivate::deleteMailbox(quint64 mailboxId) { - NM_FUNCTION; - bool ret = false; - NmDataPluginInterface *instance = mFactory->interfaceInstance(); - if (instance) { - if (mDeleteMailboxOperation && mDeleteMailboxOperation->isRunning()) { - mDeleteMailboxOperation->cancelOperation(); - } - mDeleteMailboxOperation = instance->deleteMailboxById(NmId(mailboxId)); - - if (mDeleteMailboxOperation) { - ret = true; - connect(mDeleteMailboxOperation, - SIGNAL(operationCompleted(int)), - this, - SIGNAL(mailboxDeleted(int))); - } - } - return ret; + Q_UNUSED(mailboxId); + return false; + } bool NmApiMailboxSettingsPrivate::populateDefaultSettings( - const QString &mailboxType, NmApiMailboxSettingsData &data) + const QString &mailboxType, NmApiMailboxSettingsData &data) { - NM_FUNCTION; - Q_UNUSED(mailboxType); - Q_UNUSED(data); - /*QScopedPointer popImapManager(new NmApiPopImapSettingsManager()); - return popImapManager->populateDefaults(mailboxType, data);*/ - return true; + NM_FUNCTION; +// Q_UNUSED(mailboxType); +// Q_UNUSED(data); + QScopedPointer popImapManager(new NmApiPopImapSettingsManager()); + return popImapManager->populateDefaults(mailboxType, data); +// return true; } }// namespace