bluetoothengine/btnotif/btdevicedialogplugin/src/btdevicesearchdialogwidget.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:  
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 "btdevicesearchdialogwidget.h"
31
a0ea99b6fa53 201019_1
hgs
parents: 29
diff changeset
    20
29
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    21
#include <hblistview.h>
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    22
#include <hbtoolbar.h>
47
9e2a905b887f 201029_02
hgs
parents: 42
diff changeset
    23
31
a0ea99b6fa53 201019_1
hgs
parents: 29
diff changeset
    24
29
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    25
#include <qstandarditemmodel.h>
31
a0ea99b6fa53 201019_1
hgs
parents: 29
diff changeset
    26
#include <hbaction.h>
42
hgs
parents: 31
diff changeset
    27
#include <xqconversions.h>
hgs
parents: 31
diff changeset
    28
#include <qtranslator.h>
hgs
parents: 31
diff changeset
    29
#include <qcoreapplication.h>
47
9e2a905b887f 201029_02
hgs
parents: 42
diff changeset
    30
#include <bluetoothdevicedialogs.h>
9e2a905b887f 201029_02
hgs
parents: 42
diff changeset
    31
#include <btuidevtypemap.h>
9e2a905b887f 201029_02
hgs
parents: 42
diff changeset
    32
#include <btuiiconutil.h>
70
hgs
parents: 57
diff changeset
    33
#include "btdevicedialogpluginerrors.h"
29
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    34
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    35
const char* DOCML_BTDEV_SEARCH_DIALOG = ":/docml/bt-device-search-dialog.docml";
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    36
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    37
42
hgs
parents: 31
diff changeset
    38
#define LOC_SEARCHING_DEVICE hbTrId("txt_bt_subhead_searching")
hgs
parents: 31
diff changeset
    39
#define LOC_SEARCH_DONE hbTrId("txt_bt_subhead_search_done")
hgs
parents: 31
diff changeset
    40
#define LOC_SEARCH_STOP hbTrId("txt_common_button_stop")
hgs
parents: 31
diff changeset
    41
#define LOC_SEARCH_RETRY hbTrId("txt_common_button_retry")
57
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
    42
#define LOC_SHOW_DIALOG_TITLE hbTrId("txt_bt_title_show")
42
hgs
parents: 31
diff changeset
    43
hgs
parents: 31
diff changeset
    44
