diff -r 2cd891dccbbe -r 1eb8015a8491 userguide/src/HelpCategoryView.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/userguide/src/HelpCategoryView.cpp Fri Apr 16 14:53:45 2010 +0300 @@ -0,0 +1,245 @@ +/* +* 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: +* +*/ + +#include +#include + +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +#include "HelpDocumentLoader.h" +#include "HelpDataProvider.h" +#include "HelpProxyModel.h" + +#include "HelpCategoryView.h" + + +////////////////////////////////////////////////////////////////////////////////////////////// + +HelpCategoryView::HelpCategoryView() : +mViewMode(ViewModeNull), +mListAll(NULL), +mListSearch(NULL), +mSearchPanel(NULL), +mToolBar(NULL) +{ +} + +HelpCategoryView::~HelpCategoryView() +{ +} + + +//////////////////////////////////////////////////////////////////////////////////////////// + +void HelpCategoryView::init() +{ + initBackAction(); + initAllList(); + initSearchList(); + initSearchPanel(); + initToolbar(); + + switchViewMode(ViewModeAll); + + connect(mainWindow(), SIGNAL(currentViewChanged(HbView*)), this, SLOT(onCurrentViewChanged(HbView*))); + connect(mainWindow(), SIGNAL(orientationChanged(Qt::Orientation)), this, SLOT(onOrientationChanged(Qt::Orientation))); +} + +void HelpCategoryView::initBackAction() +{ + mSoftKeyAction = new HbAction(Hb::BackAction); + connect(mSoftKeyAction, SIGNAL(triggered()), this, SLOT(onBackAction())); +} + +void HelpCategoryView::initAllList() +{ + mListAll = HelpUIBuilder::findWidget(DOCML_LIST_CATEGORY_ALL); + mListAll->setHorizontalScrollBarPolicy(HbScrollArea::ScrollBarAlwaysOff); + mListAll->setModel(HelpDataProvider::instance()->getCategoryData()); + connect(mListAll, SIGNAL(activated(const QModelIndex&)), this, SLOT(onAllListActivated(const QModelIndex&))); +} + +void HelpCategoryView::initSearchList() +{ + mListSearch = HelpUIBuilder::findWidget(DOCML_LIST_CATEGORY_SEARCH); + mListSearch->setHorizontalScrollBarPolicy(HbScrollArea::ScrollBarAlwaysOff); + mListSearch->setModel(HelpDataProvider::instance()->getSearchData()); + connect(mListSearch, SIGNAL(activated(const QModelIndex&)), this, SLOT(onSearchListActivated(const QModelIndex&))); +} +void HelpCategoryView::initSearchPanel() +{ + mSearchPanel = HelpUIBuilder::findWidget(DOCML_SEARCH_PANEL_CATEGORY); + connect(mSearchPanel, SIGNAL(exitClicked()), this, SLOT(onSearchPanelExitClicked())); + connect(mSearchPanel, SIGNAL(criteriaChanged(const QString&)), this, SLOT(onSearchPanelCriteriaChanged(const QString&))); +} + +void HelpCategoryView::initToolbar() +{ + mToolBar = HelpUIBuilder::findWidget(DOCML_TOOLBAR); + + HbAction* allAction = HelpUIBuilder::findObject(DOCML_ACTION_ALL); + HbAction* findAction = HelpUIBuilder::findObject(DOCML_ACTION_SEARCH); + QActionGroup* toolBarActionGroup = new QActionGroup(mToolBar); + allAction->setActionGroup(toolBarActionGroup); + findAction->setActionGroup(toolBarActionGroup); +} + + +//////////////////////////////////////////////////////////////////////////////////////////// + +void HelpCategoryView::switchViewMode(ViewMode viewMode) +{ + if(ViewModeNull == viewMode) return; + + mViewMode = viewMode; + if(ViewModeAll == viewMode) + { + HelpUIBuilder::load(QRC_DOCML_CATEGORY, DOCML_LAYOUT_CATEGORY_ALL); + } + else if(ViewModeSearch == viewMode) + { + HelpUIBuilder::load(QRC_DOCML_CATEGORY, DOCML_LAYOUT_CATEGORY_SEARCH); + } + + RefreshTitlebarVisibility(); +} + + +//////////////////////////////////////////////////////////////////////////////////////////// + +void HelpCategoryView::RefreshToolbarText(bool isLandscape) +{ + HbAction* tollbarAction = HelpUIBuilder::findObject(DOCML_ACTION_ALL); + tollbarAction->setText(isLandscape ? qtTrId(TXT_BUTTON_ALL) : QString()); + + tollbarAction = HelpUIBuilder::findObject(DOCML_ACTION_SEARCH); + tollbarAction->setText(isLandscape ? qtTrId(TXT_BUTTON_FIND) : QString()); + + tollbarAction = HelpUIBuilder::findObject(DOCML_ACTION_LINK_NOKIA); + tollbarAction->setText(isLandscape ? qtTrId(TXT_BUTTON_LINK_SUPPORT) : QString()); +} + +void HelpCategoryView::RefreshTitlebarVisibility() +{ + setTitleBarVisible(!(mSearchPanel->isVisible())); +} + +void HelpCategoryView::ResetSearchPanel() +{ + foreach(QGraphicsItem *obj, mSearchPanel->childItems()) + { + QGraphicsWidget *const widget = static_cast(obj); + if(widget != NULL) + { + HbLineEdit *const lineEdit = qobject_cast(widget); + if(lineEdit != NULL) + { + lineEdit->setText(""); + break; + } + } + } +} + +//////////////////////////////////////////////////////////////////////////////////////////// +// handle system event + +void HelpCategoryView::onCurrentViewChanged(HbView *view) +{ + if(this == view) + { + setNavigationAction(mSoftKeyAction); + } +} + +void HelpCategoryView::onOrientationChanged(Qt::Orientation orientation) +{ + bool isLandscape = (Qt::Horizontal==orientation); + RefreshToolbarText(isLandscape); +} + + +/////////////////////////////////////////////////////////////////////////////////////// +// handle button back action + +void HelpCategoryView::onBackAction() +{ + if(this == mainWindow()->currentView()) + { + HbApplication::exit(); + } +} + + +//////////////////////////////////////////////////////////////////////////////////////////// +// handle list event + +void HelpCategoryView::onAllListActivated(const QModelIndex& index) +{ + if(!index.isValid() || // invalid + index.child(0,0).isValid()) // this is a node + { + return; + } + + QString uid = mListAll->model()->data(index.parent(), UidRole).toString(); + QString href = mListAll->model()->data(index, HrefRole).toString(); + HelpDataProvider::instance()->setHelpContentUrl(uid, href); + emit activateView(HelpViewContents); +} + +void HelpCategoryView::onSearchListActivated(const QModelIndex& index) +{ + if(!index.isValid() || // invalid + index.child(0,0).isValid()) // this is a node + { + return; + } + + QString uid = mListSearch->model()->data(index, UidRole).toString(); + QString href = mListSearch->model()->data(index, HrefRole).toString(); + HelpDataProvider::instance()->setHelpContentUrl(uid, href); + emit activateView(HelpViewContents); +} + + +//////////////////////////////////////////////////////////////////////////////////////////// +// handle search panel event + +void HelpCategoryView::onSearchPanelExitClicked() +{ + setTitleBarVisible(true); + HelpUIBuilder::load(QRC_DOCML_CATEGORY, DOCML_LAYOUT_CATEGORY_SEARCH_NO_SRHPAL); +} + +void HelpCategoryView::onSearchPanelCriteriaChanged(const QString &criteria) +{ + mListSearch->setModel(HelpDataProvider::instance()->getSearchData(criteria)); + mListSearch->update(); +} + + +// end of file