/*
 * Copyright (C) 2024 UBPorts Foundation
 *
 * WARNING: This is a generated file. Do not modify directly.
 * Any changes made to this file will be overwritten.
 * 
 * Generated on: 2024-07-26
 * Generated by: TELEports tlparser.py
 * 
 * For any modifications, please edit the source templates and regenerate this file.
 */

#ifndef QTDCHATPERMISSIONS_H
#define QTDCHATPERMISSIONS_H

#include <QObject>
#include <QList>
#include "common/qabstracttdobject.h"

    class QTdChatPermissions : public QTdObject {
    Q_OBJECT
    Q_PROPERTY(bool canSendMessages READ canSendMessages WRITE setCanSendMessages NOTIFY dataChanged)
    Q_PROPERTY(bool canSendAudios READ canSendAudios WRITE setCanSendAudios NOTIFY dataChanged)
    Q_PROPERTY(bool canSendDocuments READ canSendDocuments WRITE setCanSendDocuments NOTIFY dataChanged)
    Q_PROPERTY(bool canSendPhotos READ canSendPhotos WRITE setCanSendPhotos NOTIFY dataChanged)
    Q_PROPERTY(bool canSendVideos READ canSendVideos WRITE setCanSendVideos NOTIFY dataChanged)
    Q_PROPERTY(bool canSendVideoNotes READ canSendVideoNotes WRITE setCanSendVideoNotes NOTIFY dataChanged)
    Q_PROPERTY(bool canSendVoiceNotes READ canSendVoiceNotes WRITE setCanSendVoiceNotes NOTIFY dataChanged)
    Q_PROPERTY(bool canSendPolls READ canSendPolls WRITE setCanSendPolls NOTIFY dataChanged)
    Q_PROPERTY(bool canSendOtherMessages READ canSendOtherMessages WRITE setCanSendOtherMessages NOTIFY dataChanged)
    Q_PROPERTY(bool canAddWebPagePreviews READ canAddWebPagePreviews WRITE setCanAddWebPagePreviews NOTIFY dataChanged)
    Q_PROPERTY(bool canChangeInfo READ canChangeInfo WRITE setCanChangeInfo NOTIFY dataChanged)
    Q_PROPERTY(bool canInviteUsers READ canInviteUsers WRITE setCanInviteUsers NOTIFY dataChanged)
    Q_PROPERTY(bool canPinMessages READ canPinMessages WRITE setCanPinMessages NOTIFY dataChanged)
    Q_PROPERTY(bool canManageTopics READ canManageTopics WRITE setCanManageTopics NOTIFY dataChanged)

public:
    explicit QTdChatPermissions(QObject *parent = nullptr);
    explicit QTdChatPermissions(QObject *parent, bool canSendMessages_, bool canSendAudios_, bool canSendDocuments_, bool canSendPhotos_, bool canSendVideos_, bool canSendVideoNotes_, bool canSendVoiceNotes_, bool canSendPolls_, bool canSendOtherMessages_, bool canAddWebPagePreviews_, bool canChangeInfo_, bool canInviteUsers_, bool canPinMessages_, bool canManageTopics_);

    bool canSendMessages() const;
    void setCanSendMessages(bool value);
    bool canSendAudios() const;
    void setCanSendAudios(bool value);
    bool canSendDocuments() const;
    void setCanSendDocuments(bool value);
    bool canSendPhotos() const;
    void setCanSendPhotos(bool value);
    bool canSendVideos() const;
    void setCanSendVideos(bool value);
    bool canSendVideoNotes() const;
    void setCanSendVideoNotes(bool value);
    bool canSendVoiceNotes() const;
    void setCanSendVoiceNotes(bool value);
    bool canSendPolls() const;
    void setCanSendPolls(bool value);
    bool canSendOtherMessages() const;
    void setCanSendOtherMessages(bool value);
    bool canAddWebPagePreviews() const;
    void setCanAddWebPagePreviews(bool value);
    bool canChangeInfo() const;
    void setCanChangeInfo(bool value);
    bool canInviteUsers() const;
    void setCanInviteUsers(bool value);
    bool canPinMessages() const;
    void setCanPinMessages(bool value);
    bool canManageTopics() const;
    void setCanManageTopics(bool value);

    void unmarshalJson(const QJsonObject &json) override;
    QJsonObject marshalJson() override;

private:
    Q_DISABLE_COPY(QTdChatPermissions)
    bool m_canSendMessages;
    bool m_canSendAudios;
    bool m_canSendDocuments;
    bool m_canSendPhotos;
    bool m_canSendVideos;
    bool m_canSendVideoNotes;
    bool m_canSendVoiceNotes;
    bool m_canSendPolls;
    bool m_canSendOtherMessages;
    bool m_canAddWebPagePreviews;
    bool m_canChangeInfo;
    bool m_canInviteUsers;
    bool m_canPinMessages;
    bool m_canManageTopics;

signals:
    void dataChanged();

};

#endif // QTDCHATPERMISSIONS_H
