bluetoothengine/btui/btcpplugin/btcpuibaseview.cpp
author hgs
Wed, 13 Oct 2010 13:15:31 +0300
changeset 67 16e4b9007960
parent 57 5ebadcda06cb
permissions -rw-r--r--
201039_4
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
29
48ae3789ce00 201017_2
hgs
parents:
diff changeset
     1
/*
42
hgs
parents: 31
diff changeset
     2
 * Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
hgs
parents: 31
diff changeset
     3
 * All rights reserved.
hgs
parents: 31
diff changeset
     4
 * This component and the accompanying materials are made available
hgs
parents: 31
diff changeset
     5
 * under the terms of "Eclipse Public License v1.0""
hgs
parents: 31
diff changeset
     6
 * which accompanies this distribution, and is available
hgs
parents: 31
diff changeset
     7
 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
hgs
parents: 31
diff changeset
     8
 *
hgs
parents: 31
diff changeset
     9
 * Initial Contributors:
hgs
parents: 31
diff changeset
    10
 * Nokia Corporation - initial contribution.
hgs
parents: 31
diff changeset
    11
 *
hgs
parents: 31
diff changeset
    12
 * Contributors:
hgs
parents: 31
diff changeset
    13
 *
hgs
parents: 31
diff changeset
    14
 * Description:  
hgs
parents: 31
diff changeset
    15
 *
hgs
parents: 31
diff changeset
    16
 */
29
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    17
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    18
#include "btcpuibaseview.h"
31
a0ea99b6fa53 201019_1
hgs
parents: 29
diff changeset
    19
#include <hbaction.h>
57
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
    20
#include <HbInstance>
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
    21
#include <bluetoothuitrace.h>
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
    22
#include "btcpuiviewmgr.h"
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
    23
#include <HbSelectionDialog>
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
    24
#include <HbLabel>
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
    25
#include "btuidevtypemap.h"
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
    26
#include <btabstractdelegate.h>
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
    27
#include <btdelegatefactory.h>
67
16e4b9007960 201039_4
hgs
parents: 57
diff changeset
    28
#include "btqtconstants.h"
16e4b9007960 201039_4
hgs
parents: 57
diff changeset
    29
29
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    30
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    31
/*!
42
hgs
parents: 31
diff changeset
    32
    This constructor constructs new setting and device models.
hgs
parents: 31
diff changeset
    33
 */
57
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
    34
BtcpuiBaseView::BtcpuiBaseView(QGraphicsItem *parent) :
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
    35
    CpBaseSettingView(0, parent), mViewMgr(0), mDelegate(0), mPreviousView(0),
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
    36
            mBack(0), mQuery(0), mContextMenu(0), mBtuiModelSortFilter(0)
42
hgs
parents: 31
diff changeset
    37
{
67
16e4b9007960 201039_4
hgs
parents: 57
diff changeset
    38
    BOstraceFunctionEntry1( DUMMY_DEVLIST, this );
42
hgs
parents: 31
diff changeset
    39
    mSettingModel = new BtSettingModel(this);
hgs
parents: 31
diff changeset
    40
    mDeviceModel = new BtDeviceModel(this);
57
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
    41
    initialise();
67
16e4b9007960 201039_4
hgs
parents: 57
diff changeset
    42
    BOstraceFunctionExit1(DUMMY_DEVLIST, this);
42
hgs
parents: 31
diff changeset
    43
}
hgs
parents: 31
diff changeset
    44
hgs
parents: 31
diff changeset
    45
/*!
hgs
parents: 31
diff changeset
    46
    This constructor constructs models from the given setting and device models.
57
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
    47
    This implies the model impl and data structure are shared.
29
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    48
 */
57
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
    49
BtcpuiBaseView::BtcpuiBaseView(BtSettingModel &settingModel, 
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
    50
        BtDeviceModel &deviceModel,
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
    51
        QGraphicsItem *parent) :
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
    52
    CpBaseSettingView(0, parent), mViewMgr(0), mDelegate(0), mPreviousView(0),
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
    53
            mBack(0), mQuery(0), mContextMenu(0), mBtuiModelSortFilter(0)
