#ifndef PQLISTWIDGETITEM_H
#define PQLISTWIDGETITEM_H

#include <pqobject.h>
#include <QListWidgetItem>
#include "pqlistwidget.h"

class PQListWidget;
class PQListWidgetItem;
class PQListWidgetItem : public QObject, public QListWidgetItem {
    Q_OBJECT
    PQ_OBJECT_EX(QObject)

public:
    // Q_INVOKABLE explicit PQListWidgetItem(QObject *parent = 0);
    Q_INVOKABLE PQListWidgetItem(PQListWidget *parent = 0, int type = Type);
    Q_INVOKABLE PQListWidgetItem(const QString &text, PQListWidget *parent = 0, int type = Type);
    Q_INVOKABLE PQListWidgetItem(const QIcon &icon, const QString &text, PQListWidget *parent = 0, int type = Type);

    Q_INVOKABLE bool isHidden();
    Q_INVOKABLE bool isSelected();
    Q_INVOKABLE void setHidden(bool hidden);
    Q_INVOKABLE void setIcon(const QString &iconPath);
    Q_INVOKABLE void setIcon(const QIcon &icon);
    Q_INVOKABLE void setSelected(bool selected);
    Q_INVOKABLE void setSizeHint(int width, int height);
    Q_INVOKABLE void setStatusTip(const QString &statusTip);
    Q_INVOKABLE void setText(const QString &text);
    Q_INVOKABLE void setTextAlignment(int alignment);
    Q_INVOKABLE void setToolTip(const QString &toolTip);
    Q_INVOKABLE void setWhatsThis(const QString &whatsThis);
    Q_INVOKABLE QSize sizeHint() const;
    Q_INVOKABLE QString statusTip() const;
    Q_INVOKABLE QString text() const;
    Q_INVOKABLE int textAlignment() const;
    Q_INVOKABLE QString toolTip() const;
    Q_INVOKABLE QString whatsThis() const;

    ~PQListWidgetItem(){}

private:
    QString m_iconPath = "";
};

Q_DECLARE_METATYPE(PQListWidgetItem*)
Q_DECLARE_METATYPE(QListWidgetItem*)

#endif // PQLISTWIDGETITEM_H
