searchui/stateproviders/searchstateprovider/src/searchprogressivestate.cpp
changeset 15 df6898e696c6
parent 13 0a2ec6860a93
child 16 e918432ddd92
--- a/searchui/stateproviders/searchstateprovider/src/searchprogressivestate.cpp	Mon Jul 12 00:27:06 2010 +0530
+++ b/searchui/stateproviders/searchstateprovider/src/searchprogressivestate.cpp	Mon Jul 26 12:45:04 2010 +0530
@@ -16,18 +16,17 @@
  */
 #include "searchprogressivestate.h"
 #include "indevicehandler.h"
-#include <qcpixdocument.h>
-#include <qcpixdocumentfield.h>
+#include "searchuiloader.h"
+#include <cpixdocument.h>
+#include <cpixdocumentfield.h>
 #include <hbmainwindow.h>
 #include <hbview.h>
 #include <hblabel.h>
 #include <hbicon.h>
 #include <hbmenu.h>
 #include <hbinstance.h>
-#include <hbdocumentloader.h>
 #include <hbsearchpanel.h>
 #include <hbaction.h>
-#include <hbframebackground.h>
 #include <hbapplication.h>
 #include <qsortfilterproxymodel.h>
 #include <AknsUtils.h>
@@ -53,80 +52,38 @@
 #include <hblistwidgetitem.h>
 #include <hbabstractviewitem.h>
 #include <hblistviewitem.h>
+#include <hbactivitymanager.h>
 #define hbApp qobject_cast<HbApplication*>(qApp)
-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 int totalcategories = 10;
+const int totalcategories_normalreason = 10;
+const int totalcategories_activityreasonreason = 13;
 // ---------------------------------------------------------------------------
 // SearchProgressiveState::SearchProgressiveState
 // ---------------------------------------------------------------------------
 SearchProgressiveState::SearchProgressiveState(QState *parent) :
     QState(parent), mMainWindow(NULL), mView(NULL), mListView(NULL),
-            mDocumentLoader(NULL), mSearchHandler(NULL), mNotesEditor(0),
-            mAiwMgr(0), mRequest(0)
+            mSearchHandler(NULL), mNotesEditor(0), mAiwMgr(0), mRequest(0)
     {
 
     mMainWindow = hbInstance->allMainWindows().at(0);
 
     mAiwMgr = new XQApplicationManager;
 
-    mDocumentLoader = new HbDocumentLoader();
-    bool ok = false;
-    mDocumentLoader->load(SEARCHSTATEPROVIDER_DOCML, &ok);
-
-    QGraphicsWidget *widget = mDocumentLoader->findWidget(TOC_VIEW);
-    Q_ASSERT_X(ok && (widget != 0), "TOC_VIEW", "invalid view");
+    mUiLoader = SearchUiLoader::instance();
 
-    mView = qobject_cast<HbView*> (widget);
-    if (mView)
-        {
-        mView->setTitle(hbTrId("txt_search_title_search"));
-        }
-
-    mListView = qobject_cast<HbListWidget *> (mDocumentLoader->findWidget(
-            TUT_LIST_VIEW));
-    Q_ASSERT_X(ok && (mListView != 0), "TUT_LIST_VIEW", "invalid viewocML file");
+    mView = mUiLoader->View();
+    mListView = mUiLoader->ListWidget();
+    mSearchPanel = mUiLoader->SearchPanel();
 
-    if (mListView)
-        {
-        HbAbstractViewItem *prototype = mListView->itemPrototypes().first();
-        HbFrameBackground frame;
-        frame.setFrameGraphicsName("qtg_fr_list_normal");
-        frame.setFrameType(HbFrameDrawer::NinePieces);
-        prototype->setDefaultFrame(frame);
+    HbStyle style;
+    qreal x;
+    style.parameter("hb-param-graphic-size-primary-large", x);
+    QSizeF size(x, x);
+    mListViewIconSize = size.toSize();
 
-        HbListViewItem *prototypeListView = qobject_cast<HbListViewItem *> (
-                prototype);
-        prototypeListView->setGraphicsSize(HbListViewItem::LargeIcon);
-        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);
-            }
-
-        HbAbstractItemView::ItemAnimations noCreationAndRemovalAnimations =
-                HbAbstractItemView::All;
-        noCreationAndRemovalAnimations ^= HbAbstractItemView::Appear;
-        noCreationAndRemovalAnimations ^= HbAbstractItemView::Disappear;
-        mListView->setEnabledAnimations(noCreationAndRemovalAnimations);
-        }
-
-    mSearchPanel = qobject_cast<HbSearchPanel *> (
-            mDocumentLoader->findWidget(TUT_SEARCHPANEL_WIDGET));
     if (mSearchPanel)
         {
-        mSearchPanel->setSearchOptionsEnabled(true);
-
         mSearchPanel->setPlaceholderText(hbTrId(
                 "txt_search_dialog_search_device"));
-
-        mSearchPanel->setCancelEnabled(false);
         mSearchPanel->setFocus();
         }
 
