/***************************************************************************
 *   Copyright (C) 2023 by Santiago González                               *
 *                                                                         *
 ***( see copyright.txt file at root folder )*******************************/

#include "custombutton.h"
#include "mainwindow.h"

#include <QPainter>
#include <QColor>

CustomButton::CustomButton( QWidget* parent )
            : QToolButton( parent )
{
    QFont f = this->font(); 
    f.setFamily( MainWindow::self()->defaultFontName() ); 
    f.setPixelSize(11); 
    setFont( f ); 

    setCursor( Qt::PointingHandCursor ); 
    setAttribute( Qt::WA_TranslucentBackground ); 
}

void CustomButton::paintEvent( QPaintEvent* )
{
    QPainter painter(this); 
    painter.setRenderHint( QPainter::Antialiasing );  // Smooth out the circle
    QPen pen = painter.pen(); 

    int h = height()-2; 
    int w = width(); 

    pen.setColor( QColor( 110, 110, 110 ) ); 
    painter.setPen( pen ); 
    painter.drawRoundedRect( QRectF( .8, .8, w-2+.4, h+.4 ),2,2 ); 
    painter.setPen( QPen(Qt::NoPen) ); 

    QRectF rect; 
    QLinearGradient linearGrad( QPointF(w/2, 0), QPointF(w/2, h) ); 

    if( this->isDown() || isChecked() ){
        linearGrad.setColorAt( 0, QColor( 230, 230, 230 ) ); 
        linearGrad.setColorAt( 1, QColor( 180, 180, 180 ) ); 
        rect = QRectF( 1.3, 1.3, w-2, h ); 
    }else{
        linearGrad.setColorAt(0, Qt::white); 
        linearGrad.setColorAt(1, QColor( 200, 200, 200 ) ); 
        rect = QRectF( 1, 1, w-2, h ); 
    }
    painter.setBrush( linearGrad ); 
    painter.drawRoundedRect( rect, 2, 2 ); 

    pen.setColor( QColor( 0, 0, 20 ) ); 
    painter.setPen( pen ); 
    painter.drawText( rect, Qt::AlignCenter, text() ); 
}
