phonebookengines/contactsmodel/cntplsql/src/cplcontactsfile.cpp
branchRCL_3
changeset 9 0d28c1c5b6dd
parent 0 e686773b3f54
--- a/phonebookengines/contactsmodel/cntplsql/src/cplcontactsfile.cpp	Wed Apr 14 15:45:35 2010 +0300
+++ b/phonebookengines/contactsmodel/cntplsql/src/cplcontactsfile.cpp	Tue Apr 27 16:23:35 2010 +0300
@@ -105,6 +105,7 @@
   	Close();
 	delete iItemManager;
 	delete iConfigureStr;
+	iSqlDatabaseObservers.Reset();
 	}
 
 
@@ -340,7 +341,13 @@
 Close the database.
 */
 void CPplContactsFile::Close(TBool aNotify)
-	{	 		
+	{	 	
+	// Close the resource which depends on iDatabase before it will be closed.
+    for (TInt i = 0; i < iSqlDatabaseObservers.Count(); i++ )
+        {
+        iSqlDatabaseObservers[i]->OnCloseL();
+        }
+
   	iDatabase.Close(); 
   	iFileIsOpen = EFalse;
   
@@ -437,3 +444,36 @@
 	return BaflUtils::FileExists(iLocalFs, fileName);
 	}
 
+
+/**
+ * Add an observer for monitoring RSqlDatabase.
+ * 
+ * @param  aSqlDatabaseObserver The observer for monitoring RSqlDatabase.
+ * 
+ * @return None 
+ */
+void CPplContactsFile::AddSqlDBObserverL(
+    MLplSqlDatabaseObserver& aSqlDatabaseObserver )
+    {
+    iSqlDatabaseObservers.AppendL( &aSqlDatabaseObserver );
+    }
+
+
+/**
+ * Remove an RSqlDatabase observer.
+ * 
+ * @param  aSqlDatabaseObserver The observer is to be removed.
+ * 
+ * @return None
+ */
+void CPplContactsFile::RemoveSqlDBObserverL(
+    MLplSqlDatabaseObserver& aSqlDatabaseObserver )
+    {
+    TInt id = iSqlDatabaseObservers.Find( &aSqlDatabaseObserver );
+    if ( id != KErrNotFound )
+        {
+        iSqlDatabaseObservers.Remove( id );
+        }
+    }
+
+