RTE finder parsing done, uses database if present

This commit is contained in:
Kilian Hofmann 2016-04-18 15:49:46 +02:00
parent 99b05d2c7f
commit 858dd25460
12 changed files with 340 additions and 28 deletions

View File

@ -6,32 +6,208 @@
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
shouldBeEnabled = "Yes"
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "FMC Planner 2/ViewControllerRouteRequest.m"
timestampString = "482668097.657951"
timestampString = "482675813.224346"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "31"
endingLineNumber = "31"
startingLineNumber = "42"
endingLineNumber = "42"
landmarkName = "-parseRoute"
landmarkType = "5">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "FMC Planner 2/NavDataParser.m"
timestampString = "482678291.849866"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "191"
endingLineNumber = "191"
landmarkName = "-findWaypoint:onAirway:"
landmarkType = "5">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "FMC Planner 2/ViewControllerRouteRequest.m"
timestampString = "482670260.958538"
filePath = "FMC Planner 2/NavDataParser.m"
timestampString = "482678291.849866"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "36"
endingLineNumber = "36"
landmarkName = "-webViewDidStartLoad:"
startingLineNumber = "190"
endingLineNumber = "190"
landmarkName = "-findWaypoint:onAirway:"
landmarkType = "5">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "FMC Planner 2/NavDataParser.m"
timestampString = "482678291.849866"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "133"
endingLineNumber = "133"
landmarkName = "-findAirway:"
landmarkType = "5">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "FMC Planner 2/NavDataParser.m"
timestampString = "482678313.099956"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "119"
endingLineNumber = "119"
landmarkName = "-initWithHandler:"
landmarkType = "5">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "FMC Planner 2/NavDataParser.m"
timestampString = "482678347.409045"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "115"
endingLineNumber = "115"
landmarkName = "-initWithHandler:"
landmarkType = "5">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "FMC Planner 2/NavDataParser.m"
timestampString = "482678370.334277"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "27"
endingLineNumber = "27"
landmarkName = "-initWithHandler:"
landmarkType = "5">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "FMC Planner 2/DropboxV2ObjC.m"
timestampString = "482678508.830645"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "323"
endingLineNumber = "323"
landmarkName = "-downloadFromDropbox:presenter:completion:"
landmarkType = "5">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "FMC Planner 2/DropboxV2ObjC.m"
timestampString = "482678752.898967"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "300"
endingLineNumber = "300"
landmarkName = "-downloadFromDropbox:presenter:completion:"
landmarkType = "5">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "FMC Planner 2/ViewControllerScreen.m"
timestampString = "482679953.848672"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "82"
endingLineNumber = "82"
landmarkName = "-enterLSK:"
landmarkType = "5">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "FMC Planner 2/ViewControllerScreen.m"
timestampString = "482680090.734679"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "74"
endingLineNumber = "74"
landmarkName = "-enterLSK:"
landmarkType = "5">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "FMC Planner 2/ViewControllerScreen.m"
timestampString = "482680131.786091"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "75"
endingLineNumber = "75"
landmarkName = "-enterLSK:"
landmarkType = "5">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "FMC Planner 2/ViewControllerScreen.m"
timestampString = "482680132.98385"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "76"
endingLineNumber = "76"
landmarkName = "-enterLSK:"
landmarkType = "5">
</BreakpointContent>
</BreakpointProxy>

View File

