bluetoothengine/btnotif/btdevicedialogplugin/src/btdevicedialogquerywidget.cpp
author hgs
Fri, 03 Sep 2010 16:17:59 +0300
changeset 57 5ebadcda06cb
parent 47 9e2a905b887f
child 70 f5508c13dfe0
permissions -rw-r--r--
201035_7
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
* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
48ae3789ce00 201017_2
hgs
parents:
diff changeset
     3
* All rights reserved.
48ae3789ce00 201017_2
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
48ae3789ce00 201017_2
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
48ae3789ce00 201017_2
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
48ae3789ce00 201017_2
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
48ae3789ce00 201017_2
hgs
parents:
diff changeset
     8
*
48ae3789ce00 201017_2
hgs
parents:
diff changeset
     9
* Initial Contributors:
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    11
*
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    12
* Contributors:
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    13
*
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    14
* Description:  BtDeviceDialogWidget class implementation.
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    15
*
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    16
*/
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    17
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    18
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    19
#include "btdevicedialogquerywidget.h"
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    20
#include "btdevicedialogplugintrace.h"
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    21
#include <bluetoothdevicedialogs.h>
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    22
#include <hbaction.h>
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    23
#include <hbdialog.h>
42
hgs
parents: 29
diff changeset
    24
#include <hblabel.h>
29
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    25
#include "btdevicedialogpluginerrors.h"
57
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
    26
#include <Bluetooth\hci\hcitypes.h>
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
    27
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
    28
const int MaxPasskeyLength = 6;
29
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    29
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    30
/*!
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    31
    class Constructor
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    32
 */
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    33
BtDeviceDialogQueryWidget::BtDeviceDialogQueryWidget(
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    34
        HbMessageBox::MessageBoxType type, const QVariantMap &parameters)
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    35
{
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    36
    TRACE_ENTRY
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    37
    // set properties
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    38
    mLastError = NoError;
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    39
    mShowEventReceived = false;
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    40
    mMessageBox = new HbMessageBox(type);
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    41
    resetProperties();
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    42
    constructQueryDialog(parameters);
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    43
    TRACE_EXIT
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    44
}
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    45
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    46
/*!
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    47
    Set parameters, implementation of interface
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    48
    Invoked when HbDeviceDialog::update calls.
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    49
 */
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    50
bool BtDeviceDialogQueryWidget::setDeviceDialogParameters(
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    51
    const QVariantMap &parameters)
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    52
{
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    53
    TRACE_ENTRY
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    54
    mLastError = NoError;
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    55
    processParam(parameters);
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    56
    TRACE_EXIT
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    57
    return true;
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    58
}
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    59
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    60
/*!
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    61
    Get error, implementation of interface
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    62
 */
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    63
int BtDeviceDialogQueryWidget::deviceDialogError() const
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    64
{
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    65
    TRACE_ENTRY
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    66
    TRACE_EXIT
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    67
    return mLastError;
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    68
}
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    69
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    70
/*!
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    71
    Close notification, implementation of interface
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    72
 */ 
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    73
void BtDeviceDialogQueryWidget::closeDeviceDialog(bool byClient)
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    74
{
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    75
    TRACE_ENTRY
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    76
    Q_UNUSED(byClient);
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    77
    // Closed by client or internally by server -> no action to be transmitted.
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    78
    mSendAction = false;
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    79
    mMessageBox->close();
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    80
    // If show event has been received, close is signalled from hide event. If not,
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    81
    // hide event does not come and close is signalled from here.
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    82
    if (!mShowEventReceived) {
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    83
        emit deviceDialogClosed();
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    84
    }
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    85
    TRACE_EXIT
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    86
}
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    87
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    88
/*!
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    89
    Return display widget, implementation of interface
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    90
 */
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    91
HbDialog *BtDeviceDialogQueryWidget::deviceDialogWidget() const
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    92
{
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    93
    TRACE_ENTRY
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    94
    TRACE_EXIT
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    95
    return mMessageBox;
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    96
}
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    97
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    98
QObject *BtDeviceDialogQueryWidget::signalSender() const
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    99
{
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   100
    return const_cast<BtDeviceDialogQueryWidget*>(this);
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   101
}        
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   102
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   103
/*!
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   104
    Construct display widget
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   105
 */
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   106
bool BtDeviceDialogQueryWidget::constructQueryDialog(const QVariantMap &parameters)
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   107
{
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   108
    TRACE_ENTRY
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   109
    // analyze the parameters to compose the properties of the message box widget 
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   110
    processParam(parameters);
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   111
 
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   112
    connect(mMessageBox, SIGNAL(finished(HbAction*)), this, SLOT(messageBoxClosed(HbAction*)));
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   113
    
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   114
    TRACE_EXIT
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   115
    return true;
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   116
}
57
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   117
/*!
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   118
    Take parameter values and generate the input status string
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   119
 */
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   120
QString& BtDeviceDialogQueryWidget::GetPasskeyEntryStatusString(int aStatus)
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   121
    {
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   122
        switch(aStatus)
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   123
            {
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   124
            case EPasskeyDigitEntered :
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   125
                mDispPassKeyNumDigit ++; // keep count of remote entry
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   126
                if(mDisplayPasskeyStatus.length()< MaxPasskeyLength + 1) // + 1 space
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   127
                    {
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   128
                    if(mDisplayPasskeyStatus.length()== 3)
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   129
                        {
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   130
                        mDisplayPasskeyStatus.append(tr(" ")); // cosmetic
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   131
                        }
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   132
                    mDisplayPasskeyStatus.append(tr("*"));
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   133
                    }
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   134
                break;
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   135
            case EPasskeyDigitDeleted :
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   136
                // passkey entry is limited to 6 digits
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   137
                if((mDisplayPasskeyStatus.length()> 0 )&& (mDispPassKeyNumDigit < MaxPasskeyLength + 1))
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   138
                    {
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   139
                    if(mDisplayPasskeyStatus.length() == 5) // cosmetic
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   140
                        {
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   141
                        mDisplayPasskeyStatus = mDisplayPasskeyStatus.left(mDisplayPasskeyStatus.length()-1);
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   142
                        }
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   143
                    mDisplayPasskeyStatus = mDisplayPasskeyStatus.left(mDisplayPasskeyStatus.length()-1);
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   144
                    // we only decrement if the string is not zero
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   145
                    mDispPassKeyNumDigit --;
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   146
                    }
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   147
                break;
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   148
            case EPasskeyCleared :
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   149
            case EPasskeyEntryStarted :
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   150
            case EPasskeyEntryCompleted :
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   151
            default:
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   152
                mDispPassKeyNumDigit = 0;
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   153
                mDisplayPasskeyStatus.clear();
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   154
                mDisplayPasskeyStatus.append(tr(""));
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   155
                break;
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   156
            }
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   157
        return mDisplayPasskeyStatus;
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   158
    }
