Files
DbZeiterfassung-advancedvie…/models/timeassignmentsmodel.cpp

96 lines
2.6 KiB
C++

#include "timeassignmentsmodel.h"
#include "stripswidget.h"
TimeAssignmentsModel::TimeAssignmentsModel(StripsWidget &stripsWidget, QObject *parent) :
QAbstractListModel(parent),
m_stripsWidget(stripsWidget)
{
connect(&stripsWidget, &StripsWidget::timeAssignmentsChanged, this, &TimeAssignmentsModel::timeAssignmentsChanged);
connect(&stripsWidget, &StripsWidget::refreshingTimeAssignmentsChanged, this, &TimeAssignmentsModel::refreshingChanged);
}
StripsWidget &TimeAssignmentsModel::stripsWidget() const
{
return m_stripsWidget;
}
bool TimeAssignmentsModel::enabled() const
{
return !m_stripsWidget.refreshingTimeAssignments();
}
int TimeAssignmentsModel::rowCount(const QModelIndex &parent) const
{
Q_UNUSED(parent)
return m_stripsWidget.timeAssignments().count();
}
int TimeAssignmentsModel::columnCount(const QModelIndex &parent) const
{
Q_UNUSED(parent)
return Columns::Count;
}
QVariant TimeAssignmentsModel::data(const QModelIndex &index, int role) const
{
Q_ASSERT(index.row() < m_stripsWidget.timeAssignments().count());
const auto &timeAssignment = m_stripsWidget.timeAssignments().at(index.row());
switch(role)
{
case Qt::DisplayRole:
case Qt::EditRole:
switch(index.column())
{
case Columns::Id: return timeAssignment.id;
case Columns::Time: return timeAssignment.time;
case Columns::Timespan: return timeAssignment.timespan;
case Columns::Project: return timeAssignment.project;
case Columns::Workpackage: return timeAssignment.workpackage;
case Columns::Text: return timeAssignment.text;
}
}
return QVariant();
}
QVariant TimeAssignmentsModel::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 Columns::Id: return tr("ID");
case Columns::Time: return tr("Time");
case Columns::Timespan: return tr("Timespan");
case Columns::Project: return tr("Project");
case Columns::Workpackage: return tr("Workpackage");
case Columns::Text: return tr("Text");
}
}
default:
qt_noop();
}
return QVariant();
}
void TimeAssignmentsModel::timeAssignmentsChanged()
{
beginResetModel();
endResetModel();
}
void TimeAssignmentsModel::refreshingChanged(bool refreshing)
{
Q_EMIT enabledChanged(!refreshing);
}