blob: 0badef006d8c7c716dac7414ddf400f0403b720a [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>
18#include <QXmlStreamReader>
19#include <QStandardItemModel>
20#include <QtXml>
Ilya Moiseenko393cbdc2013-10-29 00:45:40 -070021#include <QThread>
22#include <QSettings>
Ilya Moiseenko18c8a132013-10-24 01:52:52 -070023
Ilya Moiseenko656d52d2013-10-25 14:19:10 -070024#include "fib-input-dialog.h"
25#include "quit-dialog.h"
26#include "network-manager.h"
Ilya Moiseenko18c8a132013-10-24 01:52:52 -070027
28#define NDND_START_COMMAND "/usr/local/bin/ndndstart"
29#define NDND_STOP_COMMAND "/usr/local/bin/ndndstop"
30#define NDND_STATUS_COMMAND "/usr/local/bin/ndndsmoketest"
31#define NDND_FIB_COMMAND "/usr/local/bin/ndndc"
32
Ilya Moiseenko393cbdc2013-10-29 00:45:40 -070033#define ALLOW_SOFTWARE_UPDATES "AllowAutomaticUpdates"
34#define ENABLE_HUB_DISCOVERY "EnableHubDiscovery"
35#define ENABLE_START_ON_LOGIN "enableStartOnLogin"
36#define SHUTDOWN_ON_EXIT "ShutdownOnExit"
37
38#define AUTOSTART_DIRECTORY "/.config/autostart/"
39#define SHORTCUT_FILE "ndnxcontrolcenter.desktop"
40
Ilya Moiseenko18c8a132013-10-24 01:52:52 -070041namespace Ui
42{
43 class TrayMenu;
44}
45
46class TrayMenu : public QMainWindow
47{
48 Q_OBJECT
49
50public:
51 explicit TrayMenu(QWidget *parent = 0);
52 ~TrayMenu();
53
54private:
55 Ui::TrayMenu *ui;
56
57 void createTrayIcon();
58 void setIcon(bool isConnected);
59 void createToolbar();
60 void createTableView();
61 void closeEvent(QCloseEvent *); // Overriding the window's close event
62 void showEvent(QShowEvent * event); //Overriding the window's show event
63
Ilya Moiseenko393cbdc2013-10-29 00:45:40 -070064 void loadSettings();
65 void makeAutostartDirectory();
66
67 bool daemonStarted;
68
69 QSettings *persistentSettings;
Ilya Moiseenko18c8a132013-10-24 01:52:52 -070070
71 QSystemTrayIcon *trayIcon;
72 QMenu *trayIconMenu;
73 QToolBar *toolBar;
74
75 QTimer *daemonStatusTimer;
76 QThread *statusUpdateThread;
77
78 QString statusXml;
79 QString fibContentsXml;
80
81 QStandardItemModel *model;
82 int selectedRow;
83
84 QAction *statusIndicator;
Ilya Moiseenko3adef432013-11-01 03:42:40 -070085 QAction *displayStatus;
86 QAction *interestSentRecv;
87 QAction *dataSentRecv;
Ilya Moiseenko18c8a132013-10-24 01:52:52 -070088 QAction *open;
89 QAction *close;
90 QAction *openGeneralSettings;
91 QAction *openForwardingSettings;
92 QAction *openSecuritySettings;
93
94 FibInputDialog *dialog;
95
96 bool allowAutomaticUpdates;
97 bool enableHubDiscovery;
98 bool enableStartOnLogin;
99 bool shutdownOnExit;
100
Ilya Moiseenko656d52d2013-10-25 14:19:10 -0700101 NetworkManager *networkManager;
102
Ilya Moiseenko18c8a132013-10-24 01:52:52 -0700103private slots:
104 void trayIconClicked(QSystemTrayIcon::ActivationReason);
105 void generalSettingsClicked();
106 void forwardingSettingsClicked();
107 void securitySettingsClicked();
108 void openTrafficMap();
109 void openRoutingStatus();
Ilya Moiseenko393cbdc2013-10-29 00:45:40 -0700110 void openCertificationPage();
Ilya Moiseenko18c8a132013-10-24 01:52:52 -0700111 void displayPopup();
112 void confirmQuit();
113 void showFibInputDialog();
114 void terminateDaemonAndClose();
115 void addFibEntry();
116 void daemonStatusUpdate();
117 void selectTableRow();
118 void deleteFibEntry();
119 void changeSoftwareUpdate();
120 void changeHubDiscovery();
121 void changeLoginStart();
122 void changeShutdownExit();
Ilya Moiseenko393cbdc2013-10-29 00:45:40 -0700123 void copyFile();
Ilya Moiseenko18c8a132013-10-24 01:52:52 -0700124};
125
126#endif // TRAYMENU_H