mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-11-08 02:53:25 -08:00
[Client+Server] Auto deck sync with change polling
This commit is contained in:
parent
351668a15d
commit
e0d5d156f2
18 changed files with 448 additions and 18 deletions
|
|
@ -346,9 +346,22 @@ GeneralSettingsPage::GeneralSettingsPage()
|
|||
SettingsCache::instance().deckSync().setConflictDefault(conflictDefaultSelector.itemData(index).toInt());
|
||||
});
|
||||
|
||||
autoSyncCheckBox.setChecked(settings.deckSync().getAutoSync());
|
||||
connect(&autoSyncCheckBox, &QCheckBox::toggled, &SettingsCache::instance().deckSync(),
|
||||
&DeckSyncSettings::setAutoSync);
|
||||
|
||||
syncIntervalEdit.setMinimum(1);
|
||||
syncIntervalEdit.setMaximum(60);
|
||||
syncIntervalEdit.setValue(settings.deckSync().getSyncIntervalMinutes());
|
||||
connect(&syncIntervalEdit, qOverload<int>(&QSpinBox::valueChanged), &SettingsCache::instance().deckSync(),
|
||||
&DeckSyncSettings::setSyncIntervalMinutes);
|
||||
|
||||
auto *deckSyncGrid = new QGridLayout;
|
||||
deckSyncGrid->addWidget(&conflictDefaultLabel, 0, 0);
|
||||
deckSyncGrid->addWidget(&conflictDefaultSelector, 0, 1);
|
||||
deckSyncGrid->addWidget(&autoSyncCheckBox, 1, 0, 1, 2);
|
||||
deckSyncGrid->addWidget(&syncIntervalLabel, 2, 0);
|
||||
deckSyncGrid->addWidget(&syncIntervalEdit, 2, 1);
|
||||
deckSyncGroupBox = new QGroupBox;
|
||||
deckSyncGroupBox->setLayout(deckSyncGrid);
|
||||
|
||||
|
|
@ -636,5 +649,8 @@ void GeneralSettingsPage::retranslateUi()
|
|||
tr("Keep the server deck"));
|
||||
conflictDefaultSelector.setItemText(conflictDefaultSelector.findData(DeckSyncConflictKeepNewer),
|
||||
tr("Keep the newer deck"));
|
||||
autoSyncCheckBox.setText(tr("Sync decks automatically"));
|
||||
syncIntervalLabel.setText(tr("Check every:"));
|
||||
syncIntervalEdit.setSuffix(" " + tr("min"));
|
||||
resetAllPathsButton->setText(tr("Reset all paths"));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -105,6 +105,9 @@ private:
|
|||
|
||||
QLabel conflictDefaultLabel;
|
||||
QComboBox conflictDefaultSelector;
|
||||
QCheckBox autoSyncCheckBox;
|
||||
QLabel syncIntervalLabel;
|
||||
QSpinBox syncIntervalEdit;
|
||||
};
|
||||
|
||||
#endif // COCKATRICE_GENERAL_SETTINGS_PAGE_H
|
||||
|
|
|
|||
|
|
@ -6,7 +6,6 @@
|
|||
#include "../../deck_loader/loaded_deck.h"
|
||||
#include "../../deck_sync/deck_sync_conflict.h"
|
||||
#include "../../deck_sync/deck_sync_manager.h"
|
||||
#include "../../deck_sync/deck_sync_profile.h"
|
||||
#include "../../pixel_map_generator.h"
|
||||
#include "../cards/additional_info/deck_color_identity.h"
|
||||
#include "../deck_share/deck_share_utils.h"
|
||||
|
|
@ -265,8 +264,14 @@ TabDeckStorage::TabDeckStorage(TabSupervisor *_tabSupervisor,
|
|||
syncManager->setColorIdentityProvider(
|
||||
[](const DeckList &deck) { return getDeckColorIdentity(deck, CardDatabaseManager::query()); });
|
||||
syncManager->setConflictDefault(SettingsCache::instance().deckSync().getConflictDefault());
|
||||
syncManager->setAutoSyncEnabled(SettingsCache::instance().deckSync().getAutoSync());
|
||||
syncManager->setSyncIntervalMinutes(SettingsCache::instance().deckSync().getSyncIntervalMinutes());
|
||||
connect(&SettingsCache::instance().deckSync(), &DeckSyncSettings::conflictDefaultChanged, syncManager,
|
||||
&DeckSyncManager::setConflictDefault);
|
||||
connect(&SettingsCache::instance().deckSync(), &DeckSyncSettings::autoSyncChanged, syncManager,
|
||||
&DeckSyncManager::setAutoSyncEnabled);
|
||||
connect(&SettingsCache::instance().deckSync(), &DeckSyncSettings::syncIntervalMinutesChanged, syncManager,
|
||||
&DeckSyncManager::setSyncIntervalMinutes);
|
||||
connect(syncManager, &DeckSyncManager::statusMessage, this, &TabDeckStorage::onSyncStatusMessage);
|
||||
connect(syncManager, &DeckSyncManager::syncFinished, this, &TabDeckStorage::onSyncFinished);
|
||||
connect(syncManager, &DeckSyncManager::firstSyncDetected, this, &TabDeckStorage::onFirstSyncDetected);
|
||||
|
|
@ -274,6 +279,7 @@ TabDeckStorage::TabDeckStorage(TabSupervisor *_tabSupervisor,
|
|||
if (currentUserInfo != nullptr) {
|
||||
syncUsername = QString::fromStdString(currentUserInfo->name());
|
||||
}
|
||||
syncManager->setServerIdentity(client->serverName(), client->serverPort(), syncUsername);
|
||||
|
||||
retranslateUi();
|
||||
|
||||
|
|
@ -333,6 +339,7 @@ QString TabDeckStorage::getTargetPath() const
|
|||
void TabDeckStorage::handleConnected(const ServerInfo_User &userInfo)
|
||||
{
|
||||
syncUsername = QString::fromStdString(userInfo.name());
|
||||
syncManager->setServerIdentity(client->serverName(), client->serverPort(), syncUsername);
|
||||
setRemoteEnabled(userInfo.user_level() & ServerInfo_User::IsRegistered);
|
||||
}
|
||||
|
||||
|
|
@ -564,8 +571,6 @@ void TabDeckStorage::actOpenDecksFolder()
|
|||
|
||||
void TabDeckStorage::actSyncNow()
|
||||
{
|
||||
DeckSyncProfile profile(client->serverName(), client->serverPort(), syncUsername);
|
||||
syncManager->setProfile(profile);
|
||||
syncManager->setDeckPath(SettingsCache::instance().paths().getDeckPath());
|
||||
aSyncNow->setEnabled(false);
|
||||
syncManager->syncNow();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue