Antidote/local_pod_repo/objcTox/OSXDemo/OCTMainWindowController.m
2024-02-22 21:43:11 +02:00

101 lines
3.7 KiB
Objective-C

// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
#import "OCTMainWindowController.h"
#import "OCTBootStrapViewController.h"
#import "OCTManagerConfiguration.h"
#import "OCTManager.h"
#import "OCTManagerFactory.h"
#import "OCTSubmanagerBootstrap.h"
#import "OCTUserViewController.h"
#import "OCTFriendsViewController.h"
#import "OCTConversationViewController.h"
#import "OCTCallsViewController.h"
#import "OCTFilesViewController.h"
@interface OCTMainWindowController () <OCTBootStrapViewDelegate>
@property (weak) IBOutlet NSView *mainView;
@property (strong, nonatomic) NSViewController *currentViewController;
@property (strong, nonatomic) NSViewController *userViewController;
@property (strong, nonatomic) NSViewController *friendUserViewController;
@property (strong, nonatomic) NSViewController *conversationViewController;
@property (strong, nonatomic) NSViewController *callsViewController;
@property (strong, nonatomic) NSViewController *filesViewController;
@property (strong, nonatomic) OCTManagerConfiguration *configuration;
@property (strong, nonatomic) id<OCTManager> manager;
@property (weak) IBOutlet NSTabView *tabView;
@end
@implementation OCTMainWindowController
- (void)windowDidLoad
{
[super windowDidLoad];
self.configuration = [OCTManagerConfiguration defaultConfiguration];
self.tabView.hidden = YES;
[self setupBootstrapViewController];
}
- (void)setupBootstrapViewController
{
OCTBootStrapViewController *bootstrapVC = [[OCTBootStrapViewController alloc]
initWithConfiguration:self.configuration];
bootstrapVC.delegate = self;
self.currentViewController = bootstrapVC;
[self.mainView addSubview:self.currentViewController.view];
[self.currentViewController.view setFrame:self.mainView.bounds];
}
#pragma mark - Bootstrap delegate
- (void)didBootStrap:(OCTBootStrapViewController *)controller
{
[self.currentViewController.view removeFromSuperview];
self.currentViewController = nil;
__weak OCTMainWindowController *weakSelf = self;
[OCTManagerFactory managerWithConfiguration:self.configuration encryptPassword:@"123" successBlock:^(id < OCTManager > manager) {
weakSelf.manager = manager;
[weakSelf.manager.bootstrap addPredefinedNodes];
[weakSelf.manager.bootstrap bootstrap];
weakSelf.tabView.hidden = NO;
[weakSelf setupTabControllers];
} failureBlock:nil];
}
#pragma mark - Private
- (void)setupTabControllers
{
NSTabViewItem *userViewItem = [self.tabView tabViewItemAtIndex:0];
self.userViewController = [[OCTUserViewController alloc] initWithManager:self.manager.user];
userViewItem.view = self.userViewController.view;
NSTabViewItem *friendViewItem = [self.tabView tabViewItemAtIndex:1];
self.friendUserViewController = [[OCTFriendsViewController alloc] initWithManager:self.manager];
friendViewItem.view = self.friendUserViewController.view;
NSTabViewItem *conversationViewItem = [self.tabView tabViewItemAtIndex:2];
self.conversationViewController = [[OCTConversationViewController alloc] initWithManager:self.manager];
conversationViewItem.view = self.conversationViewController.view;
NSTabViewItem *callViewItem = [self.tabView tabViewItemAtIndex:3];
self.callsViewController = [[OCTCallsViewController alloc] initWithManager:self.manager];
callViewItem.view = self.callsViewController.view;
NSTabViewItem *fileViewItem = [self.tabView tabViewItemAtIndex:4];
self.filesViewController = [[OCTFilesViewController alloc] initWithManager:self.manager];
fileViewItem.view = self.filesViewController.view;
}
@end