activityfw/testapplications/activitytestmodel/iconsview.cpp
changeset 117 c63ee96dbe5f
--- /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();
+}