iOS: Add very basic diagnostic screen

Summary:
Adds an extremely barebones in-app screen for showing sonar diagnostics.
The UI is laughable, but it's wired up. Leaving proper design to a later commit.

Like in the android case, state is currently passed as a string, but will become something much more structured after this is in place.

Reviewed By: priteshrnandgaonkar

Differential Revision: D9218766

fbshipit-source-id: 4889ed79b928056a67b1e8cb8a40a9bd52e084f1
This commit is contained in:
John Knox
2018-08-20 05:06:21 -07:00
committed by Facebook Github Bot
parent be4b45c703
commit 21888157df
4 changed files with 65 additions and 0 deletions

View File

@@ -0,0 +1,17 @@
/*
* Copyright (c) 2018-present, Facebook, Inc.
*
* This source code is licensed under the MIT license found in the LICENSE
* file in the root directory of this source tree.
*
*/
#ifdef FB_SONARKIT_ENABLED
#import <UIKit/UIKit.h>
@interface FlipperDiagnosticsViewController : UIViewController
@property(strong, nonatomic) UIScrollView *scrollView;
@property(strong, nonatomic) UILabel *stateLabel;
@end
#endif

View File

@@ -0,0 +1,39 @@
#ifdef FB_SONARKIT_ENABLED
#import "FlipperDiagnosticsViewController.h"
#import "SonarClient.h"
@implementation FlipperDiagnosticsViewController
- (void)viewDidLoad {
[super viewDidLoad];
UILabel *text = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 50)];
text.text = @"Flipper Diagnostics";
[self.view addSubview:text];
self.scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 50, self.view.frame.size.width, self.view.frame.size.height - 50)];
self.stateLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 1000)];
self.stateLabel.numberOfLines = 0;
self.stateLabel.text = [[SonarClient sharedClient] getState];
[self.scrollView addSubview:self.stateLabel];
self.scrollView.contentSize = self.stateLabel.frame.size;
[self.view addSubview:self.scrollView];
}
- (void)onUpdate {
self.stateLabel.text = [[SonarClient sharedClient] getState];
self.scrollView.contentSize = self.stateLabel.frame.size;
}
- (UIInterfaceOrientationMask)supportedInterfaceOrientations {
return UIInterfaceOrientationMaskPortrait;
}
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation {
return UIInterfaceOrientationMaskPortrait;
}
@end
#endif

View File

@@ -45,6 +45,11 @@ Stop the connection to the Sonar desktop.
*/
- (void)stop;
/**
Get the current state of the sonar client
*/
- (NSString *)getState;
// initializers are disabled. You must use `+[SonarClient sharedClient]` instance.
- (instancetype)init NS_UNAVAILABLE;
+ (instancetype)new NS_UNAVAILABLE;

View File

@@ -121,6 +121,10 @@ using WrapperPlugin = facebook::sonar::SonarCppWrapperPlugin;
#endif
}
- (NSString *)getState {
return @(_cppClient->getState().c_str());
}
@end
#endif