Files
fedora-tools/plasma-task-group-shortcuts/pendingselection.cpp
T

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();
}