omadm/omadmextensions/adapters/email/src/nsmldmemailadapter.cpp
changeset 2 a5fecba4b1e4
parent 0 3ce708148e4d
--- a/omadm/omadmextensions/adapters/email/src/nsmldmemailadapter.cpp	Thu Jan 07 12:39:15 2010 +0200
+++ b/omadm/omadmextensions/adapters/email/src/nsmldmemailadapter.cpp	Mon Jan 18 20:09:30 2010 +0200
@@ -767,12 +767,19 @@
             {
             data = iBuffer->At(index).iImap4Settings->ServerAddress().AllocLC();
             }
-        HBufC8 *data8 = HBufC8::NewLC(data->Size());
-        TPtr8 dataPtr8 = data8->Des();
-        CnvUtfConverter::ConvertFromUnicodeToUtf8( dataPtr8, data->Des() );
+        else
+        	{
+          	status = CSmlDmAdapter::ENotFound;
+        	}
+        if(data)
+        	{	    
+        		HBufC8 *data8 = HBufC8::NewLC(data->Size());
+        		TPtr8 dataPtr8 = data8->Des();
+        		CnvUtfConverter::ConvertFromUnicodeToUtf8( dataPtr8, data->Des() );
 
-        object->InsertL(0,dataPtr8);
-        CleanupStack::PopAndDestroy(2); //data, data8
+        		object->InsertL(0,dataPtr8);
+        		CleanupStack::PopAndDestroy(2); //data, data8
+        	}
         }
 
     else if(lastUriSeg.Compare(KNSmlDMEmailMsnd)==0)
@@ -1246,6 +1253,17 @@
             _DBG_FILE("CNSmlDmEmailAdapter::AddNodeObjectL(): EAlreadyExists end");
             return;
             }
+        else
+            {
+            TInt ret = Callback().RemoveMappingL( KNSmlDMEmailAdapterImplUid, 
+						GetDynamicEmailNodeUri(aURI), ETrue );
+			if(ret != KErrNone)
+				{
+            	Callback().SetStatusL(aStatusRef, CSmlDmAdapter::EError);
+	            _DBG_FILE("CNSmlDmEmailAdapter::AddNodeObjectL(): EError end");
+            	return;
+				}
+            }
         Callback().SetMappingL(aURI,KNullDesC8);
         }
 
@@ -2832,6 +2850,11 @@
             {
             data = iBuffer->At(index).iImap4Settings->ServerAddress().AllocLC();
             }
+        else
+        	{
+          	status = CSmlDmAdapter::ENotFound;
+          	return status;            
+        	}
         HBufC8 *data8 = HBufC8::NewLC(data->Size());
         TPtr8 dataPtr8 = data8->Des();
         CnvUtfConverter::ConvertFromUnicodeToUtf8( dataPtr8, data->Des() );
@@ -3331,4 +3354,27 @@
         CleanupStack::PopAndDestroy(); //emailAccs
 		return ret;
 }
+
+//------------------------------------------------------------------------------
+// TPtrC8 CNSmlDmEmailAdapter::GetDynamicEmailNodeUri( const TDesC8& aURI )
+// returns Email/xxx URI
+//------------------------------------------------------------------------------
+TPtrC8 CNSmlDmEmailAdapter::GetDynamicEmailNodeUri( const TDesC8& aURI )
+    {
+    DBG_ARGS8(_S8("CNSmlDmEmailAdapter::GetDynamicEmailNodeUri() - <%S> "), &aURI);
+    TInt i= 0;
+	TBuf8<50> EmailAccRoot(KNSmlDMEmailNodeName);
+    for ( i = aURI.Find( KNSmlDMEmailNodeName ) + EmailAccRoot.Length() + 1; 
+						i < aURI.Length(); i++ )
+        {
+        if( aURI[i] == '/' )
+            {
+            break;
+            }
+        }        
+    _DBG_FILE("CNSmlDmEmailAdapter::GetDynamicEmailNodeUri(): end");
+    return aURI.Left( i );
+    }
+
+
 // End of File