[Libreoffice-commits] core.git: ios/iosremote

siqi me at siqi.fr
Fri Jul 5 00:59:30 PDT 2013


 dev/null                                                                                                         |binary
 ios/iosremote/iosremote.xcodeproj/project.pbxproj                                                                |  398 ++++++++++
 ios/iosremote/iosremote.xcodeproj/project.xcworkspace/contents.xcworkspacedata                                   |    7 
 ios/iosremote/iosremote.xcodeproj/project.xcworkspace/xcuserdata/siqi.xcuserdatad/UserInterfaceState.xcuserstate |binary
 ios/iosremote/iosremote.xcodeproj/project.xcworkspace/xcuserdata/siqi.xcuserdatad/WorkspaceSettings.xcsettings   |   22 
 ios/iosremote/iosremote.xcodeproj/xcuserdata/siqi.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist                  |   20 
 ios/iosremote/iosremote.xcodeproj/xcuserdata/siqi.xcuserdatad/xcschemes/iosremote.xcscheme                       |   86 ++
 ios/iosremote/iosremote.xcodeproj/xcuserdata/siqi.xcuserdatad/xcschemes/xcschememanagement.plist                 |   22 
 ios/iosremote/iosremote/Base64.h                                                                                 |   16 
 ios/iosremote/iosremote/Base64.m                                                                                 |   23 
 ios/iosremote/iosremote/Communication/.DS_Store                                                                  |binary
 ios/iosremote/iosremote/Communication/Client.h                                                                   |   33 
 ios/iosremote/iosremote/Communication/Client.m                                                                   |  233 +++++
 ios/iosremote/iosremote/Communication/CommandInterpreter.h                                                       |   20 
 ios/iosremote/iosremote/Communication/CommandInterpreter.m                                                       |   91 ++
 ios/iosremote/iosremote/Communication/CommandTransmitter.h                                                       |   30 
 ios/iosremote/iosremote/Communication/CommandTransmitter.m                                                       |   88 ++
 ios/iosremote/iosremote/Communication/CommunicationManager.h                                                     |   71 +
 ios/iosremote/iosremote/Communication/CommunicationManager.m                                                     |  167 ++++
 ios/iosremote/iosremote/Communication/Server.h                                                                   |   29 
 ios/iosremote/iosremote/Communication/Server.m                                                                   |   75 +
 ios/iosremote/iosremote/Communication/SlideShow.h                                                                |   26 
 ios/iosremote/iosremote/Communication/SlideShow.m                                                                |  114 ++
 ios/iosremote/iosremote/Communication/pinValidation_vc.h                                                         |   16 
 ios/iosremote/iosremote/Communication/pinValidation_vc.m                                                         |   70 +
 ios/iosremote/iosremote/Default-568h at 2x.png                                                                      |binary
 ios/iosremote/iosremote/Default.png                                                                              |binary
 ios/iosremote/iosremote/Default at 2x.png                                                                           |binary
 ios/iosremote/iosremote/EditableTableViewCell.h                                                                  |   14 
 ios/iosremote/iosremote/EditableTableViewCell.m                                                                  |   54 +
 ios/iosremote/iosremote/en.lproj/InfoPlist.strings                                                               |    2 
 ios/iosremote/iosremote/en.lproj/MainStoryboard_iPhone.storyboard                                                |  357 ++++++++
 ios/iosremote/iosremote/iosremote-Info.plist                                                                     |   47 +
 ios/iosremote/iosremote/libreoffice_sdremoteAppDelegate.h                                                        |   15 
 ios/iosremote/iosremote/libreoffice_sdremoteAppDelegate.m                                                        |   46 +
 ios/iosremote/iosremote/libreoffice_sdremoteViewController.h                                                     |   19 
 ios/iosremote/iosremote/libreoffice_sdremoteViewController.m                                                     |   85 ++
 ios/iosremote/iosremote/main.m                                                                                   |   18 
 ios/iosremote/iosremote/newServer_vc.h                                                                           |   38 
 ios/iosremote/iosremote/newServer_vc.m                                                                           |  291 +++++++
 ios/iosremote/iosremote/serverList_vc.h                                                                          |   17 
 ios/iosremote/iosremote/serverList_vc.m                                                                          |  137 +++
 ios/iosremote/iosremote/slideShowPreviewTable_vc.h                                                               |   13 
 ios/iosremote/iosremote/slideShowPreviewTable_vc.m                                                               |  168 ++++
 ios/iosremote/iosremote/slideShowPreview_vc.h                                                                    |   19 
 ios/iosremote/iosremote/slideShowPreview_vc.m                                                                    |   69 +
 ios/iosremote/iosremote/slideShowViewController.h                                                                |   22 
 ios/iosremote/iosremote/slideShowViewController.m                                                                |   82 ++
 48 files changed, 3170 insertions(+)

New commits:
commit 0279563fbe3c686d5c72eecd06544f3c7a43327a
Author: siqi <me at siqi.fr>
Date:   Fri Jul 5 09:59:02 2013 +0200

    update
    
    Change-Id: Id753e678cef74a54c02ed2d0042d7654117f6844

