searchui/stateproviders/searchstateprovider/src/searchprogressivestate.cpp
changeset 3 6832643895f7
parent 2 208a4ba3894c
child 5 3bc31ad99ee7
--- a/searchui/stateproviders/searchstateprovider/src/searchprogressivestate.cpp	Mon May 03 12:32:15 2010 +0300
+++ b/searchui/stateproviders/searchstateprovider/src/searchprogressivestate.cpp	Fri May 14 15:53:17 2010 +0300
@@ -14,7 +14,6 @@
  * Description:  Implementation of the progressive search state.
  *
  */
-
 #include "searchprogressivestate.h"
 #include "indevicehandler.h"
 #include <qcpixdocument.h>
@@ -44,27 +43,31 @@
 #include <AknInternalIconUtils.h>
 #include <AknIconUtils.h> 
 #include <apgcli.h>
-
+#include <qpluginloader.h>
+#include <eventviewerplugininterface.h>
+#include <noteseditor.h>
+#include <w32std.h>
+#include <apgtask.h>
+#include <apgcli.h>
+#include <AknTaskList.h>
+#include <apacmdln.h>
 const char *SEARCHSTATEPROVIDER_DOCML = ":/xml/searchstateprovider.docml";
 const char *TOC_VIEW = "tocView";
 const char *TUT_SEARCHPANEL_WIDGET = "searchPanel";
 const char *TUT_LIST_VIEW = "listView";
-const QSize defaultIconSize(30, 30);
 const int totalcategories = 10;
 // ---------------------------------------------------------------------------
 // SearchProgressiveState::SearchProgressiveState
 // ---------------------------------------------------------------------------
-//
 SearchProgressiveState::SearchProgressiveState(QState *parent) :
     QState(parent), mMainWindow(NULL), mView(NULL), mListView(NULL),
             mDocumentLoader(NULL), mModel(NULL), mSearchHandler(NULL),
-            mAiwMgr(0), mRequest(0)
+            notesEditor(0), mAiwMgr(0), mRequest(0)
     {
 
     mMainWindow = hbInstance->allMainWindows().at(0);
     mModel = new QStandardItemModel(this);
 
-   
     mAiwMgr = new XQApplicationManager;
 
     mDocumentLoader = new HbDocumentLoader();
@@ -96,8 +99,12 @@
                 prototype);
         if (prototypeListView)
             {
+            HbStyle style;
+            qreal x;
+            style.parameter("hb-param-graphic-size-primary-large", x);
+            QSizeF size(x, x);
+            mListViewIconSize = size.toSize();
             prototypeListView->setTextFormat(Qt::RichText);
-
             }
         mListView->setModel(mModel, prototype);
 
@@ -105,10 +112,8 @@
                 HbAbstractItemView::All;
         noCreationAndRemovalAnimations ^= HbAbstractItemView::Appear;
         noCreationAndRemovalAnimations ^= HbAbstractItemView::Disappear;
-
         mListView->setEnabledAnimations(noCreationAndRemovalAnimations);
         }
-    
 
     mSearchPanel = qobject_cast<HbSearchPanel *> (
             mDocumentLoader->findWidget(TUT_SEARCHPANEL_WIDGET));
@@ -148,7 +153,6 @@
         {
         mIconArray.append(getAppIconFromAppId(appUid[i]));
         }
-
 #ifdef OST_TRACE_COMPILER_IN_USE 
     //start() the timers to avoid worrying abt having to start()/restart() later
     m_categorySearchApiTime.start();
@@ -161,14 +165,12 @@
 // ---------------------------------------------------------------------------
 // SearchProgressiveState::~SearchProgressiveState
 // ---------------------------------------------------------------------------
-//
 SearchProgressiveState::~SearchProgressiveState()
     {
     if (mAiwMgr)
         {
         delete mAiwMgr;
         }
-   
     if (mModel)
         {
         delete mModel;
@@ -177,18 +179,18 @@
         {
         delete mDocumentLoader;
         }
-
     for (int i = 0; i < mSearchHandlerList.count(); i++)
         {
         delete mSearchHandlerList.at(i);
         }
-
+    if(notesEditor)
+        {
+        delete notesEditor;
+        }
     }
-
 // ---------------------------------------------------------------------------
 // SearchProgressiveState::constructHandlers
 // ---------------------------------------------------------------------------
-//
 void SearchProgressiveState::constructHandlers()
     {
     InDeviceHandler* handler = NULL;
@@ -251,16 +253,13 @@
         mSearchHandlerList.append(handler);
         }
     }
-
 // ---------------------------------------------------------------------------
 // SearchProgressiveState::onEntry
 // ---------------------------------------------------------------------------
