aboutsummaryrefslogtreecommitdiff
path: root/launcher/ui/dialogs
diff options
context:
space:
mode:
authorTheKodeToad <TheKodeToad@proton.me>2023-07-01 17:02:39 +0100
committerTheKodeToad <TheKodeToad@proton.me>2023-07-01 19:39:04 +0100
commit4cdf669154327b764ea2f7371e3d29f71d06daa7 (patch)
treeedc6f68e8a64faafd8c27f60a3de61ac5fffb148 /launcher/ui/dialogs
parent4332b62a6268e3093c957dfcbd652c5275228546 (diff)
downloadPrismLauncher-4cdf669154327b764ea2f7371e3d29f71d06daa7.tar.gz
PrismLauncher-4cdf669154327b764ea2f7371e3d29f71d06daa7.tar.bz2
PrismLauncher-4cdf669154327b764ea2f7371e3d29f71d06daa7.zip
Modify "Change Version" to use "Install Loader" dialog
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
Diffstat (limited to 'launcher/ui/dialogs')
-rw-r--r--launcher/ui/dialogs/InstallLoaderDialog.cpp18
-rw-r--r--launcher/ui/dialogs/InstallLoaderDialog.h4
2 files changed, 16 insertions, 6 deletions
diff --git a/launcher/ui/dialogs/InstallLoaderDialog.cpp b/launcher/ui/dialogs/InstallLoaderDialog.cpp
index f62fb8c4..74b3ea92 100644
--- a/launcher/ui/dialogs/InstallLoaderDialog.cpp
+++ b/launcher/ui/dialogs/InstallLoaderDialog.cpp
@@ -74,7 +74,14 @@ class InstallLoaderPage : public VersionSelectWidget, public BasePage {
bool m_loaded = false;
};
-InstallLoaderDialog::InstallLoaderDialog(std::shared_ptr<PackProfile> profile, QWidget* parent)
+InstallLoaderPage* pageCast(BasePage* page)
+{
+ auto result = dynamic_cast<InstallLoaderPage*>(page);
+ Q_ASSERT(result != nullptr);
+ return result;
+}
+
+InstallLoaderDialog::InstallLoaderDialog(std::shared_ptr<PackProfile> profile, const QString& uid, QWidget* parent)
: QDialog(parent), m_profile(profile), m_container(new PageContainer(this)), m_buttons(new QDialogButtonBox(this))
{
auto layout = new QVBoxLayout(this);
@@ -86,7 +93,7 @@ InstallLoaderDialog::InstallLoaderDialog(std::shared_ptr<PackProfile> profile, Q
auto refreshButton = new QPushButton(tr("&Refresh"), this);
connect(refreshButton, &QPushButton::pressed, this, [this] {
- dynamic_cast<InstallLoaderPage*>(m_container->selectedPage())->loadList();
+ pageCast(m_container->selectedPage())->loadList();
});
buttonLayout->addWidget(refreshButton);
@@ -105,7 +112,10 @@ InstallLoaderDialog::InstallLoaderDialog(std::shared_ptr<PackProfile> profile, Q
[this](BasePage* previous, BasePage* selected) { updateAcceptButton(selected); });
updateAcceptButton(m_container->selectedPage());
- dynamic_cast<InstallLoaderPage*>(m_container->selectedPage())->selectSearch();
+ pageCast(m_container->selectedPage())->selectSearch();
+ for (BasePage* page : m_container->getPages())
+ if (page->id() == uid)
+ m_container->selectPage(page->id());
}
QList<BasePage*> InstallLoaderDialog::getPages()
@@ -135,7 +145,7 @@ void InstallLoaderDialog::updateAcceptButton(const BasePage* page)
void InstallLoaderDialog::done(int result)
{
if (result == Accepted) {
- auto* page = dynamic_cast<InstallLoaderPage*>(m_container->selectedPage());
+ auto* page = pageCast(m_container->selectedPage());
if (page->selectedVersion()) {
m_profile->setComponentVersion(page->id(), page->selectedVersion()->descriptor());
m_profile->resolve(Net::Mode::Online);
diff --git a/launcher/ui/dialogs/InstallLoaderDialog.h b/launcher/ui/dialogs/InstallLoaderDialog.h
index 6c8762dc..24064eaa 100644
--- a/launcher/ui/dialogs/InstallLoaderDialog.h
+++ b/launcher/ui/dialogs/InstallLoaderDialog.h
@@ -26,11 +26,11 @@ class PageContainer;
class PackProfile;
class QDialogButtonBox;
-class InstallLoaderDialog : public QDialog, public BasePageProvider {
+class InstallLoaderDialog final : public QDialog, public BasePageProvider {
Q_OBJECT
public:
- explicit InstallLoaderDialog(std::shared_ptr<PackProfile> instance, QWidget* parent = nullptr);
+ explicit InstallLoaderDialog(std::shared_ptr<PackProfile> instance, const QString& uid = QString(), QWidget* parent = nullptr);
QList<BasePage*> getPages() override;
QString dialogTitle() override;