125 lines
3.6 KiB
C++
125 lines
3.6 KiB
C++
|
#include "section_model.h"
|
||
|
|
||
|
namespace Shared::Models
|
||
|
{
|
||
|
SectionModel::SectionModel(QObject* parent)
|
||
|
: QAbstractListModel(parent)
|
||
|
{ }
|
||
|
|
||
|
QHash<int, QByteArray> SectionModel::roleNames() const
|
||
|
{
|
||
|
QHash<int, QByteArray> roles;
|
||
|
|
||
|
roles[Id] = "id";
|
||
|
roles[SectionType] = "sectionType";
|
||
|
roles[Name] = "name";
|
||
|
roles[AmISectionAdmin] = "amISectionAdmin";
|
||
|
roles[Description] = "description";
|
||
|
roles[Image] = "image";
|
||
|
roles[Icon] = "icon";
|
||
|
roles[Color] = "color";
|
||
|
roles[HasNotification] = "hasNotification";
|
||
|
roles[NotificationsCount] = "notificationsCount";
|
||
|
roles[Active] = "active";
|
||
|
roles[Enabled] = "enabled";
|
||
|
roles[Joined] = "joined";
|
||
|
roles[IsMember] = "isMember";
|
||
|
roles[CanJoin] = "canJoin";
|
||
|
roles[CanManageUsers] = "canManageUsers";
|
||
|
roles[CanRequestAccess] = "canRequestAccess";
|
||
|
roles[Access] = "access";
|
||
|
roles[EnsOnly] = "ensOnly";
|
||
|
roles[MembersModel] = "members";
|
||
|
roles[PendingRequestsToJoinModel] = "pendingRequestsToJoin";
|
||
|
return roles;
|
||
|
}
|
||
|
|
||
|
int SectionModel::rowCount(const QModelIndex& parent = QModelIndex()) const
|
||
|
{
|
||
|
return m_items.size();
|
||
|
}
|
||
|
|
||
|
QVariant SectionModel::data(const QModelIndex& index, int role) const
|
||
|
{
|
||
|
if(!index.isValid())
|
||
|
{
|
||
|
return QVariant();
|
||
|
}
|
||
|
|
||
|
if(index.row() < 0 || index.row() >= m_items.size())
|
||
|
{
|
||
|
return QVariant();
|
||
|
}
|
||
|
|
||
|
SectionItem* item = m_items.at(index.row());
|
||
|
|
||
|
switch(role)
|
||
|
{
|
||
|
case Id: return QVariant(item->getId());
|
||
|
case SectionType: return QVariant(item->getSectionType());
|
||
|
case Name: return QVariant(item->getName());
|
||
|
case AmISectionAdmin: return QVariant(item->getAmISectionAdmin());
|
||
|
case Description: return QVariant(item->getDescription());
|
||
|
case Image: return QVariant(item->getImage());
|
||
|
case Icon: return QVariant(item->getIcon());
|
||
|
case Color: return QVariant(item->getColor());
|
||
|
case HasNotification: return QVariant(item->getHasNotification());
|
||
|
case NotificationsCount: return QVariant(item->getNotificationsCount());
|
||
|
case Active: return QVariant(item->getIsActive());
|
||
|
case Enabled: return QVariant(item->getIsEnabled());
|
||
|
case Joined: return QVariant(item->getHasJoined());
|
||
|
case IsMember: return QVariant(item->getIsMember());
|
||
|
case CanJoin: return QVariant(item->getCanJoin());
|
||
|
case CanManageUsers: return QVariant(item->getCanManageUsers());
|
||
|
case CanRequestAccess: return QVariant(item->getCanRequestAccess());
|
||
|
case Access: return QVariant(item->getAccess());
|
||
|
case EnsOnly: return QVariant(item->getIsEnsOnly());
|
||
|
// To Do
|
||
|
case MembersModel: return QVariant();
|
||
|
case PendingRequestsToJoinModel: return QVariant();
|
||
|
}
|
||
|
|
||
|
return QVariant();
|
||
|
}
|
||
|
|
||
|
void SectionModel::addItem(SectionItem* item)
|
||
|
{
|
||
|
beginInsertRows(QModelIndex(), m_items.size(), m_items.size());
|
||
|
m_items.append(item);
|
||
|
endInsertRows();
|
||
|
}
|
||
|
|
||
|
void SectionModel::setActiveSection(const QString &Id)
|
||
|
{
|
||
|
|
||
|
for (int i = 0; i < m_items.size(); ++i) {
|
||
|
auto newIndex = createIndex(i, 0, nullptr);
|
||
|
if(m_items.at(i)->getIsActive())
|
||
|
{
|
||
|
m_items.at(i)->setIsActive(false);
|
||
|
dataChanged(newIndex, newIndex, QVector<int>(ModelRole::Active));
|
||
|
|
||
|
}
|
||
|
if (m_items.at(i)->getId() == Id)
|
||
|
{
|
||
|
m_items.at(i)->setIsActive(true);
|
||
|
dataChanged(newIndex, newIndex, QVector<int>(ModelRole::Active));
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
QPointer<SectionItem> SectionModel::getActiveItem()
|
||
|
{
|
||
|
SectionItem* activeItem = nullptr;
|
||
|
for(auto item : m_items)
|
||
|
{
|
||
|
if(item->getIsActive())
|
||
|
{
|
||
|
activeItem = item;
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
return activeItem;
|
||
|
}
|
||
|
} // namespace Shared::Models
|