// This file generated by libqtelegram-code-generator.
// You can download it from: https://github.com/Aseman-Land/libqtelegram-code-generator
// DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN

#ifndef LQTG_TYPE_CHAT_OBJECT
#define LQTG_TYPE_CHAT_OBJECT

#include "telegramtypeqobject.h"
#include "telegram/types/chat.h"

#include <QPointer>
#include "channeladminrightsobject.h"
#include "channelbannedrightsobject.h"
#include "inputchannelobject.h"
#include "chatphotoobject.h"

class LIBQTELEGRAMSHARED_EXPORT ChatObject : public TelegramTypeQObject
{
    Q_OBJECT
    Q_ENUMS(ChatClassType)
    Q_PROPERTY(qint64 accessHash READ accessHash WRITE setAccessHash NOTIFY accessHashChanged)
    Q_PROPERTY(bool admin READ admin WRITE setAdmin NOTIFY adminChanged)
    Q_PROPERTY(ChannelAdminRightsObject* adminRights READ adminRights WRITE setAdminRights NOTIFY adminRightsChanged)
    Q_PROPERTY(bool adminsEnabled READ adminsEnabled WRITE setAdminsEnabled NOTIFY adminsEnabledChanged)
    Q_PROPERTY(ChannelBannedRightsObject* bannedRights READ bannedRights WRITE setBannedRights NOTIFY bannedRightsChanged)
    Q_PROPERTY(bool broadcast READ broadcast WRITE setBroadcast NOTIFY broadcastChanged)
    Q_PROPERTY(bool creator READ creator WRITE setCreator NOTIFY creatorChanged)
    Q_PROPERTY(qint32 date READ date WRITE setDate NOTIFY dateChanged)
    Q_PROPERTY(bool deactivated READ deactivated WRITE setDeactivated NOTIFY deactivatedChanged)
    Q_PROPERTY(bool democracy READ democracy WRITE setDemocracy NOTIFY democracyChanged)
    Q_PROPERTY(qint32 flags READ flags WRITE setFlags NOTIFY flagsChanged)
    Q_PROPERTY(qint32 id READ id WRITE setId NOTIFY idChanged)
    Q_PROPERTY(bool kicked READ kicked WRITE setKicked NOTIFY kickedChanged)
    Q_PROPERTY(bool left READ left WRITE setLeft NOTIFY leftChanged)
    Q_PROPERTY(bool megagroup READ megagroup WRITE setMegagroup NOTIFY megagroupChanged)
    Q_PROPERTY(InputChannelObject* migratedTo READ migratedTo WRITE setMigratedTo NOTIFY migratedToChanged)
    Q_PROPERTY(bool min READ min WRITE setMin NOTIFY minChanged)
    Q_PROPERTY(qint32 participantsCount READ participantsCount WRITE setParticipantsCount NOTIFY participantsCountChanged)
    Q_PROPERTY(ChatPhotoObject* photo READ photo WRITE setPhoto NOTIFY photoChanged)
    Q_PROPERTY(bool restricted READ restricted WRITE setRestricted NOTIFY restrictedChanged)
    Q_PROPERTY(QString restrictionReason READ restrictionReason WRITE setRestrictionReason NOTIFY restrictionReasonChanged)
    Q_PROPERTY(bool signatures READ signatures WRITE setSignatures NOTIFY signaturesChanged)
    Q_PROPERTY(QString title READ title WRITE setTitle NOTIFY titleChanged)
    Q_PROPERTY(qint32 untilDate READ untilDate WRITE setUntilDate NOTIFY untilDateChanged)
    Q_PROPERTY(QString username READ username WRITE setUsername NOTIFY usernameChanged)
    Q_PROPERTY(bool verified READ verified WRITE setVerified NOTIFY verifiedChanged)
    Q_PROPERTY(qint32 version READ version WRITE setVersion NOTIFY versionChanged)
    Q_PROPERTY(Chat core READ core WRITE setCore NOTIFY coreChanged)
    Q_PROPERTY(quint32 classType READ classType WRITE setClassType NOTIFY classTypeChanged)

public:
    enum ChatClassType {
        TypeChatEmpty,
        TypeChat,
        TypeChatForbidden,
        TypeChannel,
        TypeChannelForbidden
    };

