| Index: remoting/ios/ui/host_view_controller.h
|
| diff --git a/remoting/ios/ui/host_view_controller.h b/remoting/ios/ui/host_view_controller.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..6e0f2879488061126ba81c1eb91044e853bf8cb1
|
| --- /dev/null
|
| +++ b/remoting/ios/ui/host_view_controller.h
|
| @@ -0,0 +1,115 @@
|
| +// Copyright 2014 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#ifndef REMOTING_IOS_UI_HOST_VIEW_CONTROLLER_H_
|
| +#define REMOTING_IOS_UI_HOST_VIEW_CONTROLLER_H_
|
| +
|
| +#import <GLKit/GLKit.h>
|
| +
|
| +#include "base/memory/scoped_ptr.h"
|
| +#include "base/memory/scoped_vector.h"
|
| +
|
| +#import "remoting/ios/host.h"
|
| +#import "remoting/ios/key_input.h"
|
| +#import "remoting/ios/utility.h"
|
| +#import "remoting/ios/bridge/host_proxy.h"
|
| +#import "remoting/ios/ui/desktop_texture.h"
|
| +#import "remoting/ios/ui/cursor_texture.h"
|
| +#import "remoting/ios/ui/pin_entry_view_controller.h"
|
| +#import "remoting/ios/ui/scene_view.h"
|
| +
|
| +@interface HostViewController
|
| + : GLKViewController<PinEntryViewControllerDelegate,
|
| + KeyInputDelegate,
|
| + // Communication channel from HOST to CLIENT
|
| + ClientProxyDelegate,
|
| + UIGestureRecognizerDelegate,
|
| + UIToolbarDelegate> {
|
| + @private
|
| + IBOutlet UIActivityIndicatorView* _busyIndicator;
|
| + IBOutlet UIButton* _barBtnDisconnect;
|
| + IBOutlet UIButton* _barBtnKeyboard;
|
| + IBOutlet UIButton* _barBtnNavigation;
|
| + IBOutlet UIButton* _barBtnCtrlAltDel;
|
| + IBOutlet UILongPressGestureRecognizer* _longPressRecognizer;
|
| + IBOutlet UIPanGestureRecognizer* _panRecognizer;
|
| + IBOutlet UIPanGestureRecognizer* _threeFingerPanRecognizer;
|
| + IBOutlet UIPinchGestureRecognizer* _pinchRecognizer;
|
| + IBOutlet UITapGestureRecognizer* _singleTapRecognizer;
|
| + IBOutlet UITapGestureRecognizer* _twoFingerTapRecognizer;
|
| + IBOutlet UITapGestureRecognizer* _threeFingerTapRecognizer;
|
| + IBOutlet UIToolbar* _toolbar;
|
| + IBOutlet UIToolbar* _hiddenToolbar;
|
| + IBOutlet NSLayoutConstraint* _toolBarYPosition;
|
| + IBOutlet NSLayoutConstraint* _hiddenToolbarYPosition;
|
| +
|
| + KeyInput* _keyEntryView;
|
| + NSString* _statusMessage;
|
| +
|
| + // The GLES2 context being drawn too.
|
| + EAGLContext* _context;
|
| +
|
| + // GLKBaseEffect encapsulates the GL Shaders needed to draw at most two
|
| + // textures |_textureIds| given vertex information. The draw surface consists
|
| + // of two layers (GL Textures). The bottom layer is the desktop of the HOST.
|
| + // The top layer is mostly transparent and is used to overlay the current
|
| + // cursor.
|
| + GLKBaseEffect* _effect;
|
| +
|
| + // All the details needed to draw our GL Scene, and our two textures.
|
| + SceneView* _scene;
|
| + DesktopTexture* _desktop;
|
| + CursorTexture* _mouse;
|
| +
|
| + // List of regions and data that have pending draws to |_desktop| .
|
| + ScopedVector<GLRegion> _glRegions;
|
| +
|
| + // Lock for |_glRegions|, regions are delivered from HOST on another thread,
|
| + // and drawn to |_desktop| from a GL Context thread
|
| + NSLock* _glBufferLock;
|
| +
|
| + // Lock for |_mouse.cursor|, cursor updates are delivered from HOST on another
|
| + // thread, and drawn to |_mouse| from a GL Context thread
|
| + NSLock* _glCursorLock;
|
| +
|
| + // Communication channel from CLIENT to HOST
|
| + HostProxy* _clientToHostProxy;
|
| +}
|
| +
|
| +// Details for the host and user
|
| +@property(nonatomic, readonly) Host* host;
|
| +@property(nonatomic, readonly) NSString* userEmail;
|
| +@property(nonatomic, readonly) NSString* userAuthorizationToken;
|
| +
|
| +- (void)setHostDetails:(Host*)host
|
| + userEmail:(NSString*)userEmail
|
| + authorizationToken:(NSString*)authorizationToken;
|
| +
|
| +// Zoom in/out
|
| +- (IBAction)pinchGestureTriggered:(UIPinchGestureRecognizer*)sender;
|
| +// Left mouse click, moves cursor
|
| +- (IBAction)tapGestureTriggered:(UITapGestureRecognizer*)sender;
|
| +// Scroll the view in 2d
|
| +- (IBAction)panGestureTriggered:(UIPanGestureRecognizer*)sender;
|
| +// Right mouse click and drag, moves cursor
|
| +- (IBAction)longPressGestureTriggered:(UILongPressGestureRecognizer*)sender;
|
| +// Right mouse click
|
| +- (IBAction)twoFingerTapGestureTriggered:(UITapGestureRecognizer*)sender;
|
| +// Middle mouse click
|
| +- (IBAction)threeFingerTapGestureTriggered:(UITapGestureRecognizer*)sender;
|
| +// Show hidden menus. Swipe up for keyboard, swipe down for navigation menu
|
| +- (IBAction)threeFingerPanGestureTriggered:(UIPanGestureRecognizer*)sender;
|
| +
|
| +// Do navigation 'back'
|
| +- (IBAction)barBtnNavigationBackPressed:(id)sender;
|
| +// Show keyboard
|
| +- (IBAction)barBtnKeyboardPressed:(id)sender;
|
| +// Trigger |_toolbar| animation
|
| +- (IBAction)barBtnToolBarHidePressed:(id)sender;
|
| +// Send Keys for ctrl, atl, delete
|
| +- (IBAction)barBtnCtrlAltDelPressed:(id)sender;
|
| +
|
| +@end
|
| +
|
| +#endif // REMOTING_IOS_UI_HOST_VIEW_CONTROLLER_H_
|
|
|