29
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    54
{
67
16e4b9007960 201039_4
hgs
parents: 57
diff changeset
    55
    BOstraceFunctionEntry1( DUMMY_DEVLIST, this );
42
hgs
parents: 31
diff changeset
    56
    mSettingModel = new BtSettingModel(settingModel, this);
57
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
    57
    mDeviceModel = new BtDeviceModel(deviceModel, this);
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
    58
    initialise();
67
16e4b9007960 201039_4
hgs
parents: 57
diff changeset
    59
    BOstraceFunctionExit1(DUMMY_DEVLIST, this);
29
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    60
}
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    61
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    62
/*!
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    63
    Destructor.
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    64
 */
57
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
    65
BtcpuiBaseView::~BtcpuiBaseView()
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
    66
{
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
    67
    BOstraceFunctionEntry1( DUMMY_DEVLIST, this );
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
    68
    delete mDelegate;
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
    69
    delete mQuery;
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
    70
    
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
    71
    if(mContextMenu) {
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
    72
        mContextMenu->clearActions();
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
    73
        delete mContextMenu;
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
    74
    }
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
    75
67
16e4b9007960 201039_4
hgs
parents: 57
diff changeset
    76
    BOstraceFunctionExit1(DUMMY_DEVLIST, this);
57
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
    77
}
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
    78
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
    79
void BtcpuiBaseView::initialise()
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
    80
{
67
16e4b9007960 201039_4
hgs
parents: 57
diff changeset
    81
    BOstraceFunctionEntry1( DUMMY_DEVLIST, this );
57
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
    82
    bool ret(false); 
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
    83
    mMainWindow = hbInstance->allMainWindows().first();
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
    84
    mContextMenu = new HbMenu();
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
    85
    ret = connect(mContextMenu, SIGNAL(triggered(HbAction *)), this, SLOT(contextMenuTriggered(HbAction *)));
67
16e4b9007960 201039_4
hgs
parents: 57
diff changeset
    86
    BTUI_ASSERT_X( ret, "BtcpuiBaseView::initialise()", "Context Menu can't connect" );
16e4b9007960 201039_4
hgs
parents: 57
diff changeset
    87
    BOstraceFunctionExit1(DUMMY_DEVLIST, this);
57
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
    88
}
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
    89
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
    90