29
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    45
BTDeviceSearchDialogWidget::BTDeviceSearchDialogWidget(const QVariantMap &parameters)
57
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
    46
{
47
9e2a905b887f 201029_02
hgs
parents: 42
diff changeset
    47
    mSelectedDeviceType = 0;
42
hgs
parents: 31
diff changeset
    48
    mLoader = 0;
hgs
parents: 31
diff changeset
    49
    mContentItemModel = 0;
hgs
parents: 31
diff changeset
    50
    mStopRetryFlag = 0; // Stop 
47
9e2a905b887f 201029_02
hgs
parents: 42
diff changeset
    51
    mQuery = 0;
70
hgs
parents: 57
diff changeset
    52
    mLastError = NoError;
47
9e2a905b887f 201029_02
hgs
parents: 42
diff changeset
    53
    mSelectedDeviceType |= (BtuiDevProperty::AVDev | BtuiDevProperty::Computer |
9e2a905b887f 201029_02
hgs
parents: 42
diff changeset
    54
            BtuiDevProperty::Phone | BtuiDevProperty::Peripheral |
9e2a905b887f 201029_02
hgs
parents: 42
diff changeset
    55
            BtuiDevProperty::LANAccessDev | BtuiDevProperty::Toy |
9e2a905b887f 201029_02
hgs
parents: 42
diff changeset
    56
            BtuiDevProperty::WearableDev | BtuiDevProperty::ImagingDev |
9e2a905b887f 201029_02
hgs
parents: 42
diff changeset
    57
            BtuiDevProperty::HealthDev | BtuiDevProperty::UncategorizedDev);       
29
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    58
    constructDialog(parameters);
57
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
    59
}
29
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    60
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    61
BTDeviceSearchDialogWidget::~BTDeviceSearchDialogWidget()
57
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
    62
{
42
hgs
parents: 31
diff changeset
    63
    delete mLoader;
hgs
parents: 31
diff changeset
    64
    delete mContentItemModel;
57
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
    65
    if ( mQuery )
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
    66
    {
47
9e2a905b887f 201029_02
hgs
parents: 42
diff changeset
    67
        delete mQuery;
9e2a905b887f 201029_02
hgs
parents: 42
diff changeset
    68
    }
57
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
    69
}
29
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    70
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    71
bool BTDeviceSearchDialogWidget::setDeviceDialogParameters(const QVariantMap &parameters)
57
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
    72
{
70
hgs
parents: 57
diff changeset
    73
    if(!mLastError)
29
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    74
    {
70
hgs
parents: 57
diff changeset
    75
        if(parameters.keys().contains("Search Completed"))
hgs
parents: 57
diff changeset
    76
        {
hgs
parents: 57
diff changeset
    77
            mStopRetryFlag = 1; // Retry 
hgs
parents: 57
diff changeset
    78
            mSearchLabel->hide();
hgs
parents: 57
diff changeset
    79
            
hgs
parents: 57
diff changeset
    80
            mSearchIconLabel->hide();
hgs
parents: 57
diff changeset
    81
            
hgs
parents: 57
diff changeset
    82
            mSearchDoneLabel->show();
hgs
parents: 57
diff changeset
    83
            mSearchDoneLabel->setTextWrapping(Hb::TextWordWrap);
hgs
parents: 57
diff changeset
    84
            mSearchDoneLabel->setAlignment(Qt::AlignLeft);
hgs
parents: 57
diff changeset
    85
            mSearchDoneLabel->setPlainText(LOC_SEARCH_DONE);
hgs
parents: 57
diff changeset
    86
            
hgs
parents: 57
diff changeset
    87
            mStopRetryAction->setText(LOC_SEARCH_RETRY);
hgs
parents: 57
diff changeset
    88
        }
hgs
parents: 57
diff changeset
    89
        else
hgs
parents: 57
diff changeset
    90
        {
hgs
parents: 57
diff changeset
    91
            int cod  = parameters.value(QString::number(TBluetoothDeviceDialog::EDeviceClass)).toInt();
hgs
parents: 57
diff changeset
    92
            int uiMajorDevice;
hgs
parents: 57
diff changeset
    93
            int uiMinorDevice;
31
a0ea99b6fa53 201019_1
hgs
parents: 29
diff changeset
    94
        
70
hgs
parents: 57
diff changeset
    95
            BtuiDevProperty::mapDeiveType(uiMajorDevice, uiMinorDevice, cod);
hgs
parents: 57
diff changeset
    96
    
hgs
parents: 57
diff changeset
    97
            BtSendDataItem devData;
hgs
parents: 57
diff changeset
    98
            //TODO Need to create string constant for Name as enum EDeviceName is not working for this
hgs
parents: 57
diff changeset
    99
            devData[NameAliasRole] =parameters.value("Name").toString();
hgs
parents: 57
diff changeset
   100
            devData[ReadableBdaddrRole] = parameters.value(QString::number(TBluetoothDeviceDialog::EAddress));
hgs
parents: 57
diff changeset
   101
            devData[CoDRole] = parameters.value(QString::number(TBluetoothDeviceDialog::EDeviceClass));
hgs
parents: 57
diff changeset
   102
            devData[DeviceTypeRole] = QVariant(uiMajorDevice);
hgs
parents: 57
diff changeset
   103
            setMajorProperty(devData,BtuiDevProperty::Bonded,
hgs
parents: 57
diff changeset
   104
                    parameters.value("Bonded").toBool());
hgs
parents: 57
diff changeset
   105
            setMajorProperty(devData,BtuiDevProperty::Blocked,
hgs
parents: 57
diff changeset
   106
                    parameters.value("Blocked").toBool());
hgs
parents: 57
diff changeset
   107
            setMajorProperty(devData,BtuiDevProperty::Trusted,
hgs
parents: 57
diff changeset
   108
                    parameters.value("Trusted").toBool());
hgs
parents: 57
diff changeset
   109
            setMajorProperty(devData,BtuiDevProperty::Connected,
hgs
parents: 57
diff changeset
   110
                    parameters.value("Connected").toBool());
hgs
parents: 57
diff changeset
   111
            mData.append(devData);
hgs
parents: 57
diff changeset
   112
            
hgs
parents: 57
diff changeset
   113
            if(mSelectedDeviceType & devData[DeviceTypeRole].toInt())
hgs
parents: 57
diff changeset
   114
            {
hgs
parents: 57
diff changeset
   115
                QStandardItem* listitem = new QStandardItem();
hgs
parents: 57
diff changeset
   116
                QStringList info;
hgs
parents: 57
diff changeset
   117
                info.append(devData[NameAliasRole].toString());
hgs
parents: 57
diff changeset
   118
                listitem->setData(info, Qt::DisplayRole);
hgs
parents: 57
diff changeset
   119
                HbIcon icon =  getBadgedDeviceTypeIcon(devData[CoDRole].toInt(),
hgs
parents: 57
diff changeset
   120
                        devData[MajorPropertyRole].toInt(),
hgs
parents: 57
diff changeset
   121
                        BtuiBottomLeft | BtuiBottomRight | BtuiTopLeft | BtuiTopRight);
hgs
parents: 57
diff changeset
   122
                listitem->setIcon(icon.qicon());
hgs
parents: 57
diff changeset
   123
                mContentItemModel->appendRow(listitem);    
hgs
parents: 57
diff changeset
   124
                mSelectedData.append(devData);
hgs
parents: 57
diff changeset
   125
            }
hgs
parents: 57
diff changeset
   126
        }
hgs
parents: 57
diff changeset
   127
        return true;
57
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   128
    }
31
a0ea99b6fa53 201019_1
hgs
parents: 29
diff changeset
   129
    else
57
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   130
    {
70
hgs
parents: 57
diff changeset
   131
        return false;
57
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   132
    }
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   133
}
29
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   134
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   135
int BTDeviceSearchDialogWidget::deviceDialogError() const
57
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   136
{
70
hgs
parents: 57
diff changeset
   137
    return mLastError;
57
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   138
}
29
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   139
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   140
void BTDeviceSearchDialogWidget::closeDeviceDialog(bool byClient)
57
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   141
{
29
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   142
    Q_UNUSED(byClient);
42
hgs
parents: 31
diff changeset
   143
    mSearchDevicesDialog->close();
57
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   144
    if(!byClient)
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   145
        {
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   146
        QVariantMap val;
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   147
        QVariant index(-1);
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   148
        val.insert("selectedindex",index);
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   149
        emit deviceDialogData(val);    
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   150
        }
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   151
    emit deviceDialogClosed();
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   152
}
29
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   153
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   154
HbPopup* BTDeviceSearchDialogWidget::deviceDialogWidget() const
57
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   155
{
42
hgs
parents: 31
diff changeset
   156
    return mSearchDevicesDialog;
57
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   157
}
42
hgs
parents: 31
diff changeset
   158
