mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-09-21 09:05:10 -07:00
- Serialized url-chain dispatcher in IntentUrlParser; queue-drained urlChainFinished(bool) drives the startup auto-connect fallback - Open-shared-deck intent with sequential download state machine, 15s per-item timeout, partial-success offer, livable Cancel via ApplicationModal dlg_login_prompt interactive fallback - Preview dialog: download progress label, share vocab sweep, palette-highlight selection frame, Space/Enter keyboard toggle, NoFocus checkbox, double-click tile opens immediately - Confirm-before-server-migration with one-shot restore to the previous server on failed/cancelled chains (statusChanged settle deferral), hostname-only identity comparisons - Skip credential link when already connected; arrow-key navigation in FlowWidget; card glows use palette highlight - Address code-review M1-M4 and UI/UX QA blockers 1-2
57 lines
1.3 KiB
C++
57 lines
1.3 KiB
C++
#include "intent.h"
|
|
|
|
Intent::Intent(QObject *parent) : QObject(parent)
|
|
{
|
|
// An intent is done as soon as it reports success, failure, or cancellation.
|
|
// Deleting it also tears down its dependency chain and disconnects any signal wiring.
|
|
connect(this, &Intent::finished, this, &QObject::deleteLater);
|
|
connect(this, &Intent::failed, this, &QObject::deleteLater);
|
|
connect(this, &Intent::cancelled, this, &QObject::deleteLater);
|
|
}
|
|
|
|
Intent::~Intent() = default;
|
|
|
|
void Intent::execute()
|
|
{
|
|
if (checkPrecondition()) {
|
|
onPreconditionSatisfied();
|
|
} else {
|
|
onPreconditionNotSatisfied();
|
|
}
|
|
}
|
|
|
|
void Intent::runDependency(Intent *dependency)
|
|
{
|
|
dependency->setParent(this);
|
|
connect(dependency, &Intent::finished, this, [this]() {
|
|
// Re-check after dependency finishes
|
|
this->execute();
|
|
});
|
|
connect(dependency, &Intent::failed, this, &Intent::failed);
|
|
|
|
dependency->execute();
|
|
}
|
|
|
|
void Intent::emitFinished()
|
|
{
|
|
if (!completed) {
|
|
completed = true;
|
|
emit finished();
|
|
}
|
|
}
|
|
|
|
void Intent::emitFailed(const QString &reason)
|
|
{
|
|
if (!completed) {
|
|
completed = true;
|
|
emit failed(reason);
|
|
}
|
|
}
|
|
|
|
void Intent::emitCancelled()
|
|
{
|
|
if (!completed) {
|
|
completed = true;
|
|
emit cancelled();
|
|
}
|
|
}
|