--- 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 );
+ }
+ }
+
+