void BtcpuiBaseView::setPreviousView(BtcpuiBaseView *view)
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
    91
{
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
    92
    BOstraceFunctionEntry1( DUMMY_DEVLIST, this );
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
    93
    mPreviousView = view;
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
    94
    // when a non-null previous view is set, it means this view is navigated from an existing
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
    95
    // view. And the back-action should navigate to the previous view.
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
    96
    if (mPreviousView) {
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
    97
        // Back action is created on demand.
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
    98
        if (!mBack) {
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
    99
            mBack = new HbAction(Hb::BackNaviAction, this);
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   100
            BTUI_ASSERT_X(mBack, "BtcpuiBaseView::setPreviousView", "can't create back action");
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   101
            connect(mBack, SIGNAL(triggered()), this, SLOT(backToPreviousView()));
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   102
        }
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   103
        if (navigationAction() != mBack) {
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   104
            setNavigationAction(mBack);
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   105
        }
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   106
    }
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   107
    else {
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   108
        setNavigationAction(0);
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   109
    }
67
16e4b9007960 201039_4
hgs
parents: 57
diff changeset
   110
    BOstraceFunctionExit1(DUMMY_DEVLIST, this);
57
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   111
}
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   112
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   113
void BtcpuiBaseView::setViewMgr(BtcpuiViewMgr *mgr)
29
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   114
{
57
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   115
    mViewMgr = mgr;
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   116
}
29
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   117
57
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   118
void BtcpuiBaseView::backToPreviousView()
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   119
{
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   120
    BOstraceFunctionEntry1( DUMMY_DEVLIST, this );
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   121
    if ( mPreviousView ) {
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   122
        viewMgr()->switchView(this, mPreviousView, QVariant(), true);
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   123
    }
67
16e4b9007960 201039_4
hgs
parents: 57
diff changeset
   124
    BOstraceFunctionExit1(DUMMY_DEVLIST, this);
57
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   125
}
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   126
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   127
BtSettingModel *BtcpuiBaseView::settingModel()
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   128
{
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   129
    return mSettingModel;
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   130
}
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   131
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   132
BtDeviceModel *BtcpuiBaseView::deviceModel()
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   133
{
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   134
    return mDeviceModel;
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   135
}
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   136
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   137
BtcpuiViewMgr *BtcpuiBaseView::viewMgr()
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   138
{
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   139
    return mViewMgr;
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   140
}
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   141
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   142
bool BtcpuiBaseView::createDelegate(BtDelegate::EditorType type,
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   143
        QObject *receiver, const char *member)
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   144
{
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   145
    bool ok(false);
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   146
    if(!mDelegate) {
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   147
        mDelegate = BtDelegateFactory::newDelegate(type, mSettingModel, mDeviceModel); 
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   148
        ok = connect(mDelegate, SIGNAL(delegateCompleted(int,BtAbstractDelegate*)),
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   149
                receiver, member);
67
16e4b9007960 201039_4
hgs
parents: 57
diff changeset
   150
        BOstraceExt1(TRACE_DEBUG, DUMMY_DEVLIST, "BtcpuiBaseView::createDelegate new: signal connect %d", ok);
57
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   151
        if (!ok) {
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   152
            delete mDelegate;
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   153
            mDelegate = 0;
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   154
        }
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   155
    }
67
16e4b9007960 201039_4
hgs
parents: 57
diff changeset
   156
    BOstraceExt2(TRACE_DEBUG, DUMMY_DEVLIST, "BtcpuiBaseView::createDelegate(): mDe: 0x%08X, ret %d", mDelegate, ok);
57
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   157
    return ok;
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   158
}
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   159
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   160
bool BtcpuiBaseView::createExecuteDelegate(BtDelegate::EditorType type,
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   161
        QObject *receiver, const char *member, const QVariant &param)
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   162
{
67
16e4b9007960 201039_4
hgs
parents: 57
diff changeset
   163
    BOstraceFunctionEntry1( DUMMY_DEVLIST, this );
57
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   164
    bool ok = createDelegate(type, receiver, member);
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   165
    if (ok) {
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   166
        mDelegate->exec(param);
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   167
    }
67
16e4b9007960 201039_4
hgs
parents: 57
diff changeset
   168
    BOstraceFunctionExitExt(DUMMY_DEVLIST, this, ok);
57
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   169
    return ok;
29
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   170
}
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   171
57
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   172
void BtcpuiBaseView::viewByDeviceTypeDialog()
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   173
{
67
16e4b9007960 201039_4
hgs
parents: 57
diff changeset
   174
    BOstraceFunctionEntry1( DUMMY_DEVLIST, this );
57
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   175
    if ( !mQuery ) {
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   176
        mQuery = new HbSelectionDialog();
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   177
        QStringList devTypeList;
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   178
        devTypeList << hbTrId("txt_bt_list_audio_devices")
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   179
                << hbTrId("txt_bt_list_computers") 
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   180
                << hbTrId("txt_bt_list_input_devices") 
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   181
                << hbTrId("txt_bt_list_phones") 
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   182
                << hbTrId("txt_bt_list_other_devices");
29
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   183
57
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   184
        
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   185
        mQuery->setStringItems(devTypeList, 0);
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   186
        mQuery->setSelectionMode(HbAbstractItemView::MultiSelection);
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   187
    
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   188
        QList<QVariant> current;
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   189
        current.append(QVariant(0));
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   190
        mQuery->setSelectedItems(current);
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   191
    
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   192
        // Set the heading for the dialog.
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   193
        HbLabel *headingLabel = new HbLabel(hbTrId("txt_bt_title_show"), mQuery);
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   194
        mQuery->setHeadingWidget(headingLabel);
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   195
    }
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   196
    mQuery->open(this,SLOT(viewByDialogClosed(HbAction*)));
67
16e4b9007960 201039_4
hgs
parents: 57
diff changeset
   197
    BOstraceFunctionExit1(DUMMY_DEVLIST, this);
57
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   198
}
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   199
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   200
void BtcpuiBaseView::viewByDialogClosed(HbAction* action)
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   201
{
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   202
    Q_UNUSED(action)
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   203
    //ReImpemented in derived classes.
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   204
}
29
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   205
57
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   206
int BtcpuiBaseView::selectedDeviceTypes(HbAction* action)
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   207
{
67
16e4b9007960 201039_4
hgs
parents: 57
diff changeset
   208
    BOstraceFunctionEntry1( DUMMY_DEVLIST, this );
57
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   209
    int devTypesWanted = 0;
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   210
    
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   211
    disconnect( mQuery, 0, this, 0);  // remove signal
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   212
    if (action == mQuery->actions().first()) {  // user pressed "Ok"
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   213
        // Get selected items.
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   214
        QList<QVariant> selections;
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   215
        selections = mQuery->selectedItems();
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   216
        
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   217
        for (int i=0; i < selections.count(); i++) {
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   218
            switch (selections.at(i).toInt()) {
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   219
            case BtUiDevAudioDevice:
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   220
                devTypesWanted |= BtuiDevProperty::AVDev;
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   221
                break;
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   222
            case BtUiDevComputer:
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   223
                devTypesWanted |= BtuiDevProperty::Computer;
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   224
                break;
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   225
            case BtUiDevInputDevice:
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   226
                devTypesWanted |= BtuiDevProperty::Peripheral;
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   227
                break;
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   228
            case BtUiDevPhone:
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   229
                devTypesWanted |= BtuiDevProperty::Phone;
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   230
                break;
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   231
            case BtUiDevOtherDevice:
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   232
                devTypesWanted |= (BtuiDevProperty::LANAccessDev |
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   233
                        BtuiDevProperty::Toy |
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   234
                        BtuiDevProperty::WearableDev |
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   235
                        BtuiDevProperty::ImagingDev |
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   236
                        BtuiDevProperty::HealthDev |
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   237
                        BtuiDevProperty::UncategorizedDev);
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   238
                break;
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   239
            default:
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   240
                // should never get here
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   241
                BTUI_ASSERT_X(false, "BtcpuiSearchView::viewByDialogClosed()", 
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   242
                        "wrong device type in viewBy dialog!");
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   243
            }
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   244
        }
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   245
    }
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   246
    
67
16e4b9007960 201039_4
hgs
parents: 57
diff changeset
   247
    BOstraceFunctionExitExt(DUMMY_DEVLIST, this, devTypesWanted);
57
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   248
    return devTypesWanted;
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   249
}
29
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   250
67
16e4b9007960 201039_4
hgs
parents: 57
diff changeset
   251
