webengine/widgetengine/src/Preferences.cpp
branchRCL_3
changeset 44 800203832575
parent 26 cb62a4f66ebe
child 48 79859ed3eea9
--- a/webengine/widgetengine/src/Preferences.cpp	Wed Jun 09 10:52:50 2010 +0300
+++ b/webengine/widgetengine/src/Preferences.cpp	Mon Jun 21 16:54:17 2010 +0300
@@ -49,7 +49,8 @@
                                         m_basepath(0),
                                         m_filepath(0)
 {
-    m_preferences = new RPtrHashMap<TDesC,PrefElement>();    
+    m_preferences = new RPtrHashMap<TDesC,PrefElement>();
+    m_asynsave = new (ELeave) CAsyncCallBack(TCallBack(SavePref,this),CActive::EPriorityIdle);
 }
 
 // ----------------------------------------------------------------------------
@@ -59,8 +60,19 @@
 //
 // ----------------------------------------------------------------------------
 WidgetPreferences::~WidgetPreferences()
-{
-    //TRAP_IGNORE( saveL() );
+{       
+    if(m_asynsave && m_asynsave->IsActive())
+        {
+        m_asynsave->Cancel();
+        TRAPD(err, saveL());
+        if(err!= KErrNone) 
+            {
+            deleteAllPrefFiles();
+            }      
+        }    
+    delete m_asynsave;
+    m_asynsave = NULL;
+    
     if (m_preferences) {
         m_preferences->ResetAndDestroy();
         m_preferences->Close();
@@ -265,14 +277,10 @@
 
         CleanupStack::Pop();   // k
 
-        // Save update to persistent storage
-        TRAPD(err, saveL());
-        if(err!= KErrNone)
-            {
-            deleteAllPrefFiles();
-            }
+    // Save update to persistent storage
+    m_asynsave->Cancel();
+    m_asynsave->CallBack();
     }
-
 }
 
 // ----------------------------------------------------------------------------
@@ -544,6 +552,23 @@
 
     CleanupStack::PopAndDestroy(3); // readStream, filePath, fs
 }
+
+// ----------------------------------------------------------------------------
+// WidgetPreferences::SavePref
+// Save preferences for persistent storage
+//
+//
+// 
+TInt WidgetPreferences::SavePref(TAny* aPtr)
+{   
+    WidgetPreferences* self = (WidgetPreferences*)aPtr;
+    TRAPD(err, self->saveL());
+    if(err!= KErrNone)
+        {
+        self->deleteAllPrefFiles();
+        }
+    return 0;
+}
     
 // ----------------------------------------------------------------------------
 // PrefElement::PrefElement