@ -1086,6 +1086,9 @@
</constraints>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<textInputTraits key="textInputTraits" autocapitalizationType="sentences"/>
<connections>
<outlet property="delegate" destination="OL3-89-hAR" id="F4u-r7-23X"/>
</connections>
</textView>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Zgq-zj-adN">
<rect key="frame" x="290" y="538" width="30" height="30"/>
@ -1122,13 +1125,16 @@
</connections>
</button>
<textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="5Zo-Y6-mA9">
<rect key="frame" x="60" y="20" width="257" height="30"/>
<rect key="frame" x="60" y="20" width="232" height="30"/>
<fontDescription key="fontDescription" type="system" pointSize="14"/>
<textInputTraits key="textInputTraits"/>
<connections>
<outlet property="delegate" destination="OL3-89-hAR" id="QXh-Ud-SU7"/>
</connections>
</textField>
<activityIndicatorView opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" style="gray" translatesAutoresizingMaskIntoConstraints="NO" id="EW6-dX-qs2">
<rect key="frame" x="295" y="25" width="20" height="20"/>
</activityIndicatorView>
<webView contentMode="scaleToFill" scalesPageToFit="YES" translatesAutoresizingMaskIntoConstraints="NO" id="S10-Dt-JJr">
<rect key="frame" x="0.0" y="54" width="320" height="415"/>
<color key="backgroundColor" red="0.36078431370000003" green="0.38823529410000002" blue="0.4039215686" alpha="1" colorSpace="deviceRGB"/>
@ -1139,27 +1145,30 @@
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<constraints>
<constraint firstItem="EW6-dX-qs2" firstAttribute="centerX" secondItem="Zgq-zj-adN" secondAttribute="centerX" id="0ZP-0a-zuq"/>
<constraint firstItem="ixb-cc-5YB" firstAttribute="leading" secondItem="nAS-0c-kXL" secondAttribute="leading" id="50B-pd-fEq"/>
<constraint firstItem="3Kp-dS-bR4" firstAttribute="baseline" secondItem="Lvb-Db-aer" secondAttribute="firstBaseline" id="5Rv-lv-juB"/>
<constraint firstItem="5Zo-Y6-mA9" firstAttribute="top" secondItem="7NQ-Aq-zoJ" secondAttribute="bottom" id="6G4-Hr-0wx"/>
<constraint firstAttribute="trailingMargin" secondItem="5Zo-Y6-mA9" secondAttribute="trailing" constant="-13" id="6Ir-an-DEB"/>
<constraint firstItem="Lvb-Db-aer" firstAttribute="leading" secondItem="3Kp-dS-bR4" secondAttribute="trailing" constant="8" symbolic="YES" id="6Y0-jW-Tjb"/>
<constraint firstAttribute="trailing" secondItem="ixb-cc-5YB" secondAttribute="trailing" id="7pv-Eg-dJx"/>
<constraint firstItem="Ftu-sy-5oA" firstAttribute="top" secondItem="ixb-cc-5YB" secondAttribute="bottom" id="7qg-Xp-HYt"/>
<constraint firstItem="S10-Dt-JJr" firstAttribute="top" secondItem="3Kp-dS-bR4" secondAttribute="bottom" constant="8" symbolic="YES" id="A8u-hP-2x1"/>
<constraint firstItem="5Zo-Y6-mA9" firstAttribute="leading" secondItem="Lvb-Db-aer" secondAttribute="trailing" constant="5" id="FRD-Dz-fpG"/>
<constraint firstItem="5Zo-Y6-mA9" firstAttribute="centerY" secondItem="Lvb-Db-aer" secondAttribute="centerY" id="BXB-fK-g8E"/>
<constraint firstItem="5Zo-Y6-mA9" firstAttribute="top" secondItem="7NQ-Aq-zoJ" secondAttribute="bottom" id="CsE-eS-Y90"/>
<constraint firstItem="5Zo-Y6-mA9" firstAttribute="centerY" secondItem="EW6-dX-qs2" secondAttribute="centerY" id="F16-oS-6UV"/>
<constraint firstItem="Lvb-Db-aer" firstAttribute="baseline" secondItem="3Kp-dS-bR4" secondAttribute="firstBaseline" id="K2N-Z5-1ZA"/>
<constraint firstItem="EW6-dX-qs2" firstAttribute="leading" secondItem="5Zo-Y6-mA9" secondAttribute="trailing" constant="3" id="L5P-Gt-v9t"/>
<constraint firstItem="S10-Dt-JJr" firstAttribute="trailing" secondItem="ixb-cc-5YB" secondAttribute="trailing" id="OtD-Nr-4Me"/>
<constraint firstItem="S10-Dt-JJr" firstAttribute="leading" secondItem="ixb-cc-5YB" secondAttribute="leading" id="Q6b-yN-JJz"/>
<constraint firstItem="Ftu-sy-5oA" firstAttribute="top" secondItem="Zgq-zj-adN" secondAttribute="bottom" id="V8X-at-K05"/>
<constraint firstItem="Lvb-Db-aer" firstAttribute="centerY" secondItem="5Zo-Y6-mA9" secondAttribute="centerY" id="hEo-Zf-3vp"/>
<constraint firstItem="ixb-cc-5YB" firstAttribute="top" secondItem="S10-Dt-JJr" secondAttribute="bottom" constant="1" id="ifv-k8-C0k"/>
<constraint firstAttribute="trailing" secondItem="Zgq-zj-adN" secondAttribute="trailing" id="kgS-5h-tb1"/>
<constraint firstItem="5Zo-Y6-mA9" firstAttribute="leading" secondItem="Lvb-Db-aer" secondAttribute="trailing" constant="5" id="lmi-LJ-RMb"/>
<constraint firstItem="3Kp-dS-bR4" firstAttribute="top" secondItem="Lvb-Db-aer" secondAttribute="top" id="sOh-Ha-BTG"/>
<constraint firstItem="3Kp-dS-bR4" firstAttribute="leading" secondItem="nAS-0c-kXL" secondAttribute="leadingMargin" constant="-13" id="wp0-5c-qRq"/>
</constraints>
</view>
<connections>
<outlet property="activityIndicator" destination="EW6-dX-qs2" id="XbC-gs-g0N"/>
<outlet property="textView" destination="ixb-cc-5YB" id="wYO-sm-Buz"/>
<outlet property="url" destination="5Zo-Y6-mA9" id="k5W-AZ-Vhs"/>
<outlet property="webView" destination="S10-Dt-JJr" id="cvN-Gv-jG6"/>

