mirror of
https://github.com/RPCS3/rpcs3.git
synced 2024-11-23 03:02:53 +01:00
Qt: fix compat download abort
This commit is contained in:
parent
a4c4548c3a
commit
fd0e7a4efa
@ -123,6 +123,7 @@ void downloader::start(const std::string& url, bool follow_location, bool show_p
|
||||
{
|
||||
m_curl_abort = true;
|
||||
close_progress_dialog();
|
||||
Q_EMIT signal_download_canceled();
|
||||
});
|
||||
connect(m_progress_dialog, &QProgressDialog::finished, m_progress_dialog, &QProgressDialog::deleteLater);
|
||||
}
|
||||
|
@ -37,6 +37,7 @@ private Q_SLOTS:
|
||||
Q_SIGNALS:
|
||||
void signal_download_error(const QString& error);
|
||||
void signal_download_finished(const QByteArray& data);
|
||||
void signal_download_canceled();
|
||||
void signal_buffer_update(int size, int max);
|
||||
|
||||
private:
|
||||
|
@ -26,6 +26,7 @@ game_compatibility::game_compatibility(std::shared_ptr<gui_settings> gui_setting
|
||||
|
||||
connect(m_downloader, &downloader::signal_download_error, this, &game_compatibility::handle_download_error);
|
||||
connect(m_downloader, &downloader::signal_download_finished, this, &game_compatibility::handle_download_finished);
|
||||
connect(m_downloader, &downloader::signal_download_canceled, this, &game_compatibility::handle_download_canceled);
|
||||
}
|
||||
|
||||
void game_compatibility::handle_download_error(const QString& error)
|
||||
@ -40,9 +41,6 @@ void game_compatibility::handle_download_finished(const QByteArray& content)
|
||||
// Create new map from database and write database to file if database was valid
|
||||
if (ReadJSON(QJsonDocument::fromJson(content).object(), true))
|
||||
{
|
||||
// We have a new database in map, therefore refresh gamelist to new state
|
||||
Q_EMIT DownloadFinished();
|
||||
|
||||
// Write database to file
|
||||
QFile file(m_filepath);
|
||||
|
||||
@ -62,6 +60,14 @@ void game_compatibility::handle_download_finished(const QByteArray& content)
|
||||
|
||||
compat_log.success("Wrote database to file: %s", sstr(m_filepath));
|
||||
}
|
||||
|
||||
// We have a new database in map, therefore refresh gamelist to new state
|
||||
Q_EMIT DownloadFinished();
|
||||
}
|
||||
|
||||
void game_compatibility::handle_download_canceled()
|
||||
{
|
||||
Q_EMIT DownloadCanceled();
|
||||
}
|
||||
|
||||
bool game_compatibility::ReadJSON(const QJsonObject& json_data, bool after_download)
|
||||
|
@ -157,9 +157,11 @@ public:
|
||||
Q_SIGNALS:
|
||||
void DownloadStarted();
|
||||
void DownloadFinished();
|
||||
void DownloadCanceled();
|
||||
void DownloadError(const QString& error);
|
||||
|
||||
private Q_SLOTS:
|
||||
void handle_download_error(const QString& error);
|
||||
void handle_download_finished(const QByteArray& content);
|
||||
void handle_download_canceled();
|
||||
};
|
||||
|
@ -162,7 +162,7 @@ game_list_frame::game_list_frame(std::shared_ptr<gui_settings> gui_settings, std
|
||||
connect(m_game_list, &QTableWidget::itemDoubleClicked, this, &game_list_frame::doubleClickedSlot);
|
||||
|
||||
connect(m_game_list->horizontalHeader(), &QHeaderView::sectionClicked, this, &game_list_frame::OnColClicked);
|
||||
connect(m_game_list->horizontalHeader(), &QHeaderView::customContextMenuRequested, [this](const QPoint& pos)
|
||||
connect(m_game_list->horizontalHeader(), &QHeaderView::customContextMenuRequested, this, [this](const QPoint& pos)
|
||||
{
|
||||
QMenu* configure = new QMenu(this);
|
||||
configure->addActions(m_columnActs);
|
||||
@ -173,7 +173,7 @@ game_list_frame::game_list_frame(std::shared_ptr<gui_settings> gui_settings, std
|
||||
connect(m_game_grid, &QTableWidget::itemSelectionChanged, this, &game_list_frame::ItemSelectionChangedSlot);
|
||||
connect(m_game_grid, &QTableWidget::itemDoubleClicked, this, &game_list_frame::doubleClickedSlot);
|
||||
|
||||
connect(m_game_compat, &game_compatibility::DownloadStarted, [this]()
|
||||
connect(m_game_compat, &game_compatibility::DownloadStarted, this, [this]()
|
||||
{
|
||||
for (const auto& game : m_game_data)
|
||||
{
|
||||
@ -181,21 +181,11 @@ game_list_frame::game_list_frame(std::shared_ptr<gui_settings> gui_settings, std
|
||||
}
|
||||
Refresh();
|
||||
});
|
||||
connect(m_game_compat, &game_compatibility::DownloadFinished, [this]()
|
||||
connect(m_game_compat, &game_compatibility::DownloadFinished, this, &game_list_frame::OnCompatFinished);
|
||||
connect(m_game_compat, &game_compatibility::DownloadCanceled, this, &game_list_frame::OnCompatFinished);
|
||||
connect(m_game_compat, &game_compatibility::DownloadError, this, [this](const QString& error)
|
||||
{
|
||||
for (const auto& game : m_game_data)
|
||||
{
|
||||
game->compat = m_game_compat->GetCompatibility(game->info.serial);
|
||||
}
|
||||
Refresh();
|
||||
});
|
||||
connect(m_game_compat, &game_compatibility::DownloadError, [this](const QString& error)
|
||||
{
|
||||
for (const auto& game : m_game_data)
|
||||
{
|
||||
game->compat = m_game_compat->GetCompatibility(game->info.serial);
|
||||
}
|
||||
Refresh();
|
||||
OnCompatFinished();
|
||||
QMessageBox::warning(this, tr("Warning!"), tr("Failed to retrieve the online compatibility database!\nFalling back to local database.\n\n%0").arg(error));
|
||||
});
|
||||
|
||||
@ -203,7 +193,7 @@ game_list_frame::game_list_frame(std::shared_ptr<gui_settings> gui_settings, std
|
||||
{
|
||||
m_columnActs[col]->setCheckable(true);
|
||||
|
||||
connect(m_columnActs[col], &QAction::triggered, [this, col](bool checked)
|
||||
connect(m_columnActs[col], &QAction::triggered, this, [this, col](bool checked)
|
||||
{
|
||||
if (!checked) // be sure to have at least one column left so you can call the context menu at all time
|
||||
{
|
||||
@ -812,6 +802,15 @@ void game_list_frame::OnRepaintFinished()
|
||||
}
|
||||
}
|
||||
|
||||
void game_list_frame::OnCompatFinished()
|
||||
{
|
||||
for (const auto& game : m_game_data)
|
||||
{
|
||||
game->compat = m_game_compat->GetCompatibility(game->info.serial);
|
||||
}
|
||||
Refresh();
|
||||
}
|
||||
|
||||
void game_list_frame::ToggleCategoryFilter(const QStringList& categories, bool show)
|
||||
{
|
||||
if (show)
|
||||
|
@ -77,6 +77,7 @@ public Q_SLOTS:
|
||||
private Q_SLOTS:
|
||||
void OnRefreshFinished();
|
||||
void OnRepaintFinished();
|
||||
void OnCompatFinished();
|
||||
void OnColClicked(int col);
|
||||
void ShowContextMenu(const QPoint &pos);
|
||||
void doubleClickedSlot(QTableWidgetItem *item);
|
||||
|
Loading…
Reference in New Issue
Block a user