46 lines
1.3 KiB
C++
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());
|
|
}
|