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