@@ -143,24 +100,12 @@
     mResultparser = 0;
     loadSettings = true;
 
-    //Icon creation in array
-    QList<TUid> appUid;
-    appUid.append(TUid::Uid(0x20022EF9));//contact
-    appUid.append(TUid::Uid(0x10207C62));//audio
-    appUid.append(TUid::Uid(0x200211FE));//video 
-    appUid.append(TUid::Uid(0x20000A14));//image 
-    appUid.append(TUid::Uid(0x2001FE79));//msg
-    appUid.append(TUid::Uid(0x200255BA));//email 
-    appUid.append(TUid::Uid(0x10005901));//calender
-    appUid.append(TUid::Uid(0x20029F80));//notes
-    //appUid.Append(TUid::Uid(0x20022F35));//application
-    appUid.append(TUid::Uid(0x10008D39));//bookmark
-    appUid.append(TUid::Uid(0x2002BCC0));//files
+    if (hbApp)
+        {
+        connect(hbApp->activityManager(), SIGNAL(activityRequested(QString)),
+                this, SLOT(activityRequested(QString)));
+        }
 
-    for (int i = 0; i < appUid.count(); i++)
-        {
-        TRAP_IGNORE(mIconArray.append(getAppIconFromAppIdL(appUid.at(i))));
-        }
 #ifdef OST_TRACE_COMPILER_IN_USE 
     //start() the timers to avoid worrying abt having to start()/restart() later
     m_categorySearchApiTime.start();
@@ -188,6 +133,10 @@
         }
 
     mOnlineQueryAvailable = false;
+    //Prepare the icons,listen of theme change    
+    connect(hbInstance->theme(), SIGNAL(changeFinished()), this,
+            SLOT(slotPrepareResultIcons()));
+    slotPrepareResultIcons();    
     }
 // ---------------------------------------------------------------------------
 // SearchProgressiveState::~SearchProgressiveState
@@ -198,10 +147,6 @@
         {
         delete mAiwMgr;
         }
-    if (mDocumentLoader)
-        {
-        delete mDocumentLoader;
-        }
     for (int i = 0; i < mSearchHandlerList.count(); i++)
         {
         delete mSearchHandlerList.at(i);
@@ -211,14 +156,21 @@
         mNotespluginLoader->unload();
         delete mNotespluginLoader;
         }
+    SearchUiLoader::deleteinstance();
     }
 // ---------------------------------------------------------------------------
 // SearchProgressiveState::constructHandlers
 // ---------------------------------------------------------------------------
 void SearchProgressiveState::constructHandlers()
     {
+    int categories = totalcategories_normalreason;
+
+    if (hbApp && hbApp->activateReason() == Hb::ActivationReasonActivity)
+        {
+        categories = totalcategories_activityreasonreason;
+        }
     InDeviceHandler* handler = NULL;
-    for (int i = 0; i < totalcategories; i++)
+    for (int i = 0; i < categories; i++)
         {
         handler = new InDeviceHandler();
         switch (i)
@@ -273,6 +225,21 @@
                 handler->setCategory("bookmark");
                 break;
                 }
+            case 10:
+                {
+                handler->setCategory("media image");
+                break;
+                }
+            case 11:
+                {
+                handler->setCategory("media audio");
+                break;
+                }
+            case 12:
+                {
+                handler->setCategory("media video");
+                break;
+                }
             }
         mSearchHandlerList.append(handler);
         }
