|
1 /* |
|
2 * Copyright (c) 2010 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: Another view for test application. |
|
15 * |
|
16 */ |
|
17 #include "hgitemsizedialog.h" |
|
18 |
|
19 #include <qgraphicslinearlayout.h> |
|
20 #include <qgraphicssceneresizeevent> |
|
21 #include <hbslider> |
|
22 #include <hbpushbutton> |
|
23 |
|
24 #include "trace.h" |
|
25 |
|
26 |
|
27 |
|
28 HgItemSizeDialog::HgItemSizeDialog(QSizeF size, QSizeF spacing, HbWidget *parent) : HbDialog(parent), |
|
29 mSize(size), |
|
30 mSpacing(spacing) |
|
31 { |
|
32 |
|
33 this->setAttribute(Qt::WA_DeleteOnClose); |
|
34 this->setFlag(QGraphicsItem::ItemIsMovable); |
|
35 this->setModal(false); |
|
36 this->setBackgroundFaded(false); |
|
37 this->setDismissPolicy(HbPopup::TapOutside); |
|
38 this->setTimeout(5000); |
|
39 this->setMinimumSize(QSizeF(200, 200)); |
|
40 |
|
41 QGraphicsLinearLayout *layout = new QGraphicsLinearLayout(Qt::Vertical); |
|
42 |
|
43 QSizeF itemSize = mSize; |
|
44 QSizeF itemSpacing = mSpacing; |
|
45 |
|
46 int maxVal = 500; |
|
47 if (parent) |
|
48 maxVal = qMax(parent->size().width(), parent->size().height()); |
|
49 |
|
50 |
|
51 HbSlider* slider1 = new HbSlider(Qt::Horizontal); |
|
52 slider1->setMinimum(1); |
|
53 slider1->setMaximum(maxVal); |
|
54 slider1->setValue(itemSize.width()); |
|
55 mSizeXSlider = slider1; |
|
56 |
|
57 HbSlider* slider2 = new HbSlider(Qt::Horizontal); |
|
58 slider2->setMinimum(1); |
|
59 slider2->setMaximum(maxVal); |
|
60 slider2->setValue(itemSize.height()); |
|
61 mSizeYSlider = slider2; |
|
62 |
|
63 HbSlider* slider3 = new HbSlider(Qt::Horizontal); |
|
64 slider3->setMinimum(0); |
|
65 slider3->setMaximum(maxVal); |
|
66 slider3->setValue(itemSpacing.width()); |
|
67 mSpacingXSlider = slider3; |
|
68 |
|
69 HbSlider* slider4 = new HbSlider(Qt::Horizontal); |
|
70 slider4->setMinimum(0); |
|
71 slider4->setMaximum(maxVal); |
|
72 slider4->setValue(itemSpacing.height()); |
|
73 mSpacingYSlider = slider4; |
|
74 |
|
75 mSizeXLabel = new HbLabel(); |
|
76 mSizeYLabel = new HbLabel(); |
|
77 mSpacingXLabel = new HbLabel(); |
|
78 mSpacingYLabel = new HbLabel(); |
|
79 |
|
80 layout->addItem(mSizeXLabel); |
|
81 layout->addItem(slider1); |
|
82 layout->addItem(mSizeYLabel); |
|
83 layout->addItem(slider2); |
|
84 layout->addItem(mSpacingXLabel); |
|
85 layout->addItem(slider3); |
|
86 layout->addItem(mSpacingYLabel); |
|
87 layout->addItem(slider4); |
|
88 |
|
89 mSizeXLabel->setNumber(itemSize.width()); |
|
90 mSizeYLabel->setNumber(itemSize.height()); |
|
91 mSpacingXLabel->setNumber(itemSpacing.width()); |
|
92 mSpacingYLabel->setNumber(itemSpacing.height()); |
|
93 |
|
94 QObject::connect(slider1, SIGNAL(valueChanged(int)), this, SLOT(itemSizeXChanged(int))); |
|
95 QObject::connect(slider2, SIGNAL(valueChanged(int)), this, SLOT(itemSizeYChanged(int))); |
|
96 QObject::connect(slider3, SIGNAL(valueChanged(int)), this, SLOT(itemSpacingXChanged(int))); |
|
97 QObject::connect(slider4, SIGNAL(valueChanged(int)), this, SLOT(itemSpacingYChanged(int))); |
|
98 |
|
99 HbPushButton* button = new HbPushButton("Close"); |
|
100 QObject::connect(button, SIGNAL(clicked(bool)), this, SLOT(buttonClosed(bool))); |
|
101 layout->addItem(button); |
|
102 |
|
103 this->setLayout(layout); |
|
104 |
|
105 } |
|
106 |
|
107 void HgItemSizeDialog::itemSizeXChanged(int value) |
|
108 { |
|
109 QSizeF s = mSize; |
|
110 mSize = QSizeF(value, s.height()); |
|
111 mSizeXLabel->setNumber(value); |
|
112 emit updateItemSizeAndSpacing(); |
|
113 } |
|
114 |
|
115 void HgItemSizeDialog::itemSizeYChanged(int value) |
|
116 { |
|
117 QSizeF s = mSize; |
|
118 mSize = QSizeF(s.width(), value); |
|
119 mSizeYLabel->setNumber(value); |
|
120 emit updateItemSizeAndSpacing(); |
|
121 } |
|
122 |
|
123 void HgItemSizeDialog::itemSpacingXChanged(int value) |
|
124 { |
|
125 QSizeF s = mSpacing; |
|
126 mSpacing = QSizeF(value, s.height()); |
|
127 mSpacingXLabel->setNumber(value); |
|
128 emit updateItemSizeAndSpacing(); |
|
129 } |
|
130 |
|
131 void HgItemSizeDialog::itemSpacingYChanged(int value) |
|
132 { |
|
133 QSizeF s = mSpacing; |
|
134 mSpacing = QSizeF(s.width(), value); |
|
135 mSpacingYLabel->setNumber(value); |
|
136 emit updateItemSizeAndSpacing(); |
|
137 } |
|
138 |
|
139 void HgItemSizeDialog::buttonClosed(bool) |
|
140 { |
|
141 close(); |
|
142 emit closed(); |
|
143 } |
|
144 |
|
145 QSizeF HgItemSizeDialog::itemSize() const |
|
146 { |
|
147 return mSize; |
|
148 } |
|
149 |
|
150 QSizeF HgItemSizeDialog::itemSpacing() const |
|
151 { |
|
152 return mSpacing; |
|
153 } |
|
154 |
|
155 static void setSliderScale(HbSlider* slider, int min, int max) |
|
156 { |
|
157 slider->setMinimum(min); |
|
158 slider->setMaximum(max); |
|
159 } |
|
160 |
|
161 |
|
162 void HgItemSizeDialog::setSliderLimits(int min, int max) |
|
163 { |
|
164 setSliderScale(mSizeXSlider, min, max); |
|
165 setSliderScale(mSizeYSlider, min, max); |
|
166 setSliderScale(mSpacingXSlider, min, max); |
|
167 setSliderScale(mSpacingYSlider, min, max); |
|
168 } |