void BtcpuiBaseView::openDeviceView(const QModelIndex& modelIndex)
57
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   252
{
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   253
    BOstraceFunctionEntry1( DUMMY_DEVLIST, this );
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   254
    BtcpuiBaseView *devView = viewMgr()->deviceView();
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   255
    // For navigating back to this view:
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   256
    devView->setPreviousView( this );
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   257
    QModelIndex index = mBtuiModelSortFilter->mapToSource(modelIndex);
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   258
    QVariant params;
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   259
    params.setValue(index);
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   260
    viewMgr()->switchView(this, devView, params, false);
67
16e4b9007960 201039_4
hgs
parents: 57
diff changeset
   261
    BOstraceFunctionExit1(DUMMY_DEVLIST, this);
57
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   262
}
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   263
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   264
void BtcpuiBaseView::createContextMenuActions(int majorRole)
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   265
{
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   266
    //Re-Implemented in derived classes.
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   267
    Q_UNUSED(majorRole)
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   268
}
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   269
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   270
void BtcpuiBaseView::take(BtAbstractDelegate *delegate)
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   271
{
67
16e4b9007960 201039_4
hgs
parents: 57
diff changeset
   272
    BOstraceFunctionEntry1( DUMMY_DEVLIST, this );
57
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   273
    mDelegate = delegate;
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   274
    if (mDelegate) {
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   275
        disconnect(mDelegate, 0, 0, 0);
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   276
        connect(mDelegate, SIGNAL(delegateCompleted(int,BtAbstractDelegate*)),
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   277
                this, SLOT(handleDelegateCompleted(int)));
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   278
    }
67
16e4b9007960 201039_4
hgs
parents: 57
diff changeset
   279
    BOstraceFunctionExit1(DUMMY_DEVLIST, this);
57
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   280
}
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   281
67
16e4b9007960 201039_4
hgs
parents: 57
diff changeset
   282