    ChatObject(const Chat &core, QObject *parent = 0);
    ChatObject(QObject *parent = 0);
    virtual ~ChatObject();

    void setAccessHash(qint64 accessHash);
    qint64 accessHash() const;

    void setAdmin(bool admin);
    bool admin() const;

    void setAdminRights(ChannelAdminRightsObject* adminRights);
    ChannelAdminRightsObject* adminRights() const;

    void setAdminsEnabled(bool adminsEnabled);
    bool adminsEnabled() const;

    void setBannedRights(ChannelBannedRightsObject* bannedRights);
    ChannelBannedRightsObject* bannedRights() const;

    void setBroadcast(bool broadcast);
    bool broadcast() const;

    void setCreator(bool creator);
    bool creator() const;

    void setDate(qint32 date);
    qint32 date() const;

    void setDeactivated(bool deactivated);
    bool deactivated() const;

    void setDemocracy(bool democracy);
    bool democracy() const;

    void setFlags(qint32 flags);
    qint32 flags() const;

    void setId(qint32 id);
    qint32 id() const;

    void setKicked(bool kicked);
    bool kicked() const;

    void setLeft(bool left);
    bool left() const;

    void setMegagroup(bool megagroup);
    bool megagroup() const;

    void setMigratedTo(InputChannelObject* migratedTo);
    InputChannelObject* migratedTo() const;

    void setMin(bool min);
    bool min() const;

    void setParticipantsCount(qint32 participantsCount);
    qint32 participantsCount() const;

    void setPhoto(ChatPhotoObject* photo);
    ChatPhotoObject* photo() const;

    void setRestricted(bool restricted);
    bool restricted() const;

    void setRestrictionReason(const QString &restrictionReason);
    QString restrictionReason() const;

    void setSignatures(bool signatures);
    bool signatures() const;

    void setTitle(const QString &title);
    QString title() const;

    void setUntilDate(qint32 untilDate);
    qint32 untilDate() const;

    void setUsername(const QString &username);
    QString username() const;

    void setVerified(bool verified);
    bool verified() const;

    void setVersion(qint32 version);
    qint32 version() const;

    void setClassType(quint32 classType);
    quint32 classType() const;

    void setCore(const Chat &core);
    Chat core() const;

    ChatObject &operator =(const Chat &b);
    bool operator ==(const Chat &b) const;

Q_SIGNALS:
    void coreChanged();
    void classTypeChanged();
    void accessHashChanged();
    void adminChanged();
    void adminRightsChanged();
    void adminsEnabledChanged();
    void bannedRightsChanged();
    void broadcastChanged();
    void creatorChanged();
    void dateChanged();
    void deactivatedChanged();
    void democracyChanged();
    void flagsChanged();
    void idChanged();
    void kickedChanged();
    void leftChanged();
    void megagroupChanged();
    void migratedToChanged();
    void minChanged();
    void participantsCountChanged();
    void photoChanged();
    void restrictedChanged();
    void restrictionReasonChanged();
    void signaturesChanged();
    void titleChanged();
    void untilDateChanged();
    void usernameChanged();
    void verifiedChanged();
    void versionChanged();

private Q_SLOTS:
    void coreAdminRightsChanged();
    void coreBannedRightsChanged();
    void coreMigratedToChanged();
    void corePhotoChanged();

private:
    QPointer<ChannelAdminRightsObject> m_adminRights;
    QPointer<ChannelBannedRightsObject> m_bannedRights;
    QPointer<InputChannelObject> m_migratedTo;
    QPointer<ChatPhotoObject> m_photo;
    Chat m_core;
};

#endif // LQTG_TYPE_CHAT_OBJECT
