aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--main.cpp1
-rw-r--r--mainwindow.cpp39
-rw-r--r--mainwindow.h8
3 files changed, 43 insertions, 5 deletions
diff --git a/main.cpp b/main.cpp
index 0e12450..68af217 100644
--- a/main.cpp
+++ b/main.cpp
@@ -4,6 +4,7 @@
4#include <QMetaObject> 4#include <QMetaObject>
5 5
6 6
7
7int main(int argc, char *argv[]) 8int main(int argc, char *argv[])
8{ 9{
9 QApplication a(argc, argv); 10 QApplication a(argc, argv);
diff --git a/mainwindow.cpp b/mainwindow.cpp
index 6149e0c..b27876c 100644
--- a/mainwindow.cpp
+++ b/mainwindow.cpp
@@ -2,6 +2,21 @@
2#include "ui_mainwindow.h" 2#include "ui_mainwindow.h"
3#include <QDebug> 3#include <QDebug>
4 4
5void MainWindow::onNetworkConfigurationChanged()
6{
7 qDebug() << "configuration changed\n";
8 if(this->mgr->isOnline())
9 {
10 if(this->ui->comboBox->count() == 0)
11 {
12 this->updateSpaceList();
13 this->updateStatus();
14 }
15 else
16 this->updateStatus();
17 }
18}
19
5MainWindow::MainWindow(QWidget *parent) : 20MainWindow::MainWindow(QWidget *parent) :
6 QMainWindow(parent), 21 QMainWindow(parent),
7 ui(new Ui::MainWindow) 22 ui(new Ui::MainWindow)
@@ -21,12 +36,30 @@ MainWindow::MainWindow(QWidget *parent) :
21 36
22 37
23 this->timer = new QTimer(); 38 this->timer = new QTimer();
24 this->connect(this->timer, SIGNAL(timeout()), this, SLOT(updateStatus())); 39 this->connect(this->timer, SIGNAL(timeout()), this, SLOT(updateSpaceList()));
25 // update every five minutes... 40 // update every five minutes...
26 this->timer->start(60000 * 5); 41 this->timer->start(60000 * 5);
27 42
28 //this->pixmap = new QPixmap(120, 120); 43 //this->pixmap = new QPixmap(120, 120);
29 //this->currentIcon = new QIcon(this->pixmap); 44 //this->currentIcon = new QIcon(this->pixmap);
45
46 this->mgr = new QNetworkConfigurationManager();
47 connect(this->mgr,
48 SIGNAL(configurationChanged(const QNetworkConfiguration &)),
49 this,
50 SLOT(onNetworkConfigurationChanged()));
51
52 connect(this->mgr, &QNetworkConfigurationManager::onlineStateChanged,
53 [=] (bool b)
54 {
55 if(!b)
56 {
57 this->qsystemtrayicon->setIcon(QIcon::fromTheme("network-error"));
58 this->qsystemtrayicon->showMessage("Offline", "The network connection was lost :(");
59 }
60
61 });
62
30} 63}
31 64
32MainWindow::~MainWindow() 65MainWindow::~MainWindow()
@@ -56,10 +89,6 @@ void MainWindow::updateSpaceList()
56 } 89 }
57 ui->comboBox->setDisabled(false); 90 ui->comboBox->setDisabled(false);
58 91
59 // in case of a bad network connection the combobox might show an element
60 // but does not download data. clicking refresh does not solve that, because
61 // setCurrentIndex does not trigger a refresh in that (rare) case...
62 this->updateStatus(); // fixes case where setCurrentIndex does not call on_comboBox_currentIndexChanged
63} 92}
64 93
65QJsonObject json_find(QJsonObject json, QStringList list) 94QJsonObject json_find(QJsonObject json, QStringList list)
diff --git a/mainwindow.h b/mainwindow.h
index 305b79b..916f95b 100644
--- a/mainwindow.h
+++ b/mainwindow.h
@@ -26,6 +26,10 @@
26#include <QTimer> 26#include <QTimer>
27 27
28#include <QApplication> 28#include <QApplication>
29#include <QNetworkSession>
30#include <QNetworkConfigurationManager>
31
32
29 33
30namespace Ui { 34namespace Ui {
31class MainWindow; 35class MainWindow;
@@ -47,6 +51,7 @@ private:
47 QTimer* timer; 51 QTimer* timer;
48 void saveSettings(); 52 void saveSettings();
49 QByteArray download(QUrl url); 53 QByteArray download(QUrl url);
54 QNetworkConfigurationManager* mgr;
50 55
51 56
52private slots: 57private slots:
@@ -55,6 +60,9 @@ private slots:
55 void updateStatus(); 60 void updateStatus();
56 void updateSpaceList(); 61 void updateSpaceList();
57 void exitApplication(); 62 void exitApplication();
63 //void stateChanged(QNetworkSession::State);
64 //void onlineStateChanged(bool);
65 void onNetworkConfigurationChanged();
58}; 66};
59 67
60#endif // MAINWINDOW_H 68#endif // MAINWINDOW_H
..