bluetoothengine/btnotif/btnotifsrv/src/btnotifsettingstracker.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Fri, 14 May 2010 16:01:46 +0300
changeset 19 43824b19ee35
child 31 a0ea99b6fa53
permissions -rw-r--r--
Revision: 201017 Kit: 201019

/*
* ============================================================================
*  Name        : btnotifsettingstracker.cpp
*  Part of     : BTProximity / BTProximity
*  Description : Class for tracking Bluetooth settings, and also for handling notes unrelated to specific connection.
*
*  Copyright © 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:
*  Nokia Corporation
* ============================================================================
* Template version: 4.1
*/

#include "btnotifsettingstracker.h"
#include <btserversdkcrkeys.h>

#include "btnotifserver.h"
#include "btnotificationmanager.h"
#include "btnotifclientserver.h"


// ======== MEMBER FUNCTIONS ========

// ---------------------------------------------------------------------------
// C++ default constructor
// ---------------------------------------------------------------------------
//
CBTNotifSettingsTracker::CBTNotifSettingsTracker( CBTNotifServer* aServer )
:   iServer( aServer )
    {
    }


// ---------------------------------------------------------------------------
// Symbian 2nd-phase constructor
// ---------------------------------------------------------------------------
//
void CBTNotifSettingsTracker::ConstructL()
    {
    iSettings = CBTEngSettings::NewL( this );
    User::LeaveIfError( iSettings->GetPowerState( iPowerState ) );
    }


// ---------------------------------------------------------------------------
// NewL.
// ---------------------------------------------------------------------------
//
CBTNotifSettingsTracker* CBTNotifSettingsTracker::NewL( CBTNotifServer* aServer )
    {
    CBTNotifSettingsTracker* self = new( ELeave ) CBTNotifSettingsTracker( aServer );
    CleanupStack::PushL( self );
    self->ConstructL();
    CleanupStack::Pop( self );
    return self;
    }


// ---------------------------------------------------------------------------
// Destructor
// ---------------------------------------------------------------------------
//
CBTNotifSettingsTracker::~CBTNotifSettingsTracker()
    {
    if( iNotification )
        {
        // Clear the notification callback, we cannot receive them anymore.
        iNotification->RemoveObserver();
        iNotification->Close(); // Also dequeues the notification from the queue.
        iNotification = NULL;
        }
    delete iSettings;
    }


// ---------------------------------------------------------------------------
// Process a client message related to notifiers.
// ---------------------------------------------------------------------------
//
void CBTNotifSettingsTracker::DispatchNotifierMessageL( const RMessage2& aMessage )
    {
    TUid uid = TUid::Uid( aMessage.Int0() );
    (void) uid;
    }


// ---------------------------------------------------------------------------
// Cancels an outstanding client message related to notifiers.
// ---------------------------------------------------------------------------
//
void CBTNotifSettingsTracker::CancelNotifierMessageL( const RMessage2& aMessage )
    {
    (void) aMessage;
    }


// ---------------------------------------------------------------------------
// From class MBTEngSettingsObserver.
// Handle a power status change.
// ---------------------------------------------------------------------------
//
void CBTNotifSettingsTracker::PowerStateChanged( TBTPowerStateValue aState )
    {
    iPowerState = aState;
    TRAP_IGNORE( iServer->HandlePowerStateChangeL( aState ) );
    }


// ---------------------------------------------------------------------------
// From class MBTEngSettingsObserver.
// Handle a visibility mode change.
// ---------------------------------------------------------------------------
//
void CBTNotifSettingsTracker::VisibilityModeChanged( TBTVisibilityMode aState )
    {
    if( iVisibilityMode == EBTVisibilityModeTemporary && 
            aState == EBTVisibilityModeHidden && iPowerState == EBTPowerOn )
        {
        // Timeout expired, launch a note.
        // Note that we get the power state change before this one, when powering
		// off and setting visibility mode to hidden automatically.
        NOTIF_NOTHANDLED( !iNotification )
        iNotification = iServer->NotificationManager()->GetNotification();
        if ( iNotification )
            {
            iNotification->SetObserver( this );
            iNotification->SetNotificationType( TBluetoothDeviceDialog::ENote, EVisibilityTimeout );
            iServer->NotificationManager()->QueueNotification( iNotification );
            }
        }
    iVisibilityMode = aState;
    }


// ---------------------------------------------------------------------------
// From class MBTNotificationResult.
// Handle a result from a user query.
// ---------------------------------------------------------------------------
//
void CBTNotifSettingsTracker::MBRDataReceived( CHbSymbianVariantMap& aData )
    {
    (void) aData;
    }


// ---------------------------------------------------------------------------
// From class MBTNotificationResult.
// The notification is finished.
// ---------------------------------------------------------------------------
//
void CBTNotifSettingsTracker::MBRNotificationClosed( TInt aError, const TDesC8& aData  )
    {
    (void) aError;
    (void) aData;
    iNotification->RemoveObserver();
    iNotification = NULL;
    }