syncmlfw/syncmlnotifier/src/syncmlmmcwatcher.cpp
changeset 0 b497e44ab2fc
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/syncmlfw/syncmlnotifier/src/syncmlmmcwatcher.cpp	Thu Dec 17 09:07:52 2009 +0200
@@ -0,0 +1,137 @@
+/*
+ * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
+ * All rights reserved.
+ * This component and the accompanying materials are made available
+ * under the terms of "Eclipse Public License v1.0"
+ * which accompanies this distribution, and is available
+ * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+ *
+ * Initial Contributors:
+ * Nokia Corporation - initial contribution.
+ *
+ * Contributors:
+ *
+ * Description:  Methods for the SyncML Appserver starter notifier
+ *
+ */
+
+#include "syncmlmmcwatcher.h"
+
+// -----------------------------------------------------------------------------
+// CSyncmlmmcwatcher::NewL()
+// -----------------------------------------------------------------------------
+CSyncmlmmcwatcher* CSyncmlmmcwatcher::NewL( MSyncMLQueryMmcObserver* aObserver )
+    {
+    CSyncmlmmcwatcher* self = new( ELeave ) CSyncmlmmcwatcher( aObserver );
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop( self );
+    return self;
+    }
+
+// -----------------------------------------------------------------------------
+// CSyncmlmmcwatcher::CSyncmlmmcwatcher()
+// -----------------------------------------------------------------------------
+inline CSyncmlmmcwatcher::CSyncmlmmcwatcher(MSyncMLQueryMmcObserver* aObserver)    
+    {    
+    immcobserver = aObserver;
+    }
+
+// -----------------------------------------------------------------------------
+// CSyncmlmmcwatcher::ConstructL()
+// -----------------------------------------------------------------------------
+void CSyncmlmmcwatcher::ConstructL()
+    {    
+    TInt err = iMemoryCard.Connect();
+    if ( err == KErrNone )
+        {
+        }
+
+    else
+        User::LeaveIfError(err);
+    iDiskNotifyHandler = CDiskNotifyHandler::NewL( *this, iMemoryCard );
+    }
+
+// -----------------------------------------------------------------------------
+// CSyncmlmmcwatcher::StartL()
+// Logs a request to notify the disk events
+// -----------------------------------------------------------------------------
+void CSyncmlmmcwatcher::StartL()
+    {   
+    FLOG(_L("CSyncmlmmcwatcher::Start- begin"));
+
+    if(iDiskNotifyHandler)
+        {
+        iDiskNotifyHandler->NotifyDisk();
+        }
+    }
+
+// ----------------------------------------------------------------------------------------
+// CSyncmlmmcwatcher::~CSyncmlmmcwatcher() 
+// Destructor
+// ----------------------------------------------------------------------------------------
+CSyncmlmmcwatcher::~CSyncmlmmcwatcher()
+    { 
+    FLOG(_L("CSyncmlmmcwatcher::~CSyncmlmmcwatcher()"));  
+    if(iDiskNotifyHandler)
+        {
+        iDiskNotifyHandler->CancelNotifyDisk();
+        delete iDiskNotifyHandler;
+        iDiskNotifyHandler = NULL;
+        }
+
+    if(iMemoryCard.Handle())
+        {
+        iMemoryCard.Close();
+        }
+    }
+
+// ---------------------------------------------------------------------------
+// CSyncmlmmcwatcher::HandleNotifyDisk
+// Callback method to notify disk events
+// ---------------------------------------------------------------------------
+//
+void CSyncmlmmcwatcher::HandleNotifyDisk( TInt aError, const TDiskEvent& aEvent )
+    {
+    FTRACE( FPrint(
+            _L( "CSysApMMCObserver::HandleNotifyDisk: error: %d, type: %d, drive: %d," ),
+            aError, aEvent.iType, aEvent.iDrive ) );
+
+    if ( aError != KErrNone )
+        {
+        return;
+        }
+    else
+        {
+        if(immcobserver)
+            {
+            FLOG(_L("mmc removal check"));
+            TInt diskinserted = EFalse;
+            RProperty::Get(KPSUidUikon, KUikMMCInserted,diskinserted);
+            if(diskinserted)//EDiskStatusChanged called for insert & hard removal
+                {
+                FLOG(_L("disk inserted"));
+                }
+            else
+                {
+                FLOG(_L("disk removed"));
+                immcobserver->MmcRemoved();
+                }
+            FLOG(_L("mmcremoved call completed"));
+            }
+        }
+
+    }
+
+// ---------------------------------------------------------------------------
+// CSyncmlmmcwatcher::CancelMmcwatch
+// Cancels the notification
+// ---------------------------------------------------------------------------
+//
+void CSyncmlmmcwatcher::CancelMmcwatch()
+    {
+    if(iDiskNotifyHandler)
+        {
+        iDiskNotifyHandler->CancelNotifyDisk();
+        }
+    }