taskswitcher/tsdevicedialogplugin/src/tstasksgriditem.cpp
author hgs
Wed, 06 Oct 2010 16:00:22 +0300
changeset 125 26079c1bb561
permissions -rw-r--r--
201039_01
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
125
26079c1bb561 201039_01
hgs
parents:
diff changeset
     1
/*
26079c1bb561 201039_01
hgs
parents:
diff changeset
     2
* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
26079c1bb561 201039_01
hgs
parents:
diff changeset
     3
* All rights reserved.
26079c1bb561 201039_01
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
26079c1bb561 201039_01
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
26079c1bb561 201039_01
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
26079c1bb561 201039_01
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
26079c1bb561 201039_01
hgs
parents:
diff changeset
     8
*
26079c1bb561 201039_01
hgs
parents:
diff changeset
     9
* Initial Contributors:
26079c1bb561 201039_01
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
26079c1bb561 201039_01
hgs
parents:
diff changeset
    11
*
26079c1bb561 201039_01
hgs
parents:
diff changeset
    12
* Contributors:
26079c1bb561 201039_01
hgs
parents:
diff changeset
    13
*
26079c1bb561 201039_01
hgs
parents:
diff changeset
    14
* Description:
26079c1bb561 201039_01
hgs
parents:
diff changeset
    15
*
26079c1bb561 201039_01
hgs
parents:
diff changeset
    16
*/
26079c1bb561 201039_01
hgs
parents:
diff changeset
    17
#include "tstasksgriditem.h"
26079c1bb561 201039_01
hgs
parents:
diff changeset
    18
26079c1bb561 201039_01
hgs
parents:
diff changeset
    19
#include <HbPushButton>
26079c1bb561 201039_01
hgs
parents:
diff changeset
    20
#include <HbAbstractItemView>
26079c1bb561 201039_01
hgs
parents:
diff changeset
    21
#include <HbFrameItem>
26079c1bb561 201039_01
hgs
parents:
diff changeset
    22
#include <HbTextItem>
26079c1bb561 201039_01
hgs
parents:
diff changeset
    23
#include <HbIconItem>
26079c1bb561 201039_01
hgs
parents:
diff changeset
    24
#include <HbStyleLoader>
26079c1bb561 201039_01
hgs
parents:
diff changeset
    25
26079c1bb561 201039_01
hgs
parents:
diff changeset
    26
#include "tsdataroles.h"
26079c1bb561 201039_01
hgs
parents:
diff changeset
    27
26079c1bb561 201039_01
hgs
parents:
diff changeset
    28
/*!
26079c1bb561 201039_01
hgs
parents:
diff changeset
    29
    \class TsTasksGridItem
26079c1bb561 201039_01
hgs
parents:
diff changeset
    30
    \ingroup group_tsdevicedialogplugin
26079c1bb561 201039_01
hgs
parents:
diff changeset
    31
    \brief Item that should be presented in grid.
26079c1bb561 201039_01
hgs
parents:
diff changeset
    32
*/
26079c1bb561 201039_01
hgs
parents:
diff changeset
    33
26079c1bb561 201039_01
hgs
parents:
diff changeset
    34
TsTasksGridItem::TsTasksGridItem()
26079c1bb561 201039_01
hgs
parents:
diff changeset
    35
    :
26079c1bb561 201039_01
hgs
parents:
diff changeset
    36
    HbAbstractViewItem(),
26079c1bb561 201039_01
hgs
parents:
diff changeset
    37
    mScreenshotLabel(0),
26079c1bb561 201039_01
hgs
parents:
diff changeset
    38
    mApplicationNameLabel(0),
26079c1bb561 201039_01
hgs
parents:
diff changeset
    39
    mDeleteButton(0),
26079c1bb561 201039_01
hgs
parents:
diff changeset
    40
    mActiveLabelFrame(0),
26079c1bb561 201039_01
hgs
parents:
diff changeset
    41
    mActiveLabel(0)
