blob: 3a8110aa82aa6cf26e5d028392182ee88d7c4c09 [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
Ilya Moiseenkoa439f3d2013-11-09 18:41:46 -080066 void resizeEvent (QResizeEvent * event);
67
Ilya Moiseenko393cbdc2013-10-29 00:45:40 -070068 bool daemonStarted;
69
70 QSettings *persistentSettings;
Ilya Moiseenko18c8a132013-10-24 01:52:52 -070071
72 QSystemTrayIcon *trayIcon;
73 QMenu *trayIconMenu;
Ilya Moiseenko18c8a132013-10-24 01:52:52 -070074
75 QTimer *daemonStatusTimer;
76 QThread *statusUpdateThread;
77
Ilya Moiseenko69abb972013-11-04 16:02:20 -080078 QProcess *applyStatusXslt;
79 QProcess *applyFibXslt;
80
Ilya Moiseenko18c8a132013-10-24 01:52:52 -070081 QString statusXml;
82 QString fibContentsXml;
83
84 QStandardItemModel *model;
85 int selectedRow;
Ilya Moiseenko69abb972013-11-04 16:02:20 -080086 int scrollPosition;
Ilya Moiseenko18c8a132013-10-24 01:52:52 -070087
88 QAction *statusIndicator;
Ilya Moiseenko3adef432013-11-01 03:42:40 -070089 QAction *displayStatus;
90 QAction *interestSentRecv;
91 QAction *dataSentRecv;
Ilya Moiseenko18c8a132013-10-24 01:52:52 -070092 QAction *open;
93 QAction *close;
94 QAction *openGeneralSettings;
95 QAction *openForwardingSettings;
96 QAction *openSecuritySettings;
97
98 FibInputDialog *dialog;
99
Ilya Moiseenko18c8a132013-10-24 01:52:52 -0700100 bool enableHubDiscovery;
101 bool enableStartOnLogin;
Ilya Moiseenko18c8a132013-10-24 01:52:52 -0700102
Ilya Moiseenko656d52d2013-10-25 14:19:10 -0700103 NetworkManager *networkManager;
Ilya Moiseenko69abb972013-11-04 16:02:20 -0800104 QNetworkAccessManager *urlManager;
Ilya Moiseenko656d52d2013-10-25 14:19:10 -0700105
Ilya Moiseenko18c8a132013-10-24 01:52:52 -0700106private slots:
107 void trayIconClicked(QSystemTrayIcon::ActivationReason);
108 void generalSettingsClicked();
109 void forwardingSettingsClicked();
110 void securitySettingsClicked();
111 void openTrafficMap();
112 void openRoutingStatus();
Ilya Moiseenko393cbdc2013-10-29 00:45:40 -0700113 void openCertificationPage();
Ilya Moiseenko18c8a132013-10-24 01:52:52 -0700114 void displayPopup();
Alexander Afanasyev86240d02013-11-08 23:32:53 -0800115 // void confirmQuit();
Ilya Moiseenko18c8a132013-10-24 01:52:52 -0700116 void showFibInputDialog();
Alexander Afanasyev86240d02013-11-08 23:32:53 -0800117 // void terminateDaemonAndClose();
Ilya Moiseenko18c8a132013-10-24 01:52:52 -0700118 void addFibEntry();
119 void daemonStatusUpdate();
120 void selectTableRow();
121 void deleteFibEntry();
Ilya Moiseenko18c8a132013-10-24 01:52:52 -0700122 void changeHubDiscovery();
123 void changeLoginStart();
Ilya Moiseenko393cbdc2013-10-29 00:45:40 -0700124 void copyFile();
Ilya Moiseenko69abb972013-11-04 16:02:20 -0800125 void runXmlProc(QNetworkReply *reply);
126 void parseStatusXml();
127 void parseFibXml();
Ilya Moiseenko18c8a132013-10-24 01:52:52 -0700128};
129
130#endif // TRAYMENU_H