hgs
parents: 31
diff changeset
   159
QObject* BTDeviceSearchDialogWidget::signalSender() const
57
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   160
{
29
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   161
    return const_cast<BTDeviceSearchDialogWidget*>(this);
57
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   162
}
29
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   163
70
hgs
parents: 57
diff changeset
   164
void BTDeviceSearchDialogWidget::constructDialog(const QVariantMap &parameters)
57
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   165
{
70
hgs
parents: 57
diff changeset
   166
    Q_UNUSED(parameters);
29
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   167
    bool ok = false;
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   168
    
42
hgs
parents: 31
diff changeset
   169
    mLoader = new HbDocumentLoader();
29
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   170
    mLoader->load(DOCML_BTDEV_SEARCH_DIALOG, &ok);
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   171
    if(ok)
57
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   172
    {
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   173
        mSearchDevicesDialog = qobject_cast<HbDialog*>(mLoader->findWidget("searchDialog"));
31
a0ea99b6fa53 201019_1
hgs
parents: 29
diff changeset
   174
        
a0ea99b6fa53 201019_1
hgs
parents: 29
diff changeset
   175
        mSearchLabel = qobject_cast<HbLabel*>(mLoader->findWidget("searchLabel"));
a0ea99b6fa53 201019_1
hgs
parents: 29
diff changeset
   176
        mSearchLabel->setTextWrapping(Hb::TextWordWrap);
a0ea99b6fa53 201019_1
hgs
parents: 29
diff changeset
   177
        mSearchLabel->setAlignment(Qt::AlignHCenter);
42
hgs
parents: 31
diff changeset
   178
        mSearchLabel->setPlainText(LOC_SEARCHING_DEVICE);
31
a0ea99b6fa53 201019_1
hgs
parents: 29
diff changeset
   179
 
57
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   180
        mSearchIconLabel = qobject_cast<HbLabel*>(mLoader->findWidget("searchIconLabel"));
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   181
        mSearchIconLabel->setIcon(HbIcon("qtg_large_bluetooth"));
29
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   182
31
a0ea99b6fa53 201019_1
hgs
parents: 29
diff changeset
   183
        mSearchDoneLabel = qobject_cast<HbLabel*>(mLoader->findWidget("searchDoneLabel"));
a0ea99b6fa53 201019_1
hgs
parents: 29
diff changeset
   184
        mSearchDoneLabel->hide();
a0ea99b6fa53 201019_1
hgs
parents: 29
diff changeset
   185
        
57
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   186
        mDeviceList = qobject_cast<HbListView*>(mLoader->findWidget("deviceList"));
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   187
        mDeviceList->setSelectionMode(HbAbstractItemView::SingleSelection);
29
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   188
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   189
        mContentItemModel = new QStandardItemModel(this);
57
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   190
        mDeviceList->setModel(mContentItemModel);//, prototype);
29
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   191
57
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   192
        connect(mDeviceList, SIGNAL(activated(QModelIndex)), this, SLOT(deviceSelected(QModelIndex)));
42
hgs
parents: 31
diff changeset
   193
        
57
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   194
        mShowAction = static_cast<HbAction*>( mLoader->findObject( "viewByAction" ) );
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   195
        //if action is not disconnected the dialog will be closed when action is clicked 
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   196
        mShowAction->disconnect(mSearchDevicesDialog); 
42
hgs
parents: 31
diff changeset
   197
        
29
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   198
        
57
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   199
        mStopRetryAction = static_cast<HbAction*>( mLoader->findObject( "stopRetryAction" ) );
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   200
        //if action is not disconnected the dialog will be closed when action is clicked         
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   201
        mStopRetryAction->disconnect(mSearchDevicesDialog); 
47
9e2a905b887f 201029_02
hgs
parents: 42
diff changeset
   202
        
9e2a905b887f 201029_02
hgs
parents: 42
diff changeset
   203
        connect(mShowAction, SIGNAL(triggered()), this, SLOT(viewByClicked()));
42
hgs
parents: 31
diff changeset
   204
        connect(mStopRetryAction, SIGNAL(triggered()), this, SLOT(stopRetryClicked()));
hgs
parents: 31
diff changeset
   205
hgs
parents: 31
diff changeset
   206
        connect(mSearchDevicesDialog, SIGNAL(aboutToClose()), this, SLOT(searchDialogClosed()));
70
hgs
parents: 57
diff changeset
   207
        mSearchDevicesDialog->setBackgroundFaded(false);
hgs
parents: 57
diff changeset
   208
        mSearchDevicesDialog->setDismissPolicy(HbPopup::NoDismiss);
hgs
parents: 57
diff changeset
   209
        mSearchDevicesDialog->setTimeout(HbPopup::NoTimeout);
hgs
parents: 57
diff changeset
   210
        mSearchDevicesDialog->setAttribute(Qt::WA_DeleteOnClose);
hgs
parents: 57
diff changeset
   211
        
hgs
parents: 57
diff changeset
   212
        mDevTypeList << hbTrId("txt_bt_list_audio_devices")
hgs
parents: 57
diff changeset
   213
                << hbTrId("txt_bt_list_computers") 
hgs
parents: 57
diff changeset
   214
                << hbTrId("txt_bt_list_input_devices") 
hgs
parents: 57
diff changeset
   215
                << hbTrId("txt_bt_list_phones") 
hgs
parents: 57
diff changeset
   216
                << hbTrId("txt_bt_list_other_devices");
57
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   217
    }
70
hgs
parents: 57
diff changeset
   218
    else
hgs
parents: 57
diff changeset
   219
    {
hgs
parents: 57
diff changeset
   220
        mLastError = DocMLLoadingError;			    		    		
hgs
parents: 57
diff changeset
   221
    }
hgs
parents: 57
diff changeset
   222
57
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   223
}
29
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   224
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   225
31
a0ea99b6fa53 201019_1
hgs
parents: 29
diff changeset
   226