29
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   159
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   160
/*!
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   161
    Take parameter values and generate relevant property of this widget
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   162
 */
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   163
void BtDeviceDialogQueryWidget::processParam(const QVariantMap &parameters)
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   164
{
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   165
    TRACE_ENTRY
42
hgs
parents: 29
diff changeset
   166
    QString keyStr, prompt,title;
57
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   167
    int status = -1;
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   168
    QVariant name,param,addval,passkeyinputstatus;
29
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   169
    keyStr.setNum( TBluetoothDialogParams::EResource );
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   170
    // Validate if the resource item exists.
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   171
    QVariantMap::const_iterator i = parameters.constFind( keyStr );
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   172
    // item of ResourceId is not found, can't continue.
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   173
    if ( i == parameters.constEnd() ) {
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   174
        mLastError = UnknownDeviceDialogError;
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   175
        return;
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   176
    }
57
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   177
    // For passkey display the dialog may be terminated by
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   178
    // a passkey entry completed event from the remote side
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   179
    mSendPasskeyEntryCompletedAction = false;
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   180
    
42
hgs
parents: 29
diff changeset
   181
    param = parameters.value( keyStr );
29
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   182
    int key = param.toInt();
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   183
    switch ( key ) {
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   184
        case ENumericComparison:
42
hgs
parents: 29
diff changeset
   185
            prompt = QString( hbTrId( "txt_bt_info_does_this_code_match_the_code_on_1" ) );
29
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   186
            break;
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   187
        case EPasskeyDisplay:
42
hgs
parents: 29
diff changeset
   188
            prompt = QString( hbTrId( "txt_bt_info_enter_the_following_code_to_the_1" ) );
29
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   189
            break;
47
9e2a905b887f 201029_02
hgs
parents: 42
diff changeset
   190
        case EPairingFailureRetry:
9e2a905b887f 201029_02
hgs
parents: 42
diff changeset
   191
            prompt = QString( hbTrId( "txt_bt_info_pairing_with_1_failed_either_the_pas" ) );
9e2a905b887f 201029_02
hgs
parents: 42
diff changeset
   192
            break;
9e2a905b887f 201029_02
hgs
parents: 42
diff changeset
   193
        case EPairingFailureOk:
9e2a905b887f 201029_02
hgs
parents: 42
diff changeset
   194
            prompt = QString( hbTrId( "txt_bt_info_unable_to_pair_with_1" ) );
9e2a905b887f 201029_02
hgs
parents: 42
diff changeset
   195
            break;
29
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   196
        // Input dialogs
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   197
        case EPinInput:
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   198
        case EObexPasskeyInput:
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   199
        // NULL parameters
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   200
        case ENoResource:
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   201
        case EUnusedResource:
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   202
        default:
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   203
            mLastError = ParameterError;
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   204
            break;
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   205
    }
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   206
    int repls = prompt.count( QString( "%" ) );
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   207
    if ( repls > 0 ) {
42
hgs
parents: 29
diff changeset
   208
        name = parameters.value( QString::number( TBluetoothDeviceDialog::EDeviceName ) );
29
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   209
        prompt = prompt.arg( name.toString() );
47
9e2a905b887f 201029_02
hgs
parents: 42
diff changeset
   210
        if(key != EPairingFailureRetry && key != EPairingFailureOk)
9e2a905b887f 201029_02
hgs
parents: 42
diff changeset
   211
            {
9e2a905b887f 201029_02
hgs
parents: 42
diff changeset
   212
            addval = parameters.value( QString::number( TBluetoothDeviceDialog::EAdditionalDesc ) );
9e2a905b887f 201029_02
hgs
parents: 42
diff changeset
   213
            // todo: Formating the prompt need to be discussed with UI designer
9e2a905b887f 201029_02
hgs
parents: 42
diff changeset
   214
            // The passcode could be displayed on a separate row if it the label did support
9e2a905b887f 201029_02
hgs
parents: 42
diff changeset
   215
            // the use of newline escape character.
57
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   216
            prompt.append(tr("\n")); // insert 1 newlines for clarity
47
9e2a905b887f 201029_02
hgs
parents: 42
diff changeset
   217
            prompt.append(addval.toString());
9e2a905b887f 201029_02
hgs
parents: 42
diff changeset
   218
            if(key == EPasskeyDisplay)
9e2a905b887f 201029_02
hgs
parents: 42
diff changeset
   219
                {
57
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   220
                prompt.append("\n");
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   221
                bool ret = false;
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   222
                passkeyinputstatus = parameters.value( QString::number( TBluetoothDeviceDialog::EAdditionalInt ));
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   223
                status = passkeyinputstatus.toInt(&ret);
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   224
                if(ret)
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   225
                    {
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   226
                        prompt.append(GetPasskeyEntryStatusString(status));
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   227
                    }
47
9e2a905b887f 201029_02
hgs
parents: 42
diff changeset
   228
                }
9e2a905b887f 201029_02
hgs
parents: 42
diff changeset
   229
            }
29
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   230
    }
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   231
    // set property value to this dialog widget
47
9e2a905b887f 201029_02
hgs
parents: 42
diff changeset
   232
    if(key != EPairingFailureRetry && key != EPairingFailureOk)
9e2a905b887f 201029_02
hgs
parents: 42
diff changeset
   233
        {
9e2a905b887f 201029_02
hgs
parents: 42
diff changeset
   234
        title = QString(hbTrId("txt_bt_title_pairing_with_1"));
9e2a905b887f 201029_02
hgs
parents: 42
diff changeset
   235
        title = title.arg(name.toString());
9e2a905b887f 201029_02
hgs
parents: 42
diff changeset
   236
        mMessageBox->setHeadingWidget(new HbLabel(title));
9e2a905b887f 201029_02
hgs
parents: 42
diff changeset
   237
        mMessageBox->setIconVisible(false);
57
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   238
        if(key == EPasskeyDisplay)
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   239
            {
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   240
            mMessageBox->setStandardButtons(HbMessageBox::Cancel);
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   241
            }
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   242
        else
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   243
            {
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   244
            mMessageBox->setStandardButtons( HbMessageBox::Yes | HbMessageBox::No);
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   245
            }
47
9e2a905b887f 201029_02
hgs
parents: 42
diff changeset
   246
        }
9e2a905b887f 201029_02
hgs
parents: 42
diff changeset
   247
    else
9e2a905b887f 201029_02
hgs
parents: 42
diff changeset
   248
        {
9e2a905b887f 201029_02
hgs
parents: 42
diff changeset
   249
        if(key == EPairingFailureRetry)
9e2a905b887f 201029_02
hgs
parents: 42
diff changeset
   250
            {
9e2a905b887f 201029_02
hgs
parents: 42
diff changeset
   251
            mMessageBox->setStandardButtons( HbMessageBox::Retry | HbMessageBox::Cancel);
9e2a905b887f 201029_02
hgs
parents: 42
diff changeset
   252
            }
9e2a905b887f 201029_02
hgs
parents: 42
diff changeset
   253
        else
9e2a905b887f 201029_02
hgs
parents: 42
diff changeset
   254
            {
9e2a905b887f 201029_02
hgs
parents: 42
diff changeset
   255
            mMessageBox->setStandardButtons( HbMessageBox::Ok);
9e2a905b887f 201029_02
hgs
parents: 42
diff changeset
   256
            }
9e2a905b887f 201029_02
hgs
parents: 42
diff changeset
   257
        }
29
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   258
    mMessageBox->setText( prompt );
57
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   259
    if(status == EPasskeyEntryCompleted && key == EPasskeyDisplay)
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   260
        {
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   261
        mSendPasskeyEntryCompletedAction = true;
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   262
        mMessageBox->close();
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   263
        }
29
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   264
    TRACE_EXIT
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   265
}
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   266
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   267
/*!
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   268
    Reset properties to default values
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   269
 */
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   270
void BtDeviceDialogQueryWidget::resetProperties()
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   271
{
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   272
    TRACE_ENTRY
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   273
    // set to default values
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   274
    mMessageBox->setModal(true);
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   275
    mMessageBox->setTimeout(HbDialog::NoTimeout);
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   276
    mMessageBox->setDismissPolicy(HbDialog::NoDismiss);
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   277
    mSendAction = true;
57
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   278
    mDispPassKeyNumDigit = 0;
29
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   279
    TRACE_EXIT
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   280
    return;
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   281
}
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   282
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   283
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   284
void BtDeviceDialogQueryWidget::messageBoxClosed(HbAction* action)
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   285
{
57
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   286
    TRACE_ENTRY
29
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   287
    QVariantMap data;
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   288
    
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   289
    HbMessageBox *dlg=static_cast<HbMessageBox*>(sender());
57
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   290
    if(dlg->actions().first() == action) 
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   291
        {
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   292
        if(dlg->actions().count() > 1)
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   293
            {
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   294
            data.insert( QString( "result" ), QVariant(true));
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   295
            }
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   296
        else
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   297
            {
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   298
            // this is a passkey display dialog with a cancel button
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   299
            data.insert( QString( "result" ), QVariant(false));
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   300
            }
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   301
        } 
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   302
    else if(dlg->actions().count() > 1)
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   303
        {
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   304
        if(dlg->actions().at(1) == action) {
29
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   305
        //No
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   306
        data.insert( QString( "result" ), QVariant(false));
57
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   307
        }
29
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   308
    }
57
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   309
    if(mSendPasskeyEntryCompletedAction)
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   310
        {
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   311
        // complete successfully the dialog
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   312
        // The BT stack will determine if pairing was ok 
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   313
        data.insert( QString( "result" ), QVariant(true));
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   314
        mSendPasskeyEntryCompletedAction = false;
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   315
        }
29
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   316
    emit deviceDialogData(data);
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   317
    emit deviceDialogClosed();
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   318
    mSendAction = false;
57
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   319
    TRACE_EXIT
29
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   320
}