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