blob: fa28471a6d417126c6590ccda696a3a65fd95703 [file] [log] [blame]
Ilya Moiseenko18c8a132013-10-24 01:52:52 -07001/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil -*- */
2/*
3 * @copyright See LICENCE for copyright and license information.
4 *
5 * @author Ilya Moiseenko <iliamo@ucla.edu>
6 */
7
8#ifndef TRAYMENU_H
9#define TRAYMENU_H
10
11#include <QMainWindow>
12#include <QWidget>
13#include <QSystemTrayIcon>
14#include <QMenu>
15#include <QTimer>
16#include <QProcess>
17#include <QThread>
Ilya Moiseenko18c8a132013-10-24 01:52:52 -070018#include <QStandardItemModel>
19#include <QtXml>
Ilya Moiseenko393cbdc2013-10-29 00:45:40 -070020#include <QThread>
21#include <QSettings>
Ilya Moiseenko69abb972013-11-04 16:02:20 -080022#include <QNetworkAccessManager>
23#include <QNetworkRequest>
24#include <QNetworkReply>
Ilya Moiseenko18c8a132013-10-24 01:52:52 -070025
Ilya Moiseenko656d52d2013-10-25 14:19:10 -070026#include "fib-input-dialog.h"
27#include "quit-dialog.h"
28#include "network-manager.h"
Ilya Moiseenko18c8a132013-10-24 01:52:52 -070029
Ilya Moiseenko393cbdc2013-10-29 00:45:40 -070030#define ALLOW_SOFTWARE_UPDATES "AllowAutomaticUpdates"
31#define ENABLE_HUB_DISCOVERY "EnableHubDiscovery"
32#define ENABLE_START_ON_LOGIN "enableStartOnLogin"
33#define SHUTDOWN_ON_EXIT "ShutdownOnExit"
34
35#define AUTOSTART_DIRECTORY "/.config/autostart/"
36#define SHORTCUT_FILE "ndnxcontrolcenter.desktop"
Ilya Moiseenko69abb972013-11-04 16:02:20 -080037#define STATUS_XSLT_FILE "status.xslt"
38#define FIB_XSLT_FILE "status-to-fib.xslt"
Ilya Moiseenko393cbdc2013-10-29 00:45:40 -070039
Ilya Moiseenko18c8a132013-10-24 01:52:52 -070040namespace Ui
41{
42 class TrayMenu;
43}
44
45class TrayMenu : public QMainWindow
46{
47 Q_OBJECT
48
49public:
50 explicit TrayMenu(QWidget *parent = 0);
51 ~TrayMenu();
52
53private:
54 Ui::TrayMenu *ui;
55
56 void createTrayIcon();
57 void setIcon(bool isConnected);
58 void createToolbar();
59 void createTableView();
60 void closeEvent(QCloseEvent *); // Overriding the window's close event
61 void showEvent(QShowEvent * event); //Overriding the window's show event
62
Ilya Moiseenko393cbdc2013-10-29 00:45:40 -070063 void loadSettings();
64 void makeAutostartDirectory();
65
66 bool daemonStarted;
67
68 QSettings *persistentSettings;
Ilya Moiseenko18c8a132013-10-24 01:52:52 -070069
70 QSystemTrayIcon *trayIcon;
71 QMenu *trayIconMenu;
72 QToolBar *toolBar;
73
74 QTimer *daemonStatusTimer;
75 QThread *statusUpdateThread;
76
Ilya Moiseenko69abb972013-11-04 16:02:20 -080077 QProcess *applyStatusXslt;
78 QProcess *applyFibXslt;
79
Ilya Moiseenko18c8a132013-10-24 01:52:52 -070080 QString statusXml;
81 QString fibContentsXml;
82
83 QStandardItemModel *model;
84 int selectedRow;
Ilya Moiseenko69abb972013-11-04 16:02:20 -080085 int scrollPosition;
Ilya Moiseenko18c8a132013-10-24 01:52:52 -070086
87 QAction *statusIndicator;
Ilya Moiseenko3adef432013-11-01 03:42:40 -070088 QAction *displayStatus;
89 QAction *interestSentRecv;
90 QAction *dataSentRecv;
Ilya Moiseenko18c8a132013-10-24 01:52:52 -070091 QAction *open;
92 QAction *close;
93 QAction *openGeneralSettings;
94 QAction *openForwardingSettings;
95 QAction *openSecuritySettings;
96
97 FibInputDialog *dialog;
98
99 bool allowAutomaticUpdates;
100 bool enableHubDiscovery;
101 bool enableStartOnLogin;
102 bool shutdownOnExit;
103
Ilya Moiseenko656d52d2013-10-25 14:19:10 -0700104 NetworkManager *networkManager;
Ilya Moiseenko69abb972013-11-04 16:02:20 -0800105 QNetworkAccessManager *urlManager;
Ilya Moiseenko656d52d2013-10-25 14:19:10 -0700106
Ilya Moiseenko18c8a132013-10-24 01:52:52 -0700107private slots:
108 void trayIconClicked(QSystemTrayIcon::ActivationReason);
109 void generalSettingsClicked();
110 void forwardingSettingsClicked();
111 void securitySettingsClicked();
112 void openTrafficMap();
113 void openRoutingStatus();
Ilya Moiseenko393cbdc2013-10-29 00:45:40 -0700114 void openCertificationPage();
Ilya Moiseenko18c8a132013-10-24 01:52:52 -0700115 void displayPopup();
Alexander Afanasyev86240d02013-11-08 23:32:53 -0800116 // void confirmQuit();
Ilya Moiseenko18c8a132013-10-24 01:52:52 -0700117 void showFibInputDialog();
Alexander Afanasyev86240d02013-11-08 23:32:53 -0800118 // void terminateDaemonAndClose();
Ilya Moiseenko18c8a132013-10-24 01:52:52 -0700119 void addFibEntry();
120 void daemonStatusUpdate();
121 void selectTableRow();
122 void deleteFibEntry();
123 void changeSoftwareUpdate();
124 void changeHubDiscovery();
125 void changeLoginStart();
126 void changeShutdownExit();
Ilya Moiseenko393cbdc2013-10-29 00:45:40 -0700127 void copyFile();
Ilya Moiseenko69abb972013-11-04 16:02:20 -0800128 void runXmlProc(QNetworkReply *reply);
129 void parseStatusXml();
130 void parseFibXml();
Ilya Moiseenko18c8a132013-10-24 01:52:52 -0700131};
132
133#endif // TRAYMENU_H