Command interpreter works, notification center can now call segua for view transition

This commit is contained in:
siqi
2013-06-09 11:44:30 +02:00
parent 52a377585c
commit 28faf7e3a9
12 changed files with 244 additions and 97 deletions

View File

@@ -7,6 +7,8 @@
objects = {
/* Begin PBXBuildFile section */
57B152991764703500EECC67 /* Base64.m in Sources */ = {isa = PBXBuildFile; fileRef = 57B152981764703500EECC67 /* Base64.m */; };
57B1529C1764714900EECC67 /* slideShowViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 57B1529B1764714900EECC67 /* slideShowViewController.m */; };
57B7625D17621E42007703F6 /* SlideShow.m in Sources */ = {isa = PBXBuildFile; fileRef = 57B7625C17621E42007703F6 /* SlideShow.m */; };
57C6E3F3175E06E800E8BC5F /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 57C6E3F2175E06E800E8BC5F /* UIKit.framework */; };
57C6E3F5175E06E800E8BC5F /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 57C6E3F4175E06E800E8BC5F /* Foundation.framework */; };
@@ -27,10 +29,12 @@
/* End PBXBuildFile section */
/* Begin PBXFileReference section */
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>"; };
57B1529A1764714900EECC67 /* slideShowViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = slideShowViewController.h; sourceTree = "<group>"; };
57B1529B1764714900EECC67 /* slideShowViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = slideShowViewController.m; sourceTree = "<group>"; };
57B7625B17621E42007703F6 /* SlideShow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SlideShow.h; sourceTree = "<group>"; };
57B7625C17621E42007703F6 /* SlideShow.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SlideShow.m; sourceTree = "<group>"; };
57B7625E1762368F007703F6 /* Base64.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Base64.h; path = ../Base64.h; sourceTree = "<group>"; };
57B7625F1762368F007703F6 /* Base64.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = Base64.m; path = ../Base64.m; sourceTree = "<group>"; };
57C6E3EF175E06E800E8BC5F /* iosremote.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = iosremote.app; sourceTree = BUILT_PRODUCTS_DIR; };
57C6E3F2175E06E800E8BC5F /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
57C6E3F4175E06E800E8BC5F /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
@@ -75,6 +79,8 @@
57C6E3E6175E06E800E8BC5F = {
isa = PBXGroup;
children = (
57B152971764703500EECC67 /* Base64.h */,
57B152981764703500EECC67 /* Base64.m */,
57C6E425175E076900E8BC5F /* Communication */,
57C6E3F8175E06E800E8BC5F /* iosremote */,
57C6E3F1175E06E800E8BC5F /* Frameworks */,
@@ -110,6 +116,8 @@
57C6E410175E06E800E8BC5F /* libreoffice_sdremoteViewController.h */,
57C6E411175E06E800E8BC5F /* libreoffice_sdremoteViewController.m */,
57C6E3F9175E06E800E8BC5F /* Supporting Files */,
57B1529A1764714900EECC67 /* slideShowViewController.h */,
57B1529B1764714900EECC67 /* slideShowViewController.m */,
);
path = iosremote;
sourceTree = "<group>";
@@ -131,8 +139,6 @@
57C6E425175E076900E8BC5F /* Communication */ = {
isa = PBXGroup;
children = (
57B7625E1762368F007703F6 /* Base64.h */,
57B7625F1762368F007703F6 /* Base64.m */,
57C6E426175E076900E8BC5F /* Client.h */,
57C6E427175E076900E8BC5F /* Client.m */,
57C6E428175E076900E8BC5F /* CommunicationManager.h */,
@@ -224,6 +230,8 @@
57C6E430175E076900E8BC5F /* CommandInterpreter.m in Sources */,
57C6E431175E076900E8BC5F /* Server.m in Sources */,
57B7625D17621E42007703F6 /* SlideShow.m in Sources */,
57B152991764703500EECC67 /* Base64.m in Sources */,
57B1529C1764714900EECC67 /* slideShowViewController.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};

View File

@@ -46,8 +46,8 @@ static char decodingTable[128];
output[index + 3] = (i + 2) < length ? encodingTable[(value >> 0) & 0x3F] : '=';
}
return [[[NSString alloc] initWithData:data
encoding:NSASCIIStringEncoding] autorelease];
return [[NSString alloc] initWithData:data
encoding:NSASCIIStringEncoding];
}

View File

@@ -13,9 +13,9 @@
@interface Client : NSObject
@property BOOL mReady;
@property (nonatomic, strong) NSNumber* mPin;
@property (nonatomic, strong) NSString* mName;
@property BOOL ready;
@property (nonatomic, strong) NSNumber* pin;
@property (nonatomic, strong) NSString* name;
-(void) connect;

View File

@@ -12,16 +12,18 @@
#import "CommandInterpreter.h"
#import "CommunicationManager.h"
#define CHARSET @"UTF-8"
@interface Client() <NSStreamDelegate>
@property (nonatomic, strong) NSInputStream* mInputStream;
@property (nonatomic, strong) NSOutputStream* mOutputStream;
@property (nonatomic, strong) NSInputStream* inputStream;
@property (nonatomic, strong) NSOutputStream* outputStream;
@property uint mPort;
@property (nonatomic, weak) Server* mServer;
@property (nonatomic, weak) CommandInterpreter* mReceiver;
@property (nonatomic, weak) CommunicationManager* mComManager;
@property (nonatomic, weak) Server* server;
@property (nonatomic, weak) CommandInterpreter* receiver;
@property (nonatomic, weak) CommunicationManager* comManager;
@end
@@ -29,15 +31,14 @@
@implementation Client
@synthesize mInputStream = _mInputStream;
@synthesize mOutputStream = _mOutputStream;
@synthesize mPin = _mPin;
@synthesize mName = _mName;
@synthesize mServer = _mServer;
@synthesize mComManager = _mComManager;
@synthesize mReady = _mReady;
NSString * const CHARSET = @"UTF-8";
@synthesize inputStream = _mInputStream;
@synthesize outputStream = _mOutputStream;
@synthesize pin = _mPin;
@synthesize name = _mName;
@synthesize server = _mServer;
@synthesize comManager = _mComManager;
@synthesize ready = _mReady;
@synthesize receiver = _receiver;
- (id) initWithServer:(Server*)server
managedBy:(CommunicationManager*)manager
@@ -46,12 +47,12 @@ NSString * const CHARSET = @"UTF-8";
self = [self init];
if (self)
{
self.mReady = NO;
self.mName = [[UIDevice currentDevice] name];
self.mPin = [NSNumber numberWithInteger:[self getPin]];
self.mServer = server;
self.mComManager = manager;
self.mReceiver = receiver;
self.ready = NO;
self.name = [[UIDevice currentDevice] name];
self.pin = [NSNumber numberWithInteger:[self getPin]];
self.server = server;
self.comManager = manager;
self.receiver = receiver;
self.mPort = 1599;
}
return self;
@@ -64,12 +65,12 @@ NSString * const CHARSET = @"UTF-8";
if(!userDefaluts)
NSLog(@"userDefaults nil");
NSInteger newPin = [userDefaluts integerForKey:self.mName];
NSInteger newPin = [userDefaluts integerForKey:self.name];
// If not, generate one.
if (!newPin) {
newPin = arc4random() % 9999;
[userDefaluts setInteger:newPin forKey:self.mName];
[userDefaluts setInteger:newPin forKey:self.name];
}
return newPin;
@@ -88,20 +89,20 @@ NSString * const CHARSET = @"UTF-8";
CFWriteStreamSetProperty(writeStream, kCFStreamPropertyShouldCloseNativeSocket, kCFBooleanTrue);
//Setup mInputStream
self.mInputStream = (__bridge NSInputStream *)readStream;
[self.mInputStream setDelegate:self];
[self.mInputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
[self.mInputStream open];
self.inputStream = (__bridge NSInputStream *)readStream;
[self.inputStream setDelegate:self];
[self.inputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
[self.inputStream open];
//Setup outputstream
self.mOutputStream = (__bridge NSOutputStream *)writeStream;
[self.mOutputStream setDelegate:self];
[self.mOutputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
[self.mOutputStream open];
self.outputStream = (__bridge NSOutputStream *)writeStream;
[self.outputStream setDelegate:self];
[self.outputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
[self.outputStream open];
// NSLog(@"Stream opened %@ %@", @"iPad", self.mPin);
NSArray *temp = [[NSArray alloc]initWithObjects:@"LO_SERVER_CLIENT_PAIR\n", self.mName, @"\n", self.mPin, @"\n\n", nil];
NSArray *temp = [[NSArray alloc]initWithObjects:@"LO_SERVER_CLIENT_PAIR\n", self.name, @"\n", self.pin, @"\n\n", nil];
NSString *command = [temp componentsJoinedByString:@""];
@@ -115,7 +116,7 @@ NSString * const CHARSET = @"UTF-8";
// UTF-8 as speficied in specification
NSData * data = [aCommand dataUsingEncoding:NSUTF8StringEncoding];
[self.mOutputStream write:(uint8_t *)[data bytes] maxLength:[data length]];
[self.outputStream write:(uint8_t *)[data bytes] maxLength:[data length]];
}
- (void)stream:(NSStream *)stream handleEvent:(NSStreamEvent)eventCode {
@@ -123,7 +124,7 @@ NSString * const CHARSET = @"UTF-8";
switch(eventCode) {
case NSStreamEventOpenCompleted:
NSLog(@"Connection established");
self.mReady = YES;
self.ready = YES;
break;
case NSStreamEventErrorOccurred:
NSLog(@"Connection error occured");
@@ -133,25 +134,30 @@ NSString * const CHARSET = @"UTF-8";
NSMutableData* data;
NSLog(@"NSStreamEventHasBytesAvailable");
if(!data) {
data = [NSMutableData data];
data = [[NSMutableData alloc] init];
}
uint8_t buf[1024];
unsigned int len = 0;
len = [(NSInputStream *)stream read:buf maxLength:1024];
if(len) {
NSString *str;
while (true) {
len = [(NSInputStream *)stream read:buf maxLength:1024];
[data appendBytes:(const void *)buf length:len];
int bytesRead = 0;
// bytesRead is an instance variable of type NSNumber.
bytesRead += len;
} else {
NSLog(@"No data but received event for whatever reasons!");
if (len < 1024) {
// Potentially the end of a command
str = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
if ([str hasSuffix:@"\n\n"]) {
// Finished current command
break;
}
}
}
NSString *str = [[NSString alloc] initWithData:data
encoding:NSUTF8StringEncoding];
NSLog(@"Data Received: %@", str);
NSArray *commands = [str componentsSeparatedByString:@"\n"];
// NSLog(@"Data Received: %@", commands);
[self.receiver parse:commands];
data = nil;
str = nil;
} break;
default:
{
@@ -164,7 +170,7 @@ NSString * const CHARSET = @"UTF-8";
- (void) connect
{
[self streamOpenWithIp:self.mServer.serverAddress withPortNumber:self.mPort];
[self streamOpenWithIp:self.server.serverAddress withPortNumber:self.mPort];
}

View File

@@ -12,7 +12,7 @@
@interface CommandInterpreter : NSObject
@property (nonatomic, strong) SlideShow* mSlideShow;
@property (nonatomic, strong) SlideShow* slideShow;
- (void) parse:(NSArray *)cmd;

View File

@@ -18,10 +18,16 @@
@implementation CommandInterpreter
@synthesize mSlideShow = _mSlideShow;
@synthesize slideShow = _slideShow;
- (SlideShow*) slideshow{
if (!self.slideShow)
self.slideShow = [[SlideShow alloc] init];
return self.slideShow;
}
- (BOOL) isSlideRunning {
return [self.mSlideShow size] > 0;
return [self.slideShow size] > 0;
}
// Received a set of instructions from server.
@@ -32,45 +38,50 @@
NSString *instruction = [command objectAtIndex:0];
if([instruction isEqualToString:@"slideshow_started"]){
unsigned int slideLength = [[command objectAtIndex:1] unsignedIntValue];
unsigned int currentSlide = [[command objectAtIndex:2] unsignedIntValue];
NSLog(@"Interpreter: slideshow_started");
uint slideLength = [[command objectAtIndex:1] integerValue];
uint currentSlide = [[command objectAtIndex:2] integerValue];
NSLog(@"Interpreter: with slideLength %u, currentSlide %u", slideLength, currentSlide);
self.slideShow = [[SlideShow alloc] init];
[self.mSlideShow setLength:slideLength];
[self.mSlideShow setCurrentSlide:currentSlide];
[self.slideShow setSize:slideLength];
[self.slideShow setCurrentSlide:currentSlide];
[[NSNotificationCenter defaultCenter] postNotificationName:STATUS_CONNECTED_NOSLIDESHOW
[[NSNotificationCenter defaultCenter] postNotificationName:STATUS_CONNECTED_SLIDESHOW_RUNNING
object:nil];
[[NSNotificationCenter defaultCenter] postNotificationName:MSG_SLIDE_CHANGED object:self.mSlideShow.mCurrentSlide];
[[NSNotificationCenter defaultCenter] postNotificationName:MSG_SLIDE_CHANGED object:[NSNumber numberWithUnsignedInt:currentSlide]];
} else if ([instruction isEqualToString:@"slideshow_finished"]){
self.mSlideShow = [SlideShow init];
NSLog(@"Interpreter: slideshow_started");
self.slideShow = [[SlideShow alloc] init];
[[NSNotificationCenter defaultCenter] postNotificationName:STATUS_CONNECTED_NOSLIDESHOW object:nil];
} else {
if (self.mSlideShow == nil)
if (self.slideShow == nil)
return;
if ([instruction isEqualToString:@"slide_updated"]) {
unsigned int newSlideNumber = [[command objectAtIndex:1] unsignedIntValue];
[self.mSlideShow setCurrentSlide:newSlideNumber];
NSLog(@"Interpreter: slide_updated");
uint newSlideNumber = [[command objectAtIndex:1] integerValue];
[self.slideShow setCurrentSlide:newSlideNumber];
[[NSNotificationCenter defaultCenter] postNotificationName:MSG_SLIDE_CHANGED object:nil];
} else if ([instruction isEqualToString:@"slide_preview"]){
unsigned int slideNumber = [[command objectAtIndex:1] unsignedIntValue];
NSLog(@"Interpreter: slide_preview");
uint slideNumber = [[command objectAtIndex:1] integerValue];
NSString * imageData = [command objectAtIndex:2];
[Base64 initialize];
NSData* data = [Base64 decode:imageData];
UIImage* img = [UIImage imageWithData:data];
[self.mSlideShow putImage:img
[self.slideShow putImage:imageData
AtIndex:slideNumber];
[[NSNotificationCenter defaultCenter] postNotificationName:MSG_SLIDE_PREVIEW object:[NSNumber numberWithUnsignedInt:slideNumber]];
} else if ([instruction isEqualToString:@"slide_notes"]){
unsigned int slideNumber = [[command objectAtIndex:1] unsignedIntValue];
NSLog(@"Interpreter: slide_notes");
uint slideNumber = [[command objectAtIndex:1] integerValue];
NSString *notes;
for (int i = 2; i<command.count; ++i) {
[notes stringByAppendingString:[command objectAtIndex:i]];
}
[self.mSlideShow putNotes:notes
[self.slideShow putNotes:notes
AtIndex:slideNumber];
[[NSNotificationCenter defaultCenter] postNotificationName:MSG_SLIDE_NOTES object: [NSNumber numberWithUnsignedInt:slideNumber]];
}

View File

@@ -1,20 +1,20 @@
// -*- Mode: ObjC; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
//
// SlideShow.h
// iosremote
//
// Created by Liu Siqi on 6/7/13.
// Copyright (c) 2013 libreoffice. All rights reserved.
// 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 <Foundation/Foundation.h>
@interface SlideShow : NSObject
@property (nonatomic, strong) NSArray* mSlides;
@property (nonatomic, strong) NSNumber* mCurrentSlide;
@property uint size;
@property uint currentSlide;
- (NSUInteger) size;
- (void) setCurrentSlide:(NSUInteger)number;
- (void) setLength:(NSUInteger)number;
- (void) putImage: (NSString *)img AtIndex: (uint) index;
- (void) putNotes: (NSString *)notes AtIndex: (uint) index;
@end

View File

@@ -1,20 +1,44 @@
// -*- Mode: ObjC; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
//
// SlideShow.m
// iosremote
//
// Created by Liu Siqi on 6/7/13.
// Copyright (c) 2013 libreoffice. All rights reserved.
// 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 "SlideShow.h"
#import "Base64.h"
@interface SlideShow()
@property (nonatomic, strong) NSMutableArray* imagesArray;
@property (nonatomic, strong) NSMutableArray* notesArray;
@end
@implementation SlideShow
@synthesize mSlides = _mSlides;
@synthesize mCurrentSlide = _mCurrentSlide;
@synthesize size = _size;
@synthesize currentSlide = _currentSlide;
- (NSUInteger) size{
return self.mSlides.count;
- (SlideShow *) init{
self = [super init];
_size = 0;
_currentSlide = 0;
return self;
}
- (void) putImage: (NSString *)img AtIndex: (uint) index{
[Base64 initialize];
NSData* data = [Base64 decode:img];
UIImage* image = [UIImage imageWithData:data];
[self.imagesArray insertObject:image atIndex:index];
}
- (void) putNotes: (NSString *)notes AtIndex: (uint) index{
[self.notesArray insertObject:notes atIndex:index];
}
@end

View File

@@ -12,7 +12,7 @@
<rect key="frame" x="0.0" y="64" width="768" height="960"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" text="172.25.19.11" borderStyle="roundedRect" minimumFontSize="17" id="9w1-Ym-HcF">
<textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" text="192.168.1.97" borderStyle="roundedRect" minimumFontSize="17" id="9w1-Ym-HcF">
<rect key="frame" x="234" y="402" width="301" height="30"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" type="system" pointSize="14"/>
@@ -38,6 +38,7 @@
<connections>
<outlet property="ipAddressTextEdit" destination="9w1-Ym-HcF" id="hab-JH-3Lf"/>
<outlet property="pinLabel" destination="Cg3-f5-zuM" id="HaU-jr-8oJ"/>
<segue destination="zdX-BL-bmY" kind="push" identifier="slidesPreview" id="9Yb-di-Q6v"/>
</connections>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="3" sceneMemberID="firstResponder"/>
@@ -62,6 +63,31 @@
</objects>
<point key="canvasLocation" x="721" y="-301"/>
</scene>
<!--Slide Show View Controller-->
<scene sceneID="wDH-NE-E5t">
<objects>
<viewController id="zdX-BL-bmY" customClass="slideShowViewController" sceneMemberID="viewController">
<view key="view" contentMode="scaleToFill" id="Tkv-NW-1bl">
<rect key="frame" x="0.0" y="64" width="768" height="960"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<subviews>
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" id="T6z-xu-j8h">
<rect key="frame" x="0.0" y="0.0" width="768" height="960"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
</imageView>
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
</view>
<navigationItem key="navigationItem" id="uc0-p3-wnG"/>
<connections>
<outlet property="image" destination="T6z-xu-j8h" id="o1L-LM-TbP"/>
<outlet property="view" destination="T6z-xu-j8h" id="YKN-ib-gU3"/>
</connections>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="Dqn-Ae-ABD" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="2616" y="-293"/>
</scene>
</scenes>
<simulatedMetricsContainer key="defaultSimulatedMetrics">
<simulatedStatusBarMetrics key="statusBar" statusBarStyle="blackTranslucent"/>

View File

@@ -16,6 +16,9 @@
// For debug use, will use a manager to manage server and client instead
@property (nonatomic, strong) Server* server;
@property (nonatomic, strong) Client* client;
@property (nonatomic, strong) CommandInterpreter * interpreter;
@property (nonatomic, weak) NSNotificationCenter* center;
@property (nonatomic, strong) id slideShowPreviewStartObserver;
@end
@@ -23,11 +26,22 @@
@synthesize server = _server;
@synthesize client = _client;
@synthesize center = _center;
@synthesize interpreter = _interpreter;
@synthesize slideShowPreviewStartObserver = _slideShowPreviewStartObserver;
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
self.center = [NSNotificationCenter defaultCenter];
NSOperationQueue *mainQueue = [NSOperationQueue mainQueue];
self.slideShowPreviewStartObserver = [self.center addObserverForName:STATUS_CONNECTED_SLIDESHOW_RUNNING object:nil
queue:mainQueue usingBlock:^(NSNotification *note) {
NSLog(@"Received performSegue!");
[self performSegueWithIdentifier:@"slidesPreview" sender:self];
}];
}
- (void)didReceiveMemoryWarning
@@ -39,13 +53,14 @@
- (IBAction)connectToServer:(id)sender {
NSString * address = [self.ipAddressTextEdit text];
self.interpreter = [[CommandInterpreter alloc] init];
self.server = [[Server alloc] initWithProtocol:NETWORK atAddress:address ofName:@"Server"];
self.client = [[Client alloc] initWithServer:self.server managedBy:nil interpretedBy:nil];
self.client = [[Client alloc] initWithServer:self.server managedBy:nil interpretedBy:self.interpreter];
[self.client connect];
if([self.client mReady])
if([self.client ready])
{
[self.pinLabel setText:[NSString stringWithFormat:@"%@", self.client.mPin]];
[self.pinLabel setText:[NSString stringWithFormat:@"%@", self.client.pin]];
}
}

View File

@@ -0,0 +1,15 @@
//
// slideShowViewController.h
// iosremote
//
// Created by Liu Siqi on 6/9/13.
// Copyright (c) 2013 libreoffice. All rights reserved.
//
#import <UIKit/UIKit.h>
@interface slideShowViewController : UIViewController
@property (weak, nonatomic) IBOutlet UIImageView *image;
@end

View File

@@ -0,0 +1,42 @@
//
// slideShowViewController.m
// iosremote
//
// Created by Liu Siqi on 6/9/13.
// Copyright (c) 2013 libreoffice. All rights reserved.
//
#import "slideShowViewController.h"
@interface slideShowViewController ()
@end
@implementation slideShowViewController
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (void)viewDidUnload {
[self setImage:nil];
[super viewDidUnload];
}
@end