blob: 174e33852fe4be072ae747b5348e817e78c4fc7a [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 Moiseenko5a4e4242013-11-10 12:54:50 -080078 QProcess *processLookup;
Ilya Moiseenko69abb972013-11-04 16:02:20 -080079 QProcess *applyStatusXslt;
80 QProcess *applyFibXslt;
81
Ilya Moiseenko18c8a132013-10-24 01:52:52 -070082 QString statusXml;
83 QString fibContentsXml;
84
85 QStandardItemModel *model;
86 int selectedRow;
Ilya Moiseenko69abb972013-11-04 16:02:20 -080087 int scrollPosition;
Ilya Moiseenko18c8a132013-10-24 01:52:52 -070088
89 QAction *statusIndicator;
Ilya Moiseenko3adef432013-11-01 03:42:40 -070090 QAction *displayStatus;
91 QAction *interestSentRecv;
92 QAction *dataSentRecv;
Ilya Moiseenko18c8a132013-10-24 01:52:52 -070093 QAction *open;
94 QAction *close;
95 QAction *openGeneralSettings;
96 QAction *openForwardingSettings;
97 QAction *openSecuritySettings;
98
99 FibInputDialog *dialog;
100
Ilya Moiseenko18c8a132013-10-24 01:52:52 -0700101 bool enableHubDiscovery;
102 bool enableStartOnLogin;
Ilya Moiseenko18c8a132013-10-24 01:52:52 -0700103
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();
Ilya Moiseenko18c8a132013-10-24 01:52:52 -0700123 void changeHubDiscovery();
124 void changeLoginStart();
Ilya Moiseenko393cbdc2013-10-29 00:45:40 -0700125 void copyFile();
Ilya Moiseenko69abb972013-11-04 16:02:20 -0800126 void runXmlProc(QNetworkReply *reply);
127 void parseStatusXml();
128 void parseFibXml();
Ilya Moiseenko5a4e4242013-11-10 12:54:50 -0800129 void parseProcessLookup();
Ilya Moiseenko18c8a132013-10-24 01:52:52 -0700130};
131
132#endif // TRAYMENU_H