mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-11-06 01:53: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>
106 lines
3 KiB
C++
106 lines
3 KiB
C++
#ifndef COCKATRICE_GENERAL_SETTINGS_PAGE_H
|
|
#define COCKATRICE_GENERAL_SETTINGS_PAGE_H
|
|
|
|
#include "abstract_settings_page.h"
|
|
|
|
#include <QCheckBox>
|
|
#include <QComboBox>
|
|
#include <QLabel>
|
|
#include <QLoggingCategory>
|
|
#include <QSpinBox>
|
|
#include <QString>
|
|
#include <QStringList>
|
|
#include <qtmetamacros.h>
|
|
|
|
class QGroupBox;
|
|
class QLineEdit;
|
|
class QPushButton;
|
|
|
|
inline Q_LOGGING_CATEGORY(GeneralSettingsPageLog, "general_settings_page");
|
|
|
|
class GeneralSettingsPage : public AbstractSettingsPage
|
|
{
|
|
Q_OBJECT
|
|
public:
|
|
GeneralSettingsPage();
|
|
void retranslateUi() override;
|
|
|
|
static QStringList findQmFiles();
|
|
static QString languageName(const QString &lang);
|
|
|
|
signals:
|
|
/// Request to re-import the card database with the newly selected card language
|
|
void cardDatabaseUpdateRequested();
|
|
|
|
private slots:
|
|
void deckPathButtonClicked();
|
|
void filtersPathButtonClicked();
|
|
void replaysPathButtonClicked();
|
|
void picsPathButtonClicked();
|
|
void cardDatabasePathButtonClicked();
|
|
void customCardDatabaseButtonClicked();
|
|
void tokenDatabasePathButtonClicked();
|
|
void resetAllPathsClicked();
|
|
void languageBoxChanged(int index);
|
|
void cardLanguageBoxChanged(int index);
|
|
void cardSearchLanguageBoxChanged(int index);
|
|
void updateStartupServerControlsVisibility();
|
|
|
|
private:
|
|
QGroupBox *languageGroupBox;
|
|
QGroupBox *versionGroupBox;
|
|
QGroupBox *cardDatabaseGroupBox;
|
|
QGroupBox *startupGroupBox;
|
|
QGroupBox *pathsGroupBox;
|
|
|
|
QLabel languageLabel;
|
|
QComboBox languageBox;
|
|
QLabel advertiseTranslationPageLabel;
|
|
|
|
QLabel cardLanguageLabel;
|
|
QComboBox cardLanguageBox;
|
|
QLabel cardLanguageNoteLabel;
|
|
|
|
QLabel cardSearchLanguageLabel;
|
|
QComboBox cardSearchLanguageBox;
|
|
|
|
QLabel updateReleaseChannelLabel;
|
|
QComboBox updateReleaseChannelBox;
|
|
QCheckBox startupUpdateCheckCheckBox;
|
|
QCheckBox updateNotificationCheckBox;
|
|
QCheckBox newVersionOracleCheckBox;
|
|
|
|
QLabel startupCardUpdateCheckBehaviorLabel;
|
|
QComboBox startupCardUpdateCheckBehaviorSelector;
|
|
QLabel cardUpdateCheckIntervalLabel;
|
|
QSpinBox cardUpdateCheckIntervalSpinBox;
|
|
QLabel lastCardUpdateCheckDateLabel;
|
|
QCheckBox cardDatabaseUpdateTrayNotificationCheckBox;
|
|
|
|
QCheckBox showTipsOnStartup;
|
|
QLabel startupTabLabel;
|
|
QComboBox startupTabSelector;
|
|
QLabel startupServerLabel;
|
|
QComboBox startupServerSelector;
|
|
QLabel startupRoomLabel;
|
|
QLineEdit *startupRoomNameEdit;
|
|
|
|
QLabel deckPathLabel;
|
|
QLabel filtersPathLabel;
|
|
QLabel replaysPathLabel;
|
|
QLabel picsPathLabel;
|
|
QLabel cardDatabasePathLabel;
|
|
QLabel customCardDatabasePathLabel;
|
|
QLabel tokenDatabasePathLabel;
|
|
QLineEdit *deckPathEdit;
|
|
QLineEdit *filtersPathEdit;
|
|
QLineEdit *replaysPathEdit;
|
|
QLineEdit *picsPathEdit;
|
|
QLineEdit *cardDatabasePathEdit;
|
|
QLineEdit *customCardDatabasePathEdit;
|
|
QLineEdit *tokenDatabasePathEdit;
|
|
QPushButton *resetAllPathsButton;
|
|
QLabel *allPathsResetLabel;
|
|
};
|
|
|
|
#endif // COCKATRICE_GENERAL_SETTINGS_PAGE_H
|