messagingapp/msgsettings/msginit/src/coutboxobserver.cpp
author hgs
Tue, 13 Jul 2010 22:09:22 +0530
changeset 46 b1f0785c289d
permissions -rw-r--r--
201027_03
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
46
b1f0785c289d 201027_03
hgs
parents:
diff changeset
     1
/*
b1f0785c289d 201027_03
hgs
parents:
diff changeset
     2
 * Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
b1f0785c289d 201027_03
hgs
parents:
diff changeset
     3
 * All rights reserved.
b1f0785c289d 201027_03
hgs
parents:
diff changeset
     4
 * This component and the accompanying materials are made available
b1f0785c289d 201027_03
hgs
parents:
diff changeset
     5
 * under the terms of "Eclipse Public License v1.0"
b1f0785c289d 201027_03
hgs
parents:
diff changeset
     6
 * which accompanies this distribution, and is available
b1f0785c289d 201027_03
hgs
parents:
diff changeset
     7
 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
b1f0785c289d 201027_03
hgs
parents:
diff changeset
     8
 *
b1f0785c289d 201027_03
hgs
parents:
diff changeset
     9
 * Initial Contributors:
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    10
 * Nokia Corporation - initial contribution.
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    11
 *
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    12
 * Contributors:
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    13
 *
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    14
 * Description:   Implements the class
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    15
 *
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    16
 */
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    17
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    18
// INCLUDE FILES
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    19
#include <e32def.h>
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    20
#include <msvids.h>              // Entry Ids
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    21
#include <e32property.h>
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    22
#include <PSVariables.h>
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    23
#include "coutboxsender.h"
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    24
#include "coutboxobserver.h"
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    25
#include "cmobilesignalstrengthhandler.h"
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    26
#include "debugtraces.h"
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    27
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    28
// ================= MEMBER FUNCTIONS =======================
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    29
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    30
// ---------------------------------------------------------
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    31
// COutboxObserver::COutboxObserver
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    32
// ---------------------------------------------------------
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    33
//
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    34
COutboxObserver::COutboxObserver(){}
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    35
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    36
// ---------------------------------------------------------
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    37
// COutboxObserver::ConstructL
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    38
// ---------------------------------------------------------
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    39
//
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    40
void COutboxObserver::ConstructL()
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    41
{
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    42
    QDEBUG_WRITE( "COutboxObserver::ConstructL Enter" );
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    43
    // instantiate the signal strength handler
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    44
    iSignalStrengthHandler = CMobileSignalStrengthHandler::NewL();
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    45
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    46
    if (iSignalStrengthHandler->ObservingSupported()) 
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    47
    {
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    48
        iSignalStrengthHandler->SetSignalStrengthObserverL(this);
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    49
        iSignalStrengthHandler->StartObservingL();
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    50
    }
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    51
    else 
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    52
    {
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    53
        QDEBUG_WRITE( "COutboxObserver::ConstructL else part" );
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    54
    }
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    55
    QDEBUG_WRITE( "COutboxObserver::ConstructL Exit" );
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    56
}
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    57
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    58
// ---------------------------------------------------------
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    59
// COutboxObserver::NewL
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    60
// ---------------------------------------------------------
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    61
//
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    62
COutboxObserver* COutboxObserver::NewL()
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    63
{
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    64
    // Create the instance of the outbox observer
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    65
    COutboxObserver* self = new (ELeave) COutboxObserver();
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    66
    // Push it to stack while executing the constructor
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    67
    CleanupStack::PushL(self);
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    68
    self->ConstructL();
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    69
    CleanupStack::Pop();
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    70
    return self;
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    71
}
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    72
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    73
// ---------------------------------------------------------
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    74
// COutboxObserver::~COutboxObserver
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    75
// ---------------------------------------------------------
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    76
//
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    77
COutboxObserver::~COutboxObserver()
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    78
{
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    79
    delete iSignalStrengthHandler;
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    80
    EndSessions();
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    81
}
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    82
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    83
// ---------------------------------------------------------
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    84
// COutboxObserver::SignalStrengthUpdatedL
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    85
// ---------------------------------------------------------
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    86
//
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    87
void COutboxObserver::SignalStrengthAndBarUpdatedL(TInt /*aNewSignalValue*/, TInt aNewBarValue)
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    88
{
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    89
    QDEBUG_WRITE_FORMAT( "COutboxObserver::SignalStrengthUpdatedL - Signal bars ", aNewBarValue );
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    90
    // pass new bar value to outbox sender
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    91
    InformOutboxSenderL(aNewBarValue);
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    92
}
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    93
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    94
// ---------------------------------------------------------
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    95
// COutboxObserver::InformOutboxSenderL
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    96
// ---------------------------------------------------------
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    97
//
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    98
void COutboxObserver::InformOutboxSenderL(const TInt& aNetworkBars)
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    99
{
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   100
    if (iOutboxSender) {
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   101
        QDEBUG_WRITE( "COutboxObserver::InformOutboxSenderL - Informing outbox sender." );
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   102
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   103
        iOutboxSender->CheckAndStartSendingL(aNetworkBars);
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   104
    }
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   105
    else {
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   106
        QDEBUG_WRITE( "COutboxObserver::InformOutboxSenderL - Outbox sender not initialized." );
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   107
    }
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   108
}
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   109
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   110
// ---------------------------------------------------------
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   111
// COutboxObserver::StartSessionsL
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   112
// ---------------------------------------------------------
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   113
//
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   114
void COutboxObserver::StartSessionsL(CMsvSession& aMsvSession)
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   115
{
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   116
    // Set outbox folder
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   117
    iOutboxFolder = aMsvSession.GetEntryL(KMsvGlobalOutBoxIndexEntryId);
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   118
    iOutboxFolder->AddObserverL(*this);
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   119
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   120
    // Remove the Sender, if it exists
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   121
    delete iOutboxSender;
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   122
    iOutboxSender = NULL;
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   123
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   124
    QDEBUG_WRITE("COutboxObserver::StartSessionsL - Initializing outbox sender.." );
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   125
    iOutboxSender = COutboxSender::NewL(aMsvSession);
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   126
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   127
    QDEBUG_WRITE( "COutboxObserver::StartSessionsL - Informing outbox sender of network status.." );
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   128
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   129
    // get current signal bar value
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   130
    TInt signalBars = 0;
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   131
    TRAPD( err, signalBars = iSignalStrengthHandler->BarValueL() );
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   132
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   133
    // check error
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   134
    if (err == KErrNone) 
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   135
    {
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   136
        QDEBUG_WRITE_FORMAT("COutboxObserver::StartSessionsL - Got signal bar value notifying..", signalBars );
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   137
        iOutboxSender->CheckAndStartSendingL(signalBars);
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   138
    }
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   139
    else 
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   140
    {
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   141
        QDEBUG_WRITE_FORMAT( "COutboxObserver::StartSessionsL - Failed to get signal bar value (err = )", err );
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   142
    }
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   143
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   144
}
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   145
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   146
// ---------------------------------------------------------
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   147
// COutboxObserver::EndSessions
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   148
// ---------------------------------------------------------
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   149
//
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   150
void COutboxObserver::EndSessions()
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   151
{
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   152
    // Delete Outbox sender
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   153
    delete iOutboxSender;
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   154
    iOutboxSender = NULL;
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   155
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   156
    if (iOutboxFolder) {
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   157
        // Delete outbox folder
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   158
        iOutboxFolder->RemoveObserver(*this);
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   159
        delete iOutboxFolder;
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   160
        iOutboxFolder = NULL;
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   161
    }
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   162
}
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   163
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   164
// ---------------------------------------------------------
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   165
// COutboxObserver::HandleMsvSessionReadyL
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   166
// ---------------------------------------------------------
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   167
//    
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   168
void COutboxObserver::HandleMsvSessionReadyL(CMsvSession& aMsvSession)
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   169
{
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   170
    StartSessionsL(aMsvSession);
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   171
}
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   172
// ---------------------------------------------------------
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   173
// COutboxObserver::HandleMsvSessionClosedL
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   174
// ---------------------------------------------------------
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   175
//    
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   176
void COutboxObserver::HandleMsvSessionClosedL()
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   177
{
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   178
    EndSessions();
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   179
}
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   180
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   181
// ---------------------------------------------------------
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   182
// COutboxObserver::HandleEntryEventL
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   183
// ---------------------------------------------------------
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   184
//
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   185
void COutboxObserver::HandleEntryEventL(TMsvEntryEvent /*aEvent*/, TAny* /*aArg1*/,
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   186
    TAny* /*aArg2*/, TAny* /*aArg3*/)
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   187
{
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   188
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   189
}
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   190
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   191
//  End of File