summaryrefslogtreecommitdiffstats
path: root/application
diff options
context:
space:
mode:
authorPetr Mrázek <peterix@gmail.com>2017-12-09 01:30:23 +0100
committerPetr Mrázek <peterix@gmail.com>2017-12-09 01:30:23 +0100
commitef2cbe16e611da68f3cb529f87f4ecb3038af161 (patch)
tree7e9c6f9ab45ae90891e64cc245547c4b8cb79b66 /application
parent57accb1cbb4a2deee050ded9f541faeacfbcc787 (diff)
downloadMultiMC-ef2cbe16e611da68f3cb529f87f4ecb3038af161.tar
MultiMC-ef2cbe16e611da68f3cb529f87f4ecb3038af161.tar.gz
MultiMC-ef2cbe16e611da68f3cb529f87f4ecb3038af161.tar.lz
MultiMC-ef2cbe16e611da68f3cb529f87f4ecb3038af161.tar.xz
MultiMC-ef2cbe16e611da68f3cb529f87f4ecb3038af161.zip
NOISSUE when there is a version added already, preselect it in the version select dialog
Diffstat (limited to 'application')
-rw-r--r--application/VersionProxyModel.cpp18
-rw-r--r--application/VersionProxyModel.h1
-rw-r--r--application/dialogs/VersionSelectDialog.cpp6
-rw-r--r--application/dialogs/VersionSelectDialog.h3
-rw-r--r--application/pages/VersionPage.cpp19
-rw-r--r--application/widgets/VersionSelectWidget.cpp25
-rw-r--r--application/widgets/VersionSelectWidget.h4
7 files changed, 73 insertions, 3 deletions
diff --git a/application/VersionProxyModel.cpp b/application/VersionProxyModel.cpp
index 96bdc9ab..0dbc4ef6 100644
--- a/application/VersionProxyModel.cpp
+++ b/application/VersionProxyModel.cpp
@@ -369,6 +369,24 @@ QModelIndex VersionProxyModel::getRecommended() const
return index(recommended, 0);
}
+QModelIndex VersionProxyModel::getVersion(const QString& version) const
+{
+ int found = -1;
+ for (int i = 0; i < rowCount(); i++)
+ {
+ auto value = sourceModel()->data(mapToSource(index(i, 0)), BaseVersionList::VersionRole);
+ if (value.toString() == version)
+ {
+ found = i;
+ }
+ }
+ if(found == -1)
+ {
+ return QModelIndex();
+ }
+ return index(found, 0);
+}
+
void VersionProxyModel::clearFilters()
{
m_filters.clear();
diff --git a/application/VersionProxyModel.h b/application/VersionProxyModel.h
index 19e89271..4441ea6b 100644
--- a/application/VersionProxyModel.h
+++ b/application/VersionProxyModel.h
@@ -42,6 +42,7 @@ public:
void setFilter(const BaseVersionList::ModelRoles column, const QString &filter, const bool exact);
void clearFilters();
QModelIndex getRecommended() const;
+ QModelIndex getVersion(const QString & version) const;
private slots:
void sourceDataChanged(const QModelIndex &source_top_left,const QModelIndex &source_bottom_right);
diff --git a/application/dialogs/VersionSelectDialog.cpp b/application/dialogs/VersionSelectDialog.cpp
index de525d89..e0191f0a 100644
--- a/application/dialogs/VersionSelectDialog.cpp
+++ b/application/dialogs/VersionSelectDialog.cpp
@@ -83,6 +83,12 @@ void VersionSelectDialog::retranslate()
m_refreshButton->setText(tr("&Refresh"));
}
+void VersionSelectDialog::setCurrentVersion(const QString& version)
+{
+ m_currentVersion = version;
+ m_versionWidget->setCurrentVersion(version);
+}
+
void VersionSelectDialog::setEmptyString(QString emptyString)
{
m_versionWidget->setEmptyString(emptyString);
diff --git a/application/dialogs/VersionSelectDialog.h b/application/dialogs/VersionSelectDialog.h
index 4b13a57b..051e96a2 100644
--- a/application/dialogs/VersionSelectDialog.h
+++ b/application/dialogs/VersionSelectDialog.h
@@ -46,12 +46,12 @@ public:
BaseVersionPtr selectedVersion() const;
+ void setCurrentVersion(const QString & version);
void setFuzzyFilter(BaseVersionList::ModelRoles role, QString filter);
void setExactFilter(BaseVersionList::ModelRoles role, QString filter);
void setEmptyString(QString emptyString);
void setEmptyErrorString(QString emptyErrorString);
void setResizeOn(int column);
- void setUseLatest(const bool useLatest);
private slots:
void on_refreshButton_clicked();
@@ -61,6 +61,7 @@ private:
void selectRecommended();
private:
+ QString m_currentVersion;
VersionSelectWidget *m_versionWidget = nullptr;
QVBoxLayout *m_verticalLayout = nullptr;
QHBoxLayout *m_horizontalLayout = nullptr;
diff --git a/application/pages/VersionPage.cpp b/application/pages/VersionPage.cpp
index 632c3734..a4abcd60 100644
--- a/application/pages/VersionPage.cpp
+++ b/application/pages/VersionPage.cpp
@@ -315,6 +315,11 @@ void VersionPage::on_changeVersionBtn_clicked()
return;
}
VersionSelectDialog vselect(list.get(), tr("Change %1 version").arg(name), this);
+ auto currentVersion = patch->getVersion();
+ if(!currentVersion.isEmpty())
+ {
+ vselect.setCurrentVersion(currentVersion);
+ }
if (!vselect.exec() || !vselect.selectedVersion())
return;
@@ -379,6 +384,13 @@ void VersionPage::on_forgeBtn_clicked()
vselect.setExactFilter(BaseVersionList::ParentVersionRole, m_profile->getComponentVersion("net.minecraft"));
vselect.setEmptyString(tr("No Forge versions are currently available for Minecraft ") + m_profile->getComponentVersion("net.minecraft"));
vselect.setEmptyErrorString(tr("Couldn't load or download the Forge version lists!"));
+
+ auto currentVersion = m_profile->getComponentVersion("net.minecraftforge");
+ if(!currentVersion.isEmpty())
+ {
+ vselect.setCurrentVersion(currentVersion);
+ }
+
if (vselect.exec() && vselect.selectedVersion())
{
auto vsn = vselect.selectedVersion();
@@ -439,6 +451,13 @@ void VersionPage::on_liteloaderBtn_clicked()
vselect.setExactFilter(BaseVersionList::ParentVersionRole, m_profile->getComponentVersion("net.minecraft"));
vselect.setEmptyString(tr("No LiteLoader versions are currently available for Minecraft ") + m_profile->getComponentVersion("net.minecraft"));
vselect.setEmptyErrorString(tr("Couldn't load or download the LiteLoader version lists!"));
+
+ auto currentVersion = m_profile->getComponentVersion("com.mumfrey.liteloader");
+ if(!currentVersion.isEmpty())
+ {
+ vselect.setCurrentVersion(currentVersion);
+ }
+
if (vselect.exec() && vselect.selectedVersion())
{
auto vsn = vselect.selectedVersion();
diff --git a/application/widgets/VersionSelectWidget.cpp b/application/widgets/VersionSelectWidget.cpp
index 1696d9d1..2a7cbfb7 100644
--- a/application/widgets/VersionSelectWidget.cpp
+++ b/application/widgets/VersionSelectWidget.cpp
@@ -41,6 +41,11 @@ VersionSelectWidget::VersionSelectWidget(BaseVersionList* vlist, QWidget* parent
QMetaObject::connectSlotsByName(this);
}
+void VersionSelectWidget::setCurrentVersion(const QString& version)
+{
+ m_currentVersion = version;
+}
+
void VersionSelectWidget::setEmptyString(QString emptyString)
{
listView->setEmptyString(emptyString);
@@ -134,15 +139,33 @@ void VersionSelectWidget::preselect()
{
if(preselectedAlready)
return;
- preselectedAlready = true;
+ selectCurrent();
+ if(preselectedAlready)
+ return;
selectRecommended();
}
+void VersionSelectWidget::selectCurrent()
+{
+ if(m_currentVersion.isEmpty())
+ {
+ return;
+ }
+ auto idx = m_proxyModel->getVersion(m_currentVersion);
+ if(idx.isValid())
+ {
+ preselectedAlready = true;
+ listView->selectionModel()->setCurrentIndex(idx,QItemSelectionModel::SelectCurrent | QItemSelectionModel::Rows);
+ listView->scrollTo(idx, QAbstractItemView::PositionAtCenter);
+ }
+}
+
void VersionSelectWidget::selectRecommended()
{
auto idx = m_proxyModel->getRecommended();
if(idx.isValid())
{
+ preselectedAlready = true;
listView->selectionModel()->setCurrentIndex(idx,QItemSelectionModel::SelectCurrent | QItemSelectionModel::Rows);
listView->scrollTo(idx, QAbstractItemView::PositionAtCenter);
}
diff --git a/application/widgets/VersionSelectWidget.h b/application/widgets/VersionSelectWidget.h
index 66e512ac..0840e27a 100644
--- a/application/widgets/VersionSelectWidget.h
+++ b/application/widgets/VersionSelectWidget.h
@@ -40,13 +40,14 @@ public:
bool hasVersions() const;
BaseVersionPtr selectedVersion() const;
void selectRecommended();
+ void selectCurrent();
+ void setCurrentVersion(const QString & version);
void setFuzzyFilter(BaseVersionList::ModelRoles role, QString filter);
void setExactFilter(BaseVersionList::ModelRoles role, QString filter);
void setEmptyString(QString emptyString);
void setEmptyErrorString(QString emptyErrorString);
void setResizeOn(int column);
- void setUseLatest(const bool useLatest);
signals:
void selectedVersionChanged(BaseVersionPtr version);
@@ -64,6 +65,7 @@ private:
void preselect();
private:
+ QString m_currentVersion;
BaseVersionList *m_vlist = nullptr;
VersionProxyModel *m_proxyModel = nullptr;
int resizeOnColumn = 0;