// 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_INPUTMEDIA_OBJECT
#define LQTG_TYPE_INPUTMEDIA_OBJECT

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

#include <QPointer>
#include "inputfileobject.h"
#include "inputgeopointobject.h"
#include "inputdocumentobject.h"
#include "inputgameobject.h"
#include "inputphotoobject.h"
#include "invoiceobject.h"
#include "inputwebdocumentobject.h"

class LIBQTELEGRAMSHARED_EXPORT InputMediaObject : public TelegramTypeQObject
{
    Q_OBJECT
    Q_ENUMS(InputMediaClassType)
    Q_PROPERTY(QString address READ address WRITE setAddress NOTIFY addressChanged)
    Q_PROPERTY(QList<DocumentAttribute> attributes READ attributes WRITE setAttributes NOTIFY attributesChanged)
    Q_PROPERTY(QString caption READ caption WRITE setCaption NOTIFY captionChanged)
    Q_PROPERTY(QString description READ description WRITE setDescription NOTIFY descriptionChanged)
    Q_PROPERTY(InputFileObject* file READ file WRITE setFile NOTIFY fileChanged)
    Q_PROPERTY(QString firstName READ firstName WRITE setFirstName NOTIFY firstNameChanged)
    Q_PROPERTY(qint32 flags READ flags WRITE setFlags NOTIFY flagsChanged)
    Q_PROPERTY(InputGeoPointObject* geoPoint READ geoPoint WRITE setGeoPoint NOTIFY geoPointChanged)
    Q_PROPERTY(InputDocumentObject* idInputDocument READ idInputDocument WRITE setIdInputDocument NOTIFY idInputDocumentChanged)
    Q_PROPERTY(InputGameObject* idInputGame READ idInputGame WRITE setIdInputGame NOTIFY idInputGameChanged)
    Q_PROPERTY(InputPhotoObject* idInputPhoto READ idInputPhoto WRITE setIdInputPhoto NOTIFY idInputPhotoChanged)
    Q_PROPERTY(InvoiceObject* invoice READ invoice WRITE setInvoice NOTIFY invoiceChanged)
    Q_PROPERTY(QString lastName READ lastName WRITE setLastName NOTIFY lastNameChanged)
    Q_PROPERTY(QString mimeType READ mimeType WRITE setMimeType NOTIFY mimeTypeChanged)
    Q_PROPERTY(QByteArray payload READ payload WRITE setPayload NOTIFY payloadChanged)
    Q_PROPERTY(QString phoneNumber READ phoneNumber WRITE setPhoneNumber NOTIFY phoneNumberChanged)
    Q_PROPERTY(InputWebDocumentObject* photo READ photo WRITE setPhoto NOTIFY photoChanged)
    Q_PROPERTY(QString provider READ provider WRITE setProvider NOTIFY providerChanged)
    Q_PROPERTY(QString q READ q WRITE setQ NOTIFY qChanged)
    Q_PROPERTY(QString startParam READ startParam WRITE setStartParam NOTIFY startParamChanged)
    Q_PROPERTY(QList<InputDocument> stickers READ stickers WRITE setStickers NOTIFY stickersChanged)
    Q_PROPERTY(InputFileObject* thumb READ thumb WRITE setThumb NOTIFY thumbChanged)
    Q_PROPERTY(QString title READ title WRITE setTitle NOTIFY titleChanged)
    Q_PROPERTY(QString url READ url WRITE setUrl NOTIFY urlChanged)
    Q_PROPERTY(QString venueId READ venueId WRITE setVenueId NOTIFY venueIdChanged)
    Q_PROPERTY(InputMedia core READ core WRITE setCore NOTIFY coreChanged)
    Q_PROPERTY(quint32 classType READ classType WRITE setClassType NOTIFY classTypeChanged)

public:
    enum InputMediaClassType {
        TypeInputMediaEmpty,
        TypeInputMediaUploadedPhoto,
        TypeInputMediaPhoto,
        TypeInputMediaGeoPoint,
        TypeInputMediaContact,
        TypeInputMediaUploadedDocument,
        TypeInputMediaUploadedThumbDocument,
        TypeInputMediaDocument,
        TypeInputMediaVenue,
        TypeInputMediaGifExternal,
        TypeInputMediaPhotoExternal,
        TypeInputMediaDocumentExternal,
        TypeInputMediaGame,
        TypeInputMediaInvoice
    };