26079c1bb561 201039_01
hgs
parents:
diff changeset
    42
{
26079c1bb561 201039_01
hgs
parents:
diff changeset
    43
    // Register the custom docml and css to provide our own style to the list items
26079c1bb561 201039_01
hgs
parents:
diff changeset
    44
    bool widgetmlLoaded =
26079c1bb561 201039_01
hgs
parents:
diff changeset
    45
        HbStyleLoader::registerFilePath(":/resource/tstasksgriditem.widgetml");
26079c1bb561 201039_01
hgs
parents:
diff changeset
    46
    Q_ASSERT(widgetmlLoaded);
26079c1bb561 201039_01
hgs
parents:
diff changeset
    47
    bool cssLoaded =
26079c1bb561 201039_01
hgs
parents:
diff changeset
    48
        HbStyleLoader::registerFilePath(":/resource/tstasksgriditem.css");
26079c1bb561 201039_01
hgs
parents:
diff changeset
    49
    Q_ASSERT(cssLoaded);
26079c1bb561 201039_01
hgs
parents:
diff changeset
    50
}
26079c1bb561 201039_01
hgs
parents:
diff changeset
    51
26079c1bb561 201039_01
hgs
parents:
diff changeset
    52
TsTasksGridItem::TsTasksGridItem(const TsTasksGridItem &item) : HbAbstractViewItem(item)
26079c1bb561 201039_01
hgs
parents:
diff changeset
    53
{
26079c1bb561 201039_01
hgs
parents:
diff changeset
    54
    mScreenshotLabel = new HbIconItem(this);
26079c1bb561 201039_01
hgs
parents:
diff changeset
    55
    mApplicationNameLabel = new HbTextItem(this);
26079c1bb561 201039_01
hgs
parents:
diff changeset
    56
    mDeleteButton = new HbPushButton(this);
26079c1bb561 201039_01
hgs
parents:
diff changeset
    57
    HbFrameItem *screenshotFrame = new HbFrameItem(this);
26079c1bb561 201039_01
hgs
parents:
diff changeset
    58
    screenshotFrame->frameDrawer().setFrameType(HbFrameDrawer::NinePieces);
26079c1bb561 201039_01
hgs
parents:
diff changeset
    59
    screenshotFrame->frameDrawer().setFrameGraphicsName("qtg_fr_multimedia_trans");
26079c1bb561 201039_01
hgs
parents:
diff changeset
    60
26079c1bb561 201039_01
hgs
parents:
diff changeset
    61
    mActiveLabel = new HbTextItem(hbTrId("txt_ts_label_active"), this);
26079c1bb561 201039_01
hgs
parents:
diff changeset
    62
    mActiveLabelFrame = new HbFrameItem(this);
26079c1bb561 201039_01
hgs
parents:
diff changeset
    63
    mActiveLabelFrame->frameDrawer().setFrameType(HbFrameDrawer::NinePieces);
26079c1bb561 201039_01
hgs
parents:
diff changeset
    64
    mActiveLabelFrame->frameDrawer().setFrameGraphicsName("qtg_fr_multimedia_trans");
26079c1bb561 201039_01
hgs
parents:
diff changeset
    65
26079c1bb561 201039_01
hgs
parents:
diff changeset
    66
    mDeleteButton->setIcon(HbIcon("qtg_mono_exit"));
26079c1bb561 201039_01
hgs
parents:
diff changeset
    67
26079c1bb561 201039_01
hgs
parents:
diff changeset
    68
    HbStyle::setItemName(mScreenshotLabel, "screenshot");
26079c1bb561 201039_01
hgs
parents:
diff changeset
    69
    HbStyle::setItemName(mApplicationNameLabel, "appname");
26079c1bb561 201039_01
hgs
parents:
diff changeset
    70
    HbStyle::setItemName(mDeleteButton, "closebadge");
26079c1bb561 201039_01
hgs
parents:
diff changeset
    71
    mDeleteButton->setObjectName("closebadge");
26079c1bb561 201039_01
hgs
parents:
diff changeset
    72
    HbStyle::setItemName(screenshotFrame, "screenshotFrame");
26079c1bb561 201039_01
hgs
parents:
diff changeset
    73
    HbStyle::setItemName(mActiveLabel, "activeLabel");
26079c1bb561 201039_01
hgs
parents:
diff changeset
    74
    HbStyle::setItemName(mActiveLabelFrame, "activeLabelFrame");
26079c1bb561 201039_01
hgs
parents:
diff changeset
    75
    connect(mDeleteButton, SIGNAL(clicked()), this, SLOT(handleDeleteClicked()));
26079c1bb561 201039_01
hgs
parents:
diff changeset
    76
}
26079c1bb561 201039_01
hgs
parents:
diff changeset
    77
