#include "QtScreenSearchView.h"
#include <QToolBar>
#include "QtMainView.h"
#include "QtMainWindow.h"
#include "QtScreenSearchBox.h"
#include "QtViewWidgetWrapper.h"
#include "ResourcePaths.h"
#include "TabId.h"
#include "utilityQt.h"
QtScreenSearchView::QtScreenSearchView(ViewLayout* viewLayout)
: ScreenSearchView(viewLayout), m_controllerProxy(this, TabId::app())
{
m_widget = new QtScreenSearchBox(&m_controllerProxy);
m_bar = new QToolBar();
m_bar->setObjectName(QStringLiteral("screen_search_bar"));
m_bar->setMovable(false);
m_bar->addWidget(m_widget);
QObject::connect(m_widget, &QtScreenSearchBox::closePressed, this, &QtScreenSearchView::hide);
if (QtMainWindow* mainWindow = utility::getMainWindowforMainView(getViewLayout()))
{
QObject::connect(
mainWindow, &QtMainWindow::showScreenSearch, this, &QtScreenSearchView::show);
QObject::connect(
mainWindow, &QtMainWindow::hideScreenSearch, this, &QtScreenSearchView::hide);
}
}
void QtScreenSearchView::createWidgetWrapper()
{
setWidgetWrapper(std::make_shared<QtViewWidgetWrapper>(m_widget));
}
void QtScreenSearchView::refreshView()
{
m_onQtThread([=]() {
m_bar->setStyleSheet(
utility::getStyleSheet(ResourcePaths::getGuiDirectoryPath().concatenate(
L"screen_search_view/screen_search_view.css"))
.c_str());
});
}
void QtScreenSearchView::setMatchCount(size_t matchCount)
{
m_onQtThread([=]() { m_widget->setMatchCount(matchCount); });
}
void QtScreenSearchView::setMatchIndex(size_t matchIndex)
{
m_onQtThread([=]() { m_widget->setMatchIndex(matchIndex); });
}
void QtScreenSearchView::addResponder(const std::string& name)
{
m_widget->addResponder(name);
}
void QtScreenSearchView::show()
{
if (QtMainWindow* mainWindow = utility::getMainWindowforMainView(getViewLayout()))
{
mainWindow->addToolBar(Qt::BottomToolBarArea, m_bar);
}
m_bar->show();
m_widget->setFocus();
}
void QtScreenSearchView::hide()
{
m_bar->hide();
m_widget->setMatchCount(0);
m_controllerProxy.executeAsTask(&ScreenSearchController::clearMatches);
}