/*
* 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();
}