//  this could be made virtual if derived classes need different functionality
57
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   283
void BtcpuiBaseView::contextMenuTriggered(HbAction *action)
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   284
{
67
16e4b9007960 201039_4
hgs
parents: 57
diff changeset
   285
    BOstraceFunctionEntry1( DUMMY_DEVLIST, this );
57
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   286
    if(!(action->text().compare(hbTrId("txt_common_menu_open")))) {
67
16e4b9007960 201039_4
hgs
parents: 57
diff changeset
   287
        openDeviceView(mLongPressedItem->modelIndex());
16e4b9007960 201039_4
hgs
parents: 57
diff changeset
   288
    } 
16e4b9007960 201039_4
hgs
parents: 57
diff changeset
   289
    else if (!(action->text().compare(hbTrId("txt_bt_menu_connect_audio")))
16e4b9007960 201039_4
hgs
parents: 57
diff changeset
   290
            || !(action->text().compare(hbTrId("txt_bt_menu_connect"))))  {
16e4b9007960 201039_4
hgs
parents: 57
diff changeset
   291
        connectToDevice(mLongPressedItem->modelIndex());
16e4b9007960 201039_4
hgs
parents: 57
diff changeset
   292
    }
16e4b9007960 201039_4
hgs
parents: 57
diff changeset
   293
    else if (!(action->text().compare(hbTrId("txt_bt_menu_disconnect_audio")))
16e4b9007960 201039_4
hgs
parents: 57
diff changeset
   294
            || !(action->text().compare(hbTrId("txt_bt_menu_disconnect"))))  {
16e4b9007960 201039_4
hgs
parents: 57
diff changeset
   295
        disconnectFromDevice(mLongPressedItem->modelIndex());
16e4b9007960 201039_4
hgs
parents: 57
diff changeset
   296
    }
16e4b9007960 201039_4
hgs
parents: 57
diff changeset
   297
    BOstraceFunctionExit1(DUMMY_DEVLIST, this);
57
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   298
}
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   299
67
16e4b9007960 201039_4
hgs
parents: 57
diff changeset
   300
57
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   301
void BtcpuiBaseView::showContextMenu(HbAbstractViewItem *item, const QPointF &coords)
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   302
{
67
16e4b9007960 201039_4
hgs
parents: 57
diff changeset
   303
    BOstraceFunctionEntry1( DUMMY_DEVLIST, this );
57
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   304
    mLongPressedItem = item;
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   305
    mContextMenu->clearActions();
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   306
    
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   307
    mContextMenu->addAction(hbTrId("txt_common_menu_open"));
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   308
    
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   309
    QModelIndex index = mBtuiModelSortFilter->mapToSource(mLongPressedItem->modelIndex());  
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   310
    
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   311
    int majorPropRole = (mDeviceModel->data(index,BtDeviceModel::MajorPropertyRole)).toInt();
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   312
    if (majorPropRole & BtuiDevProperty::Connectable ) {
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   313
        createContextMenuActions(majorPropRole);
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   314
    }
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   315
    mContextMenu->setPreferredPos(coords);
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   316
    mContextMenu->open();
67
16e4b9007960 201039_4
hgs
parents: 57
diff changeset
   317
    
16e4b9007960 201039_4
hgs
parents: 57
diff changeset
   318
    BOstraceFunctionExit1(DUMMY_DEVLIST, this);
16e4b9007960 201039_4
hgs
parents: 57
diff changeset
   319
}
16e4b9007960 201039_4
hgs
parents: 57
diff changeset
   320
16e4b9007960 201039_4
hgs
parents: 57
diff changeset
   321
