Fix search focusing

Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
This commit is contained in:
TheKodeToad 2023-07-01 16:39:21 +01:00
parent 7138425c85
commit 4332b62a62
5 changed files with 23 additions and 23 deletions

View File

@ -30,9 +30,9 @@
#include "ui/widgets/PageContainer.h" #include "ui/widgets/PageContainer.h"
#include "ui/widgets/VersionSelectWidget.h" #include "ui/widgets/VersionSelectWidget.h"
class LoaderPage : public VersionSelectWidget, public BasePage { class InstallLoaderPage : public VersionSelectWidget, public BasePage {
public: public:
LoaderPage(const QString& id, InstallLoaderPage(const QString& id,
const QString& icon, const QString& icon,
const QString& name, const QString& name,
// "lightweight" loaders are independent to any game version // "lightweight" loaders are independent to any game version
@ -86,9 +86,7 @@ InstallLoaderDialog::InstallLoaderDialog(std::shared_ptr<PackProfile> profile, Q
auto refreshButton = new QPushButton(tr("&Refresh"), this); auto refreshButton = new QPushButton(tr("&Refresh"), this);
connect(refreshButton, &QPushButton::pressed, this, [this] { connect(refreshButton, &QPushButton::pressed, this, [this] {
LoaderPage* page = dynamic_cast<LoaderPage*>(m_container->selectedPage()); dynamic_cast<InstallLoaderPage*>(m_container->selectedPage())->loadList();
Q_ASSERT(page != nullptr);
page->loadList();
}); });
buttonLayout->addWidget(refreshButton); buttonLayout->addWidget(refreshButton);
@ -106,18 +104,20 @@ InstallLoaderDialog::InstallLoaderDialog(std::shared_ptr<PackProfile> profile, Q
connect(m_container, &PageContainer::selectedPageChanged, this, connect(m_container, &PageContainer::selectedPageChanged, this,
[this](BasePage* previous, BasePage* selected) { updateAcceptButton(selected); }); [this](BasePage* previous, BasePage* selected) { updateAcceptButton(selected); });
updateAcceptButton(m_container->selectedPage()); updateAcceptButton(m_container->selectedPage());
dynamic_cast<InstallLoaderPage*>(m_container->selectedPage())->selectSearch();
} }
QList<BasePage*> InstallLoaderDialog::getPages() QList<BasePage*> InstallLoaderDialog::getPages()
{ {
return { // Forge return { // Forge
new LoaderPage("net.minecraftforge", "forge", tr("Forge"), false, m_profile, this), new InstallLoaderPage("net.minecraftforge", "forge", tr("Forge"), false, m_profile, this),
// Fabric // Fabric
new LoaderPage("net.fabricmc.fabric-loader", "fabricmc-small", tr("Fabric"), true, m_profile, this), new InstallLoaderPage("net.fabricmc.fabric-loader", "fabricmc-small", tr("Fabric"), true, m_profile, this),
// Quilt // Quilt
new LoaderPage("org.quiltmc.quilt-loader", "quiltmc", tr("Quilt"), true, m_profile, this), new InstallLoaderPage("org.quiltmc.quilt-loader", "quiltmc", tr("Quilt"), true, m_profile, this),
// LiteLoader // LiteLoader
new LoaderPage("com.mumfrey.liteloader", "liteloader", tr("LiteLoader"), false, m_profile, this) new InstallLoaderPage("com.mumfrey.liteloader", "liteloader", tr("LiteLoader"), false, m_profile, this)
}; };
} }
@ -135,9 +135,7 @@ void InstallLoaderDialog::updateAcceptButton(const BasePage* page)
void InstallLoaderDialog::done(int result) void InstallLoaderDialog::done(int result)
{ {
if (result == Accepted) { if (result == Accepted) {
LoaderPage* page = dynamic_cast<LoaderPage*>(m_container->selectedPage()); auto* page = dynamic_cast<InstallLoaderPage*>(m_container->selectedPage());
Q_ASSERT(page != nullptr);
if (page->selectedVersion()) { if (page->selectedVersion()) {
m_profile->setComponentVersion(page->id(), page->selectedVersion()->descriptor()); m_profile->setComponentVersion(page->id(), page->selectedVersion()->descriptor());
m_profile->resolve(Net::Mode::Online); m_profile->resolve(Net::Mode::Online);

View File

@ -55,7 +55,7 @@ VersionSelectDialog::VersionSelectDialog(BaseVersionList *vlist, QString title,
m_verticalLayout = new QVBoxLayout(this); m_verticalLayout = new QVBoxLayout(this);
m_verticalLayout->setObjectName(QStringLiteral("verticalLayout")); m_verticalLayout->setObjectName(QStringLiteral("verticalLayout"));
m_versionWidget = new VersionSelectWidget(true, parent); m_versionWidget = new VersionSelectWidget(parent);
m_verticalLayout->addWidget(m_versionWidget); m_verticalLayout->addWidget(m_versionWidget);
m_horizontalLayout = new QHBoxLayout(); m_horizontalLayout = new QHBoxLayout();
@ -123,6 +123,7 @@ int VersionSelectDialog::exec()
{ {
QDialog::open(); QDialog::open();
m_versionWidget->initialize(m_vlist); m_versionWidget->initialize(m_vlist);
m_versionWidget->selectSearch();
if(resizeOnColumn != -1) if(resizeOnColumn != -1)
{ {
m_versionWidget->setResizeOn(resizeOnColumn); m_versionWidget->setResizeOn(resizeOnColumn);

View File

@ -46,7 +46,7 @@ void JavaSettingsWidget::setupUi()
m_verticalLayout = new QVBoxLayout(this); m_verticalLayout = new QVBoxLayout(this);
m_verticalLayout->setObjectName(QStringLiteral("verticalLayout")); m_verticalLayout->setObjectName(QStringLiteral("verticalLayout"));
m_versionWidget = new VersionSelectWidget(true, this); m_versionWidget = new VersionSelectWidget(this);
m_verticalLayout->addWidget(m_versionWidget); m_verticalLayout->addWidget(m_versionWidget);
m_horizontalLayout = new QHBoxLayout(); m_horizontalLayout = new QHBoxLayout();
@ -126,6 +126,7 @@ void JavaSettingsWidget::setupUi()
void JavaSettingsWidget::initialize() void JavaSettingsWidget::initialize()
{ {
m_versionWidget->initialize(APPLICATION->javalist().get()); m_versionWidget->initialize(APPLICATION->javalist().get());
m_versionWidget->selectSearch();
m_versionWidget->setResizeOn(2); m_versionWidget->setResizeOn(2);
auto s = APPLICATION->settings(); auto s = APPLICATION->settings();
// Memory // Memory

View File

@ -11,10 +11,8 @@
#include "ui/dialogs/CustomMessageBox.h" #include "ui/dialogs/CustomMessageBox.h"
VersionSelectWidget::VersionSelectWidget(QWidget* parent) : VersionSelectWidget(false, parent) {} VersionSelectWidget::VersionSelectWidget(QWidget* parent)
: QWidget(parent)
VersionSelectWidget::VersionSelectWidget(bool focusSearch, QWidget* parent)
: QWidget(parent), focusSearch(focusSearch)
{ {
setObjectName(QStringLiteral("VersionSelectWidget")); setObjectName(QStringLiteral("VersionSelectWidget"));
verticalLayout = new QVBoxLayout(this); verticalLayout = new QVBoxLayout(this);
@ -116,9 +114,6 @@ void VersionSelectWidget::initialize(BaseVersionList *vlist)
listView->header()->setSectionResizeMode(QHeaderView::ResizeToContents); listView->header()->setSectionResizeMode(QHeaderView::ResizeToContents);
listView->header()->setSectionResizeMode(resizeOnColumn, QHeaderView::Stretch); listView->header()->setSectionResizeMode(resizeOnColumn, QHeaderView::Stretch);
if (focusSearch)
search->setFocus();
if (!m_vlist->isLoaded()) if (!m_vlist->isLoaded())
{ {
loadList(); loadList();
@ -210,6 +205,11 @@ void VersionSelectWidget::selectCurrent()
} }
} }
void VersionSelectWidget::selectSearch()
{
search->setFocus();
}
void VersionSelectWidget::selectRecommended() void VersionSelectWidget::selectRecommended()
{ {
auto idx = m_proxyModel->getRecommended(); auto idx = m_proxyModel->getRecommended();

View File

@ -52,7 +52,6 @@ class VersionSelectWidget: public QWidget
Q_OBJECT Q_OBJECT
public: public:
explicit VersionSelectWidget(QWidget *parent); explicit VersionSelectWidget(QWidget *parent);
explicit VersionSelectWidget(bool focusSearch = false, QWidget *parent = 0);
~VersionSelectWidget(); ~VersionSelectWidget();
//! loads the list if needed. //! loads the list if needed.
@ -65,6 +64,7 @@ public:
BaseVersion::Ptr selectedVersion() const; BaseVersion::Ptr selectedVersion() const;
void selectRecommended(); void selectRecommended();
void selectCurrent(); void selectCurrent();
void selectSearch();
void setCurrentVersion(const QString & version); void setCurrentVersion(const QString & version);
void setFuzzyFilter(BaseVersionList::ModelRoles role, QString filter); void setFuzzyFilter(BaseVersionList::ModelRoles role, QString filter);
@ -74,6 +74,7 @@ public:
void setEmptyErrorString(QString emptyErrorString); void setEmptyErrorString(QString emptyErrorString);
void setEmptyMode(VersionListView::EmptyMode mode); void setEmptyMode(VersionListView::EmptyMode mode);
void setResizeOn(int column); void setResizeOn(int column);
bool eventFilter(QObject* watched, QEvent* event) override; bool eventFilter(QObject* watched, QEvent* event) override;
signals: signals:
@ -98,7 +99,6 @@ private:
int resizeOnColumn = 0; int resizeOnColumn = 0;
Task * loadTask; Task * loadTask;
bool preselectedAlready = false; bool preselectedAlready = false;
bool focusSearch;
QVBoxLayout *verticalLayout = nullptr; QVBoxLayout *verticalLayout = nullptr;
VersionListView *listView = nullptr; VersionListView *listView = nullptr;