// 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_CHANNELADMINLOGEVENTACTION_OBJECT
#define LQTG_TYPE_CHANNELADMINLOGEVENTACTION_OBJECT

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

#include <QPointer>
#include "messageobject.h"
#include "channelparticipantobject.h"
#include "chatphotoobject.h"

class LIBQTELEGRAMSHARED_EXPORT ChannelAdminLogEventActionObject : public TelegramTypeQObject
{
    Q_OBJECT
    Q_ENUMS(ChannelAdminLogEventActionClassType)
    Q_PROPERTY(MessageObject* message READ message WRITE setMessage NOTIFY messageChanged)
    Q_PROPERTY(MessageObject* newMessage READ newMessage WRITE setNewMessage NOTIFY newMessageChanged)
    Q_PROPERTY(ChannelParticipantObject* newParticipant READ newParticipant WRITE setNewParticipant NOTIFY newParticipantChanged)
    Q_PROPERTY(ChatPhotoObject* newPhoto READ newPhoto WRITE setNewPhoto NOTIFY newPhotoChanged)
    Q_PROPERTY(QString newValueString READ newValueString WRITE setNewValueString NOTIFY newValueStringChanged)
    Q_PROPERTY(bool newValueBool READ newValueBool WRITE setNewValueBool NOTIFY newValueBoolChanged)
    Q_PROPERTY(ChannelParticipantObject* participant READ participant WRITE setParticipant NOTIFY participantChanged)
    Q_PROPERTY(MessageObject* prevMessage READ prevMessage WRITE setPrevMessage NOTIFY prevMessageChanged)
    Q_PROPERTY(ChannelParticipantObject* prevParticipant READ prevParticipant WRITE setPrevParticipant NOTIFY prevParticipantChanged)
    Q_PROPERTY(ChatPhotoObject* prevPhoto READ prevPhoto WRITE setPrevPhoto NOTIFY prevPhotoChanged)
    Q_PROPERTY(QString prevValue READ prevValue WRITE setPrevValue NOTIFY prevValueChanged)
    Q_PROPERTY(ChannelAdminLogEventAction core READ core WRITE setCore NOTIFY coreChanged)
    Q_PROPERTY(quint32 classType READ classType WRITE setClassType NOTIFY classTypeChanged)

public:
    enum ChannelAdminLogEventActionClassType {
        TypeChannelAdminLogEventActionChangeTitle,
        TypeChannelAdminLogEventActionChangeAbout,
        TypeChannelAdminLogEventActionChangeUsername,
        TypeChannelAdminLogEventActionChangePhoto,
        TypeChannelAdminLogEventActionToggleInvites,
        TypeChannelAdminLogEventActionToggleSignatures,
        TypeChannelAdminLogEventActionUpdatePinned,
        TypeChannelAdminLogEventActionEditMessage,
        TypeChannelAdminLogEventActionDeleteMessage,
        TypeChannelAdminLogEventActionParticipantJoin,
        TypeChannelAdminLogEventActionParticipantLeave,
        TypeChannelAdminLogEventActionParticipantInvite,
        TypeChannelAdminLogEventActionParticipantToggleBan,
        TypeChannelAdminLogEventActionParticipantToggleAdmin
    };

    ChannelAdminLogEventActionObject(const ChannelAdminLogEventAction &core, QObject *parent = 0);
    ChannelAdminLogEventActionObject(QObject *parent = 0);
    virtual ~ChannelAdminLogEventActionObject();

    void setMessage(MessageObject* message);
    MessageObject* message() const;

    void setNewMessage(MessageObject* newMessage);
    MessageObject* newMessage() const;

    void setNewParticipant(ChannelParticipantObject* newParticipant);
    ChannelParticipantObject* newParticipant() const;

    void setNewPhoto(ChatPhotoObject* newPhoto);
    ChatPhotoObject* newPhoto() const;

    void setNewValueString(const QString &newValueString);
    QString newValueString() const;

    void setNewValueBool(bool newValueBool);
    bool newValueBool() const;

    void setParticipant(ChannelParticipantObject* participant);
    ChannelParticipantObject* participant() const;

    void setPrevMessage(MessageObject* prevMessage);
    MessageObject* prevMessage() const;

    void setPrevParticipant(ChannelParticipantObject* prevParticipant);
    ChannelParticipantObject* prevParticipant() const;

    void setPrevPhoto(ChatPhotoObject* prevPhoto);
    ChatPhotoObject* prevPhoto() const;

    void setPrevValue(const QString &prevValue);
    QString prevValue() const;

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

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

    ChannelAdminLogEventActionObject &operator =(const ChannelAdminLogEventAction &b);
    bool operator ==(const ChannelAdminLogEventAction &b) const;

Q_SIGNALS:
    void coreChanged();
    void classTypeChanged();
    void messageChanged();
    void newMessageChanged();
    void newParticipantChanged();
    void newPhotoChanged();
    void newValueStringChanged();
    void newValueBoolChanged();
    void participantChanged();
    void prevMessageChanged();
    void prevParticipantChanged();
    void prevPhotoChanged();
    void prevValueChanged();

private Q_SLOTS:
    void coreMessageChanged();
    void coreNewMessageChanged();
    void coreNewParticipantChanged();
    void coreNewPhotoChanged();
    void coreParticipantChanged();
    void corePrevMessageChanged();
    void corePrevParticipantChanged();
    void corePrevPhotoChanged();

private:
    QPointer<MessageObject> m_message;
    QPointer<MessageObject> m_newMessage;
    QPointer<ChannelParticipantObject> m_newParticipant;
    QPointer<ChatPhotoObject> m_newPhoto;
    QPointer<ChannelParticipantObject> m_participant;
    QPointer<MessageObject> m_prevMessage;
    QPointer<ChannelParticipantObject> m_prevParticipant;
    QPointer<ChatPhotoObject> m_prevPhoto;
    ChannelAdminLogEventAction m_core;
};

#endif // LQTG_TYPE_CHANNELADMINLOGEVENTACTION_OBJECT
