searchui/stateproviders/searchstateprovider/inc/searchonlinestate.h
author hgs
Tue, 05 Oct 2010 13:32:14 +0530
changeset 26 367228f82b66
parent 15 df6898e696c6
permissions -rw-r--r--
201039

/*
 * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
 * which accompanies this distribution, and is available
 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
 *
 * Initial Contributors:
 * Nokia Corporation - initial contribution.
 *
 * Contributors:
 *
 * Description:  
 *
 */
#ifndef SEARCH_STATES_ONLINE_H
#define SEARCH_STATES_ONLINE_H
#include <qstate.h>
#include "search_global.h"
#include <hbicon.h>
SEARCH_CLASS( SearchStateProviderTest)

class HbListWidget;
class HbView;
class HbSearchPanel;
class HbMainWindow;
class OnlineHandler;
class SearchUiLoader;

/** @ingroup group_searchonlinestate
 * @brief The state handles wizard activation and interaction.
 *
 * @see StateMachine
 *
 * @lib ?library
 * @since S60 ?S60_version
 */
class SearchOnlineState : public QState
    {
Q_OBJECT
public:

public:

    /**
     * Constructor.
     * @since S60 ?S60_version.     
     * @param aParent Owner.
     */
    SearchOnlineState(QState *aParent = 0);

    /**
     * Destructor.
     * @since S60 ?S60_version.
     */
    virtual ~SearchOnlineState();

protected:

    /**
     * @copydoc QState::onEntry()
     */
    void onEntry(QEvent *event);

    /**
     * @copydoc QState::onExit()
     */
    void onExit(QEvent *event);

private:
    /**
     * deactivates the signals .
     * @since S60 ?S60_version.
     */
    void deActivateSignals();

    /**
     * activates the signals .
     * @since S60 ?S60_version.
     */
    void activateSignals();

public slots:

    /**
     * slot connects to search panel to initiate the online search
     * @since S60 ?S60_version.
     * @param aKeyword search keyword.
     */
    void startOnlineSearch(const QString &aKeyword);

    /**
     * slot connects to search panel to launch the settings delimiter
     * @since S60 ?S60_version.     
     */
    void setSettings();

    /**
     * slot connects to search panel to cancel the outstanding search
     * @since S60 ?S60_version.     
     */
    void cancelSearch();

    /**
     * slot connects to online handler to get notified when plugin is intialized 
     * @since S60 ?S60_version.     
     */
    void slotpluginIntialized(bool);

    /**
     * slot connects to online handler to get notified when plugin is shutdown 
     * @since S60 ?S60_version.     
     */
    void slotpluginShutdown(bool);

    /**
     * slot connects to online handler to get notified when view changed  
     * @since S60 ?S60_version.     
     */
    void slotbackEventTriggered();

    /**
     * slot connects to progressive search state to get notified criteria in search panel  
     * @since S60 ?S60_version.
     * @param aKeyword search keyword.     
     */
    void slotIndeviceQuery(QString);

    /**
     * slot connects to progressive search state to launch the suggestion links  
     * @since S60 ?S60_version.
     * @param aKeyword search keyword.
     * @param id search provider id.     
     */
    void slotlaunchLink(int, QString);

    /**
     * slot connects to main window to get notify when view is ready  
     * @since S60 ?S60_version.     
     */
    void slotviewReady();

signals:

    /**
     * Signalled when user selects an to switch the settings state
     * setting state will be  activated.
     */
    void switchOnlineToSettingsState();

    /**
     * Signalled when user change the state to progressive state
     * setting state will be  activated.
     */
    void onlineSearchQuery(QString);

    /**
     * Signalled when UI is ready on online state        
     */
    void applicationReady();

private:
    HbMainWindow* mMainWindow;
    /**
     * main view.
     * Own.
     */
    HbView* mView;

    /**
     * The searchpanel widget.
     * Own.
     */
    HbSearchPanel* mSearchPanel;

    /**
     * The List View widget.    
     */
    HbListWidget* mListView;

    /**
     * OnlineHandler instance.
     */
    OnlineHandler* mInternetHandler;

    SearchUiLoader* mUiLoader;

    /**
     * search keyword.
     */
    QString mSearchQuery;
    bool mSearchReady;
    bool mIndeviceQueryAvailable;
   
    /**
     * friend class for unit testing
     */
    SEARCH_FRIEND_CLASS (SearchStateProviderTest)
    };

#endif //SEARCH_STATES_ONLINE_H