blob: a40faca5366458b6eb4cec72695f072fddab74e7 [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;
85 QAction *open;
86 QAction *close;
87 QAction *openGeneralSettings;
88 QAction *openForwardingSettings;
89 QAction *openSecuritySettings;
90
91 FibInputDialog *dialog;
92
93 bool allowAutomaticUpdates;
94 bool enableHubDiscovery;
95 bool enableStartOnLogin;
96 bool shutdownOnExit;
97
Ilya Moiseenko656d52d2013-10-25 14:19:10 -070098 NetworkManager *networkManager;
99
Ilya Moiseenko18c8a132013-10-24 01:52:52 -0700100private slots:
101 void trayIconClicked(QSystemTrayIcon::ActivationReason);
102 void generalSettingsClicked();
103 void forwardingSettingsClicked();
104 void securitySettingsClicked();
105 void openTrafficMap();
106 void openRoutingStatus();
Ilya Moiseenko393cbdc2013-10-29 00:45:40 -0700107 void openCertificationPage();
Ilya Moiseenko18c8a132013-10-24 01:52:52 -0700108 void displayPopup();
109 void confirmQuit();
110 void showFibInputDialog();
111 void terminateDaemonAndClose();
112 void addFibEntry();
113 void daemonStatusUpdate();
114 void selectTableRow();
115 void deleteFibEntry();
116 void changeSoftwareUpdate();
117 void changeHubDiscovery();
118 void changeLoginStart();
119 void changeShutdownExit();
Ilya Moiseenko393cbdc2013-10-29 00:45:40 -0700120 void copyFile();
Ilya Moiseenko18c8a132013-10-24 01:52:52 -0700121};
122
123#endif // TRAYMENU_H