26079c1bb561 201039_01
hgs
parents:
diff changeset
    78
HbAbstractViewItem *TsTasksGridItem::createItem()
26079c1bb561 201039_01
hgs
parents:
diff changeset
    79
{
26079c1bb561 201039_01
hgs
parents:
diff changeset
    80
    TsTasksGridItem *newItem = new TsTasksGridItem(*this);
26079c1bb561 201039_01
hgs
parents:
diff changeset
    81
    connect(newItem, SIGNAL(deleteClicked(QModelIndex)), itemView(), SIGNAL(deleteButtonClicked(QModelIndex)));
26079c1bb561 201039_01
hgs
parents:
diff changeset
    82
    return newItem;
26079c1bb561 201039_01
hgs
parents:
diff changeset
    83
}
26079c1bb561 201039_01
hgs
parents:
diff changeset
    84
26079c1bb561 201039_01
hgs
parents:
diff changeset
    85
void TsTasksGridItem::handleDeleteClicked()
26079c1bb561 201039_01
hgs
parents:
diff changeset
    86
{
26079c1bb561 201039_01
hgs
parents:
diff changeset
    87
    emit deleteClicked(modelIndex());
26079c1bb561 201039_01
hgs
parents:
diff changeset
    88
}
26079c1bb561 201039_01
hgs
parents:
diff changeset
    89
26079c1bb561 201039_01
hgs
parents:
diff changeset
    90
void TsTasksGridItem::updateChildItems()
26079c1bb561 201039_01
hgs
parents:
diff changeset
    91
{
26079c1bb561 201039_01
hgs
parents:
diff changeset
    92
    mScreenshotLabel->setIcon(modelIndex().data(Qt::DecorationRole).value<HbIcon>());
26079c1bb561 201039_01
hgs
parents:
diff changeset
    93
    mApplicationNameLabel->setText(modelIndex().data(Qt::DisplayRole).toString());
26079c1bb561 201039_01
hgs
parents:
diff changeset
    94
26079c1bb561 201039_01
hgs
parents:
diff changeset
    95
    QVariant closableData(modelIndex().data(TsDataRoles::Closable));
26079c1bb561 201039_01
hgs
parents:
diff changeset
    96
    const bool isClosable(closableData.isValid() && closableData.toBool());
26079c1bb561 201039_01
hgs
parents:
diff changeset
    97
    if (isClosable) {
26079c1bb561 201039_01
hgs
parents:
diff changeset
    98
        mDeleteButton->show();
26079c1bb561 201039_01
hgs
parents:
diff changeset
    99
    } else {
26079c1bb561 201039_01
hgs
parents:
diff changeset
   100
        mDeleteButton->hide();
26079c1bb561 201039_01
hgs
parents:
diff changeset
   101
    }
26079c1bb561 201039_01
hgs
parents:
diff changeset
   102
26079c1bb561 201039_01
hgs
parents:
diff changeset
   103
    QVariant activeData(modelIndex().data(TsDataRoles::Active));
26079c1bb561 201039_01
hgs
parents:
diff changeset
   104
    const bool isActive(activeData.isValid() && activeData.toBool());
26079c1bb561 201039_01
hgs
parents:
diff changeset
   105
    if (isActive) {
26079c1bb561 201039_01
hgs
parents:
diff changeset
   106
        mActiveLabel->show();
26079c1bb561 201039_01
hgs
parents:
diff changeset
   107
        mActiveLabelFrame->show();
26079c1bb561 201039_01
hgs
parents:
diff changeset
   108
    } else {
26079c1bb561 201039_01
hgs
parents:
diff changeset
   109
        mActiveLabel->hide();
26079c1bb561 201039_01
hgs
parents:
diff changeset
   110
        mActiveLabelFrame->hide();
26079c1bb561 201039_01
hgs
parents:
diff changeset
   111
    }
26079c1bb561 201039_01
hgs
parents:
diff changeset
   112
}