mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-11-05 09:33:25 -08:00
* [Client] Improve card database update visibility Addresses Cockatrice/Cockatrice#7431. Cockatrice previously offered no in-client feedback while the card database updater ran: the only progress UI lived in the first-run wizard, stderr/stdout were not parsed in interactive runs, and starting a second update with Oracle already open or with a hidden background run active just showed a confusing 'already running' guard - even though Oracle is launched as a separate process with no lifecycle tracking. - Add a status-bar widget (CardDatabaseUpdateStatusBar) that appears while an update runs and shows the Downloading/Parsing/Importing stages with percent progress; it is also used in the quit-confirm prompt so users see an unfinished update before cancelling it. - Parse the updater's PROGRESS lines (new CardUpdateProgressParser, unit-tested) in both foreground and background runs and log stage changes to the new card_database.update category, throttled to at most one line per second; forward Oracle stderr to the logs. - Show a tray balloon when a background update starts and on finish or failure instead of staying silent. - Request a running Oracle instance to raise itself (QLocalServer CockatriceOracleRaise-<user>) when the user starts another update, and demote the 'already running' guard to an informative message only when no running instance can be found. - Emit download/scan/import progress unconditionally from Oracle so interactive and background runs behave the same. - Document the new log category in the troubleshooting guide. * [Client] Address card database update review feedback * [Client] Add setting to control card database update tray notifications * [Client] Address remaining card database update review nits - Rename card_update_progress_parser.{h,cpp} to card_update_progress.{h,cpp} - Store the CardUpdateProgress struct in the status bar widget * Lint. --------- Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
49 lines
1.8 KiB
C++
49 lines
1.8 KiB
C++
#ifndef UPDATES_SETTINGS_H
|
|
#define UPDATES_SETTINGS_H
|
|
|
|
#include "settings_manager.h"
|
|
|
|
#include <QString>
|
|
#include <libcockatrice/interfaces/interface_updates_settings_provider.h>
|
|
#include <qtmetamacros.h>
|
|
|
|
class QDate;
|
|
class QObject;
|
|
|
|
class UpdatesSettings : public SettingsManager, public IUpdatesSettingsProvider
|
|
{
|
|
Q_OBJECT
|
|
friend class SettingsCache;
|
|
|
|
public:
|
|
[[nodiscard]] bool getCheckUpdatesOnStartup() const override;
|
|
[[nodiscard]] bool getStartupCardUpdateCheckPromptForUpdate() override;
|
|
[[nodiscard]] bool getStartupCardUpdateCheckAlwaysUpdate() override;
|
|
[[nodiscard]] int getCardUpdateCheckInterval() const override;
|
|
[[nodiscard]] QDate getLastCardUpdateCheck() const override;
|
|
[[nodiscard]] bool getCardUpdateCheckRequired() const override;
|
|
[[nodiscard]] bool getAlwaysEnableNewSets() const override;
|
|
[[nodiscard]] bool getNotifyAboutUpdates() const override;
|
|
[[nodiscard]] bool getNotifyAboutNewVersion() const override;
|
|
[[nodiscard]] bool getCardDatabaseUpdateTrayNotification() const;
|
|
[[nodiscard]] int getUpdateReleaseChannelIndex() const override;
|
|
|
|
void setCheckUpdatesOnStartup(bool value);
|
|
void setStartupCardUpdateCheckPromptForUpdate(bool value);
|
|
void setStartupCardUpdateCheckAlwaysUpdate(bool value);
|
|
void setCardUpdateCheckInterval(int value);
|
|
void setLastCardUpdateCheck(QDate value);
|
|
void setAlwaysEnableNewSets(bool value);
|
|
void setNotifyAboutUpdates(bool _notifyaboutupdate);
|
|
void setNotifyAboutNewVersion(bool _notifyaboutnewversion);
|
|
void setCardDatabaseUpdateTrayNotification(bool value);
|
|
void setUpdateReleaseChannelIndex(int value);
|
|
|
|
public:
|
|
explicit UpdatesSettings(const QString &settingPath, QObject *parent = nullptr);
|
|
|
|
private:
|
|
UpdatesSettings(const UpdatesSettings & /*other*/);
|
|
};
|
|
|
|
#endif // UPDATES_SETTINGS_H
|