39 lines
836 B
C++
39 lines
836 B
C++
// 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();
|
|
}
|