diff -r 819e59dfc032 -r 2d9cac8919d3 utilityapps/filebrowser/ui/src/fbdrivelistviewitem.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/utilityapps/filebrowser/ui/src/fbdrivelistviewitem.cpp Mon Oct 18 16:30:05 2010 +0300 @@ -0,0 +1,173 @@ +/* +* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* +*/ + +#include "fbdrivelistviewitem.h" +#include "fbdriveentry.h" +#include "fbdrivemodel.h" + +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +FbDriveListViewItem::FbDriveListViewItem(QGraphicsItem *parent) : + HbListViewItem(parent), + hLayout(0), + mDiskNameLabel(0), + mSizeLabel(0), + mFreeLabel(0), + mIconLabel(0) +{ +} + +FbDriveListViewItem::~FbDriveListViewItem() +{ +} + +void FbDriveListViewItem::polish(HbStyleParameters& params) +{ + Q_UNUSED(params); +} + +bool FbDriveListViewItem::canSetModelIndex(const QModelIndex &index) const +{ + Q_UNUSED(index); + return true; +} + + +HbAbstractViewItem *FbDriveListViewItem::createItem() +{ + return new FbDriveListViewItem(*this); +} + +void FbDriveListViewItem::updateChildItems() +{ + if(!hLayout) { + init(); + } + + // Qt::DisplayRole +// QVariant displayRole = modelIndex().data(Qt::DisplayRole); +// QString diskName("default"); + QStringList stringList; +// if (displayRole.isValid()) { +// if (displayRole.canConvert()) { // EFileViewModeSimple +// stringList.append(displayRole.toString()); +// } else if (displayRole.canConvert()) { // EFileViewModeExtended +// stringList = displayRole.toStringList(); +// } +// if (stringList.count() > 0) +// diskName = stringList[0]; //modelIndex().data( Qt::UserRole ).toString(); +// +// mDiskNameLabel->setPlainText(diskName/*displayString*/); +// } +// if (stringList.count() > 1) +// mSizeLabel->setPlainText( stringList[1] ); + + + // Get the Drive Entry + const FbDriveModel* driveModel= qobject_cast(modelIndex().model()); + FbDriveEntry driveEntry = driveModel->driveEntry(modelIndex()); + + const QString SimpleDriveEntry("%1: <%2>"); + + QString diskName = SimpleDriveEntry.arg(driveEntry.driveLetter()).arg(driveEntry.mediaTypeString()); + mDiskNameLabel->setPlainText(diskName); + + const QString ExtendedDriveEntry("%1/%2 kB"); + QString diskSize = ExtendedDriveEntry.arg(QString::number(driveEntry.volumeInfoFree()/1024)) + .arg(QString::number(driveEntry.volumeInfoSize()/1024)); + mSizeLabel->setPlainText( diskSize ); + + //mFreeLabel->setPlainText( stringList[2] ); + + // mCheckBox->setCheckState( checkState() ); + + // Qt::DecorationRole + // QTBUG-11033 No Icon provided for QFileIconProvider::Desktop, Network, Drive on Symbian + QVariant decorationRole = modelIndex().data(Qt::DecorationRole); + if (decorationRole.isValid()) { + QIcon icon = qvariant_cast(decorationRole); + if( icon.isNull() ) { + QFileIconProvider fileIconProvider; + icon = fileIconProvider.icon(QFileIconProvider::File); + } + mIconLabel->setIcon(HbIcon(icon)); + } +} + +void FbDriveListViewItem::setCheckedState(int state) +{ + HbAbstractViewItem::setCheckState(static_cast(state)); +} + +void FbDriveListViewItem::init() +{ + hLayout = new QGraphicsLinearLayout(); + hLayout->setContentsMargins(0, 0, 0, 0); + + hLayout->setOrientation( Qt::Horizontal ); + hLayout->addItem(layout()); + + mIconLabel = new HbLabel(); + hLayout->addItem( mIconLabel ); + hLayout->setAlignment( mIconLabel, Qt::AlignTop ); + hLayout->setStretchFactor( mIconLabel, 0 ); + + QGraphicsLinearLayout *vLayout = new QGraphicsLinearLayout(); + //vLayout->setContentsMargins(0, 0, 0, 0); + vLayout->setOrientation( Qt::Vertical ); + + mDiskNameLabel = new HbLabel(); + HbFontSpec fontSpecPrimary(HbFontSpec::Primary); + //fontSpecPrimary.setTextHeight(18.0); + mDiskNameLabel->setFontSpec( fontSpecPrimary ); + vLayout->addItem( mDiskNameLabel ); + vLayout->setAlignment( mDiskNameLabel, Qt::AlignLeft ); + + mSizeLabel = new HbLabel(); + HbFontSpec fontSpecSecondary(HbFontSpec::Secondary); + //fontSpecSecondary.setTextHeight(18.0); + mSizeLabel->setFontSpec(fontSpecSecondary); + vLayout->addItem( mSizeLabel ); + vLayout->setAlignment(mSizeLabel, Qt::AlignLeft); + +// mFreeLabel = new HbLabel(); +// mFreeLabel->setFontSpec( HbFontSpec( HbFontSpec::Secondary ) ); +// vLayout->addItem( mFreeLabel ); +// vLayout->setAlignment( mFreeLabel, Qt::AlignLeft ); + + HbWidget *labelsWidget = new HbWidget(); + labelsWidget->setLayout(vLayout); + + hLayout->setAlignment( labelsWidget, Qt::AlignLeft ); + + hLayout->addItem( labelsWidget ); + hLayout->setStretchFactor( labelsWidget, 1 ); + + //this->setMaximumHeight( mDiskNameLabel->preferredHeight() ); + //setMaximumHeight( mIconLabel->preferredHeight() ); + + setLayout( hLayout ); +}