This repository was archived by the owner on Jun 17, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathOneNotePickerController.m
More file actions
135 lines (114 loc) · 4.76 KB
/
OneNotePickerController.m
File metadata and controls
135 lines (114 loc) · 4.76 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
//
// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. Licensed under the Apache License, Version 2.0.
// See License.txt in the project root for license information.
//
#import "OneNotePickerController.h"
#import "OneNotePickerNavItem.h"
#import "OneNotePickerViewController.h"
NSString *const OneNotePickerControllerSectionID = @"OneNotePickerControllerSectionID";
NSString *const OneNotePickerControllerSectionName = @"OneNotePickerControllerSectionName";
NSString *const OneNotePickerControllerPagesURL = @"OneNotePickerControllerPagesURL";
NSString *const OneNotePickerControllerCreatedTime = @"OneNotePickerControllerCreatedTime";
NSString *const OneNotePickerControllerModifiedTime = @"OneNotePickerControllerModifiedTime";
NSString *const OneNotePickerControllerLastModifiedBy = @"OneNotePickerControllerLastModifiedBy";
NSString *const OneNotePickerControllerIsAPIError = @"OneNotePickerControllerIsAPIError";
NSString *const OneNotePickerControllerAPIErrorCode = @"OneNotePickerControllerAPIErrorCode";
NSString *const OneNotePickerControllerAPIErrorString = @"OneNotePickerControllerAPIErrorString";
NSString *const OneNotePickerControllerAPIErrorURL = @"OneNotePickerControllerAPIErrorURL";
NSString *const OneNotePickerControllerSystemError = @"OneNotePickerControllerSystemError";
@interface OneNotePickerController () <OneNotePickerViewControllerDelegate>
@property (strong, nonatomic) OneNotePickerNavItem *rootNavItem;
@property (strong, nonatomic) NSMutableArray *navItemsToLoad;
@property (strong, nonatomic) NSMutableArray *nextNavItemsToLoad;
@property (nonatomic) BOOL viewIsVisible;
@property (copy, nonatomic) void (^onAppearHandler) ();
@end
@implementation OneNotePickerController
- (id)init
{
if (self = [self initWithNavigationBarClass:nil toolbarClass:nil]) {
self.navTextColor = [UIColor colorWithRed:0x80 / 255.0 green:0x39 / 255.0 blue:0x7B / 255.0 alpha:1.0];
[self.navigationBar setTitleTextAttributes:@{NSForegroundColorAttributeName: [UIColor colorWithWhite:0x33 / 255.0 alpha:1.0]}];
self.rootNavItem = [[OneNotePickerNavItem alloc] initWithDictionary:nil];
self.navItemsToLoad = [NSMutableArray arrayWithObject:self.rootNavItem];
self.nextNavItemsToLoad = [NSMutableArray array];
self.modalPresentationStyle = UIModalPresentationFormSheet;
OneNotePickerViewController *viewController = [[OneNotePickerViewController alloc] initWithNavItem:self.rootNavItem];
viewController.delegate = self;
[self pushViewController:viewController animated:NO];
}
return self;
}
- (void)loadNextNavItem
{
if (self.navItemsToLoad.count) {
OneNotePickerNavItem *item = [self.navItemsToLoad firstObject];
[self.navItemsToLoad removeObjectAtIndex:0];
[item getOneNoteEntitiesWithToken:self.accessToken completionBlock:^(NSDictionary *errorInfo) {
if (errorInfo) {
void (^notifyDelegateBlock) () = ^{
if ([self.delegate respondsToSelector:@selector(oneNotePickerController:didErrorWithInfo:)]) {
[self.delegate oneNotePickerController:self didErrorWithInfo:errorInfo];
}
};
if (self.viewIsVisible) {
notifyDelegateBlock();
} else {
self.onAppearHandler = notifyDelegateBlock;
}
}
}];
}
}
- (void)oneNotePickerViewControllerDidCancel:(OneNotePickerViewController *)viewController
{
if ([self.delegate respondsToSelector:@selector(oneNotePickerControllerDidCancel:)]) {
[self.delegate oneNotePickerControllerDidCancel:self];
}
}
- (void)oneNotePickerViewController:(OneNotePickerViewController *)viewController choseSection:(OneNotePickerNavItem *)section
{
if ([self.delegate respondsToSelector:@selector(oneNotePickerController:didFinishPickingSectionWithInfo:)]) {
[self.delegate oneNotePickerController:self didFinishPickingSectionWithInfo:[section resultDictionary]];
}
}
#pragma mark - UIViewController subclass
- (void)viewWillAppear:(BOOL)animated
{
[self.rootNavItem reset];
[self.navItemsToLoad removeAllObjects];
[self.navItemsToLoad addObject:self.rootNavItem];
[self.nextNavItemsToLoad removeAllObjects];
[self loadNextNavItem];
[self popToRootViewControllerAnimated:NO];
self.topViewController.navigationItem.prompt = self.headerInstructions;
[super viewWillAppear:animated];
}
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
self.viewIsVisible = YES;
if (self.onAppearHandler) {
self.onAppearHandler();
self.onAppearHandler = nil;
}
}
- (void)viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
self.viewIsVisible = NO;
}
#pragma mark - Properties
- (UIColor *)navTextColor
{
return self.navigationBar.tintColor;
}
- (void)setNavTextColor:(UIColor *)navTextColor
{
self.navigationBar.tintColor = navTextColor;
}
- (NSString *)promptForOneNotePickerViewController:(OneNotePickerViewController *)viewController
{
return self.headerInstructions;
}
@end