diff -r f9ce957a272c -r cdae8c6c3876 homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hsarrangestate.cpp --- a/homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hsarrangestate.cpp Fri Mar 19 09:27:44 2010 +0200 +++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hsarrangestate.cpp Fri Apr 16 14:54:01 2010 +0300 @@ -18,6 +18,7 @@ #include #include #include +#include #include #include #include @@ -52,9 +53,6 @@ */ HsArrangeState::~HsArrangeState() { - if (mEntriesList) { - delete mEntriesList; - } if (mDialog) { delete mDialog; } @@ -74,15 +72,16 @@ HSMENUTEST_FUNC_EXIT("HsArrangeState::construct"); } -// --------------------------------------------------------------------------- -// --------------------------------------------------------------------------- -// -void HsArrangeState::save() +/*! + Send data to storage (selected applications in collection). + \param listWidget List of items to be stored. + */ +void HsArrangeState::save(const HbListWidget& listWidget) { qDebug("HsArrangeState::save()"); HSMENUTEST_FUNC_ENTRY("HsArrangeState::save"); - getArrangedEntriesIds(); + getArrangedEntriesIds(listWidget); if (mArrangedCollIdList.count() == mCollIdList.count()) { for (int i(0); i < mArrangedCollIdList.count(); i++) { if (mArrangedCollIdList.at(i) != mCollIdList.at(i)) { @@ -112,37 +111,45 @@ mTopItemId = data.value(itemIdKey()).toInt(); - mItemModel = HsMenuService::getAllCollectionsModel(); - - mEntriesList = new HbListWidget(); - fulfillEntriesList(); + HbDocumentLoader loader; + bool loadStatusOk = false; + mObjectList = + loader.load(HS_ARRANGE_DIALOG_LAYOUT, &loadStatusOk); + Q_ASSERT_X(loadStatusOk, + HS_ARRANGE_DIALOG_LAYOUT, + "Error while loading docml file."); + + mEntriesList = qobject_cast( + loader.findWidget(HS_ARRANGE_LIST_NAME)); + + mDialog = qobject_cast( + loader.findWidget(HS_ARRANGE_DIALOG_NAME)); - mEntriesList->scrollTo(mTopModelIndex, - HbAbstractItemView::PositionAtTop); - mEntriesList->setArrangeMode(true); - - mDialog = new HbDialog(); - mDialog->setDismissPolicy(HbPopup::NoDismiss); - mDialog->setTimeout(HbPopup::NoTimeout); - - mDialog->setPreferredSize( - HbInstance::instance()->allMainWindows().at(0)->size()); + + if (mEntriesList != NULL && mDialog != NULL) { - HbLabel *label = new HbLabel(hbTrId("txt_applib_title_arrange")); - mDialog->setHeadingWidget(label); - mDialog->setContentWidget(mEntriesList); - - mDialog->setPrimaryAction(new HbAction(hbTrId("txt_common_button_ok"), - mDialog)); - - HbAction *result = mDialog->exec(); - mEntriesList->setArrangeMode(false); - if (result == mDialog->primaryAction()) { - save(); - } - delete result; - result = NULL; - + mItemModel = HsMenuService::getAllCollectionsModel(); + + fulfillEntriesList(*mEntriesList); + + mEntriesList->scrollTo(mTopModelIndex, + HbAbstractItemView::PositionAtTop); + + mEntriesList->setArrangeMode(true); + + mDialog->setTimeout(HbPopup::NoTimeout); + + mDialog->setPreferredSize( + HbInstance::instance()->allMainWindows().at(0)->size()); + + HbAction const* action(mDialog->exec()); + + mEntriesList->setArrangeMode(false); + + if (action == mDialog->primaryAction()) { + save(*mEntriesList); + } + } HSMENUTEST_FUNC_EXIT("HsArrangeState::onEntry"); } #ifdef COVERAGE_MEASUREMENT @@ -155,10 +162,10 @@ { HSMENUTEST_FUNC_ENTRY("HsArrangeState::stateExited"); - mDialog->setHeadingWidget(0); //delete label - mDialog->setContentWidget(0); //delete mEntriesList + qDeleteAll(mObjectList); + mObjectList.clear(); + mEntriesList = NULL; - delete mDialog; mDialog = NULL; delete mItemModel; mItemModel = NULL; @@ -170,10 +177,12 @@ qDebug("HsArrangeState::stateExited()"); } -// --------------------------------------------------------------------------- -// --------------------------------------------------------------------------- -// -void HsArrangeState::fulfillEntriesList() + +/*! + Put items from model into arrangable list of items represented by \a listWidget + \param listWidget Object to be filled with list of items from model. + */ +void HsArrangeState::fulfillEntriesList(HbListWidget& listWidget) { qDebug() << "HsArrangeState::fulfillEntriesList"; @@ -190,22 +199,24 @@ widgetItem->setData(mItemModel->data(idx, Qt::DecorationRole), Qt::DecorationRole); - mEntriesList->addItem(widgetItem); + listWidget.addItem(widgetItem); if (mTopItemId == itemId) { - mEntriesList->indexCount(); - mEntriesList->setCurrentItem(widgetItem); - mTopModelIndex = mEntriesList->currentIndex(); + listWidget.indexCount(); + listWidget.setCurrentItem(widgetItem); + mTopModelIndex = listWidget.currentIndex(); } } } -// --------------------------------------------------------------------------- -// --------------------------------------------------------------------------- -// -void HsArrangeState::getArrangedEntriesIds() + +/*! + Copy items in from \a listWidget to arranged collection id list + \param listWidget List of items in the requested order. + */ +void HsArrangeState::getArrangedEntriesIds(const HbListWidget& listWidget) { - for (int i(0); i < mEntriesList->count(); i++) { - HbListWidgetItem *widgetItem = mEntriesList->item(i); + for (int i(0); i < listWidget.count(); ++i) { + HbListWidgetItem *widgetItem = listWidget.item(i); QVariant entryId = widgetItem->data(CaItemModel::IdRole); mArrangedCollIdList.append(entryId.toInt()); }