searchui/stateproviders/searchstateprovider/src/searchonlinestate.cpp
changeset 12 993ab30e92fc
child 13 0a2ec6860a93
child 17 7d8c8d8f5eab
equal deleted inserted replaced
11:773be20e0a25 12:993ab30e92fc
       
     1 /*
       
     2  * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
       
     3  * All rights reserved.
       
     4  * This component and the accompanying materials are made available
       
     5  * under the terms of "Eclipse Public License v1.0"
       
     6  * which accompanies this distribution, and is available
       
     7  * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8  *
       
     9  * Initial Contributors:
       
    10  * Nokia Corporation - initial contribution.
       
    11  *
       
    12  * Contributors:
       
    13  *
       
    14  * Description:  Implements the wizard activation and interactions.
       
    15  *
       
    16  */
       
    17 
       
    18 #include "searchonlinestate.h"
       
    19 #include "onlinehandler.h"
       
    20 #include <hbdocumentloader.h>
       
    21 #include <hbview.h>
       
    22 #include <hblabel.h>
       
    23 #include <hbstackedwidget.h>
       
    24 #include <hbicon.h>
       
    25 #include <hbinstance.h>
       
    26 #include <hbaction.h>
       
    27 #include <qstandarditemmodel.h>
       
    28 #include <qdebug.h>
       
    29 #include <qgraphicswidget.h>
       
    30 #include <qdir.h>
       
    31 #include <hbsearchpanel.h>
       
    32 #include <hbapplication.h>
       
    33 #define hbApp qobject_cast<HbApplication*>(qApp)
       
    34 const char *SEARCHONLINESTATE_DOCML = ":/xml/searchstateprovider.docml";
       
    35 const char *ONLINE_TOC_VIEW = "tocView";
       
    36 const char *ONLINE_TUT_SEARCHPANEL_WIDGET = "searchPanel";
       
    37 
       
    38 // ---------------------------------------------------------------------------
       
    39 // SearchOnlineState::SearchOnlineState
       
    40 // ---------------------------------------------------------------------------
       
    41 //
       
    42 SearchOnlineState::SearchOnlineState(QState *parent) :
       
    43     QState(parent), mMainWindow(NULL), mView(NULL), mSearchPanel(NULL),
       
    44             mDocumentLoader(NULL)
       
    45     {
       
    46 
       
    47     mInternetHandler = new OnlineHandler();
       
    48     mSearchReady = true;
       
    49     mIndeviceQueryAvailable = false;
       
    50     mIsUICreated = false;
       
    51     //activateSignals();
       
    52     }
       
    53 // ---------------------------------------------------------------------------
       
    54 // SearchOnlineState::~SearchOnlineState
       
    55 // ---------------------------------------------------------------------------
       
    56 //
       
    57 SearchOnlineState::~SearchOnlineState()
       
    58     {
       
    59     delete mDocumentLoader;
       
    60     delete mInternetHandler;
       
    61     }
       
    62 void SearchOnlineState::createui()
       
    63     {
       
    64     mMainWindow = hbInstance->allMainWindows().at(0);
       
    65     mDocumentLoader = new HbDocumentLoader();
       
    66     bool ok = false;
       
    67     mDocumentLoader->load(SEARCHONLINESTATE_DOCML, &ok);
       
    68 
       
    69     QGraphicsWidget *widget = mDocumentLoader->findWidget(ONLINE_TOC_VIEW);
       
    70     Q_ASSERT_X(ok && (widget != 0), "ONLINE_TOC_VIEW", "invalid view");
       
    71 
       
    72     mView = qobject_cast<HbView*> (widget);
       
    73     if (mView)
       
    74         {
       
    75         mView->setTitle(hbTrId("txt_search_title_search"));
       
    76         }
       
    77 
       
    78     mSearchPanel = qobject_cast<HbSearchPanel *> (
       
    79             mDocumentLoader->findWidget(ONLINE_TUT_SEARCHPANEL_WIDGET));
       
    80     if (mSearchPanel)
       
    81         {
       
    82         mSearchPanel->setSearchOptionsEnabled(true);
       
    83 
       
    84         mSearchPanel->setProgressive(false);
       
    85 
       
    86         mSearchPanel->setPlaceholderText(hbTrId(
       
    87                 "txt_search_dialog_search_internet"));
       
    88 
       
    89         mSearchPanel->setCancelEnabled(false);          
       
    90         }
       
    91     if (mView && mMainWindow)
       
    92         {
       
    93         mMainWindow->addView(mView);
       
    94         mMainWindow->setCurrentView(mView);
       
    95         }
       
    96     }
       
    97 // ---------------------------------------------------------------------------
       
    98 // SearchOnlineState::onEntry
       
    99 // ---------------------------------------------------------------------------
       
   100 //
       
   101 void SearchOnlineState::onEntry(QEvent *event)
       
   102     {
       
   103     qDebug() << "search:SearchOnlineState::onEntry";
       
   104     QState::onEntry(event);
       
   105     if (!mIsUICreated)
       
   106         {
       
   107         createui();
       
   108         mIsUICreated = true;
       
   109         }
       
   110 
       
   111     activateSignals();
       
   112     // If this is not the current view, we're getting back from plugin view  
       
   113     if (mMainWindow)
       
   114         {
       
   115         if (mMainWindow->currentView() != mView)
       
   116             {
       
   117             mMainWindow->setCurrentView(mView, true);
       
   118             }
       
   119         mMainWindow->show();
       
   120         }
       
   121     if (mIndeviceQueryAvailable)
       
   122         {
       
   123         mSearchPanel->setCriteria(mSearchQuery);
       
   124         mIndeviceQueryAvailable = false;
       
   125         }
       
   126 
       
   127     }
       
   128 // ---------------------------------------------------------------------------
       
   129 // SearchOnlineState::onExit
       
   130 // ---------------------------------------------------------------------------
       
   131 //
       
   132 void SearchOnlineState::onExit(QEvent *event)
       
   133     {
       
   134     QState::onExit(event);
       
   135     deActivateSignals();
       
   136     }
       
   137 // ---------------------------------------------------------------------------
       
   138 // SearchProgressiveState::activateSignals
       
   139 // ---------------------------------------------------------------------------
       
   140 void SearchOnlineState::activateSignals()
       
   141     {
       
   142     if (mSearchPanel)
       
   143         {
       
   144         connect(mSearchPanel, SIGNAL(criteriaChanged(QString)), this,
       
   145                 SLOT(startOnlineSearch(QString)));
       
   146         connect(mSearchPanel, SIGNAL(searchOptionsClicked()), this,
       
   147                 SLOT(setSettings()));
       
   148         connect(mSearchPanel, SIGNAL(exitClicked()), this,
       
   149                 SLOT(cancelSearch()));
       
   150         }
       
   151     if (mInternetHandler)
       
   152         {
       
   153 
       
   154         connect(mInternetHandler, SIGNAL(pluginIntialized(bool)), this,
       
   155                 SLOT(slotpluginIntialized(bool)));
       
   156         connect(mInternetHandler, SIGNAL(pluginShutdown(bool)), this,
       
   157                 SLOT(slotpluginShutdown(bool)));
       
   158         connect(mInternetHandler, SIGNAL(backEventTriggered()), this,
       
   159                 SLOT(slotbackEventTriggered()));
       
   160         }
       
   161     connect(mMainWindow, SIGNAL(viewReady()), this, SLOT(slotviewReady()));
       
   162     }
       
   163 // ---------------------------------------------------------------------------
       
   164 // SearchProgressiveState::deActivateSignals
       
   165 // ---------------------------------------------------------------------------
       
   166 void SearchOnlineState::deActivateSignals()
       
   167     {
       
   168     if (mSearchPanel)
       
   169         {
       
   170         disconnect(mSearchPanel, SIGNAL(criteriaChanged(QString)), this,
       
   171                 SLOT(startOnlineSearch(QString)));
       
   172         disconnect(mSearchPanel, SIGNAL(searchOptionsClicked()), this,
       
   173                 SLOT(setSettings()));
       
   174         disconnect(mSearchPanel, SIGNAL(exitClicked()), this,
       
   175                 SLOT(cancelSearch()));
       
   176         }
       
   177     if (mInternetHandler)
       
   178         {
       
   179         disconnect(mInternetHandler, SIGNAL(pluginIntialized(bool)), this,
       
   180                 SLOT(slotpluginIntialized(bool)));
       
   181         disconnect(mInternetHandler, SIGNAL(pluginShutdown(bool)), this,
       
   182                 SLOT(slotpluginShutdown(bool)));
       
   183         disconnect(mInternetHandler, SIGNAL(backEventTriggered()), this,
       
   184                 SLOT(slotbackEventTriggered()));
       
   185         }
       
   186     disconnect(mMainWindow, SIGNAL(viewReady()), this, SLOT(slotviewReady()));
       
   187     }
       
   188 // ---------------------------------------------------------------------------
       
   189 // SearchOnlineState::startOnlineSearch
       
   190 // ---------------------------------------------------------------------------
       
   191 void SearchOnlineState::startOnlineSearch(const QString &query)
       
   192     {
       
   193     mSearchQuery = query;
       
   194     //    if (mSearchReady)
       
   195         {
       
   196         mInternetHandler->readSettings();
       
   197         mInternetHandler->initializePlugin();
       
   198         }
       
   199     // load online handlers
       
   200     }
       
   201 // ---------------------------------------------------------------------------
       
   202 // SearchOnlineState::setSettings
       
   203 // ---------------------------------------------------------------------------
       
   204 void SearchOnlineState::setSettings()
       
   205     {
       
   206     if (mSearchQuery.length())
       
   207         emit onlineSearchQuery(mSearchQuery);
       
   208     emit switchOnlineToSettingsState();
       
   209     }
       
   210 // ---------------------------------------------------------------------------
       
   211 // SearchOnlineState::cancelSearch
       
   212 // ---------------------------------------------------------------------------
       
   213 void SearchOnlineState::cancelSearch()
       
   214     {
       
   215     // unload handlers
       
   216     }
       
   217 // ---------------------------------------------------------------------------
       
   218 // SearchOnlineState::slotpluginIntialized
       
   219 // ---------------------------------------------------------------------------
       
   220 void SearchOnlineState::slotpluginIntialized(bool status)
       
   221     {
       
   222     if (status)
       
   223         mInternetHandler->activatePlugin(mSearchQuery);
       
   224     }
       
   225 // ---------------------------------------------------------------------------
       
   226 // SearchOnlineState::slotpluginShutdown
       
   227 // ---------------------------------------------------------------------------
       
   228 void SearchOnlineState::slotpluginShutdown(bool status)
       
   229     {
       
   230     mSearchReady = status;
       
   231     if (!mSearchReady)
       
   232         mInternetHandler->unloadPluginandExit();
       
   233     }
       
   234 // ---------------------------------------------------------------------------
       
   235 // SearchOnlineState::slotbackEventTriggered
       
   236 // ---------------------------------------------------------------------------
       
   237 void SearchOnlineState::slotbackEventTriggered()
       
   238     {
       
   239     mInternetHandler->unloadPluginandExit();
       
   240     }
       
   241 // ---------------------------------------------------------------------------
       
   242 // SearchOnlineState::slotIndeviceQuery
       
   243 // ---------------------------------------------------------------------------
       
   244 void SearchOnlineState::slotIndeviceQuery(QString str)
       
   245     {
       
   246     mSearchQuery = str;
       
   247     mIndeviceQueryAvailable = true;
       
   248     }
       
   249 // ---------------------------------------------------------------------------
       
   250 // SearchOnlineState::slotlaunchLink
       
   251 // ---------------------------------------------------------------------------
       
   252 void SearchOnlineState::slotlaunchLink(int id, QString query)
       
   253     {
       
   254     mInternetHandler->loadISPlugin(id, query);
       
   255     }
       
   256 // ---------------------------------------------------------------------------
       
   257 // SearchOnlineState::slotviewReady
       
   258 // ---------------------------------------------------------------------------
       
   259 void SearchOnlineState::slotviewReady()
       
   260     {
       
   261     if (hbApp)
       
   262         {
       
   263         if (hbApp->activateReason() == Hb::ActivationReasonActivity)
       
   264             {
       
   265             QVariantHash params = hbApp->activateParams();
       
   266             QString searchKey = params.value("query").toString();
       
   267             if (searchKey.length() > 0)
       
   268                 {
       
   269                 mSearchPanel->setCriteria(searchKey);
       
   270                 startOnlineSearch(searchKey);
       
   271                 }
       
   272             }
       
   273         }//PERF_APP_LAUNCH_END("SearchAppplication View is ready");
       
   274     }