--- a/homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hsaddappstocollectionstate.cpp Tue Jul 06 14:06:53 2010 +0300
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hsaddappstocollectionstate.cpp Wed Aug 18 09:40:07 2010 +0300
@@ -15,6 +15,10 @@
*
*/
+#include <HbDocumentLoader>
+#include <HbDialog>
+#include <HbListView>
+#include <QStandardItemModel>
#include <qfinalstate.h>
#include <QDebug>
#include <hsmenuservice.h>
@@ -25,8 +29,8 @@
#include "hsaddappstocollectionstate.h"
#include "hsmenuevent.h"
#include "hscollectionnamedialog.h"
-#include "hscollectionslistdialog.h"
#include "hsappschecklist.h"
+#include "hsmenuitemmodel.h"
/*!
\class HsAddAppsToCollectionState
@@ -133,24 +137,16 @@
*/
/*!
- \fn void HsAddAppsToCollectionState::transitToAppsCheckListState(const QString &collectionName);
- Signal emitted when collection name is selected - version to trigger
- transition to mAppCheckListState.
- \param collectionName name of collection.
- */
-
-/*!
\fn void void HsAddAppsToCollectionState::transitToSaveState(int collectionId);
Signal emitted when collection id is selected.
\param collectionId id of collection.
*/
/*!
- \fn void HsAddAppsToCollectionState::transitToAppsCheckListState(int collectionId);
- Signal emitted when collection name is selected - version to trigger
- transition to mAppCheckListState.
- \param collectionId id of collection.
- */
+ \fn void HsAddAppsToCollectionState::transitToSelectCollectionState();
+ Signal emitted after close multiselection list when CollectionActionType is ViaAllViewOptionMenuType
+ transition to mSelectCollectionState.
+ */
/*!
\fn void HsAddAppsToCollectionState::transitToNewCollectionState();
@@ -179,15 +175,13 @@
mShowConfirmation(0), mInitialState(0), mSelectCollectionState(0),
mNewCollectionState(0), mAppsCheckListState(0), mActionType(
NoActionType), mApplicationsSortAttribute(NoHsSortAttribute),
- mCollectionsSortAttribute(NoHsSortAttribute), mAppsCheckList(0),
- mEditorDialog(0), mListDialog(0)
+ mAppsCheckList(0), mEditorDialog(0), mListDialog(0), mModel(0)
{
construct();
}
/*!
Destructor.
-
*/
HsAddAppsToCollectionState::~HsAddAppsToCollectionState()
{
@@ -238,10 +232,6 @@
SLOT(setCollectionId(int)));
connect(this, SIGNAL(transitToSaveState(QString)),
SLOT(setCollectionName(QString)));
- connect(this, SIGNAL(transitToAppsCheckListState(int)),
- SLOT(setCollectionId(int)));
- connect(this, SIGNAL(transitToAppsCheckListState(QString)),
- SLOT(setCollectionName(QString)));
connect(this, SIGNAL(transitToSaveState(QList<int>)),
SLOT(setAppList(QList<int>)));
@@ -250,28 +240,29 @@
// Add a specific item to a collection via collection specific menu.
// Adding a new collection via the Collections view.
mSelectCollectionState->addTransition(this,
- SIGNAL(transitToNewCollectionState()), mNewCollectionState);
+ SIGNAL(transitToNewCollectionState()), mNewCollectionState);
mSelectCollectionState->addTransition(this,
- SIGNAL(transitToSaveState(int)), saveState);
+ SIGNAL(transitToSaveState(int)), saveState);
mNewCollectionState->addTransition(this,
- SIGNAL(transitToSaveState(QString)), saveState);
+ SIGNAL(transitToSaveState(QString)), saveState);
// Add one/many applications to an existing/a new collection
// via the All view options menu.
- // Add items to a collection via the collection's view options menu.
+ // Add items to a collection via the collection's view options menu.
mSelectCollectionState->addTransition(this,
- SIGNAL(transitToAppsCheckListState(int)), mAppsCheckListState);
+ SIGNAL(transitToSaveState(int)), saveState);
mNewCollectionState->addTransition(this,
- SIGNAL(transitToAppsCheckListState(QString)), mAppsCheckListState);
+ SIGNAL(transitToSaveState(QString)), saveState);
mAppsCheckListState->addTransition(this,
- SIGNAL(transitToSaveState(QList<int>)), saveState);
-
+ SIGNAL(transitToSaveState(QList<int>)), saveState);
mSelectCollectionState->addTransition(this,
- SIGNAL(transitToFinalState()),finalState);
+ SIGNAL(transitToFinalState()),finalState);
mNewCollectionState->addTransition(this,
- SIGNAL(transitToFinalState()), finalState);
+ SIGNAL(transitToFinalState()), finalState);
mAppsCheckListState->addTransition(this,
- SIGNAL(transitToFinalState()), finalState);
+ SIGNAL(transitToSelectCollectionState()), mSelectCollectionState);
+ mAppsCheckListState->addTransition(this,
+ SIGNAL(transitToFinalState()), finalState);
//transition to final state after save
saveState->addTransition(finalState);
@@ -330,27 +321,19 @@
mApplicationsSortAttribute = static_cast<HsSortAttribute>(data.value(
appSortOrderKey()).toInt());
- mCollectionsSortAttribute = static_cast<HsSortAttribute>(data.value(
- collectionSortOrderKey()).toInt());
const int itemId = data.value(itemIdKey()).toInt();
mCollectionId = data.value(collectionIdKey()).toInt();
- if (itemId && (mCollectionsSortAttribute != NoHsSortAttribute
- || mCollectionId)) {
- //add selected app item form allAppView or collectionView
+ if (itemId) {
+ //add selected app item from allAppView or collectionView
mAppList.append(itemId);
-
mInitialState->addTransition(mSelectCollectionState);
-
mShowConfirmation = true;
- } else if (mApplicationsSortAttribute != NoHsSortAttribute
- && mCollectionsSortAttribute != NoHsSortAttribute) {
+ } else if (mApplicationsSortAttribute != NoHsSortAttribute) {
//add apps from allAppView options menu
mActionType = ViaAllViewOptionMenuType;
-
- mInitialState->addTransition(mSelectCollectionState);
-
+ mInitialState->addTransition(mAppsCheckListState);
mShowConfirmation = true;
} else if (mCollectionId) {
//add apps from collectionView options menu
@@ -406,22 +389,18 @@
}
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
-void HsAddAppsToCollectionState::editorDialogFinished(HbAction* finishedAction)
+/*!
+ Slot invoked when editor dialog with name of created collection is finished.
+ */
+void HsAddAppsToCollectionState::editorDialogFinished(
+ HbAction* finishedAction)
{
if (finishedAction == mEditorDialog->actions().value(0)) {
- QString newName(mEditorDialog->newName(mEditorDialog->value().toString(), true));
- if (mActionType == ViaAllViewOptionMenuType) {
- qDebug("HsAddAppsToCollectionState::newCollection() "
- "- emit collectionNameSelectedCl(newName)");
- emit transitToAppsCheckListState(newName);
- } else {
- qDebug("HsAddAppsToCollectionState::newCollection() "
- "- emit collectionNameSelected(newName)");
- emit transitToSaveState(newName);
- }
+ QString newName(
+ mEditorDialog->uniqueCollectionName());
+ qDebug("HsAddAppsToCollectionState::newCollection() "
+ "- emit collectionNameSelectedCl(newName)");
+ emit transitToSaveState(newName);
} else {
qDebug(
"HsAddAppsToCollectionState::newCollection() - emit cancel()");
@@ -437,36 +416,76 @@
{
qDebug("HsAddAppsToCollectionState::selectCollection()");
HSMENUTEST_FUNC_ENTRY("HsAddAppsToCollectionState::selectCollection");
- mListDialog = new HsCollectionsListDialog(mCollectionsSortAttribute,
- mCollectionId);
- mListDialog->open(this, SLOT(listDialogFinished(HbAction*)));
+
+ HbDocumentLoader loader;
+ bool loadStatusOk = false;
+ loader.load(HS_COLLECTION_DIALOG_LAYOUT, &loadStatusOk);
+ Q_ASSERT_X(loadStatusOk, HS_COLLECTION_DIALOG_LAYOUT,
+ "Error while loading docml file.");
+
+ mListDialog = qobject_cast<HbDialog*>(
+ loader.findWidget(HS_COLLECTION_DIALOG_NAME));
+
+ HbListView *listView = qobject_cast<HbListView*>(
+ loader.findWidget(HS_COLLECTION_DIALOG_LIST_VIEW));
+
+ HbAction* createNewCollection =
+ qobject_cast<HbAction*>(loader.findObject(
+ HS_COLLECTION_DIALOG_CREATE_NEW_ACTION));
+
+ HbAction* cancel = qobject_cast<HbAction*>(loader.findObject(
+ HS_COLLECTION_DIALOG_CANCEL_ACTION));
+
+ if (mListDialog != NULL) {
+ mListDialog->setTimeout(HbPopup::NoTimeout);
+ mListDialog->setAttribute(Qt::WA_DeleteOnClose, true);
+
+ createNewCollection->setParent(mListDialog);
+ cancel->setParent(mListDialog);
+
+ mModel = standardItemModel(mCollectionId);
+ mModel->setParent(mListDialog);
+ listView->setModel(mModel);
+
+ connect(listView, SIGNAL(activated(const QModelIndex &)),
+ this, SLOT(collectionSelected(const QModelIndex &)));
+
+ mListDialog->open(this, SLOT(listDialogFinished(HbAction*)));
+ }
+
HSMENUTEST_FUNC_EXIT("HsAddAppsToCollectionState::selectCollection");
}
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
+/*!
+ Slot invoked when collection list dialog is finished
+ */
void HsAddAppsToCollectionState::listDialogFinished(HbAction* finishedAction)
{
- if (finishedAction != mListDialog->actions().value(0)) {
- int itemId = mListDialog->getItemId();
- if (itemId) {
- if (mActionType == ViaAllViewOptionMenuType) {
- qDebug("emit collectionSelectedCl(%d)", itemId);
- emit transitToAppsCheckListState(itemId);
- } else {
- qDebug("emit collectionSelected(%d)", itemId);
- emit transitToSaveState(itemId);
- }
- } else {
- qDebug("emit createNewCollection()");
- emit transitToNewCollectionState();
- }
- } else {
+ if (finishedAction == mListDialog->actions().value(0)) {
+ qDebug("emit createNewCollection()");
+ emit transitToNewCollectionState();
+ } else if (finishedAction == mListDialog->actions().value(1)) {
qDebug("emit cancel()");
emit transitToFinalState();
- }
+ }
+
mListDialog = NULL; // set to null since this will be deleted after close
+ mModel = NULL;// set to null since this will be deleted with dialog
+}
+
+/*!
+ Slot invoked when collection is selected
+ \param modelIndex Index of selected item.
+ */
+void HsAddAppsToCollectionState::collectionSelected(
+ const QModelIndex &modelIndex)
+{
+ int selectedCollection = mModel->data(
+ modelIndex, CaItemModel::IdRole).toInt();
+ mListDialog->close();
+
+ qDebug("emit collectionSelected(%d)", selectedCollection);
+ emit transitToSaveState(selectedCollection);
}
/*!
@@ -479,9 +498,9 @@
HSMENUTEST_FUNC_ENTRY("HsAddAppsToCollectionState::showMessageAppsAdded");
HbNotificationDialog *notificationDialog = new HbNotificationDialog();
notificationDialog->setAttribute(Qt::WA_DeleteOnClose);
- notificationDialog->setTitle(hbTrId(
- "txt_applib_dpopinfo_added_to_collection_1") .arg(
- HsMenuService::getName(id)));
+ notificationDialog->setTitle(
+ hbTrId("txt_applib_dpophead_added_to_collection_1") .arg(
+ HsMenuService::getName(id)));
notificationDialog->show();
mShowConfirmation = false;
HSMENUTEST_FUNC_EXIT("HsAddAppsToCollectionState::showMessageAppsAdded");
@@ -527,9 +546,6 @@
/*!
Slot invoked when apps checklist state is entered.
*/
-#ifdef COVERAGE_MEASUREMENT
-#pragma CTC SKIP
-#endif //COVERAGE_MEASUREMENT
void HsAddAppsToCollectionState::appsCheckListState()
{
qDebug("HsAddAppsToCollectionState::appsCheckListState()");
@@ -544,29 +560,60 @@
mAppsCheckList->showAppsCheckboxList(mApplicationsSortAttribute);
HSMENUTEST_FUNC_EXIT("HsAddAppsToCollectionState::appsCheckListState");
}
-#ifdef COVERAGE_MEASUREMENT
-#pragma CTC ENDSKIP
-#endif //COVERAGE_MEASUREMENT
/*!
Slot connected trrigger action of secondary soft key of check list box.
It is called when done button is selected.
*/
-#ifdef COVERAGE_MEASUREMENT
-#pragma CTC SKIP
-#endif //COVERAGE_MEASUREMENT
void HsAddAppsToCollectionState::selectApplicationsDone(
const QList<int> &appList)
{
if (appList.count()) {
qDebug("AppsCheckListState::selectApplicationsDone() "
"- emit appsSelected(mAppList)");
- emit transitToSaveState(appList);
+ if (mActionType == ViaAllViewOptionMenuType) {
+ setAppList(appList);
+ emit transitToSelectCollectionState();
+ } else {
+ emit transitToSaveState(appList);
+ }
} else {
qDebug(
"AppsCheckListState::selectApplicationsDone() - emit cancel()");
emit transitToFinalState();
}
}
-#ifdef COVERAGE_MEASUREMENT
-#pragma CTC ENDSKIP
-#endif //COVERAGE_MEASUREMENT
+/*!
+ Creates standard item model.
+ \param collectionId id of collection to remove from model.
+ \return QStandardItemModel - caller takes ownership.
+ */
+QStandardItemModel *HsAddAppsToCollectionState::standardItemModel(
+ int collectionId)
+{
+ HSMENUTEST_FUNC_ENTRY("HsListDialog::standartItemModel");
+ QScopedPointer<HsMenuItemModel> caModel(
+ HsMenuService::getAllCollectionsModel());
+ caModel->setSecondLineVisibility(true);
+ QStandardItemModel *model = new QStandardItemModel(this);
+ QList<QStandardItem *> items;
+ for (int row = 0; row < caModel->rowCount(); row++) {
+ uint flags = caModel->data(caModel->index(row, 0),
+ CaItemModel::FlagsRole).value<EntryFlags> ();
+ int itemId = caModel->data(caModel->index(row, 0),
+ CaItemModel::IdRole).toInt();
+ if ((flags & RemovableEntryFlag) && (itemId != collectionId)) {
+ QStandardItem *standardItem = new QStandardItem();
+ standardItem->setData(caModel->data(caModel->index(row, 0),
+ CaItemModel::IdRole), CaItemModel::IdRole);
+ standardItem->setData(caModel->data(caModel->index(row, 0),
+ Qt::DisplayRole), Qt::DisplayRole);
+ standardItem->setData(caModel->data(caModel->index(row, 0),
+ Qt::DecorationRole), Qt::DecorationRole);
+ items << standardItem;
+ }
+ }
+ model->insertColumn(0, items);
+
+ HSMENUTEST_FUNC_EXIT("HsListDialog::standartItemModel");
+ return model;
+}