diff -r 773be20e0a25 -r 993ab30e92fc searchui/stateproviders/searchstateprovider/src/searchprogressivestate.cpp --- a/searchui/stateproviders/searchstateprovider/src/searchprogressivestate.cpp Wed Jun 23 18:13:49 2010 +0300 +++ b/searchui/stateproviders/searchstateprovider/src/searchprogressivestate.cpp Tue Jul 06 14:17:22 2010 +0300 @@ -24,15 +24,10 @@ #include #include #include -#include #include #include #include -#include #include -#include -#include -#include #include #include #include @@ -53,6 +48,11 @@ #include #include #include +#include +#include +#include +#include +#include #define hbApp qobject_cast(qApp) const char *SEARCHSTATEPROVIDER_DOCML = ":/xml/searchstateprovider.docml"; const char *TOC_VIEW = "tocView"; @@ -64,12 +64,11 @@ // --------------------------------------------------------------------------- SearchProgressiveState::SearchProgressiveState(QState *parent) : QState(parent), mMainWindow(NULL), mView(NULL), mListView(NULL), - mDocumentLoader(NULL), mModel(NULL), mSearchHandler(NULL), - mNotesEditor(0), mAiwMgr(0), mRequest(0) + mDocumentLoader(NULL), mSearchHandler(NULL), mNotesEditor(0), + mAiwMgr(0), mRequest(0) { mMainWindow = hbInstance->allMainWindows().at(0); - mModel = new QStandardItemModel(this); mAiwMgr = new XQApplicationManager; @@ -86,7 +85,7 @@ mView->setTitle(hbTrId("txt_search_title_search")); } - mListView = qobject_cast (mDocumentLoader->findWidget( + mListView = qobject_cast (mDocumentLoader->findWidget( TUT_LIST_VIEW)); Q_ASSERT_X(ok && (mListView != 0), "TUT_LIST_VIEW", "invalid viewocML file"); @@ -100,6 +99,7 @@ HbListViewItem *prototypeListView = qobject_cast ( prototype); + prototypeListView->setGraphicsSize(HbListViewItem::LargeIcon); if (prototypeListView) { HbStyle style; @@ -109,7 +109,6 @@ mListViewIconSize = size.toSize(); prototypeListView->setTextFormat(Qt::RichText); } - mListView->setModel(mModel, prototype); HbAbstractItemView::ItemAnimations noCreationAndRemovalAnimations = HbAbstractItemView::All; @@ -123,10 +122,12 @@ if (mSearchPanel) { mSearchPanel->setSearchOptionsEnabled(true); - - mSearchPanel->setPlaceholderText(hbTrId("txt_search_dialog_search_device")); + + mSearchPanel->setPlaceholderText(hbTrId( + "txt_search_dialog_search_device")); mSearchPanel->setCancelEnabled(false); + mSearchPanel->setFocus(); } constructHandlers(); @@ -185,6 +186,8 @@ mNotespluginLoader->instance()); mNotesEditor = qobject_cast (plugin); } + + mOnlineQueryAvailable = false; } // --------------------------------------------------------------------------- // SearchProgressiveState::~SearchProgressiveState @@ -195,10 +198,6 @@ { delete mAiwMgr; } - if (mModel) - { - delete mModel; - } if (mDocumentLoader) { delete mDocumentLoader; @@ -246,7 +245,7 @@ } case 4: { - handler->setCategory("email"); + handler->setCategory("msg email"); break; } case 5: @@ -298,10 +297,15 @@ } if (loadSettings) { - emit settingsState(); + emit switchProToSettingsState(); loadSettings = false; } setSelectedCategories(); + if (mOnlineQueryAvailable) + { + mSearchPanel->setCriteria(mOriginalString); + mOnlineQueryAvailable = false; + } } // --------------------------------------------------------------------------- // SearchProgressiveState::onExit @@ -327,8 +331,8 @@ } if (mListView) { - connect(mListView, SIGNAL(activated(const QModelIndex)), this, - SLOT(openResultitem(const QModelIndex))); + connect(mListView, SIGNAL(activated(HbListWidgetItem *)), this, + SLOT(openResultitem(HbListWidgetItem *))); } if (mSearchPanel) { @@ -357,8 +361,8 @@ } if (mListView) { - disconnect(mListView, SIGNAL(activated(const QModelIndex)), this, - SLOT(openResultitem(const QModelIndex))); + disconnect(mListView, SIGNAL(activated(HbListWidgetItem *)), this, + SLOT(openResultitem(HbListWidgetItem *))); } if (mSearchPanel) { @@ -408,7 +412,7 @@ QStringList liststr; QString secondrow = aDoc->excerpt(); QString firstrow; - QStandardItem* listitem = new QStandardItem(); + HbListWidgetItem* listitem = new HbListWidgetItem(); if (aDoc->baseAppClass().contains("contact")) { @@ -450,7 +454,7 @@ } else if (aDoc->baseAppClass().contains("video")) { - QStringList videoList = filterDoc(aDoc, "Title", "MediaId","Name"); + QStringList videoList = filterDoc(aDoc, "Title", "MediaId", "Name"); if (videoList.value(0, "").length()) { firstrow.append(videoList.at(0)); @@ -480,6 +484,20 @@ listitem->setData(imageList.at(1), Qt::UserRole + 2); } } + else if (aDoc->baseAppClass().contains("msg email")) + { + qDebug() << "searchui:on Get doc email"; + QStringList emailList = filterDoc(aDoc, "Sender", "MailBoxId", + "FolderId"); + + qDebug() << "searchui:recipients" << emailList.at(0) << emailList.at( + 1) << emailList.at(2); + firstrow.append(emailList.at(0)); + listitem->setData(emailList.at(1), Qt::UserRole + 2); + listitem->setData(emailList.at(2), Qt::UserRole + 3); + liststr << firstrow << secondrow; + listitem->setData(mIconArray.at(5), Qt::DecorationRole); + } else if (aDoc->baseAppClass().contains("msg")) { QStringList msgList = filterDoc(aDoc, "Subject", "Body"); @@ -498,13 +516,7 @@ } liststr << firstrow << secondrow; listitem->setData(mIconArray.at(4), Qt::DecorationRole); - } - else if (aDoc->baseAppClass().contains("email")) - { - firstrow.append(filterDoc(aDoc, "Subject")); - liststr << firstrow << secondrow; - listitem->setData(mIconArray.at(5), Qt::DecorationRole); - } + } else if (aDoc->baseAppClass().contains("calendar")) { firstrow.append(filterDoc(aDoc, "Summary")); @@ -542,6 +554,7 @@ firstrow = "UnKnown"; } liststr << firstrow << secondrow; + listitem->setData(secondrow, Qt::UserRole + 2); listitem->setData(mIconArray.at(8), Qt::DecorationRole); } else if (aDoc->baseAppClass().contains("file")) @@ -552,10 +565,11 @@ liststr << firstrow << secondrow; listitem->setData(mIconArray.at(9), Qt::DecorationRole); } - listitem->setData(liststr, Qt::DisplayRole); + listitem->setText(firstrow); + listitem->setSecondaryText(secondrow); listitem->setData(aDoc->docId(), Qt::UserRole); listitem->setData(aDoc->baseAppClass(), Qt::UserRole + 1); - mModel->appendRow(listitem); + mListView->addItem(listitem); mResultparser++; if (mResultparser < mResultcount) @@ -580,9 +594,8 @@ // --------------------------------------------------------------------------- // SearchProgressiveState::openResultitem // --------------------------------------------------------------------------- -void SearchProgressiveState::openResultitem(QModelIndex index) +void SearchProgressiveState::openResultitem(HbListWidgetItem * item) { - QStandardItem* item = mModel->itemFromIndex(index); if (item == NULL) return;PERF_RESULT_ITEM_LAUNCH_TIME_RESTART QList args; @@ -600,7 +613,8 @@ else if (item->data(Qt::UserRole + 1).toString().contains("bookmark")) { PERF_RESULT_ITEM_FOR_LAUNCHING("bookmark") - PERF_RESULT_ITEM_LAUNCH_TIME_ENDLOG("") + QDesktopServices::openUrl(item->data(Qt::UserRole + 2).toString()); +PERF_RESULT_ITEM_LAUNCH_TIME_ENDLOG ("") } else if (item->data(Qt::UserRole + 1).toString().contains("calendar")) @@ -608,10 +622,10 @@ QDir pluginDir = QDir(QString("z:/resource/qt/plugins/calendar")); QPluginLoader *calAgandaViewerPluginLoader = new QPluginLoader( pluginDir.absoluteFilePath(QString( - "agendaeventviewerplugin.qtplugin"))); + "agendaeventviewerplugin.qtplugin"))); calAgandaViewerPluginInstance = qobject_cast< - EventViewerPluginInterface *> ( + EventViewerPluginInterface *> ( calAgandaViewerPluginLoader->instance()); connect(calAgandaViewerPluginInstance, SIGNAL(viewingCompleted()), @@ -658,6 +672,16 @@ } PERF_RESULT_ITEM_LAUNCH_TIME_ENDLOG("") } + else if (item->data(Qt::UserRole + 1).toString().contains("msg email")) + { + + mRequest = mAiwMgr->create("nmail", + "com.nokia.symbian.IEmailMessageView", + "viewMessage(QVariant,QVariant,QVariant)", false); + + args << item->data(Qt::UserRole + 2).toULongLong(&t) << item->data( + Qt::UserRole + 3).toULongLong(&t) << item->data(Qt::UserRole).toULongLong(&t); + } else if (item->data(Qt::UserRole + 1).toString().contains("msg")) { PERF_RESULT_ITEM_FOR_LAUNCHING("msg") @@ -667,6 +691,10 @@ int uid = (item->data(Qt::UserRole)).toInt(&t); args << uid; } + else if(item->data(Qt::UserRole + 1).toString().contains("links")) + { + emit launchLink((item->data(Qt::UserRole)).toInt(&t),mOriginalString); + } if (mRequest) { connect(mRequest, SIGNAL(requestOk(const QVariant&)), this, @@ -675,6 +703,7 @@ SLOT(handleError(int,const QString&)));// Connect error handling signal or apply lastError function instead. mRequest->setArguments(args); if (!mRequest->send())// Make the request + { qDebug() << "AIW-ERROR: Send failed" << mRequest->lastError(); } @@ -709,15 +738,20 @@ // --------------------------------------------------------------------------- // SearchProgressiveState::createSuggestionLink // --------------------------------------------------------------------------- -void SearchProgressiveState::createSuggestionLink(bool aFlag) +void SearchProgressiveState::createSuggestionLink() { - QStandardItem* listitem = new QStandardItem(); - if (!aFlag) + QString linkString = QString(hbTrId("txt_search_list_search_for_1").arg( + mOriginalString)); + QMapIterator i(mISprovidersIcon); + while (i.hasNext()) { - QString linkString = QString(hbTrId("txt_search_list_search_for_1").arg(mOriginalString)); - mLinkindex = mModel->rowCount(); - listitem->setData(linkString, Qt::DisplayRole); - mModel->appendRow(listitem); + i.next(); + HbListWidgetItem* listitem = new HbListWidgetItem(); + listitem->setText(linkString); + listitem->setData(i.key(), Qt::UserRole); + listitem->setData(i.value(), Qt::DecorationRole); + listitem->setData("links", Qt::UserRole + 1); + mListView->addItem(listitem); } } // --------------------------------------------------------------------------- @@ -727,11 +761,12 @@ { if (aKeyword.length()) { - QStandardItem* listitem = new QStandardItem(); + HbListWidgetItem* listitem = new HbListWidgetItem(); QString noResultMsg = QString("" + hbTrId( "txt_search_list_no_match_found")); - listitem->setData(noResultMsg, Qt::DisplayRole); - mModel->appendRow(listitem); + listitem->setText(noResultMsg); + mListView->addItem(listitem); + } } // --------------------------------------------------------------------------- @@ -739,10 +774,7 @@ // --------------------------------------------------------------------------- void SearchProgressiveState::clear() { - if (mModel) - { - mModel->clear(); - } + mListView->clear(); } // --------------------------------------------------------------------------- // SearchProgressiveState::searchOnCategory @@ -806,7 +838,7 @@ { PERF_CAT_API_TIME_RESTART mSearchHandler->searchAsync(aKeyword, "_aggregate"); - + } else { @@ -816,10 +848,10 @@ else if (mDatabasecount >= mTemplist.count()) { PERF_TOTAL_UI_ENDLOG - if (mModel->rowCount() == 0 && aKeyword.length() != 0) + if (mListView->count() == 0 && aKeyword.length() != 0) { noResultsFound(mOriginalString); - createSuggestionLink(0); + createSuggestionLink(); } return; } @@ -835,7 +867,7 @@ { mSearchHandlerList.at(i)->cancelLastSearch(); } - if (mModel->rowCount() != 0) + if (mListView->count() != 0) { clear(); } @@ -858,24 +890,9 @@ void SearchProgressiveState::setSettings() { mTempSelectedCategory = mSelectedCategory; - emit settingsState(); - } -// --------------------------------------------------------------------------- -// SearchProgressiveState::_customizeGoButton -// --------------------------------------------------------------------------- -void SearchProgressiveState::_customizeGoButton(bool avalue) - { - if (mSearchPanel) - { - if (avalue) - { - mSearchPanel->setProgressive(false); - } - else - { - mSearchPanel->setProgressive(true); - } - } + if (mOriginalString.length()) + emit inDeviceSearchQuery(mOriginalString); + emit switchProToSettingsState(); } // --------------------------------------------------------------------------- // SearchProgressiveState::settingsaction @@ -932,7 +949,7 @@ case 3://Messages& emails { mTemplist.append("msg"); - //mTemplist.append("email"); + mTemplist.append("email"); break; } case 4://Calender& notes @@ -959,7 +976,7 @@ } } } - if (mTemplist.count() == 8) + if (mTemplist.count() == 9) isrootsearch = true; if (isrootsearch) { @@ -1029,9 +1046,9 @@ CleanupStack::PopAndDestroy(apaMaskedBitmap); } CleanupStack::PopAndDestroy(&apaLsSession); - - if (icon.isNull() || !(icon.size().isValid())) - icon = HbIcon("qtg_large_application"); + + if (icon.isNull() || !(icon.size().isValid())) + icon = HbIcon("qtg_large_application"); return icon; } // --------------------------------------------------------------------------- @@ -1328,3 +1345,12 @@ } }PERF_APP_LAUNCH_END("SearchAppplication View is ready"); } +void SearchProgressiveState::slotOnlineQuery(QString str) + { + mOriginalString = str; + mOnlineQueryAvailable = true; + } +void SearchProgressiveState::slotISProvidersIcon(int id, HbIcon icon) + { + mISprovidersIcon.insert(id, icon); + }