@@ -284,8 +251,19 @@
     {
     //  WMS_LOG << "::onEntry";
     QState::onEntry(event);
+
+    mStateStatus = true;// used for conditional execution for the slots that are connected as transitions
+    if (mSearchPanel)
+        {
+        mSearchPanel->setPlaceholderText(hbTrId(
+                "txt_search_dialog_search_device"));
+        mSearchPanel->setProgressive(true);
+        }
+    if (mListView)
+        {
+        mListView->setVisible(true);
+        }
     activateSignals();
-
     // If this is not the current view, we're getting back from plugin view  
     if (mMainWindow)
         {
@@ -313,7 +291,8 @@
 void SearchProgressiveState::onExit(QEvent *event)
     {
     QState::onExit(event);
-    deActivateSignals();
+    mStateStatus = false;
+    deActivateSignals();    
     }
 // ---------------------------------------------------------------------------
 // SearchProgressiveState::activateSignals
@@ -326,8 +305,8 @@
                 SIGNAL(handleAsyncSearchResult(int,int)), this,
                 SLOT(onAsyncSearchComplete(int,int)));
         connect(mSearchHandlerList.at(i),
-                SIGNAL(handleDocument(int,QCPixDocument*)), this,
-                SLOT(onGetDocumentComplete(int,QCPixDocument*)));
+                SIGNAL(handleDocument(int,CpixDocument*)), this,
+                SLOT(onGetDocumentComplete(int,CpixDocument*)));
         }
     if (mListView)
         {
@@ -341,9 +320,7 @@
         connect(mSearchPanel, SIGNAL(searchOptionsClicked()), this,
                 SLOT(setSettings()));
         }
-
     connect(mMainWindow, SIGNAL(viewReady()), this, SLOT(viewReady()));
-
     }
 // ---------------------------------------------------------------------------
 // SearchProgressiveState::deActivateSignals
@@ -356,8 +333,8 @@
                 SIGNAL(handleAsyncSearchResult(int,int)), this,
                 SLOT(onAsyncSearchComplete(int,int)));
         disconnect(mSearchHandlerList.at(i),
-                SIGNAL(handleDocument(int,QCPixDocument*)), this,
-                SLOT(onGetDocumentComplete(int,QCPixDocument*)));
+                SIGNAL(handleDocument(int,CpixDocument*)), this,
+                SLOT(onGetDocumentComplete(int,CpixDocument*)));
         }
     if (mListView)
         {
@@ -404,12 +381,11 @@
 // SearchProgressiveState::onGetDocumentComplete
 // ---------------------------------------------------------------------------
 void SearchProgressiveState::onGetDocumentComplete(int aError,
-        QCPixDocument* aDoc)
+        CpixDocument* aDoc)
     {
     PERF_CAT_GETDOC_TIME_ACCUMULATE
     if (aDoc == NULL || aError != 0)
         return;
-    QStringList liststr;
     QString secondrow = aDoc->excerpt();
     QString firstrow;
     HbListWidgetItem* listitem = new HbListWidgetItem();
@@ -431,7 +407,6 @@
             {
             firstrow = hbTrId("txt_phob_dblist_unnamed");
             }
-        liststr << firstrow << secondrow;
         listitem->setData(mIconArray.at(0), Qt::DecorationRole);
         }
     else if (aDoc->baseAppClass().contains("audio"))
@@ -445,7 +420,6 @@
             {
             firstrow = hbTrId("txt_mus_dblist_val_unknown4");
             }
-        liststr << firstrow << secondrow;
         listitem->setData(mIconArray.at(1), Qt::DecorationRole);
         if (audioList.value(1, "").length())
             {
@@ -463,7 +437,6 @@
             {
             firstrow.append(videoList.at(2));
             }
-        liststr << firstrow << secondrow;
         listitem->setData(mIconArray.at(2), Qt::DecorationRole);
         if (videoList.value(1, "").length())
             {
@@ -477,7 +450,6 @@
             {
             firstrow.append(imageList.at(0));
             }
-        liststr << firstrow << secondrow;
         listitem->setData(mIconArray.at(3), Qt::DecorationRole);
         if (imageList.value(1, "").length())
             {
@@ -486,16 +458,11 @@
         }
     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"))
@@ -510,9 +477,8 @@
             if (msgList.value(1, "").length())
                 firstrow.append(msgList.at(1));
             }
-        liststr << firstrow << secondrow;
         listitem->setData(mIconArray.at(4), Qt::DecorationRole);
-        } 
+        }
     else if (aDoc->baseAppClass().contains("calendar"))
         {
         firstrow.append(filterDoc(aDoc, "Summary"));
@@ -520,8 +486,6 @@
             {
             firstrow = hbTrId("txt_calendar_preview_unnamed");
             }
-
-        liststr << firstrow << secondrow;
         listitem->setData(mIconArray.at(6), Qt::DecorationRole);
         }
     else if (aDoc->baseAppClass().contains("notes"))
