emailservices/nmclientapi/src/nmapipopimapsettingsmanager.cpp
changeset 74 6c59112cfd31
parent 48 10eaf342f539
child 76 38bf5461e270
--- a/emailservices/nmclientapi/src/nmapipopimapsettingsmanager.cpp	Wed Sep 15 17:47:19 2010 +0300
+++ b/emailservices/nmclientapi/src/nmapipopimapsettingsmanager.cpp	Thu Sep 30 11:43:07 2010 +0300
@@ -11,116 +11,286 @@
 *
 * Contributors:
 *
-* Description:
+* Description: Handles the populating of default settings for pop and imap mailboxes
 *
 */
 
-#include "nmapiheaders.h"
-
-
+#include <nmapiheaders.h>
 
+static const unsigned int DefaultPopPort = 110;
+static const unsigned int DefaultImapPort = 143;
+static const unsigned int DefaultSmtpPort = 25;
 
-static const int DefaultPopPort = 110;
-static const int DefaultImapPort = 993;
+static const unsigned int DefaultPopPortSsl = 995;
+static const unsigned int DefaultImapPortSsl = 993;
+static const unsigned int DefaultSmtpPortSsl = 465;
 
 using namespace EmailClientApi;
-    
+
 NmApiPopImapSettingsManager::NmApiPopImapSettingsManager()