View File

@ -18,6 +18,9 @@
@property (nonatomic) BOOL parserReady;
@property (nonatomic) BOOL notActive;
#pragma mark - init
- (instancetype)initWithHandler:(void (^)(void))handler;
#pragma mark - Search for elements in normal route entry
- (NSArray *)findWaypoint:(NSString *)waypoint;

View File

@ -14,7 +14,7 @@ NSString *const Airways = @"NAVDATA/awys.txt";
NSString *const Intersections = @"NAVDATA/ints.txt";
NSString *const Navaids = @"NAVDATA/navs.txt";
- (instancetype)init
- (instancetype)initWithHandler:(void (^)(void))handler
{
self = [super init];
self.parserReady = false;
@ -112,9 +112,12 @@ NSString *const Navaids = @"NAVDATA/navs.txt";
}
}
if (self.navaids == nil || self.intersections == nil ||
self.airways == nil) {
if (self.navaids.count == 0 || self.intersections.count == 0 ||
self.airways.count == 0) {
self.notActive = true;
[[NSOperationQueue mainQueue] addOperationWithBlock:^{
handler();
}];
}
self.parserReady = true;
@ -193,8 +196,11 @@ NSString *const Navaids = @"NAVDATA/navs.txt";
}
for (NSString *wpt in airwayWaypoints) {
if ([wpt isEqualToString:@"OK"]) {
if ([self findWaypoint:waypoint].count > 0) {
return @[ @"DIRECT" ];
}
return nil;
}
if ([[wpt substringWithRange:NSMakeRange(5, 5)]
isEqualToString:waypoint]) {
return airwayWaypoints;

View File

@ -19,6 +19,7 @@ extern NSString *const FMCFIRSTRTEPAGE;
extern NSString *const INVALID;
extern NSString *const NOTREADY;
extern NSString *const NOTACTIVE;
#pragma mark - Dropbox constants

View File

@ -15,6 +15,7 @@ NSString *const FMCFIRSTRTEPAGE = @"FIRSTRTEPAGE";
NSString *const INVALID = @"INVALID ENTRY";
NSString *const NOTREADY = @"NAV DATA NOT READY";
NSString *const NOTACTIVE = @"RTE CHECKS DISABLED";
NSString *const DropboxErrorDomain = @"com.weebly.alikja.FMC";
NSString *const DropboxErrorUserInfo = @"error_summary";

View File

@ -36,7 +36,9 @@
NSOperationQueue *queue = [[NSOperationQueue alloc] init];
[queue addOperationWithBlock:^{
_navDataParser = [[NavDataParser alloc] init];
_navDataParser = [[NavDataParser alloc] initWithHandler:^{
_screen.Scratchpad.text = NOTACTIVE;
}];
}];
}

View File

@ -112,7 +112,8 @@
else if ([sender.restorationIdentifier isEqualToString:@"Clear"]) {
if ([_main.screen.Scratchpad.text isEqualToString:@"DELETE"] ||
[_main.screen.Scratchpad.text isEqualToString:INVALID] ||
[_main.screen.Scratchpad.text isEqualToString:NOTREADY]) {
[_main.screen.Scratchpad.text isEqualToString:NOTREADY] ||
[_main.screen.Scratchpad.text isEqualToString:NOTACTIVE]) {
_main.screen.Scratchpad.text = @"";
}
else if (_main.screen.Scratchpad.text.length > 0) {

View File

@ -11,7 +11,8 @@
#import <UIKit/UIKit.h>
@interface ViewControllerRouteRequest
: UIViewController <UIWebViewDelegate, UITextFieldDelegate>
: UIViewController <UIWebViewDelegate, UITextFieldDelegate,
UITextViewDelegate>
#pragma mark - Refrence to other views in app
@ -22,6 +23,8 @@
@property (strong, nonatomic) IBOutlet UIWebView *webView;
@property (strong, nonatomic) IBOutlet UITextView *textView;
@property (strong, nonatomic) IBOutlet UITextField *url;
@property (strong, nonatomic)
IBOutlet UIActivityIndicatorView *activityIndicator;
- (IBAction)ok:(UIButton *)sender;

View File

@ -17,6 +17,9 @@
loadRequest:[NSURLRequest
requestWithURL:
[NSURL URLWithString:@"http://www.vatroute.net"]]];
UIView *dummyView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 1, 1)];
_textView.inputView = dummyView;
_activityIndicator.hidden = YES;
// Do any additional setup after loading the view.
}
@ -29,6 +32,84 @@
- (void)parseRoute
{
NSArray *route = [_textView.text componentsSeparatedByString:@" "];
NSUInteger waypoints = 0;
NSUInteger airways = 1;
NSUInteger page = 1;
[_main.save setValue:@"DIRECT" forKey:@"ROUTE 1/@LSKL1"];
for (NSString *str in route) {
if (waypoints < airways) {
waypoints += 1;
if (_main.navDataParser.notActive == false &&
[_main.navDataParser
findWaypoint:str
onAirway:[_main.save
valueForKey:[NSString
stringWithFormat:
@"ROUTE %lu/@LSKL%lu",
(unsigned long)page,
(unsigned long)
airways]]]
.count > 0) {
[_main.save
setValue:str
forKey:[NSString
stringWithFormat:@"ROUTE %lu/@LSKR%lu",
(unsigned long)page,
(unsigned long)waypoints]];
}
else if (_main.navDataParser.notActive) {
[_main.save
setValue:str
forKey:[NSString
stringWithFormat:@"ROUTE %lu/@LSKR%lu",
(unsigned long)page,
(unsigned long)waypoints]];
}
else {
_main.screen.Scratchpad.text = INVALID;
break;
}
}
else if (waypoints == airways) {
airways += 1;
if (_main.navDataParser.notActive == false &&
[_main.navDataParser
findWaypoint:[_main.save
valueForKey:[NSString
stringWithFormat:
@"ROUTE %lu/@LSKR%lu",
(unsigned long)page,
(unsigned long)
waypoints]]
onAirway:str]
.count > 0) {
[_main.save
setValue:str
forKey:[NSString
stringWithFormat:@"ROUTE %lu/@LSKL%lu",
(unsigned long)page,
(unsigned long)airways]];
}
else if (_main.navDataParser.notActive) {
[_main.save
setValue:str
forKey:[NSString
stringWithFormat:@"ROUTE %lu/@LSKL%lu",
(unsigned long)page,
(unsigned long)airways]];
}
else {
_main.screen.Scratchpad.text = INVALID;
break;
}
}
if (waypoints == 6) {
waypoints = 0;
airways = 0;
page += 1;
[_main.save setValue:@(page) forKey:@"maxRte"];
}
}
}
#pragma mark - Delegate
@ -38,17 +119,24 @@
navigationType:(UIWebViewNavigationType)navigationType
{
NSURL *url = [request URL];
_url.text = [url absoluteString];
NSURL *url = request.URL;
_url.text = url.absoluteString;
_activityIndicator.hidden = NO;
[_activityIndicator startAnimating];
return YES;
}
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
_activityIndicator.hidden = YES;
[_activityIndicator stopAnimating];
}
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
[textField resignFirstResponder];
[_webView loadRequest:[NSURLRequest
requestWithURL:[NSURL URLWithString:_url.text]]];
return YES;
}

