--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/activityfw/testapplications/activitytestmodel/iconsview.cpp Thu Sep 16 12:11:40 2010 +0100
@@ -0,0 +1,135 @@
+/*
+* 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:
+*
+*/
+
+#include "iconsview.h"
+
+#include <QGraphicsLinearLayout>
+#include <QGraphicsGridLayout>
+#include <QStandardItem>
+#include <QStandardItemModel>
+#include <QSignalMapper>
+
+#include <hblistwidget.h>
+#include <hblabel.h>
+#include <hbpushbutton.h>
+
+#include <QDebug>
+
+IconsView::IconsView(QGraphicsItem *parent) : HbView(parent)
+{
+ setTitle("Icons");
+
+ mModel = new QStandardItemModel(this);
+ for (int i=1; i<=8; ++i) {
+ addItemToModel(i);
+ }
+
+ mList = new HbListView(this);
+ mList->setModel(mModel);
+
+ QGraphicsGridLayout *buttonsLayout = new QGraphicsGridLayout();
+ HbPushButton *addItemButton = new HbPushButton("Add item");
+ connect(addItemButton, SIGNAL(clicked()), this, SLOT(addItem()));
+ buttonsLayout->addItem(addItemButton, 0, 0);
+
+ HbPushButton *removeItemButtom = new HbPushButton("Remove item");
+ connect(removeItemButtom, SIGNAL(clicked()), this, SLOT(removeItem()));
+ buttonsLayout->addItem(removeItemButtom, 0, 1);
+
+ HbPushButton *saveActivityAButton = new HbPushButton("Save State A");
+ buttonsLayout->addItem(saveActivityAButton, 1, 0);
+ HbPushButton *saveActivityBButton = new HbPushButton("Save State B");
+ buttonsLayout->addItem(saveActivityBButton, 1, 1);
+
+ buttonsLayout->setRowFixedHeight(0, 50);
+ buttonsLayout->setRowFixedHeight(1, 50);
+
+ QSignalMapper *saveActivityMapper = new QSignalMapper(this);
+ saveActivityMapper->setMapping(saveActivityAButton, "StateA");
+ saveActivityMapper->setMapping(saveActivityBButton, "StateB");
+ connect(saveActivityAButton, SIGNAL(clicked()), saveActivityMapper, SLOT(map()));
+ connect(saveActivityBButton, SIGNAL(clicked()), saveActivityMapper, SLOT(map()));
+ connect(saveActivityMapper, SIGNAL(mapped(QString)), this, SIGNAL(activitySaveRequested(QString)));
+
+ mItemCountLabel = new HbLabel();
+ mItemCountLabel->setAlignment(Qt::AlignCenter);
+ mItemCountLabel->setMaximumHeight(30);
+ updateCountLabel();
+
+ QGraphicsLinearLayout *mainLayout = new QGraphicsLinearLayout(Qt::Vertical, this);
+ mainLayout->addItem(mItemCountLabel);
+ mainLayout->addItem(mList);
+ mainLayout->addItem(buttonsLayout);
+
+ setLayout(mainLayout);
+}
+
+IconsView::~IconsView()
+{
+}
+
+void IconsView::addItemToModel(int number)
+{
+ QStandardItem *item = new QStandardItem(QIcon(QString(":data\\img%1").arg(number)), QString("Image %1").arg(number));
+ mModel->appendRow(item);
+}
+
+void IconsView::addItem()
+{
+ addItemToModel(qrand() % 8 + 1);
+ updateCountLabel();
+}
+
+void IconsView::removeItem()
+{
+ if (mModel->rowCount() > 0) {
+ mModel->removeRow(mModel->rowCount() - 1, QModelIndex());
+ }
+ updateCountLabel();
+}
+
+void IconsView::updateCountLabel()
+{
+ mItemCountLabel->setPlainText(QString("List contains %1 items").arg(mModel->rowCount()));
+}
+
+QVariant IconsView::generateActivityData()
+{
+ QByteArray serializedModel;
+ {
+ QDataStream stream(&serializedModel, QIODevice::WriteOnly | QIODevice::Append);
+ for (int row = 0; row < mModel->rowCount(); ++row) {
+ stream << *mModel->item(row);
+ }
+ }
+ return serializedModel;
+}
+
+void IconsView::loadActivity(const QVariant &data)
+{
+ mModel->clear();
+ QByteArray serializedModel = data.toByteArray();
+ {
+ QDataStream stream(&serializedModel, QIODevice::ReadOnly);
+ while (!stream.atEnd()) {
+ QStandardItem *item = new QStandardItem();
+ stream >> *item;
+ mModel->appendRow(item);
+ }
+ }
+ updateCountLabel();
+}