bluetoothengine/btui/btuidelegate/btdelegateinquiry.cpp
author hgs
Mon, 12 Jul 2010 18:51:05 +0300
changeset 42 b72428996822
child 57 5ebadcda06cb
permissions -rw-r--r--
201025
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
42
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
hgs
parents:
diff changeset
     3
* All rights reserved.
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
hgs
parents:
diff changeset
     8
*
hgs
parents:
diff changeset
     9
* Initial Contributors:
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
hgs
parents:
diff changeset
    11
*
hgs
parents:
diff changeset
    12
* Contributors:
hgs
parents:
diff changeset
    13
*
hgs
parents:
diff changeset
    14
* Description: 
hgs
parents:
diff changeset
    15
*
hgs
parents:
diff changeset
    16
*/
hgs
parents:
diff changeset
    17
hgs
parents:
diff changeset
    18
hgs
parents:
diff changeset
    19
#include "btdelegateinquiry.h"
hgs
parents:
diff changeset
    20
#include "btdelegatefactory.h"
hgs
parents:
diff changeset
    21
#include "btqtconstants.h"
hgs
parents:
diff changeset
    22
hgs
parents:
diff changeset
    23
#include <btsettingmodel.h>
hgs
parents:
diff changeset
    24
#include <btdevicemodel.h>
hgs
parents:
diff changeset
    25
#include <bluetoothuitrace.h>
hgs
parents:
diff changeset
    26
hgs
parents:
diff changeset
    27
hgs
parents:
diff changeset
    28
BtDelegateInquiry::BtDelegateInquiry(
hgs
parents:
diff changeset
    29
        BtSettingModel* settingModel, 
hgs
parents:
diff changeset
    30
        BtDeviceModel* deviceModel, QObject* parent )
hgs
parents:
diff changeset
    31
    :BtAbstractDelegate( settingModel, deviceModel, parent )
hgs
parents:
diff changeset
    32
{
hgs
parents:
diff changeset
    33
    mAbstractDelegate = NULL;
hgs
parents:
diff changeset
    34
}
hgs
parents:
diff changeset
    35
hgs
parents:
diff changeset
    36
BtDelegateInquiry::~BtDelegateInquiry()
hgs
parents:
diff changeset
    37
{
hgs
parents:
diff changeset
    38
hgs
parents:
diff changeset
    39
}
hgs
parents:
diff changeset
    40
hgs
parents:
diff changeset
    41
void BtDelegateInquiry::exec( const QVariant& params )
hgs
parents:
diff changeset
    42
{
hgs
parents:
diff changeset
    43
    Q_UNUSED(params);
hgs
parents:
diff changeset
    44
    
hgs
parents:
diff changeset
    45
    if(isBtPowerOn()) {
hgs
parents:
diff changeset
    46
        exec_inquiry();
hgs
parents:
diff changeset
    47
    }
hgs
parents:
diff changeset
    48
    else {
hgs
parents:
diff changeset
    49
        //If Bt Power is off, switch it on and then perform pairing.
hgs
parents:
diff changeset
    50
        //todo: Do we ask for user confirmation here..?
hgs
parents:
diff changeset
    51
        if (!mAbstractDelegate) { 
hgs
parents:
diff changeset
    52
            mAbstractDelegate = BtDelegateFactory::newDelegate(BtDelegate::ManagePower, 
hgs
parents:
diff changeset
    53
                    getSettingModel(), getDeviceModel() ); 
hgs
parents:
diff changeset
    54
            connect( mAbstractDelegate, SIGNAL(commandCompleted(int)), this, SLOT(powerDelegateCompleted(int)) );
hgs
parents:
diff changeset
    55
            mAbstractDelegate->exec(QVariant(BtPowerOn));
hgs
parents:
diff changeset
    56
        }
hgs
parents:
diff changeset
    57
    }
hgs
parents:
diff changeset
    58
}
hgs
parents:
diff changeset
    59
hgs
parents:
diff changeset
    60
void BtDelegateInquiry::powerDelegateCompleted(int error)
hgs
parents:
diff changeset
    61
{
hgs
parents:
diff changeset
    62
    if (mAbstractDelegate) {
hgs
parents:
diff changeset
    63
        disconnect(mAbstractDelegate);
hgs
parents:
diff changeset
    64
        delete mAbstractDelegate;
hgs
parents:
diff changeset
    65
        mAbstractDelegate = 0;
hgs
parents:
diff changeset
    66
    }
hgs
parents:
diff changeset
    67
    if ( error == KErrNone ) {
hgs
parents:
diff changeset
    68
        exec_inquiry();
hgs
parents:
diff changeset
    69
    } 
hgs
parents:
diff changeset
    70
    else {
hgs
parents:
diff changeset
    71
        // error
hgs
parents:
diff changeset
    72
        emit commandCompleted(error);
hgs
parents:
diff changeset
    73
    }
hgs
parents:
diff changeset
    74
}
hgs
parents:
diff changeset
    75
hgs
parents:
diff changeset
    76
void BtDelegateInquiry::exec_inquiry()
hgs
parents:
diff changeset
    77
{
hgs
parents:
diff changeset
    78
    bool err = getDeviceModel()->searchDevice();
hgs
parents:
diff changeset
    79
hgs
parents:
diff changeset
    80
    emit commandCompleted(err);  // in case of error, passing original error back
hgs
parents:
diff changeset
    81
}
hgs
parents:
diff changeset
    82
hgs
parents:
diff changeset
    83
void BtDelegateInquiry::cancel()
hgs
parents:
diff changeset
    84
{
hgs
parents:
diff changeset
    85
    getDeviceModel()->cancelSearchDevice();
hgs
parents:
diff changeset
    86
}