// 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_USERFULL_OBJECT
#define LQTG_TYPE_USERFULL_OBJECT

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

#include <QPointer>
#include "botinfoobject.h"
#include "contactslinkobject.h"
#include "peernotifysettingsobject.h"
#include "photoobject.h"
#include "userobject.h"

class LIBQTELEGRAMSHARED_EXPORT UserFullObject : public TelegramTypeQObject
{
    Q_OBJECT
    Q_ENUMS(UserFullClassType)
    Q_PROPERTY(QString about READ about WRITE setAbout NOTIFY aboutChanged)
    Q_PROPERTY(bool blocked READ blocked WRITE setBlocked NOTIFY blockedChanged)
    Q_PROPERTY(BotInfoObject* botInfo READ botInfo WRITE setBotInfo NOTIFY botInfoChanged)
    Q_PROPERTY(qint32 commonChatsCount READ commonChatsCount WRITE setCommonChatsCount NOTIFY commonChatsCountChanged)
    Q_PROPERTY(qint32 flags READ flags WRITE setFlags NOTIFY flagsChanged)
    Q_PROPERTY(ContactsLinkObject* link READ link WRITE setLink NOTIFY linkChanged)
    Q_PROPERTY(PeerNotifySettingsObject* notifySettings READ notifySettings WRITE setNotifySettings NOTIFY notifySettingsChanged)
    Q_PROPERTY(bool phoneCallsAvailable READ phoneCallsAvailable WRITE setPhoneCallsAvailable NOTIFY phoneCallsAvailableChanged)
    Q_PROPERTY(bool phoneCallsPrivate READ phoneCallsPrivate WRITE setPhoneCallsPrivate NOTIFY phoneCallsPrivateChanged)
    Q_PROPERTY(PhotoObject* profilePhoto READ profilePhoto WRITE setProfilePhoto NOTIFY profilePhotoChanged)
    Q_PROPERTY(UserObject* user READ user WRITE setUser NOTIFY userChanged)
    Q_PROPERTY(UserFull core READ core WRITE setCore NOTIFY coreChanged)
    Q_PROPERTY(quint32 classType READ classType WRITE setClassType NOTIFY classTypeChanged)

public:
    enum UserFullClassType {
        TypeUserFull
    };

    UserFullObject(const UserFull &core, QObject *parent = 0);
    UserFullObject(QObject *parent = 0);
    virtual ~UserFullObject();

    void setAbout(const QString &about);
    QString about() const;

    void setBlocked(bool blocked);
    bool blocked() const;

    void setBotInfo(BotInfoObject* botInfo);
    BotInfoObject* botInfo() const;

    void setCommonChatsCount(qint32 commonChatsCount);
    qint32 commonChatsCount() const;

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

    void setLink(ContactsLinkObject* link);
    ContactsLinkObject* link() const;

    void setNotifySettings(PeerNotifySettingsObject* notifySettings);
    PeerNotifySettingsObject* notifySettings() const;

    void setPhoneCallsAvailable(bool phoneCallsAvailable);
    bool phoneCallsAvailable() const;

    void setPhoneCallsPrivate(bool phoneCallsPrivate);
    bool phoneCallsPrivate() const;

    void setProfilePhoto(PhotoObject* profilePhoto);
    PhotoObject* profilePhoto() const;

    void setUser(UserObject* user);
    UserObject* user() const;

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

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

    UserFullObject &operator =(const UserFull &b);
    bool operator ==(const UserFull &b) const;

Q_SIGNALS:
    void coreChanged();
    void classTypeChanged();
    void aboutChanged();
    void blockedChanged();
    void botInfoChanged();
    void commonChatsCountChanged();
    void flagsChanged();
    void linkChanged();
    void notifySettingsChanged();
    void phoneCallsAvailableChanged();
    void phoneCallsPrivateChanged();
    void profilePhotoChanged();
    void userChanged();

private Q_SLOTS:
    void coreBotInfoChanged();
    void coreLinkChanged();
    void coreNotifySettingsChanged();
    void coreProfilePhotoChanged();
    void coreUserChanged();

private:
    QPointer<BotInfoObject> m_botInfo;
    QPointer<ContactsLinkObject> m_link;
    QPointer<PeerNotifySettingsObject> m_notifySettings;
    QPointer<PhotoObject> m_profilePhoto;
    QPointer<UserObject> m_user;
    UserFull m_core;
};

#endif // LQTG_TYPE_USERFULL_OBJECT
