messagingapp/msgsettings/msginit/src/coutboxobserver.cpp
changeset 52 12db4185673b
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/messagingapp/msgsettings/msginit/src/coutboxobserver.cpp	Wed Aug 18 09:45:25 2010 +0300
@@ -0,0 +1,191 @@
+/*
+ * Copyright (c) 2010 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:   Implements the class
+ *
+ */
+
+// INCLUDE FILES
+#include <e32def.h>
+#include <msvids.h>              // Entry Ids
+#include <e32property.h>
+#include <PSVariables.h>
+#include "coutboxsender.h"
+#include "coutboxobserver.h"
+#include "cmobilesignalstrengthhandler.h"
+#include "debugtraces.h"
+
+// ================= MEMBER FUNCTIONS =======================
+
+// ---------------------------------------------------------
+// COutboxObserver::COutboxObserver
+// ---------------------------------------------------------
+//
+COutboxObserver::COutboxObserver(){}
+
+// ---------------------------------------------------------
+// COutboxObserver::ConstructL
+// ---------------------------------------------------------
+//
+void COutboxObserver::ConstructL()
+{
+    QDEBUG_WRITE( "COutboxObserver::ConstructL Enter" );
+    // instantiate the signal strength handler
+    iSignalStrengthHandler = CMobileSignalStrengthHandler::NewL();
+
+    if (iSignalStrengthHandler->ObservingSupported()) 
+    {
+        iSignalStrengthHandler->SetSignalStrengthObserverL(this);
+        iSignalStrengthHandler->StartObservingL();
+    }
+    else 
+    {
+        QDEBUG_WRITE( "COutboxObserver::ConstructL else part" );
+    }
+    QDEBUG_WRITE( "COutboxObserver::ConstructL Exit" );
+}
+
+// ---------------------------------------------------------
+// COutboxObserver::NewL
+// ---------------------------------------------------------
+//
+COutboxObserver* COutboxObserver::NewL()
+{
+    // Create the instance of the outbox observer
+    COutboxObserver* self = new (ELeave) COutboxObserver();
+    // Push it to stack while executing the constructor
+    CleanupStack::PushL(self);
+    self->ConstructL();
+    CleanupStack::Pop();
+    return self;
+}
+
+// ---------------------------------------------------------
+// COutboxObserver::~COutboxObserver
+// ---------------------------------------------------------
+//
+COutboxObserver::~COutboxObserver()
+{
+    delete iSignalStrengthHandler;
+    EndSessions();
+}
+
+// ---------------------------------------------------------
+// COutboxObserver::SignalStrengthUpdatedL
+// ---------------------------------------------------------
+//
+void COutboxObserver::SignalStrengthAndBarUpdatedL(TInt /*aNewSignalValue*/, TInt aNewBarValue)
+{
+    QDEBUG_WRITE_FORMAT( "COutboxObserver::SignalStrengthUpdatedL - Signal bars ", aNewBarValue );
+    // pass new bar value to outbox sender
+    InformOutboxSenderL(aNewBarValue);
+}
+
+// ---------------------------------------------------------
+// COutboxObserver::InformOutboxSenderL
+// ---------------------------------------------------------
+//
+void COutboxObserver::InformOutboxSenderL(const TInt& aNetworkBars)
+{
+    if (iOutboxSender) {
+        QDEBUG_WRITE( "COutboxObserver::InformOutboxSenderL - Informing outbox sender." );
+
+        iOutboxSender->CheckAndStartSendingL(aNetworkBars);
+    }
+    else {
+        QDEBUG_WRITE( "COutboxObserver::InformOutboxSenderL - Outbox sender not initialized." );
+    }
+}
+
+// ---------------------------------------------------------
+// COutboxObserver::StartSessionsL
+// ---------------------------------------------------------
+//
+void COutboxObserver::StartSessionsL(CMsvSession& aMsvSession)
+{
+    // Set outbox folder
+    iOutboxFolder = aMsvSession.GetEntryL(KMsvGlobalOutBoxIndexEntryId);
+    iOutboxFolder->AddObserverL(*this);
+
+    // Remove the Sender, if it exists
+    delete iOutboxSender;
+    iOutboxSender = NULL;
+
+    QDEBUG_WRITE("COutboxObserver::StartSessionsL - Initializing outbox sender.." );
+    iOutboxSender = COutboxSender::NewL(aMsvSession);
+
+    QDEBUG_WRITE( "COutboxObserver::StartSessionsL - Informing outbox sender of network status.." );
+
+    // get current signal bar value
+    TInt signalBars = 0;
+    TRAPD( err, signalBars = iSignalStrengthHandler->BarValueL() );
+
+    // check error
+    if (err == KErrNone) 
+    {
+        QDEBUG_WRITE_FORMAT("COutboxObserver::StartSessionsL - Got signal bar value notifying..", signalBars );
+        iOutboxSender->CheckAndStartSendingL(signalBars);
+    }
+    else 
+    {
+        QDEBUG_WRITE_FORMAT( "COutboxObserver::StartSessionsL - Failed to get signal bar value (err = )", err );
+    }
+
+}
+
+// ---------------------------------------------------------
+// COutboxObserver::EndSessions
+// ---------------------------------------------------------
+//
+void COutboxObserver::EndSessions()
+{
+    // Delete Outbox sender
+    delete iOutboxSender;
+    iOutboxSender = NULL;
+
+    if (iOutboxFolder) {
+        // Delete outbox folder
+        iOutboxFolder->RemoveObserver(*this);
+        delete iOutboxFolder;
+        iOutboxFolder = NULL;
+    }
+}
+
+// ---------------------------------------------------------
+// COutboxObserver::HandleMsvSessionReadyL
+// ---------------------------------------------------------
+//    
+void COutboxObserver::HandleMsvSessionReadyL(CMsvSession& aMsvSession)
+{
+    StartSessionsL(aMsvSession);
+}
+// ---------------------------------------------------------
+// COutboxObserver::HandleMsvSessionClosedL
+// ---------------------------------------------------------
+//    
+void COutboxObserver::HandleMsvSessionClosedL()
+{
+    EndSessions();
+}
+
+// ---------------------------------------------------------
+// COutboxObserver::HandleEntryEventL
+// ---------------------------------------------------------
+//
+void COutboxObserver::HandleEntryEventL(TMsvEntryEvent /*aEvent*/, TAny* /*aArg1*/,
+    TAny* /*aArg2*/, TAny* /*aArg3*/)
+{
+
+}
+
+//  End of File