forked from PrismLauncher/PrismLauncher
-
Notifications
You must be signed in to change notification settings - Fork 45
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'PrismLauncher:develop' into develop
- Loading branch information
Showing
9 changed files
with
140 additions
and
50 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,7 +1,8 @@ | ||
// SPDX-License-Identifier: GPL-3.0-only | ||
/* | ||
* PolyMC - Minecraft Launcher | ||
* Prism Launcher - Minecraft Launcher | ||
* Copyright (C) 2022 Sefa Eyeoglu <[email protected]> | ||
* Copyright (C) 2023 TheKodeToad <[email protected]> | ||
* | ||
* This program is free software: you can redistribute it and/or modify | ||
* it under the terms of the GNU General Public License as published by | ||
|
@@ -54,9 +55,14 @@ class VersionFilterModel : public QSortFilterProxyModel | |
bool filterAcceptsRow(int source_row, const QModelIndex &source_parent) const | ||
{ | ||
const auto &filters = m_parent->filters(); | ||
const QString &search = m_parent->search(); | ||
const QModelIndex idx = sourceModel()->index(source_row, 0, source_parent); | ||
|
||
if (!search.isEmpty() && !sourceModel()->data(idx, BaseVersionList::VersionRole).toString().contains(search, Qt::CaseInsensitive)) | ||
return false; | ||
|
||
for (auto it = filters.begin(); it != filters.end(); ++it) | ||
{ | ||
auto idx = sourceModel()->index(source_row, 0, source_parent); | ||
auto data = sourceModel()->data(idx, it.key()); | ||
auto match = data.toString(); | ||
if(!it.value()->accepts(match)) | ||
|
@@ -206,10 +212,6 @@ QVariant VersionProxyModel::data(const QModelIndex &index, int role) const | |
return tr("Latest"); | ||
} | ||
} | ||
else if(index.row() == 0) | ||
{ | ||
return tr("Latest"); | ||
} | ||
} | ||
} | ||
default: | ||
|
@@ -239,10 +241,6 @@ QVariant VersionProxyModel::data(const QModelIndex &index, int role) const | |
return APPLICATION->getThemedIcon("bug"); | ||
} | ||
} | ||
else if(index.row() == 0) | ||
{ | ||
return APPLICATION->getThemedIcon("bug"); | ||
} | ||
QPixmap pixmap; | ||
QPixmapCache::find("placeholder", &pixmap); | ||
if(!pixmap) | ||
|
@@ -431,6 +429,7 @@ QModelIndex VersionProxyModel::getVersion(const QString& version) const | |
void VersionProxyModel::clearFilters() | ||
{ | ||
m_filters.clear(); | ||
m_search.clear(); | ||
filterModel->filterChanged(); | ||
} | ||
|
||
|
@@ -440,11 +439,21 @@ void VersionProxyModel::setFilter(const BaseVersionList::ModelRoles column, Filt | |
filterModel->filterChanged(); | ||
} | ||
|
||
void VersionProxyModel::setSearch(const QString &search) { | ||
m_search = search; | ||
filterModel->filterChanged(); | ||
} | ||
|
||
const VersionProxyModel::FilterMap &VersionProxyModel::filters() const | ||
{ | ||
return m_filters; | ||
} | ||
|
||
const QString &VersionProxyModel::search() const | ||
{ | ||
return m_search; | ||
} | ||
|
||
void VersionProxyModel::sourceAboutToBeReset() | ||
{ | ||
beginResetModel(); | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,7 +1,8 @@ | ||
// SPDX-License-Identifier: GPL-3.0-only | ||
/* | ||
* PolyMC - Minecraft Launcher | ||
* Prism Launcher - Minecraft Launcher | ||
* Copyright (C) 2022 Sefa Eyeoglu <[email protected]> | ||
* Copyright (C) 2023 TheKodeToad <[email protected]> | ||
* | ||
* This program is free software: you can redistribute it and/or modify | ||
* it under the terms of the GNU General Public License as published by | ||
|
@@ -98,6 +99,8 @@ QVariant JavaInstallList::data(const QModelIndex &index, int role) const | |
auto version = std::dynamic_pointer_cast<JavaInstall>(m_vlist[index.row()]); | ||
switch (role) | ||
{ | ||
case SortRole: | ||
return -index.row(); | ||
case VersionPointerRole: | ||
return QVariant::fromValue(m_vlist[index.row()]); | ||
case VersionIdRole: | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,16 +1,36 @@ | ||
/* Copyright 2013-2021 MultiMC Contributors | ||
// SPDX-License-Identifier: GPL-3.0-only | ||
/* | ||
* Prism Launcher - Minecraft Launcher | ||
* Copyright (C) 2023 TheKodeToad <[email protected]> | ||
* | ||
* Licensed under the Apache License, Version 2.0 (the "License"); | ||
* you may not use this file except in compliance with the License. | ||
* You may obtain a copy of the License at | ||
* This program is free software: you can redistribute it and/or modify | ||
* it under the terms of the GNU General Public License as published by | ||
* the Free Software Foundation, version 3. | ||
* | ||
* http://www.apache.org/licenses/LICENSE-2.0 | ||
* This program is distributed in the hope that it will be useful, | ||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
* GNU General Public License for more details. | ||
* | ||
* Unless required by applicable law or agreed to in writing, software | ||
* distributed under the License is distributed on an "AS IS" BASIS, | ||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
* See the License for the specific language governing permissions and | ||
* limitations under the License. | ||
* You should have received a copy of the GNU General Public License | ||
* along with this program. If not, see <https://www.gnu.org/licenses/>. | ||
* | ||
* This file incorporates work covered by the following copyright and | ||
* permission notice: | ||
* | ||
* Copyright 2013-2021 MultiMC Contributors | ||
* | ||
* Licensed under the Apache License, Version 2.0 (the "License"); | ||
* you may not use this file except in compliance with the License. | ||
* You may obtain a copy of the License at | ||
* | ||
* http://www.apache.org/licenses/LICENSE-2.0 | ||
* | ||
* Unless required by applicable law or agreed to in writing, software | ||
* distributed under the License is distributed on an "AS IS" BASIS, | ||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
* See the License for the specific language governing permissions and | ||
* limitations under the License. | ||
*/ | ||
|
||
#include "VersionSelectDialog.h" | ||
|
@@ -22,15 +42,10 @@ | |
#include <QtWidgets/QVBoxLayout> | ||
#include <QDebug> | ||
|
||
#include "ui/dialogs/ProgressDialog.h" | ||
#include "ui/widgets/VersionSelectWidget.h" | ||
#include "ui/dialogs/CustomMessageBox.h" | ||
|
||
#include "BaseVersion.h" | ||
#include "BaseVersionList.h" | ||
#include "tasks/Task.h" | ||
#include "Application.h" | ||
#include "VersionProxyModel.h" | ||
|
||
VersionSelectDialog::VersionSelectDialog(BaseVersionList *vlist, QString title, QWidget *parent, bool cancelable) | ||
: QDialog(parent) | ||
|
@@ -40,7 +55,7 @@ VersionSelectDialog::VersionSelectDialog(BaseVersionList *vlist, QString title, | |
m_verticalLayout = new QVBoxLayout(this); | ||
m_verticalLayout->setObjectName(QStringLiteral("verticalLayout")); | ||
|
||
m_versionWidget = new VersionSelectWidget(parent); | ||
m_versionWidget = new VersionSelectWidget(true, parent); | ||
m_verticalLayout->addWidget(m_versionWidget); | ||
|
||
m_horizontalLayout = new QHBoxLayout(); | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,7 +1,8 @@ | ||
// SPDX-License-Identifier: GPL-3.0-only | ||
/* | ||
* PolyMC - Minecraft Launcher | ||
* Prism Launcher - Minecraft Launcher | ||
* Copyright (C) 2022 Sefa Eyeoglu <[email protected]> | ||
* Copyright (C) 2023 TheKodeToad <[email protected]> | ||
* | ||
* This program is free software: you can redistribute it and/or modify | ||
* it under the terms of the GNU General Public License as published by | ||
|
@@ -125,14 +126,9 @@ void VersionListView::paintEvent(QPaintEvent *event) | |
|
||
QString VersionListView::currentEmptyString() const | ||
{ | ||
if(m_itemCount) { | ||
return QString(); | ||
} | ||
switch(m_emptyMode) | ||
{ | ||
default: | ||
case VersionListView::Empty: | ||
return QString(); | ||
case VersionListView::String: | ||
return m_emptyString; | ||
case VersionListView::ErrorString: | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,22 +1,43 @@ | ||
/* Copyright 2013-2021 MultiMC Contributors | ||
// SPDX-License-Identifier: GPL-3.0-only | ||
/* | ||
* Prism Launcher - Minecraft Launcher | ||
* Copyright (C) 2023 TheKodeToad <[email protected]> | ||
* | ||
* Licensed under the Apache License, Version 2.0 (the "License"); | ||
* you may not use this file except in compliance with the License. | ||
* You may obtain a copy of the License at | ||
* This program is free software: you can redistribute it and/or modify | ||
* it under the terms of the GNU General Public License as published by | ||
* the Free Software Foundation, version 3. | ||
* | ||
* http://www.apache.org/licenses/LICENSE-2.0 | ||
* This program is distributed in the hope that it will be useful, | ||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
* GNU General Public License for more details. | ||
* | ||
* Unless required by applicable law or agreed to in writing, software | ||
* distributed under the License is distributed on an "AS IS" BASIS, | ||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
* See the License for the specific language governing permissions and | ||
* limitations under the License. | ||
* You should have received a copy of the GNU General Public License | ||
* along with this program. If not, see <https://www.gnu.org/licenses/>. | ||
* | ||
* This file incorporates work covered by the following copyright and | ||
* permission notice: | ||
* | ||
* Copyright 2013-2021 MultiMC Contributors | ||
* | ||
* Licensed under the Apache License, Version 2.0 (the "License"); | ||
* you may not use this file except in compliance with the License. | ||
* You may obtain a copy of the License at | ||
* | ||
* http://www.apache.org/licenses/LICENSE-2.0 | ||
* | ||
* Unless required by applicable law or agreed to in writing, software | ||
* distributed under the License is distributed on an "AS IS" BASIS, | ||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
* See the License for the specific language governing permissions and | ||
* limitations under the License. | ||
*/ | ||
|
||
#pragma once | ||
|
||
#include <QWidget> | ||
#include <QSortFilterProxyModel> | ||
#include <QLineEdit> | ||
#include "BaseVersionList.h" | ||
#include "VersionListView.h" | ||
|
||
|
@@ -30,7 +51,8 @@ class VersionSelectWidget: public QWidget | |
{ | ||
Q_OBJECT | ||
public: | ||
explicit VersionSelectWidget(QWidget *parent = 0); | ||
explicit VersionSelectWidget(QWidget *parent); | ||
explicit VersionSelectWidget(bool focusSearch = false, QWidget *parent = 0); | ||
~VersionSelectWidget(); | ||
|
||
//! loads the list if needed. | ||
|
@@ -52,6 +74,7 @@ class VersionSelectWidget: public QWidget | |
void setEmptyErrorString(QString emptyErrorString); | ||
void setEmptyMode(VersionListView::EmptyMode mode); | ||
void setResizeOn(int column); | ||
bool eventFilter(QObject* watched, QEvent* event) override; | ||
|
||
signals: | ||
void selectedVersionChanged(BaseVersion::Ptr version); | ||
|
@@ -75,9 +98,10 @@ private slots: | |
int resizeOnColumn = 0; | ||
Task * loadTask; | ||
bool preselectedAlready = false; | ||
bool focusSearch; | ||
|
||
private: | ||
QVBoxLayout *verticalLayout = nullptr; | ||
VersionListView *listView = nullptr; | ||
QLineEdit *search; | ||
QProgressBar *sneakyProgressBar = nullptr; | ||
}; |