bluetoothengine/btnotif/btnotifsrv/src/btnotifsettingstracker.cpp
author hgs
Mon, 03 May 2010 14:36:07 +0300
changeset 29 48ae3789ce00
child 31 a0ea99b6fa53
permissions -rw-r--r--
201017_2
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
29
48ae3789ce00 201017_2
hgs
parents:
diff changeset
     1
/*
48ae3789ce00 201017_2
hgs
parents:
diff changeset
     2
* ============================================================================
48ae3789ce00 201017_2
hgs
parents:
diff changeset
     3
*  Name        : btnotifsettingstracker.cpp
48ae3789ce00 201017_2
hgs
parents:
diff changeset
     4
*  Part of     : BTProximity / BTProximity
48ae3789ce00 201017_2
hgs
parents:
diff changeset
     5
*  Description : Class for tracking Bluetooth settings, and also for handling notes unrelated to specific connection.
48ae3789ce00 201017_2
hgs
parents:
diff changeset
     6
*
48ae3789ce00 201017_2
hgs
parents:
diff changeset
     7
*  Copyright © 2009 Nokia Corporation and/or its subsidiary(-ies).
48ae3789ce00 201017_2
hgs
parents:
diff changeset
     8
*  All rights reserved.
48ae3789ce00 201017_2
hgs
parents:
diff changeset
     9
*  This component and the accompanying materials are made available
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    10
*  under the terms of "Eclipse Public License v1.0"
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    11
*  which accompanies this distribution, and is available
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    12
*  at the URL "http://www.eclipse.org/legal/epl-v10.html".
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    13
*
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    14
*  Initial Contributors:
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    15
*  Nokia Corporation - initial contribution.
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    16
*
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    17
*  Contributors:
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    18
*  Nokia Corporation
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    19
* ============================================================================
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    20
* Template version: 4.1
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    21
*/
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    22
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    23
#include "btnotifsettingstracker.h"
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    24
#include <btserversdkcrkeys.h>
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    25
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    26
#include "btnotifserver.h"
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    27
#include "btnotificationmanager.h"
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    28
#include "btnotifclientserver.h"
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    29
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    30
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    31
// ======== MEMBER FUNCTIONS ========
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    32
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    33
// ---------------------------------------------------------------------------
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    34
// C++ default constructor
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    35
// ---------------------------------------------------------------------------
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    36
//
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    37
CBTNotifSettingsTracker::CBTNotifSettingsTracker( CBTNotifServer* aServer )
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    38
:   iServer( aServer )
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    39
    {
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    40
    }
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    41
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    42
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    43
// ---------------------------------------------------------------------------
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    44
// Symbian 2nd-phase constructor
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    45
// ---------------------------------------------------------------------------
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    46
//
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    47
void CBTNotifSettingsTracker::ConstructL()
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    48
    {
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    49
    iSettings = CBTEngSettings::NewL( this );
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    50
    User::LeaveIfError( iSettings->GetPowerState( iPowerState ) );
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    51
    }
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    52
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    53
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    54
// ---------------------------------------------------------------------------
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    55
// NewL.
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    56
// ---------------------------------------------------------------------------
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    57
//
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    58
CBTNotifSettingsTracker* CBTNotifSettingsTracker::NewL( CBTNotifServer* aServer )
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    59
    {
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    60
    CBTNotifSettingsTracker* self = new( ELeave ) CBTNotifSettingsTracker( aServer );
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    61
    CleanupStack::PushL( self );
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    62
    self->ConstructL();
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    63
    CleanupStack::Pop( self );
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    64
    return self;
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    65
    }
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    66
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    67
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    68
// ---------------------------------------------------------------------------
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    69
// Destructor
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    70
// ---------------------------------------------------------------------------
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    71
//
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    72
CBTNotifSettingsTracker::~CBTNotifSettingsTracker()
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    73
    {
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    74
    if( iNotification )
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    75
        {
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    76
        // Clear the notification callback, we cannot receive them anymore.
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    77
        iNotification->RemoveObserver();
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    78
        iNotification->Close(); // Also dequeues the notification from the queue.
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    79
        iNotification = NULL;
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    80
        }
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    81
    delete iSettings;
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    82
    }
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    83
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    84
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    85
// ---------------------------------------------------------------------------
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    86
// Process a client message related to notifiers.
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    87
// ---------------------------------------------------------------------------
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    88
//
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    89
void CBTNotifSettingsTracker::DispatchNotifierMessageL( const RMessage2& aMessage )
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    90
    {
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    91
    TUid uid = TUid::Uid( aMessage.Int0() );
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    92
    (void) uid;
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    93
    }
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    94
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    95
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    96
// ---------------------------------------------------------------------------
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    97
// Cancels an outstanding client message related to notifiers.
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    98
// ---------------------------------------------------------------------------
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    99
//
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   100
void CBTNotifSettingsTracker::CancelNotifierMessageL( const RMessage2& aMessage )
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   101
    {
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   102
    (void) aMessage;
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   103
    }
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   104
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   105
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   106
// ---------------------------------------------------------------------------
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   107
// From class MBTEngSettingsObserver.
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   108
// Handle a power status change.
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   109
// ---------------------------------------------------------------------------
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   110
//
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   111
void CBTNotifSettingsTracker::PowerStateChanged( TBTPowerStateValue aState )
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   112
    {
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   113
    iPowerState = aState;
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   114
    TRAP_IGNORE( iServer->HandlePowerStateChangeL( aState ) );
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   115
    }
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   116
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   117
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   118
// ---------------------------------------------------------------------------
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   119
// From class MBTEngSettingsObserver.
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   120
// Handle a visibility mode change.
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   121
// ---------------------------------------------------------------------------
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   122
//
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   123
void CBTNotifSettingsTracker::VisibilityModeChanged( TBTVisibilityMode aState )
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   124
    {
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   125
    if( iVisibilityMode == EBTVisibilityModeTemporary && 
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   126
            aState == EBTVisibilityModeHidden && iPowerState == EBTPowerOn )
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   127
        {
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   128
        // Timeout expired, launch a note.
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   129
        // Note that we get the power state change before this one, when powering
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   130
		// off and setting visibility mode to hidden automatically.
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   131
        NOTIF_NOTHANDLED( !iNotification )
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   132
        iNotification = iServer->NotificationManager()->GetNotification();
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   133
        if ( iNotification )
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   134
            {
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   135
            iNotification->SetObserver( this );
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   136
            iNotification->SetNotificationType( TBluetoothDeviceDialog::ENote, EVisibilityTimeout );
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   137
            iServer->NotificationManager()->QueueNotification( iNotification );
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   138
            }
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   139
        }
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   140
    iVisibilityMode = aState;
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   141
    }
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   142
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   143
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   144
// ---------------------------------------------------------------------------
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   145
// From class MBTNotificationResult.
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   146
// Handle a result from a user query.
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   147
// ---------------------------------------------------------------------------
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   148
//
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   149
void CBTNotifSettingsTracker::MBRDataReceived( CHbSymbianVariantMap& aData )
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   150
    {
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   151
    (void) aData;
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   152
    }
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   153
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   154
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   155
// ---------------------------------------------------------------------------
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   156
// From class MBTNotificationResult.
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   157
// The notification is finished.
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   158
// ---------------------------------------------------------------------------
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   159
//
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   160
void CBTNotifSettingsTracker::MBRNotificationClosed( TInt aError, const TDesC8& aData  )
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   161
    {
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   162
    (void) aError;
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   163
    (void) aData;
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   164
    iNotification->RemoveObserver();
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   165
    iNotification = NULL;
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   166
    }