7#include "SearchInputWidget.h"
9#include "GeoDataCoordinates.h"
10#include "MarblePlacemarkModel.h"
17SearchInputWidget::SearchInputWidget(
QWidget *parent ) :
18 MarbleLineEdit( parent ),
22 updatePlaceholderText();
23 QPixmap const decorator =
QPixmap(QStringLiteral(
":/icons/16x16/edit-find.png"));
24 Q_ASSERT( !decorator.
isNull() );
25 setDecorator( decorator );
27 connect(
this, SIGNAL(clearButtonClicked()),
this, SLOT(search()) );
28 connect(
this, SIGNAL(returnPressed()),
this, SLOT(search()) );
29 connect(
this, SIGNAL(decoratorButtonClicked()),
this, SLOT(showDropDownMenu()) );
31 m_sortFilter.setSortRole( MarblePlacemarkModel::PopularityIndexRole );
33 m_sortFilter.setDynamicSortFilter(
true );
37 m_completer->setModel( &m_sortFilter );
38 setCompleter( m_completer );
44 m_sortFilter.setSourceModel( completionModel );
47void SearchInputWidget::search()
49 QString const searchTerm = text();
53 emit search( searchTerm, m_areaSearch ? AreaSearch :
GlobalSearch );
56void SearchInputWidget::disableSearchAnimation()
61void SearchInputWidget::centerOnSearchSuggestion(
const QModelIndex &index )
64 QVariant const value = model->
data( index, MarblePlacemarkModel::CoordinateRole );
65 GeoDataCoordinates
const coordinates = value.
value<GeoDataCoordinates>();
66 emit centerOn( coordinates );
69void SearchInputWidget::showDropDownMenu()
72 QAction* globalSearch = menu.addAction( tr(
"Global Search" ),
this, SLOT(setGlobalSearch()) );
75 QAction* areaSearch = menu.addAction( tr(
"Area Search" ),
this, SLOT(setAreaSearch()) );
78 menu.exec( mapToGlobal(
QPoint( 0, size().height() ) ) );
81void SearchInputWidget::setGlobalSearch()
84 updatePlaceholderText();
87void SearchInputWidget::setAreaSearch()
90 updatePlaceholderText();
93void SearchInputWidget::updatePlaceholderText()
95 setPlaceholderText( m_areaSearch ? tr(
"Area Search" ) : tr (
"Global Search" ) );
100#include "moc_SearchInputWidget.cpp"
Binds a QML item to a specific geodetic location in screen coordinates.
@ GlobalSearch
Search a whole planet.
virtual QVariant data(const QModelIndex &index, int role) const const=0
bool isNull() const const
bool isEmpty() const const
QFuture< ArgsType< Signal > > connect(Sender *sender, Signal signal)