#include "topquickbutton.h"
#include <QLayout>
#include <QMenu>
#include <QPainter>
#include <QPaintEvent>
#include <QVariant>
#include <tbaseutil/tresource.h>
#include <tbaseutil/ttheme.h>
#include <topcore/topclassabs.h>

class TopQuickButtonPrivate
{
    Q_DECLARE_PUBLIC(TopQuickButton)
public:
    explicit TopQuickButtonPrivate(TopQuickButton *qptr)
        : q_ptr(qptr)
    {

    }

    ~TopQuickButtonPrivate()
    {

    }

    QString uidStr;
    bool modifiedBol = false;
    bool closableBol = false;
    bool activedBol = false;
    bool openedBol = false;
    QVariant dataVar;

protected:
    TopQuickButton * const q_ptr;
};

TopQuickButton::TopQuickButton(QWidget *parent) :
    QToolButton(parent),
    d_ptr(new TopQuickButtonPrivate(this))
{
    setStyleSheet(QString("TopQuickButton{margin:%1px; border:none; background:#2196F3; border-radius:%2px;color:#FFFFFF;}\n" \
                          "TopQuickButton:hover{border-radius:%3px}\n" \
                          "QToolButton::menu-indicator{image:None;}")
                  .arg(TTHEME_DP(4)).arg(TTHEME_DP(10)).arg(TTHEME_DP(16)));
    setFixedSize(QSize(TTHEME_DP(40),TTHEME_DP(40)));
}

TopQuickButton::~TopQuickButton()
{

}

void TopQuickButton::setUid(const QString &iUidStr)
{
    Q_D(TopQuickButton);
    d->uidStr = iUidStr;
}

QString TopQuickButton::uid() const
{
    Q_D(const TopQuickButton);
    return d->uidStr;
}

void TopQuickButton::setData(const QVariant &iDataVar)
{
    Q_D(TopQuickButton);
    d->dataVar = iDataVar;
}

QVariant TopQuickButton::data() const
{
    Q_D(const TopQuickButton);
    return d->dataVar;
}

void TopQuickButton::setModified(bool iBol)
{
    Q_D(TopQuickButton);
    if (d->modifiedBol != iBol) {
        d->modifiedBol = iBol;
        changeStyleSheet();
    }
}

bool TopQuickButton::isModified() const
{
    Q_D(const TopQuickButton);
    return d->modifiedBol;
}

void TopQuickButton::setClosable(bool iBol)
{
    Q_D(TopQuickButton);
    d->closableBol = iBol;
}

bool TopQuickButton::isClosable() const
{
    Q_D(const TopQuickButton);
    return d->closableBol;
}

void TopQuickButton::setActived(bool iBol)
{
    Q_D(TopQuickButton);
    if (d->activedBol != iBol) {
        d->activedBol = iBol;
        changeStyleSheet();
    }
}

bool TopQuickButton::isActived() const
{
    Q_D(const TopQuickButton);
    return d->activedBol;
}

void TopQuickButton::setOpened(bool iBol)
{
    Q_D(TopQuickButton);
    if (d->openedBol != iBol) {
        d->openedBol = iBol;
        changeStyleSheet();
    }
}

bool TopQuickButton::isOpened() const
{
    Q_D(const TopQuickButton);
    return d->openedBol;
}

void TopQuickButton::changeStyleSheet()
{
//    setStyleSheet(QString(".TopQuickButton{background-color:%1;padding:0px;}\n"
//                          ".TopQuickButton:hover{%2;border: none;}")
//                  .arg(isActived() ? "rgba(255,255,255,0.15)" : "transparent")
//                  .arg(isActived() ? "transparent" : "background:rgba(255,255,255,0.15)"));
}