View File

@ -75,13 +75,22 @@ NavDataParser *parser = nil;
{
parser = _main.navDataParser;
if ([_Scratchpad.text isEqualToString:INVALID] ||
[_Scratchpad.text isEqualToString:NOTREADY]) {
[_Scratchpad.text isEqualToString:NOTREADY] ||
[_Scratchpad.text isEqualToString:NOTACTIVE]) {
// DO NOTHING AS OF YET
}
else if ([_Scratchpad.text isEqualToString:@"DELETE"]) {
if ([_Header.text isEqualToString:@"MENU"]) {
if (tapReg.view.tag < 8) {
((UILabel *)tapReg.view).text = @"";
_Scratchpad.text = @"";
}
}
else {
((UILabel *)tapReg.view).text = @"";
_Scratchpad.text = @"";
}
}
else if ([_Header.text isEqualToString:@"MENU"]) {
if ([((UILabel *)tapReg.view)
.restorationIdentifier isEqualToString:@"LSKR1"]) {
@ -144,7 +153,7 @@ NavDataParser *parser = nil;
}
}
else if ([[_Header.text substringToIndex:3] isEqualToString:@"ROU"]) {
if (parser.parserReady) {
if (parser.parserReady && !parser.notActive) {
// Required entries for checks
UILabel *opposite = nil;

View File

@ -139,6 +139,19 @@
_dbNavData.enabled = YES;
_dbNavData.alpha = 1.0;
[self.view setNeedsDisplay];
NSOperationQueue *queue =
[[NSOperationQueue alloc]
init];
[queue addOperationWithBlock:^{
_main.navDataParser =
[[NavDataParser alloc]
initWithHandler:^{
_main.screen
.Scratchpad
.text =
NOTACTIVE;
}];
}];
}];
}];
}