[Libreoffice-commits] core.git: 5 commits - ios/iosremote
siqi
me at siqi.fr
Sun Jul 7 16:13:29 PDT 2013
ios/iosremote/iosremote.xcodeproj/project.pbxproj | 72 +-
ios/iosremote/iosremote.xcodeproj/project.xcworkspace/xcuserdata/siqi.xcuserdatad/UserInterfaceState.xcuserstate |binary
ios/iosremote/iosremote/Communication/CommandInterpreter.m | 15
ios/iosremote/iosremote/Communication/CommunicationManager.m | 3
ios/iosremote/iosremote/Communication/SlideShow.h | 3
ios/iosremote/iosremote/Communication/SlideShow.m | 94 +-
ios/iosremote/iosremote/en.lproj/MainStoryboard_iPhone.storyboard | 333 +++++++---
ios/iosremote/iosremote/libO_toolBar_bg.png |binary
ios/iosremote/iosremote/newServer_vc.m | 1
ios/iosremote/iosremote/pointer.png |binary
ios/iosremote/iosremote/pointer_pushed.png |binary
ios/iosremote/iosremote/pushed_next_button.png |binary
ios/iosremote/iosremote/pushed_previous_button.png |binary
ios/iosremote/iosremote/released_next_button.png |binary
ios/iosremote/iosremote/released_previous_button.png |binary
ios/iosremote/iosremote/serverList_vc.m | 8
ios/iosremote/iosremote/slideShowPreviewTable_vc.m | 20
ios/iosremote/iosremote/slideShow_vc | 146 ++++
ios/iosremote/iosremote/slideShow_vc.h | 4
ios/iosremote/iosremote/slideShow_vc.m | 57 +
ios/iosremote/iosremote/slide_finished.png |binary
21 files changed, 606 insertions(+), 150 deletions(-)
New commits:
commit a2fc3ecb15c7def2016d0495e797239fb7ef132b
Author: siqi <me at siqi.fr>
Date: Mon Jul 8 01:12:39 2013 +0200
loads slides & notes async, queue multiple slides and reload when received
Change-Id: Iace2f120b70df02ddb004b9f67cb8b548b9277d8
diff --git a/ios/iosremote/iosremote.xcodeproj/project.pbxproj b/ios/iosremote/iosremote.xcodeproj/project.pbxproj
index ebbd706..962ddd5 100644
--- a/ios/iosremote/iosremote.xcodeproj/project.pbxproj
+++ b/ios/iosremote/iosremote.xcodeproj/project.pbxproj
@@ -18,6 +18,7 @@
57AEEDAD1789543D007F4F97 /* libO_toolBar_bg.png in Resources */ = {isa = PBXBuildFile; fileRef = 57AEEDAC1789543D007F4F97 /* libO_toolBar_bg.png */; };
57AEEDAF17895B67007F4F97 /* pointer.png in Resources */ = {isa = PBXBuildFile; fileRef = 57AEEDAE17895B67007F4F97 /* pointer.png */; };
57AEEDB117895BF5007F4F97 /* pointer_pushed.png in Resources */ = {isa = PBXBuildFile; fileRef = 57AEEDB017895BF5007F4F97 /* pointer_pushed.png */; };
+ 57AEEDB517899BB4007F4F97 /* slide_finished.png in Resources */ = {isa = PBXBuildFile; fileRef = 57AEEDB417899BB4007F4F97 /* slide_finished.png */; };
57B152991764703500EECC67 /* Base64.m in Sources */ = {isa = PBXBuildFile; fileRef = 57B152981764703500EECC67 /* Base64.m */; };
57B1529F176486C300EECC67 /* CommandTransmitter.m in Sources */ = {isa = PBXBuildFile; fileRef = 57B1529E176486C300EECC67 /* CommandTransmitter.m */; };
57B7625D17621E42007703F6 /* SlideShow.m in Sources */ = {isa = PBXBuildFile; fileRef = 57B7625C17621E42007703F6 /* SlideShow.m */; };
@@ -57,6 +58,7 @@
57AEEDAC1789543D007F4F97 /* libO_toolBar_bg.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = libO_toolBar_bg.png; path = iosremote/libO_toolBar_bg.png; sourceTree = "<group>"; };
57AEEDAE17895B67007F4F97 /* pointer.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = pointer.png; path = iosremote/pointer.png; sourceTree = "<group>"; };
57AEEDB017895BF5007F4F97 /* pointer_pushed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = pointer_pushed.png; path = iosremote/pointer_pushed.png; sourceTree = "<group>"; };
+ 57AEEDB417899BB4007F4F97 /* slide_finished.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = slide_finished.png; path = iosremote/slide_finished.png; sourceTree = "<group>"; };
57B152971764703500EECC67 /* Base64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Base64.h; sourceTree = "<group>"; };
57B152981764703500EECC67 /* Base64.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Base64.m; sourceTree = "<group>"; };
57B1529D176486C300EECC67 /* CommandTransmitter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CommandTransmitter.h; sourceTree = "<group>"; };
@@ -114,6 +116,7 @@
57AEEDAA1788D7B2007F4F97 /* Assets */ = {
isa = PBXGroup;
children = (
+ 57AEEDB417899BB4007F4F97 /* slide_finished.png */,
57AEEDB017895BF5007F4F97 /* pointer_pushed.png */,
57AEEDAE17895B67007F4F97 /* pointer.png */,
57AEEDAC1789543D007F4F97 /* libO_toolBar_bg.png */,
@@ -290,6 +293,7 @@
57AEEDAD1789543D007F4F97 /* libO_toolBar_bg.png in Resources */,
57AEEDAF17895B67007F4F97 /* pointer.png in Resources */,
57AEEDB117895BF5007F4F97 /* pointer_pushed.png in Resources */,
+ 57AEEDB517899BB4007F4F97 /* slide_finished.png in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
diff --git a/ios/iosremote/iosremote.xcodeproj/project.xcworkspace/xcuserdata/siqi.xcuserdatad/UserInterfaceState.xcuserstate b/ios/iosremote/iosremote.xcodeproj/project.xcworkspace/xcuserdata/siqi.xcuserdatad/UserInterfaceState.xcuserstate
index f0a68c8..bdc9bb5 100644
Binary files a/ios/iosremote/iosremote.xcodeproj/project.xcworkspace/xcuserdata/siqi.xcuserdatad/UserInterfaceState.xcuserstate and b/ios/iosremote/iosremote.xcodeproj/project.xcworkspace/xcuserdata/siqi.xcuserdatad/UserInterfaceState.xcuserstate differ
diff --git a/ios/iosremote/iosremote/Communication/SlideShow.h b/ios/iosremote/iosremote/Communication/SlideShow.h
index e49ba3f..52d699a 100644
--- a/ios/iosremote/iosremote/Communication/SlideShow.h
+++ b/ios/iosremote/iosremote/Communication/SlideShow.h
@@ -20,7 +20,6 @@
- (void) putImage: (NSString *)img AtIndex: (uint) index;
- (void) putNotes: (NSString *)notes AtIndex: (uint) index;
-- (UIImage *) getImageAtIndex: (uint) index;
-- (NSString *) getNotesAtIndex: (uint) index;
+- (void) getContentAtIndex: (uint) index forView: (UIView*) view;
@end
diff --git a/ios/iosremote/iosremote/Communication/SlideShow.m b/ios/iosremote/iosremote/Communication/SlideShow.m
index b2d6016..43b80be 100644
--- a/ios/iosremote/iosremote/Communication/SlideShow.m
+++ b/ios/iosremote/iosremote/Communication/SlideShow.m
@@ -17,7 +17,7 @@
@property (nonatomic, strong) NSMutableDictionary* imagesDictionary;
@property (nonatomic, strong) NSMutableDictionary* notesDictionary;
- at property int lastRequestedImage, lastRequestedNote;
+ at property (nonatomic, strong) NSMutableDictionary* loadBuffer;
@property (nonatomic, strong) id slideShowImageReadyObserver;
@property (nonatomic, strong) id slideShowNoteReadyObserver;
@@ -35,84 +35,92 @@ dispatch_queue_t backgroundQueue;
self = [super init];
self.imagesDictionary = [[NSMutableDictionary alloc] init];
self.notesDictionary = [[NSMutableDictionary alloc] init];
+ self.loadBuffer = [[NSMutableDictionary alloc] init];
_size = 0;
_currentSlide = 0;
- self.lastRequestedImage = -1;
- self.lastRequestedNote = -1;
backgroundQueue = dispatch_queue_create("org.libreoffice.iosremote.bgqueue", NULL);
NSOperationQueue *mainQueue = [NSOperationQueue mainQueue];
+ /**
+ This observer waits for storage updates like new image added or notes received.
+ It then checks in the loadBuffer to see if there is a view waiting for this update in loadBuffer, if yes, it loads it up and remove the waiting entry.
+ loadBuffer stores key-value pair with viewTag as a key and slideIndex as value.
+ For the same view, we only keep the last requested slide index on the waiting list.
+ It is thus indispensable to identify each view with an unique tag in its view controller. Here we use 0-10 to indentify central vc views and 11-N for swipe-in tableViewController which allows direct slide number change.
+ We handle lecturer's notes at the same time as an entry in the load buffer via an instrospection.
+ */
self.slideShowImageReadyObserver =[[NSNotificationCenter defaultCenter]
- addObserverForName:@"storage_update_image_ready"
+ addObserverForName:@"storage_update_ready"
object:nil
queue:mainQueue
usingBlock:^(NSNotification *note) {
- if ([[[note userInfo] objectForKey:@"index"] intValue] == self.lastRequestedImage) {
- NSLog(@"Load last requsted image: %u", self.lastRequestedImage);
- [[self.delegate slideView] setImage:[self getImageAtIndex:self.lastRequestedImage]];
- self.lastRequestedImage = -1;
+ if ([[self.loadBuffer allKeysForObject:[NSNumber numberWithInt:[[[note userInfo] objectForKey:@"index"] intValue]]] count]) {
+ NSArray * tagArray = [self.loadBuffer allKeysForObject:[NSNumber numberWithInt:[[[note userInfo] objectForKey:@"index"] intValue]]];
+ for (NSNumber *tag in tagArray) {
+ UIView * view = [[self.delegate view] viewWithTag:[tag integerValue]];
+ if ([view isKindOfClass:[UIImageView class]]){
+ UIImage *image = [self.imagesDictionary objectForKey:[self.loadBuffer objectForKey:tag]];
+ if (image) {
+ [(UIImageView *)view setImage:image];
+ [self.loadBuffer removeObjectForKey:tag];
+ }
+ }
+ else if ([view isKindOfClass:[UIWebView class]]){
+ NSLog(@"Async notes");
+ NSString *note = [self.notesDictionary objectForKey:[self.loadBuffer objectForKey:tag]];
+ if (note) {
+ [(UIWebView *)view loadHTMLString:note baseURL:nil];
+ [self.loadBuffer removeObjectForKey:tag];
+ }
+ }
+
+ }
}
}];
-
- self.slideShowNoteReadyObserver = [[NSNotificationCenter defaultCenter] addObserverForName:@"storage_update_note_ready"
- object:nil
- queue:mainQueue
- usingBlock:^(NSNotification *note) {
-// NSLog(@"Load last requsted note");
- if ([[[note userInfo] objectForKey:@"index"] intValue] == self.lastRequestedNote) {
- [[self.delegate lecturer_notes] loadHTMLString:[self getNotesAtIndex:self.lastRequestedNote] baseURL:nil];
- self.lastRequestedNote = -1;
- }
- }];
-
return self;
}
- (void) putImage: (NSString *)img AtIndex: (uint) index{
// NSLog(@"Put Image into %u", index);
- dispatch_async(backgroundQueue, ^(void) {
NSData* data = [NSData dataWithBase64String:img];
UIImage* image = [UIImage imageWithData:data];
+ NSLog(@"%@", image);
[self.imagesDictionary setObject:image forKey:[NSNumber numberWithUnsignedInt:index]];
- [[NSNotificationCenter defaultCenter] postNotificationName:@"storage_update_image_ready"
+ [[NSNotificationCenter defaultCenter] postNotificationName:@"storage_update_ready"
object:nil
userInfo:[NSDictionary dictionaryWithObject:[NSNumber numberWithInt:index] forKey:@"index"]];
- });
+
}
- (void) putNotes: (NSString *)notes AtIndex: (uint) index{
// NSLog(@"Put note into %u", index);
[self.notesDictionary setObject:notes forKey:[NSNumber numberWithUnsignedInt:index]];
- [[NSNotificationCenter defaultCenter] postNotificationName:@"storage_update_note_ready"
+ [[NSNotificationCenter defaultCenter] postNotificationName:@"storage_update_ready"
object:nil
userInfo:[NSDictionary dictionaryWithObject:[NSNumber numberWithInt:index] forKey:@"index"]];
}
-- (UIImage *) getImageAtIndex: (uint) index
+- (void) getContentAtIndex: (uint) index forView: (UIView*) view
{
- if (![self.imagesDictionary objectForKey:[NSNumber numberWithUnsignedInt:index]]) {
- self.lastRequestedImage = index;
- return nil;
+ if (index >= self.size)
+ {
+ if ([view isKindOfClass:[UIImageView class]])
+ [(UIImageView* )view setImage:[UIImage imageNamed:@"slide_finished.png"]];
+ else if ([view isKindOfClass:[UIWebView class]])
+ [(UIWebView* )view loadHTMLString: @"SlideShow finished" baseURL:nil];
+ return;
}
- else{
- self.lastRequestedImage = -1;
- return [self.imagesDictionary objectForKey:[NSNumber numberWithUnsignedInt:index]];
- }
-}
-
-- (NSString *) getNotesAtIndex: (uint) index
-{
- if (![self.notesDictionary objectForKey:[NSNumber numberWithUnsignedInt:index]]) {
- self.lastRequestedNote = index;
- return nil;
+ if (![self.imagesDictionary objectForKey:[NSNumber numberWithUnsignedInt:index]])
+ {
+ [self.loadBuffer setObject:[NSNumber numberWithInt:index ] forKey:[NSNumber numberWithInt:[view tag]]];
}
- else {
- self.lastRequestedNote = -1;
- return [self.notesDictionary objectForKey:[NSNumber numberWithUnsignedInt:index]];
+ else{
+ if ([view isKindOfClass:[UIImageView class]])
+ [(UIImageView* )view setImage:[self.imagesDictionary objectForKey:[NSNumber numberWithUnsignedInt:index]]];
+ else if ([view isKindOfClass:[UIWebView class]])
+ [(UIWebView* )view loadHTMLString: [self.notesDictionary objectForKey:[NSNumber numberWithUnsignedInt:index]] baseURL:nil];
}
}
-
-
@end
diff --git a/ios/iosremote/iosremote/slideShowPreviewTable_vc.m b/ios/iosremote/iosremote/slideShowPreviewTable_vc.m
index 1ab6b1a..df8f093 100644
--- a/ios/iosremote/iosremote/slideShowPreviewTable_vc.m
+++ b/ios/iosremote/iosremote/slideShowPreviewTable_vc.m
@@ -55,7 +55,6 @@
object:nil
queue:mainQueue
usingBlock:^(NSNotification *note) {
- NSLog(@"Setting to true");
self.slidesRunning = YES;
}];
diff --git a/ios/iosremote/iosremote/slideShow_vc b/ios/iosremote/iosremote/slideShow_vc
new file mode 100644
index 0000000..3fc8616
--- /dev/null
+++ b/ios/iosremote/iosremote/slideShow_vc
@@ -0,0 +1,146 @@
+/
+// slideShow_vc.m
+// iosremote
+//
+// Created by Liu Siqi on 7/5/13.
+// Copyright (c) 2013 libreoffice. All rights reserved.
+//
+
+#import "slideShow_vc.h"
+#import "SlideShow.h"
+#import "CommunicationManager.h"
+#import "CommandInterpreter.h"
+#import "CommandTransmitter.h"
+#import <QuartzCore/QuartzCore.h>
+
+
+#define CURRENT_SLIDE_IMAGEVIEW 1
+#define NEXT_SLIDE_IMAGEVIEW 2
+#define CURRENT_SLIDE_NOTES 2
+
+ at interface slideShow_vc ()
+
+ at property (nonatomic, strong) CommunicationManager *comManager;
+ at property (nonatomic, strong) id slideShowImageNoteReadyObserver;
+ at property (nonatomic, strong) id slideShowFinishedObserver;
+ at property (nonatomic, strong) SlideShow* slideshow;
+
+ at end
+
+ at implementation slideShow_vc
+
+ at synthesize comManager = _comManager;
+ at synthesize slideShowImageNoteReadyObserver = _slideShowImageNoteReadyObserver;
+ at synthesize slideShowFinishedObserver = _slideShowFinishedObserver;
+ at synthesize slideshow = _slideshow;
+
+- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
+{
+ self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
+ if (self) {
+ // Custom initialization
+ }
+ return self;
+}
+
+- (void)viewDidLoad
+{
+ [super viewDidLoad];
+ self.comManager = [CommunicationManager sharedComManager];
+ self.slideshow = [self.comManager.interpreter slideShow];
+ self.slideshow.delegate = self;
+
+ [self.slideView setImage:[self.slideshow getImageAtIndex:self.slideshow.currentSlide]];
+ [self.lecturer_notes loadHTMLString: [self.slideshow getNotesAtIndex:self.slideshow.currentSlide]baseURL:nil];
+ [self.slideNumber setText:[NSString stringWithFormat:@"%u/%u", [self.slideshow currentSlide]+1, [self.slideshow size]]];
+
+ UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:@"End"
+ style:UIBarButtonItemStyleBordered
+ target:self
+ action:@selector(handleBack:)];
+ self.navigationItem.leftBarButtonItem = backButton;
+}
+
+- (void) handleBack:(id)sender
+{
+ [self.comManager.transmitter stopPresentation];
+ [self.navigationController popViewControllerAnimated:YES];
+}
+
+
+- (void) viewDidAppear:(BOOL)animated
+{
+ NSNotificationCenter *center = [NSNotificationCenter defaultCenter];
+ NSOperationQueue *mainQueue = [NSOperationQueue mainQueue];
+
+ self.slideShowImageNoteReadyObserver =[center addObserverForName:MSG_SLIDE_CHANGED
+ object:nil
+ queue:mainQueue
+ usingBlock:^(NSNotification *note) {
+ NSLog(@"Getting slide: %u image to display: %@", self.slideshow.currentSlide, [self.slideshow getImageAtIndex:self.slideshow.currentSlide]);
+
+ [self.slideshow getContentAtIndex:self.slideshow.currentSlide forView:self.slideshow];
+ [self.slideshow getContentAtIndex:self.slideshow.currentSlide forView:self.lecturer_notes];
+
+ [self.slideNumber setText:[NSString stringWithFormat:@"%u/%u", [self.slideshow currentSlide]+1, [self.slideshow size]]];
+
+ }];
+
+ self.slideShowFinishedObserver = [center addObserverForName:STATUS_CONNECTED_NOSLIDESHOW
+ object:nil
+ queue:mainQueue
+ usingBlock:^(NSNotification *note) {
+ [self.navigationController popViewControllerAnimated:YES];
+ }];
+ self.slideView.layer.shadowColor = [[UIColor blackColor] CGColor];
+ self.slideView.layer.shadowOpacity = 0.5;
+ self.slideView.layer.shadowRadius = 4.0;
+ self.slideView.layer.shadowOffset = CGSizeMake(3.0f, 3.0f);
+ self.slideView.layer.shadowPath = [UIBezierPath bezierPathWithRect:self.slideView.bounds].CGPath;
+ self.slideView.clipsToBounds = NO;
+
+ self.secondarySlideView.layer.shadowColor = [[UIColor blackColor] CGColor];
+ self.secondarySlideView.layer.shadowOpacity = 0.5;
+ self.secondarySlideView.layer.shadowRadius = 4.0;
+ self.secondarySlideView.layer.shadowOffset = CGSizeMake(3.0f, 3.0f);
+ self.secondarySlideView.layer.shadowPath = [UIBezierPath bezierPathWithRect:self.secondarySlideView.bounds].CGPath;
+ self.secondarySlideView.clipsToBounds = NO;
+
+ [super viewDidAppear:animated];
+}
+
+- (void) viewDidDisappear:(BOOL)animated
+{
+ [[NSNotificationCenter defaultCenter] removeObserver:self.slideShowFinishedObserver];
+ [[NSNotificationCenter defaultCenter] removeObserver:self.slideShowImageNoteReadyObserver];
+ [super viewDidDisappear:animated];
+}
+
+
+
+- (void)didReceiveMemoryWarning
+{
+ [super didReceiveMemoryWarning];
+ // Dispose of any resources that can be recreated.
+}
+
+- (void)viewDidUnload {
+ [self setLecturer_notes:nil];
+ [self setSlideView:nil];
+ [self setSlideNumber:nil];
+ [self setSecondarySlideView:nil];
+ [self setNotesView:nil];
+ [super viewDidUnload];
+}
+
+- (IBAction)nextSlideAction:(id)sender {
+ [[self.comManager transmitter] nextTransition];
+}
+
+- (IBAction)previousSlideAction:(id)sender {
+ [[self.comManager transmitter] previousTransition];
+}
+
+- (IBAction)pointerAction:(id)sender {
+}
+ at end
diff --git a/ios/iosremote/iosremote/slideShow_vc.m b/ios/iosremote/iosremote/slideShow_vc.m
index b488829..df5fb5e 100644
--- a/ios/iosremote/iosremote/slideShow_vc.m
+++ b/ios/iosremote/iosremote/slideShow_vc.m
@@ -13,6 +13,11 @@
#import "CommandTransmitter.h"
#import <QuartzCore/QuartzCore.h>
+
+#define CURRENT_SLIDE_IMAGEVIEW 1
+#define NEXT_SLIDE_IMAGEVIEW 2
+#define CURRENT_SLIDE_NOTES 3
+
@interface slideShow_vc ()
@property (nonatomic, strong) CommunicationManager *comManager;
@@ -41,14 +46,22 @@
- (void)viewDidLoad
{
[super viewDidLoad];
+
+ // Unique tag assignment. Don't use 0 as it's default. 0-10 for central VC
+ [self.slideView setTag:CURRENT_SLIDE_IMAGEVIEW];
+ [self.secondarySlideView setTag:NEXT_SLIDE_IMAGEVIEW];
+ [self.lecturer_notes setTag:CURRENT_SLIDE_NOTES];
+
self.comManager = [CommunicationManager sharedComManager];
self.slideshow = [self.comManager.interpreter slideShow];
self.slideshow.delegate = self;
- [self.slideView setImage:[self.slideshow getImageAtIndex:self.slideshow.currentSlide]];
- [self.lecturer_notes loadHTMLString: [self.slideshow getNotesAtIndex:self.slideshow.currentSlide]baseURL:nil];
+ [self.slideshow getContentAtIndex:self.slideshow.currentSlide forView:self.slideView];
+ [self.slideshow getContentAtIndex:self.slideshow.currentSlide+1 forView:self.secondarySlideView];
+ [self.slideshow getContentAtIndex:self.slideshow.currentSlide forView:self.lecturer_notes];
[self.slideNumber setText:[NSString stringWithFormat:@"%u/%u", [self.slideshow currentSlide]+1, [self.slideshow size]]];
+
UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:@"End"
style:UIBarButtonItemStyleBordered
target:self
@@ -72,11 +85,9 @@
object:nil
queue:mainQueue
usingBlock:^(NSNotification *note) {
- NSLog(@"Getting slide: %u image to display: %@", self.slideshow.currentSlide, [self.slideshow getImageAtIndex:self.slideshow.currentSlide]);
-
- [self.slideView setImage:[self.slideshow getImageAtIndex:self.slideshow.currentSlide]];
- [self.lecturer_notes loadHTMLString: [self.slideshow getNotesAtIndex:self.slideshow.currentSlide]baseURL:nil];
-
+ [self.slideshow getContentAtIndex:self.slideshow.currentSlide forView:self.slideView];
+ [self.slideshow getContentAtIndex:self.slideshow.currentSlide+1 forView:self.secondarySlideView];
+ [self.slideshow getContentAtIndex:self.slideshow.currentSlide forView:self.lecturer_notes];
[self.slideNumber setText:[NSString stringWithFormat:@"%u/%u", [self.slideshow currentSlide]+1, [self.slideshow size]]];
}];
diff --git a/ios/iosremote/iosremote/slide_finished.png b/ios/iosremote/iosremote/slide_finished.png
new file mode 100644
index 0000000..8f57eaa
Binary files /dev/null and b/ios/iosremote/iosremote/slide_finished.png differ
commit b7072fcea570f8ceed30a743d9d0d66a5e4bc549
Author: siqi <me at siqi.fr>
Date: Sun Jul 7 12:38:03 2013 +0200
adapt to various screen size
Change-Id: Iada6a992adead516c92cef9162b883679ba016f8
diff --git a/ios/iosremote/iosremote.xcodeproj/project.xcworkspace/xcuserdata/siqi.xcuserdatad/UserInterfaceState.xcuserstate b/ios/iosremote/iosremote.xcodeproj/project.xcworkspace/xcuserdata/siqi.xcuserdatad/UserInterfaceState.xcuserstate
index f3b070a..f0a68c8 100644
Binary files a/ios/iosremote/iosremote.xcodeproj/project.xcworkspace/xcuserdata/siqi.xcuserdatad/UserInterfaceState.xcuserstate and b/ios/iosremote/iosremote.xcodeproj/project.xcworkspace/xcuserdata/siqi.xcuserdatad/UserInterfaceState.xcuserstate differ
diff --git a/ios/iosremote/iosremote/en.lproj/MainStoryboard_iPhone.storyboard b/ios/iosremote/iosremote/en.lproj/MainStoryboard_iPhone.storyboard
index 95d5341..c280664 100644
--- a/ios/iosremote/iosremote/en.lproj/MainStoryboard_iPhone.storyboard
+++ b/ios/iosremote/iosremote/en.lproj/MainStoryboard_iPhone.storyboard
@@ -187,13 +187,13 @@
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
<constraints>
<constraint firstItem="rEU-8Z-ftD" firstAttribute="leading" secondItem="JzX-I7-Mwa" secondAttribute="leading" type="default" id="0Vl-yA-Dfw"/>
- <constraint firstAttribute="bottom" secondItem="rEU-8Z-ftD" secondAttribute="bottom" constant="307" id="1SK-7H-e7T"/>
+ <constraint firstItem="gBf-8h-qAQ" firstAttribute="top" secondItem="rEU-8Z-ftD" secondAttribute="bottom" constant="-1" type="user" id="784-lg-Jwb"/>
+ <constraint firstItem="rEU-8Z-ftD" firstAttribute="top" secondItem="JzX-I7-Mwa" secondAttribute="top" type="default" id="81x-HN-DdO"/>
<constraint firstItem="gBf-8h-qAQ" firstAttribute="bottom" secondItem="JzX-I7-Mwa" secondAttribute="bottom" type="default" id="XID-ri-gv9"/>
<constraint firstItem="gBf-8h-qAQ" firstAttribute="leading" secondItem="JzX-I7-Mwa" secondAttribute="leading" type="default" id="Y2u-Rl-WQd"/>
- <constraint firstItem="rEU-8Z-ftD" firstAttribute="top" secondItem="JzX-I7-Mwa" secondAttribute="top" type="default" id="apD-qQ-s8o"/>
<constraint firstItem="rEU-8Z-ftD" firstAttribute="trailing" secondItem="JzX-I7-Mwa" secondAttribute="trailing" type="default" id="is8-0P-1Xz"/>
+ <constraint firstItem="gBf-8h-qAQ" firstAttribute="top" secondItem="JzX-I7-Mwa" secondAttribute="top" constant="196" id="tNw-Oe-Fh6"/>
<constraint firstItem="gBf-8h-qAQ" firstAttribute="trailing" secondItem="JzX-I7-Mwa" secondAttribute="trailing" type="default" id="wTa-0Q-njp"/>
- <constraint firstItem="gBf-8h-qAQ" firstAttribute="top" secondItem="JzX-I7-Mwa" secondAttribute="top" constant="196" id="whN-RS-sbe"/>
</constraints>
</view>
<navigationItem key="navigationItem" id="rqp-6S-yX6"/>
@@ -213,12 +213,6 @@
<rect key="frame" x="0.0" y="64" width="320" height="504"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<subviews>
- <webView contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="xGi-A7-hat" userLabel="Notes">
- <constraints>
- <constraint firstAttribute="height" relation="greaterThanOrEqual" constant="152" type="user" id="FGj-7v-Ul8"/>
- <constraint firstAttribute="height" constant="152" type="user" id="ai8-lq-4e2"/>
- </constraints>
- </webView>
<view contentMode="scaleToFill" restorationIdentifier="" translatesAutoresizingMaskIntoConstraints="NO" id="3od-5c-yzI" userLabel="Bottom">
<subviews>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="vh9-Zy-DPu">
@@ -287,6 +281,9 @@
<subviews>
<imageView userInteractionEnabled="NO" contentMode="scaleAspectFit" verticalCompressionResistancePriority="1000" translatesAutoresizingMaskIntoConstraints="NO" id="bZq-z2-OKU">
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
+ <constraints>
+ <constraint firstAttribute="height" constant="167" id="ZXT-ja-tFo"/>
+ </constraints>
</imageView>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Y1f-iI-63a">
<subviews>
@@ -298,10 +295,10 @@
</constraints>
</imageView>
</subviews>
- <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
+ <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
<constraints>
<constraint firstItem="B2g-rO-b9G" firstAttribute="leading" secondItem="Y1f-iI-63a" secondAttribute="leading" type="user" id="cV9-fY-2qk"/>
- <constraint firstAttribute="bottom" secondItem="B2g-rO-b9G" secondAttribute="bottom" constant="2" id="ot9-YW-96V"/>
+ <constraint firstItem="B2g-rO-b9G" firstAttribute="bottom" secondItem="Y1f-iI-63a" secondAttribute="bottom" type="default" id="hpc-GY-1E7"/>
<constraint firstItem="B2g-rO-b9G" firstAttribute="centerX" secondItem="Y1f-iI-63a" secondAttribute="centerX" type="user" id="pHp-uH-VH9"/>
</constraints>
</view>
@@ -316,38 +313,67 @@
<color key="highlightedColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
</label>
</subviews>
- <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
+ <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
<constraints>
- <constraint firstAttribute="bottom" secondItem="3BV-KX-Qla" secondAttribute="bottom" constant="3" id="01c-sE-45c"/>
<constraint firstItem="bZq-z2-OKU" firstAttribute="leading" secondItem="Y1f-iI-63a" secondAttribute="trailing" constant="8" symbolic="YES" type="user" id="0lZ-9Y-n6x"/>
<constraint firstItem="3BV-KX-Qla" firstAttribute="bottom" secondItem="bZq-z2-OKU" secondAttribute="bottom" type="default" id="9bb-JU-PCC"/>
<constraint firstItem="Y1f-iI-63a" firstAttribute="leading" secondItem="YvB-Gp-Fvr" secondAttribute="leading" constant="3" type="user" id="B8T-YR-xfb"/>
<constraint firstItem="Y1f-iI-63a" firstAttribute="top" secondItem="YvB-Gp-Fvr" secondAttribute="top" constant="3" type="user" id="CbL-CC-yq1"/>
<constraint firstAttribute="height" constant="178" type="user" id="Lri-eG-Hfh"/>
- <constraint firstItem="bZq-z2-OKU" firstAttribute="top" secondItem="YvB-Gp-Fvr" secondAttribute="top" constant="3" type="user" id="iC6-uD-d9d"/>
<constraint firstAttribute="trailing" secondItem="bZq-z2-OKU" secondAttribute="trailing" constant="3" type="user" id="t7r-7X-1Sm"/>
+ <constraint firstItem="Y1f-iI-63a" firstAttribute="centerY" secondItem="YvB-Gp-Fvr" secondAttribute="centerY" type="default" id="v4d-rL-bRf"/>
<constraint firstItem="3BV-KX-Qla" firstAttribute="trailing" secondItem="bZq-z2-OKU" secondAttribute="trailing" type="default" id="yD1-hY-fuD"/>
<constraint firstItem="3BV-KX-Qla" firstAttribute="bottom" secondItem="Y1f-iI-63a" secondAttribute="bottom" type="default" id="zbM-X7-LxP"/>
</constraints>
</view>
+ <view contentMode="scaleToFill" restorationIdentifier="" translatesAutoresizingMaskIntoConstraints="NO" id="evg-Ah-Kcw" userLabel="NotesView">
+ <subviews>
+ <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Lecturer's Notes " textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Y23-iV-GJx">
+ <color key="backgroundColor" red="1" green="0.66274509803921566" blue="0.074509803921568626" alpha="1" colorSpace="calibratedRGB"/>
+ <constraints>
+ <constraint firstAttribute="height" constant="21" type="user" id="H3E-M6-7uR"/>
+ </constraints>
+ <fontDescription key="fontDescription" name="Helvetica-Bold" family="Helvetica" pointSize="13"/>
+ <color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="calibratedRGB"/>
+ <nil key="highlightedColor"/>
+ </label>
+ <webView contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="xGi-A7-hat" userLabel="Notes">
+ <constraints>
+ <constraint firstAttribute="height" constant="89" id="6C2-Dc-3ml"/>
+ <constraint firstAttribute="height" relation="greaterThanOrEqual" constant="89" type="user" id="pq5-wY-sCH"/>
+ </constraints>
+ </webView>
+ </subviews>
+ <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
+ <constraints>
+ <constraint firstItem="Y23-iV-GJx" firstAttribute="top" secondItem="evg-Ah-Kcw" secondAttribute="top" constant="9" type="user" id="Fz6-GO-dSV"/>
+ <constraint firstAttribute="trailing" secondItem="xGi-A7-hat" secondAttribute="trailing" constant="20" type="user" id="TqQ-Aw-nmd"/>
+ <constraint firstItem="xGi-A7-hat" firstAttribute="leading" secondItem="evg-Ah-Kcw" secondAttribute="leading" constant="20" type="user" id="sws-kC-lUY"/>
+ <constraint firstItem="Y23-iV-GJx" firstAttribute="leading" secondItem="evg-Ah-Kcw" secondAttribute="leading" constant="20" symbolic="YES" type="default" id="t8M-o1-eXv"/>
+ <constraint firstItem="Y23-iV-GJx" firstAttribute="width" secondItem="xGi-A7-hat" secondAttribute="width" type="user" id="uLC-ir-IGd"/>
+ <constraint firstItem="xGi-A7-hat" firstAttribute="top" secondItem="evg-Ah-Kcw" secondAttribute="top" constant="30" id="wQo-Ug-fV3"/>
+ </constraints>
+ </view>
</subviews>
<color key="backgroundColor" red="0.90196079015731812" green="0.90196079015731812" blue="0.90196079015731812" alpha="1" colorSpace="calibratedRGB"/>
<constraints>
- <constraint firstItem="3od-5c-yzI" firstAttribute="trailing" secondItem="Xty-aF-WDv" secondAttribute="trailing" type="default" id="3ic-am-ey4"/>
+ <constraint firstItem="evg-Ah-Kcw" firstAttribute="top" secondItem="Xty-aF-WDv" secondAttribute="top" constant="181" id="3bJ-aC-aPd"/>
+ <constraint firstItem="evg-Ah-Kcw" firstAttribute="leading" secondItem="Xty-aF-WDv" secondAttribute="leading" constant="-13" id="5Ku-go-4Y7"/>
<constraint firstItem="3od-5c-yzI" firstAttribute="leading" secondItem="Xty-aF-WDv" secondAttribute="leading" type="default" id="5et-XH-ZVD"/>
<constraint firstItem="3od-5c-yzI" firstAttribute="bottom" secondItem="Xty-aF-WDv" secondAttribute="bottom" type="user" id="9UY-Go-jVU"/>
- <constraint firstItem="YvB-Gp-Fvr" firstAttribute="trailing" secondItem="Xty-aF-WDv" secondAttribute="trailing" type="default" id="D3u-HS-34e"/>
+ <constraint firstItem="evg-Ah-Kcw" firstAttribute="centerX" secondItem="3od-5c-yzI" secondAttribute="centerX" type="default" id="Blx-4R-lt1"/>
<constraint firstItem="YvB-Gp-Fvr" firstAttribute="top" secondItem="Xty-aF-WDv" secondAttribute="top" constant="5" type="user" id="DoA-5l-NFS"/>
+ <constraint firstAttribute="bottom" relation="greaterThanOrEqual" secondItem="evg-Ah-Kcw" secondAttribute="bottom" constant="20" symbolic="YES" type="user" id="FWl-QP-VvL"/>
+ <constraint firstItem="YvB-Gp-Fvr" firstAttribute="trailing" secondItem="Xty-aF-WDv" secondAttribute="trailing" type="default" id="FXg-Ij-nfl"/>
<constraint firstItem="YvB-Gp-Fvr" firstAttribute="leading" secondItem="Xty-aF-WDv" secondAttribute="leading" type="default" id="I4g-8o-Kbt"/>
- <constraint firstItem="3od-5c-yzI" firstAttribute="top" relation="lessThanOrEqual" secondItem="xGi-A7-hat" secondAttribute="bottom" constant="73" type="user" id="T2f-pV-SOF"/>
- <constraint firstItem="xGi-A7-hat" firstAttribute="trailing" secondItem="Xty-aF-WDv" secondAttribute="trailing" type="default" id="YVU-mS-NKr"/>
- <constraint firstItem="xGi-A7-hat" firstAttribute="leading" secondItem="Xty-aF-WDv" secondAttribute="leading" type="default" id="e7f-k8-b5G"/>
- <constraint firstItem="xGi-A7-hat" firstAttribute="top" secondItem="YvB-Gp-Fvr" secondAttribute="bottom" constant="8" symbolic="YES" type="user" id="k9t-qa-0V8"/>
+ <constraint firstItem="3od-5c-yzI" firstAttribute="top" secondItem="evg-Ah-Kcw" secondAttribute="bottom" constant="43" type="user" id="cTg-UU-nIh"/>
+ <constraint firstItem="3od-5c-yzI" firstAttribute="trailing" secondItem="Xty-aF-WDv" secondAttribute="trailing" type="default" id="eJ5-5R-zZM"/>
</constraints>
</view>
<navigationItem key="navigationItem" title="Presentation" id="T79-lT-61m"/>
<connections>
<outlet property="lecturer_notes" destination="xGi-A7-hat" id="Cng-HM-0wW"/>
+ <outlet property="notesView" destination="evg-Ah-Kcw" id="mlQ-Ez-ekQ"/>
<outlet property="secondarySlideView" destination="B2g-rO-b9G" id="98R-qU-Psa"/>
<outlet property="slideNumber" destination="3BV-KX-Qla" id="681-YP-k0T"/>
<outlet property="slideView" destination="bZq-z2-OKU" id="yu0-P8-F3v"/>
@@ -437,14 +463,11 @@
<rect key="frame" x="0.0" y="0.0" width="320" height="197"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
- <view alpha="0.50000000000000011" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Brj-I9-VTP">
- <color key="backgroundColor" white="0.66666666666666663" alpha="1" colorSpace="calibratedWhite"/>
- </view>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="2Zo-K8-3NM">
<subviews>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Title of the presentation" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="5" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" preferredMaxLayoutWidth="178" translatesAutoresizingMaskIntoConstraints="NO" id="nJf-ed-YfY">
<constraints>
- <constraint firstAttribute="height" constant="56" id="VUf-zJ-vPG"/>
+ <constraint firstAttribute="height" constant="56" type="user" id="VUf-zJ-vPG"/>
<constraint firstAttribute="width" constant="178" id="wto-RF-nap"/>
</constraints>
<fontDescription key="fontDescription" type="boldSystem" pointSize="25"/>
@@ -453,7 +476,7 @@
</label>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Author: author name" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="g5m-gQ-o0u">
<constraints>
- <constraint firstAttribute="height" constant="12" id="6dy-Ki-jHp"/>
+ <constraint firstAttribute="height" constant="12" type="user" id="6dy-Ki-jHp"/>
<constraint firstAttribute="width" constant="160" id="uDT-Sz-6yp"/>
</constraints>
<fontDescription key="fontDescription" type="system" pointSize="14"/>
@@ -463,7 +486,7 @@
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Last modified: 3 Jul 2013" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Dds-oJ-Uhh">
<constraints>
<constraint firstAttribute="width" constant="194" id="ejq-Nh-ofA"/>
- <constraint firstAttribute="height" constant="14" id="xvr-u8-mTb"/>
+ <constraint firstAttribute="height" constant="14" type="user" id="xvr-u8-mTb"/>
</constraints>
<fontDescription key="fontDescription" type="system" pointSize="14"/>
<color key="textColor" name="alternateSelectedControlColor" catalog="System" colorSpace="catalog"/>
@@ -471,7 +494,7 @@
</label>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Current slide: 5 of 22" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="mrB-Wd-OcP">
<constraints>
- <constraint firstAttribute="height" constant="16" id="4n7-Yu-phk"/>
+ <constraint firstAttribute="height" constant="16" type="user" id="4n7-Yu-phk"/>
<constraint firstAttribute="width" constant="169" id="ZdR-LV-4aK"/>
</constraints>
<fontDescription key="fontDescription" type="system" pointSize="14"/>
@@ -481,27 +504,33 @@
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
<constraints>
- <constraint firstItem="mrB-Wd-OcP" firstAttribute="leading" secondItem="Dds-oJ-Uhh" secondAttribute="leading" type="default" id="4dK-pH-sCn"/>
- <constraint firstItem="g5m-gQ-o0u" firstAttribute="leading" secondItem="Dds-oJ-Uhh" secondAttribute="leading" type="default" id="9IO-Cs-oNg"/>
- <constraint firstItem="mrB-Wd-OcP" firstAttribute="top" secondItem="Dds-oJ-Uhh" secondAttribute="bottom" constant="8" symbolic="YES" type="default" id="Jzi-ST-t3y"/>
- <constraint firstItem="g5m-gQ-o0u" firstAttribute="leading" secondItem="2Zo-K8-3NM" secondAttribute="leading" constant="32" id="KQN-2D-WYg"/>
- <constraint firstItem="Dds-oJ-Uhh" firstAttribute="top" secondItem="g5m-gQ-o0u" secondAttribute="bottom" constant="8" symbolic="YES" type="default" id="gtQ-av-tu7"/>
- <constraint firstAttribute="bottom" secondItem="mrB-Wd-OcP" secondAttribute="bottom" constant="20" symbolic="YES" type="default" id="imp-d1-gQ3"/>
+ <constraint firstItem="mrB-Wd-OcP" firstAttribute="leading" secondItem="2Zo-K8-3NM" secondAttribute="leading" constant="32" type="user" id="2tP-aR-jNq"/>
+ <constraint firstItem="mrB-Wd-OcP" firstAttribute="leading" secondItem="Dds-oJ-Uhh" secondAttribute="leading" type="user" id="4dK-pH-sCn"/>
+ <constraint firstItem="mrB-Wd-OcP" firstAttribute="top" secondItem="Dds-oJ-Uhh" secondAttribute="bottom" constant="8" type="user" id="4xF-Ed-MnM"/>
+ <constraint firstItem="Dds-oJ-Uhh" firstAttribute="top" secondItem="g5m-gQ-o0u" secondAttribute="bottom" constant="8" type="user" id="6Hw-b9-1hx"/>
+ <constraint firstItem="g5m-gQ-o0u" firstAttribute="leading" secondItem="Dds-oJ-Uhh" secondAttribute="leading" type="user" id="9IO-Cs-oNg"/>
+ <constraint firstItem="Dds-oJ-Uhh" firstAttribute="leading" secondItem="g5m-gQ-o0u" secondAttribute="leading" type="user" id="AxU-4u-7y0"/>
+ <constraint firstItem="g5m-gQ-o0u" firstAttribute="top" secondItem="nJf-ed-YfY" secondAttribute="bottom" constant="15" type="user" id="I8g-AQ-6mK"/>
+ <constraint firstItem="mrB-Wd-OcP" firstAttribute="top" secondItem="Dds-oJ-Uhh" secondAttribute="bottom" constant="8" symbolic="YES" type="user" id="Jzi-ST-t3y"/>
+ <constraint firstItem="g5m-gQ-o0u" firstAttribute="leading" secondItem="2Zo-K8-3NM" secondAttribute="leading" constant="32" type="user" id="KQN-2D-WYg"/>
+ <constraint firstItem="Dds-oJ-Uhh" firstAttribute="leading" secondItem="2Zo-K8-3NM" secondAttribute="leading" constant="32" type="user" id="V6U-Sp-6hc"/>
+ <constraint firstItem="g5m-gQ-o0u" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="2Zo-K8-3NM" secondAttribute="leading" constant="32" type="user" id="VP2-HW-0K1"/>
+ <constraint firstItem="Dds-oJ-Uhh" firstAttribute="leading" secondItem="mrB-Wd-OcP" secondAttribute="leading" type="user" id="WW4-GU-mSH"/>
+ <constraint firstItem="Dds-oJ-Uhh" firstAttribute="top" secondItem="g5m-gQ-o0u" secondAttribute="bottom" constant="8" symbolic="YES" type="user" id="gtQ-av-tu7"/>
+ <constraint firstAttribute="bottom" secondItem="mrB-Wd-OcP" secondAttribute="bottom" constant="20" symbolic="YES" type="user" id="imp-d1-gQ3"/>
+ <constraint firstAttribute="height" constant="169" type="user" id="kbX-jk-qBX"/>
<constraint firstItem="nJf-ed-YfY" firstAttribute="centerX" secondItem="2Zo-K8-3NM" secondAttribute="centerX" type="default" id="qYz-zW-Lfz"/>
- <constraint firstItem="nJf-ed-YfY" firstAttribute="top" secondItem="2Zo-K8-3NM" secondAttribute="top" constant="20" symbolic="YES" type="default" id="qcW-Ip-dGx"/>
+ <constraint firstItem="nJf-ed-YfY" firstAttribute="top" secondItem="2Zo-K8-3NM" secondAttribute="top" constant="20" symbolic="YES" type="user" id="qcW-Ip-dGx"/>
</constraints>
</view>
</subviews>
<color key="backgroundColor" cocoaTouchSystemColor="scrollViewTexturedBackgroundColor"/>
<constraints>
- <constraint firstItem="Brj-I9-VTP" firstAttribute="top" secondItem="Swz-wK-30Z" secondAttribute="top" constant="19" id="EUj-is-KHG"/>
<constraint firstItem="2Zo-K8-3NM" firstAttribute="leading" secondItem="Swz-wK-30Z" secondAttribute="leading" constant="13" id="GjY-1j-9c0"/>
- <constraint firstItem="2Zo-K8-3NM" firstAttribute="top" secondItem="Swz-wK-30Z" secondAttribute="top" constant="14" id="HGv-cC-ndg"/>
+ <constraint firstItem="2Zo-K8-3NM" firstAttribute="top" secondItem="Swz-wK-30Z" secondAttribute="top" constant="14" type="user" id="HGv-cC-ndg"/>
<constraint firstItem="2Zo-K8-3NM" firstAttribute="centerX" secondItem="Swz-wK-30Z" secondAttribute="centerX" type="default" id="UWQ-MC-jdF"/>
- <constraint firstAttribute="bottom" secondItem="Brj-I9-VTP" secondAttribute="bottom" constant="10" id="gLh-pS-dXl"/>
- <constraint firstItem="Brj-I9-VTP" firstAttribute="leading" secondItem="Swz-wK-30Z" secondAttribute="leading" constant="17" id="k4f-FG-RE0"/>
- <constraint firstAttribute="trailing" secondItem="Brj-I9-VTP" secondAttribute="trailing" constant="8" id="uDL-TM-51l"/>
- <constraint firstItem="2Zo-K8-3NM" firstAttribute="centerY" secondItem="Swz-wK-30Z" secondAttribute="centerY" type="default" id="xWp-Jr-P3y"/>
+ <constraint firstAttribute="bottom" secondItem="2Zo-K8-3NM" secondAttribute="bottom" constant="14" type="user" id="VKA-vw-4h9"/>
+ <constraint firstItem="2Zo-K8-3NM" firstAttribute="centerY" secondItem="Swz-wK-30Z" secondAttribute="centerY" type="user" id="xWp-Jr-P3y"/>
</constraints>
</view>
<toolbarItems/>
@@ -558,6 +587,7 @@
<relationship kind="action" name="pointerAction:"/>
<relationship kind="action" name="previousSlideAction:"/>
<relationship kind="outlet" name="lecturer_notes" candidateClass="UIWebView"/>
+ <relationship kind="outlet" name="notesView" candidateClass="UIView"/>
<relationship kind="outlet" name="secondarySlideView" candidateClass="UIImageView"/>
<relationship kind="outlet" name="slideNumber" candidateClass="UILabel"/>
<relationship kind="outlet" name="slideView" candidateClass="UIImageView"/>
diff --git a/ios/iosremote/iosremote/slideShow_vc.h b/ios/iosremote/iosremote/slideShow_vc.h
index c4926f22e..eb6fb06 100644
--- a/ios/iosremote/iosremote/slideShow_vc.h
+++ b/ios/iosremote/iosremote/slideShow_vc.h
@@ -14,6 +14,7 @@
- (IBAction)previousSlideAction:(id)sender;
- (IBAction)pointerAction:(id)sender;
+ at property (weak, nonatomic) IBOutlet UIView *notesView;
@property (weak, nonatomic) IBOutlet UIWebView *lecturer_notes;
@property (weak, nonatomic) IBOutlet UIImageView *slideView;
@property (weak, nonatomic) IBOutlet UIImageView *secondarySlideView;
diff --git a/ios/iosremote/iosremote/slideShow_vc.m b/ios/iosremote/iosremote/slideShow_vc.m
index 5664378..b488829 100644
--- a/ios/iosremote/iosremote/slideShow_vc.m
+++ b/ios/iosremote/iosremote/slideShow_vc.m
@@ -11,6 +11,7 @@
#import "CommunicationManager.h"
#import "CommandInterpreter.h"
#import "CommandTransmitter.h"
+#import <QuartzCore/QuartzCore.h>
@interface slideShow_vc ()
@@ -86,6 +87,20 @@
usingBlock:^(NSNotification *note) {
[self.navigationController popViewControllerAnimated:YES];
}];
+ self.slideView.layer.shadowColor = [[UIColor blackColor] CGColor];
+ self.slideView.layer.shadowOpacity = 0.5;
+ self.slideView.layer.shadowRadius = 4.0;
+ self.slideView.layer.shadowOffset = CGSizeMake(3.0f, 3.0f);
+ self.slideView.layer.shadowPath = [UIBezierPath bezierPathWithRect:self.slideView.bounds].CGPath;
+ self.slideView.clipsToBounds = NO;
+
+ self.secondarySlideView.layer.shadowColor = [[UIColor blackColor] CGColor];
+ self.secondarySlideView.layer.shadowOpacity = 0.5;
+ self.secondarySlideView.layer.shadowRadius = 4.0;
+ self.secondarySlideView.layer.shadowOffset = CGSizeMake(3.0f, 3.0f);
+ self.secondarySlideView.layer.shadowPath = [UIBezierPath bezierPathWithRect:self.secondarySlideView.bounds].CGPath;
+ self.secondarySlideView.clipsToBounds = NO;
+
[super viewDidAppear:animated];
}
@@ -108,8 +123,8 @@
[self setLecturer_notes:nil];
[self setSlideView:nil];
[self setSlideNumber:nil];
- [self setToolBar:nil];
[self setSecondarySlideView:nil];
+ [self setNotesView:nil];
[super viewDidUnload];
}
commit 67fdf8bf9e43198f13140baa1628da852a803836
Author: siqi <me at siqi.fr>
Date: Sun Jul 7 11:34:33 2013 +0200
auto-layout for control pad
Change-Id: I0eb15009fbc48977a58f06501ef519cc0198b26b
diff --git a/ios/iosremote/iosremote.xcodeproj/project.pbxproj b/ios/iosremote/iosremote.xcodeproj/project.pbxproj
index 60a42bc..ebbd706 100644
--- a/ios/iosremote/iosremote.xcodeproj/project.pbxproj
+++ b/ios/iosremote/iosremote.xcodeproj/project.pbxproj
@@ -15,6 +15,9 @@
57867A5B1787510700EBBE52 /* released_next_button.png in Resources */ = {isa = PBXBuildFile; fileRef = 57867A591787510700EBBE52 /* released_next_button.png */; };
57867A5E178752CD00EBBE52 /* pushed_previous_button.png in Resources */ = {isa = PBXBuildFile; fileRef = 57867A5C178752CD00EBBE52 /* pushed_previous_button.png */; };
57867A5F178752CD00EBBE52 /* released_previous_button.png in Resources */ = {isa = PBXBuildFile; fileRef = 57867A5D178752CD00EBBE52 /* released_previous_button.png */; };
+ 57AEEDAD1789543D007F4F97 /* libO_toolBar_bg.png in Resources */ = {isa = PBXBuildFile; fileRef = 57AEEDAC1789543D007F4F97 /* libO_toolBar_bg.png */; };
+ 57AEEDAF17895B67007F4F97 /* pointer.png in Resources */ = {isa = PBXBuildFile; fileRef = 57AEEDAE17895B67007F4F97 /* pointer.png */; };
+ 57AEEDB117895BF5007F4F97 /* pointer_pushed.png in Resources */ = {isa = PBXBuildFile; fileRef = 57AEEDB017895BF5007F4F97 /* pointer_pushed.png */; };
57B152991764703500EECC67 /* Base64.m in Sources */ = {isa = PBXBuildFile; fileRef = 57B152981764703500EECC67 /* Base64.m */; };
57B1529F176486C300EECC67 /* CommandTransmitter.m in Sources */ = {isa = PBXBuildFile; fileRef = 57B1529E176486C300EECC67 /* CommandTransmitter.m */; };
57B7625D17621E42007703F6 /* SlideShow.m in Sources */ = {isa = PBXBuildFile; fileRef = 57B7625C17621E42007703F6 /* SlideShow.m */; };
@@ -51,8 +54,11 @@
57867A591787510700EBBE52 /* released_next_button.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = released_next_button.png; path = iosremote/released_next_button.png; sourceTree = "<group>"; };
57867A5C178752CD00EBBE52 /* pushed_previous_button.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = pushed_previous_button.png; path = iosremote/pushed_previous_button.png; sourceTree = "<group>"; };
57867A5D178752CD00EBBE52 /* released_previous_button.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = released_previous_button.png; path = iosremote/released_previous_button.png; sourceTree = "<group>"; };
- 57B152971764703500EECC67 /* Base64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Base64.h; path = iosremote/Base64.h; sourceTree = "<group>"; };
- 57B152981764703500EECC67 /* Base64.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = Base64.m; path = iosremote/Base64.m; sourceTree = "<group>"; };
+ 57AEEDAC1789543D007F4F97 /* libO_toolBar_bg.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = libO_toolBar_bg.png; path = iosremote/libO_toolBar_bg.png; sourceTree = "<group>"; };
+ 57AEEDAE17895B67007F4F97 /* pointer.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = pointer.png; path = iosremote/pointer.png; sourceTree = "<group>"; };
+ 57AEEDB017895BF5007F4F97 /* pointer_pushed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = pointer_pushed.png; path = iosremote/pointer_pushed.png; sourceTree = "<group>"; };
+ 57B152971764703500EECC67 /* Base64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Base64.h; sourceTree = "<group>"; };
+ 57B152981764703500EECC67 /* Base64.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Base64.m; sourceTree = "<group>"; };
57B1529D176486C300EECC67 /* CommandTransmitter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CommandTransmitter.h; sourceTree = "<group>"; };
57B1529E176486C300EECC67 /* CommandTransmitter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CommandTransmitter.m; sourceTree = "<group>"; };
57B7625B17621E42007703F6 /* SlideShow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SlideShow.h; sourceTree = "<group>"; };
@@ -108,6 +114,9 @@
57AEEDAA1788D7B2007F4F97 /* Assets */ = {
isa = PBXGroup;
children = (
+ 57AEEDB017895BF5007F4F97 /* pointer_pushed.png */,
+ 57AEEDAE17895B67007F4F97 /* pointer.png */,
+ 57AEEDAC1789543D007F4F97 /* libO_toolBar_bg.png */,
57867A581787510700EBBE52 /* pushed_next_button.png */,
57867A591787510700EBBE52 /* released_next_button.png */,
57867A5C178752CD00EBBE52 /* pushed_previous_button.png */,
@@ -117,13 +126,22 @@
name = Assets;
sourceTree = "<group>";
};
+ 57AEEDAB1789443D007F4F97 /* slideShowPreview */ = {
+ isa = PBXGroup;
+ children = (
+ 57FE71E41785D7FE00B50125 /* slideShowPreview_vc.h */,
+ 57FE71E51785D7FE00B50125 /* slideShowPreview_vc.m */,
+ 57FE71E717861A9000B50125 /* slideShowPreviewTable_vc.h */,
+ 57FE71E817861A9000B50125 /* slideShowPreviewTable_vc.m */,
+ );
+ name = slideShowPreview;
+ sourceTree = "<group>";
+ };
57C6E3E6175E06E800E8BC5F = {
isa = PBXGroup;
children = (
57AEEDAA1788D7B2007F4F97 /* Assets */,
BE9EBD061765BF0800283FD2 /* CoreImage.framework */,
- 57B152971764703500EECC67 /* Base64.h */,
- 57B152981764703500EECC67 /* Base64.m */,
57C6E425175E076900E8BC5F /* Communication */,
57C6E3F8175E06E800E8BC5F /* iosremote */,
57C6E3F1175E06E800E8BC5F /* Frameworks */,
@@ -156,8 +174,7 @@
57C6E40A175E06E800E8BC5F /* MainStoryboard_iPhone.storyboard */,
57FE71E11785C61300B50125 /* pinValidation_vc.h */,
57FE71E21785C61400B50125 /* pinValidation_vc.m */,
- 57FE71E41785D7FE00B50125 /* slideShowPreview_vc.h */,
- 57FE71E51785D7FE00B50125 /* slideShowPreview_vc.m */,
+ 57AEEDAB1789443D007F4F97 /* slideShowPreview */,
57C6E401175E06E800E8BC5F /* libreoffice_sdremoteAppDelegate.h */,
57C6E402175E06E800E8BC5F /* libreoffice_sdremoteAppDelegate.m */,
57867A551787385800EBBE52 /* slideShow_vc.h */,
@@ -166,10 +183,6 @@
5753DD9817834D7100DB71BB /* newServer_vc.m */,
5753DD8E1781EA0300DB71BB /* serverList_vc.h */,
5753DD8F1781EA0300DB71BB /* serverList_vc.m */,
- 57CFED9717838FDC00E82E05 /* EditableTableViewCell.h */,
- 57CFED9817838FDC00E82E05 /* EditableTableViewCell.m */,
- 57FE71E717861A9000B50125 /* slideShowPreviewTable_vc.h */,
- 57FE71E817861A9000B50125 /* slideShowPreviewTable_vc.m */,
);
path = iosremote;
sourceTree = "<group>";
@@ -177,6 +190,10 @@
57C6E3F9175E06E800E8BC5F /* Supporting Files */ = {
isa = PBXGroup;
children = (
+ 57B152971764703500EECC67 /* Base64.h */,
+ 57B152981764703500EECC67 /* Base64.m */,
+ 57CFED9717838FDC00E82E05 /* EditableTableViewCell.h */,
+ 57CFED9817838FDC00E82E05 /* EditableTableViewCell.m */,
57C6E3FA175E06E800E8BC5F /* iosremote-Info.plist */,
57C6E3FB175E06E800E8BC5F /* InfoPlist.strings */,
57C6E3FE175E06E800E8BC5F /* main.m */,
@@ -270,6 +287,9 @@
57867A5B1787510700EBBE52 /* released_next_button.png in Resources */,
57867A5E178752CD00EBBE52 /* pushed_previous_button.png in Resources */,
57867A5F178752CD00EBBE52 /* released_previous_button.png in Resources */,
+ 57AEEDAD1789543D007F4F97 /* libO_toolBar_bg.png in Resources */,
+ 57AEEDAF17895B67007F4F97 /* pointer.png in Resources */,
+ 57AEEDB117895BF5007F4F97 /* pointer_pushed.png in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
diff --git a/ios/iosremote/iosremote.xcodeproj/project.xcworkspace/xcuserdata/siqi.xcuserdatad/UserInterfaceState.xcuserstate b/ios/iosremote/iosremote.xcodeproj/project.xcworkspace/xcuserdata/siqi.xcuserdatad/UserInterfaceState.xcuserstate
index cf19dc7..f3b070a 100644
Binary files a/ios/iosremote/iosremote.xcodeproj/project.xcworkspace/xcuserdata/siqi.xcuserdatad/UserInterfaceState.xcuserstate and b/ios/iosremote/iosremote.xcodeproj/project.xcworkspace/xcuserdata/siqi.xcuserdatad/UserInterfaceState.xcuserstate differ
diff --git a/ios/iosremote/iosremote/en.lproj/MainStoryboard_iPhone.storyboard b/ios/iosremote/iosremote/en.lproj/MainStoryboard_iPhone.storyboard
index 5186c53..95d5341 100644
--- a/ios/iosremote/iosremote/en.lproj/MainStoryboard_iPhone.storyboard
+++ b/ios/iosremote/iosremote/en.lproj/MainStoryboard_iPhone.storyboard
@@ -213,95 +213,142 @@
<rect key="frame" x="0.0" y="64" width="320" height="504"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<subviews>
- <imageView userInteractionEnabled="NO" contentMode="scaleAspectFit" translatesAutoresizingMaskIntoConstraints="NO" id="bZq-z2-OKU">
+ <webView contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="xGi-A7-hat" userLabel="Notes">
<constraints>
- <constraint firstAttribute="height" constant="197" id="YLg-Yg-h4x"/>
+ <constraint firstAttribute="height" relation="greaterThanOrEqual" constant="152" type="user" id="FGj-7v-Ul8"/>
+ <constraint firstAttribute="height" constant="152" type="user" id="ai8-lq-4e2"/>
</constraints>
- </imageView>
- <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="XDZ-bs-OUM">
- <constraints>
- <constraint firstAttribute="width" constant="61" id="LOl-Pm-dy2"/>
- </constraints>
- <fontDescription key="fontDescription" type="boldSystem" pointSize="15"/>
- <state key="normal" backgroundImage="released_next_button.png">
- <color key="titleColor" red="0.19607843459999999" green="0.30980393290000002" blue="0.52156865600000002" alpha="1" colorSpace="calibratedRGB"/>
- <color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
- </state>
- <state key="highlighted" backgroundImage="pushed_next_button.png">
- <color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
- </state>
- <connections>
- <action selector="nextSlideAction:" destination="Ivv-3X-Nhr" eventType="touchUpInside" id="qTl-Ib-3Z8"/>
- </connections>
- </button>
- <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="vh9-Zy-DPu">
- <constraints>
- <constraint firstAttribute="height" constant="61" id="Upo-03-Eaw"/>
- <constraint firstAttribute="width" constant="61" id="iXa-2g-isP"/>
- </constraints>
- <fontDescription key="fontDescription" type="boldSystem" pointSize="15"/>
- <state key="normal" backgroundImage="released_previous_button.png">
- <color key="titleColor" red="0.19607843459999999" green="0.30980393290000002" blue="0.52156865600000002" alpha="1" colorSpace="calibratedRGB"/>
- <color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
- </state>
- <state key="highlighted" backgroundImage="pushed_previous_button.png">
- <color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
- </state>
- <connections>
- <action selector="previousSlideAction:" destination="Ivv-3X-Nhr" eventType="touchUpInside" id="DAf-Qp-7KW"/>
- </connections>
- </button>
- <webView contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="xGi-A7-hat">
- <color key="backgroundColor" patternImage="C3EAB918-B6EF-4237-BA62-38FB651AC6C0" colorSpace="pattern"/>
+ </webView>
+ <view contentMode="scaleToFill" restorationIdentifier="" translatesAutoresizingMaskIntoConstraints="NO" id="3od-5c-yzI" userLabel="Bottom">
+ <subviews>
+ <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="vh9-Zy-DPu">
+ <constraints>
+ <constraint firstAttribute="height" constant="61" id="dEG-lN-O7v"/>
+ <constraint firstAttribute="width" constant="93" id="tXD-cs-5jt"/>
+ </constraints>
+ <fontDescription key="fontDescription" type="boldSystem" pointSize="15"/>
+ <state key="normal" backgroundImage="released_previous_button.png">
+ <color key="titleColor" red="0.19607843459999999" green="0.30980393290000002" blue="0.52156865600000002" alpha="1" colorSpace="calibratedRGB"/>
+ <color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
+ </state>
+ <state key="highlighted" backgroundImage="pushed_previous_button.png">
+ <color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
+ </state>
+ <connections>
+ <action selector="previousSlideAction:" destination="Ivv-3X-Nhr" eventType="touchUpInside" id="DAf-Qp-7KW"/>
+ </connections>
+ </button>
+ <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="XDZ-bs-OUM">
+ <fontDescription key="fontDescription" type="boldSystem" pointSize="15"/>
+ <state key="normal" backgroundImage="released_next_button.png">
+ <color key="titleColor" red="0.19607843459999999" green="0.30980393290000002" blue="0.52156865600000002" alpha="1" colorSpace="calibratedRGB"/>
+ <color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
+ </state>
+ <state key="highlighted" backgroundImage="pushed_next_button.png">
+ <color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
+ </state>
+ <connections>
+ <action selector="nextSlideAction:" destination="Ivv-3X-Nhr" eventType="touchUpInside" id="qTl-Ib-3Z8"/>
+ </connections>
+ </button>
+ <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="kMb-xm-ope">
+ <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
+ <constraints>
+ <constraint firstAttribute="width" constant="59" id="Kjm-ct-oJ3"/>
+ </constraints>
+ <fontDescription key="fontDescription" type="boldSystem" pointSize="15"/>
+ <state key="normal" title="Button" image="pointer.png">
+ <color key="titleColor" red="0.19607843459999999" green="0.30980393290000002" blue="0.52156865600000002" alpha="1" colorSpace="calibratedRGB"/>
+ <color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
+ </state>
+ <state key="highlighted" image="pointer_pushed.png">
+ <color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
+ </state>
+ <connections>
+ <action selector="pointerAction:" destination="Ivv-3X-Nhr" eventType="touchUpInside" id="KYl-be-1wN"/>
+ </connections>
+ </button>
+ </subviews>
+ <color key="backgroundColor" red="0.93333333333333335" green="0.93333333333333335" blue="0.93333333333333335" alpha="1" colorSpace="deviceRGB"/>
<constraints>
- <constraint firstAttribute="width" constant="280" id="lCo-8S-Rvo"/>
- <constraint firstAttribute="height" constant="151" id="ndz-J7-2XE"/>
+ <constraint firstItem="kMb-xm-ope" firstAttribute="centerY" secondItem="3od-5c-yzI" secondAttribute="centerY" type="default" id="2gB-3Q-hYI"/>
+ <constraint firstAttribute="trailing" secondItem="XDZ-bs-OUM" secondAttribute="trailing" constant="20" symbolic="YES" type="default" id="Eqp-Q3-L92"/>
+ <constraint firstItem="kMb-xm-ope" firstAttribute="top" secondItem="XDZ-bs-OUM" secondAttribute="top" type="default" id="H9E-FR-J2C"/>
+ <constraint firstItem="vh9-Zy-DPu" firstAttribute="leading" secondItem="3od-5c-yzI" secondAttribute="leading" constant="20" symbolic="YES" type="default" id="SQd-eE-VN0"/>
+ <constraint firstAttribute="height" constant="88" type="user" id="dBc-X5-XIU"/>
+ <constraint firstItem="kMb-xm-ope" firstAttribute="height" secondItem="vh9-Zy-DPu" secondAttribute="height" type="user" id="jh8-H0-Qmm"/>
+ <constraint firstItem="kMb-xm-ope" firstAttribute="top" secondItem="vh9-Zy-DPu" secondAttribute="top" type="default" id="r6I-Jb-2lm"/>
+ <constraint firstItem="kMb-xm-ope" firstAttribute="leading" secondItem="3od-5c-yzI" secondAttribute="leading" constant="132" id="tY1-mj-gK5"/>
+ <constraint firstItem="vh9-Zy-DPu" firstAttribute="width" secondItem="XDZ-bs-OUM" secondAttribute="width" type="user" id="x0P-o6-T4k"/>
+ <constraint firstItem="kMb-xm-ope" firstAttribute="height" secondItem="XDZ-bs-OUM" secondAttribute="height" type="user" id="zeV-2j-i1K"/>
</constraints>
- </webView>
- <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" alpha="0.80000000000000004" contentMode="left" text="Label" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="3BV-KX-Qla">
- <color key="backgroundColor" white="0.66666666666666663" alpha="1" colorSpace="calibratedWhite"/>
- <rect key="contentStretch" x="1.3877787807814457e-17" y="0.0" width="1" height="1"/>
+ </view>
+ <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="YvB-Gp-Fvr" userLabel="Preview">
+ <subviews>
+ <imageView userInteractionEnabled="NO" contentMode="scaleAspectFit" verticalCompressionResistancePriority="1000" translatesAutoresizingMaskIntoConstraints="NO" id="bZq-z2-OKU">
+ <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
+ </imageView>
+ <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Y1f-iI-63a">
+ <subviews>
+ <imageView userInteractionEnabled="NO" contentMode="scaleAspectFit" verticalCompressionResistancePriority="1000" translatesAutoresizingMaskIntoConstraints="NO" id="B2g-rO-b9G">
+ <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
+ <constraints>
+ <constraint firstAttribute="width" constant="86" type="user" id="KY9-Uc-127"/>
+ <constraint firstAttribute="height" constant="68" id="oyr-9z-MOx"/>
+ </constraints>
+ </imageView>
+ </subviews>
+ <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
+ <constraints>
+ <constraint firstItem="B2g-rO-b9G" firstAttribute="leading" secondItem="Y1f-iI-63a" secondAttribute="leading" type="user" id="cV9-fY-2qk"/>
+ <constraint firstAttribute="bottom" secondItem="B2g-rO-b9G" secondAttribute="bottom" constant="2" id="ot9-YW-96V"/>
+ <constraint firstItem="B2g-rO-b9G" firstAttribute="centerX" secondItem="Y1f-iI-63a" secondAttribute="centerX" type="user" id="pHp-uH-VH9"/>
+ </constraints>
+ </view>
+ <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" alpha="0.80000000000000004" contentMode="left" text="Label" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="3BV-KX-Qla">
+ <color key="backgroundColor" white="0.66666666666666663" alpha="1" colorSpace="calibratedWhite"/>
+ <rect key="contentStretch" x="1.3877787807814457e-17" y="0.0" width="1" height="1"/>
+ <constraints>
+ <constraint firstAttribute="width" constant="52" id="Qhb-gd-btj"/>
+ </constraints>
+ <fontDescription key="fontDescription" type="system" pointSize="17"/>
+ <color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="calibratedRGB"/>
+ <color key="highlightedColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
+ </label>
+ </subviews>
+ <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
<constraints>
- <constraint firstAttribute="width" constant="52" id="Qhb-gd-btj"/>
+ <constraint firstAttribute="bottom" secondItem="3BV-KX-Qla" secondAttribute="bottom" constant="3" id="01c-sE-45c"/>
+ <constraint firstItem="bZq-z2-OKU" firstAttribute="leading" secondItem="Y1f-iI-63a" secondAttribute="trailing" constant="8" symbolic="YES" type="user" id="0lZ-9Y-n6x"/>
+ <constraint firstItem="3BV-KX-Qla" firstAttribute="bottom" secondItem="bZq-z2-OKU" secondAttribute="bottom" type="default" id="9bb-JU-PCC"/>
+ <constraint firstItem="Y1f-iI-63a" firstAttribute="leading" secondItem="YvB-Gp-Fvr" secondAttribute="leading" constant="3" type="user" id="B8T-YR-xfb"/>
+ <constraint firstItem="Y1f-iI-63a" firstAttribute="top" secondItem="YvB-Gp-Fvr" secondAttribute="top" constant="3" type="user" id="CbL-CC-yq1"/>
+ <constraint firstAttribute="height" constant="178" type="user" id="Lri-eG-Hfh"/>
+ <constraint firstItem="bZq-z2-OKU" firstAttribute="top" secondItem="YvB-Gp-Fvr" secondAttribute="top" constant="3" type="user" id="iC6-uD-d9d"/>
+ <constraint firstAttribute="trailing" secondItem="bZq-z2-OKU" secondAttribute="trailing" constant="3" type="user" id="t7r-7X-1Sm"/>
+ <constraint firstItem="3BV-KX-Qla" firstAttribute="trailing" secondItem="bZq-z2-OKU" secondAttribute="trailing" type="default" id="yD1-hY-fuD"/>
+ <constraint firstItem="3BV-KX-Qla" firstAttribute="bottom" secondItem="Y1f-iI-63a" secondAttribute="bottom" type="default" id="zbM-X7-LxP"/>
</constraints>
- <fontDescription key="fontDescription" type="system" pointSize="17"/>
- <color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="calibratedRGB"/>
- <color key="highlightedColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
- </label>
- <toolbar opaque="NO" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="GQv-EU-3bu">
- <items>
- <barButtonItem title="<" width="80" id="buz-F8-kHg"/>
- <barButtonItem style="plain" systemItem="flexibleSpace" id="Aw2-gV-FRx"/>
- <barButtonItem title="O" width="80" id="mD4-uo-cXW"/>
- <barButtonItem style="plain" systemItem="flexibleSpace" id="Bjb-U8-5of"/>
- <barButtonItem title=">" width="80" id="ake-jX-ggk"/>
- </items>
- </toolbar>
+ </view>
</subviews>
<color key="backgroundColor" red="0.90196079015731812" green="0.90196079015731812" blue="0.90196079015731812" alpha="1" colorSpace="calibratedRGB"/>
<constraints>
- <constraint firstItem="xGi-A7-hat" firstAttribute="leading" secondItem="Xty-aF-WDv" secondAttribute="leading" constant="15" id="6lE-vb-eac"/>
- <constraint firstItem="bZq-z2-OKU" firstAttribute="trailing" secondItem="Xty-aF-WDv" secondAttribute="trailing" type="default" id="8c7-S3-6e7"/>
- <constraint firstItem="vh9-Zy-DPu" firstAttribute="top" secondItem="XDZ-bs-OUM" secondAttribute="top" type="default" id="9Ok-Tn-XPY"/>
- <constraint firstAttribute="trailing" secondItem="3BV-KX-Qla" secondAttribute="trailing" constant="6" id="CYg-Mi-8Fm"/>
- <constraint firstItem="vh9-Zy-DPu" firstAttribute="top" secondItem="Xty-aF-WDv" secondAttribute="top" constant="227" id="Mc6-Iu-Llg"/>
- <constraint firstItem="vh9-Zy-DPu" firstAttribute="bottom" secondItem="XDZ-bs-OUM" secondAttribute="bottom" type="default" id="Osz-kd-tgN"/>
- <constraint firstItem="bZq-z2-OKU" firstAttribute="leading" secondItem="Xty-aF-WDv" secondAttribute="leading" type="default" id="Qsg-3g-46W"/>
- <constraint firstItem="3BV-KX-Qla" firstAttribute="top" secondItem="Xty-aF-WDv" secondAttribute="top" constant="184" id="XgZ-IP-Wsa"/>
- <constraint firstItem="GQv-EU-3bu" firstAttribute="leading" secondItem="Xty-aF-WDv" secondAttribute="leading" type="default" id="cKk-ZT-xc9"/>
- <constraint firstItem="GQv-EU-3bu" firstAttribute="bottom" secondItem="Xty-aF-WDv" secondAttribute="bottom" type="default" id="dgM-wJ-YtM"/>
- <constraint firstItem="vh9-Zy-DPu" firstAttribute="leading" secondItem="Xty-aF-WDv" secondAttribute="leading" constant="25" id="g90-pp-FIm"/>
- <constraint firstAttribute="trailing" secondItem="XDZ-bs-OUM" secondAttribute="trailing" constant="32" id="gQB-7f-3oC"/>
- <constraint firstItem="GQv-EU-3bu" firstAttribute="trailing" secondItem="Xty-aF-WDv" secondAttribute="trailing" type="default" id="plb-vM-pxW"/>
- <constraint firstAttribute="bottom" secondItem="xGi-A7-hat" secondAttribute="bottom" constant="50" id="tCj-cK-tgF"/>
- <constraint firstItem="bZq-z2-OKU" firstAttribute="top" secondItem="Xty-aF-WDv" secondAttribute="top" type="default" id="uH1-AT-FKy"/>
+ <constraint firstItem="3od-5c-yzI" firstAttribute="trailing" secondItem="Xty-aF-WDv" secondAttribute="trailing" type="default" id="3ic-am-ey4"/>
+ <constraint firstItem="3od-5c-yzI" firstAttribute="leading" secondItem="Xty-aF-WDv" secondAttribute="leading" type="default" id="5et-XH-ZVD"/>
+ <constraint firstItem="3od-5c-yzI" firstAttribute="bottom" secondItem="Xty-aF-WDv" secondAttribute="bottom" type="user" id="9UY-Go-jVU"/>
+ <constraint firstItem="YvB-Gp-Fvr" firstAttribute="trailing" secondItem="Xty-aF-WDv" secondAttribute="trailing" type="default" id="D3u-HS-34e"/>
+ <constraint firstItem="YvB-Gp-Fvr" firstAttribute="top" secondItem="Xty-aF-WDv" secondAttribute="top" constant="5" type="user" id="DoA-5l-NFS"/>
+ <constraint firstItem="YvB-Gp-Fvr" firstAttribute="leading" secondItem="Xty-aF-WDv" secondAttribute="leading" type="default" id="I4g-8o-Kbt"/>
+ <constraint firstItem="3od-5c-yzI" firstAttribute="top" relation="lessThanOrEqual" secondItem="xGi-A7-hat" secondAttribute="bottom" constant="73" type="user" id="T2f-pV-SOF"/>
+ <constraint firstItem="xGi-A7-hat" firstAttribute="trailing" secondItem="Xty-aF-WDv" secondAttribute="trailing" type="default" id="YVU-mS-NKr"/>
+ <constraint firstItem="xGi-A7-hat" firstAttribute="leading" secondItem="Xty-aF-WDv" secondAttribute="leading" type="default" id="e7f-k8-b5G"/>
+ <constraint firstItem="xGi-A7-hat" firstAttribute="top" secondItem="YvB-Gp-Fvr" secondAttribute="bottom" constant="8" symbolic="YES" type="user" id="k9t-qa-0V8"/>
</constraints>
</view>
- <navigationItem key="navigationItem" title="Presentation" id="T79-lT-61m">
- <barButtonItem key="rightBarButtonItem" title="Slides" id="0Df-q1-4Ho"/>
- </navigationItem>
+ <navigationItem key="navigationItem" title="Presentation" id="T79-lT-61m"/>
<connections>
<outlet property="lecturer_notes" destination="xGi-A7-hat" id="Cng-HM-0wW"/>
+ <outlet property="secondarySlideView" destination="B2g-rO-b9G" id="98R-qU-Psa"/>
<outlet property="slideNumber" destination="3BV-KX-Qla" id="681-YP-k0T"/>
<outlet property="slideView" destination="bZq-z2-OKU" id="yu0-P8-F3v"/>
</connections>
@@ -465,4452 +512,12 @@
</scene>
</scenes>
<resources>
- <image name="C3EAB918-B6EF-4237-BA62-38FB651AC6C0" width="256" height="256">
- <mutableData key="keyedArchiveRepresentation">
-YnBsaXN0MDDUAQIDBAUGPj9YJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3ASAAGGoK4HCBMU
-GR4fIyQsLzI4O1UkbnVsbNUJCgsMDQ4PEBESVk5TU2l6ZVYkY2xhc3NcTlNJbWFnZUZsYWdzVk5TUmVw
-c1dOU0NvbG9ygAKADRIgwAAAgAOAC1p7MjU2LCAyNTZ90hUKFhhaTlMub2JqZWN0c6EXgASACtIVChod
-ohscgAWABoAJEADSIAohIl8QFE5TVElGRlJlcHJlc2VudGF0aW9ugAeACE8SAAQNHk1NACoABAAIdXiB
-/3Byef9wc33/b3F1/25wd/9wcnn/b3F1/2xudf9sbnX/bnB3/3Bzff9nanT/bnF7/3Byef9wc33/amxz
-/29xdf9zdXz/bG51/2ptd/9qbXf/bG51/2ptd/95e4H/dXd9/2xvef9sbnX/bG95/2xvef9nanT/am13
-/3N1fP9wc33/d3qD/2xudf9wc33/bG51/3V3ff9nanT/amxz/2xudf9qbHP/bG95/2ptd/9qbXf/bG95
-/2xudf91d33/e32D/2Jlbv9ucXv/bG95/3N2f/9qbHP/c3V8/3Bzff9nanH/amxz/2Jlbv9nanT/Z2px
-/2ptd/9sb3n/dXiB/2dqdP9ucXv/dXd9/2xudf9ucHf/dnh8/3V3ff9vcXX/bnB3/3h5ff9sbnX/bnB3
-/2xvef9wc33/bG95/25xe/95e4H/c3Z//3N2f/9zdn//dXiB/3N1fP9wcnn/Z2p0/25wd/9wcnn/dXd9
-/3R2fP9qbHP/bG51/2dqdP9zdXz/am13/3Fzev9qbHX/cHJ7/3Z3ff9ucXv/bnB3/25wd/9qbXf/dnh/
-/2tueP9xc3r/bG95/3Byef9ucHf/bnB3/3Bzff9ucHf/cHJ5/3Z4fP9sbnX/d3l//3V3ff9nanT/bnF7
-/3V3ff9zdn//c3V8/2dqcf9sbnX/bnF7/2ptd/9wc33/c3V8/3Bzff9qbHP/am13/2xudf9iZW7/am13
-/2hqdP9oanD/a251/3J1f/9vcnz/bnF7/25xe/9ucXv/c3Z//21wdf9sb3n/am12/2Zpcv9iZW7/ZGdx
-/2Zobv9kZ3H/ZGdx/2Zpc/9maXP/ZGdx/25wd/9iZW7/Z2p0/2Rncf9maG7/c3V8/2Rncf9sb3n/Zmlz
-/36Ahv9sb3n/bnF7/2xvef9ucHf/cHN9/29xdf95fIb/dXiB/3Bzff9zdXz/bG95/3d6g/9ucHf/c3Z/
-/3Byef9wc33/cHJ5/3Bzff9wc33/bnF7/3d5f/9qbXf/bnF7/3N2f/9zdn//cHJ5/25xe/9zdn//bnB3
-/3Byef9wc33/bG95/3Byef9ucXv/cHN9/25xe/9wcnn/c3V8/25wd/9ucXv/c3V8/3d5f/9zdn//bG95
-/25wd/9wc33/bG95/25xe/9ucHf/cHJ5/3Byef9wcnn/bG51/3N1fP9qbHP/c3V8/3Z4fP9wcnn/ZGdx
-/2ptd/9ucXv/bG95/25xe/9ucXv/c3Z//2dqdP9sbnX/eXuB/2dqdP9sb3n/bnF7/2xudf9qbHP/bnF7
-/3Byef9qbHP/am13/2dqcf9qbXf/amxz/3Bzff9qbXf/bG51/2xudf91d33/cHJ5/3N1fP9wcnn/cHN9
-/3d5f/9vcXX/c3V8/25wd/9qbXf/am13/2dqcf9maXP/ZGdx/2ptd/9sb3n/Z2px/3Byef9vcXX/cHJ5
-/2dqcf9sbnX/c3V8/29xdf9ucHf/bnB3/25wd/9ucHf/foCG/3h5ff9zdXz/cHJ5/3Byef9wcnn/amxz
-/2xudf92eHz/cHJ5/3V4gf9sbnX/bnF7/2xudf9wcnn/Z2px/2Rncf9maXP/Z2px/2dqcf9maG7/YmVu
-/2Zobv9maG7/am13/3N2f/9ZXGX/Zmlz/2dqdP9wcnn/ZGdx/2xvef9sb3n/amxz/2ptd/9maXP/am13
-/2xudf9sb3n/cHN9/3V3ff9nanT/bG95/3V3ff9nanT/bnB3/3N1fP91d33/am13/25xe/93eX//bnB3
-/2xudf9sbnX/cHN9/2xudf9sbnX/dXd9/25wd/9wcnn/cHJ5/3Byef9vcXX/bnB3/2dqdP9wcnn/cHN9
-/3l7gf93eX//bG95/25xe/9qbHP/c3V8/29xef9vcnr/amx1/25weP93eX//cHJ5/25wd/9sbnX/bnB3
-/3R2e/9ucHf/bnF5/21vdv9wcnn/bnB3/2xudf9zdXz/bnF7/3Bzff91d33/amxz/3Z4fP91d33/Z2px
-/25wd/91d33/bnB3/3Byef9maXP/am13/2xvef9sbnX/bG95/3V3ff92eHz/b3F1/25xe/9ucHf/Z2px
-/3N2f/9wc33/cHJ5/25wd/90dn3/bnF6/25xe/9wc33/bG95/3V3ff9ucXr/dHZ8/3V4gP91eID/cHJ5
-/3N2f/9wc33/bnF7/3Bzff9zdn//c3Z//2xvef93eoP/bG95/3N2f/9wc33/bnB3/3d5f/9nanH/am13
-/2dqdP93eoP/bG51/2ptd/9maXP/Z2p0/2ptd/9maG7/c3V8/25wd/9nanT/ZGdx/2RmbP9wcnn/YGNs
-/2dqcf9kZ3H/Zmhu/2BjbP9maG7/ZGdx/2Zobv9qbXf/YGNs/2Rncf9kZ3H/Z2p0/2Rncf9qbHP/Zmlz
-/2Rncf9maG7/Zmhu/2Jlbv9maXP/amxz/2ptd/9qbHP/bnF7/3Bzff9sbnX/Z2p0/25xe/91d33/cHJ5
-/25wd/9vcXX/c3V8/2xvef9wc33/bG95/3N2f/9zdn//dXiB/25xe/91eIH/bnF7/3V4gf95e4H/c3Z/
-/2ptd/9wcnn/c3Z//3Bzff9zdn//dXiB/3t+h/9wc33/cHN9/36Ahv91eIH/d3qD/3l7gf9zdn//bnF7
-/3V4gf91d33/b3F1/3N1fP9ucHf/dXd9/3N1fP93eX//cHN9/3Byef9ucHf/d3l//3N2f/9wc33/bnF7
-/3Bzff91d33/b3F1/3N1fP9ucHf/b3F1/25wd/9sb3n/Z2p0/2Zobv9qbXf/bG95/2Zpc/9wcnn/bW9z
-/25xe/9sbnX/bnB3/3V3ff9sb3n/bG95/2xvef9ucXv/bnF7/3t+h/95e4H/c3Z//3N2f/91eIH/d3qD
-/3N2f/9zdn//foGK/3l8hv+Bg4r/cHN9/3d6g/9zdXz/d3l//3Byef9wc33/cHN9/25xe/9ucXv/bnB3
-/29xdf9wcnn/bnF7/3l7gf9+gIb/Z2p0/3N2f/9wcnn/d3l//21vc/92eHz/dXd9/25wd/9ucXv/Z2p0
-/2xvef9ucHf/bnF7/3V4gf95fIb/bnB3/3N2f/91eIH/bnB3/3V4gf9zdn//dXd9/2ptd/9vcXX/dXd9
-/25wd/9sb3n/bnF7/3d6g/9ucXv/cHJ5/3N2f/9ucHf/bnB3/3Byef91d33/b3F1/3Byef9sbnX/b3F1
-/2xudf9wcnn/bnF4/2hrcv9tb3P/Z2p0/3Bzff9ucHf/b3J6/2ttdv9tcHr/dXd9/2ptd/9sbnX/Zmlz
-/2ptd/90dnv/bW92/25xev9sbnX/cHJ5/2ptd/9sbnX/bnF7/2xvef9ucXv/cHN9/2Rncf9wcnn/bnB3
-/2Jlbv9qbHP/cHN9/25xe/9qbXf/Zmhu/21vc/9ucHf/bG51/3N1fP93eX//dXd9/29xdf9ucXv/bnF7
-/2dqdP91d33/cHN9/25xe/9tb3b/c3Z8/3Byef9ucHj/c3V8/25xe/95e4H/cXN6/3d5gP93eX//c3V9
-/29xdf9zdXz/bG51/2xudf9ucHf/bG51/3Byef9qbHP/dnh8/2psc/9wc33/bnB3/21vc/94eX3/Z2px
-/2xudf9iZW7/dXiB/2psc/9maXP/YmVu/2Jlbv9nanT/Zmhu/3N2f/9zdXz/am13/2dqdP9nanT/dXiB
-/2Rncf9sbnX/Z2p0/2ptd/9qbXf/bnF7/25xe/9tb3P/dXiB/2Zpc/9ucHf/cHJ5/25wd/9ucHf/b3F1
-/3Byef9tb3P/bG51/2xvef9nanT/bG51/2xudf9sb3n/bG51/25xe/9ucXv/Z2p0/25xe/9wc33/dXd9
-/3Bzff9qbXf/amxz/25xe/9maXP/am13/2Jlbv9qbXf/amxz/2xvef9kZ3H/bnF7/2Rncf9ucXv/c3V8
-/2xvef9kZ3H/bW9z/2xvef9ucHf/dXd9/3V4gf97fYP/bnB3/3N1fP97fYP/bnF7/3V4gf93eX//cHJ5
-/25xe/9zdn//eXuB/3Bzff91eIH/bnF7/3d6g/91eIH/d3l//3N2f/9zdXz/c3V8/3d5f/9wc33/bnF7
-/25xe/9zdXz/c3V8/2xudf9sb3n/Z2px/2dqcf9nanT/amxz/2Jlbv9gY2z/bG51/2xudf9kZ3H/bG95
-/2xudf9qbXf/Zmlz/2dqcf9ucXv/amxz/2Zpc/9maXP/amxz/2dqdP91eIH/dXd9/3Bzff9ucHf/bG95
-/2ptd/9maXP/bG95/3V3ff9wc33/dXiB/21vc/9ucXv/bG51/3N1fP9tb3P/bG51/3Bzff9qbXf/am13
-/25xe/9qbXf/bG51/2xudf9wcnn/d3l//2Rncf9sb3n/bnF7/3V3ff9sbnX/dnh8/3V3ff9ucHf/bG51
-/2psc/9sb3n/b3F1/25wd/9wc33/d3qD/2xvef9wc33/c3Z//2xvef9zdn//cHN9/3V4gf9ucXv/c3V8
-/3t9g/9wc33/bnB3/25xe/91d33/b3F1/29xdf9zdXz/bW9z/2xudf9wcnn/c3V8/21vc/9wcnn/Z2px
-/2psc/9qbHP/bnB3/25wd/9qbHP/bG51/2psc/91d3z/bnB4/21vd/9qbHX/b3J6/3V3fP9ucHf/am13
-/2dqdP9ucXv/c3aA/21wev9ydHz/cHJ3/3N1fP9vcXX/bnB3/25xe/9wcnn/c3V8/3Bzff9qbXf/dXd9
-/3h5ff9qbHP/c3V8/3Z4fP9zdXz/bnF7/2Zobv9vcXX/bnB3/25wd/9ucHf/dnh8/3Byef9sbnX/cHJ5
-/2xvef9kZ3H/cHN9/25xe/9rbXT/Zmlz/25xef9pbHX/ZWhy/2ptd/9qbXf/c3V8/25vdv90d37/dXd9
-/25wd/9tb3P/c3V8/21vc/9wcnn/bnB3/25wd/9zdXz/Z2px/3d5f/9ucHf/e32D/3N2f/9wc33/e32D
-/25xe/9tb3P/Zmhu/3l7gf9qbXf/am13/2Rncf9maG7/Z2p0/2dqcf9zdn//cHJ5/2ptd/9qbXf/am13
-/3d6g/9kZ3H/am13/2dqdP9sb3n/am13/2dqdP9qbXf/Zmlz/3d5f/9kZ3H/am13/25wd/9qbXf/am13
-/2xudf9ucXv/bW9z/25wd/9ucHf/amxz/2xudf9sbnX/am13/2xudf9zdXz/c3V8/2xudf9zdXz/dXd9
-/3V3ff9ucXv/bG51/21vc/9wc33/Zmlz/2xudf9kZ3H/Z2p0/2dqcf9qbXf/Z2p0/25xe/9nanT/cHN9
-/3Byef9qbHP/XWBq/2xudf9qbXf/bG95/3N1fP9qbXf/dXiB/2xudf9qbXf/c3Z//2ptd/9ucXv/bG95
-/2dqdP9qbHP/Z2p0/2xvef9sbnX/bnF7/2psc/9sb3n/bG95/3Bzff9nanH/Zmlz/2Zpc/9ucXv/bG95
-/2ptd/9qbXf/Z2p0/3d5f/9ucXv/c3Z//25wd/9ucXv/cHN9/3Bzff9ucXv/am13/3Byef9wc33/bG95
-/3Bzff9ucHf/cHJ5/25wd/9vcXX/eHl9/3Bzff9ucHf/cHN9/25wd/9ucXv/e32D/3V4gf91d33/bG95
-/3N1fP9wcnn/bG51/3N1fP91d33/bnF7/3N1fP9qbHP/bnF7/2ptd/9zdXz/bG51/2xudf91d33/bnB3
-/3Byef9wcnn/bG95/25wd/9ucHf/dnh8/4CChv9ucHf/dXd9/3N1fP93eX//bnB3/3Z4fP92eHz/bnB3
-/2xudf9sbnX/bG51/2xudf9qbXf/bG95/3V4gf9maXP/bG95/2Zpc/9iZW7/am13/2dqdP9nanT/YmVu
-/2BjbP9sb3n/ZGdx/2BjbP9maXP/ZGdx/2Zobv9iZW7/am13/2Rncf9maXP/am13/25xe/9sbnX/bG95
-/2Zpc/9qbXf/bG51/2ptd/9tcHn/ZWhx/2ptd/9nanT/c3V8/21vdv9ucHj/a254/29xev9zdn7/bnF1
-/2xudf9nanH/bG95/29yfP9sbnf/bnF6/21vc/9ucXv/bnB3/25wd/9wcnn/bnB3/3V3ff9zdXz/bG51
-/3Byef91d33/ZGdx/2ptd/9zdXz/cHJ5/2xvef9iZW7/Z2p0/2ptd/9qbXf/am13/3d5f/9ucXv/am13
-/25xe/9qbXf/YmVu/2ptd/9qbXf/Z2py/2dpcv9vcXn/bnB3/2psc/9zdXz/cHJ5/3Bzff9wcnn/cnV+
-/3V3ff9vcXb/a254/3Byef9ucHf/cHN9/25wd/9ucHf/c3V8/2psc/93eX//cHJ5/3d5f/9vcXX/cHJ5
-/3l7gf9sb3n/b3F1/2dqcf97fYP/bG95/3Bzff9sb3n/bnB3/3Byef9ucXv/fn+D/3V3ff9wcnn/am13
-/2xudf9+f4P/amxz/3Byef9sb3n/dXd9/25wd/9ucXv/c3Z//2xvef95e4H/Zmhu/25wd/9sb3n/am13
-/2ptd/9qbHP/am13/2xudf9qbHP/bG51/2Zpc/9maXP/Z2px/2dqcf9kZ3H/am13/2Zpc/9iZW7/Z2p0
-/2xvef9sb3n/ZGdx/2Zobv9iZW7/Z2p0/2BjbP9kZ3H/XWBq/2Rncf9kZ3H/am13/2Rncf9sb3n/YmVu
-/2dqdP9qbXf/Zmhu/11gav9qbHP/Z2p0/2ptd/9zdXz/bnF7/3l8hv9qbXf/Z2p0/3V3ff9ucHf/c3V8
-/3Byef9wcnn/b3F1/25xe/9wc33/cHJ5/3l7gf9zdXz/dXiB/3V4gf95fIb/c3V8/3Byef9ucXv/eXuB
-/3d6g/9zdn//c3Z//3Bzff95e4H/c3V8/25xe/9ucHf/cHN9/3Bzff9zdn//bG95/2xvef9wcnn/cHN9
-/2xvef9ucXv/bnF7/3Byef9ucHf/bnB3/3l7gf9zdn//bnB3/2xvef9ucHf/cHN9/3d6g/93eX//dXd9
-/2xudf9wcnn/bG51/2psc/9zdXz/eHl9/3V3ff91eIH/bnB3/3Byef9wcnn/dnh8/2xvef9wc33/d3qD
-/3N2f/9zdn//c3V8/25wd/9ucHf/c3V8/3h5ff9/gYf/bnB3/3Z4fP9wcnn/d3l//25wd/93eoP/eXuB
-/25wd/9wcnn/bG51/25wd/9qbHP/am13/2ptd/95fIb/Zmlz/25xe/9qbHP/ZGdx/25xe/9sb3n/bnF7
-/2psc/9qbXf/dXd9/2xudf9qbHP/cHN9/3Bzff9sbnX/Zmlz/3Bzff9nanH/Z2p0/2psc/9nanT/bG51
-/2ptd/9maXP/bG95/2xudf9sb3n/bG54/2Vocv9nanT/Z2px/25xe/9rbXX/a252/2tudv9vcXj/dHZ8
-/2ptd/9qbXf/Z2px/3Byef9zdXz/bXB4/25xev9nanT/amxz/2Zobv9qbHP/Z2p0/2psc/9nanT/am13
-/2BjbP9nanT/dXd9/2Jlbv9sbnX/bG95/2ptd/9sbnX/YmVu/2ptd/9sb3n/bnF7/2xudf93eX//bnF7
-/2ptd/9wcnn/bnB3/2Rncf9ucXv/bG95/2ptd/9pbHT/cHJ7/29ye/9tb3f/c3V8/25wd/9wc33/a210
-/2tueP9ucXv/a211/21vc/9ucHf/bW9z/29xdf9sb3n/cHJ5/3N1fP9qbXf/d3l//25wd/91eIH/bnF7
-/3Byef93eoP/am13/2xudf9iZW7/dXiB/2ptd/9ucXv/Zmlz/2psc/9qbXf/am13/3t9g/9zdXz/am13
-/2xudf9qbHP/dXiB/2BjbP9maXP/ZGdx/2dqdP9maXP/Z2px/2xvef9kZ3H/c3V8/2BjbP9maXP/Z2p0
-/2psc/9maXP/amxz/2xvef9sbnX/amxz/2xudf9maXP/Z2p0/2psc/9qbXf/Zmlz/3Bzff9ucXv/Zmlz
-/2ptd/9wc33/dXd9/2xvef9sb3n/bW9z/3V3ff9ucHf/bnB3/2Zpc/9ucHf/bW9z/3N1fP9tb3P/dnh8
-/25wd/94eX3/eHl9/2xudf9nanH/bG95/25xe/9ucXv/c3V8/3Byef9+gIb/cHN9/3N1fP95e4H/c3V8
-/25xe/9ucXv/bG51/2xudf9zdXz/c3V8/29xdf9zdXz/bnB3/3N1fP9wcnn/dXd9/29xdf9sbnX/bG95
-/3Z4fP92eHz/c3V8/3Bzff9wc33/eHl9/29xdf9wc33/amxz/25wd/9sb3n/cHN9/2Rncf9nanT/Z2p0
-/2ptd/9qbXf/bnB3/3Byef9wcnn/bG51/2xudf91d33/dnh8/2psc/9ucXv/bnB3/3Bzff93eX//d3l/
-/3N1fP9tb3P/c3V8/21vc/9sbnX/c3Z//3d6g/91eIH/eXuB/25xe/9zdn//dXiB/3t9g/9wcnn/dXiB
-/3l7gf93eoP/d3qD/3d6g/9wc33/cHN9/25xe/91eIH/gYOK/2xvef91d33/cHN9/3l7gf9ucXv/e36H
-/3l7gf9zdXz/c3Z//2xvef91eIH/cHJ5/3d6g/91eIH/f4GH/3Byef93eoP/cHN9/2xvef91eIH/c3Z/
-/3V4gf9zdXz/c3V8/3l8hv91eIH/c3Z//3t9g/95e4H/c3Z//3N1fP93eoP/bnB3/25xe/9sb3n/cHN9
-/2xvef9ucXv/am13/3Byef9ucHf/cHJ5/3J0ev9tb3b/bG95/25wd/9wc33/bXB6/3Fze/9ucHf/b3F6
-/25wev9sbnX/bG51/2dqcf91d33/cnV+/29yfP9rbnj/a210/2ptd/9sbnX/bG51/2xudf9wcnn/c3V8
-/3Byef9kZmz/bnB3/3V3ff9kZ3H/am13/2xvef9nanT/bG51/2Jlbv9qbXf/am13/2xvef9sbnX/dXd9
-/2xvef9sbnX/c3V8/2xudf9maG7/cHJ5/3Byef9sb3n/a253/3N1fv9xdH7/bG95/3N1fP9zdXz/c3V8
-/25wdP9vcXj/dHZ8/21veP9wcnn/cHN9/29xdf9ucHf/bW9z/3Byef9wcnn/amxz/3V3ff9qbXf/dXd9
-/2psc/9sbnX/c3V8/2Jlbv9ucHf/Z2px/3l7gf9ucHf/bnB3/25wd/9ucHf/cHJ5/29xdf9+gIb/dXd9
-/25wd/9sbnX/bW9z/35/g/9qbHP/bG51/25wd/9ucXv/bG51/2psc/9ucXv/Z2p0/3d5f/9kZ3H/bG51
... etc. - the rest is truncated
More information about the Libreoffice-commits
mailing list