Files
ukui-session-manager/tools/mypushbutton.cpp
T
2022-03-02 17:47:19 +08:00

154 lines
5.1 KiB
C++

/*
* Copyright (C) Copyright 2021 KylinSoft Co., Ltd.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2, or (at your option)
* any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
* 02110-1301, USA.
**/
#include "mypushbutton.h"
#include <QPixmap>
#include <QVBoxLayout>
#include <QDebug>
#include <QEvent>
MyPushButton::MyPushButton(QString iconPath, QString buttonLable, QString objName, QWidget *parent, int x, int y,
int width, int height, int iconWidth, int labelWidth)
: QWidget(parent)
{
this->setFixedSize(labelWidth, height);
this->setObjectName(objName);
QVBoxLayout *vBoxLayout = new QVBoxLayout();
vBoxLayout->setContentsMargins(0, 0, 0, 10);
m_iconLabel = new MyIconLabel(labelWidth, iconWidth, iconPath);
m_iconLabel->setObjectName(objName + "_button");
m_iconLabel->installEventFilter(this);
m_buttonLabel = new QLabel();
m_buttonLabelFont = QFont("Noto Sans CJK SC");
m_buttonLabel->setFont(m_buttonLabelFont);
m_buttonLabel->setText(buttonLable);
m_buttonLabel->setStyleSheet("color: white; font: 12pt");
m_buttonLabel->setAlignment(Qt::AlignHCenter | Qt::AlignTop);
vBoxLayout->addWidget(m_iconLabel, 0, Qt::AlignHCenter);
vBoxLayout->addWidget(m_buttonLabel, 0, Qt::AlignHCenter);
this->setLayout(vBoxLayout);
connect(m_iconLabel, &MyIconLabel::mouseEventSignals, this, &MyPushButton::iconLabelMouseEvent);
}
MyPushButton::~MyPushButton()
{
}
void MyPushButton::changeIconBackColor(bool isChoose, bool isKeySelect)
{
if(m_isMouseSelect && m_isKeySelect){
if((isChoose && isKeySelect) || (isChoose && !isKeySelect)){
m_isKeySelect = true;
m_isMouseSelect = true;
}
else if(!isChoose && !isKeySelect){
m_isKeySelect = true;
m_isMouseSelect = false;
}
else if(!isChoose && isKeySelect){
m_isKeySelect = false;
m_isMouseSelect = true;
}
}
else if(m_isMouseSelect && !m_isKeySelect){
if((isChoose && isKeySelect) || (!isChoose && !isKeySelect)){
m_isKeySelect = isKeySelect;
m_isMouseSelect = isChoose;
}
else if((isChoose && !isKeySelect) || (!isChoose && isKeySelect)){
m_isKeySelect = false;
m_isMouseSelect = true;
}
}
else if(!m_isMouseSelect && !m_isKeySelect){
if(isChoose && isKeySelect){
m_isKeySelect = true;
m_isMouseSelect = false;
}
else if(isChoose && !isKeySelect){
m_isKeySelect = false;
m_isMouseSelect = true;
}
else if((!isChoose && !isKeySelect) || (!isChoose && isKeySelect)){
m_isKeySelect = false;
m_isMouseSelect = false;
}
}
else if(!m_isMouseSelect && m_isKeySelect){
if((isChoose && isKeySelect) || (!isChoose && !isKeySelect)){
m_isKeySelect = true;
m_isMouseSelect = false;
}
else if((isChoose && !isKeySelect) || (!isChoose && isKeySelect)){
m_isKeySelect = !isKeySelect;
m_isMouseSelect = isChoose;
}
}
// qDebug() << "isKeySelect..." << objectName() << m_isKeySelect << m_isMouseSelect;
QString str;
if((m_isKeySelect && m_isMouseSelect) || (m_isKeySelect && !m_isMouseSelect)){
str = "QLabel#" + m_iconLabel->objectName() + "{background-color: rgb(255,255,255,80);border: 1px solid #296CD9; border-radius: " + QString::number(m_iconLabel->width()/2) + "px;}";
}
else if(!m_isKeySelect && m_isMouseSelect){
str = "QLabel#" + m_iconLabel->objectName() + "{background-color: rgb(255,255,255,80);border-radius: " + QString::number(m_iconLabel->width()/2) + "px;}";
}
else if(!m_isKeySelect && !m_isMouseSelect){
str = "QLabel#" + m_iconLabel->objectName() + "{background-color: rgb(255,255,255,40);border: 0px; border-radius: " + QString::number(m_iconLabel->width()/2) + "px;}";
}
m_iconLabel->setStyleSheet(str);
m_iconLabel->setAttribute(Qt::WA_StyledBackground);
}
MyIconLabel* MyPushButton::getIconLabel()
{
return m_iconLabel;
}
void MyPushButton::iconLabelMouseEvent(QEvent *event)
{
emit mouseRelase(event, m_iconLabel->objectName());
}
bool MyPushButton::getIsKeySelect()
{
return m_isKeySelect;
}
bool MyPushButton::getIsMouseSelect()
{
return m_isMouseSelect;
}
void MyPushButton::setIsKeySelect(bool isKeySelect)
{
if(m_isKeySelect != isKeySelect)
m_isKeySelect = isKeySelect;
}
void MyPushButton::setIsMouseSelect(bool isMouseSelect)
{
if(m_isMouseSelect != isMouseSelect)
m_isMouseSelect = isMouseSelect;
}