bluetoothengine/btui/btcpplugin/btcpuibaseview.cpp
author hgs
Fri, 03 Sep 2010 16:17:59 +0300
changeset 57 5ebadcda06cb
parent 42 b72428996822
child 67 16e4b9007960
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
/*
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>
29
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    28
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    29
/*!
42
hgs
parents: 31
diff changeset
    30
    This constructor constructs new setting and device models.
hgs
parents: 31
diff changeset
    31
 */
57
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
    32
BtcpuiBaseView::BtcpuiBaseView(QGraphicsItem *parent) :
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
    33
    CpBaseSettingView(0, parent), mViewMgr(0), mDelegate(0), mPreviousView(0),
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
    34
            mBack(0), mQuery(0), mContextMenu(0), mBtuiModelSortFilter(0)
42
hgs
parents: 31
diff changeset
    35
{
hgs
parents: 31
diff changeset
    36
    mSettingModel = new BtSettingModel(this);
hgs
parents: 31
diff changeset
    37
    mDeviceModel = new BtDeviceModel(this);
57
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
    38
    initialise();
42
hgs
parents: 31
diff changeset
    39
}
hgs
parents: 31
diff changeset
    40
hgs
parents: 31
diff changeset
    41
/*!
hgs
parents: 31
diff changeset
    42
    This constructor constructs models from the given setting and device models.
57
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
    43
    This implies the model impl and data structure are shared.
29
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    44
 */
57
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
    45
BtcpuiBaseView::BtcpuiBaseView(BtSettingModel &settingModel, 
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
    46
        BtDeviceModel &deviceModel,
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
    47
        QGraphicsItem *parent) :
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
    48
    CpBaseSettingView(0, parent), mViewMgr(0), mDelegate(0), mPreviousView(0),
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
    49
            mBack(0), mQuery(0), mContextMenu(0), mBtuiModelSortFilter(0)
29
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    50
{
42
hgs
parents: 31
diff changeset
    51
    mSettingModel = new BtSettingModel(settingModel, this);
57
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
    52
    mDeviceModel = new BtDeviceModel(deviceModel, this);
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
    53
    initialise();
29
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    54
}
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    55
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    56
/*!
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    57
    Destructor.
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    58
 */
57
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
    59
BtcpuiBaseView::~BtcpuiBaseView()
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
    60
{
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
    61
    BOstraceFunctionEntry1( DUMMY_DEVLIST, this );
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
    62
    delete mDelegate;
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
    63
    delete mQuery;
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
    64
    
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
    65
    if(mContextMenu) {
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
    66
        mContextMenu->clearActions();
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
    67
        delete mContextMenu;
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
    68
    }
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
    69
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
    70
    BOstraceFunctionExit0(DUMMY_DEVLIST);
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
    71
}
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
    72
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
    73
void BtcpuiBaseView::initialise()
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
    74
{
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
    75
    bool ret(false); 
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
    76
    mMainWindow = hbInstance->allMainWindows().first();
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
    77
    mContextMenu = new HbMenu();
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
    78
    ret = connect(mContextMenu, SIGNAL(triggered(HbAction *)), this, SLOT(contextMenuTriggered(HbAction *)));
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
    79
    BTUI_ASSERT_X( ret, "bt-main-view", "Context Menu can't connect" );
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
    80
}
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
    81
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
    82
