contentstorage/srvsrc/cainstallnotifier.cpp
changeset 66 32469d7d46ff
parent 60 f62f87b200ec
child 119 50e220be30d1
--- a/contentstorage/srvsrc/cainstallnotifier.cpp	Fri Apr 16 15:16:09 2010 +0300
+++ b/contentstorage/srvsrc/cainstallnotifier.cpp	Mon May 03 12:48:45 2010 +0300
@@ -16,14 +16,14 @@
  */
 
 #include "cainstallnotifier.h"
+#include "cainstallstrategy.h"
 
 EXPORT_C CCaInstallNotifier* CCaInstallNotifier::NewL(
         MCaInstallListener& aListener, TNotificationType aNotificationType )
     {
-    CCaInstallNotifier* self = new ( ELeave ) CCaInstallNotifier(
-            aListener, aNotificationType );
+    CCaInstallNotifier* self = new ( ELeave ) CCaInstallNotifier( aListener );
     CleanupStack::PushL( self );
-    self->ConstructL();
+    self->ConstructL( aNotificationType );
     CleanupStack::Pop( self );
     return self;
     }
@@ -32,21 +32,34 @@
     {
     Cancel();
     iProperty.Close();
+    delete iNotifierStrategy;
     }
 
-CCaInstallNotifier::CCaInstallNotifier( MCaInstallListener& aListener,
-        TNotificationType aNotificationType ) :
+CCaInstallNotifier::CCaInstallNotifier( MCaInstallListener& aListener ) :
     CActive( EPriorityNormal ), iListener( aListener )
     {
-    iRPropertyKey = aNotificationType;
-    iProperty.Attach( KUidSystemCategory, iRPropertyKey );
     CActiveScheduler::Add( this );
-    iProperty.Subscribe( iStatus );
     SetActive();
     }
 
-void CCaInstallNotifier::ConstructL()
+void CCaInstallNotifier::ConstructL( TNotificationType aNotificationType )
     {
+    switch( aNotificationType )
+		{
+        case ESisInstallNotification:
+        	iNotifierStrategy = CCaSwiInstallStrategy::NewL( iProperty );
+            break;
+        case EUsifUninstallNotification:
+        	iNotifierStrategy = CCaUsifUninstallStrategy::NewL( iProperty );
+            break;
+        case EJavaInstallNotification:
+        	iNotifierStrategy = CCaJavaInstallStrategy::NewL( iProperty );
+            break;
+        default:
+        	User::Leave( KErrNotSupported );
+            break;
+		}
+    iProperty.Subscribe( iStatus );
     }
 
 void CCaInstallNotifier::DoCancel()
@@ -58,13 +71,7 @@
     {
     SetActive();
     iProperty.Subscribe( iStatus );
-    TInt appUid;
-    User::LeaveIfError( iProperty.Get( KUidSystemCategory, iRPropertyKey,
-            appUid ) );
-    if( appUid )
-        {
-        iListener.HandleInstallNotifyL( appUid );
-        }
+    iNotifierStrategy->NotifyListenerL( iProperty, iListener );
     }
 
 TInt CCaInstallNotifier::RunError( TInt /*aError*/)
@@ -72,3 +79,4 @@
     // No need to do anything
     return KErrNone;
     }
+