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