-{    
+{
+    NM_FUNCTION;
 }
 
 NmApiPopImapSettingsManager::~NmApiPopImapSettingsManager()
-{   
+{
+    NM_FUNCTION;
 }
 
 bool NmApiPopImapSettingsManager::populateDefaults(const QString &mailboxType, NmApiMailboxSettingsData &data)
 {
-    bool ret = false;
-    
-    QT_TRY {
-        if (mailboxType==NmApiMailboxTypePop) {
-            populatePopDefs(data);
-            ret = true;
+    NM_FUNCTION;
+    bool ret = true;
+ 
+    if (mailboxType==NmApiMailboxTypePop) {
+    TRAPD(err, populatePopDefaultsL(data));
+        if (KErrNone != err) {
+            ret = false;
         }
-        else if (mailboxType==NmApiMailboxTypeImap) {
-            populateImapDefs(data);
-            ret = true;
-        }
-        else {
+    }
+    else if (mailboxType==NmApiMailboxTypeImap) {
+        TRAPD(err, populateImapDefaultsL(data));
+        if (KErrNone != err) {
             ret = false;
         }
     }
-    QT_CATCH(...){
+    else {
+        // Mailbox type not recognized
         ret = false;
     }
-    
+
+    if (ret) {
+        TRAPD(err, populateSmtpDefaultsL(data));
+        if (KErrNone != err) {
+            ret = false;
+        }
+    }
+
+    if (ret) {
+        populateCenrepDefaults(data);
+    }
     return ret;
 }
 
-void NmApiPopImapSettingsManager::populateImapDefs(NmApiMailboxSettingsData &data)
+void NmApiPopImapSettingsManager::populateImapDefaultsL(NmApiMailboxSettingsData &data)
 {
-    QScopedPointer<CImImap4Settings> imapSettings(new CImImap4Settings());
-    
+    NM_FUNCTION;
+    QScopedPointer<CImImap4Settings> imapSettings;
+    imapSettings.reset(new (ELeave) CImImap4Settings());
+
     QScopedPointer<CImIAPPreferences> iapPref;
-    QT_TRAP_THROWING(iapPref.reset(CImIAPPreferences::NewLC());
-            CleanupStack::Pop(iapPref.data()));  
-        
+    iapPref.reset(CImIAPPreferences::NewLC());
+    CleanupStack::Pop(iapPref.data());  
+
     QScopedPointer<CEmailAccounts> mailAccounts;
-    QT_TRAP_THROWING(mailAccounts.reset(CEmailAccounts::NewL()));
+    mailAccounts.reset(CEmailAccounts::NewL());
         
-    QT_TRAP_THROWING( mailAccounts->PopulateDefaultImapSettingsL(*imapSettings,*iapPref));
+    mailAccounts->PopulateDefaultImapSettingsL(*imapSettings,*iapPref);
     
     data.setValue(IncomingLoginName, 
-                           XQConversions::s60Desc8ToQString(imapSettings->LoginName()));
+                            XQConversions::s60Desc8ToQString(imapSettings->LoginName()));
 
     data.setValue(IncomingPassword, 
-                           XQConversions::s60Desc8ToQString(imapSettings->Password()));
-       
+                            XQConversions::s60Desc8ToQString(imapSettings->Password()));
+    
     data.setValue(IncomingMailServer, 
-                           XQConversions::s60DescToQString(imapSettings->ServerAddress()));
-         
-   if (imapSettings->Port()) {
-       data.setValue(IncomingPort, imapSettings->Port());
-       }
-   else {
-       data.setValue(IncomingPort, DefaultImapPort);
-   }
-   
-   data.setValue(OutgoingSecureSockets, imapSettings->SecureSockets());
-   data.setValue(OutgoingSSLWrapper, imapSettings->SSLWrapper());  
+                            XQConversions::s60DescToQString(imapSettings->ServerAddress()));
+
+    data.setValue(FolderPath,
+                            XQConversions::s60Desc8ToQString(imapSettings->FolderPath()));
+
+    TBool secureSockets = imapSettings->SecureSockets();
+    TBool sslWrapper = imapSettings->SSLWrapper();
+    
+    if (secureSockets == true && sslWrapper == false) {
+        data.setValue(IncomingMailSecurityType, NmApiStartTls);
+    }
+    else if (secureSockets == false && sslWrapper == true) {
+        data.setValue(IncomingMailSecurityType, NmApiSSLTls);
+    }
+    else {
+        data.setValue(IncomingMailSecurityType, NmApiSecurityOff);
+    }
+    
+    if (imapSettings->Port()) {
+        data.setValue(IncomingPort, imapSettings->Port());
+        }
+    else {
+        if (sslWrapper) {
+            data.setValue(IncomingPort, DefaultImapPortSsl);
+        }
+        else{
+            data.setValue(IncomingPort, DefaultImapPort);
+        }
+    }
+    
+    
+#if (defined SYMBIAN_EMAIL_CAPABILITY_SUPPORT)
+    if (imapSettings->IMAP4Auth()) {
+        data.setValue(IncomingMailUsesAuthentication, true);
+        }
+    else {
+        data.setValue(IncomingMailUsesAuthentication, false);
+    }
+
+#endif
+
 }
 
-void NmApiPopImapSettingsManager::populatePopDefs(NmApiMailboxSettingsData &data)
+void NmApiPopImapSettingsManager::populatePopDefaultsL(NmApiMailboxSettingsData &data)
 {
-    QScopedPointer<CImPop3Settings> popSettings(new CImPop3Settings());
+    NM_FUNCTION;
+    QScopedPointer<CImPop3Settings> popSettings;
+    popSettings.reset(new (ELeave) CImPop3Settings());
    
     QScopedPointer<CImIAPPreferences> iapPref;
-    QT_TRAP_THROWING(iapPref.reset(CImIAPPreferences::NewLC());
-        CleanupStack::Pop(iapPref.data()));
+    iapPref.reset(CImIAPPreferences::NewLC());
+    CleanupStack::Pop(iapPref.data());
  
     QScopedPointer<CEmailAccounts> mailAccounts;
-    QT_TRAP_THROWING(mailAccounts.reset(CEmailAccounts::NewL()));
+    mailAccounts.reset(CEmailAccounts::NewL());
     
-    QT_TRAP_THROWING( mailAccounts->PopulateDefaultPopSettingsL(*popSettings,*iapPref));
+    mailAccounts->PopulateDefaultPopSettingsL(*popSettings,*iapPref);
     
     data.setValue(IncomingLoginName, 
-                        XQConversions::s60Desc8ToQString(popSettings->LoginName()));
+                            XQConversions::s60Desc8ToQString(popSettings->LoginName()));
    
     data.setValue(IncomingPassword, 
-                        XQConversions::s60Desc8ToQString(popSettings->Password()));
+                            XQConversions::s60Desc8ToQString(popSettings->Password()));
      
     data.setValue(IncomingMailServer, 
-                        XQConversions::s60DescToQString(popSettings->ServerAddress()));
+                            XQConversions::s60DescToQString(popSettings->ServerAddress()));
+    
+    TBool secureSockets = popSettings->SecureSockets();
+    TBool sslWrapper = popSettings->SSLWrapper();
     
+    if (secureSockets == true && sslWrapper == false) {
+        data.setValue(IncomingMailSecurityType, NmApiStartTls);
+    }
+    else if (secureSockets == false && sslWrapper == true) {
+        data.setValue(IncomingMailSecurityType, NmApiSSLTls);
+    }
+    else {
+        data.setValue(IncomingMailSecurityType, NmApiSecurityOff);
+    }
+
     if (popSettings->Port()) {
         data.setValue(IncomingPort, popSettings->Port());
         }
     else {
-        data.setValue(IncomingPort, DefaultPopPort);
+        if (sslWrapper) {
+            data.setValue(IncomingPort, DefaultPopPortSsl);
+        }
+        else{
+            data.setValue(IncomingPort, DefaultPopPort);
+        }
+    }
+
+#if (defined SYMBIAN_EMAIL_CAPABILITY_SUPPORT)
+    if (popSettings->POP3Auth()) {
+        data.setValue(IncomingMailUsesAuthentication, true);
+    }
+    else {
+        data.setValue(IncomingMailUsesAuthentication, false);
+    }
+#endif
+}
+
+void NmApiPopImapSettingsManager::populateSmtpDefaultsL(NmApiMailboxSettingsData &data)
+{
+    NM_FUNCTION;
+    QScopedPointer<CImSmtpSettings> smtpSettings;
+    smtpSettings.reset(new (ELeave) CImSmtpSettings());
+   
+    QScopedPointer<CImIAPPreferences> iapPref;
+    iapPref.reset(CImIAPPreferences::NewLC());
+    CleanupStack::Pop(iapPref.data());
+ 
+    QScopedPointer<CEmailAccounts> mailAccounts;
+    mailAccounts.reset(CEmailAccounts::NewL());
+    
+    mailAccounts->PopulateDefaultSmtpSettingsL(*smtpSettings,*iapPref);
+    
+    data.setValue(EmailAddress, 
+                            XQConversions::s60DescToQString(smtpSettings->EmailAddress()));
+
+    data.setValue(ReplyAddress, 
+                            XQConversions::s60DescToQString(smtpSettings->ReplyToAddress()));
+
+    data.setValue(EmailAlias, 
+                            XQConversions::s60DescToQString(smtpSettings->EmailAlias()));
+
+    data.setValue(OutgoingMailServer,
+                            XQConversions::s60DescToQString(smtpSettings->ServerAddress()));
+
+    QString outgoingLoginName = XQConversions::s60Desc8ToQString(smtpSettings->LoginName()); 
+    QString outgoingPassword = XQConversions::s60Desc8ToQString(smtpSettings->Password()); 
+    data.setValue(OutgoingLoginName, outgoingLoginName);
+    data.setValue(OutgoingPassword, outgoingPassword);
+
+    if (smtpSettings->SMTPAuth()) {
+        QVariant incomingLoginName;
+        QVariant incomingPassword;
+        
+        if (data.getValue(IncomingLoginName, incomingLoginName)
+            && data.getValue(IncomingPassword, incomingPassword)) {
+            if (incomingLoginName == outgoingLoginName && incomingPassword == outgoingPassword) {
+                // incoming login name is same than outgoing
+                data.setValue(OutgoingMailUsesAuthentication, NmApiAuthSameAsIncoming);
+            }
+            else {
+                // Different login for outgoing mail
+                data.setValue(OutgoingMailUsesAuthentication, NmApiAuthUserAuthentication);
+            }
+        }
+        else {
+            // didn't get incoming password or login name. 
+            data.setValue(OutgoingMailUsesAuthentication, NmApiAuthUserAuthentication);
+        }
+    }
+    else {
+        data.setValue(OutgoingMailUsesAuthentication, NmApiAuthNone);
     }
     
-    data.setValue(OutgoingSecureSockets, popSettings->SecureSockets());
-    data.setValue(OutgoingSSLWrapper, popSettings->SSLWrapper());
+    TBool secureSockets = smtpSettings->SecureSockets();
+    TBool sslWrapper = smtpSettings->SSLWrapper();
+    
+    if (secureSockets == true && sslWrapper == false) {
+        data.setValue(OutgoingMailSecurityType, NmApiStartTls);
+    }
+    else if (secureSockets == false && sslWrapper == true) {
+        data.setValue(OutgoingMailSecurityType, NmApiSSLTls);
+    }
+    else {
+        data.setValue(OutgoingMailSecurityType, NmApiSecurityOff);
+    }
+    
+    if (smtpSettings->Port()) {
+        data.setValue(OutgoingPort, smtpSettings->Port());
+    }
+    else {
+        if (sslWrapper) {
+            data.setValue(OutgoingPort, DefaultSmtpPortSsl);
+        }
+        else{
+            data.setValue(OutgoingPort, DefaultSmtpPort);
+        }
+    }
 }
 
