57 \param stateContext Identifies the state where search starts from. |
56 \param stateContext Identifies the state where search starts from. |
58 \param mainWindow Enables switching between originating and search view. |
57 \param mainWindow Enables switching between originating and search view. |
59 */ |
58 */ |
60 HsSearchView::HsSearchView(HsMenuViewBuilder &builder, |
59 HsSearchView::HsSearchView(HsMenuViewBuilder &builder, |
61 HsStateContext stateContext, HsMainWindow &mainWindow) : |
60 HsStateContext stateContext, HsMainWindow &mainWindow) : |
62 mProxyModel(new QSortFilterProxyModel(this)), mSearchView(NULL), |
61 mProxyModel(new HsSearchFilterProxyModel(this)), mSearchView(NULL), |
63 mSearchListView(NULL), mSearchPanel(NULL), mStateContext(stateContext), |
62 mSearchListView(NULL), mSearchPanel(NULL), mStateContext(stateContext), |
64 mBuilder(builder), mMainWindow(mainWindow), mListView(NULL), |
63 mBuilder(builder), mMainWindow(mainWindow), mListView(NULL), |
65 mVkbHost(NULL), mSearchViewBuilder(), mEmptyResultText(true) |
64 mVkbHost(NULL), mSearchViewBuilder(), mEmptyResultText(true) |
66 { |
65 { |
67 mProxyModel->setFilterRole(CaItemModel::TextRole); |
66 mProxyModel->setFilterRole(CaItemModel::TextRole); |
126 mListView = mBuilder.currentListView(); |
125 mListView = mBuilder.currentListView(); |
127 mSearchViewInitialIndex = firstVisibleItemIndex(mListView); |
126 mSearchViewInitialIndex = firstVisibleItemIndex(mListView); |
128 |
127 |
129 mProxyModel->invalidate(); |
128 mProxyModel->invalidate(); |
130 mProxyModel->setSourceModel(mListView->model()); |
129 mProxyModel->setSourceModel(mListView->model()); |
131 mProxyModel->setFilterRegExp( |
130 mCriteria = QString(""); |
132 QRegExp(QString(".*"), Qt::CaseInsensitive, QRegExp::RegExp)); |
131 mProxyModel->setFilterString(mCriteria); |
133 |
132 |
134 mSearchView = mSearchViewBuilder.searchView(); |
133 mSearchView = mSearchViewBuilder.searchView(); |
135 mSearchListView = mSearchViewBuilder.searchListView(); |
134 mSearchListView = mSearchViewBuilder.searchListView(); |
136 mSearchPanel = mSearchViewBuilder.searchPanel(); |
135 mSearchPanel = mSearchViewBuilder.searchPanel(); |
137 initSearchPanel(*mSearchPanel); |
136 initSearchPanel(*mSearchPanel); |
142 mBuilder.currentViewLabel()->heading()); |
141 mBuilder.currentViewLabel()->heading()); |
143 mSearchViewBuilder.setSearchLabledContext(); |
142 mSearchViewBuilder.setSearchLabledContext(); |
144 } |
143 } |
145 |
144 |
146 mSearchView->hideItems(Hb::AllItems); |
145 mSearchView->hideItems(Hb::AllItems); |
147 mSearchListView->setModel(mProxyModel, new HsListViewItem()); |
146 HsListViewItem *item = new HsListViewItem(); |
|
147 item->setTextFormat(Qt::RichText); |
|
148 |
|
149 mSearchListView->setModel(mProxyModel, item); |
148 |
150 |
149 mMainWindow.setCurrentView(mSearchView); |
151 mMainWindow.setCurrentView(mSearchView); |
150 |
152 |
151 openVkb(); |
153 openVkb(); |
152 |
154 |
277 void HsSearchView::findItem(QString criteriaStr) |
279 void HsSearchView::findItem(QString criteriaStr) |
278 { |
280 { |
279 qDebug() << "HsSearchView::findItem: " + criteriaStr; |
281 qDebug() << "HsSearchView::findItem: " + criteriaStr; |
280 HSMENUTEST_FUNC_ENTRY("HsSearchView::findItem"); |
282 HSMENUTEST_FUNC_ENTRY("HsSearchView::findItem"); |
281 |
283 |
282 mProxyModel->setFilterRegExp( |
284 if (criteriaStr == mCriteria) |
283 QRegExp("(^|\\b)" + criteriaStr, Qt::CaseInsensitive)); |
285 return; |
284 |
286 |
285 mSearchListView->scrollTo( |
287 mCriteria = criteriaStr; |
286 mProxyModel->index(0, 0), HbAbstractItemView::PositionAtTop); |
288 mProxyModel->setFilterString(criteriaStr); |
|
289 if(criteriaStr.isEmpty()) |
|
290 mSearchListView->scrollTo( |
|
291 mProxyModel->index(0, 0), HbAbstractItemView::PositionAtTop); |
287 |
292 |
288 HSMENUTEST_FUNC_EXIT("HsSearchView::findItem"); |
293 HSMENUTEST_FUNC_EXIT("HsSearchView::findItem"); |
289 } |
294 } |
290 |
295 |
291 /*! |
296 /*! |