void BtcpuiBaseView::setPreviousView(BtcpuiBaseView *view)
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
    83
{
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
    84
    BOstraceFunctionEntry1( DUMMY_DEVLIST, this );
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
    85
    mPreviousView = view;
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
    86
    // 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
    87
    // view. And the back-action should navigate to the previous view.
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
    88
    if (mPreviousView) {
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
    89
        // Back action is created on demand.
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
    90
        if (!mBack) {
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
    91
            mBack = new HbAction(Hb::BackNaviAction, this);
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
    92
            BTUI_ASSERT_X(mBack, "BtcpuiBaseView::setPreviousView", "can't create back action");
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
    93
            connect(mBack, SIGNAL(triggered()), this, SLOT(backToPreviousView()));
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
    94
        }
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
    95
        if (navigationAction() != mBack) {
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
    96
            setNavigationAction(mBack);
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
    97
        }
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
    98
    }
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
    99
    else {
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   100
        setNavigationAction(0);
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   101
    }
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   102
    BOstraceFunctionExit0(DUMMY_DEVLIST);
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   103
}
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   104
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   105
void BtcpuiBaseView::setViewMgr(BtcpuiViewMgr *mgr)
29
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   106
{
57
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   107
    mViewMgr = mgr;
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   108
}
29
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   109
57
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   110
void BtcpuiBaseView::backToPreviousView()
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   111
{
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   112
    BOstraceFunctionEntry1( DUMMY_DEVLIST, this );
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   113
    if ( mPreviousView ) {
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   114
        viewMgr()->switchView(this, mPreviousView, QVariant(), true);
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   115
    }
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   116
    BOstraceFunctionExit0(DUMMY_DEVLIST);
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   117
}
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   118
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   119
BtSettingModel *BtcpuiBaseView::settingModel()
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   120
{
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   121
    return mSettingModel;
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   122
}
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   123
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   124
BtDeviceModel *BtcpuiBaseView::deviceModel()
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   125
{
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   126
    return mDeviceModel;
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   127
}
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   128
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   129
BtcpuiViewMgr *BtcpuiBaseView::viewMgr()
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   130
{
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   131
    return mViewMgr;
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   132
}
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   133
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   134
bool BtcpuiBaseView::createDelegate(BtDelegate::EditorType type,
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   135
        QObject *receiver, const char *member)
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   136
{
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   137
    bool ok(false);
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   138
    if(!mDelegate) {
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   139
        mDelegate = BtDelegateFactory::newDelegate(type, mSettingModel, mDeviceModel); 
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   140
        ok = connect(mDelegate, SIGNAL(delegateCompleted(int,BtAbstractDelegate*)),
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   141
                receiver, member);
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   142
        BOstraceExt1(TRACE_DEBUG, DUMMY_DEVLIST, "BtcpuiBaseView::createDelegate signal connect %d", ok);
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   143
        if (!ok) {
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   144
            delete mDelegate;
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   145
            mDelegate = 0;
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   146
        }
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   147
    }
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   148
    BOstraceExt2(TRACE_DEBUG, DUMMY_DEVLIST, "BtcpuiBaseView::createDelegate: mDe: 0x%08X, ret %d", mDelegate, ok);
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   149
    return ok;
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   150
}
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   151
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   152
bool BtcpuiBaseView::createExecuteDelegate(BtDelegate::EditorType type,
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   153
        QObject *receiver, const char *member, const QVariant &param)
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   154
{
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   155
    bool ok = createDelegate(type, receiver, member);
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   156
    if (ok) {
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   157
        mDelegate->exec(param);
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   158
    }
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   159
    return ok;
29
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   160
}
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   161
57
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   162
void BtcpuiBaseView::viewByDeviceTypeDialog()
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   163
{
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   164
    if ( !mQuery ) {
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   165
        mQuery = new HbSelectionDialog();
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   166
        QStringList devTypeList;
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   167
        devTypeList << hbTrId("txt_bt_list_audio_devices")
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   168
                << hbTrId("txt_bt_list_computers") 
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   169
                << hbTrId("txt_bt_list_input_devices") 
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   170
                << hbTrId("txt_bt_list_phones") 
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   171
                << hbTrId("txt_bt_list_other_devices");
29
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   172
57
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   173
        
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   174
        mQuery->setStringItems(devTypeList, 0);
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   175
        mQuery->setSelectionMode(HbAbstractItemView::MultiSelection);
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   176
    
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   177
        QList<QVariant> current;
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   178
        current.append(QVariant(0));
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   179
        mQuery->setSelectedItems(current);
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   180
    
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   181
        // Set the heading for the dialog.
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   182
        HbLabel *headingLabel = new HbLabel(hbTrId("txt_bt_title_show"), mQuery);
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   183
        mQuery->setHeadingWidget(headingLabel);
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   184
    }
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   185
    mQuery->open(this,SLOT(viewByDialogClosed(HbAction*)));
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   186
}
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   187
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   188
void BtcpuiBaseView::viewByDialogClosed(HbAction* action)
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   189
{
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   190
    Q_UNUSED(action)
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   191
    //ReImpemented in derived classes.
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   192
}
29
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   193
57
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   194
int BtcpuiBaseView::selectedDeviceTypes(HbAction* action)
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   195
{
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   196
    int devTypesWanted = 0;
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   197
    
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   198
    disconnect( mQuery, 0, this, 0);  // remove signal
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   199
    if (action == mQuery->actions().first()) {  // user pressed "Ok"
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   200
        // Get selected items.
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   201
        QList<QVariant> selections;
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   202
        selections = mQuery->selectedItems();
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   203
        
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   204
        for (int i=0; i < selections.count(); i++) {
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   205
            switch (selections.at(i).toInt()) {
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   206
            case BtUiDevAudioDevice:
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   207
                devTypesWanted |= BtuiDevProperty::AVDev;
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   208
                break;
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   209
            case BtUiDevComputer:
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   210
                devTypesWanted |= BtuiDevProperty::Computer;
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   211
                break;
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   212
            case BtUiDevInputDevice:
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   213
                devTypesWanted |= BtuiDevProperty::Peripheral;
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   214
                break;
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   215
            case BtUiDevPhone:
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   216
                devTypesWanted |= BtuiDevProperty::Phone;
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   217
                break;
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   218
            case BtUiDevOtherDevice:
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   219
                devTypesWanted |= (BtuiDevProperty::LANAccessDev |
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   220
                        BtuiDevProperty::Toy |
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   221
                        BtuiDevProperty::WearableDev |
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   222
                        BtuiDevProperty::ImagingDev |
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   223
                        BtuiDevProperty::HealthDev |
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   224
                        BtuiDevProperty::UncategorizedDev);
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   225
                break;
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   226
            default:
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   227
                // should never get here
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   228
                BTUI_ASSERT_X(false, "BtcpuiSearchView::viewByDialogClosed()", 
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   229
                        "wrong device type in viewBy dialog!");
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   230
            }
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   231
        }
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   232
    }
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   233
    
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   234
    return devTypesWanted;
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   235
}
29
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   236
57
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   237
void BtcpuiBaseView::deviceSelected(const QModelIndex& modelIndex)
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   238
{
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   239
    BOstraceFunctionEntry1( DUMMY_DEVLIST, this );
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   240
    BtcpuiBaseView *devView = viewMgr()->deviceView();
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   241
    // For navigating back to this view:
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   242
    devView->setPreviousView( this );
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   243
    QModelIndex index = mBtuiModelSortFilter->mapToSource(modelIndex);
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   244
    QVariant params;
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   245
    params.setValue(index);
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   246
    viewMgr()->switchView(this, devView, params, false);
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   247
    BOstraceFunctionExit0(DUMMY_DEVLIST);
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   248
}
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   249
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   250
void BtcpuiBaseView::createContextMenuActions(int majorRole)
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   251
{
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   252
    //Re-Implemented in derived classes.
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   253
    Q_UNUSED(majorRole)
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   254
}
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   255
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   256
void BtcpuiBaseView::take(BtAbstractDelegate *delegate)
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   257
{
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   258
    mDelegate = delegate;
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   259
    if (mDelegate) {
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   260
        disconnect(mDelegate, 0, 0, 0);
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   261
        connect(mDelegate, SIGNAL(delegateCompleted(int,BtAbstractDelegate*)),
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   262
                this, SLOT(handleDelegateCompleted(int)));
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   263
    }
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   264
}
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   265
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   266
void BtcpuiBaseView::contextMenuTriggered(HbAction *action)
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   267
{
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   268
    if(!(action->text().compare(hbTrId("txt_common_menu_open")))) {
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   269
            deviceSelected(mLongPressedItem->modelIndex());
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   270
        }
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   271
}
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   272
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   273
void BtcpuiBaseView::showContextMenu(HbAbstractViewItem *item, const QPointF &coords)
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   274
{
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   275
    mLongPressedItem = item;
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   276
    mContextMenu->clearActions();
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   277
    
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   278
    mContextMenu->addAction(hbTrId("txt_common_menu_open"));
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   279
    
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   280
    QModelIndex index = mBtuiModelSortFilter->mapToSource(mLongPressedItem->modelIndex());  
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   281
    
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   282
    int majorPropRole = (mDeviceModel->data(index,BtDeviceModel::MajorPropertyRole)).toInt();
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   283
    if (majorPropRole & BtuiDevProperty::Connectable ) {
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   284
        createContextMenuActions(majorPropRole);
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   285
    }
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   286
    mContextMenu->setPreferredPos(coords);
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   287
    mContextMenu->open();
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   288
}
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   289
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   290
void BtcpuiBaseView::handleDelegateCompleted(int error, BtAbstractDelegate* delegate)
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   291
{
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   292
    BOstraceFunctionEntryExt( DUMMY_DEVLIST, this, error );
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   293
    Q_UNUSED(error);
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   294
    delete mDelegate;
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   295
    mDelegate = 0;
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   296
    BOstraceFunctionExit0(DUMMY_DEVLIST);
5ebadcda06cb 201035_7
hgs
parents: 42
diff changeset
   297
}