-
+void NmApiPopImapSettingsManager::populateCenrepDefaults(NmApiMailboxSettingsData &data)
+{
+    NM_FUNCTION;
+    data.setValue(DownloadPictures, int(0));
+    data.setValue(MessageDivider, int(0));
+    data.setValue(ReceptionActiveProfile, EmailClientApi::EmailProfileOffsetSE);
+    data.setValue(ReceptionUserDefinedProfile, int(0));	// 0, because default profile is save energy
+    data.setValue(ReceptionInboxSyncWindow, IpsServices::DefaultValueSaveEnergyInboxSyncWindow);
+    data.setValue(ReceptionGenericSyncWindowInMessages, int(0)); // all messages
+    data.setValue(ReceptionRefreshPeriodOther, int(0)); // when opening mailbox. (no refreshing in save energy mode)
+    data.setValue(ReceptionWeekDays, IpsServices::DefaultValueSaveEnergyReceptionDays);
+    data.setValue(ReceptionDayStartTime, IpsServices::DefaultValueSaveEnergyReceptionStartTime);
+    data.setValue(ReceptionDayEndTime, IpsServices::DefaultValueSaveEnergyReceptionEndTime);
+    data.setValue(ReceptionRefreshPeriodDayTime, IpsServices::DefaultValueSaveEnergyReceptionRefreshPeriodDayTime);
+    data.setValue(UserNameHidden, int(0));
+}