ukui-clock/CustomButton.cpp

145 lines
4.8 KiB
C++

#include "CustomButton.h"
#include <QDebug>
#include "theme.h"
CustomButton::CustomButton(QWidget *parent,int width, int height, int status) : QPushButton(parent),m_width(width),m_height(height),position(0),Status(status)
{
max = qMax(m_width,m_height);
min = m_width>m_height?m_height:m_width;
length = max - min;
init(status);
}
CustomButton::~CustomButton()
{
}
//开
void CustomButton::openSlot()
{
//滑动动画
animation1 = new QPropertyAnimation(myLabel, "geometry");
animation1->setDuration(100);
animation1->setKeyValueAt(0, QRect(2, 2, 20, 20));
animation1->setEndValue(QRect(31, 2, 20, 20));
animation1->start();
this->setStyleSheet(openBcack);
myLabel->setStyleSheet(openbtn);
Status = 1;
}
//关
void CustomButton::closeSlot()
{
animation1 = new QPropertyAnimation(myLabel, "geometry");
animation1->setDuration(100);
animation1->setKeyValueAt(0, QRect(31, 2, 20, 20));
animation1->setEndValue(QRect(2, 2, 20, 20));
animation1->start();
this->setStyleSheet(closeBcack);
myLabel->setStyleSheet(closeBtn);
Status = 0;
}
void CustomButton::colorUpdate()
{
switch(Status)
{
case 0:
this->setStyleSheet(closeBcack);
myLabel->setStyleSheet(closeBtn);
break;
case 1:
this->setStyleSheet(openBcack );
myLabel->setStyleSheet(openbtn);
break;
}
}
void CustomButton::init(int status)
{
this->resize(m_width,m_height);
myLabel = new QLabel(this);
myLabel->setObjectName("myLabel");
myLabel->resize(20,20);
this->setStyleSheet(openBcack);
myLabel->setStyleSheet(openbtn);
this->setFixedSize(m_width,m_height);
settingsStyle();
}
void CustomButton::initClose()
{
this->setStyleSheet(closeBcack);
myLabel->setStyleSheet(closeBtn);
Status = 0;
myLabel->move(2,2);
}
void CustomButton::initOpen()
{
Status = 1;
myLabel->move(31,2);
this->setStyleSheet(openBcack);
myLabel->setStyleSheet(openbtn);
}
/*
*监听主题
*/
void CustomButton::settingsStyle()
{
GsettingSubject * subject = GsettingSubject::getInstance();
connect(subject,&GsettingSubject::blackStyle, this,[=](){
this->blackStyle();
});
connect(subject,&GsettingSubject::whiteStyle, this,[=](){
this->whiteStyle();
});
subject->iniWidgetStyle();
}
QColor BACK_COLOR = QColor(220, 220, 220, 255);
//黑色主题
void CustomButton::blackStyle()
{
closeBcack = QString("CustomButton{background-color:rgba(240, 247, 255, 0.2);border-radius:%1px;}").arg(min/2);
QColor b1 = QColor(70, 70, 70, 255);
QString btnColor=theme::getColorStr(b1);
QColor btnHover=QColor(100, 100, 100, 255);
QString btnHoverColor=theme::getColorStr(btnHover);
closeBcack = QString("CustomButton{background-color:"+btnColor+";border-radius:%1px;}CustomButton:pressed{background-color:"+btnHoverColor+";}CustomButton:hover{background-color:"+btnHoverColor+";}").arg(min/2);
closeBtn = QString("#myLabel{background-color:rgba(235, 244, 255, 0.55);border-radius:%1px}").arg(20/2);
QColor deepHigh=theme::highLight_Hover();
QString deepHiColor=theme::getColorStr(deepHigh);
QColor h1 = this->palette().color(QPalette::Inactive,QPalette::Highlight);
QString hiColor=theme::getColorStr(h1);
openBcack = QString("CustomButton{background-color:"+hiColor+";border-radius:%1px;}CustomButton:pressed{background-color:"+deepHiColor+";}CustomButton:hover{background-color:"+deepHiColor+";}").arg(min/2);
openbtn = QString("#myLabel{background-color:rgba(255, 255, 255, 0.88);border-radius:%1px}").arg(20/2);
colorUpdate();
}
//白色主题
void CustomButton::whiteStyle()
{
closeBcack = QString("CustomButton{background-color:rgba(180, 195, 212, 1);border-radius:%1px;}").arg(min/2);
QString btnColor=theme::getColorStr(BACK_COLOR);
QColor btnClick=theme::button_Click();
QString btnClickColor=theme::getColorStr(btnClick);
closeBcack = QString("CustomButton{background-color:"+btnColor+";border-radius:%1px;}CustomButton:pressed{background-color:"+btnClickColor+";}CustomButton:hover{background-color:"+btnClickColor+";}").arg(min/2);
closeBtn = QString("#myLabel{background-color: rgb(240, 245, 250);border-radius:%1px}").arg(20/2);
QColor deepHigh=theme::highLight_Click();
QString deepHiColor=theme::getColorStr(deepHigh);
QColor h1 = this->palette().color(QPalette::Inactive,QPalette::Highlight);
QString hiColor=theme::getColorStr(h1);
openBcack = QString("CustomButton{background-color:"+hiColor+";border-radius:%1px;}CustomButton:pressed{background-color:"+deepHiColor+";}CustomButton:hover{background-color:"+deepHiColor+";}").arg(min/2);
openbtn = QString("#myLabel{background-color: rgba(255, 255, 255, 0.88);border-radius:%1px}").arg(20/2);
colorUpdate();
}