blob: 045bb09284c06480486c0eda6fec7703a9165bee [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>
21
22#include "FibInputDialog.h"
23#include "QuitDialog.h"
24
25#define NDND_START_COMMAND "/usr/local/bin/ndndstart"
26#define NDND_STOP_COMMAND "/usr/local/bin/ndndstop"
27#define NDND_STATUS_COMMAND "/usr/local/bin/ndndsmoketest"
28#define NDND_FIB_COMMAND "/usr/local/bin/ndndc"
29
30namespace Ui
31{
32 class TrayMenu;
33}
34
35class TrayMenu : public QMainWindow
36{
37 Q_OBJECT
38
39public:
40 explicit TrayMenu(QWidget *parent = 0);
41 ~TrayMenu();
42
43private:
44 Ui::TrayMenu *ui;
45
46 void createTrayIcon();
47 void setIcon(bool isConnected);
48 void createToolbar();
49 void createTableView();
50 void closeEvent(QCloseEvent *); // Overriding the window's close event
51 void showEvent(QShowEvent * event); //Overriding the window's show event
52
53 void startDaemon();
54
55 QSystemTrayIcon *trayIcon;
56 QMenu *trayIconMenu;
57 QToolBar *toolBar;
58
59 QTimer *daemonStatusTimer;
60 QThread *statusUpdateThread;
61
62 QString statusXml;
63 QString fibContentsXml;
64
65 QStandardItemModel *model;
66 int selectedRow;
67
68 QAction *statusIndicator;
69 QAction *open;
70 QAction *close;
71 QAction *openGeneralSettings;
72 QAction *openForwardingSettings;
73 QAction *openSecuritySettings;
74
75 FibInputDialog *dialog;
76
77 bool allowAutomaticUpdates;
78 bool enableHubDiscovery;
79 bool enableStartOnLogin;
80 bool shutdownOnExit;
81
82private slots:
83 void trayIconClicked(QSystemTrayIcon::ActivationReason);
84 void generalSettingsClicked();
85 void forwardingSettingsClicked();
86 void securitySettingsClicked();
87 void openTrafficMap();
88 void openRoutingStatus();
89 void displayPopup();
90 void confirmQuit();
91 void showFibInputDialog();
92 void terminateDaemonAndClose();
93 void addFibEntry();
94 void daemonStatusUpdate();
95 void selectTableRow();
96 void deleteFibEntry();
97 void changeSoftwareUpdate();
98 void changeHubDiscovery();
99 void changeLoginStart();
100 void changeShutdownExit();
101};
102
103#endif // TRAYMENU_H