-//
 void SearchProgressiveState::onEntry(QEvent *event)
     {
     //  WMS_LOG << "::onEntry";
     QState::onEntry(event);
-
     activateSignals();
 
     // If this is not the current view, we're getting back from plugin view  
@@ -282,17 +281,14 @@
 // ---------------------------------------------------------------------------
 // SearchProgressiveState::onExit
 // ---------------------------------------------------------------------------
-//
 void SearchProgressiveState::onExit(QEvent *event)
     {
     QState::onExit(event);
     deActivateSignals();
     }
-
 // ---------------------------------------------------------------------------
 // SearchProgressiveState::activateSignals
 // ---------------------------------------------------------------------------
-//
 void SearchProgressiveState::activateSignals()
     {
     for (int i = 0; i < mSearchHandlerList.count(); i++)
@@ -313,10 +309,8 @@
         {
         connect(mSearchPanel, SIGNAL(criteriaChanged(QString)), this,
                 SLOT(startNewSearch(QString)));
-
         connect(mSearchPanel, SIGNAL(searchOptionsClicked()), this,
                 SLOT(setSettings()));
-
         connect(mSearchPanel, SIGNAL(exitClicked()), this,
                 SLOT(cancelSearch()));
         }
@@ -324,7 +318,6 @@
         {
         connect(mModel, SIGNAL(rowsInserted(QModelIndex,int,int)), this,
                 SLOT(getrowsInserted()));
-
         connect(mModel, SIGNAL(rowsRemoved(QModelIndex,int,int)), this,
                 SLOT(getrowsRemoved()));
         }
@@ -332,7 +325,6 @@
 // ---------------------------------------------------------------------------
 // SearchProgressiveState::deActivateSignals
 // ---------------------------------------------------------------------------
-//
 void SearchProgressiveState::deActivateSignals()
     {
     for (int i = 0; i < mSearchHandlerList.count(); i++)
@@ -353,10 +345,8 @@
         {
         disconnect(mSearchPanel, SIGNAL(criteriaChanged(QString)), this,
                 SLOT(startNewSearch(QString)));
-
         disconnect(mSearchPanel, SIGNAL(searchOptionsClicked()), this,
                 SLOT(setSettings()));
-
         disconnect(mSearchPanel, SIGNAL(exitClicked()), this,
                 SLOT(cancelSearch()));
         }
@@ -364,7 +354,6 @@
         {
         disconnect(mModel, SIGNAL(rowsInserted(QModelIndex,int,int)), this,
                 SLOT(getrowsInserted()));
-
         disconnect(mModel, SIGNAL(rowsRemoved(QModelIndex,int,int)), this,
                 SLOT(getrowsRemoved()));
         }
@@ -372,13 +361,11 @@
 // ---------------------------------------------------------------------------
 // SearchProgressiveState::onAsyncSearchComplete
 // ---------------------------------------------------------------------------
-//
 void SearchProgressiveState::onAsyncSearchComplete(int aError,
         int aResultCount)
     {
     PERF_CAT_API_ENDLOG
     PERF_CAT_HITS_ENDLOG
-
     if (aError != 0)
         {
         //some error print logs
@@ -401,7 +388,6 @@
 // ---------------------------------------------------------------------------
 // SearchProgressiveState::onGetDocumentComplete
 // ---------------------------------------------------------------------------
-//
 void SearchProgressiveState::onGetDocumentComplete(int aError,
         QCPixDocument* aDoc)
     {
@@ -411,9 +397,8 @@
     QStringList liststr;
     QString secondrow = aDoc->excerpt();
     QString firstrow;
-
     //-------------- html tag creation-------------------
-    QString htmlTagPre = QString("<u>");
+   /* QString htmlTagPre = QString("<u>");
     QString htmlTagPost = QString("</u>");
     int insertpt = secondrow.indexOf(mOriginalString, 0, Qt::CaseInsensitive);
     if (insertpt >= 0)
@@ -423,101 +408,90 @@
         secondrow.insert(insertpt + mOriginalString.length()
                 + htmlTagPre.length(), htmlTagPost);
         }
-    //--------------------Html Tag Creation completed------------
+*/    //--------------------Html Tag Creation completed------------
     QStandardItem* listitem = new QStandardItem();
 
     if (aDoc->baseAppClass().contains("contact"))
         {
-        QString givename;
-        QString familyname;
-        bool bgivenname = false;
-        bool bfamilyname = false;
-        for (int i = 0; i < aDoc->fieldCount(); i++)
+        QStringList docsList = filterDoc(aDoc, "GivenName", "FamilyName");
+        if (docsList.value(0, "").length())
             {
-            if (!bgivenname && aDoc->field(i).name().contains("GivenName"))
-                {
-                givename.append(aDoc->field(i).value());
-                bgivenname = true;
-                }
-            if (!bfamilyname && aDoc->field(i).name().contains("FamilyName"))
-                {
-                familyname.append(aDoc->field(i).value());
-                bfamilyname = true;
-                }
-            if (bgivenname && bfamilyname)
-                break;
+            firstrow.append(docsList.at(0));
             }
-        if (givename.length())
-            {
-            firstrow.append(givename);
-            }
-        if (familyname.length())
+        if (docsList.value(1, "").length())
             {
             if (firstrow.length())
                 firstrow.append(" ");
-            firstrow.append(familyname);
+            firstrow.append(docsList.at(1));
             }
         if (firstrow.length() == 0)
             {
-            firstrow = hbTrId("txt_phob_list_unknown");
+            firstrow = hbTrId("txt_phob_dblist_unnamed");
             }
         liststr << firstrow << secondrow;
         listitem->setData(mIconArray.at(0), Qt::DecorationRole);
         }
     else if (aDoc->baseAppClass().contains("audio"))
         {
-        firstrow.append(filterDoc(aDoc, "Title"));
+        QStringList audioList = filterDoc(aDoc, "Title", "MediaId");
+        if (audioList.value(0, "").length())
+            {
+            firstrow.append(audioList.at(0));
+            }
         if (firstrow.length() == 0)
             {
             firstrow = hbTrId("txt_mus_dblist_val_unknown4");
             }
         liststr << firstrow << secondrow;
         listitem->setData(mIconArray.at(1), Qt::DecorationRole);
+        if (audioList.value(1, "").length())
+            {
+            listitem->setData(audioList.at(1), Qt::UserRole + 2);
+            }
         }
     else if (aDoc->baseAppClass().contains("video"))
         {
-        firstrow.append(filterDoc(aDoc, "Title"));
-        if (firstrow.length() == 0)
+        QStringList videoList = filterDoc(aDoc, "Title", "MediaId","Name");
+        if (videoList.value(0, "").length())
             {
-            firstrow.append(filterDoc(aDoc, "Name"));
+            firstrow.append(videoList.at(0));
+            }
+        if (firstrow.length() == 0 && videoList.value(2, "").length())
+            {
+            firstrow.append(videoList.at(2));
             }
         liststr << firstrow << secondrow;
         listitem->setData(mIconArray.at(2), Qt::DecorationRole);
+        if (videoList.value(1, "").length())
+            {
+            listitem->setData(videoList.at(1), Qt::UserRole + 2);
+            }
         }
     else if (aDoc->baseAppClass().contains("image"))
         {
-        firstrow.append(filterDoc(aDoc, "Name"));
+        QStringList imageList = filterDoc(aDoc, "Name", "MediaId");
+        if (imageList.value(0, "").length())
+            {
+            firstrow.append(imageList.at(0));
+            }
         liststr << firstrow << secondrow;
         listitem->setData(mIconArray.at(3), Qt::DecorationRole);
+        if (imageList.value(1, "").length())
+            {
+            listitem->setData(imageList.at(1), Qt::UserRole + 2);
+            }
         }
     else if (aDoc->baseAppClass().contains("msg"))
         {
-        QString subject;
-        QString body;
-        bool bsubject = false;
-        bool bbody = false;
-        for (int i = 0; i < aDoc->fieldCount(); i++)
+        QStringList msgList = filterDoc(aDoc, "Subject", "Body");
+        if (msgList.value(0, "").length())
             {
-            if (!bsubject && aDoc->field(i).name().contains("Subject"))
-                {
-                subject.append(aDoc->field(i).value());
-                bsubject = true;
-                }
-            if (!bbody && aDoc->field(i).name().contains("Body"))
-                {
-                body.append(aDoc->field(i).value());
-                bbody = true;
-                }
-            if (bsubject && bbody)
-                break;
-            }
-        if (subject.length())
-            {
-            firstrow.append(subject);
+            firstrow.append(msgList.at(0));
             }
         else
             {
-            firstrow.append(body);
+            if (msgList.value(1, "").length())
+                firstrow.append(msgList.at(1));
             }
         if (firstrow.length() == 0)
             {
@@ -533,7 +507,7 @@
         }
     else if (aDoc->baseAppClass().contains("calendar"))
         {
-        firstrow.append(filterDoc(aDoc, "Description"));
+        firstrow.append(filterDoc(aDoc, "Summary"));
         if (firstrow.length() == 0)
             {
             firstrow = hbTrId("txt_calendar_preview_unnamed");
@@ -550,10 +524,12 @@
             firstrow = hbTrId("txt_notes_dblist_unnamed");
             }
         liststr << firstrow << secondrow;
+        listitem->setData(mIconArray.at(7), Qt::DecorationRole);
         }
     else if (aDoc->baseAppClass().contains("applications"))
         {
-        liststr << secondrow;
+        firstrow.append(filterDoc(aDoc, "Name"));
+        liststr << firstrow;
         bool ok;
         listitem->setData(getAppIconFromAppId(TUid::Uid(aDoc->docId().toInt(
                 &ok, 16))), Qt::DecorationRole);
@@ -569,25 +545,21 @@
         }
     else if (aDoc->baseAppClass().contains("file"))
         {
-        firstrow.append(filterDoc(aDoc, "BaseName"));
+        firstrow.append(filterDoc(aDoc, "Name"));
         if (firstrow.length() == 0)
             firstrow = aDoc->baseAppClass();
         liststr << firstrow << secondrow;
         listitem->setData(mIconArray.at(9), Qt::DecorationRole);
         }
-
     listitem->setData(liststr, Qt::DisplayRole);
     listitem->setData(aDoc->docId(), Qt::UserRole);
     listitem->setData(aDoc->baseAppClass(), Qt::UserRole + 1);
-
     mModel->appendRow(listitem);
-
     delete aDoc;
     }
 // ---------------------------------------------------------------------------
 // SearchProgressiveState::getSettingCategory
 // ---------------------------------------------------------------------------
-//
 void SearchProgressiveState::getSettingCategory(int item, bool avalue)
     {
     mSelectedCategory.insert(item, avalue);
@@ -595,7 +567,6 @@
 // ---------------------------------------------------------------------------
 // SearchProgressiveState::getrowsInserted
 // ---------------------------------------------------------------------------
-//
 void SearchProgressiveState::getrowsInserted()
     {
     mResultparser++;
@@ -613,7 +584,6 @@
 // ---------------------------------------------------------------------------
 // SearchProgressiveState::getrowsRemoved
 // ---------------------------------------------------------------------------
-//
 void SearchProgressiveState::getrowsRemoved()
     {
     if (mModel->rowCount() != 0)
@@ -626,6 +596,9 @@
         if (mOriginalString.length())
             {
             mDatabasecount = 0;
+            /*mSearchString = "$prefix(\"";
+            mSearchString += mOriginalString;
+            mSearchString += "\")";*/
             mSearchString = mOriginalString;
             mSearchString.append('*');
             searchOnCategory(mSearchString);
@@ -635,200 +608,229 @@
 // ---------------------------------------------------------------------------
 // SearchProgressiveState::openResultitem
 // ---------------------------------------------------------------------------
-//
 void SearchProgressiveState::openResultitem(QModelIndex index)
     {
     QStandardItem* item = mModel->itemFromIndex(index);
-    QString baseclass = item->data(Qt::UserRole + 1).toString();
+    QList<QVariant> args;
+    bool t;
+    mRequest = NULL;
+    if (item->data(Qt::UserRole + 1).toString().contains("contact"))
+        {
+        mRequest = mAiwMgr->create("com.nokia.services.phonebookservices",
+                "Fetch", "open(int)", false);
 
-    QVariant retValue;
-    bool t;
-    if (baseclass.contains("contact"))
+        int uid = (item->data(Qt::UserRole)).toInt(&t);
+        args << uid;
+        }
+    else if (item->data(Qt::UserRole + 1).toString().contains("bookmark"))
         {
 
-        mRequest = mAiwMgr->create("com.nokia.services.phonebookservices",
-                "Fetch", "open(int)", false);
+        }
+    else if (item->data(Qt::UserRole + 1).toString().contains("calendar"))
+        {
+        QDir pluginDir = QDir(QString("z:/resource/qt/plugins/calendar"));
+        QPluginLoader *calAgandaViewerPluginLoader = new QPluginLoader(
+                pluginDir.absoluteFilePath(QString(
+                        "agendaeventviewerplugin.qtplugin")));
+
+        calAgandaViewerPluginInstance = qobject_cast<
+                EventViewerPluginInterface *> (
+                calAgandaViewerPluginLoader->instance());
+
+        connect(calAgandaViewerPluginInstance, SIGNAL(viewingCompleted()),
+                this, SLOT(_viewingCompleted()));
+
+        calAgandaViewerPluginInstance->viewEvent(
+                item->data(Qt::UserRole).toInt(),
+                EventViewerPluginInterface::ActionEditDelete, NULL);
+        }
+    else if (item->data(Qt::UserRole + 1).toString().contains("applications"))
+        {
+        TRAPD(err,
+                    {LaunchApplicationL(TUid::Uid((item->data(Qt::UserRole)).toString().toInt(&t, 16)));})
+        if (err == KErrNone)
+            {
+            }
+        }
+    else if (item->data(Qt::UserRole + 1).toString().contains("file"))
+        {
+        }
+    else if (item->data(Qt::UserRole + 1).toString().contains("video"))
+        {
+        mRequest = mAiwMgr->create("com.nokia.videos", "IVideoView",
+                "playMedia(QString)", false);
+
+        QString uid = getDrivefromMediaId(
+                item->data(Qt::UserRole + 2).toString());
+        uid.append(':');
+        uid.append(item->data(Qt::UserRole).toString());
+        args << uid;
+        }
+    else if (item->data(Qt::UserRole + 1).toString().contains("audio"))
+        {
+        QString uid = getDrivefromMediaId(
+                item->data(Qt::UserRole + 2).toString());
+        uid.append(':');
+        uid.append(item->data(Qt::UserRole).toString());
+        mRequest = mAiwMgr->create("musicplayer",
+                "com.nokia.symbian.IFileView", "view(QString)", false);
+        args << uid;
+        }
+    else if (item->data(Qt::UserRole + 1).toString().contains("image"))
+        {
+        QString uid = getDrivefromMediaId(
+                item->data(Qt::UserRole + 2).toString());
+        uid.append(':');
+        uid.append(item->data(Qt::UserRole).toString());
+        mRequest = mAiwMgr->create("com.nokia.services.media",
+                "com.nokia.symbian.IFileView", "view(QString)", false);
+        args << uid;
+        }
+    else if (item->data(Qt::UserRole + 1).toString().contains("notes"))
+        {
+        if (!notesEditor)
+            {
+            notesEditor = new NotesEditor(this);
+            }
+        notesEditor->edit(item->data(Qt::UserRole).toInt());
+        }
+    else if (item->data(Qt::UserRole + 1).toString().contains("msg"))
+        {
+        mRequest = mAiwMgr->create("com.nokia.services.hbserviceprovider",
+                "conversationview", "view(int)", false);
+
+        int uid = (item->data(Qt::UserRole)).toInt(&t);
+        args << uid;
+        }
+    if (mRequest)
+        {
         connect(mRequest, SIGNAL(requestOk(const QVariant&)), this,
                 SLOT(handleOk(const QVariant&)));
-        // Connect error handling signal or apply lastError function instead.
         connect(mRequest, SIGNAL(requestError(int,const QString&)), this,
-                SLOT(handleError(int,const QString&)));
-
-        if (!mRequest)
-            {
-            qDebug() << "AIW-ERROR: NULL request";
-            return;
-            }
-
-        int uid = (item->data(Qt::UserRole)).toInt(&t);
-        QList<QVariant> args;
-        args << uid;
+                SLOT(handleError(int,const QString&)));// Connect error handling signal or apply lastError function instead.
         mRequest->setArguments(args);
-        // Make the request
-        if (!mRequest->send())
+        if (!mRequest->send())// Make the request
             {
             qDebug() << "AIW-ERROR: Send failed" << mRequest->lastError();
             }
-        delete mRequest;
-
-        }
-    else if (baseclass.contains("msg"))
-        {
-        int uid = (item->data(Qt::UserRole)).toInt(&t);
-
-        mRequest = mAiwMgr->create("com.nokia.services.hbserviceprovider",
-                "conversationview", "view(qint64)", false);
-        connect(mRequest, SIGNAL(requestOk(const QVariant&)), this,
+        disconnect(mRequest, SIGNAL(requestOk(const QVariant&)), this,
                 SLOT(handleOk(const QVariant&)));
-        // Connect error handling signal or apply lastError function instead.
-        connect(mRequest, SIGNAL(requestError(int,const QString&)), this,
-                SLOT(handleError(int,const QString&)));
-
-        if (!mRequest)
-            {
-            qDebug() << "AIW-ERROR: NULL request";
-            return;
-            }
-
-        QList<QVariant> args;
-        args << uid;
-        retValue = mRequest->send();
-        delete mRequest;
+        disconnect(mRequest, SIGNAL(requestError(int,const QString&)), this,
+                SLOT(handleError(int,const QString&)));// Connect error handling signal or apply lastError function instead.
+        mRequest->deleteLater();
         }
-    else if (baseclass.contains("video"))
+    else
         {
-        QString uid = item->data(Qt::UserRole).toString();
-        mRequest = mAiwMgr->create("com.nokia.videos", "IVideoView",
-                "playMedia(QString)", false);
-        connect(mRequest, SIGNAL(requestOk(const QVariant&)), this,
-                SLOT(handleOk(const QVariant&)));
-        // Connect error handling signal or apply lastError function instead.
-        connect(mRequest, SIGNAL(requestError(int,const QString&)), this,
-                SLOT(handleError(int,const QString&)));
-
-        QList<QVariant> args;
-        args << uid;
-        retValue = mRequest->send();
-        delete mRequest;
+        qDebug() << "AIW-ERROR: NULL request";
+        return;
         }
-
     }
 // ---------------------------------------------------------------------------
 // SearchProgressiveState::handleOk
 // ---------------------------------------------------------------------------
-//
-void SearchProgressiveState::handleOk(const QVariant& /*var*/)
+void SearchProgressiveState::handleOk(const QVariant& var)
     {
-
+    Q_UNUSED(var);
     }
 // ---------------------------------------------------------------------------
 // SearchProgressiveState::handleError
 // ---------------------------------------------------------------------------
-//
-void SearchProgressiveState::handleError(int /*ret*/, const QString& /*var*/)
+void SearchProgressiveState::handleError(int ret, const QString& var)
     {
-
+    Q_UNUSED(ret);
+    Q_UNUSED(var);
     }
 // ---------------------------------------------------------------------------
 // SearchProgressiveState::createSuggestionLink
 // ---------------------------------------------------------------------------
-//
 void SearchProgressiveState::createSuggestionLink(bool aFlag)
     {
-    QStandardItem* listitem = new QStandardItem();    
-    QString htmlKeyword = QString("<u>%1</u>").arg(mOriginalString);
+    QStandardItem* listitem = new QStandardItem();   
     if (!aFlag)
         {
-        QString linkString = QString(hbTrId(
-                "txt_search_list_search_for_1_on_2").arg(htmlKeyword));
+        QString linkString = QString(hbTrId("txt_search_list_search_for_1").arg(mOriginalString));
         mLinkindex = mModel->rowCount();
         listitem->setData(linkString, Qt::DisplayRole);
- 
         mModel->appendRow(listitem);
         }
-
     }
 // ---------------------------------------------------------------------------
 // SearchProgressiveState::noResultsFound
 // ---------------------------------------------------------------------------
-//
 void SearchProgressiveState::noResultsFound(QString aKeyword)
     {
     if (aKeyword.length())
         {
         QStandardItem* listitem = new QStandardItem();
         QString noResultMsg = QString("<align=\"center\">" + hbTrId(
-                "txt_search_results_no_match_found"));
+                "txt_search_list_no_match_found"));
         listitem->setData(noResultMsg, Qt::DisplayRole);
         mModel->appendRow(listitem);
         }
-
     }
 // ---------------------------------------------------------------------------
 // SearchProgressiveState::clear
 // ---------------------------------------------------------------------------
-//
 void SearchProgressiveState::clear()
     {
     if (mModel)
         {
-        mModel->removeRows(0, mModel->rowCount());      
+        mModel->removeRows(0, mModel->rowCount());
         }
     }
 // ---------------------------------------------------------------------------
 // SearchProgressiveState::searchOnCategory
 // ---------------------------------------------------------------------------
-//
 void SearchProgressiveState::searchOnCategory(const QString aKeyword)
     {
 #ifdef OST_TRACE_COMPILER_IN_USE
-    if( mDatabasecount != 0 ){//Search just started.
+    if( mDatabasecount != 0 )
+        {//Search just started.
         PERF_CAT_UI_ENDLOG
-    }
+        }
     PERF_CAT_UI_TIME_RESTART
 #endif
     mResultparser = 0;
     mResultcount = 0;
     if (mDatabasecount < mTemplist.count())
         {
-        QString str = mTemplist.at(mDatabasecount);
-        if (str.contains("selectall"))
+        if (mTemplist.at(mDatabasecount).contains("selectall"))
             {
-            // mSearchHandler = mSearchHandlerList.at(0);
+            mSearchHandler = mSearchHandlerList.at(0);
             }
-        else if (str.contains("contact"))
+        else if (mTemplist.at(mDatabasecount).contains("contact"))
             {
             mSearchHandler = mSearchHandlerList.at(1);
             }
-        else if (str.contains("media"))
+        else if (mTemplist.at(mDatabasecount).contains("media"))
             {
             mSearchHandler = mSearchHandlerList.at(2);
             }
-        else if (str.contains("msg"))
+        else if (mTemplist.at(mDatabasecount).contains("msg"))
             {
             mSearchHandler = mSearchHandlerList.at(3);
             }
-        else if (str.contains("email"))
+        else if (mTemplist.at(mDatabasecount).contains("email"))
             {
             mSearchHandler = mSearchHandlerList.at(4);
             }
-        else if (str.contains("calendar"))
+        else if (mTemplist.at(mDatabasecount).contains("calendar"))
             {
             mSearchHandler = mSearchHandlerList.at(5);
             }
-        else if (str.contains("notes"))
+        else if (mTemplist.at(mDatabasecount).contains("notes"))
             {
             mSearchHandler = mSearchHandlerList.at(6);
             }
-        else if (str.contains("applications"))
+        else if (mTemplist.at(mDatabasecount).contains("applications"))
             {
             mSearchHandler = mSearchHandlerList.at(7);
             }
-        else if (str.contains("file"))
+        else if (mTemplist.at(mDatabasecount).contains("file"))
             {
             mSearchHandler = mSearchHandlerList.at(8);
             }
-        else if (str.contains("bookmark"))
+        else if (mTemplist.at(mDatabasecount).contains("bookmark"))
             {
             mSearchHandler = mSearchHandlerList.at(9);
             }
@@ -843,23 +845,20 @@
     else if (mDatabasecount >= mTemplist.count())
         {
         PERF_TOTAL_UI_ENDLOG
-        if (mListView->indexCount() == 0 && aKeyword.length() != 0)
+        if (mModel->rowCount() == 0 && aKeyword.length() != 0)
             {
             noResultsFound(mOriginalString);
             createSuggestionLink(0);
             }
         return;
         }
-
     }
 // ---------------------------------------------------------------------------
 // SearchProgressiveState::startNewSearch
 // ---------------------------------------------------------------------------
-//
 void SearchProgressiveState::startNewSearch(const QString &aKeyword)
     {
     PERF_CAT_TOTAL_TIME_RESTART
-
     mOriginalString = aKeyword.trimmed();
     for (int i = 0; i < mSearchHandlerList.count(); i++)
         {
@@ -873,6 +872,10 @@
         {
         mDatabasecount = 0;
         mLinkindex = 0;
+        //Prefix query
+        /*mSearchString = "$prefix(\"";
+        mSearchString += mOriginalString;
+        mSearchString += "\")";*/
         mSearchString = mOriginalString;
         mSearchString.append('*');
         searchOnCategory(mSearchString);
@@ -881,7 +884,6 @@
 // ---------------------------------------------------------------------------
 // SearchProgressiveState::setSettings
 // ---------------------------------------------------------------------------
-//
 void SearchProgressiveState::setSettings()
     {
     mTempSelectedCategory = mSelectedCategory;
@@ -890,7 +892,6 @@
 // ---------------------------------------------------------------------------
 // SearchProgressiveState::_customizeGoButton
 // ---------------------------------------------------------------------------
-//
 void SearchProgressiveState::_customizeGoButton(bool avalue)
     {
     if (mSearchPanel)
@@ -908,7 +909,6 @@
 // ---------------------------------------------------------------------------
 // SearchProgressiveState::settingsaction
 // ---------------------------------------------------------------------------
-//
 void SearchProgressiveState::settingsaction(bool avalue)
     {
     if (avalue)
@@ -919,11 +919,7 @@
             {
             i.next();
             j.next();
-            if (i.value() == j.value())
-                {
-
-                }
-            else
+            if (i.value() != j.value())
                 {
                 startNewSearch(mOriginalString);
                 break;
@@ -934,11 +930,11 @@
 // ---------------------------------------------------------------------------
 // SearchProgressiveState::setSelectedCategories
 // ---------------------------------------------------------------------------
-//
 void SearchProgressiveState::setSelectedCategories()
     {
     mTemplist.clear();
     QMapIterator<int, bool> i(mSelectedCategory);
+    bool isrootsearch = false;
     while (i.hasNext())
         {
         i.next();
@@ -948,7 +944,8 @@
                 {
                 case 0:
                     {
-                    //mTemplist.append("selectall");
+                    isrootsearch = true;
+                    // mTemplist.append("selectall");
                     break;
                     }
                 case 1: //Contacts
@@ -991,11 +988,17 @@
                 }
             }
         }
+    if (mTemplist.count() == 8)
+        isrootsearch = true;
+    if (isrootsearch)
+        {
+        mTemplist.clear();
+        mTemplist.append("selectall");
+        }
     }
 // ---------------------------------------------------------------------------
 // SearchProgressiveState::cancelSearch
 // ---------------------------------------------------------------------------
-//
 void SearchProgressiveState::cancelSearch()
     {
     for (int i = 0; i < mSearchHandlerList.count(); i++)
@@ -1006,7 +1009,6 @@
 // ---------------------------------------------------------------------------
 // SearchProgressiveState::getAppIconFromAppId
 // ---------------------------------------------------------------------------
-//
 HbIcon SearchProgressiveState::getAppIconFromAppId(TUid auid)
     {
     HbIcon icon;
@@ -1014,7 +1016,6 @@
     CFbsBitmap* bitmap = NULL;
     CFbsBitmap* mask = NULL;
     QPixmap pixmap;
-
     MAknsSkinInstance* skin = AknsUtils::SkinInstance();
     if (skin)
         {
@@ -1033,17 +1034,15 @@
                         aknIcon->SetMask(mask);});
             if (err1 == KErrNone)
                 {
-
                 }
             }
         }
     if (aknIcon)
-        {       
+        {
         //need to disable compression to properly convert the bitmap
         AknIconUtils::DisableCompression(aknIcon->Bitmap());
-
-        AknIconUtils::SetSize(aknIcon->Bitmap(), TSize(
-                defaultIconSize.width(), defaultIconSize.height()),
+        AknIconUtils::SetSize(aknIcon->Bitmap(), TSize(mListViewIconSize.width(),
+                mListViewIconSize.height()),
                 EAspectRatioPreservedAndUnusedSpaceRemoved);
         if (aknIcon->Bitmap()->Header().iCompression == ENoBitmapCompression)
             {
@@ -1067,14 +1066,10 @@
                             pixmap.setAlphaChannel(mask);});
                 if (err1 == KErrNone)
                     {
-
                     }
                 }
-
             }
-
-        pixmap = pixmap.scaled(defaultIconSize,
-                Qt::KeepAspectRatioByExpanding);
+        pixmap = pixmap.scaled(mListViewIconSize, Qt::KeepAspectRatioByExpanding);
         icon = HbIcon(QIcon(pixmap));
         }
     return icon;
@@ -1082,7 +1077,6 @@
 // ---------------------------------------------------------------------------
 // SearchProgressiveState::TDisplayMode2Format
 // ---------------------------------------------------------------------------
-//
 QImage::Format SearchProgressiveState::TDisplayMode2Format(TDisplayMode mode)
     {
     QImage::Format format;
@@ -1122,19 +1116,15 @@
 // ---------------------------------------------------------------------------
 // SearchProgressiveState::fromSymbianCFbsBitmap
 // ---------------------------------------------------------------------------
-//
 QPixmap SearchProgressiveState::fromSymbianCFbsBitmap(CFbsBitmap *aBitmap)
     {
     aBitmap->BeginDataAccess();
     uchar *data = (uchar *) aBitmap->DataAddress();
     TSize size = aBitmap->SizeInPixels();
     TDisplayMode displayMode = aBitmap->DisplayMode();
-
-    // QImage format must match to bitmap format
     QImage image(data, size.iWidth, size.iHeight, TDisplayMode2Format(
-            displayMode));
+            displayMode));// QImage format must match to bitmap format
     aBitmap->EndDataAccess();
-
     // No data copying happens because image format matches native OpenVG format.
     // So QPixmap actually points to CFbsBitmap data.
     return QPixmap::fromImage(image);
@@ -1142,7 +1132,6 @@
 // ---------------------------------------------------------------------------
 // SearchProgressiveState::copyBitmapLC
 // ---------------------------------------------------------------------------
-//
 CFbsBitmap *SearchProgressiveState::copyBitmapLC(CFbsBitmap *input)
     {
     CFbsBitmap *bmp = new (ELeave) CFbsBitmap();
@@ -1160,7 +1149,6 @@
 // ---------------------------------------------------------------------------
 // SearchProgressiveState::filterDoc
 // ---------------------------------------------------------------------------
-//
 QString SearchProgressiveState::filterDoc(const QCPixDocument* aDoc,
         const QString& filter)
     {
@@ -1173,3 +1161,132 @@
         }
     return NULL;
     }
+// ---------------------------------------------------------------------------
+// SearchProgressiveState::filterDoc
+// ---------------------------------------------------------------------------
+QStringList SearchProgressiveState::filterDoc(const QCPixDocument* aDoc,
+        const QString& filter1, const QString& filter2,
+        const QString& filter3)
+    {
+    QStringList docList;
+    docList.append(QString());
+    docList.append(QString());
+    docList.append(QString());
+    bool bfilter1 = false;
+    bool bfilter2 = false;
+    bool bfilter3 = false;
+    if (!filter3.length())
+        {
+        bfilter3 = true;
+        }
+    for (int i = 0; i < aDoc->fieldCount(); i++)
+        {
+        if (!bfilter1 && aDoc->field(i).name().contains(filter1))
+            {
+            docList.replace(0, aDoc->field(i).value());
+            bfilter1 = true;
+            }
+        if (!bfilter2 && aDoc->field(i).name().contains(filter2))
+            {
+            docList.replace(1, aDoc->field(i).value());
+            bfilter2 = true;
+            }
+        if (!bfilter3 && aDoc->field(i).name().contains(filter3))
+            {
+            docList.replace(2, aDoc->field(i).value());
+            bfilter3 = true;
+            }
+        if (bfilter1 && bfilter2 && bfilter3)
+            break;
+        }
+    return docList;
+    }
+// ---------------------------------------------------------------------------
+// SearchProgressiveState::getDrivefromMediaId
+// ---------------------------------------------------------------------------
+QString SearchProgressiveState::getDrivefromMediaId(QString aMediaId)
+    {
+    TBuf<15> mediaIdBuf(aMediaId.utf16());
+    if (KErrNone == iFs.Connect())
+        {
+        TUint mediaNum;
+        TVolumeInfo vmInfo;
+        TChar driveLetter;
+        TLex lex(mediaIdBuf);
+        lex.Val(mediaNum);
+        TDriveNumber drive = TDriveNumber(KErrNotSupported);
+
+        for (TInt i = 0; i <= EDriveZ; i++)
+            {
+            TInt err = iFs.Volume(vmInfo, i);// Volume() returns KErrNotReady if no volume present.       
+            if (err != KErrNotReady)// In this case, check next drive number
+                {
+                if (vmInfo.iUniqueID == mediaNum)
+                    {
+                    drive = TDriveNumber(i);//Is the drive
+                    if (KErrNone == iFs.DriveToChar(drive, driveLetter))
+                        {
+                        mediaIdBuf.Zero();
+                        mediaIdBuf.Append(driveLetter);
+                        mediaIdBuf.LowerCase();
+                        }
+                    break;
+                    }
+                }
+            }
+        iFs.Close();
+        }
+    return QString::fromUtf16(mediaIdBuf.Ptr(), mediaIdBuf.Length());
+    }
+// ---------------------------------------------------------------------------
+// SearchProgressiveState::LaunchApplicationL
+// ---------------------------------------------------------------------------
+void SearchProgressiveState::LaunchApplicationL(const TUid aUid)
+    {
+    RWsSession wsSession;
+    User::LeaveIfError(wsSession.Connect());
+    CleanupClosePushL<RWsSession> (wsSession);
+    CAknTaskList *taskList = CAknTaskList::NewL(wsSession);
+    TApaTask task = taskList->FindRootApp(aUid);
+    delete taskList;
+    if (task.Exists())
+        {
+        task.BringToForeground();
+        }
+    else
+        {
+        TApaAppInfo appInfo;
+        TApaAppCapabilityBuf capabilityBuf;
+        RApaLsSession appArcSession;
+        User::LeaveIfError(appArcSession.Connect());
+        CleanupClosePushL<RApaLsSession> (appArcSession);
+        User::LeaveIfError(appArcSession.GetAppInfo(appInfo, aUid));
+        User::LeaveIfError(
+                appArcSession.GetAppCapability(capabilityBuf, aUid));
+        TApaAppCapability &caps = capabilityBuf();
+        TFileName appName = appInfo.iFullName;
+        CApaCommandLine *cmdLine = CApaCommandLine::NewLC();
+        cmdLine->SetExecutableNameL(appName);
+        if (caps.iLaunchInBackground)
+            {
+            cmdLine->SetCommandL(EApaCommandBackground);
+            }
+        else
+            {
+            cmdLine->SetCommandL(EApaCommandRun);
+            }
+        //cmdLine->SetTailEndL(aParam);
+        User::LeaveIfError(appArcSession.StartApp(*cmdLine));
+        CleanupStack::PopAndDestroy(cmdLine);
+        CleanupStack::PopAndDestroy(&appArcSession);
+        }
+    CleanupStack::PopAndDestroy(&wsSession);
+    }
+// ---------------------------------------------------------------------------
+// SearchProgressiveState::_viewingCompleted
+// ---------------------------------------------------------------------------
+void SearchProgressiveState::_viewingCompleted()
+    {
+    if (calAgandaViewerPluginInstance)
+        calAgandaViewerPluginInstance->deleteLater();
+    }