void BTDeviceSearchDialogWidget::stopRetryClicked()
57
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   227
{
29
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   228
    QVariantMap val;
57
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   229
    if(mStopRetryFlag == 1)
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   230
    {
42
hgs
parents: 31
diff changeset
   231
        mStopRetryFlag = 0; // Stop 
31
a0ea99b6fa53 201019_1
hgs
parents: 29
diff changeset
   232
        QVariant index("Retry");
a0ea99b6fa53 201019_1
hgs
parents: 29
diff changeset
   233
        val.insert("Retry",index); 
a0ea99b6fa53 201019_1
hgs
parents: 29
diff changeset
   234
        emit deviceDialogData(val);
a0ea99b6fa53 201019_1
hgs
parents: 29
diff changeset
   235
        delete mContentItemModel;
a0ea99b6fa53 201019_1
hgs
parents: 29
diff changeset
   236
        mContentItemModel = new QStandardItemModel(this);
57
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   237
        mDeviceList->setModel(mContentItemModel);
42
hgs
parents: 31
diff changeset
   238
        mStopRetryAction->setText(LOC_SEARCH_STOP);
31
a0ea99b6fa53 201019_1
hgs
parents: 29
diff changeset
   239
        
a0ea99b6fa53 201019_1
hgs
parents: 29
diff changeset
   240
        mSearchLabel->setTextWrapping(Hb::TextWordWrap);
a0ea99b6fa53 201019_1
hgs
parents: 29
diff changeset
   241
        mSearchLabel->setAlignment(Qt::AlignHCenter);
42
hgs
parents: 31
diff changeset
   242
        mSearchLabel->setPlainText(LOC_SEARCHING_DEVICE);
31
a0ea99b6fa53 201019_1
hgs
parents: 29
diff changeset
   243
        
47
9e2a905b887f 201029_02
hgs
parents: 42
diff changeset
   244
        mSearchIconLabel->setIcon(QIcon(QString(":/icons/qtg_large_bluetooth.svg")));     
31
a0ea99b6fa53 201019_1
hgs
parents: 29
diff changeset
   245
        mSearchLabel->show();
a0ea99b6fa53 201019_1
hgs
parents: 29
diff changeset
   246
        
a0ea99b6fa53 201019_1
hgs
parents: 29
diff changeset
   247
        mSearchIconLabel->show();
a0ea99b6fa53 201019_1
hgs
parents: 29
diff changeset
   248
        
a0ea99b6fa53 201019_1
hgs
parents: 29
diff changeset
   249
        mSearchDoneLabel->hide();
57
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   250
    }
31
a0ea99b6fa53 201019_1
hgs
parents: 29
diff changeset
   251
    else
57
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   252
    {
42
hgs
parents: 31
diff changeset
   253
        mStopRetryFlag = 1; //Retry 
hgs
parents: 31
diff changeset
   254
        mStopRetryAction->setText(LOC_SEARCH_RETRY);
31
a0ea99b6fa53 201019_1
hgs
parents: 29
diff changeset
   255
        
a0ea99b6fa53 201019_1
hgs
parents: 29
diff changeset
   256
        mSearchLabel->hide();
a0ea99b6fa53 201019_1
hgs
parents: 29
diff changeset
   257
        
a0ea99b6fa53 201019_1
hgs
parents: 29
diff changeset
   258
        mSearchIconLabel->hide();
a0ea99b6fa53 201019_1
hgs
parents: 29
diff changeset
   259
        
a0ea99b6fa53 201019_1
hgs
parents: 29
diff changeset
   260
        mSearchDoneLabel->show();
a0ea99b6fa53 201019_1
hgs
parents: 29
diff changeset
   261
        mSearchDoneLabel->setTextWrapping(Hb::TextWordWrap);
a0ea99b6fa53 201019_1
hgs
parents: 29
diff changeset
   262
        mSearchDoneLabel->setAlignment(Qt::AlignLeft);
42
hgs
parents: 31
diff changeset
   263
        mSearchDoneLabel->setPlainText(LOC_SEARCH_DONE);        
31
a0ea99b6fa53 201019_1
hgs
parents: 29
diff changeset
   264
        
a0ea99b6fa53 201019_1
hgs
parents: 29
diff changeset
   265
        QVariantMap val;
a0ea99b6fa53 201019_1
hgs
parents: 29
diff changeset
   266
        QVariant index("Stop");
a0ea99b6fa53 201019_1
hgs
parents: 29
diff changeset
   267
        val.insert("Stop",index); 
a0ea99b6fa53 201019_1
hgs
parents: 29
diff changeset
   268
        emit deviceDialogData(val);    
29
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   269
    }
57
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   270
}
29
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   271
31
a0ea99b6fa53 201019_1
hgs
parents: 29
diff changeset
   272
