--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/locationpickerservice/src/locationpickersearchview.cpp Tue Aug 31 15:09:25 2010 +0300
@@ -0,0 +1,207 @@
+/*
+* Copyright (c) 2010 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: LocationPickerSearchView implementation
+*
+*/
+
+#include <HbListViewItem>
+#include <QStandardItemModel>
+#include <HbSearchPanel>
+#include <HbListView>
+#include <HbTextItem>
+#include <HbDocumentLoader>
+#include <QGraphicsLinearLayout>
+#include <HbMenu>
+#include <HbAction>
+
+#include "locationpickerproxymodel.h"
+#include "locationpickersearchview.h"
+#include "locationpickerdatamanager.h"
+
+// ======== MEMBER FUNCTIONS ========
+
+// ----------------------------------------------------
+// LocationPickerSearchView::LocationPickerSearchView()
+// ----------------------------------------------------
+LocationPickerSearchView::LocationPickerSearchView( HbDocumentLoader &aLoader )
+ :mProxyModel(NULL),
+ mModel(NULL),
+ mListView(NULL),
+ mSearchPanel(NULL),
+ mEmptyLabel(NULL),
+ mVerticalLayout(NULL),
+ mDocumentLoader(aLoader),
+ mLongPressMenu(NULL),
+ mSelectAction(NULL)
+{
+
+}
+// ----------------------------------------------------
+// LocationPickerSearchView::~LocationPickerSearchView()
+// ----------------------------------------------------
+LocationPickerSearchView::~LocationPickerSearchView()
+{
+ delete mProxyModel;
+ delete mEmptyLabel;
+}
+
+// ----------------------------------------------------
+// LocationPickerSearchView::init()
+// ----------------------------------------------------
+void LocationPickerSearchView::init( QStandardItemModel *aModel )
+{
+ mModel = aModel;
+ //get listview from docml
+ mListView = qobject_cast<HbListView*>(
+ mDocumentLoader.findObject(QString("SearchListView")));
+ if(!mListView)
+ {
+ qFatal("Error Reading Docml");
+ }
+ //get search panel from docml
+ mSearchPanel = qobject_cast<HbSearchPanel*>(
+ mDocumentLoader.findObject(QString("searchPanel")));
+ //conect to respective slots
+ connect(mListView, SIGNAL(activated(const QModelIndex &)), this, SLOT(handleActivated
+ (const QModelIndex &)));
+ connect(mListView,SIGNAL(longPressed(HbAbstractViewItem*, const QPointF &)),this,
+ SLOT(launchPopUpMenu(HbAbstractViewItem*, const QPointF &)));
+ connect(mSearchPanel, SIGNAL(exitClicked()),this, SLOT(handleExit()));
+ connect(mSearchPanel,SIGNAL(criteriaChanged(QString)),this,SLOT(doSearch(QString)));
+
+ //Set graphics size for the list items.
+ HbListViewItem *hbListItem = new HbListViewItem();
+ hbListItem->setGraphicsSize(HbListViewItem::Thumbnail);
+ mListView->setItemPrototype( hbListItem );
+
+ // Create the proxy model.
+ mProxyModel = new LocationPickerProxyModel();
+ mProxyModel->setSourceModel(mModel);
+ mListView->setModel(mProxyModel);
+
+ // set filter properties
+ mProxyModel->setDynamicSortFilter(TRUE);
+ mProxyModel->setSortRole(Qt::DisplayRole);
+ mProxyModel->setSortCaseSensitivity(Qt::CaseInsensitive);
+ // sort
+ mProxyModel->sort(0, Qt::AscendingOrder);
+}
+
+// ----------------------------------------------------
+// LocationPickerSearchView::handleExit()
+// ----------------------------------------------------
+void LocationPickerSearchView::handleExit()
+{
+ //emit signal to switch the current view
+ emit switchView();
+}
+
+// ----------------------------------------------------
+// LocationPickerSearchView::doSearch()
+// ----------------------------------------------------
+void LocationPickerSearchView::doSearch( QString aCriteria )
+{
+ // use the string to search
+ mProxyModel->filterParameterChanged(aCriteria);
+ mProxyModel->setFilterFixedString(aCriteria);
+ //if no entries presentdisplay empty text item
+ if (!mProxyModel->rowCount() )
+ {
+ if(!mEmptyLabel)
+ {
+ QGraphicsWidget *widget = NULL;
+ widget = mDocumentLoader.findWidget(QString("container"));
+ mVerticalLayout = static_cast<QGraphicsLinearLayout*>(widget->layout());
+ if(!widget || !mVerticalLayout)
+ {
+ qFatal("Error Reading Docml");
+ }
+ mVerticalLayout->removeItem(mListView);
+ mListView->setVisible(false);
+ mEmptyLabel = new HbTextItem(hbTrId("txt_lint_list_no_results"));
+ mEmptyLabel->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding);
+ mEmptyLabel->setFontSpec(HbFontSpec(HbFontSpec::Primary));
+ mEmptyLabel->setAlignment(Qt::AlignCenter);
+ mVerticalLayout->insertItem(0, mEmptyLabel);
+ mEmptyLabel->setVisible(true);
+ }
+ }
+ //else display the result
+ else if (mEmptyLabel)
+ {
+ mVerticalLayout->removeItem(mEmptyLabel);
+ mEmptyLabel->setVisible(false);
+ delete mEmptyLabel;
+ mEmptyLabel=NULL;
+ mVerticalLayout->insertItem(0, mListView);
+ mListView->setVisible(true);
+ }
+}
+
+// ----------------------------------------------------
+// LocationPickerSearchView::handleActivated()
+// ----------------------------------------------------
+void LocationPickerSearchView::handleActivated( const QModelIndex &aIndex )
+{
+ QModelIndex index = mProxyModel->mapToSource(aIndex);
+ quint32 lm = 0;
+ getData( index, lm );
+ //emit item is selectedsignal
+ emit selectItem( lm );
+}
+
+// ----------------------------------------------------------------------------
+// LocationPickerSearchView::getData()
+// ----------------------------------------------------------------------------
+
+void LocationPickerSearchView::getData( QModelIndex aIndex, quint32& aValue )
+{
+ QStandardItem* item = mModel->item( aIndex.row(), aIndex.column() );
+ QVariant var = item->data( Qt::UserRole );
+ aValue = var.toUInt();
+}
+
+// -----------------------------------------------------------------------------
+// LocationPickerSearchView::launchPopUpMenu()
+// -----------------------------------------------------------------------------
+void LocationPickerSearchView::launchPopUpMenu(HbAbstractViewItem *aItem, const QPointF &aPoint)
+{
+ mLongPressMenu = new HbMenu();
+ mLongPressMenu->setTimeout(HbMenu::NoTimeout);
+ mSelectAction = mLongPressMenu->addAction(hbTrId("txt_lint_list_select"));
+ mIndex = aItem->modelIndex();
+ connect(mSelectAction, SIGNAL(triggered()),this, SLOT(handleLongPress()));
+ mLongPressMenu->setPreferredPos(aPoint);
+ connect(mLongPressMenu,SIGNAL(aboutToClose ()),this,SLOT(deleteMenu()));
+ mLongPressMenu->open();
+}
+
+// -----------------------------------------------------------------------------
+// LocationPickerSearchView::handleLongPress()
+// -----------------------------------------------------------------------------
+void LocationPickerSearchView::handleLongPress()
+{
+ handleActivated(mIndex);
+}
+
+// -----------------------------------------------------------------------------
+// LocationPickerSearchView::deleteMenu()
+// -----------------------------------------------------------------------------
+void LocationPickerSearchView::deleteMenu()
+{
+ mLongPressMenu->deleteLater();
+ mLongPressMenu = NULL;
+ mSelectAction->deleteLater();
+ mSelectAction = NULL;
+}