forked from openkylin/quarkai
97 lines
3.0 KiB
C++
97 lines
3.0 KiB
C++
/*
|
|
* Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin 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; version 3.
|
|
*
|
|
* 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, see <http://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
#include "toolkits.h"
|
|
|
|
Toolkits::Toolkits(QObject *parent, int width, int height) :
|
|
QObject(parent), parent_width(width), parent_height(height)
|
|
{
|
|
this->alert_width = 200;
|
|
this->alert_height = 75;
|
|
|
|
alertBG = new AlertDialog();
|
|
this->alertTimer = new QTimer(this);
|
|
connect(alertTimer, SIGNAL(timeout()), this, SLOT(updateAlert()));
|
|
this->alertDelayTimer = new QTimer(this);
|
|
connect(alertDelayTimer, SIGNAL(timeout()), this, SLOT(hideAlert()));
|
|
this->alertGOE = new QGraphicsOpacityEffect();
|
|
this->alertBG->setGraphicsEffect(alertGOE);
|
|
this->ao = 0.0;
|
|
this->alertBG->hide();
|
|
}
|
|
|
|
Toolkits::~Toolkits()
|
|
{
|
|
if(alertGOE != NULL) {
|
|
delete alertGOE;
|
|
alertGOE = NULL;
|
|
}
|
|
if(alertBG != NULL) {
|
|
delete alertBG;
|
|
alertBG = NULL;
|
|
}
|
|
if (alertTimer != NULL) {
|
|
disconnect(alertTimer,SIGNAL(timeout()),this,SLOT(updateAlert()));
|
|
if(alertTimer->isActive()) {
|
|
alertTimer->stop();
|
|
}
|
|
delete alertTimer;
|
|
alertTimer = NULL;
|
|
}
|
|
if (alertDelayTimer != NULL) {
|
|
disconnect(alertDelayTimer,SIGNAL(timeout()),this,SLOT(hideAlert()));
|
|
if(alertDelayTimer->isActive()) {
|
|
alertDelayTimer->stop();
|
|
}
|
|
delete alertDelayTimer;
|
|
alertDelayTimer = NULL;
|
|
}
|
|
}
|
|
|
|
//启动alert提示
|
|
void Toolkits::alertMSG(int x, int y, const QString &alertText) {
|
|
this->alert_x = x + (this->parent_width / 2) - (this->alert_width / 2);
|
|
this->alert_y = y + (this->parent_height /2) - (this->alert_height / 2);
|
|
|
|
this->ay = this->alert_y;
|
|
this->ao = 0.0;
|
|
this->alertBG->move(this->alert_x, this->alert_y);
|
|
this->alertGOE->setOpacity(this->ao);
|
|
this->alertBG->setMSG(alertText);
|
|
this->alertBG->show();
|
|
this->alertTimer->start(15);
|
|
}
|
|
//alert提示框的步处理
|
|
void Toolkits::updateAlert() {
|
|
if(this->ao < 0.90){
|
|
this->ao += 0.02;
|
|
this->alertGOE->setOpacity(this->ao);
|
|
}
|
|
if(this->ay <= (this->alert_y - 150)){
|
|
this->alertTimer->stop();
|
|
//5秒后自动关闭alert提示框
|
|
this->alertDelayTimer->start(1000);
|
|
}else{
|
|
this->ay -= 3;
|
|
this->alertBG->move(this->alert_x,this->ay);
|
|
}
|
|
}
|
|
//隐藏alert提示框
|
|
void Toolkits::hideAlert() {
|
|
this->alertBG->hide();
|
|
this->alertDelayTimer->stop();
|
|
}
|