void BTDeviceSearchDialogWidget::viewByClicked()
57
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   273
{
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   274
    if ( !mQuery )
31
a0ea99b6fa53 201019_1
hgs
parents: 29
diff changeset
   275
    {
47
9e2a905b887f 201029_02
hgs
parents: 42
diff changeset
   276
        mQuery = new HbSelectionDialog;
9e2a905b887f 201029_02
hgs
parents: 42
diff changeset
   277
        mQuery->setStringItems(mDevTypeList, 0);
9e2a905b887f 201029_02
hgs
parents: 42
diff changeset
   278
        mQuery->setSelectionMode(HbAbstractItemView::MultiSelection);
31
a0ea99b6fa53 201019_1
hgs
parents: 29
diff changeset
   279
    
47
9e2a905b887f 201029_02
hgs
parents: 42
diff changeset
   280
        QList<QVariant> current;
9e2a905b887f 201029_02
hgs
parents: 42
diff changeset
   281
        current.append(QVariant(0));
9e2a905b887f 201029_02
hgs
parents: 42
diff changeset
   282
        mQuery->setSelectedItems(current);
9e2a905b887f 201029_02
hgs
parents: 42
diff changeset
   283
 
9e2a905b887f 201029_02
hgs
parents: 42
diff changeset
   284
        //todo need to check whether the dialog is destroyed without setting this flag
9e2a905b887f 201029_02
hgs
parents: 42
diff changeset
   285
        //if not destoryed then set this flag in the destructor and then delete it
9e2a905b887f 201029_02
hgs
parents: 42
diff changeset
   286
        
9e2a905b887f 201029_02
hgs
parents: 42
diff changeset
   287
//        mQuery->setAttribute(Qt::WA_DeleteOnClose);
9e2a905b887f 201029_02
hgs
parents: 42
diff changeset
   288
        // Set the heading for the dialog.
57
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   289
        HbLabel *headingLabel = new HbLabel(LOC_SHOW_DIALOG_TITLE, mQuery);
47
9e2a905b887f 201029_02
hgs
parents: 42
diff changeset
   290
        mQuery->setHeadingWidget(headingLabel);
9e2a905b887f 201029_02
hgs
parents: 42
diff changeset
   291
    }
9e2a905b887f 201029_02
hgs
parents: 42
diff changeset
   292
    mQuery->open(this,SLOT(selectionDialogClosed(HbAction*)));
57
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   293
}
31
a0ea99b6fa53 201019_1
hgs
parents: 29
diff changeset
   294
