dolphin/Source/Core/DolphinQt/SearchBar.cpp

78 lines
1.5 KiB
C++
Raw Normal View History

2018-03-21 04:13:53 -06:00
// Copyright 2018 Dolphin Emulator Project
// Licensed under GPLv2+
// Refer to the license.txt file included.
2018-07-06 16:40:15 -06:00
#include "DolphinQt/SearchBar.h"
2018-03-21 04:13:53 -06:00
#include <QEvent>
2018-03-21 04:13:53 -06:00
#include <QHBoxLayout>
#include <QKeyEvent>
2018-03-21 04:13:53 -06:00
#include <QLineEdit>
#include <QPushButton>
SearchBar::SearchBar(QWidget* parent) : QWidget(parent)
{
CreateWidgets();
ConnectWidgets();
setFixedHeight(32);
setHidden(true);
installEventFilter(this);
2018-03-21 04:13:53 -06:00
}
void SearchBar::CreateWidgets()
{
m_search_edit = new QLineEdit;
m_close_button = new QPushButton(tr("Close"));
m_search_edit->setPlaceholderText(tr("Search games..."));
2018-03-21 04:13:53 -06:00
auto* layout = new QHBoxLayout;
layout->addWidget(m_search_edit);
layout->addWidget(m_close_button);
layout->setSizeConstraint(QLayout::SetMinAndMaxSize);
2018-03-21 04:13:53 -06:00
setLayout(layout);
}
void SearchBar::Show()
{
m_search_edit->setFocus();
m_search_edit->selectAll();
// Re-apply the filter string.
emit Search(m_search_edit->text());
show();
}
void SearchBar::Hide()
2018-03-21 04:13:53 -06:00
{
// Clear the filter string.
emit Search(QString());
2018-03-21 04:13:53 -06:00
m_search_edit->clearFocus();
2018-03-21 04:13:53 -06:00
hide();
2018-03-21 04:13:53 -06:00
}
void SearchBar::ConnectWidgets()
{
connect(m_search_edit, &QLineEdit::textChanged, this, &SearchBar::Search);
connect(m_close_button, &QPushButton::pressed, this, &SearchBar::Hide);
}
bool SearchBar::eventFilter(QObject* object, QEvent* event)
{
if (event->type() == QEvent::KeyPress)
{
if (static_cast<QKeyEvent*>(event)->key() == Qt::Key_Escape)
Hide();
}
return false;
2018-03-21 04:13:53 -06:00
}