72 setObjectName("homescreen.nokia.com/state/arrangestate"); |
70 setObjectName("homescreen.nokia.com/state/arrangestate"); |
73 connect(this, SIGNAL(exited()),SLOT(stateExited())); |
71 connect(this, SIGNAL(exited()),SLOT(stateExited())); |
74 HSMENUTEST_FUNC_EXIT("HsArrangeState::construct"); |
72 HSMENUTEST_FUNC_EXIT("HsArrangeState::construct"); |
75 } |
73 } |
76 |
74 |
77 // --------------------------------------------------------------------------- |
75 /*! |
78 // --------------------------------------------------------------------------- |
76 Send data to storage (selected applications in collection). |
79 // |
77 \param listWidget List of items to be stored. |
80 void HsArrangeState::save() |
78 */ |
|
79 void HsArrangeState::save(const HbListWidget& listWidget) |
81 { |
80 { |
82 qDebug("HsArrangeState::save()"); |
81 qDebug("HsArrangeState::save()"); |
83 HSMENUTEST_FUNC_ENTRY("HsArrangeState::save"); |
82 HSMENUTEST_FUNC_ENTRY("HsArrangeState::save"); |
84 |
83 |
85 getArrangedEntriesIds(); |
84 getArrangedEntriesIds(listWidget); |
86 if (mArrangedCollIdList.count() == mCollIdList.count()) { |
85 if (mArrangedCollIdList.count() == mCollIdList.count()) { |
87 for (int i(0); i < mArrangedCollIdList.count(); i++) { |
86 for (int i(0); i < mArrangedCollIdList.count(); i++) { |
88 if (mArrangedCollIdList.at(i) != mCollIdList.at(i)) { |
87 if (mArrangedCollIdList.at(i) != mCollIdList.at(i)) { |
89 HsMenuService::organizeCollection( |
88 HsMenuService::organizeCollection( |
90 HsMenuService::allCollectionsId(), mArrangedCollIdList); |
89 HsMenuService::allCollectionsId(), mArrangedCollIdList); |
110 HsMenuEvent *menuEvent = static_cast<HsMenuEvent *>(event); |
109 HsMenuEvent *menuEvent = static_cast<HsMenuEvent *>(event); |
111 QVariantMap data = menuEvent->data(); |
110 QVariantMap data = menuEvent->data(); |
112 |
111 |
113 mTopItemId = data.value(itemIdKey()).toInt(); |
112 mTopItemId = data.value(itemIdKey()).toInt(); |
114 |
113 |
115 mItemModel = HsMenuService::getAllCollectionsModel(); |
114 HbDocumentLoader loader; |
116 |
115 bool loadStatusOk = false; |
117 mEntriesList = new HbListWidget(); |
116 mObjectList = |
118 fulfillEntriesList(); |
117 loader.load(HS_ARRANGE_DIALOG_LAYOUT, &loadStatusOk); |
119 |
118 Q_ASSERT_X(loadStatusOk, |
120 mEntriesList->scrollTo(mTopModelIndex, |
119 HS_ARRANGE_DIALOG_LAYOUT, |
121 HbAbstractItemView::PositionAtTop); |
120 "Error while loading docml file."); |
122 mEntriesList->setArrangeMode(true); |
121 |
123 |
122 mEntriesList = qobject_cast<HbListWidget*>( |
124 mDialog = new HbDialog(); |
123 loader.findWidget(HS_ARRANGE_LIST_NAME)); |
125 mDialog->setDismissPolicy(HbPopup::NoDismiss); |
124 |
126 mDialog->setTimeout(HbPopup::NoTimeout); |
125 mDialog = qobject_cast<HbDialog*>( |
127 |
126 loader.findWidget(HS_ARRANGE_DIALOG_NAME)); |
128 mDialog->setPreferredSize( |
127 |
129 HbInstance::instance()->allMainWindows().at(0)->size()); |
128 |
130 |
129 if (mEntriesList != NULL && mDialog != NULL) { |
131 HbLabel *label = new HbLabel(hbTrId("txt_applib_title_arrange")); |
130 |
132 mDialog->setHeadingWidget(label); |
131 mItemModel = HsMenuService::getAllCollectionsModel(); |
133 mDialog->setContentWidget(mEntriesList); |
132 |
134 |
133 fulfillEntriesList(*mEntriesList); |
135 mDialog->setPrimaryAction(new HbAction(hbTrId("txt_common_button_ok"), |
134 |
136 mDialog)); |
135 mEntriesList->scrollTo(mTopModelIndex, |
137 |
136 HbAbstractItemView::PositionAtTop); |
138 HbAction *result = mDialog->exec(); |
137 |
139 mEntriesList->setArrangeMode(false); |
138 mEntriesList->setArrangeMode(true); |
140 if (result == mDialog->primaryAction()) { |
139 |
141 save(); |
140 mDialog->setTimeout(HbPopup::NoTimeout); |
142 } |
141 |
143 delete result; |
142 mDialog->setPreferredSize( |
144 result = NULL; |
143 HbInstance::instance()->allMainWindows().at(0)->size()); |
145 |
144 |
|
145 HbAction const* action(mDialog->exec()); |
|
146 |
|
147 mEntriesList->setArrangeMode(false); |
|
148 |
|
149 if (action == mDialog->primaryAction()) { |
|
150 save(*mEntriesList); |
|
151 } |
|
152 } |
146 HSMENUTEST_FUNC_EXIT("HsArrangeState::onEntry"); |
153 HSMENUTEST_FUNC_EXIT("HsArrangeState::onEntry"); |
147 } |
154 } |
148 #ifdef COVERAGE_MEASUREMENT |
155 #ifdef COVERAGE_MEASUREMENT |
149 #pragma CTC ENDSKIP |
156 #pragma CTC ENDSKIP |
150 #endif //COVERAGE_MEASUREMENT |
157 #endif //COVERAGE_MEASUREMENT |
168 |
175 |
169 HSMENUTEST_FUNC_EXIT("HsArrangeState::stateExited"); |
176 HSMENUTEST_FUNC_EXIT("HsArrangeState::stateExited"); |
170 qDebug("HsArrangeState::stateExited()"); |
177 qDebug("HsArrangeState::stateExited()"); |
171 } |
178 } |
172 |
179 |
173 // --------------------------------------------------------------------------- |
180 |
174 // --------------------------------------------------------------------------- |
181 /*! |
175 // |
182 Put items from model into arrangable list of items represented by \a listWidget |
176 void HsArrangeState::fulfillEntriesList() |
183 \param listWidget Object to be filled with list of items from model. |
|
184 */ |
|
185 void HsArrangeState::fulfillEntriesList(HbListWidget& listWidget) |
177 { |
186 { |
178 qDebug() << "HsArrangeState::fulfillEntriesList"; |
187 qDebug() << "HsArrangeState::fulfillEntriesList"; |
179 |
188 |
180 mTopModelIndex = QModelIndex(); |
189 mTopModelIndex = QModelIndex(); |
181 for (int i(0); i < mItemModel->rowCount(); i++) { |
190 for (int i(0); i < mItemModel->rowCount(); i++) { |
188 widgetItem->setData(mItemModel->data(idx, Qt::DisplayRole), |
197 widgetItem->setData(mItemModel->data(idx, Qt::DisplayRole), |
189 Qt::DisplayRole); |
198 Qt::DisplayRole); |
190 widgetItem->setData(mItemModel->data(idx, Qt::DecorationRole), |
199 widgetItem->setData(mItemModel->data(idx, Qt::DecorationRole), |
191 Qt::DecorationRole); |
200 Qt::DecorationRole); |
192 |
201 |
193 mEntriesList->addItem(widgetItem); |
202 listWidget.addItem(widgetItem); |
194 if (mTopItemId == itemId) { |
203 if (mTopItemId == itemId) { |
195 mEntriesList->indexCount(); |
204 listWidget.indexCount(); |
196 mEntriesList->setCurrentItem(widgetItem); |
205 listWidget.setCurrentItem(widgetItem); |
197 mTopModelIndex = mEntriesList->currentIndex(); |
206 mTopModelIndex = listWidget.currentIndex(); |
198 } |
207 } |
199 } |
208 } |
200 } |
209 } |
201 |
210 |
202 // --------------------------------------------------------------------------- |
211 |
203 // --------------------------------------------------------------------------- |
212 /*! |
204 // |
213 Copy items in from \a listWidget to arranged collection id list |
205 void HsArrangeState::getArrangedEntriesIds() |
214 \param listWidget List of items in the requested order. |
206 { |
215 */ |
207 for (int i(0); i < mEntriesList->count(); i++) { |
216 void HsArrangeState::getArrangedEntriesIds(const HbListWidget& listWidget) |
208 HbListWidgetItem *widgetItem = mEntriesList->item(i); |
217 { |
|
218 for (int i(0); i < listWidget.count(); ++i) { |
|
219 HbListWidgetItem *widgetItem = listWidget.item(i); |
209 QVariant entryId = widgetItem->data(CaItemModel::IdRole); |
220 QVariant entryId = widgetItem->data(CaItemModel::IdRole); |
210 mArrangedCollIdList.append(entryId.toInt()); |
221 mArrangedCollIdList.append(entryId.toInt()); |
211 } |
222 } |
212 } |
223 } |