Files
DbZeiterfassung-advancedvie…/models/bookingsmodel.cpp
2018-09-17 19:36:22 +02:00

94 lines
2.1 KiB
C++

#include "bookingsmodel.h"
#include "stripswidget.h"
BookingsModel::BookingsModel(StripsWidget &stripsWidget, QObject *parent) :
QAbstractListModel(parent),
m_stripsWidget(stripsWidget)
{
connect(&stripsWidget, &StripsWidget::bookingsChanged, this, &BookingsModel::bookingsChanged);
connect(&stripsWidget, &StripsWidget::refreshingBookingsChanged, this, &BookingsModel::refreshingChanged);
}
StripsWidget &BookingsModel::stripsWidget() const
{
return m_stripsWidget;
}
bool BookingsModel::enabled() const
{
return !m_stripsWidget.refreshingBookings();
}
int BookingsModel::rowCount(const QModelIndex &parent) const
{
Q_UNUSED(parent)
return m_stripsWidget.bookings().count();
}
int BookingsModel::columnCount(const QModelIndex &parent) const
{
Q_UNUSED(parent)
return 5;
}
QVariant BookingsModel::data(const QModelIndex &index, int role) const
{
Q_ASSERT(index.row() < m_stripsWidget.bookings().count());
const auto &booking = m_stripsWidget.bookings().at(index.row());
switch(role)
{
case Qt::DisplayRole:
case Qt::EditRole:
switch(index.column())
{
case 0: return booking.id;
case 1: return booking.time;
case 2: return booking.timespan;
case 3: return booking.type;
case 4: return booking.text;
}
}
return QVariant();
}
QVariant BookingsModel::headerData(int section, Qt::Orientation orientation, int role) const
{
switch(orientation)
{
case Qt::Horizontal:
switch(role)
{
case Qt::DisplayRole:
case Qt::EditRole:
switch(section)
{
case 0: return tr("ID");
case 1: return tr("Time");
case 2: return tr("Timespan");
case 3: return tr("Type");
case 4: return tr("Text");
}
}
default:
qt_noop();
}
return QVariant();
}
void BookingsModel::bookingsChanged()
{
beginResetModel();
endResetModel();
}
void BookingsModel::refreshingChanged(bool refreshing)
{
Q_EMIT enabledChanged(!refreshing);
}