--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/ganeswidgets/tsrc/fute/HgWidgetTest/src/hgcoverflowwidget.cpp Mon May 03 13:32:54 2010 +0300
@@ -0,0 +1,104 @@
+/*
+* 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: Another view for test application.
+*
+*/
+#include "hgcoverflowwidget.h"
+#include "trace.h"
+
+#include <qgraphicslinearlayout.h>
+#include <qgraphicssceneresizeevent>
+
+
+
+HgCoverflowWidget::HgCoverflowWidget(QGraphicsItem *parent) : HgMediawall(parent),
+mTextPositionsDirty(false)
+{
+ mTitleLabel = new HbLabel("Title", this);
+ mTitleLabel->setAlignment(Qt::AlignCenter);
+ mDescLabel = new HbLabel("Description", this);
+ mDescLabel->setAlignment(Qt::AlignCenter);
+}
+
+HgCoverflowWidget::~HgCoverflowWidget()
+{
+
+}
+
+void HgCoverflowWidget::frontItemChanged ( const QModelIndex & current, const QModelIndex & previous )
+{
+ if (!this->model())
+ return;
+
+ QVariant variant = this->model()->data(current, Qt::DisplayRole);
+ QStringList texts = variant.toStringList();
+ HbLabel* labels[2];
+ labels[0] = mTitleLabel;
+ labels[1] = mDescLabel;
+ int n = texts.size() > 2 ? 2 : texts.size();
+ for (int i = 0; i < n; i++)
+ labels[i]->setPlainText(texts[i]);
+
+ mTextPositionsDirty = true;
+}
+
+void HgCoverflowWidget::resizeEvent(QGraphicsSceneResizeEvent *event)
+{
+ HgMediawall::resizeEvent(event);
+
+ mTextPositionsDirty = true;
+
+ QObject::connect(selectionModel(), SIGNAL(currentChanged(const QModelIndex&, const QModelIndex&)),
+ this, SLOT(frontItemChanged(const QModelIndex&, const QModelIndex&)));
+}
+
+void HgCoverflowWidget::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
+{
+ HgMediawall::paint(painter, option, widget);
+
+ if (mTextPositionsDirty)
+ {
+ QModelIndex index = this->currentIndex();
+
+ if (index.isValid())
+ {
+ QRectF bounds;
+
+ QPointF halfSize = QPointF(itemSize().width()/2, itemSize().height()/2);
+ bounds.setTopLeft(rect().center() + frontItemPositionDelta() - halfSize);
+ bounds.setBottomRight(rect().center() + frontItemPositionDelta() + halfSize);
+
+ mTitleLabel->resize(QSizeF(size().width(), mTitleLabel->minimumSize().height()));
+ mTitleLabel->setPos(QPointF(bounds.center().x() - size().width()/2,
+ bounds.top() - 40));
+ mDescLabel->resize(QSizeF(size().width(), mDescLabel->minimumSize().height()));
+ mDescLabel->setPos(QPointF(bounds.center().x() - size().width()/2,
+ bounds.bottom() + 40 - mDescLabel->minimumSize().height()));
+
+ frontItemChanged(index, index);
+
+ mTextPositionsDirty = false;
+ }
+
+ }
+
+}
+
+void HgCoverflowWidget::updateTextPositions()
+{
+ mTextPositionsDirty = true;
+}
+
+
+