34cdc667628ccad772ef5a3a8a841e8bceaebf4b
[quassel.git] / src / qtui / coreconnectionstatuswidget.cpp
1 /***************************************************************************
2  *   Copyright (C) 2009 by the Quassel Project                             *
3  *   devel@quassel-irc.org                                                 *
4  *                                                                         *
5  *   This program is free software; you can redistribute it and/or modify  *
6  *   it under the terms of the GNU General Public License as published by  *
7  *   the Free Software Foundation; either version 2 of the License, or     *
8  *   (at your option) version 3.                                           *
9  *                                                                         *
10  *   This program is distributed in the hope that it will be useful,       *
11  *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
12  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
13  *   GNU General Public License for more details.                          *
14  *                                                                         *
15  *   You should have received a copy of the GNU General Public License     *
16  *   along with this program; if not, write to the                         *
17  *   Free Software Foundation, Inc.,                                       *
18  *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
19  ***************************************************************************/
20
21 #include "coreconnectionstatuswidget.h"
22
23 #include "client.h"
24 #include "iconloader.h"
25 #include "signalproxy.h"
26
27 CoreConnectionStatusWidget::CoreConnectionStatusWidget(CoreConnection *connection, QWidget *parent)
28   : QWidget(parent),
29   _coreConnection(connection)
30 {
31   ui.setupUi(this);
32   ui.lagLabel->hide();
33   ui.sslLabel->hide();
34   update();
35
36   connect(coreConnection(), SIGNAL(progressTextChanged(QString)), ui.messageLabel, SLOT(setText(QString)));
37   connect(coreConnection(), SIGNAL(progressValueChanged(int)), ui.progressBar, SLOT(setValue(int)));
38   connect(coreConnection(), SIGNAL(progressRangeChanged(int, int)), ui.progressBar, SLOT(setRange(int, int)));
39   connect(coreConnection(), SIGNAL(progressRangeChanged(int, int)), this, SLOT(progressRangeChanged(int, int)));
40
41   connect(coreConnection(), SIGNAL(stateChanged(CoreConnection::ConnectionState)), SLOT(connectionStateChanged(CoreConnection::ConnectionState)));
42   connect(coreConnection(), SIGNAL(connectionError(QString)), ui.messageLabel, SLOT(setText(QString)));
43   connect(Client::signalProxy(), SIGNAL(lagUpdated(int)), SLOT(updateLag(int)));
44 }
45
46 void CoreConnectionStatusWidget::update() {
47   CoreConnection *conn = coreConnection();
48   if(conn->progressMaximum() >= 0) {
49     ui.progressBar->setMinimum(conn->progressMinimum());
50     ui.progressBar->setMaximum(conn->progressMaximum());
51     ui.progressBar->setValue(conn->progressValue());
52     ui.progressBar->show();
53   } else
54     ui.progressBar->hide();
55
56   ui.messageLabel->setText(conn->progressText());
57 }
58
59 void CoreConnectionStatusWidget::updateLag(int msecs) {
60   if(msecs >= 0) {
61     ui.lagLabel->setText(tr("(Lag: %1 ms)").arg(msecs));
62     if(!ui.lagLabel->isVisible())
63       ui.lagLabel->show();
64   } else {
65     if(ui.lagLabel->isVisible())
66       ui.lagLabel->hide();
67   }
68 }
69
70 void CoreConnectionStatusWidget::connectionStateChanged(CoreConnection::ConnectionState state) {
71   if(state >= CoreConnection::Connected) {
72     if(coreConnection()->isEncrypted()) {
73       ui.sslLabel->setPixmap(SmallIcon("security-high"));
74       ui.sslLabel->setToolTip(tr("The connection to your core is encrypted with SSL."));
75     } else {
76       ui.sslLabel->setPixmap(SmallIcon("security-low"));
77       ui.sslLabel->setToolTip(tr("The connection to your core is not encrypted."));
78     }
79     ui.sslLabel->show();
80   } else
81     ui.sslLabel->hide();
82 }
83
84 void CoreConnectionStatusWidget::progressRangeChanged(int min, int max) {
85   Q_UNUSED(min)
86   ui.progressBar->setVisible(max >= 0);
87 }