void BtcpuiBaseView::connectToDevice(const QModelIndex& modelIndex)
16e4b9007960 201039_4
hgs
parents: 57
diff changeset
   322
{
16e4b9007960 201039_4
hgs
parents: 57
diff changeset
   323
    BOstraceFunctionEntry1( DUMMY_DEVLIST, this );
16e4b9007960 201039_4
hgs
parents: 57
diff changeset
   324
    QModelIndex index = mBtuiModelSortFilter->mapToSource(modelIndex);
16e4b9007960 201039_4
hgs
parents: 57
diff changeset
   325
    
16e4b9007960 201039_4
hgs
parents: 57
diff changeset
   326
    QVariant param;
16e4b9007960 201039_4
hgs
parents: 57
diff changeset
   327
    param.setValue(index);
16e4b9007960 201039_4
hgs
parents: 57
diff changeset
   328
16e4b9007960 201039_4
hgs
parents: 57
diff changeset
   329
    (void) createExecuteDelegate(BtDelegate::ConnectService, 
16e4b9007960 201039_4
hgs
parents: 57
diff changeset
   330
            this, SLOT(handleDelegateCompleted(int,BtAbstractDelegate*)), param);    
16e4b9007960 201039_4
hgs
parents: 57
diff changeset
   331
    
16e4b9007960 201039_4
hgs
parents: 57
diff changeset
   332
    BOstraceFunctionExit1(DUMMY_DEVLIST, this);
16e4b9007960 201039_4
hgs
parents: 57
diff changeset
   333
}
16e4b9007960 201039_4
hgs
parents: 57
diff changeset
   334
16e4b9007960 201039_4
hgs
parents: 57
diff changeset
   335
void BtcpuiBaseView::disconnectFromDevice(const QModelIndex& modelIndex)
16e4b9007960 201039_4
hgs
parents: 57
diff changeset
   336
{
16e4b9007960 201039_4
hgs
parents: 57
diff changeset
   337
    BOstraceFunctionEntry1( DUMMY_DEVLIST, this );
16e4b9007960 201039_4
hgs
parents: 57
diff changeset
   338
    QModelIndex index = mBtuiModelSortFilter->mapToSource(modelIndex);   
16e4b9007960 201039_4
hgs
parents: 57
diff changeset
   339
    QVariant deviceBtAddress = mDeviceModel->data(index, BtDeviceModel::ReadableBdaddrRole); 
16e4b9007960 201039_4
hgs
parents: 57
diff changeset
   340
            
16e4b9007960 201039_4
hgs
parents: 57
diff changeset
   341
    QList<QVariant>paramList;
16e4b9007960 201039_4
hgs
parents: 57
diff changeset
   342
    paramList.append(QVariant(ServiceLevel));
16e4b9007960 201039_4
hgs
parents: 57
diff changeset
   343
    paramList.append(deviceBtAddress);
16e4b9007960 201039_4
hgs
parents: 57
diff changeset
   344
16e4b9007960 201039_4
hgs
parents: 57
diff changeset
   345
    (void) createExecuteDelegate(BtDelegate::DisconnectService, 
16e4b9007960 201039_4
hgs
parents: 57
diff changeset
   346
            this, SLOT(handleDelegateCompleted(int,BtAbstractDelegate*)), QVariant(paramList));
16e4b9007960 201039_4
hgs
parents: 57
diff changeset
   347
    
16e4b9007960 201039_4
hgs
parents: 57
diff changeset
   348
    BOstraceFunctionExit1(DUMMY_DEVLIST, this);
57
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   349
}
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   350
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   351
void BtcpuiBaseView::handleDelegateCompleted(int error, BtAbstractDelegate* delegate)
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   352
{
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   353
    BOstraceFunctionEntryExt( DUMMY_DEVLIST, this, error );
67
16e4b9007960 201039_4
hgs
parents: 57
diff changeset
   354
    Q_UNUSED(delegate);
57
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   355
    Q_UNUSED(error);
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   356
    delete mDelegate;
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   357
    mDelegate = 0;
67
16e4b9007960 201039_4
hgs
parents: 57
diff changeset
   358
    BOstraceFunctionExit1(DUMMY_DEVLIST, this);
57
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   359
}