Incidenceeditor

attendeetablemodel.h
1/*
2 * SPDX-FileCopyrightText: 2014 Sandro Knauß <knauss@kolabsys.com>
3 *
4 * SPDX-License-Identifier: LGPL-2.0-or-later
5 */
6
7#pragma once
8
9#include <KCalendarCore/Attendee>
10
11#include <QAbstractTableModel>
12#include <QModelIndex>
13#include <QSortFilterProxyModel>
14
15namespace IncidenceEditorNG
16{
17class AttendeeTableModel : public QAbstractTableModel
18{
20
21public:
22 enum Roles { AttendeeRole = Qt::UserRole };
23
24 enum Columns { CuType, Role, FullName, Name, Email, Available, Status, Response };
25
26 enum AvailableStatus { Unknown, Free, Accepted, Busy, Tentative };
27
28 explicit AttendeeTableModel(QObject *parent = nullptr);
29
30 [[nodiscard]] int rowCount(const QModelIndex &parent = QModelIndex()) const override;
31 [[nodiscard]] int columnCount(const QModelIndex &parent = QModelIndex()) const override;
32 [[nodiscard]] QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
33 [[nodiscard]] QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override;
34
35 [[nodiscard]] Qt::ItemFlags flags(const QModelIndex &index) const override;
36 bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole) override;
37
38 bool insertRows(int position, int rows, const QModelIndex &index = QModelIndex()) override;
39 bool removeRows(int position, int rows, const QModelIndex &index = QModelIndex()) override;
40
41 bool insertAttendee(int position, const KCalendarCore::Attendee &attendee);
42
43 void setAttendees(const KCalendarCore::Attendee::List &resources);
44 [[nodiscard]] KCalendarCore::Attendee::List attendees() const;
45
46 void setKeepEmpty(bool keepEmpty);
47 [[nodiscard]] bool keepEmpty() const;
48
49 void setRemoveEmptyLines(bool removeEmptyLines);
50 [[nodiscard]] bool removeEmptyLines() const;
51
52private:
53 void addEmptyAttendee();
54
56 std::vector<AvailableStatus> mAttendeeAvailable;
57 bool mKeepEmpty = false;
58 bool mRemoveEmptyLines = false;
59};
60
61class ResourceFilterProxyModel : public QSortFilterProxyModel
62{
64public:
65 explicit ResourceFilterProxyModel(QObject *parent = nullptr);
66 bool filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const override;
67};
68
69class AttendeeFilterProxyModel : public QSortFilterProxyModel
70{
72public:
73 explicit AttendeeFilterProxyModel(QObject *parent = nullptr);
74 bool filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const override;
75};
76}
virtual QModelIndex index(int row, int column, const QModelIndex &parent) const const override
Q_OBJECTQ_OBJECT
QObject * parent() const const
T qobject_cast(QObject *object)
UserRole
typedef ItemFlags
Orientation
This file is part of the KDE documentation.
Documentation copyright © 1996-2024 The KDE developers.
Generated on Tue Mar 26 2024 11:19:37 by doxygen 1.10.0 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.