    InputMediaObject(const InputMedia &core, QObject *parent = 0);
    InputMediaObject(QObject *parent = 0);
    virtual ~InputMediaObject();

    void setAddress(const QString &address);
    QString address() const;

    void setAttributes(const QList<DocumentAttribute> &attributes);
    QList<DocumentAttribute> attributes() const;

    void setCaption(const QString &caption);
    QString caption() const;

    void setDescription(const QString &description);
    QString description() const;

    void setFile(InputFileObject* file);
    InputFileObject* file() const;

    void setFirstName(const QString &firstName);
    QString firstName() const;

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

    void setGeoPoint(InputGeoPointObject* geoPoint);
    InputGeoPointObject* geoPoint() const;

    void setIdInputDocument(InputDocumentObject* idInputDocument);
    InputDocumentObject* idInputDocument() const;

    void setIdInputGame(InputGameObject* idInputGame);
    InputGameObject* idInputGame() const;

    void setIdInputPhoto(InputPhotoObject* idInputPhoto);
    InputPhotoObject* idInputPhoto() const;

    void setInvoice(InvoiceObject* invoice);
    InvoiceObject* invoice() const;

    void setLastName(const QString &lastName);
    QString lastName() const;

    void setMimeType(const QString &mimeType);
    QString mimeType() const;

    void setPayload(const QByteArray &payload);
    QByteArray payload() const;

    void setPhoneNumber(const QString &phoneNumber);
    QString phoneNumber() const;

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

    void setProvider(const QString &provider);
    QString provider() const;

    void setQ(const QString &q);
    QString q() const;

    void setStartParam(const QString &startParam);
    QString startParam() const;

    void setStickers(const QList<InputDocument> &stickers);
    QList<InputDocument> stickers() const;

    void setThumb(InputFileObject* thumb);
    InputFileObject* thumb() const;

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

    void setUrl(const QString &url);
    QString url() const;

    void setVenueId(const QString &venueId);
    QString venueId() const;

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

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

    InputMediaObject &operator =(const InputMedia &b);
    bool operator ==(const InputMedia &b) const;

Q_SIGNALS:
    void coreChanged();
    void classTypeChanged();
    void addressChanged();
    void attributesChanged();
    void captionChanged();
    void descriptionChanged();
    void fileChanged();
    void firstNameChanged();
    void flagsChanged();
    void geoPointChanged();
    void idInputDocumentChanged();
    void idInputGameChanged();
    void idInputPhotoChanged();
    void invoiceChanged();
    void lastNameChanged();
    void mimeTypeChanged();
    void payloadChanged();
    void phoneNumberChanged();
    void photoChanged();
    void providerChanged();
    void qChanged();
    void startParamChanged();
    void stickersChanged();
    void thumbChanged();
    void titleChanged();
    void urlChanged();
    void venueIdChanged();

private Q_SLOTS:
    void coreFileChanged();
    void coreGeoPointChanged();
    void coreIdInputDocumentChanged();
    void coreIdInputGameChanged();
    void coreIdInputPhotoChanged();
    void coreInvoiceChanged();
    void corePhotoChanged();
    void coreThumbChanged();

private:
    QPointer<InputFileObject> m_file;
    QPointer<InputGeoPointObject> m_geoPoint;
    QPointer<InputDocumentObject> m_idInputDocument;
    QPointer<InputGameObject> m_idInputGame;
    QPointer<InputPhotoObject> m_idInputPhoto;
    QPointer<InvoiceObject> m_invoice;
    QPointer<InputWebDocumentObject> m_photo;
    QPointer<InputFileObject> m_thumb;
    InputMedia m_core;
};

#endif // LQTG_TYPE_INPUTMEDIA_OBJECT