@@ -531,13 +495,11 @@
             {
             firstrow = hbTrId("txt_notes_dblist_unnamed");
             }
-        liststr << firstrow << secondrow;
         listitem->setData(mIconArray.at(7), Qt::DecorationRole);
         }
     else if (aDoc->baseAppClass().contains("applications"))
         {
         firstrow.append(filterDoc(aDoc, "Name"));
-        liststr << firstrow;
         bool ok;
         TRAP_IGNORE(listitem->setData(getAppIconFromAppIdL(TUid::Uid(aDoc->docId().toInt(
                                                 &ok, 16))), Qt::DecorationRole));
@@ -549,17 +511,56 @@
             {
             firstrow = "UnKnown";
             }
-        liststr << firstrow << secondrow;
         listitem->setData(secondrow, Qt::UserRole + 2);
         listitem->setData(mIconArray.at(8), Qt::DecorationRole);
         }
+    else if (aDoc->baseAppClass().contains("file folder"))
+        {
+        bool ok;
+        QStringList fileList = filterDoc(aDoc, "Name", "IsFolder",
+                "Extension");
+        firstrow = fileList.at(0);
+        if (fileList.at(1).toInt(&ok) == 1) // folder result icon map 
+            {
+            listitem->setData(mIconArray.at(13), Qt::DecorationRole);
+            }
+        else
+            {
+            if (fileList.at(2).contains("sis", Qt::CaseInsensitive)
+                    || fileList.at(1).contains("sisx", Qt::CaseInsensitive))
+                {
+                listitem->setData(mIconArray.at(10), Qt::DecorationRole);
+                }
+            else if (fileList.at(2).contains("java", Qt::CaseInsensitive)
+                    || fileList.at(2).contains("jar", Qt::CaseInsensitive)
+                    || fileList.at(2).contains("jad", Qt::CaseInsensitive))
+                {
+                listitem->setData(mIconArray.at(11), Qt::DecorationRole);
+                }
+            else if (fileList.at(2).contains("swf", Qt::CaseInsensitive))
+                {
+                listitem->setData(mIconArray.at(12), Qt::DecorationRole);
+                }
+            else
+                {
+                listitem->setData(mIconArray.at(14), Qt::DecorationRole);
+                }
+            }
+        }
     else if (aDoc->baseAppClass().contains("file"))
         {
-        firstrow.append(filterDoc(aDoc, "Name"));
+        QStringList fileList = filterDoc(aDoc, "Name", "Extension");
+        firstrow = fileList.at(0);
         if (firstrow.length() == 0)
             firstrow = aDoc->baseAppClass();
-        liststr << firstrow << secondrow;
-        listitem->setData(mIconArray.at(9), Qt::DecorationRole);
+        if (fileList.at(1).contains("txt", Qt::CaseInsensitive))
+            {
+            listitem->setData(mIconArray.at(9), Qt::DecorationRole);
+            }
+        else
+            {
+            listitem->setData(mIconArray.at(14), Qt::DecorationRole);
+            }
         }
     listitem->setText(firstrow);
     listitem->setSecondaryText(secondrow);