42
hgs
parents: 31
diff changeset
   295
void BTDeviceSearchDialogWidget::searchDialogClosed() 
57
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   296
{
42
hgs
parents: 31
diff changeset
   297
    QVariantMap val;
hgs
parents: 31
diff changeset
   298
    QVariant index(-1);
hgs
parents: 31
diff changeset
   299
    val.insert("selectedindex",index);
hgs
parents: 31
diff changeset
   300
    emit deviceDialogData(val);    
hgs
parents: 31
diff changeset
   301
    emit deviceDialogClosed();
57
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   302
}
42
hgs
parents: 31
diff changeset
   303
31
a0ea99b6fa53 201019_1
hgs
parents: 29
diff changeset
   304
void BTDeviceSearchDialogWidget::selectionDialogClosed(HbAction* action)
57
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   305
{
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   306
    disconnect( mQuery, 0, this, 0 ); 
47
9e2a905b887f 201029_02
hgs
parents: 42
diff changeset
   307
    int devTypesWanted = 0;
9e2a905b887f 201029_02
hgs
parents: 42
diff changeset
   308
57
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   309
    if (action == mQuery->actions().first())
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   310
    {  // user pressed "Ok"
47
9e2a905b887f 201029_02
hgs
parents: 42
diff changeset
   311
        // Get selected items.
9e2a905b887f 201029_02
hgs
parents: 42
diff changeset
   312
        QList<QVariant> selections;
9e2a905b887f 201029_02
hgs
parents: 42
diff changeset
   313
        selections = mQuery->selectedItems();
9e2a905b887f 201029_02
hgs
parents: 42
diff changeset
   314
        
57
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   315
        for (int i=0; i < selections.count(); i++) 
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   316
        {
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   317
            switch (selections.at(i).toInt()) 
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   318
            {
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   319
                case BtUiDevAudioDevice:
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   320
                    devTypesWanted |= BtuiDevProperty::AVDev;
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   321
                    break;
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   322
                case BtUiDevComputer:
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   323
                    devTypesWanted |= BtuiDevProperty::Computer;
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   324
                    break;
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   325
                case BtUiDevInputDevice:
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   326
                    devTypesWanted |= BtuiDevProperty::Peripheral;
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   327
                    break;
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   328
                case BtUiDevPhone:
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   329
                    devTypesWanted |= BtuiDevProperty::Phone;
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   330
                    break;
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   331
                case BtUiDevOtherDevice:
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   332
                    devTypesWanted |= (BtuiDevProperty::LANAccessDev |
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   333
                            BtuiDevProperty::Toy |
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   334
                            BtuiDevProperty::WearableDev |
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   335
                            BtuiDevProperty::ImagingDev |
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   336
                            BtuiDevProperty::HealthDev |
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   337
                            BtuiDevProperty::UncategorizedDev);
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   338
                    break;
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   339
                default:
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   340
                    // should never get here
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   341
                    break;
47
9e2a905b887f 201029_02
hgs
parents: 42
diff changeset
   342
            }
9e2a905b887f 201029_02
hgs
parents: 42
diff changeset
   343
        }
9e2a905b887f 201029_02
hgs
parents: 42
diff changeset
   344
    }
9e2a905b887f 201029_02
hgs
parents: 42
diff changeset
   345
    else
57
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   346
    {
47
9e2a905b887f 201029_02
hgs
parents: 42
diff changeset
   347
        devTypesWanted = mSelectedDeviceType;
57
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   348
    }
31
a0ea99b6fa53 201019_1
hgs
parents: 29
diff changeset
   349
47
9e2a905b887f 201029_02
hgs
parents: 42
diff changeset
   350
    if((devTypesWanted != mSelectedDeviceType) &&(devTypesWanted !=0))
57
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   351
    {
47
9e2a905b887f 201029_02
hgs
parents: 42
diff changeset
   352
        mSelectedDeviceType = devTypesWanted;
9e2a905b887f 201029_02
hgs
parents: 42
diff changeset
   353
        delete mContentItemModel;
9e2a905b887f 201029_02
hgs
parents: 42
diff changeset
   354
        mContentItemModel = new QStandardItemModel(this);
57
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   355
        mDeviceList->setModel(mContentItemModel);
47
9e2a905b887f 201029_02
hgs
parents: 42
diff changeset
   356
        mSelectedData.clear();
9e2a905b887f 201029_02
hgs
parents: 42
diff changeset
   357
        for(int i=0;i<mData.count();i++)
57
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   358
        {
47
9e2a905b887f 201029_02
hgs
parents: 42
diff changeset
   359
            const BtSendDataItem& qtdev = mData[i];
9e2a905b887f 201029_02
hgs
parents: 42
diff changeset
   360
            if(devTypesWanted & qtdev[DeviceTypeRole].toInt() )
57
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   361
            {
47
9e2a905b887f 201029_02
hgs
parents: 42
diff changeset
   362
                QStandardItem* listitem = new QStandardItem();
9e2a905b887f 201029_02
hgs
parents: 42
diff changeset
   363
                QStringList info;
9e2a905b887f 201029_02
hgs
parents: 42
diff changeset
   364
                info.append(qtdev[NameAliasRole].toString());
9e2a905b887f 201029_02
hgs
parents: 42
diff changeset
   365
    
9e2a905b887f 201029_02
hgs
parents: 42
diff changeset
   366
                listitem->setData(info, Qt::DisplayRole);
9e2a905b887f 201029_02
hgs
parents: 42
diff changeset
   367
                HbIcon icon =  getBadgedDeviceTypeIcon(qtdev[CoDRole].toDouble(),
9e2a905b887f 201029_02
hgs
parents: 42
diff changeset
   368
                        qtdev[MajorPropertyRole].toInt(),
9e2a905b887f 201029_02
hgs
parents: 42
diff changeset
   369
                         BtuiBottomLeft | BtuiBottomRight | BtuiTopLeft | BtuiTopRight);
9e2a905b887f 201029_02
hgs
parents: 42
diff changeset
   370
                listitem->setIcon(icon.qicon());
9e2a905b887f 201029_02
hgs
parents: 42
diff changeset
   371
                mContentItemModel->appendRow(listitem);        
9e2a905b887f 201029_02
hgs
parents: 42
diff changeset
   372
                mSelectedData.append(qtdev);
9e2a905b887f 201029_02
hgs
parents: 42
diff changeset
   373
            }
9e2a905b887f 201029_02
hgs
parents: 42
diff changeset
   374
        }
31
a0ea99b6fa53 201019_1
hgs
parents: 29
diff changeset
   375
    }
57
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   376
}
29
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   377
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   378
void BTDeviceSearchDialogWidget::deviceSelected(const QModelIndex& modelIndex)
57
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   379
{
29
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   380
    int row = 0;
57
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   381
    QVariantMap val;
29
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   382
    
57
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   383
    row = modelIndex.row();
47
9e2a905b887f 201029_02
hgs
parents: 42
diff changeset
   384
    const BtSendDataItem& qtdev = mSelectedData.at(row);
9e2a905b887f 201029_02
hgs
parents: 42
diff changeset
   385
    val.insert("selectedindex",QVariant(row));
57
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   386
    val.insert("devicename",qtdev[NameAliasRole]);
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   387
    val.insert("deviceaddress",qtdev[ReadableBdaddrRole]);
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   388
    val.insert("deviceclass",qtdev[CoDRole]);
47
9e2a905b887f 201029_02
hgs
parents: 42
diff changeset
   389
29
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   390
    emit deviceDialogData(val);
57
5ebadcda06cb 201035_7
hgs
parents: 47
diff changeset
   391
}
29
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   392
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   393