File indexing completed on 2024-09-15 12:31:30
0001 /* 0002 SPDX-FileCopyrightText: 2021-2024 Laurent Montel <montel@kde.org> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #include "admininvitemodel.h" 0008 #include <KLocalizedString> 0009 #include <QDateTime> 0010 0011 AdminInviteModel::AdminInviteModel(QObject *parent) 0012 : QAbstractListModel(parent) 0013 { 0014 } 0015 0016 AdminInviteModel::~AdminInviteModel() = default; 0017 0018 int AdminInviteModel::rowCount(const QModelIndex &parent) const 0019 { 0020 if (parent.isValid()) { 0021 return 0; // flat model 0022 } 0023 return mAdminInvites.count(); 0024 } 0025 0026 QVariant AdminInviteModel::headerData(int section, Qt::Orientation orientation, int role) const 0027 { 0028 if (role == Qt::DisplayRole && orientation == Qt::Horizontal) { 0029 switch (static_cast<AdminInviteRoles>(section)) { 0030 case AdminInviteModel::UserIdentifier: 0031 case AdminInviteModel::RoomId: 0032 case AdminInviteModel::CreateAt: 0033 break; 0034 case AdminInviteModel::Identifier: 0035 return i18n("Token"); 0036 case AdminInviteModel::CreateAtStr: 0037 return i18n("Created at"); 0038 case AdminInviteModel::Uses: 0039 return i18n("Uses"); 0040 case AdminInviteModel::MaxUses: 0041 return i18n("Uses left"); 0042 case AdminInviteModel::Expire: 0043 return i18n("Expiration"); 0044 } 0045 } 0046 return {}; 0047 } 0048 0049 int AdminInviteModel::columnCount(const QModelIndex &parent) const 0050 { 0051 Q_UNUSED(parent) 0052 constexpr int val = static_cast<int>(AdminInviteModel::LastColumn) + 1; 0053 return val; 0054 } 0055 0056 const QVector<InviteInfo> &AdminInviteModel::adminInvites() const 0057 { 0058 return mAdminInvites; 0059 } 0060 0061 void AdminInviteModel::clear() 0062 { 0063 if (!mAdminInvites.isEmpty()) { 0064 beginResetModel(); 0065 mAdminInvites.clear(); 0066 endResetModel(); 0067 } 0068 } 0069 0070 void AdminInviteModel::setAdminInvites(const QVector<InviteInfo> &newAdminInvites) 0071 { 0072 clear(); 0073 if (!newAdminInvites.isEmpty()) { 0074 beginInsertRows(QModelIndex(), 0, newAdminInvites.count() - 1); 0075 mAdminInvites = newAdminInvites; 0076 endInsertRows(); 0077 } 0078 } 0079 0080 QVariant AdminInviteModel::data(const QModelIndex &index, int role) const 0081 { 0082 if (index.row() < 0 || index.row() >= mAdminInvites.count()) { 0083 return {}; 0084 } 0085 if (role != Qt::DisplayRole) { 0086 return {}; 0087 } 0088 0089 const InviteInfo &inviteInfo = mAdminInvites.at(index.row()); 0090 const int col = index.column(); 0091 switch (col) { 0092 case AdminInviteModel::UserIdentifier: 0093 return inviteInfo.userIdentifier(); 0094 case AdminInviteModel::Identifier: 0095 return inviteInfo.identifier(); 0096 case AdminInviteModel::RoomId: 0097 return inviteInfo.roomId(); 0098 case AdminInviteModel::CreateAt: 0099 return inviteInfo.createDateTime(); 0100 case AdminInviteModel::CreateAtStr: 0101 return inviteInfo.createDateTime().toString(); 0102 case AdminInviteModel::Uses: 0103 return inviteInfo.uses(); 0104 case AdminInviteModel::MaxUses: 0105 return inviteInfo.maxUses(); 0106 case AdminInviteModel::Expire: 0107 return expireInvitation(inviteInfo); 0108 } 0109 return {}; 0110 } 0111 0112 QString AdminInviteModel::expireInvitation(const InviteInfo &inviteInfo) const 0113 { 0114 if (inviteInfo.expireDateTime() > QDateTime::currentDateTime()) { 0115 return i18n("Expire in %1 days", QDateTime::currentDateTime().daysTo(inviteInfo.expireDateTime())); 0116 } else { 0117 return i18n("Expired"); 0118 } 0119 } 0120 0121 void AdminInviteModel::removeInvite(const QString &identifier) 0122 { 0123 const int roomCount = mAdminInvites.count(); 0124 for (int i = 0; i < roomCount; ++i) { 0125 if (mAdminInvites.at(i).identifier() == identifier) { 0126 beginRemoveRows(QModelIndex(), i, i); 0127 mAdminInvites.removeAt(i); 0128 endRemoveRows(); 0129 break; 0130 } 0131 } 0132 } 0133 0134 #include "moc_admininvitemodel.cpp"