@@ -681,8 +682,8 @@
     else if (item->data(Qt::UserRole + 1).toString().contains("msg"))
         {
         PERF_RESULT_ITEM_FOR_LAUNCHING("msg")
-        mRequest = mAiwMgr->create("com.nokia.services.hbserviceprovider",
-                "conversationview", "view(int)", true);
+        mRequest = mAiwMgr->create("messaging",
+                "com.nokia.symbian.IMessageView", "view(int)", true);
 
         int uid = (item->data(Qt::UserRole)).toInt(&t);
         args << uid;
@@ -796,6 +797,18 @@
             {
             mSearchHandler = mSearchHandlerList.at(1);
             }
+        else if (mTemplist.at(mDatabasecount).contains("image"))
+            {
+            mSearchHandler = mSearchHandlerList.at(10);
+            }
+        else if (mTemplist.at(mDatabasecount).contains("audio"))
+            {
+            mSearchHandler = mSearchHandlerList.at(11);
+            }
+        else if (mTemplist.at(mDatabasecount).contains("video"))
+            {
+            mSearchHandler = mSearchHandlerList.at(12);
+            }
         else if (mTemplist.at(mDatabasecount).contains("media"))
             {
             mSearchHandler = mSearchHandlerList.at(2);
@@ -830,7 +843,7 @@
             }
         // mSearchHandler->setCategory(mTemplist.at(mDatabasecount));
         mDatabasecount++;
-        if (mSearchHandler->isPrepared())
+        if (mSearchHandler != NULL && mSearchHandler->isPrepared())
             {
             PERF_CAT_API_TIME_RESTART
             mSearchHandler->searchAsync(aKeyword, "_aggregate");
@@ -895,7 +908,7 @@
 // ---------------------------------------------------------------------------
 void SearchProgressiveState::settingsaction(bool avalue)
     {
-    if (avalue)
+    if (avalue && mStateStatus)
         {
         QMapIterator<int, bool> i(mTempSelectedCategory);
         QMapIterator<int, bool> j(mSelectedCategory);
@@ -1042,7 +1055,6 @@
         CleanupStack::PopAndDestroy(apaMaskedBitmap);
         }
     CleanupStack::PopAndDestroy(&apaLsSession);
-
     if (icon.isNull() || !(icon.size().isValid()))
         icon = HbIcon("qtg_large_application");
     return icon;
@@ -1055,7 +1067,6 @@
     {
     CFbsBitmap *bitamp(0);
     CFbsBitmap *mask(0);
-
     if (AknIconUtils::IsMifFile(fileName))
         {
         // SVG icon
@@ -1068,17 +1079,13 @@
         AknIconUtils::CreateIconLC(bitamp, mask, fileName, bitmapIndex,
                 maskIndex);
         }
-
     AknIconUtils::DisableCompression(bitamp);
     AknIconUtils::SetSize(bitamp, TSize(size.width(), size.height()),
             EAspectRatioPreservedAndUnusedSpaceRemoved);
-
     AknIconUtils::DisableCompression(mask);
     AknIconUtils::SetSize(mask, TSize(size.width(), size.height()),
             EAspectRatioPreservedAndUnusedSpaceRemoved);
-
     fromBitmapAndMaskToPixmapL(bitamp, mask, pixmap);
-
     // bitmap and icon, AknsUtils::CreateIconLC doesn't specify the order
     CleanupStack::Pop(2);
     }
@@ -1182,7 +1189,7 @@
 // ---------------------------------------------------------------------------
 // SearchProgressiveState::filterDoc
 // ---------------------------------------------------------------------------
-QString SearchProgressiveState::filterDoc(const QCPixDocument* aDoc,
+QString SearchProgressiveState::filterDoc(const CpixDocument* aDoc,
         const QString& filter)
     {
     for (int i = 0; i < aDoc->fieldCount(); i++)
@@ -1197,7 +1204,7 @@
 // ---------------------------------------------------------------------------
 // SearchProgressiveState::filterDoc
 // ---------------------------------------------------------------------------
-QStringList SearchProgressiveState::filterDoc(const QCPixDocument* aDoc,
+QStringList SearchProgressiveState::filterDoc(const CpixDocument* aDoc,
         const QString& filter1, const QString& filter2,
         const QString& filter3)
     {
@@ -1330,24 +1337,121 @@
 // ---------------------------------------------------------------------------
 void SearchProgressiveState::viewReady()
     {
+
     if (hbApp)
         {
         if (hbApp->activateReason() == Hb::ActivationReasonActivity)
             {
             QVariantHash params = hbApp->activateParams();
             QString searchKey = params.value("query").toString();
+            params.remove("query");
+            params.remove("activityname");
+            QList<QVariant> list = params.values();
+            mTemplist.clear();
+            for (int i = 0; i < list.count(); i++)
+                {
+                QString str = list.at(i).toString();
+                if (!str.isNull())
+                    mTemplist.append(str);
+                }
             if (searchKey.length() > 0)
                 mSearchPanel->setCriteria(searchKey);
             }
         }PERF_APP_LAUNCH_END("SearchAppplication View is ready");
-     emit applicationReady();
+    emit applicationReady();
     }
+// ---------------------------------------------------------------------------
+// SearchProgressiveState::slotOnlineQuery
+// ---------------------------------------------------------------------------
 void SearchProgressiveState::slotOnlineQuery(QString str)
     {
-    mOriginalString = str;
-    mOnlineQueryAvailable = true;
+    if (mOriginalString != str)
+        {
+        mOriginalString = str;
+        mOnlineQueryAvailable = true;
+        }
     }
+// ---------------------------------------------------------------------------
+// SearchProgressiveState::slotISProvidersIcon
+// ---------------------------------------------------------------------------
 void SearchProgressiveState::slotISProvidersIcon(int id, HbIcon icon)
     {
     mISprovidersIcon.insert(id, icon);
     }
+// ---------------------------------------------------------------------------
+// SearchProgressiveState::slotPrepareResultIcons
+// ---------------------------------------------------------------------------
+void SearchProgressiveState::slotPrepareResultIcons()
+    {
+    //Icon creation in array
+    QStringList icons;
+    icons << "qtg_large_phonebook" << "qtg_large_tone" << "qtg_large_video"
+            << "qtg_large_photos" << "qtg_large_message" << "qtg_large_email"
+            << "qtg_large_calendar" << "qtg_large_notes"
+            << "qtg_large_web_link" << "qtg_large_text" << "qtg_large_sisx"
+            << "qtg_large_java" << "qtg_large_flash" << "qtg_large_folder"
+            << "qtg_large_query";
+    mIconArray.clear();
+    for (int i = 0; i < icons.count(); i++)
+        {
+        HbIcon icon(icons.at(i));
+        if (icon.isNull() || !(icon.size().isValid()))
+            icon = HbIcon("qtg_large_application");
+        mIconArray.append(icon);
+        }
+    /*QList<TUid> appUid;
+     appUid.append(TUid::Uid(0x20022EF9));//contact
+     appUid.append(TUid::Uid(0x10207C62));//audio
+     appUid.append(TUid::Uid(0x200211FE));//video 
+     appUid.append(TUid::Uid(0x20000A14));//image 
+     appUid.append(TUid::Uid(0x2001FE79));//msg
+     appUid.append(TUid::Uid(0x200255BA));//email 
+     appUid.append(TUid::Uid(0x10005901));//calender
+     appUid.append(TUid::Uid(0x20029F80));//notes
+     //appUid.Append(TUid::Uid(0x20022F35));//application
+     appUid.append(TUid::Uid(0x10008D39));//bookmark
+     appUid.append(TUid::Uid(0x2002BCC0));//files
+
+     for (int i = 0; i < appUid.count(); i++)
+     {
+     TRAP_IGNORE(mIconArray.append(getAppIconFromAppIdL(appUid.at(i))));
+     }*/
+    }
+// ---------------------------------------------------------------------------
+// SearchProgressiveState::activityRequested
+// ---------------------------------------------------------------------------
+void SearchProgressiveState::activityRequested(const QString &name)
+    {
+    /* when search application is launched in normal and then supporting for activity uri
+     * for normal search launching "media" is used instead of "media image","media audio","media video" 
+     */
+    if (mSearchHandlerList.count() != totalcategories_activityreasonreason)
+        {
+        InDeviceHandler* handler = NULL;
+        handler->setCategory("media image");
+        mSearchHandlerList.append(handler);
+        handler->setCategory("media audio");
+        mSearchHandlerList.append(handler);
+        handler->setCategory("media video");
+        mSearchHandlerList.append(handler);
+        }
+    if (name == "SearchDeviceQueryView")
+        {
+        QVariantHash params = hbApp->activateParams();
+        QString searchKey = params.value("query").toString();
+        int i = params.count();
+        params.remove("query");
+        params.remove("activityname");
+        QList<QVariant> list = params.values();
+        int j = list.count();
+        mTemplist.clear();
+        for (int i = 0; i < list.count(); i++)
+            {
+            QString str = list.at(i).toString();
+            if (!str.isNull())
+                mTemplist.append(str);
+            }
+        if (searchKey.length() > 0)
+            mSearchPanel->setCriteria(searchKey);
+        }
+    }