Files
adhd/sessionslistmodel.cpp
2026-02-01 13:21:21 -08:00

46 lines
1.3 KiB
C++

#include "sessionslistmodel.h"
SessionsListModel::SessionsListModel(Service *service, QObject *parent)
: QAbstractListModel{parent}, m_service(service)
{
connect(m_service, &Service::sessionsChanged, this, [this]() {
beginResetModel();
endResetModel();
});
}
int SessionsListModel::rowCount(const QModelIndex &parent) const {
return m_service->sessions().size();
}
int SessionsListModel::columnCount(const QModelIndex &parent) const {
return 1;
}
QVariant SessionsListModel::data(const QModelIndex &index, int role) const {
if (index.row() < 0 || index.row() >= rowCount()) {
return QVariant();
} else if (!index.isValid()) {
return QVariant();
}
const Session session = m_service->sessions().at(index.row());
switch (role) {
case Qt::DisplayRole:
// Simple display for fallback - delegate will handle rich rendering
return session.oneliner;
case Qt::UserRole:
// Store full session object for delegate access
return QVariant::fromValue(session);
default:
return QVariant();
}
}
Session SessionsListModel::getSessionByIndex(const QModelIndex &index) const {
if (!index.isValid() || index.row() < 0 || index.row() >= rowCount()) {
return Session(); // Return default-constructed session
}
return m_service->sessions().at(index.row());
}