|
1 /* |
|
2 * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). |
|
3 * All rights reserved. |
|
4 * This component and the accompanying materials are made available |
|
5 * under the terms of "Eclipse Public License v1.0" |
|
6 * which accompanies this distribution, and is available |
|
7 * at the URL "http://www.eclipse.org/legal/epl-v10.html". |
|
8 * |
|
9 * Initial Contributors: |
|
10 * Nokia Corporation - initial contribution. |
|
11 * |
|
12 * Contributors: |
|
13 * |
|
14 * Description: |
|
15 * |
|
16 */ |
|
17 |
|
18 #include "iconsview.h" |
|
19 |
|
20 #include <QGraphicsLinearLayout> |
|
21 #include <QGraphicsGridLayout> |
|
22 #include <QStandardItem> |
|
23 #include <QStandardItemModel> |
|
24 #include <QSignalMapper> |
|
25 |
|
26 #include <hblistwidget.h> |
|
27 #include <hblabel.h> |
|
28 #include <hbpushbutton.h> |
|
29 |
|
30 #include <QDebug> |
|
31 |
|
32 IconsView::IconsView(QGraphicsItem *parent) : HbView(parent) |
|
33 { |
|
34 setTitle("Icons"); |
|
35 |
|
36 mModel = new QStandardItemModel(this); |
|
37 for (int i=1; i<=8; ++i) { |
|
38 addItemToModel(i); |
|
39 } |
|
40 |
|
41 mList = new HbListView(this); |
|
42 mList->setModel(mModel); |
|
43 |
|
44 QGraphicsGridLayout *buttonsLayout = new QGraphicsGridLayout(); |
|
45 HbPushButton *addItemButton = new HbPushButton("Add item"); |
|
46 connect(addItemButton, SIGNAL(clicked()), this, SLOT(addItem())); |
|
47 buttonsLayout->addItem(addItemButton, 0, 0); |
|
48 |
|
49 HbPushButton *removeItemButtom = new HbPushButton("Remove item"); |
|
50 connect(removeItemButtom, SIGNAL(clicked()), this, SLOT(removeItem())); |
|
51 buttonsLayout->addItem(removeItemButtom, 0, 1); |
|
52 |
|
53 HbPushButton *saveActivityAButton = new HbPushButton("Save State A"); |
|
54 buttonsLayout->addItem(saveActivityAButton, 1, 0); |
|
55 HbPushButton *saveActivityBButton = new HbPushButton("Save State B"); |
|
56 buttonsLayout->addItem(saveActivityBButton, 1, 1); |
|
57 |
|
58 buttonsLayout->setRowFixedHeight(0, 50); |
|
59 buttonsLayout->setRowFixedHeight(1, 50); |
|
60 |
|
61 QSignalMapper *saveActivityMapper = new QSignalMapper(this); |
|
62 saveActivityMapper->setMapping(saveActivityAButton, "StateA"); |
|
63 saveActivityMapper->setMapping(saveActivityBButton, "StateB"); |
|
64 connect(saveActivityAButton, SIGNAL(clicked()), saveActivityMapper, SLOT(map())); |
|
65 connect(saveActivityBButton, SIGNAL(clicked()), saveActivityMapper, SLOT(map())); |
|
66 connect(saveActivityMapper, SIGNAL(mapped(QString)), this, SIGNAL(activitySaveRequested(QString))); |
|
67 |
|
68 mItemCountLabel = new HbLabel(); |
|
69 mItemCountLabel->setAlignment(Qt::AlignCenter); |
|
70 mItemCountLabel->setMaximumHeight(30); |
|
71 updateCountLabel(); |
|
72 |
|
73 QGraphicsLinearLayout *mainLayout = new QGraphicsLinearLayout(Qt::Vertical, this); |
|
74 mainLayout->addItem(mItemCountLabel); |
|
75 mainLayout->addItem(mList); |
|
76 mainLayout->addItem(buttonsLayout); |
|
77 |
|
78 setLayout(mainLayout); |
|
79 } |
|
80 |
|
81 IconsView::~IconsView() |
|
82 { |
|
83 } |
|
84 |
|
85 void IconsView::addItemToModel(int number) |
|
86 { |
|
87 QStandardItem *item = new QStandardItem(QIcon(QString(":data\\img%1").arg(number)), QString("Image %1").arg(number)); |
|
88 mModel->appendRow(item); |
|
89 } |
|
90 |
|
91 void IconsView::addItem() |
|
92 { |
|
93 addItemToModel(qrand() % 8 + 1); |
|
94 updateCountLabel(); |
|
95 } |
|
96 |
|
97 void IconsView::removeItem() |
|
98 { |
|
99 if (mModel->rowCount() > 0) { |
|
100 mModel->removeRow(mModel->rowCount() - 1, QModelIndex()); |
|
101 } |
|
102 updateCountLabel(); |
|
103 } |
|
104 |
|
105 void IconsView::updateCountLabel() |
|
106 { |
|
107 mItemCountLabel->setPlainText(QString("List contains %1 items").arg(mModel->rowCount())); |
|
108 } |
|
109 |
|
110 QVariant IconsView::generateActivityData() |
|
111 { |
|
112 QByteArray serializedModel; |
|
113 { |
|
114 QDataStream stream(&serializedModel, QIODevice::WriteOnly | QIODevice::Append); |
|
115 for (int row = 0; row < mModel->rowCount(); ++row) { |
|
116 stream << *mModel->item(row); |
|
117 } |
|
118 } |
|
119 return serializedModel; |
|
120 } |
|
121 |
|
122 void IconsView::loadActivity(const QVariant &data) |
|
123 { |
|
124 mModel->clear(); |
|
125 QByteArray serializedModel = data.toByteArray(); |
|
126 { |
|
127 QDataStream stream(&serializedModel, QIODevice::ReadOnly); |
|
128 while (!stream.atEnd()) { |
|
129 QStandardItem *item = new QStandardItem(); |
|
130 stream >> *item; |
|
131 mModel->appendRow(item); |
|
132 } |
|
133 } |
|
134 updateCountLabel(); |
|
135 } |