Added progress widget to some modpack providers
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
This commit is contained in:
parent
05094b7382
commit
4036cecfc0
@ -41,6 +41,7 @@ class ListModel : public QAbstractListModel {
|
|||||||
void searchWithTerm(const QString& term, const int sort);
|
void searchWithTerm(const QString& term, const int sort);
|
||||||
|
|
||||||
[[nodiscard]] bool hasActiveSearchJob() const { return jobPtr && jobPtr->isRunning(); }
|
[[nodiscard]] bool hasActiveSearchJob() const { return jobPtr && jobPtr->isRunning(); }
|
||||||
|
[[nodiscard]] Task::Ptr activeSearchJob() { return hasActiveSearchJob() ? jobPtr : nullptr; }
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void performPaginatedSearch();
|
void performPaginatedSearch();
|
||||||
|
@ -50,7 +50,8 @@
|
|||||||
|
|
||||||
static FlameAPI api;
|
static FlameAPI api;
|
||||||
|
|
||||||
FlamePage::FlamePage(NewInstanceDialog* dialog, QWidget* parent) : QWidget(parent), ui(new Ui::FlamePage), dialog(dialog)
|
FlamePage::FlamePage(NewInstanceDialog* dialog, QWidget* parent)
|
||||||
|
: QWidget(parent), ui(new Ui::FlamePage), dialog(dialog), m_fetch_progress(this, false)
|
||||||
{
|
{
|
||||||
ui->setupUi(this);
|
ui->setupUi(this);
|
||||||
connect(ui->searchButton, &QPushButton::clicked, this, &FlamePage::triggerSearch);
|
connect(ui->searchButton, &QPushButton::clicked, this, &FlamePage::triggerSearch);
|
||||||
@ -66,6 +67,12 @@ FlamePage::FlamePage(NewInstanceDialog* dialog, QWidget* parent) : QWidget(paren
|
|||||||
|
|
||||||
connect(&m_search_timer, &QTimer::timeout, this, &FlamePage::triggerSearch);
|
connect(&m_search_timer, &QTimer::timeout, this, &FlamePage::triggerSearch);
|
||||||
|
|
||||||
|
m_fetch_progress.hideIfInactive(true);
|
||||||
|
m_fetch_progress.setFixedHeight(24);
|
||||||
|
m_fetch_progress.progressFormat("");
|
||||||
|
|
||||||
|
ui->gridLayout->addWidget(&m_fetch_progress, 2, 0, 1, ui->gridLayout->columnCount());
|
||||||
|
|
||||||
// index is used to set the sorting with the curseforge api
|
// index is used to set the sorting with the curseforge api
|
||||||
ui->sortByBox->addItem(tr("Sort by Featured"));
|
ui->sortByBox->addItem(tr("Sort by Featured"));
|
||||||
ui->sortByBox->addItem(tr("Sort by Popularity"));
|
ui->sortByBox->addItem(tr("Sort by Popularity"));
|
||||||
@ -124,6 +131,7 @@ void FlamePage::openedImpl()
|
|||||||
void FlamePage::triggerSearch()
|
void FlamePage::triggerSearch()
|
||||||
{
|
{
|
||||||
listModel->searchWithTerm(ui->searchEdit->text(), ui->sortByBox->currentIndex());
|
listModel->searchWithTerm(ui->searchEdit->text(), ui->sortByBox->currentIndex());
|
||||||
|
m_fetch_progress.watch(listModel->activeSearchJob().get());
|
||||||
}
|
}
|
||||||
|
|
||||||
void FlamePage::onSelectionChanged(QModelIndex curr, [[maybe_unused]] QModelIndex prev)
|
void FlamePage::onSelectionChanged(QModelIndex curr, [[maybe_unused]] QModelIndex prev)
|
||||||
|
@ -41,6 +41,7 @@
|
|||||||
#include <modplatform/flame/FlamePackIndex.h>
|
#include <modplatform/flame/FlamePackIndex.h>
|
||||||
#include <QTimer>
|
#include <QTimer>
|
||||||
#include "ui/pages/BasePage.h"
|
#include "ui/pages/BasePage.h"
|
||||||
|
#include "ui/widgets/ProgressWidget.h"
|
||||||
|
|
||||||
namespace Ui {
|
namespace Ui {
|
||||||
class FlamePage;
|
class FlamePage;
|
||||||
@ -87,6 +88,8 @@ class FlamePage : public QWidget, public BasePage {
|
|||||||
|
|
||||||
int m_selected_version_index = -1;
|
int m_selected_version_index = -1;
|
||||||
|
|
||||||
|
ProgressWidget m_fetch_progress;
|
||||||
|
|
||||||
// Used to do instant searching with a delay to cache quick changes
|
// Used to do instant searching with a delay to cache quick changes
|
||||||
QTimer m_search_timer;
|
QTimer m_search_timer;
|
||||||
};
|
};
|
||||||
|
@ -47,7 +47,7 @@
|
|||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</item>
|
</item>
|
||||||
<item row="2" column="0">
|
<item row="3" column="0">
|
||||||
<layout class="QHBoxLayout">
|
<layout class="QHBoxLayout">
|
||||||
<item>
|
<item>
|
||||||
<widget class="QListView" name="packView">
|
<widget class="QListView" name="packView">
|
||||||
@ -77,7 +77,7 @@
|
|||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</item>
|
</item>
|
||||||
<item row="3" column="0">
|
<item row="4" column="0">
|
||||||
<layout class="QHBoxLayout">
|
<layout class="QHBoxLayout">
|
||||||
<item>
|
<item>
|
||||||
<widget class="QComboBox" name="sortByBox"/>
|
<widget class="QComboBox" name="sortByBox"/>
|
||||||
|
@ -74,6 +74,7 @@ class ModpackListModel : public QAbstractListModel {
|
|||||||
void searchWithTerm(const QString& term, const int sort);
|
void searchWithTerm(const QString& term, const int sort);
|
||||||
|
|
||||||
[[nodiscard]] bool hasActiveSearchJob() const { return jobPtr && jobPtr->isRunning(); }
|
[[nodiscard]] bool hasActiveSearchJob() const { return jobPtr && jobPtr->isRunning(); }
|
||||||
|
[[nodiscard]] Task::Ptr activeSearchJob() { return hasActiveSearchJob() ? jobPtr : nullptr; }
|
||||||
|
|
||||||
void getLogo(const QString& logo, const QString& logoUrl, LogoCallback callback);
|
void getLogo(const QString& logo, const QString& logoUrl, LogoCallback callback);
|
||||||
|
|
||||||
|
@ -52,7 +52,8 @@
|
|||||||
#include <QKeyEvent>
|
#include <QKeyEvent>
|
||||||
#include <QPushButton>
|
#include <QPushButton>
|
||||||
|
|
||||||
ModrinthPage::ModrinthPage(NewInstanceDialog* dialog, QWidget* parent) : QWidget(parent), ui(new Ui::ModrinthPage), dialog(dialog)
|
ModrinthPage::ModrinthPage(NewInstanceDialog* dialog, QWidget* parent)
|
||||||
|
: QWidget(parent), ui(new Ui::ModrinthPage), dialog(dialog), m_fetch_progress(this, false)
|
||||||
{
|
{
|
||||||
ui->setupUi(this);
|
ui->setupUi(this);
|
||||||
|
|
||||||
@ -69,6 +70,12 @@ ModrinthPage::ModrinthPage(NewInstanceDialog* dialog, QWidget* parent) : QWidget
|
|||||||
|
|
||||||
connect(&m_search_timer, &QTimer::timeout, this, &ModrinthPage::triggerSearch);
|
connect(&m_search_timer, &QTimer::timeout, this, &ModrinthPage::triggerSearch);
|
||||||
|
|
||||||
|
m_fetch_progress.hideIfInactive(true);
|
||||||
|
m_fetch_progress.setFixedHeight(24);
|
||||||
|
m_fetch_progress.progressFormat("");
|
||||||
|
|
||||||
|
ui->gridLayout->addWidget(&m_fetch_progress, 2, 0, 1, ui->gridLayout->columnCount());
|
||||||
|
|
||||||
ui->sortByBox->addItem(tr("Sort by Relevance"));
|
ui->sortByBox->addItem(tr("Sort by Relevance"));
|
||||||
ui->sortByBox->addItem(tr("Sort by Total Downloads"));
|
ui->sortByBox->addItem(tr("Sort by Total Downloads"));
|
||||||
ui->sortByBox->addItem(tr("Sort by Follows"));
|
ui->sortByBox->addItem(tr("Sort by Follows"));
|
||||||
@ -319,6 +326,7 @@ void ModrinthPage::suggestCurrent()
|
|||||||
void ModrinthPage::triggerSearch()
|
void ModrinthPage::triggerSearch()
|
||||||
{
|
{
|
||||||
m_model->searchWithTerm(ui->searchEdit->text(), ui->sortByBox->currentIndex());
|
m_model->searchWithTerm(ui->searchEdit->text(), ui->sortByBox->currentIndex());
|
||||||
|
m_fetch_progress.watch(m_model->activeSearchJob().get());
|
||||||
}
|
}
|
||||||
|
|
||||||
void ModrinthPage::onVersionSelectionChanged(QString version)
|
void ModrinthPage::onVersionSelectionChanged(QString version)
|
||||||
|
@ -41,6 +41,7 @@
|
|||||||
#include "ui/pages/BasePage.h"
|
#include "ui/pages/BasePage.h"
|
||||||
|
|
||||||
#include "modplatform/modrinth/ModrinthPackManifest.h"
|
#include "modplatform/modrinth/ModrinthPackManifest.h"
|
||||||
|
#include "ui/widgets/ProgressWidget.h"
|
||||||
|
|
||||||
#include <QTimer>
|
#include <QTimer>
|
||||||
#include <QWidget>
|
#include <QWidget>
|
||||||
@ -90,6 +91,8 @@ class ModrinthPage : public QWidget, public BasePage {
|
|||||||
Modrinth::Modpack current;
|
Modrinth::Modpack current;
|
||||||
QString selectedVersion;
|
QString selectedVersion;
|
||||||
|
|
||||||
|
ProgressWidget m_fetch_progress;
|
||||||
|
|
||||||
// Used to do instant searching with a delay to cache quick changes
|
// Used to do instant searching with a delay to cache quick changes
|
||||||
QTimer m_search_timer;
|
QTimer m_search_timer;
|
||||||
};
|
};
|
||||||
|
@ -10,8 +10,8 @@
|
|||||||
<height>600</height>
|
<height>600</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QVBoxLayout">
|
<layout class="QGridLayout" name="gridLayout">
|
||||||
<item>
|
<item row="0" column="0">
|
||||||
<widget class="QLabel" name="label_2">
|
<widget class="QLabel" name="label_2">
|
||||||
<property name="font">
|
<property name="font">
|
||||||
<font>
|
<font>
|
||||||
@ -29,7 +29,7 @@
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item row="1" column="0">
|
||||||
<layout class="QHBoxLayout">
|
<layout class="QHBoxLayout">
|
||||||
<item>
|
<item>
|
||||||
<widget class="QLineEdit" name="searchEdit">
|
<widget class="QLineEdit" name="searchEdit">
|
||||||
@ -47,7 +47,7 @@
|
|||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item row="3" column="0">
|
||||||
<layout class="QHBoxLayout">
|
<layout class="QHBoxLayout">
|
||||||
<item>
|
<item>
|
||||||
<widget class="QListView" name="packView">
|
<widget class="QListView" name="packView">
|
||||||
@ -77,7 +77,7 @@
|
|||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item row="4" column="0">
|
||||||
<layout class="QHBoxLayout">
|
<layout class="QHBoxLayout">
|
||||||
<item>
|
<item>
|
||||||
<widget class="QComboBox" name="sortByBox"/>
|
<widget class="QComboBox" name="sortByBox"/>
|
||||||
|
@ -59,6 +59,7 @@ class ListModel : public QAbstractListModel {
|
|||||||
void searchWithTerm(const QString& term);
|
void searchWithTerm(const QString& term);
|
||||||
|
|
||||||
[[nodiscard]] bool hasActiveSearchJob() const { return jobPtr && jobPtr->isRunning(); }
|
[[nodiscard]] bool hasActiveSearchJob() const { return jobPtr && jobPtr->isRunning(); }
|
||||||
|
[[nodiscard]] Task::Ptr activeSearchJob() { return hasActiveSearchJob() ? jobPtr : nullptr; }
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void searchRequestFinished();
|
void searchRequestFinished();
|
||||||
|
@ -52,7 +52,8 @@
|
|||||||
|
|
||||||
#include "net/ApiDownload.h"
|
#include "net/ApiDownload.h"
|
||||||
|
|
||||||
TechnicPage::TechnicPage(NewInstanceDialog* dialog, QWidget* parent) : QWidget(parent), ui(new Ui::TechnicPage), dialog(dialog)
|
TechnicPage::TechnicPage(NewInstanceDialog* dialog, QWidget* parent)
|
||||||
|
: QWidget(parent), ui(new Ui::TechnicPage), dialog(dialog), m_fetch_progress(this, false)
|
||||||
{
|
{
|
||||||
ui->setupUi(this);
|
ui->setupUi(this);
|
||||||
connect(ui->searchButton, &QPushButton::clicked, this, &TechnicPage::triggerSearch);
|
connect(ui->searchButton, &QPushButton::clicked, this, &TechnicPage::triggerSearch);
|
||||||
@ -65,6 +66,12 @@ TechnicPage::TechnicPage(NewInstanceDialog* dialog, QWidget* parent) : QWidget(p
|
|||||||
|
|
||||||
connect(&m_search_timer, &QTimer::timeout, this, &TechnicPage::triggerSearch);
|
connect(&m_search_timer, &QTimer::timeout, this, &TechnicPage::triggerSearch);
|
||||||
|
|
||||||
|
m_fetch_progress.hideIfInactive(true);
|
||||||
|
m_fetch_progress.setFixedHeight(24);
|
||||||
|
m_fetch_progress.progressFormat("");
|
||||||
|
|
||||||
|
ui->gridLayout->addWidget(&m_fetch_progress, 2, 0, 1, ui->gridLayout->columnCount());
|
||||||
|
|
||||||
connect(ui->packView->selectionModel(), &QItemSelectionModel::currentChanged, this, &TechnicPage::onSelectionChanged);
|
connect(ui->packView->selectionModel(), &QItemSelectionModel::currentChanged, this, &TechnicPage::onSelectionChanged);
|
||||||
connect(ui->versionSelectionBox, &QComboBox::currentTextChanged, this, &TechnicPage::onVersionSelectionChanged);
|
connect(ui->versionSelectionBox, &QComboBox::currentTextChanged, this, &TechnicPage::onVersionSelectionChanged);
|
||||||
|
|
||||||
@ -113,6 +120,7 @@ void TechnicPage::openedImpl()
|
|||||||
void TechnicPage::triggerSearch()
|
void TechnicPage::triggerSearch()
|
||||||
{
|
{
|
||||||
model->searchWithTerm(ui->searchEdit->text());
|
model->searchWithTerm(ui->searchEdit->text());
|
||||||
|
m_fetch_progress.watch(model->activeSearchJob().get());
|
||||||
}
|
}
|
||||||
|
|
||||||
void TechnicPage::onSelectionChanged(QModelIndex first, [[maybe_unused]] QModelIndex second)
|
void TechnicPage::onSelectionChanged(QModelIndex first, [[maybe_unused]] QModelIndex second)
|
||||||
|
@ -42,6 +42,7 @@
|
|||||||
#include "TechnicData.h"
|
#include "TechnicData.h"
|
||||||
#include "net/NetJob.h"
|
#include "net/NetJob.h"
|
||||||
#include "ui/pages/BasePage.h"
|
#include "ui/pages/BasePage.h"
|
||||||
|
#include "ui/widgets/ProgressWidget.h"
|
||||||
|
|
||||||
namespace Ui {
|
namespace Ui {
|
||||||
class TechnicPage;
|
class TechnicPage;
|
||||||
@ -92,6 +93,8 @@ class TechnicPage : public QWidget, public BasePage {
|
|||||||
NetJob::Ptr jobPtr;
|
NetJob::Ptr jobPtr;
|
||||||
std::shared_ptr<QByteArray> response = std::make_shared<QByteArray>();
|
std::shared_ptr<QByteArray> response = std::make_shared<QByteArray>();
|
||||||
|
|
||||||
|
ProgressWidget m_fetch_progress;
|
||||||
|
|
||||||
// Used to do instant searching with a delay to cache quick changes
|
// Used to do instant searching with a delay to cache quick changes
|
||||||
QTimer m_search_timer;
|
QTimer m_search_timer;
|
||||||
};
|
};
|
||||||
|
@ -11,7 +11,7 @@
|
|||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QGridLayout" name="gridLayout">
|
<layout class="QGridLayout" name="gridLayout">
|
||||||
<item row="3" column="0" colspan="2">
|
<item row="4" column="0" colspan="2">
|
||||||
<layout class="QGridLayout" name="gridLayout_3">
|
<layout class="QGridLayout" name="gridLayout_3">
|
||||||
<item row="0" column="2">
|
<item row="0" column="2">
|
||||||
<widget class="QComboBox" name="versionSelectionBox"/>
|
<widget class="QComboBox" name="versionSelectionBox"/>
|
||||||
@ -44,7 +44,7 @@
|
|||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</item>
|
</item>
|
||||||
<item row="2" column="0" colspan="2">
|
<item row="3" column="0" colspan="2">
|
||||||
<layout class="QGridLayout" name="gridLayout_2">
|
<layout class="QGridLayout" name="gridLayout_2">
|
||||||
<item row="0" column="0">
|
<item row="0" column="0">
|
||||||
<widget class="QListView" name="packView">
|
<widget class="QListView" name="packView">
|
||||||
|
Loading…
Reference in New Issue
Block a user