status-desktop/src-cpp/app/modules/shared/section_item.h

117 lines
3.3 KiB
C++

#ifndef SECTION_ITEM_H
#define SECTION_ITEM_H
#include <QObject>
#include <QString>
namespace Shared::Models
{
enum SectionType
{
Chat = 0,
Community,
Wallet,
Browser,
ProfileSettings,
NodeManagement
};
class SectionItem : public QObject
{
Q_OBJECT
Q_PROPERTY(QString id READ getId)
Q_PROPERTY(int sectionType READ getSectionType)
Q_PROPERTY(QString name READ getName)
Q_PROPERTY(bool amISectionAdmin READ getAmISectionAdmin)
Q_PROPERTY(QString description READ getDescription)
Q_PROPERTY(QString image READ getImage)
Q_PROPERTY(QString icon READ getIcon)
Q_PROPERTY(QString color READ getColor)
Q_PROPERTY(bool hasNotification READ getHasNotification)
Q_PROPERTY(int notificationsCount READ getNotificationsCount)
Q_PROPERTY(bool active READ getIsActive NOTIFY activeChanged)
Q_PROPERTY(bool enabled READ getIsEnabled)
Q_PROPERTY(bool joined READ getHasJoined)
Q_PROPERTY(bool isMember READ getIsMember)
Q_PROPERTY(bool canJoin READ getCanJoin)
Q_PROPERTY(bool canManageUsers READ getCanManageUsers)
Q_PROPERTY(bool canRequestAccess READ getCanRequestAccess)
Q_PROPERTY(int access READ getAccess)
Q_PROPERTY(bool ensOnly READ getIsEnsOnly)
public:
SectionItem(QString id,
SectionType sectionType,
QString name,
QString description,
QString image,
QString icon,
QString color,
bool active = false,
bool enabled = true,
bool amISectionAdmin = false,
bool hasNotification = false,
int notificationsCount = 0,
bool isMember = false,
bool joined = false,
bool canJoin = false,
bool canManageUsers = false,
bool canRequestAccess = false,
int access = 0,
bool ensOnly = false,
QObject* parent = nullptr);
~SectionItem() = default;
// Getters
SectionType getSectionType() const;
const QString& getId() const;
const QString& getName() const;
bool getAmISectionAdmin() const;
const QString& getDescription() const;
const QString& getImage() const;
const QString& getIcon() const;
const QString& getColor() const;
bool getHasNotification() const;
int getNotificationsCount() const;
bool getIsActive() const;
bool getIsEnabled() const;
bool getIsMember() const;
bool getHasJoined() const;
bool getCanJoin() const;
bool getCanManageUsers() const;
bool getCanRequestAccess() const;
int getAccess() const;
bool getIsEnsOnly() const;
// Setters
void setIsActive(bool isActive);
signals:
void activeChanged();
private:
SectionType m_sectionType;
QString m_id;
QString m_name;
bool m_amISectionAdmin;
QString m_description;
QString m_image;
QString m_icon;
QString m_color;
bool m_hasNotification;
int m_notificationsCount;
bool m_active;
bool m_enabled;
bool m_isMember;
bool m_joined;
bool m_canJoin;
bool m_canManageUsers;
bool m_canRequestAccess;
int m_access;
bool m_ensOnly;
// membersModel: user_model.Model
// pendingRequestsToJoinModel: PendingRequestModel
};
} // namespace Shared::Models
#endif // SECTION_ITEM_H