~feng-kylin/youker-assistant/youker-assistant

« back to all changes in this revision

Viewing changes to src/warningdialog.cpp

  • Committer: kobe
  • Date: 2015-02-13 07:37:10 UTC
  • Revision ID: xiangli@ubuntukylin.com-20150213073710-0jyp02ilyi5njj10
Qt Version

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/*
2
 
 * Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd.
3
 
 *
4
 
 * This program is free software; you can redistribute it and/or modify
5
 
 * it under the terms of the GNU General Public License as published by
6
 
 * the Free Software Foundation; version 3.
7
 
 *
8
 
 * This program is distributed in the hope that it will be useful,
9
 
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10
 
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11
 
 * GNU General Public License for more details.
12
 
 *
13
 
 * You should have received a copy of the GNU General Public License
14
 
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
15
 
 */
16
 
#include "warningdialog.h"
17
 
#include "ui_warningdialog.h"
18
 
#include <QMouseEvent>
19
 
 
20
 
WarningDialog::WarningDialog(QString title, QString content,QWidget *parent) :
21
 
    QDialog(parent),
22
 
    ui(new Ui::WarningDialog)
23
 
{
24
 
    ui->setupUi(this);
25
 
    this->setAttribute(Qt::WA_DeleteOnClose);
26
 
    this->setWindowFlags(Qt::FramelessWindowHint);
27
 
 
28
 
    ui->widget->setAutoFillBackground(true);
29
 
    QPalette palette;
30
 
    QPixmap img(":/pixmap/image/titlebg.png");
31
 
    palette.setBrush(QPalette::Window, img);//标题栏背景颜色
32
 
    ui->widget->setPalette(palette);
33
 
    //http://www.atool.org/colorpicker.php
34
 
    ui->widget_2->setAutoFillBackground(true);
35
 
    palette.setColor(QPalette::Background, QColor(228,242,252));//#e4f2fc
36
 
    ui->widget_2->setPalette(palette);
37
 
 
38
 
    ui->btn_close->installEventFilter(this);
39
 
    ui->btn_min->installEventFilter(this);
40
 
    ui->okButton->installEventFilter(this);
41
 
    ui->btn_close->setStyleSheet("border-image:url(:/pixmap/image/closeBtn.png)");
42
 
    ui->btn_min->setStyleSheet("border-image:url(:/pixmap/image/minBtn.png)");
43
 
    ui->okButton->setStyleSheet("QPushButton {border-image:url(:/pixmap/image/button12-gray.png);}"
44
 
                "QPushButton:hover{border-image:url(:/pixmap/image/button12-gray-hover.png);}");
45
 
    //QLabel自动换行
46
 
    ui->displaylabel->setWordWrap(true);
47
 
    ui->label->setText(title);
48
 
    ui->displaylabel->setText(content);
49
 
    QObject::connect(ui->okButton,SIGNAL(clicked()),this,SLOT(accept()));
50
 
}
51
 
 
52
 
WarningDialog::~WarningDialog() {
53
 
    delete ui;
54
 
}
55
 
 
56
 
bool WarningDialog::eventFilter(QObject *obj, QEvent *event) {
57
 
    if(obj == ui->btn_min){
58
 
            if(event->type() == QEvent::Enter){
59
 
                ui->btn_min->setPixmap(QPixmap(":/pixmap/image/minBtn_hover.png"));
60
 
            }else if(event->type() == QEvent::Leave){
61
 
                ui->btn_min->setPixmap(QPixmap(":/pixmap/image/minBtn.png"));
62
 
            }else if(event->type() == QEvent::MouseButtonPress){
63
 
                ui->btn_min->setPixmap(QPixmap(":/pixmap/image/minBtn_hover.png"));
64
 
            }else if(event->type() == QEvent::MouseButtonRelease){
65
 
                QMouseEvent *me = (QMouseEvent *)event;
66
 
                QLabel *lb = (QLabel *)obj;
67
 
                if(me->x() > 0 && me->x() < lb->width() && me->y() > 0 && me->y() < lb->height()){
68
 
                    this->showMinimized();
69
 
                }else{
70
 
                    ui->btn_min->setPixmap(QPixmap(":/pixmap/image/minBtn.png"));
71
 
                }
72
 
            } else {
73
 
                return QObject::eventFilter(obj, event);
74
 
            }
75
 
    }
76
 
    if(obj == ui->btn_close){
77
 
            if(event->type() == QEvent::Enter){
78
 
                ui->btn_close->setPixmap(QPixmap(":/pixmap/image/closeBtn_hover.png"));
79
 
            }else if(event->type() == QEvent::Leave){
80
 
                ui->btn_close->setPixmap(QPixmap(":/pixmap/image/closeBtn.png"));
81
 
            }else if(event->type() == QEvent::MouseButtonPress){
82
 
                ui->btn_close->setPixmap(QPixmap(":/pixmap/image/closeBtn_hover.png"));
83
 
            }else if(event->type() == QEvent::MouseButtonRelease){
84
 
                QMouseEvent *me = (QMouseEvent *)event;
85
 
                QLabel *lb = (QLabel *)obj;
86
 
                if(me->x() > 0 && me->x() < lb->width() && me->y() > 0 && me->y() < lb->height()){
87
 
                    this->close();
88
 
                }else{
89
 
                    ui->btn_close->setPixmap(QPixmap(":/pixmap/image/closeBtn.png"));
90
 
                }
91
 
            } else {
92
 
                return QObject::eventFilter(obj, event);
93
 
            }
94
 
    }
95
 
    if(obj == ui->okButton)
96
 
    {
97
 
        if(event->type() == QEvent::MouseButtonPress)
98
 
        {
99
 
            QMouseEvent *me = (QMouseEvent *)event;
100
 
            dragPos = me->globalPos() - frameGeometry().topLeft();
101
 
        }else if(event->type() == QEvent::MouseButtonRelease)
102
 
        {
103
 
            setWindowOpacity(1);
104
 
        }
105
 
    }
106
 
    return QObject::eventFilter(obj, event);
107
 
 
108
 
 
109
 
}
110
 
 
111
 
void WarningDialog::mousePressEvent(QMouseEvent *event) {
112
 
    if (event->button() == Qt::LeftButton) {
113
 
        dragPos = event->globalPos() - frameGeometry().topLeft();
114
 
        event->accept();
115
 
    }
116
 
}
117
 
 
118
 
void WarningDialog::mouseMoveEvent(QMouseEvent *event) {
119
 
    if (event->buttons() & Qt::LeftButton ) {
120
 
        move(event->globalPos() - dragPos);
121
 
        setWindowOpacity(0.5);
122
 
    }
123
 
    event->accept();
124
 
}
125
 
 
126
 
void WarningDialog::mouseReleaseEvent(QMouseEvent *event) {
127
 
    if (event->button() == Qt::LeftButton) {
128
 
        setWindowOpacity(1);
129
 
    }
130
 
    event->accept();
131
 
}