|
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: |
|
15 * |
|
16 */ |
|
17 |
|
18 #include <QStandardItemModel> |
|
19 #include <QDebug> |
|
20 |
|
21 #include <hbmainwindow.h> |
|
22 #include <hbapplication.h> |
|
23 #include <hbaction.h> |
|
24 |
|
25 #include <hbtreeview.h> |
|
26 #include <hbtoolbar.h> |
|
27 #include <hbsearchpanel.h> |
|
28 #include <hbscrollbar.h> |
|
29 #include <hblineedit.h> |
|
30 #include <hbmenu.h> |
|
31 |
|
32 #include "HelpDocumentLoader.h" |
|
33 #include "HelpDataProvider.h" |
|
34 #include "HelpProxyModel.h" |
|
35 |
|
36 #include "HelpCategoryView.h" |
|
37 |
|
38 |
|
39 ////////////////////////////////////////////////////////////////////////////////////////////// |
|
40 |
|
41 HelpCategoryView::HelpCategoryView() : |
|
42 mViewMode(ViewModeNull), |
|
43 mListAll(NULL), |
|
44 mListSearch(NULL), |
|
45 mSearchPanel(NULL), |
|
46 mToolBar(NULL) |
|
47 { |
|
48 } |
|
49 |
|
50 HelpCategoryView::~HelpCategoryView() |
|
51 { |
|
52 } |
|
53 |
|
54 |
|
55 //////////////////////////////////////////////////////////////////////////////////////////// |
|
56 |
|
57 void HelpCategoryView::init() |
|
58 { |
|
59 initBackAction(); |
|
60 initAllList(); |
|
61 initSearchList(); |
|
62 initSearchPanel(); |
|
63 initToolbar(); |
|
64 |
|
65 switchViewMode(ViewModeAll); |
|
66 |
|
67 connect(mainWindow(), SIGNAL(currentViewChanged(HbView*)), this, SLOT(onCurrentViewChanged(HbView*))); |
|
68 connect(mainWindow(), SIGNAL(orientationChanged(Qt::Orientation)), this, SLOT(onOrientationChanged(Qt::Orientation))); |
|
69 } |
|
70 |
|
71 void HelpCategoryView::initBackAction() |
|
72 { |
|
73 mSoftKeyAction = new HbAction(Hb::BackAction); |
|
74 connect(mSoftKeyAction, SIGNAL(triggered()), this, SLOT(onBackAction())); |
|
75 } |
|
76 |
|
77 void HelpCategoryView::initAllList() |
|
78 { |
|
79 mListAll = HelpUIBuilder::findWidget<HbTreeView*>(DOCML_LIST_CATEGORY_ALL); |
|
80 mListAll->setHorizontalScrollBarPolicy(HbScrollArea::ScrollBarAlwaysOff); |
|
81 mListAll->setModel(HelpDataProvider::instance()->getCategoryData()); |
|
82 connect(mListAll, SIGNAL(activated(const QModelIndex&)), this, SLOT(onAllListActivated(const QModelIndex&))); |
|
83 } |
|
84 |
|
85 void HelpCategoryView::initSearchList() |
|
86 { |
|
87 mListSearch = HelpUIBuilder::findWidget<HbTreeView*>(DOCML_LIST_CATEGORY_SEARCH); |
|
88 mListSearch->setHorizontalScrollBarPolicy(HbScrollArea::ScrollBarAlwaysOff); |
|
89 mListSearch->setModel(HelpDataProvider::instance()->getSearchData()); |
|
90 connect(mListSearch, SIGNAL(activated(const QModelIndex&)), this, SLOT(onSearchListActivated(const QModelIndex&))); |
|
91 } |
|
92 void HelpCategoryView::initSearchPanel() |
|
93 { |
|
94 mSearchPanel = HelpUIBuilder::findWidget<HbSearchPanel*>(DOCML_SEARCH_PANEL_CATEGORY); |
|
95 connect(mSearchPanel, SIGNAL(exitClicked()), this, SLOT(onSearchPanelExitClicked())); |
|
96 connect(mSearchPanel, SIGNAL(criteriaChanged(const QString&)), this, SLOT(onSearchPanelCriteriaChanged(const QString&))); |
|
97 } |
|
98 |
|
99 void HelpCategoryView::initToolbar() |
|
100 { |
|
101 mToolBar = HelpUIBuilder::findWidget<HbToolBar*>(DOCML_TOOLBAR); |
|
102 |
|
103 HbAction* allAction = HelpUIBuilder::findObject<HbAction*>(DOCML_ACTION_ALL); |
|
104 HbAction* findAction = HelpUIBuilder::findObject<HbAction*>(DOCML_ACTION_SEARCH); |
|
105 QActionGroup* toolBarActionGroup = new QActionGroup(mToolBar); |
|
106 allAction->setActionGroup(toolBarActionGroup); |
|
107 findAction->setActionGroup(toolBarActionGroup); |
|
108 } |
|
109 |
|
110 |
|
111 //////////////////////////////////////////////////////////////////////////////////////////// |
|
112 |
|
113 void HelpCategoryView::switchViewMode(ViewMode viewMode) |
|
114 { |
|
115 if(ViewModeNull == viewMode) return; |
|
116 |
|
117 mViewMode = viewMode; |
|
118 if(ViewModeAll == viewMode) |
|
119 { |
|
120 HelpUIBuilder::load(QRC_DOCML_CATEGORY, DOCML_LAYOUT_CATEGORY_ALL); |
|
121 } |
|
122 else if(ViewModeSearch == viewMode) |
|
123 { |
|
124 HelpUIBuilder::load(QRC_DOCML_CATEGORY, DOCML_LAYOUT_CATEGORY_SEARCH); |
|
125 } |
|
126 |
|
127 RefreshTitlebarVisibility(); |
|
128 } |
|
129 |
|
130 |
|
131 //////////////////////////////////////////////////////////////////////////////////////////// |
|
132 |
|
133 void HelpCategoryView::RefreshToolbarText(bool isLandscape) |
|
134 { |
|
135 HbAction* tollbarAction = HelpUIBuilder::findObject<HbAction*>(DOCML_ACTION_ALL); |
|
136 tollbarAction->setText(isLandscape ? qtTrId(TXT_BUTTON_ALL) : QString()); |
|
137 |
|
138 tollbarAction = HelpUIBuilder::findObject<HbAction*>(DOCML_ACTION_SEARCH); |
|
139 tollbarAction->setText(isLandscape ? qtTrId(TXT_BUTTON_FIND) : QString()); |
|
140 |
|
141 tollbarAction = HelpUIBuilder::findObject<HbAction*>(DOCML_ACTION_LINK_NOKIA); |
|
142 tollbarAction->setText(isLandscape ? qtTrId(TXT_BUTTON_LINK_SUPPORT) : QString()); |
|
143 } |
|
144 |
|
145 void HelpCategoryView::RefreshTitlebarVisibility() |
|
146 { |
|
147 setTitleBarVisible(!(mSearchPanel->isVisible())); |
|
148 } |
|
149 |
|
150 void HelpCategoryView::ResetSearchPanel() |
|
151 { |
|
152 foreach(QGraphicsItem *obj, mSearchPanel->childItems()) |
|
153 { |
|
154 QGraphicsWidget *const widget = static_cast<QGraphicsWidget*>(obj); |
|
155 if(widget != NULL) |
|
156 { |
|
157 HbLineEdit *const lineEdit = qobject_cast<HbLineEdit*>(widget); |
|
158 if(lineEdit != NULL) |
|
159 { |
|
160 lineEdit->setText(""); |
|
161 break; |
|
162 } |
|
163 } |
|
164 } |
|
165 } |
|
166 |
|
167 //////////////////////////////////////////////////////////////////////////////////////////// |
|
168 // handle system event |
|
169 |
|
170 void HelpCategoryView::onCurrentViewChanged(HbView *view) |
|
171 { |
|
172 if(this == view) |
|
173 { |
|
174 setNavigationAction(mSoftKeyAction); |
|
175 } |
|
176 } |
|
177 |
|
178 void HelpCategoryView::onOrientationChanged(Qt::Orientation orientation) |
|
179 { |
|
180 bool isLandscape = (Qt::Horizontal==orientation); |
|
181 RefreshToolbarText(isLandscape); |
|
182 } |
|
183 |
|
184 |
|
185 /////////////////////////////////////////////////////////////////////////////////////// |
|
186 // handle button back action |
|
187 |
|
188 void HelpCategoryView::onBackAction() |
|
189 { |
|
190 if(this == mainWindow()->currentView()) |
|
191 { |
|
192 HbApplication::exit(); |
|
193 } |
|
194 } |
|
195 |
|
196 |
|
197 //////////////////////////////////////////////////////////////////////////////////////////// |
|
198 // handle list event |
|
199 |
|
200 void HelpCategoryView::onAllListActivated(const QModelIndex& index) |
|
201 { |
|
202 if(!index.isValid() || // invalid |
|
203 index.child(0,0).isValid()) // this is a node |
|
204 { |
|
205 return; |
|
206 } |
|
207 |
|
208 QString uid = mListAll->model()->data(index.parent(), UidRole).toString(); |
|
209 QString href = mListAll->model()->data(index, HrefRole).toString(); |
|
210 HelpDataProvider::instance()->setHelpContentUrl(uid, href); |
|
211 emit activateView(HelpViewContents); |
|
212 } |
|
213 |
|
214 void HelpCategoryView::onSearchListActivated(const QModelIndex& index) |
|
215 { |
|
216 if(!index.isValid() || // invalid |
|
217 index.child(0,0).isValid()) // this is a node |
|
218 { |
|
219 return; |
|
220 } |
|
221 |
|
222 QString uid = mListSearch->model()->data(index, UidRole).toString(); |
|
223 QString href = mListSearch->model()->data(index, HrefRole).toString(); |
|
224 HelpDataProvider::instance()->setHelpContentUrl(uid, href); |
|
225 emit activateView(HelpViewContents); |
|
226 } |
|
227 |
|
228 |
|
229 //////////////////////////////////////////////////////////////////////////////////////////// |
|
230 // handle search panel event |
|
231 |
|
232 void HelpCategoryView::onSearchPanelExitClicked() |
|
233 { |
|
234 setTitleBarVisible(true); |
|
235 HelpUIBuilder::load(QRC_DOCML_CATEGORY, DOCML_LAYOUT_CATEGORY_SEARCH_NO_SRHPAL); |
|
236 } |
|
237 |
|
238 void HelpCategoryView::onSearchPanelCriteriaChanged(const QString &criteria) |
|
239 { |
|
240 mListSearch->setModel(HelpDataProvider::instance()->getSearchData(criteria)); |
|
241 mListSearch->update(); |
|
242 } |
|
243 |
|
244 |
|
245 // end of file |