Files
libreoffice/ios/shared/ios_sharedlo/objective_c/view_controllers/MLOMainViewController.m
Ptyl Dragon 4219195dec ios tile testing app done
Change-Id: I1c4a45c3f19d79b4da8cc96304e0e1802f92dff2
Reviewed-on: https://gerrit.libreoffice.org/6320
Reviewed-by: Tor Lillqvist <tml@collabora.com>
Tested-by: Tor Lillqvist <tml@collabora.com>
2013-10-18 16:07:19 +00:00

187 lines
4.6 KiB
Objective-C

// -*- Mode: ObjC; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
//
// This file is part of the LibreOffice project.
//
// 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 "MLOToolbarViewController.h"
#import "MLOSelectionViewController.h"
#import "MLOGestureEngine.h"
#import "MLOScrollerViewController.h"
#import "MLOManager.h"
#import "MLOGestureLimiter.h"
#import "MLOGestureEngine_Impl.h"
#import "MLORenderManager.h"
#import "NSObject+MLOUtils.h"
#import "MLOTopbarViewController.h"
#import "MLOMainViewController_Private.h"
#import "MLOKeyboardManager.h"
#import "MLOAppRoleFactory.h"
#import "MLOAppRoleBase.h"
#import "mlo_uno.h"
static const CGFloat
FLASH_DURATION= 0.2f,
EXPAND_DURATION=0.5f;
@implementation MLOMainViewController
-(void)onTextEdit{
[_scroller contentHasChanged];
}
-(BOOL)isTappable{
return [_toolbar isTappable];
}
-(void)showLibreOffice:(UIWindow *) window{
self.topBarHeight = TOP_BAR_HEIGHT;
[[UIApplication sharedApplication]setStatusBarHidden:YES];
self.view.bounds = self.view.frame = [self getFullFrameForRect:self.view.frame];
[self.role initWindow:window];
[self onStart];
[self.topbar showLibreOffice];
[self.role showLibreOffice];
}
-(void)onStart{
self.focused = YES;
[self rotate];
}
-(void) hideLibreOffice{
if(self.focused){
self.focused = NO;
[self.topbar hideLibreOffice];
[[UIApplication sharedApplication]setStatusBarHidden:NO];
[self.role hideLibreOffice];
[self.view removeFromSuperview];
[[MLOManager getInstance] hideLibreOffice];
}
}
-(void)initCanvas{
self.view.frame = self.view.bounds =[self getFullFrameForRect:[[MLOManager getInstance] bounds]];
CGRect canvasRect = CGRectMake(0,
TOP_BAR_HEIGHT,
self.view.frame.size.width,
self.view.frame.size.height - TOP_BAR_HEIGHT);
self.canvas = [[UIView alloc] initWithFrame:canvasRect];
self.role.view = self.canvas;
self.canvas.clipsToBounds = YES;
self.canvas.backgroundColor = [UIColor whiteColor];
}
- (id) init{
self = [super init];
if(self){
self.role = [MLOAppRoleFactory getInstanceWithMainViewController:self];
[self initCanvas];
[self.role initSubviews];
self.topbar = [[MLOTopbarViewController alloc] initWithMainViewController:self];
[self addSubviews];
[self onStart];
self.focused = NO;
self.topBarHeight = TOP_BAR_HEIGHT;
}
return self;
}
-(void) flash{
self.flasher.frame =self.view.frame;
self.flasher.alpha = 1.0f;
[self.view addSubview:_flasher];
[UIView animateWithDuration:FLASH_DURATION animations:^{
self.flasher.alpha=0.0f;
} completion:^(BOOL finished) {
[self.flasher removeFromSuperview];
}];
}
-(void) toggleExpand{
CGFloat targetHeight = (_topBarHeight==0.0f)?TOP_BAR_HEIGHT:0.0f;
CGRect mainFrame = self.view.frame;
[UIView animateWithDuration:EXPAND_DURATION animations:^(void){
self.canvas.frame = CGRectMake(0, targetHeight, mainFrame.size.width, mainFrame.size.height - targetHeight);
self.renderManager.view.alpha= 0.0f;
} completion:^(BOOL completed){
self.topBarHeight = targetHeight;
[self rotate];
[self.toolbar expandDidToggle];
}];
}
-(void)resize{
CGRect mainViewRect = [self getFullFrameForRect:self.view.bounds];
LOG_RECT(mainViewRect, @"MLO Resize: main view");
self.view.bounds = self.view.frame = mainViewRect;
CGFloat width = self.view.frame.size.width;
CGFloat height = self.view.frame.size.height - self.topBarHeight;
CGRect canvasRect =CGRectMake(0, _topBarHeight, width, height);
self.canvas.frame = canvasRect;
[self.role setWidth:width height:height];
LOG_RECT(canvasRect, @"MLO Resize: canvas");
}
-(void) addSubviews{
[self.topbar addToMainViewController];
[self.view addSubview:self.canvas];
self.view.backgroundColor = [UIColor whiteColor];
[self.role addSubviews];
}
-(void)rotate{
if(self.focused){
[self.role rotate];
}
}
-(void)resetSubviews{
[_gestureEngine reset];
[_scroller reset];
[_selection reset];
}
-(CGFloat) getZoom{
return [_gestureEngine.limiter zoom];
}
@end
// vim:set shiftwidth=4 softtabstop=4 expandtab: