ipsservices/nmipssettings/src/nmipsimap4settingsmanager.cpp
changeset 30 759dc5235cdb
parent 20 ecc8def7944a
child 66 084b5b1f02a7
--- a/ipsservices/nmipssettings/src/nmipsimap4settingsmanager.cpp	Thu May 27 12:43:55 2010 +0300
+++ b/ipsservices/nmipssettings/src/nmipsimap4settingsmanager.cpp	Fri Jun 11 13:27:14 2010 +0300
@@ -17,6 +17,7 @@
 
 #include <QVariant>
 #include <imapset.h>
+#include <iapprefs.h>
 #include <cemailaccounts.h>
 #include <xqconversions.h>
 
@@ -32,7 +33,7 @@
 // ======== MEMBER FUNCTIONS ========
 
 /*!
-    Constructor
+    Constructor.
     Creates the CImImap4Settings instance for loading and saving the IMAP4 settings.
     Finds and loads the SMTP account and settings linked to the IMAP4 account.
     \param mailboxId Mailbox identifier.
@@ -53,7 +54,7 @@
 }
 
 /*!
-    Destructor
+    Destructor.
 */
 NmIpsImap4SettingsManager::~NmIpsImap4SettingsManager()
 {
@@ -66,7 +67,8 @@
     \param QVariant SettingValue of the found setting value.
     \return <true> when the setting item was found otherwise <false>.
 */
-bool NmIpsImap4SettingsManager::readSetting(IpsServices::SettingItem settingItem, QVariant &settingValue)
+bool NmIpsImap4SettingsManager::readSetting(IpsServices::SettingItem settingItem,
+                                            QVariant &settingValue)
 {
     bool found(false);
     switch (settingItem) {
@@ -101,7 +103,7 @@
         case IpsServices::IncomingSSLWrapper:
         	settingValue = mImap4Settings->SSLWrapper();
             found = true;
-            break;  
+            break;
         default:
             found = NmIpsSettingsManagerBase::readSetting(settingItem, settingValue);
             break;
@@ -115,7 +117,8 @@
     \param settingValue QVariant of the new setting value.
     \return bool <true> when the setting item was succesfully written, otherwise <false>.
 */
-bool NmIpsImap4SettingsManager::writeSetting(IpsServices::SettingItem settingItem, const QVariant &settingValue)
+bool NmIpsImap4SettingsManager::writeSetting(IpsServices::SettingItem settingItem,
+                                             const QVariant &settingValue)
 {
     HBufC *tmp = 0;
     HBufC8 *tmp8 = 0;
@@ -174,6 +177,9 @@
             mImap4Settings->SetSSLWrapper(settingValue.toBool());
             ret = saveSettings();
             break;  
+        case IpsServices::Connection:
+            ret = saveIAPSettings(settingValue.toUInt());
+            // Fallthrough so SMTP IAP settings are also updated accordingly.
         default:
             ret = NmIpsSettingsManagerBase::writeSetting(settingItem, settingValue);
             break;
@@ -183,7 +189,6 @@
 
 /*!
     Deletes the IMAP4 mailbox.
-
     \return Error code <code>0</code> if mailbox deletion was successful, otherwise error
             code is returned.
 */
@@ -198,6 +203,20 @@
     return error;
 }
 
+
+/*!
+     Determines the default port for the incoming mail server based on the security settings.
+     \return The port number to use.
+ */
+int NmIpsImap4SettingsManager::determineDefaultIncomingPort()
+{
+    int port(IpsServices::standardImap4Port);
+    if (mImap4Settings->SSLWrapper()) {
+        port = IpsServices::imap4OverSslPort;
+    }        
+    return port;
+}
+
 /*!
     Stores the IMAP4 specific settings.
     \return bool <true> when the IMAP4 settings were succesfully written, otherwise <false>.
@@ -210,18 +229,17 @@
 }
 
 /*!
-     Determine the default port for the incoming mail server based on the security settings
-     
-     \return int the port number to use
- */
-int NmIpsImap4SettingsManager::determineDefaultIncomingPort()
+    Stores the IMAP4 specific IAP settings.
+    \return bool <true> when the IMAP4 IAP settings were succesfully written, otherwise <false>.
+*/
+bool NmIpsImap4SettingsManager::saveIAPSettings(uint snapId)
 {
-    int port = 0;    
-    bool sslTls = mImap4Settings->SSLWrapper();    
-    if (sslTls) {
-        port = IpsServices::imap4OverSslPort;
-    } else {
-        port = IpsServices::standardImap4Port;
-    }        
-    return port;
+    TRAPD(err,
+        CImIAPPreferences *prefs = CImIAPPreferences::NewLC();
+        mAccount->LoadImapIapSettingsL(mImap4Account, *prefs);
+        prefs->SetSNAPL(snapId);
+        mAccount->SaveImapIapSettingsL(mImap4Account, *prefs);
+        CleanupStack::PopAndDestroy(prefs);
+    );
+    return (err==KErrNone);
 }