// SPDX-License-Identifier: MIT #include "pendingselection.h" PendingSelection::PendingSelection(QAbstractItemModel &model) { connect(&model, &QAbstractItemModel::modelReset, this, &PendingSelection::cancel); connect(&model, &QAbstractItemModel::rowsRemoved, this, [this] { if (!m_task.isValid()) { cancel(); } }); } void PendingSelection::select(const QModelIndex &task, bool defer) { m_task = task; if (defer && task.isValid()) { Q_EMIT previewRequested(task); } else { finish(); } } void PendingSelection::finish() { const QPersistentModelIndex task = m_task; cancel(); if (task.isValid()) { Q_EMIT activationRequested(task); } } void PendingSelection::cancel() { m_task = QPersistentModelIndex(); Q_EMIT previewHidden(); }