diff --git a/ios/iosremote/iosremote.xcodeproj/project.pbxproj b/ios/iosremote/iosremote.xcodeproj/project.pbxproj
new file mode 100644
index 0000000..646c330
--- /dev/null
+++ b/ios/iosremote/iosremote.xcodeproj/project.pbxproj
@@ -0,0 +1,398 @@
+// !$*UTF8*$!
+{
+	archiveVersion = 1;
+	classes = {
+	};
+	objectVersion = 46;
+	objects = {
+
+/* Begin PBXBuildFile section */
+		5753DD901781EA0300DB71BB /* serverList_vc.m in Sources */ = {isa = PBXBuildFile; fileRef = 5753DD8F1781EA0300DB71BB /* serverList_vc.m */; };
+		5753DD9917834D7100DB71BB /* newServer_vc.m in Sources */ = {isa = PBXBuildFile; fileRef = 5753DD9817834D7100DB71BB /* newServer_vc.m */; };
+		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 */; };
+		57C6E3F3175E06E800E8BC5F /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 57C6E3F2175E06E800E8BC5F /* UIKit.framework */; };
+		57C6E3F5175E06E800E8BC5F /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 57C6E3F4175E06E800E8BC5F /* Foundation.framework */; };
+		57C6E3F7175E06E800E8BC5F /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 57C6E3F6175E06E800E8BC5F /* CoreGraphics.framework */; };
+		57C6E3FD175E06E800E8BC5F /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 57C6E3FB175E06E800E8BC5F /* InfoPlist.strings */; };
+		57C6E3FF175E06E800E8BC5F /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 57C6E3FE175E06E800E8BC5F /* main.m */; };
+		57C6E403175E06E800E8BC5F /* libreoffice_sdremoteAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 57C6E402175E06E800E8BC5F /* libreoffice_sdremoteAppDelegate.m */; };
+		57C6E405175E06E800E8BC5F /* Default.png in Resources */ = {isa = PBXBuildFile; fileRef = 57C6E404175E06E800E8BC5F /* Default.png */; };
+		57C6E407175E06E800E8BC5F /* Default at 2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 57C6E406175E06E800E8BC5F /* Default at 2x.png */; };
+		57C6E409175E06E800E8BC5F /* Default-568h at 2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 57C6E408175E06E800E8BC5F /* Default-568h at 2x.png */; };
+		57C6E40C175E06E800E8BC5F /* MainStoryboard_iPhone.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 57C6E40A175E06E800E8BC5F /* MainStoryboard_iPhone.storyboard */; };
+		57C6E42E175E076900E8BC5F /* Client.m in Sources */ = {isa = PBXBuildFile; fileRef = 57C6E427175E076900E8BC5F /* Client.m */; };
+		57C6E42F175E076900E8BC5F /* CommunicationManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 57C6E429175E076900E8BC5F /* CommunicationManager.m */; };
+		57C6E430175E076900E8BC5F /* CommandInterpreter.m in Sources */ = {isa = PBXBuildFile; fileRef = 57C6E42B175E076900E8BC5F /* CommandInterpreter.m */; };
+		57C6E431175E076900E8BC5F /* Server.m in Sources */ = {isa = PBXBuildFile; fileRef = 57C6E42D175E076900E8BC5F /* Server.m */; };
+		57CFED9917838FDC00E82E05 /* EditableTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 57CFED9817838FDC00E82E05 /* EditableTableViewCell.m */; };
+		57FE71E31785C61400B50125 /* pinValidation_vc.m in Sources */ = {isa = PBXBuildFile; fileRef = 57FE71E21785C61400B50125 /* pinValidation_vc.m */; };
+		57FE71E61785D7FE00B50125 /* slideShowPreview_vc.m in Sources */ = {isa = PBXBuildFile; fileRef = 57FE71E51785D7FE00B50125 /* slideShowPreview_vc.m */; };
+		57FE71E917861A9000B50125 /* slideShowPreviewTable_vc.m in Sources */ = {isa = PBXBuildFile; fileRef = 57FE71E817861A9000B50125 /* slideShowPreviewTable_vc.m */; };
+		BE9EBD071765BF0800283FD2 /* CoreImage.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BE9EBD061765BF0800283FD2 /* CoreImage.framework */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXFileReference section */
+		5753DD8E1781EA0300DB71BB /* serverList_vc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = serverList_vc.h; sourceTree = "<group>"; };
+		5753DD8F1781EA0300DB71BB /* serverList_vc.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = serverList_vc.m; sourceTree = "<group>"; };
+		5753DD9717834D7100DB71BB /* newServer_vc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = newServer_vc.h; sourceTree = "<group>"; };
+		5753DD9817834D7100DB71BB /* newServer_vc.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = newServer_vc.m; 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>"; };
+		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>"; };
+		57B7625C17621E42007703F6 /* SlideShow.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SlideShow.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; };
+		57C6E3F6175E06E800E8BC5F /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; };
+		57C6E3FA175E06E800E8BC5F /* iosremote-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "iosremote-Info.plist"; sourceTree = "<group>"; };
+		57C6E3FC175E06E800E8BC5F /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
+		57C6E3FE175E06E800E8BC5F /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
+		57C6E400175E06E800E8BC5F /* iosremote-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "iosremote-Prefix.pch"; sourceTree = "<group>"; };
+		57C6E401175E06E800E8BC5F /* libreoffice_sdremoteAppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libreoffice_sdremoteAppDelegate.h; sourceTree = "<group>"; };
+		57C6E402175E06E800E8BC5F /* libreoffice_sdremoteAppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = libreoffice_sdremoteAppDelegate.m; sourceTree = "<group>"; };
+		57C6E404175E06E800E8BC5F /* Default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Default.png; sourceTree = "<group>"; };
+		57C6E406175E06E800E8BC5F /* Default at 2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default at 2x.png"; sourceTree = "<group>"; };
+		57C6E408175E06E800E8BC5F /* Default-568h at 2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default-568h at 2x.png"; sourceTree = "<group>"; };
+		57C6E40B175E06E800E8BC5F /* en */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = en; path = en.lproj/MainStoryboard_iPhone.storyboard; sourceTree = "<group>"; };
+		57C6E426175E076900E8BC5F /* Client.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Client.h; sourceTree = "<group>"; };
+		57C6E427175E076900E8BC5F /* Client.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Client.m; sourceTree = "<group>"; };
+		57C6E428175E076900E8BC5F /* CommunicationManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CommunicationManager.h; sourceTree = "<group>"; };
+		57C6E429175E076900E8BC5F /* CommunicationManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CommunicationManager.m; sourceTree = "<group>"; };
+		57C6E42A175E076900E8BC5F /* CommandInterpreter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CommandInterpreter.h; sourceTree = "<group>"; };
+		57C6E42B175E076900E8BC5F /* CommandInterpreter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CommandInterpreter.m; sourceTree = "<group>"; };
+		57C6E42C175E076900E8BC5F /* Server.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Server.h; sourceTree = "<group>"; };
+		57C6E42D175E076900E8BC5F /* Server.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Server.m; sourceTree = "<group>"; };
+		57CFED9717838FDC00E82E05 /* EditableTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EditableTableViewCell.h; sourceTree = "<group>"; };
+		57CFED9817838FDC00E82E05 /* EditableTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EditableTableViewCell.m; sourceTree = "<group>"; };
+		57FE71E11785C61300B50125 /* pinValidation_vc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = pinValidation_vc.h; path = Communication/pinValidation_vc.h; sourceTree = "<group>"; };
+		57FE71E21785C61400B50125 /* pinValidation_vc.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = pinValidation_vc.m; path = Communication/pinValidation_vc.m; sourceTree = "<group>"; };
+		57FE71E41785D7FE00B50125 /* slideShowPreview_vc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = slideShowPreview_vc.h; sourceTree = "<group>"; };
+		57FE71E51785D7FE00B50125 /* slideShowPreview_vc.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = slideShowPreview_vc.m; sourceTree = "<group>"; };
+		57FE71E717861A9000B50125 /* slideShowPreviewTable_vc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = slideShowPreviewTable_vc.h; sourceTree = "<group>"; };
+		57FE71E817861A9000B50125 /* slideShowPreviewTable_vc.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = slideShowPreviewTable_vc.m; sourceTree = "<group>"; };
+		BE9EBD061765BF0800283FD2 /* CoreImage.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreImage.framework; path = System/Library/Frameworks/CoreImage.framework; sourceTree = SDKROOT; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+		57C6E3EC175E06E800E8BC5F /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				BE9EBD071765BF0800283FD2 /* CoreImage.framework in Frameworks */,
+				57C6E3F3175E06E800E8BC5F /* UIKit.framework in Frameworks */,
+				57C6E3F5175E06E800E8BC5F /* Foundation.framework in Frameworks */,
+				57C6E3F7175E06E800E8BC5F /* CoreGraphics.framework in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+		57C6E3E6175E06E800E8BC5F = {
+			isa = PBXGroup;
+			children = (
+				BE9EBD061765BF0800283FD2 /* CoreImage.framework */,
+				57B152971764703500EECC67 /* Base64.h */,
+				57B152981764703500EECC67 /* Base64.m */,
+				57C6E425175E076900E8BC5F /* Communication */,
+				57C6E3F8175E06E800E8BC5F /* iosremote */,
+				57C6E3F1175E06E800E8BC5F /* Frameworks */,
+				57C6E3F0175E06E800E8BC5F /* Products */,
+			);
+			sourceTree = "<group>";
+		};
+		57C6E3F0175E06E800E8BC5F /* Products */ = {
+			isa = PBXGroup;
+			children = (
+				57C6E3EF175E06E800E8BC5F /* iosremote.app */,
+			);
+			name = Products;
+			sourceTree = "<group>";
+		};
+		57C6E3F1175E06E800E8BC5F /* Frameworks */ = {
+			isa = PBXGroup;
+			children = (
+				57C6E3F2175E06E800E8BC5F /* UIKit.framework */,
+				57C6E3F4175E06E800E8BC5F /* Foundation.framework */,
+				57C6E3F6175E06E800E8BC5F /* CoreGraphics.framework */,
+			);
+			name = Frameworks;
+			sourceTree = "<group>";
+		};
+		57C6E3F8175E06E800E8BC5F /* iosremote */ = {
+			isa = PBXGroup;
+			children = (
+				57FE71E11785C61300B50125 /* pinValidation_vc.h */,
+				57FE71E21785C61400B50125 /* pinValidation_vc.m */,
+				57FE71E41785D7FE00B50125 /* slideShowPreview_vc.h */,
+				57FE71E51785D7FE00B50125 /* slideShowPreview_vc.m */,
+				57C6E401175E06E800E8BC5F /* libreoffice_sdremoteAppDelegate.h */,
+				57C6E402175E06E800E8BC5F /* libreoffice_sdremoteAppDelegate.m */,
+				57C6E40A175E06E800E8BC5F /* MainStoryboard_iPhone.storyboard */,
+				5753DD9717834D7100DB71BB /* newServer_vc.h */,
+				5753DD9817834D7100DB71BB /* newServer_vc.m */,
+				5753DD8E1781EA0300DB71BB /* serverList_vc.h */,
+				5753DD8F1781EA0300DB71BB /* serverList_vc.m */,
+				57C6E3F9175E06E800E8BC5F /* Supporting Files */,
+				57CFED9717838FDC00E82E05 /* EditableTableViewCell.h */,
+				57CFED9817838FDC00E82E05 /* EditableTableViewCell.m */,
+				57FE71E717861A9000B50125 /* slideShowPreviewTable_vc.h */,
+				57FE71E817861A9000B50125 /* slideShowPreviewTable_vc.m */,
+			);
+			path = iosremote;
+			sourceTree = "<group>";
+		};
+		57C6E3F9175E06E800E8BC5F /* Supporting Files */ = {
+			isa = PBXGroup;
+			children = (
+				57C6E3FA175E06E800E8BC5F /* iosremote-Info.plist */,
+				57C6E3FB175E06E800E8BC5F /* InfoPlist.strings */,
+				57C6E3FE175E06E800E8BC5F /* main.m */,
+				57C6E400175E06E800E8BC5F /* iosremote-Prefix.pch */,
+				57C6E404175E06E800E8BC5F /* Default.png */,
+				57C6E406175E06E800E8BC5F /* Default at 2x.png */,
+				57C6E408175E06E800E8BC5F /* Default-568h at 2x.png */,
+			);
+			name = "Supporting Files";
+			sourceTree = "<group>";
+		};
+		57C6E425175E076900E8BC5F /* Communication */ = {
+			isa = PBXGroup;
+			children = (
+				57C6E426175E076900E8BC5F /* Client.h */,
+				57C6E427175E076900E8BC5F /* Client.m */,
+				57C6E428175E076900E8BC5F /* CommunicationManager.h */,
+				57C6E429175E076900E8BC5F /* CommunicationManager.m */,
+				57C6E42A175E076900E8BC5F /* CommandInterpreter.h */,
+				57C6E42B175E076900E8BC5F /* CommandInterpreter.m */,
+				57C6E42C175E076900E8BC5F /* Server.h */,
+				57C6E42D175E076900E8BC5F /* Server.m */,
+				57B7625B17621E42007703F6 /* SlideShow.h */,
+				57B7625C17621E42007703F6 /* SlideShow.m */,
+				57B1529D176486C300EECC67 /* CommandTransmitter.h */,
+				57B1529E176486C300EECC67 /* CommandTransmitter.m */,
+			);
+			name = Communication;
+			path = iosremote/Communication;
+			sourceTree = "<group>";
+		};
+/* End PBXGroup section */
+
+/* Begin PBXNativeTarget section */
+		57C6E3EE175E06E800E8BC5F /* iosremote */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = 57C6E415175E06E800E8BC5F /* Build configuration list for PBXNativeTarget "iosremote" */;
+			buildPhases = (
+				57C6E3EB175E06E800E8BC5F /* Sources */,
+				57C6E3EC175E06E800E8BC5F /* Frameworks */,
+				57C6E3ED175E06E800E8BC5F /* Resources */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = iosremote;
+			productName = iosremote;
+			productReference = 57C6E3EF175E06E800E8BC5F /* iosremote.app */;
+			productType = "com.apple.product-type.application";
+		};
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+		57C6E3E7175E06E800E8BC5F /* Project object */ = {
+			isa = PBXProject;
+			attributes = {
+				CLASSPREFIX = libreoffice.sdremote;
+				LastUpgradeCheck = 0460;
+				ORGANIZATIONNAME = libreoffice;
+			};
+			buildConfigurationList = 57C6E3EA175E06E800E8BC5F /* Build configuration list for PBXProject "iosremote" */;
+			compatibilityVersion = "Xcode 3.2";
+			developmentRegion = English;
+			hasScannedForEncodings = 0;
+			knownRegions = (
+				en,
+			);
+			mainGroup = 57C6E3E6175E06E800E8BC5F;
+			productRefGroup = 57C6E3F0175E06E800E8BC5F /* Products */;
+			projectDirPath = "";
+			projectRoot = "";
+			targets = (
+				57C6E3EE175E06E800E8BC5F /* iosremote */,
+			);
+		};
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+		57C6E3ED175E06E800E8BC5F /* Resources */ = {
+			isa = PBXResourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				57C6E3FD175E06E800E8BC5F /* InfoPlist.strings in Resources */,
+				57C6E405175E06E800E8BC5F /* Default.png in Resources */,
+				57C6E407175E06E800E8BC5F /* Default at 2x.png in Resources */,
+				57C6E409175E06E800E8BC5F /* Default-568h at 2x.png in Resources */,
+				57C6E40C175E06E800E8BC5F /* MainStoryboard_iPhone.storyboard in Resources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+		57C6E3EB175E06E800E8BC5F /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				57C6E3FF175E06E800E8BC5F /* main.m in Sources */,
+				57C6E403175E06E800E8BC5F /* libreoffice_sdremoteAppDelegate.m in Sources */,
+				57C6E42E175E076900E8BC5F /* Client.m in Sources */,
+				57C6E42F175E076900E8BC5F /* CommunicationManager.m in Sources */,
+				57C6E430175E076900E8BC5F /* CommandInterpreter.m in Sources */,
+				57C6E431175E076900E8BC5F /* Server.m in Sources */,
+				57B7625D17621E42007703F6 /* SlideShow.m in Sources */,
+				57B152991764703500EECC67 /* Base64.m in Sources */,
+				57B1529F176486C300EECC67 /* CommandTransmitter.m in Sources */,
+				5753DD901781EA0300DB71BB /* serverList_vc.m in Sources */,
+				5753DD9917834D7100DB71BB /* newServer_vc.m in Sources */,
+				57CFED9917838FDC00E82E05 /* EditableTableViewCell.m in Sources */,
+				57FE71E31785C61400B50125 /* pinValidation_vc.m in Sources */,
+				57FE71E61785D7FE00B50125 /* slideShowPreview_vc.m in Sources */,
+				57FE71E917861A9000B50125 /* slideShowPreviewTable_vc.m in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXSourcesBuildPhase section */
+
+/* Begin PBXVariantGroup section */
+		57C6E3FB175E06E800E8BC5F /* InfoPlist.strings */ = {
+			isa = PBXVariantGroup;
+			children = (
+				57C6E3FC175E06E800E8BC5F /* en */,
+			);
+			name = InfoPlist.strings;
+			sourceTree = "<group>";
+		};
+		57C6E40A175E06E800E8BC5F /* MainStoryboard_iPhone.storyboard */ = {
+			isa = PBXVariantGroup;
+			children = (
+				57C6E40B175E06E800E8BC5F /* en */,
+			);
+			name = MainStoryboard_iPhone.storyboard;
+			sourceTree = "<group>";
+		};
+/* End PBXVariantGroup section */
+
+/* Begin XCBuildConfiguration section */
+		57C6E413175E06E800E8BC5F /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ALWAYS_SEARCH_USER_PATHS = NO;
+				CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+				CLANG_CXX_LIBRARY = "libc++";
+				CLANG_ENABLE_OBJC_ARC = YES;
+				CLANG_WARN_CONSTANT_CONVERSION = YES;
+				CLANG_WARN_EMPTY_BODY = YES;
+				CLANG_WARN_ENUM_CONVERSION = YES;
+				CLANG_WARN_INT_CONVERSION = YES;
+				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+				COPY_PHASE_STRIP = NO;
+				GCC_C_LANGUAGE_STANDARD = gnu99;
+				GCC_DYNAMIC_NO_PIC = NO;
+				GCC_OPTIMIZATION_LEVEL = 0;
+				GCC_PREPROCESSOR_DEFINITIONS = (
+					"DEBUG=1",
+					"$(inherited)",
+				);
+				GCC_SYMBOLS_PRIVATE_EXTERN = NO;
+				GCC_WARN_ABOUT_RETURN_TYPE = YES;
+				GCC_WARN_UNINITIALIZED_AUTOS = YES;
+				GCC_WARN_UNUSED_VARIABLE = YES;
+				IPHONEOS_DEPLOYMENT_TARGET = 6.1;
+				ONLY_ACTIVE_ARCH = YES;
+				SDKROOT = iphoneos;
+				TARGETED_DEVICE_FAMILY = "1,2";
+			};
+			name = Debug;
+		};
+		57C6E414175E06E800E8BC5F /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ALWAYS_SEARCH_USER_PATHS = NO;
+				CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+				CLANG_CXX_LIBRARY = "libc++";
+				CLANG_ENABLE_OBJC_ARC = YES;
+				CLANG_WARN_CONSTANT_CONVERSION = YES;
+				CLANG_WARN_EMPTY_BODY = YES;
+				CLANG_WARN_ENUM_CONVERSION = YES;
+				CLANG_WARN_INT_CONVERSION = YES;
+				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+				COPY_PHASE_STRIP = YES;
+				GCC_C_LANGUAGE_STANDARD = gnu99;
+				GCC_WARN_ABOUT_RETURN_TYPE = YES;
+				GCC_WARN_UNINITIALIZED_AUTOS = YES;
+				GCC_WARN_UNUSED_VARIABLE = YES;
+				IPHONEOS_DEPLOYMENT_TARGET = 6.1;
+				OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1";
+				SDKROOT = iphoneos;
+				TARGETED_DEVICE_FAMILY = "1,2";
+				VALIDATE_PRODUCT = YES;
+			};
+			name = Release;
+		};
+		57C6E416175E06E800E8BC5F /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				GCC_PRECOMPILE_PREFIX_HEADER = YES;
+				GCC_PREFIX_HEADER = "iosremote/iosremote-Prefix.pch";
+				INFOPLIST_FILE = "iosremote/iosremote-Info.plist";
+				IPHONEOS_DEPLOYMENT_TARGET = 5.1;
+				PRODUCT_NAME = "$(TARGET_NAME)";
+				TARGETED_DEVICE_FAMILY = 1;
+				WRAPPER_EXTENSION = app;
+			};
+			name = Debug;
+		};
+		57C6E417175E06E800E8BC5F /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				GCC_PRECOMPILE_PREFIX_HEADER = YES;
+				GCC_PREFIX_HEADER = "iosremote/iosremote-Prefix.pch";
+				INFOPLIST_FILE = "iosremote/iosremote-Info.plist";
+				IPHONEOS_DEPLOYMENT_TARGET = 5.1;
+				PRODUCT_NAME = "$(TARGET_NAME)";
+				TARGETED_DEVICE_FAMILY = 1;
+				WRAPPER_EXTENSION = app;
+			};
+			name = Release;
+		};
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+		57C6E3EA175E06E800E8BC5F /* Build configuration list for PBXProject "iosremote" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				57C6E413175E06E800E8BC5F /* Debug */,
+				57C6E414175E06E800E8BC5F /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		57C6E415175E06E800E8BC5F /* Build configuration list for PBXNativeTarget "iosremote" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				57C6E416175E06E800E8BC5F /* Debug */,
+				57C6E417175E06E800E8BC5F /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+/* End XCConfigurationList section */
+	};
+	rootObject = 57C6E3E7175E06E800E8BC5F /* Project object */;
+}
diff --git a/ios/iosremote/iosremote.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/ios/iosremote/iosremote.xcodeproj/project.xcworkspace/contents.xcworkspacedata
new file mode 100644
index 0000000..130b46b
--- /dev/null
+++ b/ios/iosremote/iosremote.xcodeproj/project.xcworkspace/contents.xcworkspacedata
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Workspace
+   version = "1.0">
+   <FileRef
+      location = "self:iosremote.xcodeproj">
+   </FileRef>
+</Workspace>
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
new file mode 100644
index 0000000..536adb2
Binary files /dev/null and b/ios/iosremote/iosremote.xcodeproj/project.xcworkspace/xcuserdata/siqi.xcuserdatad/UserInterfaceState.xcuserstate differ
diff --git a/ios/iosremote/iosremote.xcodeproj/project.xcworkspace/xcuserdata/siqi.xcuserdatad/WorkspaceSettings.xcsettings b/ios/iosremote/iosremote.xcodeproj/project.xcworkspace/xcuserdata/siqi.xcuserdatad/WorkspaceSettings.xcsettings
new file mode 100644
index 0000000..28f6741
--- /dev/null
+++ b/ios/iosremote/iosremote.xcodeproj/project.xcworkspace/xcuserdata/siqi.xcuserdatad/WorkspaceSettings.xcsettings
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>BuildLocationStyle</key>
+	<string>UseAppPreferences</string>
+	<key>CustomBuildLocationType</key>
+	<string>RelativeToDerivedData</string>
+	<key>DerivedDataLocationStyle</key>
+	<string>Default</string>
+	<key>HasAskedToTakeAutomaticSnapshotBeforeSignificantChanges</key>
+	<true/>
+	<key>IssueFilterStyle</key>
+	<string>ShowActiveSchemeOnly</string>
+	<key>LiveSourceIssuesEnabled</key>
+	<true/>
+	<key>SnapshotAutomaticallyBeforeSignificantChanges</key>
+	<true/>
+	<key>SnapshotLocationStyle</key>
+	<string>Default</string>
+</dict>
+</plist>
diff --git a/ios/iosremote/iosremote.xcodeproj/xcuserdata/siqi.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist b/ios/iosremote/iosremote.xcodeproj/xcuserdata/siqi.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist
new file mode 100644
index 0000000..1011728
--- /dev/null
+++ b/ios/iosremote/iosremote.xcodeproj/xcuserdata/siqi.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Bucket
+   type = "1"
+   version = "1.0">
+   <FileBreakpoints>
+      <FileBreakpoint
+         shouldBeEnabled = "No"
+         ignoreCount = "0"
+         continueAfterRunningActions = "No"
+         filePath = "iosremote/libreoffice_sdremoteViewController.m"
+         timestampString = "393022219.861088"
+         startingColumnNumber = "9223372036854775807"
+         endingColumnNumber = "9223372036854775807"
+         startingLineNumber = "47"
+         endingLineNumber = "47"
+         landmarkName = "@implementation libreoffice_sdremoteViewController"
+         landmarkType = "3">
+      </FileBreakpoint>
+   </FileBreakpoints>
+</Bucket>
diff --git a/ios/iosremote/iosremote.xcodeproj/xcuserdata/siqi.xcuserdatad/xcschemes/iosremote.xcscheme b/ios/iosremote/iosremote.xcodeproj/xcuserdata/siqi.xcuserdatad/xcschemes/iosremote.xcscheme
new file mode 100644
index 0000000..bb82040
--- /dev/null
+++ b/ios/iosremote/iosremote.xcodeproj/xcuserdata/siqi.xcuserdatad/xcschemes/iosremote.xcscheme
@@ -0,0 +1,86 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Scheme
+   LastUpgradeVersion = "0460"
+   version = "1.3">
+   <BuildAction
+      parallelizeBuildables = "YES"
+      buildImplicitDependencies = "YES">
+      <BuildActionEntries>
+         <BuildActionEntry
+            buildForTesting = "YES"
+            buildForRunning = "YES"
+            buildForProfiling = "YES"
+            buildForArchiving = "YES"
+            buildForAnalyzing = "YES">
+            <BuildableReference
+               BuildableIdentifier = "primary"
+               BlueprintIdentifier = "57C6E3EE175E06E800E8BC5F"
+               BuildableName = "iosremote.app"
+               BlueprintName = "iosremote"
+               ReferencedContainer = "container:iosremote.xcodeproj">
+            </BuildableReference>
+         </BuildActionEntry>
+      </BuildActionEntries>
+   </BuildAction>
+   <TestAction
+      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
+      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
+      shouldUseLaunchSchemeArgsEnv = "YES"
+      buildConfiguration = "Debug">
+      <Testables>
+      </Testables>
+      <MacroExpansion>
+         <BuildableReference
+            BuildableIdentifier = "primary"
+            BlueprintIdentifier = "57C6E3EE175E06E800E8BC5F"
+            BuildableName = "iosremote.app"
+            BlueprintName = "iosremote"
+            ReferencedContainer = "container:iosremote.xcodeproj">
+         </BuildableReference>
+      </MacroExpansion>
+   </TestAction>
+   <LaunchAction
+      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
+      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
+      launchStyle = "0"
+      useCustomWorkingDirectory = "NO"
+      buildConfiguration = "Debug"
+      ignoresPersistentStateOnLaunch = "NO"
+      debugDocumentVersioning = "YES"
+      allowLocationSimulation = "YES">
+      <BuildableProductRunnable>
+         <BuildableReference
+            BuildableIdentifier = "primary"
+            BlueprintIdentifier = "57C6E3EE175E06E800E8BC5F"
+            BuildableName = "iosremote.app"
+            BlueprintName = "iosremote"
+            ReferencedContainer = "container:iosremote.xcodeproj">
+         </BuildableReference>
+      </BuildableProductRunnable>
+      <AdditionalOptions>
+      </AdditionalOptions>
+   </LaunchAction>
+   <ProfileAction
+      shouldUseLaunchSchemeArgsEnv = "YES"
+      savedToolIdentifier = ""
+      useCustomWorkingDirectory = "NO"
+      buildConfiguration = "Release"
+      debugDocumentVersioning = "YES">
+      <BuildableProductRunnable>
+         <BuildableReference
+            BuildableIdentifier = "primary"
+            BlueprintIdentifier = "57C6E3EE175E06E800E8BC5F"
+            BuildableName = "iosremote.app"
+            BlueprintName = "iosremote"
+            ReferencedContainer = "container:iosremote.xcodeproj">
+         </BuildableReference>
+      </BuildableProductRunnable>
+   </ProfileAction>
+   <AnalyzeAction
+      buildConfiguration = "Debug">
+   </AnalyzeAction>
+   <ArchiveAction
+      buildConfiguration = "Release"
+      revealArchiveInOrganizer = "YES">
+   </ArchiveAction>
+</Scheme>
diff --git a/ios/iosremote/iosremote.xcodeproj/xcuserdata/siqi.xcuserdatad/xcschemes/xcschememanagement.plist b/ios/iosremote/iosremote.xcodeproj/xcuserdata/siqi.xcuserdatad/xcschemes/xcschememanagement.plist
new file mode 100644
index 0000000..74079c7
--- /dev/null
+++ b/ios/iosremote/iosremote.xcodeproj/xcuserdata/siqi.xcuserdatad/xcschemes/xcschememanagement.plist
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>SchemeUserState</key>
+	<dict>
+		<key>iosremote.xcscheme</key>
+		<dict>
+			<key>orderHint</key>
+			<integer>0</integer>
+		</dict>
+	</dict>
+	<key>SuppressBuildableAutocreation</key>
+	<dict>
+		<key>57C6E3EE175E06E800E8BC5F</key>
+		<dict>
+			<key>primary</key>
+			<true/>
+		</dict>
+	</dict>
+</dict>
+</plist>
diff --git a/ios/iosremote/iosremote/Base64.h b/ios/iosremote/iosremote/Base64.h
new file mode 100644
index 0000000..f222423
--- /dev/null
+++ b/ios/iosremote/iosremote/Base64.h
@@ -0,0 +1,16 @@
+// -*- Mode: ObjC; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+//
+// This file is part of the LibreOffice project.
+//
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#import <Foundation/Foundation.h>
+
+
+ at interface NSData (Base64)
+
++(id)dataWithBase64String:(NSString *)base64String;
+
+ at end
\ No newline at end of file
diff --git a/ios/iosremote/iosremote/Base64.m b/ios/iosremote/iosremote/Base64.m
new file mode 100644
index 0000000..9b380eb
--- /dev/null
+++ b/ios/iosremote/iosremote/Base64.m
@@ -0,0 +1,23 @@
+/*
+ * 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 "Base64.h"
+
+ at implementation NSData(Base64)
+
++ (id) dataWithBase64String:(NSString *)base64Encoding
+{
+	if ([base64Encoding length] % 4 != 0)
+		return nil;
+	
+	NSString *plist = [NSString stringWithFormat:@"<?xml version=\"1.0\" encoding=\"UTF-8\"?><plist version=\"1.0\"><data>%@</data></plist>", base64Encoding];
+	return [NSPropertyListSerialization propertyListWithData:[plist dataUsingEncoding:NSASCIIStringEncoding] options:0 format:NULL error:NULL];
+}
+
+
+ at end
diff --git a/ios/iosremote/iosremote/.DS_Store b/ios/iosremote/iosremote/Communication/.DS_Store
similarity index 88%
rename from ios/iosremote/iosremote/.DS_Store
rename to ios/iosremote/iosremote/Communication/.DS_Store
index 5008ddf..83d9e2a 100644
Binary files a/ios/iosremote/iosremote/.DS_Store and b/ios/iosremote/iosremote/Communication/.DS_Store differ
diff --git a/ios/iosremote/iosremote/Communication/Client.h b/ios/iosremote/iosremote/Communication/Client.h
new file mode 100644
index 0000000..51674fd
--- /dev/null
+++ b/ios/iosremote/iosremote/Communication/Client.h
@@ -0,0 +1,33 @@
+/*
+ * 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>
+
+ at class Server;
+ at class CommunicationManager;
+ at class CommandInterpreter;
+
+ at interface Client : NSObject
+
+ at property BOOL connected;
+ at property (nonatomic, strong) NSNumber* pin;
+ at property (nonatomic, strong) NSString* name;
+ at property (nonatomic, weak) Server* server;
+
+- (void) connect;
+- (void) disconnect;
+
+- (id) initWithServer:(Server*)server
+            managedBy:(CommunicationManager*)manager
+        interpretedBy:(CommandInterpreter*)receiver;
+
+- (void) sendCommand:(NSString *)aCommand;
+
+-(void)stream:(NSStream *)stream handleEvent:(NSStreamEvent)eventCode;
+
+ at end
\ No newline at end of file
diff --git a/ios/iosremote/iosremote/Communication/Client.m b/ios/iosremote/iosremote/Communication/Client.m
new file mode 100644
index 0000000..a75bc6f
--- /dev/null
+++ b/ios/iosremote/iosremote/Communication/Client.m
@@ -0,0 +1,233 @@
+// -*- Mode: ObjC; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+//
+// This file is part of the LibreOffice project.
+//
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#import <dispatch/dispatch.h>
+#import "Client.h"
+#import "Server.h"
+#import "CommandInterpreter.h"
+#import "CommunicationManager.h"
+
+#define CHARSET @"UTF-8"
+
+ at interface Client() <NSStreamDelegate>
+
+ at property (nonatomic, strong) NSInputStream* inputStream;
+ at property (nonatomic, strong) NSOutputStream* outputStream;
+
+ at property uint mPort;
+ at property (nonatomic, weak) CommandInterpreter* receiver;
+ at property (nonatomic, weak) CommunicationManager* comManager;
+
+ at property (nonatomic, strong) NSTimer* connectionTimeoutTimer;
+
+ at end
+
+ at implementation Client
+
+ at synthesize inputStream = _mInputStream;
+ at synthesize outputStream = _mOutputStream;
+ at synthesize pin = _mPin;
+ at synthesize name = _mName;
+ at synthesize server = _mServer;
+ at synthesize comManager = _mComManager;
+ at synthesize connected = _mReady;
+ at synthesize receiver = _receiver;
+ at synthesize connectionTimeoutTimer = _connectionTimeoutTimer;
+
+
+dispatch_queue_t backgroundQueue;
+
+- (id) initWithServer:(Server*)server
+            managedBy:(CommunicationManager*)manager
+        interpretedBy:(CommandInterpreter*)receiver
+{
+    self = [self init];
+    if (self)
+    {
+        self.connected = 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;
+}
+
+- (void)startConnectionTimeoutTimer
+{
+    [self stopConnectionTimeoutTimer]; // Or make sure any existing timer is stopped before this method is called
+    
+    NSTimeInterval interval = 3.0; // Measured in seconds, is a double
+    
+    self.connectionTimeoutTimer = [NSTimer scheduledTimerWithTimeInterval:interval
+                                                                   target:self
+                                                                 selector:@selector(handleConnectionTimeout)
+                                                                 userInfo:nil
+                                                                  repeats:NO];
+}
+
+- (void)handleConnectionTimeout
+{
+    NSLog(@"handleConnectionTimeout");
+    [self disconnect];
+    [[NSNotificationCenter defaultCenter]postNotificationName:@"connection.status.disconnected" object:nil];
+}
+
+- (void)dealloc
+{
+    dispatch_release(backgroundQueue);
+    [self stopConnectionTimeoutTimer];
+}
+
+- (void)stopConnectionTimeoutTimer
+{
+    if (self.connectionTimeoutTimer)
+    {
+        [self.connectionTimeoutTimer invalidate];
+        self.connectionTimeoutTimer = nil;
+    }
+}
+
+- (NSInteger) getPin
+{
+    // Look up if there is already a pin code for this client.
+    NSUserDefaults * userDefaluts = [NSUserDefaults standardUserDefaults];
+    
+    if(!userDefaluts)
+        NSLog(@"userDefaults nil");
+    NSInteger newPin = [userDefaluts integerForKey:self.name];
+    
+    // If not, generate one.
+    if (!newPin) {
+        newPin = arc4random() % 9999;
+        [userDefaluts setInteger:newPin forKey:self.name];
+    }
+    
+    return newPin;
+}
+
+- (void)streamOpenWithIp:(NSString *)ip withPortNumber:(uint)portNumber
+{
+    NSLog(@"Connecting to %@:%u", ip, portNumber);
+    CFReadStreamRef readStream;
+    CFWriteStreamRef writeStream;
+    CFStreamCreatePairWithSocketToHost(kCFAllocatorDefault, (__bridge CFStringRef)ip, portNumber, &readStream, &writeStream);
+    
+    if(readStream && writeStream)
+    {
+        CFReadStreamSetProperty(readStream, kCFStreamPropertyShouldCloseNativeSocket, kCFBooleanTrue);
+        CFWriteStreamSetProperty(writeStream, kCFStreamPropertyShouldCloseNativeSocket, kCFBooleanTrue);
+        
+        //Setup mInputStream
+        self.inputStream = (__bridge NSInputStream *)readStream;
+        [self.inputStream setDelegate:self];
+        dispatch_async(dispatch_get_main_queue(), ^{
+            [self.inputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
+        });
+        [self.inputStream open];
+        
+        //Setup outputstream
+        self.outputStream = (__bridge NSOutputStream *)writeStream;
+        [self.outputStream setDelegate:self];
+        dispatch_async(dispatch_get_main_queue(), ^{
+            [self.outputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
+        });
+        [self.outputStream open];
+        
+        NSArray *temp = [[NSArray alloc]initWithObjects:@"LO_SERVER_CLIENT_PAIR\n", self.name, @"\n", self.pin, @"\n\n", nil];
+        NSString *command = [temp componentsJoinedByString:@""];
+        
+        [self sendCommand:command];
+    }
+}
+
+- (void) sendCommand:(NSString *)aCommand
+{
+    NSLog(@"Sending command %@", aCommand);
+    // UTF-8 as speficied in specification
+    NSData * data = [aCommand dataUsingEncoding:NSUTF8StringEncoding];
+    
+    [self.outputStream write:(uint8_t *)[data bytes] maxLength:[data length]];
+}
+
+int count = 0;
+
+- (void)stream:(NSStream *)stream handleEvent:(NSStreamEvent)eventCode {
+    switch(eventCode) {
+        case NSStreamEventOpenCompleted:{
+                [self stopConnectionTimeoutTimer];
+                [[NSNotificationCenter defaultCenter]postNotificationName:@"connection.status.connected" object:nil];
+            }
+            break;
+        case NSStreamEventErrorOccurred:{
+            [self stopConnectionTimeoutTimer];
+            NSLog(@"Connection error occured");
+            [[NSNotificationCenter defaultCenter]postNotificationName:@"connection.status.disconnected" object:nil];
+            }
+            break;
+        case NSStreamEventHasBytesAvailable:
+        {
+            NSMutableData* data;
+            NSLog(@"NSStreamEventHasBytesAvailable");
+            if(!data) {
+                data = [[NSMutableData alloc] init];
+            }
+            uint8_t buf[1024];
+            unsigned int len = 0;
+            NSString *str;
+            while (true) {
+                len = [(NSInputStream *)stream read:buf maxLength:1024];
+                [data appendBytes:(const void *)buf length:len];
+                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;
+                    }
+                }
+            }
+            
+            NSArray *commands = [str componentsSeparatedByString:@"\n"];
+            [self.receiver parse:commands];
+            data = nil;
+            str = nil;
+        } break;
+        default:
+        {
+            
+        }
+            
+    }
+}
+
+- (void) disconnect
+{
+    if(self.inputStream == nil && self.outputStream == nil)
+        return;
+    [self.inputStream close];
+    [self.outputStream close];
+    self.inputStream = nil;
+    self.outputStream = nil;
+    self.connected = NO;
+}
+
+- (void) connect
+{
+    [self startConnectionTimeoutTimer];
+    backgroundQueue = dispatch_queue_create("com.libreoffice.iosremote", NULL);
+    dispatch_async(backgroundQueue, ^(void) {
+        [self streamOpenWithIp:self.server.serverAddress withPortNumber:self.mPort];
+    });
+}
+
+
+
+ at end
diff --git a/ios/iosremote/iosremote/Communication/CommandInterpreter.h b/ios/iosremote/iosremote/Communication/CommandInterpreter.h
new file mode 100644
index 0000000..287cdc5
--- /dev/null
+++ b/ios/iosremote/iosremote/Communication/CommandInterpreter.h
@@ -0,0 +1,20 @@
+// -*- Mode: ObjC; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+//
+// This file is part of the LibreOffice project.
+//
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+
+#import <Foundation/Foundation.h>
+
+ at class SlideShow;
+
+ at interface CommandInterpreter : NSObject
+
+ at property (nonatomic, strong) SlideShow* slideShow;
+
+- (void) parse:(NSArray *)cmd;
+
+ at end
diff --git a/ios/iosremote/iosremote/Communication/CommandInterpreter.m b/ios/iosremote/iosremote/Communication/CommandInterpreter.m
new file mode 100644
index 0000000..3bce86c
--- /dev/null
+++ b/ios/iosremote/iosremote/Communication/CommandInterpreter.m
@@ -0,0 +1,91 @@
+// -*- Mode: ObjC; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+//
+// This file is part of the LibreOffice project.
+//
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+
+#import "CommandInterpreter.h"
+#import "SlideShow.h"
+#import "Base64.h"
+#import "CommunicationManager.h"
+
+ at interface CommandInterpreter()
+
+ at end
+
+ at implementation CommandInterpreter
+
+ at synthesize slideShow = _slideShow;
+
+- (SlideShow*) slideshow{
+    if (!self.slideShow)
+        self.slideShow = [[SlideShow alloc] init];
+    return self.slideShow;
+}
+
+- (BOOL) isSlideRunning {
+    return [self.slideShow size] > 0;
+}
+
+// Received a set of instructions from server.
+- (void) parse:(NSArray*)command{
+    if ([command count] == 0) {
+        return;
+    }
+    NSLog(@"Command:%@", command);
+    NSString *instruction = [command objectAtIndex:0];
+    
+    if([instruction isEqualToString:@"slideshow_started"]){
+        NSLog(@"Interpreter: slideshow_started");
+        uint slideLength = [[command objectAtIndex:1] integerValue];
+        uint currentSlide = [[command objectAtIndex:2] integerValue];
+        self.slideShow = [[SlideShow alloc] init];
+        
+        [self.slideShow setSize:slideLength];
+        [self.slideShow setCurrentSlide:currentSlide];
+        
+        [[NSNotificationCenter defaultCenter] postNotificationName:STATUS_CONNECTED_SLIDESHOW_RUNNING
+                          object:nil];
+        [[NSNotificationCenter defaultCenter] postNotificationName:MSG_SLIDE_CHANGED object:[NSNumber numberWithUnsignedInt:currentSlide]];
+        
+    } else if ([instruction isEqualToString:@"slideshow_finished"]){
+        NSLog(@"Interpreter: slideshow_finished");
+        self.slideShow = [[SlideShow alloc] init];
+        [[NSNotificationCenter defaultCenter] postNotificationName:STATUS_CONNECTED_NOSLIDESHOW object:nil];
+    } else {
+        if (self.slideShow == nil)
+            return;
+        if ([instruction isEqualToString:@"slide_updated"]) {
+            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"]){
+            NSLog(@"Interpreter: slide_preview");
+            uint slideNumber = [[command objectAtIndex:1] integerValue];
+            NSString * imageData = [command objectAtIndex:2];
+            
+            [self.slideShow putImage:imageData
+                              AtIndex:slideNumber];
+            [[NSNotificationCenter defaultCenter] postNotificationName:MSG_SLIDE_PREVIEW object:[NSNumber numberWithUnsignedInt:slideNumber]];
+        } else if ([instruction isEqualToString:@"slide_notes"]){
+            uint slideNumber = [[command objectAtIndex:1] integerValue];
+            NSMutableString *notes = [[NSMutableString alloc] init];
+            for (int i = 2; i<command.count; ++i) {
+                [notes appendString:[command objectAtIndex:i]];
+            }
+            [self.slideShow putNotes:notes
+                              AtIndex:slideNumber];
+            [[NSNotificationCenter defaultCenter] postNotificationName:MSG_SLIDE_NOTES object: [NSNumber numberWithUnsignedInt:slideNumber]];
+        }
+        
+    }
+    
+}
+
+ at end
diff --git a/ios/iosremote/iosremote/Communication/CommandTransmitter.h b/ios/iosremote/iosremote/Communication/CommandTransmitter.h
new file mode 100644
index 0000000..95821c9
--- /dev/null
+++ b/ios/iosremote/iosremote/Communication/CommandTransmitter.h
@@ -0,0 +1,30 @@
+// -*- Mode: ObjC; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+//
+// This file is part of the LibreOffice project.
+//
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#import <Foundation/Foundation.h>
+
+ at class Client;
+
+
+ at interface CommandTransmitter : NSObject
+
+- (CommandTransmitter*) initWithClient:(Client *)client;
+
+- (void) nextTransition;
+- (void) previousTransition;
+
+- (void) gotoSlide:(uint) slide;
+
+- (void) blankScreen;
+- (void) blankScreenWithColor:(UIColor*)color;
+- (void) resume;
+
+- (void) startPresentation;
+- (void) stopPresentation;
+
+ at end
diff --git a/ios/iosremote/iosremote/Communication/CommandTransmitter.m b/ios/iosremote/iosremote/Communication/CommandTransmitter.m
new file mode 100644
index 0000000..a359f5e
--- /dev/null
+++ b/ios/iosremote/iosremote/Communication/CommandTransmitter.m
@@ -0,0 +1,88 @@
+/* -*- Mode: Java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+
+#import "CommandTransmitter.h"
+#import "Client.h"
+
+ at interface CommandTransmitter()
+
+ at property (nonatomic, weak) Client* client;
+
+ at end
+
+ at implementation CommandTransmitter
+
+ at synthesize client = _client;
+
+- (CommandTransmitter*) initWithClient:(Client *)client
+{
+    self = [self init];
+    self.client = client;
+
+    return self;
+}
+
+- (void) nextTransition
+{
+    [self.client sendCommand:@"transition_next\n\n"];
+}
+
+- (void) previousTransition
+{
+    [self.client sendCommand:@"transition_previous\n\n"];
+}
+
+- (void) gotoSlide:(uint) slide
+{
+    [self.client sendCommand:[NSString stringWithFormat:@"goto_slide\n%u\n\n", slide]];
+}
+
+
+/**
+ * Blank the screen to the default colour (set server-side), which is
+ * generally black. This is slightly faster than using
+ * <code> blankScreen( colour ) </code>.
+ */
+- (void) blankScreen
+{
+    [self.client sendCommand:@"presentation_blank_screen\n\n"];
+}
+
+
+/**
+ * Set the screen to a specific colour. Only use if a non default colour is
+ * needed.
+ *
+ * @param aColor
+ */
+- (void) blankScreenWithColor:(UIColor*)color
+{
+//    CGColorRef colorRef = color.CGColor;
+//    NSString *colorString = [CIColor colorWithCGColor:colorRef].stringRepresentation;
+    
+    // Need new server-end interface, since this is a platform dependent representation
+//    [self.client sendCommand:[NSString stringWithFormat:@"presentation_blank_screen\n%@\n\n", colorString]];
+}
+
+- (void) resume
+{
+    [self.client sendCommand:@"presentation_resume\n\n"];
+}
+
+- (void) startPresentation
+{
+    [self.client sendCommand:@"presentation_start\n\n"];
+}
+
+- (void) stopPresentation
+{
+    [self.client sendCommand:@"presentation_stop\n\n"];
+}
+
+ at end
diff --git a/ios/iosremote/iosremote/Communication/CommunicationManager.h b/ios/iosremote/iosremote/Communication/CommunicationManager.h
new file mode 100644
index 0000000..908ed6b
--- /dev/null
+++ b/ios/iosremote/iosremote/Communication/CommunicationManager.h
@@ -0,0 +1,71 @@
+// -*- Mode: ObjC; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+//
+// This file is part of the LibreOffice project.
+//
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+
+#import <Foundation/Foundation.h>
+
+ at class Client;
+ at class Server;
+ at class CommandInterpreter;
+ at class CommandTransmitter;
+ at class SlideShow;
+
+#define MSG_SLIDESHOW_STARTED @"SLIDESHOW_STARTED"
+#define MSG_SLIDE_CHANGED @"SLIDE_CHANGED"
+#define MSG_SLIDE_PREVIEW @"SLIDE_PREVIEW"
+#define MSG_SLIDE_NOTES @"SLIDE_NOTES"
+
+#define MSG_SERVERLIST_CHANGED @"SERVERLIST_CHANGED"
+#define MSG_PAIRING_STARTED @"PAIRING_STARTED"
+#define MSG_PAIRING_SUCCESSFUL @"PAIRING_SUCCESSFUL"
+
+/**
+ * Notify the UI that the service has connected to a server AND a slideshow
+ * is running.
+ * In this case the PresentationActivity should be started.
+ */
+#define STATUS_CONNECTED_SLIDESHOW_RUNNING @"STATUS_CONNECTED_SLIDESHOW_RUNNING"
+/**
+ * Notify the UI that the service has connected to a server AND no slideshow
+ * is running.
+ * In this case the StartPresentationActivity should be started.
+ */
+#define STATUS_CONNECTED_NOSLIDESHOW @"STATUS_CONNECTED_NOSLIDESHOW"
+
+#define STATUS_PAIRING_PINVALIDATION @"STATUS_PAIRING_PINVALIDATION"
+
+#define STATUS_CONNECTION_FAILED @"STATUS_CONNECTION_FAILED"
+
+
+typedef enum ConnectionState : NSInteger ConnectionState;
+
+enum ConnectionState : NSInteger {
+    DISCONNECTED,
+    SEARCHING,
+    CONNECTING,
+    CONNECTED
+};
+
+ at interface CommunicationManager : NSObject
+
+- (id) initWithExistingServers;
+- (NSNumber *) getPairingPin;
+- (void) connectToServer:(Server*)server;
+- (void) addServersWithName:(NSString*)name
+                  AtAddress:(NSString*)addr;
+- (void) removeServerAtIndex:(NSUInteger)index;
+
+ at property ConnectionState state;
+ at property (nonatomic, strong) id delegate;
+ at property (atomic, strong) NSMutableArray* servers;
+ at property (nonatomic, strong) CommandInterpreter* interpreter;
+ at property (nonatomic, strong) CommandTransmitter* transmitter;
+
++ (CommunicationManager *)sharedComManager;
+
+ at end
diff --git a/ios/iosremote/iosremote/Communication/CommunicationManager.m b/ios/iosremote/iosremote/Communication/CommunicationManager.m
new file mode 100644
index 0000000..7c6a486
--- /dev/null
+++ b/ios/iosremote/iosremote/Communication/CommunicationManager.m
@@ -0,0 +1,167 @@
+// -*- Mode: ObjC; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+//
+// This file is part of the LibreOffice project.
+//
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+
+#import "CommunicationManager.h"
+#import "Client.h"
+#import "Server.h"
+#import "SlideShow.h"
+#import "CommandTransmitter.h"
+#import "CommandInterpreter.h"
+#import "serverList_vc.h"
+#import <dispatch/dispatch.h>
+
+#define ExistingServersKey @"CommunicationManager.ExistingServers"
+
+ at interface CommunicationManager()
+
+ at property (nonatomic, strong) Client* client;
+ at property (nonatomic, strong) id connectionConnectedObserver;
+ at property (nonatomic, strong) id connectionDisconnectedObserver;
+
+ at end
+
+// Singlton Pattern
+ at implementation CommunicationManager
+
+ at synthesize client = _client;
+ at synthesize state = _state;
+ at synthesize interpreter = _interpreter;
+ at synthesize transmitter = _transmitter;
+ at synthesize servers = _servers;
+ at synthesize delegate = _delegate;
+ at synthesize connectionConnectedObserver = _connectionConnectedObserver;
+ at synthesize connectionDisconnectedObserver = _connectionDisconnectedObserver;
+
++ (CommunicationManager *)sharedComManager
+{
+    static CommunicationManager *sharedComManager = nil;
+    static dispatch_once_t _singletonPredicate;
+    
+    dispatch_once(&_singletonPredicate, ^{
+        sharedComManager = [[super allocWithZone:nil] initWithExistingServers];
+    });
+    
+    return sharedComManager;
+}
+
+
+- (void) connectionStatusHandler:(NSNotification *)note
+{
+    [self.delegate disableSpinner];
+    if([[note name] isEqualToString:@"connection.status.connected"]){
+        if (self.state!=CONNECTED){
+            NSLog(@"Connected");
+            self.transmitter = [[CommandTransmitter alloc] initWithClient:self.client];
+            self.state = CONNECTED;
+            [self.delegate performSegueWithIdentifier:@"pinValidation" sender:nil];
+        } else {
+            NSLog(@"Already connected");
+        }
+    } else if ([[note name] isEqualToString:@"connection.status.disconnected"]){
+        if (self.state != DISCONNECTED) {
+            NSLog(@"Connection Failed");
+            self.state = DISCONNECTED;
+            [self.client disconnect];
+            UIAlertView *message = [[UIAlertView alloc] initWithTitle:@"Failed to reach server"
+                                                              message:@"Please verify the IP address and try again later"
+                                                             delegate:nil
+                                                    cancelButtonTitle:@"OK"
+                                                    otherButtonTitles:@"Help", nil];
+            [message show];
+        }
+    }
+}
+
+- (id) init
+{
+    self = [super init];
+    self.state = DISCONNECTED;
+    self.interpreter = [[CommandInterpreter alloc] init];
+    self.servers = [[NSMutableArray alloc] init];
+    
+    [[NSNotificationCenter defaultCenter]addObserver: self
+                                            selector: @selector(connectionStatusHandler:)
+                                                name: @"connection.status.connected"
+                                              object: nil];
+    [[NSNotificationCenter defaultCenter]addObserver: self
+                                            selector: @selector(connectionStatusHandler:)
+                                                name: @"connection.status.disconnected"
+                                              object: nil];
+    
+    return self;
+}
+
+
+
+- (id) initWithExistingServers
+{
+    self = [self init];
+    NSUserDefaults * userDefaluts = [NSUserDefaults standardUserDefaults];
+    
+    if(!userDefaluts)
+        NSLog(@"userDefaults nil");
+    
+    NSData *dataRepresentingExistingServers = [userDefaluts objectForKey:ExistingServersKey];
+    if (dataRepresentingExistingServers != nil)
+    {
+        NSArray *oldSavedArray = [NSKeyedUnarchiver unarchiveObjectWithData:dataRepresentingExistingServers];
+        if (oldSavedArray != nil)
+            self.servers = [[NSMutableArray alloc] initWithArray:oldSavedArray];
+        else
+            self.servers = [[NSMutableArray alloc] init];
+    } 
+    return self;
+}
+
+- (void) connectToServer:(Server*)server
+{
+    if (self.state == CONNECTING) {
+        return;
+    } else {
+            self.state = CONNECTING;
+            [self.client disconnect];
+            // initialise it with a given server
+            self.client = [[Client alloc]initWithServer:server managedBy:self interpretedBy:self.interpreter];
+            self.transmitter = [[CommandTransmitter alloc] initWithClient:self.client];
+            [self.client connect];
+    }
+}
+
+
+- (NSNumber *) getPairingPin{
+    return [self.client pin];
+}
+
+- (NSString *) getPairingDeviceName
+{
+    return [self.client name];
+}
+
++ (id)allocWithZone:(NSZone *)zone
+{
+    return [self sharedComManager];
+}
+
+- (void) addServersWithName:(NSString*)name
+                  AtAddress:(NSString*)addr
+{
+    Server * s = [[Server alloc] initWithProtocol:NETWORK atAddress:addr ofName:name];
+    [self.servers addObject:s];
+    [[NSUserDefaults standardUserDefaults] setObject:[NSKeyedArchiver archivedDataWithRootObject:self.servers] forKey:ExistingServersKey];
+    [[NSUserDefaults standardUserDefaults] synchronize];
+}
+
+- (void) removeServerAtIndex:(NSUInteger)index
+{
+    [self.servers removeObjectAtIndex:index];
+    [[NSUserDefaults standardUserDefaults] setObject:[NSKeyedArchiver archivedDataWithRootObject:self.servers] forKey:ExistingServersKey];
+    [[NSUserDefaults standardUserDefaults] synchronize];
+}
+
+ at end
diff --git a/ios/iosremote/iosremote/Communication/Server.h b/ios/iosremote/iosremote/Communication/Server.h
new file mode 100644
index 0000000..0e499bd
--- /dev/null
+++ b/ios/iosremote/iosremote/Communication/Server.h
@@ -0,0 +1,29 @@
+// -*- Mode: ObjC; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+//
+// This file is part of the LibreOffice project.
+//
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#import <Foundation/Foundation.h>
+
+typedef enum protocol {NETWORK} Protocol_t;
+
+ at interface Server : NSObject <NSCoding>
+
+ at property (nonatomic) Protocol_t protocol;
+ at property (nonatomic, strong) NSString* serverName;
+ at property (nonatomic, strong) NSString* serverAddress;
+
+- (id)initWithProtocol:(Protocol_t)protocal
+             atAddress:(NSString*) address
+                ofName:(NSString*) name;
+
+ at end
+
+ at interface NSString (IPValidation)
+
+- (BOOL)isValidIPAddress;
+
+ at end
\ No newline at end of file
diff --git a/ios/iosremote/iosremote/Communication/Server.m b/ios/iosremote/iosremote/Communication/Server.m
new file mode 100644
index 0000000..2e2c0a4
--- /dev/null
+++ b/ios/iosremote/iosremote/Communication/Server.m
@@ -0,0 +1,75 @@
+// -*- Mode: ObjC; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+//
+// This file is part of the LibreOffice project.
+//
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#import "Server.h"
+#import <arpa/inet.h>
+
+ at interface Server()
+
+ at end
+
+ at implementation Server
+
+
+ at synthesize protocol = _protocol;
+ at synthesize serverName = _serverName;
+ at synthesize serverAddress = _serverAddress;
+
+
+- (void)encodeWithCoder:(NSCoder *)coder;
+{
+    [coder encodeObject:self.serverName forKey:@"name"];
+    [coder encodeObject:self.serverAddress forKey:@"address"];
+    [coder encodeInteger:self.protocol forKey:@"protocol"];
+}
+
+- (id)initWithCoder:(NSCoder *)coder;
+{
+    self = [self initWithProtocol:[coder decodeIntegerForKey:@"protocol"]
+                        atAddress:[coder decodeObjectForKey:@"address"]
+                           ofName:[coder decodeObjectForKey:@"name"]];
+    return self;
+}
+
+
+- (id)initWithProtocol:(Protocol_t)protocal
+           atAddress:(NSString*) address
+              ofName:(NSString*) name
+{
+    self = [self init];
+    self.protocol = protocal;
+    self.serverAddress = address;
+    self.serverName = name;
+    return self;
+}
+
+- (NSString *)description{
+    return [NSString stringWithFormat:@"Server: Name:%@ Addr:%@", self.serverName, self.serverAddress];
+}
+
+ at end
+
+
+ at implementation NSString (IPValidation)
+
+- (BOOL)isValidIPAddress
+{
+    const char *utf8 = [self UTF8String];
+    int success;
+    
+    struct in_addr dst;
+    success = inet_pton(AF_INET, utf8, &dst);
+    if (success != 1) {
+        struct in6_addr dst6;
+        success = inet_pton(AF_INET6, utf8, &dst6);
+    }
+    
+    return success;
+}
+
+ at end
diff --git a/ios/iosremote/iosremote/Communication/SlideShow.h b/ios/iosremote/iosremote/Communication/SlideShow.h
new file mode 100644
index 0000000..8d89533
--- /dev/null
+++ b/ios/iosremote/iosremote/Communication/SlideShow.h
@@ -0,0 +1,26 @@
+// -*- Mode: ObjC; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+//
+// This file is part of the LibreOffice project.
+//
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+
+#import <Foundation/Foundation.h>
+
+ at class slideShowPreview_vc;
+
+ at interface SlideShow : NSObject
+
+ at property uint size;
+ at property uint currentSlide;
+ at property (nonatomic, strong) slideShowPreview_vc* delegate;
+
+- (void) putImage: (NSString *)img AtIndex: (uint) index;
+- (void) putNotes: (NSString *)notes AtIndex: (uint) index;
+
+- (UIImage *) getImageAtIndex: (uint) index;
+- (NSString *) getNotesAtIndex: (uint) index;
+
+ at end
diff --git a/ios/iosremote/iosremote/Communication/SlideShow.m b/ios/iosremote/iosremote/Communication/SlideShow.m
new file mode 100644
index 0000000..7048569
--- /dev/null
+++ b/ios/iosremote/iosremote/Communication/SlideShow.m
@@ -0,0 +1,114 @@
+// -*- Mode: ObjC; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+//
+// This file is part of the LibreOffice project.
+//
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+
+#import "SlideShow.h"
+#import "Base64.h"
+#import "slideShowPreview_vc.h"
+#import <dispatch/dispatch.h>
+
+ at interface SlideShow()
+
+ at property (nonatomic, strong) NSMutableDictionary* imagesDictionary;
+ at property (nonatomic, strong) NSMutableDictionary* notesDictionary;
+
+ at property int lastRequestedImage, lastRequestedNote;
+ at property (nonatomic, strong) id slideShowImageReadyObserver;
+ at property (nonatomic, strong) id slideShowNoteReadyObserver;
+
+ at end
+
+ at implementation SlideShow
+
+ at synthesize size = _size;
+ at synthesize currentSlide = _currentSlide;
+ at synthesize delegate = _delegate;
+
+dispatch_queue_t backgroundQueue;
+
+- (SlideShow *) init{
+    self = [super init];
+    self.imagesDictionary = [[NSMutableDictionary alloc] init];
+    self.notesDictionary = [[NSMutableDictionary alloc] init];
+    _size = 0;
+    _currentSlide = 0;
+    
+    backgroundQueue = dispatch_queue_create("org.libreoffice.iosremote.bgqueue", NULL);
+//    NSOperationQueue *mainQueue = [NSOperationQueue mainQueue];
+    
+//    self.slideShowImageReadyObserver =[[NSNotificationCenter defaultCenter]
+//                                              addObserverForName:@"storage_update_image_ready"
+//                                                          object:nil
+//                                                           queue:mainQueue
+//                                                      usingBlock:^(NSNotification *note) {
+//                                                          if ([[[note userInfo] objectForKey:@"index"] intValue] == self.lastRequestedImage) {
+//                                                              [self.delegate.image setImage:[self getImageAtIndex:self.lastRequestedImage]];
+//                                                              self.lastRequestedImage = -1;
+//                                                          }
+//                                                      }];
+    
+//    self.slideShowNoteReadyObserver = [[NSNotificationCenter defaultCenter] addObserverForName:@"storage_update_note_ready"
+//                                                          object:nil
+//                                                           queue:mainQueue
+//                                                      usingBlock:^(NSNotification *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];
+        [self.imagesDictionary setObject:image forKey:[NSNumber numberWithUnsignedInt:index]];
+        [[NSNotificationCenter defaultCenter] postNotificationName:@"storage_update_image_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"
+                                                        object:nil
+                                                      userInfo:[NSDictionary dictionaryWithObject:[NSNumber numberWithInt:index] forKey:@"index"]];
+}
+
+- (UIImage *) getImageAtIndex: (uint) index
+{
+    if (![self.imagesDictionary objectForKey:[NSNumber numberWithUnsignedInt:index]]) {
+        self.lastRequestedImage = index;
+        return nil;
+    }
+    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;
+    }
+    else {
+        self.lastRequestedNote = -1;
+        return [self.notesDictionary objectForKey:[NSNumber numberWithUnsignedInt:index]];
+    }
+}
+
+
+
+ at end
diff --git a/ios/iosremote/iosremote/Communication/pinValidation_vc.h b/ios/iosremote/iosremote/Communication/pinValidation_vc.h
new file mode 100644
index 0000000..6c7be76
--- /dev/null
+++ b/ios/iosremote/iosremote/Communication/pinValidation_vc.h
@@ -0,0 +1,16 @@
+//
+//  pinValidation_vcViewController.h
+//  iosremote
+//
+//  Created by Liu Siqi on 7/4/13.
+//  Copyright (c) 2013 libreoffice. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+
+ at interface pinValidation_vc : UIViewController
+
+ at property (weak, nonatomic) IBOutlet UILabel *pinLabel;
+ at property (weak, nonatomic) IBOutlet UILabel *statusLabel;
+
+ at end
diff --git a/ios/iosremote/iosremote/Communication/pinValidation_vc.m b/ios/iosremote/iosremote/Communication/pinValidation_vc.m
new file mode 100644
index 0000000..14dadee
--- /dev/null
+++ b/ios/iosremote/iosremote/Communication/pinValidation_vc.m
@@ -0,0 +1,70 @@
+//
+//  pinValidation_vcViewController.m
+//  iosremote
+//
+//  Created by Liu Siqi on 7/4/13.
+//  Copyright (c) 2013 libreoffice. All rights reserved.
+//
+
+#import "pinValidation_vc.h"
+#import "slideShowPreview_vc.h"
+#import "SlideShow.h"
+#import "CommandInterpreter.h"
+#import "CommunicationManager.h"
+
+ at interface pinValidation_vc ()
+
+ at property (nonatomic, strong) CommunicationManager *comManager;
+ at property (nonatomic, strong) id slideShowPreviewStartObserver;
+
+ at end
+
+ at implementation pinValidation_vc
+
+ at synthesize comManager = _comManager;
+ at synthesize slideShowPreviewStartObserver = _slideShowPreviewStartObserver;
+
+- (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.
+    self.comManager = [CommunicationManager sharedComManager];
+    [self.pinLabel setText:[NSString stringWithFormat:@"%@", [self.comManager getPairingPin]]];
+    NSOperationQueue *mainQueue = [NSOperationQueue mainQueue];
+    self.slideShowPreviewStartObserver = [[NSNotificationCenter defaultCenter] addObserverForName:STATUS_CONNECTED_SLIDESHOW_RUNNING
+                                                                                           object:nil
+                                                                                            queue:mainQueue
+                                                                                       usingBlock:^(NSNotification *note) {
+                                                                       [self performSegueWithIdentifier:@"pinValidated" sender:self ];
+                                                                   }];
+}
+
+- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
+    if ([segue.identifier isEqualToString:@"pinValidated"]) {
+        slideShowPreview_vc *destViewController = segue.destinationViewController;
+        destViewController.slideshow = [self.comManager.interpreter slideShow];
+        [destViewController.slideshow setDelegate:destViewController];
+    }
+}
+
+- (void)didReceiveMemoryWarning
+{
+    [super didReceiveMemoryWarning];
+    // Dispose of any resources that can be recreated.
+}
+
+- (void)viewDidUnload {
+    [self setPinLabel:nil];
+    [self setStatusLabel:nil];
+    [super viewDidUnload];
+}
+ at end
diff --git a/ios/iosremote/iosremote/Default-568h at 2x.png b/ios/iosremote/iosremote/Default-568h at 2x.png
new file mode 100644
index 0000000..0891b7a
Binary files /dev/null and b/ios/iosremote/iosremote/Default-568h at 2x.png differ
diff --git a/ios/iosremote/iosremote/Default.png b/ios/iosremote/iosremote/Default.png
new file mode 100644
index 0000000..4c8ca6f
Binary files /dev/null and b/ios/iosremote/iosremote/Default.png differ
diff --git a/ios/iosremote/iosremote/Default at 2x.png b/ios/iosremote/iosremote/Default at 2x.png
new file mode 100644
index 0000000..35b84cf
Binary files /dev/null and b/ios/iosremote/iosremote/Default at 2x.png differ
diff --git a/ios/iosremote/iosremote/EditableTableViewCell.h b/ios/iosremote/iosremote/EditableTableViewCell.h
new file mode 100644
index 0000000..6dd1666
--- /dev/null
+++ b/ios/iosremote/iosremote/EditableTableViewCell.h
@@ -0,0 +1,14 @@
+// -*- Mode: ObjC; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+//
+// This file is part of the LibreOffice project.
+//
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#import <UIKit/UIKit.h>
+
+ at interface EditableTableViewCell : UITableViewCell
+    @property (weak, nonatomic) UITextField * textField;
+    @property (weak, nonatomic) UILabel * inputLabel;
+ at end
diff --git a/ios/iosremote/iosremote/EditableTableViewCell.m b/ios/iosremote/iosremote/EditableTableViewCell.m
new file mode 100644
index 0000000..73199a0
--- /dev/null
+++ b/ios/iosremote/iosremote/EditableTableViewCell.m
@@ -0,0 +1,54 @@
+// -*- Mode: ObjC; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+//
+// This file is part of the LibreOffice project.
+//
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#import "EditableTableViewCell.h"
+
+ at implementation EditableTableViewCell
+
+ at synthesize inputLabel = _inputLabel;
+ at synthesize textField = _textField;
+
+- (id)initWithStyle:(UITableViewCellStyle)style
+    reuseIdentifier:(NSString *)identifier
+{
+    self = [super initWithStyle:style reuseIdentifier:identifier];
+    
+    if (self == nil)
+    {
+        return nil;
+    }
+    
+    CGRect bounds = [[self contentView] bounds];
+    CGRect rect = CGRectInset(bounds, 20.0, 10.0);
+    UITextField *textField = [[UITextField alloc] initWithFrame:rect];
+    
+    //  Set the keyboard's return key label to 'Next'.
+    //
+    [textField setReturnKeyType:UIReturnKeyNext];
+    
+    //  Make the clear button appear automatically.
+    [textField setClearButtonMode:UITextFieldViewModeWhileEditing];
+    [textField setOpaque:YES];
+    
+    [[self contentView] addSubview:textField];
+    [self setTextField:textField];
+    
+    return self;
+}
+
+//  Disable highlighting of currently selected cell.
+//
+- (void)setSelected:(BOOL)selected
+           animated:(BOOL)animated
+{
+    [super setSelected:selected animated:NO];
+    
+    [self setSelectionStyle:UITableViewCellSelectionStyleNone];
+}
+
+ at end
diff --git a/ios/iosremote/iosremote/en.lproj/InfoPlist.strings b/ios/iosremote/iosremote/en.lproj/InfoPlist.strings
new file mode 100644
index 0000000..477b28f
--- /dev/null
+++ b/ios/iosremote/iosremote/en.lproj/InfoPlist.strings
@@ -0,0 +1,2 @@
+/* Localized versions of Info.plist keys */
+
diff --git a/ios/iosremote/iosremote/en.lproj/MainStoryboard_iPhone.storyboard b/ios/iosremote/iosremote/en.lproj/MainStoryboard_iPhone.storyboard
new file mode 100644
index 0000000..29c4a32
--- /dev/null
+++ b/ios/iosremote/iosremote/en.lproj/MainStoryboard_iPhone.storyboard
@@ -0,0 +1,357 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="2.0" toolsVersion="3084" systemVersion="13A497d" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" initialViewController="qoG-TN-hN0">
+    <dependencies>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="2083"/>
+    </dependencies>
+    <scenes>
+        <!--Server list vc - Connect-->
+        <scene sceneID="5">
+            <objects>
+                <viewController id="2" customClass="server_list_vc" sceneMemberID="viewController">
+                    <tableView key="view" clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" showsSelectionImmediatelyOnTouchBegin="NO" rowHeight="44" sectionHeaderHeight="22" sectionFooterHeight="22" id="naQ-T4-jWV">
+                        <rect key="frame" x="0.0" y="64" width="320" height="504"/>
+                        <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
+                        <prototypes>
+                            <tableViewCell contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" reuseIdentifier="server_item_cell" editingAccessoryType="disclosureIndicator" textLabel="Rg3-PU-OuS" detailTextLabel="9Mc-gD-acc" style="IBUITableViewCellStyleValue1" id="Pvl-Uw-Ghs">
+                                <rect key="frame" x="0.0" y="22" width="320" height="44"/>
+                                <autoresizingMask key="autoresizingMask"/>
+                                <view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">
+                                    <rect key="frame" x="0.0" y="0.0" width="320" height="43"/>
+                                    <autoresizingMask key="autoresizingMask"/>
+                                    <subviews>
+                                        <label opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="left" text="Title" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="Rg3-PU-OuS">
+                                            <rect key="frame" x="10" y="11" width="35" height="21"/>
+                                            <fontDescription key="fontDescription" type="boldSystem" pointSize="17"/>
+                                            <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
+                                            <color key="highlightedColor" red="1" green="1" blue="1" alpha="1" colorSpace="calibratedRGB"/>
+                                        </label>
+                                        <label opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="left" text="Detail" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="9Mc-gD-acc">
+                                            <rect key="frame" x="266" y="11" width="44" height="21"/>
+                                            <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                                            <color key="textColor" red="0.21960784310000001" green="0.3294117647" blue="0.52941176469999995" alpha="1" colorSpace="calibratedRGB"/>
+                                            <color key="highlightedColor" red="1" green="1" blue="1" alpha="1" colorSpace="calibratedRGB"/>
+                                        </label>
+                                    </subviews>
+                                    <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
+                                </view>
+                            </tableViewCell>
+                        </prototypes>
+                        <connections>
+                            <outlet property="dataSource" destination="2" id="dcg-jo-7eE"/>
+                            <outlet property="delegate" destination="2" id="owZ-Ow-VEc"/>
+                        </connections>
+                    </tableView>
+                    <navigationItem key="navigationItem" title="Connect" id="yR1-m8-JWN">
+                        <barButtonItem key="rightBarButtonItem" systemItem="add" id="bHy-yX-SPg">
+                            <connections>
+                                <segue destination="maT-Bx-l5y" kind="push" identifier="create_new_server" id="UYr-8d-fk5"/>
+                            </connections>
+                        </barButtonItem>
+                    </navigationItem>
+                    <connections>
+                        <outlet property="serverTable" destination="naQ-T4-jWV" id="hd3-Vm-fk6"/>
+                        <segue destination="UPe-3R-KdQ" kind="push" identifier="pinValidation" id="UQQ-pV-3o3"/>
+                        <segue destination="vs3-ES-U9h" kind="push" identifier="SlideShowPreview" id="YBj-zE-J7L"/>
+                    </connections>
+                </viewController>
+                <placeholder placeholderIdentifier="IBFirstResponder" id="4" sceneMemberID="firstResponder"/>
+            </objects>
+            <point key="canvasLocation" x="528" y="118"/>
+        </scene>
+        <!--Pin Validation vc-->
+        <scene sceneID="aCW-l9-UDx">
+            <objects>
+                <viewController id="UPe-3R-KdQ" customClass="pinValidation_vc" sceneMemberID="viewController">
+                    <view key="view" contentMode="scaleToFill" id="UGV-xw-Sxo">
+                        <rect key="frame" x="0.0" y="64" width="320" height="504"/>
+                        <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                        <subviews>
+                            <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="3128" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="f2u-bG-5ak">
+                                <rect key="frame" x="79" y="93" width="163" height="81"/>
+                                <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
+                                <fontDescription key="fontDescription" name="HelveticaNeue-UltraLight" family="Helvetica Neue" pointSize="73"/>
+                                <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
+                                <nil key="highlightedColor"/>
+                            </label>
+                            <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Please enter the pin code above in Impress - Slide Show - Impress Remote" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="upW-oF-qOa">
+                                <rect key="frame" x="29" y="208" width="271" height="53"/>
+                                <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES" flexibleMaxY="YES"/>
+                                <fontDescription key="fontDescription" name="Helvetica-Light" family="Helvetica" pointSize="15"/>
+                                <color key="textColor" name="alternateSelectedControlColor" catalog="System" colorSpace="catalog"/>
+                                <nil key="highlightedColor"/>
+                            </label>
+                            <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Waiting for validation from Impress..." lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="lSD-BG-kVe">
+                                <rect key="frame" x="33" y="380" width="276" height="21"/>
+                                <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
+                                <fontDescription key="fontDescription" name="Helvetica-Light" family="Helvetica" pointSize="15"/>
+                                <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
+                                <nil key="highlightedColor"/>
+                            </label>
+                        </subviews>
+                        <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
+                    </view>
+                    <navigationItem key="navigationItem" id="c3o-oA-oin"/>
+                    <connections>
+                        <outlet property="pinLabel" destination="f2u-bG-5ak" id="Y7S-6h-awe"/>
+                        <outlet property="statusLabel" destination="lSD-BG-kVe" id="mmM-4x-ktw"/>
+                        <segue destination="vs3-ES-U9h" kind="push" identifier="pinValidated" id="geL-Q8-f61"/>
+                    </connections>
+                </viewController>
+                <placeholder placeholderIdentifier="IBFirstResponder" id="iok-RC-uS6" userLabel="First Responder" sceneMemberID="firstResponder"/>
+            </objects>
+            <point key="canvasLocation" x="528" y="872"/>
+        </scene>
+        <!--New Server View Controller - New Server-->
+        <scene sceneID="tlJ-c5-Jp2">
+            <objects>
+                <tableViewController id="maT-Bx-l5y" customClass="newServerViewController" sceneMemberID="viewController">
+                    <tableView key="view" opaque="NO" clipsSubviews="YES" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="static" style="grouped" separatorStyle="singleLineEtched" rowHeight="44" sectionHeaderHeight="10" sectionFooterHeight="10" id="VUL-K7-xsS">
+                        <rect key="frame" x="0.0" y="64" width="320" height="504"/>
+                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                        <color key="backgroundColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/>
+                        <sections>
+                            <tableViewSection footerTitle="Register a new server and remeber it for future connection" id="46W-NE-CYW">
+                                <cells>
+                                    <tableViewCell contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" id="EN9-tY-k4P" customClass="EditableTableViewCell">
+                                        <rect key="frame" x="0.0" y="10" width="320" height="45"/>
+                                        <autoresizingMask key="autoresizingMask"/>
+                                        <view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">
+                                            <rect key="frame" x="10" y="1" width="300" height="43"/>
+                                            <autoresizingMask key="autoresizingMask"/>
+                                            <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
+                                        </view>
+                                    </tableViewCell>
+                                    <tableViewCell contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" id="qeE-95-2Gh" customClass="EditableTableViewCell">
+                                        <rect key="frame" x="0.0" y="55" width="320" height="45"/>
+                                        <autoresizingMask key="autoresizingMask"/>
+                                        <view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">
+                                            <rect key="frame" x="10" y="0.0" width="300" height="43"/>
+                                            <autoresizingMask key="autoresizingMask"/>
+                                            <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
+                                        </view>
+                                    </tableViewCell>
+                                </cells>
+                            </tableViewSection>
+                        </sections>
+                        <connections>
+                            <outlet property="dataSource" destination="maT-Bx-l5y" id="B5v-aO-O0a"/>
+                            <outlet property="delegate" destination="maT-Bx-l5y" id="Q3h-jf-Kor"/>
+                        </connections>
+                    </tableView>
+                    <navigationItem key="navigationItem" title="New Server" id="qbR-M4-5O0">
+                        <barButtonItem key="rightBarButtonItem" systemItem="save" id="sqC-Fa-Vem">
+                            <connections>
+                                <action selector="save:" destination="maT-Bx-l5y" id="OtP-lO-h9g"/>
+                            </connections>
+                        </barButtonItem>
+                    </navigationItem>
+                </tableViewController>
+                <placeholder placeholderIdentifier="IBFirstResponder" id="b5I-aN-vyr" userLabel="First Responder" sceneMemberID="firstResponder"/>
+            </objects>
+            <point key="canvasLocation" x="1052" y="-63"/>
+        </scene>
+        <!--View Controller-->
+        <scene sceneID="ccD-EG-LMW">
+            <objects>
+                <viewController id="vs3-ES-U9h" sceneMemberID="viewController">
+                    <view key="view" contentMode="scaleToFill" id="JzX-I7-Mwa">
+                        <rect key="frame" x="0.0" y="64" width="320" height="504"/>
+                        <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                        <subviews>
+                            <containerView contentMode="scaleToFill" id="gBf-8h-qAQ">
+                                <rect key="frame" x="0.0" y="196" width="320" height="308"/>
+                                <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                                <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
+                                <connections>
+                                    <segue destination="Ybo-9c-MB8" kind="embed" id="7Sk-Ca-Deq"/>
+                                </connections>
+                            </containerView>
+                            <containerView contentMode="scaleToFill" id="rEU-8Z-ftD">
+                                <rect key="frame" x="0.0" y="0.0" width="320" height="197"/>
+                                <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
+                                <connections>
+                                    <segue destination="HMh-Ba-7X9" kind="embed" id="Uql-bR-9Sk"/>
+                                </connections>
+                            </containerView>
+                        </subviews>
+                        <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
+                    </view>
+                    <navigationItem key="navigationItem" id="rqp-6S-yX6"/>
+                </viewController>
+                <placeholder placeholderIdentifier="IBFirstResponder" id="APz-RZ-QFt" userLabel="First Responder" sceneMemberID="firstResponder"/>
+            </objects>
+            <point key="canvasLocation" x="1052" y="695"/>
+        </scene>
+        <!--Slide Show Preview Table vc-->
+        <scene sceneID="Tvi-bD-vMC">
+            <objects>
+                <tableViewController id="Ybo-9c-MB8" customClass="slideShowPreviewTable_vc" sceneMemberID="viewController">
+                    <tableView key="view" opaque="NO" clipsSubviews="YES" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="static" style="grouped" separatorStyle="singleLineEtched" rowHeight="44" sectionHeaderHeight="10" sectionFooterHeight="10" id="rWA-v3-wtf">
+                        <rect key="frame" x="0.0" y="0.0" width="320" height="308"/>
+                        <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES" heightSizable="YES"/>
+                        <color key="backgroundColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/>
+                        <sections>
+                            <tableViewSection id="8wQ-rK-ve4">
+                                <cells>
+                                    <tableViewCell contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" id="0D7-tO-bVg">
+                                        <rect key="frame" x="0.0" y="10" width="320" height="45"/>
+                                        <autoresizingMask key="autoresizingMask"/>
+                                        <view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">
+                                            <rect key="frame" x="10" y="1" width="300" height="43"/>
+                                            <autoresizingMask key="autoresizingMask"/>
+                                            <subviews>
+                                                <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Lecturer's notes" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="cqt-7d-BbV">
+                                                    <rect key="frame" x="20" y="11" width="121" height="21"/>
+                                                    <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                                    <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                                                    <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
+                                                    <color key="highlightedColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
+                                                </label>
+                                                <switch opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" on="YES" id="Vmo-Lk-YLZ">
+                                                    <rect key="frame" x="203" y="8" width="79" height="27"/>
+                                                    <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                                </switch>
+                                            </subviews>
+                                            <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
+                                        </view>
+                                    </tableViewCell>
+                                    <tableViewCell contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" id="LrN-2p-yDw">
+                                        <rect key="frame" x="0.0" y="55" width="320" height="44"/>
+                                        <autoresizingMask key="autoresizingMask"/>
+                                        <view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">
+                                            <rect key="frame" x="10" y="0.0" width="300" height="43"/>
+                                            <autoresizingMask key="autoresizingMask"/>
+                                            <subviews>
+                                                <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Timer" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="c2r-cZ-hoW">
+                                                    <rect key="frame" x="20" y="11" width="44" height="21"/>
+                                                    <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                                    <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                                                    <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
+                                                    <color key="highlightedColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
+                                                </label>
+                                                <switch opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" on="YES" id="hp6-Kp-ujK">
+                                                    <rect key="frame" x="203" y="8" width="79" height="27"/>
+                                                    <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                                </switch>
+                                            </subviews>
+                                            <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
+                                        </view>
+                                    </tableViewCell>
+                                    <tableViewCell contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" id="Cdv-T8-mH7">
+                                        <rect key="frame" x="0.0" y="99" width="320" height="45"/>
+                                        <autoresizingMask key="autoresizingMask"/>
+                                        <view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">
+                                            <rect key="frame" x="10" y="0.0" width="300" height="43"/>
+                                            <autoresizingMask key="autoresizingMask"/>
+                                            <subviews>
+                                                <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Pointer" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="5wf-j3-OjO">
+                                                    <rect key="frame" x="20" y="11" width="54" height="21"/>
+                                                    <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                                    <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                                                    <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
+                                                    <color key="highlightedColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
+                                                </label>

... etc. - the rest is truncated


More information about the Libreoffice-commits mailing list