diff -r f00a6757af32 -r 5f0182e07bfb homescreenapp/stateplugins/hsapplibrarystateplugin/src/hslistviewitem.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/src/hslistviewitem.cpp Tue Aug 31 15:06:34 2010 +0300 @@ -0,0 +1,131 @@ +/* + * Copyright (c) 2009 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: List View Item. + * + */ + +#include +#include +#include +#include +#include +#include "hsmenuitemmodel.h" + +#include "hslistviewitem.h" + + +// TODO: this is only temporary class for show progress bar. +// It should be remove when fix from orbit will be in official platfrom. +// Remove it from header too. + +#ifdef COVERAGE_MEASUREMENT +#pragma CTC SKIP +#endif //COVERAGE_MEASUREMENT +void HsProgressBar::paint(QPainter * painter, + const QStyleOptionGraphicsItem * option, + QWidget * widget) +{ + Q_UNUSED(widget) + QStyleOptionGraphicsItem pixmapOption(*option); + foreach (QGraphicsItem *child, childItems()) { + painter->save(); + painter->translate(child->pos()); + pixmapOption.exposedRect = child->boundingRect(); + child->paint(painter, &pixmapOption, 0); + + foreach (QGraphicsItem *child2, child->childItems()) { + if (child2->isVisible()) { + painter->save(); + painter->translate(child2->pos()); + pixmapOption.exposedRect = child2->boundingRect(); + child2->paint(painter, &pixmapOption, 0); + painter->restore(); + } + } + painter->restore(); + } +} +#ifdef COVERAGE_MEASUREMENT +#pragma CTC ENDSKIP +#endif //COVERAGE_MEASUREMENT + + +HsListViewItem::HsListViewItem(QGraphicsItem* parent) : + HbListViewItem(parent), progress(0), isProgress(false) +{ + setGraphicsSize(LargeIcon); + if (this == prototype()) { + HbStyleLoader::registerFilePath(":/layout/hslistviewitem.css"); + } +} + +HsListViewItem::~HsListViewItem() +{ + if (this == prototype()) { + HbStyleLoader::unregisterFilePath(":/layout/hslistviewitem.css"); + HbStyleLoader::unregisterFilePath(":/layout/hslistviewitem.widgetml"); + } +} + +void HsListViewItem::updateChildItems() +{ + HbListViewItem::updateChildItems(); + + EntryFlags flags = modelIndex().data( + CaItemModel::FlagsRole).value (); + isProgress = false; + if (flags & UninstallEntryFlag) { + isProgress = true; + if (!progress) { + progress = new HsProgressBar(this); + HbStyle::setItemName(progress, "progress"); + progress->setRange(0, 100); + HbEffect::disable(progress); + repolish(); + } + int progresVal = modelIndex().data( + CaItemModel::UninstalRole).toInt(); + progress->setProgressValue(progresVal); + } else if (progress) { + delete progress; + progress = 0; + repolish(); + } + // hide text-2 if we have to + foreach (QGraphicsItem * item, this->childItems()) { + if (HbStyle::itemName(item) == "text-2") { + item->setVisible(!isProgress); + break; + } + } +} + +HbAbstractViewItem* HsListViewItem::createItem() +{ + return new HsListViewItem(*this); +} + + +void HsListViewItem::polish(HbStyleParameters& params) +{ + if (isProgress) { + HbStyleLoader::registerFilePath(":/layout/hslistviewitem.widgetml"); + } + HbListViewItem::setProperty("progress", isProgress); + HbListViewItem::polish(params); + if (isProgress) { + HbStyleLoader::unregisterFilePath(":/layout/hslistviewitem.widgetml"); + } +} +