blob: 4fe76b9b8507e594b7c84d13c39080b0c515a953 [file] [log] [blame]
Alexander Afanasyev14b09482013-10-11 18:24:45 +02001/* -*- Mode: objc; c-file-style: "gnu"; indent-tabs-mode:nil -*- */
Alexander Afanasyevb6392e32014-05-12 23:43:50 -07002/**
3 * Copyright (c) 2013-2014, Regents of the University of California,
Alexander Afanasyev88f0b3a2013-09-24 23:52:08 -07004 *
Alexander Afanasyevb6392e32014-05-12 23:43:50 -07005 * This file is part of NFD Control Center. See AUTHORS.md for complete list of NFD
6 * authors and contributors.
7 *
8 * NFD Control Center is free software: you can redistribute it and/or modify it under the
9 * terms of the GNU General Public License as published by the Free Software Foundation,
10 * either version 3 of the License, or (at your option) any later version.
11 *
12 * NFD Control Center is distributed in the hope that it will be useful, but WITHOUT ANY
13 * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
14 * PARTICULAR PURPOSE. See the GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License along with NFD
17 * Control Center, e.g., in COPYING.md file. If not, see <http://www.gnu.org/licenses/>.
18 *
19 * \author Alexander Afanasyev <http://lasr.cs.ucla.edu/afanasyev/index.html>
20 * \author Ilya Moiseenko <http://ilyamoiseenko.com/>
Alexander Afanasyev88f0b3a2013-09-24 23:52:08 -070021 */
22
23#import <Cocoa/Cocoa.h>
Ilya Moiseenko1dc76da2013-09-30 11:53:36 -070024#import "preference-delegate.h"
Alexander Afanasyev17922872013-10-15 11:45:58 +030025#import "system-events.h"
Ilya Moiseenko0c9ab7c2013-10-29 15:08:23 -070026#import "tight-menu-item-view.h"
Alexander Afanasyev88f0b3a2013-09-24 23:52:08 -070027
28@interface MenuDelegate : NSObject <NSApplicationDelegate>
29{
Alexander Afanasyev6cacb972013-10-03 23:39:06 -070030 NSOperationQueue *m_operationQueue;
Alexander Afanasyevb6392e32014-05-12 23:43:50 -070031
Alexander Afanasyev6cacb972013-10-03 23:39:06 -070032 NSStatusItem *statusItem;
Ilya Moiseenko350b9b52013-09-25 16:38:41 -070033
Alexander Afanasyev6cacb972013-10-03 23:39:06 -070034 NSImage *m_connectedIcon;
35 NSImage *m_disconnectedIcon;
36 NSData *m_statusXslt;
Ilya Moiseenkob4aca052013-10-06 15:10:19 -070037 NSData *m_statusToFibXslt;
Ilya Moiseenko350b9b52013-09-25 16:38:41 -070038
Alexander Afanasyev6cacb972013-10-03 23:39:06 -070039 IBOutlet NSPopover *statusPopover;
40
41 IBOutlet NSMenu *statusMenu;
42 IBOutlet NSMenuItem *connectionStatus;
43 IBOutlet NSMenuItem *startstopButton;
44 IBOutlet NSMenuItem *daemonStatus;
45 IBOutlet NSMenuItem *routingStatus;
46 IBOutlet NSMenuItem *trafficMap;
47 IBOutlet NSMenuItem *ndnPreferences;
Alexander Afanasyevb6392e32014-05-12 23:43:50 -070048
Alexander Afanasyev6cacb972013-10-03 23:39:06 -070049 BOOL m_daemonStarted;
Alexander Afanasyevb6392e32014-05-12 23:43:50 -070050
Ilya Moiseenko0c9ab7c2013-10-29 15:08:23 -070051 IBOutlet NSTextField *interestSentRecv;
52 IBOutlet NSTextField *dataSentRecv;
Alexander Afanasyevb6392e32014-05-12 23:43:50 -070053
Alexander Afanasyev6cacb972013-10-03 23:39:06 -070054 IBOutlet NSView *daemonStatusView;
Alexander Afanasyevb6392e32014-05-12 23:43:50 -070055
Ilya Moiseenko0c9ab7c2013-10-29 15:08:23 -070056 TightMenuItemView *connectionStatusView;
Alexander Afanasyevb6392e32014-05-12 23:43:50 -070057
Alexander Afanasyev6cacb972013-10-03 23:39:06 -070058 IBOutlet PreferenceDelegate *preferencesDelegate;
Alexander Afanasyevb9024d12013-10-14 18:10:18 +030059
Alexander Afanasyev17922872013-10-15 11:45:58 +030060 SystemEvents *m_systemEvents;
Alexander Afanasyevb9024d12013-10-14 18:10:18 +030061 bool m_autoconfInProgress;
Alexander Afanasyev88f0b3a2013-09-24 23:52:08 -070062}
Ilya Moiseenko350b9b52013-09-25 16:38:41 -070063
Alexander Afanasyev506d0ab2013-10-29 19:18:10 -070064@property (nonatomic, readwrite) NSString *interestSent;
65@property (nonatomic, readwrite) NSString *interestRecv;
66@property (nonatomic, readwrite) NSString *dataSent;
67@property (nonatomic, readwrite) NSString *dataRecv;
68
Alexander Afanasyev6cacb972013-10-03 23:39:06 -070069-(IBAction)openDaemonStatus:(id)sender;
Ilya Moiseenkoe7058e72013-10-02 15:56:45 -070070-(IBAction)showExitConfirmationWindow:(id)sender;
Alexander Afanasyev6cacb972013-10-03 23:39:06 -070071
Alexander Afanasyev4e1c7e92013-10-11 18:25:09 +020072-(void)updateStatus;
73-(void)updateStatusWithDependency:(NSOperation*)dependency;
74-(void)statusUpdated:(NSXMLDocument*)document;
75-(void)statusUnavailable:(id)none;
Alexander Afanasyev6cacb972013-10-03 23:39:06 -070076
Alexander Afanasyevb9024d12013-10-14 18:10:18 +030077-(void)restartDaemon:(id)none;
78
Alexander Afanasyev88f0b3a2013-09-24 23:52:08 -070079@end