From 074928ae9da1aee1b9e07fb12fd1fa64afd2f107 Mon Sep 17 00:00:00 2001 From: Syed Arsalan Pervez Date: Wed, 20 Feb 2013 03:22:40 +0500 Subject: [PATCH 1/4] Initial Commit Unit tests are only in non-ARC project. --- .gitignore | 1 + .../YakimbiTest.xcodeproj/project.pbxproj | 698 +++++++ .../contents.xcworkspacedata | 7 + .../UserInterfaceState.xcuserstate | Bin 0 -> 76114 bytes .../xcdebugger/Expressions.xcexplist | 25 + .../xcdebugger/Breakpoints.xcbkptlist | 5 + .../xcschemes/YakimbiTest.xcscheme | 96 + .../xcschemes/xcschememanagement.plist | 27 + .../Additions/NSDictionary+Addition.h | 15 + .../Additions/NSDictionary+Addition.m | 43 + YakimbiTest/YakimbiTest/AppDelegate.h | 18 + YakimbiTest/YakimbiTest/AppDelegate.m | 62 + YakimbiTest/YakimbiTest/Cells/FileViewCell.h | 25 + YakimbiTest/YakimbiTest/Cells/FileViewCell.m | 29 + .../YakimbiTest/Cells/FileViewCell.xib | 446 +++++ .../YakimbiTest/Cells/FileViewCell_iPad.xib | 443 +++++ .../YakimbiTest/Cells/FolderViewCell.h | 20 + .../YakimbiTest/Cells/FolderViewCell.m | 13 + .../YakimbiTest/Cells/FolderViewCell.xib | 265 +++ .../YakimbiTest/Cells/FolderViewCell_iPad.xib | 240 +++ .../Custom/MyNavigationController.h | 13 + .../Custom/MyNavigationController.m | 27 + YakimbiTest/YakimbiTest/DB Files/File.h | 39 + YakimbiTest/YakimbiTest/DB Files/File.m | 38 + YakimbiTest/YakimbiTest/DB Files/Folder.h | 29 + YakimbiTest/YakimbiTest/DB Files/Folder.m | 21 + YakimbiTest/YakimbiTest/DB Files/User.h | 34 + YakimbiTest/YakimbiTest/DB Files/User.m | 25 + .../YakimbiTest/Database/DatabaseHandler.h | 58 + .../YakimbiTest/Database/DatabaseHandler.m | 336 ++++ YakimbiTest/YakimbiTest/Default-568h@2x.png | Bin 0 -> 18594 bytes YakimbiTest/YakimbiTest/Default.png | Bin 0 -> 6540 bytes YakimbiTest/YakimbiTest/Default@2x.png | Bin 0 -> 16107 bytes .../Network/HTTPRequestOperation.h | 65 + .../Network/HTTPRequestOperation.m | 316 +++ YakimbiTest/YakimbiTest/Parsers/Parser.h | 38 + YakimbiTest/YakimbiTest/Parsers/Parser.m | 195 ++ .../YakimbiTest/Utilities/AppConstants.h | 21 + .../YakimbiTest/Utilities/AppConstants.m | 13 + YakimbiTest/YakimbiTest/Utilities/Macros.h | 40 + .../ViewControllers/InfoViewController.h | 21 + .../ViewControllers/InfoViewController.m | 38 + .../ViewControllers/InfoViewController.xib | 238 +++ .../ViewControllers/ListViewController.h | 28 + .../ViewControllers/ListViewController.m | 260 +++ .../ViewControllers/ListViewController.xib | 284 +++ .../ListViewController_iPad.xib | 340 ++++ .../ViewControllers/MainViewController.h | 29 + .../ViewControllers/MainViewController.m | 256 +++ .../ViewControllers/MainViewController.xib | 303 +++ .../MainViewController_iPad.xib | 307 +++ .../ViewControllers/TableViewController.h | 18 + .../ViewControllers/TableViewController.m | 119 ++ .../ViewControllers/TableViewController.xib | 140 ++ .../YakimbiTest/YakimbiTest-Info.plist | 45 + .../YakimbiTest/YakimbiTest-Prefix.pch | 26 + .../.xccurrentversion | 8 + .../YakimbiTest.xcdatamodel/contents | 49 + .../YakimbiTest/en.lproj/InfoPlist.strings | 2 + YakimbiTest/YakimbiTest/main.m | 18 + .../YakimbiTestTests-Info.plist | 22 + .../YakimbiTestTests/YakimbiTestTests.h | 16 + .../YakimbiTestTests/YakimbiTestTests.m | 135 ++ .../en.lproj/InfoPlist.strings | 2 + YakimbiTest/YakimbiTestTests/test.json | 1718 +++++++++++++++++ .../YakimbiTest.xcodeproj/project.pbxproj | 696 +++++++ .../contents.xcworkspacedata | 7 + .../UserInterfaceState.xcuserstate | Bin 0 -> 122311 bytes .../xcdebugger/Expressions.xcexplist | 25 + .../xcdebugger/Breakpoints.xcbkptlist | 14 + .../xcschemes/YakimbiTest.xcscheme | 96 + .../xcschemes/xcschememanagement.plist | 27 + .../Additions/NSDictionary+Addition.h | 15 + .../Additions/NSDictionary+Addition.m | 43 + YakimbiTestUsingARC/YakimbiTest/AppDelegate.h | 18 + YakimbiTestUsingARC/YakimbiTest/AppDelegate.m | 54 + .../YakimbiTest/Cells/FileViewCell.h | 25 + .../YakimbiTest/Cells/FileViewCell.m | 29 + .../YakimbiTest/Cells/FileViewCell.xib | 456 +++++ .../YakimbiTest/Cells/FileViewCell_iPad.xib | 452 +++++ .../YakimbiTest/Cells/FolderViewCell.h | 20 + .../YakimbiTest/Cells/FolderViewCell.m | 13 + .../YakimbiTest/Cells/FolderViewCell.xib | 270 +++ .../YakimbiTest/Cells/FolderViewCell_iPad.xib | 271 +++ .../Custom/MyNavigationController.h | 13 + .../Custom/MyNavigationController.m | 27 + .../YakimbiTest/DB Files/File.h | 39 + .../YakimbiTest/DB Files/File.m | 38 + .../YakimbiTest/DB Files/Folder.h | 29 + .../YakimbiTest/DB Files/Folder.m | 21 + .../YakimbiTest/DB Files/User.h | 34 + .../YakimbiTest/DB Files/User.m | 25 + .../YakimbiTest/Database/DatabaseHandler.h | 57 + .../YakimbiTest/Database/DatabaseHandler.m | 315 +++ .../YakimbiTest/Default-568h@2x.png | Bin 0 -> 18594 bytes YakimbiTestUsingARC/YakimbiTest/Default.png | Bin 0 -> 6540 bytes .../YakimbiTest/Default@2x.png | Bin 0 -> 16107 bytes .../Network/HTTPRequestOperation.h | 65 + .../Network/HTTPRequestOperation.m | 301 +++ .../YakimbiTest/Parsers/Parser.h | 38 + .../YakimbiTest/Parsers/Parser.m | 182 ++ .../YakimbiTest/Utilities/AppConstants.h | 21 + .../YakimbiTest/Utilities/AppConstants.m | 13 + .../YakimbiTest/Utilities/Macros.h | 40 + .../ViewControllers/InfoViewController.h | 21 + .../ViewControllers/InfoViewController.m | 31 + .../ViewControllers/InfoViewController.xib | 238 +++ .../ViewControllers/ListViewController.h | 30 + .../ViewControllers/ListViewController.m | 247 +++ .../ViewControllers/ListViewController.xib | 284 +++ .../ListViewController_iPad.xib | 340 ++++ .../ViewControllers/MainViewController.h | 31 + .../ViewControllers/MainViewController.m | 241 +++ .../ViewControllers/MainViewController.xib | 303 +++ .../MainViewController_iPad.xib | 307 +++ .../ViewControllers/TableViewController.h | 18 + .../ViewControllers/TableViewController.m | 119 ++ .../ViewControllers/TableViewController.xib | 140 ++ .../YakimbiTest/YakimbiTest-Info.plist | 45 + .../YakimbiTest/YakimbiTest-Prefix.pch | 26 + .../.xccurrentversion | 8 + .../YakimbiTest.xcdatamodel/contents | 49 + .../YakimbiTest/en.lproj/InfoPlist.strings | 2 + YakimbiTestUsingARC/YakimbiTest/main.m | 18 + .../YakimbiTestTests-Info.plist | 22 + .../YakimbiTestTests/YakimbiTestTests.h | 13 + .../YakimbiTestTests/YakimbiTestTests.m | 32 + .../en.lproj/InfoPlist.strings | 2 + 128 files changed, 14564 insertions(+) create mode 100644 .gitignore create mode 100644 YakimbiTest/YakimbiTest.xcodeproj/project.pbxproj create mode 100644 YakimbiTest/YakimbiTest.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 YakimbiTest/YakimbiTest.xcodeproj/project.xcworkspace/xcuserdata/SAPMBP.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 YakimbiTest/YakimbiTest.xcodeproj/project.xcworkspace/xcuserdata/SAPMBP.xcuserdatad/xcdebugger/Expressions.xcexplist create mode 100644 YakimbiTest/YakimbiTest.xcodeproj/xcuserdata/SAPMBP.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist create mode 100644 YakimbiTest/YakimbiTest.xcodeproj/xcuserdata/SAPMBP.xcuserdatad/xcschemes/YakimbiTest.xcscheme create mode 100644 YakimbiTest/YakimbiTest.xcodeproj/xcuserdata/SAPMBP.xcuserdatad/xcschemes/xcschememanagement.plist create mode 100644 YakimbiTest/YakimbiTest/Additions/NSDictionary+Addition.h create mode 100644 YakimbiTest/YakimbiTest/Additions/NSDictionary+Addition.m create mode 100644 YakimbiTest/YakimbiTest/AppDelegate.h create mode 100644 YakimbiTest/YakimbiTest/AppDelegate.m create mode 100644 YakimbiTest/YakimbiTest/Cells/FileViewCell.h create mode 100644 YakimbiTest/YakimbiTest/Cells/FileViewCell.m create mode 100644 YakimbiTest/YakimbiTest/Cells/FileViewCell.xib create mode 100644 YakimbiTest/YakimbiTest/Cells/FileViewCell_iPad.xib create mode 100644 YakimbiTest/YakimbiTest/Cells/FolderViewCell.h create mode 100644 YakimbiTest/YakimbiTest/Cells/FolderViewCell.m create mode 100644 YakimbiTest/YakimbiTest/Cells/FolderViewCell.xib create mode 100644 YakimbiTest/YakimbiTest/Cells/FolderViewCell_iPad.xib create mode 100644 YakimbiTest/YakimbiTest/Custom/MyNavigationController.h create mode 100644 YakimbiTest/YakimbiTest/Custom/MyNavigationController.m create mode 100644 YakimbiTest/YakimbiTest/DB Files/File.h create mode 100644 YakimbiTest/YakimbiTest/DB Files/File.m create mode 100644 YakimbiTest/YakimbiTest/DB Files/Folder.h create mode 100644 YakimbiTest/YakimbiTest/DB Files/Folder.m create mode 100644 YakimbiTest/YakimbiTest/DB Files/User.h create mode 100644 YakimbiTest/YakimbiTest/DB Files/User.m create mode 100755 YakimbiTest/YakimbiTest/Database/DatabaseHandler.h create mode 100755 YakimbiTest/YakimbiTest/Database/DatabaseHandler.m create mode 100644 YakimbiTest/YakimbiTest/Default-568h@2x.png create mode 100644 YakimbiTest/YakimbiTest/Default.png create mode 100644 YakimbiTest/YakimbiTest/Default@2x.png create mode 100644 YakimbiTest/YakimbiTest/Network/HTTPRequestOperation.h create mode 100644 YakimbiTest/YakimbiTest/Network/HTTPRequestOperation.m create mode 100644 YakimbiTest/YakimbiTest/Parsers/Parser.h create mode 100644 YakimbiTest/YakimbiTest/Parsers/Parser.m create mode 100644 YakimbiTest/YakimbiTest/Utilities/AppConstants.h create mode 100644 YakimbiTest/YakimbiTest/Utilities/AppConstants.m create mode 100644 YakimbiTest/YakimbiTest/Utilities/Macros.h create mode 100644 YakimbiTest/YakimbiTest/ViewControllers/InfoViewController.h create mode 100644 YakimbiTest/YakimbiTest/ViewControllers/InfoViewController.m create mode 100644 YakimbiTest/YakimbiTest/ViewControllers/InfoViewController.xib create mode 100644 YakimbiTest/YakimbiTest/ViewControllers/ListViewController.h create mode 100644 YakimbiTest/YakimbiTest/ViewControllers/ListViewController.m create mode 100644 YakimbiTest/YakimbiTest/ViewControllers/ListViewController.xib create mode 100644 YakimbiTest/YakimbiTest/ViewControllers/ListViewController_iPad.xib create mode 100644 YakimbiTest/YakimbiTest/ViewControllers/MainViewController.h create mode 100644 YakimbiTest/YakimbiTest/ViewControllers/MainViewController.m create mode 100644 YakimbiTest/YakimbiTest/ViewControllers/MainViewController.xib create mode 100644 YakimbiTest/YakimbiTest/ViewControllers/MainViewController_iPad.xib create mode 100644 YakimbiTest/YakimbiTest/ViewControllers/TableViewController.h create mode 100644 YakimbiTest/YakimbiTest/ViewControllers/TableViewController.m create mode 100644 YakimbiTest/YakimbiTest/ViewControllers/TableViewController.xib create mode 100644 YakimbiTest/YakimbiTest/YakimbiTest-Info.plist create mode 100644 YakimbiTest/YakimbiTest/YakimbiTest-Prefix.pch create mode 100644 YakimbiTest/YakimbiTest/YakimbiTest.xcdatamodeld/.xccurrentversion create mode 100644 YakimbiTest/YakimbiTest/YakimbiTest.xcdatamodeld/YakimbiTest.xcdatamodel/contents create mode 100644 YakimbiTest/YakimbiTest/en.lproj/InfoPlist.strings create mode 100644 YakimbiTest/YakimbiTest/main.m create mode 100644 YakimbiTest/YakimbiTestTests/YakimbiTestTests-Info.plist create mode 100644 YakimbiTest/YakimbiTestTests/YakimbiTestTests.h create mode 100644 YakimbiTest/YakimbiTestTests/YakimbiTestTests.m create mode 100644 YakimbiTest/YakimbiTestTests/en.lproj/InfoPlist.strings create mode 100644 YakimbiTest/YakimbiTestTests/test.json create mode 100644 YakimbiTestUsingARC/YakimbiTest.xcodeproj/project.pbxproj create mode 100644 YakimbiTestUsingARC/YakimbiTest.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 YakimbiTestUsingARC/YakimbiTest.xcodeproj/project.xcworkspace/xcuserdata/SAPMBP.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 YakimbiTestUsingARC/YakimbiTest.xcodeproj/project.xcworkspace/xcuserdata/SAPMBP.xcuserdatad/xcdebugger/Expressions.xcexplist create mode 100644 YakimbiTestUsingARC/YakimbiTest.xcodeproj/xcuserdata/SAPMBP.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist create mode 100644 YakimbiTestUsingARC/YakimbiTest.xcodeproj/xcuserdata/SAPMBP.xcuserdatad/xcschemes/YakimbiTest.xcscheme create mode 100644 YakimbiTestUsingARC/YakimbiTest.xcodeproj/xcuserdata/SAPMBP.xcuserdatad/xcschemes/xcschememanagement.plist create mode 100644 YakimbiTestUsingARC/YakimbiTest/Additions/NSDictionary+Addition.h create mode 100644 YakimbiTestUsingARC/YakimbiTest/Additions/NSDictionary+Addition.m create mode 100644 YakimbiTestUsingARC/YakimbiTest/AppDelegate.h create mode 100644 YakimbiTestUsingARC/YakimbiTest/AppDelegate.m create mode 100644 YakimbiTestUsingARC/YakimbiTest/Cells/FileViewCell.h create mode 100644 YakimbiTestUsingARC/YakimbiTest/Cells/FileViewCell.m create mode 100644 YakimbiTestUsingARC/YakimbiTest/Cells/FileViewCell.xib create mode 100644 YakimbiTestUsingARC/YakimbiTest/Cells/FileViewCell_iPad.xib create mode 100644 YakimbiTestUsingARC/YakimbiTest/Cells/FolderViewCell.h create mode 100644 YakimbiTestUsingARC/YakimbiTest/Cells/FolderViewCell.m create mode 100644 YakimbiTestUsingARC/YakimbiTest/Cells/FolderViewCell.xib create mode 100644 YakimbiTestUsingARC/YakimbiTest/Cells/FolderViewCell_iPad.xib create mode 100644 YakimbiTestUsingARC/YakimbiTest/Custom/MyNavigationController.h create mode 100644 YakimbiTestUsingARC/YakimbiTest/Custom/MyNavigationController.m create mode 100644 YakimbiTestUsingARC/YakimbiTest/DB Files/File.h create mode 100644 YakimbiTestUsingARC/YakimbiTest/DB Files/File.m create mode 100644 YakimbiTestUsingARC/YakimbiTest/DB Files/Folder.h create mode 100644 YakimbiTestUsingARC/YakimbiTest/DB Files/Folder.m create mode 100644 YakimbiTestUsingARC/YakimbiTest/DB Files/User.h create mode 100644 YakimbiTestUsingARC/YakimbiTest/DB Files/User.m create mode 100755 YakimbiTestUsingARC/YakimbiTest/Database/DatabaseHandler.h create mode 100755 YakimbiTestUsingARC/YakimbiTest/Database/DatabaseHandler.m create mode 100644 YakimbiTestUsingARC/YakimbiTest/Default-568h@2x.png create mode 100644 YakimbiTestUsingARC/YakimbiTest/Default.png create mode 100644 YakimbiTestUsingARC/YakimbiTest/Default@2x.png create mode 100644 YakimbiTestUsingARC/YakimbiTest/Network/HTTPRequestOperation.h create mode 100644 YakimbiTestUsingARC/YakimbiTest/Network/HTTPRequestOperation.m create mode 100644 YakimbiTestUsingARC/YakimbiTest/Parsers/Parser.h create mode 100644 YakimbiTestUsingARC/YakimbiTest/Parsers/Parser.m create mode 100644 YakimbiTestUsingARC/YakimbiTest/Utilities/AppConstants.h create mode 100644 YakimbiTestUsingARC/YakimbiTest/Utilities/AppConstants.m create mode 100644 YakimbiTestUsingARC/YakimbiTest/Utilities/Macros.h create mode 100644 YakimbiTestUsingARC/YakimbiTest/ViewControllers/InfoViewController.h create mode 100644 YakimbiTestUsingARC/YakimbiTest/ViewControllers/InfoViewController.m create mode 100644 YakimbiTestUsingARC/YakimbiTest/ViewControllers/InfoViewController.xib create mode 100644 YakimbiTestUsingARC/YakimbiTest/ViewControllers/ListViewController.h create mode 100644 YakimbiTestUsingARC/YakimbiTest/ViewControllers/ListViewController.m create mode 100644 YakimbiTestUsingARC/YakimbiTest/ViewControllers/ListViewController.xib create mode 100644 YakimbiTestUsingARC/YakimbiTest/ViewControllers/ListViewController_iPad.xib create mode 100644 YakimbiTestUsingARC/YakimbiTest/ViewControllers/MainViewController.h create mode 100644 YakimbiTestUsingARC/YakimbiTest/ViewControllers/MainViewController.m create mode 100644 YakimbiTestUsingARC/YakimbiTest/ViewControllers/MainViewController.xib create mode 100644 YakimbiTestUsingARC/YakimbiTest/ViewControllers/MainViewController_iPad.xib create mode 100644 YakimbiTestUsingARC/YakimbiTest/ViewControllers/TableViewController.h create mode 100644 YakimbiTestUsingARC/YakimbiTest/ViewControllers/TableViewController.m create mode 100644 YakimbiTestUsingARC/YakimbiTest/ViewControllers/TableViewController.xib create mode 100644 YakimbiTestUsingARC/YakimbiTest/YakimbiTest-Info.plist create mode 100644 YakimbiTestUsingARC/YakimbiTest/YakimbiTest-Prefix.pch create mode 100644 YakimbiTestUsingARC/YakimbiTest/YakimbiTest.xcdatamodeld/.xccurrentversion create mode 100644 YakimbiTestUsingARC/YakimbiTest/YakimbiTest.xcdatamodeld/YakimbiTest.xcdatamodel/contents create mode 100644 YakimbiTestUsingARC/YakimbiTest/en.lproj/InfoPlist.strings create mode 100644 YakimbiTestUsingARC/YakimbiTest/main.m create mode 100644 YakimbiTestUsingARC/YakimbiTestTests/YakimbiTestTests-Info.plist create mode 100644 YakimbiTestUsingARC/YakimbiTestTests/YakimbiTestTests.h create mode 100644 YakimbiTestUsingARC/YakimbiTestTests/YakimbiTestTests.m create mode 100644 YakimbiTestUsingARC/YakimbiTestTests/en.lproj/InfoPlist.strings diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..496ee2c --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.DS_Store \ No newline at end of file diff --git a/YakimbiTest/YakimbiTest.xcodeproj/project.pbxproj b/YakimbiTest/YakimbiTest.xcodeproj/project.pbxproj new file mode 100644 index 0000000..b89a8e3 --- /dev/null +++ b/YakimbiTest/YakimbiTest.xcodeproj/project.pbxproj @@ -0,0 +1,698 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 26743EAD16D3FECE008E0446 /* MyNavigationController.m in Sources */ = {isa = PBXBuildFile; fileRef = 26743EAC16D3FECE008E0446 /* MyNavigationController.m */; }; + 26743EB416D40CB3008E0446 /* NSDictionary+Addition.m in Sources */ = {isa = PBXBuildFile; fileRef = 26743EB116D40CB3008E0446 /* NSDictionary+Addition.m */; }; + 26743EBF16D41E66008E0446 /* InfoViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 26743EBD16D41E66008E0446 /* InfoViewController.m */; }; + 26743EC016D41E66008E0446 /* InfoViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 26743EBE16D41E66008E0446 /* InfoViewController.xib */; }; + 26743ECA16D42940008E0446 /* test.json in Resources */ = {isa = PBXBuildFile; fileRef = 26743EC916D42940008E0446 /* test.json */; }; + 26743ECB16D42E28008E0446 /* test.json in Resources */ = {isa = PBXBuildFile; fileRef = 26743EC916D42940008E0446 /* test.json */; }; + 2676D1DC16D212A20019B3A5 /* AppConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 2676D1DB16D212A20019B3A5 /* AppConstants.m */; }; + 2676D1ED16D249990019B3A5 /* DatabaseHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 2676D1EC16D249990019B3A5 /* DatabaseHandler.m */; }; + 2676D1F016D250A20019B3A5 /* Folder.m in Sources */ = {isa = PBXBuildFile; fileRef = 2676D1EF16D250A20019B3A5 /* Folder.m */; }; + 2676D1F916D257570019B3A5 /* File.m in Sources */ = {isa = PBXBuildFile; fileRef = 2676D1F816D257570019B3A5 /* File.m */; }; + 2676D1FC16D27C3F0019B3A5 /* User.m in Sources */ = {isa = PBXBuildFile; fileRef = 2676D1FB16D27C3F0019B3A5 /* User.m */; }; + 2692E62D16D2B0E100D109BC /* ListViewController_iPad.xib in Resources */ = {isa = PBXBuildFile; fileRef = 2692E62916D2B0E100D109BC /* ListViewController_iPad.xib */; }; + 2692E62E16D2B0E100D109BC /* ListViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2692E62B16D2B0E100D109BC /* ListViewController.m */; }; + 2692E62F16D2B0E100D109BC /* ListViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 2692E62C16D2B0E100D109BC /* ListViewController.xib */; }; + 2692E63216D2BB5900D109BC /* FileViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 2692E63116D2BB5900D109BC /* FileViewCell.m */; }; + 2692E63616D2BBA800D109BC /* FileViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 2692E63516D2BBA800D109BC /* FileViewCell.xib */; }; + 2692E63816D2C20100D109BC /* Purple_Folder.png in Resources */ = {isa = PBXBuildFile; fileRef = 2692E63716D2C20100D109BC /* Purple_Folder.png */; }; + 2692E64016D2C78100D109BC /* FolderViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 2692E63F16D2C78100D109BC /* FolderViewCell.m */; }; + 2692E64216D2C78E00D109BC /* FolderViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 2692E64116D2C78E00D109BC /* FolderViewCell.xib */; }; + 2692E64616D2CE0600D109BC /* TableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2692E64416D2CE0600D109BC /* TableViewController.m */; }; + 2692E64716D2CE0600D109BC /* TableViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 2692E64516D2CE0600D109BC /* TableViewController.xib */; }; + 2692E64916D2D06C00D109BC /* FolderViewCell_iPad.xib in Resources */ = {isa = PBXBuildFile; fileRef = 2692E64816D2D06C00D109BC /* FolderViewCell_iPad.xib */; }; + 2692E64B16D2D18C00D109BC /* FileViewCell_iPad.xib in Resources */ = {isa = PBXBuildFile; fileRef = 2692E64A16D2D18C00D109BC /* FileViewCell_iPad.xib */; }; + 269F65E616CFAB9C00663B98 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 269F65E516CFAB9C00663B98 /* UIKit.framework */; }; + 269F65E816CFAB9C00663B98 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 269F65E716CFAB9C00663B98 /* Foundation.framework */; }; + 269F65EA16CFAB9C00663B98 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 269F65E916CFAB9C00663B98 /* CoreGraphics.framework */; }; + 269F65EC16CFAB9C00663B98 /* CoreData.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 269F65EB16CFAB9C00663B98 /* CoreData.framework */; }; + 269F65F216CFAB9C00663B98 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 269F65F016CFAB9C00663B98 /* InfoPlist.strings */; }; + 269F65F416CFAB9C00663B98 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 269F65F316CFAB9C00663B98 /* main.m */; }; + 269F65F816CFAB9C00663B98 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 269F65F716CFAB9C00663B98 /* AppDelegate.m */; }; + 269F65FA16CFAB9C00663B98 /* Default.png in Resources */ = {isa = PBXBuildFile; fileRef = 269F65F916CFAB9C00663B98 /* Default.png */; }; + 269F65FC16CFAB9C00663B98 /* Default@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 269F65FB16CFAB9C00663B98 /* Default@2x.png */; }; + 269F65FE16CFAB9C00663B98 /* Default-568h@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 269F65FD16CFAB9C00663B98 /* Default-568h@2x.png */; }; + 269F660116CFAB9C00663B98 /* YakimbiTest.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = 269F65FF16CFAB9C00663B98 /* YakimbiTest.xcdatamodeld */; }; + 269F660916CFAB9C00663B98 /* SenTestingKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 269F660816CFAB9C00663B98 /* SenTestingKit.framework */; }; + 269F660A16CFAB9C00663B98 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 269F65E516CFAB9C00663B98 /* UIKit.framework */; }; + 269F660B16CFAB9C00663B98 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 269F65E716CFAB9C00663B98 /* Foundation.framework */; }; + 269F660C16CFAB9C00663B98 /* CoreData.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 269F65EB16CFAB9C00663B98 /* CoreData.framework */; }; + 269F661416CFAB9C00663B98 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 269F661216CFAB9C00663B98 /* InfoPlist.strings */; }; + 269F661716CFAB9C00663B98 /* YakimbiTestTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 269F661616CFAB9C00663B98 /* YakimbiTestTests.m */; }; + 269F662216CFABCE00663B98 /* Parser.m in Sources */ = {isa = PBXBuildFile; fileRef = 269F662116CFABCE00663B98 /* Parser.m */; }; + 269F662816CFAC3400663B98 /* MainViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 269F662516CFAC3400663B98 /* MainViewController.m */; }; + 269F662916CFAC3400663B98 /* MainViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 269F662616CFAC3400663B98 /* MainViewController.xib */; }; + 269F662A16CFAC3400663B98 /* MainViewController_iPad.xib in Resources */ = {isa = PBXBuildFile; fileRef = 269F662716CFAC3400663B98 /* MainViewController_iPad.xib */; }; + 269F663216CFAF4B00663B98 /* HTTPRequestOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 269F663116CFAF4B00663B98 /* HTTPRequestOperation.m */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 269F660D16CFAB9C00663B98 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 269F65DA16CFAB9B00663B98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 269F65E116CFAB9B00663B98; + remoteInfo = YakimbiTest; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 26743EAB16D3FECE008E0446 /* MyNavigationController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MyNavigationController.h; path = Custom/MyNavigationController.h; sourceTree = ""; }; + 26743EAC16D3FECE008E0446 /* MyNavigationController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MyNavigationController.m; path = Custom/MyNavigationController.m; sourceTree = ""; }; + 26743EB016D40CB3008E0446 /* NSDictionary+Addition.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSDictionary+Addition.h"; sourceTree = ""; }; + 26743EB116D40CB3008E0446 /* NSDictionary+Addition.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSDictionary+Addition.m"; sourceTree = ""; }; + 26743EBC16D41E66008E0446 /* InfoViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = InfoViewController.h; path = ViewControllers/InfoViewController.h; sourceTree = ""; }; + 26743EBD16D41E66008E0446 /* InfoViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = InfoViewController.m; path = ViewControllers/InfoViewController.m; sourceTree = ""; }; + 26743EBE16D41E66008E0446 /* InfoViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = InfoViewController.xib; path = ViewControllers/InfoViewController.xib; sourceTree = ""; }; + 26743EC916D42940008E0446 /* test.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = test.json; sourceTree = ""; }; + 2676D1DA16D212A20019B3A5 /* AppConstants.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppConstants.h; path = Utilities/AppConstants.h; sourceTree = ""; }; + 2676D1DB16D212A20019B3A5 /* AppConstants.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AppConstants.m; path = Utilities/AppConstants.m; sourceTree = ""; }; + 2676D1EB16D249990019B3A5 /* DatabaseHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DatabaseHandler.h; sourceTree = ""; }; + 2676D1EC16D249990019B3A5 /* DatabaseHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DatabaseHandler.m; sourceTree = ""; }; + 2676D1EE16D250A20019B3A5 /* Folder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Folder.h; path = "DB Files/Folder.h"; sourceTree = ""; }; + 2676D1EF16D250A20019B3A5 /* Folder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = Folder.m; path = "DB Files/Folder.m"; sourceTree = ""; }; + 2676D1F716D257570019B3A5 /* File.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = File.h; path = "DB Files/File.h"; sourceTree = ""; }; + 2676D1F816D257570019B3A5 /* File.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = File.m; path = "DB Files/File.m"; sourceTree = ""; }; + 2676D1FA16D27C3F0019B3A5 /* User.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = User.h; path = "DB Files/User.h"; sourceTree = ""; }; + 2676D1FB16D27C3F0019B3A5 /* User.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = User.m; path = "DB Files/User.m"; sourceTree = ""; }; + 2692E62916D2B0E100D109BC /* ListViewController_iPad.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = ListViewController_iPad.xib; path = ViewControllers/ListViewController_iPad.xib; sourceTree = ""; }; + 2692E62A16D2B0E100D109BC /* ListViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ListViewController.h; path = ViewControllers/ListViewController.h; sourceTree = ""; }; + 2692E62B16D2B0E100D109BC /* ListViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ListViewController.m; path = ViewControllers/ListViewController.m; sourceTree = ""; }; + 2692E62C16D2B0E100D109BC /* ListViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = ListViewController.xib; path = ViewControllers/ListViewController.xib; sourceTree = ""; }; + 2692E63016D2BB5800D109BC /* FileViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FileViewCell.h; path = Cells/FileViewCell.h; sourceTree = ""; }; + 2692E63116D2BB5900D109BC /* FileViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = FileViewCell.m; path = Cells/FileViewCell.m; sourceTree = ""; }; + 2692E63516D2BBA800D109BC /* FileViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = FileViewCell.xib; path = Cells/FileViewCell.xib; sourceTree = ""; }; + 2692E63716D2C20100D109BC /* Purple_Folder.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = Purple_Folder.png; path = ../../../../Downloads/Purple_Folder.png; sourceTree = ""; }; + 2692E63E16D2C78100D109BC /* FolderViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FolderViewCell.h; path = Cells/FolderViewCell.h; sourceTree = ""; }; + 2692E63F16D2C78100D109BC /* FolderViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = FolderViewCell.m; path = Cells/FolderViewCell.m; sourceTree = ""; }; + 2692E64116D2C78E00D109BC /* FolderViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = FolderViewCell.xib; path = Cells/FolderViewCell.xib; sourceTree = ""; }; + 2692E64316D2CE0600D109BC /* TableViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TableViewController.h; path = ViewControllers/TableViewController.h; sourceTree = ""; }; + 2692E64416D2CE0600D109BC /* TableViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = TableViewController.m; path = ViewControllers/TableViewController.m; sourceTree = ""; }; + 2692E64516D2CE0600D109BC /* TableViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = TableViewController.xib; path = ViewControllers/TableViewController.xib; sourceTree = ""; }; + 2692E64816D2D06C00D109BC /* FolderViewCell_iPad.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = FolderViewCell_iPad.xib; path = Cells/FolderViewCell_iPad.xib; sourceTree = ""; }; + 2692E64A16D2D18C00D109BC /* FileViewCell_iPad.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = FileViewCell_iPad.xib; path = Cells/FileViewCell_iPad.xib; sourceTree = ""; }; + 269F65E216CFAB9C00663B98 /* YakimbiTest.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = YakimbiTest.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 269F65E516CFAB9C00663B98 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; + 269F65E716CFAB9C00663B98 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; + 269F65E916CFAB9C00663B98 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; + 269F65EB16CFAB9C00663B98 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = System/Library/Frameworks/CoreData.framework; sourceTree = SDKROOT; }; + 269F65EF16CFAB9C00663B98 /* YakimbiTest-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "YakimbiTest-Info.plist"; sourceTree = ""; }; + 269F65F116CFAB9C00663B98 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; + 269F65F316CFAB9C00663B98 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; + 269F65F516CFAB9C00663B98 /* YakimbiTest-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "YakimbiTest-Prefix.pch"; sourceTree = ""; }; + 269F65F616CFAB9C00663B98 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; + 269F65F716CFAB9C00663B98 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; + 269F65F916CFAB9C00663B98 /* Default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Default.png; sourceTree = ""; }; + 269F65FB16CFAB9C00663B98 /* Default@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default@2x.png"; sourceTree = ""; }; + 269F65FD16CFAB9C00663B98 /* Default-568h@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default-568h@2x.png"; sourceTree = ""; }; + 269F660016CFAB9C00663B98 /* YakimbiTest.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = YakimbiTest.xcdatamodel; sourceTree = ""; }; + 269F660716CFAB9C00663B98 /* YakimbiTestTests.octest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = YakimbiTestTests.octest; sourceTree = BUILT_PRODUCTS_DIR; }; + 269F660816CFAB9C00663B98 /* SenTestingKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SenTestingKit.framework; path = Library/Frameworks/SenTestingKit.framework; sourceTree = DEVELOPER_DIR; }; + 269F661116CFAB9C00663B98 /* YakimbiTestTests-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "YakimbiTestTests-Info.plist"; sourceTree = ""; }; + 269F661316CFAB9C00663B98 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; + 269F661516CFAB9C00663B98 /* YakimbiTestTests.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YakimbiTestTests.h; sourceTree = ""; }; + 269F661616CFAB9C00663B98 /* YakimbiTestTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YakimbiTestTests.m; sourceTree = ""; }; + 269F662016CFABCE00663B98 /* Parser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Parser.h; path = Parsers/Parser.h; sourceTree = ""; }; + 269F662116CFABCE00663B98 /* Parser.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = Parser.m; path = Parsers/Parser.m; sourceTree = ""; }; + 269F662416CFAC3400663B98 /* MainViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MainViewController.h; path = ViewControllers/MainViewController.h; sourceTree = ""; }; + 269F662516CFAC3400663B98 /* MainViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MainViewController.m; path = ViewControllers/MainViewController.m; sourceTree = ""; }; + 269F662616CFAC3400663B98 /* MainViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = MainViewController.xib; path = ViewControllers/MainViewController.xib; sourceTree = ""; }; + 269F662716CFAC3400663B98 /* MainViewController_iPad.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = MainViewController_iPad.xib; path = ViewControllers/MainViewController_iPad.xib; sourceTree = ""; }; + 269F662C16CFAC6E00663B98 /* Macros.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Macros.h; path = Utilities/Macros.h; sourceTree = ""; }; + 269F663016CFAF4B00663B98 /* HTTPRequestOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = HTTPRequestOperation.h; path = Network/HTTPRequestOperation.h; sourceTree = ""; }; + 269F663116CFAF4B00663B98 /* HTTPRequestOperation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = HTTPRequestOperation.m; path = Network/HTTPRequestOperation.m; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 269F65DF16CFAB9B00663B98 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 269F65E616CFAB9C00663B98 /* UIKit.framework in Frameworks */, + 269F65E816CFAB9C00663B98 /* Foundation.framework in Frameworks */, + 269F65EA16CFAB9C00663B98 /* CoreGraphics.framework in Frameworks */, + 269F65EC16CFAB9C00663B98 /* CoreData.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 269F660316CFAB9C00663B98 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 269F660916CFAB9C00663B98 /* SenTestingKit.framework in Frameworks */, + 269F660A16CFAB9C00663B98 /* UIKit.framework in Frameworks */, + 269F660B16CFAB9C00663B98 /* Foundation.framework in Frameworks */, + 269F660C16CFAB9C00663B98 /* CoreData.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 26743EAA16D3FEAB008E0446 /* Custom */ = { + isa = PBXGroup; + children = ( + 26743EAB16D3FECE008E0446 /* MyNavigationController.h */, + 26743EAC16D3FECE008E0446 /* MyNavigationController.m */, + ); + name = Custom; + sourceTree = ""; + }; + 26743EAF16D40CB3008E0446 /* Additions */ = { + isa = PBXGroup; + children = ( + 26743EB016D40CB3008E0446 /* NSDictionary+Addition.h */, + 26743EB116D40CB3008E0446 /* NSDictionary+Addition.m */, + ); + path = Additions; + sourceTree = ""; + }; + 26743EBB16D41E4A008E0446 /* Info View */ = { + isa = PBXGroup; + children = ( + 26743EBC16D41E66008E0446 /* InfoViewController.h */, + 26743EBD16D41E66008E0446 /* InfoViewController.m */, + 26743EBE16D41E66008E0446 /* InfoViewController.xib */, + ); + name = "Info View"; + sourceTree = ""; + }; + 2676D1E916D238690019B3A5 /* DB Files */ = { + isa = PBXGroup; + children = ( + 269F65FF16CFAB9C00663B98 /* YakimbiTest.xcdatamodeld */, + 2676D1FA16D27C3F0019B3A5 /* User.h */, + 2676D1FB16D27C3F0019B3A5 /* User.m */, + 2676D1F716D257570019B3A5 /* File.h */, + 2676D1F816D257570019B3A5 /* File.m */, + 2676D1EE16D250A20019B3A5 /* Folder.h */, + 2676D1EF16D250A20019B3A5 /* Folder.m */, + ); + name = "DB Files"; + path = ..; + sourceTree = ""; + }; + 2676D1EA16D249990019B3A5 /* Database */ = { + isa = PBXGroup; + children = ( + 2676D1E916D238690019B3A5 /* DB Files */, + 2676D1EB16D249990019B3A5 /* DatabaseHandler.h */, + 2676D1EC16D249990019B3A5 /* DatabaseHandler.m */, + ); + path = Database; + sourceTree = ""; + }; + 2692E63416D2BB7900D109BC /* Cells */ = { + isa = PBXGroup; + children = ( + 2692E63016D2BB5800D109BC /* FileViewCell.h */, + 2692E63116D2BB5900D109BC /* FileViewCell.m */, + 2692E63516D2BBA800D109BC /* FileViewCell.xib */, + 2692E64A16D2D18C00D109BC /* FileViewCell_iPad.xib */, + 2692E63E16D2C78100D109BC /* FolderViewCell.h */, + 2692E63F16D2C78100D109BC /* FolderViewCell.m */, + 2692E64116D2C78E00D109BC /* FolderViewCell.xib */, + 2692E64816D2D06C00D109BC /* FolderViewCell_iPad.xib */, + ); + name = Cells; + sourceTree = ""; + }; + 269F65D916CFAB9B00663B98 = { + isa = PBXGroup; + children = ( + 269F65ED16CFAB9C00663B98 /* YakimbiTest */, + 269F660F16CFAB9C00663B98 /* YakimbiTestTests */, + 269F65E416CFAB9C00663B98 /* Frameworks */, + 269F65E316CFAB9C00663B98 /* Products */, + ); + sourceTree = ""; + }; + 269F65E316CFAB9C00663B98 /* Products */ = { + isa = PBXGroup; + children = ( + 269F65E216CFAB9C00663B98 /* YakimbiTest.app */, + 269F660716CFAB9C00663B98 /* YakimbiTestTests.octest */, + ); + name = Products; + sourceTree = ""; + }; + 269F65E416CFAB9C00663B98 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 269F65E516CFAB9C00663B98 /* UIKit.framework */, + 269F65E716CFAB9C00663B98 /* Foundation.framework */, + 269F65E916CFAB9C00663B98 /* CoreGraphics.framework */, + 269F65EB16CFAB9C00663B98 /* CoreData.framework */, + 269F660816CFAB9C00663B98 /* SenTestingKit.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + 269F65ED16CFAB9C00663B98 /* YakimbiTest */ = { + isa = PBXGroup; + children = ( + 26743EAF16D40CB3008E0446 /* Additions */, + 26743EAA16D3FEAB008E0446 /* Custom */, + 2692E63416D2BB7900D109BC /* Cells */, + 269F663316CFAF4F00663B98 /* Network */, + 269F662F16CFAC7400663B98 /* Utilities */, + 269F662B16CFAC3C00663B98 /* ViewControllers */, + 269F662316CFABD500663B98 /* Parsers */, + 2676D1EA16D249990019B3A5 /* Database */, + 269F65F616CFAB9C00663B98 /* AppDelegate.h */, + 269F65F716CFAB9C00663B98 /* AppDelegate.m */, + 269F65EE16CFAB9C00663B98 /* Supporting Files */, + ); + path = YakimbiTest; + sourceTree = ""; + }; + 269F65EE16CFAB9C00663B98 /* Supporting Files */ = { + isa = PBXGroup; + children = ( + 2692E63716D2C20100D109BC /* Purple_Folder.png */, + 269F65EF16CFAB9C00663B98 /* YakimbiTest-Info.plist */, + 269F65F016CFAB9C00663B98 /* InfoPlist.strings */, + 269F65F316CFAB9C00663B98 /* main.m */, + 269F65F516CFAB9C00663B98 /* YakimbiTest-Prefix.pch */, + 269F65F916CFAB9C00663B98 /* Default.png */, + 269F65FB16CFAB9C00663B98 /* Default@2x.png */, + 269F65FD16CFAB9C00663B98 /* Default-568h@2x.png */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; + 269F660F16CFAB9C00663B98 /* YakimbiTestTests */ = { + isa = PBXGroup; + children = ( + 26743EC916D42940008E0446 /* test.json */, + 269F661516CFAB9C00663B98 /* YakimbiTestTests.h */, + 269F661616CFAB9C00663B98 /* YakimbiTestTests.m */, + 269F661016CFAB9C00663B98 /* Supporting Files */, + ); + path = YakimbiTestTests; + sourceTree = ""; + }; + 269F661016CFAB9C00663B98 /* Supporting Files */ = { + isa = PBXGroup; + children = ( + 269F661116CFAB9C00663B98 /* YakimbiTestTests-Info.plist */, + 269F661216CFAB9C00663B98 /* InfoPlist.strings */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; + 269F662316CFABD500663B98 /* Parsers */ = { + isa = PBXGroup; + children = ( + 269F662016CFABCE00663B98 /* Parser.h */, + 269F662116CFABCE00663B98 /* Parser.m */, + ); + name = Parsers; + sourceTree = ""; + }; + 269F662B16CFAC3C00663B98 /* ViewControllers */ = { + isa = PBXGroup; + children = ( + 26743EBB16D41E4A008E0446 /* Info View */, + 2692E64316D2CE0600D109BC /* TableViewController.h */, + 2692E64416D2CE0600D109BC /* TableViewController.m */, + 2692E64516D2CE0600D109BC /* TableViewController.xib */, + 2692E62A16D2B0E100D109BC /* ListViewController.h */, + 2692E62B16D2B0E100D109BC /* ListViewController.m */, + 2692E62C16D2B0E100D109BC /* ListViewController.xib */, + 2692E62916D2B0E100D109BC /* ListViewController_iPad.xib */, + 269F662416CFAC3400663B98 /* MainViewController.h */, + 269F662516CFAC3400663B98 /* MainViewController.m */, + 269F662616CFAC3400663B98 /* MainViewController.xib */, + 269F662716CFAC3400663B98 /* MainViewController_iPad.xib */, + ); + name = ViewControllers; + sourceTree = ""; + }; + 269F662F16CFAC7400663B98 /* Utilities */ = { + isa = PBXGroup; + children = ( + 269F662C16CFAC6E00663B98 /* Macros.h */, + 2676D1DA16D212A20019B3A5 /* AppConstants.h */, + 2676D1DB16D212A20019B3A5 /* AppConstants.m */, + ); + name = Utilities; + sourceTree = ""; + }; + 269F663316CFAF4F00663B98 /* Network */ = { + isa = PBXGroup; + children = ( + 269F663016CFAF4B00663B98 /* HTTPRequestOperation.h */, + 269F663116CFAF4B00663B98 /* HTTPRequestOperation.m */, + ); + name = Network; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 269F65E116CFAB9B00663B98 /* YakimbiTest */ = { + isa = PBXNativeTarget; + buildConfigurationList = 269F661A16CFAB9C00663B98 /* Build configuration list for PBXNativeTarget "YakimbiTest" */; + buildPhases = ( + 269F65DE16CFAB9B00663B98 /* Sources */, + 269F65DF16CFAB9B00663B98 /* Frameworks */, + 269F65E016CFAB9B00663B98 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = YakimbiTest; + productName = YakimbiTest; + productReference = 269F65E216CFAB9C00663B98 /* YakimbiTest.app */; + productType = "com.apple.product-type.application"; + }; + 269F660616CFAB9C00663B98 /* YakimbiTestTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 269F661D16CFAB9C00663B98 /* Build configuration list for PBXNativeTarget "YakimbiTestTests" */; + buildPhases = ( + 269F660216CFAB9C00663B98 /* Sources */, + 269F660316CFAB9C00663B98 /* Frameworks */, + 269F660416CFAB9C00663B98 /* Resources */, + 269F660516CFAB9C00663B98 /* ShellScript */, + ); + buildRules = ( + ); + dependencies = ( + 269F660E16CFAB9C00663B98 /* PBXTargetDependency */, + ); + name = YakimbiTestTests; + productName = YakimbiTestTests; + productReference = 269F660716CFAB9C00663B98 /* YakimbiTestTests.octest */; + productType = "com.apple.product-type.bundle"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 269F65DA16CFAB9B00663B98 /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 0460; + ORGANIZATIONNAME = SAPLogix; + }; + buildConfigurationList = 269F65DD16CFAB9B00663B98 /* Build configuration list for PBXProject "YakimbiTest" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + ); + mainGroup = 269F65D916CFAB9B00663B98; + productRefGroup = 269F65E316CFAB9C00663B98 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 269F65E116CFAB9B00663B98 /* YakimbiTest */, + 269F660616CFAB9C00663B98 /* YakimbiTestTests */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 269F65E016CFAB9B00663B98 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 269F65F216CFAB9C00663B98 /* InfoPlist.strings in Resources */, + 269F65FA16CFAB9C00663B98 /* Default.png in Resources */, + 269F65FC16CFAB9C00663B98 /* Default@2x.png in Resources */, + 269F65FE16CFAB9C00663B98 /* Default-568h@2x.png in Resources */, + 269F662916CFAC3400663B98 /* MainViewController.xib in Resources */, + 269F662A16CFAC3400663B98 /* MainViewController_iPad.xib in Resources */, + 2692E62D16D2B0E100D109BC /* ListViewController_iPad.xib in Resources */, + 2692E62F16D2B0E100D109BC /* ListViewController.xib in Resources */, + 2692E63616D2BBA800D109BC /* FileViewCell.xib in Resources */, + 2692E63816D2C20100D109BC /* Purple_Folder.png in Resources */, + 2692E64216D2C78E00D109BC /* FolderViewCell.xib in Resources */, + 2692E64716D2CE0600D109BC /* TableViewController.xib in Resources */, + 2692E64916D2D06C00D109BC /* FolderViewCell_iPad.xib in Resources */, + 2692E64B16D2D18C00D109BC /* FileViewCell_iPad.xib in Resources */, + 26743EC016D41E66008E0446 /* InfoViewController.xib in Resources */, + 26743ECB16D42E28008E0446 /* test.json in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 269F660416CFAB9C00663B98 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 269F661416CFAB9C00663B98 /* InfoPlist.strings in Resources */, + 26743ECA16D42940008E0446 /* test.json in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 269F660516CFAB9C00663B98 /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "# Run the unit tests in this test bundle.\n\"${SYSTEM_DEVELOPER_DIR}/Tools/RunUnitTests\"\n"; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 269F65DE16CFAB9B00663B98 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 269F65F416CFAB9C00663B98 /* main.m in Sources */, + 269F65F816CFAB9C00663B98 /* AppDelegate.m in Sources */, + 269F660116CFAB9C00663B98 /* YakimbiTest.xcdatamodeld in Sources */, + 269F662216CFABCE00663B98 /* Parser.m in Sources */, + 269F662816CFAC3400663B98 /* MainViewController.m in Sources */, + 269F663216CFAF4B00663B98 /* HTTPRequestOperation.m in Sources */, + 2676D1DC16D212A20019B3A5 /* AppConstants.m in Sources */, + 2676D1ED16D249990019B3A5 /* DatabaseHandler.m in Sources */, + 2676D1F016D250A20019B3A5 /* Folder.m in Sources */, + 2676D1F916D257570019B3A5 /* File.m in Sources */, + 2676D1FC16D27C3F0019B3A5 /* User.m in Sources */, + 2692E62E16D2B0E100D109BC /* ListViewController.m in Sources */, + 2692E63216D2BB5900D109BC /* FileViewCell.m in Sources */, + 2692E64016D2C78100D109BC /* FolderViewCell.m in Sources */, + 2692E64616D2CE0600D109BC /* TableViewController.m in Sources */, + 26743EAD16D3FECE008E0446 /* MyNavigationController.m in Sources */, + 26743EB416D40CB3008E0446 /* NSDictionary+Addition.m in Sources */, + 26743EBF16D41E66008E0446 /* InfoViewController.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 269F660216CFAB9C00663B98 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 269F661716CFAB9C00663B98 /* YakimbiTestTests.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 269F660E16CFAB9C00663B98 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 269F65E116CFAB9B00663B98 /* YakimbiTest */; + targetProxy = 269F660D16CFAB9C00663B98 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + 269F65F016CFAB9C00663B98 /* InfoPlist.strings */ = { + isa = PBXVariantGroup; + children = ( + 269F65F116CFAB9C00663B98 /* en */, + ); + name = InfoPlist.strings; + sourceTree = ""; + }; + 269F661216CFAB9C00663B98 /* InfoPlist.strings */ = { + isa = PBXVariantGroup; + children = ( + 269F661316CFAB9C00663B98 /* en */, + ); + name = InfoPlist.strings; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 269F661816CFAB9C00663B98 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + 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; + }; + 269F661916CFAB9C00663B98 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + 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; + }; + 269F661B16CFAB9C00663B98 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "YakimbiTest/YakimbiTest-Prefix.pch"; + INFOPLIST_FILE = "YakimbiTest/YakimbiTest-Info.plist"; + PRODUCT_NAME = "$(TARGET_NAME)"; + WRAPPER_EXTENSION = app; + }; + name = Debug; + }; + 269F661C16CFAB9C00663B98 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "YakimbiTest/YakimbiTest-Prefix.pch"; + INFOPLIST_FILE = "YakimbiTest/YakimbiTest-Info.plist"; + PRODUCT_NAME = "$(TARGET_NAME)"; + WRAPPER_EXTENSION = app; + }; + name = Release; + }; + 269F661E16CFAB9C00663B98 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/YakimbiTest.app/YakimbiTest"; + FRAMEWORK_SEARCH_PATHS = ( + "\"$(SDKROOT)/Developer/Library/Frameworks\"", + "\"$(DEVELOPER_LIBRARY_DIR)/Frameworks\"", + ); + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "YakimbiTest/YakimbiTest-Prefix.pch"; + INFOPLIST_FILE = "YakimbiTestTests/YakimbiTestTests-Info.plist"; + PRODUCT_NAME = "$(TARGET_NAME)"; + TEST_HOST = "$(BUNDLE_LOADER)"; + WRAPPER_EXTENSION = octest; + }; + name = Debug; + }; + 269F661F16CFAB9C00663B98 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/YakimbiTest.app/YakimbiTest"; + FRAMEWORK_SEARCH_PATHS = ( + "\"$(SDKROOT)/Developer/Library/Frameworks\"", + "\"$(DEVELOPER_LIBRARY_DIR)/Frameworks\"", + ); + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "YakimbiTest/YakimbiTest-Prefix.pch"; + INFOPLIST_FILE = "YakimbiTestTests/YakimbiTestTests-Info.plist"; + PRODUCT_NAME = "$(TARGET_NAME)"; + TEST_HOST = "$(BUNDLE_LOADER)"; + WRAPPER_EXTENSION = octest; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 269F65DD16CFAB9B00663B98 /* Build configuration list for PBXProject "YakimbiTest" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 269F661816CFAB9C00663B98 /* Debug */, + 269F661916CFAB9C00663B98 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 269F661A16CFAB9C00663B98 /* Build configuration list for PBXNativeTarget "YakimbiTest" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 269F661B16CFAB9C00663B98 /* Debug */, + 269F661C16CFAB9C00663B98 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 269F661D16CFAB9C00663B98 /* Build configuration list for PBXNativeTarget "YakimbiTestTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 269F661E16CFAB9C00663B98 /* Debug */, + 269F661F16CFAB9C00663B98 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + +/* Begin XCVersionGroup section */ + 269F65FF16CFAB9C00663B98 /* YakimbiTest.xcdatamodeld */ = { + isa = XCVersionGroup; + children = ( + 269F660016CFAB9C00663B98 /* YakimbiTest.xcdatamodel */, + ); + currentVersion = 269F660016CFAB9C00663B98 /* YakimbiTest.xcdatamodel */; + path = YakimbiTest.xcdatamodeld; + sourceTree = ""; + versionGroupType = wrapper.xcdatamodel; + }; +/* End XCVersionGroup section */ + }; + rootObject = 269F65DA16CFAB9B00663B98 /* Project object */; +} diff --git a/YakimbiTest/YakimbiTest.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/YakimbiTest/YakimbiTest.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..1d8d311 --- /dev/null +++ b/YakimbiTest/YakimbiTest.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/YakimbiTest/YakimbiTest.xcodeproj/project.xcworkspace/xcuserdata/SAPMBP.xcuserdatad/UserInterfaceState.xcuserstate b/YakimbiTest/YakimbiTest.xcodeproj/project.xcworkspace/xcuserdata/SAPMBP.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..bfc19ac56fb604c580d73b7247b5fbb3a1fdb5a1 GIT binary patch literal 76114 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 literal 0 HcmV?d00001 diff --git a/YakimbiTest/YakimbiTest.xcodeproj/project.xcworkspace/xcuserdata/SAPMBP.xcuserdatad/xcdebugger/Expressions.xcexplist b/YakimbiTest/YakimbiTest.xcodeproj/project.xcworkspace/xcuserdata/SAPMBP.xcuserdatad/xcdebugger/Expressions.xcexplist new file mode 100644 index 0000000..ca6c635 --- /dev/null +++ b/YakimbiTest/YakimbiTest.xcodeproj/project.xcworkspace/xcuserdata/SAPMBP.xcuserdatad/xcdebugger/Expressions.xcexplist @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + diff --git a/YakimbiTest/YakimbiTest.xcodeproj/xcuserdata/SAPMBP.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist b/YakimbiTest/YakimbiTest.xcodeproj/xcuserdata/SAPMBP.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist new file mode 100644 index 0000000..05301bc --- /dev/null +++ b/YakimbiTest/YakimbiTest.xcodeproj/xcuserdata/SAPMBP.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist @@ -0,0 +1,5 @@ + + + diff --git a/YakimbiTest/YakimbiTest.xcodeproj/xcuserdata/SAPMBP.xcuserdatad/xcschemes/YakimbiTest.xcscheme b/YakimbiTest/YakimbiTest.xcodeproj/xcuserdata/SAPMBP.xcuserdatad/xcschemes/YakimbiTest.xcscheme new file mode 100644 index 0000000..fcbfcf2 --- /dev/null +++ b/YakimbiTest/YakimbiTest.xcodeproj/xcuserdata/SAPMBP.xcuserdatad/xcschemes/YakimbiTest.xcscheme @@ -0,0 +1,96 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/YakimbiTest/YakimbiTest.xcodeproj/xcuserdata/SAPMBP.xcuserdatad/xcschemes/xcschememanagement.plist b/YakimbiTest/YakimbiTest.xcodeproj/xcuserdata/SAPMBP.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..81e669b --- /dev/null +++ b/YakimbiTest/YakimbiTest.xcodeproj/xcuserdata/SAPMBP.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,27 @@ + + + + + SchemeUserState + + YakimbiTest.xcscheme + + orderHint + 0 + + + SuppressBuildableAutocreation + + 269F65E116CFAB9B00663B98 + + primary + + + 269F660616CFAB9C00663B98 + + primary + + + + + diff --git a/YakimbiTest/YakimbiTest/Additions/NSDictionary+Addition.h b/YakimbiTest/YakimbiTest/Additions/NSDictionary+Addition.h new file mode 100644 index 0000000..1b7d020 --- /dev/null +++ b/YakimbiTest/YakimbiTest/Additions/NSDictionary+Addition.h @@ -0,0 +1,15 @@ +// +// NSDictionary+Addition.h +// +// +// Created by Syed Arsalan Pervez on 3/14/12. +// Copyright (c) 2012 SAPLogix. All rights reserved. +// + +@interface NSDictionary (ADDITION) + +- (BOOL)containsKey:(NSString *)key; +- (BOOL)containsKeys:(NSArray *)keys; +- (id)valueForKey:(NSString *)key; + +@end diff --git a/YakimbiTest/YakimbiTest/Additions/NSDictionary+Addition.m b/YakimbiTest/YakimbiTest/Additions/NSDictionary+Addition.m new file mode 100644 index 0000000..745dc48 --- /dev/null +++ b/YakimbiTest/YakimbiTest/Additions/NSDictionary+Addition.m @@ -0,0 +1,43 @@ +// +// NSDictionary+Addition.m +// +// +// Created by Syed Arsalan Pervez on 3/14/12. +// Copyright (c) 2012 SAPLogix. All rights reserved. +// + +#import "NSDictionary+Addition.h" + +@implementation NSDictionary (ADDITION) + +- (BOOL)containsKey:(NSString *)key +{ + return [[self allKeys] containsObject:key]; +} + +- (BOOL)containsKeys:(NSArray *)keys +{ + for (NSString *key in keys) + { + if (![self containsKey:key]) + return NO; + } + + return YES; +} + +- (id)valueForKey:(NSString *)key +{ + int index = [[self allKeys] indexOfObject:key]; + if (index != NSNotFound) + { + id val = [[self allValues] objectAtIndex:index]; + + if (![val isKindOfClass:[NSNull class]]) + return val; + } + + return nil; +} + +@end diff --git a/YakimbiTest/YakimbiTest/AppDelegate.h b/YakimbiTest/YakimbiTest/AppDelegate.h new file mode 100644 index 0000000..5005c72 --- /dev/null +++ b/YakimbiTest/YakimbiTest/AppDelegate.h @@ -0,0 +1,18 @@ +// +// AppDelegate.h +// YakimbiTest +// +// Created by Syed Arsalan Pervez on 2/16/13. +// Copyright (c) 2013 SAPLogix. All rights reserved. +// + +#import +#import "MyNavigationController.h" +#import "MainViewController.h" + +@interface AppDelegate : UIResponder + +@property (strong, nonatomic) UIWindow *window; +@property (strong, nonatomic) MyNavigationController *navigationController; + +@end diff --git a/YakimbiTest/YakimbiTest/AppDelegate.m b/YakimbiTest/YakimbiTest/AppDelegate.m new file mode 100644 index 0000000..89ad8f8 --- /dev/null +++ b/YakimbiTest/YakimbiTest/AppDelegate.m @@ -0,0 +1,62 @@ +// +// AppDelegate.m +// YakimbiTest +// +// Created by Syed Arsalan Pervez on 2/16/13. +// Copyright (c) 2013 SAPLogix. All rights reserved. +// + +#import "AppDelegate.h" + +@implementation AppDelegate + +- (void)dealloc +{ + [_navigationController release]; + [_window release]; + + [super dealloc]; +} + +- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions +{ + self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease]; + // Override point for customization after application launch. + + MainViewController *_mainViewController = [[MainViewController new] autorelease]; + _navigationController = [[MyNavigationController alloc] initWithRootViewController:_mainViewController]; + + Log(@"Total %@", FORMAT_BYTES(268435456000)); + Log(@"Used %@", FORMAT_BYTES(380826907)); + Log(@"Available %@", FORMAT_BYTES(268054629093)); + + [_window setRootViewController:_navigationController]; + + self.window.backgroundColor = [UIColor whiteColor]; + [self.window makeKeyAndVisible]; + return YES; +} + +- (void)applicationWillResignActive:(UIApplication *)application +{ + // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. + // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game. +} + +- (void)applicationDidEnterBackground:(UIApplication *)application +{ + // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. + // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. +} + +- (void)applicationWillEnterForeground:(UIApplication *)application +{ + // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background. +} + +- (void)applicationDidBecomeActive:(UIApplication *)application +{ + // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. +} + +@end diff --git a/YakimbiTest/YakimbiTest/Cells/FileViewCell.h b/YakimbiTest/YakimbiTest/Cells/FileViewCell.h new file mode 100644 index 0000000..299faf7 --- /dev/null +++ b/YakimbiTest/YakimbiTest/Cells/FileViewCell.h @@ -0,0 +1,25 @@ +// +// FileViewCell.h +// YakimbiTest +// +// Created by Syed Arsalan Pervez on 2/19/13. +// Copyright (c) 2013 SAPLogix. All rights reserved. +// + +#import +#import "FolderViewCell.h" + +@interface FileViewCell : FolderViewCell +{ + IBOutlet UILabel *_sharedByLabel; + IBOutlet UILabel *_sharedByLabel2; + IBOutlet UILabel *_fileCountLabel; + IBOutlet UILabel *_folderCountLabel; +} + +@property (readonly, nonatomic) UILabel *sharedByLabel; +@property (readonly, nonatomic) UILabel *sharedByLabel2; +@property (readonly, nonatomic) UILabel *fileCountLabel; +@property (readonly, nonatomic) UILabel *folderCountLabel; + +@end diff --git a/YakimbiTest/YakimbiTest/Cells/FileViewCell.m b/YakimbiTest/YakimbiTest/Cells/FileViewCell.m new file mode 100644 index 0000000..06b466f --- /dev/null +++ b/YakimbiTest/YakimbiTest/Cells/FileViewCell.m @@ -0,0 +1,29 @@ +// +// FileViewCell.m +// YakimbiTest +// +// Created by Syed Arsalan Pervez on 2/19/13. +// Copyright (c) 2013 SAPLogix. All rights reserved. +// + +#import "FileViewCell.h" + +@implementation FileViewCell + +- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier +{ + self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]; + if (self) { + // Initialization code + } + return self; +} + +- (void)setSelected:(BOOL)selected animated:(BOOL)animated +{ + [super setSelected:selected animated:animated]; + + // Configure the view for the selected state +} + +@end diff --git a/YakimbiTest/YakimbiTest/Cells/FileViewCell.xib b/YakimbiTest/YakimbiTest/Cells/FileViewCell.xib new file mode 100644 index 0000000..db82ef6 --- /dev/null +++ b/YakimbiTest/YakimbiTest/Cells/FileViewCell.xib @@ -0,0 +1,446 @@ + + + + 1552 + 11G63 + 3084 + 1138.51 + 569.00 + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + 2083 + + + IBProxyObject + IBUIImageView + IBUILabel + IBUITableViewCell + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + PluginDependencyRecalculationVersion + + + + + IBFilesOwner + IBCocoaTouchFramework + + + IBFirstResponder + IBCocoaTouchFramework + + + + 292 + + + + 256 + + + + 292 + {{92, 8}, {205, 21}} + + + _NS:9 + NO + YES + 7 + NO + IBCocoaTouchFramework + <name> + + 1 + MCAwIDAAA + darkTextColor + + + 3 + MQA + + 0 + + 2 + 17 + + + Helvetica-Bold + 17 + 16 + + NO + + + + 292 + {{92, 30}, {205, 21}} + + + _NS:9 + NO + YES + 7 + NO + IBCocoaTouchFramework + <path> + + + 0 + + 1 + 12 + + + Helvetica + 12 + 16 + + NO + + + + 292 + {{92, 50}, {205, 21}} + + + _NS:9 + NO + YES + 7 + NO + IBCocoaTouchFramework + <by> + + + 0 + + + NO + + + + 292 + {{92, 69}, {205, 21}} + + _NS:9 + NO + YES + 7 + NO + IBCocoaTouchFramework + <by> + + + 0 + + + NO + + + + 292 + {{4, 72}, {81, 21}} + + + _NS:9 + NO + YES + 7 + NO + IBCocoaTouchFramework + <by> + + + 0 + 1 + + 1 + 11 + + + Helvetica + 11 + 16 + + NO + + + + 292 + {{4, 52}, {81, 21}} + + + _NS:9 + NO + YES + 7 + NO + IBCocoaTouchFramework + <by> + + + 0 + 1 + + + NO + + + + 292 + {{4, -2}, {81, 58}} + + + _NS:9 + 1 + NO + IBCocoaTouchFramework + + NSImage + Purple_Folder.png + + + + {300, 96} + + + _NS:11 + + 3 + MCAwAA + + NO + YES + 4 + YES + IBCocoaTouchFramework + + + {320, 97} + + + _NS:9 + IBCocoaTouchFramework + 1 + + FileCell + + + + + + + + _nameLabel + + + + 50 + + + + _pathLabel + + + + 51 + + + + _sharedByLabel + + + + 52 + + + + _fileCountLabel + + + + 53 + + + + _folderCountLabel + + + + 54 + + + + _sharedByLabel2 + + + + 56 + + + + + + 0 + + + + + + -1 + + + File's Owner + + + -2 + + + + + 2 + + + + + + + + + + + + + + 3 + + + + + + 8 + + + + + + 15 + + + + + + 45 + + + + + 46 + + + + + 49 + + + + + 55 + + + + + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIResponder + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + FileViewCell + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + + + + 70 + + + + + FileViewCell + FolderViewCell + + UILabel + UILabel + UILabel + UILabel + + + + _fileCountLabel + UILabel + + + _folderCountLabel + UILabel + + + _sharedByLabel + UILabel + + + _sharedByLabel2 + UILabel + + + + IBProjectSource + ./Classes/FileViewCell.h + + + + FolderViewCell + UITableViewCell + + UILabel + UILabel + + + + _nameLabel + UILabel + + + _pathLabel + UILabel + + + + IBProjectSource + ./Classes/FolderViewCell.h + + + + + 0 + IBCocoaTouchFramework + YES + 3 + + Purple_Folder.png + {512, 512} + + 2083 + + diff --git a/YakimbiTest/YakimbiTest/Cells/FileViewCell_iPad.xib b/YakimbiTest/YakimbiTest/Cells/FileViewCell_iPad.xib new file mode 100644 index 0000000..b0ce5e3 --- /dev/null +++ b/YakimbiTest/YakimbiTest/Cells/FileViewCell_iPad.xib @@ -0,0 +1,443 @@ + + + + 1552 + 11G63 + 3084 + 1138.51 + 569.00 + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + 2083 + + + IBProxyObject + IBUIImageView + IBUILabel + IBUITableViewCell + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + PluginDependencyRecalculationVersion + + + + + IBFilesOwner + IBIPadFramework + + + IBFirstResponder + IBIPadFramework + + + + 292 + + + + 256 + + + + 292 + {{92, 8}, {656, 21}} + + + _NS:9 + NO + YES + 7 + NO + IBIPadFramework + <name> + + 1 + MCAwIDAAA + darkTextColor + + + 3 + MQA + + 0 + + 2 + 17 + + + Helvetica-Bold + 17 + 16 + + NO + + + + 292 + {{92, 30}, {656, 21}} + + + _NS:9 + NO + YES + 7 + NO + IBIPadFramework + <path> + + + 0 + + 1 + 12 + + + Helvetica + 12 + 16 + + NO + + + + 292 + {{92, 50}, {656, 21}} + + + _NS:9 + NO + YES + 7 + NO + IBIPadFramework + <by> + + + 0 + + + NO + + + + 292 + {{92, 69}, {655, 21}} + + _NS:9 + NO + YES + 7 + NO + IBIPadFramework + <by> + + + 0 + + + NO + + + + 292 + {{4, 72}, {81, 21}} + + + _NS:9 + NO + YES + 7 + NO + IBIPadFramework + <by> + + + 0 + 1 + + + NO + + + + 292 + {{4, 52}, {81, 21}} + + + _NS:9 + NO + YES + 7 + NO + IBIPadFramework + <by> + + + 0 + 1 + + + NO + + + + 292 + {{4, -2}, {81, 58}} + + + _NS:9 + 1 + NO + IBIPadFramework + + NSImage + Purple_Folder.png + + + + {748, 96} + + + _NS:11 + + 3 + MCAwAA + + NO + YES + 4 + YES + IBCocoaTouchFramework + + + {768, 97} + + + _NS:9 + IBIPadFramework + 1 + + FileCell + + + + + + + + _nameLabel + + + + 10 + + + + _pathLabel + + + + 11 + + + + _sharedByLabel + + + + 12 + + + + _fileCountLabel + + + + 13 + + + + _folderCountLabel + + + + 14 + + + + _sharedByLabel2 + + + + 15 + + + + + + 0 + + + + + + -1 + + + File's Owner + + + -2 + + + + + 2 + + + + + + + + + + + + + + 3 + + + + + + 4 + + + + + + 5 + + + + + + 6 + + + + + + 7 + + + + + + 8 + + + + + + 9 + + + + + + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIResponder + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + FileViewCell + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + + + + 42 + + + + + FileViewCell + FolderViewCell + + UILabel + UILabel + UILabel + UILabel + + + + _fileCountLabel + UILabel + + + _folderCountLabel + UILabel + + + _sharedByLabel + UILabel + + + _sharedByLabel2 + UILabel + + + + IBProjectSource + ./Classes/FileViewCell.h + + + + FolderViewCell + UITableViewCell + + UILabel + UILabel + + + + _nameLabel + UILabel + + + _pathLabel + UILabel + + + + IBProjectSource + ./Classes/FolderViewCell.h + + + + + 0 + IBIPadFramework + YES + 3 + + Purple_Folder.png + {512, 512} + + 2083 + + diff --git a/YakimbiTest/YakimbiTest/Cells/FolderViewCell.h b/YakimbiTest/YakimbiTest/Cells/FolderViewCell.h new file mode 100644 index 0000000..a6cf07c --- /dev/null +++ b/YakimbiTest/YakimbiTest/Cells/FolderViewCell.h @@ -0,0 +1,20 @@ +// +// FolderViewCell.h +// YakimbiTest +// +// Created by Syed Arsalan Pervez on 2/19/13. +// Copyright (c) 2013 SAPLogix. All rights reserved. +// + +#import + +@interface FolderViewCell : UITableViewCell +{ + IBOutlet UILabel *_nameLabel; + IBOutlet UILabel *_pathLabel; +} + +@property (readonly, nonatomic) UILabel *nameLabel; +@property (readonly, nonatomic) UILabel *pathLabel; + +@end diff --git a/YakimbiTest/YakimbiTest/Cells/FolderViewCell.m b/YakimbiTest/YakimbiTest/Cells/FolderViewCell.m new file mode 100644 index 0000000..ab2ecdb --- /dev/null +++ b/YakimbiTest/YakimbiTest/Cells/FolderViewCell.m @@ -0,0 +1,13 @@ +// +// FolderViewCell.m +// YakimbiTest +// +// Created by Syed Arsalan Pervez on 2/19/13. +// Copyright (c) 2013 SAPLogix. All rights reserved. +// + +#import "FolderViewCell.h" + +@implementation FolderViewCell + +@end diff --git a/YakimbiTest/YakimbiTest/Cells/FolderViewCell.xib b/YakimbiTest/YakimbiTest/Cells/FolderViewCell.xib new file mode 100644 index 0000000..8bb7bad --- /dev/null +++ b/YakimbiTest/YakimbiTest/Cells/FolderViewCell.xib @@ -0,0 +1,265 @@ + + + + 1552 + 11G63 + 3084 + 1138.51 + 569.00 + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + 2083 + + + IBProxyObject + IBUIImageView + IBUILabel + IBUITableViewCell + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + PluginDependencyRecalculationVersion + + + + + IBFilesOwner + IBCocoaTouchFramework + + + IBFirstResponder + IBCocoaTouchFramework + + + + 292 + + + + 256 + + + + 292 + {{92, 8}, {224, 21}} + + + _NS:9 + NO + YES + 7 + NO + IBCocoaTouchFramework + <name> + + 1 + MCAwIDAAA + darkTextColor + + + 3 + MQA + + 0 + + 2 + 17 + + + Helvetica-Bold + 17 + 16 + + NO + + + + 292 + {{92, 30}, {224, 21}} + + _NS:9 + NO + YES + 7 + NO + IBCocoaTouchFramework + <path> + + + 0 + + 1 + 12 + + + Helvetica + 12 + 16 + + NO + + + + 292 + {{4, -2}, {81, 58}} + + + _NS:9 + 1 + NO + IBCocoaTouchFramework + + NSImage + Purple_Folder.png + + + + {300, 56} + + + _NS:11 + + 3 + MCAwAA + + NO + YES + 4 + YES + IBCocoaTouchFramework + + + {320, 57} + + + _NS:9 + IBCocoaTouchFramework + 1 + + FolderCell + + + + + + + + _nameLabel + + + + 7 + + + + _pathLabel + + + + 8 + + + + + + 0 + + + + + + -1 + + + File's Owner + + + -2 + + + + + 3 + + + + + + + + + + 4 + + + + + + 5 + + + + + + 6 + + + + + + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIResponder + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + FolderViewCell + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + + + + 19 + + + + + FolderViewCell + UITableViewCell + + UILabel + UILabel + + + + _nameLabel + UILabel + + + _pathLabel + UILabel + + + + IBProjectSource + ./Classes/FolderViewCell.h + + + + + 0 + IBCocoaTouchFramework + YES + 3 + + Purple_Folder.png + {512, 512} + + 2083 + + diff --git a/YakimbiTest/YakimbiTest/Cells/FolderViewCell_iPad.xib b/YakimbiTest/YakimbiTest/Cells/FolderViewCell_iPad.xib new file mode 100644 index 0000000..03d2738 --- /dev/null +++ b/YakimbiTest/YakimbiTest/Cells/FolderViewCell_iPad.xib @@ -0,0 +1,240 @@ + + + + 1552 + 11G63 + 3084 + 1138.51 + 569.00 + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + 2083 + + + IBProxyObject + IBUIImageView + IBUILabel + IBUITableViewCell + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + PluginDependencyRecalculationVersion + + + + + IBFilesOwner + IBIPadFramework + + + IBFirstResponder + IBIPadFramework + + + + 292 + + + + 256 + + + + 292 + {{92, 8}, {636, 21}} + + + _NS:9 + NO + YES + 7 + NO + IBIPadFramework + <name> + + 1 + MCAwIDAAA + darkTextColor + + + 3 + MQA + + 0 + + 2 + 17 + + + Helvetica-Bold + 17 + 16 + + NO + + + + 292 + {{92, 30}, {636, 21}} + + _NS:9 + NO + YES + 7 + NO + IBIPadFramework + <path> + + + 0 + + 1 + 12 + + + Helvetica + 12 + 16 + + NO + + + + 292 + {{4, -2}, {81, 58}} + + + _NS:9 + 1 + NO + IBIPadFramework + + NSImage + Purple_Folder.png + + + + {748, 56} + + + _NS:11 + + 3 + MCAwAA + + NO + YES + 4 + YES + IBCocoaTouchFramework + + + {768, 57} + + + _NS:9 + IBIPadFramework + 1 + + FolderCell + + + + + + + + _nameLabel + + + + 8 + + + + _pathLabel + + + + 9 + + + + + + 0 + + + + + + -1 + + + File's Owner + + + -2 + + + + + 4 + + + + + + + + + + 5 + + + + + + 6 + + + + + + 7 + + + + + + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIResponder + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + FolderViewCell + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + + + + 26 + + + 0 + IBIPadFramework + YES + 3 + + Purple_Folder.png + {512, 512} + + 2083 + + diff --git a/YakimbiTest/YakimbiTest/Custom/MyNavigationController.h b/YakimbiTest/YakimbiTest/Custom/MyNavigationController.h new file mode 100644 index 0000000..0dfdae0 --- /dev/null +++ b/YakimbiTest/YakimbiTest/Custom/MyNavigationController.h @@ -0,0 +1,13 @@ +// +// MyNavigationController.h +// YakimbiTest +// +// Created by Syed Arsalan Pervez on 2/19/13. +// Copyright (c) 2013 SAPLogix. All rights reserved. +// + +#import + +@interface MyNavigationController : UINavigationController + +@end diff --git a/YakimbiTest/YakimbiTest/Custom/MyNavigationController.m b/YakimbiTest/YakimbiTest/Custom/MyNavigationController.m new file mode 100644 index 0000000..bf50067 --- /dev/null +++ b/YakimbiTest/YakimbiTest/Custom/MyNavigationController.m @@ -0,0 +1,27 @@ +// +// MyNavigationController.m +// YakimbiTest +// +// Created by Syed Arsalan Pervez on 2/19/13. +// Copyright (c) 2013 SAPLogix. All rights reserved. +// + +#import "MyNavigationController.h" + +@interface MyNavigationController () + +@end + +@implementation MyNavigationController + +- (BOOL)shouldAutorotate +{ + return YES; +} + +- (NSUInteger)supportedInterfaceOrientations +{ + return UIInterfaceOrientationMaskAll; +} + +@end diff --git a/YakimbiTest/YakimbiTest/DB Files/File.h b/YakimbiTest/YakimbiTest/DB Files/File.h new file mode 100644 index 0000000..0349df1 --- /dev/null +++ b/YakimbiTest/YakimbiTest/DB Files/File.h @@ -0,0 +1,39 @@ +// +// File.h +// YakimbiTest +// +// Created by Syed Arsalan Pervez on 2/18/13. +// Copyright (c) 2013 SAPLogix. All rights reserved. +// + +#import +#import + +@class Folder; + +@interface File : NSManagedObject + +@property (nonatomic, retain) NSString * isShared; +@property (nonatomic, retain) NSString * status; +@property (nonatomic, retain) NSString * shareId; +@property (nonatomic, retain) NSNumber * userId; +@property (nonatomic, retain) NSString * name; +@property (nonatomic, retain) NSNumber * sharedBy; +@property (nonatomic, retain) NSString * createdDate; +@property (nonatomic, retain) NSString * sharedDate; +@property (nonatomic, retain) NSNumber * shareLevel; +@property (nonatomic, retain) NSNumber * parentId; +@property (nonatomic, retain) NSString * lastUpdatedDate; +@property (nonatomic, retain) NSString * lastUpdatedBy; +@property (nonatomic, retain) NSString * link; +@property (nonatomic, retain) NSString * transType; +@property (nonatomic, retain) NSNumber * itemId; +@property (nonatomic, retain) NSString * path; +@property (nonatomic, retain) NSString * pathById; +@property (nonatomic, retain) NSString * type; +@property (nonatomic, retain) NSString * mimeType; +@property (nonatomic, retain) NSNumber * size; +@property (nonatomic, retain) NSNumber * hidden; +@property (nonatomic, retain) Folder *folder; + +@end diff --git a/YakimbiTest/YakimbiTest/DB Files/File.m b/YakimbiTest/YakimbiTest/DB Files/File.m new file mode 100644 index 0000000..e802265 --- /dev/null +++ b/YakimbiTest/YakimbiTest/DB Files/File.m @@ -0,0 +1,38 @@ +// +// File.m +// YakimbiTest +// +// Created by Syed Arsalan Pervez on 2/18/13. +// Copyright (c) 2013 SAPLogix. All rights reserved. +// + +#import "File.h" +#import "Folder.h" + + +@implementation File + +@dynamic isShared; +@dynamic status; +@dynamic shareId; +@dynamic userId; +@dynamic name; +@dynamic sharedBy; +@dynamic createdDate; +@dynamic sharedDate; +@dynamic shareLevel; +@dynamic parentId; +@dynamic lastUpdatedDate; +@dynamic lastUpdatedBy; +@dynamic link; +@dynamic transType; +@dynamic itemId; +@dynamic path; +@dynamic pathById; +@dynamic type; +@dynamic mimeType; +@dynamic size; +@dynamic hidden; +@dynamic folder; + +@end diff --git a/YakimbiTest/YakimbiTest/DB Files/Folder.h b/YakimbiTest/YakimbiTest/DB Files/Folder.h new file mode 100644 index 0000000..a628e29 --- /dev/null +++ b/YakimbiTest/YakimbiTest/DB Files/Folder.h @@ -0,0 +1,29 @@ +// +// Folder.h +// YakimbiTest +// +// Created by Syed Arsalan Pervez on 2/18/13. +// Copyright (c) 2013 SAPLogix. All rights reserved. +// + +#import +#import + +@class File, User; + +@interface Folder : NSManagedObject + +@property (nonatomic, retain) NSString * name; +@property (nonatomic, retain) NSString * fid; +@property (nonatomic, retain) NSSet *files; +@property (nonatomic, retain) User *user; +@end + +@interface Folder (CoreDataGeneratedAccessors) + +- (void)addFilesObject:(File *)value; +- (void)removeFilesObject:(File *)value; +- (void)addFiles:(NSSet *)values; +- (void)removeFiles:(NSSet *)values; + +@end diff --git a/YakimbiTest/YakimbiTest/DB Files/Folder.m b/YakimbiTest/YakimbiTest/DB Files/Folder.m new file mode 100644 index 0000000..6cec647 --- /dev/null +++ b/YakimbiTest/YakimbiTest/DB Files/Folder.m @@ -0,0 +1,21 @@ +// +// Folder.m +// YakimbiTest +// +// Created by Syed Arsalan Pervez on 2/18/13. +// Copyright (c) 2013 SAPLogix. All rights reserved. +// + +#import "Folder.h" +#import "File.h" +#import "User.h" + + +@implementation Folder + +@dynamic name; +@dynamic fid; +@dynamic files; +@dynamic user; + +@end diff --git a/YakimbiTest/YakimbiTest/DB Files/User.h b/YakimbiTest/YakimbiTest/DB Files/User.h new file mode 100644 index 0000000..e08e260 --- /dev/null +++ b/YakimbiTest/YakimbiTest/DB Files/User.h @@ -0,0 +1,34 @@ +// +// User.h +// YakimbiTest +// +// Created by Syed Arsalan Pervez on 2/18/13. +// Copyright (c) 2013 SAPLogix. All rights reserved. +// + +#import +#import + +@class Folder; + +@interface User : NSManagedObject + +@property (nonatomic, retain) NSNumber * totalSpace; +@property (nonatomic, retain) NSNumber * lastRevId; +@property (nonatomic, retain) NSNumber * usedSpace; +@property (nonatomic, retain) NSNumber * availableSpace; +@property (nonatomic, retain) NSString * mode; +@property (nonatomic, retain) NSNumber * pendingRequests; +@property (nonatomic, retain) NSNumber * revId; +@property (nonatomic, retain) NSDate * lastUpdated; +@property (nonatomic, retain) NSSet *folders; +@end + +@interface User (CoreDataGeneratedAccessors) + +- (void)addFoldersObject:(Folder *)value; +- (void)removeFoldersObject:(Folder *)value; +- (void)addFolders:(NSSet *)values; +- (void)removeFolders:(NSSet *)values; + +@end diff --git a/YakimbiTest/YakimbiTest/DB Files/User.m b/YakimbiTest/YakimbiTest/DB Files/User.m new file mode 100644 index 0000000..e562e05 --- /dev/null +++ b/YakimbiTest/YakimbiTest/DB Files/User.m @@ -0,0 +1,25 @@ +// +// User.m +// YakimbiTest +// +// Created by Syed Arsalan Pervez on 2/18/13. +// Copyright (c) 2013 SAPLogix. All rights reserved. +// + +#import "User.h" +#import "Folder.h" + + +@implementation User + +@dynamic totalSpace; +@dynamic lastRevId; +@dynamic usedSpace; +@dynamic availableSpace; +@dynamic mode; +@dynamic pendingRequests; +@dynamic revId; +@dynamic lastUpdated; +@dynamic folders; + +@end diff --git a/YakimbiTest/YakimbiTest/Database/DatabaseHandler.h b/YakimbiTest/YakimbiTest/Database/DatabaseHandler.h new file mode 100755 index 0000000..df85752 --- /dev/null +++ b/YakimbiTest/YakimbiTest/Database/DatabaseHandler.h @@ -0,0 +1,58 @@ +// +// DatabaseHandler.h +// +// +// Created by Syed Arsalan Pervez on 8/2/11. +// Copyright 2011 SAPLogix. All rights reserved. +// + +#import +#import + +#define DBHandler [DatabaseHandler sharedHandler] + +@interface DatabaseHandler : NSObject +{ + NSManagedObjectContext *_manageContext; + NSPersistentStoreCoordinator *_storeCordinator; + NSPersistentStore *_persistentStore; +} + +@property (readonly, nonatomic) NSManagedObjectContext *_manageContext; + +// Insert Records +- (BOOL) insertObject:(id)manageObject; +- (BOOL) insertObject:(id)manageObject andSave:(BOOL)save; + +// Delete Object +- (BOOL) deleteObject:(id)manageObject; +- (BOOL) deleteObject:(id)manageObject andSave:(BOOL)save; + +// Fetch Records +- (id) fetchObjectsOfEntity:(NSString *)entity; +- (id) fetchObjectsOfEntity:(NSString *)entity withExpressionDescription:(NSArray *)expDesc; +- (id) fetchObjectsOfEntity:(NSString *)entity usingPredicate:(NSPredicate *)predicate; +- (id) fetchObjectsOfEntity:(NSString *)entity usingPredicate:(NSPredicate *)predicate uniqueResult:(BOOL)unique; +- (id) fetchObjectsOfEntity:(NSString *)entity usingPredicate:(NSPredicate *)predicate withSortDescriptors:(NSArray *)sortDesc withExpressionDescription:(NSArray *)expDesc withResultType:(NSFetchRequestResultType)resultType; +- (id) fetchObjectsOfEntity:(NSString *)entity usingPredicate:(NSPredicate *)predicate withSortDescriptors:(NSArray *)sortDesc withExpressionDescription:(NSArray *)expDesc withResultType:(NSFetchRequestResultType)resultType uniqueResult:(BOOL)unique; + +// Get Entity Description +- (NSEntityDescription *) entityDescriptionForName:(NSString *)name; + +// Save Context +- (BOOL) saveContext; + +// Singleton Accessor ++ (DatabaseHandler *) sharedHandler; ++ (void)deallocSharedHandler; ++ (void)deleteSQLiteFile; + +// ManageObject for Entity +- (id) manageObjectForEntity:(id)entityName; +- (id) manageObjectForEntity:(id)entityName autorelease:(BOOL)autorelease; + +// Undo & Redo +- (BOOL) undoChanges; +- (BOOL) redoChanges; + +@end diff --git a/YakimbiTest/YakimbiTest/Database/DatabaseHandler.m b/YakimbiTest/YakimbiTest/Database/DatabaseHandler.m new file mode 100755 index 0000000..de2d362 --- /dev/null +++ b/YakimbiTest/YakimbiTest/Database/DatabaseHandler.m @@ -0,0 +1,336 @@ +// +// DatabaseHandler.m +// +// +// Created by Syed Arsalan Pervez on 8/2/11. +// Copyright 2011 SAPLogix. All rights reserved. +// + +#import "DatabaseHandler.h" + +// Toggle to clear db on startup +static const BOOL SQLITE_TESTING = NO; + +// Changed to match the user model fileaname +static NSString *SQLITE_FILE = @"YakimbiTest.sqlite"; +static NSString *SQLITE_FILE_NAME = @"YakimbiTest"; + +// Should not be changed +//static NSString *SQLITE_FILE_EXT = @"sqlite"; +static NSString *COREDATA_DATAMODEL_EXT = @"momd"; + + +@implementation DatabaseHandler + +@synthesize _manageContext; + +static DatabaseHandler *sharedObject; + +- (id) initWithDBName:(NSString *)name FileName:(NSString *)file +{ + self = [super init]; + if (self) + { + NSError *error = nil; + +// if (SQLITE_TESTING) +// { +// if ([[NSFileManager defaultManager] fileExistsAtPath:[[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0] stringByAppendingPathComponent:file]]) +// { +// [[NSFileManager defaultManager] removeItemAtPath:[[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0] stringByAppendingPathComponent:file] error:&error]; +// +// if (error) +// Log(@"Error: %@", error); +// +// error = nil; +// } +// } +// +// if (![[NSFileManager defaultManager] fileExistsAtPath:[[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0] stringByAppendingPathComponent:file]]) +// { +// [[NSFileManager defaultManager] copyItemAtPath:[[NSBundle mainBundle] pathForResource:name ofType:SQLITE_FILE_EXT] toPath:[[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0] stringByAppendingPathComponent:file] error:&error]; +// +// if (error) +// Log(@"Error: %@", error); +// +// error = nil; +// } + + NSManagedObjectModel *_model = [[NSManagedObjectModel alloc] initWithContentsOfURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:name ofType:COREDATA_DATAMODEL_EXT]]]; + + NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys: + [NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption, + [NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption, + nil]; + + _storeCordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:_model]; + error = nil; + if ([_storeCordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:[NSURL fileURLWithPath:[[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0] stringByAppendingPathComponent:file]] options:options error:&error]) + { + _manageContext = [[NSManagedObjectContext alloc] init]; + [_manageContext setPersistentStoreCoordinator:_storeCordinator]; + } + else + { + Log(@"Error %@", error); + SAFE_RELEASE(_storeCordinator); + } + SAFE_RELEASE(_model); + } + + return self; +} + ++ (DatabaseHandler *) sharedHandler +{ + @synchronized(sharedObject) + { + if (!sharedObject) + { + sharedObject = [[DatabaseHandler alloc] initWithDBName:SQLITE_FILE_NAME FileName:SQLITE_FILE]; + } + } + + return sharedObject; +} + +- (id) manageObjectForEntity:(id)entityName +{ + return [self manageObjectForEntity:entityName autorelease:YES]; +} + +- (id) manageObjectForEntity:(id)entityName autorelease:(BOOL)autorelease +{ + if ([entityName isKindOfClass:[NSString class]]) + { + Class cls = NSClassFromString(entityName); + + id _manageObject = [[cls alloc] initWithEntity:[NSEntityDescription entityForName:entityName inManagedObjectContext:[DBHandler _manageContext]] insertIntoManagedObjectContext:[DBHandler _manageContext]]; + +// if (_manageObject && autorelease) + return [_manageObject autorelease]; +// else +// if (_manageObject) // this is intentionaly done +// return _manageObject; + } + + return nil; +} + +#pragma mark +#pragma mark Undo & Redo + +// Does a rollback +- (BOOL) undoChanges +{ + if ([_manageContext tryLock]) + { + [_manageContext rollback]; + [_manageContext unlock]; + + return YES; + } + + return NO; +} + +- (BOOL) redoChanges +{ + if ([_manageContext tryLock]) + { + [_manageContext redo]; + [_manageContext unlock]; + + return YES; + } + + return NO; +} + +#pragma mark +#pragma mark Insert Record + +/* + + Insert Record + + */ + +- (BOOL) insertObject:(id)manageObject +{ + return [self insertObject:manageObject andSave:NO]; +} + +- (BOOL) insertObject:(id)manageObject andSave:(BOOL)save +{ + [_manageContext insertObject:manageObject]; + + if (save) + { + return [self saveContext]; + } + else + return true; + + return false; +} + +#pragma mark +#pragma mark Delete Record + +/* + + Delete Record + + */ + +- (BOOL) deleteObject:(id)manageObject +{ + return [self deleteObject:manageObject andSave:NO]; +} + +- (BOOL) deleteObject:(id)manageObject andSave:(BOOL)save +{ + [_manageContext deleteObject:manageObject]; + + if (save) + { + return [self saveContext]; + } + else + return true; + + return false; +} + +#pragma mark +#pragma mark Save Record + +/* + + Save Record + + */ + +- (BOOL) saveContext +{ + NSError *error = nil; + if (![_manageContext save:&error]) + { + Log(@"Error: %@", error); + + return false; + } + + return true; +} + +#pragma mark +#pragma mark Fetch Records + +- (id) fetchObjectsOfEntity:(NSString *)entity +{ + return [self fetchObjectsOfEntity:entity usingPredicate:nil withSortDescriptors:nil withExpressionDescription:nil withResultType:NSManagedObjectResultType]; +} + +- (id) fetchObjectsOfEntity:(NSString *)entity withExpressionDescription:(NSArray *)expDesc +{ + return [self fetchObjectsOfEntity:entity usingPredicate:nil withSortDescriptors:nil withExpressionDescription:expDesc withResultType:NSDictionaryResultType]; +} + +- (id) fetchObjectsOfEntity:(NSString *)entity usingPredicate:(NSPredicate *)predicate +{ + return [self fetchObjectsOfEntity:entity usingPredicate:predicate withSortDescriptors:nil withExpressionDescription:nil withResultType:NSManagedObjectResultType]; +} + +- (id) fetchObjectsOfEntity:(NSString *)entity usingPredicate:(NSPredicate *)predicate uniqueResult:(BOOL)unique +{ + return [self fetchObjectsOfEntity:entity usingPredicate:predicate withSortDescriptors:nil withExpressionDescription:nil withResultType:NSManagedObjectResultType uniqueResult:unique]; +} + +- (id) fetchObjectsOfEntity:(NSString *)entity usingPredicate:(NSPredicate *)predicate withSortDescriptors:(NSArray *)sortDesc withExpressionDescription:(NSArray *)expDesc withResultType:(NSFetchRequestResultType)resultType +{ + return [self fetchObjectsOfEntity:entity usingPredicate:predicate withSortDescriptors:sortDesc withExpressionDescription:expDesc withResultType:resultType uniqueResult:NO]; +} + +- (id) fetchObjectsOfEntity:(NSString *)entity usingPredicate:(NSPredicate *)predicate withSortDescriptors:(NSArray *)sortDesc withExpressionDescription:(NSArray *)expDesc withResultType:(NSFetchRequestResultType)resultType uniqueResult:(BOOL)unique +{ + NSFetchRequest *_request = nil; + NSArray *objects = nil; + NSError *error = nil; + + @try + { + _request = [[NSFetchRequest alloc] init]; + [_request setEntity:[NSEntityDescription entityForName:entity inManagedObjectContext:_manageContext]]; + + if (predicate) + [_request setPredicate:predicate]; // Predicate + + if (sortDesc) + [_request setSortDescriptors:sortDesc]; // Sort Descriptors + + if (expDesc) + [_request setPropertiesToFetch:expDesc]; // Expression Descriptions (for using aggregate functions in CoreData) + + [_request setResultType:resultType]; + + if (unique) + [_request setReturnsDistinctResults:unique]; + + objects = [_manageContext executeFetchRequest:_request error:&error]; + } + @catch(NSException *ex) + { + Log(@"Fetch Exception: %@", ex); + } + @finally + { + SAFE_RELEASE(_request); + + if (!error) + { + return objects; + } + else + { + Log(@"Fetch Error: %@", error); + } + } + + // show fetch error + + return nil; +} + +- (NSEntityDescription *) entityDescriptionForName:(NSString *)name +{ + return [NSEntityDescription entityForName:name inManagedObjectContext:_manageContext]; +} + +#pragma mark +#pragma mark Memory Management + ++ (void)deleteSQLiteFile +{ + NSString *path = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0] stringByAppendingPathComponent:SQLITE_FILE]; + if ([[NSFileManager defaultManager] fileExistsAtPath:path]) + { + [[NSFileManager defaultManager] removeItemAtPath:path error:nil]; + } +} + ++ (void)deallocSharedHandler +{ + SAFE_RELEASE(sharedObject); +} + +- (void) dealloc +{ + SAFE_RELEASE(_storeCordinator); + SAFE_RELEASE(_manageContext); + + [super dealloc]; +} + +@end diff --git a/YakimbiTest/YakimbiTest/Default-568h@2x.png b/YakimbiTest/YakimbiTest/Default-568h@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..0891b7aabfcf3422423b109c8beed2bab838c607 GIT binary patch literal 18594 zcmeI4X;f257Jx&9fS`ixvS;&$x8J@slQFSel)6zJN=?13FB7H(lQjRkSy8x_-S~tvu2gzn1oS+dLcF#eqtq$ z%tf9TTvX?`)R@}3uBI;jzS-=ZR-Td&MHaS&;!0?Ni*#$#`n*~CcQK)Q9vAQ~TUpnI!j)a2biYK^R)M~A5wUDZhx?ULMX z3x1P&qt=trOY6P2U67L=m=U?F|5#Uj(eCueNTZaHs_ceWiHeET+j+tp3Jt9g(ekqP z2WOvfR{qV+9r+o4J5?qK>7;;^+I7tGv-i)es$X_D=EoKF+S?zsyj^oRFElP}c}JT< zd8SUs-?O?}2YD#ngKbnHgzHBcboxK_2r9l(?eNCl-pEzkJm}fY?WC*jnS?VBE4EpY zO$fEejz6fU;W2Kl>JeQBZBl-%Irg`obSlg*@4QB;Dd1H7^Oi5wvt4d{RZ!8Og?^aE z)k0$1g+V3fd(gdQ3d&q2q-FL*uy#}|bc^=VhFsl0jBgUGJ+-s3U8MK9A!YJJMxpci z5hJ%|{DwV48fZn0{n5l$N_KcSb#NKE4plB`9I6Zt=Z!~-zw0{9tg$L&Ju1F0X)Cy8 zKF;(&lJ>x)Jw(=;p~sF(Sd9VWGwFE2rnyS9!f^DZ8+aCLq zQ};>lcJ1GDLqjm6Hd>|Eabno@P`~Bn(~6^aD_#yoEH(a?Nm1S<;S+hSxI5d16^<1lEM3NPFi zkqPrpL)+ zgnseFikg`gJVBha1&7C4;O6>h=dt~`ND+;Zd?W(4v2JIb7Pt>Td42%M-Ju-XAH#Pns762L}K3 zDhvsRqN0Ni(1UrishD2YvV?4*h2iFj$+&N||Fn$4n|^NSU+o?~jq`0jVQt8T9l{7b zXiwwODFh2V!Q6sqP9S>WH$oOf$N~=d0-bqTlD61!=`&0eAP-F>XN?*|gtOXX{ zQVTWyYo4ZK0GAw!GHf|pz9`D;-bbb*5LBX*{bnz|+)$@&P9|ORM2o?95{;ejvo&r- zq8cBhTN6nn)7~W>54U)%-F_-b?YKdfk5I8MHcuzBD5)!;yv#Z&R&^y=@=>VTIMy#r zX&U<=BsPkdqcMe<_}2+>H%XKyrr5ZR8_KVe>ZqYN z^=^~TFD};;rHJ$U;{~w^hYojl4hRI@SH$^K{YEo=sg)WY87r!*7blQK&qnpDo0`Vn zkl)9u9g=mCh&ZCJS(L4yN3k0kQ zuvg$h2KEEk51T+O0JQ+r0`R>g{jvqM0Mr6d3qUOZwE!?PI7HY@CE|dr sfw?Q;rAv?G4&^^8-z_>&sWXMxvD*gPOU4CBe-*@OtE+wfmVJNyHv)PfH~;_u literal 0 HcmV?d00001 diff --git a/YakimbiTest/YakimbiTest/Default.png b/YakimbiTest/YakimbiTest/Default.png new file mode 100644 index 0000000000000000000000000000000000000000..4c8ca6f693f96d511e9113c0eb59eec552354e42 GIT binary patch literal 6540 zcmeAS@N?(olHy`uVBq!ia0y~yU~~ZD2OMlbkt;o0To@QwR5G2N13aCb6#|O#(=u~X z85k@CTSM>X-wqM6>&y>YB4)1;;ojbLbbV-W^iFB1wa3^zCog^LCAReC4K0-?R_2{6 zrP*)4+_uWUy3w5N52M3PW_}MFMP9a~>YLvVZ1D_k*IMQ2QT^fwzoOb(*3gH$%aYWC zkHmcab=va2<#X%jakpJ;<1@F;k__#bwtC&%^D0v(FBh9K&$sK+<}2RJS609D)17$w ztdQP8(eLM8Ka}m_IQ@3wyMKP)l=oM4-?`YS_*P?4V_ORLPxsj&7Ju#kH;>6^Kp?T7~ zl+q?{UOOqV==?+d{=)5s|M~T1mwtH@+Z^$G&eEO9JNP^AX@3jZ*J*!!>lc|1-W%fA z@AOQpXZ_Lt>rxFXrGp*zLPiW@uo_c7C{As>j zWeX)wi+LTp_)@KYZCX{j;H?|1yXT4DnlS(Fr8gyP5|uaX_gLvaW0ScZdnG7o+u{T6 zFI-%d{ls*WuCDa5UJ@|RXv&ejZe}*BMkiWY51&pnRPw(hlykSzvj6e%mYz-GdvzBD zF10?szF_~!jS=?2HyQuPCvARXAe}C}WP|yQ*>5~~=*Nxq8+HHW1~FMDRCP^TcacKuk$ z(U#REVv)D!PhJ*ecH-ELFUrfyV&*)Z)>UCOuS?yd^L@Afk>ihynYPc{^CRwu+JHX+#$@YsC4c|l0tGigsn@jy) zXD($Ouk>H+V(Mr6NQT0S9BFM~V6nkj;1OBOz`zY;a|<&v%$g$sEJPk;hD4M^`1)8S z=jZArrsOB3>Q&?x097+E*i={nnYpPYi3%0DIeEoa6}C!X6;?ntNLXJ<0j#7X+g2&U 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 literal 0 HcmV?d00001 diff --git a/YakimbiTest/YakimbiTest/Network/HTTPRequestOperation.h b/YakimbiTest/YakimbiTest/Network/HTTPRequestOperation.h new file mode 100644 index 0000000..b97f06f --- /dev/null +++ b/YakimbiTest/YakimbiTest/Network/HTTPRequestOperation.h @@ -0,0 +1,65 @@ +// +// HTTPRequestOperation.h +// YakimbiTest +// +// Created by Syed Arsalan Pervez on 2/16/13. +// Copyright (c) 2013 SAPLogix. All rights reserved. +// + +#import + +@class HTTPRequestOperation; + +@protocol HTTPRequestOperationDelegate + +@optional + +- (void)HTTPOperationStarted:(HTTPRequestOperation *)operation; + +@required + +- (void)HTTPOperationFinished:(HTTPRequestOperation *)operation; +- (void)HTTPOperationFailed:(HTTPRequestOperation *)operation withError:(NSError *)error; + +@end + +@interface HTTPRequestOperation : NSOperation +{ + int _tag; + + id _delegate; + + BOOL _failed; + BOOL _finished; + BOOL _executing; + BOOL _cancelled; + BOOL _concurrent; + + NSURL *_requestURL; + + NSMutableData *_data; + + NSURLConnection *_urlConnection; + + Class _parserClass; +} + +@property (assign, nonatomic) int tag; +@property (assign, nonatomic) id delegate; +@property (readonly, nonatomic) NSURL *requestURL; + +- (BOOL)isFailed; + +- (void)startSynchronously; +- (void)startAsynchronously; + +- (NSData *)responseData; +- (NSString *)responseString; + +- (void)registerParserClass:(Class)class; + +- (id)initWithRequestURL:(id)requestURL; ++ (HTTPRequestOperation *)requestWithURL:(id)requestURL; ++ (HTTPRequestOperation *)requestWithURL:(id)requestURL andDelegate:(id)delegate; + +@end diff --git a/YakimbiTest/YakimbiTest/Network/HTTPRequestOperation.m b/YakimbiTest/YakimbiTest/Network/HTTPRequestOperation.m new file mode 100644 index 0000000..678844c --- /dev/null +++ b/YakimbiTest/YakimbiTest/Network/HTTPRequestOperation.m @@ -0,0 +1,316 @@ +// +// HTTPRequestOperation.m +// YakimbiTest +// +// Created by Syed Arsalan Pervez on 2/16/13. +// Copyright (c) 2013 SAPLogix. All rights reserved. +// + +#import "HTTPRequestOperation.h" + +@implementation HTTPRequestOperation + +#pragma mark - Init Methods + +- (id)initWithRequestURL:(id)requestURL +{ + self = [super init]; + if (self) + { + if ([requestURL isKindOfClass:[NSURL class]]) + { + _requestURL = [requestURL copy]; + } + else + if ([requestURL isKindOfClass:[NSString class]]) + { + _requestURL = [[NSURL URLWithString:requestURL] retain]; + } + } + return self; +} + ++ (HTTPRequestOperation *)requestWithURL:(id)requestURL +{ + return [[[HTTPRequestOperation alloc] initWithRequestURL:requestURL] autorelease]; +} + ++ (HTTPRequestOperation *)requestWithURL:(id)requestURL andDelegate:(id)delegate +{ + HTTPRequestOperation *operation = [HTTPRequestOperation requestWithURL:requestURL]; + [operation setDelegate:delegate]; + return operation; +} + +#pragma mark - Method To Execute Operation Either Synchronously or Asynchronously + +- (void)startSynchronously +{ + [self start]; +} + +- (void)startAsynchronously +{ + [self performSelectorInBackground:@selector(start) withObject:nil]; +} + +#pragma mark - NSOperation Overridden Methods + +- (void)start +{ + if ([self isExecuting]) + return; + + [self setIsCancelled:NO]; + [self setIsFailed:NO]; + [self setIsFinished:NO]; + + if (!_requestURL) + { + @throw [NSException exceptionWithName:NSInvalidArgumentException reason:@"Request URL is not specified." userInfo:nil]; + } + else + { + if ([self isConcurrent]) + { + [self main]; + } + else + { + @throw [NSException exceptionWithName:NSInternalInconsistencyException reason:@"Can't be started right now as it dependeds on another operation." userInfo:nil]; + } + } +} + +- (void)main +{ + SAFE_RELEASE(_urlConnection); + _urlConnection = [[NSURLConnection connectionWithRequest:[NSURLRequest requestWithURL:_requestURL] delegate:self] retain]; + + if (!_urlConnection) + { + [self setIsExecuting:NO]; + [self setIsFailed:YES]; + } + else + { + [self setIsExecuting:YES]; + [self HTTPOperationStarted]; + } + + while ([self isExecuting]) + { + [[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:1]]; + } +} + +- (void)cancel +{ + if (_executing) + { + [_urlConnection cancel]; + + [self setIsExecuting:NO]; + [self setIsCancelled:YES]; + } +} + +- (BOOL)isFailed +{ + return _failed; +} + +- (BOOL)isFinished +{ + return _finished; +} + +- (BOOL)isCancelled +{ + return _cancelled; +} + +- (BOOL)isExecuting +{ + return _executing; +} + +- (BOOL)isConcurrent +{ + if ([[self dependencies] count] > 0) + { + for (HTTPRequestOperation *operation in [self dependencies]) + { + if (!([operation isFinished] || [operation isCancelled] || [operation isFailed])) + { + return NO; + } + } + } + return YES; +} + +#pragma mark - NSURLConnectionDelegate Methods + +- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error +{ + [self setIsExecuting:NO]; + [self setIsFailed:YES]; + [self HTTPOperationFailedWithError:error]; +} + +#pragma mark - NSURLConnectionDelegate Methods + +- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data +{ + [_data appendData:data]; +} + +- (void)connectionDidFinishLoading:(NSURLConnection *)connection +{ + if (!_parserClass) + { + [self setIsExecuting:NO]; + [self setIsFinished:YES]; + [self HTTPOperationFinished]; + } + else + { + id object = [[_parserClass new] autorelease]; + if (object && [object conformsToProtocol:@protocol(ParserDelegate)]) + { + [object setDelegate:self]; + [object parseData:_data inBackground:[NSThread isMainThread]]; + } + } +} + +- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response +{ + SAFE_RELEASE(_data); + _data = [NSMutableData new]; +} + +- (NSURLRequest *)connection:(NSURLConnection *)connection willSendRequest:(NSURLRequest *)request redirectResponse:(NSURLResponse *)response +{ + return request; +} + +#pragma mark - Setters + +- (void)setIsFailed:(BOOL)failed +{ + [self willChangeValueForKey:@"isFailed"]; + _failed = failed; + [self didChangeValueForKey:@"isFailed"]; +} + +- (void)setIsFinished:(BOOL)finished +{ + [self willChangeValueForKey:@"isFinished"]; + _finished = finished; + [self didChangeValueForKey:@"isFinished"]; +} + +- (void)setIsExecuting:(BOOL)executing +{ + [self willChangeValueForKey:@"isExecuting"]; + _executing = executing; + [self didChangeValueForKey:@"isExecuting"]; +} + +- (void)setIsCancelled:(BOOL)cancelled +{ + [self willChangeValueForKey:@"isCancelled"]; + _cancelled = cancelled; + [self didChangeValueForKey:@"isCancelled"]; +} + +- (void)setIsConcurrent:(BOOL)concurrent +{ + [self willChangeValueForKey:@"isConcurrent"]; + _concurrent = concurrent; + [self didChangeValueForKey:@"isConcurrent"]; +} + +#pragma mark - HTTPOperationDelegate Methods + +- (void)HTTPOperationStarted +{ + if (_delegate && [_delegate respondsToSelector:@selector(HTTPOperationStarted:)]) + { + dispatch_async(dispatch_get_main_queue(), ^{ + [_delegate performSelector:@selector(HTTPOperationStarted:) withObject:self]; + }); + } +} + +- (void)HTTPOperationFinished +{ + if (_delegate && [_delegate respondsToSelector:@selector(HTTPOperationFinished:)]) + { + dispatch_async(dispatch_get_main_queue(), ^{ + [_delegate performSelector:@selector(HTTPOperationFinished:) withObject:self]; + }); + } +} + +- (void)HTTPOperationFailedWithError:(NSError *)error +{ + if (_delegate && [_delegate respondsToSelector:@selector(HTTPOperationFailed:withError:)]) + { + dispatch_async(dispatch_get_main_queue(), ^{ + [_delegate performSelector:@selector(HTTPOperationFailed:withError:) withObject:self withObject:error]; + }); + } +} + +#pragma mark - Getters + +- (NSData *)responseData +{ + return _data ? [NSData dataWithData:_data] : nil; +} + +- (NSString *)responseString +{ + return _data ? [[[NSString alloc] initWithData:_data encoding:NSUTF8StringEncoding] autorelease] : nil; +} + +#pragma mark - Parser + +- (void)registerParserClass:(Class)class +{ + _parserClass = class; +} + +#pragma mark - ParserDelegate Methods + +- (void)parsingFinished:(Parser *)parser +{ + [self setIsExecuting:NO]; + [self setIsFinished:YES]; + [self HTTPOperationFinished]; +} + +- (void)parsingFailed:(Parser *)parser withError:(NSError *)error +{ + [self setIsExecuting:NO]; + [self setIsFailed:YES]; + [self HTTPOperationFailedWithError:error]; +} + +#pragma mark - Memory Management + +- (void)dealloc +{ + SAFE_RELEASE(_requestURL); + SAFE_RELEASE(_data); + SAFE_RELEASE(_urlConnection); + + _delegate = nil; + + [super dealloc]; +} + +@end diff --git a/YakimbiTest/YakimbiTest/Parsers/Parser.h b/YakimbiTest/YakimbiTest/Parsers/Parser.h new file mode 100644 index 0000000..3e6a74a --- /dev/null +++ b/YakimbiTest/YakimbiTest/Parsers/Parser.h @@ -0,0 +1,38 @@ +// +// Parser.h +// YakimbiTest +// +// Created by Syed Arsalan Pervez on 2/16/13. +// Copyright (c) 2013 SAPLogix. All rights reserved. +// + +#import + +@class Parser; + +@protocol ParserDelegate + +@required +- (void)parseData:(NSData *)data; +- (void)parseData:(NSData *)data inBackground:(BOOL)inBackground; + +@end + +@protocol ParserResponseDelegate + +@required +- (void)parsingFinished:(Parser *)parser; +- (void)parsingFailed:(Parser *)parser withError:(NSError *)error; + +@end + +@interface Parser : NSObject +{ + id _delegate; + int _tag; +} + +@property (assign, nonatomic) id delegate; +@property (assign, nonatomic) int tag; + +@end diff --git a/YakimbiTest/YakimbiTest/Parsers/Parser.m b/YakimbiTest/YakimbiTest/Parsers/Parser.m new file mode 100644 index 0000000..e3d6396 --- /dev/null +++ b/YakimbiTest/YakimbiTest/Parsers/Parser.m @@ -0,0 +1,195 @@ +// +// Parser.m +// YakimbiTest +// +// Created by Syed Arsalan Pervez on 2/16/13. +// Copyright (c) 2013 SAPLogix. All rights reserved. +// + +#import "Parser.h" + +@implementation Parser + +#pragma mark - Parse Data + +- (void)parseData:(NSData *)data inBackground:(BOOL)inBackground +{ + if (inBackground) + [self performSelectorInBackground:@selector(parseData:) withObject:data]; + else + [self parseData:data]; +} + +- (void)parseData:(NSData *)data +{ + @autoreleasepool + { + if (data == nil) + { + if (_delegate && [_delegate conformsToProtocol:@protocol(ParserResponseDelegate)]) + { + [_delegate parsingFailed:self withError:[NSError errorWithDomain:@"com.Yakimbi" code:1000 userInfo:@{NSLocalizedDescriptionKey:@"Data is nil."}]]; + } + return; + } + + [data retain]; + + NSError *error = nil; + NSDictionary *dictionary = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:&error]; + + if (!error) + { + User *_user = nil; + + NSArray *_users = [DBHandler fetchObjectsOfEntity:USER_TABLE]; + if ([_users count] > 0) + _user = [_users objectAtIndex:0]; + else + _user = [DBHandler manageObjectForEntity:USER_TABLE]; + + [_user setLastUpdated:[NSDate date]]; + [_user setTotalSpace:[dictionary valueForKey:@"totalSpace"]]; + [_user setLastRevId:[dictionary valueForKey:@"last_rev_id"]]; + [_user setUsedSpace:[dictionary valueForKey:@"usedSpace"]]; + [_user setAvailableSpace:[dictionary valueForKey:@"availableSpace"]]; + [_user setMode:[dictionary valueForKey:@"mode"]]; + [_user setPendingRequests:[dictionary valueForKey:@"pendingRequests"]]; + [_user setRevId:[dictionary valueForKey:@"rev_id"]]; + + // Check rev_id, if same then return + if ([_user.revId isEqualToNumber:[dictionary valueForKey:@"rev_id"]]) + { + // My Files + [self addOrUpdateFoldersFromDictionary:[dictionary valueForKey:@"my_files"] forUser:_user]; + // SharedFiles + [self addOrUpdateFoldersFromDictionary:[dictionary valueForKey:@"shared_files"] forUser:_user]; + } + + [DBHandler performSelectorOnMainThread:@selector(saveContext) withObject:nil waitUntilDone:NO]; + } + else + { + Log(@"Parsing Error: %@", error); + + if (_delegate && [_delegate conformsToProtocol:@protocol(ParserResponseDelegate)]) + { + [_delegate parsingFailed:self withError:[NSError errorWithDomain:@"com.Yakimbi" code:1001 userInfo:@{NSLocalizedDescriptionKey:@"Failed to parse the given data."}]]; + } + return; + } + + if (_delegate && [_delegate conformsToProtocol:@protocol(ParserResponseDelegate)]) + { + [_delegate parsingFinished:self]; + } + + [data release]; + } +} + +#pragma mark - Support Methods + +- (void)addOrUpdateFoldersFromDictionary:(NSDictionary *)myfiles forUser:(User *)_user +{ + Folder *_folder = nil; + + BOOL found = NO; + + NSSet *folderSet = [[_user folders] filteredSetUsingPredicate:[NSPredicate predicateWithFormat:@"self.fid == %@", [myfiles valueForKey:@"id"]]]; + + // Check if user already has folders and were we able to find the folder we are about to add/update + if ([[_user folders] count] > 0 && [folderSet count] > 0) + { + _folder = [[folderSet allObjects] objectAtIndex:0]; + found = YES; + } + else // if not found then add the folder + { + _folder = [DBHandler manageObjectForEntity:FOLDER_TABLE]; + [_folder setFid:[myfiles valueForKey:@"id"]]; + } + + [_folder setName:[myfiles valueForKey:@"name"]]; + + // Hide all before adding/updating + [[_folder files] setValue:[NSNumber numberWithBool:YES] forKey:@"hidden"]; + + for (NSDictionary *fileDictionary in [myfiles valueForKey:@"content"]) + { + File *_file = nil; + + // If folder already exists then check if file already exists or not + if (found) + { + NSSet *fileSet = [[_folder files] filteredSetUsingPredicate:[NSPredicate predicateWithFormat:@"self.itemId == %@", [fileDictionary valueForKey:@"item_id"]]]; + if ([fileSet count] > 0) + _file = [[fileSet allObjects] objectAtIndex:0]; + } + + // If file not found then create + if (!_file) + { + _file = [DBHandler manageObjectForEntity:FILE_TABLE]; + [_file setFolder:_folder]; + [_folder addFilesObject:_file]; + } + + // Replace all the fields with respective values received from server + [self assignFileObject:_file valuesFromDictionary:fileDictionary]; + + // Unhide the ones that were received from the server + [_file setHidden:[NSNumber numberWithBool:NO]]; + } + + // If folder not found then add it + if (!found) + { + [_folder setUser:_user]; + [_user addFoldersObject:_folder]; + } +} + +- (void)assignFileObject:(File *)file valuesFromDictionary:(NSDictionary *)dictionary +{ + [file setStatus:[dictionary valueForKey:@"status"]]; + [file setIsShared:[dictionary valueForKey:@"is_shared"]]; + [file setShareId:[dictionary valueForKey:@"share_id"]]; + [file setUserId:[dictionary valueForKey:@"user_id"]]; + [file setName:[dictionary valueForKey:@"name"]]; + [file setSharedBy:[dictionary valueForKey:@"shared_by"]]; + [file setCreatedDate:[dictionary valueForKey:@"created_date"]]; + [file setSharedDate:[dictionary valueForKey:@"shared_date"]]; + + // Note: in json response my_files->content->"share_level" is of type string and in shared_files->content->"share_level" if of type number (issue or intentional?) + // stored in local DB as number + if ([[dictionary valueForKey:@"share_level"] isKindOfClass:[NSString class]]) + [file setShareLevel:[NSNumber numberWithInt:[[dictionary valueForKey:@"share_level"] intValue]]]; + else + [file setShareLevel:[dictionary valueForKey:@"share_level"]]; + + if ([[dictionary allKeys] containsObject:@"parent_id"]) + [file setParentId:[dictionary valueForKey:@"parent_id"]]; + + [file setLastUpdatedDate:[dictionary valueForKey:@"last_updated_date"]]; + [file setLastUpdatedBy:[dictionary valueForKey:@"last_updated_by"]]; + [file setLink:[dictionary valueForKey:@"link"]]; + [file setTransType:[dictionary valueForKey:@"trans_type"]]; + [file setItemId:[dictionary valueForKey:@"item_id"]]; + [file setPath:[dictionary valueForKey:@"path"]]; + [file setPathById:[dictionary valueForKey:@"path_by_id"]]; + [file setType:[dictionary valueForKey:@"type"]]; + [file setMimeType:[dictionary valueForKey:@"mime_type"]]; + [file setSize:[dictionary valueForKey:@"size"]]; +} + +#pragma mark - Memory Management + +- (void)dealloc +{ + _delegate = nil; + + [super dealloc]; +} + +@end diff --git a/YakimbiTest/YakimbiTest/Utilities/AppConstants.h b/YakimbiTest/YakimbiTest/Utilities/AppConstants.h new file mode 100644 index 0000000..f0417b5 --- /dev/null +++ b/YakimbiTest/YakimbiTest/Utilities/AppConstants.h @@ -0,0 +1,21 @@ +// +// AppConstants.h +// YakimbiTest +// +// Created by Syed Arsalan Pervez on 2/18/13. +// Copyright (c) 2013 SAPLogix. All rights reserved. +// + +#import + +#define SAMPLE_JSON_URL @"https://gist.github.com/raw/4680060/aac6d818e7103edfe721e719b1512f707bcfb478/sample.json" + +#define USER_TABLE @"User" +#define FOLDER_TABLE @"Folder" +#define FILE_TABLE @"File" + +#define REFRESH_INTERVAL 140 + +@interface AppConstants : NSObject + +@end diff --git a/YakimbiTest/YakimbiTest/Utilities/AppConstants.m b/YakimbiTest/YakimbiTest/Utilities/AppConstants.m new file mode 100644 index 0000000..02de659 --- /dev/null +++ b/YakimbiTest/YakimbiTest/Utilities/AppConstants.m @@ -0,0 +1,13 @@ +// +// AppConstants.m +// YakimbiTest +// +// Created by Syed Arsalan Pervez on 2/18/13. +// Copyright (c) 2013 SAPLogix. All rights reserved. +// + +#import "AppConstants.h" + +@implementation AppConstants + +@end diff --git a/YakimbiTest/YakimbiTest/Utilities/Macros.h b/YakimbiTest/YakimbiTest/Utilities/Macros.h new file mode 100644 index 0000000..f8b6fe4 --- /dev/null +++ b/YakimbiTest/YakimbiTest/Utilities/Macros.h @@ -0,0 +1,40 @@ +// +// Macros.h +// YakimbiTest +// +// Created by Syed Arsalan Pervez on 2/16/13. +// Copyright (c) 2013 SAPLogix. All rights reserved. +// + +//****************************************************************************** +// Logging +//****************************************************************************** + +#define IS_DEBUG 0 + +#define Log(fmt, ...) if (IS_DEBUG == 1) { NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__); } + +//****************************************************************************** +// Release & Set Pointer To Nil +//****************************************************************************** + +#define SAFE_RELEASE(a) if (a) { [a release]; a = nil; } + +//****************************************************************************** +// Device Detection +//****************************************************************************** + +#define DEVICE_iPAD ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) + +//****************************************************************************** +// Byte Formatting +//****************************************************************************** + +#define KB (1024) +#define MB (1024*1024) +#define GB (1024*1024*1024) + +#define FORMAT_BYTES(bytes) bytes >= GB ? [NSString stringWithFormat:@"%.2f GB", (float)bytes/(float)GB] : \ +bytes >= MB ? [NSString stringWithFormat:@"%.2f MB", (float)bytes/(float)MB] : \ +bytes >= KB ? [NSString stringWithFormat:@"%.2f KB", (float)bytes/(float)KB] : \ +[NSString stringWithFormat:@"%.0f Bytes", (float)bytes] diff --git a/YakimbiTest/YakimbiTest/ViewControllers/InfoViewController.h b/YakimbiTest/YakimbiTest/ViewControllers/InfoViewController.h new file mode 100644 index 0000000..a986b1a --- /dev/null +++ b/YakimbiTest/YakimbiTest/ViewControllers/InfoViewController.h @@ -0,0 +1,21 @@ +// +// InfoViewController.h +// YakimbiTest +// +// Created by Syed Arsalan Pervez on 2/20/13. +// Copyright (c) 2013 SAPLogix. All rights reserved. +// + +#import + +@interface InfoViewController : UIViewController +{ + IBOutlet UIProgressView *_progressView; + IBOutlet UILabel *_spaceLabel; + + User *_user; +} + +@property (assign, nonatomic) User *user; + +@end diff --git a/YakimbiTest/YakimbiTest/ViewControllers/InfoViewController.m b/YakimbiTest/YakimbiTest/ViewControllers/InfoViewController.m new file mode 100644 index 0000000..15dfe4d --- /dev/null +++ b/YakimbiTest/YakimbiTest/ViewControllers/InfoViewController.m @@ -0,0 +1,38 @@ +// +// InfoViewController.m +// YakimbiTest +// +// Created by Syed Arsalan Pervez on 2/20/13. +// Copyright (c) 2013 SAPLogix. All rights reserved. +// + +#import "InfoViewController.h" + +@interface InfoViewController () + +@end + +@implementation InfoViewController + +- (void)viewDidLoad +{ + [self setContentSizeForViewInPopover:CGSizeMake(320, 320)]; + + [_spaceLabel setText:[NSString stringWithFormat:@"Using %@ of your %@", FORMAT_BYTES([[_user usedSpace] floatValue]), FORMAT_BYTES([[_user totalSpace] floatValue])]]; +} + +- (void)viewDidAppear:(BOOL)animated +{ + [super viewDidAppear:animated]; + float progress = (([_user.usedSpace floatValue] / [_user.totalSpace floatValue]) * 1.0); + [_progressView setProgress:progress animated:YES]; +} + +- (void)dealloc +{ + _user = nil; + + [super dealloc]; +} + +@end diff --git a/YakimbiTest/YakimbiTest/ViewControllers/InfoViewController.xib b/YakimbiTest/YakimbiTest/ViewControllers/InfoViewController.xib new file mode 100644 index 0000000..2aef3d6 --- /dev/null +++ b/YakimbiTest/YakimbiTest/ViewControllers/InfoViewController.xib @@ -0,0 +1,238 @@ + + + + 1552 + 11G63 + 3084 + 1138.51 + 569.00 + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + 2083 + + + IBProxyObject + IBUILabel + IBUIProgressView + IBUIView + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + PluginDependencyRecalculationVersion + + + + + IBFilesOwner + IBCocoaTouchFramework + + + IBFirstResponder + IBCocoaTouchFramework + + + + 274 + + + + 292 + {{20, 20}, {280, 9}} + + + _NS:9 + NO + IBCocoaTouchFramework + 1 + + 1 + MCAwLjUwMTk2MDgxNCAxAA + + + 1 + MSAxIDEAA + + + + + 292 + {{20, 37}, {280, 21}} + + + _NS:9 + NO + YES + 7 + NO + IBCocoaTouchFramework + Label + + 1 + MCAwIDAAA + darkTextColor + + + 0 + 1 + + 1 + 15 + + + Helvetica + 15 + 16 + + NO + + + {{0, 20}, {320, 548}} + + + + + 3 + MQA + + 2 + + + + + IBUIScreenMetrics + + YES + + + + + + {320, 568} + {568, 320} + + + IBCocoaTouchFramework + Retina 4 Full Screen + 2 + + IBCocoaTouchFramework + + + + + + + view + + + + 3 + + + + _spaceLabel + + + + 13 + + + + _progressView + + + + 14 + + + + + + 0 + + + + + + 1 + + + + + + + + + -1 + + + File's Owner + + + -2 + + + + + 4 + + + + + + 11 + + + + + + + InfoViewController + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIResponder + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + + + + 14 + + + + + InfoViewController + UIViewController + + UIProgressView + UILabel + + + + _progressView + UIProgressView + + + _spaceLabel + UILabel + + + + IBProjectSource + ./Classes/InfoViewController.h + + + + + 0 + IBCocoaTouchFramework + YES + 3 + 2083 + + diff --git a/YakimbiTest/YakimbiTest/ViewControllers/ListViewController.h b/YakimbiTest/YakimbiTest/ViewControllers/ListViewController.h new file mode 100644 index 0000000..b06a7bb --- /dev/null +++ b/YakimbiTest/YakimbiTest/ViewControllers/ListViewController.h @@ -0,0 +1,28 @@ +// +// ListViewController.h +// YakimbiTest +// +// Created by Syed Arsalan Pervez on 2/18/13. +// Copyright (c) 2013 SAPLogix. All rights reserved. +// + +#import + +@interface ListViewController : UIViewController +{ + Folder *_folder; + + NSArray *_items; + + IBOutlet UITableView *_tableView; + IBOutlet UILabel *_pageLabel; + IBOutlet UIBarButtonItem *_nextBarBtn; + IBOutlet UIBarButtonItem *_previousBarBtn; + + int currentPage; + int noOfPages; +} + +@property (retain, nonatomic) Folder *folder; + +@end diff --git a/YakimbiTest/YakimbiTest/ViewControllers/ListViewController.m b/YakimbiTest/YakimbiTest/ViewControllers/ListViewController.m new file mode 100644 index 0000000..285af3f --- /dev/null +++ b/YakimbiTest/YakimbiTest/ViewControllers/ListViewController.m @@ -0,0 +1,260 @@ +// +// ListViewController.m +// YakimbiTest +// +// Created by Syed Arsalan Pervez on 2/18/13. +// Copyright (c) 2013 SAPLogix. All rights reserved. +// + +#import "ListViewController.h" +#import "TableViewController.h" +#import "FileViewCell.h" + +#define DISPLAY_NO_OF_ITEMS 20 + +static NSString *identifier = @"FileCell"; + +@interface ListViewController () + +@end + +@implementation ListViewController + +- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil +{ + if (DEVICE_iPAD) + { + self = [super initWithNibName:[NSStringFromClass([self class]) stringByAppendingString:@"_iPad"] bundle:nibBundleOrNil]; + } + else + self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; + + if (self) + { + } + return self; +} + +#pragma mark - UIViewController Overridden Methods + +- (void)viewDidLoad +{ + [super viewDidLoad]; + // Do any additional setup after loading the view from its nib. + + if (DEVICE_iPAD) + { + [_tableView registerNib:[UINib nibWithNibName:@"FileViewCell_iPad" bundle:nil] forCellReuseIdentifier:identifier]; + } + else + { + [_tableView registerNib:[UINib nibWithNibName:@"FileViewCell" bundle:nil] forCellReuseIdentifier:identifier]; + } + + [[self navigationItem] setRightBarButtonItems:@[_nextBarBtn, _previousBarBtn]]; +} + +- (void)viewWillAppear:(BOOL)animated +{ + [super viewWillAppear:animated]; + + if (_folder) + { + [self setTitle:[_folder name]]; + + currentPage = 1; + noOfPages = ceil((double)[[_folder files] count] / (double)DISPLAY_NO_OF_ITEMS); + + [self refreshData]; + } + + [self setFrameBaseOnOrientation]; +} + +#pragma mark - Refresh Data + +- (void)refreshData +{ + NSSortDescriptor *asc = [NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES]; + SAFE_RELEASE(_items); + + int loc = 0; + int len = 0; + NSRange range; + + // Calculate start location and no. of records to be shown + // If less records than min no. to be displayed at once + if ((currentPage * DISPLAY_NO_OF_ITEMS) > [[_folder files] count]) + { + loc = (currentPage - 1) * DISPLAY_NO_OF_ITEMS; + len = [[_folder files] count] - loc; + range = NSMakeRange(loc, len); + } + else + { + loc = (currentPage - 1) * DISPLAY_NO_OF_ITEMS; + len = DISPLAY_NO_OF_ITEMS; + range = NSMakeRange(loc, len); + } + + // Get subarray and sort it + _items = [[[[[_folder files] allObjects] subarrayWithRange:range] sortedArrayUsingDescriptors:@[asc]] retain]; + + // Show range of records shown from the total no. of records + _pageLabel.text = [NSString stringWithFormat:@"Showing %i - %i of %i", ++loc, loc+[_items count]-1, [[_folder files] count]]; + + // Reload data + [_tableView reloadData]; + + // Scroll to top + [_tableView scrollRectToVisible:CGRectMake(0, 0, 1, 1) animated:YES]; +} + +#pragma mark - Event Handlers + +- (IBAction)next:(id)sender +{ + if (currentPage == noOfPages) + return; + + ++currentPage; + [self refreshData]; +} + +- (IBAction)previous:(id)sender +{ + if (currentPage <= 1) + return; + + --currentPage; + [self refreshData]; +} + +#pragma mark - UITableView Delegate & Datasource Methods + +- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView +{ + return 1; +} + +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section +{ + return [_items count]; +} + +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath +{ + FileViewCell *cell = (FileViewCell *)[tableView dequeueReusableCellWithIdentifier:identifier]; + + File *_file = [_items objectAtIndex:indexPath.row]; + + cell.nameLabel.text = [_file name]; + cell.pathLabel.text = [NSString stringWithFormat:@"Path: %@", [_file path]]; + + if (DEVICE_iPAD) + { + cell.sharedByLabel.text = [NSString stringWithFormat:@"Created on: %@ by %@", [_file createdDate], [_file lastUpdatedBy]]; + cell.sharedByLabel2.text = [NSString stringWithFormat:@"Link: %@", [_file link]]; + } + else + { + cell.sharedByLabel.text = [NSString stringWithFormat:@"Created on: %@", [_file createdDate]]; + cell.sharedByLabel2.text = [NSString stringWithFormat:@"Last Updated By: %@", [_file lastUpdatedBy]]; + } + + if ([[_file type] isEqualToString:@"1"]) + { + cell.fileCountLabel.text = @"file"; + cell.folderCountLabel.text = FORMAT_BYTES([[_file size] floatValue]); + } + else + { + cell.fileCountLabel.text = @"folder"; + cell.folderCountLabel.text = @""; + cell.sharedByLabel2.text = @""; + } + + _file = nil; + + return cell; +} + +- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath +{ + if (DEVICE_iPAD) + { + TableViewController *_mainViewController = [TableViewController new]; + UIPopoverController *popOverController = [[UIPopoverController alloc] initWithContentViewController:_mainViewController]; + [_mainViewController setPopOverViewController:popOverController]; + SAFE_RELEASE(_mainViewController); + [popOverController setDelegate:self]; + + // Calculate the location to show the UIPopoverController + CGRect rect = [tableView rectForRowAtIndexPath:indexPath]; + [popOverController presentPopoverFromRect:CGRectMake(rect.origin.x + rect.size.width-25, CGRectGetMidY(rect)+ (int)(rect.size.height/2) - 18 - tableView.contentOffset.y, 1, 1) inView:[self view] permittedArrowDirections:UIPopoverArrowDirectionRight animated:YES]; + popOverController = nil; + } + else + { + UIActionSheet *actionSheet = [[[UIActionSheet alloc] initWithTitle:@"Test" delegate:nil cancelButtonTitle:@"Cancel" destructiveButtonTitle:nil otherButtonTitles:@"Row1", @"Row2", @"Row3", @"Row4", nil] autorelease]; + [actionSheet showInView:[self view]]; + } + [tableView deselectRowAtIndexPath:indexPath animated:YES]; +} + +- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath +{ + return 94; +} + +#pragma mark - View Rotation Handler + +- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration +{ + [self setFrameBaseOnOrientation]; +} + +- (void)setFrameBaseOnOrientation +{ + if (UIInterfaceOrientationIsLandscape([[UIApplication sharedApplication] statusBarOrientation])) + { + if (DEVICE_iPAD) + { + [_pageLabel setFrame:CGRectMake(0, 3, 1024, 30)]; + } + else + { + [_pageLabel setFrame:CGRectMake(0, 3, 480, 30)]; + } + } + else + { + if (DEVICE_iPAD) + { + [_pageLabel setFrame:CGRectMake(0, 3, 768, 30)]; + } + else + { + [_pageLabel setFrame:CGRectMake(0, 3, 320, 30)]; + } + } +} + +#pragma mark - UIPopoverControllerDelegate Methods + +- (void)popoverControllerDidDismissPopover:(UIPopoverController *)popoverController +{ + SAFE_RELEASE(popoverController); +} + +#pragma mark - Memory Management + +- (void)dealloc +{ + SAFE_RELEASE(_folder); + SAFE_RELEASE(_items); + + [super dealloc]; +} + +@end diff --git a/YakimbiTest/YakimbiTest/ViewControllers/ListViewController.xib b/YakimbiTest/YakimbiTest/ViewControllers/ListViewController.xib new file mode 100644 index 0000000..9014570 --- /dev/null +++ b/YakimbiTest/YakimbiTest/ViewControllers/ListViewController.xib @@ -0,0 +1,284 @@ + + + + 1552 + 11G63 + 3084 + 1138.51 + 569.00 + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + 2083 + + + IBProxyObject + IBUIBarButtonItem + IBUILabel + IBUITableView + IBUIView + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + PluginDependencyRecalculationVersion + + + + + IBFilesOwner + IBCocoaTouchFramework + + + IBFirstResponder + IBCocoaTouchFramework + + + < + IBCocoaTouchFramework + 1 + + + > + IBCocoaTouchFramework + 1 + + + + 274 + + + + 274 + {{0, 32}, {320, 472}} + + _NS:9 + + 3 + MQA + + YES + IBCocoaTouchFramework + YES + 1 + 0 + YES + 44 + 22 + 22 + + + + 292 + {{0, 5}, {320, 21}} + + _NS:9 + NO + YES + 7 + NO + IBCocoaTouchFramework + Label + + 1 + MCAwIDAAA + darkTextColor + + + 0 + 1 + + 1 + 14 + + + Helvetica + 14 + 16 + + NO + + + {{0, 64}, {320, 504}} + + + 3 + MQA + + 2 + + + + + NO + + + IBUIScreenMetrics + + YES + + + + + + {320, 568} + {568, 320} + + + IBCocoaTouchFramework + Retina 4 Full Screen + 2 + + IBCocoaTouchFramework + + + + + + + view + + + + 3 + + + + _tableView + + + + 11 + + + + _previousBarBtn + + + + 15 + + + + _nextBarBtn + + + + 16 + + + + _pageLabel + + + + 20 + + + + dataSource + + + + 9 + + + + delegate + + + + 10 + + + + next: + + + + 18 + + + + previous: + + + + 17 + + + + + + 0 + + + + + + 1 + + + + + + + + + -1 + + + File's Owner + + + -2 + + + + + 4 + + + + + 12 + + + + + 13 + + + + + 19 + + + + + + + ListViewController + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIResponder + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + + + + 20 + + + 0 + IBCocoaTouchFramework + YES + 3 + 2083 + + diff --git a/YakimbiTest/YakimbiTest/ViewControllers/ListViewController_iPad.xib b/YakimbiTest/YakimbiTest/ViewControllers/ListViewController_iPad.xib new file mode 100644 index 0000000..039c524 --- /dev/null +++ b/YakimbiTest/YakimbiTest/ViewControllers/ListViewController_iPad.xib @@ -0,0 +1,340 @@ + + + + 1552 + 11G63 + 3084 + 1138.51 + 569.00 + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + 2083 + + + IBProxyObject + IBUIBarButtonItem + IBUILabel + IBUITableView + IBUIView + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + PluginDependencyRecalculationVersion + + + + + IBFilesOwner + IBIPadFramework + + + IBFirstResponder + IBIPadFramework + + + > + IBIPadFramework + 1 + + + < + IBIPadFramework + 1 + + + + 292 + + + + 274 + {{0, 32}, {768, 928}} + + + _NS:9 + + 3 + MQA + + YES + IBIPadFramework + YES + 1 + 0 + YES + 44 + 22 + 22 + + + + 256 + {{20, 5}, {728, 21}} + + + _NS:9 + NO + YES + 7 + NO + IBIPadFramework + Label + + 1 + MCAwIDAAA + darkTextColor + + + 0 + 1 + + 1 + 14 + + + Helvetica + 14 + 16 + + NO + + + {{0, 64}, {768, 960}} + + + + + 3 + MQA + + 2 + + + NO + + 2 + + + NO + + + IBUIScreenMetrics + + YES + + + + + + {768, 1024} + {1024, 768} + + + IBIPadFramework + iPad Full Screen + 1 + + IBIPadFramework + + + + + + + view + + + + 3 + + + + _tableView + + + + 5 + + + + _previousBarBtn + + + + 16 + + + + _nextBarBtn + + + + 15 + + + + _pageLabel + + + + 21 + + + + dataSource + + + + 6 + + + + delegate + + + + 7 + + + + previous: + + + + 19 + + + + next: + + + + 18 + + + + + + 0 + + + + + + -1 + + + File's Owner + + + -2 + + + + + 2 + + + + + + + + + 4 + + + + + 8 + + + + + 9 + + + + + 20 + + + + + + + ListViewController + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIResponder + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + + + + 21 + + + + + ListViewController + UIViewController + + id + id + + + + next: + id + + + previous: + id + + + + UIBarButtonItem + UILabel + UIBarButtonItem + UITableView + + + + _nextBarBtn + UIBarButtonItem + + + _pageLabel + UILabel + + + _previousBarBtn + UIBarButtonItem + + + _tableView + UITableView + + + + IBProjectSource + ./Classes/ListViewController.h + + + + + 0 + IBIPadFramework + YES + 3 + 2083 + + diff --git a/YakimbiTest/YakimbiTest/ViewControllers/MainViewController.h b/YakimbiTest/YakimbiTest/ViewControllers/MainViewController.h new file mode 100644 index 0000000..ae37f83 --- /dev/null +++ b/YakimbiTest/YakimbiTest/ViewControllers/MainViewController.h @@ -0,0 +1,29 @@ +// +// MainViewController.h +// YakimbiTest +// +// Created by Syed Arsalan Pervez on 2/16/13. +// Copyright (c) 2013 SAPLogix. All rights reserved. +// + +#import +#import "ListViewController.h" +#import "InfoViewController.h" + +@interface MainViewController : UIViewController +{ + User *_user; + + NSArray *_items; + + IBOutlet UILabel *_statusLabel; + IBOutlet UITableView *_tableView; + + IBOutlet UIBarButtonItem *_infoBtn; + + HTTPRequestOperation *_fetchOperation; + + ListViewController *_listViewController; +} + +@end diff --git a/YakimbiTest/YakimbiTest/ViewControllers/MainViewController.m b/YakimbiTest/YakimbiTest/ViewControllers/MainViewController.m new file mode 100644 index 0000000..3789ae5 --- /dev/null +++ b/YakimbiTest/YakimbiTest/ViewControllers/MainViewController.m @@ -0,0 +1,256 @@ +// +// MainViewController.m +// YakimbiTest +// +// Created by Syed Arsalan Pervez on 2/16/13. +// Copyright (c) 2013 SAPLogix. All rights reserved. +// + +#import "MainViewController.h" +#import "FolderViewCell.h" + +static NSString *identifier = @"FolderCell"; + +@interface MainViewController () + +@end + +@implementation MainViewController + +- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil +{ + if (DEVICE_iPAD) + { + self = [super initWithNibName:[NSStringFromClass([self class]) stringByAppendingString:@"_iPad"] bundle:nibBundleOrNil]; + } + else + self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; + + if (self) + { + } + return self; +} + +#pragma mark - UIViewController Overridden Methods + +- (void)viewDidLoad +{ + [super viewDidLoad]; + // Do any additional setup after loading the view from its nib. + + _fetchOperation = [[HTTPRequestOperation requestWithURL:SAMPLE_JSON_URL andDelegate:self] retain]; + [_fetchOperation registerParserClass:[Parser class]]; + [self fetchData]; + + if (DEVICE_iPAD) + { + [_tableView registerNib:[UINib nibWithNibName:@"FolderViewCell_iPad" bundle:nil] forCellReuseIdentifier:identifier]; + } + else + { + [_tableView registerNib:[UINib nibWithNibName:@"FolderViewCell" bundle:nil] forCellReuseIdentifier:identifier]; + } + + [_statusLabel setText:@""]; + + [[self navigationItem] setRightBarButtonItem:_infoBtn]; + + [self refreshData]; +} + +- (void)viewWillAppear:(BOOL)animated +{ + [super viewWillAppear:animated]; + + [self setFrameBaseOnOrientation]; +} + +#pragma mark - Refresh Data + +- (void)refreshData +{ + NSArray *_users = [DBHandler fetchObjectsOfEntity:USER_TABLE]; + if ([_users count] > 0) + { + SAFE_RELEASE(_user); + _user = [[_users objectAtIndex:0] retain]; + + if (_user) + { + NSSortDescriptor *asc = [NSSortDescriptor sortDescriptorWithKey:@"fid" ascending:YES]; + SAFE_RELEASE(_items); + _items = [[[[_user folders] allObjects] sortedArrayUsingDescriptors:@[asc]] retain]; + } + + [_tableView reloadData]; + } +} + +#pragma mark - Fetch Data + +- (void)fetchData +{ + @try + { + [_fetchOperation startAsynchronously]; + } + @catch (NSException *exception) + { + Log(@"Exception %@", exception); + } + @finally + { + } +} + +#pragma mark - HTTPRequestOperationDelegate Methods + +- (void)HTTPOperationStarted:(HTTPRequestOperation *)operation +{ + Log(@"Started!"); +} + +- (void)HTTPOperationFinished:(HTTPRequestOperation *)operation +{ + Log(@"Finished!"); + + [self refreshData]; + + [_statusLabel setText:[NSString stringWithFormat:@"Last Updated: %@", [_user lastUpdated]]]; + + [self performSelector:@selector(fetchData) withObject:nil afterDelay:REFRESH_INTERVAL]; +} + +- (void)HTTPOperationFailed:(HTTPRequestOperation *)operation withError:(NSError *)error +{ + Log(@"Failed!"); + + [_statusLabel setText:[NSString stringWithFormat:@"Last Updated: %@", [_user lastUpdated]]]; + + [self performSelector:@selector(fetchData) withObject:nil afterDelay:REFRESH_INTERVAL]; +} + +#pragma mark - UITableView Delegate & Datasource Methods + +- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView +{ + return 1; +} + +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section +{ + return [_user.folders count]; +} + +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath +{ + FolderViewCell *cell = (FolderViewCell *)[tableView dequeueReusableCellWithIdentifier:identifier]; + + Folder *_folder = [_items objectAtIndex:indexPath.row]; + + cell.nameLabel.text = [_folder name]; + + int folders = [[[_folder files] filteredSetUsingPredicate:[NSPredicate predicateWithFormat:@"self.type == '0'"]] count]; + int files = [[[_folder files] filteredSetUsingPredicate:[NSPredicate predicateWithFormat:@"self.type == '1'"]] count]; + + cell.pathLabel.text = [NSString stringWithFormat:@"Files: %i Folders: %i", files, folders]; + + _folder = nil; + + return cell; +} + +- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath +{ + [tableView deselectRowAtIndexPath:indexPath animated:YES]; + + if (!_listViewController) + _listViewController = [ListViewController new]; + + Folder *folder = [_items objectAtIndex:indexPath.row]; + [_listViewController setFolder:folder]; + folder = nil; + [[self navigationController] pushViewController:_listViewController animated:YES]; +} + +- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath +{ + return 58; +} + +#pragma mark - View Rotation Handler + +- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration +{ + [self setFrameBaseOnOrientation]; +} + +- (void)setFrameBaseOnOrientation +{ + if (UIInterfaceOrientationIsLandscape([[UIApplication sharedApplication] statusBarOrientation])) + { + if (DEVICE_iPAD) + { + [_statusLabel setFrame:CGRectMake(0, _tableView.frame.size.height, 1024, 30)]; + } + else + { + [_statusLabel setFrame:CGRectMake(0, _tableView.frame.size.height, 480, 30)]; + } + } + else + { + if (DEVICE_iPAD) + { + [_statusLabel setFrame:CGRectMake(0, _tableView.frame.size.height, 768, 30)]; + } + else + { + [_statusLabel setFrame:CGRectMake(0, _tableView.frame.size.height, 320, 30)]; + } + } +} + +#pragma mark - Event Handlers + +- (IBAction)showInfo:(id)sender +{ + InfoViewController *_infoViewController = [[InfoViewController new] autorelease]; + [_infoViewController setUser:_user]; + + if (DEVICE_iPAD) + { + UIPopoverController *popOverController = [[UIPopoverController alloc] initWithContentViewController:_infoViewController]; + [popOverController setDelegate:self]; + + [popOverController presentPopoverFromBarButtonItem:sender permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES]; + popOverController = nil; + } + else + { + [[self navigationController] pushViewController:_infoViewController animated:YES]; + } +} + +#pragma mark - UIPopoverControllerDelegate Methods + +- (void)popoverControllerDidDismissPopover:(UIPopoverController *)popoverController +{ + SAFE_RELEASE(popoverController); +} + +#pragma mark - Memory Management + +- (void)dealloc +{ + [_fetchOperation cancel]; + SAFE_RELEASE(_fetchOperation); + SAFE_RELEASE(_user); + SAFE_RELEASE(_items); + SAFE_RELEASE(_listViewController); + + [super dealloc]; +} + +@end diff --git a/YakimbiTest/YakimbiTest/ViewControllers/MainViewController.xib b/YakimbiTest/YakimbiTest/ViewControllers/MainViewController.xib new file mode 100644 index 0000000..81a6684 --- /dev/null +++ b/YakimbiTest/YakimbiTest/ViewControllers/MainViewController.xib @@ -0,0 +1,303 @@ + + + + 1552 + 11G63 + 3084 + 1138.51 + 569.00 + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + 2083 + + + IBProxyObject + IBUIBarButtonItem + IBUILabel + IBUITableView + IBUIView + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + PluginDependencyRecalculationVersion + + + + + IBFilesOwner + IBCocoaTouchFramework + + + IBFirstResponder + IBCocoaTouchFramework + + + Info + IBCocoaTouchFramework + 1 + + + + 274 + + + + 274 + {320, 473} + + + _NS:9 + + 3 + MQA + + YES + IBCocoaTouchFramework + YES + 1 + 0 + YES + 44 + 22 + 22 + + + + 292 + {{20, 481}, {280, 21}} + + + _NS:9 + NO + YES + 7 + NO + IBCocoaTouchFramework + Label + + 1 + MCAwIDAAA + darkTextColor + + + 0 + 1 + + 1 + 11 + + + Helvetica + 11 + 16 + + NO + + + {{0, 64}, {320, 504}} + + + + 3 + MQA + + 2 + + + + + NO + + + IBUIScreenMetrics + + YES + + + + + + {320, 568} + {568, 320} + + + IBCocoaTouchFramework + Retina 4 Full Screen + 2 + + IBCocoaTouchFramework + + + + + + + view + + + + 3 + + + + _tableView + + + + 19 + + + + _statusLabel + + + + 20 + + + + _infoBtn + + + + 23 + + + + dataSource + + + + 17 + + + + delegate + + + + 18 + + + + showInfo: + + + + 24 + + + + + + 0 + + + + + + 1 + + + + + + + + + -1 + + + File's Owner + + + -2 + + + + + 4 + + + + + + 11 + + + + + + 22 + + + + + + + MainViewController + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIResponder + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + + + + 24 + + + + + MainViewController + UIViewController + + showInfo: + id + + + showInfo: + + showInfo: + id + + + + UIBarButtonItem + UILabel + UITableView + + + + _infoBtn + UIBarButtonItem + + + _statusLabel + UILabel + + + _tableView + UITableView + + + + IBProjectSource + ./Classes/MainViewController.h + + + + + 0 + IBCocoaTouchFramework + YES + 3 + 2083 + + diff --git a/YakimbiTest/YakimbiTest/ViewControllers/MainViewController_iPad.xib b/YakimbiTest/YakimbiTest/ViewControllers/MainViewController_iPad.xib new file mode 100644 index 0000000..87b740a --- /dev/null +++ b/YakimbiTest/YakimbiTest/ViewControllers/MainViewController_iPad.xib @@ -0,0 +1,307 @@ + + + + 1552 + 11G63 + 3084 + 1138.51 + 569.00 + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + 2083 + + + IBProxyObject + IBUIBarButtonItem + IBUILabel + IBUITableView + IBUIView + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + PluginDependencyRecalculationVersion + + + + + IBFilesOwner + IBIPadFramework + + + IBFirstResponder + IBIPadFramework + + + Info + IBIPadFramework + 1 + + + + 292 + + + + 274 + {768, 931} + + + + _NS:9 + + 3 + MQA + + YES + IBIPadFramework + YES + 1 + 0 + YES + 44 + 22 + 22 + + + + 260 + {{20, 935}, {728, 21}} + + + _NS:9 + NO + YES + 7 + NO + IBIPadFramework + Label + + 1 + MCAwIDAAA + darkTextColor + + + 0 + 1 + + 1 + 17 + + + Helvetica + 17 + 16 + + NO + + + {{0, 64}, {768, 960}} + + + + + 3 + MQA + + 2 + + + NO + + 2 + + + NO + + + IBUIScreenMetrics + + YES + + + + + + {768, 1024} + {1024, 768} + + + IBIPadFramework + iPad Full Screen + 1 + + IBIPadFramework + + + + + + + view + + + + 3 + + + + _statusLabel + + + + 6 + + + + _tableView + + + + 7 + + + + _infoBtn + + + + 11 + + + + dataSource + + + + 8 + + + + delegate + + + + 9 + + + + showInfo: + + + + 12 + + + + + + 0 + + + + + + -1 + + + File's Owner + + + -2 + + + + + 2 + + + + + + + + + 4 + + + + + + 5 + + + + + 10 + + + + + + + MainViewController + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIResponder + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + + + + 12 + + + + + MainViewController + UIViewController + + showInfo: + id + + + showInfo: + + showInfo: + id + + + + UIBarButtonItem + UILabel + UITableView + + + + _infoBtn + UIBarButtonItem + + + _statusLabel + UILabel + + + _tableView + UITableView + + + + IBProjectSource + ./Classes/MainViewController.h + + + + + 0 + IBIPadFramework + YES + 3 + 2083 + + diff --git a/YakimbiTest/YakimbiTest/ViewControllers/TableViewController.h b/YakimbiTest/YakimbiTest/ViewControllers/TableViewController.h new file mode 100644 index 0000000..3ff4739 --- /dev/null +++ b/YakimbiTest/YakimbiTest/ViewControllers/TableViewController.h @@ -0,0 +1,18 @@ +// +// TableViewController.h +// YakimbiTest +// +// Created by Syed Arsalan Pervez on 2/19/13. +// Copyright (c) 2013 SAPLogix. All rights reserved. +// + +#import + +@interface TableViewController : UITableViewController +{ + UIPopoverController *_popOverViewController; +} + +@property (assign, nonatomic) UIPopoverController *popOverViewController; + +@end diff --git a/YakimbiTest/YakimbiTest/ViewControllers/TableViewController.m b/YakimbiTest/YakimbiTest/ViewControllers/TableViewController.m new file mode 100644 index 0000000..4ae4a5a --- /dev/null +++ b/YakimbiTest/YakimbiTest/ViewControllers/TableViewController.m @@ -0,0 +1,119 @@ +// +// TableViewController.m +// YakimbiTest +// +// Created by Syed Arsalan Pervez on 2/19/13. +// Copyright (c) 2013 SAPLogix. All rights reserved. +// + +#import "TableViewController.h" + +@interface TableViewController () + +@end + +@implementation TableViewController + +- (id)initWithStyle:(UITableViewStyle)style +{ + self = [super initWithStyle:style]; + if (self) { + // Custom initialization + } + return self; +} + +- (void)viewDidLoad +{ + [super viewDidLoad]; + + // Uncomment the following line to preserve selection between presentations. + // self.clearsSelectionOnViewWillAppear = NO; + + // Uncomment the following line to display an Edit button in the navigation bar for this view controller. + // self.navigationItem.rightBarButtonItem = self.editButtonItem; + + [self setContentSizeForViewInPopover:CGSizeMake(200, 200)]; +} + +- (void)didReceiveMemoryWarning +{ + [super didReceiveMemoryWarning]; + // Dispose of any resources that can be recreated. +} + +#pragma mark - Table view data source + +- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView +{ + // Return the number of sections. + return 1; +} + +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section +{ + // Return the number of rows in the section. + return 4; +} + +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath +{ + static NSString *CellIdentifier = @"Cell"; + UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; + if (cell == nil) { + cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; + } + + cell.textLabel.text = [NSString stringWithFormat:@"Row%i", indexPath.row]; + + return cell; +} + +/* +// Override to support conditional editing of the table view. +- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath +{ + // Return NO if you do not want the specified item to be editable. + return YES; +} +*/ + +/* +// Override to support editing the table view. +- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath +{ + if (editingStyle == UITableViewCellEditingStyleDelete) { + // Delete the row from the data source + [tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade]; + } + else if (editingStyle == UITableViewCellEditingStyleInsert) { + // Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view + } +} +*/ + +/* +// Override to support rearranging the table view. +- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath +{ +} +*/ + +/* +// Override to support conditional rearranging of the table view. +- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath +{ + // Return NO if you do not want the item to be re-orderable. + return YES; +} +*/ + +#pragma mark - Table view delegate + +- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath +{ + if (_popOverViewController) + [_popOverViewController dismissPopoverAnimated:YES]; +} + +@end diff --git a/YakimbiTest/YakimbiTest/ViewControllers/TableViewController.xib b/YakimbiTest/YakimbiTest/ViewControllers/TableViewController.xib new file mode 100644 index 0000000..5012ed7 --- /dev/null +++ b/YakimbiTest/YakimbiTest/ViewControllers/TableViewController.xib @@ -0,0 +1,140 @@ + + + + 1552 + 11G63 + 3084 + 1138.51 + 569.00 + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + 2083 + + + IBProxyObject + IBUITableView + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + PluginDependencyRecalculationVersion + + + + + IBFilesOwner + IBIPadFramework + + + IBFirstResponder + IBIPadFramework + + + + 274 + {768, 1024} + + + + 3 + MQA + + NO + YES + NO + IBIPadFramework + NO + 1 + 0 + YES + 44 + 22 + 22 + + + + + + + view + + + + 11 + + + + dataSource + + + + 9 + + + + delegate + + + + 10 + + + + + + 0 + + + + + + -1 + + + File's Owner + + + -2 + + + + + 8 + + + + + + + TableViewController + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIResponder + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + + + + 11 + + + + + TableViewController + UITableViewController + + IBProjectSource + ./Classes/TableViewController.h + + + + + 0 + IBIPadFramework + YES + 3 + 2083 + + diff --git a/YakimbiTest/YakimbiTest/YakimbiTest-Info.plist b/YakimbiTest/YakimbiTest/YakimbiTest-Info.plist new file mode 100644 index 0000000..d52e538 --- /dev/null +++ b/YakimbiTest/YakimbiTest/YakimbiTest-Info.plist @@ -0,0 +1,45 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleDisplayName + ${PRODUCT_NAME} + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + com.saplogix.${PRODUCT_NAME:rfc1034identifier} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1.0 + LSRequiresIPhoneOS + + UIRequiredDeviceCapabilities + + armv7 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + + diff --git a/YakimbiTest/YakimbiTest/YakimbiTest-Prefix.pch b/YakimbiTest/YakimbiTest/YakimbiTest-Prefix.pch new file mode 100644 index 0000000..5d0ad32 --- /dev/null +++ b/YakimbiTest/YakimbiTest/YakimbiTest-Prefix.pch @@ -0,0 +1,26 @@ +// +// Prefix header for all source files of the 'YakimbiTest' target in the 'YakimbiTest' project +// + +#import + +#ifndef __IPHONE_3_0 +#warning "This project uses features only available in iOS SDK 3.0 and later." +#endif + +#ifdef __OBJC__ + #import + #import + #import + +#import "User.h" +#import "Folder.h" +#import "File.h" + +#import "Macros.h" +#import "AppConstants.h" +#import "DatabaseHandler.h" +#import "Parser.h" +#import "HTTPRequestOperation.h" + +#endif diff --git a/YakimbiTest/YakimbiTest/YakimbiTest.xcdatamodeld/.xccurrentversion b/YakimbiTest/YakimbiTest/YakimbiTest.xcdatamodeld/.xccurrentversion new file mode 100644 index 0000000..25f4817 --- /dev/null +++ b/YakimbiTest/YakimbiTest/YakimbiTest.xcdatamodeld/.xccurrentversion @@ -0,0 +1,8 @@ + + + + + _XCCurrentVersionName + YakimbiTest.xcdatamodel + + diff --git a/YakimbiTest/YakimbiTest/YakimbiTest.xcdatamodeld/YakimbiTest.xcdatamodel/contents b/YakimbiTest/YakimbiTest/YakimbiTest.xcdatamodeld/YakimbiTest.xcdatamodel/contents new file mode 100644 index 0000000..24fff4c --- /dev/null +++ b/YakimbiTest/YakimbiTest/YakimbiTest.xcdatamodeld/YakimbiTest.xcdatamodel/contents @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/YakimbiTest/YakimbiTest/en.lproj/InfoPlist.strings b/YakimbiTest/YakimbiTest/en.lproj/InfoPlist.strings new file mode 100644 index 0000000..477b28f --- /dev/null +++ b/YakimbiTest/YakimbiTest/en.lproj/InfoPlist.strings @@ -0,0 +1,2 @@ +/* Localized versions of Info.plist keys */ + diff --git a/YakimbiTest/YakimbiTest/main.m b/YakimbiTest/YakimbiTest/main.m new file mode 100644 index 0000000..1460e08 --- /dev/null +++ b/YakimbiTest/YakimbiTest/main.m @@ -0,0 +1,18 @@ +// +// main.m +// YakimbiTest +// +// Created by Syed Arsalan Pervez on 2/16/13. +// Copyright (c) 2013 SAPLogix. All rights reserved. +// + +#import + +#import "AppDelegate.h" + +int main(int argc, char *argv[]) +{ + @autoreleasepool { + return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); + } +} diff --git a/YakimbiTest/YakimbiTestTests/YakimbiTestTests-Info.plist b/YakimbiTest/YakimbiTestTests/YakimbiTestTests-Info.plist new file mode 100644 index 0000000..384cea3 --- /dev/null +++ b/YakimbiTest/YakimbiTestTests/YakimbiTestTests-Info.plist @@ -0,0 +1,22 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + com.saplogix.${PRODUCT_NAME:rfc1034identifier} + CFBundleInfoDictionaryVersion + 6.0 + CFBundlePackageType + BNDL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1 + + diff --git a/YakimbiTest/YakimbiTestTests/YakimbiTestTests.h b/YakimbiTest/YakimbiTestTests/YakimbiTestTests.h new file mode 100644 index 0000000..79f5d16 --- /dev/null +++ b/YakimbiTest/YakimbiTestTests/YakimbiTestTests.h @@ -0,0 +1,16 @@ +// +// YakimbiTestTests.h +// YakimbiTestTests +// +// Created by Syed Arsalan Pervez on 2/16/13. +// Copyright (c) 2013 SAPLogix. All rights reserved. +// + +#import + +@interface YakimbiTestTests : SenTestCase +{ + Parser *_parser; +} + +@end diff --git a/YakimbiTest/YakimbiTestTests/YakimbiTestTests.m b/YakimbiTest/YakimbiTestTests/YakimbiTestTests.m new file mode 100644 index 0000000..f6be90e --- /dev/null +++ b/YakimbiTest/YakimbiTestTests/YakimbiTestTests.m @@ -0,0 +1,135 @@ +// +// YakimbiTestTests.m +// YakimbiTestTests +// +// Created by Syed Arsalan Pervez on 2/16/13. +// Copyright (c) 2013 SAPLogix. All rights reserved. +// + +#import "YakimbiTestTests.h" + +@implementation YakimbiTestTests + +- (void)setUp +{ + [super setUp]; + + // Set-up code here. + + _parser = [Parser new]; + [_parser setDelegate:self]; +} + +- (void)tearDown +{ + // Tear-down code here. + + SAFE_RELEASE(_parser); + + [super tearDown]; +} + +// **************************************************** +// Test Parser +// **************************************************** + +- (void)testParser +{ + NSData *data = [NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"test" ofType:@"json"]]; + if (!data) + { + STFail(@"Failed to load data."); + return; + } + [_parser parseData:data]; +} + +- (void)parsingFinished:(Parser *)parser +{ + NSArray *users = [DBHandler fetchObjectsOfEntity:USER_TABLE]; + if ([users count] == 0) + STFail(@"Database insertion failed."); + if ([[[users objectAtIndex:0] folders] count] != 2) + STFail(@"Database insertion failed."); + if ([[[[[[users objectAtIndex:0] folders] allObjects] objectAtIndex:0] files] count] != 17 && [[[[[[users objectAtIndex:0] folders] allObjects] objectAtIndex:0] files] count] != 63) + STFail(@"Database insertion failed."); + if ([[[[[[users objectAtIndex:0] folders] allObjects] objectAtIndex:1] files] count] != 17 && [[[[[[users objectAtIndex:0] folders] allObjects] objectAtIndex:1] files] count] != 63) + STFail(@"Database insertion failed."); +} + +- (void)parsingFailed:(Parser *)parser withError:(NSError *)error +{ + STFail(@"%@", error); +} + +// **************************************************** +// Test Byte Formatter +// **************************************************** + +- (void)testByteFormatter +{ + int bytes = 100; + if (![FORMAT_BYTES(bytes) isEqual:@"100 Bytes"]) + STFail(@"Check byte formatter.");bytes = 100; + + bytes = KB; + if (![FORMAT_BYTES(bytes) isEqual:@"1.00 KB"]) + STFail(@"Check byte formatter as %@ != 1.00 KB", FORMAT_BYTES(bytes)); + + bytes = MB; + if (![FORMAT_BYTES(bytes) isEqual:@"1.00 MB"]) + STFail(@"Check byte formatter as %@ != 1.00 MB", FORMAT_BYTES(bytes)); + + bytes = GB; + if (![FORMAT_BYTES(bytes) isEqual:@"1.00 GB"]) + STFail(@"Check byte formatter as %@ != 1.00 GB", FORMAT_BYTES(bytes)); +} + +// **************************************************** +// Test HTTP Request +// **************************************************** + +- (void)testHTTPRequest +{ + HTTPRequestOperation *operation = [HTTPRequestOperation requestWithURL:@"http://ww.google.com" andDelegate:self]; + [operation startSynchronously]; +} + +- (void)HTTPOperationFinished:(HTTPRequestOperation *)operation +{ + if ([operation responseData].length == 0) + { + STFail(@"Response data is empty."); + } + if ([operation tag] == 2) + { + NSArray *users = [DBHandler fetchObjectsOfEntity:USER_TABLE]; + if ([users count] == 0) + STFail(@"Database insertion failed."); + if ([[[users objectAtIndex:0] folders] count] != 2) + STFail(@"Database insertion failed."); + if ([[[[[[users objectAtIndex:0] folders] allObjects] objectAtIndex:0] files] count] != 17 && [[[[[[users objectAtIndex:0] folders] allObjects] objectAtIndex:0] files] count] != 63) + STFail(@"Database insertion failed."); + if ([[[[[[users objectAtIndex:0] folders] allObjects] objectAtIndex:1] files] count] != 17 && [[[[[[users objectAtIndex:0] folders] allObjects] objectAtIndex:1] files] count] != 63) + STFail(@"Database insertion failed."); + } +} + +- (void)HTTPOperationFailed:(HTTPRequestOperation *)operation withError:(NSError *)error +{ + STFail(@"%@", [error description]); +} + +// **************************************************** +// Test HTTP Request With Parser +// **************************************************** + +- (void)testHTTPRequestWithParser +{ + HTTPRequestOperation *operation = [HTTPRequestOperation requestWithURL:SAMPLE_JSON_URL andDelegate:self]; + [operation registerParserClass:[Parser class]]; + [operation setTag:2]; + [operation startSynchronously]; +} + +@end diff --git a/YakimbiTest/YakimbiTestTests/en.lproj/InfoPlist.strings b/YakimbiTest/YakimbiTestTests/en.lproj/InfoPlist.strings new file mode 100644 index 0000000..477b28f --- /dev/null +++ b/YakimbiTest/YakimbiTestTests/en.lproj/InfoPlist.strings @@ -0,0 +1,2 @@ +/* Localized versions of Info.plist keys */ + diff --git a/YakimbiTest/YakimbiTestTests/test.json b/YakimbiTest/YakimbiTestTests/test.json new file mode 100644 index 0000000..bcffb7b --- /dev/null +++ b/YakimbiTest/YakimbiTestTests/test.json @@ -0,0 +1,1718 @@ +{ + "totalSpace": 268435456000, + "last_rev_id": 119, + "usedSpace": 380826907, + "availableSpace": 268054629093, + "mode": "list", + "pendingRequests": 0, + "my_files": { + "content": [ + { + "status": "new", + "is_shared": "no", + "share_id": "", + "user_id": 7, + "name": "files", + "shared_by": 0, + "shared_date": "", + "share_level": "", + "parent_id": null, + "last_updated_date": "2012-08-07 08:28:31", + "last_updated_by": "Akhter, Fazeel", + "link": "", + "created_date": "2012-08-07 08:28:31", + "item_id": 13, + "path": "My Files/files", + "path_by_id": "/", + "type": "0", + "mime_type": "", + "size": 0 + }, + { + "status": "new", + "is_shared": "no", + "share_id": "", + "user_id": 7, + "name": "Stemiona.rtf", + "shared_by": 0, + "shared_date": "", + "share_level": "", + "parent_id": null, + "last_updated_date": "2012-08-07 08:29:20", + "last_updated_by": "Akhter, Fazeel", + "link": "http://ep-dev.yakimbi.com/edocs/download", + "created_date": "2012-08-07 08:29:20", + "item_id": 14, + "path": "My Files/Stemiona.rtf", + "path_by_id": "/", + "type": "1", + "mime_type": "693", + "size": 864 + }, + { + "status": "new", + "is_shared": "no", + "share_id": "", + "user_id": 7, + "name": "sup_tutorial_ios_objectapi_application_development.pdf", + "shared_by": 0, + "shared_date": "", + "share_level": "", + "parent_id": null, + "last_updated_date": "2012-08-07 08:29:20", + "last_updated_by": "Akhter, Fazeel", + "link": "http://ep-dev.yakimbi.com/edocs/download", + "created_date": "2012-08-07 08:29:20", + "item_id": 15, + "path": "My Files/sup_tutorial_ios_objectapi_application_development.pdf", + "path_by_id": "/", + "type": "1", + "mime_type": "3", + "size": 978983 + }, + { + "status": "new", + "is_shared": "no", + "share_id": "", + "user_id": 7, + "name": "Strougo_VTMSpring2011.pdf", + "shared_by": 0, + "shared_date": "", + "share_level": "", + "parent_id": null, + "last_updated_date": "2012-08-07 08:29:31", + "last_updated_by": "Akhter, Fazeel", + "link": "http://ep-dev.yakimbi.com/edocs/download", + "created_date": "2012-08-07 08:29:31", + "item_id": 16, + "path": "My Files/Strougo_VTMSpring2011.pdf", + "path_by_id": "/", + "type": "1", + "mime_type": "3", + "size": 7883101 + }, + { + "status": "new", + "is_shared": "no", + "share_id": "", + "user_id": 7, + "name": "IMG_0026.JPG", + "shared_by": 0, + "shared_date": "", + "share_level": "", + "parent_id": null, + "last_updated_date": "2012-08-07 08:30:09", + "last_updated_by": "Akhter, Fazeel", + "link": "http://ep-dev.yakimbi.com/edocs/download", + "created_date": "2012-08-07 08:30:09", + "item_id": 17, + "path": "My Files/IMG_0026.JPG", + "path_by_id": "/", + "type": "1", + "mime_type": "24", + "size": 286258 + }, + { + "status": "new", + "is_shared": "no", + "share_id": "", + "user_id": 7, + "name": "IMG_0023.JPG", + "shared_by": 0, + "shared_date": "", + "share_level": "", + "parent_id": null, + "last_updated_date": "2012-08-07 08:30:10", + "last_updated_by": "Akhter, Fazeel", + "link": "http://ep-dev.yakimbi.com/edocs/download", + "created_date": "2012-08-07 08:30:10", + "item_id": 18, + "path": "My Files/IMG_0023.JPG", + "path_by_id": "/", + "type": "1", + "mime_type": "24", + "size": 269281 + }, + { + "status": "new", + "is_shared": "no", + "share_id": "", + "user_id": 7, + "name": "IMG_0025.JPG", + "shared_by": 0, + "shared_date": "", + "share_level": "", + "parent_id": null, + "last_updated_date": "2012-08-07 08:30:15", + "last_updated_by": "Akhter, Fazeel", + "link": "http://ep-dev.yakimbi.com/edocs/download", + "created_date": "2012-08-07 08:30:15", + "item_id": 19, + "path": "My Files/IMG_0025.JPG", + "path_by_id": "/", + "type": "1", + "mime_type": "24", + "size": 293412 + }, + { + "status": "new", + "is_shared": "no", + "share_id": "", + "user_id": 7, + "name": "IMG_0021.JPG", + "shared_by": 0, + "shared_date": "", + "share_level": "", + "parent_id": null, + "last_updated_date": "2012-08-07 08:30:20", + "last_updated_by": "Akhter, Fazeel", + "link": "http://ep-dev.yakimbi.com/edocs/download", + "created_date": "2012-08-07 08:30:20", + "item_id": 20, + "path": "My Files/IMG_0021.JPG", + "path_by_id": "/", + "type": "1", + "mime_type": "24", + "size": 326635 + }, + { + "status": "new", + "is_shared": "no", + "share_id": "", + "user_id": 7, + "name": "IMG_0028.JPG", + "shared_by": 0, + "shared_date": "", + "share_level": "", + "parent_id": null, + "last_updated_date": "2012-08-07 08:30:24", + "last_updated_by": "Akhter, Fazeel", + "link": "http://ep-dev.yakimbi.com/edocs/download", + "created_date": "2012-08-07 08:30:24", + "item_id": 21, + "path": "My Files/IMG_0028.JPG", + "path_by_id": "/", + "type": "1", + "mime_type": "24", + "size": 212257 + }, + { + "status": "new", + "is_shared": "no", + "share_id": "", + "user_id": 7, + "name": "IMG_0027.JPG", + "shared_by": 0, + "shared_date": "", + "share_level": "", + "parent_id": null, + "last_updated_date": "2012-08-07 08:30:30", + "last_updated_by": "Akhter, Fazeel", + "link": "http://ep-dev.yakimbi.com/edocs/download", + "created_date": "2012-08-07 08:30:30", + "item_id": 22, + "path": "My Files/IMG_0027.JPG", + "path_by_id": "/", + "type": "1", + "mime_type": "24", + "size": 184790 + }, + { + "status": "new", + "is_shared": "no", + "share_id": "", + "user_id": 7, + "name": "IMG_0019.JPG", + "shared_by": 0, + "shared_date": "", + "share_level": "", + "parent_id": null, + "last_updated_date": "2012-08-07 08:30:34", + "last_updated_by": "Akhter, Fazeel", + "link": "http://ep-dev.yakimbi.com/edocs/download", + "created_date": "2012-08-07 08:30:34", + "item_id": 23, + "path": "My Files/IMG_0019.JPG", + "path_by_id": "/", + "type": "1", + "mime_type": "24", + "size": 305075 + }, + { + "status": "new", + "is_shared": "no", + "share_id": "", + "user_id": 7, + "name": "IMG_0024.JPG", + "shared_by": 0, + "shared_date": "", + "share_level": "", + "parent_id": null, + "last_updated_date": "2012-08-07 08:30:40", + "last_updated_by": "Akhter, Fazeel", + "link": "http://ep-dev.yakimbi.com/edocs/download", + "created_date": "2012-08-07 08:30:40", + "item_id": 24, + "path": "My Files/IMG_0024.JPG", + "path_by_id": "/", + "type": "1", + "mime_type": "24", + "size": 285934 + }, + { + "status": "new", + "is_shared": "no", + "share_id": "", + "user_id": 7, + "name": "IMG_0022.JPG", + "shared_by": 0, + "shared_date": "", + "share_level": "", + "parent_id": null, + "last_updated_date": "2012-08-07 08:30:45", + "last_updated_by": "Akhter, Fazeel", + "link": "http://ep-dev.yakimbi.com/edocs/download", + "created_date": "2012-08-07 08:30:45", + "item_id": 25, + "path": "My Files/IMG_0022.JPG", + "path_by_id": "/", + "type": "1", + "mime_type": "24", + "size": 258605 + }, + { + "status": "new", + "is_shared": "no", + "share_id": "", + "user_id": 7, + "name": "IMG_0020.JPG", + "shared_by": 0, + "shared_date": "", + "share_level": "", + "parent_id": null, + "last_updated_date": "2012-08-07 08:30:51", + "last_updated_by": "Akhter, Fazeel", + "link": "http://ep-dev.yakimbi.com/edocs/download", + "created_date": "2012-08-07 08:30:51", + "item_id": 26, + "path": "My Files/IMG_0020.JPG", + "path_by_id": "/", + "type": "1", + "mime_type": "24", + "size": 306145 + }, + { + "status": "new", + "is_shared": "no", + "share_id": "", + "user_id": 7, + "name": "IMG_0018.JPG", + "shared_by": 0, + "shared_date": "", + "share_level": "", + "parent_id": null, + "last_updated_date": "2012-08-07 08:30:56", + "last_updated_by": "Akhter, Fazeel", + "link": "http://ep-dev.yakimbi.com/edocs/download", + "created_date": "2012-08-07 08:30:56", + "item_id": 27, + "path": "My Files/IMG_0018.JPG", + "path_by_id": "/", + "type": "1", + "mime_type": "24", + "size": 201824 + }, + { + "status": "new", + "is_shared": "no", + "share_id": "", + "user_id": 7, + "name": "IMG_0013.JPG", + "shared_by": 0, + "shared_date": "", + "share_level": "", + "parent_id": null, + "last_updated_date": "2012-08-07 08:31:01", + "last_updated_by": "Akhter, Fazeel", + "link": "http://ep-dev.yakimbi.com/edocs/download", + "created_date": "2012-08-07 08:31:01", + "item_id": 28, + "path": "My Files/IMG_0013.JPG", + "path_by_id": "/", + "type": "1", + "mime_type": "24", + "size": 238826 + }, + { + "status": "new", + "is_shared": "no", + "share_id": "", + "user_id": 7, + "name": "IMG_0016.JPG", + "shared_by": 0, + "shared_date": "", + "share_level": "", + "parent_id": null, + "last_updated_date": "2012-08-07 08:31:06", + "last_updated_by": "Akhter, Fazeel", + "link": "http://ep-dev.yakimbi.com/edocs/download", + "created_date": "2012-08-07 08:31:06", + "item_id": 29, + "path": "My Files/IMG_0016.JPG", + "path_by_id": "/", + "type": "1", + "mime_type": "24", + "size": 222857 + }, + { + "status": "new", + "is_shared": "no", + "share_id": "", + "user_id": 7, + "name": "IMG_0015.JPG", + "shared_by": 0, + "shared_date": "", + "share_level": "", + "parent_id": null, + "last_updated_date": "2012-08-07 08:31:11", + "last_updated_by": "Akhter, Fazeel", + "link": "http://ep-dev.yakimbi.com/edocs/download", + "created_date": "2012-08-07 08:31:11", + "item_id": 30, + "path": "My Files/IMG_0015.JPG", + "path_by_id": "/", + "type": "1", + "mime_type": "24", + "size": 243848 + }, + { + "status": "new", + "is_shared": "no", + "share_id": "", + "user_id": 7, + "name": "IMG_0014.JPG", + "shared_by": 0, + "shared_date": "", + "share_level": "", + "parent_id": null, + "last_updated_date": "2012-08-07 08:31:16", + "last_updated_by": "Akhter, Fazeel", + "link": "http://ep-dev.yakimbi.com/edocs/download", + "created_date": "2012-08-07 08:31:16", + "item_id": 31, + "path": "My Files/IMG_0014.JPG", + "path_by_id": "/", + "type": "1", + "mime_type": "24", + "size": 258099 + }, + { + "status": "new", + "is_shared": "no", + "share_id": "", + "user_id": 7, + "name": "IMG_0012.JPG", + "shared_by": 0, + "shared_date": "", + "share_level": "", + "parent_id": null, + "last_updated_date": "2012-08-07 08:31:22", + "last_updated_by": "Akhter, Fazeel", + "link": "http://ep-dev.yakimbi.com/edocs/download", + "created_date": "2012-08-07 08:31:22", + "item_id": 32, + "path": "My Files/IMG_0012.JPG", + "path_by_id": "/", + "type": "1", + "mime_type": "24", + "size": 274437 + }, + { + "status": "new", + "is_shared": "no", + "share_id": "", + "user_id": 7, + "name": "IMG_0017.JPG", + "shared_by": 0, + "shared_date": "", + "share_level": "", + "parent_id": null, + "last_updated_date": "2012-08-07 08:31:27", + "last_updated_by": "Akhter, Fazeel", + "link": "http://ep-dev.yakimbi.com/edocs/download", + "created_date": "2012-08-07 08:31:27", + "item_id": 33, + "path": "My Files/IMG_0017.JPG", + "path_by_id": "/", + "type": "1", + "mime_type": "24", + "size": 211974 + }, + { + "status": "new", + "is_shared": "no", + "share_id": "", + "user_id": 7, + "name": "IMG_0011.JPG", + "shared_by": 0, + "shared_date": "", + "share_level": "", + "parent_id": null, + "last_updated_date": "2012-08-07 08:31:32", + "last_updated_by": "Akhter, Fazeel", + "link": "http://ep-dev.yakimbi.com/edocs/download", + "created_date": "2012-08-07 08:31:32", + "item_id": 34, + "path": "My Files/IMG_0011.JPG", + "path_by_id": "/", + "type": "1", + "mime_type": "24", + "size": 254660 + }, + { + "status": "new", + "is_shared": "no", + "share_id": "", + "user_id": 7, + "name": "Yakimbi0.8.102-Demo.ipa", + "shared_by": 0, + "shared_date": "", + "share_level": "", + "parent_id": 13, + "last_updated_date": "2012-08-07 08:32:29", + "last_updated_by": "Akhter, Fazeel", + "link": "http://ep-dev.yakimbi.com/edocs/download", + "created_date": "2012-08-07 08:32:29", + "item_id": 35, + "path": "My Files/files/Yakimbi0.8.102-Demo.ipa", + "path_by_id": "/13/", + "type": "1", + "mime_type": "80", + "size": 12964921 + }, + { + "status": "new", + "is_shared": "no", + "share_id": "", + "user_id": 7, + "name": "Yakimbi0.8.103-Demo1.01.ipa", + "shared_by": 0, + "shared_date": "", + "share_level": "", + "parent_id": 13, + "last_updated_date": "2012-08-07 08:32:29", + "last_updated_by": "Akhter, Fazeel", + "link": "http://ep-dev.yakimbi.com/edocs/download", + "created_date": "2012-08-07 08:32:29", + "item_id": 36, + "path": "My Files/files/Yakimbi0.8.103-Demo1.01.ipa", + "path_by_id": "/13/", + "type": "1", + "mime_type": "80", + "size": 12965410 + }, + { + "status": "new", + "is_shared": "no", + "share_id": "", + "user_id": 7, + "name": "Yakimbi0.90.100.ipa", + "shared_by": 0, + "shared_date": "", + "share_level": "", + "parent_id": 13, + "last_updated_date": "2012-08-07 08:32:44", + "last_updated_by": "Akhter, Fazeel", + "link": "http://ep-dev.yakimbi.com/edocs/download", + "created_date": "2012-08-07 08:32:44", + "item_id": 37, + "path": "My Files/files/Yakimbi0.90.100.ipa", + "path_by_id": "/13/", + "type": "1", + "mime_type": "80", + "size": 12482120 + }, + { + "status": "new", + "is_shared": "no", + "share_id": "", + "user_id": 7, + "name": "Yakimbi0.8.101-Demo.ipa", + "shared_by": 0, + "shared_date": "", + "share_level": "", + "parent_id": 13, + "last_updated_date": "2012-08-07 08:32:58", + "last_updated_by": "Akhter, Fazeel", + "link": "http://ep-dev.yakimbi.com/edocs/download", + "created_date": "2012-08-07 08:32:58", + "item_id": 38, + "path": "My Files/files/Yakimbi0.8.101-Demo.ipa", + "path_by_id": "/13/", + "type": "1", + "mime_type": "80", + "size": 12965005 + }, + { + "status": "new", + "is_shared": "no", + "share_id": "", + "user_id": 7, + "name": "Yakimbi0.8.103-Demo1.0.ipa", + "shared_by": 0, + "shared_date": "", + "share_level": "", + "parent_id": 13, + "last_updated_date": "2012-08-07 08:33:13", + "last_updated_by": "Akhter, Fazeel", + "link": "http://ep-dev.yakimbi.com/edocs/download", + "created_date": "2012-08-07 08:33:13", + "item_id": 39, + "path": "My Files/files/Yakimbi0.8.103-Demo1.0.ipa", + "path_by_id": "/13/", + "type": "1", + "mime_type": "80", + "size": 12965314 + }, + { + "status": "new", + "is_shared": "no", + "share_id": "", + "user_id": 7, + "name": "Yakimbi0.8.103-Demo.ipa", + "shared_by": 0, + "shared_date": "", + "share_level": "", + "parent_id": 13, + "last_updated_date": "2012-08-07 08:33:27", + "last_updated_by": "Akhter, Fazeel", + "link": "http://ep-dev.yakimbi.com/edocs/download", + "created_date": "2012-08-07 08:33:27", + "item_id": 40, + "path": "My Files/files/Yakimbi0.8.103-Demo.ipa", + "path_by_id": "/13/", + "type": "1", + "mime_type": "80", + "size": 12965396 + }, + { + "status": "new", + "is_shared": "no", + "share_id": "", + "user_id": 7, + "name": "Yakimbi0.8.101.ipa", + "shared_by": 0, + "shared_date": "", + "share_level": "", + "parent_id": 13, + "last_updated_date": "2012-08-07 08:33:42", + "last_updated_by": "Akhter, Fazeel", + "link": "http://ep-dev.yakimbi.com/edocs/download", + "created_date": "2012-08-07 08:33:42", + "item_id": 41, + "path": "My Files/files/Yakimbi0.8.101.ipa", + "path_by_id": "/13/", + "type": "1", + "mime_type": "80", + "size": 12963533 + }, + { + "status": "new", + "is_shared": "no", + "share_id": "", + "user_id": 7, + "name": "Yakimbi0.8.105.ipa", + "shared_by": 0, + "shared_date": "", + "share_level": "", + "parent_id": 13, + "last_updated_date": "2012-08-07 08:33:56", + "last_updated_by": "Akhter, Fazeel", + "link": "http://ep-dev.yakimbi.com/edocs/download", + "created_date": "2012-08-07 08:33:56", + "item_id": 42, + "path": "My Files/files/Yakimbi0.8.105.ipa", + "path_by_id": "/13/", + "type": "1", + "mime_type": "80", + "size": 12974632 + }, + { + "status": "new", + "is_shared": "no", + "share_id": "", + "user_id": 7, + "name": "Yakimbi0.90.100().ipa", + "shared_by": 0, + "shared_date": "", + "share_level": "", + "parent_id": 13, + "last_updated_date": "2012-08-07 08:34:11", + "last_updated_by": "Akhter, Fazeel", + "link": "http://ep-dev.yakimbi.com/edocs/download", + "created_date": "2012-08-07 08:34:11", + "item_id": 43, + "path": "My Files/files/Yakimbi0.90.100().ipa", + "path_by_id": "/13/", + "type": "1", + "mime_type": "80", + "size": 12482101 + }, + { + "status": "new", + "is_shared": "no", + "share_id": "", + "user_id": 7, + "name": "Yakimbi0.8.99.ipa", + "shared_by": 0, + "shared_date": "", + "share_level": "", + "parent_id": 13, + "last_updated_date": "2012-08-07 08:34:27", + "last_updated_by": "Akhter, Fazeel", + "link": "http://ep-dev.yakimbi.com/edocs/download", + "created_date": "2012-08-07 08:34:27", + "item_id": 44, + "path": "My Files/files/Yakimbi0.8.99.ipa", + "path_by_id": "/13/", + "type": "1", + "mime_type": "80", + "size": 12961283 + }, + { + "status": "new", + "is_shared": "no", + "share_id": "", + "user_id": 7, + "name": "Yakimbi0.8.100.ipa", + "shared_by": 0, + "shared_date": "", + "share_level": "", + "parent_id": 13, + "last_updated_date": "2012-08-07 08:34:43", + "last_updated_by": "Akhter, Fazeel", + "link": "http://ep-dev.yakimbi.com/edocs/download", + "created_date": "2012-08-07 08:34:43", + "item_id": 45, + "path": "My Files/files/Yakimbi0.8.100.ipa", + "path_by_id": "/13/", + "type": "1", + "mime_type": "80", + "size": 12963631 + }, + { + "status": "new", + "is_shared": "no", + "share_id": "", + "user_id": 7, + "name": "Yakimbi0.8.99-Demo.ipa", + "shared_by": 0, + "shared_date": "", + "share_level": "", + "parent_id": 13, + "last_updated_date": "2012-08-07 08:34:59", + "last_updated_by": "Akhter, Fazeel", + "link": "http://ep-dev.yakimbi.com/edocs/download", + "created_date": "2012-08-07 08:34:59", + "item_id": 46, + "path": "My Files/files/Yakimbi0.8.99-Demo.ipa", + "path_by_id": "/13/", + "type": "1", + "mime_type": "80", + "size": 12960634 + }, + { + "status": "new", + "is_shared": "no", + "share_id": "", + "user_id": 7, + "name": "Yakimbi0.8.97.ipa", + "shared_by": 0, + "shared_date": "", + "share_level": "", + "parent_id": 13, + "last_updated_date": "2012-08-07 08:35:15", + "last_updated_by": "Akhter, Fazeel", + "link": "http://ep-dev.yakimbi.com/edocs/download", + "created_date": "2012-08-07 08:35:15", + "item_id": 47, + "path": "My Files/files/Yakimbi0.8.97.ipa", + "path_by_id": "/13/", + "type": "1", + "mime_type": "80", + "size": 12058002 + }, + { + "status": "new", + "is_shared": "no", + "share_id": "", + "user_id": 7, + "name": "Yakimbi0.8.92.ipa", + "shared_by": 0, + "shared_date": "", + "share_level": "", + "parent_id": 13, + "last_updated_date": "2012-08-07 08:35:30", + "last_updated_by": "Akhter, Fazeel", + "link": "http://ep-dev.yakimbi.com/edocs/download", + "created_date": "2012-08-07 08:35:30", + "item_id": 48, + "path": "My Files/files/Yakimbi0.8.92.ipa", + "path_by_id": "/13/", + "type": "1", + "mime_type": "80", + "size": 12066950 + }, + { + "status": "new", + "is_shared": "no", + "share_id": "", + "user_id": 7, + "name": "git.from.bottom.up.pdf", + "shared_by": 0, + "shared_date": "", + "share_level": "", + "parent_id": null, + "last_updated_date": "2012-08-07 08:37:59", + "last_updated_by": "Akhter, Fazeel", + "link": "http://ep-dev.yakimbi.com/edocs/download", + "created_date": "2012-08-07 08:37:59", + "item_id": 50, + "path": "My Files/git.from.bottom.up.pdf", + "path_by_id": "/", + "type": "1", + "mime_type": "3", + "size": 811094 + }, + { + "status": "new", + "is_shared": "no", + "share_id": "", + "user_id": 7, + "name": "progit.pdf", + "shared_by": 0, + "shared_date": "", + "share_level": "", + "parent_id": null, + "last_updated_date": "2012-08-07 08:38:14", + "last_updated_by": "Akhter, Fazeel", + "link": "http://ep-dev.yakimbi.com/edocs/download", + "created_date": "2012-08-07 08:38:14", + "item_id": 52, + "path": "My Files/progit.pdf", + "path_by_id": "/", + "type": "1", + "mime_type": "3", + "size": 4052928 + }, + { + "status": "new", + "is_shared": "no", + "share_id": "", + "user_id": 7, + "name": "Abc.rtf", + "shared_by": 0, + "shared_date": "", + "share_level": "", + "parent_id": null, + "last_updated_date": "2012-08-07 08:38:20", + "last_updated_by": "Akhter, Fazeel", + "link": "http://ep-dev.yakimbi.com/edocs/download", + "created_date": "2012-08-07 08:38:20", + "item_id": 53, + "path": "My Files/Abc.rtf", + "path_by_id": "/", + "type": "1", + "mime_type": "693", + "size": 338 + }, + { + "status": "remove", + "is_shared": "no", + "share_id": "", + "user_id": 7, + "name": "ie_2011.pdf", + "shared_by": 0, + "shared_date": "", + "share_level": "", + "parent_id": null, + "last_updated_date": "2012-08-07 08:42:52", + "last_updated_by": "Akhter, Fazeel", + "link": "http://ep-dev.yakimbi.com/edocs/download", + "created_date": "2012-08-07 08:37:58", + "item_id": 49, + "path": "My Files/", + "path_by_id": "/", + "type": "1", + "mime_type": "3", + "size": 106918 + }, + { + "status": "move", + "is_shared": "no", + "share_id": "", + "user_id": 7, + "name": "Abc.rtf", + "shared_by": 0, + "shared_date": "", + "share_level": "", + "parent_id": 13, + "last_updated_date": "2012-08-13 08:00:51", + "last_updated_by": "Akhter, Fazeel", + "link": "http://ep-dev.yakimbi.com/edocs/download", + "created_date": "2012-08-07 08:38:20", + "item_id": 53, + "path": "My Files/files/Abc.rtf", + "path_by_id": "/13/", + "type": "1", + "mime_type": "693", + "size": 338 + }, + { + "status": "move", + "is_shared": "no", + "share_id": "", + "user_id": 7, + "name": "IMG_0012.JPG", + "shared_by": 0, + "shared_date": "", + "share_level": "", + "parent_id": 13, + "last_updated_date": "2012-08-13 08:01:10", + "last_updated_by": "Akhter, Fazeel", + "link": "http://ep-dev.yakimbi.com/edocs/download", + "created_date": "2012-08-07 08:31:22", + "item_id": 32, + "path": "My Files/files/IMG_0012.JPG", + "path_by_id": "/13/", + "type": "1", + "mime_type": "24", + "size": 274437 + }, + { + "status": "move", + "is_shared": "no", + "share_id": "", + "user_id": 7, + "name": "IMG_0011.JPG", + "shared_by": 0, + "shared_date": "", + "share_level": "", + "parent_id": 13, + "last_updated_date": "2012-08-13 08:02:27", + "last_updated_by": "Akhter, Fazeel", + "link": "http://ep-dev.yakimbi.com/edocs/download", + "created_date": "2012-08-07 08:31:32", + "item_id": 34, + "path": "My Files/files/IMG_0011.JPG", + "path_by_id": "/13/", + "type": "1", + "mime_type": "24", + "size": 254660 + }, + { + "status": "move", + "is_shared": "no", + "share_id": "", + "user_id": 7, + "name": "IMG_0013.JPG", + "shared_by": 0, + "shared_date": "", + "share_level": "", + "parent_id": 13, + "last_updated_date": "2012-08-13 08:02:43", + "last_updated_by": "Akhter, Fazeel", + "link": "http://ep-dev.yakimbi.com/edocs/download", + "created_date": "2012-08-07 08:31:01", + "item_id": 28, + "path": "My Files/files/IMG_0013.JPG", + "path_by_id": "/13/", + "type": "1", + "mime_type": "24", + "size": 238826 + }, + { + "status": "move", + "is_shared": "no", + "share_id": "", + "user_id": 7, + "name": "IMG_0014.JPG", + "shared_by": 0, + "shared_date": "", + "share_level": "", + "parent_id": 13, + "last_updated_date": "2012-08-13 08:03:01", + "last_updated_by": "Akhter, Fazeel", + "link": "http://ep-dev.yakimbi.com/edocs/download", + "created_date": "2012-08-07 08:31:16", + "item_id": 31, + "path": "My Files/files/IMG_0014.JPG", + "path_by_id": "/13/", + "type": "1", + "mime_type": "24", + "size": 258099 + }, + { + "status": "move", + "is_shared": "no", + "share_id": "", + "user_id": 7, + "name": "IMG_0022.JPG", + "shared_by": 0, + "shared_date": "", + "share_level": "", + "parent_id": 13, + "last_updated_date": "2012-08-13 08:03:17", + "last_updated_by": "Akhter, Fazeel", + "link": "http://ep-dev.yakimbi.com/edocs/download", + "created_date": "2012-08-07 08:30:45", + "item_id": 25, + "path": "My Files/files/IMG_0022.JPG", + "path_by_id": "/13/", + "type": "1", + "mime_type": "24", + "size": 258605 + }, + { + "status": "move", + "is_shared": "no", + "share_id": "", + "user_id": 7, + "name": "IMG_0015.JPG", + "shared_by": 0, + "shared_date": "", + "share_level": "", + "parent_id": 13, + "last_updated_date": "2012-08-13 08:04:15", + "last_updated_by": "Akhter, Fazeel", + "link": "http://ep-dev.yakimbi.com/edocs/download", + "created_date": "2012-08-07 08:31:11", + "item_id": 30, + "path": "My Files/files/IMG_0015.JPG", + "path_by_id": "/13/", + "type": "1", + "mime_type": "24", + "size": 243848 + }, + { + "status": "move", + "is_shared": "no", + "share_id": "", + "user_id": 7, + "name": "git.from.bottom.up.pdf", + "shared_by": 0, + "shared_date": "", + "share_level": "", + "parent_id": 13, + "last_updated_date": "2012-08-13 08:04:37", + "last_updated_by": "Akhter, Fazeel", + "link": "http://ep-dev.yakimbi.com/edocs/download", + "created_date": "2012-08-07 08:37:59", + "item_id": 50, + "path": "My Files/files/git.from.bottom.up.pdf", + "path_by_id": "/13/", + "type": "1", + "mime_type": "3", + "size": 811094 + }, + { + "status": "new", + "is_shared": "no", + "share_id": "", + "user_id": 7, + "name": "Fazeel123.pdf", + "shared_by": 0, + "shared_date": "", + "share_level": "", + "parent_id": null, + "last_updated_date": "2012-08-17 09:38:26", + "last_updated_by": "Akhter, Fazeel", + "link": "http://ep-dev.yakimbi.com/edocs/download", + "created_date": "2012-08-17 09:38:26", + "item_id": 2553, + "path": "My Files/Fazeel123.pdf", + "path_by_id": "/", + "type": "1", + "mime_type": "3", + "size": 35226082 + }, + { + "status": "new", + "is_shared": "no", + "share_id": "", + "user_id": 7, + "name": "Fazeel123 (1).pdf", + "shared_by": 0, + "shared_date": "", + "share_level": "", + "parent_id": null, + "last_updated_date": "2012-08-17 09:39:42", + "last_updated_by": "Akhter, Fazeel", + "link": "http://ep-dev.yakimbi.com/edocs/download", + "created_date": "2012-08-17 09:39:42", + "item_id": 2554, + "path": "My Files/Fazeel123 (1).pdf", + "path_by_id": "/", + "type": "1", + "mime_type": "3", + "size": 35226082 + }, + { + "status": "new", + "is_shared": "no", + "share_id": "", + "user_id": 7, + "name": "Fazeel123 (3).pdf", + "shared_by": 0, + "shared_date": "", + "share_level": "", + "parent_id": null, + "last_updated_date": "2012-08-17 09:42:25", + "last_updated_by": "Akhter, Fazeel", + "link": "http://ep-dev.yakimbi.com/edocs/download", + "created_date": "2012-08-17 09:42:25", + "item_id": 2556, + "path": "My Files/Fazeel123 (3).pdf", + "path_by_id": "/", + "type": "1", + "mime_type": "3", + "size": 1228783 + }, + { + "status": "new", + "is_shared": "no", + "share_id": "", + "user_id": 7, + "name": "Hello123.pdf", + "shared_by": 0, + "shared_date": "", + "share_level": "", + "parent_id": null, + "last_updated_date": "2012-08-17 09:46:11", + "last_updated_by": "Akhter, Fazeel", + "link": "http://ep-dev.yakimbi.com/edocs/download", + "created_date": "2012-08-17 09:46:11", + "item_id": 2557, + "path": "My Files/Hello123.pdf", + "path_by_id": "/", + "type": "1", + "mime_type": "3", + "size": 1228711 + }, + { + "status": "remove", + "is_shared": "no", + "share_id": "", + "user_id": 7, + "name": "intro-to-git.pdf", + "shared_by": 0, + "shared_date": "", + "share_level": "", + "parent_id": null, + "last_updated_date": "2012-08-17 09:57:29", + "last_updated_by": "Akhter, Fazeel", + "link": "http://ep-dev.yakimbi.com/edocs/download", + "created_date": "2012-08-07 08:38:07", + "item_id": 51, + "path": "My Files/", + "path_by_id": "/", + "type": "1", + "mime_type": "3", + "size": 35198010 + }, + { + "status": "new", + "is_shared": "no", + "share_id": "", + "user_id": 7, + "name": "A-B-C.pdf", + "shared_by": 0, + "shared_date": "", + "share_level": "", + "parent_id": 13, + "last_updated_date": "2012-08-17 10:18:31", + "last_updated_by": "Akhter, Fazeel", + "link": "http://ep-dev.yakimbi.com/edocs/download", + "created_date": "2012-08-17 10:18:31", + "item_id": 2571, + "path": "My Files/files/A-B-C.pdf", + "path_by_id": "/13/", + "type": "1", + "mime_type": "3", + "size": 202944 + }, + { + "status": "update", + "is_shared": "no", + "share_id": "", + "user_id": 7, + "name": "A-B-C.pdf", + "shared_by": 0, + "shared_date": "", + "share_level": "", + "parent_id": 13, + "last_updated_date": "2012-08-17 10:24:15", + "last_updated_by": "Akhter, Fazeel", + "link": "http://ep-dev.yakimbi.com/edocs/download", + "created_date": "2012-08-17 10:18:31", + "item_id": 2571, + "path": "My Files/files/A-B-C.pdf", + "path_by_id": "/13/", + "type": "1", + "mime_type": "3", + "size": 225223 + }, + { + "status": "new", + "is_shared": "no", + "share_id": "", + "user_id": 7, + "name": "intro.to.git copy.pdf", + "shared_by": 0, + "shared_date": "", + "share_level": "", + "parent_id": null, + "last_updated_date": "2012-08-17 11:22:40", + "last_updated_by": "Akhter, Fazeel", + "link": "http://ep-dev.yakimbi.com/edocs/download", + "created_date": "2012-08-17 11:22:40", + "item_id": 2572, + "path": "My Files/intro.to.git copy.pdf", + "path_by_id": "/", + "type": "1", + "mime_type": "3", + "size": 3768327 + }, + { + "status": "new", + "is_shared": "no", + "share_id": "", + "user_id": 7, + "name": "intro-to-git.pdf", + "shared_by": 0, + "shared_date": "", + "share_level": "", + "parent_id": null, + "last_updated_date": "2012-08-17 11:22:41", + "last_updated_by": "Akhter, Fazeel", + "link": "http://ep-dev.yakimbi.com/edocs/download", + "created_date": "2012-08-17 11:22:41", + "item_id": 2573, + "path": "My Files/intro-to-git.pdf", + "path_by_id": "/", + "type": "1", + "mime_type": "3", + "size": 3768327 + }, + { + "status": "new", + "is_shared": "no", + "share_id": "", + "user_id": 7, + "name": "NewBig.pdf", + "shared_by": 0, + "shared_date": "", + "share_level": "", + "parent_id": null, + "last_updated_date": "2012-08-17 14:20:13", + "last_updated_by": "Akhter, Fazeel", + "link": "http://ep-dev.yakimbi.com/edocs/download", + "created_date": "2012-08-17 14:20:13", + "item_id": 2583, + "path": "My Files/NewBig.pdf", + "path_by_id": "/", + "type": "1", + "mime_type": "3", + "size": 35197803 + }, + { + "status": "new", + "is_shared": "no", + "share_id": "", + "user_id": 7, + "name": "Fazil123.pdf", + "shared_by": 0, + "shared_date": "", + "share_level": "", + "parent_id": null, + "last_updated_date": "2012-08-17 15:17:41", + "last_updated_by": "Akhter, Fazeel", + "link": "http://ep-dev.yakimbi.com/edocs/download", + "created_date": "2012-08-17 15:17:41", + "item_id": 2594, + "path": "My Files/Fazil123.pdf", + "path_by_id": "/", + "type": "1", + "mime_type": "3", + "size": 35197520 + }, + { + "status": "update", + "is_shared": "no", + "share_id": "", + "user_id": 7, + "name": "intro-to-git.pdf", + "shared_by": 0, + "shared_date": "", + "share_level": "", + "parent_id": null, + "last_updated_date": "2012-08-17 15:21:49", + "last_updated_by": "Akhter, Fazeel", + "link": "http://ep-dev.yakimbi.com/edocs/download", + "created_date": "2012-08-17 11:22:41", + "item_id": 2573, + "path": "My Files/intro-to-git.pdf", + "path_by_id": "/", + "type": "1", + "mime_type": "3", + "size": 35198931 + }, + { + "status": "remove", + "is_shared": "no", + "share_id": "", + "user_id": 7, + "name": "Fazeel123 (2).pdf", + "shared_by": 0, + "shared_date": "", + "share_level": "", + "parent_id": null, + "last_updated_date": "2012-08-17 09:40:57", + "last_updated_by": "Akhter, Fazeel", + "link": "http://ep-dev.yakimbi.com/edocs/download", + "created_date": "2012-08-17 09:40:57", + "item_id": 2555, + "path": "My Files/", + "path_by_id": "/", + "type": "1", + "mime_type": "3", + "size": 35226082 + }, + { + "status": "update", + "is_shared": "no", + "share_id": "", + "user_id": 7, + "name": "Fazeel123 (1).pdf", + "shared_by": 0, + "shared_date": "", + "share_level": "", + "parent_id": null, + "last_updated_date": "2012-08-30 09:02:41", + "last_updated_by": "Akhter, Fazeel", + "link": "http://ep-dev.yakimbi.com/edocs/download", + "created_date": "2012-08-17 09:39:42", + "item_id": 2554, + "path": "My Files/Fazeel123 (1).pdf", + "path_by_id": "/", + "type": "1", + "mime_type": "3", + "size": 35226270 + }, + { + "status": "new", + "is_shared": "no", + "share_id": "", + "user_id": 7, + "name": "NewFileNameTezt.pdf", + "shared_by": 0, + "shared_date": "", + "share_level": "", + "parent_id": null, + "last_updated_date": "2012-08-30 09:03:48", + "last_updated_by": "Akhter, Fazeel", + "link": "http://ep-dev.yakimbi.com/edocs/download", + "created_date": "2012-08-30 09:03:48", + "item_id": 3744, + "path": "My Files/NewFileNameTezt.pdf", + "path_by_id": "/", + "type": "1", + "mime_type": "3", + "size": 1228100 + } + ], + "name": "My Files", + "id": "S1" + }, + "rev_id": 119, + "shared_files": { + "content": [ + { + "status": "new", + "is_shared": "yes", + "share_id": "13", + "user_id": 7, + "name": "Wily Pics", + "shared_by": 0, + "created_date": "2012-08-07 14:39:56", + "shared_date": "", + "share_level": 0, + "parent_id": null, + "last_updated_date": "2012-08-07 14:39:56", + "last_updated_by": "Azril, Amir", + "link": "", + "trans_type": "shared_files", + "item_id": 474, + "path": "", + "path_by_id": "/", + "type": "0", + "mime_type": "", + "size": 0 + }, + { + "status": "new", + "is_shared": "yes", + "share_id": "13", + "user_id": 7, + "name": "Wily Pics", + "shared_by": 0, + "created_date": "2012-08-07 14:39:56", + "shared_date": "", + "share_level": 0, + "parent_id": null, + "last_updated_date": "2012-08-07 14:39:56", + "last_updated_by": "Azril, Amir", + "link": "", + "trans_type": "shared_files", + "item_id": 474, + "path": "", + "path_by_id": "/", + "type": "0", + "mime_type": "", + "size": 0 + }, + { + "status": "new", + "is_shared": "yes", + "share_id": "13", + "user_id": 7, + "name": "Wily Pics", + "shared_by": 0, + "created_date": "2012-08-07 14:39:56", + "shared_date": "", + "share_level": 0, + "parent_id": null, + "last_updated_date": "2012-08-07 14:39:56", + "last_updated_by": "Azril, Amir", + "link": "", + "trans_type": "shared_files", + "item_id": 474, + "path": "", + "path_by_id": "/", + "type": "0", + "mime_type": "", + "size": 0 + }, + { + "status": "new", + "is_shared": "yes", + "share_id": "13", + "user_id": 7, + "name": "Wily Pics", + "shared_by": 0, + "created_date": "2012-08-07 14:39:56", + "shared_date": "", + "share_level": 0, + "parent_id": null, + "last_updated_date": "2012-08-07 14:39:56", + "last_updated_by": "Azril, Amir", + "link": "", + "trans_type": "shared_files", + "item_id": 474, + "path": "", + "path_by_id": "/", + "type": "0", + "mime_type": "", + "size": 0 + }, + { + "status": "new", + "is_shared": "yes", + "share_id": "14", + "user_id": 7, + "name": "Sample PDF Form.pdf", + "shared_by": 0, + "created_date": "2012-08-08 09:49:24", + "shared_date": "", + "share_level": 0, + "parent_id": null, + "last_updated_date": "2012-08-08 09:49:24", + "last_updated_by": "Azril, Amir", + "link": "http://ep-dev.yakimbi.com/edocs/download", + "trans_type": "shared_files", + "item_id": 493, + "path": "", + "path_by_id": "/", + "type": "1", + "mime_type": "0", + "size": 1251022 + }, + { + "status": "new", + "is_shared": "yes", + "share_id": "23", + "user_id": 7, + "name": "Lamborghini Aventador Twin Turbo LP700-4 by Underground Racing - YouTube.mp4", + "shared_by": 0, + "created_date": "2012-08-10 10:23:44", + "shared_date": "", + "share_level": 1, + "parent_id": null, + "last_updated_date": "2012-08-10 10:23:44", + "last_updated_by": "Azril, Amir", + "link": "http://ep-dev.yakimbi.com/edocs/download", + "trans_type": "shared_files", + "item_id": 594, + "path": "", + "path_by_id": "/", + "type": "1", + "mime_type": "32", + "size": 81451140 + }, + { + "status": "new", + "is_shared": "yes", + "share_id": "24", + "user_id": 7, + "name": "Sample PDF Form.pdf", + "shared_by": 0, + "created_date": "2012-08-08 09:49:24", + "shared_date": "", + "share_level": 1, + "parent_id": null, + "last_updated_date": "2012-08-08 09:49:24", + "last_updated_by": "Azril, Amir", + "link": "http://ep-dev.yakimbi.com/edocs/download", + "trans_type": "shared_files", + "item_id": 493, + "path": "", + "path_by_id": "/", + "type": "1", + "mime_type": "0", + "size": 1251022 + }, + { + "status": "remove", + "is_shared": "yes", + "share_id": "", + "user_id": 7, + "name": "IMG_20120726_084545 (1).jpg", + "shared_by": 0, + "created_date": "2012-08-07 14:52:46", + "shared_date": "", + "share_level": -1, + "parent_id": 474, + "last_updated_date": "2012-08-07 14:52:46", + "last_updated_by": "Azril, Amir", + "link": "http://ep-dev.yakimbi.com/edocs/download", + "trans_type": "shared_files", + "item_id": 481, + "path": "Shared Files/Wily Pics", + "path_by_id": "/474/", + "type": "1", + "mime_type": "24", + "size": 1010386 + }, + { + "status": "new", + "is_shared": "yes", + "share_id": "26", + "user_id": 7, + "name": "BlondDrive.tv Lamborghini Gallardo Superleggera.mp4", + "shared_by": 0, + "created_date": "2012-08-14 13:10:39", + "shared_date": "", + "share_level": 0, + "parent_id": null, + "last_updated_date": "2012-08-14 13:10:57", + "last_updated_by": "Azril, Amir", + "link": "http://ep-dev.yakimbi.com/edocs/download", + "trans_type": "shared_files", + "item_id": 910, + "path": "", + "path_by_id": "/", + "type": "1", + "mime_type": "32", + "size": 93502738 + }, + { + "status": "new", + "is_shared": "yes", + "share_id": "26", + "user_id": 7, + "name": "BlondDrive.tv Lamborghini Gallardo Superleggera.mp4", + "shared_by": 0, + "created_date": "2012-08-14 13:10:39", + "shared_date": "", + "share_level": 0, + "parent_id": null, + "last_updated_date": "2012-08-14 13:10:57", + "last_updated_by": "Azril, Amir", + "link": "http://ep-dev.yakimbi.com/edocs/download", + "trans_type": "shared_files", + "item_id": 910, + "path": "", + "path_by_id": "/", + "type": "1", + "mime_type": "32", + "size": 93502738 + }, + { + "status": "new", + "is_shared": "yes", + "share_id": "41", + "user_id": 7, + "name": "20 Mar 2012 18 53 19.png", + "shared_by": 0, + "created_date": "2012-08-17 09:50:34", + "shared_date": "", + "share_level": 1, + "parent_id": 2558, + "last_updated_date": "2012-08-17 09:50:34", + "last_updated_by": "Azril, Amir", + "link": "http://ep-dev.yakimbi.com/edocs/download", + "trans_type": "shared_files", + "item_id": 2560, + "path": "", + "path_by_id": "/", + "type": "1", + "mime_type": "25", + "size": 285251 + }, + { + "status": "new", + "is_shared": "yes", + "share_id": "42", + "user_id": 7, + "name": "20 Mar 2012 18 54 06.png", + "shared_by": 0, + "created_date": "2012-08-17 09:51:04", + "shared_date": "", + "share_level": 1, + "parent_id": 2558, + "last_updated_date": "2012-08-17 09:51:04", + "last_updated_by": "Azril, Amir", + "link": "http://ep-dev.yakimbi.com/edocs/download", + "trans_type": "shared_files", + "item_id": 2561, + "path": "", + "path_by_id": "/", + "type": "1", + "mime_type": "25", + "size": 341775 + }, + { + "status": "new", + "is_shared": "yes", + "share_id": "43", + "user_id": 7, + "name": "23 Dec 2011 12 10 22.png", + "shared_by": 0, + "created_date": "2012-08-17 09:51:30", + "shared_date": "", + "share_level": 1, + "parent_id": 2558, + "last_updated_date": "2012-08-17 09:51:30", + "last_updated_by": "Azril, Amir", + "link": "http://ep-dev.yakimbi.com/edocs/download", + "trans_type": "shared_files", + "item_id": 2562, + "path": "", + "path_by_id": "/", + "type": "1", + "mime_type": "25", + "size": 262125 + }, + { + "status": "new", + "is_shared": "yes", + "share_id": "45", + "user_id": 7, + "name": "Revoltech-Optimus-Prime-01_1309801084.jpg", + "shared_by": 0, + "created_date": "2012-08-17 09:57:25", + "shared_date": "", + "share_level": 1, + "parent_id": 2558, + "last_updated_date": "2012-08-17 09:57:25", + "last_updated_by": "Azril, Amir", + "link": "http://ep-dev.yakimbi.com/edocs/download", + "trans_type": "shared_files", + "item_id": 2563, + "path": "", + "path_by_id": "/", + "type": "1", + "mime_type": "24", + "size": 160156 + }, + { + "status": "new", + "is_shared": "yes", + "share_id": "46", + "user_id": 7, + "name": "Revoltech-Optimus-Prime-02_1309801084.jpg", + "shared_by": 0, + "created_date": "2012-08-17 09:57:26", + "shared_date": "", + "share_level": 1, + "parent_id": 2558, + "last_updated_date": "2012-08-17 09:57:26", + "last_updated_by": "Azril, Amir", + "link": "http://ep-dev.yakimbi.com/edocs/download", + "trans_type": "shared_files", + "item_id": 2564, + "path": "", + "path_by_id": "/", + "type": "1", + "mime_type": "24", + "size": 247136 + }, + { + "status": "new", + "is_shared": "yes", + "share_id": "52", + "user_id": 7, + "name": "A-B-C.pdf", + "shared_by": 0, + "created_date": "2012-08-27 13:46:29", + "shared_date": "", + "share_level": 0, + "parent_id": null, + "last_updated_date": "2012-08-27 13:46:29", + "last_updated_by": "account, Test", + "link": "http://ep-dev.yakimbi.com/edocs/download", + "trans_type": "shared_files", + "item_id": 3725, + "path": "", + "path_by_id": "/", + "type": "1", + "mime_type": "3", + "size": 202944 + }, + { + "status": "new", + "is_shared": "yes", + "share_id": "53", + "user_id": 7, + "name": "Fire Evacuation Plan - Map.jpg", + "shared_by": 0, + "created_date": "2012-08-27 13:46:02", + "shared_date": "", + "share_level": 0, + "parent_id": null, + "last_updated_date": "2012-08-27 13:46:02", + "last_updated_by": "account, Test", + "link": "http://ep-dev.yakimbi.com/edocs/download", + "trans_type": "shared_files", + "item_id": 3723, + "path": "", + "path_by_id": "/", + "type": "1", + "mime_type": "24", + "size": 127253 + } + ], + "name": "Shared Files", + "id": "S2" + } +} \ No newline at end of file diff --git a/YakimbiTestUsingARC/YakimbiTest.xcodeproj/project.pbxproj b/YakimbiTestUsingARC/YakimbiTest.xcodeproj/project.pbxproj new file mode 100644 index 0000000..fe29ed1 --- /dev/null +++ b/YakimbiTestUsingARC/YakimbiTest.xcodeproj/project.pbxproj @@ -0,0 +1,696 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 26743EAD16D3FECE008E0446 /* MyNavigationController.m in Sources */ = {isa = PBXBuildFile; fileRef = 26743EAC16D3FECE008E0446 /* MyNavigationController.m */; }; + 26743EB416D40CB3008E0446 /* NSDictionary+Addition.m in Sources */ = {isa = PBXBuildFile; fileRef = 26743EB116D40CB3008E0446 /* NSDictionary+Addition.m */; }; + 26743EC616D4239C008E0446 /* InfoViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 26743EC416D4239C008E0446 /* InfoViewController.m */; }; + 26743EC716D4239C008E0446 /* InfoViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 26743EC516D4239C008E0446 /* InfoViewController.xib */; }; + 2676D1DC16D212A20019B3A5 /* AppConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 2676D1DB16D212A20019B3A5 /* AppConstants.m */; }; + 2676D1ED16D249990019B3A5 /* DatabaseHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 2676D1EC16D249990019B3A5 /* DatabaseHandler.m */; }; + 2676D1F016D250A20019B3A5 /* Folder.m in Sources */ = {isa = PBXBuildFile; fileRef = 2676D1EF16D250A20019B3A5 /* Folder.m */; }; + 2676D1F916D257570019B3A5 /* File.m in Sources */ = {isa = PBXBuildFile; fileRef = 2676D1F816D257570019B3A5 /* File.m */; }; + 2676D1FC16D27C3F0019B3A5 /* User.m in Sources */ = {isa = PBXBuildFile; fileRef = 2676D1FB16D27C3F0019B3A5 /* User.m */; }; + 2692E62D16D2B0E100D109BC /* ListViewController_iPad.xib in Resources */ = {isa = PBXBuildFile; fileRef = 2692E62916D2B0E100D109BC /* ListViewController_iPad.xib */; }; + 2692E62E16D2B0E100D109BC /* ListViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2692E62B16D2B0E100D109BC /* ListViewController.m */; }; + 2692E62F16D2B0E100D109BC /* ListViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 2692E62C16D2B0E100D109BC /* ListViewController.xib */; }; + 2692E63216D2BB5900D109BC /* FileViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 2692E63116D2BB5900D109BC /* FileViewCell.m */; }; + 2692E63616D2BBA800D109BC /* FileViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 2692E63516D2BBA800D109BC /* FileViewCell.xib */; }; + 2692E63816D2C20100D109BC /* Purple_Folder.png in Resources */ = {isa = PBXBuildFile; fileRef = 2692E63716D2C20100D109BC /* Purple_Folder.png */; }; + 2692E64016D2C78100D109BC /* FolderViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 2692E63F16D2C78100D109BC /* FolderViewCell.m */; }; + 2692E64216D2C78E00D109BC /* FolderViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 2692E64116D2C78E00D109BC /* FolderViewCell.xib */; }; + 2692E64616D2CE0600D109BC /* TableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2692E64416D2CE0600D109BC /* TableViewController.m */; }; + 2692E64716D2CE0600D109BC /* TableViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 2692E64516D2CE0600D109BC /* TableViewController.xib */; }; + 2692E64916D2D06C00D109BC /* FolderViewCell_iPad.xib in Resources */ = {isa = PBXBuildFile; fileRef = 2692E64816D2D06C00D109BC /* FolderViewCell_iPad.xib */; }; + 2692E64B16D2D18C00D109BC /* FileViewCell_iPad.xib in Resources */ = {isa = PBXBuildFile; fileRef = 2692E64A16D2D18C00D109BC /* FileViewCell_iPad.xib */; }; + 269F65E616CFAB9C00663B98 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 269F65E516CFAB9C00663B98 /* UIKit.framework */; }; + 269F65E816CFAB9C00663B98 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 269F65E716CFAB9C00663B98 /* Foundation.framework */; }; + 269F65EA16CFAB9C00663B98 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 269F65E916CFAB9C00663B98 /* CoreGraphics.framework */; }; + 269F65EC16CFAB9C00663B98 /* CoreData.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 269F65EB16CFAB9C00663B98 /* CoreData.framework */; }; + 269F65F216CFAB9C00663B98 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 269F65F016CFAB9C00663B98 /* InfoPlist.strings */; }; + 269F65F416CFAB9C00663B98 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 269F65F316CFAB9C00663B98 /* main.m */; }; + 269F65F816CFAB9C00663B98 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 269F65F716CFAB9C00663B98 /* AppDelegate.m */; }; + 269F65FA16CFAB9C00663B98 /* Default.png in Resources */ = {isa = PBXBuildFile; fileRef = 269F65F916CFAB9C00663B98 /* Default.png */; }; + 269F65FC16CFAB9C00663B98 /* Default@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 269F65FB16CFAB9C00663B98 /* Default@2x.png */; }; + 269F65FE16CFAB9C00663B98 /* Default-568h@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 269F65FD16CFAB9C00663B98 /* Default-568h@2x.png */; }; + 269F660116CFAB9C00663B98 /* YakimbiTest.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = 269F65FF16CFAB9C00663B98 /* YakimbiTest.xcdatamodeld */; }; + 269F660916CFAB9C00663B98 /* SenTestingKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 269F660816CFAB9C00663B98 /* SenTestingKit.framework */; }; + 269F660A16CFAB9C00663B98 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 269F65E516CFAB9C00663B98 /* UIKit.framework */; }; + 269F660B16CFAB9C00663B98 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 269F65E716CFAB9C00663B98 /* Foundation.framework */; }; + 269F660C16CFAB9C00663B98 /* CoreData.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 269F65EB16CFAB9C00663B98 /* CoreData.framework */; }; + 269F661416CFAB9C00663B98 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 269F661216CFAB9C00663B98 /* InfoPlist.strings */; }; + 269F661716CFAB9C00663B98 /* YakimbiTestTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 269F661616CFAB9C00663B98 /* YakimbiTestTests.m */; }; + 269F662216CFABCE00663B98 /* Parser.m in Sources */ = {isa = PBXBuildFile; fileRef = 269F662116CFABCE00663B98 /* Parser.m */; }; + 269F662816CFAC3400663B98 /* MainViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 269F662516CFAC3400663B98 /* MainViewController.m */; }; + 269F662916CFAC3400663B98 /* MainViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 269F662616CFAC3400663B98 /* MainViewController.xib */; }; + 269F662A16CFAC3400663B98 /* MainViewController_iPad.xib in Resources */ = {isa = PBXBuildFile; fileRef = 269F662716CFAC3400663B98 /* MainViewController_iPad.xib */; }; + 269F663216CFAF4B00663B98 /* HTTPRequestOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 269F663116CFAF4B00663B98 /* HTTPRequestOperation.m */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 269F660D16CFAB9C00663B98 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 269F65DA16CFAB9B00663B98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 269F65E116CFAB9B00663B98; + remoteInfo = YakimbiTest; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 26743EAB16D3FECE008E0446 /* MyNavigationController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MyNavigationController.h; path = Custom/MyNavigationController.h; sourceTree = ""; }; + 26743EAC16D3FECE008E0446 /* MyNavigationController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MyNavigationController.m; path = Custom/MyNavigationController.m; sourceTree = ""; }; + 26743EB016D40CB3008E0446 /* NSDictionary+Addition.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSDictionary+Addition.h"; sourceTree = ""; }; + 26743EB116D40CB3008E0446 /* NSDictionary+Addition.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSDictionary+Addition.m"; sourceTree = ""; }; + 26743EC316D4239C008E0446 /* InfoViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = InfoViewController.h; path = ViewControllers/InfoViewController.h; sourceTree = ""; }; + 26743EC416D4239C008E0446 /* InfoViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = InfoViewController.m; path = ViewControllers/InfoViewController.m; sourceTree = ""; }; + 26743EC516D4239C008E0446 /* InfoViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = InfoViewController.xib; path = ViewControllers/InfoViewController.xib; sourceTree = ""; }; + 2676D1DA16D212A20019B3A5 /* AppConstants.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppConstants.h; path = Utilities/AppConstants.h; sourceTree = ""; }; + 2676D1DB16D212A20019B3A5 /* AppConstants.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AppConstants.m; path = Utilities/AppConstants.m; sourceTree = ""; }; + 2676D1EB16D249990019B3A5 /* DatabaseHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DatabaseHandler.h; sourceTree = ""; }; + 2676D1EC16D249990019B3A5 /* DatabaseHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DatabaseHandler.m; sourceTree = ""; }; + 2676D1EE16D250A20019B3A5 /* Folder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Folder.h; path = "DB Files/Folder.h"; sourceTree = ""; }; + 2676D1EF16D250A20019B3A5 /* Folder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = Folder.m; path = "DB Files/Folder.m"; sourceTree = ""; }; + 2676D1F716D257570019B3A5 /* File.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = File.h; path = "DB Files/File.h"; sourceTree = ""; }; + 2676D1F816D257570019B3A5 /* File.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = File.m; path = "DB Files/File.m"; sourceTree = ""; }; + 2676D1FA16D27C3F0019B3A5 /* User.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = User.h; path = "DB Files/User.h"; sourceTree = ""; }; + 2676D1FB16D27C3F0019B3A5 /* User.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = User.m; path = "DB Files/User.m"; sourceTree = ""; }; + 2692E62916D2B0E100D109BC /* ListViewController_iPad.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = ListViewController_iPad.xib; path = ViewControllers/ListViewController_iPad.xib; sourceTree = ""; }; + 2692E62A16D2B0E100D109BC /* ListViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ListViewController.h; path = ViewControllers/ListViewController.h; sourceTree = ""; }; + 2692E62B16D2B0E100D109BC /* ListViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ListViewController.m; path = ViewControllers/ListViewController.m; sourceTree = ""; }; + 2692E62C16D2B0E100D109BC /* ListViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = ListViewController.xib; path = ViewControllers/ListViewController.xib; sourceTree = ""; }; + 2692E63016D2BB5800D109BC /* FileViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FileViewCell.h; path = Cells/FileViewCell.h; sourceTree = ""; }; + 2692E63116D2BB5900D109BC /* FileViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = FileViewCell.m; path = Cells/FileViewCell.m; sourceTree = ""; }; + 2692E63516D2BBA800D109BC /* FileViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = FileViewCell.xib; path = Cells/FileViewCell.xib; sourceTree = ""; }; + 2692E63716D2C20100D109BC /* Purple_Folder.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = Purple_Folder.png; path = ../../../../Downloads/Purple_Folder.png; sourceTree = ""; }; + 2692E63E16D2C78100D109BC /* FolderViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FolderViewCell.h; path = Cells/FolderViewCell.h; sourceTree = ""; }; + 2692E63F16D2C78100D109BC /* FolderViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = FolderViewCell.m; path = Cells/FolderViewCell.m; sourceTree = ""; }; + 2692E64116D2C78E00D109BC /* FolderViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = FolderViewCell.xib; path = Cells/FolderViewCell.xib; sourceTree = ""; }; + 2692E64316D2CE0600D109BC /* TableViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TableViewController.h; path = ViewControllers/TableViewController.h; sourceTree = ""; }; + 2692E64416D2CE0600D109BC /* TableViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = TableViewController.m; path = ViewControllers/TableViewController.m; sourceTree = ""; }; + 2692E64516D2CE0600D109BC /* TableViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = TableViewController.xib; path = ViewControllers/TableViewController.xib; sourceTree = ""; }; + 2692E64816D2D06C00D109BC /* FolderViewCell_iPad.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = FolderViewCell_iPad.xib; path = Cells/FolderViewCell_iPad.xib; sourceTree = ""; }; + 2692E64A16D2D18C00D109BC /* FileViewCell_iPad.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = FileViewCell_iPad.xib; path = Cells/FileViewCell_iPad.xib; sourceTree = ""; }; + 269F65E216CFAB9C00663B98 /* YakimbiTest.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = YakimbiTest.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 269F65E516CFAB9C00663B98 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; + 269F65E716CFAB9C00663B98 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; + 269F65E916CFAB9C00663B98 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; + 269F65EB16CFAB9C00663B98 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = System/Library/Frameworks/CoreData.framework; sourceTree = SDKROOT; }; + 269F65EF16CFAB9C00663B98 /* YakimbiTest-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "YakimbiTest-Info.plist"; sourceTree = ""; }; + 269F65F116CFAB9C00663B98 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; + 269F65F316CFAB9C00663B98 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; + 269F65F516CFAB9C00663B98 /* YakimbiTest-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "YakimbiTest-Prefix.pch"; sourceTree = ""; }; + 269F65F616CFAB9C00663B98 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; + 269F65F716CFAB9C00663B98 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; + 269F65F916CFAB9C00663B98 /* Default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Default.png; sourceTree = ""; }; + 269F65FB16CFAB9C00663B98 /* Default@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default@2x.png"; sourceTree = ""; }; + 269F65FD16CFAB9C00663B98 /* Default-568h@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default-568h@2x.png"; sourceTree = ""; }; + 269F660016CFAB9C00663B98 /* YakimbiTest.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = YakimbiTest.xcdatamodel; sourceTree = ""; }; + 269F660716CFAB9C00663B98 /* YakimbiTestTests.octest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = YakimbiTestTests.octest; sourceTree = BUILT_PRODUCTS_DIR; }; + 269F660816CFAB9C00663B98 /* SenTestingKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SenTestingKit.framework; path = Library/Frameworks/SenTestingKit.framework; sourceTree = DEVELOPER_DIR; }; + 269F661116CFAB9C00663B98 /* YakimbiTestTests-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "YakimbiTestTests-Info.plist"; sourceTree = ""; }; + 269F661316CFAB9C00663B98 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; + 269F661516CFAB9C00663B98 /* YakimbiTestTests.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YakimbiTestTests.h; sourceTree = ""; }; + 269F661616CFAB9C00663B98 /* YakimbiTestTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YakimbiTestTests.m; sourceTree = ""; }; + 269F662016CFABCE00663B98 /* Parser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Parser.h; path = Parsers/Parser.h; sourceTree = ""; }; + 269F662116CFABCE00663B98 /* Parser.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = Parser.m; path = Parsers/Parser.m; sourceTree = ""; }; + 269F662416CFAC3400663B98 /* MainViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MainViewController.h; path = ViewControllers/MainViewController.h; sourceTree = ""; }; + 269F662516CFAC3400663B98 /* MainViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MainViewController.m; path = ViewControllers/MainViewController.m; sourceTree = ""; }; + 269F662616CFAC3400663B98 /* MainViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = MainViewController.xib; path = ViewControllers/MainViewController.xib; sourceTree = ""; }; + 269F662716CFAC3400663B98 /* MainViewController_iPad.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = MainViewController_iPad.xib; path = ViewControllers/MainViewController_iPad.xib; sourceTree = ""; }; + 269F662C16CFAC6E00663B98 /* Macros.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Macros.h; path = Utilities/Macros.h; sourceTree = ""; }; + 269F663016CFAF4B00663B98 /* HTTPRequestOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = HTTPRequestOperation.h; path = Network/HTTPRequestOperation.h; sourceTree = ""; }; + 269F663116CFAF4B00663B98 /* HTTPRequestOperation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = HTTPRequestOperation.m; path = Network/HTTPRequestOperation.m; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 269F65DF16CFAB9B00663B98 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 269F65E616CFAB9C00663B98 /* UIKit.framework in Frameworks */, + 269F65E816CFAB9C00663B98 /* Foundation.framework in Frameworks */, + 269F65EA16CFAB9C00663B98 /* CoreGraphics.framework in Frameworks */, + 269F65EC16CFAB9C00663B98 /* CoreData.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 269F660316CFAB9C00663B98 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 269F660916CFAB9C00663B98 /* SenTestingKit.framework in Frameworks */, + 269F660A16CFAB9C00663B98 /* UIKit.framework in Frameworks */, + 269F660B16CFAB9C00663B98 /* Foundation.framework in Frameworks */, + 269F660C16CFAB9C00663B98 /* CoreData.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 26743EAA16D3FEAB008E0446 /* Custom */ = { + isa = PBXGroup; + children = ( + 26743EAB16D3FECE008E0446 /* MyNavigationController.h */, + 26743EAC16D3FECE008E0446 /* MyNavigationController.m */, + ); + name = Custom; + sourceTree = ""; + }; + 26743EAF16D40CB3008E0446 /* Additions */ = { + isa = PBXGroup; + children = ( + 26743EB016D40CB3008E0446 /* NSDictionary+Addition.h */, + 26743EB116D40CB3008E0446 /* NSDictionary+Addition.m */, + ); + path = Additions; + sourceTree = ""; + }; + 26743EC816D423A4008E0446 /* Info View */ = { + isa = PBXGroup; + children = ( + 26743EC316D4239C008E0446 /* InfoViewController.h */, + 26743EC416D4239C008E0446 /* InfoViewController.m */, + 26743EC516D4239C008E0446 /* InfoViewController.xib */, + ); + name = "Info View"; + sourceTree = ""; + }; + 2676D1E916D238690019B3A5 /* DB Files */ = { + isa = PBXGroup; + children = ( + 269F65FF16CFAB9C00663B98 /* YakimbiTest.xcdatamodeld */, + 2676D1FA16D27C3F0019B3A5 /* User.h */, + 2676D1FB16D27C3F0019B3A5 /* User.m */, + 2676D1F716D257570019B3A5 /* File.h */, + 2676D1F816D257570019B3A5 /* File.m */, + 2676D1EE16D250A20019B3A5 /* Folder.h */, + 2676D1EF16D250A20019B3A5 /* Folder.m */, + ); + name = "DB Files"; + path = ..; + sourceTree = ""; + }; + 2676D1EA16D249990019B3A5 /* Database */ = { + isa = PBXGroup; + children = ( + 2676D1E916D238690019B3A5 /* DB Files */, + 2676D1EB16D249990019B3A5 /* DatabaseHandler.h */, + 2676D1EC16D249990019B3A5 /* DatabaseHandler.m */, + ); + path = Database; + sourceTree = ""; + }; + 2692E63416D2BB7900D109BC /* Cells */ = { + isa = PBXGroup; + children = ( + 2692E63016D2BB5800D109BC /* FileViewCell.h */, + 2692E63116D2BB5900D109BC /* FileViewCell.m */, + 2692E63516D2BBA800D109BC /* FileViewCell.xib */, + 2692E64A16D2D18C00D109BC /* FileViewCell_iPad.xib */, + 2692E63E16D2C78100D109BC /* FolderViewCell.h */, + 2692E63F16D2C78100D109BC /* FolderViewCell.m */, + 2692E64116D2C78E00D109BC /* FolderViewCell.xib */, + 2692E64816D2D06C00D109BC /* FolderViewCell_iPad.xib */, + ); + name = Cells; + sourceTree = ""; + }; + 269F65D916CFAB9B00663B98 = { + isa = PBXGroup; + children = ( + 269F65ED16CFAB9C00663B98 /* YakimbiTest */, + 269F660F16CFAB9C00663B98 /* YakimbiTestTests */, + 269F65E416CFAB9C00663B98 /* Frameworks */, + 269F65E316CFAB9C00663B98 /* Products */, + ); + sourceTree = ""; + }; + 269F65E316CFAB9C00663B98 /* Products */ = { + isa = PBXGroup; + children = ( + 269F65E216CFAB9C00663B98 /* YakimbiTest.app */, + 269F660716CFAB9C00663B98 /* YakimbiTestTests.octest */, + ); + name = Products; + sourceTree = ""; + }; + 269F65E416CFAB9C00663B98 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 269F65E516CFAB9C00663B98 /* UIKit.framework */, + 269F65E716CFAB9C00663B98 /* Foundation.framework */, + 269F65E916CFAB9C00663B98 /* CoreGraphics.framework */, + 269F65EB16CFAB9C00663B98 /* CoreData.framework */, + 269F660816CFAB9C00663B98 /* SenTestingKit.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + 269F65ED16CFAB9C00663B98 /* YakimbiTest */ = { + isa = PBXGroup; + children = ( + 26743EAF16D40CB3008E0446 /* Additions */, + 26743EAA16D3FEAB008E0446 /* Custom */, + 2692E63416D2BB7900D109BC /* Cells */, + 269F663316CFAF4F00663B98 /* Network */, + 269F662F16CFAC7400663B98 /* Utilities */, + 269F662B16CFAC3C00663B98 /* ViewControllers */, + 269F662316CFABD500663B98 /* Parsers */, + 2676D1EA16D249990019B3A5 /* Database */, + 269F65F616CFAB9C00663B98 /* AppDelegate.h */, + 269F65F716CFAB9C00663B98 /* AppDelegate.m */, + 269F65EE16CFAB9C00663B98 /* Supporting Files */, + ); + path = YakimbiTest; + sourceTree = ""; + }; + 269F65EE16CFAB9C00663B98 /* Supporting Files */ = { + isa = PBXGroup; + children = ( + 2692E63716D2C20100D109BC /* Purple_Folder.png */, + 269F65EF16CFAB9C00663B98 /* YakimbiTest-Info.plist */, + 269F65F016CFAB9C00663B98 /* InfoPlist.strings */, + 269F65F316CFAB9C00663B98 /* main.m */, + 269F65F516CFAB9C00663B98 /* YakimbiTest-Prefix.pch */, + 269F65F916CFAB9C00663B98 /* Default.png */, + 269F65FB16CFAB9C00663B98 /* Default@2x.png */, + 269F65FD16CFAB9C00663B98 /* Default-568h@2x.png */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; + 269F660F16CFAB9C00663B98 /* YakimbiTestTests */ = { + isa = PBXGroup; + children = ( + 269F661516CFAB9C00663B98 /* YakimbiTestTests.h */, + 269F661616CFAB9C00663B98 /* YakimbiTestTests.m */, + 269F661016CFAB9C00663B98 /* Supporting Files */, + ); + path = YakimbiTestTests; + sourceTree = ""; + }; + 269F661016CFAB9C00663B98 /* Supporting Files */ = { + isa = PBXGroup; + children = ( + 269F661116CFAB9C00663B98 /* YakimbiTestTests-Info.plist */, + 269F661216CFAB9C00663B98 /* InfoPlist.strings */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; + 269F662316CFABD500663B98 /* Parsers */ = { + isa = PBXGroup; + children = ( + 269F662016CFABCE00663B98 /* Parser.h */, + 269F662116CFABCE00663B98 /* Parser.m */, + ); + name = Parsers; + sourceTree = ""; + }; + 269F662B16CFAC3C00663B98 /* ViewControllers */ = { + isa = PBXGroup; + children = ( + 26743EC816D423A4008E0446 /* Info View */, + 2692E64316D2CE0600D109BC /* TableViewController.h */, + 2692E64416D2CE0600D109BC /* TableViewController.m */, + 2692E64516D2CE0600D109BC /* TableViewController.xib */, + 2692E62A16D2B0E100D109BC /* ListViewController.h */, + 2692E62B16D2B0E100D109BC /* ListViewController.m */, + 2692E62C16D2B0E100D109BC /* ListViewController.xib */, + 2692E62916D2B0E100D109BC /* ListViewController_iPad.xib */, + 269F662416CFAC3400663B98 /* MainViewController.h */, + 269F662516CFAC3400663B98 /* MainViewController.m */, + 269F662616CFAC3400663B98 /* MainViewController.xib */, + 269F662716CFAC3400663B98 /* MainViewController_iPad.xib */, + ); + name = ViewControllers; + sourceTree = ""; + }; + 269F662F16CFAC7400663B98 /* Utilities */ = { + isa = PBXGroup; + children = ( + 269F662C16CFAC6E00663B98 /* Macros.h */, + 2676D1DA16D212A20019B3A5 /* AppConstants.h */, + 2676D1DB16D212A20019B3A5 /* AppConstants.m */, + ); + name = Utilities; + sourceTree = ""; + }; + 269F663316CFAF4F00663B98 /* Network */ = { + isa = PBXGroup; + children = ( + 269F663016CFAF4B00663B98 /* HTTPRequestOperation.h */, + 269F663116CFAF4B00663B98 /* HTTPRequestOperation.m */, + ); + name = Network; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 269F65E116CFAB9B00663B98 /* YakimbiTest */ = { + isa = PBXNativeTarget; + buildConfigurationList = 269F661A16CFAB9C00663B98 /* Build configuration list for PBXNativeTarget "YakimbiTest" */; + buildPhases = ( + 269F65DE16CFAB9B00663B98 /* Sources */, + 269F65DF16CFAB9B00663B98 /* Frameworks */, + 269F65E016CFAB9B00663B98 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = YakimbiTest; + productName = YakimbiTest; + productReference = 269F65E216CFAB9C00663B98 /* YakimbiTest.app */; + productType = "com.apple.product-type.application"; + }; + 269F660616CFAB9C00663B98 /* YakimbiTestTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 269F661D16CFAB9C00663B98 /* Build configuration list for PBXNativeTarget "YakimbiTestTests" */; + buildPhases = ( + 269F660216CFAB9C00663B98 /* Sources */, + 269F660316CFAB9C00663B98 /* Frameworks */, + 269F660416CFAB9C00663B98 /* Resources */, + 269F660516CFAB9C00663B98 /* ShellScript */, + ); + buildRules = ( + ); + dependencies = ( + 269F660E16CFAB9C00663B98 /* PBXTargetDependency */, + ); + name = YakimbiTestTests; + productName = YakimbiTestTests; + productReference = 269F660716CFAB9C00663B98 /* YakimbiTestTests.octest */; + productType = "com.apple.product-type.bundle"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 269F65DA16CFAB9B00663B98 /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 0460; + ORGANIZATIONNAME = SAPLogix; + }; + buildConfigurationList = 269F65DD16CFAB9B00663B98 /* Build configuration list for PBXProject "YakimbiTest" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + ); + mainGroup = 269F65D916CFAB9B00663B98; + productRefGroup = 269F65E316CFAB9C00663B98 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 269F65E116CFAB9B00663B98 /* YakimbiTest */, + 269F660616CFAB9C00663B98 /* YakimbiTestTests */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 269F65E016CFAB9B00663B98 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 269F65F216CFAB9C00663B98 /* InfoPlist.strings in Resources */, + 269F65FA16CFAB9C00663B98 /* Default.png in Resources */, + 269F65FC16CFAB9C00663B98 /* Default@2x.png in Resources */, + 269F65FE16CFAB9C00663B98 /* Default-568h@2x.png in Resources */, + 269F662916CFAC3400663B98 /* MainViewController.xib in Resources */, + 269F662A16CFAC3400663B98 /* MainViewController_iPad.xib in Resources */, + 2692E62D16D2B0E100D109BC /* ListViewController_iPad.xib in Resources */, + 2692E62F16D2B0E100D109BC /* ListViewController.xib in Resources */, + 2692E63616D2BBA800D109BC /* FileViewCell.xib in Resources */, + 2692E63816D2C20100D109BC /* Purple_Folder.png in Resources */, + 2692E64216D2C78E00D109BC /* FolderViewCell.xib in Resources */, + 2692E64716D2CE0600D109BC /* TableViewController.xib in Resources */, + 2692E64916D2D06C00D109BC /* FolderViewCell_iPad.xib in Resources */, + 2692E64B16D2D18C00D109BC /* FileViewCell_iPad.xib in Resources */, + 26743EC716D4239C008E0446 /* InfoViewController.xib in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 269F660416CFAB9C00663B98 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 269F661416CFAB9C00663B98 /* InfoPlist.strings in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 269F660516CFAB9C00663B98 /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "# Run the unit tests in this test bundle.\n\"${SYSTEM_DEVELOPER_DIR}/Tools/RunUnitTests\"\n"; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 269F65DE16CFAB9B00663B98 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 269F65F416CFAB9C00663B98 /* main.m in Sources */, + 269F65F816CFAB9C00663B98 /* AppDelegate.m in Sources */, + 269F660116CFAB9C00663B98 /* YakimbiTest.xcdatamodeld in Sources */, + 269F662216CFABCE00663B98 /* Parser.m in Sources */, + 269F662816CFAC3400663B98 /* MainViewController.m in Sources */, + 269F663216CFAF4B00663B98 /* HTTPRequestOperation.m in Sources */, + 2676D1DC16D212A20019B3A5 /* AppConstants.m in Sources */, + 2676D1ED16D249990019B3A5 /* DatabaseHandler.m in Sources */, + 2676D1F016D250A20019B3A5 /* Folder.m in Sources */, + 2676D1F916D257570019B3A5 /* File.m in Sources */, + 2676D1FC16D27C3F0019B3A5 /* User.m in Sources */, + 2692E62E16D2B0E100D109BC /* ListViewController.m in Sources */, + 2692E63216D2BB5900D109BC /* FileViewCell.m in Sources */, + 2692E64016D2C78100D109BC /* FolderViewCell.m in Sources */, + 2692E64616D2CE0600D109BC /* TableViewController.m in Sources */, + 26743EAD16D3FECE008E0446 /* MyNavigationController.m in Sources */, + 26743EB416D40CB3008E0446 /* NSDictionary+Addition.m in Sources */, + 26743EC616D4239C008E0446 /* InfoViewController.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 269F660216CFAB9C00663B98 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 269F661716CFAB9C00663B98 /* YakimbiTestTests.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 269F660E16CFAB9C00663B98 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 269F65E116CFAB9B00663B98 /* YakimbiTest */; + targetProxy = 269F660D16CFAB9C00663B98 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + 269F65F016CFAB9C00663B98 /* InfoPlist.strings */ = { + isa = PBXVariantGroup; + children = ( + 269F65F116CFAB9C00663B98 /* en */, + ); + name = InfoPlist.strings; + sourceTree = ""; + }; + 269F661216CFAB9C00663B98 /* InfoPlist.strings */ = { + isa = PBXVariantGroup; + children = ( + 269F661316CFAB9C00663B98 /* en */, + ); + name = InfoPlist.strings; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 269F661816CFAB9C00663B98 /* 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; + }; + 269F661916CFAB9C00663B98 /* 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; + }; + 269F661B16CFAB9C00663B98 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ENABLE_OBJC_ARC = YES; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "YakimbiTest/YakimbiTest-Prefix.pch"; + INFOPLIST_FILE = "YakimbiTest/YakimbiTest-Info.plist"; + PRODUCT_NAME = "$(TARGET_NAME)"; + WRAPPER_EXTENSION = app; + }; + name = Debug; + }; + 269F661C16CFAB9C00663B98 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ENABLE_OBJC_ARC = YES; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "YakimbiTest/YakimbiTest-Prefix.pch"; + INFOPLIST_FILE = "YakimbiTest/YakimbiTest-Info.plist"; + PRODUCT_NAME = "$(TARGET_NAME)"; + WRAPPER_EXTENSION = app; + }; + name = Release; + }; + 269F661E16CFAB9C00663B98 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/YakimbiTest.app/YakimbiTest"; + FRAMEWORK_SEARCH_PATHS = ( + "\"$(SDKROOT)/Developer/Library/Frameworks\"", + "\"$(DEVELOPER_LIBRARY_DIR)/Frameworks\"", + ); + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "YakimbiTest/YakimbiTest-Prefix.pch"; + INFOPLIST_FILE = "YakimbiTestTests/YakimbiTestTests-Info.plist"; + PRODUCT_NAME = "$(TARGET_NAME)"; + TEST_HOST = "$(BUNDLE_LOADER)"; + WRAPPER_EXTENSION = octest; + }; + name = Debug; + }; + 269F661F16CFAB9C00663B98 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/YakimbiTest.app/YakimbiTest"; + FRAMEWORK_SEARCH_PATHS = ( + "\"$(SDKROOT)/Developer/Library/Frameworks\"", + "\"$(DEVELOPER_LIBRARY_DIR)/Frameworks\"", + ); + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "YakimbiTest/YakimbiTest-Prefix.pch"; + INFOPLIST_FILE = "YakimbiTestTests/YakimbiTestTests-Info.plist"; + PRODUCT_NAME = "$(TARGET_NAME)"; + TEST_HOST = "$(BUNDLE_LOADER)"; + WRAPPER_EXTENSION = octest; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 269F65DD16CFAB9B00663B98 /* Build configuration list for PBXProject "YakimbiTest" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 269F661816CFAB9C00663B98 /* Debug */, + 269F661916CFAB9C00663B98 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 269F661A16CFAB9C00663B98 /* Build configuration list for PBXNativeTarget "YakimbiTest" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 269F661B16CFAB9C00663B98 /* Debug */, + 269F661C16CFAB9C00663B98 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 269F661D16CFAB9C00663B98 /* Build configuration list for PBXNativeTarget "YakimbiTestTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 269F661E16CFAB9C00663B98 /* Debug */, + 269F661F16CFAB9C00663B98 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + +/* Begin XCVersionGroup section */ + 269F65FF16CFAB9C00663B98 /* YakimbiTest.xcdatamodeld */ = { + isa = XCVersionGroup; + children = ( + 269F660016CFAB9C00663B98 /* YakimbiTest.xcdatamodel */, + ); + currentVersion = 269F660016CFAB9C00663B98 /* YakimbiTest.xcdatamodel */; + path = YakimbiTest.xcdatamodeld; + sourceTree = ""; + versionGroupType = wrapper.xcdatamodel; + }; +/* End XCVersionGroup section */ + }; + rootObject = 269F65DA16CFAB9B00663B98 /* Project object */; +} diff --git a/YakimbiTestUsingARC/YakimbiTest.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/YakimbiTestUsingARC/YakimbiTest.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..1d8d311 --- /dev/null +++ b/YakimbiTestUsingARC/YakimbiTest.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/YakimbiTestUsingARC/YakimbiTest.xcodeproj/project.xcworkspace/xcuserdata/SAPMBP.xcuserdatad/UserInterfaceState.xcuserstate b/YakimbiTestUsingARC/YakimbiTest.xcodeproj/project.xcworkspace/xcuserdata/SAPMBP.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..78b65c7bdf50d981509dd5608e5e932b91986ac9 GIT binary patch literal 122311 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 B&};wz literal 0 HcmV?d00001 diff --git a/YakimbiTestUsingARC/YakimbiTest.xcodeproj/project.xcworkspace/xcuserdata/SAPMBP.xcuserdatad/xcdebugger/Expressions.xcexplist b/YakimbiTestUsingARC/YakimbiTest.xcodeproj/project.xcworkspace/xcuserdata/SAPMBP.xcuserdatad/xcdebugger/Expressions.xcexplist new file mode 100644 index 0000000..ca6c635 --- /dev/null +++ b/YakimbiTestUsingARC/YakimbiTest.xcodeproj/project.xcworkspace/xcuserdata/SAPMBP.xcuserdatad/xcdebugger/Expressions.xcexplist @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + diff --git a/YakimbiTestUsingARC/YakimbiTest.xcodeproj/xcuserdata/SAPMBP.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist b/YakimbiTestUsingARC/YakimbiTest.xcodeproj/xcuserdata/SAPMBP.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist new file mode 100644 index 0000000..5610a77 --- /dev/null +++ b/YakimbiTestUsingARC/YakimbiTest.xcodeproj/xcuserdata/SAPMBP.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist @@ -0,0 +1,14 @@ + + + + + + + diff --git a/YakimbiTestUsingARC/YakimbiTest.xcodeproj/xcuserdata/SAPMBP.xcuserdatad/xcschemes/YakimbiTest.xcscheme b/YakimbiTestUsingARC/YakimbiTest.xcodeproj/xcuserdata/SAPMBP.xcuserdatad/xcschemes/YakimbiTest.xcscheme new file mode 100644 index 0000000..fcbfcf2 --- /dev/null +++ b/YakimbiTestUsingARC/YakimbiTest.xcodeproj/xcuserdata/SAPMBP.xcuserdatad/xcschemes/YakimbiTest.xcscheme @@ -0,0 +1,96 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/YakimbiTestUsingARC/YakimbiTest.xcodeproj/xcuserdata/SAPMBP.xcuserdatad/xcschemes/xcschememanagement.plist b/YakimbiTestUsingARC/YakimbiTest.xcodeproj/xcuserdata/SAPMBP.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..81e669b --- /dev/null +++ b/YakimbiTestUsingARC/YakimbiTest.xcodeproj/xcuserdata/SAPMBP.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,27 @@ + + + + + SchemeUserState + + YakimbiTest.xcscheme + + orderHint + 0 + + + SuppressBuildableAutocreation + + 269F65E116CFAB9B00663B98 + + primary + + + 269F660616CFAB9C00663B98 + + primary + + + + + diff --git a/YakimbiTestUsingARC/YakimbiTest/Additions/NSDictionary+Addition.h b/YakimbiTestUsingARC/YakimbiTest/Additions/NSDictionary+Addition.h new file mode 100644 index 0000000..1b7d020 --- /dev/null +++ b/YakimbiTestUsingARC/YakimbiTest/Additions/NSDictionary+Addition.h @@ -0,0 +1,15 @@ +// +// NSDictionary+Addition.h +// +// +// Created by Syed Arsalan Pervez on 3/14/12. +// Copyright (c) 2012 SAPLogix. All rights reserved. +// + +@interface NSDictionary (ADDITION) + +- (BOOL)containsKey:(NSString *)key; +- (BOOL)containsKeys:(NSArray *)keys; +- (id)valueForKey:(NSString *)key; + +@end diff --git a/YakimbiTestUsingARC/YakimbiTest/Additions/NSDictionary+Addition.m b/YakimbiTestUsingARC/YakimbiTest/Additions/NSDictionary+Addition.m new file mode 100644 index 0000000..745dc48 --- /dev/null +++ b/YakimbiTestUsingARC/YakimbiTest/Additions/NSDictionary+Addition.m @@ -0,0 +1,43 @@ +// +// NSDictionary+Addition.m +// +// +// Created by Syed Arsalan Pervez on 3/14/12. +// Copyright (c) 2012 SAPLogix. All rights reserved. +// + +#import "NSDictionary+Addition.h" + +@implementation NSDictionary (ADDITION) + +- (BOOL)containsKey:(NSString *)key +{ + return [[self allKeys] containsObject:key]; +} + +- (BOOL)containsKeys:(NSArray *)keys +{ + for (NSString *key in keys) + { + if (![self containsKey:key]) + return NO; + } + + return YES; +} + +- (id)valueForKey:(NSString *)key +{ + int index = [[self allKeys] indexOfObject:key]; + if (index != NSNotFound) + { + id val = [[self allValues] objectAtIndex:index]; + + if (![val isKindOfClass:[NSNull class]]) + return val; + } + + return nil; +} + +@end diff --git a/YakimbiTestUsingARC/YakimbiTest/AppDelegate.h b/YakimbiTestUsingARC/YakimbiTest/AppDelegate.h new file mode 100644 index 0000000..5005c72 --- /dev/null +++ b/YakimbiTestUsingARC/YakimbiTest/AppDelegate.h @@ -0,0 +1,18 @@ +// +// AppDelegate.h +// YakimbiTest +// +// Created by Syed Arsalan Pervez on 2/16/13. +// Copyright (c) 2013 SAPLogix. All rights reserved. +// + +#import +#import "MyNavigationController.h" +#import "MainViewController.h" + +@interface AppDelegate : UIResponder + +@property (strong, nonatomic) UIWindow *window; +@property (strong, nonatomic) MyNavigationController *navigationController; + +@end diff --git a/YakimbiTestUsingARC/YakimbiTest/AppDelegate.m b/YakimbiTestUsingARC/YakimbiTest/AppDelegate.m new file mode 100644 index 0000000..76c6f51 --- /dev/null +++ b/YakimbiTestUsingARC/YakimbiTest/AppDelegate.m @@ -0,0 +1,54 @@ +// +// AppDelegate.m +// YakimbiTest +// +// Created by Syed Arsalan Pervez on 2/16/13. +// Copyright (c) 2013 SAPLogix. All rights reserved. +// + +#import "AppDelegate.h" + +@implementation AppDelegate + +- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions +{ + self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; + // Override point for customization after application launch. + + MainViewController *_mainViewController = [MainViewController new]; + _navigationController = [[MyNavigationController alloc] initWithRootViewController:_mainViewController]; + + Log(@"Total %@", FORMAT_BYTES(268435456000)); + Log(@"Used %@", FORMAT_BYTES(380826907)); + Log(@"Available %@", FORMAT_BYTES(268054629093)); + + [_window setRootViewController:_navigationController]; + + self.window.backgroundColor = [UIColor whiteColor]; + [self.window makeKeyAndVisible]; + return YES; +} + +- (void)applicationWillResignActive:(UIApplication *)application +{ + // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. + // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game. +} + +- (void)applicationDidEnterBackground:(UIApplication *)application +{ + // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. + // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. +} + +- (void)applicationWillEnterForeground:(UIApplication *)application +{ + // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background. +} + +- (void)applicationDidBecomeActive:(UIApplication *)application +{ + // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. +} + +@end diff --git a/YakimbiTestUsingARC/YakimbiTest/Cells/FileViewCell.h b/YakimbiTestUsingARC/YakimbiTest/Cells/FileViewCell.h new file mode 100644 index 0000000..299faf7 --- /dev/null +++ b/YakimbiTestUsingARC/YakimbiTest/Cells/FileViewCell.h @@ -0,0 +1,25 @@ +// +// FileViewCell.h +// YakimbiTest +// +// Created by Syed Arsalan Pervez on 2/19/13. +// Copyright (c) 2013 SAPLogix. All rights reserved. +// + +#import +#import "FolderViewCell.h" + +@interface FileViewCell : FolderViewCell +{ + IBOutlet UILabel *_sharedByLabel; + IBOutlet UILabel *_sharedByLabel2; + IBOutlet UILabel *_fileCountLabel; + IBOutlet UILabel *_folderCountLabel; +} + +@property (readonly, nonatomic) UILabel *sharedByLabel; +@property (readonly, nonatomic) UILabel *sharedByLabel2; +@property (readonly, nonatomic) UILabel *fileCountLabel; +@property (readonly, nonatomic) UILabel *folderCountLabel; + +@end diff --git a/YakimbiTestUsingARC/YakimbiTest/Cells/FileViewCell.m b/YakimbiTestUsingARC/YakimbiTest/Cells/FileViewCell.m new file mode 100644 index 0000000..06b466f --- /dev/null +++ b/YakimbiTestUsingARC/YakimbiTest/Cells/FileViewCell.m @@ -0,0 +1,29 @@ +// +// FileViewCell.m +// YakimbiTest +// +// Created by Syed Arsalan Pervez on 2/19/13. +// Copyright (c) 2013 SAPLogix. All rights reserved. +// + +#import "FileViewCell.h" + +@implementation FileViewCell + +- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier +{ + self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]; + if (self) { + // Initialization code + } + return self; +} + +- (void)setSelected:(BOOL)selected animated:(BOOL)animated +{ + [super setSelected:selected animated:animated]; + + // Configure the view for the selected state +} + +@end diff --git a/YakimbiTestUsingARC/YakimbiTest/Cells/FileViewCell.xib b/YakimbiTestUsingARC/YakimbiTest/Cells/FileViewCell.xib new file mode 100644 index 0000000..75f0d8f --- /dev/null +++ b/YakimbiTestUsingARC/YakimbiTest/Cells/FileViewCell.xib @@ -0,0 +1,456 @@ + + + + 1552 + 11G63 + 3084 + 1138.51 + 569.00 + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + 2083 + + + IBProxyObject + IBUIImageView + IBUILabel + IBUITableViewCell + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + PluginDependencyRecalculationVersion + + + + + IBFilesOwner + IBCocoaTouchFramework + + + IBFirstResponder + IBCocoaTouchFramework + + + + 292 + + + + 256 + + + + 292 + {{92, 8}, {205, 21}} + + + + _NS:9 + NO + YES + 7 + NO + IBCocoaTouchFramework + <name> + + 1 + MCAwIDAAA + darkTextColor + + + 3 + MQA + + 0 + + 2 + 17 + + + Helvetica-Bold + 17 + 16 + + NO + + + + 292 + {{92, 30}, {205, 21}} + + + + _NS:9 + NO + YES + 7 + NO + IBCocoaTouchFramework + <path> + + + 0 + + 1 + 12 + + + Helvetica + 12 + 16 + + NO + + + + 292 + {{92, 50}, {205, 21}} + + + + _NS:9 + NO + YES + 7 + NO + IBCocoaTouchFramework + <by> + + + 0 + + + NO + + + + 292 + {{92, 69}, {205, 21}} + + + + _NS:9 + NO + YES + 7 + NO + IBCocoaTouchFramework + <by> + + + 0 + + + NO + + + + 292 + {{4, 72}, {81, 21}} + + + + _NS:9 + NO + YES + 7 + NO + IBCocoaTouchFramework + <by> + + + 0 + 1 + + 1 + 11 + + + Helvetica + 11 + 16 + + NO + + + + 292 + {{4, 52}, {81, 21}} + + + + _NS:9 + NO + YES + 7 + NO + IBCocoaTouchFramework + <by> + + + 0 + 1 + + + NO + + + + 292 + {{4, -2}, {81, 58}} + + + + _NS:9 + 1 + NO + IBCocoaTouchFramework + + NSImage + Purple_Folder.png + + + + {300, 96} + + + + _NS:11 + + 3 + MCAwAA + + NO + YES + 4 + YES + IBCocoaTouchFramework + + + {320, 97} + + + + _NS:9 + IBCocoaTouchFramework + 1 + + FileCell + + + + + + + + _nameLabel + + + + 50 + + + + _pathLabel + + + + 51 + + + + _sharedByLabel + + + + 52 + + + + _fileCountLabel + + + + 53 + + + + _folderCountLabel + + + + 54 + + + + _sharedByLabel2 + + + + 56 + + + + + + 0 + + + + + + -1 + + + File's Owner + + + -2 + + + + + 2 + + + + + + + + + + + + + + 3 + + + + + + 8 + + + + + + 15 + + + + + + 45 + + + + + 46 + + + + + 49 + + + + + 55 + + + + + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIResponder + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + FileViewCell + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + + + + 70 + + + + + FileViewCell + FolderViewCell + + UILabel + UILabel + UILabel + UILabel + + + + _fileCountLabel + UILabel + + + _folderCountLabel + UILabel + + + _sharedByLabel + UILabel + + + _sharedByLabel2 + UILabel + + + + IBProjectSource + ./Classes/FileViewCell.h + + + + FolderViewCell + UITableViewCell + + UILabel + UILabel + + + + _nameLabel + UILabel + + + _pathLabel + UILabel + + + + IBProjectSource + ./Classes/FolderViewCell.h + + + + + 0 + IBCocoaTouchFramework + YES + 3 + + Purple_Folder.png + {512, 512} + + 2083 + + diff --git a/YakimbiTestUsingARC/YakimbiTest/Cells/FileViewCell_iPad.xib b/YakimbiTestUsingARC/YakimbiTest/Cells/FileViewCell_iPad.xib new file mode 100644 index 0000000..7f2df25 --- /dev/null +++ b/YakimbiTestUsingARC/YakimbiTest/Cells/FileViewCell_iPad.xib @@ -0,0 +1,452 @@ + + + + 1552 + 11G63 + 3084 + 1138.51 + 569.00 + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + 2083 + + + IBProxyObject + IBUIImageView + IBUILabel + IBUITableViewCell + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + PluginDependencyRecalculationVersion + + + + + IBFilesOwner + IBIPadFramework + + + IBFirstResponder + IBIPadFramework + + + + 292 + + + + 256 + + + + 292 + {{92, 8}, {656, 21}} + + + + _NS:9 + NO + YES + 7 + NO + IBIPadFramework + <name> + + 1 + MCAwIDAAA + darkTextColor + + + 3 + MQA + + 0 + + 2 + 17 + + + Helvetica-Bold + 17 + 16 + + NO + + + + 292 + {{92, 30}, {656, 21}} + + + + _NS:9 + NO + YES + 7 + NO + IBIPadFramework + <path> + + + 0 + + 1 + 12 + + + Helvetica + 12 + 16 + + NO + + + + 292 + {{92, 50}, {656, 21}} + + + + _NS:9 + NO + YES + 7 + NO + IBIPadFramework + <by> + + + 0 + + + NO + + + + 292 + {{92, 69}, {655, 21}} + + + _NS:9 + NO + YES + 7 + NO + IBIPadFramework + <by> + + + 0 + + + NO + + + + 292 + {{4, 72}, {81, 21}} + + + + _NS:9 + NO + YES + 7 + NO + IBIPadFramework + <by> + + + 0 + 1 + + + NO + + + + 292 + {{4, 52}, {81, 21}} + + + + _NS:9 + NO + YES + 7 + NO + IBIPadFramework + <by> + + + 0 + 1 + + + NO + + + + 292 + {{4, -2}, {81, 58}} + + + + _NS:9 + 1 + NO + IBIPadFramework + + NSImage + Purple_Folder.png + + + + {748, 96} + + + + _NS:11 + + 3 + MCAwAA + + NO + YES + 4 + YES + IBCocoaTouchFramework + + + {768, 97} + + + + _NS:9 + IBIPadFramework + 1 + + FileCell + + + + + + + + _nameLabel + + + + 10 + + + + _pathLabel + + + + 11 + + + + _sharedByLabel + + + + 12 + + + + _fileCountLabel + + + + 13 + + + + _folderCountLabel + + + + 14 + + + + _sharedByLabel2 + + + + 15 + + + + + + 0 + + + + + + -1 + + + File's Owner + + + -2 + + + + + 2 + + + + + + + + + + + + + + 3 + + + + + + 4 + + + + + + 5 + + + + + + 6 + + + + + + 7 + + + + + + 8 + + + + + + 9 + + + + + + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIResponder + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + FileViewCell + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + + + + 42 + + + + + FileViewCell + FolderViewCell + + UILabel + UILabel + UILabel + UILabel + + + + _fileCountLabel + UILabel + + + _folderCountLabel + UILabel + + + _sharedByLabel + UILabel + + + _sharedByLabel2 + UILabel + + + + IBProjectSource + ./Classes/FileViewCell.h + + + + FolderViewCell + UITableViewCell + + UILabel + UILabel + + + + _nameLabel + UILabel + + + _pathLabel + UILabel + + + + IBProjectSource + ./Classes/FolderViewCell.h + + + + + 0 + IBIPadFramework + YES + 3 + + Purple_Folder.png + {512, 512} + + 2083 + + diff --git a/YakimbiTestUsingARC/YakimbiTest/Cells/FolderViewCell.h b/YakimbiTestUsingARC/YakimbiTest/Cells/FolderViewCell.h new file mode 100644 index 0000000..a6cf07c --- /dev/null +++ b/YakimbiTestUsingARC/YakimbiTest/Cells/FolderViewCell.h @@ -0,0 +1,20 @@ +// +// FolderViewCell.h +// YakimbiTest +// +// Created by Syed Arsalan Pervez on 2/19/13. +// Copyright (c) 2013 SAPLogix. All rights reserved. +// + +#import + +@interface FolderViewCell : UITableViewCell +{ + IBOutlet UILabel *_nameLabel; + IBOutlet UILabel *_pathLabel; +} + +@property (readonly, nonatomic) UILabel *nameLabel; +@property (readonly, nonatomic) UILabel *pathLabel; + +@end diff --git a/YakimbiTestUsingARC/YakimbiTest/Cells/FolderViewCell.m b/YakimbiTestUsingARC/YakimbiTest/Cells/FolderViewCell.m new file mode 100644 index 0000000..ab2ecdb --- /dev/null +++ b/YakimbiTestUsingARC/YakimbiTest/Cells/FolderViewCell.m @@ -0,0 +1,13 @@ +// +// FolderViewCell.m +// YakimbiTest +// +// Created by Syed Arsalan Pervez on 2/19/13. +// Copyright (c) 2013 SAPLogix. All rights reserved. +// + +#import "FolderViewCell.h" + +@implementation FolderViewCell + +@end diff --git a/YakimbiTestUsingARC/YakimbiTest/Cells/FolderViewCell.xib b/YakimbiTestUsingARC/YakimbiTest/Cells/FolderViewCell.xib new file mode 100644 index 0000000..374c4ee --- /dev/null +++ b/YakimbiTestUsingARC/YakimbiTest/Cells/FolderViewCell.xib @@ -0,0 +1,270 @@ + + + + 1552 + 11G63 + 3084 + 1138.51 + 569.00 + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + 2083 + + + IBProxyObject + IBUIImageView + IBUILabel + IBUITableViewCell + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + PluginDependencyRecalculationVersion + + + + + IBFilesOwner + IBCocoaTouchFramework + + + IBFirstResponder + IBCocoaTouchFramework + + + + 292 + + + + 256 + + + + 292 + {{92, 8}, {224, 21}} + + + + _NS:9 + NO + YES + 7 + NO + IBCocoaTouchFramework + <name> + + 1 + MCAwIDAAA + darkTextColor + + + 3 + MQA + + 0 + + 2 + 17 + + + Helvetica-Bold + 17 + 16 + + NO + + + + 292 + {{92, 30}, {224, 21}} + + + _NS:9 + NO + YES + 7 + NO + IBCocoaTouchFramework + <path> + + + 0 + + 1 + 12 + + + Helvetica + 12 + 16 + + NO + + + + 292 + {{4, -2}, {81, 58}} + + + + _NS:9 + 1 + NO + IBCocoaTouchFramework + + NSImage + Purple_Folder.png + + + + {300, 56} + + + + _NS:11 + + 3 + MCAwAA + + NO + YES + 4 + YES + IBCocoaTouchFramework + + + {320, 57} + + + + _NS:9 + IBCocoaTouchFramework + 1 + + FolderCell + + + + + + + + _nameLabel + + + + 7 + + + + _pathLabel + + + + 8 + + + + + + 0 + + + + + + -1 + + + File's Owner + + + -2 + + + + + 3 + + + + + + + + + + 4 + + + + + + 5 + + + + + + 6 + + + + + + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIResponder + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + FolderViewCell + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + + + + 19 + + + + + FolderViewCell + UITableViewCell + + UILabel + UILabel + + + + _nameLabel + UILabel + + + _pathLabel + UILabel + + + + IBProjectSource + ./Classes/FolderViewCell.h + + + + + 0 + IBCocoaTouchFramework + YES + 3 + + Purple_Folder.png + {512, 512} + + 2083 + + diff --git a/YakimbiTestUsingARC/YakimbiTest/Cells/FolderViewCell_iPad.xib b/YakimbiTestUsingARC/YakimbiTest/Cells/FolderViewCell_iPad.xib new file mode 100644 index 0000000..34ebd82 --- /dev/null +++ b/YakimbiTestUsingARC/YakimbiTest/Cells/FolderViewCell_iPad.xib @@ -0,0 +1,271 @@ + + + + 1552 + 11G63 + 3084 + 1138.51 + 569.00 + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + 2083 + + + IBProxyObject + IBUIImageView + IBUILabel + IBUITableViewCell + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + PluginDependencyRecalculationVersion + + + + + IBFilesOwner + IBIPadFramework + + + IBFirstResponder + IBIPadFramework + + + + 292 + + + + 256 + + + + 292 + {{92, 8}, {636, 21}} + + + + _NS:9 + NO + YES + 7 + NO + IBIPadFramework + <name> + + 1 + MCAwIDAAA + darkTextColor + + + 3 + MQA + + 0 + + 2 + 17 + + + Helvetica-Bold + 17 + 16 + + NO + + + + 292 + {{92, 30}, {636, 21}} + + + + _NS:9 + NO + YES + 7 + NO + IBIPadFramework + <path> + + + 0 + + 1 + 12 + + + Helvetica + 12 + 16 + + NO + + + + 292 + {{4, -2}, {81, 58}} + + + + _NS:9 + 1 + NO + IBIPadFramework + + NSImage + Purple_Folder.png + + + + {748, 56} + + + + _NS:11 + + 3 + MCAwAA + + NO + YES + 4 + YES + IBCocoaTouchFramework + + + {768, 57} + + + + _NS:9 + IBIPadFramework + 1 + + FolderCell + + + + + + + + _nameLabel + + + + 8 + + + + _pathLabel + + + + 9 + + + + + + 0 + + + + + + -1 + + + File's Owner + + + -2 + + + + + 4 + + + + + + + + + + 5 + + + + + + 6 + + + + + + 7 + + + + + + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIResponder + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + FolderViewCell + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + + + + 26 + + + + + FolderViewCell + UITableViewCell + + UILabel + UILabel + + + + _nameLabel + UILabel + + + _pathLabel + UILabel + + + + IBProjectSource + ./Classes/FolderViewCell.h + + + + + 0 + IBIPadFramework + YES + 3 + + Purple_Folder.png + {512, 512} + + 2083 + + diff --git a/YakimbiTestUsingARC/YakimbiTest/Custom/MyNavigationController.h b/YakimbiTestUsingARC/YakimbiTest/Custom/MyNavigationController.h new file mode 100644 index 0000000..0dfdae0 --- /dev/null +++ b/YakimbiTestUsingARC/YakimbiTest/Custom/MyNavigationController.h @@ -0,0 +1,13 @@ +// +// MyNavigationController.h +// YakimbiTest +// +// Created by Syed Arsalan Pervez on 2/19/13. +// Copyright (c) 2013 SAPLogix. All rights reserved. +// + +#import + +@interface MyNavigationController : UINavigationController + +@end diff --git a/YakimbiTestUsingARC/YakimbiTest/Custom/MyNavigationController.m b/YakimbiTestUsingARC/YakimbiTest/Custom/MyNavigationController.m new file mode 100644 index 0000000..bf50067 --- /dev/null +++ b/YakimbiTestUsingARC/YakimbiTest/Custom/MyNavigationController.m @@ -0,0 +1,27 @@ +// +// MyNavigationController.m +// YakimbiTest +// +// Created by Syed Arsalan Pervez on 2/19/13. +// Copyright (c) 2013 SAPLogix. All rights reserved. +// + +#import "MyNavigationController.h" + +@interface MyNavigationController () + +@end + +@implementation MyNavigationController + +- (BOOL)shouldAutorotate +{ + return YES; +} + +- (NSUInteger)supportedInterfaceOrientations +{ + return UIInterfaceOrientationMaskAll; +} + +@end diff --git a/YakimbiTestUsingARC/YakimbiTest/DB Files/File.h b/YakimbiTestUsingARC/YakimbiTest/DB Files/File.h new file mode 100644 index 0000000..0349df1 --- /dev/null +++ b/YakimbiTestUsingARC/YakimbiTest/DB Files/File.h @@ -0,0 +1,39 @@ +// +// File.h +// YakimbiTest +// +// Created by Syed Arsalan Pervez on 2/18/13. +// Copyright (c) 2013 SAPLogix. All rights reserved. +// + +#import +#import + +@class Folder; + +@interface File : NSManagedObject + +@property (nonatomic, retain) NSString * isShared; +@property (nonatomic, retain) NSString * status; +@property (nonatomic, retain) NSString * shareId; +@property (nonatomic, retain) NSNumber * userId; +@property (nonatomic, retain) NSString * name; +@property (nonatomic, retain) NSNumber * sharedBy; +@property (nonatomic, retain) NSString * createdDate; +@property (nonatomic, retain) NSString * sharedDate; +@property (nonatomic, retain) NSNumber * shareLevel; +@property (nonatomic, retain) NSNumber * parentId; +@property (nonatomic, retain) NSString * lastUpdatedDate; +@property (nonatomic, retain) NSString * lastUpdatedBy; +@property (nonatomic, retain) NSString * link; +@property (nonatomic, retain) NSString * transType; +@property (nonatomic, retain) NSNumber * itemId; +@property (nonatomic, retain) NSString * path; +@property (nonatomic, retain) NSString * pathById; +@property (nonatomic, retain) NSString * type; +@property (nonatomic, retain) NSString * mimeType; +@property (nonatomic, retain) NSNumber * size; +@property (nonatomic, retain) NSNumber * hidden; +@property (nonatomic, retain) Folder *folder; + +@end diff --git a/YakimbiTestUsingARC/YakimbiTest/DB Files/File.m b/YakimbiTestUsingARC/YakimbiTest/DB Files/File.m new file mode 100644 index 0000000..e802265 --- /dev/null +++ b/YakimbiTestUsingARC/YakimbiTest/DB Files/File.m @@ -0,0 +1,38 @@ +// +// File.m +// YakimbiTest +// +// Created by Syed Arsalan Pervez on 2/18/13. +// Copyright (c) 2013 SAPLogix. All rights reserved. +// + +#import "File.h" +#import "Folder.h" + + +@implementation File + +@dynamic isShared; +@dynamic status; +@dynamic shareId; +@dynamic userId; +@dynamic name; +@dynamic sharedBy; +@dynamic createdDate; +@dynamic sharedDate; +@dynamic shareLevel; +@dynamic parentId; +@dynamic lastUpdatedDate; +@dynamic lastUpdatedBy; +@dynamic link; +@dynamic transType; +@dynamic itemId; +@dynamic path; +@dynamic pathById; +@dynamic type; +@dynamic mimeType; +@dynamic size; +@dynamic hidden; +@dynamic folder; + +@end diff --git a/YakimbiTestUsingARC/YakimbiTest/DB Files/Folder.h b/YakimbiTestUsingARC/YakimbiTest/DB Files/Folder.h new file mode 100644 index 0000000..a628e29 --- /dev/null +++ b/YakimbiTestUsingARC/YakimbiTest/DB Files/Folder.h @@ -0,0 +1,29 @@ +// +// Folder.h +// YakimbiTest +// +// Created by Syed Arsalan Pervez on 2/18/13. +// Copyright (c) 2013 SAPLogix. All rights reserved. +// + +#import +#import + +@class File, User; + +@interface Folder : NSManagedObject + +@property (nonatomic, retain) NSString * name; +@property (nonatomic, retain) NSString * fid; +@property (nonatomic, retain) NSSet *files; +@property (nonatomic, retain) User *user; +@end + +@interface Folder (CoreDataGeneratedAccessors) + +- (void)addFilesObject:(File *)value; +- (void)removeFilesObject:(File *)value; +- (void)addFiles:(NSSet *)values; +- (void)removeFiles:(NSSet *)values; + +@end diff --git a/YakimbiTestUsingARC/YakimbiTest/DB Files/Folder.m b/YakimbiTestUsingARC/YakimbiTest/DB Files/Folder.m new file mode 100644 index 0000000..6cec647 --- /dev/null +++ b/YakimbiTestUsingARC/YakimbiTest/DB Files/Folder.m @@ -0,0 +1,21 @@ +// +// Folder.m +// YakimbiTest +// +// Created by Syed Arsalan Pervez on 2/18/13. +// Copyright (c) 2013 SAPLogix. All rights reserved. +// + +#import "Folder.h" +#import "File.h" +#import "User.h" + + +@implementation Folder + +@dynamic name; +@dynamic fid; +@dynamic files; +@dynamic user; + +@end diff --git a/YakimbiTestUsingARC/YakimbiTest/DB Files/User.h b/YakimbiTestUsingARC/YakimbiTest/DB Files/User.h new file mode 100644 index 0000000..e08e260 --- /dev/null +++ b/YakimbiTestUsingARC/YakimbiTest/DB Files/User.h @@ -0,0 +1,34 @@ +// +// User.h +// YakimbiTest +// +// Created by Syed Arsalan Pervez on 2/18/13. +// Copyright (c) 2013 SAPLogix. All rights reserved. +// + +#import +#import + +@class Folder; + +@interface User : NSManagedObject + +@property (nonatomic, retain) NSNumber * totalSpace; +@property (nonatomic, retain) NSNumber * lastRevId; +@property (nonatomic, retain) NSNumber * usedSpace; +@property (nonatomic, retain) NSNumber * availableSpace; +@property (nonatomic, retain) NSString * mode; +@property (nonatomic, retain) NSNumber * pendingRequests; +@property (nonatomic, retain) NSNumber * revId; +@property (nonatomic, retain) NSDate * lastUpdated; +@property (nonatomic, retain) NSSet *folders; +@end + +@interface User (CoreDataGeneratedAccessors) + +- (void)addFoldersObject:(Folder *)value; +- (void)removeFoldersObject:(Folder *)value; +- (void)addFolders:(NSSet *)values; +- (void)removeFolders:(NSSet *)values; + +@end diff --git a/YakimbiTestUsingARC/YakimbiTest/DB Files/User.m b/YakimbiTestUsingARC/YakimbiTest/DB Files/User.m new file mode 100644 index 0000000..e562e05 --- /dev/null +++ b/YakimbiTestUsingARC/YakimbiTest/DB Files/User.m @@ -0,0 +1,25 @@ +// +// User.m +// YakimbiTest +// +// Created by Syed Arsalan Pervez on 2/18/13. +// Copyright (c) 2013 SAPLogix. All rights reserved. +// + +#import "User.h" +#import "Folder.h" + + +@implementation User + +@dynamic totalSpace; +@dynamic lastRevId; +@dynamic usedSpace; +@dynamic availableSpace; +@dynamic mode; +@dynamic pendingRequests; +@dynamic revId; +@dynamic lastUpdated; +@dynamic folders; + +@end diff --git a/YakimbiTestUsingARC/YakimbiTest/Database/DatabaseHandler.h b/YakimbiTestUsingARC/YakimbiTest/Database/DatabaseHandler.h new file mode 100755 index 0000000..b4922e2 --- /dev/null +++ b/YakimbiTestUsingARC/YakimbiTest/Database/DatabaseHandler.h @@ -0,0 +1,57 @@ +// +// DatabaseHandler.h +// +// +// Created by Syed Arsalan Pervez on 8/2/11. +// Copyright 2011 SAPLogix. All rights reserved. +// + +#import +#import + +#define DBHandler [DatabaseHandler sharedHandler] + +@interface DatabaseHandler : NSObject +{ + __strong NSManagedObjectContext *_manageContext; + __strong NSPersistentStoreCoordinator *_storeCordinator; + __strong NSPersistentStore *_persistentStore; +} + +@property (readonly, nonatomic) NSManagedObjectContext *_manageContext; + +// Insert Records +- (BOOL) insertObject:(id)manageObject; +- (BOOL) insertObject:(id)manageObject andSave:(BOOL)save; + +// Delete Object +- (BOOL) deleteObject:(id)manageObject; +- (BOOL) deleteObject:(id)manageObject andSave:(BOOL)save; + +// Fetch Records +- (id) fetchObjectsOfEntity:(NSString *)entity; +- (id) fetchObjectsOfEntity:(NSString *)entity withExpressionDescription:(NSArray *)expDesc; +- (id) fetchObjectsOfEntity:(NSString *)entity usingPredicate:(NSPredicate *)predicate; +- (id) fetchObjectsOfEntity:(NSString *)entity usingPredicate:(NSPredicate *)predicate uniqueResult:(BOOL)unique; +- (id) fetchObjectsOfEntity:(NSString *)entity usingPredicate:(NSPredicate *)predicate withSortDescriptors:(NSArray *)sortDesc withExpressionDescription:(NSArray *)expDesc withResultType:(NSFetchRequestResultType)resultType; +- (id) fetchObjectsOfEntity:(NSString *)entity usingPredicate:(NSPredicate *)predicate withSortDescriptors:(NSArray *)sortDesc withExpressionDescription:(NSArray *)expDesc withResultType:(NSFetchRequestResultType)resultType uniqueResult:(BOOL)unique; + +// Get Entity Description +- (NSEntityDescription *) entityDescriptionForName:(NSString *)name; + +// Save Context +- (BOOL) saveContext; + +// Singleton Accessor ++ (DatabaseHandler *) sharedHandler; ++ (void)deleteSQLiteFile; + +// ManageObject for Entity +- (id) manageObjectForEntity:(id)entityName; +- (id) manageObjectForEntity:(id)entityName autorelease:(BOOL)autorelease; + +// Undo & Redo +- (BOOL) undoChanges; +- (BOOL) redoChanges; + +@end diff --git a/YakimbiTestUsingARC/YakimbiTest/Database/DatabaseHandler.m b/YakimbiTestUsingARC/YakimbiTest/Database/DatabaseHandler.m new file mode 100755 index 0000000..44e625f --- /dev/null +++ b/YakimbiTestUsingARC/YakimbiTest/Database/DatabaseHandler.m @@ -0,0 +1,315 @@ +// +// DatabaseHandler.m +// +// +// Created by Syed Arsalan Pervez on 8/2/11. +// Copyright 2011 SAPLogix. All rights reserved. +// + +#import "DatabaseHandler.h" + +// Toggle to clear db on startup +static const BOOL SQLITE_TESTING = NO; + +// Changed to match the user model fileaname +static NSString *SQLITE_FILE = @"YakimbiTest.sqlite"; +static NSString *SQLITE_FILE_NAME = @"YakimbiTest"; + +// Should not be changed +//static NSString *SQLITE_FILE_EXT = @"sqlite"; +static NSString *COREDATA_DATAMODEL_EXT = @"momd"; + + +@implementation DatabaseHandler + +@synthesize _manageContext; + +static DatabaseHandler *sharedObject; + +- (id) initWithDBName:(NSString *)name FileName:(NSString *)file +{ + self = [super init]; + if (self) + { + NSError *error = nil; + +// if (SQLITE_TESTING) +// { +// if ([[NSFileManager defaultManager] fileExistsAtPath:[[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0] stringByAppendingPathComponent:file]]) +// { +// [[NSFileManager defaultManager] removeItemAtPath:[[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0] stringByAppendingPathComponent:file] error:&error]; +// +// if (error) +// Log(@"Error: %@", error); +// +// error = nil; +// } +// } +// +// if (![[NSFileManager defaultManager] fileExistsAtPath:[[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0] stringByAppendingPathComponent:file]]) +// { +// [[NSFileManager defaultManager] copyItemAtPath:[[NSBundle mainBundle] pathForResource:name ofType:SQLITE_FILE_EXT] toPath:[[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0] stringByAppendingPathComponent:file] error:&error]; +// +// if (error) +// Log(@"Error: %@", error); +// +// error = nil; +// } + + NSManagedObjectModel *_model = [[NSManagedObjectModel alloc] initWithContentsOfURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:name ofType:COREDATA_DATAMODEL_EXT]]]; + + NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys: + [NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption, + [NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption, + nil]; + + _storeCordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:_model]; + error = nil; + if ([_storeCordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:[NSURL fileURLWithPath:[[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0] stringByAppendingPathComponent:file]] options:options error:&error]) + { + _manageContext = [[NSManagedObjectContext alloc] init]; + [_manageContext setPersistentStoreCoordinator:_storeCordinator]; + } + else + { + Log(@"Error %@", error); + } + } + + return self; +} + ++ (DatabaseHandler *) sharedHandler +{ + @synchronized(sharedObject) + { + if (!sharedObject) + { + sharedObject = [[DatabaseHandler alloc] initWithDBName:SQLITE_FILE_NAME FileName:SQLITE_FILE]; + } + } + + return sharedObject; +} + +- (id) manageObjectForEntity:(id)entityName +{ + return [self manageObjectForEntity:entityName autorelease:YES]; +} + +- (id) manageObjectForEntity:(id)entityName autorelease:(BOOL)autorelease +{ + if ([entityName isKindOfClass:[NSString class]]) + { + Class cls = NSClassFromString(entityName); + + id _manageObject = [[cls alloc] initWithEntity:[NSEntityDescription entityForName:entityName inManagedObjectContext:[DBHandler _manageContext]] insertIntoManagedObjectContext:[DBHandler _manageContext]]; + + return _manageObject; + } + + return nil; +} + +#pragma mark +#pragma mark Undo & Redo + +// Does a rollback +- (BOOL) undoChanges +{ + if ([_manageContext tryLock]) + { + [_manageContext rollback]; + [_manageContext unlock]; + + return YES; + } + + return NO; +} + +- (BOOL) redoChanges +{ + if ([_manageContext tryLock]) + { + [_manageContext redo]; + [_manageContext unlock]; + + return YES; + } + + return NO; +} + +#pragma mark +#pragma mark Insert Record + +/* + + Insert Record + + */ + +- (BOOL) insertObject:(id)manageObject +{ + return [self insertObject:manageObject andSave:NO]; +} + +- (BOOL) insertObject:(id)manageObject andSave:(BOOL)save +{ + [_manageContext insertObject:manageObject]; + + if (save) + { + return [self saveContext]; + } + else + return true; + + return false; +} + +#pragma mark +#pragma mark Delete Record + +/* + + Delete Record + + */ + +- (BOOL) deleteObject:(id)manageObject +{ + return [self deleteObject:manageObject andSave:NO]; +} + +- (BOOL) deleteObject:(id)manageObject andSave:(BOOL)save +{ + [_manageContext deleteObject:manageObject]; + + if (save) + { + return [self saveContext]; + } + else + return true; + + return false; +} + +#pragma mark +#pragma mark Save Record + +/* + + Save Record + + */ + +- (BOOL) saveContext +{ + NSError *error = nil; + if (![_manageContext save:&error]) + { + Log(@"Error: %@", error); + + return false; + } + + return true; +} + +#pragma mark +#pragma mark Fetch Records + +- (id) fetchObjectsOfEntity:(NSString *)entity +{ + return [self fetchObjectsOfEntity:entity usingPredicate:nil withSortDescriptors:nil withExpressionDescription:nil withResultType:NSManagedObjectResultType]; +} + +- (id) fetchObjectsOfEntity:(NSString *)entity withExpressionDescription:(NSArray *)expDesc +{ + return [self fetchObjectsOfEntity:entity usingPredicate:nil withSortDescriptors:nil withExpressionDescription:expDesc withResultType:NSDictionaryResultType]; +} + +- (id) fetchObjectsOfEntity:(NSString *)entity usingPredicate:(NSPredicate *)predicate +{ + return [self fetchObjectsOfEntity:entity usingPredicate:predicate withSortDescriptors:nil withExpressionDescription:nil withResultType:NSManagedObjectResultType]; +} + +- (id) fetchObjectsOfEntity:(NSString *)entity usingPredicate:(NSPredicate *)predicate uniqueResult:(BOOL)unique +{ + return [self fetchObjectsOfEntity:entity usingPredicate:predicate withSortDescriptors:nil withExpressionDescription:nil withResultType:NSManagedObjectResultType uniqueResult:unique]; +} + +- (id) fetchObjectsOfEntity:(NSString *)entity usingPredicate:(NSPredicate *)predicate withSortDescriptors:(NSArray *)sortDesc withExpressionDescription:(NSArray *)expDesc withResultType:(NSFetchRequestResultType)resultType +{ + return [self fetchObjectsOfEntity:entity usingPredicate:predicate withSortDescriptors:sortDesc withExpressionDescription:expDesc withResultType:resultType uniqueResult:NO]; +} + +- (id) fetchObjectsOfEntity:(NSString *)entity usingPredicate:(NSPredicate *)predicate withSortDescriptors:(NSArray *)sortDesc withExpressionDescription:(NSArray *)expDesc withResultType:(NSFetchRequestResultType)resultType uniqueResult:(BOOL)unique +{ + NSFetchRequest *_request = nil; + NSArray *objects = nil; + NSError *error = nil; + + @try + { + _request = [[NSFetchRequest alloc] init]; + [_request setEntity:[NSEntityDescription entityForName:entity inManagedObjectContext:_manageContext]]; + + if (predicate) + [_request setPredicate:predicate]; // Predicate + + if (sortDesc) + [_request setSortDescriptors:sortDesc]; // Sort Descriptors + + if (expDesc) + [_request setPropertiesToFetch:expDesc]; // Expression Descriptions (for using aggregate functions in CoreData) + + [_request setResultType:resultType]; + + if (unique) + [_request setReturnsDistinctResults:unique]; + + objects = [_manageContext executeFetchRequest:_request error:&error]; + } + @catch(NSException *ex) + { + Log(@"Fetch Exception: %@", ex); + } + @finally + { + if (!error) + { + return objects; + } + else + { + Log(@"Fetch Error: %@", error); + } + } + + // show fetch error + + return nil; +} + +- (NSEntityDescription *) entityDescriptionForName:(NSString *)name +{ + return [NSEntityDescription entityForName:name inManagedObjectContext:_manageContext]; +} + +#pragma mark +#pragma mark Memory Management + ++ (void)deleteSQLiteFile +{ + NSString *path = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0] stringByAppendingPathComponent:SQLITE_FILE]; + if ([[NSFileManager defaultManager] fileExistsAtPath:path]) + { + [[NSFileManager defaultManager] removeItemAtPath:path error:nil]; + } +} + +@end diff --git a/YakimbiTestUsingARC/YakimbiTest/Default-568h@2x.png b/YakimbiTestUsingARC/YakimbiTest/Default-568h@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..0891b7aabfcf3422423b109c8beed2bab838c607 GIT binary patch literal 18594 zcmeI4X;f257Jx&9fS`ixvS;&$x8J@slQFSel)6zJN=?13FB7H(lQjRkSy8x_-S~tvu2gzn1oS+dLcF#eqtq$ z%tf9TTvX?`)R@}3uBI;jzS-=ZR-Td&MHaS&;!0?Ni*#$#`n*~CcQK)Q9vAQ~TUpnI!j)a2biYK^R)M~A5wUDZhx?ULMX z3x1P&qt=trOY6P2U67L=m=U?F|5#Uj(eCueNTZaHs_ceWiHeET+j+tp3Jt9g(ekqP z2WOvfR{qV+9r+o4J5?qK>7;;^+I7tGv-i)es$X_D=EoKF+S?zsyj^oRFElP}c}JT< zd8SUs-?O?}2YD#ngKbnHgzHBcboxK_2r9l(?eNCl-pEzkJm}fY?WC*jnS?VBE4EpY zO$fEejz6fU;W2Kl>JeQBZBl-%Irg`obSlg*@4QB;Dd1H7^Oi5wvt4d{RZ!8Og?^aE z)k0$1g+V3fd(gdQ3d&q2q-FL*uy#}|bc^=VhFsl0jBgUGJ+-s3U8MK9A!YJJMxpci z5hJ%|{DwV48fZn0{n5l$N_KcSb#NKE4plB`9I6Zt=Z!~-zw0{9tg$L&Ju1F0X)Cy8 zKF;(&lJ>x)Jw(=;p~sF(Sd9VWGwFE2rnyS9!f^DZ8+aCLq zQ};>lcJ1GDLqjm6Hd>|Eabno@P`~Bn(~6^aD_#yoEH(a?Nm1S<;S+hSxI5d16^<1lEM3NPFi zkqPrpL)+ zgnseFikg`gJVBha1&7C4;O6>h=dt~`ND+;Zd?W(4v2JIb7Pt>Td42%M-Ju-XAH#Pns762L}K3 zDhvsRqN0Ni(1UrishD2YvV?4*h2iFj$+&N||Fn$4n|^NSU+o?~jq`0jVQt8T9l{7b zXiwwODFh2V!Q6sqP9S>WH$oOf$N~=d0-bqTlD61!=`&0eAP-F>XN?*|gtOXX{ zQVTWyYo4ZK0GAw!GHf|pz9`D;-bbb*5LBX*{bnz|+)$@&P9|ORM2o?95{;ejvo&r- zq8cBhTN6nn)7~W>54U)%-F_-b?YKdfk5I8MHcuzBD5)!;yv#Z&R&^y=@=>VTIMy#r zX&U<=BsPkdqcMe<_}2+>H%XKyrr5ZR8_KVe>ZqYN z^=^~TFD};;rHJ$U;{~w^hYojl4hRI@SH$^K{YEo=sg)WY87r!*7blQK&qnpDo0`Vn zkl)9u9g=mCh&ZCJS(L4yN3k0kQ zuvg$h2KEEk51T+O0JQ+r0`R>g{jvqM0Mr6d3qUOZwE!?PI7HY@CE|dr sfw?Q;rAv?G4&^^8-z_>&sWXMxvD*gPOU4CBe-*@OtE+wfmVJNyHv)PfH~;_u literal 0 HcmV?d00001 diff --git a/YakimbiTestUsingARC/YakimbiTest/Default.png b/YakimbiTestUsingARC/YakimbiTest/Default.png new file mode 100644 index 0000000000000000000000000000000000000000..4c8ca6f693f96d511e9113c0eb59eec552354e42 GIT binary patch literal 6540 zcmeAS@N?(olHy`uVBq!ia0y~yU~~ZD2OMlbkt;o0To@QwR5G2N13aCb6#|O#(=u~X z85k@CTSM>X-wqM6>&y>YB4)1;;ojbLbbV-W^iFB1wa3^zCog^LCAReC4K0-?R_2{6 zrP*)4+_uWUy3w5N52M3PW_}MFMP9a~>YLvVZ1D_k*IMQ2QT^fwzoOb(*3gH$%aYWC zkHmcab=va2<#X%jakpJ;<1@F;k__#bwtC&%^D0v(FBh9K&$sK+<}2RJS609D)17$w ztdQP8(eLM8Ka}m_IQ@3wyMKP)l=oM4-?`YS_*P?4V_ORLPxsj&7Ju#kH;>6^Kp?T7~ zl+q?{UOOqV==?+d{=)5s|M~T1mwtH@+Z^$G&eEO9JNP^AX@3jZ*J*!!>lc|1-W%fA z@AOQpXZ_Lt>rxFXrGp*zLPiW@uo_c7C{As>j zWeX)wi+LTp_)@KYZCX{j;H?|1yXT4DnlS(Fr8gyP5|uaX_gLvaW0ScZdnG7o+u{T6 zFI-%d{ls*WuCDa5UJ@|RXv&ejZe}*BMkiWY51&pnRPw(hlykSzvj6e%mYz-GdvzBD zF10?szF_~!jS=?2HyQuPCvARXAe}C}WP|yQ*>5~~=*Nxq8+HHW1~FMDRCP^TcacKuk$ z(U#REVv)D!PhJ*ecH-ELFUrfyV&*)Z)>UCOuS?yd^L@Afk>ihynYPc{^CRwu+JHX+#$@YsC4c|l0tGigsn@jy) zXD($Ouk>H+V(Mr6NQT0S9BFM~V6nkj;1OBOz`zY;a|<&v%$g$sEJPk;hD4M^`1)8S z=jZArrsOB3>Q&?x097+E*i={nnYpPYi3%0DIeEoa6}C!X6;?ntNLXJ<0j#7X+g2&U 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 literal 0 HcmV?d00001 diff --git a/YakimbiTestUsingARC/YakimbiTest/Network/HTTPRequestOperation.h b/YakimbiTestUsingARC/YakimbiTest/Network/HTTPRequestOperation.h new file mode 100644 index 0000000..6ebc106 --- /dev/null +++ b/YakimbiTestUsingARC/YakimbiTest/Network/HTTPRequestOperation.h @@ -0,0 +1,65 @@ +// +// HTTPRequestOperation.h +// YakimbiTest +// +// Created by Syed Arsalan Pervez on 2/16/13. +// Copyright (c) 2013 SAPLogix. All rights reserved. +// + +#import + +@class HTTPRequestOperation; + +@protocol HTTPRequestOperationDelegate + +@optional + +- (void)HTTPOperationStarted:(HTTPRequestOperation *)operation; + +@required + +- (void)HTTPOperationFinished:(HTTPRequestOperation *)operation; +- (void)HTTPOperationFailed:(HTTPRequestOperation *)operation withError:(NSError *)error; + +@end + +@interface HTTPRequestOperation : NSOperation +{ + int _tag; + + __weak id _delegate; + + BOOL _failed; + BOOL _finished; + BOOL _executing; + BOOL _cancelled; + BOOL _concurrent; + + NSURL *_requestURL; + + NSMutableData *_data; + + NSURLConnection *_urlConnection; + + Class _parserClass; +} + +@property (nonatomic) int tag; +@property (weak, nonatomic) id delegate; +@property (readonly, nonatomic) NSURL *requestURL; + +- (BOOL)isFailed; + +- (void)startSynchronously; +- (void)startAsynchronously; + +- (NSData *)responseData; +- (NSString *)responseString; + +- (void)registerParserClass:(Class)class; + +- (id)initWithRequestURL:(id)requestURL; ++ (HTTPRequestOperation *)requestWithURL:(id)requestURL; ++ (HTTPRequestOperation *)requestWithURL:(id)requestURL andDelegate:(id)delegate; + +@end diff --git a/YakimbiTestUsingARC/YakimbiTest/Network/HTTPRequestOperation.m b/YakimbiTestUsingARC/YakimbiTest/Network/HTTPRequestOperation.m new file mode 100644 index 0000000..f308ecd --- /dev/null +++ b/YakimbiTestUsingARC/YakimbiTest/Network/HTTPRequestOperation.m @@ -0,0 +1,301 @@ +// +// HTTPRequestOperation.m +// YakimbiTest +// +// Created by Syed Arsalan Pervez on 2/16/13. +// Copyright (c) 2013 SAPLogix. All rights reserved. +// + +#import "HTTPRequestOperation.h" + +@implementation HTTPRequestOperation + +#pragma mark - Init Methods + +- (id)initWithRequestURL:(id)requestURL +{ + self = [super init]; + if (self) + { + if ([requestURL isKindOfClass:[NSURL class]]) + { + _requestURL = [requestURL copy]; + } + else + if ([requestURL isKindOfClass:[NSString class]]) + { + _requestURL = [NSURL URLWithString:requestURL]; + } + } + return self; +} + ++ (HTTPRequestOperation *)requestWithURL:(id)requestURL +{ + return [[HTTPRequestOperation alloc] initWithRequestURL:requestURL]; +} + ++ (HTTPRequestOperation *)requestWithURL:(id)requestURL andDelegate:(id)delegate +{ + HTTPRequestOperation *operation = [HTTPRequestOperation requestWithURL:requestURL]; + [operation setDelegate:delegate]; + return operation; +} + +#pragma mark - Method To Execute Operation Either Synchronously or Asynchronously + +- (void)startSynchronously +{ + [self start]; +} + +- (void)startAsynchronously +{ + [self performSelectorInBackground:@selector(start) withObject:nil]; +} + +#pragma mark - NSOperation Overridden Methods + +- (void)start +{ + if ([self isExecuting]) + return; + + [self setIsCancelled:NO]; + [self setIsFailed:NO]; + [self setIsFinished:NO]; + + if (!_requestURL) + { + @throw [NSException exceptionWithName:NSInvalidArgumentException reason:@"Request URL is not specified." userInfo:nil]; + } + else + { + if ([self isConcurrent]) + { + [self main]; + } + else + { + @throw [NSException exceptionWithName:NSInternalInconsistencyException reason:@"Can't be started right now as it dependeds on another operation." userInfo:nil]; + } + } +} + +- (void)main +{ + _urlConnection = [NSURLConnection connectionWithRequest:[NSURLRequest requestWithURL:_requestURL] delegate:self]; + + if (!_urlConnection) + { + [self setIsExecuting:NO]; + [self setIsFailed:YES]; + } + else + { + [self setIsExecuting:YES]; + [self HTTPOperationStarted]; + } + + while ([self isExecuting]) + { + [[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:1]]; + } +} + +- (void)cancel +{ + if (_executing) + { + [_urlConnection cancel]; + + [self setIsExecuting:NO]; + [self setIsCancelled:YES]; + } +} + +- (BOOL)isFailed +{ + return _failed; +} + +- (BOOL)isFinished +{ + return _finished; +} + +- (BOOL)isCancelled +{ + return _cancelled; +} + +- (BOOL)isExecuting +{ + return _executing; +} + +- (BOOL)isConcurrent +{ + if ([[self dependencies] count] > 0) + { + for (HTTPRequestOperation *operation in [self dependencies]) + { + if (!([operation isFinished] || [operation isCancelled] || [operation isFailed])) + { + return NO; + } + } + } + return YES; +} + +#pragma mark - NSURLConnectionDelegate Methods + +- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error +{ + [self setIsExecuting:NO]; + [self setIsFailed:YES]; + [self HTTPOperationFailedWithError:error]; +} + +#pragma mark - NSURLConnectionDelegate Methods + +- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data +{ + [_data appendData:data]; +} + +- (void)connectionDidFinishLoading:(NSURLConnection *)connection +{ + if (!_parserClass) + { + [self setIsExecuting:NO]; + [self setIsFinished:YES]; + [self HTTPOperationFinished]; + } + else + { + id object = [_parserClass new]; + if (object && [object conformsToProtocol:@protocol(ParserDelegate)]) + { + [object setDelegate:self]; + [object parseData:_data inBackground:[NSThread isMainThread]]; + } + } +} + +- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response +{ + _data = [NSMutableData new]; +} + +- (NSURLRequest *)connection:(NSURLConnection *)connection willSendRequest:(NSURLRequest *)request redirectResponse:(NSURLResponse *)response +{ + return request; +} + +#pragma mark - Setters + +- (void)setIsFailed:(BOOL)failed +{ + [self willChangeValueForKey:@"isFailed"]; + _failed = failed; + [self didChangeValueForKey:@"isFailed"]; +} + +- (void)setIsFinished:(BOOL)finished +{ + [self willChangeValueForKey:@"isFinished"]; + _finished = finished; + [self didChangeValueForKey:@"isFinished"]; +} + +- (void)setIsExecuting:(BOOL)executing +{ + [self willChangeValueForKey:@"isExecuting"]; + _executing = executing; + [self didChangeValueForKey:@"isExecuting"]; +} + +- (void)setIsCancelled:(BOOL)cancelled +{ + [self willChangeValueForKey:@"isCancelled"]; + _cancelled = cancelled; + [self didChangeValueForKey:@"isCancelled"]; +} + +- (void)setIsConcurrent:(BOOL)concurrent +{ + [self willChangeValueForKey:@"isConcurrent"]; + _concurrent = concurrent; + [self didChangeValueForKey:@"isConcurrent"]; +} + +#pragma mark - HTTPOperationDelegate Methods + +- (void)HTTPOperationStarted +{ + if (_delegate && [_delegate respondsToSelector:@selector(HTTPOperationStarted:)]) + { + dispatch_async(dispatch_get_main_queue(), ^{ + [_delegate performSelector:@selector(HTTPOperationStarted:) withObject:self]; + }); + } +} + +- (void)HTTPOperationFinished +{ + if (_delegate && [_delegate respondsToSelector:@selector(HTTPOperationFinished:)]) + { + dispatch_async(dispatch_get_main_queue(), ^{ + [_delegate performSelector:@selector(HTTPOperationFinished:) withObject:self]; + }); + } +} + +- (void)HTTPOperationFailedWithError:(NSError *)error +{ + if (_delegate && [_delegate respondsToSelector:@selector(HTTPOperationFailed:withError:)]) + { + dispatch_async(dispatch_get_main_queue(), ^{ + [_delegate performSelector:@selector(HTTPOperationFailed:withError:) withObject:self withObject:error]; + }); + } +} + +#pragma mark - Getters + +- (NSData *)responseData +{ + return _data ? [NSData dataWithData:_data] : nil; +} + +- (NSString *)responseString +{ + return _data ? [[NSString alloc] initWithData:_data encoding:NSUTF8StringEncoding] : nil; +} + +#pragma mark - Parser + +- (void)registerParserClass:(Class)class +{ + _parserClass = class; +} + +#pragma mark - ParserDelegate Methods + +- (void)parsingFinished:(Parser *)parser +{ + [self setIsExecuting:NO]; + [self setIsFinished:YES]; + [self HTTPOperationFinished]; +} + +- (void)parsingFailed:(Parser *)parser withError:(NSError *)error +{ + [self setIsExecuting:NO]; + [self setIsFailed:YES]; + [self HTTPOperationFailedWithError:error]; +} + +@end diff --git a/YakimbiTestUsingARC/YakimbiTest/Parsers/Parser.h b/YakimbiTestUsingARC/YakimbiTest/Parsers/Parser.h new file mode 100644 index 0000000..6fcbe6d --- /dev/null +++ b/YakimbiTestUsingARC/YakimbiTest/Parsers/Parser.h @@ -0,0 +1,38 @@ +// +// Parser.h +// YakimbiTest +// +// Created by Syed Arsalan Pervez on 2/16/13. +// Copyright (c) 2013 SAPLogix. All rights reserved. +// + +#import + +@class Parser; + +@protocol ParserDelegate + +@required +- (void)parseData:(NSData *)data; +- (void)parseData:(NSData *)data inBackground:(BOOL)inBackground; + +@end + +@protocol ParserResponseDelegate + +@required +- (void)parsingFinished:(Parser *)parser; +- (void)parsingFailed:(Parser *)parser withError:(NSError *)error; + +@end + +@interface Parser : NSObject +{ + __weak id _delegate; + int _tag; +} + +@property (weak , nonatomic) id delegate; +@property (assign, nonatomic) int tag; + +@end diff --git a/YakimbiTestUsingARC/YakimbiTest/Parsers/Parser.m b/YakimbiTestUsingARC/YakimbiTest/Parsers/Parser.m new file mode 100644 index 0000000..d9791ed --- /dev/null +++ b/YakimbiTestUsingARC/YakimbiTest/Parsers/Parser.m @@ -0,0 +1,182 @@ +// +// Parser.m +// YakimbiTest +// +// Created by Syed Arsalan Pervez on 2/16/13. +// Copyright (c) 2013 SAPLogix. All rights reserved. +// + +#import "Parser.h" + +@implementation Parser + +#pragma mark - Parse Data + +- (void)parseData:(NSData *)data inBackground:(BOOL)inBackground +{ + if (inBackground) + [self performSelectorInBackground:@selector(parseData:) withObject:data]; + else + [self parseData:data]; +} + +- (void)parseData:(NSData *)data +{ + @autoreleasepool + { + if (data == nil) + { + if (_delegate && [_delegate conformsToProtocol:@protocol(ParserResponseDelegate)]) + { + [_delegate parsingFailed:self withError:[NSError errorWithDomain:@"com.Yakimbi" code:1000 userInfo:@{NSLocalizedDescriptionKey:@"Data is nil."}]]; + } + return; + } + + NSError *error = nil; + NSDictionary *dictionary = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:&error]; + + if (!error) + { + User *_user = nil; + + NSArray *_users = [DBHandler fetchObjectsOfEntity:USER_TABLE]; + if ([_users count] > 0) + _user = [_users objectAtIndex:0]; + else + _user = [DBHandler manageObjectForEntity:USER_TABLE]; + + [_user setLastUpdated:[NSDate date]]; + [_user setTotalSpace:[dictionary valueForKey:@"totalSpace"]]; + [_user setLastRevId:[dictionary valueForKey:@"last_rev_id"]]; + [_user setUsedSpace:[dictionary valueForKey:@"usedSpace"]]; + [_user setAvailableSpace:[dictionary valueForKey:@"availableSpace"]]; + [_user setMode:[dictionary valueForKey:@"mode"]]; + [_user setPendingRequests:[dictionary valueForKey:@"pendingRequests"]]; + [_user setRevId:[dictionary valueForKey:@"rev_id"]]; + + // Check rev_id, if same then return + if ([_user.revId isEqualToNumber:[dictionary valueForKey:@"rev_id"]]) + { + // My Files + [self addOrUpdateFoldersFromDictionary:[dictionary valueForKey:@"my_files"] forUser:_user]; + // SharedFiles + [self addOrUpdateFoldersFromDictionary:[dictionary valueForKey:@"shared_files"] forUser:_user]; + } + + [DBHandler performSelectorOnMainThread:@selector(saveContext) withObject:nil waitUntilDone:NO]; + } + else + { + Log(@"Parsing Error: %@", error); + + if (_delegate && [_delegate conformsToProtocol:@protocol(ParserResponseDelegate)]) + { + [_delegate parsingFailed:self withError:[NSError errorWithDomain:@"com.Yakimbi" code:1001 userInfo:@{NSLocalizedDescriptionKey:@"Failed to parse the given data."}]]; + } + return; + } + + if (_delegate && [_delegate conformsToProtocol:@protocol(ParserResponseDelegate)]) + { + [_delegate parsingFinished:self]; + } + } +} + +#pragma mark - Support Methods + +- (void)addOrUpdateFoldersFromDictionary:(NSDictionary *)myfiles forUser:(User *)_user +{ + Folder *_folder = nil; + + BOOL found = NO; + + NSSet *folderSet = [[_user folders] filteredSetUsingPredicate:[NSPredicate predicateWithFormat:@"self.fid == %@", [myfiles valueForKey:@"id"]]]; + + // Check if user already has folders and were we able to find the folder we are about to add/update + if ([[_user folders] count] > 0 && [folderSet count] > 0) + { + _folder = [[folderSet allObjects] objectAtIndex:0]; + found = YES; + } + else // if not found then add the folder + { + _folder = [DBHandler manageObjectForEntity:FOLDER_TABLE]; + [_folder setFid:[myfiles valueForKey:@"id"]]; + } + + [_folder setName:[myfiles valueForKey:@"name"]]; + + // Hide all before adding/updating + [[_folder files] setValue:[NSNumber numberWithBool:YES] forKey:@"hidden"]; + + for (NSDictionary *fileDictionary in [myfiles valueForKey:@"content"]) + { + File *_file = nil; + + // If folder already exists then check if file already exists or not + if (found) + { + NSSet *fileSet = [[_folder files] filteredSetUsingPredicate:[NSPredicate predicateWithFormat:@"self.itemId == %@", [fileDictionary valueForKey:@"item_id"]]]; + if ([fileSet count] > 0) + _file = [[fileSet allObjects] objectAtIndex:0]; + } + + // If file not found then create + if (!_file) + { + _file = [DBHandler manageObjectForEntity:FILE_TABLE]; + [_file setFolder:_folder]; + [_folder addFilesObject:_file]; + } + + // Replace all the fields with respective values received from server + [self assignFileObject:_file valuesFromDictionary:fileDictionary]; + + // Unhide the ones that were received from the server + [_file setHidden:[NSNumber numberWithBool:NO]]; + } + + // If folder not found then add it + if (!found) + { + [_folder setUser:_user]; + [_user addFoldersObject:_folder]; + } +} + +- (void)assignFileObject:(File *)file valuesFromDictionary:(NSDictionary *)dictionary +{ + [file setStatus:[dictionary valueForKey:@"status"]]; + [file setIsShared:[dictionary valueForKey:@"is_shared"]]; + [file setShareId:[dictionary valueForKey:@"share_id"]]; + [file setUserId:[dictionary valueForKey:@"user_id"]]; + [file setName:[dictionary valueForKey:@"name"]]; + [file setSharedBy:[dictionary valueForKey:@"shared_by"]]; + [file setCreatedDate:[dictionary valueForKey:@"created_date"]]; + [file setSharedDate:[dictionary valueForKey:@"shared_date"]]; + + // Note: in json response my_files->content->"share_level" is of type string and in shared_files->content->"share_level" if of type number (issue or intentional?) + // stored in local DB as number + if ([[dictionary valueForKey:@"share_level"] isKindOfClass:[NSString class]]) + [file setShareLevel:[NSNumber numberWithInt:[[dictionary valueForKey:@"share_level"] intValue]]]; + else + [file setShareLevel:[dictionary valueForKey:@"share_level"]]; + + if ([[dictionary allKeys] containsObject:@"parent_id"]) + [file setParentId:[dictionary valueForKey:@"parent_id"]]; + + [file setLastUpdatedDate:[dictionary valueForKey:@"last_updated_date"]]; + [file setLastUpdatedBy:[dictionary valueForKey:@"last_updated_by"]]; + [file setLink:[dictionary valueForKey:@"link"]]; + [file setTransType:[dictionary valueForKey:@"trans_type"]]; + [file setItemId:[dictionary valueForKey:@"item_id"]]; + [file setPath:[dictionary valueForKey:@"path"]]; + [file setPathById:[dictionary valueForKey:@"path_by_id"]]; + [file setType:[dictionary valueForKey:@"type"]]; + [file setMimeType:[dictionary valueForKey:@"mime_type"]]; + [file setSize:[dictionary valueForKey:@"size"]]; +} + +@end diff --git a/YakimbiTestUsingARC/YakimbiTest/Utilities/AppConstants.h b/YakimbiTestUsingARC/YakimbiTest/Utilities/AppConstants.h new file mode 100644 index 0000000..f0417b5 --- /dev/null +++ b/YakimbiTestUsingARC/YakimbiTest/Utilities/AppConstants.h @@ -0,0 +1,21 @@ +// +// AppConstants.h +// YakimbiTest +// +// Created by Syed Arsalan Pervez on 2/18/13. +// Copyright (c) 2013 SAPLogix. All rights reserved. +// + +#import + +#define SAMPLE_JSON_URL @"https://gist.github.com/raw/4680060/aac6d818e7103edfe721e719b1512f707bcfb478/sample.json" + +#define USER_TABLE @"User" +#define FOLDER_TABLE @"Folder" +#define FILE_TABLE @"File" + +#define REFRESH_INTERVAL 140 + +@interface AppConstants : NSObject + +@end diff --git a/YakimbiTestUsingARC/YakimbiTest/Utilities/AppConstants.m b/YakimbiTestUsingARC/YakimbiTest/Utilities/AppConstants.m new file mode 100644 index 0000000..02de659 --- /dev/null +++ b/YakimbiTestUsingARC/YakimbiTest/Utilities/AppConstants.m @@ -0,0 +1,13 @@ +// +// AppConstants.m +// YakimbiTest +// +// Created by Syed Arsalan Pervez on 2/18/13. +// Copyright (c) 2013 SAPLogix. All rights reserved. +// + +#import "AppConstants.h" + +@implementation AppConstants + +@end diff --git a/YakimbiTestUsingARC/YakimbiTest/Utilities/Macros.h b/YakimbiTestUsingARC/YakimbiTest/Utilities/Macros.h new file mode 100644 index 0000000..fe6254e --- /dev/null +++ b/YakimbiTestUsingARC/YakimbiTest/Utilities/Macros.h @@ -0,0 +1,40 @@ +// +// Macros.h +// YakimbiTest +// +// Created by Syed Arsalan Pervez on 2/16/13. +// Copyright (c) 2013 SAPLogix. All rights reserved. +// + +//****************************************************************************** +// Logging +//****************************************************************************** + +#define IS_DEBUG 1 + +#define Log(fmt, ...) if (IS_DEBUG == 1) { NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__); } + +//****************************************************************************** +// Release & Set Pointer To Nil +//****************************************************************************** + +#define SAFE_RELEASE(a) if (a) { [a release]; a = nil; } + +//****************************************************************************** +// Device Detection +//****************************************************************************** + +#define DEVICE_iPAD ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) + +//****************************************************************************** +// Byte Formatting +//****************************************************************************** + +#define KB (1024) +#define MB (1024*1024) +#define GB (1024*1024*1024) + +#define FORMAT_BYTES(bytes) bytes >= GB ? [NSString stringWithFormat:@"%.2f GB", (float)bytes/(float)GB] : \ +bytes >= MB ? [NSString stringWithFormat:@"%.2f MB", (float)bytes/(float)MB] : \ +bytes >= KB ? [NSString stringWithFormat:@"%.2f KB", (float)bytes/(float)KB] : \ +[NSString stringWithFormat:@"%.0f Bytes", (float)bytes] diff --git a/YakimbiTestUsingARC/YakimbiTest/ViewControllers/InfoViewController.h b/YakimbiTestUsingARC/YakimbiTest/ViewControllers/InfoViewController.h new file mode 100644 index 0000000..7cd9895 --- /dev/null +++ b/YakimbiTestUsingARC/YakimbiTest/ViewControllers/InfoViewController.h @@ -0,0 +1,21 @@ +// +// InfoViewController.h +// YakimbiTest +// +// Created by Syed Arsalan Pervez on 2/20/13. +// Copyright (c) 2013 SAPLogix. All rights reserved. +// + +#import + +@interface InfoViewController : UIViewController +{ + IBOutlet UIProgressView *_progressView; + IBOutlet UILabel *_spaceLabel; + + __weak User *_user; +} + +@property (weak, nonatomic) User *user; + +@end diff --git a/YakimbiTestUsingARC/YakimbiTest/ViewControllers/InfoViewController.m b/YakimbiTestUsingARC/YakimbiTest/ViewControllers/InfoViewController.m new file mode 100644 index 0000000..0259c84 --- /dev/null +++ b/YakimbiTestUsingARC/YakimbiTest/ViewControllers/InfoViewController.m @@ -0,0 +1,31 @@ +// +// InfoViewController.m +// YakimbiTest +// +// Created by Syed Arsalan Pervez on 2/20/13. +// Copyright (c) 2013 SAPLogix. All rights reserved. +// + +#import "InfoViewController.h" + +@interface InfoViewController () + +@end + +@implementation InfoViewController + +- (void)viewDidLoad +{ + [self setContentSizeForViewInPopover:CGSizeMake(320, 320)]; + + [_spaceLabel setText:[NSString stringWithFormat:@"Using %@ of your %@", FORMAT_BYTES([[_user usedSpace] floatValue]), FORMAT_BYTES([[_user totalSpace] floatValue])]]; +} + +- (void)viewDidAppear:(BOOL)animated +{ + [super viewDidAppear:animated]; + float progress = (([_user.usedSpace floatValue] / [_user.totalSpace floatValue]) * 1.0); + [_progressView setProgress:progress animated:YES]; +} + +@end diff --git a/YakimbiTestUsingARC/YakimbiTest/ViewControllers/InfoViewController.xib b/YakimbiTestUsingARC/YakimbiTest/ViewControllers/InfoViewController.xib new file mode 100644 index 0000000..2aef3d6 --- /dev/null +++ b/YakimbiTestUsingARC/YakimbiTest/ViewControllers/InfoViewController.xib @@ -0,0 +1,238 @@ + + + + 1552 + 11G63 + 3084 + 1138.51 + 569.00 + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + 2083 + + + IBProxyObject + IBUILabel + IBUIProgressView + IBUIView + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + PluginDependencyRecalculationVersion + + + + + IBFilesOwner + IBCocoaTouchFramework + + + IBFirstResponder + IBCocoaTouchFramework + + + + 274 + + + + 292 + {{20, 20}, {280, 9}} + + + _NS:9 + NO + IBCocoaTouchFramework + 1 + + 1 + MCAwLjUwMTk2MDgxNCAxAA + + + 1 + MSAxIDEAA + + + + + 292 + {{20, 37}, {280, 21}} + + + _NS:9 + NO + YES + 7 + NO + IBCocoaTouchFramework + Label + + 1 + MCAwIDAAA + darkTextColor + + + 0 + 1 + + 1 + 15 + + + Helvetica + 15 + 16 + + NO + + + {{0, 20}, {320, 548}} + + + + + 3 + MQA + + 2 + + + + + IBUIScreenMetrics + + YES + + + + + + {320, 568} + {568, 320} + + + IBCocoaTouchFramework + Retina 4 Full Screen + 2 + + IBCocoaTouchFramework + + + + + + + view + + + + 3 + + + + _spaceLabel + + + + 13 + + + + _progressView + + + + 14 + + + + + + 0 + + + + + + 1 + + + + + + + + + -1 + + + File's Owner + + + -2 + + + + + 4 + + + + + + 11 + + + + + + + InfoViewController + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIResponder + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + + + + 14 + + + + + InfoViewController + UIViewController + + UIProgressView + UILabel + + + + _progressView + UIProgressView + + + _spaceLabel + UILabel + + + + IBProjectSource + ./Classes/InfoViewController.h + + + + + 0 + IBCocoaTouchFramework + YES + 3 + 2083 + + diff --git a/YakimbiTestUsingARC/YakimbiTest/ViewControllers/ListViewController.h b/YakimbiTestUsingARC/YakimbiTest/ViewControllers/ListViewController.h new file mode 100644 index 0000000..739fe75 --- /dev/null +++ b/YakimbiTestUsingARC/YakimbiTest/ViewControllers/ListViewController.h @@ -0,0 +1,30 @@ +// +// ListViewController.h +// YakimbiTest +// +// Created by Syed Arsalan Pervez on 2/18/13. +// Copyright (c) 2013 SAPLogix. All rights reserved. +// + +#import + +@interface ListViewController : UIViewController +{ + Folder *_folder; + + NSArray *_items; + + IBOutlet UITableView *_tableView; + IBOutlet UILabel *_pageLabel; + IBOutlet UIBarButtonItem *_nextBarBtn; + IBOutlet UIBarButtonItem *_previousBarBtn; + + int currentPage; + int noOfPages; + + __strong UIPopoverController *_popOverViewController; +} + +@property (retain, nonatomic) Folder *folder; + +@end diff --git a/YakimbiTestUsingARC/YakimbiTest/ViewControllers/ListViewController.m b/YakimbiTestUsingARC/YakimbiTest/ViewControllers/ListViewController.m new file mode 100644 index 0000000..d19e014 --- /dev/null +++ b/YakimbiTestUsingARC/YakimbiTest/ViewControllers/ListViewController.m @@ -0,0 +1,247 @@ +// +// ListViewController.m +// YakimbiTest +// +// Created by Syed Arsalan Pervez on 2/18/13. +// Copyright (c) 2013 SAPLogix. All rights reserved. +// + +#import "ListViewController.h" +#import "TableViewController.h" +#import "FileViewCell.h" + +#define DISPLAY_NO_OF_ITEMS 20 + +static NSString *identifier = @"FileCell"; + +@interface ListViewController () + +@end + +@implementation ListViewController + +- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil +{ + if (DEVICE_iPAD) + { + self = [super initWithNibName:[NSStringFromClass([self class]) stringByAppendingString:@"_iPad"] bundle:nibBundleOrNil]; + } + else + self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; + + if (self) + { + } + return self; +} + +#pragma mark - UIViewController Overridden Methods + +- (void)viewDidLoad +{ + [super viewDidLoad]; + // Do any additional setup after loading the view from its nib. + + if (DEVICE_iPAD) + { + [_tableView registerNib:[UINib nibWithNibName:@"FileViewCell_iPad" bundle:nil] forCellReuseIdentifier:identifier]; + } + else + { + [_tableView registerNib:[UINib nibWithNibName:@"FileViewCell" bundle:nil] forCellReuseIdentifier:identifier]; + } + + [[self navigationItem] setRightBarButtonItems:@[_nextBarBtn, _previousBarBtn]]; +} + +- (void)viewWillAppear:(BOOL)animated +{ + [super viewWillAppear:animated]; + + if (_folder) + { + [self setTitle:[_folder name]]; + + currentPage = 1; + noOfPages = ceil((double)[[_folder files] count] / (double)DISPLAY_NO_OF_ITEMS); + + [self refreshData]; + } + + [self setFrameBaseOnOrientation]; +} + +#pragma mark - Refresh Data + +- (void)refreshData +{ + NSSortDescriptor *asc = [NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES]; + + int loc = 0; + int len = 0; + NSRange range; + + // Calculate start location and no. of records to be shown + // If less records than min no. to be displayed at once + if ((currentPage * DISPLAY_NO_OF_ITEMS) > [[_folder files] count]) + { + loc = (currentPage - 1) * DISPLAY_NO_OF_ITEMS; + len = [[_folder files] count] - loc; + range = NSMakeRange(loc, len); + } + else + { + loc = (currentPage - 1) * DISPLAY_NO_OF_ITEMS; + len = DISPLAY_NO_OF_ITEMS; + range = NSMakeRange(loc, len); + } + + // Get subarray and sort it + _items = [[[[_folder files] allObjects] subarrayWithRange:range] sortedArrayUsingDescriptors:@[asc]]; + + // Show range of records shown from the total no. of records + _pageLabel.text = [NSString stringWithFormat:@"Showing %i - %i of %i", ++loc, loc+[_items count]-1, [[_folder files] count]]; + + // Reload data + [_tableView reloadData]; + + // Scroll to top + [_tableView scrollRectToVisible:CGRectMake(0, 0, 1, 1) animated:YES]; +} + +#pragma mark - Event Handlers + +- (IBAction)next:(id)sender +{ + if (currentPage == noOfPages) + return; + + ++currentPage; + [self refreshData]; +} + +- (IBAction)previous:(id)sender +{ + if (currentPage <= 1) + return; + + --currentPage; + [self refreshData]; +} + +#pragma mark - UITableView Delegate & Datasource Methods + +- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView +{ + return 1; +} + +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section +{ + return [_items count]; +} + +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath +{ + FileViewCell *cell = (FileViewCell *)[tableView dequeueReusableCellWithIdentifier:identifier]; + + File *_file = [_items objectAtIndex:indexPath.row]; + + cell.nameLabel.text = [_file name]; + cell.pathLabel.text = [NSString stringWithFormat:@"Path: %@", [_file path]]; + + if (DEVICE_iPAD) + { + cell.sharedByLabel.text = [NSString stringWithFormat:@"Created on: %@ by %@", [_file createdDate], [_file lastUpdatedBy]]; + cell.sharedByLabel2.text = [NSString stringWithFormat:@"Link: %@", [_file link]]; + } + else + { + cell.sharedByLabel.text = [NSString stringWithFormat:@"Created on: %@", [_file createdDate]]; + cell.sharedByLabel2.text = [NSString stringWithFormat:@"Last Updated By: %@", [_file lastUpdatedBy]]; + } + + if ([[_file type] isEqualToString:@"1"]) + { + cell.fileCountLabel.text = @"file"; + cell.folderCountLabel.text = FORMAT_BYTES([[_file size] floatValue]); + } + else + { + cell.fileCountLabel.text = @"folder"; + cell.folderCountLabel.text = @""; + cell.sharedByLabel2.text = @""; + } + + _file = nil; + + return cell; +} + +- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath +{ + if (DEVICE_iPAD) + { + TableViewController *_mainViewController = [TableViewController new]; + if (!_popOverViewController) + _popOverViewController = [[UIPopoverController alloc] initWithContentViewController:_mainViewController]; + [_mainViewController setPopOverViewController:_popOverViewController]; + [_popOverViewController setDelegate:self]; + + // Calculate the location to show the UIPopoverController + CGRect rect = [tableView rectForRowAtIndexPath:indexPath]; + [_popOverViewController presentPopoverFromRect:CGRectMake(rect.origin.x + rect.size.width-25, CGRectGetMidY(rect)+ (int)(rect.size.height/2) - 18 - tableView.contentOffset.y, 1, 1) inView:[self view] permittedArrowDirections:UIPopoverArrowDirectionRight animated:YES]; + } + else + { + UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:@"Test" delegate:nil cancelButtonTitle:@"Cancel" destructiveButtonTitle:nil otherButtonTitles:@"Row1", @"Row2", @"Row3", @"Row4", nil]; + [actionSheet showInView:[self view]]; + } + [tableView deselectRowAtIndexPath:indexPath animated:YES]; +} + +- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath +{ + return 94; +} + +#pragma mark - View Rotation Handler + +- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration +{ + [self setFrameBaseOnOrientation]; +} + +- (void)setFrameBaseOnOrientation +{ + if (UIInterfaceOrientationIsLandscape([[UIApplication sharedApplication] statusBarOrientation])) + { + if (DEVICE_iPAD) + { + [_pageLabel setFrame:CGRectMake(0, 3, 1024, 30)]; + } + else + { + [_pageLabel setFrame:CGRectMake(0, 3, 480, 30)]; + } + } + else + { + if (DEVICE_iPAD) + { + [_pageLabel setFrame:CGRectMake(0, 3, 768, 30)]; + } + else + { + [_pageLabel setFrame:CGRectMake(0, 3, 320, 30)]; + } + } +} + +#pragma mark - UIPopoverControllerDelegate Methods + +- (void)popoverControllerDidDismissPopover:(UIPopoverController *)popoverController +{ +} + +@end diff --git a/YakimbiTestUsingARC/YakimbiTest/ViewControllers/ListViewController.xib b/YakimbiTestUsingARC/YakimbiTest/ViewControllers/ListViewController.xib new file mode 100644 index 0000000..9014570 --- /dev/null +++ b/YakimbiTestUsingARC/YakimbiTest/ViewControllers/ListViewController.xib @@ -0,0 +1,284 @@ + + + + 1552 + 11G63 + 3084 + 1138.51 + 569.00 + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + 2083 + + + IBProxyObject + IBUIBarButtonItem + IBUILabel + IBUITableView + IBUIView + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + PluginDependencyRecalculationVersion + + + + + IBFilesOwner + IBCocoaTouchFramework + + + IBFirstResponder + IBCocoaTouchFramework + + + < + IBCocoaTouchFramework + 1 + + + > + IBCocoaTouchFramework + 1 + + + + 274 + + + + 274 + {{0, 32}, {320, 472}} + + _NS:9 + + 3 + MQA + + YES + IBCocoaTouchFramework + YES + 1 + 0 + YES + 44 + 22 + 22 + + + + 292 + {{0, 5}, {320, 21}} + + _NS:9 + NO + YES + 7 + NO + IBCocoaTouchFramework + Label + + 1 + MCAwIDAAA + darkTextColor + + + 0 + 1 + + 1 + 14 + + + Helvetica + 14 + 16 + + NO + + + {{0, 64}, {320, 504}} + + + 3 + MQA + + 2 + + + + + NO + + + IBUIScreenMetrics + + YES + + + + + + {320, 568} + {568, 320} + + + IBCocoaTouchFramework + Retina 4 Full Screen + 2 + + IBCocoaTouchFramework + + + + + + + view + + + + 3 + + + + _tableView + + + + 11 + + + + _previousBarBtn + + + + 15 + + + + _nextBarBtn + + + + 16 + + + + _pageLabel + + + + 20 + + + + dataSource + + + + 9 + + + + delegate + + + + 10 + + + + next: + + + + 18 + + + + previous: + + + + 17 + + + + + + 0 + + + + + + 1 + + + + + + + + + -1 + + + File's Owner + + + -2 + + + + + 4 + + + + + 12 + + + + + 13 + + + + + 19 + + + + + + + ListViewController + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIResponder + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + + + + 20 + + + 0 + IBCocoaTouchFramework + YES + 3 + 2083 + + diff --git a/YakimbiTestUsingARC/YakimbiTest/ViewControllers/ListViewController_iPad.xib b/YakimbiTestUsingARC/YakimbiTest/ViewControllers/ListViewController_iPad.xib new file mode 100644 index 0000000..039c524 --- /dev/null +++ b/YakimbiTestUsingARC/YakimbiTest/ViewControllers/ListViewController_iPad.xib @@ -0,0 +1,340 @@ + + + + 1552 + 11G63 + 3084 + 1138.51 + 569.00 + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + 2083 + + + IBProxyObject + IBUIBarButtonItem + IBUILabel + IBUITableView + IBUIView + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + PluginDependencyRecalculationVersion + + + + + IBFilesOwner + IBIPadFramework + + + IBFirstResponder + IBIPadFramework + + + > + IBIPadFramework + 1 + + + < + IBIPadFramework + 1 + + + + 292 + + + + 274 + {{0, 32}, {768, 928}} + + + _NS:9 + + 3 + MQA + + YES + IBIPadFramework + YES + 1 + 0 + YES + 44 + 22 + 22 + + + + 256 + {{20, 5}, {728, 21}} + + + _NS:9 + NO + YES + 7 + NO + IBIPadFramework + Label + + 1 + MCAwIDAAA + darkTextColor + + + 0 + 1 + + 1 + 14 + + + Helvetica + 14 + 16 + + NO + + + {{0, 64}, {768, 960}} + + + + + 3 + MQA + + 2 + + + NO + + 2 + + + NO + + + IBUIScreenMetrics + + YES + + + + + + {768, 1024} + {1024, 768} + + + IBIPadFramework + iPad Full Screen + 1 + + IBIPadFramework + + + + + + + view + + + + 3 + + + + _tableView + + + + 5 + + + + _previousBarBtn + + + + 16 + + + + _nextBarBtn + + + + 15 + + + + _pageLabel + + + + 21 + + + + dataSource + + + + 6 + + + + delegate + + + + 7 + + + + previous: + + + + 19 + + + + next: + + + + 18 + + + + + + 0 + + + + + + -1 + + + File's Owner + + + -2 + + + + + 2 + + + + + + + + + 4 + + + + + 8 + + + + + 9 + + + + + 20 + + + + + + + ListViewController + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIResponder + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + + + + 21 + + + + + ListViewController + UIViewController + + id + id + + + + next: + id + + + previous: + id + + + + UIBarButtonItem + UILabel + UIBarButtonItem + UITableView + + + + _nextBarBtn + UIBarButtonItem + + + _pageLabel + UILabel + + + _previousBarBtn + UIBarButtonItem + + + _tableView + UITableView + + + + IBProjectSource + ./Classes/ListViewController.h + + + + + 0 + IBIPadFramework + YES + 3 + 2083 + + diff --git a/YakimbiTestUsingARC/YakimbiTest/ViewControllers/MainViewController.h b/YakimbiTestUsingARC/YakimbiTest/ViewControllers/MainViewController.h new file mode 100644 index 0000000..460e22a --- /dev/null +++ b/YakimbiTestUsingARC/YakimbiTest/ViewControllers/MainViewController.h @@ -0,0 +1,31 @@ +// +// MainViewController.h +// YakimbiTest +// +// Created by Syed Arsalan Pervez on 2/16/13. +// Copyright (c) 2013 SAPLogix. All rights reserved. +// + +#import +#import "ListViewController.h" +#import "InfoViewController.h" + +@interface MainViewController : UIViewController +{ + User *_user; + + NSArray *_items; + + IBOutlet UILabel *_statusLabel; + IBOutlet UITableView *_tableView; + + IBOutlet UIBarButtonItem *_infoBtn; + + ListViewController *_listViewController; + + __strong HTTPRequestOperation *_fetchOperation; + + __strong UIPopoverController *_popOverViewController; +} + +@end diff --git a/YakimbiTestUsingARC/YakimbiTest/ViewControllers/MainViewController.m b/YakimbiTestUsingARC/YakimbiTest/ViewControllers/MainViewController.m new file mode 100644 index 0000000..65a0690 --- /dev/null +++ b/YakimbiTestUsingARC/YakimbiTest/ViewControllers/MainViewController.m @@ -0,0 +1,241 @@ +// +// MainViewController.m +// YakimbiTest +// +// Created by Syed Arsalan Pervez on 2/16/13. +// Copyright (c) 2013 SAPLogix. All rights reserved. +// + +#import "MainViewController.h" +#import "FolderViewCell.h" + +static NSString *identifier = @"FolderCell"; + +@interface MainViewController () + +@end + +@implementation MainViewController + +- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil +{ + if (DEVICE_iPAD) + { + self = [super initWithNibName:[NSStringFromClass([self class]) stringByAppendingString:@"_iPad"] bundle:nibBundleOrNil]; + } + else + self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; + + if (self) + { + } + return self; +} + +#pragma mark - UIViewController Overridden Methods + +- (void)viewDidLoad +{ + [super viewDidLoad]; + // Do any additional setup after loading the view from its nib. + + _fetchOperation = [HTTPRequestOperation requestWithURL:SAMPLE_JSON_URL andDelegate:self]; + [_fetchOperation registerParserClass:[Parser class]]; + [self fetchData]; + + if (DEVICE_iPAD) + { + [_tableView registerNib:[UINib nibWithNibName:@"FolderViewCell_iPad" bundle:nil] forCellReuseIdentifier:identifier]; + } + else + { + [_tableView registerNib:[UINib nibWithNibName:@"FolderViewCell" bundle:nil] forCellReuseIdentifier:identifier]; + } + + [_statusLabel setText:@""]; + + [[self navigationItem] setRightBarButtonItem:_infoBtn]; + + [self refreshData]; +} + +- (void)viewWillAppear:(BOOL)animated +{ + [super viewWillAppear:animated]; + + [self setFrameBaseOnOrientation]; +} + +#pragma mark - Refresh Data + +- (void)refreshData +{ + NSArray *_users = [DBHandler fetchObjectsOfEntity:USER_TABLE]; + if ([_users count] > 0) + { + _user = [_users objectAtIndex:0]; + + if (_user) + { + NSSortDescriptor *asc = [NSSortDescriptor sortDescriptorWithKey:@"fid" ascending:YES]; + _items = [[[_user folders] allObjects] sortedArrayUsingDescriptors:@[asc]]; + } + + [_tableView reloadData]; + } +} + +#pragma mark - Fetch Data + +- (void)fetchData +{ + @try + { + [_fetchOperation startAsynchronously]; + } + @catch (NSException *exception) + { + Log(@"Exception %@", exception); + } + @finally + { + } +} + +#pragma mark - HTTPRequestOperationDelegate Methods + +- (void)HTTPOperationStarted:(HTTPRequestOperation *)operation +{ + Log(@"Started!"); +} + +- (void)HTTPOperationFinished:(HTTPRequestOperation *)operation +{ + Log(@"Finished!"); + + [self refreshData]; + + [_statusLabel setText:[NSString stringWithFormat:@"Last Updated: %@", [_user lastUpdated]]]; + + [self performSelector:@selector(fetchData) withObject:nil afterDelay:REFRESH_INTERVAL]; +} + +- (void)HTTPOperationFailed:(HTTPRequestOperation *)operation withError:(NSError *)error +{ + Log(@"Failed!"); + + [_statusLabel setText:[NSString stringWithFormat:@"Last Updated: %@", [_user lastUpdated]]]; + + [self performSelector:@selector(fetchData) withObject:nil afterDelay:REFRESH_INTERVAL]; +} + +#pragma mark - UITableView Delegate & Datasource Methods + +- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView +{ + return 1; +} + +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section +{ + return [_user.folders count]; +} + +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath +{ + FolderViewCell *cell = (FolderViewCell *)[tableView dequeueReusableCellWithIdentifier:identifier]; + + Folder *_folder = [_items objectAtIndex:indexPath.row]; + + cell.nameLabel.text = [_folder name]; + + int folders = [[[_folder files] filteredSetUsingPredicate:[NSPredicate predicateWithFormat:@"self.type == '0'"]] count]; + int files = [[[_folder files] filteredSetUsingPredicate:[NSPredicate predicateWithFormat:@"self.type == '1'"]] count]; + + cell.pathLabel.text = [NSString stringWithFormat:@"Files: %i Folders: %i", files, folders]; + + _folder = nil; + + return cell; +} + +- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath +{ + [tableView deselectRowAtIndexPath:indexPath animated:YES]; + + if (!_listViewController) + _listViewController = [ListViewController new]; + + Folder *folder = [_items objectAtIndex:indexPath.row]; + [_listViewController setFolder:folder]; + folder = nil; + [[self navigationController] pushViewController:_listViewController animated:YES]; +} + +- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath +{ + return 58; +} + +#pragma mark - View Rotation Handler + +- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration +{ + [self setFrameBaseOnOrientation]; +} + +- (void)setFrameBaseOnOrientation +{ + if (UIInterfaceOrientationIsLandscape([[UIApplication sharedApplication] statusBarOrientation])) + { + if (DEVICE_iPAD) + { + [_statusLabel setFrame:CGRectMake(0, _tableView.frame.size.height, 1024, 30)]; + } + else + { + [_statusLabel setFrame:CGRectMake(0, _tableView.frame.size.height, 480, 30)]; + } + } + else + { + if (DEVICE_iPAD) + { + [_statusLabel setFrame:CGRectMake(0, _tableView.frame.size.height, 768, 30)]; + } + else + { + [_statusLabel setFrame:CGRectMake(0, _tableView.frame.size.height, 320, 30)]; + } + } +} + +#pragma mark - Event Handlers + +- (IBAction)showInfo:(id)sender +{ + InfoViewController *_infoViewController = [InfoViewController new]; + [_infoViewController setUser:_user]; + + if (DEVICE_iPAD) + { + if (!_popOverViewController) + _popOverViewController = [[UIPopoverController alloc] initWithContentViewController:_infoViewController]; + + [_popOverViewController setDelegate:self]; + + [_popOverViewController presentPopoverFromBarButtonItem:sender permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES]; + } + else + { + [[self navigationController] pushViewController:_infoViewController animated:YES]; + } +} + +#pragma mark - UIPopoverControllerDelegate Methods + +- (void)popoverControllerDidDismissPopover:(UIPopoverController *)popoverController +{ +} + +@end diff --git a/YakimbiTestUsingARC/YakimbiTest/ViewControllers/MainViewController.xib b/YakimbiTestUsingARC/YakimbiTest/ViewControllers/MainViewController.xib new file mode 100644 index 0000000..81a6684 --- /dev/null +++ b/YakimbiTestUsingARC/YakimbiTest/ViewControllers/MainViewController.xib @@ -0,0 +1,303 @@ + + + + 1552 + 11G63 + 3084 + 1138.51 + 569.00 + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + 2083 + + + IBProxyObject + IBUIBarButtonItem + IBUILabel + IBUITableView + IBUIView + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + PluginDependencyRecalculationVersion + + + + + IBFilesOwner + IBCocoaTouchFramework + + + IBFirstResponder + IBCocoaTouchFramework + + + Info + IBCocoaTouchFramework + 1 + + + + 274 + + + + 274 + {320, 473} + + + _NS:9 + + 3 + MQA + + YES + IBCocoaTouchFramework + YES + 1 + 0 + YES + 44 + 22 + 22 + + + + 292 + {{20, 481}, {280, 21}} + + + _NS:9 + NO + YES + 7 + NO + IBCocoaTouchFramework + Label + + 1 + MCAwIDAAA + darkTextColor + + + 0 + 1 + + 1 + 11 + + + Helvetica + 11 + 16 + + NO + + + {{0, 64}, {320, 504}} + + + + 3 + MQA + + 2 + + + + + NO + + + IBUIScreenMetrics + + YES + + + + + + {320, 568} + {568, 320} + + + IBCocoaTouchFramework + Retina 4 Full Screen + 2 + + IBCocoaTouchFramework + + + + + + + view + + + + 3 + + + + _tableView + + + + 19 + + + + _statusLabel + + + + 20 + + + + _infoBtn + + + + 23 + + + + dataSource + + + + 17 + + + + delegate + + + + 18 + + + + showInfo: + + + + 24 + + + + + + 0 + + + + + + 1 + + + + + + + + + -1 + + + File's Owner + + + -2 + + + + + 4 + + + + + + 11 + + + + + + 22 + + + + + + + MainViewController + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIResponder + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + + + + 24 + + + + + MainViewController + UIViewController + + showInfo: + id + + + showInfo: + + showInfo: + id + + + + UIBarButtonItem + UILabel + UITableView + + + + _infoBtn + UIBarButtonItem + + + _statusLabel + UILabel + + + _tableView + UITableView + + + + IBProjectSource + ./Classes/MainViewController.h + + + + + 0 + IBCocoaTouchFramework + YES + 3 + 2083 + + diff --git a/YakimbiTestUsingARC/YakimbiTest/ViewControllers/MainViewController_iPad.xib b/YakimbiTestUsingARC/YakimbiTest/ViewControllers/MainViewController_iPad.xib new file mode 100644 index 0000000..87b740a --- /dev/null +++ b/YakimbiTestUsingARC/YakimbiTest/ViewControllers/MainViewController_iPad.xib @@ -0,0 +1,307 @@ + + + + 1552 + 11G63 + 3084 + 1138.51 + 569.00 + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + 2083 + + + IBProxyObject + IBUIBarButtonItem + IBUILabel + IBUITableView + IBUIView + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + PluginDependencyRecalculationVersion + + + + + IBFilesOwner + IBIPadFramework + + + IBFirstResponder + IBIPadFramework + + + Info + IBIPadFramework + 1 + + + + 292 + + + + 274 + {768, 931} + + + + _NS:9 + + 3 + MQA + + YES + IBIPadFramework + YES + 1 + 0 + YES + 44 + 22 + 22 + + + + 260 + {{20, 935}, {728, 21}} + + + _NS:9 + NO + YES + 7 + NO + IBIPadFramework + Label + + 1 + MCAwIDAAA + darkTextColor + + + 0 + 1 + + 1 + 17 + + + Helvetica + 17 + 16 + + NO + + + {{0, 64}, {768, 960}} + + + + + 3 + MQA + + 2 + + + NO + + 2 + + + NO + + + IBUIScreenMetrics + + YES + + + + + + {768, 1024} + {1024, 768} + + + IBIPadFramework + iPad Full Screen + 1 + + IBIPadFramework + + + + + + + view + + + + 3 + + + + _statusLabel + + + + 6 + + + + _tableView + + + + 7 + + + + _infoBtn + + + + 11 + + + + dataSource + + + + 8 + + + + delegate + + + + 9 + + + + showInfo: + + + + 12 + + + + + + 0 + + + + + + -1 + + + File's Owner + + + -2 + + + + + 2 + + + + + + + + + 4 + + + + + + 5 + + + + + 10 + + + + + + + MainViewController + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIResponder + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + + + + 12 + + + + + MainViewController + UIViewController + + showInfo: + id + + + showInfo: + + showInfo: + id + + + + UIBarButtonItem + UILabel + UITableView + + + + _infoBtn + UIBarButtonItem + + + _statusLabel + UILabel + + + _tableView + UITableView + + + + IBProjectSource + ./Classes/MainViewController.h + + + + + 0 + IBIPadFramework + YES + 3 + 2083 + + diff --git a/YakimbiTestUsingARC/YakimbiTest/ViewControllers/TableViewController.h b/YakimbiTestUsingARC/YakimbiTest/ViewControllers/TableViewController.h new file mode 100644 index 0000000..0a56069 --- /dev/null +++ b/YakimbiTestUsingARC/YakimbiTest/ViewControllers/TableViewController.h @@ -0,0 +1,18 @@ +// +// TableViewController.h +// YakimbiTest +// +// Created by Syed Arsalan Pervez on 2/19/13. +// Copyright (c) 2013 SAPLogix. All rights reserved. +// + +#import + +@interface TableViewController : UITableViewController +{ + __weak UIPopoverController *_popOverViewController; +} + +@property (weak, nonatomic) UIPopoverController *popOverViewController; + +@end diff --git a/YakimbiTestUsingARC/YakimbiTest/ViewControllers/TableViewController.m b/YakimbiTestUsingARC/YakimbiTest/ViewControllers/TableViewController.m new file mode 100644 index 0000000..807b389 --- /dev/null +++ b/YakimbiTestUsingARC/YakimbiTest/ViewControllers/TableViewController.m @@ -0,0 +1,119 @@ +// +// TableViewController.m +// YakimbiTest +// +// Created by Syed Arsalan Pervez on 2/19/13. +// Copyright (c) 2013 SAPLogix. All rights reserved. +// + +#import "TableViewController.h" + +@interface TableViewController () + +@end + +@implementation TableViewController + +- (id)initWithStyle:(UITableViewStyle)style +{ + self = [super initWithStyle:style]; + if (self) { + // Custom initialization + } + return self; +} + +- (void)viewDidLoad +{ + [super viewDidLoad]; + + // Uncomment the following line to preserve selection between presentations. + // self.clearsSelectionOnViewWillAppear = NO; + + // Uncomment the following line to display an Edit button in the navigation bar for this view controller. + // self.navigationItem.rightBarButtonItem = self.editButtonItem; + + [self setContentSizeForViewInPopover:CGSizeMake(200, 200)]; +} + +- (void)didReceiveMemoryWarning +{ + [super didReceiveMemoryWarning]; + // Dispose of any resources that can be recreated. +} + +#pragma mark - Table view data source + +- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView +{ + // Return the number of sections. + return 1; +} + +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section +{ + // Return the number of rows in the section. + return 4; +} + +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath +{ + static NSString *CellIdentifier = @"Cell"; + UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; + if (cell == nil) { + cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; + } + + cell.textLabel.text = [NSString stringWithFormat:@"Row%i", indexPath.row]; + + return cell; +} + +/* +// Override to support conditional editing of the table view. +- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath +{ + // Return NO if you do not want the specified item to be editable. + return YES; +} +*/ + +/* +// Override to support editing the table view. +- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath +{ + if (editingStyle == UITableViewCellEditingStyleDelete) { + // Delete the row from the data source + [tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade]; + } + else if (editingStyle == UITableViewCellEditingStyleInsert) { + // Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view + } +} +*/ + +/* +// Override to support rearranging the table view. +- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath +{ +} +*/ + +/* +// Override to support conditional rearranging of the table view. +- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath +{ + // Return NO if you do not want the item to be re-orderable. + return YES; +} +*/ + +#pragma mark - Table view delegate + +- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath +{ + if (_popOverViewController) + [_popOverViewController dismissPopoverAnimated:YES]; +} + +@end diff --git a/YakimbiTestUsingARC/YakimbiTest/ViewControllers/TableViewController.xib b/YakimbiTestUsingARC/YakimbiTest/ViewControllers/TableViewController.xib new file mode 100644 index 0000000..5012ed7 --- /dev/null +++ b/YakimbiTestUsingARC/YakimbiTest/ViewControllers/TableViewController.xib @@ -0,0 +1,140 @@ + + + + 1552 + 11G63 + 3084 + 1138.51 + 569.00 + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + 2083 + + + IBProxyObject + IBUITableView + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + PluginDependencyRecalculationVersion + + + + + IBFilesOwner + IBIPadFramework + + + IBFirstResponder + IBIPadFramework + + + + 274 + {768, 1024} + + + + 3 + MQA + + NO + YES + NO + IBIPadFramework + NO + 1 + 0 + YES + 44 + 22 + 22 + + + + + + + view + + + + 11 + + + + dataSource + + + + 9 + + + + delegate + + + + 10 + + + + + + 0 + + + + + + -1 + + + File's Owner + + + -2 + + + + + 8 + + + + + + + TableViewController + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIResponder + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + + + + 11 + + + + + TableViewController + UITableViewController + + IBProjectSource + ./Classes/TableViewController.h + + + + + 0 + IBIPadFramework + YES + 3 + 2083 + + diff --git a/YakimbiTestUsingARC/YakimbiTest/YakimbiTest-Info.plist b/YakimbiTestUsingARC/YakimbiTest/YakimbiTest-Info.plist new file mode 100644 index 0000000..d52e538 --- /dev/null +++ b/YakimbiTestUsingARC/YakimbiTest/YakimbiTest-Info.plist @@ -0,0 +1,45 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleDisplayName + ${PRODUCT_NAME} + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + com.saplogix.${PRODUCT_NAME:rfc1034identifier} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1.0 + LSRequiresIPhoneOS + + UIRequiredDeviceCapabilities + + armv7 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + + diff --git a/YakimbiTestUsingARC/YakimbiTest/YakimbiTest-Prefix.pch b/YakimbiTestUsingARC/YakimbiTest/YakimbiTest-Prefix.pch new file mode 100644 index 0000000..5d0ad32 --- /dev/null +++ b/YakimbiTestUsingARC/YakimbiTest/YakimbiTest-Prefix.pch @@ -0,0 +1,26 @@ +// +// Prefix header for all source files of the 'YakimbiTest' target in the 'YakimbiTest' project +// + +#import + +#ifndef __IPHONE_3_0 +#warning "This project uses features only available in iOS SDK 3.0 and later." +#endif + +#ifdef __OBJC__ + #import + #import + #import + +#import "User.h" +#import "Folder.h" +#import "File.h" + +#import "Macros.h" +#import "AppConstants.h" +#import "DatabaseHandler.h" +#import "Parser.h" +#import "HTTPRequestOperation.h" + +#endif diff --git a/YakimbiTestUsingARC/YakimbiTest/YakimbiTest.xcdatamodeld/.xccurrentversion b/YakimbiTestUsingARC/YakimbiTest/YakimbiTest.xcdatamodeld/.xccurrentversion new file mode 100644 index 0000000..25f4817 --- /dev/null +++ b/YakimbiTestUsingARC/YakimbiTest/YakimbiTest.xcdatamodeld/.xccurrentversion @@ -0,0 +1,8 @@ + + + + + _XCCurrentVersionName + YakimbiTest.xcdatamodel + + diff --git a/YakimbiTestUsingARC/YakimbiTest/YakimbiTest.xcdatamodeld/YakimbiTest.xcdatamodel/contents b/YakimbiTestUsingARC/YakimbiTest/YakimbiTest.xcdatamodeld/YakimbiTest.xcdatamodel/contents new file mode 100644 index 0000000..24fff4c --- /dev/null +++ b/YakimbiTestUsingARC/YakimbiTest/YakimbiTest.xcdatamodeld/YakimbiTest.xcdatamodel/contents @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/YakimbiTestUsingARC/YakimbiTest/en.lproj/InfoPlist.strings b/YakimbiTestUsingARC/YakimbiTest/en.lproj/InfoPlist.strings new file mode 100644 index 0000000..477b28f --- /dev/null +++ b/YakimbiTestUsingARC/YakimbiTest/en.lproj/InfoPlist.strings @@ -0,0 +1,2 @@ +/* Localized versions of Info.plist keys */ + diff --git a/YakimbiTestUsingARC/YakimbiTest/main.m b/YakimbiTestUsingARC/YakimbiTest/main.m new file mode 100644 index 0000000..1460e08 --- /dev/null +++ b/YakimbiTestUsingARC/YakimbiTest/main.m @@ -0,0 +1,18 @@ +// +// main.m +// YakimbiTest +// +// Created by Syed Arsalan Pervez on 2/16/13. +// Copyright (c) 2013 SAPLogix. All rights reserved. +// + +#import + +#import "AppDelegate.h" + +int main(int argc, char *argv[]) +{ + @autoreleasepool { + return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); + } +} diff --git a/YakimbiTestUsingARC/YakimbiTestTests/YakimbiTestTests-Info.plist b/YakimbiTestUsingARC/YakimbiTestTests/YakimbiTestTests-Info.plist new file mode 100644 index 0000000..384cea3 --- /dev/null +++ b/YakimbiTestUsingARC/YakimbiTestTests/YakimbiTestTests-Info.plist @@ -0,0 +1,22 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + com.saplogix.${PRODUCT_NAME:rfc1034identifier} + CFBundleInfoDictionaryVersion + 6.0 + CFBundlePackageType + BNDL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1 + + diff --git a/YakimbiTestUsingARC/YakimbiTestTests/YakimbiTestTests.h b/YakimbiTestUsingARC/YakimbiTestTests/YakimbiTestTests.h new file mode 100644 index 0000000..4192295 --- /dev/null +++ b/YakimbiTestUsingARC/YakimbiTestTests/YakimbiTestTests.h @@ -0,0 +1,13 @@ +// +// YakimbiTestTests.h +// YakimbiTestTests +// +// Created by Syed Arsalan Pervez on 2/16/13. +// Copyright (c) 2013 SAPLogix. All rights reserved. +// + +#import + +@interface YakimbiTestTests : SenTestCase + +@end diff --git a/YakimbiTestUsingARC/YakimbiTestTests/YakimbiTestTests.m b/YakimbiTestUsingARC/YakimbiTestTests/YakimbiTestTests.m new file mode 100644 index 0000000..e2b72cf --- /dev/null +++ b/YakimbiTestUsingARC/YakimbiTestTests/YakimbiTestTests.m @@ -0,0 +1,32 @@ +// +// YakimbiTestTests.m +// YakimbiTestTests +// +// Created by Syed Arsalan Pervez on 2/16/13. +// Copyright (c) 2013 SAPLogix. All rights reserved. +// + +#import "YakimbiTestTests.h" + +@implementation YakimbiTestTests + +- (void)setUp +{ + [super setUp]; + + // Set-up code here. +} + +- (void)tearDown +{ + // Tear-down code here. + + [super tearDown]; +} + +- (void)testExample +{ + STFail(@"Unit tests are not implemented yet in YakimbiTestTests"); +} + +@end diff --git a/YakimbiTestUsingARC/YakimbiTestTests/en.lproj/InfoPlist.strings b/YakimbiTestUsingARC/YakimbiTestTests/en.lproj/InfoPlist.strings new file mode 100644 index 0000000..477b28f --- /dev/null +++ b/YakimbiTestUsingARC/YakimbiTestTests/en.lproj/InfoPlist.strings @@ -0,0 +1,2 @@ +/* Localized versions of Info.plist keys */ + From fb4f7833bc415771140f05e1a81fa79efb73009d Mon Sep 17 00:00:00 2001 From: Syed Arsalan Pervez Date: Wed, 20 Feb 2013 03:44:24 +0500 Subject: [PATCH 2/4] Small Tweaks --- .../UserInterfaceState.xcuserstate | Bin 76114 -> 76537 bytes .../ViewControllers/MainViewController.m | 1 + 2 files changed, 1 insertion(+) diff --git a/YakimbiTest/YakimbiTest.xcodeproj/project.xcworkspace/xcuserdata/SAPMBP.xcuserdatad/UserInterfaceState.xcuserstate b/YakimbiTest/YakimbiTest.xcodeproj/project.xcworkspace/xcuserdata/SAPMBP.xcuserdatad/UserInterfaceState.xcuserstate index bfc19ac56fb604c580d73b7247b5fbb3a1fdb5a1..ab36358edea463dcc5f953a62fc7914bf384b42a 100644 GIT binary patch literal 76537 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%0D-%; zX`V>G?ZIYE#SUHLhaRXi@~bN_|LLLspODO?C=lLcf~pwB|Ekee!I8{*Jbko$ISy|a z29P5Fa?JGj2hxrtCffX}so%-k@l zo2qFg2x8WcRqn-7aW#aP8I{%3dPFm;8%YP5kqwqmk2>pdNH?)>IxX!2QM*$I$PLYY zW%Xg(5&g8S30Bp>uu|_1(L38`2c5-qQv}+DNP|g{-gfW~I@7Gtokr^ohGK&lYa1Fc zI@76#A@wM;Ea*Sz&p@k&;Xr6=F-)WR!F;_vlpf0jg>W%3wLL171?G%@}hpm`;Fys$Qq}eYjYz9t}-J!1rlp7QOta;dIWRFIM zqxTUqtp{L};XRsYg6sXD4WiC;Fw&3cL9b0xb$vD{zy|yEXi)8+)hDqZi4W*O?4PNw zsvz`3$bt1J%gb-x2ORcKPjmPxg! zpcYGGqQUgOh*h%uVw`Bz2&nr|5Qzu$Re-H7jXK&4BuXZ=uzd(se{DYK&fOp)snd3B z4riT(Er!Ol=%#=fp+_*Ci?k#Ar`0AuNWKcobgmD@CQ1D_(c+L!-S9Wmftq5|9I~Ka z)-ebL>L6Ju*O8l$c3A&>sH%=GRISZOp5Nb%c@vVJV9>}1cOs4JicDg-g5(VuN@ZmHL z1lP_l>8{-9z(@ZR(Mu~JzlE$RzZwf!<{VasW&eakoU18a=Y zNPHXu?}{^_+5Hu2$_8t$3V#`{nf+yzRoIWt?um$+u?y&`yrsJK50tvPDiAJcM%Dk1v1}qC_)xMp(k20ww{Gxxw{Caj%2t;H#&gNMU-8Q z2f?Y;unZ04!y|8DSqF8-s0lAXIR7p(r7t%7cDIWWa`G-h)>KqiLg}ikva%}5+hqu} zgCSc6&(Q0FquN@`D}+jPs5B6QM|ePG6Bh9Jh3->VBGjb*d5VSVcG3Jmd1#uy4l?v2 z9cRto$QFxJ7{bzS4UThtHLU|(g+M#-ECWajz=bns_78S7f@STDbS5x$Rj-$+tk>-{ z1P+!$hy$RUKwU*JKe~{*0U@$?h6{u!tx(foNQq5#1M7bfW2a5tZKuMjD#%_7{Z%n@ z(ya)Uv$O1&psHb+r<>^x1S#BE5TkgaPaHjKC)T?Wa0fG`VRuukRA=(u65fYcI|wL! zV!@;f!Mw^yryoR=9n5BZqQF!DVFVXgm8DqF)|@F+2<7MK@ZGday2I#OTA`)Uq2ihf zHNl7ld~BBitNkUgjEDTSZ@?!Ja0ijf5M3KLs(n>sKnW;V8m+EcpV=iH!Wsa=F~|!k zC)P+{3>0;*^g;m$TBhaN^9Y=`GybP>*zLwDk1$i~ZoC;`rtAz1dY!=*euOl)$Kw2D zMBAxw(~Z^};?-SZs9P#^a}A0^x-p}k_6DNuYSgI8hg~$-LDLq^x~ASjs2wC9hD)Gq zfvK=d3mHvKw47^w7XgZQR@GY0(OqcOcNDdyrO69EK+IYFW5Ss>I91nx4>iHMTesGY z!jGvU1F38<1ico)VABm9)#Jz5&kpjr8TB2wl1r*;gJ($N<~a6*r9%Ll3T1pu=F8MC zfcYruXNbCkbgX~WDt{4d5|>8Z_)A18>0b|hA_ZZr1*1&CycP0SS65a?+4}}TgMSMe zNt%!ZkLrcz1ZYWzS^C1M{=#XY0F=$49E=H8%!aDnC;4wg;by6HmD_~fJyh(b1Q?e3z_ucG`EFw4q~Duu2SWcNM>i?Hv>a;hg`gJofI{z1T-eE+f5Ly% zUDWb4)E(fQg&GfwYsz5r0d~0xr}<%Ub^DRc`;V;}J2ZSb8R^7Mk%)2Np$pr5Lt!?6dZt_NmUyD3z9GsB0{o zJ)rth5iHi7I1BsOy?{~!Tfneyrv^qiOjr}FjQU$HqL=NK1T_`YD&WKsu$^B5+xI%( zllKI&n$YUT(2);9#i2%H-NyEJ2gIH`PJsW z(hBVWZ)I^YoHD2^hC@h&)p|YKR*T>}sL}2~%TP8L#8(9v1Ds>P&0WsJ+zXuQnO#JuSwbc5Z;g2xf{HTH(!K z=!fn1>d*{-{xluD6~T9I?u!ABYOQ-KQddu`Cm)XJJGU6?8@;9i_n{%pDuPo3u?FZw z?A;uPQ0IfSOKB18G8E#zFN8p&^k+K~dq}GcvX9AEyt3}4- zvPWU_j2$+QHiS5XC$iv-OGWhjt8E1W91wtKR5dju<--HgmmUSrS%iJ-Md60UP(;xT ztRH&^x6Ln7kEi1YIBg2&cXTT&h%|nukxB}q3%O&lWy(&sEXQH07oBV;VB>=R8iOQJ zqfdwi$f!74AvOq+B#L)3;`w(651x%)tk$q}&76jimAeC}g(N+Y$E?22MDU{B0WU0u zN<@K?=A46wCA)EH%zVI=??=30%= zr905<-$TPLD(uDr&-qpQ)|zb{!p__+SU97A%=-Zqwtdy*k-tbQw&;4g zhIUN$H_sEY-DA5q=D`WJ2kZ`|_D0V%+k>`;Y!BNu*&eYyYJ1G~xa|qsleVX9Purfc zJ!^Z;_Pp%{+l#i%wwG*MY%kkhv2C@zYJ1K0y6p|yHrt!Fw`_0Q-m$%Fd(Za1?E~9~ zwvTKd+di>F`0u4`qB3j@#&1uWPCQ`a~VI0@dq&eAjVH&d;#N&7+=izsf<4a6mOU9 zPP@zQwtMVedz?Mqo?!Rc6YT@+``8EC2iXVP_q7kP54G=SPqGiQ54Vr7C)-EbN7+Z) z$Joc(_qUI;kGD^-Pqe4lQ|)Q?bbE$9)1GC|w&&P$?RoY|_R01G><8KpvL9@pV$Zi1 z*bD7NcE7#YUSgkWFSQ?HpJp$!m)k4smG&z8bbGZuU=P}B?6r(9V?4+>hw+V!Z)SWO z2&*q_ znz+c2^iWMw<4Gv?Mht0t=t(Fk_}l_~%GAUbqsxU_m-iXURToXOdMWpxz09?!U}SnK zKIAO|3TXz}&3(6OeLrCItsdzN?V-M-&+||t*+UHU z*X?qx+f7Ed>MCQeyxqjG^s!p6j~czIXCC*~YkTp@(&%i)Q_;+tKSg8aaf6vNQ1k!t zFXKRu^X-KLr8vf;y{!R3%gdnQMS#$KdNR#wwLsIoD<;*=a znoOYtW0BdLuGD&d*64XHdee+O)U*1+9*El7PjkoXwT_=RI#x6Dz4uNXV>n;0b^W5z zwR((kZw=?(4|_H1;Z}{Amkeg^L<2PMAp^vYu1HGsd5NarVj6PyXxzMPaPt6iGkXtl zQy6Y;hUp9@HI*;;%{&So);iy6bgrHte6UyN|Eg@I|HuYO6CArTOZcQF;cJG3&!T$g z^^))(r3~s*tIQ8(R=+Si+Y4I%Zy5b=!TuNRnf_DYfywHtEHO(nUKu`4|JtmHtr{n9 z8l0$y0w3$e$^R2u!_sykzSRW%+AJr$g&iKY4)2W9AGU6P4>i6w5*E`i{!r`nU8C1e zvDdvdpO||7LhJc`qi6NJ-lP9+yW(rMO7PvEO%0Jgl9a*{yqnT&*6%ejKQzSr2^Adf zCFVaG$SD=!PHoW>geQq;5B)as2GbJcSB;I24L1J#ud!hm-9a=qK8>>BP!GiIp~Zj} z);eJYHu11XTWfS4cUZM4K1QhU5(+Cme@qWQK9kum%(>6@;$c~-~Z5<+JZ{05B9O7a@45Z^Tg<0JxTOP zukQZ`YU{rM-2bFe5I(9Y+|eT&bIj4CdO*#Y+r^|f$w9Hwz$F}P4q^X$b6fhi;%u61rRI`7)+qsi3$60LiO z(fxAlep4?C{685@(PEI<%~oncIt?M!<2ZY3;xong6SSV)M$f09diTbnD!Q7|-ydya zLwi3O?={#s8`;=X6}cU)?R0KTK6jp`lz4+1^^D7&8gG5@bNne}Lw|4v?HQpz z8aG1>Ztg+D{L5=T{U;fw=xq*+_iJMAXNdVQih1e3A^MwB(6;%9HKgD_X67H&m>*^^ zuii|*m-cx~uKJAD@d$;3+pL#NSb{GDnb6o2sgFd$E%Td~PD)9E-Q|YGA$4!?;O_gP zON$Q7&B;p39@VM7_Zfc89;Fh%r&ME+_M!$p@*jX_XJ-Bl_$wOtXax7~3g_^Gm#n|R zenZ0^yUW;FS$XMygZ++%JST6LLEGsIM@%X@3u?PG(|WKXTe%xCQK7|Y4bP0clY zwNHcor8!GhR8pBoUw!%C5L1maPko$G3WQs+E)A=szRxvuUoV80tA)zz8#>w|CIico zCU(xQ>ohwv!xUTk(y8pw!1D~9x>2WlDmmDh{MB$DIZoqdvcXLva`RtF>Wv&l9;mT# zpuvWEm+~GzA7+v~N$c`pqswHJe6O8wFiAUF>pCC(t7KQEuAKh-D?Keb>&oLb^g=_h zR21xAz6}1GC=3;A^H#l_p$X|Xgv>!9%X>wpe^za2sc&jE6@BGNT6ZNzck1o1d-r63 z$yxKY{!5Mi{V48UK2T_4V5-KzG=qUMWZ?gI4KKf=qkgFx_&Gc0;1cCZIS6mhldI(E za_d^zJQ7+=Zws&#UWT+1cPGZ{af@zn}^7l3CMS9LVC!0}l9$b7J=1!kT4mUehn zYmZB{O_3&if9#_Aj{1hqa7Q&f_$EAeYExqv9)nXFiNKqq;SsDo8tJdgi){t(WP5Q~ z$pS_x5C*zsnJ+IySsLU+=d=2B_Z1oJr&s--j zlAA!5#f-0G{4A7Z_Ww|p&2J7G`u!GFmdw07kOkgD3UZ~IWa*NRLRpTGkCd0lOBp|x z@$(oTV*H`&e5)!5IPK=Rb6>pj<|v@ys@KRjAkww+b@E2}dd9ai{&2>3Fg~(Q zzEQpjkZxvtC*!*i3EnaPKO1&i(r&%@v6fk2RTyn~X&EbKF3ZX7p_Y5)hx)be!}2B& z=26BkVf<1Q<|t6hmf;UcpF9XdICFebc4i)6W@M(vs`_d91;l(tepY@?exC8m8NY(@ z;PWfj$uG*A0douE6~;5fgqJw~?-V5dGIZS=bC;!M=4FFkU?gX)0Ci<$r@}BWJI`D4 z`zX=d@;maoGTf7K9OI8?{0WRdah?2u{2@s6G2>5S{K+WMDgQ%>UW`BW#>n@o)8=HT zkv20IMzlH7ek=djuf>0oe+F58Wju`Z(@~Z)(Ber64H-nm%*f3FgQp{Ao)ILRoKr-| zzD9&oa$2}#r;YJvG5&0XJO?3Dj(pn^it@^U@JA9r!du4t0(INbWoCd+rBryHctgqD)iD);W`% zBLQwS<1b?T#Rzu^!sV>@=8l@ZEITI`ILpkgmc&O(6nGkz80S0m&agdFn3Iq~Hx zWOhb2K&m0!Ec7&I6+-sqyUyv(YJh~>m)0@h3< zpvcV5gAtNx2A<^%^(p$H&UyfCVEomLzXn0CRYf0q@S5jUJ~LBOL6sSq84y9tcumgM zer0cSwgV=_*o}<89x-oFWxuDS_)8TtJx`TA6#`wZNu5iaEBb{z+PM-S8RKta{C^Pg zW`s<-b-|yH&H|$Yb9otApwOJ$9$s{!^E3qQE4(>Rcb);D;Oe(B{x$@?9YA0D^SyPU zW=;0=Tr_)L56BCgmm*|e8H4jO=j8wi_m17k_`4ADZh+i;>{b`MTZPO?$C*1j2V5yL z+a&u{&TIR{yw151FmGV|y^OyPG4Dsr@e9w~R5fc^IwohCd1-)}l>v;VWtmWKb>4-j zeGc`zo%aCheT;vQ@ed*D!>G{-N!wRgU>IfQ09KZ2`|Rwr*lEbQ$@xUTuunRl0@!C5 z{|MtBMcBs>cGShc7B$R*5s9d3s7r%4kjHw|X6M#^QD1ew2B8j;mnRtiB%&@x)QNK* zNKTr&EGsiD6DNc;bL4cs*_W<6mO@7Q}rS#UJu$yAshHH7jSujAa?I^PtP= zibKS{{L~fiN&v(}#&2c(tBCj-a(WzDOe{N99^mO3ZB)n^1*RXyehr31qCb7>o5Q?o zstaEE+>d1{T$R8fEZaU}{Kts&3352(@n7UE5H%sy(k9`|9z)1A!!-vmdrfYxxvqJD zcPQgOWBlic_XXnRoVE1LR>e5 zeuL7!`_@U-}Jke@9-&{dht0b+ebHrDEjF%*8xJjZtRQ zHLeYa+Sd%?y4rP(=16}s{x3vT%lWKp zbH8%F)af#^Ng`+)o* z6J#bh5!r?I4qg1ho$sp5<^m{8nCS0WrlqdybJsVB*;hHm^{wkW!2E#;9wvAZGY&9c z93KizP&B{H#8e?Ytw+54)%90@I(2hy!X>-mF75;-_z*G?6))0pqlp#txD}0q8Z9uba4-G@7piZ5cg1EFNq0*nXoUi zHw4++@6NlYWvWOSFuXzHoY>gw9_1d_FXVXl1dX}6kw3kv@l4G|f+Hg?sIL@ZT+6Mh^6pmi~9rsltub#MN3tMwXGCmaR8L zb)-(VuRy=dxp}hx^x4bOvvYAm%g%)Xo{`og)o{;r&qa^wE9|=GxkF(6dM1o#!UVMa zM1-}T+jhcS2uG>uc@QttAT!2rl$wXhp?OFybT=>D^|r*FDw)-o*iq-8)x zJabuIkEM(Ic=ss?+ShdEKGl61fS$pGTqfip=p^JdT^ z_C|-$i}a34FM$v`D4?L8e+P~Nk9ywkzpm%J-{<9J;?CY{?zv~ynzd)vtYNv$61S}K zY9LG<61rrM8Zj-yhqf#!s3mZfp=w~|s>md8by1_;w!kwnF37yL%jOO~Z^ z@wdh!gXQmWQ5%Hee@JRNi`kepyDUj=HKu%)rD5^6l1f>iVUYzI7Ii_G9-T6MdOMsm zJ+y9gNs>Hni7?z+f1jn6WocOat;l8;Xjo){hQ-|=Y!6)|fiBX1;Yow?vPfCFNV)&C zY@IBB91mIgS)lO{deea!f-s|>^*v`%EnoZ-K$tmQs0F>> z350soA76&2ur!aQ01elxy>a*^_%^!C-}$F-W;n}om90RS_0KA2C<#pOv8GQ9V`Z?b z9D6t`oQp2%cWMFWhVwx1_&}H~2(zQZv!}z`zRT!H9OOO9$k1Prlp)2S+XY43+R+d$ z0vG?I;GJ-ZWsHs>Z2u38E!)2qzumV~Z)N#a6GL!WxDs8`@A?c}8Lk3Bgf#2`2y>=G zbfGtk;{I-?Jxh}06zP5hWIES03S1kmPZ#++e+O;=-wlZ*fUtug%#AM69TM3nVRx2W za9QNi1RIuaZCAB3+!${0N0gRuD@Y`iaOMyQ^Q4RPqN6;|BJYD(5{X-$TU1-Nl7^&#Ku^_-Xh#y13t2E%KR`AO?(cijzf^Bo z$QxaebQ^y6kJU|tCqek`fv{5`>@*$U83^M*!(F{e5mVxJU4%C6M3g zGyDboB_#4S2nz;b^cjBGIl4%mHpc@Omb;ET-8YlNu6@&jXTiyTtZzQN01{aQ!Y+WY zi*%7BdOHsWf69U;SD;rnNCmOD<;6H<+*)rLUIDKQws-)43$KJ%!K>jl@LCWS3c@ad zu*)C}8ttM$*tG}ndUyl85#9uEhPQyQ>mV!+gxvvQi6ATqge5~%GHzzv!nhT_ywMyM zMh}I+{RoBd@^ORW4t1636UACMNg2GHmZTgOCoc(2Pv9h#Wp!lnO1jEQT6m=uL7htr z)Ufd12-3pi6_j-F@{;m8N{W(lT1t3HEqR=_Bu)-;oRnqsOHxKzTLwaeSCUlL!YfMR<*-V6(DZ?xtg^z2prK_!k-rn9hl5;FJv~WiQVc?* zgH@K)#_7mP;&F0XdU!cK8AUzW6+xrRg0B8XkRDE6NkLgxM^auBB4}z^Q1ovE;juD!ybi>!t`c5W67owFB(<@Mcu85DycS+TR$fcaCtl>v3NvZx=H^CvSgeKM&skYY%T1*W>ivM8OQuJMAqH zb{m9+K`0O#5t|U38LuL?IKmOo`E);SBf5IK1-L_!R$a4j@;d4Y!eZg*rG$3~Cd4+| zRX-;qm>E=8Us%2ijzB=ip6}MtCHlDiXNB$|kO&k#AKo8+{~r?JAy^UYKgmOIfUx+# z2|{o~1R;1pSiRiP^_|KL=Y)6Pe!Vu8=)!n3ZTY~TYQ$wsgC5ez;^VG^OvIzN~ z;OO#Jeo;oK{^1u51T^>d455k8LTDrK2pxnjLJy&jFhJ}^>_HF^P2rGm&0vh7- zK^Wx1^?|T2AOL^>5(M}_KoSI0KtK-!>_Na21cD&2%Vq^(zuePPeuk?coc^2fGJhvZ zS-Y?AxW|DN04~b_9P7r;+GN}|F`y0{!Vp&L&A+^6zMA{ zV(BFOxAgbdnC{0_-|QU!N0{y{W6EB^w3HI~@V}%)zjoNQo#pW|oZJ;S z&*>EXTX24*Xf2#q%W%jmaMJ%xIKP^hzu_#qX^1QY{S5$-jmSadBJx030SGGuVUX8f ze1F{*L;)fXQ51X^gq1)SKv>l(*TE3l`{U}j+Xc!4;c*b!(G7(r^6l0(2s+^B;R0dytIL{M+3Y(yniVby;~b{ z&^*@;Mo?9VPW}M|Z=Yk{tDdv;a0#HtwEj&`E23>pMqU6z zupSig>EmaMhvq-?rS&MsFMGap|f zJ;&>hhoA-#Uf!6p`yT}eX-qBEgaLZ1qrY-OYjaYo-eeIU5zs<;V&V@Ebe`^kLjHV< zG5z)9Z<@X$zOA7N$$$j@+^vus5qZeX^ltTTsav)G6oh0#vIJWs)7yHvrIV3xBm#uJ z2VoypZbBn5YfEECa;&|;jTHRHwm=FYg^?o2?MTQe?f_w(Agl|7b%U_pRb)uYDofE< z1fbQ#m7*n(lB>u-%0Ofwu^_C+nErOSOa@XOsjwD}GIAG022us7ic~{F>nHsn4C);e z5H<+u7*Z3dj?|`;F$7%zVdMWdbPTy03Hj&ukb95>B;<=zLD(<|quoOqA@?GoX~z)| zHVVSV{v91dS|Bag@@0dxrC<0}$B>RlXkID>xgY6-Jb-jYx`40=5H<pyej$74-A}D>`O>^6zdX3B`x5>Q@2CqpSPXaeBXk=9%V= z>C+c~_p8&$Gi!MQk)(f6vQS9LF46nd!jh7GUlDW#3C(i-Vo;ISkkLqJ7G@EIeFb6P zR&KwEgqGtI6IU+8A>;qhK8eT&|EzZpk*UZ>$j8VhAnY#?U;qI|5LgESu%CM804>Bp z_6IUU%4^IJ@+I=sYKGG245fp>dSm*wmcJRwM&_(VN=6p{i6LYOvJ_E?EC+!NAOKAr zl!5>hCA%~YfvltpuL6OMCX%b9*CC-5gkNcEMz$bZL0~foYyp9-D`4IuKdc4QiR}6V zZGA}UKhrjhq#;L;qsTE3*aia3Aix3wa1cQJqzwvpQczf?ZB;lLavC|anzY#;q^+R* zf?QaO@*8U1pD07EN5K%4D2Oi<2w;{dllIEov^^Lxrr0w~dcqzom7+JO>B?L02ncKk0Z|ax2?7#7>2ZMOc;%J`Ksl&mt(Yp57s>}3qLEmXH$(~uh$W+Z zQAa>v2MCCp$SYc%l!SbUrF{+bFF1Lb(?7b%v0s@yi8{5mMrTnM{=_8eB8mht843bY zARx0urR)#U;q=~j83d$_J|!GM_pyyQ1PgQwHFdm z|7_Dx4^gS8N2tfBCm}Q*ydCK|{es zDd_EJQM4F(2U;8iOhLd51k6Fe0t75m&=P1#v=mwzEdv5pAYcswHXvXN0(SrJ_*_uL z?vkO$K?~(8RaZenv(-QQ4tm!weFv?L#;@f<4^8-!c|sG>hKNe^UJ!5qf&EK^qsxy5 zHK8{s#G0cCZpHMVEzyvh`-}BQ+oA2zkO(IbH~<39D{!6AkV#)x=Kl%vT5ABZ*KpzDGR}eS|0?;tv0Ro49svEShj$PtxHDM>vkhNa+x{}bRLBQSi zq$GU{541#u`(d)sAf3i^$T3?%ei04%sjHEPp(FmNf|2MbsE=O*0WT2nUh3&fF<{W@ z5c&q4#uyMdY=Tu@k$xL}2cnU#7wCj#%>V(Pd+599M064e_<{g5I6>14{|9gT=oB<$ z>Q@7OgoeWTe@pRmblN{_MLIeIor%suXM;ch2tY&!g1|8lIR2AjC|p%(=?xPKwOFZ5 zKDvNj;*XwF{41N~=!&%XhrYpc@f+=w`b2abju6JhM_%8yd3TzxKZlbSJtC z1Wtm$DG*qNtQQSMyR0UMf*$+>IW+X-Kli^W^fY<~{So~M1kQp$FbIGka1I2{uObI0 zD?`^=D9nBZ@fY-xv-*RaZ@-X(VZ^Lk0}=yZHbGVsvjGDc^@|`tO2%x)KyGRX2!uk@ zQPAq$a*FpKE0KrxU14FcizP*seeh`{AsfVQjBzN|dNfq^{i zdl*g(7Y1^WuYf=V2t?k)@M8EFnm`~51Re)#IKpKhNm|YU9)Zwtb|$XAK7Il8vn{<` z>8A~u9z9Io-@IIisjJ&zXbKCOdt(3Pk-v|>TwWAiE6vO!z{_>1SsAr3+k?IDV?;4x zm>n2su(=8Xw?H5s1d>)jOJcBe&{7y_3^eFKwjvq?uHVDpFtQjq5V!#Xkde6Q2;cq- zgf$?cjnqE$^Z6X%JOBAcZ78{ssjDxvD;t`kbA<2s=ew87SXxsS(p;WdV=(47UpfMG zr3&g8t>0Ba8-vF{eorh2+y;R-Ax$Vui~h$%h5z@>w+CbNJ287P`!L2J0NKMkAaM7m zRyi~9i>zbdhls|QV=OS1mPV#hE>NCd5J=pMSZ8+t>c##6GBPcU>(;}74XSEZ!ccl= zf2fVEgrRIykS6$B3p>%Z0=jG_9N^=NWMCvEKHIp71?RzH$c2Colh3SMVzdeqt3)z!t-rFjbii9)l{ zL3z3c`P)FBf0r7(H5tPi3=0O5**StY1aG!5GS!1-m7zQFK3+b4En9ea`S=9{g`n&7 z{tkVZdYo{D3OcCg<>clcyeW92kmmL!CK(Xh;E>`Ik2-s}I6(>Hp|}7^ZD^6UX}hS{ z4x43!^e9@Z<*yLx<+75+#36ah^Qp~SBqXJzWuVF}6>sY6PHx&;u)HDkRI(FDfZJ!jY>;qEDSe8EKML#D9C;5zb;{N^lKwby+e_ zP%|{D?=tiA@d*fKWZ1-jVBlmBVvuCOLFe}AG7uO{7#tZ6GWakYVen@-%5au}#1O#{ z%MizKhar(6nIVPYA;Tkvmke19MGS8l>KWcMv@>)v3^EKed}U;0WMafHax?NViZMzv zsxj&?>M!TV4#V<2atyE$2ehRFwPj4B|T3D zfqRgugTQ?dNO^!cxWNeHj`7%Fv;lI6AApR|u=NlG9?`!rb~(ZY|5;JZf_z>7$D8O$ zMI7Ox|161qlW9PZ*Z+JcJ^RDbokE(Mmbq!d_(AIEkD>QwsQ~C_df=8~g6$|2wvf8a zS|H}wGC{7%m_T||3Ea%b#VLs2DS%&AMNXDq%Md>D!+4$w_D*784qmrHWiTd$P9=yr zhdGbAfVqevfxt5mcmV>hKmdC0gnYHk2bfSy80Hct9CH~1jRBC)k`Dq!AW#Yd(92^r zBy2fo0u!~gdIdbEhX?)FGw-aVzrif8tpYFU<@_5bZLBKl_Hvb8(~J6-lIg7~ZTYk& zAdOzy|CMZDnET81&7dRr*E3$Os`+x#O(2V2?*HQlfc-hK7>`8#3=@KEUh(?Ot|gJ_PMk_Gb2F_G1oU z4q*;s4rji?9Lao@`8sn9b1ZW_^J8W*a~sPB77i8z7F(7>EP*WNp&e2&EVrO-OYtms zSQ4QPN%vVEuw=4iv*fanSqfN+SV~yRSSncBSw6xU;Y@HrxGvlp?gDp(`@sX?$KXNm zQ}8qJ2kr5vVBC zHPn67Gt>*zD-;=3j(Ur#LbajZqXtovs72H_Xf~P=y#<=XVnts-UxDVX9-v=9b4PXP zW;6{wgWp2wnnxVwl=mAwvTMHYzu5(*}k)HW#7h*WJj~JvU9QXu=BA?vTL#%v0Jjc zupeaiWIxRA!ydpM$bOvt0{a#A81@wQr|jA6x$JrDWcDid8uohjM)nr=HufI&KK3E@ zVfGRBdG;^t-#HjK)^Tj)*vzq&1H-|~v6DlR1IHo9p}?Waq0XVfVa#E};mJYbNaRT8 z$mGc8$mJk&v~hgl1UQ*E**OI`g*ZhxMLBnH?&Q?u)aKOT)Z;YZ+{0z=fs^Y5WYUFC>>gDR^qH@u= zM!BZAX1G3a&2oL`-paj=8_A94X65GM=Hce!7UP!ZR^-;>HsIdFP2@J>-p6giZN}}) z?aJ-O?ZNHI?ah6JJAnH-cP4i=_b3mXN1Dfk$C1a0$Ct;CCx9oA=Qz&^o>M$$c&_k7 z@?7PK=DERhlP8uZj;DxcfM<@ElUI?~miHWQIPVqS2;NBETfDb<<9JhfAM=**mho2b zR`OQ!*7DZ#Hu5&}w(`E?{lMG7`-yjs_cQMT?^oXMd<=Z+_+We+_%`uv;bY=c<=e}5 zlJ72GK3_NAJU=Q5%uo7?;a1-zq@Dm6S2oyLj01BKJxF`@J5GHU-;EBL%fgFKqfhK_u0{sFM zfgyoOff<3n1UCt?2%-f=1Qi9f1&svv37QC+3EB%D6Feh$OYn(cpozmTAiu#l*bjF6I$x{#ibsgSvlgOG=iw@{GKIiU+eSA>#;Qibw_ zDuhOa=7qipGYK;b!-bK;Xkk`ic41CoZedsx54}}Yan}sJuU?N;1!Xn#6L`7so)J1ee_K28@n2Xqm*oioZc#0er2^2Xlazf;k z$Qh9kkuZ^Pkt-sRBKJgIh@^?+i&ThIiqweIiG19?aXZ&`neF=9?Y8@DKeF9_`_b*k zwg+u**#2Sr$L$NEXi;%dO;Mt#xu~V6ji{Zdhp4A$fM}rTanTc^r$jG`hKPoVhKpVi zjS;;i8Yh|{S}a;7S|M5~S}j^DwnNNF%t!3F*a@+dVxeM}#G=J+h}{&66^j$QFZMtz zRqV0YQ?YchOtCz%e6d2YL9q$3DX|%`PhxXopLf{p0C$|yjSH+{n;f0Y?J&T*)KULNtGOt9G8MgNl2+m8A{nm*-1G{9gu<&g-V@}3Xuwvx+E1Yl`Qo_ z>XlTQRHjsp6j`cDsz$0-s!pmys!NI@MU@(n8khPcH7E61YC#$!EiX-!wwAV)J|ulu z+E?0NI#4=D`jqrp=?Lko($Uf}(y`KU(h1Uu(l4Z2q=%%x$#BbP%J|5TWTItm$lQ{N zler_4B=bh5P^MU>Oy;djwM?B%y9`x^CNm~8Au}!W3CoCGkKKUXgx!i|#&ThKu>4p- ztO!;Ny929$Rl=%bcVV@#I#^?@Db@mOjkUu%V!g25SbuCF_Bi%5HW+&z8-=}wy@|bz zjmIWo?_(cg)36!XTx>qJ2wRS=#MWTjumjjZ>@ao|JAs|Xe#bH37;)=xEI0%Xjbp`e z;J9%jI8mGw4vUk+DdKc+dN=~k5Vsd+hO@-k;11&gap!RtahGtHaS^y^TnsK2_Yn6I zN5&Q4N^#}5x42qd1Fji2gqxH#ly#9kBI_@EN%o3tlx(zYjBKoIyzE`sWZ4wiRM{u8 z#j>Tc6|$AGHL~@xO|q@B?`1n=yJUN0=j2dw(3U4TW4Q}*F>)DljdG*%>*QJF5%Rq9 z0`kK0qVnRl^0u_Q3PAP;b zgeycSL@C57#3@WEd{g*Kah)QdxJhxVqNpOYdsGohK%=-@@qnVMqPwD};$g*N#cIVC z#gB>$N*qekN@_~Gl(dv|l=PMMC|N35E7>VID7h(lC{dKAl|CxNls77GQQoEuS4Jtb zDsw1vD@!WNDC3~LsY=SK%Da>`mGR1f$_dI9$^$A~DuybjRbHv&s}!mfsT8Z!t2C;# zseDlBROwS0P#IL2SKX?LR%KP?P~}#YR8>>eP}Nq|RW(p8QLRyJRUJ_sSDjM*qPnR1 zU5!zVSq-knrpBqpqsFf$swS=`sV1W)r>3liS0kz!tJ$bItNE!NQzNNGsy$cBRBKb4 zP=~1_)KThab&R^8y0E&4`gV0$b$N9ab#--3bzOA>b%Odi^=$QW^|$Jc>MiQ;)Z5j& z)Q8k*>SOAY>NC5fb{*aox2t>C=&tcyGrMMYects=gF$1xhOCB@hM&es4U$Hv#tn^| z8p#?d8mSsjG@fg`(#X>&&?wd@(|D^= zq1B+(q}8hRUaL=QKx;^grZuiLr}bHDQR}<5p!QB}No_f8MQs&rb?v>{4%!~te%b-r zC$-OLgW4CgBeid9r)WRd&ebMs7i*VkztyhQZqRPl?$z$s9@n1I{-`~t{YCpLej|Ph zej6T+N8wrVJMnt>{df<&C*B)>1b+g53V#-V4j+!cf{(&S<1_Jv_+oqoz6xK9@5fK# zKjRnhf9b5#0d(LxTsmSp;yOEZBy^N@RCRXgXzA$a=m*y_0G9Ms9tsnDs^ zY0_!cd9Tx<)2&0*8POTnnbP^F%d2asdrJ4IZnkc&ZoY1jZmDjCZig;KcSv_scS3hs z_q!g09-y~LZ>t_$52=UI6Vg-A)6gU88R?noS?F2oIq2=zbJp|H3)Q=-7p)hg7pwPJ zFHJ8~FGr88SE!HH=g}9}m(Z8hSI}41SJTJq>*?>-C+eH(+vuOwkJEpypQ)d%pQm4- zU!z~A-=W{F-v?!&rRtC9kLxe!e=}e(SZ4q;*l4iXK+0f`!4ZR-24sUSgCT=qgHeMC zgL#85yV1LOcJuA2+EcryVNdg(wml#AbnfZd)4ykM&+wknJrjGT_k7wjzh`03Hv$7; zJz)c3Gl7Y~LO>EQ1a<-!ftMga5GIHc#0ioF8GUBjW|Y} zB+d|LiJys!#P5cThA_j8hFc7`8Nv-whOCAhhTMjHhJuD7hGK?04W$gRhH{3AhAM{Y zhMIt!T8tEH38+jRd z8^sviHA*rnHmWwNH5xVgWHh%|V6XUIiM@fyl?wH zqkWe9toMcPySguWU(UXgeP#Q4_6_eFG2U#9G)5cC8mk%aGPW~zHFh(;W*ldnU|eWi zXzf=o`DTr-I?NifMaDK;rJ88ewRnKwn5a+~s+ z>Y74FTAF&A2ABq##+#;?J~S;etut*fT`*g32ABz%Ntj8Q8Jby`S(yczoizi^lFgo& zJu_=H>o)5(UuVA6e4DwXxq`Wp`2llJ^TX!n%`clrn3K)R&EJ}jn13{%wP3U0w-B^Y zwa~H9v+%JvZgIlmnnj#Nf<>AI*`mPWgGIju#gfSqW65SIW2tPZYH4TbYUySfZh74@ z#xm2g(6ZRF({j*~YPH^q$%@$uXQgVTZe?wCz{&&o+!U>uuz0)NM3uTy4B9S?8-E6znR?b%4R>RiA*3UM;Hq!Q%?QPp4+bY`{+gaQ1b_{kq?d0qf>@4gY z?VRkw?XKI!*yY<**j3t1*v;F0vFEcFvlq7~+MC;3+Q-=6wNJ9|wWrySI$#`l9rzuz z9S9DF4n7XY9Zoo0cSvx!>rn1c@6hNl(cKk=(^KY()Ez5zw1%gH?DcE`3D&eZa%p6ApRinpwU6n!N`MG4^|y)KG^DpapQI4 zce8PGc5`)m;+E!?;WqEi;J(gX-CfV!z&*zOu6vR@)qTo+#zVo)(^$J#Tp4^z8Mdd5(G+co}<{ zdfoAQ==I2J*lXJB<6-r~dWQ`T-#wgq_^~(4dz&|lx2?B}_d)M`?+Wiq9~K{WA5I@1 zpW{9!d>Vb)eL8(5eHDC_d_#S&`bPVX`_B1(K4N)f|B(Yn-WpJ1<3`S3knaq64Vnk95iwQcS7}q`ibi&5>DJb@%`k+lbcVvpFDEX|76w4 z=98_bluv1&(m8eS)YDVXPcxj}e0u9?htqDSJx=GGE;(IxhWm`j8PPMgXI#!4JQIH= z<;=q~LuV$>OrPaHyW{N6v-W2Xo^?O_>}b#NalN z1+)R3L09k@m;q*;TYrw}9P>Gcb8hE6&ZVErKUa93>%8#!?dMOOzj!|6eEa!<^Me=U zFYLOYdEwfHxC;pvCN9ihWV^_Fao0t&i%u7vFS=ZGz36u_fV7PSC!t8JBn}cciH{^m z5+R9^c9Nt>Sdtt`k)%RWCux%KBt6n@5|Ol*WI{40S&?i>4kRa%3(1Xih;*3bOY$cL zl7dL5NM}jsNEb<=q;OIM=_=_u=_ctmDS?zox<`6IN+mrZJtw^)rI9j8IV3WvkW@k{ zCsmSaNcE&9QY+~_se{x_>LXD|RMH4(JcJYy7IHZxGUQswjgVU*aUpj?l0xo>JPdgp z@+{ILTDjlA(J69A+sT$ zLl#56hcbr3LN|tP3EdV74@HHthH`{*hw_CAhKhuWh3*WM3dM%Xg(`-sgsO*XhT=o@ zLU)G}L-&T7gqnw1h1!NXggS+~gt~GP`7d$?;OrrMgQEmzpoNUh2No8?F?t8?GO|C!82= z9&Q=_JUlm?99|e+99|t>ds+3e!R0-d4KMG#Y<1b@ipUk*6}c;lSCp@4U(tzRiQtal zjSz?sijatqiU^B{iMSOJ7m*P0AR;w#T_j5+A`%_R8p#(a5P3TCQsm{x$jGaawT%T5sPw4JtC*{TSB0;NUfppOcUA7{{59CM4c9hb z+jo%===$*W(d*;a=dORgQFx>FM*WSZ8!b1wZuG?H$C$-f#8}7J z#<;{BjH!$1i0O*yjp>gWjTyhGd(-5m*-guv);AB_bh#yaOY@fYE!|uCxAxsKiRF)# zjFpbX#mdF1$7;krj?IkCj?IhBkFAKUyuJOl>}~nmO1D*R<8SN6@x@8RNyTB~WaHH0 zcEu&fy@-1imll^1R}fbe&mF%berLQ?yiB}uylVXY_*e07;xpp2;)~)-60ixo5;PO= z3AzbJ3HuUg33Cab6BZM`-Pv$w(;fFaNADcFbK=gaI~VVS+%>vud)NN%{<{b6dfq*p zD3_>}h)>i@G)Oc~G)>G&tVpa(tVyg(e3$qkNij($NiS)45+TVf$s#EusU)c^>1|R~ zQgc#ka$It1^5f)Z$uE+#l5_51?g`!#z9)Kb$35IVxqI>V9^HF#@A@qqZi=z;MA(+74B93Ip@Xn)Z8pyxr~gOLYg57QnNJuG=x{_yR?#)r+RM^ewE z2B)4+y_g!28kIVdI-mL_^=s<)NBWP<9$7rHeq{UT{-alq-aN{9l=Yb5@wUe-kCBhj zkL@0NJobF-{n+<$(BqSjJ01@|9(g?ec=Czj6P+h|Pj){cJTZG>@s#)J&Zm-3WuD@m zsyd&c>U`XL`>39Pu3W-0r!@bI<4A&wZZ< zJwN$;i@6t{UoyU2|I+cL z*Guo0M_&5BB)_bBS@W{~W#h~Cmz}SYU%hzs>Q&mSj8_G(ie4jL^STPd7b$B-s_at&tJcMgM7pHM&OO`o9%C;-(cT-P6N_5roq!tX{>1+Y20ZdX<}(R z(Um>!UR zI-Qgrm7b7(H$64|N&55jSLtc#Kl5Q`aV9NuK8r6)EK4>^Eo*lcA|}Idv~^F_JM4l>?7GHvQK9RXP?g|Wk+UT%f69)Gy8USdUj{_NDeZGD@Qm-Dn~U( zJx4ERcMdUUZ;nZhZH_~ZQ;u`a!5p8Q<2hhXL{3yrY)*X6-JIl{l$_@|uX56IGIFwW zigRjn+HwYR26HBIrgJ{!%;zlRuFu_&yE%7jE^{thE`RQhT!mbvT&-Muu5PY=?(STZ zT=QJ3T$^0`+=ID(xuH}4=f>pT%DtT%pPQ1Kn)@X8S?fHCa?YRTF zL%FovvE0er&$)}a-}4yq*5@(hVe)wMcIHXuDdZ{VspV)NyurNTywSW*dGmP- zd0+GXB5xui$ed(R@(wbNEKgPIHfQy91Q(nyAQglaTrRj#aH}A$AfX_!;88(FL195{L4Cpdf{udjg1!Pu z!Fa(`!N-Exg3pDFh1&|*3q=Y=3uOvr3l$2L3)KpB3k?bhg@%Ru3atwd6do!(Rv1)x zuJB@EXkmC^MB&ZC+l2{*cMFpXpA@DQk_)Q}YYJNn-xqcib{F;)jueg;P8H4+&K7-TcS{+RH9m< zQ(|0VTjE}FsKmb{uq3GDRLR+r(30?yh?1z1=#u!7)RI>v`6Y!Vl_fPL^(9RuttH(h zeI=BVp%PljOvz&DrqV5?s8ZHaj#BPYzEZK$ouyKxGNrPmYNdLmrlsbk4y8_|E~Rdz zhf4iR151NSPnMo34JnN(jV*mpnp*m*G_5qVG^dnYT3%XNT2oqA+F06NI$Zj(jG=5@ z+14`VGDI1=jIE5nOsH&onOND*GPyGKGW{~MGK(_DvIAwVW$tC3WdUW!%1)G>Dmz;i zT6VSUcG<(SM`f?e(#x{Sa?A3|D$1(LYRl@&n#wxLhRP<(zLtG2-&nq-d|NrZ997O; z&Q~s2E?h2JE>o^tu2*hQZd`6wZdqh;5WqEdaUU@-zQF&>3ZFyVyK>1+#MEP|2r}Fvog^KkR8!9$eY^`9fV5{J-*ioTS zp;Upd(5o=0*i%8QFsiVwu&Z#aaH?>raH}{{aiZc><>pFcC2yrzrF^AgrDi3*Qm=A% zC9%@H(yG$7(!O$krAOtl%5#;Gl~*foSH@S~sZ6X)u6$DYyz*7$o63yJg39X3*2?}$ zO67RvROQFYxymn9>#BgNO;uZ}wpFoK2~>$!DOM?0X;ULE^Rbth>s;5;is$N&6Rb^HcR#jHDRlTq3tD;mp&r5aVuUoBX@vs$VeTP;_uSgl!&uhy$Js3ugKRohn|s`jcrT7A6wWc8V9 zu=-N5h23~`# z;i}=S5vUQa5v`G_k*!gvQL0g`(Wx=4v8l1EajkK$@vQN#IZ|_?=5$SP&AFP3H4!zj zHOVzEYF^dk)R1cmYf5U$YwBy7YFcaF)wI_P)Qr{4)vm7vYME;hwdh*5TFzRb+U>PF zYIoL3)hgC%)f(0AtF^ARt97hBQ0rRjU3;W9pf<2JsP@de)2rKC zXHsWgXH{og=ThfZcc{**&Zq8p9awj%?q*$VU2Hh5>$lWztB2Pk>oN7b^`iAM_3HH+^#=8XdZT*ddb4`_`u+9J z^{(~q^+)Q@)?coVsJ~f%yFQ^lvHo8D)A|?nuj|w5GwTcMtLt0q`|Bz7}@bx#iG-@~MHX1Y%8m$^_8yy;*8eJOQ8V@xdYYb{U)p(}yO=DqWabsCy zMdR0|%}raIn492Dx=kicW=)n&)=d#jaZL$LiA~8(@0uu0Lrt`%(PsW;$!6(hT(f+$ zQnPBaW%K^#1I@0@?#-v0qnd9w$2TW5CpO<}e$f1;xuUtfxvROSdARvg^OqK&g}Ftv zMXE)=#lGcGi&u+Ji(kvpmg6m8%lQ^kOIXXDmc*8%misLaTOPM$wq&>DwG^}zx0JT@ zwv4w-w#>B5wtQ|`Xx-Slxs|Dvr4`wVZWU-1YTe$tqgA3+s#UdBz16DKw$-84snw;` zt@Tjr;a1;P|JK0Ppw?5ZXIpQ#CbTBD-fMl(`l$73>xL+||G9evmO zuKyk79rYdU-ORgB?>*iJzCZr{v$P}H(e145eC-15r1t3c8|}B+Z@1rTPwC+75bfB}A<-e#q1d6^@u(xC zBda5~gWOTx@wQW`Q@2yUb5AF+)4bENv!b)5v#qnIv%hn&bGUP~^Hb+s=aI*quoR3G3?pbW7=cU zp5r|ydqR6I^@R6a?uqS*>xu74=y}}pv?sGCr-$5A*i+I|-qYCA((|sTy{D_Ew};j< z*So$K=-tq}u@~Np?8Wr5_j2}%_U`Bv@7>v})T`2q@73$w-AnA<+iTTp(`(pq)4+dlWcLw%loUVTUV z&h=gBi|o7BccbrCUtHgvzDIpe`(E_D?o02>>MQB1@0;s~_bc{m_8axv_S^S6^gH&u z_aEv%-0$1(*MGJj>_69kzCWt}T7O*so&Kc$`~465U-rN5Pw&s_&+UKPU)A5(-_rlC zzrDY&pVCk5AL*a(|I)wEzc{dIV9UVP0j2@WfZ%}efb;-vKz=}JKy_f(!0rL!z}^9q z0rLT?0jB}qfztzL2Z9H{flC9I2ORI#$3XW0b$~W7HZVCbGw>IMk+O-hmBLIxP}nJ46kdt|MT#Or!BTJ(4T=^;n}Vkh zDb^HQ%0Y?;#f#!Y@uM821XIpaNR%+jWlALF7A1x9nvzCIr({qHC`FV~N(H5b(nfhl zc~2RnP$^TCkCZve7s}T`U~tpm)2|>}pq9q&?hHK{dN!0blsl9^R5VmN zR58>v)H?KjsAH&msBdUw=nHiNbrW?P6;4G_*{NJqUaA09oGM3Er)p5Osk&4Xsu|Us zYC(0Tx>CKVN2meRW7HGW^HdTwjCz?GNxenAO--OCQj@7KsIRCQ)NE=VwTN0ut)RA0 z+oenx_Ojolw}k-$}`G8Dm1!%bjPT~sNyJo^w8*q z(I=y6qs623qm84`kTlvk+CADgN*SFV{W$t*bargr7;J3Y7<>#h#yZ9^CO9TCCN{Qn zOlnMVOnFRgOk+%YZ10%ynAMo=n8TRUnEROLnD^L`u`^@AW8m1ivBp1f`=eW?g$hg?} z&T*x2m2uT^wej8KgmJTR%W<1=`|~{$l*~c=~wOc*}U-_`o=2d~keb{L}dC_}utk6HF7#6C4xV6MPeb6Cx906S5Nu z6Uq~66B-lR6NCxN373h36K)gk6GtZeCjuveCP)*Z6JZmVCT>o|P9#sHOr%acnRq^t zIgve)H&HNAJW)TW1@SaZ(?|2bYfy+dgA*e!zAP6x=EHv#3XVOHOW1>V{+%D z!ld$~+N8#$_N4CQzDd(bi%IKAyGh4M_sM`saPs`*g~^MP5tC7q(UUQg_a;*&A51=+ zOq}iESfBztemWw?4A5Pb!F<>)ZMA1sryq8ryfr|o64Q4m};47o9deCof?=L zni`*)n)*03J1sVipSGKJopzh{o%Wv&oDP~kH61n`K7DQa#`LY}xas8Slt>{86lauYG-il1Mly>>S_R?m3e=+d1bsuQ{K&<8x={F3jDWi=9iJyFd4E?$KPvT-IFK+}pY8 zxw^T=xt6(ibCfyi+{oPc+|=C1xw-lE^T7P3`7QGf^PcmE=Y8k><}2sh=HJhE%y)fO z{H*g?@AK}@gwNTZ%Rj&UT>ZKB3--&dFPdNQUvwAX3p@*a3&IPc3*rmX3%CXO1=R)Z z1;T>ag42TYg8PE!g7<>|Lf}Hs!nuX;g#nbauZCau zeKq-N`_=wy_1E`b+rM^w?fEAAP4k=fH{Eag-|l>S^6lBTm)~B0Xa3Iho##9Mcfs$c czDInI{vNv&bI-7D-SQ_Z-}2{=f4|55e*jGvrT_o{ literal 76114 zcmdRX2Vm32_pt6H*^+E|#SWW>0)-aHWENU*94EMBVLL!ru9FyW$*P^Op}OwUz4su{ z(!KZIdzVhScT4x){oYBDWoJ+*@cZ|JmN@dex9{D%cSCipjqzk#e*P8)F_>W)j^P_#kd&{ zvoEtBGm06_jA3$_JSLwhU<#S>%oHZbgqSc>!^~o4Gjo_)W-c?2na?a>4rLNdl4)bw znPtp!W(Bj7AWUQ~>xqjFS*LMV(5Mp0CU>QMta1T95}q6A8!m1q?@3>|}xMaQA_=y-HG zIs=`F&OsNT4zw9vhptCApgYi==q~gCdK5j2oz;6hx4$Kr8#Jf46j;z@Xad?5DXQe1}1aTT72=i>!< zA&%fhcqwkf?RXhpjo0C$@iBNkJ`taaPsiurbMbZfdVB-E5#NMw#<$>G@oo5adVEzr=6hU*=!u-{Rlq-{-&LzvI8>|1=>JZ!($OCXXrG z)ZaANw6`hORA?$P9bodB{H9V<*i>VhWtwYRXsRNwkZ@SrZi|HQI1ExnzFPXNOUN&tty=i*a^r7h+(+{S<%-C!)o6R0`wz-da zfO#+TP;;I+-&|lWG#8mCm?xU2nZ4#>bE)|t^Bi-nd9Hb$dA@mpd7(LCt~W0>FEuYW zuQsnSA8lT5KFNHt`9kwW=8MgjnlCe7X};Ecr}HcgyV#hh0}$zg^Pttgbl(q!nMM6!u7%p!X3h$ z!d=3B!ZX6N!gIp&!VAKS!mGk-!dt@I!Uw{K!bigA!ZzUx;alN5;d|kC;ZM;bT18p3 zi7qi)>>~~k2a0=(L&ag@aB-A4S{x(hih1G$(Jz*YW#V+PT&xzuVvRUgoF~o~qhg&{ zFD@3F#6!h4Q4xuFxOjwkq_|!@Sv*@jN4!MbAa;nCiC2r)h_{Kii+6~3ig$_kiO-48 zi!X>TiZ6*<#FwS3rR$^{rCX%irMskir3a*krN^WvrDvq)rI(~vq}Qc4rFW$FrH`af zrEStz(zntN($CUw(w`Q_!dgrg(PFjOEiQ}4($_M;GT1W2GR!i}T^=s>Q)*r3ESbw+vB_o-W&9WrR zvO~_2v*mvBKzT2DZ+W;pQXb8$m-FPY@+gRH~+hp5RTd}Rw7O+*=s%>H0Y}-8B zLR+0JW{cYzZLPMXZMkigZJmwSjURXYD4tWS8wu zyW8H^KES@0eQ*0d_I>SR?D_Vw_6hdM_5FLgOYEEMm)fteUv0nMev|z+ z`pL9LEsH-i};Ho+IB;;5fi>pku0InxouN;iz;} zIjS8q9YIIP5pf*sh&t*V^^OKd%(2Lka3mdVj&=ue9PT*6airrE$El9f9H%=jc3k4v z;OKB%>$uKwz2gSQJ&t=F_c`u&JneYK@vP%H$5zLij<+0dJ3e=8b9~|W(($X~H^=Xe zKb(S7bV^Q(vyZc{v!AoSb06mj=Sb(i&T-E1&I!(m&Jw5JS?VlvhMZw%jWg=3bJjZ> zoUP77oe5{sd6-ji66fL0lbk0zPjQ~=ywG`(^J3>E&a0i*IIneH=e)~#xAPw76V4}{ zPdT4YC>Ax{6(ut}0ixYo=>~YoRORI@s0dYH~HZT3oALYg}tx>s;$y$Gc8&o#;B( zb)M^d*Jjt{t}9%(xNddb=DOYWsOvG;ldh*+PrIIRz3zI$wbk{e>r>ZfuFqZDTtB;h zasBH0Ez6W;&Jwc3EKgQ;R-de)S;Ml1XBA`>W))>k&6<|w%_`2S%&N+&&YGFEAZuY( zBx`9_V^&jEbJnV?)mdw@)@B`-wLa_kth2Mu$vQXdysXQzHfLR)b#vA&S+{20mi189 z!HJ(~4m)=ODivR=-5FYEoR53)YY`X=k!tnae^%KF>QxRG0S+uU~d0QW%mAopPR ze(q83(e5$sN$&mKligF?#qLsfz+L68c8A?_-Sgb@-BI_U?soSw_bT^l_hD|ueWd#+ z_i^s^?vvanyU%o=EVlXNITJQ{}1lggp(OC7!sa$x3?c;527=lRg{sb`z# zYtMI{pFF>M{;V0++}_yu5+gDaV_~d}%s6HZt8a`Zld~&Bxl3a!lXKx`XL_$J=wNJ& zUBL?5!8jS0!V#1oaSY4%c?-t-CXE|YT3kAA%-Dhg|CmXo<4VW)Cge{TTUau2{G`&- zh{GKy@y~8aEKRmX>tiJ?_3cfu<~E&jHq(d6QR*&d`ZE2P{>%VoATx*=%fvaeucf&y(bCumGnk0uz;xC!zKrBu$K4B|D-@k85Vfd)`T zd{I1>h&c8FaBqDZOrm;bH=S6xrKPbhng}Fk#gp;6Mj+NV#R!N|obgrm>ecz9bH){| z9i6kfpl~95o=`Y$?b;W?_7R(VZ;NO=}O%d%v5F?<7J8&A5+5knNp@qaVjn)OK~e6C0psE^i}#@ z!34m3GnjIwf~f>^Rx>k|{$Rj?%8|5tOGC%maBqlJaO>tTEznz;B@?Ez2vT z%i@cpZ7qof@W9^?hfm%_EE;i)q2lX4mSM=6ws>Q_Z6yT@!GyMLRy?*`LzqIQp~x^- z28xncGQPOE2Mm-Y4SzhAqz(wpO5=^O>S)`Nh$GvZOu_^@+T5mbnkS zrSYb^csQ19qyHy!n?ysE5oQVP4+k?*rjDs+8kiWfh*_)*QU)t~DLKjzWp8DuGVF3D z&Kv@YoXIpX%}fh3LK&`11~nEaF=e%~Mj0@-QKc3Je*{)i>QY@Z1WYwV6Ae_0R0fT| zx!MoSd9&cFlGvhXdt+Nktgd~rrlXwBN7Z!xpKJr?4aQm%u_Szmwn0Gvx|CA|UmQ!M zYnu|$pHoa*m{rVb@V_<8T4o({7^8p#wc;}3_@PDXc2`D zlqtr%mPA|^X;y1A0iWm9Q;wS3!Yf;2bD-4G*Z@zJ5e`O~;6TbGg?X7di8+}$1*o0M zoW`8aoWY#Q%mhc%173Mcy{e*xMxWQ*1R$EC@n+*O?dZ)7u@zN|^tQ%#N};l^GEy0@ z6hs_(bLv6fTria8$sk6cE!L!=%T4u$P+OwCzO6kG(>wfmihUz-bHq1?#* zt9`fIgWM)fM|U!JMI83ZP(^zi^)O988<{(qyVVG){jP!D%iI@nWR=Vc>ju}IrGvSj zYO$xUw3ZJt4@Dd!ySjj3l}x|xU>>IEb{Iah53PefME^gYc>=V{fYVQ;`lVyY({v13 ztL&pO^&Inj#4!SxO8H<$IL+*@9n1@qryT{?D7?gMi8zMt0EG_dmw1p?ZDxL9er0}RerNt*{$&1A{7R`( zrc74?%0bGE&4@t=VZ<^U5RXhsxl*Bom4(VEC88WWpALH^(Y7d!j}Xjz^T2r;yQ&~C zR%8UON;Pfkr}u##z8j!_=U)M_m{y>Th&50D4mv+X(AM_4#&~^a0t-3SnEElvmi9z_ zEGP=BRLsa9sv=W39ISTsuiMGah?zo4P;O|aJ} zrNtv%-&QmVjb|TgYs30wd&vnsc zOo=K*3RL+i69IHkO=Sp7-hpN?leLf9Hx;N70%t1x8hma<6_ium&@-Vcpr8U>#;xYb z`7}+QR5YGSU9@(sZn11M3(ZsNHlf*Q4yr|Sl|{;8Wr-5sgyy3KXd#LyhbWCov(i#K z3wkCE_{rIj#3Wl9V{^5*q2*OH6EhO3RE}hjS%e_{+kh4;OE*Af48wf?6hfN1>gEd7 zx3p4KsnfS?)P!1St7fICvz4=xIP^>K1WMb14e)lfoPsY?S~s8-%AquCn-xwmL$ipa zsvoo(tx;BWptWe7l2DfG2&{;pBVkgA4o62QNu{j=9fgio+LdJs0FBWlY4$TKOu4Rz zE^dyuwKv2TWC$~KTKgpo{bL|L5uK8O_*8V7vO-xouTvbFJPw_9_!701X6Uof*$Y!< zRwpSN(OGnwq9e^l=b`hJx=SuG9$bVjNy)!K(WXKm>n1AerRXwcokDbAE4l(*ox##I z=vw74MX3c#YEC?K+Nx8!h;b9THKWaK=yv6B3+Sr=x_;=imYfXk zv(Z-c0SpG{P4pIe8@+?xMem{al@pW`m6Mc{l~a^cmD4t(579^HWAq976n%z1S58+h zQXW)z4o;cf5U z(1PPEZEcA+w?PaX*b9)_F?(kXQZ_A<*43Ylen5XvP5p>|LO-Kl(68t>^t*C~a;9>Y za<+1ga;|dTW|-rSpnoyK7_$)62dIC~S1wR4gcuI~ps6G!B%LgQySG8o07+?8bK^>_ zIM4&wbf_FeVG;unG{xxwB9($^cxX|i2Phvc{KPtG^-qIoqH|dYAkA93s#R6GBIq1J zw8x-cI$QUzXoWdutU-+>)t$i>+Z6jHo&JoS$||ErVmBV5)Lo4|I2-rDeQ`hB9}mC- z@gO`H?}c-ei3zjX*i|R{FINSbPjoPBUGonZ7@fuYljRQ8D``!L zxbb zOtdu_YbZ;!w6_8nEd-{(sJdvf2=0I<<0<$6s48hnSFTa6rcMGAH#|)l3(f;0Jub#R zNb8J1-^EfJaS8U*{G)den9o8Lt4q6DRmrq6`4XP4vJwDhWf=ntm087{FELAFF zAyzxa4S9(Cvb8BNCNqPW6NTi#{(~_T=X;OQvDpFT2}5*?pE$}n3TI_g;qiZ zsR{7cgQ(z>VJP^hfS_2wy&N#F#H&CzA6T;wWzc)x;Uxar`$Vq+CJLI=(IZKm$%o)8=_?i8mlyI z9gC0aG)4zL7Scp~Jhlmjv{78}V8AY-)qd^x5+ufkWuzt=+0d`@{@c@cj8rTk3`vW!+>_9qf8 z2`!_9*{HvnrnwEY?%6r>2*TtOq<{xtN3HMEc_DOt`Ybghs524TObvs@E44YJhd$^G zE?TsqNpu%<6cnD(vO5q1NAJoFbaMDEMLrdJjNBe(F;ESk2)VsF65%`XUCIkED$yWw z555=dtXFJeZ5!dqed@dd%&UVxsJzgDAHokSFDW1EF(4a1hM$J%0e&1mfuF=rDO;46 zl~rO1KT=o3{uS5-MWJWOT7! zv%{~#ECs)&y#6|V18-%n$8X}dz~$d&ZouzAMF#3J_&xahKK=lIh(7=t^%-+Opw#_Y z3}U}4*4zM=1a-AHHCMJb)zO6rHx$znZQUNb^v5**=&%kAf$>OT98P7cW0dkn#1US! zTgq&C-qzLR7#(IzC z@Ow^}buf;B%2wswh@*BlX)LuUkyjCg;XawWMCA>wW(CN)B96hJ(#BX$dHJl0ocflg zRc90KQv+<3?#`|j+%Ib zLZN|Lddi8dpeq8jIFnK!YiHd(DUkKB*=!%SukwlVh4P2;XQu+$0gAnY9moz+K2<*N zNr`)@N*uxt!SAy}*=flI<$L7^hiEv0mkC<=fsREn!Q*3Z-lrTMCj60OcQ|eDlAMwRe_gbh1>Tvh*S-|GWPML%Q;3 zLKj<5(+tZ!vBj{Ew2GEvCs)MUmb5hFBx0}<)11tSHs@$dsI)Zc%hA@^bC$>3mgGcp zMio#vnEpZEgk-}o;4GGwpt_AQ?0j|s7%-yzto#NB{9QL-9W`J*bfaH(q#G@vt_r&P z^?#|WMl~EAujwME5t3Rc73%7UHa5~lvseSDt05-|i@op>X7CV+B2Cd|7#_8DBXZ)& zoaUA`(Apwc?r*LKFen*9NCOqNErBm%D`NHSbh?w%3QMypx+PJtLWZ7mS{8xoVK!3{ zYidcX%o*tef;pvNf(EsenU`jEFdl7G`KGPGs-2eH4zs$OBtUfaGrp5; zS2GY8e&F*8_-vSbHLHNh*){B1b{%^dL6{(xAdVn@6HAz3>=Epd1d8#HqlpAbT75~+ zqO`T&;gAoh(*?Eqk($S8iBnZ`Z&@6jtfkT@S`ehzbiSS|5R^@A)rX+HfJOMUH;lEQ>6+$bbXlxH&tx>?7&*2!cZMO> zsHteirKN+AuY#_pv?sf_qSXg2PwpKvEr_JNB7;P6Y!UQ;6jqI5T9v#f6F$m5ZkX^1 zg8CXddzyU~>YD5`1ohj%K1Wdh%*B$>?;Hf>>2D0_Du@5m7qZz z*tZB8ydWb@tk&sT+4tEG4VFG4C`bP)oBfpi++b-NK|_qMzGA;s>N?oBC?kV`7y6Ns zf&X+MEBh1si-G!Af`;l}WwU>EsWo>Fy72JMIKY{dRU0`oCveb#_aSIs zf=26Dtelmzr`K#b2L}!|f}oLFl`UmAt(4rZWE66(TsGG)qj`UB073f^G%9od%+P5k zPV3S#hZ~yFau_$9pfLo|b$aTr>aH4Cfz$}MYRw~#%H6w?t}7y&8^ujf>aOBOb7Qz% zE|1IS3b;b9h#Sj|N zEeTkIf{AG#ZI=u5Ty4Wwacl{!+_unJmA1Dl*xn4=i6GRdL&|*ZVW@sdjBZ)WFOMdn z1kwb#Igm2enYHhWAqQUJ*!AdOBw60eRnWb$yD z#zVm1;VjBS^KRlnrL5IP>2}pTDD-x+lX{rR&$${uGYoz%r2I7PA$|hQi&`>y%w*>h zjhzaEolTUT#Q%()9!$1b8d@+6W#ffsiGcux>n<9roq#Vl&1x|Nl%@9Db1BL z&2)=KK4g%;gOYF9z2q~xat}(lTjQd};NpJD#qR3Q<*;4#9}V%4#=~rbhsXA$bL
Hby1T<>I?D?hJM#>7Ufz@JbXQR(JFjW%EHK!4ld`kBx=ybVPTO|F zy~BM7vvclU?mg~(?gN4%1RYEe3`7Pr?s0MZ)jU$(EfwVoCEO;kLaXm=(N^%Gv*uFJkMK{x=VQzZ{`JF#gLN0xFePA+VOqUs`v`_k{YI69nZLSl zQo-n)g0bUr$E8Xd*?fO~0F_vs>@h|BU|1U9_adlmW>HE_{7`;a##E6X!H@3Ut@vE- z13sU+)pFIXRvCzj`0+4jrMA{A-N8@bVHUK4pp^#DWPVB}wW<8H%m+R`uzgz`#LwW% z`3fG=%+&;~A!sc@>j+ZPlrg4gQtr6XIfWAo)07e7!|BSHO_c$;>0vVq4ff{q3o^Mm zn2&)n_$Xh;*Yn`NhZA%JY(FFDDClGSV!nZoQ)L_t4+uK(|DuoatvuxC8~H=|1WYB- zF$5h;&~Y32c77QTHd;>*9BesZ&-5{VEx#^PUxYuLKIoy39nGIW?RpGgf*KDVgT?d`)2I^N(hJ@ICk%8!D{`MXMDt`xm zCw~_~=Mw~tE;PXJW;v{xwQbk3n0hdfp^x>?ViFX>yse2)c%#YYDoJpz8^`A*HkVtBb~ur#dT`G~Q5}sjsPD zn$k=Ib)}`aH079J%UYVsOv6n3_NFq^ex^~}H>NQJ-9!*niXo2O(P-Y6#{_ZpFoGWM zFr95Whaf1EKN%c1Vb1C?kU&fvx3*UOP&kh6v{%p9m@ewB$qv)TOo=WtUDcZ=O;?+) z0ZoGEKTFW_sw!X7QQt_t51jJ3nPUxg-DbKoGm$XeWdbL7fuI)+p!-bsXL9h6>EX-= zkD0a~&`i&oo-;jfdcgz%4a)2<6Z8r}uMzZmN|p0g7ZnsxRgO!G_oi1(uR|$a&7(G$ zpg{HN+|`pNQE!|$KBcm^b-4_N-#5Xw=JXExv1uEqtjE;C^o8k5zQOc0L0buWQ_U^j z)m8RgcWeA)`VHK%YX)HY-Smg)PlDbe=xu`DNpWIk%xWHNJmAbcWv%<5U>41G>W;k* z+GdB@X?B^j%x;3-Bj|mCU>@=zK_8`b2m!80?X3lqCK}FY?q}{#Np=cl9@I@J^APji z8Tv90H}41fGVfy^VIFCQg^EuI`jnv02>N`Jd6apyd0%rbLE8v|k>PWKVA1`5Hs8^u z7za|A#}o8Lu+WI5=KakFfIFKfo2L-;6+vHjm=82hCFmQ1zTN4p%&=LB*`KMN>E=M@ zgK~2aY-g@8SDLHL)#jN5eNWI21pP?RPXzsZsX1g0n`_Lo%(Dslg&#7?0 z%qyuuR}u7gu+W$!nAe#h$L$vV%}1DzG#^DUA{cgpvWBIOHA6^G>-gpq%qP+ZJ#@EI z&1Y{n`kT)&pKCtPe7^Ytf_Z{X1e*yK36@gbZSLxV0=2uPD{O-qqP3QFZ7^>lSeUnZ z%y>9iHKt%}p&qi#ms2%Dtl4OAezh5r)O60TH{a507rfPc8~FGg1X~HVQBTKNx*G4M zYP^SFIan~s!2W>w5l|!T7v_hxo}J-2{6G&L+4I!F^LIp0~PSqB^}CpO$@?KQezz zDe5AB)?J%ln!n0q@>?_A*w;(_#{3KSf%!McK5&0JWa8AiZ?^eQ0pfQz{}Zsl3LL=$ z2p&lApp>2kvmj*96)b|aXXOYEA$z<2C-f2e3jKus0ub4Y;2eU75WF|RLsQCGxVoqi zY7jJ^%_v0(If9z6cIrnM)=fXcNMYYhK1U0=;I_gTf`@Mq@(3OQGHDAyLZMoD!*JT3 zB80vA!gyMFTd|v}#%ZU$b63>E2ApUUUA${ZKW?4=MV_JUNkTDPpdjooOctgH2M7lW zQ-x`Qm*9~E?@RE01dk$kG{GQLF2Q-13qEG1;1^1TGGRJ=I*8zWSQEzZ-&lfSm9m8X z=7+^u%7nUt7=%j)v^Bj*>KT;Y7R490Ys-|KUpj`RzSf@T)jwKGqdS?^4dAdK*aghn z&`{jo)&{2seeDT)`G5+i?t9iT=xc=fmRBfOjZ0zai9hXpW%qI_TqCgEcBL^mPZEs5 zT_s6fX2+ORi%hXnr;)nISCE45i8DX!p=w)6OP3&N=Oqt@F>8cb=`Lv%YK8f*F+rFs z%pGq~x;oy+Fs(`NTd*0oxs~}rARX8o(rLu)H z1(=qlja|aI0@RZ_g!6>+2`(kLtV6g^xQO8C1RoP|j7@oSPo8T;gyIC8@rot%Sg@nb zO5*f*P?OfoV0xo)IgC`oCgD=yGGQ~p0fHe?%^J_rErySHNh1GgG(&Mgu={mT9$57Hu!mZS9Hw(8ATuE?Mhj5#4JHgci&x9+2QgjSV29i{NPsLh8 zik{$8Yw>jJU2KbRH$Gmt2L{6R@E1-C!HJ{tSo7kxC2)X8kI~8l2B!}QkHIi6JSaRQ zJS;pSJW6no;1I!Kf@=t#b*b>U@PzQB@Raa0!LtdjB^bipLW1F{BUin8S|b2U6iL{z zG6Syaf}M_;4@=?+*wX^h3%=@;`IRPUOCnjDdOlzKq%Pj*=e~t4u!UTBSy)N%90(FX zHmaYTOO0H5EPaE5ZWXo?JQw~8R#xd>yi31$Pk5i;`2;V3y);eqG99=IU`S*|Lp^L~ z3N*vjLG&QvGJ2vUmWbEW-A@!oNAU?o@u~0`!4ZNFp6?Ckr2KX^{6cxrLBFD)Ukl$5 z49Qyk+`{|`xkUxz$L5cpTTqyvo3H*cEbyc7OBY}HRrrnI7{QD5b6Y2*TkLNUX6ToS zkpGBSv)E#SA>PJ2Ehd^ovnYt7C=q-J!Al8lBDjTMu)yxJSf`+(gN|Kbm?`=LH#`s_ zPi_p=`a}A|e)M5~g5j9Y4y#)n44VsjI?aVj;;{^DeDie?xX*j5v~MmNkf(JK~17k0rYcaXN)o%99x_tLJ&BdV7NoTRa%{s85CE}hey@0Jw8tN%j?7z(smK? zV1i*%eDvIcNrk%B#}!WM{AegUCN9bt1;x0y6q0`tocXv7Vk5!F1FV+(i!EC6zdn`x zi%FXN&)hx9Kjih0>$k$jJR_?Ymx)lp-6Sp-SBNV`u1}Y!AQOi(;XQzYHeustI}A37#j(!R zS3M@*Gx&BA^D#YOk7&<|+uFs429#nYlr{T)aZOQf#SBs^>V>?D<>*#}@E;1h1!e$`su4(ANGs z%h}>};!QA*7Oxj?5N{+HvaJgUzHp;>GjoM_E5R2jxddN4OEcXp%@D9%zE{TdffhpU zKXZQ%<^EoRjk6Zw1LEVbi&cD3d`Ns)d_;Uye2m}?1a}a;k>E`PgRGZbCO#oPsopd& zQ+$@-&4gW}-Y-xS>^iSzIO%WHzwrpjYWi;^48- zl{D=JLTO++4fSM029$OOM^O)6reR4}rH+Lr`)NpYr+Zadb)932_?q~-_=dPud{cZ& zd|P}+d{=x=d|&)P{80Qz{8;=%{8ao*{9N27ej$D-ekFb_ej|P>ekXn}{viG+{v`e^ z{v!S={wDq|{vrM;{w4k`F%pun#7dmROD4%I36dyDl0~vgvSgF&l0$MzE-6cLOCBj( z>Lc})`bqtz0n$KekTh7@OUjXkNP9~|rD4)=X&-5XG*a4E+D{rKjh4npxl*2#FBM3I zQjs)P8YhjHCP)*dNz(q(WNC_YfOMcVRhlMwrDDk^l}LW6R4S9EO9AO1X@*oTRY;Xm zl~gUwl!8)73QIN8ENQkhN2-=qEekyFEvOpX_2&8S|Y`zL!_lr zqtqldOD$5Xbf}b&l2V)0E-jOmODm+6(kf}Sv_@Jht&D{q%)H6XqzzJs zv{Bk5T`FBBZI&*Vu8^*jt|Ityg0CR>N`m1t%nYs}_*#OmBlvoPZy*>t+f4-DOfV$M z(9v!q7}DfB2)>ixy9mCUU?>$r-?)$9`w4!4;0FnQh~S3_euQAiRiR%zPVf^1KS}UY z1VfJc48hPFo+J2qf?pu`MS@=&OwC-?(`KP31gfQi5whv+Z61E><`xABmVFwa+5Mc)sb}z!_5OxS* z_a^L6!VV+saKi3G*b#&sN!Wb}yB}dk5q30T#}GD`uz7^dCoF`DLc$gib}V7X5q3Ob zClGcbVJ8uGf5J{C>=eQtK-dEbJC(502l%BH zwj9=_WmR~(Kd35JBUxJRElbh*khbW9O5ir5mX-7#81T<X#I9Krc8e(!Ags3OKSCz-oW6A`qhf3EHPN(9wTS zTjgZ5D)CpBSJhHYN6M>wU~I#wf1=R)^afpB6$*n#`TRhrvP`G&D{a$1qfG#=)}c<3 zp^`s(hs#jN-xO|ekNBuMBGe+Cv@Mvzx-(!)z-&fXv+xw6Uj~HEU7EvK1PV4h1FXX9 zs|wADq-iVc4VL-!fN8OG#~hjws0PPZh1XfMQLtedm{rHp;nbL=_ENotleXyFLyJ(j zwpnE>sK-iknZt&X-2ZIJ0`A%C@3jXNqwI$(baI3fdcpn7^$ zrN0W|h~Yb#+8Cr^p8*%1#Ts)UNp5e9tyu#GgT5K5^j4(!&Y^$ z)C7aH3w6PtM}Y^W0Ygykj5#!%R2v<~Qb<8Z7@!dMXFz}|34~y*tqnygAR3p0HL3RW z{%jdX8)c<6g72#$)q#|LCsKgX1^^5bA%Ad|A55on5~vKokl?K>i9qa14d|B1v}Kx{ zFgj}5(K}4K84v6N?4Q$_C%~v)Tve_`A>E_A6gb=9i82s@a2XC%ruZ(QF#8xVR2z}m zf$(%XAXS!lgC!BLR1k)1Lm6eXjmKyMU3Pk;DiW@(PN6-Bg18NksvwM!YKYXCtDq2l z(je4fqP!$M@>{AYP@3DMM(hf22$UFsB*pIwXW$LdCTT*0Ayk<_ij*~HQJBF7?HPW5 zH4NH;S#&`0&!Iz03bvNQ4l!WCJTPd}AQlPvX~LzBfGP0#T~Hf+T{Td|580%yf(V68 zQ-RKEh6?H^P(Ooy2n6obX4*h%iFIMKrgFQkv7`&u+1_9!&40S+e<=k^QxpiFW`gPr z#W!oP)o^=36fT5Q(~Jt*4IoDV%<03UVPo zNpIqx7W_DF@M%QR|1O@G%j@e*|>QQI? zXbP9xGn|%ofvBCS1LTGoesvseJG7U!HR0+S=vM0ONjk9;wnHp~ObKWgA`MN7^tS3r z*ItNe*62*5^#-R=Vj0#pG++?Zq0gky`=rZ4{fGK9z^Y+56q#NM!>Bjx)!Upy+l)wW zqX&RgLSI!*gI0RJaz1U;H?xtNL}ZM$7g4BT8BnS>QPV{r{C3yvhHe5>*A$n-bYMHY zs7F&rrcSOoS*F+ zru!(Su9i@Bza2F_s7Vd)?P<%QFMd!%vKAHKHZBGk(Jprp=-cmZysu584p~oq3 zAC!q%1r7#Mj`kD<8ir=UDjSs5weg@ccY}ze4%=OFIQ5w5;EWcX5HKQi38pVl?8AG9 z)doLEzI^36*IQ_loZg#gaY%=L^&g-^HKl1|$Qu;8N7iW&3e`fgQlVphi^2}+oex#j zsfnuPT?+2)?fSbhIqJ;5ECx3(s~1kJSwo8^rH~%crU{E3lKeQX{Wg34+0w zYF*8Ub+vy%(H^jqXiI7#`Gzp8=K4Mz)z=i&jGaW4;!y17m9dioQayPf1XFeb0c9)bhk&a3q>)H|@%OtI{2JP1z@!ZbAGg*U*# zv<~Wwx(TfkMd#m1ru4~XkM3rbDay$^iL$0LSOul4@~W!p6mJfSXggiD99|dF4wvd_ zG0z8;=tv+GfxE7uvI!G-`k>RNtXUM*{=M^*iK^2@y`hT841XQ@=dVs5ldK~tstG&F zP8zBpO!IUzjiN|=JBq|8p6CNd*V>6Smm=KGNNLzTEmo={d3Om5D6Z`Ulpb-xpbNpg zI+ada$5JfY8O?gc0z(0W5jw%D3ebYK=1dVEl%G@GcfwBTjz-@=rItoVN^2_B1S1pS z{yU8@=r4n5JmjxEBRqg2+)ku2MA!O_YG2hDPyz}EQq@)Kw4Kr+%mE-AgS?P((h?~2 zfs)RdUL*uT%b2cNeH8Je9q~Vn!%jC=d4!Q#cjHouX4;ORpjhR1}L^2 z3OAkDx}zxHDTX?wQWw{tIHVghv!!3vr-Y1TCrq^P!&d>Af4WeZJ* zRa(esYEtD~YYjzEx}&Pra*obItG=SBO)b;BU=GDOw|AVd^$Rwi)zeF?Y2B?;>qg-x zts(=dY&Zf`OQ5sqhEC~m9;LILd~S9$L1%I~)h+Ovqzy-mzBuOJI>WkaFWF#Z=b29(u$ShQ1a~F$LpR#2*Y+1yk%bP^961M4HSQ zlLK!hgL`_lq$6E=-*mrkMkEAfb0`PX1S?}f)w-Bcn7vCByv0yAqRT)KF#vr@_dak4 zC9<7qQ>Siv5JQU`su}$i)vyp#Tvd|F3z{g}nqA_(6xOKKWX$WMq1Xp?L0DQytv6d+ zDT(cjvAuJiazBWgB~`QaKAfZoga3x-G*#$qQhqZF71m`G|E_t=__2|2RivmeLOV@& z3M(mv%3YLzhNT{Guc5drb`dun^t-ct7)AZB96e3(feNU-`#>$~28HfK4yQ!s{~P{O z?xL2bq3!_tEYx^dT2l^-53tJRo8gDfrTfuQ|Jn*EN?N}S`olF4B-0b!V=3RBkYLT5dmVqdUJ*fq{|8l?e0to@|vEfqdbqNH{$KxC4FVJlokRh1%f zDkbr+`g0dM=+adBXVaRAZs#*7{^Eb5Eq&R{mtIV@p1r$Nq9)hiquPWPiaaTmoJUFg zt7xB6NoV(h75HFE6Bkmn|H^ODI&i2aR1F=tss>i_^uFA^8(%_69rACKP9@L=bx4>x zcM!nBimoi`I@=lUH&VKbc9E_wmY#{Kg=V^^gBC@*rx=$}nzQ~bO?70ZQfX<1I>(}; z2UK4w!=<_tUqNZ?T0p6RC16;$Qv)MxCaeiprTpz`ioJZ7B&eyJQ3*SafNgIXEZ^&V zU$;9js|l@c3?1{06!Wh2k(x>sbGf(JudgFmZ=q=a)%cm}dYx$LE}#k+a8gyO+jkqs zuphK0)vNE?Z7No`ZNh@PuHt(s=IzuD(o#3ys8O)-P~GaNIy6*lV2r1eXy`n&)Jzu_ zQeN@Ej%z|ioKkHilwD^9g5esN+8KCtejnaRep6_t2TI_j11Ze9tEKpTj3Tbuq5hG{ zuQv7tDzy!~Ri&k{%b={y!C8wItBks3n0;VQZm1L*;*R)>vsR_jZ< ziIScjbW(t|WGHV!S`|oX?UjG2wUisd^ca>!@y6y`hFs<~rjZ!G63VG>4Ww;3e${1aC*=u_OD1=sv z%*bWGqRor8+dS0};tbu91$$g7Q~O`7-%sN2)&2iR>2`*(CJ|3EQ~-eF8-zSKnSXWBAvhg(+AZkj4O{YD!X_tqFB zNf~`iDnO>h(F(C)h$Ja|e^Pw@UBL&hCoNTLSe=@Y8H%!MS5RspNe|@dvoD#Y$V+ww zxvvx|5yh!AM>bK6WxIqC)(RnzrENiwMT&I#t|0Bq%3uXOm50byiglNa1wFo0ojB{p zvhOmZP)_iwdn92ILdWW&Sk>1m_0-M4OGEHNu>{;()2+wBhSHiK-G8mF>CgpOUlkxW z%;lk|1KZK;Kcj|KR9KA#p1sxj(wf|tqMfr#Xkm{6W!?{1VcA!m9{EeOVvDYq0h9{7 zr@80wvqO4Grve8Ns%OI<*i`jW9!v>T?=}JzGw5C+eUH67gks+{v!=5jgp~$eGs7tA z?FEg0HfuU+7(#v3df8YWL6KMPHm%Hpt*Gi~53f6w_k$}5WH_a$UPA}_J!ExFwQo=R z(Wb-E8TA$)IbVkRmO76Y!^vU#2A!_g@NAR|MAB0SDxm+Pv%2jf;JW~$JAvrA9 z$g||x@*KHVo-5Cj=gSM^g>pnbSdPkda=qLj$K*xwVtI)imk*Jb%8hc9+$^`qt@5FA zLQcwUa=W}tUM{bYSIVp8)$$s7t-MY?OjcwfA1)suA1NP2*ux3Dl8-%_u*VX1J%Kmm zu_qDs6vCcH*fR)w7GcjJ?0JN}fUp-4_7VjSV0I9Ag&lhtVJ|1_m4v;Tu-6jydcxjF z*qaG^D`9UZ?45+Yo3Qs1_I|=XNZ5x7`zT=_C+w4ieVVY(683q*zDU?D1YViOzDC$L z2>T{s-zMz4gngf|9}@Os!hTBF&k6elVZS2mH-!C;us;y?C&K{Dl0Z z{FMB({EYmp{G9x}`~u;!2{)K<`w%XdaD{}MM7RS8=OtW#a5D*4L%3Q3FP`F}go_a_ zPPit*9ZI-%!mT9STEY>+9Ywg~2zMgkP9fYGggb|D7ZC0e!fhhl<%GM6aMuy;Cc@oD zxVs2(ct7C-soOW?E$ZzX z>=CKkH{{o7e0aRu?HhFBLvIA37Xjs|HwNTJTU+z!tw(S+Fqv0E-*`YTD9EdZ_hrJ% z{+g0`@#-Zl&9P9tsU04*By!=-0ri_SU^sKz4Q_mHL2j~PX`c2{_q_6WT_T!TnWw&f zYP}ARTl}`IJjrMT{?JuceYjzWDa0f7bvMma>Pbd40M)r7vtU5Q?UGMTr zy(^Hu$h$`de%2T`(O^K`w75s!A8uIsFOBNSDXKP1wY_vVX`4EhalcqHuZMTZ7;b0d zHD*pVm{BwE|9GFS3CxJM_0XMb0-4h18hzSk)g(RLkW}56_#c<_AEH+k1W`54rc0Wo zNqVLsX&>rfb9R%1rG*k2i_&_ut-nV3Y=g3zSI^!}l+`!CL-5mnrV}2b5kA)-tZqTv zbMLiJb!Xd1jr92j>Ct<#J9ocIHC+#R8Z#Ff%oI^(8h4WcGJ99gZw5^3a^p2_E;hJP z_x{b>P2BYGg1I!}2WZ4M7{t9)758@|{-4TLdXH?7G{J7I^nPBVNx0FFa5|N6NjC}q zUCIF00mBW6G=-}SmBj1mM@X$k>5tPnnW1rVslkc5m+#STocw>HYnWOtrtj@mle9FS z3Tkq0HsqW|HNGbjhBT_R8r3TdstYL9Jr&Q>C?Bj*zRIAiZnJyjzin3^ygj@u5p7)( zuTS=nB>2kcA;@(1U95?DjUnbzs^C~RG5=jhs*JU1la4T40HR%KZH(J#xmdHt#&rf8 ziT@cJX-03?*to%9L*2)=n`Q%aW|GWngMV`mNwzc_`ew)g-ZW)HzWL~V#q(_ zXYhV&$iKu*sT?Xw7DD7AO+a{;Mv;?k9?;(&@hSFXY4>cRO z8@naZKwmKr^_w)oFV+OV#}HiIy%p^y_`eIUl)E~()HzT8Fg@Db057gi&x^uIGxt%YoYhS!{|B+YJ(X4;jrcv3@Nuz zCI82z{D(xqpGaf|#aA^cpE0D|N~LV*X3KvU6!lpeoxH(|o#D7oj}y1IH7=erxKKCY z?7||4=sz{2v6Nf76>%uZBn;d%xF&eAy6E z-9@vf2EMdl^_xcdRfFrt{AXX4Et7=l>UmqV#;YrS6dWJo-<%CZ}o4Z!?%Lp_<%7 zi#}=nrc5LJrNY2b?G$Xw_r`({TT2m^wmDy}RZ=X)j+K1Bc-k#aHCE)~6Y~P9y*GE{ayr zlf64@z`q)zsWssLc-Z@gS%hCXAh! zKhf~j9u2xmbC$miN!L+defhr-Q;iK!J#1JC#hPi69HwkNZ*u7T-UlVGNJX?h(UMFz zFj2+k(9Y|0{Me$j*wUj;kJga0hECU0o&GPA=`{B_QR9X;xKWQ7|4(KZX@mC}8XIPV zjdQ3{cKc?rG|A7`NQwr@iz&%Hw%s93+76Ahh5A?7&J0}>dh@Ts0%O$OtYMc8!LFi$ z{m19z{}6?tE}gz^Z@*R((ryT;o^h?{7McEC>8B|gZ%(T~+i%gxISq1mP@OK^J><0Y zytI*9eUKiJ?$+pM8T9X`^!M;KzqH=+kj8+=U_d?R`Tuu8(VIv_SE_1eB*wyI+n=;Q z2QR9#KV^T~{*3)u!u26sU&8exT>nk>=j|^r!|X2+ZUEs1D)R_82<|_wPQ;sFLx;Y9 zJ{)g?Q7762FZdnS<*QloWSqYGbV)Q3t#6AZf^d0GY{B$+LkzCc2_%#7l4iKZwM!%Y z&2*Wq;ALzt3@Q7tY`~n=@EZC_`D54Ct{yva(&(I`wAa?#-?G0?WqI5Fj{RLb>}uYN za5;n1xxp>nnidTm|dDJelx=5-8n zz`N@=q0wjz%0+ofjWSD_t<2fv*v~QQ|26j>P)#je<9E=+ijYbbq*s9?Bow75gkGd~ zBmwC~iVabYy$kjhLJ<_Zq9TZh*idR9bWnPcs-Oa*_df^jz2d$2yx&^i`+Wb;!+%@j5$H&u3s^7W03jV=U7X+=m%_6&`DU1!I@+MZ$uLuQPD9;{-VTue z_R0kG4uDI9kS-9?6~?*2IE~FEO*J0zn!2RbQraZggQz6%b*{blp%2dsJc2$7fX5-E z2ZZ#5fnGCio+Ce9JtLovE*Zv=fqZjur_mRFtMWzkC4fwUke~*AVdQ!kDND#^n|j7; z>A=2CAyX5;cU>xQd6Kry9K|oAvwsV|hQ1EKHz6bwLb716KMa;=S?$T0wWStpOHEC{ zB+WtQpdbAfnTO5?$N~tt0YV1C$e0I@T(cm@QzwzD@^c#RI zg^(c-G89IJ0c7QkXIIx<^@`UdX=(%UbhWiWv!H0{f;K{#3+AHh0QleaUXN}7&?X2O z0U;w{XcR0bc@d+ge@0FUkq835CPfn%bS|$A-ThnLd(gdr*$*M3A!H29jGfW_u^D4% zhDp|)(VYlF-P{@)L683y`5FBMASWQ?CJ4D1Ms9(TQujCfc=TNA>=j)84p9Z18B{Uj?2Dbv$~UY;A+?X6^U7a!2;yG{Wb=N z!2=}duXaGloiH*HAgg!R3qbiZNNwPs?m%GRN))Z1u7p{Mk^U`H1|tiY@(^+tgxn1? z_rT26fybZQd&HCB6p5ls0#vFd5R^onLsi8P0rg*%jv-;lfC&22eGqa#OgsQvQ%&k~ z!eY>PDB6HSovC*%Ez+-@5M~Vqyxe*oq!Gp#AVJ@82tpo)kw;*p!ucsW%OhT!1QTb1 z90|N?`xj5bSYT}DCE8)^L6w8F;TVKG4in+Dfv4{ER8Gn}o=PE6;BJ64H(p{~Fmg(^gggP`P68a4Up0mo3R;h@4(LWmT2w9AjwC9u=^SUrY`}mQPtTuq zV!|-tfEx)RPeaHvF!wCrR#&f6iS+Y~r;y>Gp`%HJ8zq$jG$(7%sh>E^Hdx;Ik{nDt zW;@^lH#!d?FTmW3u=)}&qY`6gos+7a;2N*_Yww5IgEJUjV zQs>t`1Cx%q0+9dq%d41dfV&PMGa+OajJpEstp4a2&c`#Js;vW>xi&=;*pjNN1#C%~ zYs!4Res0|rBw9te3KLOy_@58;|=e>Z%R;}uWR0TBb(QU~@+k}l~V zITU6P^YORRe!`3aFjztQ2tww;;QSd2yuE4?JL{J-fdiBP+7o4tuYbcLepf$OKI{U7 z92P9`1^wj{m{|x5tGsH@TXi5Ti2}Dx;FrJ%WHKB&=eQ?!8CDQ*|K&?qG!_GxI0#t; zA)mp_VpvYqFK6Vgd&ZN9aHyo{z$wT~aGFaL#Y)23&(~#OS7D`QJ?RC6dv?tHi8LNn0{X08i)v)Tbq}LF#+SWOTw!BFe((FB%?UGrPiTC5&W z)c``ig^;B%s%*AOdcPj|Qz&>mK_&uMnyV)rYw=q>EwNSrX#*iEAY>(stb&mO%)xUI z$iacf!1e=4_>BK({Ucst9kFhJJZ}`jx??>6*$YBeL&zGK%!BLN_k7i(_8DPyW}ID% zI@4p!F#r=A2s7uK#lQw(g8?%XLe@dZdYIV&nB3LAzG{iHJ_(u)FaYV-V2Ry`-Sk_V zZpLl_NRSwS)TkLow#?Wx>j>sE$cL$bMA3n*N`(hkbFG?)-TPbUKJ0z~JqRJ+LCE(o zv<-%?dX#TPnUPZyG)N$)_OIa*dmMY}x5(4jGqY~g0UX6t_L^a+-Y zP5&(^1ABRv)D0nf{w7Jh+Me_0(0^{ig1wHt14#2%@m=gape6`BeGsxACVhabI8if- ztT`i-7D$5N-1i^;n2#+=WM*O?gUCw&!+wxN4bF`F!Jr?cDq5M?XV_xEeSv)mA%`I3 zFiakSkfZMKD{>f-Vg50HZhe7$1Evu%d!QI~G9c1x0}mim5@de;H3s}j`gtf}^)J`LCH=oBQ#qx8a}d`qOPFaoEe)!B zW?SP-4y;M~N1}nP#PVS0oHy>)V(UQFH$ccw5ONHz_;HxIXJK>l|h(S_{>)Lsbr1wwv>sS_|&{X5}CO<#t5f4xBkTgLq>=v*4kHHFd8pk)EoVW$J zg$Owu3PS#XkbeLm3IWThv2kap9?(}4PKBs5gY$n(8R3@W(6CA8n+(BWaM+plj#>br z7Q#}(k%LR%^@S{(sU}^mIa3ihQQS%3PVKIJi%opR^VS`a~SqtYSHY;)hMP0jKRpiRx6H@LS;maX~=15C|m%p@d=KL}20gtxas* z!5|SHy=xQUY=^7^yk$CrthxYn+{FXB$ ziZ+})fLQr!W#r)sVdQ*C4(=(g2q23g)M^N&1|!u0lDpb#=SrDbE zk$%rV8Zl;&Aa?|c&kPUddSMT403iQe&4ak1*&5M-P`Us&o8Bl)o0Ogbai63K=d{3M z=FD*7#&MGXHGj;T!hHkMfsJq0LMT00I(^uNgi|%r5NIXv085(!yEIi3R18Q&|89Hu zh4`5p9P_y}ekp$0tdNEf%IGg4tGm~?U+$Dig03I5UwGg)S1>8OJgn|~a|n0^ydppf@kni<}gyC&X@UT zPfUdqF$(F|Ar)Q&PXWkzn=hV<*8)gT8H?fH4|qb|mub4KH2t zucJOATrextIx;fU9=y2BHZGhQ5DlT6A(RV*a!LeSl>HYp zf-AuLo3lgp%uZ-{Z@dq96Z~9J{;5m`-WR_f-U#hKp7lTMgNA3}LlT);cz=8Vegi%b zAA}EvP;L;)144O0C?5#59zubiL-AqwaC`(l5+4Pj{2^2*go=Pr;QK}h75%gRV`lEe zquk+#N63FYJQ5Ze2%gk5)z#A0AsLg^h%}0^8ihors)1=GvYM_YU6ZC`s;gs6)AJk}Lq6zsYC}9@lJr9U(Ow-lX zr5URcbxnvsBASkxt}#tpjYc8qFu>FgLsM7lCur9!$ag*vgA7Iz42Bw*%mfnANxEt# zWV)srjZ86S&?pR|Hbe6#X#Xt8ZypeXOx4lSHKnUjwJBP#L?kt^rMWiz56uMhHCi+h z^(W}aEQmD^h(;pPXmns*QyrS78ptZO)J#a)G&M~!)tCk{VpA$z8-Ql-VB?eVC*c-! z0zw6(;ZH%R4gXJC&^fpTorh3?wTL_Ti}*`$D?;qxTZ`x5Q}N(&0d&BYD6me`DcUb0 zh7}zg73&@x;UBOCUJRCq0C`~$gaT=fJCFjOfxnE;L>$6r`Jyr4t$=@>W*ra_7#jpg zbB?+Ag~bIxs9-dHwv}APXM4{1IURouv3Bl(*|TooZ_YMru$R`qThT52ZMYS|&3>NW z|EKnI4}brs@g6{^u)jjgBiKNB5Gs5=18tdO1J9o|QH%$3mTCCs5Gpcl!Ggp~|EVH= zUiAiF`pZ>6f2qWC{}vAB{rsgCU;mq5n(^-vnd$fzd@F>Cg-~(n`1g2_2yB8-n?d~m zBh7A9@>fXpMHBu$W*p553XTPf;p3tMe9|~8$MK)RE{Uj}5b8X{C+>?T0+cb>RAm#`%+(jIZ&<EZ;F83Or8)){6V0mH+eEvt`V*ZCNA4?4NZ~ z&NCZe|5O1-0MC;ATLlqyIEsked%9Pf#F$Z4!?_ zsG|_-n5^OGEQW=Ul3#$30){525>^w`Tx}iI{lS8C2zA^Jv%rf9+&CtdNaXP?ScpU| zTC3+K2X;w-U#0CP2i8%5rV!&U=La_naM(#MHZlr};MEw3zrxIeAqQMcY{} zA}%bfX6dr!{3`^!Y#ohb!Gca^9N0s{MUE8)Ry(-;wZ=1XVIqIx0(Zwa7AqjYKfu3c z83v2P3&TQ%25gP-0H1%Bnz%fjAe4wqM5T*}CN4@`>SF820NXQyGii}wk_}J!U0@C!ySCzXGXe%Su;L0le8q)N7WlR#Vp?0_A3kcZ~951prxG;c$_-4872V zhyXaU=3nxqlU2a~saoKIpIZ~9Q{jU;y1r=a93%P9dQbWqm3fc*q6KXotpc_N_|HTq zPz_vt1E=W7$k;?a#1aGsA%>7es3FJ*ZGd5q*ehK0ZEvJ_6rLzEylmd>VXud~`kr zpE;iupFN)&pC{jXzHq)MzBs-^d`J1x`R?=O@)gV)cLCq*C&KX0&p$u-3TOH*f(C); zZR=n9u&e_kjQ}+u0_x$EF$O<*37i?WC#U1_T3Qb zB!oJZMbKMXK`e$#9M%`D z_@7DeNsh5w!~W+p;pY}-&XhG;GHaV^f;ni876eP!?_|FO`)!r-i{96+)#$sLK#4D~sSm@FlD#_z{={7KFMAp>9H`yAbL=gn9&_9s}6y zn24}pHcey0Y1)5%)#1+vxe1}O<#OP1|9`#-;_nyt{W^y~=c!{t)U0}GuzLTcrD$`E zIlGbtl>wLbe`PHVVRpF-DifCAe|_n}98Gu5+7)bp_TSm}3@&OW{o*I=A?#1|PABXo z?1NC*5b9bw;Q#^j;nyM54d>0l{;@$WK>@*mL9wz%M;^_zd|9JiMKfQ1GLi@ggt^ihP{Bjg1w78ZV1qjaSE$@S1o%Fk>2uKaEepzrer2kKm{AKL~taq`e3X ztBC}Cf+4|#Kqr`iOw|_TklqA;!UjSRA%w7z5JQL~Y$jw79usN^ErfT3c0wm%l<-N2 zPiUbKN@%grQlaHSD})4vB!#4eWQ62|6oiz7RD@Ow=?XastrviWS9+N{Fr!l@^s1l^0bPC5nazFd5TI941l zE+j54E+M{3Tv?nfZYXXn&JZ^jw-mP%UnlM;9v~he9xt9Co+!Rce6RR^@g(sR;%CLr zi(eGKDt=A;w)kD~9Pvlu`QioQPsCq|*NE4OH;K21zZ35i?-uVB9~J*D{>MszmFSh& zmH3rHD@9g{tz5ZMb*0)$jg_R8nk%(d>aNsV>9um_%9AT|RyM5sDj_DJD4{H&Be6z8 zPr^XLNWw&dF2Rs+mT;ADm++MEmhhGElVC|4lDHvJE%8MXC#fxIDQP9?Bg zDan$Il8lx-EO}J&xMZ^ANy*caXC==|UX)}@awO9vGb9Tn3nhyrizQ!3zLG4Fd@ETd zSs_^^SuM$1wQ!a2D%z^RRr^+Dt$Mnud({sqB`G_p4N{R(Tcoy0ZI{|BwO{IhRI=1f zsryn@Qr%J`Qq$5)rI$;ukQS5{krtDdl2((}kk*l2BdsTGAZ;XVA#EjXBW)+WPTF5O zOgct-m-I>LOzAt)1=5AmMbgF6rPAHfgEEU`L}k=v^kmFsoMl{P++{pvyk&f4Hppz1 z*(Y;MCQ0Um%xRevnJk&>G6gcvW!}ov$kfWz%e2XK%8bfP$|7V@vI4T=vJ$civLsn> zS5nqe)>_tCHdr=Fc8~0F*?Y22WuM9NWb0%bWSeALWZ%iQ$#%$g$@a)j%6^mmF8hZZ zpWH$@l-y#urE>goigH?VmU2FF;c|QB&dWWJdn?y2_d#w@Zb*d6K-Qyq>&)ypg<#JYC*K-cEjF5fQy zMPY@4i~?0bTR~T0t%AOSp~4vjjzXS7kwTNgsKTVeH-#UH2*nkOf{G%FVu~vjB^9L< zl@(PL)f6=pNs4O}^%M;ijTJX21}lathAT!YZd5E+tW#`IY*d_5TBW3_WUOSXWUu6| zh#9r*gM)ukxt!C*^VFFUk`td@2i7mZ&UK;a4H4 zXsS?Ev{iIf)~aw+UZ}iMDN%W=Ql?5&)m2@qs;6qHdO-EG>RHuP)pXU%s#&U6Rqv|i zs6J55Rn1c^R(+xRMzvJ6T=kRcxat?xiPc`K16BvF4qE+1O+w98ZM_;(jinZ*7NHiY zwnc55TD;l;wL@wr)y}A$SG%OfQM;;kUG1jY9km>_muf?5)9N^NDRmijd37aqRdscB zBXt{fJ9T^Yb?QOtaq64Zx2Y$nC#vsOPf|ajep3CEdYXEM`Ze{N>UY$0)brH~)C<*% z)SK16X<#*0X-I1jH8eG}G;}reGz>LNG)y&|G+Z^@HM}%@HT*PK8XGhYYou#D)95DR ziK;{$;u@kp(TGSRGKh{uXQCU?ljuYABZd>V5w{a}5_b{z5)Tkh5z~kn#4KVq@doiW z@d>ezSV}A>RuOB6b;L$u53!FpKpZB1B#x8#NDE0zNXtnABpgYIBuY{sDUno3>fpJ0 z3dtDU_@R?bNe(0@k}JubM^b)hCwk5Z3Q zuTgJO?@)8752<<70_sz0G4&<2gj!0ipmM2$)Dh|@>SyW%^&9nv7M~VUYq8cctrc2m zEu5B=mW-CXmZBC>i>!4@D@`jyD@*ID)?KX}Z4qsGZAEPr?bX^;ZEfwV+7GmIwez(L zv|nn!*3s6X>o9aIbgXoobX;^wbsBV-6b-(Dl^~(~Z#Gs2iiZU3Z7>JKX`@ zA>C2kPrBc9zpwFMvvEz#noVoAtbx|-UemYc^O~<~rq)caMXg=DcKh0cYY(qIwl-<) z`L!4Img|Y=iRnq`tb{Q~_r`lb5S`nCEE`pxUgG7Vf2Kx*S8XPe=YjDAUZIEh^VUT5T*Wigkm%$H1c|&!>wT9+~ zmWEb_)`rf8u7)0l-iE%0VTKWgk%m!*35Gij4;UUcJZ6||c*>A%$T3Ve%rv}e_`opN zu)y%CVX@(B!?%XzhE0YohOLJ03br>lqswGmOCtt&Q!BgN+l7FBxYWUpKyCeA77J zxWM>{aiQ^RW1exHal3Jsaj)?Q<00cw<8Q`4O!!QYCW}p$nGj5*P0UT0CI?MUn53HA zG`VeZ$K3sBsbbh)Z9ZM(BMd;FW zIl3ZUg|0@|qU+Gt(hcawbX&ST-IeY^_olC>2hv06;q)ka0(~bvkq*(1(Ua)O^b_=p z^sDr1^au1u^vCo<`ZM|qdL_M@UQ2JFH`CwId+Fn*e5MOck)|k90aLUo&Q!=$)>Ph9 z!Bo+dVyb0oXli0=YHDt31zuQPU*TlcpC; z*`}$c8K!qk@0sS9-Zy<_`rPz|=}XfJ(`M6F(>~Jy(_zz(rsJkx84DOF#uCPIh5!S@ z5MwAYs0?j}4nvn=!k{zE7?uoIhC9Q9;mHVMgfLtC^RXuNl)U&@99(+$_p$tJ!X|BWB0UlFd$;rI}@zT{g=! zyJvRa?1@>C*>kg3W^c@@&1%gW%$m*Knf03Wn+=+cn0+++VU93InJ+P4ZjLs`nG2cA zn#-Fjm@Ar7%(cw5&2`L8&CSdm%$?2M%stJ0%>B&6%p=XC&Ew3sn8%y%F;6mQn{&+5 z%`?rfnqN16X#UjvnfVLz*XBI)I`ew-2J>$7Uh`4&G4n6xljhSFD2pW)%Pj;fFcxAK zD=k)8$XIAtkSug8)>;@?7+aWISb;aZue0#6Sa0EH!L*39*k}=L5o594;-JN0i!&DI zEiPGbEYdA9E$&$4SUj}Ivna55YEfcQYtdoRWzlWXV=-d!(PG@z5`C6)wB zVM{4XSxW^=Wy{r;R7)MpwU!2!#+KfeJ1tLI-mrXNnQNJE`NXowvfQ%Ll4n_O*<|_N zvct05@((K^D_JXfD+Mb>D~gqtm9~|Rm8q4Pm4lVDm7A5Pm5-I5RhU(zRkT%{)fTIG zt9@1{tn#dCtfs6NT4Sswt);A`t!1oLt<|iF)|%Ev)+W|8Yr6G1Ye#D@YhP=ob%1q{ z^+xMh>&@2NtP`yFSs$=IY<@v!l> z3ATy0iM82mv(09|%|V+(HivD_*<7&6u*tH?wz*+*+vbtYW1B*oXErZv%55rbs%>g* z8f?04dToYnKH7}ie6{&u%V&$UU2H3BOSC21YT8n4jcsYRbX!wfTU$?CZ`&Z-P}>OG zjkdA2n{9X5?zKH&d)W4vZL;kJ+br80+XuD}ZF6mlY>RDQ+LqYX+Sc1P*f!es*!J0e zv>mtoYCC27-ENWH61(Mg0(KZXNjoV!MLQKcH9Ml6w%r;#eLEvN8$0mMPrG$?K6dNv z{Op)^p>|vBw%P5qJ79O%?wDP&-6=bcUAkSS-Br8mcDL+u?Oxf{*wxzA+11;%*>%`; z+x6Lfw)<)~VK-^N$bO0aa(e-Lj6L37+FsUP!CuLpWUpy|%l@(b6Z;B#u07Ab-oDAc z)xOQX)4s?4tNoPywEZ9J7OX?9Te5E1x)tk;)&;IhUUzd{w}Y^QnM1t80f$2lhaHYM zoOihBkm``(kmYdQ;ikiFhi4A84(}Y=96B9(9KJd(a$M@j?QIuo3&op(DYIiGO8 z=$zu5=6u=tit`=k9OsA5dCmpS6E4~=0WMcv9=PPX6u3NfDRz17^46u?<-4n@tDdW= ztG%m(tFNn{YnW@KYqV>e>lW8|*L|)BU5~gPcRk^H+Vz_2OV{_V{jOhJ|8V1TTjaLX zjo(e$O~q}s8_A90rtP-IjpkOxIJ=v z>{jUZ#*OFJ?$+tn=QiLr>^A21#ck4kfjiP2^|;`{_PFM8!z0%t-{Xl# zk;ik7R~}pso=3e$lSivZo5yEQw5N)vrYF@?$8)VG-IL*I;c4yZ?CI+1;py!Oc^>jS z;+gDu%JZz}4bME!V$TI9D?OV$yFEX7j(dLg{NlCH3+1)MYq^(z7sgA{OUg^u zOWsS}i|Dn-E7|L$*Cj8GSGrfG*Hy2(UiZCnz4E=Dc=dS;do#Q@dGGe#>wUockoQsV zB=7Uy7rj%xGrY6BbG#pT=X)1;7kWSUe(7D}&Gmlg-R9lx-Rs@&J?uT|J?1^_BjO|N zBkQB!qwKTBhwfwMW9eh#WAEecv%x3GC(${igiBGZD;% z%tg$lOn#;y6U!tpMVR7DNv1SYj;Y90VX85SOiiX1QF z%Jg7*GuJa&%neMia|<()8O@AiZehkVcQ7I59_D`LA?8tL67wYU4D&qm5|hJBXJ#_5 zGOsglG4C?(Gjo~w%qPqu=5yvN<{M@ivyxfOtYtPZo0;#J?aVG_FY^O)h&jp}V}4;y zGN+k;uokdTtR<}FECCjVg=Yz~#8?t6DV8itfu+n^&C+0zSyYw|Yc0!wWz3?p%vhEz z8$d2XL+%FSxi;{D~J`!iePPI#j-ZDwy_deiLBkMeXN75Bdp`B6Rgv$bF7Q3 z6jmDRGV2QK8tW$O4l9TCkd?#v{E_~P{g?T#@JIXO{Du5Q{a5<0@|W?K_gC^)^;h>N`BVJ0{f+!h z{QdpI{UiPN`zQII@W0{zz(3c&)xXETFJMuCU;rjSEkG+kC%`GdJHR(!e?U^eiGZAd zf`Gz+mVoYn-VN9d;u|D3m~F7%;IQHJhLjDd8_G7+Zm19B4 z777*#rUn}X8wL9XhXjWO?+!i^d@T4{a8B@p;MU-t;Jy%K$chlb5Umiy5aST9kbscD zkfR}ILe7Oe40#&zEMy>LJmgC#K2#!fRj5IzS*S&5U}#imbm+;@OQ9*DuR<$BxuIjB z)1g1YB*PTLl*1guyuy6KV#5-`c81*w%MHs5YYyuQ>j_^HjtR$wuMVe%Ylp874-O9v z-yMD={8)Hq_^t3e;cvrh!fV67M=Xk15+NO-60thMCc-7cEn<7b-iZAXS0nC5MiMMX!QiQ+`1MLmmp8&ww7AN46}e53qE^^L@hE*pI}`fWV1@#04I#^)Q$Hdbu> zxN&OZbhLc5dNeWGBbpT*5Sm`5@BG4EsgVm`#8V?|@dWA$ShvF5S+W0PV}#ByVsVq4-C#R5)7&p90Xw#}q(wpd;Y&O|#iry5zDPdE}rYoDWH9*zDEVnssbKZ7#Tk5v-ZLQmSw)MrYj;F?J$M1|k5PvAXB%T{z zvmLj6<#x&Kp4) z$9JFGePMUw?vCAEd(`)6@6p|pwCDVui+eur`LP$V*Ltt>Ue~?1_deR2zYno*>AvOr z*6$167rL)_U+KQ`{gV3?_bcz;x_{UHJ^SD7@7>>j!2H0v1C9qSAGmqo_Q3@Qmmgel zF#O=AgIf+(9c(<!{Dsn@1lWeROQ`G4wI)F`r|B$AXXL9VIl30>#l6+E3()OesNmWUWNzKW!$*YsqllLYcOHN82NuEfaI^lkT zdBXq1;}b7VygI3JQu8GB!##r zpLRWc^z@n2=T6t3Zadv^26IO2%*r#iXI#&?pGi4$w4DxZ0gzU zv)9jlKKtVw;+)kvr*kgnQqEmDmwj&h-1l>ToVPpgcHZNB*7@7#?_S`)K)4`$A^gIo z3tKLfUf^A*yQpwc<09$e?u$n*9=rJdV&BCN7l$s6UYxx6?UK-?RhJAeF)nSmwEfb- zONTEVxpef>g-e&%RJIO#E!%)?%%-!=*p_S?wmsXC?ZS3vd$E1lOm+Y}kR8GfXGgJP z*qhi}+1uGW*}K?#*$3E%*~i$)>{INs>;d*L`y+dt{gpk%{+@zJS(vgYWoZh3ieL&h zg^+S9M+fP>-SIl>$bLbp1 zjwQ#2W6yEqxNzJ#UL0QzlM}!R;)HS{I2$>!oXwnVoCHoHXE$db=OE_@=Q!sQCxw&7 z$>7}J+)CY=x-a!W>fzL*sb^Bpr4FV}rhZHPk%mZHnzlSGC@n5+bK17F?P+_{_NTp1 z8%!Hc`0{}iGgui>8POSW8JjZ_ zGj?6Jx$JS->$2}6wg7i%hFbr%ad3yP1WVMVZetUuIThR%NMVX=mwX z>17#YnPpjIWoF&Wx}TMsm6uhV_2LTois2RGEA%UjD|T1bT`9U!ex>qC^%dTg)+_I? z>R+|IYJJrXY)IpA)hl~d_Udf)Y*MynwqCYDc6Ro|>_^#;v!7(Y$}YKa~n( znb&SzyK{Z!R1iughImxDH)Ec0K9($?K=Dr(93H5p*N&#^xK_Zfw7?_s0Gk zBR8gR{J6iqZl?fG5#J^3T~A0PWZ4tpH&c;n-k$J-z8c-->1|M9@%;m4zo zCm(++@Gsa{5L2+JU`qj1u)CnQV7%ZYJ{Z9@)Iq~FFp;uvW zVQ67QVN~JP!uZ1e!Y_prh2ILlKV9^6$GP*Ai&hn_E>bTd6=@c2 zFFIIsxae3>Qc+`3Pf=gdK+(`M>NAsP^k-(zES@DlOL><1EaO?`vs=&Z6r+nJidPlO z6w4Kd6>lw$FWym{SbVVf@N>uK>z^~92Rsja9`!u>dE4`$=OfQQJs*Fe|HATx^$WWf z>t1-g@OnvkY5bD*lJU~~W%A3Em#Hr^US__$_43ZERj*dRQh!ByrTI$lmBFj5S2?d9 zyn6I1|JCzXFJFtkR(P%STJ^QsYpvHhuTQ;Bd!6w*>-E*wpI-k_!dHSUSyUoef+?vl z=_=_d=`R^5887+rhVjPnjq@9~Hy&?TZvx)DdQUV*4sSh1)=umW2_s1U9YtDshRRfJTWsJK{hx#Dg`PDMdQVMS3zam9;@@`|d8 znu^+rhKlxz!HUn73o4P7D=N{IxJsc)(Mp+0`AVfql}fcrtxBUxi%OSDw@SZC|H{D1 zkjn7NO_f_Kw^#0{geospKCk3fPF5|bLRX1bDOIUdX;x`f=~n4g8CIEBSykCq*;hGM zMO2-x%BU)>;#IX)^;V5neX06`yMT-0F5xcc;<>_HG44w4Dy|Zj#9hNR<63YXxK3Ob zt{c~b%i?a}26IEX5!}t(UEIUmbKDEu3~na(3OAd3oqL~~%gyH&aG!EZxLj@%x0l<` z{lxvuo#1}s{-|DDy{vjgwO}>2TD)4ZTC>`y+N9d5+O~RKwNtfg_4;a7^@i%8>d@-g z>V)cj)hDY@SEp2`RbQ^YQhlvDr}|-aUiIVZ!s^%6Rn?8vJ=J~HAFIc!zgACGf3I0o zv$Tf4MxX{$BUYnWL#{EbF|M(!v97VLv9EEc@vQNw@vC9gY^aH>*;2Es=6FqV&4n6v zO=?X>O;*kAntL@5YI1AxYo6DX)zsE>)O6Jh)r{7R)qJU$?O^Ta+KJk4wcqOybxZ4n>*VSb>NM)eb<{eYy0vxmIJ9Pzhuj_bqb#?FSI_kRX`sxPi#_PV;P1Q}; z{ZYT99#bz`uTZa4PpYTXYuB%-*RN;PThv?E+t#nE_o!#pht+SbkFVcTzrX%a{n7fQ z`t$Xd>N)jk^_S~!)<3L&T3=RQQD0x*Sl?XVTK~SjuYRC@xPG*LtbV#-NdvAyszIhf zwL!gs)Ie#_ZZK+~H82{?8>||f8oV1q8p0al8n!gVH|%JD8V)raZAfZ3(QvvUrQvGB z-G;)3qJ}pOWet@L)eW@`?;6@0x*B>K`WrqqOgAoS#5EEcB^#w1jeU&+jpI#xP0O1^n#7u9o8+4mo0OYWn3I;nhcxFo1B`wn?jnx zn&O(aG{raVXo8v!H63kAYC6$$x+$gUO4I$OhfPnLikn_Gl{A$$@tW$Jnwnag-Z%9% zeQNrnnXh?S^NMD4Gp<>vc~!GavwX8+vr4mOvtF}lvqQ5}vv>3QW>)it=HTY&=D6l9 z&D)w2n)fxIYUVWGXuj2)+nnG0q`9d1d2?BFWpi~iuerXtt+~H>tOe1spk;ZBKntb? z-y+;1)gs%X(4y3$+Cpj3Z(+1Jwm7%=wD`67w*!Q}Bt^BQmt=LxaR>@ZBR@qjC zR*hDjR?}9qR{K`RR+m=yRNb9H8&#e=!-&%jXTl$Xwo!~pnJN!H0chc`v-mQM0_rCaj z>HFIE9q+r|54|6KKlc91`^mNiZK$>-ZOhtLv%UJ-U5o zJJf!t{b+kq`^ok*?VR@X_RRJx?bq6K+6&s>w3oK?+Uwh!+FRS(+WXrF+eg|zwvV@e z?^x7<>mYPUc1U-~btrbIbZB;Hb?A1i?J(#t>#*-|@7T~0)UmN6wqtY0wvL33eH{lo zj&vOBNbb1Mk0H=}>J;e2bmBXO zJHI~6*WJ5@W?JGDDaI;}e0Iz2jBof|rXJHt97JGXSkckbv+?A+aXr1Nwqr}IYV zto^vhK3&a_w^O^6c{N^6d)h3hj#Mit38#+TOLd>qOV7E_PRHS4LM>S9aIEt_NL@ zy7If8biL}T>}u%h?&|Ft?HcR)(lyyN-HqyA(!IQUMK`)zv|FZIwOglqO*gHZ(QVOf z-EG(H*6rEt)4jf%)g9Iy*S(|raQD&fGu`LAFLiUe)4Q*C-|D{GozwlW`)PMcH@Ev; zcUyOV_dxeh_el50?y2tYJ&2wKJ*Xamo|QeyJ*qvF9_^krJ^DRHJr+IIJ$60odYpQ^ zdxCnRdv^9fJ%@UZ_9XS3>^alJ=}GU&?77l&ttY3apyy3bX%DZbuBV}=si&od-M7APd*9x^{e6e}j`pSW<@V+GJ?SgzEAAKWm+DvUH}ALWkLcgipWJ`4Kea!j zKdV2x|3?4q{(JpT`-}Tu_LuaR_E+?C```7q^>_Ane-Qhi_(A!@>JRE4SRbN3M1P3; zu=&G{4|yLRe<=J=^x^Zsf&t{f;(?_D1_M?DHUstp4g>oKP7RzHI6rV{fHROjP&n{< z;LSkUK;=N!z}G>(!G(j!!Nr5i23HJ<4XO_s57Gx2gLZ?SgX;&w2IB^g4W1snHTYtX zJ6JPVH`qAXGWdS5Z}7w5(BSA0YH0D$lA+~80z;S~$swsB*&&4?vMV)*p%x#5e$*~1Tpi-%tfmkw79bBB4u&BO18+lRYGgh$9DRwGU$E+f7p z%#nbRppnp#EhF1TppiWz`$rCqB#)dLIXiM;Na&#g82rJ3Mx5EP3qI*x9iQV^7Dr#s$W8#*N1<#~sE! z$9={F$0NpL#`ldM7*8HQIeupR+<4~rmGS%Ix#RicPsWSJpO3#9uNki!ZyawKe?Q(a z-aYFyyCGShYm%^{Bzv_Nn`_mL*R69N;s384wm3CRiR3AqWC3DU%x3EG7Hgu{gEgvW&U1al%_ zB4{FFV)I1e#L?vYNB+aVuCwSH_j1$fl1t?(4^?3%%tk1&g7a&!%34#(@D!on@Rgg_etht=w$fhuF1WV2PO|s z9-B;_JT-ZC^1>v0GIjFi3J* og=zLQXZq^&weQQnOMI94KD&Mav0%Z>ItGLga`yADf4{5zAC|m?-2eap diff --git a/YakimbiTest/YakimbiTest/ViewControllers/MainViewController.m b/YakimbiTest/YakimbiTest/ViewControllers/MainViewController.m index 3789ae5..5eb838f 100644 --- a/YakimbiTest/YakimbiTest/ViewControllers/MainViewController.m +++ b/YakimbiTest/YakimbiTest/ViewControllers/MainViewController.m @@ -244,6 +244,7 @@ - (void)popoverControllerDidDismissPopover:(UIPopoverController *)popoverControl - (void)dealloc { + [_fetchOperation setDelegate:nil]; [_fetchOperation cancel]; SAFE_RELEASE(_fetchOperation); SAFE_RELEASE(_user); From a0cedbf93d70a4d5b2e2c5e2c0012445a8cc6ed0 Mon Sep 17 00:00:00 2001 From: Syed Arsalan Pervez Date: Wed, 20 Feb 2013 03:59:26 +0500 Subject: [PATCH 3/4] Fix to not show hidden files/folders. --- .../UserInterfaceState.xcuserstate | Bin 76537 -> 76874 bytes .../ViewControllers/ListViewController.m | 13 +++++++++---- .../UserInterfaceState.xcuserstate | Bin 122311 -> 122624 bytes .../ViewControllers/ListViewController.m | 13 +++++++++---- 4 files changed, 18 insertions(+), 8 deletions(-) diff --git a/YakimbiTest/YakimbiTest.xcodeproj/project.xcworkspace/xcuserdata/SAPMBP.xcuserdatad/UserInterfaceState.xcuserstate b/YakimbiTest/YakimbiTest.xcodeproj/project.xcworkspace/xcuserdata/SAPMBP.xcuserdatad/UserInterfaceState.xcuserstate index ab36358edea463dcc5f953a62fc7914bf384b42a..b263a143ee88ac68f0af8cd1e20b394ffe663668 100644 GIT binary patch literal 76874 zcmdRX2Vm32_pt6xvL)Gy?IaGXK-ka{LK0@7Es5iROBQwlgyovVKp=@zI|0IIb=`ZH z?y^gF>E63^@6t*4-h0pQon%>dR-uL8zh5cDk>9<2@7}#T-7RcxsE@Ub9=(%89Oeke za{_0{>YtT8d+_pbG*%yJnmstOaA~-s-P+oRt%~ z3@(#%b0fI@xdXV7Tn;yi%jHIMd0aj>j+@N+xd2ziRdX}BS=?-{hMU99<>qnoxdmJu z7v`37Q7*={aIM^Ou8pJIQQWcI3EYL;Mcl>QCETUldTs-^k-L$*iMyG*g}arzjk}$@ zgS(r%hr5@1fP0gBi+h`UhkKWMk9(i{fcud9i2IoPg!`2HlKYnXk^7DN9U;UcCvu^5 zlz}qQeyA_XM#E7K8i&TC3Fsg+1$od^KYC;hdMa$7@ zbUZo%orq3CC!^ERCFoML8Er#1qFd43=pJ-GdH_9$9zr|NbLb`X26_{{hu%k@pdZk$ zn8OHLuocVLhV8f~?u!TDfp`cWiihFh_y9Z#=i!6!!T1n71sCF}cp5InWjKIm;SgSk zYtdj_hnM3OcqMMbtMF>P2Cv0O;A8Ny_+)$vJ`10XFTfY#4R|BogfGX};#=@Tcn5wM zKZ2ja&*7Kx8~6kKA^r$|g}=t%;9u~s_&5AJaS|6vCmAG@xJef2L3)yGasU}i#*u?a zA@P!FWI8D)6(m4rk~w4nsU?faG7=%JWI0(w){^7N3FJg_5;=`*AREahvYBilTghc) z8@ZfZOKv8&kvqvf=*@O}9G_`duQekebTKY-8U$MFaAhwxMQX}pg=l&|B%{33oazl5*n zm-5T_2ELJR;v@W#yvkGlDE?^v82(s(Grx_$lE0R}p1+yDjlYY(mw%9dn17sqihqvZ z$-lzy;@{%m=LXl7+_=P#b0%4)hEF3OGh2_F3VYP6iaI$cUaH?>caJq1TaG`LK zaIvsK*dlBdZWL}3ZWeA4ZWV45ZWrzl?hzgk9uyuCUJ%|8-Vr_!J`}zeeh_{Xeii-{ z{<08@!;)diwDhwKv<$Tjvy8Qjvy8V)vK(UZSSl<5OO<7TWuaw}WwE8zvfQ%5vf6T_ zx&skoyykvRP@~-7W%lDQaEI(R) zxBOv6R>A7Bx~=`KgRH}>!>!}2q2X-b+L7s zwavQ9y4t$Ny4HGx^+>B~J;r*1^%U#*){Cu|ShrcPvR-H1ZoS8Puk}9b!`4TvPgtL^ z?y|mRecSq}^)u^N*6*y}i&!KgFN&gFbc*|lL&g2YQDUxmka)0oi0BcgiqpjzVzoG1 zY!Dm8CNUy5i-(I*F($T%D@9eL;!)yp;wj>(;%VYp;yQ7IxKZ3BZWgzQTgA)7E5+^N zP2z3hed7J%1LD)-Gvc%2bK>*jYvL~Pb@6TSOYtl5Yw;WLTk$*bXYm*DPw_8_mjuZo z*(AH9Na<3Blqu~e^^-<`fO3S6y(i&;4bd+?obc}R@beeRQbgr~f+9Yk3wn$s0tE8)?>!sVJJES|M zyQGJt9n!(U$2o6=j-+tNGI2htDHkJ3-l&(bf_uhMVQUow_om0y?N zlHZj-kUy3`lfRU|k-wLJl7E%|uyHnGv)Ck?-R7{R+uXLEwm!CgwgI-mwqdsYZ8^5l zwgTHY+eF)B+ab0ho7XnYHr-Zkn_;W6&9cq0&9@z9tFusBCTWy!yuCiTgyWVz_?N-|zw!3Zj*&eh#Y>t`cv43v=%KokW2m8<3{i$F2PmVIJY|eBUO7-XNSUH|loG|Klqwa9U#V8+ zC<~OImEV=W(ny*mO-@tNTxpqUJ=6N6^-mj^HZ*NST29*Nv@vPp(N(-kgNoz=pq{Y&fr>#m`n?}=)Njo9!zL*!byPS4 zj+u@*j`@y|qt3C!vCI*1G&@=xt&TRwD#sCyBOOOOj&q#kIN5Q!<1EKI#|4f{9G5ya zIkq~ka9ruQ)^WY#X2)%gyBzmA9&|kHc---X;~B^Ej+Y#-I^J-+?Rekuk>fMRmyTZ@ zzd3$){Nec1@t2cxBB$a^b2^+(r^}h{%y4Epvz-H+1D%7MgPlX1L!HB%1|z-H=S=eKXZQW{KEOA^H=9@&flGXxFnbCvbpT8o~~Z5-mX5bVXon> z5w87R<6Pri6I>HrURQ~0s%x67%2n-}>6+!Lb=A4Tu0^h>E9Po(wYsS5DA&=h(_Lq{ z&UBsSy41DawZXN~b&cy<*LAM#uDe`!yY6w_>w3cVr0Xfy)2`QCyIilk-f(^5`qcHA z>nGRGu3ucgrd!gj>0-K+?oQ82?~&d!eQ^4a^r7j)(hJhZq>oJ>mtK_aNiR4&9<(i_v8(j)23>1)#0rXP`hWctbJr=*{nep>p4=@+G6oPJ6A73o)|UzL7! z`fcgAr{9r&XZj=QkETDC{$lz|=`W|hm;QeG2k9TCf1mzC`p@aVr2m@!TZT15%#bqV zjI4|v89g(4Wemv}nlUV6c*dBFu^Hns#%FjkiZi?!Gcx=cfsA0rVHu%}#*C(nNJewU znvAs>M`RqCadO5f8K-7kka1zgMHv@oT%K`7#+4aYW!#!^TgL4fJ2D>5cqHS|jGY-T zX1tW~ZpM2V?`M3F@lD3J8Q*1mpUGvSOq@wF9huHdS7v%nX@x%GUsH@&0L(hB(pwqY38cTBQlT7JUa83%o8$C%se&ow9KzVInew_Jv=2w|NWd4}> ztDAEpH+Eay4!6_oa;Lj9+`Zhr-F@6c+(X^N+{4|u?uqUL-ILst-3Pf3b|2#Qxes+u zcbB?nx@Wm(yXUzNb2qyWcSqeZcZ<8#-R557Uh6)>eU$qw_d54^?u*XS-rA)XZ5Qd+|=68@B$}sGH2uLoWeP04z6to#bUF{ z1EZFO+hTLzXM7r<4%x(|aSj!$WE1D&(jnVI2L_#kM|%qM#(5@=%_%7=8JjaEFVCAZ zv1DvXj%WPn@niCfCybj|QWA7#`ii}?BGF~B=1^_8I8xi%7;b7YC}(j!xNLRA&qH;@~|4F*PfbHlj7s-mW;PIVG6WmWsA zlNK;4^-Xn=6(!M7V>sv>01qmnb>V2ZEK8Tu zv7QM=K#Zc4ud-IJ9z8O9Y{A-**{k#NC&1_N`D53veI9IY;|jPjs$(P9TeUvVjprtC z6S)KD=zh=yTAZza3^S)Fj7CFkn*d#6~Wp_S?wSs{MmbSMkiM1ed;+ zaAQn2*CKAQI(!qigsWGx)u9FgJJ-NPSSM}dn$!X6z)f5;cepx89XubR{XerIx* zg%&r}x3t!UD+f(!q_X=*3NoF;7L_0DnkQp{;N+df8 z$~3(5m!tt}yNP0ejKb4N4B(P}9CehMtBzLlwsB{3=Wyq8>$vl{^SKMueDz>8tS(YFsn@7C1f6|n z*Fsku1s0fI-!dv;=TU*S#)T2^mh3LRFABBPE-8U%0+tAb8=w>tu1mD;8m%uDYYjtK z8Q2wCaDZjak@}_<0NSq$pyKet*2P`37HEmK*0!`p!-iF|xXs*EOif$3t=whYHturn z3hqj^KpmrwRmZ90)d}jvZQRu?X2Rd?-1Xcr^*|Oe;qPSiAhnO)3A`(tLrrzzI?dVi zXryZ?AvbgKX%MPdNvI8?KWMcR2o~Z(^-U07E1DVrjD_LOz}Qd|j>Gg$f@x%(rX?J0 z0zvDWKoOlGh?_*m3%VSXgdiRk7`KT)z*sRl&|T{A4PvDc{q9#C8%#|;#672uxSHF+ zJm7wWK5aQUMK59sJx{CyegKY^AuHZn2WbV9q94Z@X?SUn>T@je;Kx40=14SPZ{Xg)0Yiv(Sx zQ~Dz-eBiY!S+8Rb*^!V3$b_0>;kv2ONNY2Iv2-K>#`v#lYYsDa_>B9U`vS%`UFmAM zTFRb&#eL0vQvY6w@1RhQ~i>1El`D4*C=KGYsAd(Dvrp z%>Bas%1!DHB^NMKw;`*jgLkV>EfFK;x0aj^Gu5i_$`%a}j0U(T0_I6*GU$2MlKPggdYF?GjfMaOK8X%ShZy?b zgbs%B78QbD%tb{&%O7f59QH(7n_AR`I&?Aef}*tU69~6#LM7a!q~DFU)6_a0{7^I< zM#F@@jCPw*DJo-{>iAU>wmlio&dvMu{RoxL?I`Gp#_E&ZxhQ+ z>R754Poe!V$b%5@0Fh3 z6hp1tB(F_yCNvj1@dfbbLUa+j7+nN3YL`G@fs8AvxhzoX z_$=I1(^B6UhWSBbGiWW`R0lQ%#kDpzmA5u7WYeik_%hnk;c>e0m<0?ScCH~*wZ9a) zosP`>TIHNBb&c}?b#>5LwFq3|z}(yh5WitbB-WB!4Vio_H&9qvR#eG;Kya;JnOhTD zR^Pa=-uPJsoThv(Y;GtJ@S${WX$%dLYqm5{j7LK|AfP@;p zY2Qqa4Ep*X=Mi{Q!%8arWrbD2qM9miVAx!3 zVwSCC@t{y>pe6p<;g!u%aB0X>Oa(rIp6pbCPobyLGw50M1oc$)67^C;fiI|zO=u^2 zQ9V&TxiclctSRwT^eQNE7kVA-%J?h(AE?p>?iW)}3OYl3NtwkkA}xgMD%bch4Mtl~ z*r>*?d3!s~+q-BNu#^VYJ>`GFkYVKyVcLs6LLaNAsppwi_zZpBsTICK-=go(_v-2D zIqJFUI>QP-F)RFxeo@a*&+1yz-_h@2g+I|>=ueQe4=8`BdglK^)-GAXL}v*L8cWZE z^3VQXFceolmY|ExuWo{nA6^`ZLiz^t;z?!UmL-w8>}VJ!qfN2wP*b*E6oLX)jwf5M z9A>YmZ&{KZ%03{E!NIf;`X*!`2?OFZoY9#9aVB=7?{E+GeDxwQ;KgwR;@)6D+y}bR z1-sFWa5i&Q(A9S1P77H*70+p>pyfM9kBn4nG@y>pW+HX`U8Um0m(^~g|z#y4vXR*hS-8)gkR z*&jsLKBH!wqva(~VT8}4;j?M-0z3gsj>q7!cpM(DZdSLbTh+_9;ECK|JPA)$w?WQ! zrFs=)^+`!p6_izj&LQwbOY*fEN@6mo=TQ|+T_tsF#+S&dSS^iVGZ?aC5B91a3oWc~)EPN=Qu8!CM!%b$poNU}^sHmDKEAWg2O22xw@kJJ{#xofL z^Fa-sua4M^=is?`o_ei%ow|K9Ucl-I>h+)ps1&fmZlEPpyUYWlT6`GNnA4}^EDdGV z4PO&@2c#KV!ULb#94)iBXlm6Gm=x7jL}#>yTf=N_WRhNlo1koj7vm+k9xuhqa06~s zZ&YtmZ&q(nZ&hzoZ{LO^V3fmgl$ADct9l2pbf@|-{5wf~szdHP5IC)FiiMVk>x@K1 zw~U!@cV<*(9b;_Pich+&Svex$DFe}4T4NpYu!@GBMR!e$72p$2l0u>=ya;+i0;^8( zZ)~dKqnJ&pde=sLw0d`UZgM<65z4vv1ofVc_$2k-x$$(6rGcjUPs3+0pwrd+HsUkY z`#T3Z7oW#~)~OF{#OJFI&eBWAF%!$h_)-RNiTcn+yk6ars4Z6-Aa=Y3UzT8eoBD|H zMHapiU!7p{8ud~0i|zPEb;KsT9+=yq-p4-N3?Cjd0dB+hs3W$*^E>c5d>6hOzI|MM zKz%}el0A(7frs%wv&zFQtXKg$W7TJK6(m-Z$meI#-S@;?JY-;Cu z0lx?WXk~N!lKQL>hh9~OZ^p0TUHEnNId!M{vVp;l-@@-E*RSz=_PxBh{XtVsozkw|clgJYc0b{t)mPM4b)pIRb)wCB z_9VA!(nY6}$|0GseXTyIHjv#^wAv_U?MSWd;Lw!?yOMP2?M}1d)?{Xp% z3F?*4Tvq6TpR7JG8+KbZ)WK8rL-ji+Qh!jn7s*JHL!h)oa>;0tNAgJl z=L5lwxM$1}7nln@Y}rYJXoQr@e9USOtXNvH$Y^VRr+%e=tbU|^%Z8lX#L9#oJwXT- zn2RF}-Ka!S9ZH<~N<=(6BNJ4|7BZ0>NG6fV>L==F>gVbg@Etjr9D*;IlSJ!N^&xH2 zONxj`FFc#-(hH{=pOvBd=q6Ik=Dln*=n}@Du}=L|eZctTbok}I_%Eake)%#b!lJXF z2C)u2WCrnrRliZc23S_?CDm$K&^c?--kIpP?~c0Iv&ihuC+wR@4U@L>xja<($Xqfn z=o}8pNU@BmnN(-nMCLPeyA7Y>*k}lwlY(=PAPYf59Qfk*Oh-`CAz`Qokp0vTba9rD zdc97ca1E%wnn6Cb6Kx_(8BeUNzdPVMg$4ozQMQoqcTF~tCWd`?K#jnjMGhx17)D4` z{dps4QGbCvQ;!GnCFiapl8Im?S;Y{vslRR{tJUAC%AlVZ-`dHMhXjp3GP ze9^0boWcxtDn*>ZRu(yfoDbEOc9|7ws;5>Stzn@BNvbh z$wlO1d-u^B|Q9vtoi?4(-{ML(bKi*TjN&p5nx;CJqtG z2u+=Q*T?wIyAt9htH+ozWv=m^R>bSo+`6!#zBayph0RE7b7GO!Xl*z-nqEP!)T1dy zP6~@3TKF?ud^-zf*OME_jpQbZY!ulkQYcD;@AZHNAqAqC{!7=9=RWmQiX49vdJLo3 z$)n^cSdJl&k;lmsLiMK!q8T!4{e6@Rc2Lm zaJ#SKb#6~eb#?x<`nqsoLxZt$J)~VDqo|$QYEa=VJ16z=2QHtxdct_vPm(ur?6|cx ztH_lCLPtyFwYE^L>gchPOJpVZV6XzI}j3ZRy#c~=p33DZrCEd z?jeReqXL@MJo?0iyiVRAZxTNm0t+dlqG6a4v+XkQnN_nW+E4vj<@AX0E_n|s-{1_J z$opCm96lPR{fKpjk16VxGLM^B0L+gYGtr#KWs%RxH!xQvUyv`!SLADovMCxs(Ljm@ zZ6V*1@5uM$2Z{z$G?b#@6pg5v8H(1kF+Vm7!e1=X5T2vQ5Oayt%y<$>jA8vO@;mvH z#gRWK8nO{)fG`yIPGDq-vtbQw1vt@+C%gd7c<8ai;>}!f^7;%XW!lHfyd9vmq?reY z-e1?sBHjrVHr~a9#~nb?Ce2P zs&XkBJvYvtp7S2HB&A&zKZ4&sCC}$`_}m1`qbVvdST0~JkKxBsG=`$_Cd(7}NhyRU z^9NA`P~&P~2+#4Al&A`EV&00uI+d0N6OW-r{ zOgbsn#!8^K`AcE==%I@NV~f5ctth+%Mw$p)Fwr-k`CFS{n-kO#w5)rc{xDFxB+R1o z=+aOO79$&>)DEP~fl>dy2s&Y%)&TZdK_(K3LJ`7YbY-0$u+TS!KW&czTM|yN*i)a^ zrv`#J_fX|8febt5YbvX6s!zxQ+^75=_brUn6#i8HH2!q{4E{|1 zEdFf%9E!>*s-(zIQ58iqDVj~u9E#>qw1A?+C|XES9Yu?-;n(r!@#pgw@E7tI@fY)# z@R#!I`3?L=eiKDYC{igpnWD`UT}RPf6g@`K%M`s&(bp7PDRxsl2w2hw34SXY0s{g? z6>LP%GJF0Cme~jQQfBW7!*0)9eQeW;8u0t5mGuiv4z7-KFvH|vJL6#C-sJ!?FN1!t zzA{vo%EXOvCITiCw=yQ0_7W5A>N&ZP`N#RucQ3G2r4+5)5of5{Wau8oP~$#g$k((e zlFDQ%KljJ^nPu{`gYgsnpYhX))gFyARbw*soQ zsLN2Nz2lK3a01K|wg^bT0ugwM>M2@E(K3n}ws6-AR)H5J6;jkjct8=PZoQ281}q=K zo*Hwq4M|*oU(vL-h0*%DL=~`|&l(%2At{0kW;skVA;-+}6?sBU%R}(qLh>>|B9RcB zLMAMS2`(XBfO&5dMG=acHw$hdOXxw-;S@zFVp*)OsG_x{0k-g@B7!{7R|Kicvi6UA zvBY(HQ)ER`QoC98buCLw+I@w7Dbo&NfH06f7&N8%?bKvn7%Gf}^$%f~FkBcR>@UEC zsg$Q4ElP%vLb(Q1m;P_&k!Bj?PCL>fy%wd}nG57d0a(Mq-* zTwkJPIxen?Bv{o|W$ckH3&B>W9xMS1*HuNDOT){vxORpj-u#j6KI|Q>!V2vrov%DDD^>|u(W$yEE5`p zMxjXnS2~uW<0v|wq7x`ODM=YQ1rtY&9hsd!AwNkOEkbLuGFCEWv{7{8jC_;5wZajp z+)&{-ri`P6qlIGxAa@EyP`VcY_07Ur!r1~O z=4VoL7DZ=o7S;*p3FlJ;kItoN-9GALmkR4s^|eXZ%pP>o$F>RAFuPtZTp?U3TqRsh z5pZ__MHfqKz{qn0~cGcsNy0j|oqA)5)HNPWC+Wt1Vh5yWB+dqVQ^G0rfRum+(48 zTPeDXqHQMlTf*C^bl(%+@4`MG3tx8M@4gbg7QPX_6~3eB3W~0z=qif9iq|Ik-Q3mr z1*2KND;S-mo}YzZlGXD&Q_mk1T{9yu!KMXSa0;6i!6J919*fOl7hIM!indb(z5;{F zE%5+naRG7*grDpEIZ4>FEWJC?nWc|qKTBVVZlvfYif%TU$+iqgWoEEtNas4UjIcl< ztDAAdGTM@7$+r|(#!z%CMYmCOJ4JU;bZ0_m^Hvv(8^?5(H*uV)G|NQGfk{fU9AqfX zRVV2Y&ZmF|`yHHuZCDOghnk|Q0qL!GYg`$Tj+CkC76g@)GqY0JGUp;1Q z0aF?D!!b!ZYqP+rO=7UKtYtc5@!e#TT3}yv(%@q`)^bu;I^(XloFed+(^xNjT^?$vXZ(ZL$l9@ajc zWB}IvtbMKhDEf$^k16`Z;Bf!%pJQNw5@s8d~1Pqj1{W! zpHcKVMPE?#B}HE)bO-^iK1w}tl^bNQJLxLNQOVK(Xb&lW^thu9K5LIw_I29%Vf`*>{fX z=sPD_PfpdvY1Xs53QyK^tmg_Y>vowME*@I5H+YQ#+x{dzU+pTw4@3h`!y_;eO z#ZHP{6lYMJndokFR_Enu-7Q&R4_F~u>si-E>kf+3=dR8f2kX2!d1La8kY#<0sS!Nn z8k6&oTvGNST1426mk4O0+(DaSn&?PjQcM?n zbmf%X^VkZzL1=pjlCux7P}K6(xJ!uM zj{5P5hoieb&Noc&e-OSOy%Z9UNs8yWR=yI|rO zERZg$U)-uMTE@S04o-ZnKQYRGteD0&_Gp{(VCk?OSYcgVQEN*JYVpkY@C1sb&EaTEoBm99|3%_4@CKiFEX9ZHWE&U7_9U>Hz zHi>tNcTo&sZ^kC^9`Rm^{S<@N$0WSDGtV_6LQxbBg9t~BSg^azitE`K0F8Pxlj(=V z$6%-ucZd&*kBE;_9H6+0;%bU#ZV?|BpAerEpQ3mc#o(`$;-iAji3v7S8A&`g&ot1M zm{|wZk8y&183~{++WNJfVi2H~)HlaEG(Vv8=K9VTlTJMPP3aukRHPPyU~`P#kC_Xy zC2H;w$2-6wje}E*xZ(pkrb(ktF(iBG#HxbOxVTme;mk z?iAlZh2onqIu0kpVV7?a9LG=^Zd%;31YX%UVzkP(GUzKu;=AIMcRO8=<(_IH{p1$zoEr1XJ{_(g10o zG)TAD;S@(Hj>Rn|4U>jTBc%N$NXS|!Zl!ny#cdSB=FPojF+ocVEl{A0$E@fWmB8~LT`4mN@q2R1Sn zw4^!GVazadrFqhP-7v>c3?ut-hG9a|LaA1&lb{D3Pw@#9pGfh^6rZ;D4YRDhVIqcM z45P%@18@&`_k8#Jz)I%WZ4%hy6pBv;wo59rQ-fmLJa|+I@4nWvmthTJN3wRR1mnT! z6rV9CZ(_co^|ARA;~!0BA1583G73s3NvA;eFM+Dg-YA_)@wou2XaCX}@$CPcMD{P8 z!?OPwdnfyc#2%9UX4t1^ruEW!64Y?FNasrzNEb?wyR4)5Jc`e!_<}9cCDNtRdT9g2 z&?`1myoD05?r;b=bzx(>pFW_D(l@QMJa|-$9a^^>QgJvvsuNI9C+y>Fh0!LuI2_M? zJuDsS9K4&%Jf{=vLH$`#E4-Zq$BD4lOxx$a(l+S|W`N5nzG$O#CB+xBH@3Ps#!kAH z8T&eEJH?k!ywNbLUAj@a1@dL-Ch2C1FQs_>CT_cQn+lophQB?_ZqStQ6m50e#CDH# ze+O(2GHja$O*vj)3WtJ0m$K=eSs*6bQ}+wwY`TI@ENKk<;4xjR1YRpkn(MMRTH`}-f%G2J()$!&XL9(F1a+3n zq>rUfq)(;Kq|YVD55VNtQ+xx(H&T2P#W!EZ`J}JetVn|W^lb8a3!5HMd>ibkH;&rt zj9r${C)I4THHjdqXwxU{RhhwE8n(C|dQ+%PM=>Y~EZ)3Ld&4>v%3~Z0luD^B+XFF- z9gDzby!y$1I=cogHXlhsWrVvwSZw{1;#=7Rc=1d|EF|?ra5891Hd8G0u{CSpT#~Bb zw2DAgyqV0a!>@Dhlm*!$TV+v}WLdV!c3F|rWQXjOU2?jdA!o{NIZN&#_mq3dz2!dg zesW*ApWI*0mIufKf{>Rh}mMLefIbiSVZ!hl#n9hhr}zzu-=z30ir=RA9g5$j_&tiDM}9!@ zhZIBB{xQX$Q2Z&ypHcid#n2nSr1&d}zoz&biod1!JBq)j_y>xAr1&R_f2Q~sihrf} zH;R9!_z#M~VgI6pqXbccDS>y|cuE9HER_<0+Xy$wW#Hq+}8$lPNifl7lHZ zgpw(g6jD+|iHDM6O1zYmP%@R0X_WXVIh2y=l$26ZMoBp(6_iv`GJ_I7B>_sRD5<7o zCMB~dnN3LzC37g5OUXP+=2NnOk{~6AQ4*qLAtkkx)KLPN3vON=~BWWJ*pk;>s=-SNbFEoxB#9XTjN_u{CQ7i;I0#zKZg~ z(qN!?x|W8sAoL~!c6R{wd!{8owB4>f+JgWRe?^5BrWl_08JSuz7(bOBaTbZ9cz*9>e( zC)lPH`Wc&kucxA{G7v2G`3-%3$C~tuH;Esgxn@mKwXd`|IJ402D=e={NTuyJ?b9B1 zs>c(Y>GcOd{RYxs7}DYG0pYll>Zw6rxqeI)fCu$YMyuaht6}Y1P4$+0{e@Lt;J%{7 zSL!RD8uU~YdyPhau|`wcH%dtAEBBOE7kh)#yoGSYMj%+?uP6&L>8cpM;%ZM-vNmj( zVH?pNo4>j|=qW7(%7LoFDxW7<2#!`W$7?9jCa`At?VANWh2_D*QgF$NYQM)D1n#}S zL4_Z5pmAj=)+Vy{LlAp0FgpO}J8FX^lQJ0aO)U?4%d31&pO#cL7-G z^_Teq%s)Z<%mxPfY}P6}rB$)Fvb3UxX*yV1;Q?bOoZ2>sK@aT;x)QP)@FOcIU^;^nU%3y4gu?RT zAjGc3fNopDS|-T}qob}Jqr)VdaalWH@9cP<0HbBcAghAUklMN`|*=%S@z#hk72bi#69vHM)5DNypEaB2dzy$b-?NFP2 zT{BS73)!Thf>Ri5k_rq~Q&ey|1L|ec4}idNZ6*(-XSHLqy1ZN0IJX_vS%v;`mjATV z|M?6oNl_qtk_jqP6n~KpTM0+7h2Q{en3J>a4c!281i+j!JYLFRhoB_b!ph3h8qh3D zDSVI$rNdi!Xm zz5d!e8MDa})1$%qjSS_e&f)a53q*~l4v-tB_|+|}?Vv8&R##P4L$}fneKm;P-VL!7 zGR2@>h%_uIGTPqN4Kdvs@if|Ka4&0+Vr^3cCNTs00R}xZSr+C$%%1^P3&Vlnv=SIb z3#$r^Hal3GVaaWb0FX%ND@s|=O3qgvWsQ2KHqw%al(F^+1~oVZO7kXWx*&w#j=Fui zg8-G)MWrwu=!Tc)SexO=R9HFz{;7GLLC0GT$v!+a#NNqTrF4v0e&~B3XNNxYG6Nlk z^eYas*){|=9WI^42FZBns|Mw!#y{;%(;@8|nU3CB$b5s*8Q89gF1SI5*&yLeZ!`Eo z?cnu6s;1Kh@398`+cofe=X47EAp@S=4%jxhUs&Lsl6pM-FKrV?UmC0?aHKjRM3j0Dbe6tT}7SLR0~VkK&wSS!-sxg zz&+Yw)^PfL2}k>x0S!ho*)esI__Q;gyFon3^}ipyx{8G&w~1Jxzw7-F|}$vO){ff`6w$_&ghgB{Q{ zADXHY6IHvyzze%NwL2$Uo7qnd!$mUM!5VAUu%bx`q(>|{@@Q#oVU@?2qT8Je-LySG zr&lLtPZ$S-6w5rc36vkI8%goqp24slya!krlPp|8@&=Ww!la3(@uVGXnc{|Ucr_TjJA$`#OGr$VX%`9sAlR%0|Gv3&?byeH1Y z%<(vG3-&<0>@fRaX_dA=h1ur-hG6m@AYg3yy%10} zpEOfE`zVI#kUhi%&H|Zl85ALlpwN>j8Qb$1vI%>LOzX*T^nRiPk6~E$G#*q<^TRYW zPzYD?!L$zQj0qEtXXw0p$dobJ?A+ZBWGE-?Ak9i)bLJxO<|}G?3$-kRB;zA43q_@dut#=FE;Ra{zkS` zJf0vc?N+mXZp@|)L?sMSH=bo8(gUz(_Ux{a`53aXyCYo^GHq6Gl&S2cyN!Z%77xS$ zP)?wxysFTcNZBhGigCNc1w-L0*V14}iIeIEc0a?h+a{0O$x~Sg*{jD}nKC9-GgRYu zmz^Y3ewgMNW}3~Acywn~~DAds3{_M)HmlE?~I22`HW7fxiOlj~I$er7f;OamX-c!qe6;Yp4ff&}ytG>Ql=kFF2OroYOT<*wY5P>T22DJFM;&*ScBw zNvg;|Dq9rRUR3_~aMcmku-O+Gg(6lF8H?8*on8p{^P86{Ra1Z2~ojL(w!QtbgS zpTK%D!`e+c)-~2jZ!s(q`x0(^8pAZTYdv&|sS5g9Re~uPw}M{3zrvqj?@WfY>Ti+8 zvU9TG09d$QL{B=BrT0wpdZq^hP&S8hFiWsf7F6x$FbcE&6@|hgs2j0mAcz=%zPMu_ zIFAwOX4(|jO($aLkwY`1x2zHtVu~t?6M4af3~lwl;=KgcsI_FQ(8EHp2kL^bw2)YD zwqL?XbTh_w&3VH8AZiv@%rg4$28Pi8Pk2sJg~2A{H?>e<-^}p;JC7MRCRkMwEXWVC zPScUXWsE}kzm$N5rA}~P!El%TOWbVG@5uJm4D~;9^d!am%Aoe{0kvow6gm>QjuDyn zPxw!`i&mb7x&!R9(Bff9btx=9z$%w#x)(Z^;YT<8V=E*m>HXI4t*V9~nVjg}%y3u! zD=D;{2P_4HnSVK~o&^#sboSdA_WAz`yUw{mqr~ThwVx!tCBo;OjMTpi5UHeK*s7{v zs!EW!hmrV4{kfeT3~9=}vslfT>~#N!O@Kk}QT4jiZsR6+-?sD_n1qc3;t#!oR)OaF<|nFRWv z4hd6y2LUXs7|LR<)6H=IETg;VU(z+iGBQ!E(9HI9u%c+k6ypU(bLKy#sg2A`Dm~56 z=2&d>fa*(mmG-g_D|)@eX#Bf?QVmPMux_UXM%YYPT~(3rw^teV(tjmEb@}vi*l`4G z7fyxcd!zHczBe#y39Vra1M^!9^S|pO)#V!I(!wHdVjbaKhV~zgpNXy)N6U5rmBE0M zs8W5f*Eoj#pw)?9{qbH?v9@g!7TgULf5tF(Q#(jX-8=^z06PM-t&W;QL&XNhcs7ZK z&cjO0Y;hss6<_YYCN#te)s{oqb*9f>RSi=+6R*MVH+#r$0_`+kG2A7Sz-+i$g5U2M z;)>nsAF2H6W1p{F-@sc@QUbdSDoS7zlExzO_#YhYxg;f=7DF)I5Sgo!y z*I5;AFHthGgE$3PONR0$q*XpcYYO>?T1&VQOpjp+MIW}H@Tu)QuBz}<7{NucFbbjF z@}m^3B`B0tmsa^IVK_AB{94|r?+y-lOSMJ3cz;l&f3LcvIcdUP+Voc+3=K+lMrrpt zNQz)d5koJ$c|BfOe)k7wc?+i-$Q=y%?u~sZ$P-$NFGU*aN%3SQonha-$yn#utIOFs zG^AO@uxlXI0B(l+U-m<&^TFK3R}8BR9=7faABE{AblW`95aJBmkp+8P$`kuvm3|DtKM7nH+|);@_au zLy{55lV@MbXokG_-yrvtKqaCmk>)4`4CB;)g%Q>YA&@0)K~Tmqq|^Ql(s)(|E9i+l zM48C2{wrfak1x?C&W5oj|7%8}oKUFkk%UDE1M49St9A=)XWb0EDggH&N8v=C4m}Pw zlvexM{%dVbhb_Q*Dgd!*t|Ero*NtZX9yP3@!fGt=Tv%x=ttnoHcJ{wQ3wsn8^IpIT z%f8z5$Xl!zTMWHSV^jirjS9SoP&o_sz$U7f%5+Aca<366o6hzM8GG!Na)$linKfBS zepqQRG&6&t?k;Hjy;+k{!w~AJG|I+G6+>RW*R(PdwxYsl4>vn1GnHA1x1Hh5VRq$D z`;&q;E3*~te#pN18_QjQ{mp?w$~-0YNOk2fYa<+1ga;~yYIZruXxj?y4xk$NKxkR~CS+8tR zHY%Hx&B_*Kt8$sLO}SjTLb+18ijp%ZIg65WC|O6z`IKBp$;FghO34OFHo@hClx(5o zGDS6**&|O= z@+>9KQ?iqimneCKlGiACosu^xd7F}VDS4lg4=LOjM?R(Gb4tFXa2Fi;mXhx&`H_;J zDfyL>-zoW%@*L$cg`3!T3*|-1%apfMK8^BD%BNF4lk!=V?@8eXHGV(J_oI9^BT&HYTu2*hQZd7hkZdPtlZdGnmZddM5?o{ql?pE$m?p5wn?pGdA9#kGub|?=k zk0_5Sk13BUPbg0+Pbp6;&nV9-&neFLD2g--aN6N>_C(5VFXUgZw7s{8)SIXDQH_Erlcgpw556X|qPZaKJ<400{ z4CNotO!?C(e>UaMqx?mb zUr+hXl)sGfS5p33%HKfwTPS}APCNBNH^ z{~6`KqWpK12WEby{2x?6RIpOPMg<3jDq~`fDh#H=a0-_(2)R@!pu#vR z97u(Os8C1+FBN=LD5F9p6{@H(iwbk85QKvY^b2w`&= zc5Dedttfs`Zm79AmmSRnuldDti`l&l><EXoLHZ8*@wR7e?V0<6P~=v=wljHoJbR6>eMBE*@JH zg<}TT)7)ur;XCY3&4oc^Wo@`w`<7jEp^KV^;-a3N5H(F;QEe|BhLX#UE?_6>X?IV@ zX^L^0=bALNiPM}8>ScFA#&QFNm1RYh><3&$R=?6XMbY@lNThr&E*g?Qnw|7!+{l$o z+z}^!o=IHW*IB)nh=WIf^oy94C8;NmkqYxNI+xW!_~Tg%->0bF<#$CYPDv zKi;*gee5>Wj=j3tmn#0Kq^_MG7j>g4sy2Q2kBj;@QLF-jsUG8!M4cEHb+aj|wykpZ zUh=V|h{8frvU^X7liq5QE@lo@vzJJl{kkkv8;!)0Ej%?&dz(pHOVsyO*XnozYqBQF z?j?3Qxu7nI`n)*xYfS2gG3xhq zp#GmqA-aw;kjcPqsATV}jf;4lDWbM_aX|+W|Isk6ohFq$u4@mH9d2oyf$L2MnwXB4 z>>UPj;V5G`-H~N>I00&$+|c^&dQA@E3J%`hdZ$H|B1O_Hn|v1hS9EOOBQrx zT+o|MLA8B}`yz=*>P|<-$=+&`J(}rvUj_Ii(#OR~-)@pViILv%-!`o$5)Ds{hMJeu z*Ty)JNG{wD!sriZjwzypnl$DX@2%INtPDzrb-5!^Ahbiq% zOxpj|kd@TWZjH0@h{=k!%WdDy!jn4JJ#pfXnZzGpdU*N2ZFLq@i{a?^P6BFqppv}= z47Hi2mH?D>;EeA`w64BMEAb>rz9TOA6Q<;kG08(6B>!h&ma(@GPN&W_K1>TW)v$+6i_3%*?UR4kG z0Jl@~k8v?yHO166H~q)O{F|h}8;wH!JEYP3zNF`a{vD( zO-fROC(g)MCL>dsQTBPdn#9AQaUQ-gdC+!@>@7dtox*aGpU#N0^PR~~HB-rdydczd z%8`^(CP&EGaXEi5<(#)K`(q~=a+21Aac+Jxxv6E`T=ZWUm69{$$ik(yx$K{0T`r1q z|BK1}QpWwP4&48>e^*NZFTXGX8jdwU-3Z`#*fV#H?(C*6m}56uj7Vl0Pu<3POC5FJEC#yfBXaN zFn(>QWs+WS~$@4c17CEdD_ z1MkHzs$V&(xi%?eo)D)m{7d2TIx~8_Qp{UT;j~Kee>?#G&16L1;GEob;+1G#GUe1N z(fcYP>125|$)xdmG;iDEt~P$mgwYdBhwap+8{!V5n6hqR4*Oz<0F^Xa{I9k=nY*Yu z+4U3%H?dke%;h@YA`$=I12wT=hb45!wz%AmJ=f~EF$GC6rc%; z%Q{4;f0jZuhU%M=D%Fl%aeDntdfL0T`*wRnlE=OqXJCNIz=urWeY|5ZiGxq#91Jo! z_=0ip|991~Fd7ZDY2&&ps>ibjs%w9cuWcI|-W7gKJ9y4L$ z$n1jrwUChOvN(xT1X-NCQ*c_GR?6p4eiY?%DL;CPQ*z4OU?*%r&!c=klcnJQP?qQ4 z=-uzToti9TCQbxd;GWa}*W7ysG_h@s-=K*VAr+7=9i$~80Yqsj)KH{IFOtxERVgy| zE_Sg%q$n1^iYSUAA~t&OC>?3S5mZ3`dq9tP9=!L%``qWgejqW){AR7S*IIk+nZ5S_ zz0~IE!jBS$brC=bqE@58BzZD~pg;%>2%(vd5jECQ{9kLAs$Gk$ zWuDLKLewO~x@duC*b_vCTar=)IzO8X`{e|e0>OE03oOlf|icbLFvu`=@5c33;Zt{r$)3Po|yQzBEMYK z1Z4qhV2UzBF;V6a!U#ebLkJTHVVaJzL|Fk1tRaLMgkZuNnEy95AlyxQ5$Fh76-1jB zffQ#SqoMha=5Rr6{$q1^qF6u~F9=}?A*^6!HiGu8kt|%&_Y{P%x{?G%T?;Tt>croh zH~G;fX090$xrrl^51nD4aPQM+J`5>OCo2MR0?afT2s5W*EgxTT|ZqxJxe_CW}D2;l*1 zwE4fNQ6=_ZPWbq&(`t}rGp)KNi0Jv5_BiUyA6xt^DhcRv9zw7n1RK`H3vO`r@(JqsA0;hDy#UCU5CXVtD2xn)k?W$fJ+hr*2oy~qod$4tkR>Ua z|L~78R5dJVIjRCxiK>DS5fB2ncoc+)PDjI13_K!{if5eKUh4_ip|<#8-?7D*vd0CKhynQ!z_ z6kMk)96b{#P^X|koss|{AQ-s=Aj@wQW?E%B$B+ml4cI?4C?G7=DO$i;)aQf0qY-~H zI~s{z!X=Gf1|fDqh}|%F4=k&Om~LwMtgPy4YM?1e>LifI<}uN{XzZW#N8`|Vz!ZQG zAlmoC%mcIf=NmGHW|>5-S^d>Oy4Cz;QnV;q@{dR(VOGI@o0-%yfKu`jC9@PQu3QM|BWD}#Zc5W0E;}^_7n=?_s$UQgAV*7HV7RIu%Qrw10gQK*i;xR zoAj0D=@_FyfT^nx6$_jal!5eorit^ zi1`rW4urT16Ys%9&Bu$1qGpK{wOQAPool}Gh3FTskPEtL3Hl{KzJ?I@Aw(XGd;lw- z(Ck~|Ig8X(BY%5Km$5Y(>7wzSF8~PW$<(9zBE}gGmdv%sBcl zAmIdrcm^SgVAAv1mMQtdQv65aI=dD1n(T zVWvjn*47}<{ew(TA*umOQpmsOCCo|;3T7_knHV$%1DH4n0ovyc%zO(s&bzkZ6DiIy z1Wk}YfGIU$*Cc2W{!!LpgfQZNG5|&bvj%{rAVe92D2Krnvj%vbX%I2znzK0soB@QC z`Y(6KC}93LV8WHW;VAh8y|45q{2(t$!FO)ejdolX}`2d9IgAn~Nc>r#2 zx1@@^ceBE30x0M-VSgvj8+2n5F{c1?!3#T>)0i`WnFJvQA;b{O90trvB{w(aggL)d zhsy;b;rE=0Nx`K5(WV)g%K(`PAx0s@M;JLaYtzez(4QPZ@&zPyP1verc+5B7s@a%3 ze}vw}+yhXMGXH`QpJ3<&3>D9NXsSLdCkX^4kW=ILtciJydG<$S5$5@v8-0clUtr{{ zLyB3dMT*X~{roFRm^YY;KawgjRdb{%2r>OPN%TeRogY_2=GQQoMob$_TCj=RF&#k7 z_YeYXoA4cwkX&#RCy+vjq*<9Lpe}+-;(z#KA7(f~Ap_G75@jVAG*m&zMYE%ZsM&!- zbOvSwGYYt4m~jZX7(yaoG7>^AaeyBv!~nBO!+&fPf`PZ6Lv!zsSs?-bc}i@6UnJyb z|2O;g$Dg_He|{1Gen(?Rc=!hVK8Hm6x8uUVuOvaT*8mT;w%_^rbr|#U5pfV#-2$Y`( z!sbxZUJ(a-xyEg6`eCOSB1IGK)F_%D$Vmj^KN9*3b`k7V3#DG{Vl0A78oLBSE`yNE z;kI7^W0#!>-s1vNk{VG9AXnp`SYfQhpTYpU1}h1$VCxDLghazw3>*fIpNK_g9b@3j zPXrREj_qT#{xOWfDq>Y(=tA8ZRt-x4P_PFE4npE#C_gN#YUp|Fnd z6o!x@zev5*2Tv9t*Syiao^_4zV+VrRR@1xdbG z&^=-UAmkbdDG8fQ3T}rT)_#jV%#z5&S%VROFMqLN*xBxJLF5)J=pL~#5K;z0%ECxF z80qr$dWF^;k_02w|B>Oa5cZG#B6cqp^owBBgH(W!vo|MZ%hVlqZ^+O7mh$g%0DBaB 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%0D-%; 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 diff --git a/YakimbiTest/YakimbiTest/ViewControllers/ListViewController.m b/YakimbiTest/YakimbiTest/ViewControllers/ListViewController.m index 285af3f..3b0b08a 100644 --- a/YakimbiTest/YakimbiTest/ViewControllers/ListViewController.m +++ b/YakimbiTest/YakimbiTest/ViewControllers/ListViewController.m @@ -63,7 +63,7 @@ - (void)viewWillAppear:(BOOL)animated [self setTitle:[_folder name]]; currentPage = 1; - noOfPages = ceil((double)[[_folder files] count] / (double)DISPLAY_NO_OF_ITEMS); + noOfPages = ceil((double)[[self files] count] / (double)DISPLAY_NO_OF_ITEMS); [self refreshData]; } @@ -87,7 +87,7 @@ - (void)refreshData if ((currentPage * DISPLAY_NO_OF_ITEMS) > [[_folder files] count]) { loc = (currentPage - 1) * DISPLAY_NO_OF_ITEMS; - len = [[_folder files] count] - loc; + len = [[self files] count] - loc; range = NSMakeRange(loc, len); } else @@ -98,10 +98,10 @@ - (void)refreshData } // Get subarray and sort it - _items = [[[[[_folder files] allObjects] subarrayWithRange:range] sortedArrayUsingDescriptors:@[asc]] retain]; + _items = [[[[self files] subarrayWithRange:range] sortedArrayUsingDescriptors:@[asc]] retain]; // Show range of records shown from the total no. of records - _pageLabel.text = [NSString stringWithFormat:@"Showing %i - %i of %i", ++loc, loc+[_items count]-1, [[_folder files] count]]; + _pageLabel.text = [NSString stringWithFormat:@"Showing %i - %i of %i", ++loc, loc+[_items count]-1, [[self files] count]]; // Reload data [_tableView reloadData]; @@ -110,6 +110,11 @@ - (void)refreshData [_tableView scrollRectToVisible:CGRectMake(0, 0, 1, 1) animated:YES]; } +- (NSArray *)files +{ + return [[[_folder files] filteredSetUsingPredicate:[NSPredicate predicateWithFormat:@"self.hidden == 0"]] allObjects]; +} + #pragma mark - Event Handlers - (IBAction)next:(id)sender diff --git a/YakimbiTestUsingARC/YakimbiTest.xcodeproj/project.xcworkspace/xcuserdata/SAPMBP.xcuserdatad/UserInterfaceState.xcuserstate b/YakimbiTestUsingARC/YakimbiTest.xcodeproj/project.xcworkspace/xcuserdata/SAPMBP.xcuserdatad/UserInterfaceState.xcuserstate index 78b65c7bdf50d981509dd5608e5e932b91986ac9..5982f973a692cccb3fe0ca6449351a6bb6226788 100644 GIT binary patch literal 122624 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 literal 122311 zcmdSC2Y3_5^Dun7dquiC*($c=BEa+{^bUalvMqyy8=$;@5wuRr&DpmhW!5D^FfH^yV=>+)8d0x0*YSJDxk4JB3@%oyVQeUBF$!UB_L|-N4<*-NfC@-NN0<-Nrq@ zJ;*)5J;OcAy~yq0Ug36eySX>GH@UaC_qdO^Pq{C-Z@E9Yzqr4-f4F}UhY-SuAQ4H( zf|8IErJ{6{fd-+$=n!-$It-0OqtFC25luqV&~)TSg{TM>qY^Y5RiJrjK3as9pyj9z zwW5`16*?Yih@#Wc1?V!g0c}Rx&~@lWbQ8J_-Hq-?52MG?v*;!C8hRbQf!;&!qaVBwNWgaxJ-@+)3^t_mQW_b7Tj3h3q1)lefrT@)`M@d_le>Uy&ckkK|YK8~KOl zd4X4Wm3Q+VJ`Eqmr}IPjq5Lp@I6s0P$&cbk^JDl){Nem`-p9}23;7~G$d~cu`~rRn ze-z)uujbeBC-A57>-qEe^ZCp9EBGtVOJkq{CV3zfnWp-NaL)Cormt-`Uwal-M! znZjAZ*}^%(xxyvFrNU*xRl*IzjlxaB&B86ht-@Wx-NFOHgTiCNw+@nP{1@lo+H@hS0H=_ct`=?>{`=|1T} z=@IF1=_%=1=>_R!=~ZdB^oI1d^p5nt^pW(5^ttqv^sV%R^t1Gv^r!TX1zC8DWRWd4 zi{0X~xGm`xuceQrpJkxs5X%tDaLXvmSjz;<;g%yT(=9ocJWIZ%z*1}}wUk-rTIO38 zSt>2nmSvWsEOnMfOS5IAWsPN><#@{pmXj@~S!=qq2&_G<(8`~8!VeG+bq{v zZnWHDx!rP?5W1ti&o>tya~VY;{^wt!dUwYj0~`>j3Lu>tWVm){)jR*74R!)+yF$)@-Za zI@3DKT4bGV4O-_|=UEq87h9{WORY85T5E%~$=YgNZCz_U&PuH(Sx>c|VLjWr-g<%c zV(VqrE3Ma9H(9q@w_9(p-fX?idZ+as>;2Y;tdClsus&^l&ibNthjpj*HS3$!J=S-v zA6WNUKec{g{o4AS^+)S3*59pvS^t%>EXWpFk&|SHoFaSV47rz_CHI#H$%o2AowZHDwUQk|EUR8E0Zzyjo?f!1U>U1?n%~SK$0<~BzRm;@5>U?#PTB%m6 z%haRPI<--4R#&QP)OG6d>Iv$}>S^kk>N)Cp>V@hh>gDQH>IQYQx=p=Ky-~eIyPHstFoxC>r_~a9kPf0#K`RwHN$rmPHl6*z-)ybQZ zwj!^w{&Kb8D!@{7qkl6NJ)p8R(5JINm;?@RtH`OD;QlYdD5 zCHeQ{zwMlzw@Y@#o@960Q|;+?uRY7&-#*xWn0>f?lzp6iqJ4^enmxy!XFt+jXrFBl z+UMHm+e7vx_NDe3d!4<}-eO;6Uu!?keuDjE`|0+x?Cb3p*e|hPZok^T(Z1Eb-F~C} z7W*CcyY2VeAF@AYf71S}{RR6D`%e4o_P6Zs*x$GBvwv#;(*BM82m8$8oRYKF3pzryb8Yo^?Fuc;4}X<3-1tj<+0dJN7s}b$sUd-0_9u7ss!T-yFX? z{&4*1_{;IP)9RF+ic@vkoJr1Pr`_pw_Hy=i_Hkx8`#SqM`#VQCM>k+ayj(7DK2>0IKha#lMVoku&HoXyVTotl$6PjH^&JlDD2d7kqs=he<@oEw}s zI&X5`?7ZLkfb&7;L(Yetk2oK7KIVMM`Lc6|^A+c-&YjL(&fU)UogX+qbbjRg*7=?D zd*=_%f1LliI2UqZ7jf|}!R2r{T`pIOE6df_)z8)6HNrL0HOe*GHPtoEHQiOVTx(tHT*tbObDiNj({+~XY}aM3%UxHvu5@j8UFW*q zb%X03*S)U$T=%=4c0J>I*0tO9n(KAfhpvxY`&=KpzIXlL`qA}o3YUUXa7t22a*930 zktdyZC!%~K)9G)^cWlG8sDfuZ!rp!tyNST{bkuoo3e#)|xcrGZsfVZLrOrs5nVO$kmRg=VC$%cIIyIcSG_@(UIkhFVHI=5Gka}Y3xvA?@ z&r3Z&_3G4XQa7Y-OuZ@f=G0qKZ%utL^`X>fY3MQa?}q zBK6DEuTpf&+=JbRxW~H3xyQRFxO3dOZofOv zUFr_FgYL!dO7{|Xy}QBP=swzgtou0k@ovq1miuh?Iqu8dSGccqU**2eeZBhz_dV`= z-S@fgcR%fZ#{I1OIrnSs*WGWp-*oSDf9(Fm{e$~Q_fPJhJ;;MS#KU{+9*4*2ae4Z9 zvOIk~{XD}xBRnHLqdZ4=rh2A%rh5uJg`Of$vFB({t7oO>7|&YI@gB`{lILX4>7Fw@ z=XlQbT;RFTbE)St&sCnQJ)1n6J=c1+dv5gH|Du(k7%Gk(QH|pSCP* zMOuAYQ(9}32ec23%PX&0qkns#N{HEEmEwxwO4c2nAIX?LdGoAyB3 zBWaJPy_~iq?Ul4w({`r4owg@!Z`%85`_g_$`!VgOw4c*{N&7YJx3u5W{!T~fI9*J4 zrhC(SrT0xAm_8_dZ2GwL@#%-BPfeeeo|9gjUXi{qy)u1CdSm+0=}qY?(~n7Cn|^%y zndxVxpPhbA`nlnZ|^rzEz zrteDMo&H+->*;T&?@9kS{gd=h(?3i9D*e0k@6-Ry;4)AK&LA0lhL9m<$Qel)&Wzp} zhhz-R7@09DV_L@a3|~fm#*rDbG72(EGJ+Y4GpaMf8Fd*)XS8OVm~m3Z$r)#6oRzUY zgfp2~PSWUGW%u@$sCb6CUb0Nc4kgyZsw7hvoZ@ZOEQC*i!-Y;!TPxqeTJ;!^scawLs_ge3E?~UG@ytjF8 z_ulQj$NPZyLGP2^r@T*lpYcBHeZ~8#cc=Gl?;h`7?>_Ix-cP)rdcXC4=l$OMyY~<8 zpWeTES$o-f*?Xn*^7P8=)w@@}Uj2Iw?sZ77p}mIn8r5rbukmFA>RW4TcX3uu<`hol zY@EG(KvivJbMu^{!0;8}HO=$jXJnJE&ECW%amgCi$R^IgIW?Z5(vW??$Q<9O@i~*m z4a>{U8#iq1s8Rl5lk&#p4a=D@a>Cfrxf91v%F7GcQ}T2Da~hgfG&fdOg>xIKTI<5~ zEoRSd&ckJC<=eS5E}hHZGC42Ti|ftx(F9G@B+a5(HCa&Nxy1^^)$++c2i zX48^1yH*TDNm_rccoFNRroOsiRbEqNT{vX#3lEB$s>4m;>S*u5$|X4s^({>ewY3n3 z2-&B`la}x@EFV7#cr$>9u zug?R9Hdi%;!}Wy?)j+_|c;p6YvChltYmROW=T`$OYL?c7n?m+J0Pd@5flx@tXv zY-p%mQrVQ>Twc>$v!oU}ON$Z$!^lp2wRY{ON#loRjURRF(5$tiMo%0$G;6}B3CAA0 z6Qr+jW4N(e@u@Tr8G zt!01+v$a#Svnldx{V6J;X!b%FlE1p9rJ>2!6s`=}?eKeGdBdur%9Sm%9MW*7vdIkmE01p zimT?rTBhdJdTG72K3bO6SL?SOxU^j7*$S?ftK;f{TLW~CRcH-bqqZ6b!1~S&FKJ!2 zEF9sN8+tU@qU&P-*i>EFRL$7RfQ?u4;vnoUc$FJoTG?9LqN6exkrjDV!a{e=EugWb z;l`$LGkmCQfmj~QBZt{@l%?}(bx8zaI#^>$atyalE8obi)dp_lj@1T*>;sMNBVy~U zhZq9NoyZWJpbg&0ounNSEUc`lH{Ytfvg0$AecUY2OtX1GLzS*Ci(;tR#Lyw?K#sA;%+%FahgTObHQUDC zX*t?NZGtvK%MRH`%&h`TI~=q&VMw_R4BhbP{13D=wN|yXHibk z$pyLtjnW5DQd!fqiF<*YydM~|^Ov>B+7WY#!Y!-7c9{=%!oz9vD=Jsi)GetA0uknm z*WraP{)HXl)^Ec&_HcW-cer;eT59S5yt1xwesyHo1rchTmZ#-19Pe`t8&$!P+c2{nB(9{c4r#5k4 zFeZ2O%4qo&_jSmANLx*b2`zClZQ{OR=(-JW&UTgip8G|cy@mUM`;q&J`&rA^j?`vp z1zWgZx!=Hd`9mwziojkw8k7s(3BPURc&5H7Wtgzl}(jkgPKY!>z9QW z&a9~p`)X_Ro0~x~!IHLV6o?qC#8&-%ckdo9cpq6mf9?1&qbCf_8ar{+v6hOpQ(x1(JX{TvV^DMo&Z=n{ZrC7m zNW%lVUC4ns3JgM4BqN1;m)koZRIVvp3-btk9r(PYvN^1kX}KC_bf1juWkmr{)lJC3 zO*TFnZ(Jw^gdA0s7=@dWi_yrm8ax{00V|Bsw7KAXu3Zc6&Pe9@jGq8b(3nZ!_?Y5y zBQNT!m2W}4P;b-+Woh%Y`Pu?);TF^n^+yBHKy8t>SX-i1Rg}Y`z?8Fj4!Cg54YlEU z#*$@tdTgbQEtt_YFxJgbG#r*KG)xO^ccU?A9BVaJ ztBkaAL^_8h0n~u?ZAUTi$><0MK1HkEh^A_=RybgyM2TVRK(o#tH=zP3zTz6s4j1zL@E)IvZLvx&@Hmj@Zug_Xwv z7RUa?5C>3s0^&Jnu2!qn&5sO+xf#&PuD3D-y#Os-6cw}XcWy=tnCEFCb)&_oQY+uE zA@-mefiD#q|1#}pbF4?Pv93V1T9ejl0;{M2H6@VLj9Rp2t)&7aX()03>Bo$0GmJH8 zT|%2<(Q(>J4ZO!>Q~nX(tN-*BkLqoAqZ81Hp!z4FlexXuxe!{_-`jH3D$=55S{gW1|@c&Z(vouHkhad9g=x)5Dt ztneDu)*1`4Is2}FVt$S{XA3i7to8^ zY1)}4u!?q|oe3(t3+>iU*Ul*EKYg{PYiJDgEwr}{=(_-VR{!Y@SqYGC^db5JJX-V- z+J`^~X^cDIVeS^M5-=Xidi?j{e)7mo>rBgJR zqM;#suY`3Yy7d|!SW~y8p%!$vllR$`Emg~5{Q*bZVVcco>(0@dt7N~<(1HnC(b!N^ z-vUdiw-X@U#CJ{_I4XvlY4X&K{=|fF>M!&+`Um}sIgBvYF4iv5F4Zp6F4wNmuDlku zb%U`8|18)FQH}oa_bT{zwRVkGY^a98lIS4W-Yu%S#r3sojL<;`P%|N}Pzl=wfM9!P z|LR8A0fwvfmB5IPbkHb=#el-i2I358X2R65Z7eK1^@c;%F@lKGVYC5O4v0e#*|jtJ znb`vu9Xw0cPeg@ridMg&Br<7nnwA{1?Kl%3qLtr>y|@?djr-s%+!y!5{qX=i5D&tG zwT;>)ZL_vT+p2BTuGO|{*J;;lH)uEBh!4ew;UVC74S-!B`#Ttq#$#X!zDc`PyA2$% zV%Qh5zx}nxwI|ua%y#`z9gFfDyu(@uUin(UQC`vt+dz{Cj(Bi=`G!qq{Ie(urnBwa zvmjOb?ih=jiyI@GYqq*z2aXdbQg0@qRk80^a-@AVId=CcA_t$ z4FgpyI#$xqT*JDD-A_DJ{<8Xprf?4UYlcnipm{_CN*h+`J0RwoG9_panFHNaHa3T= zXEZgmHUb!n6Gp)pyVx28>VUIx4$g&;lfiWD7VT!HB(QtIGc-Ra3|MuXkB@|1W6Wh} zBdN`J7A|16wsVk>-3cMCHti~OCbPihE?lgWQUb)3f_EH+Y}W1ol5RIiD%1SnvBECN zv;r!gix3wSy~h*0Uv)^Q)Qze zB=C-bO$|-uMS(n+GT;&wH`OewsjsYMzwXA%@Nyuk1|P-k#kIIj-$oU{yvkywA=XylcRXA-gBayF?N;iYV?t@&%jOnbAa(#dq8_wd(bXw50wYjK(q-4 zWoJGKXk`#QB^?l03%HL5%oLvhJesq-rX{RBY$w?xjV%N|37>58ZWBIND`8d~dHv?mPUi}58O0(~X~!Y!NdrQGDW-_5p{ zYfl;ASK_N!?8e**o9#B^tMN5V2JK(PVcXy8XDXx{Z^k!4tQK#0T+6&r?+DqEY+79iN>$m~<7JMtd4SwE%?}Y!~4L0*tZKt+dE2hXzVXFl{ z(~JPLzp1IA$=IC0F414lc1+bQ4jS3PmO=;(1_2L1jK<_=(Jh$!>{)bu(s#71nQjNO z*BFtnRQ4cZT?}i*_G4|(F;IBM!t&4=XnI>}V3xzXX!lXu6Wb<^89QcZ*0>4dBJpwj zIDSIgwZV|jQ}}5Rvl*xew`|5w;b-(MDo9sfxd8lmZPyn30)7#{gkRQP(>~UIp(rWF z{8#a7TKQ(Y6Ys*iwb!*bv^O{7*YO+pP3x<+7LQ`XqwqqB6*hwMlDS3`src%M~M4}qWhs&LlI$j&uu zaHtx%2Z8hO;H;$$O<9diu-R;CS(7z5_Iy=M%kr!&Z~(wgWL28BFsrV$xg~2!I4cxt zt#7Ve8ipTDVSNFw)(4Gz_K8>{w?_9h$c7W@VN5`Tri z*51`V)IQSofdI{IiW$r?wyE40{5?4C_y_I1xA0H+XYOtM3;q@6@o(H7{5$@G`TO`U z`1?2h2mg!z0Yp^^5fVVx{#h87G-tTJ8h8Xs&{|ht)LOTM9lxXiznU295+6Iw$IPsn zuyzAM?2!Wt8fWjTePHjcy&tkKT6(}yv^gMwwm~#7$a)aY_&I#Ju8RZ{0!A73;>;|X zAs3T{n+Z<@-D-CN&{?buc1*}eEZ~VP3WV$6V5O!iOLv~Z6DTn?raBBKg>bHxwH!{@ zq7o-I;slA4B$AAG5{LGQ_9;mGvn|9$Qb;OsYoBXhX?DN6%jfITF?bc36y#8t6yz}N+Zc<6k$8mW{;Xy=T!q;UyJ3)P2&@1sL&kY82zEeWxUQjTP1Yef0F;#n-cGfCA~M2&U?)O3 zhnnJL!8fvk)N21yWQobSfwXie=T@?ktRkx^;wTa*5-Ea1X+4NT)-qYIBgaw%sq&=!bwS!pL0-)Sc@3FEk=&hGyM@gR#xdpphGS81wrWh)K;oY*o9L zB1ddKKR_M@HE8GSk;lm6%-5sHNl_~E_Dm&shAnK*QsnAr(mb!5?H9?5%(Wvg<9{3w zM&s;#m=?hK&;Q)JGFGOYz;tuSubH3maWFI$xd_q2@s5jd$^`)qv5%7raMA-2Ri|xZn9&Awb4ZI$Yj0R@%^h2NG z`p&jh>=44-A2CEGT`Kv8e5cLcNWP`0&qne+MOns)MR{c{oE-Y}UQJ*(`I-E}j#Uy) z&PI=g!@=<*$HY#~RPqP;D~9xMiuy-U@EngJLd_$J25jUBMFSH9`H|x-UgE6`%tFzi zjo6}H4X0voo|#~u{Hv?NMi?xHJ&6Y|b2FdJ+j$2?hfs7VMTc$XT`a~&(GV8WGj^ka zmddIXIj~ELcxd`~jd&T`ShC1tKAd&HTf^GEE_7vG!j!)Nh*`F<1)qi8rqBPbe4(I|>WQ#9sU9>R|NARcnn;OAi!&hbF< z<0zWO;*J#MwA&c>0|}PF25V)w+VtlQp~p7UhUDVKY^agxk?FBrLycJ2FpyISTxe-+ zZjXmW9*r$>=Y6qYXjK0ay2uX07BU>gYV;U))@p2`gnchxY>*w^N(8k&2g>)o+7EX7BZ%esWfumRIu|6IyQKH&awZ5uAFk(~9WE z!|1qiy52lwU-&=GNa-}&#~iVnzn;HaE5CuifxnTziNBe@g};@*jlZ40gTIr%iy{zU zkfJh*$|(XDXD&q*6wRXuG-m-t3vb{C^Y?PI`1|<>_y_ri_=ovNn0a6+kBhWyDg~)j zL8S#$T1%yMRDv@gb_$ddTMnA_6jA1gfVqq$<{1aZY@&yo^BS5UaRNeM9{scmV#Ujh z)YI(na>#UJNs}o?mT75gJtQ)M>C?UU1;)cb)$%Y)o*h|G*$lDPI*2wwSFyZ2<9#;l za;o(PkVy$=BMnUu)=M_+h|wRA&?|vH{mg;|TcaeV8TQ8@-)tSB9(Ip;kh9dBUtb8x zCeg6~^$EYjK@!Wxh)HJ$|GHMbjemuImEXzl;&=0}Q52$RF-0&zmrztiQS~!<^%&$|Nj_>ov{1Pf!0RGt+t6W2{7GGs@V@Qa0X#AHDsTXKz2?;RYPU4p|xr` zTLIy`f%&6tiHZTm*!wa6DKmMWP_%R-{~1Ng;gylt!+*)`)j;o;u`C|_bcX+yWt5dJ zJ>XbaLI@_JOT!!MqbDnF{s;aiM$V5E)okQ{rsyb;ow+!gV>d%$W>k^?9ehvz4~kao zHj?G|zxcoTfB1h{vLZX}ib}o&w!KEkkD@w?>M10VfN$|X7!jmp?Ogb0S?Nwav?uU_ zU?dDiNohNn&4MUMEWXE9`A(ra4)R5%Dae8f>=P7<8aE0yikhO*6zqmHkB&-HNMX`k z{U1p)E}L=q>M95zRMxRcQynkz_!lE$M0*5wUqDC`(uE8mQ}7DCgx*3Qikc~Ep{SLj zl@!532|LI6#hUm+kVxa2_1VZ8e8AEZQP*SkZKX zHsc!=h3|+mKLnXt)-Z}-q>hsC3`!f%A}){MgFUJMg4OgnF64511iz3c%n)WWuRFKUU^Ey#icX;D zY>G~#i2i@5-pl~38wM^83_vIl3WXx$pel}1$i7%k(ODFoqz{rCBg_UvCX`ZivdK?X zC=)6m170W><_O?=oI(+}e5Y*|<_Yr!a6e9`=nRU^48ZlCU_G3ER_GUg*g5E25Dpyp zhns`o(}!UhE7YfgVUDVWa2u{|5|(n4+dMO1mkTw9QOY%^Q(Il$A{-^G5Nb{1)hQfg z+Uuff+kSsWtwCsvS1Gs9EI_a^E>TceB^(2ex3F3O192Wj=Wi0$3SbW|plD~vJ~pb& z9cgaNB4jr~jz+l2oHX5SmRrM)_v?&irrg{D6;6TBfpCIwqHvOMGDR0sbP+`tQ*_A| z;Z)%?;dB86cPT};Q1m!OPlW7~qGTo#5`7%YPk;n~+Hkx{m=Xo*q;095oC^kOc}-(; zyXHeWZf-b`v3?@fZ+gejF-Gbp2z*TAaEYm4BE2ytohMw#2or!27JL`vhfr4=TvX(P0=+JZJ=o5R$-fPt*~9VPPm?;O%%cV zZ4_Nc(Ty)--`H3D%4G`H8QLfi^TXS45vLFh0$x zscu`-J-_+6w=b78RQ>9%e5d5gw)J zT8g%VgIU)Ir-G0a-Z!+mx(fCP`Sox~h$RxOWPVh*siul;DHx22;wgsWY2g`)fD<B zSKbibr07rP}0u}y%3H2*`_!~v{^@QDjK_o!U5$z@rj4lB;1y5N2mnSi2)ch!?#=(W~=DO&V=-ecb3tk&iJx z=7_lotDrbTJQBDs&J^=0+D*~xo5Wcn#L3>I_TB*fwDHf3pn$ z4>=Y>b}OXtLvj)eakurp#X1opkQ+sCg5TXJ zHc|v*>h#Wt*uvDURfOHu`xNan*`|tXM0P7eJVsng(FYWLxCvXt<1|?8KHBfak^a-e zMp!R~?IiKkcGym5*goz*{nYOwF~Iar$EME>Zj5*ixW*y`GC$M(fAKtSk9fX#fq0>K zQAM+!L#Dg_Ur_umMPE_`x61x|m1cLXZ2ZOV9A%EqEnY5O4QChP72=g5I0Ro&^fg7_ zY!aDEhwK(4=xhFCg8b)6tr)2e<*9vm`!nZnEb(#vWL4e~6KGlXxct z&cvI=Tf|$%+r-;NSo~nk`H3QktNcRIuN3{Z4Gj?QW*agQZgy%*DEgi4%qaSkZO`J# zjJQ;5*w!Mq2IfKK8n&N^i_T=}iU~$dPeRi#+z#k;oCzrU$AOvs=tnz=P&sCXVPa2f zvLFdnKhtI#ZsQihm<}chBiA&vPcWa)y7-3prudfl zwzx;!E50MXE50YbFMc3?D1IdF6F(L|5kD0_6F(Qf5Wf_^62BI|5x*6`6TcUK5PuYZ z5`Pwd5q}kb6Mq-~5dRea68{$e5&xAq2}xKY5-$moC`pnU zbh31cbgFckbh>ngbf$EcbhdPkbgr~sI!`)Zx{5fo3QcpAmiDfUsEO>qvzxfJ^;&ZBq+#WN|+r}#*U zXHi^0aUsP;6chODPUe9Hh96;&O`TP&}973X11ZJfGqP6fdNB5yc^j7gJnG z@e+!wD6XbBOz~2Rmr=Z&;u?yNqIdq;&%@ns#+)D9EidRv* zn&LGSA4Bn4iq}zmEXBuBd_2V(#T1giDL#?nlPEr!;!`L-mEzMVKAqw-C_az@x>HhLh+>(Uq{Fqp?E9B+bF)4;_Vb)NAdL(-$3z=6yHSg%@p54@vRi!M)BKS1$=6hB1q!xTS4@uL(!M)BhmKSA-66hB4r(-c2L@v{^^NAdF%zd-Se z6u(6A%M|aR_!Wv@rFbXByC~jG@oN;nPVpNQze(|16u(XJ9*Xx;{7%F~Nw+W))d%S} z|5{+P2)Eyx*RAvA=H>_Ui;H{(p+N2|eJ=s_OuC%`r?vww&6ybmxr>2#+JXR*(&FNv z+3CFusDC@4vXYYG(x5*#R8rszvNXXc)(2RF%(e~6eFgcsA;^M_b^kB}Oh?9|5ncAy ztqW8X#uM;ZCt$_dN5+Fa$-oA7fNiF)l#yBL&nYe}350UxQ z`31S5a$jk_uP7KD)$_)v3}U0OGjei5<^IwDu-`=b5(7M>EmFw-D4P+=FESD;0X$@U zGF!dES`BX7YKFhaU+N3`f%@XS{DSnjf&~qT@3+Cs9e4uC*^ZZdJzQvl2 zZrd!7<0}gJ3P2@`%SvN4|J-cjNQxH4@B%jc~$^Y)WN4^D=*L;$e&RZ z@)rg3g9ZLV_!({T9&0kR(#bvtdz-Hx_T|pMl0dbq8e#0O$JHc5P zrv=|Lz(YC#Eb*5X<_DO50{58=O!PmoR#^$Ha{VO*#TAUxp@QNZ5Oz$de`U~vI)g4L z4nQ%D;v7G8R5Ziv;Sbg(BcV+`++1Qxk-(C_JBN#Bh=pTty*tFm*b!n9iS%tD3^pYJ zHW$PeGiw%+L8K=@nAF87jK#{p1}1|_#$Y`Nu79l1 zEl_q@Q7%weP|R$n$*N%tXkZK|x1u0F8!Sg5s7!t~80cU{o8`bVk~Qhmu1Q&GDVt|) zh#13wd&L2R<&GF8w*M%J%`VG$20Azf3X8)muwuFS0a%bL0--`M*##hS#$t2QTPCqa zuDC|A>XSV_N&y6?}u=Hma7Z|3>WV)XLyJIvl0zzO@gZV{Kx@R(&K`|J{jnJI@;7qn^ z73KO$b3-7hQdrYt%$UX6q{iC7yq*~<4h1VpqG*d4NJxI4mFfjz4j6WxsfOigS5;tfNggz!1MO2!42(5RFx>aR6m}uQ*Ea?W;(?W&S-Mcb&%82ynT&!jX5ewCV+KJNP{SwYHdyEQN{g72)Q0~J3@mOmF!(qTlq4{| z$$%|^G}B6!XvKVyLN*P+kpRr`YpA7_!45=mu)dO#f(qa)^E>jvabf|4geI$5ldSkA z{<;2~vY;;;j17|+Tr7<)yOy;Kx>qOAKvZ7-TvH0iG0-9Lpv>7UDaa250dEPLuZCkA z@CRY$L>(LpWexkrH;nS8WY!FZB!NFCwIeC76im#V;?h}dt=XvzG$S5!j3mYslk_tf z-0+U!jQIpZjrbSfKqlzb*{p535jS&enI)Swc6tz+JF3%yTl^UeHBn zhBP9+w%Oof)*wOJF%HB!GodeI(1YT~!t{sfGr;O*I1rkd2Wzb_=rh|~$=VE#Z(|yO zsMlXyz>HSBQ*#Y#l$O{?_cRg~5$GV4FrUMeoRD-pQKuYtzISxY-YrK~$OUVetLiz#EHHMTZUUXASza zX;A8)*CFsj40uW#VEjkDCOb%>XVO@_KNhna34Vz=#Fvl&Ek9LG9vWe>%rY9Jt zwvy0!-vyhVHbxDlRa>%HMLOLi8&(1CB*N^DUp}7e2v`U6<*|iUw}7S&y~u#mP$Fg> zcqZ&;OsE|U%F_{4X?|24cQT*>sGJqkY>4b&BOV^uEq!rsCgod^RGW;;J(f-nGVa+g9J0eP-8|P;K9gND#%gYmDli07dVqkDRq6+`tLtRU z5wuzurfEII1j+*baUsMrvms^_jXqlyhHPRFk?AuT?wgwv*qX$!^wb^%XO_ZdHQ<9% z-mv+DkfkX?tAnAN+(V+uib{(iWK~dHToOg3r%iV;zY3t3XDcL{8wM%|BG94yKnO|* zK|~YwMGK^2&;IZy*uj)E*-&_0NEvIk==9 zBlIzZU0ABv(2aSc%U2f$M0JAs(Wt65w?{k#w;pUKj2HYv7WRNSkQ>>&g#uu-VmmPF z42F18cl6JoFrvmfjj*hmYJ4O^Grc=#nAXL}VjsaLP26u=3mLX+Y=N0@It%VcSu{dxtzZc9 zy31pwuVM&G4}|78R+wZmdK04x)?*m{gVUJtV?)8>(3sI7Hfh@Ta4hSg=paYH%u)xq zHHN$JAaS!rzdhL}GSmm8=y8nCFNAP<4zNW}OlaT9DXfzP2SR^TUG#`E1PLI&Lbr!` zWd(4a00&n&v-~i*Og%dNfTa-a$(XmL{$Lpx$#_TiEQY(}phlr*955FQw&_KXToH&K zx>?U<*cToYc7t-WkGy<89OuOGEowf`XI&kffk^BMmaSkhV^y?^i&z&2G@skZ!5mGI ze+~<9m~y_9;mlObMOLXTNbkx|;LPRFYlB-!42W0J|EQw4nI8-l< za$+Mxdq8>Zk)@IvatpsDr~4NeY0o5|dd>b-GyY zuVwu%J;;8|VVRz&9u;P}94vy_-o?0{^;v$Ped;SS8PP-F z7VGJnaE5NO_;H50i`YS&>y|TQ2psb3DUP~AL&OHwc(#d#$;0Bp>?9zn6;E}a6FTB3 zYl|R8TAp7TEQ76G46jM=vpu9YigspxF4S|1Vm4JRO79B{adEfiMdH z=aUSFq<&;K)&o49N{_Z1><1&N|N6w9%)<)@lm7(mO3mYwZn3a<#z}zzCsIe>< zP~w@zxj=O6RLHuU_0T;xt+O8VC`NP%@db<7xe2%jZ~z^Q9i3X=_>X!ry@N;(a6Am* zO>nF7qg;FY0J#=bBiJ6pd55uVLEux*I1U!)6i1EAJFJJwZiza9YtbGG%L;<|C9oXE z_WZivX=DWl`~~`nn>ioeKX}%~?Mb8Z(zn0HVrcgC5$maY6C`0^ak^{--uyX!I8iSR z&GGwYnaDq3$h)`pB_NM-Epl#XvL{iKKWEsxw;AggJLEXRp)t5wxsV8uD1fgR?t`3% z5a)xvOMWh#GUTvBS}=iep}%kS9&(|i1WOBr}Fsy$bFlPgBtwYasGx-}V^}(qXOI6ilQ>I@3!+JPeue7)nzTd&P zju&pqnwy^;6W_3`=sk)2Y&fR}NkM*Fs3?}gC?kevQqS-h$sh6i8kuKk;2RmB@ME{h zVTaP7oBB~fK^dH)gL@1~a?vE8_`4CZ#5(Zxtb-CAYkY={shG0N(2Y9~bWs#GhGJ~b zP$YyGW%~gT0Wn%gAdeE^VkpM9TpWA-EeX*AlYVilXW7vX>#45`aQ`P!-xy7*J%$HCZ06S^=?C!_J$xUSRd| zx=^8pBAUwtraE zPl^u5IFAW}LlMPy2*c+;7<};6FM09iLLS0U79R{s!!t4cx%eQAJe(oVJs9LUc@U7y zj_!8kQ4HgZgTe?Y1K`iZr47kr8Pb^tgEX=^gRGb6c0``QupX4KVBycx<7cKCAAZn; zLR8VGXFtQDX<|KsVbu%Qb~MdEO9N0ry9ug_wVQE}DqdE~ZdT|=yDSewUyWnpn$A$? zcfr~HqlRP(NXh`3eI@1zyPU(&&OIo!u&6NN{eTs+KlCVxKi7!4ntaJ)y}-9%b!>jR z#h3VA;2u)R9LR2u9%9J(tb>yOtb@W?EWgjZVj~wY><1^-c=Ey9h#JLWhPo@Gv463~ zqXthpr^Gxxl1mx#qW_F5<&b0!PCtBUnH-eMAT`;jX8@%PSb@;C)y_7{E3Ip= z{S-x$=gIREs=vsKbHDE^+3&!Ey)0>MVH3bU3;WE953NHLTDpO#61J1B9LCORphA~(rUTyCQbx7I(~ zD8sFFs3g*92^Dz_lu(h6k>M))7ZiVE*4|L%<75g&PvqlexYhn8#a}@Q75PLcdV;?` zfD$V5>GE0au${xOecO`~D)I$TBSeO)@;^jNsK^(K7s!{&a9{o>RyYO!O!1Fk_WnnO zc}B4MDPHNDO+!pZx#g?nO;A5YzDB%4hTHj2mE0mz~~k7`06NKNu1eW_%2!bM#dGm_5Wv#s9WWGpmK_Qn|!-`hkU1emkc-m|DyPB zivOYbUrIPi&^GyA8EU4mzi0p@n37Le=@j_81Ty=(RjVXg*fz1C$$wuurR$<7iChI% z>t7<)rqGMdE##A*X4OwVlAn>Em7kNJmtT-ylwXoxmUqan$gj#f@e=L6@e=2__e=dI^e<^<@e=UC_e=C0{e=q+a z|0w??|1AF^|0@3`|1SR_|0(|^|1JL`|Es`v3n^G33a$xt#CuhL8Dt@Kf{l)g$orN1&j8K?|W1}ldshbo6DLzJP) zFlD$hLK&%yQbsFdl(EVced$_k}csZ;8e2BlFsT4_?6l@_H{S*fg2Rx4|iW0bYZI^|g9IOTXnQ>b!+ za-wpQaYa<+1ga;~yoIZruXxj?y4xk$NKxkR~CxlFlSxk9;8 zxk|ZOxklNbY*aQWo0TofR%M%Vt+HLYjuJu%Pl-T@NQp#=g%T?zG9?NnDkU~bk|;^0 z#7>EW5+@}tN>V6ErNm8%hmtf((kaQHB$E;^CA}!=O-Ub0vMA|GNk2;ZQv!2iASHt+ z8BEC`lpIRQVU!G^WGE%WC>c)42uem$GK!MXl#HQdEG6S88BfUsN+wb=iIT%9nM}zP zN{*mpDkak>nNEq1l59$HD9NS7Pe~pnGbou!Nj@bTl9H<^xtfw|DA_>CMoKnOvYC=Clx(GB8zt9LvYnFa zD7l`J8z{MvlA9>GnUY&5xs{UJD7l@IJ1Du6lDjCmo05Add?gIIkCOW-d4Q4!DS3#J zhbei4l1C|djFQJGd4iHBDS3*Lrzv@c!q>l$=O}rek{2j>k&>4vd6|+Ol)OU8tCZ}d zWEUm7DS3^O*C}~}k~b-Ni;}k~*+a=*O5UO5T}s}gQ4l+U_? zjIa2ie90gaD^tYEs>GE*QNCe-JuQKve9u~Sw*-pv6NBzq2^8g5)@J`DP?SG9hf83{ z-wdvMB~Vn3!FE*wMI{Vkza>yqk%9H71d3{HkGX>qD5}c9dQt*KO=d0jR{}+KGN>Mu zKv7d!gG5D(RXl(+Y%|=UrZK?5Ju88tW*XQ#u51!l7DMgL0J~EHMeW-a%D56J>Hr4V zy%H$uUp{!5^!!&sBJ(jbv09hN{*M>61Ul|WI)Fwh>BKvBoD zMqQLZQ718g11W)`PGK$M#@ST~6m?n~;I8UisM!oSt{Mo-hH6s+MfEe7o|QmRXRwpN zwWbZ$$njd65-4gd1B+u+7bQ^C1_L&(tO+}K>#zih+QeXcR02h9Wla)_VsudgMP1FH z6DmE#K?6~-i|OiG26_M`P}JjC!)}*AQE5ApqKC$9JYn@D2D<+eDC(&U?!Zc*sAsUY zJt%>qp4~-fz|jtG=S22j>iRA^Go+DtB}=`4HAs+l7bQ^Ciy3s!N}#Bhu{J#{fudf? z8ttzHih2!$>PZO{byK?m?6(Apx|Ox*X$cf{J8P9NF*+-OqTawj+ZNu~PYD$DX4a@j zB~aAcSd;FTKvC~x@I5GjqTa(Abh8ACdOrjHFG`@O4|Rkoawo1wB~a8y8K$<9fK1-f z=q=0k#kkZbj8P{RD(R#Iiu!a%z@3ypQJ-VL`zwK>zQ~~VQvyZZ!GL;F0!7`)T6C`j ziuxLZ?NJF7^-b2KyCqQ6J^O)9D1oBB+bQWRohYFMiuwVA?RE(ibsq!oX~~05OQ5Kq zGIU*BoNQN7#YlJQx&(^)1;g6KUGa8US&%4_%Gjm^iuyIf)kQLVhq$8dV`n8$)bAMD zE^gj-h}OIupHKot{gI*SBA2{FR8a~$FM*=|av($BZwVCj_XD99j>`8}0!96cA?}GX zF|kLkNOxKSMg5my?c!o{JNC9Ifnvi9K^NC}+aX|NbyNbyCNNB0)V}BtQzs=*Y!-&B ziy{aeB5PX$#ilSUJ+%j&mO!y3F?3yI>~~0%S(UTHiaRz3L)k^Gf(}u3P*ug2!Vq;a zWfO0>cU4uz=3%G~zN(5XV?SeSLsF-OP;9*zqAoNmhR86$T~$@FWie#kDsvErETO83 zt$(*su*uR|k}ht1$Hc_gvj3_o zw$Th>7b|5V!pH#iq|A0zRczxJt}YBphq&5SRk2NESh`rvI>geAsw%e0J>nfWy^wX- zRaF(+)E*=3x~huJ#}Ia5sbWJn=1pf+RcyIE;vwu5x>;4lHiIEP=&CBVBN>|is;Y{u zkYVeVxnYx{qbPu_q(=lrra@;_RcrxTH_a)zo4=Od;PY;5hTs@N(Rg8#Ov zifsYI`MB*KT@NRmHZ1VeP^l>l|yFsw%cH!}K3lRk1B+NV|8j>A9p!tAiBicMp<59n5S9Ctdbs$x5lp*|o*k4J5mEajkGk`KkD_S*_y%tGq-0YsS3~b`B$vBfa)3Z8y@p;4 zAqfx&2_&J5W)MWhMo~aiq}avYdlx$(_TC%z-thmOTi`BmL8bWme?RY6Ah~_!_mr8P zo!y;_-YT2=_jgr^zEZaP@9wG+eT{7M`0lC_y-l`pbOTELyQ)OrD6JolT~(rQITn^9 z?Wz)eyR>|CeI&xJD$#dIvqyCPJka&(*;OU_-eaaXd{>p|2aZ{Y5872F`eAALFlz^4 zQ@4M#t4j1^e?Jm+cPTmSt}4;n|DoOk8T*S}RidAkhX3BC5q0$%=f1=4suKO2G=7*h z+QUS-o?TU&M}C zRf+yqws8D*Rf+yV+CN6Sszm=RjUAI+Rib}8;>iBZT~(s@$`+1(R~0=<+Bxc7Rdkay za~yY7(ao}fW45b`-dLJDs$Es|XldeTc2&`1k3dA-T~+i1Y2xU1Rne2AjU(PwMYqet zk78F9-6ahii(OUp=F-xU?5d)-l1Colt}1$4dGN8@RYmV0?H$!d9S85KqIZ@i54S8};m}qW6}jkNK`DdX6-EymwX6^JOc?aaR?+pKRcG?W&>=l-7?ft>Igrgzc)L z50R!1H)tHit}6O)Y5bV)s=_7>QCa%P+KNs3DADlaeUGB+!8@-NePW$` zRP;&ugSDe>h%MBM^vQa$UZR)kQ}n6&G`&opuFufR^_hBwUa8O0XX{mZwO*so(dX*( z^!fS%eWAWcKUrU_pQ4|t*XlxFqMxQO)tBj~>&x{s^fUFd^cDKq`Z@Z!`g!{K`bvG3 zzFJ?ST%}*AuhrM->-CHD4f@6UCHkfMM*T8DTKw=r`&&={M`Q=(p;(>9^~5=y&RO>38e*==bXP>G$irr2Uy_xJNYnQZ)QpH2hXH z{9ZKtQ8fHnH2hUG{9QEMD@=+oH4r9~FloYcf-p4}rl!KA3sbBx#S2rSFeM3-O_&_Q zaFl7r< zt}x{bQ(s}~FH8f4X|OO2tsNmu!-a|ejuNIZ!Zc2pCJ56>!Zb;kCJR%EFijDrX~HyJ zn97BzLYQU=Q3m^Y zB}{9C=|W*zCrlR!)5XGcsW4q8Oq+#it4!`g`osDo`lI?|`s4Z&`gZ+E{VDxv{TcmP z{W<-4eTTkN-=)8x@77<`U(#RJU(sLHU(;XL-_YOG-_qaK-_hUI-_zgMKhQtaKhi(e zKhZzcKhrJts^r3DaxB^p-HaD@-2?)91qUl`wrLOg{R}bA;MQr~`yLSg6BPn$rAk_6jy+o*+gnGG9 zuNLYyq246aTZMY3Q12D$144a7s80y>X`wzZ)E9*MvQS?a>f1tnU#K4o^>d+qCDiYP z`lC>P5$Yd8ixQeiXeS7*iO^z%mLN2%&>TW*CbU*UYbUf$LhCBDG`ehe1df%Vn?WY>;e-&y!I8`b<^7co{@9<&qp-u$q7m#5H z_$DME_<-2xBNy;D8}4Z|{9UNwY#I6OhcqnjmzEU=ze%(@CAckA*P>aoQgSNUN3^1* zIwiMsZfUvP3MXY~c~Q-j%Bq>wDP=>aRaTT1l+B#Ok1DIW&f52zun!mH4mjj<{;r;` z)g?1h3Kmq?l+H{UST?z;sA@q+?+@qxKV?Nn%yG_~ z>YB=#DT5XaE}C05H5jkRdIlPLehTRcKKC{3$n}J4OOXO)FuKkRb+ZDa$zMWEj+V(D zag3UzL~={ZOL4k1yw!0=tG|U>JxR7Y{>WP$T~;&g;J#H)<3&c}e}ozjJ|{Kd$QzHC z^?F*LX0-lisP%H`dijyJUMI(Oi@iE!MA78((z-tkPef%dDP zzZ5ms5Y;dwD)5+@76QaSTHFC&E={sV?(BY-C=g=#LFh~XaW%wCju^~eZ$q+}G zsYtQ;yK0siYRn-uXGk>@k5N!^O3TZuQ}Qdz88n0G;@{!HSYb5ZDAauLnVHHXZ$45m zvPw$IYWN25>Xg9+xn;%juMG2@_y0It&?-YvlaQbbWjtmbxuD3s`0p!PZzzfmDY`@| zdgKsAj12#s^JaeKoQe{o_76RIk_9<(hfT{aGn|YGIT?H~W!xc7{_Rs{oxT}1Av9_+ zyzMKEw&Ox=Un>JV_87H2vZkz@>SHcCsHnKAvO2u!>y4%pLQUT+n?4>x(t)w4Z&5{w zoUnwQt#31ASVA&_PgfkT>3CSn_Zlr*LoGij1MuJ>vHwpMcm0z>=B9knWq67oF+8+~ zJbXfW_{@LX!@uahBZm)Us#(Dvx(ub^-ach`>kN4td}?CQA>JNYKb~1sRuNvfJB{X& zL(K)>NIr^bW~9@{!L7bxwAwt>>KihpBaht4i06odn|<48wq>Z<;NAS9BX73u7|Az& zOfIS}O_4XLtJ&a(!m{>^B(W2oWao4Ut$1tZjcYy+eH&Ij6$)nw$S9C;1YDZ|5G)rRS4 zWaw~*bOi4bAH~I9T^+{El|`fj^VYD&V~xgBLX9WNAWS~;AVlg2`)1GeXs{X@JRuEE zso_{%@*VC9V*k((n!&|3Gt_uPYJ&H9kMSknKNQv05S1Ph)$u4ti8?hBn%Xfv;e=RS zQ^W#Q*!eKFiyWKC>!05oxb6>k(rY*w2ss(NQG47^Okvg6&5+PNBq8{g zYRQrJ$2y7Lf2AldAPZ`$Sa6MW@fe$Bs5mjCB2Q-fu|rh+r)IM`l~tvEs)}Y!D=V&! zu+o{+XJ}E)wD5fQHQekKax-{ibjBfW9@!-C;ANeGWybnq*y3i`NIb+4lNAyZd=0hg z$i+k&iT|0VQHG|Rkfw364vu0hj5tC3XQCz=qVhtbilnHcm@C)qB4JCiVI8x?XthtM z)!>Vs|H>6^n2Z^QjD8^*mD2ftYvLNFq{>h-Af#ljRB{v-4+p0qbRr7tCJT&a2Zfpq zzT9{e^W{3t)^jEd6Hsdi7!ne&RQi293gM8|*Dx8&4H?5iGFC_#M=@!NG+Z2Rni6*X z8hfsxrXZvy_#WT!9w_=%OsT9pc!Uq{7Z{>OhD5EGA$s|c5%oWJ7Lyl_5zb(P3x;x^ zjk5^14-2?ESejE=SyfV25xi3v)-^9S93LHW{4(kIfBX*RUo6!eSoaH0@fO3=u^~@` z@8cb-RsXPi@ov7YXiC}quCt260)36q{PL%+;!w*^ z$(E1T}R=suFCow7?8mX%f=v=R`f8eYx`dD%#Mc@(qhI$f#mz#91hkI-Nf*VIrmFQg{; z*3VJQrX$Vm|DmV^L)3zhD60(7QHc6mYXOHH0^=Nps6`=B&7`RR-!t93`NgHP4!R*3 z*V6EGamdr)8$|!&bReuiI~Zb44ThN#nO6*h63 z@19>=SyJjQDXT83t}dN9xqLylloZz5i)R!DpDpP%tE#fNw7R-q?unTh=^lT(nrT%$ zrpZ73?SdcRZ>a~KO^oYq7+-b-#{E9uUl{Lg7+)R=XRZwAe|+5ki)+ZNs;Z&|VblA# zK8BZPhP)ggy*ysi`>@IwY_z;WCNJ-wRE8&zmi`yHGagzso%4@vr>6(f{=)VcL-%<{ zY1fK?LQvcGJKh-nV}MnSZ4E#5?&vQ;Ud}TH~bf-wBb|n z%E{A1*nX<{J{|oUtl1qT0m9r}6mR5z` zh6{7{Y{S`&A!pB*&K|FMR)l+kVPaMrVm5`utd(Mp^E~VDnl3UlZ3$_*RBAeIPnm{| z$eWC&FAp_+xor9HhgA}DS=F7d4;;xF@Ry%5I+|_Z{#9bSAoiJS~Ojilh z)xvbm*0}5AZcy69-6Txc3e$D9LxgD?UxzZZs%$1tZRb`N&zZ?W{)n=fJYiona~5B3 za?r0vl~tGVdP2^$qN<|en$oJ_MHN#^C-yBXDP@<%e$~}Hn$NeE9CT0t@00N1lDbFn zz3976ds!EEk6D!3rA0edH#w|)q%ak$k zVbJgK*ERTN+EW$$-^P81$sdI25n*~%ntbek8F2NNW?NsMNWcSrLheaR zO8Y*pYP_bji9bP@o))HOq({&G zFFk5~)yS=12a}UVCm1FBMObR$3IvHK;y~DRuTD%MfJWH zd*df@s)>s_b5Y|K{I9shiSmyY9fJP~{&nAfjNkA7Njaa(Ev+dkE3doS*1gVgReY+| zB5zs-QAzVHZdLcU)%?~I`qAPpb&i!S9YveoGzPh2(`Ku|Ws_S}@WSaq`uBO~&7dVu z+FyAWbgrY}u5qLs;VHxY2g-1yc5l2`CO%s0yYO41@`GnIuP3eU02@Cgen!0|S{^@> z)K?1AC&KipO#ElkrnB`+-wvllJ-&=CEiyAbvO}e3)*a>I=fp3pw?i$8KN+*^9k553 zzK~|W#Ow=uXU-|wJ#JBEChqvt{PO(bORL+Rmd2l1uhz5TS77uUVWNV+kw(7_YQ3>@ zi;{7R{BlT6Pfe3XWt7AF=<4`&vNuH>#@5GQgi$sw_+FTPkVb#R=&m=FwSPn#K}}7S z-e+=R_4vX%)#mss>lJ!c{MFcGjQ?4fevvkVJ=8I~)dw4cHod7~6OQ;B<8PDdZi>G- z{+9S#h3Pk8`dyg*5T?Cb<8P0@150-a)1N|Bu%t%)4+q)Z&7#~V7Y02@3&`wwQWx+3pbb_w5Nr)AyQ>ZTKO0tak$$1y%Of|YyW`>M;YTf80BqcaybRrdHf-4~z zlg)+7|653tEiw80bq`%N?5YWiydJL%dLYBkG|%S`P%6G~t!)$Jj3Tn(&I!yY61obt zwNTqg!)-CVvuWq*-7_#8kYlOGpYE4+=aHxEaJ#+)Ii-j=TqSf%kW-2igxX%H9k3f5 zT6TRn>D_DJGh*ON5B0}{?1Vm8O2|pbO~^~g7iuS=b{1+Ep}Myw^iAkzSVCk<(9-{~ zFm}5h`ud*65j+@?FjmGQ(o{NOT*7$61CLPC_Qzs(n_2JAT@}I7|UC%rQQf^O}HGpR|+*(sCm+EzO?I@byJEHy{Q4Imq8M{e(yn-nhDzy zZmw7FEeW?`_jaN76>2|ex4*QjHeEh`$XF(k#5Fh;_&oI4@UC@l!bA1id^q6|qnri` zbr3d#UF(It<#|ue#wJdu`vYNp>#2n2>vela!cM~!%7*SYwcD{^=jnfpW%`3Drke+r z91>nhcvG5+bfQUkE8%TCeOIW%g<2pz9f7C2GA6y%w12S3eHmT`Jtl{B9sM|APrd5C zNchrFH%h3ZL+Tc$I$t|rG9>PYgkS3o*>4HIBW|xy#|m|v6gOU`p-IgYWq@HRJzbu! zJas3eiKfIx^_fg;oY+KZlNc@3i9$U|nkZde;p$Fac?bLl4V{Sz ziMIM8nP^XRVA&Os`j*KQRMw0ijM4YMB%_U5e{6^}I)hGE2#%pZFLlM!kX_}m^aayh$ zf<=k7Qfj1mRia2-g2|;qJz1!WrO8t;xwA`Qp}W>F$%&ZBh^OvFQ{q{P=Sh{3P8W&i zC$7ZgYN6H&RY;Rdr1#D@9{*q_*J56IspMywkE@XkIdF!JYl-Ub0~j@p{A3a-p7az|xGau5q&?Sh_9oZfPmf zTsQHa#Cvh|exaTv)D_azvx5nFuC~QT%yrYexX0NHSJV6lEf*#}n)qbB5qv7~Y0N$= z)N_S;o-})YFoKsY_;V;H+)OWZnH~r(`=({q9WWDLNPGpehn#T}Url@slWz!hl~7kp zlWU~OuBvNe)_6`@X^a-W;03Zj-Fr~3-%I=$lM&}GiJv5XidnW_yHKcWrP+1TZ0q}n zUSL$DH&d36H|?N2f0Ov5bUtF9e@grrlWakEkx(~ClNV!hSMBR%yNiR_$xM|~je{Mx zC>B+!j5IyAXcn{5#?nZrmkM>GGB~jw@R54f4z1`AZRn)8$hP-pkdh3%+k7ElWi<*G0BYh3ZY&pO12nzR|ILM>j451W3WUL(|NrOoTG`NH1mxzD4HI!g1% z^KM#d-Lr+Ihb60Cli8LWOy&vodZFGRP2Pyf-6yQBJbfakw$!u$9o)lMFHdc$0lBIl z*2OIYEJN!Jz%a{jqhsDI)LXD@bn($+-XHc{P^_Qp#sg<`%UH`v^=d4%OhV&iq24Cc z+oi@kq{b#se>G&-ct$fhr}SoI$c`C2DTNE1W|@iEh?gyv3QHwsXAAW%q24Xc-Xk;g z#LFLeR6`&q3wiFX+k-6gEGJ8)kw#0)V#_Ip&-V%S{{24hcFei7%|!=HhJ0RTIjdev zD=cRtjv?bgp*|$VJuH284r%X7V_iuO6s#yAFK}?O*I3rq8_0_+8!*b=jE@TSF=_O1 zY1IBePSdI57J20rJi{DD{TT=4d5h($dX-*nxdx-x33agbMHxW?)i6oHe}qQKnAA?zp+s1l~PKel1kFnydy_liRGn zPgyPRsY;`nve$EauWms5CJmBCBb_jl1}6>la?a&#-!;38K%i;M*2Y$tfY-eTkAD>dD0bzxJE*2d_dfiQBS8o ze86NVx!aQJUA{=VC5h#Wq}zqoRA|vsoQ}8`_SS6j>|q?2y_x%XQl9UieB7H9T)&9e zNghsO{UYfxp~VUl0 zG>bHvgwb712WAf*%XO(2c^ScbE@_!{$Ht`BlHSH>0Kj`Hlf)M1oHOGmf!Rr zE9X|+6%D&2N%|z|i+c5ane-L1rMVkmnU+aIo(Gj)583>TC5H!HPSTI>a@DB%jV4Og(la7 zwT{@`9c|w7>2F3&`h$}Ud7~!GdutnOM@&XMb6GoCJ7dxu_s< zb%b@Kb(D3qb&Peab)0p)b%J%G^(1Sdb&}9BgccB5ccGmqv|d8X5?YSX@`Tn$X#Ipn z!-IrIv%`c|AgxWd7F$cKrPe9dsn%)MGV65f3~RY{rnSOaX`LmskwTjww3CE3S!g9f znX2{Td!%(*fhH^7)?Gu^q~bf4Sj z%TIG>dNNYonR&T+9-q(S_xkfghKwCgwH^@+<>Ur@-t>I0JKvL^?e=8_a@?7LK$<(t z!{0qwnSM`hcF52YLs8ENhWz;%ERbfWx^r^V^W46ij68Q{R)*j0;g(5yYL+)Y&zl=E zWb6W<^^RaDH!CL)2;^kBQv+D@d2%w{fvlVicaG1Kna|>IzBk|x88RMw)UqQO%F4;{ zXXfUlyVG+sGjJ_4$DNg)mhDdSaZ5jtnxCGU9oiAyy3%khH-e$u{4~}K^7Gw1wS}Qv zPr#j>mg{xrr1`S)bA0)!8TsCjq6-Z}`4J4s*{(0ulk4_n=jFJ4dA>Y%Hdkiu4A$My z>St**%+LnIP~QlKa{XMyX8Cg6USjL^`Kf_SFCh!$V=jkv^gM4)NRhF(r`A7$A#X-b z!0+|?-2q=FS@RN}ET7NsPS46o%}mWn&&$qD4;i}LP&6=tp&UIT;?xFwgG`xP2KpdDLP~zT2OZotu-I zk;_n<7cz8%p=f9XLuuKW8UECafIBCZIQz1)J)}P`*Ui&|*&csRAUn$+=Gv`>q2Un> zrDvsQrsk#QyR);Up^VIQcUEqCnma8sKR-2#4wsuBR@rwMhDJm%l%K}zG=PNk3_?t0 zqbNHsL;fcxn|lKO9FJ6FJfCU3-^w$Mo2(BAjsHF*w9$pJ_WjRD?tcbzVCBAT+U3JO zO%$*7vD%nT*2jf5=0)W->vrpt{Fpa@qoS&}D4t{8?;2I-;tmqPn=MY*x+K zvWk+@`SP{GT7@qV7%Q~#LX%^Vb%%AQbyrlT^@YONxWRne*}jhrEUlPYGYv~&KO0q4 zKBrV@<6;wcDH%$p^+oGTfPv z-6!1E1mQL&v(q98KRZmgJOLO*X|vdPxG+pY=r>MVvi!|~h=+dD(#9%a#NV{HF{6q2 z8@G)M%YC9{{zBHgHg3p7JSJf4Ue9lO*;wF&C>wR%Q$>H3uFex6PD~ksrl=0(D;YJ#@3f!m^=7C0*y2O%7?8WoVci(oiEc z9K}~F)X`A)X~W1b9M{ofyc46%59tZM6LYM#Rf@QqNF4#jdo9|+kbvNOEl2UH!(jt* z=xfChl4QL2qMaPl6nybz;UO=+{O$eW{?_{je@olG3EL?lZNc|cj`8*{;X8KLNtf|v zidGwHKKN$JvD&9FQoTe-knt{xwj`t?_%6z^>dA+`2ophr@luMmG^8Q;Qp)iv+`pyi zDr0mxJ*4S6Il9a|^1}UxovH3%w{LcNMo7*r$5YOsA*w6qb|X4xh2-2V<;*$q=p13U zt}E+4Ll!fJeUF^m9{M+AMR>c(=;`~WDv#RaJ!jivw#RKx*tQGpT%nyOwDX0wa%+P| zwx?~|ZO_(j6xu3&Ahfk%Grd8);a*zRuY`A;%BHaA2Gi!|{j&Qmm|Rs>!rr5EifiUn z9rV>JOp%SLIlHkBt*V^Mn@&}7?wXxbR57=xy6#ymG?&?Jd%1ShX4{LlmxQ)jXlpjx zUa`F@vx8ymXcq}>gU~L%-1dd-OWRkruWhW+T_Utgg+`z*6WZo+<0>m> z=JQThW!3l`;=_g{m1Pw*yaBc^Xt^UQ2NqS=45+A_S7G=*w6Z$*)gOb3cu~xn$M=Ag zmW-&JHBf$s)c%8ra2w-Y+J1*M(7M;xO7MRZ7P) zCb)J*Xq$$~>wKdu>?S+6&cmW(KfxYdf1TK4Y}@T|vQD-J>*VT?p+q~6Ep3s>vs;by z3GMPNcDvnScM9zaptR!8PqC-kJ@zy^3vAa2?OLH-C$w!syWv3WCN6S&12T4Q4>u4(mNV^vu;AHy z$l$SvcKtAUHMmb`mOZ9F9?H1Z6)f1o+`}D&HXokJqKGR-dXWfp){5ynpr_k;a+C2vXB%j@qH@bMH zA*7(jJ|{dn^JR3H_uoBCF4*jg&SLv1byW)c=|soA#D1E6shw+r`-FDC&>j%lgA76T zGwjRkXUXVrasQyuw*N1NAp1%?w_~>0SJ_wF*9h%lp*BbNP@_HAULVHSRPYdlCp*?%K{d)Ti z_8aXt*(sgpg!a79b_i{!(02WoMyxd1>(VpBo+7p1YrikNtRCDyVugz8QTtN!W2x*bp?w|tcqd2ay6tv#u=o>c7;tzUoTCmiadC8W zba(V{oapE&v~Pv>ozT7)8Y%qcz~COddmfBV`0(z?apW@-vn!4~rVB#*VY8!;qp#3@ z6xvV2(=)~_a&sp(_&}QcOImvB;(fL57<_0PhdX!(H$0A`9P*KYh%-^g1jj_;SSYmL zg!YFFq&YZ?W-Zq-8Pkqpq5VG07Yf!?2dB62DWhYCqg-edU%$x=LKm>WG$Q$ga9v%=5X?W7{lx%XpQ_mji)K15)x+-6Eye3Zxk>(kW*Bx)z zmpR@N=0ssmk`oQHeZT2*(%JokjO6` z!SOTngKr%?Rux|KKRTF;ALfkh_`|W+@uyR9QeF;Wb_%mgn3ILM*@5^>A9p*Mv4=&*>2dM|YowZT`kg%v8#CvL z&YsR*&fd-}VQw$X9fY}~Fn1AV_ko!4L|v*+4sYJ@hi0AmPF_vl zDF-uWu`s6&_XI-Lr#gAd`H%yG9-?SXfoLhwX#Nlb7%U9=>&TD1F4w^+d zuXAp5UN6kOgt@mcXNBb6-@Z!78d3!w(yW9Doj99%BALm2PhnL2=f489w^L%Lh<_A`AuCV-#dS(Ctkle|2%BG zT#75o)xg!zWfJBg!aP)%hY9m=VJ=Ncl!o0Ay zS7B@_ma_O(#kplQ3x=1@s;sKXshl~hyi{&$S}Un z%CF?z?Yh=Rl+~1%2J1B{%jK`F*y_q~Wx4{cZo*t7%+rLqT$tsvMEg8F(Z!w1Ev}xf zUM@QJWMO6qE!pDAcICL}fThAbMVO}+#nkFe(pptzxA`+XhMt0_`ewO>s>fJ-DE2313bj z%(I5XHJC7&FY2wXNlo1y)u5qC)w=f>(}s=Js>$(~Hf&r+U#K42rbzY+emtU0P35e3 zCF=CcwwX_eiFG(#ZQ6EbmyMBaD&~}zztE_0lcv%7guw+_HGDDEEhC1#^mvOG`^iOI~Ok7oU)5m7->pE~p;IpZi*^ZL-;tRBNhLH{0yB zT5Y3IgA4NcihDkpQ(0bFwYzb0v*s;Ywrb7KWxex9LD|Am8k&+{UNp73_Jmq<>)!2* zP{u{a()9<E(Ha;v! zaw(m!@!H(2Q^cPa#>NaT7*M*Pv?Mq@k%pZo_8d`FSy@vXrJSI|DGsHz;#Sgl-Xu>M zpbS?El_^T4GFz!u<|wBsrz__w>y-`4rOIW>X616_O66+hM&(ZBA!WPryz+|jn(~J7 zq4J6HdsI|Z(YEsn9s98~SqRxssCu(!l ztx2P=C|mf^45d3kmj4QM zj|vwHi&xOYXSrs(db_G!HNk#fCCt@ybz$b8bFOgBjcVhX?^+PmCW_&1ZY=}BJYil? zJGpjpVQj0z_tFsyW|jWshtR}_+8^GM{7^y7g7Uxqq}&@W_{rA2PcQ^faO`x85&vZQE1i=vtq-fpR$7FmO0KifZY zo?Tn9NzrQ?gyMLgARMe^{Ozh66V#1 zJM1mjyYjHNrQ!>Mir;g+FU$-NYYoMRJNQ%Ao`c%_!u6#vuNUTvTK7Kt&ix)9EcH9r zkMgkZWt$fV+x*G(voJH}T)Mx_)gAU9Y=me3$hNn(;u_bV$%=Jkas&P9WK*)5tRR+{tL`TG`fwWBh;$m!Y|A7CV*c zNO-9kU!-8(CY$^(JnEM0Gh%Rq6!gD&NGHN9IysQsZDc_Wv11~wFqKvmJG6q%kPh8| zX>H6FxEgMU``|Iy0lVO3coklUci=tvP*Gx=LTgBcG{}KG=mY&=01Sd5FboQy1g5|= zm=5Jo0kfbAYTz`u5l{Ko|@|p$Lkh6tK&FS4zSRmn>{S#CwPitrB^HRSg|;oU&882Er9E_n&OkgY#KS@?EyTn^Of1C2LQE{g#6nCg z#KbZdYJk{U)&TLfJO{7AkBXAi1n@Bldr8Md`p@F>tGXXf$QLUz*f@D za4S&fN!#HmAeKoV!k3D|n}CWHKdc_0e^`3}nyu)x4uN4%0L0Qd4W>gm%!h@r9Eh8h zTv;~)8mwrrqQOeutV|_r9RT~b9KdfI_H6iJtAcrO4qONi!Q=1^>@~Wty%B#B13NnH z}U?;%Hak2fP+5Z zpbt36m4h5P1_4?fXmw!Mu>h6;b>qNq$C+>$Yy;YI;H!hS9QVTg@E|-1Ps6kDJnRH& z%JDuBf2SD|Aqni@1pIR1mlL0y#LGDlhQKfw0i%FCILU((O-}0Bc?#6RX|N2|!)DkD zSHrb{PAB@D=yMWlCoyq822a5=K;1dtfUn>WMR94602Xk73()3j4b;1fdUp{!R}aVo zw7JFub>c!F%L0lEjV?60(C9*=3ym%`y3pu47tV(Zfd1w}v+D}D3ed{Mmg2ezs3RA# zb)nt$C=g56Yk*eQyYN1I2%o_oAg;*@Gy-%dliOtCmrQ*mPXY8Lqc0h4$>>O?y=3}G z@;&ebP$$W|U^l!3ufP{TT#~v(5r7#uny*a)&p9AyYWFR-qYvCL?57xkiunsPPjj#ze1GUtgd^9H? z%^v`2sre(Y9njJI8F&%igAagsH78!piC1%}?>C^nn*XUNEutV6=#MQDAqi~Y1Y*~s zC1e5dXfYqq)8alL_boWSWmC{08JYv1Z`m5!LVF3Lt>kcpwX21&A3dFwk`-;*g z8hkJSM!-ZUgd!mKZODC_nSjnV)KMGyT^rhH!|`o)!@EEqYV$RG3*Q6zYD2u+sz9#V zCIT^UOU&C6^R}&ln78c;sgMRf@IyZs24i3<5SzAV!397J+7g4d#GoxPXiE&*-VD?b z_nMWqUnojD1uQ@t?Z`(va?p-Ewj+=2$YZ-)Adl?^!6d-9c5{H*Znpr)LAzye4y*#& zYj+J0-*(h+yL;h&cmjw)yO-e|_!#!U4~o*h0hk~fY=H0W$w7M$cmYlAhXS?Go}9EN zw(Tzj+G>w)?e7HIYEN73X{-H%@Gv|IkHdDL?e=fN+wd;D4<796?BBo z;09vfk$iT{1o}fqeD0V9g8;uf67P1+glVt@ zIJPsn=zJFt_s+z<^JB0Zh-+t#>&$UoR4_v$XadB!OA?UtE)H-(Gf0D;&=;ufF2ujf zC>R5afjo2(a2hOw<$&HUXeE@28~bkTyNS7*n7gSbcXJ>PZsOo34sQCAI~4-J*yBDC zdI2$a_lJQn1Zdwq7Z$)GpnW&(yJ_G3rlNFh0IdO=U9s7fJa#2_UD4mQ5A*|K-IY9c z#a>r@=sFH2z)3I(%3ub}f-0zi^{^SX!WD28Tm#oBN(w%uq(cUvKL!0M=ug=MuPaI_ zno{vUmH4K{Ln2TYsnkO%^^l6jRQgt`7qF9xomA=~H3#wm&8hgGIub?$T2l*QG7#(3 zGhqds1Lwgiphi4SNCsl!S{Q=<}h^*BOQaI()>@ zM;v`)fmr(P17hOa4o|`^AU?hq;VmFOK6Lm#gFQg3e8k8{jM8a8{RAMt>C|_69ME<; zaZhg!tpE+_J)i`tVHuF4^fj;+E`m$oGPoHYfQR5=cm!Sp{7?TBXg{4irGE=QD2kuj z@|%Dd_!|Q?<|h_@7jy*t_R|mi)R*4}ejo<^NkIMh%YZ!iE1?R=f&XMU1!`df+ylFS zeE5lj|7-XT$c6tGAP#2P*a%$U@%ZynIiyyGG_vQWa39=4Ny~=3t>5&31`E3 zunH~!VxD;oTn9J6&2Sss3B*71VR#;P!ftpO$VKLxKrLkMfv@0OklN`x0sIe;ivWHE zVt{%GP?G_C3J{9`ISG)HKq`2Fd<42fPsjp%3Je8u6c`0#VFHk+zziq{{0!h%;AA)z z1S|#o44e=67g!G$!$u&!0sITx1h)hJ1@49i03QR7!7K1CdCqN?1G;+5hEt#x&H>`qV>Mg|#I6U&_aJsXt^;D%gWBjpZS=Sk?t%N^HAOj*n4E~7 z6Q{yT*a6hXiEjh`p7%1dp3qbAg?_u09`$)-JaBL&xL@Vp6KYg z3AVzOfQFtsftu_|P4+}b&o@}^^FTMqfyqG4^g07Bg==9O+z7;_7j@9!TBaEGGgqyhDlL*3+zg$Y3HbEd&`mA<*=b2gj@7Xr1B zgZ&(Q&DjE10lwu>6FCpUlduckg^z%Kl(Sb+a+9GQ;7jgAAf~ysKpbN9l`6WOt=a)kzQ~^5jcK|-+e+KxJ|C6HhF@XkgkO)?A0KWEV0iB^Mc)$l} z?9&Z~0P*gF&wb8?4S=70t^o4ZhrIQ<2_A>%VJA?ReO?80_jwyW0krh_3cdw2^&!rE zTLJC%rIz}p0kP?u3BpZ<-2T=geM z{X0PyAV2-dPk-{$zXzbLe>Mz(VStwYg)kY=)PEYxfVn{2`kxG^!V*{pXzYI*5Rd-o z>HiuKlm5h{Ke6clIeZD}a1s!Y0cAkW2F!*U zpzQ%?!CF`kv_F8H4Y&%ffg9jvK+}M`;XZf}h}Qr#4j^X(b^{s*ysan$z0ezo!9eO} zAo&?ceg=}Cfy8>?U2qRP3QxdOfUSW$;8l17q@DNRLq!=B3%vl%gQ%lH*TOcq5pDtM zX%IFCVPnusK+FcAWf1WiL>>oy4d22~K)eS1p(uli)nF5t!2%tCm<{d;XdjI3!F^!> z3d)d2<;9T2;^qSIY2&!YzF%GkSl?F47mgFcgW-LBs>G;VaP6c5%7P=hww3c27BO3 z_y(xsp*EmihmHpU*d6)=>;P;G#l}!<45c3oC4R#iLQ~KcWjMbZ&hLi54sQXU8U6v# z)^OSy{sj>4;j}aSNB9MPhd&jifS4DkZ~`;|>=nd8B3Quz$Te;5ShtDpcz!C068g)kXPVH(VU3Lwq}^nrqTKwb+LLoJZsg45wl zI2+D`Rd4~UgAH&gYyxsqKnx4WO~E#}5va=o>au`572FFCz{BtuY=@`eIoJvGor0I) zHK1+_sM`YKUholo3goZgEBF?EfS=(v*sCZbqQC@ZXbjO13ki?}cA)k~G>2Bu7O1}w z)Zd7%-~k_GKsPuMsQ(c;kPrP}APj-wFcQYVcsL1)paiDEbeIXVpc>}F0yr5?g(a{I z&VUtgF06z#uofEZ8*uV+Rpe3|{_RtC3kP2S#LjZa} zFUW>G=nDg2FbsncFdD|eM3@A{Fa^q>94es-=D>Vd1WVy`xC(B9Ti|Kf4fsCtYxo6z zQ9dhh}W2*Fc!wcX>c}B17q%k$6-5s1wRA17@G*m&>VU~ALs|u z0NrD&VI^Dy7Xvjgb_eW&A7HPd5K?6vddH=K4~79h95(?Lz!D&i<1UBm;YPsDIP8qW z&Nymh9R82{MN!5R!|}v$JTV+k4##6_JaHVq5b$R_wLShaxEij7o$wmG0lzBBgodC( z3S>ez7z4y_LNTCa0&$#h4siU0Tj6$i8QuY6I^lOknTU;vX28xw>`cVYMEsdp3R7V@ zoDZwuUU&@fY2usk5qzR3Cs~19p419*VGs;~*{~2!h6~_Qz^9X*1mbbhZrB6F_ax#{ zr~|eN$#J0A^sFT01v^3Kzs|oR+LF`-~bo+p%-KU{b3Te zCXw?=)XOAnOj--K0KQGSAKnIhn)I2X6g2_rrYH%}QPc;hnWA!-1M`66i}0yvGmz(^ zSK)Q|Q&A?L0F8k>PsX3g=`b9q*~w^`d@gYO8&IRAt)VXrg92Cp)K=+IxB_l~n?N4(3!r^UH^_lJAa7IV!$PTM?VHuD`I-!nf~lnVT@$%_d*7iSg_T zp#9n8XZ9U%m!edeAr|6+_*9Js;!{OERFTUn>Y?gw_yj&vlxo_n#+Pb*sh$r4P6KRJ zKMcgECK{5!2571|1#01Gpr&eGQj|FsXa+3+{d3SihtJMI`5H!lzR0Gj8ac^;bQ?NyZd_%^>0kem6%Kn&*J2E=>*gNm}i0j;4e zEQNF6Ja`Al-2&QK*b}h5upe9vH^Z%pvWU7|gb$0XK%Fc?`=WVpFFXcMD9Xvi{p1eN z3FgA7K)g;ShbI%ullLgfVq(2`GL*oxKx`J1=Tq?g6nsAg|4u>EDeK@OK-VeX0{)+x z0|SA)oyzY{-2(W3>JPA2Q3$zG%kOJP0(q@vOsKs9Zh}7*MVtVQVH6ZX5%7C)C)}+l zOPT^cF2Tno{C>$aAXiHsf~VjaMLDfA_`nYrz@=~*{G=#^R9Q+rFP#FFFdKHjtMIy_ zETfi|aon;@SOII`LiiZI2K+poxSu{8M!>ajE8MOq%bP$VB*7R!`*L!;oER*>4yf@n zRM3I?K4TD!0zP{N?VNE5Yy@I;2C+I5t!L%}pF491EQj-96+8*MV7H>2MNG~jCT9_o zvxWlsJ8L|g2kU@5oV5e+@hp5?;eggajjb2~6Mea?f_!3h8V1Q3-Ec(2k;HxGg6cb8iEFmfH++c1M$!t z$jb$7p*?hj&OkrApa3f2Lbw;Oe_<3f25hW-5nh4Ufp*u@?poSiOJ7_|O|AU`i2GVJ ztR?PiiTm2$;ZH?b*8o&F0h)jgagYeq(K-ht19@3TUe>h(w5{s`DUb%~kO|$PCu9Nr zaUFSDN1oQvFV_tP{8%>%#=-T{j!Z>AHEa5Eer%kl%I0dfl0D zHk=2mfWWRJ$Llu0rLYOM!j*6hY=ax&7PuYmf_vcsco-go?eH{E6YF-uZg?49gE!$F zcppB3Phk&y1>eFC@H6}ddlh9pxmj-lGmxY8(Ljx_Pkv3N2RFdYa2wnS_rU$|5IhP`z*F!n?0^^GC3qFyfVbg2_z*sU z&*4k>2EK=%;8*xVQIMfr)DSdi1Wh3Z;=uwoa6&U^32mS~bOJY|f*1S{fF95bvLO%p z!T=Zy!(arAhH)?vCP6VwfiftEN~nT4Fdr7dDX<*QglpkexE-E@mjT}|`VM}Fy^68{ zog2`%Aq57(C?J;`YG5&tqYWEiD-in)*x7)c4cOU0Y%V4y7pu@3xax;LVCV>)EO2q4ZI3*lr~2E=jWRd5sB0@z`LZDk{N zHc}%S@qgq0wRE4+U6tFufY(y#y$Xa-64D@{gwT^v1QKdONTDbJLQ!m3x4mG;E;g+6 zB1P#SAWcL?qzXhj2%-oIC>BKS!@c*6@tpmE^?%890XIGF{Lcdnc|!&&Y7a0DK|2P@l4tL2sW5^(z9PZ{} z9_4K&qo=9gAdjhg_!aq1mCLj$IBS|2Pisv_%xaq5opvYAoAx4a;=F14nYNzKIf;Cy zoezTP)rq7&?eM-#?~3g--5Jy0VJUi>zK)~lY5M6Pm{AdXGov=@n9&nE zGvjvd;{p7BhMs0j$DC*E=U@=byoz#Ez?^65XJ%XSu(LDOGV@jZe&&1VW9DYI@Lv$j zDn%LW$1J~_)t(zL+gWBa%Wr4-?JU2Y^#xnm&M*AIpFuFY9&sdK9<%MoY-h}V7Qdfu zuCo`hiqDYY?6b)5qX-%iOD}TC=OLcLo_{o(g)HXEZ~jH?bJFNeCgwKhK_2EqX7Ler zV2&M_V+ZD(<06-WV6MF9dQay@(F1kQb@$wRc!bAr#@q#{eeP}!aU=-lU4y*mRl?uS zd1gPa1BKkk7`zMfmSK11dw#y>=X-v>ot;0B!OY|n^fq5@^VK$AZ6C|wW3_xNhmWT) zhk5w-Pn`8hN%}E}>v@fLd7u3p=f@yeU>*ySN#SI%-oheA zV$T-pVWIjKp5_971;L`$bi|%6dV&{t3A?e#ZYbgDQ%GB67?-{?h>T2aI;+=iM~>|%Ei zeA#OvYO`6r0vUW(4tal8ld;^-gM801?8KVZnB5xpta%-0ulbP6L9n(o zWf_hh*51l`)V_905Ui_81d+&nop)rNcVyi+e22W&o8fv{uJ3}Z*DvSOAlML%Y&Mwl z2EA|4`v(1OP}7Dp{1ybCtLyVj^#A!preJQLU-`Gc(f`I?=zn8A{(a*d%yr|xLGVQh zN|DD9hBB8WEDM57{(VzLDl;5CZqnl>|Gw!n)&{|s*V2F}9%no+aEjl#5CmWK!Tn#^ z=dV_=kxfDHbu7(jfnECA@4kMCBmB%SL9jWE?&x!~+&9nSqagSuq%7qb#u#p4K5GBQ zjK7h=maDMiTLv=%`@Ll)VY_|U z-i7f@;0-*p-80)gv!fmUeMeX1wc{-&@&l*&H3)V(XQy*^dT!^7yotXhJN2;hEPCE$ ze|BZk6MgQI$F5I;;JcDkq6#wmPJiFs&Kkbt>mbTd7L z?rq3#_aP2rw!3AsTQ7SSuo&~&W9Rp*W-S}|0)Gege8X0D@Ev>Ehra=PoV7>Kdt|fc zXY{`3%DH;mWAFBu{~mk3=W-D2y^0c)rW_T~-`?t6OC2IZ zC_c;Y{K-FD3Vfr6t0_qt%2SD|)Swm-)T1Gdh@&w{G^Zu4X-6s@@h*JdjZAvcmwx0@ zz#wj5C`F9oCT`(&?&Kcs<3S$bah~KE#`7YtFo8Fj$a{Rq6s9waImq$*Pg%_xzC?!m zVn`;1Ht1oW+V^$E@AsL*zQrtK1?w?`{junKe=FM3p6k%_e)sP;$NlqJz#>**h6kQQ ztq0!bUF^UCvp=BDgSBz)!FZY=--B{J==_5(pudBDbMOP~%|ZKeP;ZB>!psg;p*l6G zk9i$>6u&)W{|>#1tPaWOkTVXM|KYNf$L|mO{oy*)<$2V2_#M=ESWk!5c=)3rIMM*M z9chN_j>zsv8XcL5ypAkIUPo3UuOnXs!BJTqmF-d49?hT!IppFuNA35~4P1HFe2#8s zXAm5d=`qh8^V~7Jb8H~P8NnWY-~>N$ir={q1V709hp*Vow|G~6C}v*}9GB^F=N?zb z@t*W159c2@uj6Ym>*E{Qgx?!1i{HCF`JVU@Z3qcpPY>6Po56~Z3RD>@lPcvMP;gT z6Zdi-5ArZi^DKus&99t8CO?_?PnUz>=OV^(C-?9_9%CGS^YcIai)T-T*pX9quqSjy3_lvuJ`7a1g zyX*ATxa)L9Zo%`XJ%9QU+kQ24*9Dly}!x!H)sFm?BC4lH?#Up{b$Qi4t1Zc zOl=~N(b<o;dV#69QC@0?7|ncq1*o|Ef2cbs#_xeGyXUKZ!g{CsK5;Jn(; z*I+zvF_HK1E}x&t>>&8PK8ZA?1uaP>oi~`mG(7+NmFE|-I0*izO9D;s+dpLTM>{$o zi$7%Whh6<+IiIqDjX`iBlE%36LNnZX!8>xnofp(~VGi^71b1Cn$?72ZQ}%z#{Ld8H z;I2Qr&=q(6xt8^~1*`ZBcmDHL5L}E!h8J7m_ZR*C;&pUmI(oV&zl(l<(eE#+`Qqn6 z@b3#u^!}*S*{J@X=#5sNs!th1j;XOWNG9NKF2(P+}#~8;`Ji{xz7KB%aRHQQ1s6jm% z@Fr84&McgF^&*x8;WbTYOMBAjNG3glu!J*8MA3*i5=bV6DSXTV7PFK!tP8@Dtc8R(yv(b-gFUKL7WY=Fjan<&i%RBMNzIi$ zU=Gfy^a%@D$?71i?D@*Em``QBRZhZeE8CaK^YL8eE6;twSA4@(cCe3w9N`!zg0PAm zt>UaI&Zshk(Tv3$tH`&?bG*hIyv@6)ugXl!s)`z`=(UO(t8BrHt6qh?sixQ$_iGokuTYd`>SrFn4_HHFa8O_ zYGz)oBxNX1C2A2tJ-n0EqEWAJ$As0?Q%$ec%(I%_s>!t4*T}QlckE>!2a#vBpE=EM zoa2umtX`QmbmLa^SKU5Uf0_x%wE723#y!>bSY4*o^;lhx)%93?C7+=ue_q2H{+`rm zO-C}xL8diiT4N0EsWBGy*Kl7A_thB3Q#`|X++E{CX5*e3%UQ?gY~pKVSz|X>?%j_* zYv{Aa&s^Yg5Z07qP4(2Y$2IE^i5zRnv1TI8NG1h2)a*oW1~QmY+{7*1&Yj%DV?2SJ zYCg;Jyu{ncs^-)ntks-$bitXmoLS46wMH-+S=5q6Em_pMpNEh|t;czi7n#VFvp!)V zvaTiTTC%7mi(0a%wT+#~qL!K0+Q$$4%3ncPy9A}EOf_m!8}D@O7`$7xy{EO4Xihu2 z(uYA@&q!|MW^UsSynnSHMi#ZrueSNsmO<^ekU{PFsJr$GR4I%k3~!d($Eh;U|v*+-apggzsl#NWmUdl~T_b~9oM)0xEr7PAcfM(8)f zy%Fw>a9@OZM7S%$Od`(V-HXs?#Kj=2dkyAOw=DXstIxXntlJ1PsoS1Zx{*mQ`qGa< z+`v$VGZOQtJCh|Gz`b?dTi1P&C2&`yU5K;`k#-@nHg$=?E<`rLy^(T=Y)2Q|894y= zMHV5ONbiMj$b^wHioA~pc?9=IKEVr2WE%2`T!dUA?Lp*vHu5FgF_%a=MHaK4sq_FOg=nAcZu#)1N$sFpLq5#(P)qF7D-i)Ll>A_0(E# zEoN5l0+)lZeramp-umvVA5ARot?%CYt!PUJ+*`jBJ;gbn@@h~Y^KD?h z4Vq%U4O)_lnj7?IDE6qq&D_Qv+|B=Z40CPpG|%!puQQoBsJFqVY~TyN;v2TImwl+W z!C{W^3x5Y;!>h564XdKohV^KO{cjkDIvc99VQXaFP}aU(6E^Hi0p{9p6!x&;o!rBH zJjj#Cx1oF+zQD`8%@jVyUN%&7!_}-s?G4r5P|Xc@@Ev>j9yK>S%|F=7s1n$ZsB*|V zstR?GbyNeQh(Xp-ZRkWFvKYW%hA<30MA?xjI}&vldWh0P)Z?f<>MiVNl)8N{Cybhf z%%kSB3_V2YA!-fl*~~5uU^k*<9rXu)agqOmFgm0x6_9_l{G)3i|L8>294+VQ?x;CB zhdk6Ct@da&M~`L$PoN2@tn&CzO(R&%tPqtzU(=4drXt2tWD z(Q1x9f~=#}9Q`ZjPzX`HI$+ZGl{9p;A0lD1hqF(dn3EjXdB=2BR`?mMrv(zrB*pNl5>n&W8@qo=a@=V zC4zX8=}2dKVn1TC@h-;Xqs|z0#*9SPF=MbFF%R(+ui+hxQE!ZTW7Hd?Uf&T4V-}*` znB}N9M%FQQJ7z0;IgYwxe&am;e#CemW9)Wp2})BAb;sI|*xJO<41Y6xgD8y6K;6DQ z6vnDMR^74JqwZLB$J&utb;pk7exBx845s<)E}q*IQ7S6k;7or z9Crtg@EFhWJTLMx>W@=*oVw%W9yf*Qs5?&0ai6oDo$TijN0E8lNzU>+eEM5Ov4TVKJYvnJw(57`4Z%Jznkcr#OS! zo}l&wStr=>1hpr0rw6i5kafaH?&NMBM&1ceU{@04p70uP@HT2sP~BX8ej3KLFaR}$pixD-{XPeU4$L~~lwnvQg#8}e=}@5cSPo}0KC zH8+-b;|EZCW3~HEQ`q6LmL{d6TDj z7IimykLfIAF{@E~6Ypb_FZhZbe8*nC=KyMNa+ZIB(6^*Q-;xRwWu2(*#9Bn4{zP>r zsyk8ciFPG18FeRiCkr_z4q-H7xRtTo#X~&GIG*GgUST4Wna?MzU=?eSdE!Q7o+$G~ znJ3zn#A1%}D{4+sbCQ~q)SRT|BsC|gIZ4e)YEDvflA4p$oTTO?H78|~gN&1gq246* zCaE_`y}nNs`X*JFq~0VMC#g4SJQI*}lAMzkBIhJIC&@WU&Pj4kl5^4yCgA_jFgYfMYhupiC(lZX9iChuk=7|j^&;$H6OK_1~5UgKS6@ezwqcQbW2 zQ+G3UH~SKGH&b`BZR}(}$5C^$-?%BcBzC2_%$wVl=JIY{he%?vBh6DuCxf2! zAsan3zn(&5-&_yP_0W7Q@@}r?=5lWSCLc0|>8QWC+?y|E8K0v5=IU>*{^s&-zK@gq z%y};GH~(@u2wRk<92Jp!i)z$G-Yt?zLDntoNQ>)`d5a$8Aomsn7{m>X;&$%iDb(HK z6(*qe787|7wYN}v3$?efGc7(r_ATs6i>;`;#rGWGFvmE79d9A~7Ju+3{{&&O?32}= zd@Xi6S=Pz2PF8zzE860{Ozw)@ljWZ5|5o}QS(vQ$0qa5c9XR$BIvQPdy2wPr7d1@1Zx?9H4m?WChj#N6* z8TGg9gPMIOEo^xkW4WJ)c$9I-z2!^1ik)dG_m&fxg1lSWm6mF5xq)wxcgr1o$6k)` z13&T;zaa0F5H+W$IYrGWYEDseikef@oTBCwHK(XKMa?OlQFDr#Q}QX~7Sx^MZ%N7n z*zJ_Zc!C#rnb%Nv%3Dn0Bh;Lt<`gxje1n=()a)B~8&lq)s= z7lf@!QJtF9CyE&2X+jEZXph=ksl8Pu-pN+ia}zhCzE~pJQ*k|8t3w^UKZ1pSWP;;xlxQN;9$L%4wftLW z24GbDK2u+~#f`$1K`B&9kiL zYh>O==54%}ZA;>BMB5tFq7GTes_hVlQG|Tjde7U+#CO!fwsSdx_o3}?oJYUy8YBO9 zcBh^Eed{c2cNg}e-8k%XyJuL%S8V26wgqAP5>!Pt?XN{P?fWtq*|Z;uTH24o9NRmq z{Y$*U1l~kW?LXs7^xEF}?VaCVukClC=Jx9BP?~a7z#KZ*qYiPjMBN?okU@ugcpm+C zc!&3~#~r33j}Gf_eh2k;*vW2++0S2r|9&d2M$V~as7C`D(g=5^$}Cl8sWMA-cdGfN zcA+bJPQ8`exfAuI-p2#zH&q>}>PWRCsd`VH&jLPW6>C_}9@LfkJqI|yy`dzIIDi;2uYk7;^L(_@+*(-yH7{iSWh%+ofr1%0NOLE4}EgPzg@ zuEs3V%_3cY>H168U%LL%YvEl?H=}g3NH>dgvq(3K^loILr}Vz`BbNg7m#)8b{iT~# zx>=>`FI|7>`byVV`VXAtJQt94N4wEcJsmyQ@o}EuX`V&@9VcKeovz{g`mW z=dc5v-sWB2M^2sO)H#M^QfPyII_smeo$5Rd`E{0G=cO!X9UFqMi(TyE`7WOCqW>=D z+9d>~FrD_M=)yU4wZyt~NzI%i*(gne+`GV3a{u4dOw-`&iso4&i1L*LzM@)COPrsr;Y?lzmbe9S`B*-f3@)Y(m6-M-*x z5O#N7cXRIE0=;$bgxPjC+wNxDJ)8chzx!C8;dS2REo9w&Ix~@TclUN*iVVBEr@MQ) zf5kU!Wd{e)dw0EeKfzD@g8nkDM&=pjl5sQo&#(&_`pbBQS9uM+X6Q9z5>rt_hCVYE zvjjC{xIbef-y-vjUF^ZTkm2r(ZPV|_=d{(fEHLPbNU$UM3*n=LYunRp-bAi7w7vFCS z{lC+MJRwuL>(!TRWY#N(!Q6h%V1qn=(LFdO^ZOCG)S-#e06TH?OmUC>W&v+CW4EZo^UkKv3!kG)4>_j%I4QCh#T`c@Hz|y%Ih5J{yF6%2JIQ)FOg<*qJ^_q|gSt(?=eC)YHfA^y!JZ z`q-B~?(OpqGtpO{kFX1Umh&m@>ti4K*n>Vh*u^1^a-5UchdyWcn}4|+gnh4~1f@}9 z-};zu-=XNQ?<>5I`+UzW>^l$p*LN9qu&+D&uHhTLWh>_1SMPn@-`Bl;-P_l_ePz-2 zcP`=XEO%$QJImc!vdQvZWyvM0A&rQmDJ_sumW;Awlcm0_3^FmRtO5ow5Od4AojZ7l zM;XUcJj?T#RhC(0y~l@4VLJNCl4I7Fe2reRWa(RSVU``v(o>cl&a%T<-m5G-m8FmD zkZUMKb!wuQY_raeK_A(6J-a2XX-6vE&_i}F`qGagwWKf%*H zhkml(Mo-yxBzq=yB-_lg=dc_*lD!eVWpCzNwqsAS4{?;^oa7W|_%jIm>8)QyDq}zT z>8)RF>Y}fH`s$ZVE83!`ei`ViUk~ybz%caEZ!}}Lm3z6Lhji0Y^@(L4}g!%N- zPe1$D?_(CSf>o?xJ!aKUKmE+B-%iY_pPu@eRlgrN%|HAbggK=sO9k|mqpuu&<=DHN zM(8W2F-hnzryX`Kr$6>BM^8C+F2_5PGn|p!$UXdz`_Na8`Q$vytGv!zm`{%PDQ5U+636B6{mzhH{igf4(Ic z_OFYc`s=B`p8D&le@j}^nXY8elRjiKkkQ!hW+20( z{xi{6fBp1d!gBQ0|1&o6HCxz*-umz7AV)B#{y*|N7q}FJxdB&G68+>>rW!SgCWctz zNTD@tXp7!*y;r&V$sNoPhB1QCjKR!u^_BY|-m6^w6KqAdZ zrXzaE^G^9*UYMt+ynYNoUwQh<(^uYYjO7mQ#5`YC9HehSQ~Af6Vq#NHLOqdVqQ&;xxH z6riU9eJr(GwKu-l`RPYk7@;Z~zPr*mb;}i5$@F}ZV%LcZw zgPrU`PX))&SAjh&ID>u)?BRgY_!}{xB2}o4-UdYBeHx&z0ZnL%{sy#1KLhd^fPMxH zq6j?=(9-}t4Y&{e40w=-c#h{Wp8*qilXv+5eGM>^0cJ691UGRn&KT(T10UgWp5!(B zX5buTFwi^)E<*+bWiaq_Ht{v~b>QV798?E$8I(#o_H2-O4C+HR{TYh64089NTezJ& zxgYfp^8O4OhkFMV2jSon$ZT+BY7&jS1}9>_2Pb2{2fK5ycXn_Wy3v<@+`t&zHTW*{ zJJ?-=-8J|Lo)^s{7DcFaqp1Y*u5cUGsIm(+%cpp&L5JCeH&snL)$p|c8| zRp_k3@u<6SBI+*ukSVCYa27HwT+T{9V;$yJXl{k(R=5Wl7w+d^5Dt~)P#OC6VK`KO zL%ml+-{&Ld@-Yj7(02~QVYM*tVd@`NpBH%tbqrI-FuOLq1XZ!?!>>h-!++o`dLRB5 z7x^y;i>{_5WvGN%7df}cdr>6wBH0wBqP`;e7ul_%p4hFTdtjAgdx-70IbcK1Dk@%u#;iXHIjDKT!XOkh17+g#Jdp{67m>j&Z9gx%5$U3qp#5s=xuZZ z)HV7AUgA|I1mTU9u?siWCkp-FXcumr&mvX?|M!2cx$6J@XJm)}_n-g&e}^}&{6Co; B&};wz diff --git a/YakimbiTestUsingARC/YakimbiTest/ViewControllers/ListViewController.m b/YakimbiTestUsingARC/YakimbiTest/ViewControllers/ListViewController.m index d19e014..e5add6c 100644 --- a/YakimbiTestUsingARC/YakimbiTest/ViewControllers/ListViewController.m +++ b/YakimbiTestUsingARC/YakimbiTest/ViewControllers/ListViewController.m @@ -63,7 +63,7 @@ - (void)viewWillAppear:(BOOL)animated [self setTitle:[_folder name]]; currentPage = 1; - noOfPages = ceil((double)[[_folder files] count] / (double)DISPLAY_NO_OF_ITEMS); + noOfPages = ceil((double)[[self files] count] / (double)DISPLAY_NO_OF_ITEMS); [self refreshData]; } @@ -86,7 +86,7 @@ - (void)refreshData if ((currentPage * DISPLAY_NO_OF_ITEMS) > [[_folder files] count]) { loc = (currentPage - 1) * DISPLAY_NO_OF_ITEMS; - len = [[_folder files] count] - loc; + len = [[self files] count] - loc; range = NSMakeRange(loc, len); } else @@ -97,10 +97,10 @@ - (void)refreshData } // Get subarray and sort it - _items = [[[[_folder files] allObjects] subarrayWithRange:range] sortedArrayUsingDescriptors:@[asc]]; + _items = [[[self files] subarrayWithRange:range] sortedArrayUsingDescriptors:@[asc]]; // Show range of records shown from the total no. of records - _pageLabel.text = [NSString stringWithFormat:@"Showing %i - %i of %i", ++loc, loc+[_items count]-1, [[_folder files] count]]; + _pageLabel.text = [NSString stringWithFormat:@"Showing %i - %i of %i", ++loc, loc+[_items count]-1, [[self files] count]]; // Reload data [_tableView reloadData]; @@ -109,6 +109,11 @@ - (void)refreshData [_tableView scrollRectToVisible:CGRectMake(0, 0, 1, 1) animated:YES]; } +- (NSArray *)files +{ + return [[[_folder files] filteredSetUsingPredicate:[NSPredicate predicateWithFormat:@"self.hidden == 0"]] allObjects]; +} + #pragma mark - Event Handlers - (IBAction)next:(id)sender From 476090986946c0f0f44634684423f2f99b0b8b4a Mon Sep 17 00:00:00 2001 From: Syed Arsalan Pervez Date: Wed, 20 Feb 2013 04:18:21 +0500 Subject: [PATCH 4/4] Removed, as i have created a private repository on bitbucket.org and have sent you the invitation at andrew@yakimbi.com --- .../YakimbiTest.xcodeproj/project.pbxproj | 698 ------- .../contents.xcworkspacedata | 7 - .../UserInterfaceState.xcuserstate | Bin 76874 -> 0 bytes .../xcdebugger/Expressions.xcexplist | 25 - .../xcdebugger/Breakpoints.xcbkptlist | 5 - .../xcschemes/YakimbiTest.xcscheme | 96 - .../xcschemes/xcschememanagement.plist | 27 - .../Additions/NSDictionary+Addition.h | 15 - .../Additions/NSDictionary+Addition.m | 43 - YakimbiTest/YakimbiTest/AppDelegate.h | 18 - YakimbiTest/YakimbiTest/AppDelegate.m | 62 - YakimbiTest/YakimbiTest/Cells/FileViewCell.h | 25 - YakimbiTest/YakimbiTest/Cells/FileViewCell.m | 29 - .../YakimbiTest/Cells/FileViewCell.xib | 446 ----- .../YakimbiTest/Cells/FileViewCell_iPad.xib | 443 ----- .../YakimbiTest/Cells/FolderViewCell.h | 20 - .../YakimbiTest/Cells/FolderViewCell.m | 13 - .../YakimbiTest/Cells/FolderViewCell.xib | 265 --- .../YakimbiTest/Cells/FolderViewCell_iPad.xib | 240 --- .../Custom/MyNavigationController.h | 13 - .../Custom/MyNavigationController.m | 27 - YakimbiTest/YakimbiTest/DB Files/File.h | 39 - YakimbiTest/YakimbiTest/DB Files/File.m | 38 - YakimbiTest/YakimbiTest/DB Files/Folder.h | 29 - YakimbiTest/YakimbiTest/DB Files/Folder.m | 21 - YakimbiTest/YakimbiTest/DB Files/User.h | 34 - YakimbiTest/YakimbiTest/DB Files/User.m | 25 - .../YakimbiTest/Database/DatabaseHandler.h | 58 - .../YakimbiTest/Database/DatabaseHandler.m | 336 ---- YakimbiTest/YakimbiTest/Default-568h@2x.png | Bin 18594 -> 0 bytes YakimbiTest/YakimbiTest/Default.png | Bin 6540 -> 0 bytes YakimbiTest/YakimbiTest/Default@2x.png | Bin 16107 -> 0 bytes .../Network/HTTPRequestOperation.h | 65 - .../Network/HTTPRequestOperation.m | 316 --- YakimbiTest/YakimbiTest/Parsers/Parser.h | 38 - YakimbiTest/YakimbiTest/Parsers/Parser.m | 195 -- .../YakimbiTest/Utilities/AppConstants.h | 21 - .../YakimbiTest/Utilities/AppConstants.m | 13 - YakimbiTest/YakimbiTest/Utilities/Macros.h | 40 - .../ViewControllers/InfoViewController.h | 21 - .../ViewControllers/InfoViewController.m | 38 - .../ViewControllers/InfoViewController.xib | 238 --- .../ViewControllers/ListViewController.h | 28 - .../ViewControllers/ListViewController.m | 265 --- .../ViewControllers/ListViewController.xib | 284 --- .../ListViewController_iPad.xib | 340 ---- .../ViewControllers/MainViewController.h | 29 - .../ViewControllers/MainViewController.m | 257 --- .../ViewControllers/MainViewController.xib | 303 --- .../MainViewController_iPad.xib | 307 --- .../ViewControllers/TableViewController.h | 18 - .../ViewControllers/TableViewController.m | 119 -- .../ViewControllers/TableViewController.xib | 140 -- .../YakimbiTest/YakimbiTest-Info.plist | 45 - .../YakimbiTest/YakimbiTest-Prefix.pch | 26 - .../.xccurrentversion | 8 - .../YakimbiTest.xcdatamodel/contents | 49 - .../YakimbiTest/en.lproj/InfoPlist.strings | 2 - YakimbiTest/YakimbiTest/main.m | 18 - .../YakimbiTestTests-Info.plist | 22 - .../YakimbiTestTests/YakimbiTestTests.h | 16 - .../YakimbiTestTests/YakimbiTestTests.m | 135 -- .../en.lproj/InfoPlist.strings | 2 - YakimbiTest/YakimbiTestTests/test.json | 1718 ----------------- .../YakimbiTest.xcodeproj/project.pbxproj | 696 ------- .../contents.xcworkspacedata | 7 - .../UserInterfaceState.xcuserstate | Bin 122624 -> 0 bytes .../xcdebugger/Expressions.xcexplist | 25 - .../xcdebugger/Breakpoints.xcbkptlist | 14 - .../xcschemes/YakimbiTest.xcscheme | 96 - .../xcschemes/xcschememanagement.plist | 27 - .../Additions/NSDictionary+Addition.h | 15 - .../Additions/NSDictionary+Addition.m | 43 - YakimbiTestUsingARC/YakimbiTest/AppDelegate.h | 18 - YakimbiTestUsingARC/YakimbiTest/AppDelegate.m | 54 - .../YakimbiTest/Cells/FileViewCell.h | 25 - .../YakimbiTest/Cells/FileViewCell.m | 29 - .../YakimbiTest/Cells/FileViewCell.xib | 456 ----- .../YakimbiTest/Cells/FileViewCell_iPad.xib | 452 ----- .../YakimbiTest/Cells/FolderViewCell.h | 20 - .../YakimbiTest/Cells/FolderViewCell.m | 13 - .../YakimbiTest/Cells/FolderViewCell.xib | 270 --- .../YakimbiTest/Cells/FolderViewCell_iPad.xib | 271 --- .../Custom/MyNavigationController.h | 13 - .../Custom/MyNavigationController.m | 27 - .../YakimbiTest/DB Files/File.h | 39 - .../YakimbiTest/DB Files/File.m | 38 - .../YakimbiTest/DB Files/Folder.h | 29 - .../YakimbiTest/DB Files/Folder.m | 21 - .../YakimbiTest/DB Files/User.h | 34 - .../YakimbiTest/DB Files/User.m | 25 - .../YakimbiTest/Database/DatabaseHandler.h | 57 - .../YakimbiTest/Database/DatabaseHandler.m | 315 --- .../YakimbiTest/Default-568h@2x.png | Bin 18594 -> 0 bytes YakimbiTestUsingARC/YakimbiTest/Default.png | Bin 6540 -> 0 bytes .../YakimbiTest/Default@2x.png | Bin 16107 -> 0 bytes .../Network/HTTPRequestOperation.h | 65 - .../Network/HTTPRequestOperation.m | 301 --- .../YakimbiTest/Parsers/Parser.h | 38 - .../YakimbiTest/Parsers/Parser.m | 182 -- .../YakimbiTest/Utilities/AppConstants.h | 21 - .../YakimbiTest/Utilities/AppConstants.m | 13 - .../YakimbiTest/Utilities/Macros.h | 40 - .../ViewControllers/InfoViewController.h | 21 - .../ViewControllers/InfoViewController.m | 31 - .../ViewControllers/InfoViewController.xib | 238 --- .../ViewControllers/ListViewController.h | 30 - .../ViewControllers/ListViewController.m | 252 --- .../ViewControllers/ListViewController.xib | 284 --- .../ListViewController_iPad.xib | 340 ---- .../ViewControllers/MainViewController.h | 31 - .../ViewControllers/MainViewController.m | 241 --- .../ViewControllers/MainViewController.xib | 303 --- .../MainViewController_iPad.xib | 307 --- .../ViewControllers/TableViewController.h | 18 - .../ViewControllers/TableViewController.m | 119 -- .../ViewControllers/TableViewController.xib | 140 -- .../YakimbiTest/YakimbiTest-Info.plist | 45 - .../YakimbiTest/YakimbiTest-Prefix.pch | 26 - .../.xccurrentversion | 8 - .../YakimbiTest.xcdatamodel/contents | 49 - .../YakimbiTest/en.lproj/InfoPlist.strings | 2 - YakimbiTestUsingARC/YakimbiTest/main.m | 18 - .../YakimbiTestTests-Info.plist | 22 - .../YakimbiTestTests/YakimbiTestTests.h | 13 - .../YakimbiTestTests/YakimbiTestTests.m | 32 - .../en.lproj/InfoPlist.strings | 2 - 127 files changed, 14574 deletions(-) delete mode 100644 YakimbiTest/YakimbiTest.xcodeproj/project.pbxproj delete mode 100644 YakimbiTest/YakimbiTest.xcodeproj/project.xcworkspace/contents.xcworkspacedata delete mode 100644 YakimbiTest/YakimbiTest.xcodeproj/project.xcworkspace/xcuserdata/SAPMBP.xcuserdatad/UserInterfaceState.xcuserstate delete mode 100644 YakimbiTest/YakimbiTest.xcodeproj/project.xcworkspace/xcuserdata/SAPMBP.xcuserdatad/xcdebugger/Expressions.xcexplist delete mode 100644 YakimbiTest/YakimbiTest.xcodeproj/xcuserdata/SAPMBP.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist delete mode 100644 YakimbiTest/YakimbiTest.xcodeproj/xcuserdata/SAPMBP.xcuserdatad/xcschemes/YakimbiTest.xcscheme delete mode 100644 YakimbiTest/YakimbiTest.xcodeproj/xcuserdata/SAPMBP.xcuserdatad/xcschemes/xcschememanagement.plist delete mode 100644 YakimbiTest/YakimbiTest/Additions/NSDictionary+Addition.h delete mode 100644 YakimbiTest/YakimbiTest/Additions/NSDictionary+Addition.m delete mode 100644 YakimbiTest/YakimbiTest/AppDelegate.h delete mode 100644 YakimbiTest/YakimbiTest/AppDelegate.m delete mode 100644 YakimbiTest/YakimbiTest/Cells/FileViewCell.h delete mode 100644 YakimbiTest/YakimbiTest/Cells/FileViewCell.m delete mode 100644 YakimbiTest/YakimbiTest/Cells/FileViewCell.xib delete mode 100644 YakimbiTest/YakimbiTest/Cells/FileViewCell_iPad.xib delete mode 100644 YakimbiTest/YakimbiTest/Cells/FolderViewCell.h delete mode 100644 YakimbiTest/YakimbiTest/Cells/FolderViewCell.m delete mode 100644 YakimbiTest/YakimbiTest/Cells/FolderViewCell.xib delete mode 100644 YakimbiTest/YakimbiTest/Cells/FolderViewCell_iPad.xib delete mode 100644 YakimbiTest/YakimbiTest/Custom/MyNavigationController.h delete mode 100644 YakimbiTest/YakimbiTest/Custom/MyNavigationController.m delete mode 100644 YakimbiTest/YakimbiTest/DB Files/File.h delete mode 100644 YakimbiTest/YakimbiTest/DB Files/File.m delete mode 100644 YakimbiTest/YakimbiTest/DB Files/Folder.h delete mode 100644 YakimbiTest/YakimbiTest/DB Files/Folder.m delete mode 100644 YakimbiTest/YakimbiTest/DB Files/User.h delete mode 100644 YakimbiTest/YakimbiTest/DB Files/User.m delete mode 100755 YakimbiTest/YakimbiTest/Database/DatabaseHandler.h delete mode 100755 YakimbiTest/YakimbiTest/Database/DatabaseHandler.m delete mode 100644 YakimbiTest/YakimbiTest/Default-568h@2x.png delete mode 100644 YakimbiTest/YakimbiTest/Default.png delete mode 100644 YakimbiTest/YakimbiTest/Default@2x.png delete mode 100644 YakimbiTest/YakimbiTest/Network/HTTPRequestOperation.h delete mode 100644 YakimbiTest/YakimbiTest/Network/HTTPRequestOperation.m delete mode 100644 YakimbiTest/YakimbiTest/Parsers/Parser.h delete mode 100644 YakimbiTest/YakimbiTest/Parsers/Parser.m delete mode 100644 YakimbiTest/YakimbiTest/Utilities/AppConstants.h delete mode 100644 YakimbiTest/YakimbiTest/Utilities/AppConstants.m delete mode 100644 YakimbiTest/YakimbiTest/Utilities/Macros.h delete mode 100644 YakimbiTest/YakimbiTest/ViewControllers/InfoViewController.h delete mode 100644 YakimbiTest/YakimbiTest/ViewControllers/InfoViewController.m delete mode 100644 YakimbiTest/YakimbiTest/ViewControllers/InfoViewController.xib delete mode 100644 YakimbiTest/YakimbiTest/ViewControllers/ListViewController.h delete mode 100644 YakimbiTest/YakimbiTest/ViewControllers/ListViewController.m delete mode 100644 YakimbiTest/YakimbiTest/ViewControllers/ListViewController.xib delete mode 100644 YakimbiTest/YakimbiTest/ViewControllers/ListViewController_iPad.xib delete mode 100644 YakimbiTest/YakimbiTest/ViewControllers/MainViewController.h delete mode 100644 YakimbiTest/YakimbiTest/ViewControllers/MainViewController.m delete mode 100644 YakimbiTest/YakimbiTest/ViewControllers/MainViewController.xib delete mode 100644 YakimbiTest/YakimbiTest/ViewControllers/MainViewController_iPad.xib delete mode 100644 YakimbiTest/YakimbiTest/ViewControllers/TableViewController.h delete mode 100644 YakimbiTest/YakimbiTest/ViewControllers/TableViewController.m delete mode 100644 YakimbiTest/YakimbiTest/ViewControllers/TableViewController.xib delete mode 100644 YakimbiTest/YakimbiTest/YakimbiTest-Info.plist delete mode 100644 YakimbiTest/YakimbiTest/YakimbiTest-Prefix.pch delete mode 100644 YakimbiTest/YakimbiTest/YakimbiTest.xcdatamodeld/.xccurrentversion delete mode 100644 YakimbiTest/YakimbiTest/YakimbiTest.xcdatamodeld/YakimbiTest.xcdatamodel/contents delete mode 100644 YakimbiTest/YakimbiTest/en.lproj/InfoPlist.strings delete mode 100644 YakimbiTest/YakimbiTest/main.m delete mode 100644 YakimbiTest/YakimbiTestTests/YakimbiTestTests-Info.plist delete mode 100644 YakimbiTest/YakimbiTestTests/YakimbiTestTests.h delete mode 100644 YakimbiTest/YakimbiTestTests/YakimbiTestTests.m delete mode 100644 YakimbiTest/YakimbiTestTests/en.lproj/InfoPlist.strings delete mode 100644 YakimbiTest/YakimbiTestTests/test.json delete mode 100644 YakimbiTestUsingARC/YakimbiTest.xcodeproj/project.pbxproj delete mode 100644 YakimbiTestUsingARC/YakimbiTest.xcodeproj/project.xcworkspace/contents.xcworkspacedata delete mode 100644 YakimbiTestUsingARC/YakimbiTest.xcodeproj/project.xcworkspace/xcuserdata/SAPMBP.xcuserdatad/UserInterfaceState.xcuserstate delete mode 100644 YakimbiTestUsingARC/YakimbiTest.xcodeproj/project.xcworkspace/xcuserdata/SAPMBP.xcuserdatad/xcdebugger/Expressions.xcexplist delete mode 100644 YakimbiTestUsingARC/YakimbiTest.xcodeproj/xcuserdata/SAPMBP.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist delete mode 100644 YakimbiTestUsingARC/YakimbiTest.xcodeproj/xcuserdata/SAPMBP.xcuserdatad/xcschemes/YakimbiTest.xcscheme delete mode 100644 YakimbiTestUsingARC/YakimbiTest.xcodeproj/xcuserdata/SAPMBP.xcuserdatad/xcschemes/xcschememanagement.plist delete mode 100644 YakimbiTestUsingARC/YakimbiTest/Additions/NSDictionary+Addition.h delete mode 100644 YakimbiTestUsingARC/YakimbiTest/Additions/NSDictionary+Addition.m delete mode 100644 YakimbiTestUsingARC/YakimbiTest/AppDelegate.h delete mode 100644 YakimbiTestUsingARC/YakimbiTest/AppDelegate.m delete mode 100644 YakimbiTestUsingARC/YakimbiTest/Cells/FileViewCell.h delete mode 100644 YakimbiTestUsingARC/YakimbiTest/Cells/FileViewCell.m delete mode 100644 YakimbiTestUsingARC/YakimbiTest/Cells/FileViewCell.xib delete mode 100644 YakimbiTestUsingARC/YakimbiTest/Cells/FileViewCell_iPad.xib delete mode 100644 YakimbiTestUsingARC/YakimbiTest/Cells/FolderViewCell.h delete mode 100644 YakimbiTestUsingARC/YakimbiTest/Cells/FolderViewCell.m delete mode 100644 YakimbiTestUsingARC/YakimbiTest/Cells/FolderViewCell.xib delete mode 100644 YakimbiTestUsingARC/YakimbiTest/Cells/FolderViewCell_iPad.xib delete mode 100644 YakimbiTestUsingARC/YakimbiTest/Custom/MyNavigationController.h delete mode 100644 YakimbiTestUsingARC/YakimbiTest/Custom/MyNavigationController.m delete mode 100644 YakimbiTestUsingARC/YakimbiTest/DB Files/File.h delete mode 100644 YakimbiTestUsingARC/YakimbiTest/DB Files/File.m delete mode 100644 YakimbiTestUsingARC/YakimbiTest/DB Files/Folder.h delete mode 100644 YakimbiTestUsingARC/YakimbiTest/DB Files/Folder.m delete mode 100644 YakimbiTestUsingARC/YakimbiTest/DB Files/User.h delete mode 100644 YakimbiTestUsingARC/YakimbiTest/DB Files/User.m delete mode 100755 YakimbiTestUsingARC/YakimbiTest/Database/DatabaseHandler.h delete mode 100755 YakimbiTestUsingARC/YakimbiTest/Database/DatabaseHandler.m delete mode 100644 YakimbiTestUsingARC/YakimbiTest/Default-568h@2x.png delete mode 100644 YakimbiTestUsingARC/YakimbiTest/Default.png delete mode 100644 YakimbiTestUsingARC/YakimbiTest/Default@2x.png delete mode 100644 YakimbiTestUsingARC/YakimbiTest/Network/HTTPRequestOperation.h delete mode 100644 YakimbiTestUsingARC/YakimbiTest/Network/HTTPRequestOperation.m delete mode 100644 YakimbiTestUsingARC/YakimbiTest/Parsers/Parser.h delete mode 100644 YakimbiTestUsingARC/YakimbiTest/Parsers/Parser.m delete mode 100644 YakimbiTestUsingARC/YakimbiTest/Utilities/AppConstants.h delete mode 100644 YakimbiTestUsingARC/YakimbiTest/Utilities/AppConstants.m delete mode 100644 YakimbiTestUsingARC/YakimbiTest/Utilities/Macros.h delete mode 100644 YakimbiTestUsingARC/YakimbiTest/ViewControllers/InfoViewController.h delete mode 100644 YakimbiTestUsingARC/YakimbiTest/ViewControllers/InfoViewController.m delete mode 100644 YakimbiTestUsingARC/YakimbiTest/ViewControllers/InfoViewController.xib delete mode 100644 YakimbiTestUsingARC/YakimbiTest/ViewControllers/ListViewController.h delete mode 100644 YakimbiTestUsingARC/YakimbiTest/ViewControllers/ListViewController.m delete mode 100644 YakimbiTestUsingARC/YakimbiTest/ViewControllers/ListViewController.xib delete mode 100644 YakimbiTestUsingARC/YakimbiTest/ViewControllers/ListViewController_iPad.xib delete mode 100644 YakimbiTestUsingARC/YakimbiTest/ViewControllers/MainViewController.h delete mode 100644 YakimbiTestUsingARC/YakimbiTest/ViewControllers/MainViewController.m delete mode 100644 YakimbiTestUsingARC/YakimbiTest/ViewControllers/MainViewController.xib delete mode 100644 YakimbiTestUsingARC/YakimbiTest/ViewControllers/MainViewController_iPad.xib delete mode 100644 YakimbiTestUsingARC/YakimbiTest/ViewControllers/TableViewController.h delete mode 100644 YakimbiTestUsingARC/YakimbiTest/ViewControllers/TableViewController.m delete mode 100644 YakimbiTestUsingARC/YakimbiTest/ViewControllers/TableViewController.xib delete mode 100644 YakimbiTestUsingARC/YakimbiTest/YakimbiTest-Info.plist delete mode 100644 YakimbiTestUsingARC/YakimbiTest/YakimbiTest-Prefix.pch delete mode 100644 YakimbiTestUsingARC/YakimbiTest/YakimbiTest.xcdatamodeld/.xccurrentversion delete mode 100644 YakimbiTestUsingARC/YakimbiTest/YakimbiTest.xcdatamodeld/YakimbiTest.xcdatamodel/contents delete mode 100644 YakimbiTestUsingARC/YakimbiTest/en.lproj/InfoPlist.strings delete mode 100644 YakimbiTestUsingARC/YakimbiTest/main.m delete mode 100644 YakimbiTestUsingARC/YakimbiTestTests/YakimbiTestTests-Info.plist delete mode 100644 YakimbiTestUsingARC/YakimbiTestTests/YakimbiTestTests.h delete mode 100644 YakimbiTestUsingARC/YakimbiTestTests/YakimbiTestTests.m delete mode 100644 YakimbiTestUsingARC/YakimbiTestTests/en.lproj/InfoPlist.strings diff --git a/YakimbiTest/YakimbiTest.xcodeproj/project.pbxproj b/YakimbiTest/YakimbiTest.xcodeproj/project.pbxproj deleted file mode 100644 index b89a8e3..0000000 --- a/YakimbiTest/YakimbiTest.xcodeproj/project.pbxproj +++ /dev/null @@ -1,698 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 46; - objects = { - -/* Begin PBXBuildFile section */ - 26743EAD16D3FECE008E0446 /* MyNavigationController.m in Sources */ = {isa = PBXBuildFile; fileRef = 26743EAC16D3FECE008E0446 /* MyNavigationController.m */; }; - 26743EB416D40CB3008E0446 /* NSDictionary+Addition.m in Sources */ = {isa = PBXBuildFile; fileRef = 26743EB116D40CB3008E0446 /* NSDictionary+Addition.m */; }; - 26743EBF16D41E66008E0446 /* InfoViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 26743EBD16D41E66008E0446 /* InfoViewController.m */; }; - 26743EC016D41E66008E0446 /* InfoViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 26743EBE16D41E66008E0446 /* InfoViewController.xib */; }; - 26743ECA16D42940008E0446 /* test.json in Resources */ = {isa = PBXBuildFile; fileRef = 26743EC916D42940008E0446 /* test.json */; }; - 26743ECB16D42E28008E0446 /* test.json in Resources */ = {isa = PBXBuildFile; fileRef = 26743EC916D42940008E0446 /* test.json */; }; - 2676D1DC16D212A20019B3A5 /* AppConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 2676D1DB16D212A20019B3A5 /* AppConstants.m */; }; - 2676D1ED16D249990019B3A5 /* DatabaseHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 2676D1EC16D249990019B3A5 /* DatabaseHandler.m */; }; - 2676D1F016D250A20019B3A5 /* Folder.m in Sources */ = {isa = PBXBuildFile; fileRef = 2676D1EF16D250A20019B3A5 /* Folder.m */; }; - 2676D1F916D257570019B3A5 /* File.m in Sources */ = {isa = PBXBuildFile; fileRef = 2676D1F816D257570019B3A5 /* File.m */; }; - 2676D1FC16D27C3F0019B3A5 /* User.m in Sources */ = {isa = PBXBuildFile; fileRef = 2676D1FB16D27C3F0019B3A5 /* User.m */; }; - 2692E62D16D2B0E100D109BC /* ListViewController_iPad.xib in Resources */ = {isa = PBXBuildFile; fileRef = 2692E62916D2B0E100D109BC /* ListViewController_iPad.xib */; }; - 2692E62E16D2B0E100D109BC /* ListViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2692E62B16D2B0E100D109BC /* ListViewController.m */; }; - 2692E62F16D2B0E100D109BC /* ListViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 2692E62C16D2B0E100D109BC /* ListViewController.xib */; }; - 2692E63216D2BB5900D109BC /* FileViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 2692E63116D2BB5900D109BC /* FileViewCell.m */; }; - 2692E63616D2BBA800D109BC /* FileViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 2692E63516D2BBA800D109BC /* FileViewCell.xib */; }; - 2692E63816D2C20100D109BC /* Purple_Folder.png in Resources */ = {isa = PBXBuildFile; fileRef = 2692E63716D2C20100D109BC /* Purple_Folder.png */; }; - 2692E64016D2C78100D109BC /* FolderViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 2692E63F16D2C78100D109BC /* FolderViewCell.m */; }; - 2692E64216D2C78E00D109BC /* FolderViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 2692E64116D2C78E00D109BC /* FolderViewCell.xib */; }; - 2692E64616D2CE0600D109BC /* TableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2692E64416D2CE0600D109BC /* TableViewController.m */; }; - 2692E64716D2CE0600D109BC /* TableViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 2692E64516D2CE0600D109BC /* TableViewController.xib */; }; - 2692E64916D2D06C00D109BC /* FolderViewCell_iPad.xib in Resources */ = {isa = PBXBuildFile; fileRef = 2692E64816D2D06C00D109BC /* FolderViewCell_iPad.xib */; }; - 2692E64B16D2D18C00D109BC /* FileViewCell_iPad.xib in Resources */ = {isa = PBXBuildFile; fileRef = 2692E64A16D2D18C00D109BC /* FileViewCell_iPad.xib */; }; - 269F65E616CFAB9C00663B98 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 269F65E516CFAB9C00663B98 /* UIKit.framework */; }; - 269F65E816CFAB9C00663B98 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 269F65E716CFAB9C00663B98 /* Foundation.framework */; }; - 269F65EA16CFAB9C00663B98 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 269F65E916CFAB9C00663B98 /* CoreGraphics.framework */; }; - 269F65EC16CFAB9C00663B98 /* CoreData.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 269F65EB16CFAB9C00663B98 /* CoreData.framework */; }; - 269F65F216CFAB9C00663B98 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 269F65F016CFAB9C00663B98 /* InfoPlist.strings */; }; - 269F65F416CFAB9C00663B98 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 269F65F316CFAB9C00663B98 /* main.m */; }; - 269F65F816CFAB9C00663B98 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 269F65F716CFAB9C00663B98 /* AppDelegate.m */; }; - 269F65FA16CFAB9C00663B98 /* Default.png in Resources */ = {isa = PBXBuildFile; fileRef = 269F65F916CFAB9C00663B98 /* Default.png */; }; - 269F65FC16CFAB9C00663B98 /* Default@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 269F65FB16CFAB9C00663B98 /* Default@2x.png */; }; - 269F65FE16CFAB9C00663B98 /* Default-568h@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 269F65FD16CFAB9C00663B98 /* Default-568h@2x.png */; }; - 269F660116CFAB9C00663B98 /* YakimbiTest.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = 269F65FF16CFAB9C00663B98 /* YakimbiTest.xcdatamodeld */; }; - 269F660916CFAB9C00663B98 /* SenTestingKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 269F660816CFAB9C00663B98 /* SenTestingKit.framework */; }; - 269F660A16CFAB9C00663B98 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 269F65E516CFAB9C00663B98 /* UIKit.framework */; }; - 269F660B16CFAB9C00663B98 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 269F65E716CFAB9C00663B98 /* Foundation.framework */; }; - 269F660C16CFAB9C00663B98 /* CoreData.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 269F65EB16CFAB9C00663B98 /* CoreData.framework */; }; - 269F661416CFAB9C00663B98 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 269F661216CFAB9C00663B98 /* InfoPlist.strings */; }; - 269F661716CFAB9C00663B98 /* YakimbiTestTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 269F661616CFAB9C00663B98 /* YakimbiTestTests.m */; }; - 269F662216CFABCE00663B98 /* Parser.m in Sources */ = {isa = PBXBuildFile; fileRef = 269F662116CFABCE00663B98 /* Parser.m */; }; - 269F662816CFAC3400663B98 /* MainViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 269F662516CFAC3400663B98 /* MainViewController.m */; }; - 269F662916CFAC3400663B98 /* MainViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 269F662616CFAC3400663B98 /* MainViewController.xib */; }; - 269F662A16CFAC3400663B98 /* MainViewController_iPad.xib in Resources */ = {isa = PBXBuildFile; fileRef = 269F662716CFAC3400663B98 /* MainViewController_iPad.xib */; }; - 269F663216CFAF4B00663B98 /* HTTPRequestOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 269F663116CFAF4B00663B98 /* HTTPRequestOperation.m */; }; -/* End PBXBuildFile section */ - -/* Begin PBXContainerItemProxy section */ - 269F660D16CFAB9C00663B98 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 269F65DA16CFAB9B00663B98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 269F65E116CFAB9B00663B98; - remoteInfo = YakimbiTest; - }; -/* End PBXContainerItemProxy section */ - -/* Begin PBXFileReference section */ - 26743EAB16D3FECE008E0446 /* MyNavigationController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MyNavigationController.h; path = Custom/MyNavigationController.h; sourceTree = ""; }; - 26743EAC16D3FECE008E0446 /* MyNavigationController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MyNavigationController.m; path = Custom/MyNavigationController.m; sourceTree = ""; }; - 26743EB016D40CB3008E0446 /* NSDictionary+Addition.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSDictionary+Addition.h"; sourceTree = ""; }; - 26743EB116D40CB3008E0446 /* NSDictionary+Addition.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSDictionary+Addition.m"; sourceTree = ""; }; - 26743EBC16D41E66008E0446 /* InfoViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = InfoViewController.h; path = ViewControllers/InfoViewController.h; sourceTree = ""; }; - 26743EBD16D41E66008E0446 /* InfoViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = InfoViewController.m; path = ViewControllers/InfoViewController.m; sourceTree = ""; }; - 26743EBE16D41E66008E0446 /* InfoViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = InfoViewController.xib; path = ViewControllers/InfoViewController.xib; sourceTree = ""; }; - 26743EC916D42940008E0446 /* test.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = test.json; sourceTree = ""; }; - 2676D1DA16D212A20019B3A5 /* AppConstants.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppConstants.h; path = Utilities/AppConstants.h; sourceTree = ""; }; - 2676D1DB16D212A20019B3A5 /* AppConstants.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AppConstants.m; path = Utilities/AppConstants.m; sourceTree = ""; }; - 2676D1EB16D249990019B3A5 /* DatabaseHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DatabaseHandler.h; sourceTree = ""; }; - 2676D1EC16D249990019B3A5 /* DatabaseHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DatabaseHandler.m; sourceTree = ""; }; - 2676D1EE16D250A20019B3A5 /* Folder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Folder.h; path = "DB Files/Folder.h"; sourceTree = ""; }; - 2676D1EF16D250A20019B3A5 /* Folder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = Folder.m; path = "DB Files/Folder.m"; sourceTree = ""; }; - 2676D1F716D257570019B3A5 /* File.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = File.h; path = "DB Files/File.h"; sourceTree = ""; }; - 2676D1F816D257570019B3A5 /* File.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = File.m; path = "DB Files/File.m"; sourceTree = ""; }; - 2676D1FA16D27C3F0019B3A5 /* User.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = User.h; path = "DB Files/User.h"; sourceTree = ""; }; - 2676D1FB16D27C3F0019B3A5 /* User.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = User.m; path = "DB Files/User.m"; sourceTree = ""; }; - 2692E62916D2B0E100D109BC /* ListViewController_iPad.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = ListViewController_iPad.xib; path = ViewControllers/ListViewController_iPad.xib; sourceTree = ""; }; - 2692E62A16D2B0E100D109BC /* ListViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ListViewController.h; path = ViewControllers/ListViewController.h; sourceTree = ""; }; - 2692E62B16D2B0E100D109BC /* ListViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ListViewController.m; path = ViewControllers/ListViewController.m; sourceTree = ""; }; - 2692E62C16D2B0E100D109BC /* ListViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = ListViewController.xib; path = ViewControllers/ListViewController.xib; sourceTree = ""; }; - 2692E63016D2BB5800D109BC /* FileViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FileViewCell.h; path = Cells/FileViewCell.h; sourceTree = ""; }; - 2692E63116D2BB5900D109BC /* FileViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = FileViewCell.m; path = Cells/FileViewCell.m; sourceTree = ""; }; - 2692E63516D2BBA800D109BC /* FileViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = FileViewCell.xib; path = Cells/FileViewCell.xib; sourceTree = ""; }; - 2692E63716D2C20100D109BC /* Purple_Folder.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = Purple_Folder.png; path = ../../../../Downloads/Purple_Folder.png; sourceTree = ""; }; - 2692E63E16D2C78100D109BC /* FolderViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FolderViewCell.h; path = Cells/FolderViewCell.h; sourceTree = ""; }; - 2692E63F16D2C78100D109BC /* FolderViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = FolderViewCell.m; path = Cells/FolderViewCell.m; sourceTree = ""; }; - 2692E64116D2C78E00D109BC /* FolderViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = FolderViewCell.xib; path = Cells/FolderViewCell.xib; sourceTree = ""; }; - 2692E64316D2CE0600D109BC /* TableViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TableViewController.h; path = ViewControllers/TableViewController.h; sourceTree = ""; }; - 2692E64416D2CE0600D109BC /* TableViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = TableViewController.m; path = ViewControllers/TableViewController.m; sourceTree = ""; }; - 2692E64516D2CE0600D109BC /* TableViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = TableViewController.xib; path = ViewControllers/TableViewController.xib; sourceTree = ""; }; - 2692E64816D2D06C00D109BC /* FolderViewCell_iPad.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = FolderViewCell_iPad.xib; path = Cells/FolderViewCell_iPad.xib; sourceTree = ""; }; - 2692E64A16D2D18C00D109BC /* FileViewCell_iPad.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = FileViewCell_iPad.xib; path = Cells/FileViewCell_iPad.xib; sourceTree = ""; }; - 269F65E216CFAB9C00663B98 /* YakimbiTest.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = YakimbiTest.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 269F65E516CFAB9C00663B98 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; - 269F65E716CFAB9C00663B98 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; - 269F65E916CFAB9C00663B98 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; - 269F65EB16CFAB9C00663B98 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = System/Library/Frameworks/CoreData.framework; sourceTree = SDKROOT; }; - 269F65EF16CFAB9C00663B98 /* YakimbiTest-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "YakimbiTest-Info.plist"; sourceTree = ""; }; - 269F65F116CFAB9C00663B98 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; - 269F65F316CFAB9C00663B98 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; - 269F65F516CFAB9C00663B98 /* YakimbiTest-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "YakimbiTest-Prefix.pch"; sourceTree = ""; }; - 269F65F616CFAB9C00663B98 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; - 269F65F716CFAB9C00663B98 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; - 269F65F916CFAB9C00663B98 /* Default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Default.png; sourceTree = ""; }; - 269F65FB16CFAB9C00663B98 /* Default@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default@2x.png"; sourceTree = ""; }; - 269F65FD16CFAB9C00663B98 /* Default-568h@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default-568h@2x.png"; sourceTree = ""; }; - 269F660016CFAB9C00663B98 /* YakimbiTest.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = YakimbiTest.xcdatamodel; sourceTree = ""; }; - 269F660716CFAB9C00663B98 /* YakimbiTestTests.octest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = YakimbiTestTests.octest; sourceTree = BUILT_PRODUCTS_DIR; }; - 269F660816CFAB9C00663B98 /* SenTestingKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SenTestingKit.framework; path = Library/Frameworks/SenTestingKit.framework; sourceTree = DEVELOPER_DIR; }; - 269F661116CFAB9C00663B98 /* YakimbiTestTests-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "YakimbiTestTests-Info.plist"; sourceTree = ""; }; - 269F661316CFAB9C00663B98 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; - 269F661516CFAB9C00663B98 /* YakimbiTestTests.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YakimbiTestTests.h; sourceTree = ""; }; - 269F661616CFAB9C00663B98 /* YakimbiTestTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YakimbiTestTests.m; sourceTree = ""; }; - 269F662016CFABCE00663B98 /* Parser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Parser.h; path = Parsers/Parser.h; sourceTree = ""; }; - 269F662116CFABCE00663B98 /* Parser.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = Parser.m; path = Parsers/Parser.m; sourceTree = ""; }; - 269F662416CFAC3400663B98 /* MainViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MainViewController.h; path = ViewControllers/MainViewController.h; sourceTree = ""; }; - 269F662516CFAC3400663B98 /* MainViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MainViewController.m; path = ViewControllers/MainViewController.m; sourceTree = ""; }; - 269F662616CFAC3400663B98 /* MainViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = MainViewController.xib; path = ViewControllers/MainViewController.xib; sourceTree = ""; }; - 269F662716CFAC3400663B98 /* MainViewController_iPad.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = MainViewController_iPad.xib; path = ViewControllers/MainViewController_iPad.xib; sourceTree = ""; }; - 269F662C16CFAC6E00663B98 /* Macros.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Macros.h; path = Utilities/Macros.h; sourceTree = ""; }; - 269F663016CFAF4B00663B98 /* HTTPRequestOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = HTTPRequestOperation.h; path = Network/HTTPRequestOperation.h; sourceTree = ""; }; - 269F663116CFAF4B00663B98 /* HTTPRequestOperation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = HTTPRequestOperation.m; path = Network/HTTPRequestOperation.m; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 269F65DF16CFAB9B00663B98 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 269F65E616CFAB9C00663B98 /* UIKit.framework in Frameworks */, - 269F65E816CFAB9C00663B98 /* Foundation.framework in Frameworks */, - 269F65EA16CFAB9C00663B98 /* CoreGraphics.framework in Frameworks */, - 269F65EC16CFAB9C00663B98 /* CoreData.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 269F660316CFAB9C00663B98 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 269F660916CFAB9C00663B98 /* SenTestingKit.framework in Frameworks */, - 269F660A16CFAB9C00663B98 /* UIKit.framework in Frameworks */, - 269F660B16CFAB9C00663B98 /* Foundation.framework in Frameworks */, - 269F660C16CFAB9C00663B98 /* CoreData.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 26743EAA16D3FEAB008E0446 /* Custom */ = { - isa = PBXGroup; - children = ( - 26743EAB16D3FECE008E0446 /* MyNavigationController.h */, - 26743EAC16D3FECE008E0446 /* MyNavigationController.m */, - ); - name = Custom; - sourceTree = ""; - }; - 26743EAF16D40CB3008E0446 /* Additions */ = { - isa = PBXGroup; - children = ( - 26743EB016D40CB3008E0446 /* NSDictionary+Addition.h */, - 26743EB116D40CB3008E0446 /* NSDictionary+Addition.m */, - ); - path = Additions; - sourceTree = ""; - }; - 26743EBB16D41E4A008E0446 /* Info View */ = { - isa = PBXGroup; - children = ( - 26743EBC16D41E66008E0446 /* InfoViewController.h */, - 26743EBD16D41E66008E0446 /* InfoViewController.m */, - 26743EBE16D41E66008E0446 /* InfoViewController.xib */, - ); - name = "Info View"; - sourceTree = ""; - }; - 2676D1E916D238690019B3A5 /* DB Files */ = { - isa = PBXGroup; - children = ( - 269F65FF16CFAB9C00663B98 /* YakimbiTest.xcdatamodeld */, - 2676D1FA16D27C3F0019B3A5 /* User.h */, - 2676D1FB16D27C3F0019B3A5 /* User.m */, - 2676D1F716D257570019B3A5 /* File.h */, - 2676D1F816D257570019B3A5 /* File.m */, - 2676D1EE16D250A20019B3A5 /* Folder.h */, - 2676D1EF16D250A20019B3A5 /* Folder.m */, - ); - name = "DB Files"; - path = ..; - sourceTree = ""; - }; - 2676D1EA16D249990019B3A5 /* Database */ = { - isa = PBXGroup; - children = ( - 2676D1E916D238690019B3A5 /* DB Files */, - 2676D1EB16D249990019B3A5 /* DatabaseHandler.h */, - 2676D1EC16D249990019B3A5 /* DatabaseHandler.m */, - ); - path = Database; - sourceTree = ""; - }; - 2692E63416D2BB7900D109BC /* Cells */ = { - isa = PBXGroup; - children = ( - 2692E63016D2BB5800D109BC /* FileViewCell.h */, - 2692E63116D2BB5900D109BC /* FileViewCell.m */, - 2692E63516D2BBA800D109BC /* FileViewCell.xib */, - 2692E64A16D2D18C00D109BC /* FileViewCell_iPad.xib */, - 2692E63E16D2C78100D109BC /* FolderViewCell.h */, - 2692E63F16D2C78100D109BC /* FolderViewCell.m */, - 2692E64116D2C78E00D109BC /* FolderViewCell.xib */, - 2692E64816D2D06C00D109BC /* FolderViewCell_iPad.xib */, - ); - name = Cells; - sourceTree = ""; - }; - 269F65D916CFAB9B00663B98 = { - isa = PBXGroup; - children = ( - 269F65ED16CFAB9C00663B98 /* YakimbiTest */, - 269F660F16CFAB9C00663B98 /* YakimbiTestTests */, - 269F65E416CFAB9C00663B98 /* Frameworks */, - 269F65E316CFAB9C00663B98 /* Products */, - ); - sourceTree = ""; - }; - 269F65E316CFAB9C00663B98 /* Products */ = { - isa = PBXGroup; - children = ( - 269F65E216CFAB9C00663B98 /* YakimbiTest.app */, - 269F660716CFAB9C00663B98 /* YakimbiTestTests.octest */, - ); - name = Products; - sourceTree = ""; - }; - 269F65E416CFAB9C00663B98 /* Frameworks */ = { - isa = PBXGroup; - children = ( - 269F65E516CFAB9C00663B98 /* UIKit.framework */, - 269F65E716CFAB9C00663B98 /* Foundation.framework */, - 269F65E916CFAB9C00663B98 /* CoreGraphics.framework */, - 269F65EB16CFAB9C00663B98 /* CoreData.framework */, - 269F660816CFAB9C00663B98 /* SenTestingKit.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; - 269F65ED16CFAB9C00663B98 /* YakimbiTest */ = { - isa = PBXGroup; - children = ( - 26743EAF16D40CB3008E0446 /* Additions */, - 26743EAA16D3FEAB008E0446 /* Custom */, - 2692E63416D2BB7900D109BC /* Cells */, - 269F663316CFAF4F00663B98 /* Network */, - 269F662F16CFAC7400663B98 /* Utilities */, - 269F662B16CFAC3C00663B98 /* ViewControllers */, - 269F662316CFABD500663B98 /* Parsers */, - 2676D1EA16D249990019B3A5 /* Database */, - 269F65F616CFAB9C00663B98 /* AppDelegate.h */, - 269F65F716CFAB9C00663B98 /* AppDelegate.m */, - 269F65EE16CFAB9C00663B98 /* Supporting Files */, - ); - path = YakimbiTest; - sourceTree = ""; - }; - 269F65EE16CFAB9C00663B98 /* Supporting Files */ = { - isa = PBXGroup; - children = ( - 2692E63716D2C20100D109BC /* Purple_Folder.png */, - 269F65EF16CFAB9C00663B98 /* YakimbiTest-Info.plist */, - 269F65F016CFAB9C00663B98 /* InfoPlist.strings */, - 269F65F316CFAB9C00663B98 /* main.m */, - 269F65F516CFAB9C00663B98 /* YakimbiTest-Prefix.pch */, - 269F65F916CFAB9C00663B98 /* Default.png */, - 269F65FB16CFAB9C00663B98 /* Default@2x.png */, - 269F65FD16CFAB9C00663B98 /* Default-568h@2x.png */, - ); - name = "Supporting Files"; - sourceTree = ""; - }; - 269F660F16CFAB9C00663B98 /* YakimbiTestTests */ = { - isa = PBXGroup; - children = ( - 26743EC916D42940008E0446 /* test.json */, - 269F661516CFAB9C00663B98 /* YakimbiTestTests.h */, - 269F661616CFAB9C00663B98 /* YakimbiTestTests.m */, - 269F661016CFAB9C00663B98 /* Supporting Files */, - ); - path = YakimbiTestTests; - sourceTree = ""; - }; - 269F661016CFAB9C00663B98 /* Supporting Files */ = { - isa = PBXGroup; - children = ( - 269F661116CFAB9C00663B98 /* YakimbiTestTests-Info.plist */, - 269F661216CFAB9C00663B98 /* InfoPlist.strings */, - ); - name = "Supporting Files"; - sourceTree = ""; - }; - 269F662316CFABD500663B98 /* Parsers */ = { - isa = PBXGroup; - children = ( - 269F662016CFABCE00663B98 /* Parser.h */, - 269F662116CFABCE00663B98 /* Parser.m */, - ); - name = Parsers; - sourceTree = ""; - }; - 269F662B16CFAC3C00663B98 /* ViewControllers */ = { - isa = PBXGroup; - children = ( - 26743EBB16D41E4A008E0446 /* Info View */, - 2692E64316D2CE0600D109BC /* TableViewController.h */, - 2692E64416D2CE0600D109BC /* TableViewController.m */, - 2692E64516D2CE0600D109BC /* TableViewController.xib */, - 2692E62A16D2B0E100D109BC /* ListViewController.h */, - 2692E62B16D2B0E100D109BC /* ListViewController.m */, - 2692E62C16D2B0E100D109BC /* ListViewController.xib */, - 2692E62916D2B0E100D109BC /* ListViewController_iPad.xib */, - 269F662416CFAC3400663B98 /* MainViewController.h */, - 269F662516CFAC3400663B98 /* MainViewController.m */, - 269F662616CFAC3400663B98 /* MainViewController.xib */, - 269F662716CFAC3400663B98 /* MainViewController_iPad.xib */, - ); - name = ViewControllers; - sourceTree = ""; - }; - 269F662F16CFAC7400663B98 /* Utilities */ = { - isa = PBXGroup; - children = ( - 269F662C16CFAC6E00663B98 /* Macros.h */, - 2676D1DA16D212A20019B3A5 /* AppConstants.h */, - 2676D1DB16D212A20019B3A5 /* AppConstants.m */, - ); - name = Utilities; - sourceTree = ""; - }; - 269F663316CFAF4F00663B98 /* Network */ = { - isa = PBXGroup; - children = ( - 269F663016CFAF4B00663B98 /* HTTPRequestOperation.h */, - 269F663116CFAF4B00663B98 /* HTTPRequestOperation.m */, - ); - name = Network; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - 269F65E116CFAB9B00663B98 /* YakimbiTest */ = { - isa = PBXNativeTarget; - buildConfigurationList = 269F661A16CFAB9C00663B98 /* Build configuration list for PBXNativeTarget "YakimbiTest" */; - buildPhases = ( - 269F65DE16CFAB9B00663B98 /* Sources */, - 269F65DF16CFAB9B00663B98 /* Frameworks */, - 269F65E016CFAB9B00663B98 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = YakimbiTest; - productName = YakimbiTest; - productReference = 269F65E216CFAB9C00663B98 /* YakimbiTest.app */; - productType = "com.apple.product-type.application"; - }; - 269F660616CFAB9C00663B98 /* YakimbiTestTests */ = { - isa = PBXNativeTarget; - buildConfigurationList = 269F661D16CFAB9C00663B98 /* Build configuration list for PBXNativeTarget "YakimbiTestTests" */; - buildPhases = ( - 269F660216CFAB9C00663B98 /* Sources */, - 269F660316CFAB9C00663B98 /* Frameworks */, - 269F660416CFAB9C00663B98 /* Resources */, - 269F660516CFAB9C00663B98 /* ShellScript */, - ); - buildRules = ( - ); - dependencies = ( - 269F660E16CFAB9C00663B98 /* PBXTargetDependency */, - ); - name = YakimbiTestTests; - productName = YakimbiTestTests; - productReference = 269F660716CFAB9C00663B98 /* YakimbiTestTests.octest */; - productType = "com.apple.product-type.bundle"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 269F65DA16CFAB9B00663B98 /* Project object */ = { - isa = PBXProject; - attributes = { - LastUpgradeCheck = 0460; - ORGANIZATIONNAME = SAPLogix; - }; - buildConfigurationList = 269F65DD16CFAB9B00663B98 /* Build configuration list for PBXProject "YakimbiTest" */; - compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; - hasScannedForEncodings = 0; - knownRegions = ( - en, - ); - mainGroup = 269F65D916CFAB9B00663B98; - productRefGroup = 269F65E316CFAB9C00663B98 /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - 269F65E116CFAB9B00663B98 /* YakimbiTest */, - 269F660616CFAB9C00663B98 /* YakimbiTestTests */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - 269F65E016CFAB9B00663B98 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 269F65F216CFAB9C00663B98 /* InfoPlist.strings in Resources */, - 269F65FA16CFAB9C00663B98 /* Default.png in Resources */, - 269F65FC16CFAB9C00663B98 /* Default@2x.png in Resources */, - 269F65FE16CFAB9C00663B98 /* Default-568h@2x.png in Resources */, - 269F662916CFAC3400663B98 /* MainViewController.xib in Resources */, - 269F662A16CFAC3400663B98 /* MainViewController_iPad.xib in Resources */, - 2692E62D16D2B0E100D109BC /* ListViewController_iPad.xib in Resources */, - 2692E62F16D2B0E100D109BC /* ListViewController.xib in Resources */, - 2692E63616D2BBA800D109BC /* FileViewCell.xib in Resources */, - 2692E63816D2C20100D109BC /* Purple_Folder.png in Resources */, - 2692E64216D2C78E00D109BC /* FolderViewCell.xib in Resources */, - 2692E64716D2CE0600D109BC /* TableViewController.xib in Resources */, - 2692E64916D2D06C00D109BC /* FolderViewCell_iPad.xib in Resources */, - 2692E64B16D2D18C00D109BC /* FileViewCell_iPad.xib in Resources */, - 26743EC016D41E66008E0446 /* InfoViewController.xib in Resources */, - 26743ECB16D42E28008E0446 /* test.json in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 269F660416CFAB9C00663B98 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 269F661416CFAB9C00663B98 /* InfoPlist.strings in Resources */, - 26743ECA16D42940008E0446 /* test.json in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXShellScriptBuildPhase section */ - 269F660516CFAB9C00663B98 /* ShellScript */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "# Run the unit tests in this test bundle.\n\"${SYSTEM_DEVELOPER_DIR}/Tools/RunUnitTests\"\n"; - }; -/* End PBXShellScriptBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 269F65DE16CFAB9B00663B98 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 269F65F416CFAB9C00663B98 /* main.m in Sources */, - 269F65F816CFAB9C00663B98 /* AppDelegate.m in Sources */, - 269F660116CFAB9C00663B98 /* YakimbiTest.xcdatamodeld in Sources */, - 269F662216CFABCE00663B98 /* Parser.m in Sources */, - 269F662816CFAC3400663B98 /* MainViewController.m in Sources */, - 269F663216CFAF4B00663B98 /* HTTPRequestOperation.m in Sources */, - 2676D1DC16D212A20019B3A5 /* AppConstants.m in Sources */, - 2676D1ED16D249990019B3A5 /* DatabaseHandler.m in Sources */, - 2676D1F016D250A20019B3A5 /* Folder.m in Sources */, - 2676D1F916D257570019B3A5 /* File.m in Sources */, - 2676D1FC16D27C3F0019B3A5 /* User.m in Sources */, - 2692E62E16D2B0E100D109BC /* ListViewController.m in Sources */, - 2692E63216D2BB5900D109BC /* FileViewCell.m in Sources */, - 2692E64016D2C78100D109BC /* FolderViewCell.m in Sources */, - 2692E64616D2CE0600D109BC /* TableViewController.m in Sources */, - 26743EAD16D3FECE008E0446 /* MyNavigationController.m in Sources */, - 26743EB416D40CB3008E0446 /* NSDictionary+Addition.m in Sources */, - 26743EBF16D41E66008E0446 /* InfoViewController.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 269F660216CFAB9C00663B98 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 269F661716CFAB9C00663B98 /* YakimbiTestTests.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXTargetDependency section */ - 269F660E16CFAB9C00663B98 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 269F65E116CFAB9B00663B98 /* YakimbiTest */; - targetProxy = 269F660D16CFAB9C00663B98 /* PBXContainerItemProxy */; - }; -/* End PBXTargetDependency section */ - -/* Begin PBXVariantGroup section */ - 269F65F016CFAB9C00663B98 /* InfoPlist.strings */ = { - isa = PBXVariantGroup; - children = ( - 269F65F116CFAB9C00663B98 /* en */, - ); - name = InfoPlist.strings; - sourceTree = ""; - }; - 269F661216CFAB9C00663B98 /* InfoPlist.strings */ = { - isa = PBXVariantGroup; - children = ( - 269F661316CFAB9C00663B98 /* en */, - ); - name = InfoPlist.strings; - sourceTree = ""; - }; -/* End PBXVariantGroup section */ - -/* Begin XCBuildConfiguration section */ - 269F661816CFAB9C00663B98 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - 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; - }; - 269F661916CFAB9C00663B98 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - 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; - }; - 269F661B16CFAB9C00663B98 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = "YakimbiTest/YakimbiTest-Prefix.pch"; - INFOPLIST_FILE = "YakimbiTest/YakimbiTest-Info.plist"; - PRODUCT_NAME = "$(TARGET_NAME)"; - WRAPPER_EXTENSION = app; - }; - name = Debug; - }; - 269F661C16CFAB9C00663B98 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = "YakimbiTest/YakimbiTest-Prefix.pch"; - INFOPLIST_FILE = "YakimbiTest/YakimbiTest-Info.plist"; - PRODUCT_NAME = "$(TARGET_NAME)"; - WRAPPER_EXTENSION = app; - }; - name = Release; - }; - 269F661E16CFAB9C00663B98 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/YakimbiTest.app/YakimbiTest"; - FRAMEWORK_SEARCH_PATHS = ( - "\"$(SDKROOT)/Developer/Library/Frameworks\"", - "\"$(DEVELOPER_LIBRARY_DIR)/Frameworks\"", - ); - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = "YakimbiTest/YakimbiTest-Prefix.pch"; - INFOPLIST_FILE = "YakimbiTestTests/YakimbiTestTests-Info.plist"; - PRODUCT_NAME = "$(TARGET_NAME)"; - TEST_HOST = "$(BUNDLE_LOADER)"; - WRAPPER_EXTENSION = octest; - }; - name = Debug; - }; - 269F661F16CFAB9C00663B98 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/YakimbiTest.app/YakimbiTest"; - FRAMEWORK_SEARCH_PATHS = ( - "\"$(SDKROOT)/Developer/Library/Frameworks\"", - "\"$(DEVELOPER_LIBRARY_DIR)/Frameworks\"", - ); - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = "YakimbiTest/YakimbiTest-Prefix.pch"; - INFOPLIST_FILE = "YakimbiTestTests/YakimbiTestTests-Info.plist"; - PRODUCT_NAME = "$(TARGET_NAME)"; - TEST_HOST = "$(BUNDLE_LOADER)"; - WRAPPER_EXTENSION = octest; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 269F65DD16CFAB9B00663B98 /* Build configuration list for PBXProject "YakimbiTest" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 269F661816CFAB9C00663B98 /* Debug */, - 269F661916CFAB9C00663B98 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 269F661A16CFAB9C00663B98 /* Build configuration list for PBXNativeTarget "YakimbiTest" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 269F661B16CFAB9C00663B98 /* Debug */, - 269F661C16CFAB9C00663B98 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 269F661D16CFAB9C00663B98 /* Build configuration list for PBXNativeTarget "YakimbiTestTests" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 269F661E16CFAB9C00663B98 /* Debug */, - 269F661F16CFAB9C00663B98 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - -/* Begin XCVersionGroup section */ - 269F65FF16CFAB9C00663B98 /* YakimbiTest.xcdatamodeld */ = { - isa = XCVersionGroup; - children = ( - 269F660016CFAB9C00663B98 /* YakimbiTest.xcdatamodel */, - ); - currentVersion = 269F660016CFAB9C00663B98 /* YakimbiTest.xcdatamodel */; - path = YakimbiTest.xcdatamodeld; - sourceTree = ""; - versionGroupType = wrapper.xcdatamodel; - }; -/* End XCVersionGroup section */ - }; - rootObject = 269F65DA16CFAB9B00663B98 /* Project object */; -} diff --git a/YakimbiTest/YakimbiTest.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/YakimbiTest/YakimbiTest.xcodeproj/project.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 1d8d311..0000000 --- a/YakimbiTest/YakimbiTest.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/YakimbiTest/YakimbiTest.xcodeproj/project.xcworkspace/xcuserdata/SAPMBP.xcuserdatad/UserInterfaceState.xcuserstate b/YakimbiTest/YakimbiTest.xcodeproj/project.xcworkspace/xcuserdata/SAPMBP.xcuserdatad/UserInterfaceState.xcuserstate deleted file mode 100644 index b263a143ee88ac68f0af8cd1e20b394ffe663668..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 76874 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%0DBaB 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 - - - - - - - - - - - - - - - - - - diff --git a/YakimbiTest/YakimbiTest.xcodeproj/xcuserdata/SAPMBP.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist b/YakimbiTest/YakimbiTest.xcodeproj/xcuserdata/SAPMBP.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist deleted file mode 100644 index 05301bc..0000000 --- a/YakimbiTest/YakimbiTest.xcodeproj/xcuserdata/SAPMBP.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist +++ /dev/null @@ -1,5 +0,0 @@ - - - diff --git a/YakimbiTest/YakimbiTest.xcodeproj/xcuserdata/SAPMBP.xcuserdatad/xcschemes/YakimbiTest.xcscheme b/YakimbiTest/YakimbiTest.xcodeproj/xcuserdata/SAPMBP.xcuserdatad/xcschemes/YakimbiTest.xcscheme deleted file mode 100644 index fcbfcf2..0000000 --- a/YakimbiTest/YakimbiTest.xcodeproj/xcuserdata/SAPMBP.xcuserdatad/xcschemes/YakimbiTest.xcscheme +++ /dev/null @@ -1,96 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/YakimbiTest/YakimbiTest.xcodeproj/xcuserdata/SAPMBP.xcuserdatad/xcschemes/xcschememanagement.plist b/YakimbiTest/YakimbiTest.xcodeproj/xcuserdata/SAPMBP.xcuserdatad/xcschemes/xcschememanagement.plist deleted file mode 100644 index 81e669b..0000000 --- a/YakimbiTest/YakimbiTest.xcodeproj/xcuserdata/SAPMBP.xcuserdatad/xcschemes/xcschememanagement.plist +++ /dev/null @@ -1,27 +0,0 @@ - - - - - SchemeUserState - - YakimbiTest.xcscheme - - orderHint - 0 - - - SuppressBuildableAutocreation - - 269F65E116CFAB9B00663B98 - - primary - - - 269F660616CFAB9C00663B98 - - primary - - - - - diff --git a/YakimbiTest/YakimbiTest/Additions/NSDictionary+Addition.h b/YakimbiTest/YakimbiTest/Additions/NSDictionary+Addition.h deleted file mode 100644 index 1b7d020..0000000 --- a/YakimbiTest/YakimbiTest/Additions/NSDictionary+Addition.h +++ /dev/null @@ -1,15 +0,0 @@ -// -// NSDictionary+Addition.h -// -// -// Created by Syed Arsalan Pervez on 3/14/12. -// Copyright (c) 2012 SAPLogix. All rights reserved. -// - -@interface NSDictionary (ADDITION) - -- (BOOL)containsKey:(NSString *)key; -- (BOOL)containsKeys:(NSArray *)keys; -- (id)valueForKey:(NSString *)key; - -@end diff --git a/YakimbiTest/YakimbiTest/Additions/NSDictionary+Addition.m b/YakimbiTest/YakimbiTest/Additions/NSDictionary+Addition.m deleted file mode 100644 index 745dc48..0000000 --- a/YakimbiTest/YakimbiTest/Additions/NSDictionary+Addition.m +++ /dev/null @@ -1,43 +0,0 @@ -// -// NSDictionary+Addition.m -// -// -// Created by Syed Arsalan Pervez on 3/14/12. -// Copyright (c) 2012 SAPLogix. All rights reserved. -// - -#import "NSDictionary+Addition.h" - -@implementation NSDictionary (ADDITION) - -- (BOOL)containsKey:(NSString *)key -{ - return [[self allKeys] containsObject:key]; -} - -- (BOOL)containsKeys:(NSArray *)keys -{ - for (NSString *key in keys) - { - if (![self containsKey:key]) - return NO; - } - - return YES; -} - -- (id)valueForKey:(NSString *)key -{ - int index = [[self allKeys] indexOfObject:key]; - if (index != NSNotFound) - { - id val = [[self allValues] objectAtIndex:index]; - - if (![val isKindOfClass:[NSNull class]]) - return val; - } - - return nil; -} - -@end diff --git a/YakimbiTest/YakimbiTest/AppDelegate.h b/YakimbiTest/YakimbiTest/AppDelegate.h deleted file mode 100644 index 5005c72..0000000 --- a/YakimbiTest/YakimbiTest/AppDelegate.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// AppDelegate.h -// YakimbiTest -// -// Created by Syed Arsalan Pervez on 2/16/13. -// Copyright (c) 2013 SAPLogix. All rights reserved. -// - -#import -#import "MyNavigationController.h" -#import "MainViewController.h" - -@interface AppDelegate : UIResponder - -@property (strong, nonatomic) UIWindow *window; -@property (strong, nonatomic) MyNavigationController *navigationController; - -@end diff --git a/YakimbiTest/YakimbiTest/AppDelegate.m b/YakimbiTest/YakimbiTest/AppDelegate.m deleted file mode 100644 index 89ad8f8..0000000 --- a/YakimbiTest/YakimbiTest/AppDelegate.m +++ /dev/null @@ -1,62 +0,0 @@ -// -// AppDelegate.m -// YakimbiTest -// -// Created by Syed Arsalan Pervez on 2/16/13. -// Copyright (c) 2013 SAPLogix. All rights reserved. -// - -#import "AppDelegate.h" - -@implementation AppDelegate - -- (void)dealloc -{ - [_navigationController release]; - [_window release]; - - [super dealloc]; -} - -- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions -{ - self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease]; - // Override point for customization after application launch. - - MainViewController *_mainViewController = [[MainViewController new] autorelease]; - _navigationController = [[MyNavigationController alloc] initWithRootViewController:_mainViewController]; - - Log(@"Total %@", FORMAT_BYTES(268435456000)); - Log(@"Used %@", FORMAT_BYTES(380826907)); - Log(@"Available %@", FORMAT_BYTES(268054629093)); - - [_window setRootViewController:_navigationController]; - - self.window.backgroundColor = [UIColor whiteColor]; - [self.window makeKeyAndVisible]; - return YES; -} - -- (void)applicationWillResignActive:(UIApplication *)application -{ - // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. - // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game. -} - -- (void)applicationDidEnterBackground:(UIApplication *)application -{ - // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. - // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. -} - -- (void)applicationWillEnterForeground:(UIApplication *)application -{ - // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background. -} - -- (void)applicationDidBecomeActive:(UIApplication *)application -{ - // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. -} - -@end diff --git a/YakimbiTest/YakimbiTest/Cells/FileViewCell.h b/YakimbiTest/YakimbiTest/Cells/FileViewCell.h deleted file mode 100644 index 299faf7..0000000 --- a/YakimbiTest/YakimbiTest/Cells/FileViewCell.h +++ /dev/null @@ -1,25 +0,0 @@ -// -// FileViewCell.h -// YakimbiTest -// -// Created by Syed Arsalan Pervez on 2/19/13. -// Copyright (c) 2013 SAPLogix. All rights reserved. -// - -#import -#import "FolderViewCell.h" - -@interface FileViewCell : FolderViewCell -{ - IBOutlet UILabel *_sharedByLabel; - IBOutlet UILabel *_sharedByLabel2; - IBOutlet UILabel *_fileCountLabel; - IBOutlet UILabel *_folderCountLabel; -} - -@property (readonly, nonatomic) UILabel *sharedByLabel; -@property (readonly, nonatomic) UILabel *sharedByLabel2; -@property (readonly, nonatomic) UILabel *fileCountLabel; -@property (readonly, nonatomic) UILabel *folderCountLabel; - -@end diff --git a/YakimbiTest/YakimbiTest/Cells/FileViewCell.m b/YakimbiTest/YakimbiTest/Cells/FileViewCell.m deleted file mode 100644 index 06b466f..0000000 --- a/YakimbiTest/YakimbiTest/Cells/FileViewCell.m +++ /dev/null @@ -1,29 +0,0 @@ -// -// FileViewCell.m -// YakimbiTest -// -// Created by Syed Arsalan Pervez on 2/19/13. -// Copyright (c) 2013 SAPLogix. All rights reserved. -// - -#import "FileViewCell.h" - -@implementation FileViewCell - -- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier -{ - self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]; - if (self) { - // Initialization code - } - return self; -} - -- (void)setSelected:(BOOL)selected animated:(BOOL)animated -{ - [super setSelected:selected animated:animated]; - - // Configure the view for the selected state -} - -@end diff --git a/YakimbiTest/YakimbiTest/Cells/FileViewCell.xib b/YakimbiTest/YakimbiTest/Cells/FileViewCell.xib deleted file mode 100644 index db82ef6..0000000 --- a/YakimbiTest/YakimbiTest/Cells/FileViewCell.xib +++ /dev/null @@ -1,446 +0,0 @@ - - - - 1552 - 11G63 - 3084 - 1138.51 - 569.00 - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 2083 - - - IBProxyObject - IBUIImageView - IBUILabel - IBUITableViewCell - - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - PluginDependencyRecalculationVersion - - - - - IBFilesOwner - IBCocoaTouchFramework - - - IBFirstResponder - IBCocoaTouchFramework - - - - 292 - - - - 256 - - - - 292 - {{92, 8}, {205, 21}} - - - _NS:9 - NO - YES - 7 - NO - IBCocoaTouchFramework - <name> - - 1 - MCAwIDAAA - darkTextColor - - - 3 - MQA - - 0 - - 2 - 17 - - - Helvetica-Bold - 17 - 16 - - NO - - - - 292 - {{92, 30}, {205, 21}} - - - _NS:9 - NO - YES - 7 - NO - IBCocoaTouchFramework - <path> - - - 0 - - 1 - 12 - - - Helvetica - 12 - 16 - - NO - - - - 292 - {{92, 50}, {205, 21}} - - - _NS:9 - NO - YES - 7 - NO - IBCocoaTouchFramework - <by> - - - 0 - - - NO - - - - 292 - {{92, 69}, {205, 21}} - - _NS:9 - NO - YES - 7 - NO - IBCocoaTouchFramework - <by> - - - 0 - - - NO - - - - 292 - {{4, 72}, {81, 21}} - - - _NS:9 - NO - YES - 7 - NO - IBCocoaTouchFramework - <by> - - - 0 - 1 - - 1 - 11 - - - Helvetica - 11 - 16 - - NO - - - - 292 - {{4, 52}, {81, 21}} - - - _NS:9 - NO - YES - 7 - NO - IBCocoaTouchFramework - <by> - - - 0 - 1 - - - NO - - - - 292 - {{4, -2}, {81, 58}} - - - _NS:9 - 1 - NO - IBCocoaTouchFramework - - NSImage - Purple_Folder.png - - - - {300, 96} - - - _NS:11 - - 3 - MCAwAA - - NO - YES - 4 - YES - IBCocoaTouchFramework - - - {320, 97} - - - _NS:9 - IBCocoaTouchFramework - 1 - - FileCell - - - - - - - - _nameLabel - - - - 50 - - - - _pathLabel - - - - 51 - - - - _sharedByLabel - - - - 52 - - - - _fileCountLabel - - - - 53 - - - - _folderCountLabel - - - - 54 - - - - _sharedByLabel2 - - - - 56 - - - - - - 0 - - - - - - -1 - - - File's Owner - - - -2 - - - - - 2 - - - - - - - - - - - - - - 3 - - - - - - 8 - - - - - - 15 - - - - - - 45 - - - - - 46 - - - - - 49 - - - - - 55 - - - - - - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIResponder - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - FileViewCell - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - - - - 70 - - - - - FileViewCell - FolderViewCell - - UILabel - UILabel - UILabel - UILabel - - - - _fileCountLabel - UILabel - - - _folderCountLabel - UILabel - - - _sharedByLabel - UILabel - - - _sharedByLabel2 - UILabel - - - - IBProjectSource - ./Classes/FileViewCell.h - - - - FolderViewCell - UITableViewCell - - UILabel - UILabel - - - - _nameLabel - UILabel - - - _pathLabel - UILabel - - - - IBProjectSource - ./Classes/FolderViewCell.h - - - - - 0 - IBCocoaTouchFramework - YES - 3 - - Purple_Folder.png - {512, 512} - - 2083 - - diff --git a/YakimbiTest/YakimbiTest/Cells/FileViewCell_iPad.xib b/YakimbiTest/YakimbiTest/Cells/FileViewCell_iPad.xib deleted file mode 100644 index b0ce5e3..0000000 --- a/YakimbiTest/YakimbiTest/Cells/FileViewCell_iPad.xib +++ /dev/null @@ -1,443 +0,0 @@ - - - - 1552 - 11G63 - 3084 - 1138.51 - 569.00 - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 2083 - - - IBProxyObject - IBUIImageView - IBUILabel - IBUITableViewCell - - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - PluginDependencyRecalculationVersion - - - - - IBFilesOwner - IBIPadFramework - - - IBFirstResponder - IBIPadFramework - - - - 292 - - - - 256 - - - - 292 - {{92, 8}, {656, 21}} - - - _NS:9 - NO - YES - 7 - NO - IBIPadFramework - <name> - - 1 - MCAwIDAAA - darkTextColor - - - 3 - MQA - - 0 - - 2 - 17 - - - Helvetica-Bold - 17 - 16 - - NO - - - - 292 - {{92, 30}, {656, 21}} - - - _NS:9 - NO - YES - 7 - NO - IBIPadFramework - <path> - - - 0 - - 1 - 12 - - - Helvetica - 12 - 16 - - NO - - - - 292 - {{92, 50}, {656, 21}} - - - _NS:9 - NO - YES - 7 - NO - IBIPadFramework - <by> - - - 0 - - - NO - - - - 292 - {{92, 69}, {655, 21}} - - _NS:9 - NO - YES - 7 - NO - IBIPadFramework - <by> - - - 0 - - - NO - - - - 292 - {{4, 72}, {81, 21}} - - - _NS:9 - NO - YES - 7 - NO - IBIPadFramework - <by> - - - 0 - 1 - - - NO - - - - 292 - {{4, 52}, {81, 21}} - - - _NS:9 - NO - YES - 7 - NO - IBIPadFramework - <by> - - - 0 - 1 - - - NO - - - - 292 - {{4, -2}, {81, 58}} - - - _NS:9 - 1 - NO - IBIPadFramework - - NSImage - Purple_Folder.png - - - - {748, 96} - - - _NS:11 - - 3 - MCAwAA - - NO - YES - 4 - YES - IBCocoaTouchFramework - - - {768, 97} - - - _NS:9 - IBIPadFramework - 1 - - FileCell - - - - - - - - _nameLabel - - - - 10 - - - - _pathLabel - - - - 11 - - - - _sharedByLabel - - - - 12 - - - - _fileCountLabel - - - - 13 - - - - _folderCountLabel - - - - 14 - - - - _sharedByLabel2 - - - - 15 - - - - - - 0 - - - - - - -1 - - - File's Owner - - - -2 - - - - - 2 - - - - - - - - - - - - - - 3 - - - - - - 4 - - - - - - 5 - - - - - - 6 - - - - - - 7 - - - - - - 8 - - - - - - 9 - - - - - - - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIResponder - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - FileViewCell - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - - - - 42 - - - - - FileViewCell - FolderViewCell - - UILabel - UILabel - UILabel - UILabel - - - - _fileCountLabel - UILabel - - - _folderCountLabel - UILabel - - - _sharedByLabel - UILabel - - - _sharedByLabel2 - UILabel - - - - IBProjectSource - ./Classes/FileViewCell.h - - - - FolderViewCell - UITableViewCell - - UILabel - UILabel - - - - _nameLabel - UILabel - - - _pathLabel - UILabel - - - - IBProjectSource - ./Classes/FolderViewCell.h - - - - - 0 - IBIPadFramework - YES - 3 - - Purple_Folder.png - {512, 512} - - 2083 - - diff --git a/YakimbiTest/YakimbiTest/Cells/FolderViewCell.h b/YakimbiTest/YakimbiTest/Cells/FolderViewCell.h deleted file mode 100644 index a6cf07c..0000000 --- a/YakimbiTest/YakimbiTest/Cells/FolderViewCell.h +++ /dev/null @@ -1,20 +0,0 @@ -// -// FolderViewCell.h -// YakimbiTest -// -// Created by Syed Arsalan Pervez on 2/19/13. -// Copyright (c) 2013 SAPLogix. All rights reserved. -// - -#import - -@interface FolderViewCell : UITableViewCell -{ - IBOutlet UILabel *_nameLabel; - IBOutlet UILabel *_pathLabel; -} - -@property (readonly, nonatomic) UILabel *nameLabel; -@property (readonly, nonatomic) UILabel *pathLabel; - -@end diff --git a/YakimbiTest/YakimbiTest/Cells/FolderViewCell.m b/YakimbiTest/YakimbiTest/Cells/FolderViewCell.m deleted file mode 100644 index ab2ecdb..0000000 --- a/YakimbiTest/YakimbiTest/Cells/FolderViewCell.m +++ /dev/null @@ -1,13 +0,0 @@ -// -// FolderViewCell.m -// YakimbiTest -// -// Created by Syed Arsalan Pervez on 2/19/13. -// Copyright (c) 2013 SAPLogix. All rights reserved. -// - -#import "FolderViewCell.h" - -@implementation FolderViewCell - -@end diff --git a/YakimbiTest/YakimbiTest/Cells/FolderViewCell.xib b/YakimbiTest/YakimbiTest/Cells/FolderViewCell.xib deleted file mode 100644 index 8bb7bad..0000000 --- a/YakimbiTest/YakimbiTest/Cells/FolderViewCell.xib +++ /dev/null @@ -1,265 +0,0 @@ - - - - 1552 - 11G63 - 3084 - 1138.51 - 569.00 - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 2083 - - - IBProxyObject - IBUIImageView - IBUILabel - IBUITableViewCell - - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - PluginDependencyRecalculationVersion - - - - - IBFilesOwner - IBCocoaTouchFramework - - - IBFirstResponder - IBCocoaTouchFramework - - - - 292 - - - - 256 - - - - 292 - {{92, 8}, {224, 21}} - - - _NS:9 - NO - YES - 7 - NO - IBCocoaTouchFramework - <name> - - 1 - MCAwIDAAA - darkTextColor - - - 3 - MQA - - 0 - - 2 - 17 - - - Helvetica-Bold - 17 - 16 - - NO - - - - 292 - {{92, 30}, {224, 21}} - - _NS:9 - NO - YES - 7 - NO - IBCocoaTouchFramework - <path> - - - 0 - - 1 - 12 - - - Helvetica - 12 - 16 - - NO - - - - 292 - {{4, -2}, {81, 58}} - - - _NS:9 - 1 - NO - IBCocoaTouchFramework - - NSImage - Purple_Folder.png - - - - {300, 56} - - - _NS:11 - - 3 - MCAwAA - - NO - YES - 4 - YES - IBCocoaTouchFramework - - - {320, 57} - - - _NS:9 - IBCocoaTouchFramework - 1 - - FolderCell - - - - - - - - _nameLabel - - - - 7 - - - - _pathLabel - - - - 8 - - - - - - 0 - - - - - - -1 - - - File's Owner - - - -2 - - - - - 3 - - - - - - - - - - 4 - - - - - - 5 - - - - - - 6 - - - - - - - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIResponder - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - FolderViewCell - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - - - - 19 - - - - - FolderViewCell - UITableViewCell - - UILabel - UILabel - - - - _nameLabel - UILabel - - - _pathLabel - UILabel - - - - IBProjectSource - ./Classes/FolderViewCell.h - - - - - 0 - IBCocoaTouchFramework - YES - 3 - - Purple_Folder.png - {512, 512} - - 2083 - - diff --git a/YakimbiTest/YakimbiTest/Cells/FolderViewCell_iPad.xib b/YakimbiTest/YakimbiTest/Cells/FolderViewCell_iPad.xib deleted file mode 100644 index 03d2738..0000000 --- a/YakimbiTest/YakimbiTest/Cells/FolderViewCell_iPad.xib +++ /dev/null @@ -1,240 +0,0 @@ - - - - 1552 - 11G63 - 3084 - 1138.51 - 569.00 - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 2083 - - - IBProxyObject - IBUIImageView - IBUILabel - IBUITableViewCell - - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - PluginDependencyRecalculationVersion - - - - - IBFilesOwner - IBIPadFramework - - - IBFirstResponder - IBIPadFramework - - - - 292 - - - - 256 - - - - 292 - {{92, 8}, {636, 21}} - - - _NS:9 - NO - YES - 7 - NO - IBIPadFramework - <name> - - 1 - MCAwIDAAA - darkTextColor - - - 3 - MQA - - 0 - - 2 - 17 - - - Helvetica-Bold - 17 - 16 - - NO - - - - 292 - {{92, 30}, {636, 21}} - - _NS:9 - NO - YES - 7 - NO - IBIPadFramework - <path> - - - 0 - - 1 - 12 - - - Helvetica - 12 - 16 - - NO - - - - 292 - {{4, -2}, {81, 58}} - - - _NS:9 - 1 - NO - IBIPadFramework - - NSImage - Purple_Folder.png - - - - {748, 56} - - - _NS:11 - - 3 - MCAwAA - - NO - YES - 4 - YES - IBCocoaTouchFramework - - - {768, 57} - - - _NS:9 - IBIPadFramework - 1 - - FolderCell - - - - - - - - _nameLabel - - - - 8 - - - - _pathLabel - - - - 9 - - - - - - 0 - - - - - - -1 - - - File's Owner - - - -2 - - - - - 4 - - - - - - - - - - 5 - - - - - - 6 - - - - - - 7 - - - - - - - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIResponder - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - FolderViewCell - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - - - - 26 - - - 0 - IBIPadFramework - YES - 3 - - Purple_Folder.png - {512, 512} - - 2083 - - diff --git a/YakimbiTest/YakimbiTest/Custom/MyNavigationController.h b/YakimbiTest/YakimbiTest/Custom/MyNavigationController.h deleted file mode 100644 index 0dfdae0..0000000 --- a/YakimbiTest/YakimbiTest/Custom/MyNavigationController.h +++ /dev/null @@ -1,13 +0,0 @@ -// -// MyNavigationController.h -// YakimbiTest -// -// Created by Syed Arsalan Pervez on 2/19/13. -// Copyright (c) 2013 SAPLogix. All rights reserved. -// - -#import - -@interface MyNavigationController : UINavigationController - -@end diff --git a/YakimbiTest/YakimbiTest/Custom/MyNavigationController.m b/YakimbiTest/YakimbiTest/Custom/MyNavigationController.m deleted file mode 100644 index bf50067..0000000 --- a/YakimbiTest/YakimbiTest/Custom/MyNavigationController.m +++ /dev/null @@ -1,27 +0,0 @@ -// -// MyNavigationController.m -// YakimbiTest -// -// Created by Syed Arsalan Pervez on 2/19/13. -// Copyright (c) 2013 SAPLogix. All rights reserved. -// - -#import "MyNavigationController.h" - -@interface MyNavigationController () - -@end - -@implementation MyNavigationController - -- (BOOL)shouldAutorotate -{ - return YES; -} - -- (NSUInteger)supportedInterfaceOrientations -{ - return UIInterfaceOrientationMaskAll; -} - -@end diff --git a/YakimbiTest/YakimbiTest/DB Files/File.h b/YakimbiTest/YakimbiTest/DB Files/File.h deleted file mode 100644 index 0349df1..0000000 --- a/YakimbiTest/YakimbiTest/DB Files/File.h +++ /dev/null @@ -1,39 +0,0 @@ -// -// File.h -// YakimbiTest -// -// Created by Syed Arsalan Pervez on 2/18/13. -// Copyright (c) 2013 SAPLogix. All rights reserved. -// - -#import -#import - -@class Folder; - -@interface File : NSManagedObject - -@property (nonatomic, retain) NSString * isShared; -@property (nonatomic, retain) NSString * status; -@property (nonatomic, retain) NSString * shareId; -@property (nonatomic, retain) NSNumber * userId; -@property (nonatomic, retain) NSString * name; -@property (nonatomic, retain) NSNumber * sharedBy; -@property (nonatomic, retain) NSString * createdDate; -@property (nonatomic, retain) NSString * sharedDate; -@property (nonatomic, retain) NSNumber * shareLevel; -@property (nonatomic, retain) NSNumber * parentId; -@property (nonatomic, retain) NSString * lastUpdatedDate; -@property (nonatomic, retain) NSString * lastUpdatedBy; -@property (nonatomic, retain) NSString * link; -@property (nonatomic, retain) NSString * transType; -@property (nonatomic, retain) NSNumber * itemId; -@property (nonatomic, retain) NSString * path; -@property (nonatomic, retain) NSString * pathById; -@property (nonatomic, retain) NSString * type; -@property (nonatomic, retain) NSString * mimeType; -@property (nonatomic, retain) NSNumber * size; -@property (nonatomic, retain) NSNumber * hidden; -@property (nonatomic, retain) Folder *folder; - -@end diff --git a/YakimbiTest/YakimbiTest/DB Files/File.m b/YakimbiTest/YakimbiTest/DB Files/File.m deleted file mode 100644 index e802265..0000000 --- a/YakimbiTest/YakimbiTest/DB Files/File.m +++ /dev/null @@ -1,38 +0,0 @@ -// -// File.m -// YakimbiTest -// -// Created by Syed Arsalan Pervez on 2/18/13. -// Copyright (c) 2013 SAPLogix. All rights reserved. -// - -#import "File.h" -#import "Folder.h" - - -@implementation File - -@dynamic isShared; -@dynamic status; -@dynamic shareId; -@dynamic userId; -@dynamic name; -@dynamic sharedBy; -@dynamic createdDate; -@dynamic sharedDate; -@dynamic shareLevel; -@dynamic parentId; -@dynamic lastUpdatedDate; -@dynamic lastUpdatedBy; -@dynamic link; -@dynamic transType; -@dynamic itemId; -@dynamic path; -@dynamic pathById; -@dynamic type; -@dynamic mimeType; -@dynamic size; -@dynamic hidden; -@dynamic folder; - -@end diff --git a/YakimbiTest/YakimbiTest/DB Files/Folder.h b/YakimbiTest/YakimbiTest/DB Files/Folder.h deleted file mode 100644 index a628e29..0000000 --- a/YakimbiTest/YakimbiTest/DB Files/Folder.h +++ /dev/null @@ -1,29 +0,0 @@ -// -// Folder.h -// YakimbiTest -// -// Created by Syed Arsalan Pervez on 2/18/13. -// Copyright (c) 2013 SAPLogix. All rights reserved. -// - -#import -#import - -@class File, User; - -@interface Folder : NSManagedObject - -@property (nonatomic, retain) NSString * name; -@property (nonatomic, retain) NSString * fid; -@property (nonatomic, retain) NSSet *files; -@property (nonatomic, retain) User *user; -@end - -@interface Folder (CoreDataGeneratedAccessors) - -- (void)addFilesObject:(File *)value; -- (void)removeFilesObject:(File *)value; -- (void)addFiles:(NSSet *)values; -- (void)removeFiles:(NSSet *)values; - -@end diff --git a/YakimbiTest/YakimbiTest/DB Files/Folder.m b/YakimbiTest/YakimbiTest/DB Files/Folder.m deleted file mode 100644 index 6cec647..0000000 --- a/YakimbiTest/YakimbiTest/DB Files/Folder.m +++ /dev/null @@ -1,21 +0,0 @@ -// -// Folder.m -// YakimbiTest -// -// Created by Syed Arsalan Pervez on 2/18/13. -// Copyright (c) 2013 SAPLogix. All rights reserved. -// - -#import "Folder.h" -#import "File.h" -#import "User.h" - - -@implementation Folder - -@dynamic name; -@dynamic fid; -@dynamic files; -@dynamic user; - -@end diff --git a/YakimbiTest/YakimbiTest/DB Files/User.h b/YakimbiTest/YakimbiTest/DB Files/User.h deleted file mode 100644 index e08e260..0000000 --- a/YakimbiTest/YakimbiTest/DB Files/User.h +++ /dev/null @@ -1,34 +0,0 @@ -// -// User.h -// YakimbiTest -// -// Created by Syed Arsalan Pervez on 2/18/13. -// Copyright (c) 2013 SAPLogix. All rights reserved. -// - -#import -#import - -@class Folder; - -@interface User : NSManagedObject - -@property (nonatomic, retain) NSNumber * totalSpace; -@property (nonatomic, retain) NSNumber * lastRevId; -@property (nonatomic, retain) NSNumber * usedSpace; -@property (nonatomic, retain) NSNumber * availableSpace; -@property (nonatomic, retain) NSString * mode; -@property (nonatomic, retain) NSNumber * pendingRequests; -@property (nonatomic, retain) NSNumber * revId; -@property (nonatomic, retain) NSDate * lastUpdated; -@property (nonatomic, retain) NSSet *folders; -@end - -@interface User (CoreDataGeneratedAccessors) - -- (void)addFoldersObject:(Folder *)value; -- (void)removeFoldersObject:(Folder *)value; -- (void)addFolders:(NSSet *)values; -- (void)removeFolders:(NSSet *)values; - -@end diff --git a/YakimbiTest/YakimbiTest/DB Files/User.m b/YakimbiTest/YakimbiTest/DB Files/User.m deleted file mode 100644 index e562e05..0000000 --- a/YakimbiTest/YakimbiTest/DB Files/User.m +++ /dev/null @@ -1,25 +0,0 @@ -// -// User.m -// YakimbiTest -// -// Created by Syed Arsalan Pervez on 2/18/13. -// Copyright (c) 2013 SAPLogix. All rights reserved. -// - -#import "User.h" -#import "Folder.h" - - -@implementation User - -@dynamic totalSpace; -@dynamic lastRevId; -@dynamic usedSpace; -@dynamic availableSpace; -@dynamic mode; -@dynamic pendingRequests; -@dynamic revId; -@dynamic lastUpdated; -@dynamic folders; - -@end diff --git a/YakimbiTest/YakimbiTest/Database/DatabaseHandler.h b/YakimbiTest/YakimbiTest/Database/DatabaseHandler.h deleted file mode 100755 index df85752..0000000 --- a/YakimbiTest/YakimbiTest/Database/DatabaseHandler.h +++ /dev/null @@ -1,58 +0,0 @@ -// -// DatabaseHandler.h -// -// -// Created by Syed Arsalan Pervez on 8/2/11. -// Copyright 2011 SAPLogix. All rights reserved. -// - -#import -#import - -#define DBHandler [DatabaseHandler sharedHandler] - -@interface DatabaseHandler : NSObject -{ - NSManagedObjectContext *_manageContext; - NSPersistentStoreCoordinator *_storeCordinator; - NSPersistentStore *_persistentStore; -} - -@property (readonly, nonatomic) NSManagedObjectContext *_manageContext; - -// Insert Records -- (BOOL) insertObject:(id)manageObject; -- (BOOL) insertObject:(id)manageObject andSave:(BOOL)save; - -// Delete Object -- (BOOL) deleteObject:(id)manageObject; -- (BOOL) deleteObject:(id)manageObject andSave:(BOOL)save; - -// Fetch Records -- (id) fetchObjectsOfEntity:(NSString *)entity; -- (id) fetchObjectsOfEntity:(NSString *)entity withExpressionDescription:(NSArray *)expDesc; -- (id) fetchObjectsOfEntity:(NSString *)entity usingPredicate:(NSPredicate *)predicate; -- (id) fetchObjectsOfEntity:(NSString *)entity usingPredicate:(NSPredicate *)predicate uniqueResult:(BOOL)unique; -- (id) fetchObjectsOfEntity:(NSString *)entity usingPredicate:(NSPredicate *)predicate withSortDescriptors:(NSArray *)sortDesc withExpressionDescription:(NSArray *)expDesc withResultType:(NSFetchRequestResultType)resultType; -- (id) fetchObjectsOfEntity:(NSString *)entity usingPredicate:(NSPredicate *)predicate withSortDescriptors:(NSArray *)sortDesc withExpressionDescription:(NSArray *)expDesc withResultType:(NSFetchRequestResultType)resultType uniqueResult:(BOOL)unique; - -// Get Entity Description -- (NSEntityDescription *) entityDescriptionForName:(NSString *)name; - -// Save Context -- (BOOL) saveContext; - -// Singleton Accessor -+ (DatabaseHandler *) sharedHandler; -+ (void)deallocSharedHandler; -+ (void)deleteSQLiteFile; - -// ManageObject for Entity -- (id) manageObjectForEntity:(id)entityName; -- (id) manageObjectForEntity:(id)entityName autorelease:(BOOL)autorelease; - -// Undo & Redo -- (BOOL) undoChanges; -- (BOOL) redoChanges; - -@end diff --git a/YakimbiTest/YakimbiTest/Database/DatabaseHandler.m b/YakimbiTest/YakimbiTest/Database/DatabaseHandler.m deleted file mode 100755 index de2d362..0000000 --- a/YakimbiTest/YakimbiTest/Database/DatabaseHandler.m +++ /dev/null @@ -1,336 +0,0 @@ -// -// DatabaseHandler.m -// -// -// Created by Syed Arsalan Pervez on 8/2/11. -// Copyright 2011 SAPLogix. All rights reserved. -// - -#import "DatabaseHandler.h" - -// Toggle to clear db on startup -static const BOOL SQLITE_TESTING = NO; - -// Changed to match the user model fileaname -static NSString *SQLITE_FILE = @"YakimbiTest.sqlite"; -static NSString *SQLITE_FILE_NAME = @"YakimbiTest"; - -// Should not be changed -//static NSString *SQLITE_FILE_EXT = @"sqlite"; -static NSString *COREDATA_DATAMODEL_EXT = @"momd"; - - -@implementation DatabaseHandler - -@synthesize _manageContext; - -static DatabaseHandler *sharedObject; - -- (id) initWithDBName:(NSString *)name FileName:(NSString *)file -{ - self = [super init]; - if (self) - { - NSError *error = nil; - -// if (SQLITE_TESTING) -// { -// if ([[NSFileManager defaultManager] fileExistsAtPath:[[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0] stringByAppendingPathComponent:file]]) -// { -// [[NSFileManager defaultManager] removeItemAtPath:[[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0] stringByAppendingPathComponent:file] error:&error]; -// -// if (error) -// Log(@"Error: %@", error); -// -// error = nil; -// } -// } -// -// if (![[NSFileManager defaultManager] fileExistsAtPath:[[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0] stringByAppendingPathComponent:file]]) -// { -// [[NSFileManager defaultManager] copyItemAtPath:[[NSBundle mainBundle] pathForResource:name ofType:SQLITE_FILE_EXT] toPath:[[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0] stringByAppendingPathComponent:file] error:&error]; -// -// if (error) -// Log(@"Error: %@", error); -// -// error = nil; -// } - - NSManagedObjectModel *_model = [[NSManagedObjectModel alloc] initWithContentsOfURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:name ofType:COREDATA_DATAMODEL_EXT]]]; - - NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys: - [NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption, - [NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption, - nil]; - - _storeCordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:_model]; - error = nil; - if ([_storeCordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:[NSURL fileURLWithPath:[[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0] stringByAppendingPathComponent:file]] options:options error:&error]) - { - _manageContext = [[NSManagedObjectContext alloc] init]; - [_manageContext setPersistentStoreCoordinator:_storeCordinator]; - } - else - { - Log(@"Error %@", error); - SAFE_RELEASE(_storeCordinator); - } - SAFE_RELEASE(_model); - } - - return self; -} - -+ (DatabaseHandler *) sharedHandler -{ - @synchronized(sharedObject) - { - if (!sharedObject) - { - sharedObject = [[DatabaseHandler alloc] initWithDBName:SQLITE_FILE_NAME FileName:SQLITE_FILE]; - } - } - - return sharedObject; -} - -- (id) manageObjectForEntity:(id)entityName -{ - return [self manageObjectForEntity:entityName autorelease:YES]; -} - -- (id) manageObjectForEntity:(id)entityName autorelease:(BOOL)autorelease -{ - if ([entityName isKindOfClass:[NSString class]]) - { - Class cls = NSClassFromString(entityName); - - id _manageObject = [[cls alloc] initWithEntity:[NSEntityDescription entityForName:entityName inManagedObjectContext:[DBHandler _manageContext]] insertIntoManagedObjectContext:[DBHandler _manageContext]]; - -// if (_manageObject && autorelease) - return [_manageObject autorelease]; -// else -// if (_manageObject) // this is intentionaly done -// return _manageObject; - } - - return nil; -} - -#pragma mark -#pragma mark Undo & Redo - -// Does a rollback -- (BOOL) undoChanges -{ - if ([_manageContext tryLock]) - { - [_manageContext rollback]; - [_manageContext unlock]; - - return YES; - } - - return NO; -} - -- (BOOL) redoChanges -{ - if ([_manageContext tryLock]) - { - [_manageContext redo]; - [_manageContext unlock]; - - return YES; - } - - return NO; -} - -#pragma mark -#pragma mark Insert Record - -/* - - Insert Record - - */ - -- (BOOL) insertObject:(id)manageObject -{ - return [self insertObject:manageObject andSave:NO]; -} - -- (BOOL) insertObject:(id)manageObject andSave:(BOOL)save -{ - [_manageContext insertObject:manageObject]; - - if (save) - { - return [self saveContext]; - } - else - return true; - - return false; -} - -#pragma mark -#pragma mark Delete Record - -/* - - Delete Record - - */ - -- (BOOL) deleteObject:(id)manageObject -{ - return [self deleteObject:manageObject andSave:NO]; -} - -- (BOOL) deleteObject:(id)manageObject andSave:(BOOL)save -{ - [_manageContext deleteObject:manageObject]; - - if (save) - { - return [self saveContext]; - } - else - return true; - - return false; -} - -#pragma mark -#pragma mark Save Record - -/* - - Save Record - - */ - -- (BOOL) saveContext -{ - NSError *error = nil; - if (![_manageContext save:&error]) - { - Log(@"Error: %@", error); - - return false; - } - - return true; -} - -#pragma mark -#pragma mark Fetch Records - -- (id) fetchObjectsOfEntity:(NSString *)entity -{ - return [self fetchObjectsOfEntity:entity usingPredicate:nil withSortDescriptors:nil withExpressionDescription:nil withResultType:NSManagedObjectResultType]; -} - -- (id) fetchObjectsOfEntity:(NSString *)entity withExpressionDescription:(NSArray *)expDesc -{ - return [self fetchObjectsOfEntity:entity usingPredicate:nil withSortDescriptors:nil withExpressionDescription:expDesc withResultType:NSDictionaryResultType]; -} - -- (id) fetchObjectsOfEntity:(NSString *)entity usingPredicate:(NSPredicate *)predicate -{ - return [self fetchObjectsOfEntity:entity usingPredicate:predicate withSortDescriptors:nil withExpressionDescription:nil withResultType:NSManagedObjectResultType]; -} - -- (id) fetchObjectsOfEntity:(NSString *)entity usingPredicate:(NSPredicate *)predicate uniqueResult:(BOOL)unique -{ - return [self fetchObjectsOfEntity:entity usingPredicate:predicate withSortDescriptors:nil withExpressionDescription:nil withResultType:NSManagedObjectResultType uniqueResult:unique]; -} - -- (id) fetchObjectsOfEntity:(NSString *)entity usingPredicate:(NSPredicate *)predicate withSortDescriptors:(NSArray *)sortDesc withExpressionDescription:(NSArray *)expDesc withResultType:(NSFetchRequestResultType)resultType -{ - return [self fetchObjectsOfEntity:entity usingPredicate:predicate withSortDescriptors:sortDesc withExpressionDescription:expDesc withResultType:resultType uniqueResult:NO]; -} - -- (id) fetchObjectsOfEntity:(NSString *)entity usingPredicate:(NSPredicate *)predicate withSortDescriptors:(NSArray *)sortDesc withExpressionDescription:(NSArray *)expDesc withResultType:(NSFetchRequestResultType)resultType uniqueResult:(BOOL)unique -{ - NSFetchRequest *_request = nil; - NSArray *objects = nil; - NSError *error = nil; - - @try - { - _request = [[NSFetchRequest alloc] init]; - [_request setEntity:[NSEntityDescription entityForName:entity inManagedObjectContext:_manageContext]]; - - if (predicate) - [_request setPredicate:predicate]; // Predicate - - if (sortDesc) - [_request setSortDescriptors:sortDesc]; // Sort Descriptors - - if (expDesc) - [_request setPropertiesToFetch:expDesc]; // Expression Descriptions (for using aggregate functions in CoreData) - - [_request setResultType:resultType]; - - if (unique) - [_request setReturnsDistinctResults:unique]; - - objects = [_manageContext executeFetchRequest:_request error:&error]; - } - @catch(NSException *ex) - { - Log(@"Fetch Exception: %@", ex); - } - @finally - { - SAFE_RELEASE(_request); - - if (!error) - { - return objects; - } - else - { - Log(@"Fetch Error: %@", error); - } - } - - // show fetch error - - return nil; -} - -- (NSEntityDescription *) entityDescriptionForName:(NSString *)name -{ - return [NSEntityDescription entityForName:name inManagedObjectContext:_manageContext]; -} - -#pragma mark -#pragma mark Memory Management - -+ (void)deleteSQLiteFile -{ - NSString *path = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0] stringByAppendingPathComponent:SQLITE_FILE]; - if ([[NSFileManager defaultManager] fileExistsAtPath:path]) - { - [[NSFileManager defaultManager] removeItemAtPath:path error:nil]; - } -} - -+ (void)deallocSharedHandler -{ - SAFE_RELEASE(sharedObject); -} - -- (void) dealloc -{ - SAFE_RELEASE(_storeCordinator); - SAFE_RELEASE(_manageContext); - - [super dealloc]; -} - -@end diff --git a/YakimbiTest/YakimbiTest/Default-568h@2x.png b/YakimbiTest/YakimbiTest/Default-568h@2x.png deleted file mode 100644 index 0891b7aabfcf3422423b109c8beed2bab838c607..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18594 zcmeI4X;f257Jx&9fS`ixvS;&$x8J@slQFSel)6zJN=?13FB7H(lQjRkSy8x_-S~tvu2gzn1oS+dLcF#eqtq$ z%tf9TTvX?`)R@}3uBI;jzS-=ZR-Td&MHaS&;!0?Ni*#$#`n*~CcQK)Q9vAQ~TUpnI!j)a2biYK^R)M~A5wUDZhx?ULMX z3x1P&qt=trOY6P2U67L=m=U?F|5#Uj(eCueNTZaHs_ceWiHeET+j+tp3Jt9g(ekqP z2WOvfR{qV+9r+o4J5?qK>7;;^+I7tGv-i)es$X_D=EoKF+S?zsyj^oRFElP}c}JT< zd8SUs-?O?}2YD#ngKbnHgzHBcboxK_2r9l(?eNCl-pEzkJm}fY?WC*jnS?VBE4EpY zO$fEejz6fU;W2Kl>JeQBZBl-%Irg`obSlg*@4QB;Dd1H7^Oi5wvt4d{RZ!8Og?^aE z)k0$1g+V3fd(gdQ3d&q2q-FL*uy#}|bc^=VhFsl0jBgUGJ+-s3U8MK9A!YJJMxpci z5hJ%|{DwV48fZn0{n5l$N_KcSb#NKE4plB`9I6Zt=Z!~-zw0{9tg$L&Ju1F0X)Cy8 zKF;(&lJ>x)Jw(=;p~sF(Sd9VWGwFE2rnyS9!f^DZ8+aCLq zQ};>lcJ1GDLqjm6Hd>|Eabno@P`~Bn(~6^aD_#yoEH(a?Nm1S<;S+hSxI5d16^<1lEM3NPFi zkqPrpL)+ zgnseFikg`gJVBha1&7C4;O6>h=dt~`ND+;Zd?W(4v2JIb7Pt>Td42%M-Ju-XAH#Pns762L}K3 zDhvsRqN0Ni(1UrishD2YvV?4*h2iFj$+&N||Fn$4n|^NSU+o?~jq`0jVQt8T9l{7b zXiwwODFh2V!Q6sqP9S>WH$oOf$N~=d0-bqTlD61!=`&0eAP-F>XN?*|gtOXX{ zQVTWyYo4ZK0GAw!GHf|pz9`D;-bbb*5LBX*{bnz|+)$@&P9|ORM2o?95{;ejvo&r- zq8cBhTN6nn)7~W>54U)%-F_-b?YKdfk5I8MHcuzBD5)!;yv#Z&R&^y=@=>VTIMy#r zX&U<=BsPkdqcMe<_}2+>H%XKyrr5ZR8_KVe>ZqYN z^=^~TFD};;rHJ$U;{~w^hYojl4hRI@SH$^K{YEo=sg)WY87r!*7blQK&qnpDo0`Vn zkl)9u9g=mCh&ZCJS(L4yN3k0kQ zuvg$h2KEEk51T+O0JQ+r0`R>g{jvqM0Mr6d3qUOZwE!?PI7HY@CE|dr sfw?Q;rAv?G4&^^8-z_>&sWXMxvD*gPOU4CBe-*@OtE+wfmVJNyHv)PfH~;_u diff --git a/YakimbiTest/YakimbiTest/Default.png b/YakimbiTest/YakimbiTest/Default.png deleted file mode 100644 index 4c8ca6f693f96d511e9113c0eb59eec552354e42..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6540 zcmeAS@N?(olHy`uVBq!ia0y~yU~~ZD2OMlbkt;o0To@QwR5G2N13aCb6#|O#(=u~X z85k@CTSM>X-wqM6>&y>YB4)1;;ojbLbbV-W^iFB1wa3^zCog^LCAReC4K0-?R_2{6 zrP*)4+_uWUy3w5N52M3PW_}MFMP9a~>YLvVZ1D_k*IMQ2QT^fwzoOb(*3gH$%aYWC zkHmcab=va2<#X%jakpJ;<1@F;k__#bwtC&%^D0v(FBh9K&$sK+<}2RJS609D)17$w ztdQP8(eLM8Ka}m_IQ@3wyMKP)l=oM4-?`YS_*P?4V_ORLPxsj&7Ju#kH;>6^Kp?T7~ zl+q?{UOOqV==?+d{=)5s|M~T1mwtH@+Z^$G&eEO9JNP^AX@3jZ*J*!!>lc|1-W%fA z@AOQpXZ_Lt>rxFXrGp*zLPiW@uo_c7C{As>j zWeX)wi+LTp_)@KYZCX{j;H?|1yXT4DnlS(Fr8gyP5|uaX_gLvaW0ScZdnG7o+u{T6 zFI-%d{ls*WuCDa5UJ@|RXv&ejZe}*BMkiWY51&pnRPw(hlykSzvj6e%mYz-GdvzBD zF10?szF_~!jS=?2HyQuPCvARXAe}C}WP|yQ*>5~~=*Nxq8+HHW1~FMDRCP^TcacKuk$ z(U#REVv)D!PhJ*ecH-ELFUrfyV&*)Z)>UCOuS?yd^L@Afk>ihynYPc{^CRwu+JHX+#$@YsC4c|l0tGigsn@jy) zXD($Ouk>H+V(Mr6NQT0S9BFM~V6nkj;1OBOz`zY;a|<&v%$g$sEJPk;hD4M^`1)8S z=jZArrsOB3>Q&?x097+E*i={nnYpPYi3%0DIeEoa6}C!X6;?ntNLXJ<0j#7X+g2&U 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 diff --git a/YakimbiTest/YakimbiTest/Network/HTTPRequestOperation.h b/YakimbiTest/YakimbiTest/Network/HTTPRequestOperation.h deleted file mode 100644 index b97f06f..0000000 --- a/YakimbiTest/YakimbiTest/Network/HTTPRequestOperation.h +++ /dev/null @@ -1,65 +0,0 @@ -// -// HTTPRequestOperation.h -// YakimbiTest -// -// Created by Syed Arsalan Pervez on 2/16/13. -// Copyright (c) 2013 SAPLogix. All rights reserved. -// - -#import - -@class HTTPRequestOperation; - -@protocol HTTPRequestOperationDelegate - -@optional - -- (void)HTTPOperationStarted:(HTTPRequestOperation *)operation; - -@required - -- (void)HTTPOperationFinished:(HTTPRequestOperation *)operation; -- (void)HTTPOperationFailed:(HTTPRequestOperation *)operation withError:(NSError *)error; - -@end - -@interface HTTPRequestOperation : NSOperation -{ - int _tag; - - id _delegate; - - BOOL _failed; - BOOL _finished; - BOOL _executing; - BOOL _cancelled; - BOOL _concurrent; - - NSURL *_requestURL; - - NSMutableData *_data; - - NSURLConnection *_urlConnection; - - Class _parserClass; -} - -@property (assign, nonatomic) int tag; -@property (assign, nonatomic) id delegate; -@property (readonly, nonatomic) NSURL *requestURL; - -- (BOOL)isFailed; - -- (void)startSynchronously; -- (void)startAsynchronously; - -- (NSData *)responseData; -- (NSString *)responseString; - -- (void)registerParserClass:(Class)class; - -- (id)initWithRequestURL:(id)requestURL; -+ (HTTPRequestOperation *)requestWithURL:(id)requestURL; -+ (HTTPRequestOperation *)requestWithURL:(id)requestURL andDelegate:(id)delegate; - -@end diff --git a/YakimbiTest/YakimbiTest/Network/HTTPRequestOperation.m b/YakimbiTest/YakimbiTest/Network/HTTPRequestOperation.m deleted file mode 100644 index 678844c..0000000 --- a/YakimbiTest/YakimbiTest/Network/HTTPRequestOperation.m +++ /dev/null @@ -1,316 +0,0 @@ -// -// HTTPRequestOperation.m -// YakimbiTest -// -// Created by Syed Arsalan Pervez on 2/16/13. -// Copyright (c) 2013 SAPLogix. All rights reserved. -// - -#import "HTTPRequestOperation.h" - -@implementation HTTPRequestOperation - -#pragma mark - Init Methods - -- (id)initWithRequestURL:(id)requestURL -{ - self = [super init]; - if (self) - { - if ([requestURL isKindOfClass:[NSURL class]]) - { - _requestURL = [requestURL copy]; - } - else - if ([requestURL isKindOfClass:[NSString class]]) - { - _requestURL = [[NSURL URLWithString:requestURL] retain]; - } - } - return self; -} - -+ (HTTPRequestOperation *)requestWithURL:(id)requestURL -{ - return [[[HTTPRequestOperation alloc] initWithRequestURL:requestURL] autorelease]; -} - -+ (HTTPRequestOperation *)requestWithURL:(id)requestURL andDelegate:(id)delegate -{ - HTTPRequestOperation *operation = [HTTPRequestOperation requestWithURL:requestURL]; - [operation setDelegate:delegate]; - return operation; -} - -#pragma mark - Method To Execute Operation Either Synchronously or Asynchronously - -- (void)startSynchronously -{ - [self start]; -} - -- (void)startAsynchronously -{ - [self performSelectorInBackground:@selector(start) withObject:nil]; -} - -#pragma mark - NSOperation Overridden Methods - -- (void)start -{ - if ([self isExecuting]) - return; - - [self setIsCancelled:NO]; - [self setIsFailed:NO]; - [self setIsFinished:NO]; - - if (!_requestURL) - { - @throw [NSException exceptionWithName:NSInvalidArgumentException reason:@"Request URL is not specified." userInfo:nil]; - } - else - { - if ([self isConcurrent]) - { - [self main]; - } - else - { - @throw [NSException exceptionWithName:NSInternalInconsistencyException reason:@"Can't be started right now as it dependeds on another operation." userInfo:nil]; - } - } -} - -- (void)main -{ - SAFE_RELEASE(_urlConnection); - _urlConnection = [[NSURLConnection connectionWithRequest:[NSURLRequest requestWithURL:_requestURL] delegate:self] retain]; - - if (!_urlConnection) - { - [self setIsExecuting:NO]; - [self setIsFailed:YES]; - } - else - { - [self setIsExecuting:YES]; - [self HTTPOperationStarted]; - } - - while ([self isExecuting]) - { - [[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:1]]; - } -} - -- (void)cancel -{ - if (_executing) - { - [_urlConnection cancel]; - - [self setIsExecuting:NO]; - [self setIsCancelled:YES]; - } -} - -- (BOOL)isFailed -{ - return _failed; -} - -- (BOOL)isFinished -{ - return _finished; -} - -- (BOOL)isCancelled -{ - return _cancelled; -} - -- (BOOL)isExecuting -{ - return _executing; -} - -- (BOOL)isConcurrent -{ - if ([[self dependencies] count] > 0) - { - for (HTTPRequestOperation *operation in [self dependencies]) - { - if (!([operation isFinished] || [operation isCancelled] || [operation isFailed])) - { - return NO; - } - } - } - return YES; -} - -#pragma mark - NSURLConnectionDelegate Methods - -- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error -{ - [self setIsExecuting:NO]; - [self setIsFailed:YES]; - [self HTTPOperationFailedWithError:error]; -} - -#pragma mark - NSURLConnectionDelegate Methods - -- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data -{ - [_data appendData:data]; -} - -- (void)connectionDidFinishLoading:(NSURLConnection *)connection -{ - if (!_parserClass) - { - [self setIsExecuting:NO]; - [self setIsFinished:YES]; - [self HTTPOperationFinished]; - } - else - { - id object = [[_parserClass new] autorelease]; - if (object && [object conformsToProtocol:@protocol(ParserDelegate)]) - { - [object setDelegate:self]; - [object parseData:_data inBackground:[NSThread isMainThread]]; - } - } -} - -- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response -{ - SAFE_RELEASE(_data); - _data = [NSMutableData new]; -} - -- (NSURLRequest *)connection:(NSURLConnection *)connection willSendRequest:(NSURLRequest *)request redirectResponse:(NSURLResponse *)response -{ - return request; -} - -#pragma mark - Setters - -- (void)setIsFailed:(BOOL)failed -{ - [self willChangeValueForKey:@"isFailed"]; - _failed = failed; - [self didChangeValueForKey:@"isFailed"]; -} - -- (void)setIsFinished:(BOOL)finished -{ - [self willChangeValueForKey:@"isFinished"]; - _finished = finished; - [self didChangeValueForKey:@"isFinished"]; -} - -- (void)setIsExecuting:(BOOL)executing -{ - [self willChangeValueForKey:@"isExecuting"]; - _executing = executing; - [self didChangeValueForKey:@"isExecuting"]; -} - -- (void)setIsCancelled:(BOOL)cancelled -{ - [self willChangeValueForKey:@"isCancelled"]; - _cancelled = cancelled; - [self didChangeValueForKey:@"isCancelled"]; -} - -- (void)setIsConcurrent:(BOOL)concurrent -{ - [self willChangeValueForKey:@"isConcurrent"]; - _concurrent = concurrent; - [self didChangeValueForKey:@"isConcurrent"]; -} - -#pragma mark - HTTPOperationDelegate Methods - -- (void)HTTPOperationStarted -{ - if (_delegate && [_delegate respondsToSelector:@selector(HTTPOperationStarted:)]) - { - dispatch_async(dispatch_get_main_queue(), ^{ - [_delegate performSelector:@selector(HTTPOperationStarted:) withObject:self]; - }); - } -} - -- (void)HTTPOperationFinished -{ - if (_delegate && [_delegate respondsToSelector:@selector(HTTPOperationFinished:)]) - { - dispatch_async(dispatch_get_main_queue(), ^{ - [_delegate performSelector:@selector(HTTPOperationFinished:) withObject:self]; - }); - } -} - -- (void)HTTPOperationFailedWithError:(NSError *)error -{ - if (_delegate && [_delegate respondsToSelector:@selector(HTTPOperationFailed:withError:)]) - { - dispatch_async(dispatch_get_main_queue(), ^{ - [_delegate performSelector:@selector(HTTPOperationFailed:withError:) withObject:self withObject:error]; - }); - } -} - -#pragma mark - Getters - -- (NSData *)responseData -{ - return _data ? [NSData dataWithData:_data] : nil; -} - -- (NSString *)responseString -{ - return _data ? [[[NSString alloc] initWithData:_data encoding:NSUTF8StringEncoding] autorelease] : nil; -} - -#pragma mark - Parser - -- (void)registerParserClass:(Class)class -{ - _parserClass = class; -} - -#pragma mark - ParserDelegate Methods - -- (void)parsingFinished:(Parser *)parser -{ - [self setIsExecuting:NO]; - [self setIsFinished:YES]; - [self HTTPOperationFinished]; -} - -- (void)parsingFailed:(Parser *)parser withError:(NSError *)error -{ - [self setIsExecuting:NO]; - [self setIsFailed:YES]; - [self HTTPOperationFailedWithError:error]; -} - -#pragma mark - Memory Management - -- (void)dealloc -{ - SAFE_RELEASE(_requestURL); - SAFE_RELEASE(_data); - SAFE_RELEASE(_urlConnection); - - _delegate = nil; - - [super dealloc]; -} - -@end diff --git a/YakimbiTest/YakimbiTest/Parsers/Parser.h b/YakimbiTest/YakimbiTest/Parsers/Parser.h deleted file mode 100644 index 3e6a74a..0000000 --- a/YakimbiTest/YakimbiTest/Parsers/Parser.h +++ /dev/null @@ -1,38 +0,0 @@ -// -// Parser.h -// YakimbiTest -// -// Created by Syed Arsalan Pervez on 2/16/13. -// Copyright (c) 2013 SAPLogix. All rights reserved. -// - -#import - -@class Parser; - -@protocol ParserDelegate - -@required -- (void)parseData:(NSData *)data; -- (void)parseData:(NSData *)data inBackground:(BOOL)inBackground; - -@end - -@protocol ParserResponseDelegate - -@required -- (void)parsingFinished:(Parser *)parser; -- (void)parsingFailed:(Parser *)parser withError:(NSError *)error; - -@end - -@interface Parser : NSObject -{ - id _delegate; - int _tag; -} - -@property (assign, nonatomic) id delegate; -@property (assign, nonatomic) int tag; - -@end diff --git a/YakimbiTest/YakimbiTest/Parsers/Parser.m b/YakimbiTest/YakimbiTest/Parsers/Parser.m deleted file mode 100644 index e3d6396..0000000 --- a/YakimbiTest/YakimbiTest/Parsers/Parser.m +++ /dev/null @@ -1,195 +0,0 @@ -// -// Parser.m -// YakimbiTest -// -// Created by Syed Arsalan Pervez on 2/16/13. -// Copyright (c) 2013 SAPLogix. All rights reserved. -// - -#import "Parser.h" - -@implementation Parser - -#pragma mark - Parse Data - -- (void)parseData:(NSData *)data inBackground:(BOOL)inBackground -{ - if (inBackground) - [self performSelectorInBackground:@selector(parseData:) withObject:data]; - else - [self parseData:data]; -} - -- (void)parseData:(NSData *)data -{ - @autoreleasepool - { - if (data == nil) - { - if (_delegate && [_delegate conformsToProtocol:@protocol(ParserResponseDelegate)]) - { - [_delegate parsingFailed:self withError:[NSError errorWithDomain:@"com.Yakimbi" code:1000 userInfo:@{NSLocalizedDescriptionKey:@"Data is nil."}]]; - } - return; - } - - [data retain]; - - NSError *error = nil; - NSDictionary *dictionary = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:&error]; - - if (!error) - { - User *_user = nil; - - NSArray *_users = [DBHandler fetchObjectsOfEntity:USER_TABLE]; - if ([_users count] > 0) - _user = [_users objectAtIndex:0]; - else - _user = [DBHandler manageObjectForEntity:USER_TABLE]; - - [_user setLastUpdated:[NSDate date]]; - [_user setTotalSpace:[dictionary valueForKey:@"totalSpace"]]; - [_user setLastRevId:[dictionary valueForKey:@"last_rev_id"]]; - [_user setUsedSpace:[dictionary valueForKey:@"usedSpace"]]; - [_user setAvailableSpace:[dictionary valueForKey:@"availableSpace"]]; - [_user setMode:[dictionary valueForKey:@"mode"]]; - [_user setPendingRequests:[dictionary valueForKey:@"pendingRequests"]]; - [_user setRevId:[dictionary valueForKey:@"rev_id"]]; - - // Check rev_id, if same then return - if ([_user.revId isEqualToNumber:[dictionary valueForKey:@"rev_id"]]) - { - // My Files - [self addOrUpdateFoldersFromDictionary:[dictionary valueForKey:@"my_files"] forUser:_user]; - // SharedFiles - [self addOrUpdateFoldersFromDictionary:[dictionary valueForKey:@"shared_files"] forUser:_user]; - } - - [DBHandler performSelectorOnMainThread:@selector(saveContext) withObject:nil waitUntilDone:NO]; - } - else - { - Log(@"Parsing Error: %@", error); - - if (_delegate && [_delegate conformsToProtocol:@protocol(ParserResponseDelegate)]) - { - [_delegate parsingFailed:self withError:[NSError errorWithDomain:@"com.Yakimbi" code:1001 userInfo:@{NSLocalizedDescriptionKey:@"Failed to parse the given data."}]]; - } - return; - } - - if (_delegate && [_delegate conformsToProtocol:@protocol(ParserResponseDelegate)]) - { - [_delegate parsingFinished:self]; - } - - [data release]; - } -} - -#pragma mark - Support Methods - -- (void)addOrUpdateFoldersFromDictionary:(NSDictionary *)myfiles forUser:(User *)_user -{ - Folder *_folder = nil; - - BOOL found = NO; - - NSSet *folderSet = [[_user folders] filteredSetUsingPredicate:[NSPredicate predicateWithFormat:@"self.fid == %@", [myfiles valueForKey:@"id"]]]; - - // Check if user already has folders and were we able to find the folder we are about to add/update - if ([[_user folders] count] > 0 && [folderSet count] > 0) - { - _folder = [[folderSet allObjects] objectAtIndex:0]; - found = YES; - } - else // if not found then add the folder - { - _folder = [DBHandler manageObjectForEntity:FOLDER_TABLE]; - [_folder setFid:[myfiles valueForKey:@"id"]]; - } - - [_folder setName:[myfiles valueForKey:@"name"]]; - - // Hide all before adding/updating - [[_folder files] setValue:[NSNumber numberWithBool:YES] forKey:@"hidden"]; - - for (NSDictionary *fileDictionary in [myfiles valueForKey:@"content"]) - { - File *_file = nil; - - // If folder already exists then check if file already exists or not - if (found) - { - NSSet *fileSet = [[_folder files] filteredSetUsingPredicate:[NSPredicate predicateWithFormat:@"self.itemId == %@", [fileDictionary valueForKey:@"item_id"]]]; - if ([fileSet count] > 0) - _file = [[fileSet allObjects] objectAtIndex:0]; - } - - // If file not found then create - if (!_file) - { - _file = [DBHandler manageObjectForEntity:FILE_TABLE]; - [_file setFolder:_folder]; - [_folder addFilesObject:_file]; - } - - // Replace all the fields with respective values received from server - [self assignFileObject:_file valuesFromDictionary:fileDictionary]; - - // Unhide the ones that were received from the server - [_file setHidden:[NSNumber numberWithBool:NO]]; - } - - // If folder not found then add it - if (!found) - { - [_folder setUser:_user]; - [_user addFoldersObject:_folder]; - } -} - -- (void)assignFileObject:(File *)file valuesFromDictionary:(NSDictionary *)dictionary -{ - [file setStatus:[dictionary valueForKey:@"status"]]; - [file setIsShared:[dictionary valueForKey:@"is_shared"]]; - [file setShareId:[dictionary valueForKey:@"share_id"]]; - [file setUserId:[dictionary valueForKey:@"user_id"]]; - [file setName:[dictionary valueForKey:@"name"]]; - [file setSharedBy:[dictionary valueForKey:@"shared_by"]]; - [file setCreatedDate:[dictionary valueForKey:@"created_date"]]; - [file setSharedDate:[dictionary valueForKey:@"shared_date"]]; - - // Note: in json response my_files->content->"share_level" is of type string and in shared_files->content->"share_level" if of type number (issue or intentional?) - // stored in local DB as number - if ([[dictionary valueForKey:@"share_level"] isKindOfClass:[NSString class]]) - [file setShareLevel:[NSNumber numberWithInt:[[dictionary valueForKey:@"share_level"] intValue]]]; - else - [file setShareLevel:[dictionary valueForKey:@"share_level"]]; - - if ([[dictionary allKeys] containsObject:@"parent_id"]) - [file setParentId:[dictionary valueForKey:@"parent_id"]]; - - [file setLastUpdatedDate:[dictionary valueForKey:@"last_updated_date"]]; - [file setLastUpdatedBy:[dictionary valueForKey:@"last_updated_by"]]; - [file setLink:[dictionary valueForKey:@"link"]]; - [file setTransType:[dictionary valueForKey:@"trans_type"]]; - [file setItemId:[dictionary valueForKey:@"item_id"]]; - [file setPath:[dictionary valueForKey:@"path"]]; - [file setPathById:[dictionary valueForKey:@"path_by_id"]]; - [file setType:[dictionary valueForKey:@"type"]]; - [file setMimeType:[dictionary valueForKey:@"mime_type"]]; - [file setSize:[dictionary valueForKey:@"size"]]; -} - -#pragma mark - Memory Management - -- (void)dealloc -{ - _delegate = nil; - - [super dealloc]; -} - -@end diff --git a/YakimbiTest/YakimbiTest/Utilities/AppConstants.h b/YakimbiTest/YakimbiTest/Utilities/AppConstants.h deleted file mode 100644 index f0417b5..0000000 --- a/YakimbiTest/YakimbiTest/Utilities/AppConstants.h +++ /dev/null @@ -1,21 +0,0 @@ -// -// AppConstants.h -// YakimbiTest -// -// Created by Syed Arsalan Pervez on 2/18/13. -// Copyright (c) 2013 SAPLogix. All rights reserved. -// - -#import - -#define SAMPLE_JSON_URL @"https://gist.github.com/raw/4680060/aac6d818e7103edfe721e719b1512f707bcfb478/sample.json" - -#define USER_TABLE @"User" -#define FOLDER_TABLE @"Folder" -#define FILE_TABLE @"File" - -#define REFRESH_INTERVAL 140 - -@interface AppConstants : NSObject - -@end diff --git a/YakimbiTest/YakimbiTest/Utilities/AppConstants.m b/YakimbiTest/YakimbiTest/Utilities/AppConstants.m deleted file mode 100644 index 02de659..0000000 --- a/YakimbiTest/YakimbiTest/Utilities/AppConstants.m +++ /dev/null @@ -1,13 +0,0 @@ -// -// AppConstants.m -// YakimbiTest -// -// Created by Syed Arsalan Pervez on 2/18/13. -// Copyright (c) 2013 SAPLogix. All rights reserved. -// - -#import "AppConstants.h" - -@implementation AppConstants - -@end diff --git a/YakimbiTest/YakimbiTest/Utilities/Macros.h b/YakimbiTest/YakimbiTest/Utilities/Macros.h deleted file mode 100644 index f8b6fe4..0000000 --- a/YakimbiTest/YakimbiTest/Utilities/Macros.h +++ /dev/null @@ -1,40 +0,0 @@ -// -// Macros.h -// YakimbiTest -// -// Created by Syed Arsalan Pervez on 2/16/13. -// Copyright (c) 2013 SAPLogix. All rights reserved. -// - -//****************************************************************************** -// Logging -//****************************************************************************** - -#define IS_DEBUG 0 - -#define Log(fmt, ...) if (IS_DEBUG == 1) { NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__); } - -//****************************************************************************** -// Release & Set Pointer To Nil -//****************************************************************************** - -#define SAFE_RELEASE(a) if (a) { [a release]; a = nil; } - -//****************************************************************************** -// Device Detection -//****************************************************************************** - -#define DEVICE_iPAD ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) - -//****************************************************************************** -// Byte Formatting -//****************************************************************************** - -#define KB (1024) -#define MB (1024*1024) -#define GB (1024*1024*1024) - -#define FORMAT_BYTES(bytes) bytes >= GB ? [NSString stringWithFormat:@"%.2f GB", (float)bytes/(float)GB] : \ -bytes >= MB ? [NSString stringWithFormat:@"%.2f MB", (float)bytes/(float)MB] : \ -bytes >= KB ? [NSString stringWithFormat:@"%.2f KB", (float)bytes/(float)KB] : \ -[NSString stringWithFormat:@"%.0f Bytes", (float)bytes] diff --git a/YakimbiTest/YakimbiTest/ViewControllers/InfoViewController.h b/YakimbiTest/YakimbiTest/ViewControllers/InfoViewController.h deleted file mode 100644 index a986b1a..0000000 --- a/YakimbiTest/YakimbiTest/ViewControllers/InfoViewController.h +++ /dev/null @@ -1,21 +0,0 @@ -// -// InfoViewController.h -// YakimbiTest -// -// Created by Syed Arsalan Pervez on 2/20/13. -// Copyright (c) 2013 SAPLogix. All rights reserved. -// - -#import - -@interface InfoViewController : UIViewController -{ - IBOutlet UIProgressView *_progressView; - IBOutlet UILabel *_spaceLabel; - - User *_user; -} - -@property (assign, nonatomic) User *user; - -@end diff --git a/YakimbiTest/YakimbiTest/ViewControllers/InfoViewController.m b/YakimbiTest/YakimbiTest/ViewControllers/InfoViewController.m deleted file mode 100644 index 15dfe4d..0000000 --- a/YakimbiTest/YakimbiTest/ViewControllers/InfoViewController.m +++ /dev/null @@ -1,38 +0,0 @@ -// -// InfoViewController.m -// YakimbiTest -// -// Created by Syed Arsalan Pervez on 2/20/13. -// Copyright (c) 2013 SAPLogix. All rights reserved. -// - -#import "InfoViewController.h" - -@interface InfoViewController () - -@end - -@implementation InfoViewController - -- (void)viewDidLoad -{ - [self setContentSizeForViewInPopover:CGSizeMake(320, 320)]; - - [_spaceLabel setText:[NSString stringWithFormat:@"Using %@ of your %@", FORMAT_BYTES([[_user usedSpace] floatValue]), FORMAT_BYTES([[_user totalSpace] floatValue])]]; -} - -- (void)viewDidAppear:(BOOL)animated -{ - [super viewDidAppear:animated]; - float progress = (([_user.usedSpace floatValue] / [_user.totalSpace floatValue]) * 1.0); - [_progressView setProgress:progress animated:YES]; -} - -- (void)dealloc -{ - _user = nil; - - [super dealloc]; -} - -@end diff --git a/YakimbiTest/YakimbiTest/ViewControllers/InfoViewController.xib b/YakimbiTest/YakimbiTest/ViewControllers/InfoViewController.xib deleted file mode 100644 index 2aef3d6..0000000 --- a/YakimbiTest/YakimbiTest/ViewControllers/InfoViewController.xib +++ /dev/null @@ -1,238 +0,0 @@ - - - - 1552 - 11G63 - 3084 - 1138.51 - 569.00 - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 2083 - - - IBProxyObject - IBUILabel - IBUIProgressView - IBUIView - - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - PluginDependencyRecalculationVersion - - - - - IBFilesOwner - IBCocoaTouchFramework - - - IBFirstResponder - IBCocoaTouchFramework - - - - 274 - - - - 292 - {{20, 20}, {280, 9}} - - - _NS:9 - NO - IBCocoaTouchFramework - 1 - - 1 - MCAwLjUwMTk2MDgxNCAxAA - - - 1 - MSAxIDEAA - - - - - 292 - {{20, 37}, {280, 21}} - - - _NS:9 - NO - YES - 7 - NO - IBCocoaTouchFramework - Label - - 1 - MCAwIDAAA - darkTextColor - - - 0 - 1 - - 1 - 15 - - - Helvetica - 15 - 16 - - NO - - - {{0, 20}, {320, 548}} - - - - - 3 - MQA - - 2 - - - - - IBUIScreenMetrics - - YES - - - - - - {320, 568} - {568, 320} - - - IBCocoaTouchFramework - Retina 4 Full Screen - 2 - - IBCocoaTouchFramework - - - - - - - view - - - - 3 - - - - _spaceLabel - - - - 13 - - - - _progressView - - - - 14 - - - - - - 0 - - - - - - 1 - - - - - - - - - -1 - - - File's Owner - - - -2 - - - - - 4 - - - - - - 11 - - - - - - - InfoViewController - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIResponder - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - - - - 14 - - - - - InfoViewController - UIViewController - - UIProgressView - UILabel - - - - _progressView - UIProgressView - - - _spaceLabel - UILabel - - - - IBProjectSource - ./Classes/InfoViewController.h - - - - - 0 - IBCocoaTouchFramework - YES - 3 - 2083 - - diff --git a/YakimbiTest/YakimbiTest/ViewControllers/ListViewController.h b/YakimbiTest/YakimbiTest/ViewControllers/ListViewController.h deleted file mode 100644 index b06a7bb..0000000 --- a/YakimbiTest/YakimbiTest/ViewControllers/ListViewController.h +++ /dev/null @@ -1,28 +0,0 @@ -// -// ListViewController.h -// YakimbiTest -// -// Created by Syed Arsalan Pervez on 2/18/13. -// Copyright (c) 2013 SAPLogix. All rights reserved. -// - -#import - -@interface ListViewController : UIViewController -{ - Folder *_folder; - - NSArray *_items; - - IBOutlet UITableView *_tableView; - IBOutlet UILabel *_pageLabel; - IBOutlet UIBarButtonItem *_nextBarBtn; - IBOutlet UIBarButtonItem *_previousBarBtn; - - int currentPage; - int noOfPages; -} - -@property (retain, nonatomic) Folder *folder; - -@end diff --git a/YakimbiTest/YakimbiTest/ViewControllers/ListViewController.m b/YakimbiTest/YakimbiTest/ViewControllers/ListViewController.m deleted file mode 100644 index 3b0b08a..0000000 --- a/YakimbiTest/YakimbiTest/ViewControllers/ListViewController.m +++ /dev/null @@ -1,265 +0,0 @@ -// -// ListViewController.m -// YakimbiTest -// -// Created by Syed Arsalan Pervez on 2/18/13. -// Copyright (c) 2013 SAPLogix. All rights reserved. -// - -#import "ListViewController.h" -#import "TableViewController.h" -#import "FileViewCell.h" - -#define DISPLAY_NO_OF_ITEMS 20 - -static NSString *identifier = @"FileCell"; - -@interface ListViewController () - -@end - -@implementation ListViewController - -- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil -{ - if (DEVICE_iPAD) - { - self = [super initWithNibName:[NSStringFromClass([self class]) stringByAppendingString:@"_iPad"] bundle:nibBundleOrNil]; - } - else - self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; - - if (self) - { - } - return self; -} - -#pragma mark - UIViewController Overridden Methods - -- (void)viewDidLoad -{ - [super viewDidLoad]; - // Do any additional setup after loading the view from its nib. - - if (DEVICE_iPAD) - { - [_tableView registerNib:[UINib nibWithNibName:@"FileViewCell_iPad" bundle:nil] forCellReuseIdentifier:identifier]; - } - else - { - [_tableView registerNib:[UINib nibWithNibName:@"FileViewCell" bundle:nil] forCellReuseIdentifier:identifier]; - } - - [[self navigationItem] setRightBarButtonItems:@[_nextBarBtn, _previousBarBtn]]; -} - -- (void)viewWillAppear:(BOOL)animated -{ - [super viewWillAppear:animated]; - - if (_folder) - { - [self setTitle:[_folder name]]; - - currentPage = 1; - noOfPages = ceil((double)[[self files] count] / (double)DISPLAY_NO_OF_ITEMS); - - [self refreshData]; - } - - [self setFrameBaseOnOrientation]; -} - -#pragma mark - Refresh Data - -- (void)refreshData -{ - NSSortDescriptor *asc = [NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES]; - SAFE_RELEASE(_items); - - int loc = 0; - int len = 0; - NSRange range; - - // Calculate start location and no. of records to be shown - // If less records than min no. to be displayed at once - if ((currentPage * DISPLAY_NO_OF_ITEMS) > [[_folder files] count]) - { - loc = (currentPage - 1) * DISPLAY_NO_OF_ITEMS; - len = [[self files] count] - loc; - range = NSMakeRange(loc, len); - } - else - { - loc = (currentPage - 1) * DISPLAY_NO_OF_ITEMS; - len = DISPLAY_NO_OF_ITEMS; - range = NSMakeRange(loc, len); - } - - // Get subarray and sort it - _items = [[[[self files] subarrayWithRange:range] sortedArrayUsingDescriptors:@[asc]] retain]; - - // Show range of records shown from the total no. of records - _pageLabel.text = [NSString stringWithFormat:@"Showing %i - %i of %i", ++loc, loc+[_items count]-1, [[self files] count]]; - - // Reload data - [_tableView reloadData]; - - // Scroll to top - [_tableView scrollRectToVisible:CGRectMake(0, 0, 1, 1) animated:YES]; -} - -- (NSArray *)files -{ - return [[[_folder files] filteredSetUsingPredicate:[NSPredicate predicateWithFormat:@"self.hidden == 0"]] allObjects]; -} - -#pragma mark - Event Handlers - -- (IBAction)next:(id)sender -{ - if (currentPage == noOfPages) - return; - - ++currentPage; - [self refreshData]; -} - -- (IBAction)previous:(id)sender -{ - if (currentPage <= 1) - return; - - --currentPage; - [self refreshData]; -} - -#pragma mark - UITableView Delegate & Datasource Methods - -- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView -{ - return 1; -} - -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section -{ - return [_items count]; -} - -- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath -{ - FileViewCell *cell = (FileViewCell *)[tableView dequeueReusableCellWithIdentifier:identifier]; - - File *_file = [_items objectAtIndex:indexPath.row]; - - cell.nameLabel.text = [_file name]; - cell.pathLabel.text = [NSString stringWithFormat:@"Path: %@", [_file path]]; - - if (DEVICE_iPAD) - { - cell.sharedByLabel.text = [NSString stringWithFormat:@"Created on: %@ by %@", [_file createdDate], [_file lastUpdatedBy]]; - cell.sharedByLabel2.text = [NSString stringWithFormat:@"Link: %@", [_file link]]; - } - else - { - cell.sharedByLabel.text = [NSString stringWithFormat:@"Created on: %@", [_file createdDate]]; - cell.sharedByLabel2.text = [NSString stringWithFormat:@"Last Updated By: %@", [_file lastUpdatedBy]]; - } - - if ([[_file type] isEqualToString:@"1"]) - { - cell.fileCountLabel.text = @"file"; - cell.folderCountLabel.text = FORMAT_BYTES([[_file size] floatValue]); - } - else - { - cell.fileCountLabel.text = @"folder"; - cell.folderCountLabel.text = @""; - cell.sharedByLabel2.text = @""; - } - - _file = nil; - - return cell; -} - -- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath -{ - if (DEVICE_iPAD) - { - TableViewController *_mainViewController = [TableViewController new]; - UIPopoverController *popOverController = [[UIPopoverController alloc] initWithContentViewController:_mainViewController]; - [_mainViewController setPopOverViewController:popOverController]; - SAFE_RELEASE(_mainViewController); - [popOverController setDelegate:self]; - - // Calculate the location to show the UIPopoverController - CGRect rect = [tableView rectForRowAtIndexPath:indexPath]; - [popOverController presentPopoverFromRect:CGRectMake(rect.origin.x + rect.size.width-25, CGRectGetMidY(rect)+ (int)(rect.size.height/2) - 18 - tableView.contentOffset.y, 1, 1) inView:[self view] permittedArrowDirections:UIPopoverArrowDirectionRight animated:YES]; - popOverController = nil; - } - else - { - UIActionSheet *actionSheet = [[[UIActionSheet alloc] initWithTitle:@"Test" delegate:nil cancelButtonTitle:@"Cancel" destructiveButtonTitle:nil otherButtonTitles:@"Row1", @"Row2", @"Row3", @"Row4", nil] autorelease]; - [actionSheet showInView:[self view]]; - } - [tableView deselectRowAtIndexPath:indexPath animated:YES]; -} - -- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath -{ - return 94; -} - -#pragma mark - View Rotation Handler - -- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration -{ - [self setFrameBaseOnOrientation]; -} - -- (void)setFrameBaseOnOrientation -{ - if (UIInterfaceOrientationIsLandscape([[UIApplication sharedApplication] statusBarOrientation])) - { - if (DEVICE_iPAD) - { - [_pageLabel setFrame:CGRectMake(0, 3, 1024, 30)]; - } - else - { - [_pageLabel setFrame:CGRectMake(0, 3, 480, 30)]; - } - } - else - { - if (DEVICE_iPAD) - { - [_pageLabel setFrame:CGRectMake(0, 3, 768, 30)]; - } - else - { - [_pageLabel setFrame:CGRectMake(0, 3, 320, 30)]; - } - } -} - -#pragma mark - UIPopoverControllerDelegate Methods - -- (void)popoverControllerDidDismissPopover:(UIPopoverController *)popoverController -{ - SAFE_RELEASE(popoverController); -} - -#pragma mark - Memory Management - -- (void)dealloc -{ - SAFE_RELEASE(_folder); - SAFE_RELEASE(_items); - - [super dealloc]; -} - -@end diff --git a/YakimbiTest/YakimbiTest/ViewControllers/ListViewController.xib b/YakimbiTest/YakimbiTest/ViewControllers/ListViewController.xib deleted file mode 100644 index 9014570..0000000 --- a/YakimbiTest/YakimbiTest/ViewControllers/ListViewController.xib +++ /dev/null @@ -1,284 +0,0 @@ - - - - 1552 - 11G63 - 3084 - 1138.51 - 569.00 - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 2083 - - - IBProxyObject - IBUIBarButtonItem - IBUILabel - IBUITableView - IBUIView - - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - PluginDependencyRecalculationVersion - - - - - IBFilesOwner - IBCocoaTouchFramework - - - IBFirstResponder - IBCocoaTouchFramework - - - < - IBCocoaTouchFramework - 1 - - - > - IBCocoaTouchFramework - 1 - - - - 274 - - - - 274 - {{0, 32}, {320, 472}} - - _NS:9 - - 3 - MQA - - YES - IBCocoaTouchFramework - YES - 1 - 0 - YES - 44 - 22 - 22 - - - - 292 - {{0, 5}, {320, 21}} - - _NS:9 - NO - YES - 7 - NO - IBCocoaTouchFramework - Label - - 1 - MCAwIDAAA - darkTextColor - - - 0 - 1 - - 1 - 14 - - - Helvetica - 14 - 16 - - NO - - - {{0, 64}, {320, 504}} - - - 3 - MQA - - 2 - - - - - NO - - - IBUIScreenMetrics - - YES - - - - - - {320, 568} - {568, 320} - - - IBCocoaTouchFramework - Retina 4 Full Screen - 2 - - IBCocoaTouchFramework - - - - - - - view - - - - 3 - - - - _tableView - - - - 11 - - - - _previousBarBtn - - - - 15 - - - - _nextBarBtn - - - - 16 - - - - _pageLabel - - - - 20 - - - - dataSource - - - - 9 - - - - delegate - - - - 10 - - - - next: - - - - 18 - - - - previous: - - - - 17 - - - - - - 0 - - - - - - 1 - - - - - - - - - -1 - - - File's Owner - - - -2 - - - - - 4 - - - - - 12 - - - - - 13 - - - - - 19 - - - - - - - ListViewController - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIResponder - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - - - - 20 - - - 0 - IBCocoaTouchFramework - YES - 3 - 2083 - - diff --git a/YakimbiTest/YakimbiTest/ViewControllers/ListViewController_iPad.xib b/YakimbiTest/YakimbiTest/ViewControllers/ListViewController_iPad.xib deleted file mode 100644 index 039c524..0000000 --- a/YakimbiTest/YakimbiTest/ViewControllers/ListViewController_iPad.xib +++ /dev/null @@ -1,340 +0,0 @@ - - - - 1552 - 11G63 - 3084 - 1138.51 - 569.00 - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 2083 - - - IBProxyObject - IBUIBarButtonItem - IBUILabel - IBUITableView - IBUIView - - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - PluginDependencyRecalculationVersion - - - - - IBFilesOwner - IBIPadFramework - - - IBFirstResponder - IBIPadFramework - - - > - IBIPadFramework - 1 - - - < - IBIPadFramework - 1 - - - - 292 - - - - 274 - {{0, 32}, {768, 928}} - - - _NS:9 - - 3 - MQA - - YES - IBIPadFramework - YES - 1 - 0 - YES - 44 - 22 - 22 - - - - 256 - {{20, 5}, {728, 21}} - - - _NS:9 - NO - YES - 7 - NO - IBIPadFramework - Label - - 1 - MCAwIDAAA - darkTextColor - - - 0 - 1 - - 1 - 14 - - - Helvetica - 14 - 16 - - NO - - - {{0, 64}, {768, 960}} - - - - - 3 - MQA - - 2 - - - NO - - 2 - - - NO - - - IBUIScreenMetrics - - YES - - - - - - {768, 1024} - {1024, 768} - - - IBIPadFramework - iPad Full Screen - 1 - - IBIPadFramework - - - - - - - view - - - - 3 - - - - _tableView - - - - 5 - - - - _previousBarBtn - - - - 16 - - - - _nextBarBtn - - - - 15 - - - - _pageLabel - - - - 21 - - - - dataSource - - - - 6 - - - - delegate - - - - 7 - - - - previous: - - - - 19 - - - - next: - - - - 18 - - - - - - 0 - - - - - - -1 - - - File's Owner - - - -2 - - - - - 2 - - - - - - - - - 4 - - - - - 8 - - - - - 9 - - - - - 20 - - - - - - - ListViewController - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIResponder - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - - - - 21 - - - - - ListViewController - UIViewController - - id - id - - - - next: - id - - - previous: - id - - - - UIBarButtonItem - UILabel - UIBarButtonItem - UITableView - - - - _nextBarBtn - UIBarButtonItem - - - _pageLabel - UILabel - - - _previousBarBtn - UIBarButtonItem - - - _tableView - UITableView - - - - IBProjectSource - ./Classes/ListViewController.h - - - - - 0 - IBIPadFramework - YES - 3 - 2083 - - diff --git a/YakimbiTest/YakimbiTest/ViewControllers/MainViewController.h b/YakimbiTest/YakimbiTest/ViewControllers/MainViewController.h deleted file mode 100644 index ae37f83..0000000 --- a/YakimbiTest/YakimbiTest/ViewControllers/MainViewController.h +++ /dev/null @@ -1,29 +0,0 @@ -// -// MainViewController.h -// YakimbiTest -// -// Created by Syed Arsalan Pervez on 2/16/13. -// Copyright (c) 2013 SAPLogix. All rights reserved. -// - -#import -#import "ListViewController.h" -#import "InfoViewController.h" - -@interface MainViewController : UIViewController -{ - User *_user; - - NSArray *_items; - - IBOutlet UILabel *_statusLabel; - IBOutlet UITableView *_tableView; - - IBOutlet UIBarButtonItem *_infoBtn; - - HTTPRequestOperation *_fetchOperation; - - ListViewController *_listViewController; -} - -@end diff --git a/YakimbiTest/YakimbiTest/ViewControllers/MainViewController.m b/YakimbiTest/YakimbiTest/ViewControllers/MainViewController.m deleted file mode 100644 index 5eb838f..0000000 --- a/YakimbiTest/YakimbiTest/ViewControllers/MainViewController.m +++ /dev/null @@ -1,257 +0,0 @@ -// -// MainViewController.m -// YakimbiTest -// -// Created by Syed Arsalan Pervez on 2/16/13. -// Copyright (c) 2013 SAPLogix. All rights reserved. -// - -#import "MainViewController.h" -#import "FolderViewCell.h" - -static NSString *identifier = @"FolderCell"; - -@interface MainViewController () - -@end - -@implementation MainViewController - -- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil -{ - if (DEVICE_iPAD) - { - self = [super initWithNibName:[NSStringFromClass([self class]) stringByAppendingString:@"_iPad"] bundle:nibBundleOrNil]; - } - else - self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; - - if (self) - { - } - return self; -} - -#pragma mark - UIViewController Overridden Methods - -- (void)viewDidLoad -{ - [super viewDidLoad]; - // Do any additional setup after loading the view from its nib. - - _fetchOperation = [[HTTPRequestOperation requestWithURL:SAMPLE_JSON_URL andDelegate:self] retain]; - [_fetchOperation registerParserClass:[Parser class]]; - [self fetchData]; - - if (DEVICE_iPAD) - { - [_tableView registerNib:[UINib nibWithNibName:@"FolderViewCell_iPad" bundle:nil] forCellReuseIdentifier:identifier]; - } - else - { - [_tableView registerNib:[UINib nibWithNibName:@"FolderViewCell" bundle:nil] forCellReuseIdentifier:identifier]; - } - - [_statusLabel setText:@""]; - - [[self navigationItem] setRightBarButtonItem:_infoBtn]; - - [self refreshData]; -} - -- (void)viewWillAppear:(BOOL)animated -{ - [super viewWillAppear:animated]; - - [self setFrameBaseOnOrientation]; -} - -#pragma mark - Refresh Data - -- (void)refreshData -{ - NSArray *_users = [DBHandler fetchObjectsOfEntity:USER_TABLE]; - if ([_users count] > 0) - { - SAFE_RELEASE(_user); - _user = [[_users objectAtIndex:0] retain]; - - if (_user) - { - NSSortDescriptor *asc = [NSSortDescriptor sortDescriptorWithKey:@"fid" ascending:YES]; - SAFE_RELEASE(_items); - _items = [[[[_user folders] allObjects] sortedArrayUsingDescriptors:@[asc]] retain]; - } - - [_tableView reloadData]; - } -} - -#pragma mark - Fetch Data - -- (void)fetchData -{ - @try - { - [_fetchOperation startAsynchronously]; - } - @catch (NSException *exception) - { - Log(@"Exception %@", exception); - } - @finally - { - } -} - -#pragma mark - HTTPRequestOperationDelegate Methods - -- (void)HTTPOperationStarted:(HTTPRequestOperation *)operation -{ - Log(@"Started!"); -} - -- (void)HTTPOperationFinished:(HTTPRequestOperation *)operation -{ - Log(@"Finished!"); - - [self refreshData]; - - [_statusLabel setText:[NSString stringWithFormat:@"Last Updated: %@", [_user lastUpdated]]]; - - [self performSelector:@selector(fetchData) withObject:nil afterDelay:REFRESH_INTERVAL]; -} - -- (void)HTTPOperationFailed:(HTTPRequestOperation *)operation withError:(NSError *)error -{ - Log(@"Failed!"); - - [_statusLabel setText:[NSString stringWithFormat:@"Last Updated: %@", [_user lastUpdated]]]; - - [self performSelector:@selector(fetchData) withObject:nil afterDelay:REFRESH_INTERVAL]; -} - -#pragma mark - UITableView Delegate & Datasource Methods - -- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView -{ - return 1; -} - -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section -{ - return [_user.folders count]; -} - -- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath -{ - FolderViewCell *cell = (FolderViewCell *)[tableView dequeueReusableCellWithIdentifier:identifier]; - - Folder *_folder = [_items objectAtIndex:indexPath.row]; - - cell.nameLabel.text = [_folder name]; - - int folders = [[[_folder files] filteredSetUsingPredicate:[NSPredicate predicateWithFormat:@"self.type == '0'"]] count]; - int files = [[[_folder files] filteredSetUsingPredicate:[NSPredicate predicateWithFormat:@"self.type == '1'"]] count]; - - cell.pathLabel.text = [NSString stringWithFormat:@"Files: %i Folders: %i", files, folders]; - - _folder = nil; - - return cell; -} - -- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath -{ - [tableView deselectRowAtIndexPath:indexPath animated:YES]; - - if (!_listViewController) - _listViewController = [ListViewController new]; - - Folder *folder = [_items objectAtIndex:indexPath.row]; - [_listViewController setFolder:folder]; - folder = nil; - [[self navigationController] pushViewController:_listViewController animated:YES]; -} - -- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath -{ - return 58; -} - -#pragma mark - View Rotation Handler - -- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration -{ - [self setFrameBaseOnOrientation]; -} - -- (void)setFrameBaseOnOrientation -{ - if (UIInterfaceOrientationIsLandscape([[UIApplication sharedApplication] statusBarOrientation])) - { - if (DEVICE_iPAD) - { - [_statusLabel setFrame:CGRectMake(0, _tableView.frame.size.height, 1024, 30)]; - } - else - { - [_statusLabel setFrame:CGRectMake(0, _tableView.frame.size.height, 480, 30)]; - } - } - else - { - if (DEVICE_iPAD) - { - [_statusLabel setFrame:CGRectMake(0, _tableView.frame.size.height, 768, 30)]; - } - else - { - [_statusLabel setFrame:CGRectMake(0, _tableView.frame.size.height, 320, 30)]; - } - } -} - -#pragma mark - Event Handlers - -- (IBAction)showInfo:(id)sender -{ - InfoViewController *_infoViewController = [[InfoViewController new] autorelease]; - [_infoViewController setUser:_user]; - - if (DEVICE_iPAD) - { - UIPopoverController *popOverController = [[UIPopoverController alloc] initWithContentViewController:_infoViewController]; - [popOverController setDelegate:self]; - - [popOverController presentPopoverFromBarButtonItem:sender permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES]; - popOverController = nil; - } - else - { - [[self navigationController] pushViewController:_infoViewController animated:YES]; - } -} - -#pragma mark - UIPopoverControllerDelegate Methods - -- (void)popoverControllerDidDismissPopover:(UIPopoverController *)popoverController -{ - SAFE_RELEASE(popoverController); -} - -#pragma mark - Memory Management - -- (void)dealloc -{ - [_fetchOperation setDelegate:nil]; - [_fetchOperation cancel]; - SAFE_RELEASE(_fetchOperation); - SAFE_RELEASE(_user); - SAFE_RELEASE(_items); - SAFE_RELEASE(_listViewController); - - [super dealloc]; -} - -@end diff --git a/YakimbiTest/YakimbiTest/ViewControllers/MainViewController.xib b/YakimbiTest/YakimbiTest/ViewControllers/MainViewController.xib deleted file mode 100644 index 81a6684..0000000 --- a/YakimbiTest/YakimbiTest/ViewControllers/MainViewController.xib +++ /dev/null @@ -1,303 +0,0 @@ - - - - 1552 - 11G63 - 3084 - 1138.51 - 569.00 - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 2083 - - - IBProxyObject - IBUIBarButtonItem - IBUILabel - IBUITableView - IBUIView - - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - PluginDependencyRecalculationVersion - - - - - IBFilesOwner - IBCocoaTouchFramework - - - IBFirstResponder - IBCocoaTouchFramework - - - Info - IBCocoaTouchFramework - 1 - - - - 274 - - - - 274 - {320, 473} - - - _NS:9 - - 3 - MQA - - YES - IBCocoaTouchFramework - YES - 1 - 0 - YES - 44 - 22 - 22 - - - - 292 - {{20, 481}, {280, 21}} - - - _NS:9 - NO - YES - 7 - NO - IBCocoaTouchFramework - Label - - 1 - MCAwIDAAA - darkTextColor - - - 0 - 1 - - 1 - 11 - - - Helvetica - 11 - 16 - - NO - - - {{0, 64}, {320, 504}} - - - - 3 - MQA - - 2 - - - - - NO - - - IBUIScreenMetrics - - YES - - - - - - {320, 568} - {568, 320} - - - IBCocoaTouchFramework - Retina 4 Full Screen - 2 - - IBCocoaTouchFramework - - - - - - - view - - - - 3 - - - - _tableView - - - - 19 - - - - _statusLabel - - - - 20 - - - - _infoBtn - - - - 23 - - - - dataSource - - - - 17 - - - - delegate - - - - 18 - - - - showInfo: - - - - 24 - - - - - - 0 - - - - - - 1 - - - - - - - - - -1 - - - File's Owner - - - -2 - - - - - 4 - - - - - - 11 - - - - - - 22 - - - - - - - MainViewController - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIResponder - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - - - - 24 - - - - - MainViewController - UIViewController - - showInfo: - id - - - showInfo: - - showInfo: - id - - - - UIBarButtonItem - UILabel - UITableView - - - - _infoBtn - UIBarButtonItem - - - _statusLabel - UILabel - - - _tableView - UITableView - - - - IBProjectSource - ./Classes/MainViewController.h - - - - - 0 - IBCocoaTouchFramework - YES - 3 - 2083 - - diff --git a/YakimbiTest/YakimbiTest/ViewControllers/MainViewController_iPad.xib b/YakimbiTest/YakimbiTest/ViewControllers/MainViewController_iPad.xib deleted file mode 100644 index 87b740a..0000000 --- a/YakimbiTest/YakimbiTest/ViewControllers/MainViewController_iPad.xib +++ /dev/null @@ -1,307 +0,0 @@ - - - - 1552 - 11G63 - 3084 - 1138.51 - 569.00 - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 2083 - - - IBProxyObject - IBUIBarButtonItem - IBUILabel - IBUITableView - IBUIView - - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - PluginDependencyRecalculationVersion - - - - - IBFilesOwner - IBIPadFramework - - - IBFirstResponder - IBIPadFramework - - - Info - IBIPadFramework - 1 - - - - 292 - - - - 274 - {768, 931} - - - - _NS:9 - - 3 - MQA - - YES - IBIPadFramework - YES - 1 - 0 - YES - 44 - 22 - 22 - - - - 260 - {{20, 935}, {728, 21}} - - - _NS:9 - NO - YES - 7 - NO - IBIPadFramework - Label - - 1 - MCAwIDAAA - darkTextColor - - - 0 - 1 - - 1 - 17 - - - Helvetica - 17 - 16 - - NO - - - {{0, 64}, {768, 960}} - - - - - 3 - MQA - - 2 - - - NO - - 2 - - - NO - - - IBUIScreenMetrics - - YES - - - - - - {768, 1024} - {1024, 768} - - - IBIPadFramework - iPad Full Screen - 1 - - IBIPadFramework - - - - - - - view - - - - 3 - - - - _statusLabel - - - - 6 - - - - _tableView - - - - 7 - - - - _infoBtn - - - - 11 - - - - dataSource - - - - 8 - - - - delegate - - - - 9 - - - - showInfo: - - - - 12 - - - - - - 0 - - - - - - -1 - - - File's Owner - - - -2 - - - - - 2 - - - - - - - - - 4 - - - - - - 5 - - - - - 10 - - - - - - - MainViewController - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIResponder - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - - - - 12 - - - - - MainViewController - UIViewController - - showInfo: - id - - - showInfo: - - showInfo: - id - - - - UIBarButtonItem - UILabel - UITableView - - - - _infoBtn - UIBarButtonItem - - - _statusLabel - UILabel - - - _tableView - UITableView - - - - IBProjectSource - ./Classes/MainViewController.h - - - - - 0 - IBIPadFramework - YES - 3 - 2083 - - diff --git a/YakimbiTest/YakimbiTest/ViewControllers/TableViewController.h b/YakimbiTest/YakimbiTest/ViewControllers/TableViewController.h deleted file mode 100644 index 3ff4739..0000000 --- a/YakimbiTest/YakimbiTest/ViewControllers/TableViewController.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// TableViewController.h -// YakimbiTest -// -// Created by Syed Arsalan Pervez on 2/19/13. -// Copyright (c) 2013 SAPLogix. All rights reserved. -// - -#import - -@interface TableViewController : UITableViewController -{ - UIPopoverController *_popOverViewController; -} - -@property (assign, nonatomic) UIPopoverController *popOverViewController; - -@end diff --git a/YakimbiTest/YakimbiTest/ViewControllers/TableViewController.m b/YakimbiTest/YakimbiTest/ViewControllers/TableViewController.m deleted file mode 100644 index 4ae4a5a..0000000 --- a/YakimbiTest/YakimbiTest/ViewControllers/TableViewController.m +++ /dev/null @@ -1,119 +0,0 @@ -// -// TableViewController.m -// YakimbiTest -// -// Created by Syed Arsalan Pervez on 2/19/13. -// Copyright (c) 2013 SAPLogix. All rights reserved. -// - -#import "TableViewController.h" - -@interface TableViewController () - -@end - -@implementation TableViewController - -- (id)initWithStyle:(UITableViewStyle)style -{ - self = [super initWithStyle:style]; - if (self) { - // Custom initialization - } - return self; -} - -- (void)viewDidLoad -{ - [super viewDidLoad]; - - // Uncomment the following line to preserve selection between presentations. - // self.clearsSelectionOnViewWillAppear = NO; - - // Uncomment the following line to display an Edit button in the navigation bar for this view controller. - // self.navigationItem.rightBarButtonItem = self.editButtonItem; - - [self setContentSizeForViewInPopover:CGSizeMake(200, 200)]; -} - -- (void)didReceiveMemoryWarning -{ - [super didReceiveMemoryWarning]; - // Dispose of any resources that can be recreated. -} - -#pragma mark - Table view data source - -- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView -{ - // Return the number of sections. - return 1; -} - -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section -{ - // Return the number of rows in the section. - return 4; -} - -- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath -{ - static NSString *CellIdentifier = @"Cell"; - UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; - if (cell == nil) { - cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; - } - - cell.textLabel.text = [NSString stringWithFormat:@"Row%i", indexPath.row]; - - return cell; -} - -/* -// Override to support conditional editing of the table view. -- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath -{ - // Return NO if you do not want the specified item to be editable. - return YES; -} -*/ - -/* -// Override to support editing the table view. -- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath -{ - if (editingStyle == UITableViewCellEditingStyleDelete) { - // Delete the row from the data source - [tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade]; - } - else if (editingStyle == UITableViewCellEditingStyleInsert) { - // Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view - } -} -*/ - -/* -// Override to support rearranging the table view. -- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath -{ -} -*/ - -/* -// Override to support conditional rearranging of the table view. -- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath -{ - // Return NO if you do not want the item to be re-orderable. - return YES; -} -*/ - -#pragma mark - Table view delegate - -- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath -{ - if (_popOverViewController) - [_popOverViewController dismissPopoverAnimated:YES]; -} - -@end diff --git a/YakimbiTest/YakimbiTest/ViewControllers/TableViewController.xib b/YakimbiTest/YakimbiTest/ViewControllers/TableViewController.xib deleted file mode 100644 index 5012ed7..0000000 --- a/YakimbiTest/YakimbiTest/ViewControllers/TableViewController.xib +++ /dev/null @@ -1,140 +0,0 @@ - - - - 1552 - 11G63 - 3084 - 1138.51 - 569.00 - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 2083 - - - IBProxyObject - IBUITableView - - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - PluginDependencyRecalculationVersion - - - - - IBFilesOwner - IBIPadFramework - - - IBFirstResponder - IBIPadFramework - - - - 274 - {768, 1024} - - - - 3 - MQA - - NO - YES - NO - IBIPadFramework - NO - 1 - 0 - YES - 44 - 22 - 22 - - - - - - - view - - - - 11 - - - - dataSource - - - - 9 - - - - delegate - - - - 10 - - - - - - 0 - - - - - - -1 - - - File's Owner - - - -2 - - - - - 8 - - - - - - - TableViewController - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIResponder - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - - - - 11 - - - - - TableViewController - UITableViewController - - IBProjectSource - ./Classes/TableViewController.h - - - - - 0 - IBIPadFramework - YES - 3 - 2083 - - diff --git a/YakimbiTest/YakimbiTest/YakimbiTest-Info.plist b/YakimbiTest/YakimbiTest/YakimbiTest-Info.plist deleted file mode 100644 index d52e538..0000000 --- a/YakimbiTest/YakimbiTest/YakimbiTest-Info.plist +++ /dev/null @@ -1,45 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleDisplayName - ${PRODUCT_NAME} - CFBundleExecutable - ${EXECUTABLE_NAME} - CFBundleIdentifier - com.saplogix.${PRODUCT_NAME:rfc1034identifier} - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - ${PRODUCT_NAME} - CFBundlePackageType - APPL - CFBundleShortVersionString - 1.0 - CFBundleSignature - ???? - CFBundleVersion - 1.0 - LSRequiresIPhoneOS - - UIRequiredDeviceCapabilities - - armv7 - - UISupportedInterfaceOrientations - - UIInterfaceOrientationPortrait - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight - - UISupportedInterfaceOrientations~ipad - - UIInterfaceOrientationPortrait - UIInterfaceOrientationPortraitUpsideDown - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight - - - diff --git a/YakimbiTest/YakimbiTest/YakimbiTest-Prefix.pch b/YakimbiTest/YakimbiTest/YakimbiTest-Prefix.pch deleted file mode 100644 index 5d0ad32..0000000 --- a/YakimbiTest/YakimbiTest/YakimbiTest-Prefix.pch +++ /dev/null @@ -1,26 +0,0 @@ -// -// Prefix header for all source files of the 'YakimbiTest' target in the 'YakimbiTest' project -// - -#import - -#ifndef __IPHONE_3_0 -#warning "This project uses features only available in iOS SDK 3.0 and later." -#endif - -#ifdef __OBJC__ - #import - #import - #import - -#import "User.h" -#import "Folder.h" -#import "File.h" - -#import "Macros.h" -#import "AppConstants.h" -#import "DatabaseHandler.h" -#import "Parser.h" -#import "HTTPRequestOperation.h" - -#endif diff --git a/YakimbiTest/YakimbiTest/YakimbiTest.xcdatamodeld/.xccurrentversion b/YakimbiTest/YakimbiTest/YakimbiTest.xcdatamodeld/.xccurrentversion deleted file mode 100644 index 25f4817..0000000 --- a/YakimbiTest/YakimbiTest/YakimbiTest.xcdatamodeld/.xccurrentversion +++ /dev/null @@ -1,8 +0,0 @@ - - - - - _XCCurrentVersionName - YakimbiTest.xcdatamodel - - diff --git a/YakimbiTest/YakimbiTest/YakimbiTest.xcdatamodeld/YakimbiTest.xcdatamodel/contents b/YakimbiTest/YakimbiTest/YakimbiTest.xcdatamodeld/YakimbiTest.xcdatamodel/contents deleted file mode 100644 index 24fff4c..0000000 --- a/YakimbiTest/YakimbiTest/YakimbiTest.xcdatamodeld/YakimbiTest.xcdatamodel/contents +++ /dev/null @@ -1,49 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/YakimbiTest/YakimbiTest/en.lproj/InfoPlist.strings b/YakimbiTest/YakimbiTest/en.lproj/InfoPlist.strings deleted file mode 100644 index 477b28f..0000000 --- a/YakimbiTest/YakimbiTest/en.lproj/InfoPlist.strings +++ /dev/null @@ -1,2 +0,0 @@ -/* Localized versions of Info.plist keys */ - diff --git a/YakimbiTest/YakimbiTest/main.m b/YakimbiTest/YakimbiTest/main.m deleted file mode 100644 index 1460e08..0000000 --- a/YakimbiTest/YakimbiTest/main.m +++ /dev/null @@ -1,18 +0,0 @@ -// -// main.m -// YakimbiTest -// -// Created by Syed Arsalan Pervez on 2/16/13. -// Copyright (c) 2013 SAPLogix. All rights reserved. -// - -#import - -#import "AppDelegate.h" - -int main(int argc, char *argv[]) -{ - @autoreleasepool { - return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); - } -} diff --git a/YakimbiTest/YakimbiTestTests/YakimbiTestTests-Info.plist b/YakimbiTest/YakimbiTestTests/YakimbiTestTests-Info.plist deleted file mode 100644 index 384cea3..0000000 --- a/YakimbiTest/YakimbiTestTests/YakimbiTestTests-Info.plist +++ /dev/null @@ -1,22 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - ${EXECUTABLE_NAME} - CFBundleIdentifier - com.saplogix.${PRODUCT_NAME:rfc1034identifier} - CFBundleInfoDictionaryVersion - 6.0 - CFBundlePackageType - BNDL - CFBundleShortVersionString - 1.0 - CFBundleSignature - ???? - CFBundleVersion - 1 - - diff --git a/YakimbiTest/YakimbiTestTests/YakimbiTestTests.h b/YakimbiTest/YakimbiTestTests/YakimbiTestTests.h deleted file mode 100644 index 79f5d16..0000000 --- a/YakimbiTest/YakimbiTestTests/YakimbiTestTests.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YakimbiTestTests.h -// YakimbiTestTests -// -// Created by Syed Arsalan Pervez on 2/16/13. -// Copyright (c) 2013 SAPLogix. All rights reserved. -// - -#import - -@interface YakimbiTestTests : SenTestCase -{ - Parser *_parser; -} - -@end diff --git a/YakimbiTest/YakimbiTestTests/YakimbiTestTests.m b/YakimbiTest/YakimbiTestTests/YakimbiTestTests.m deleted file mode 100644 index f6be90e..0000000 --- a/YakimbiTest/YakimbiTestTests/YakimbiTestTests.m +++ /dev/null @@ -1,135 +0,0 @@ -// -// YakimbiTestTests.m -// YakimbiTestTests -// -// Created by Syed Arsalan Pervez on 2/16/13. -// Copyright (c) 2013 SAPLogix. All rights reserved. -// - -#import "YakimbiTestTests.h" - -@implementation YakimbiTestTests - -- (void)setUp -{ - [super setUp]; - - // Set-up code here. - - _parser = [Parser new]; - [_parser setDelegate:self]; -} - -- (void)tearDown -{ - // Tear-down code here. - - SAFE_RELEASE(_parser); - - [super tearDown]; -} - -// **************************************************** -// Test Parser -// **************************************************** - -- (void)testParser -{ - NSData *data = [NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"test" ofType:@"json"]]; - if (!data) - { - STFail(@"Failed to load data."); - return; - } - [_parser parseData:data]; -} - -- (void)parsingFinished:(Parser *)parser -{ - NSArray *users = [DBHandler fetchObjectsOfEntity:USER_TABLE]; - if ([users count] == 0) - STFail(@"Database insertion failed."); - if ([[[users objectAtIndex:0] folders] count] != 2) - STFail(@"Database insertion failed."); - if ([[[[[[users objectAtIndex:0] folders] allObjects] objectAtIndex:0] files] count] != 17 && [[[[[[users objectAtIndex:0] folders] allObjects] objectAtIndex:0] files] count] != 63) - STFail(@"Database insertion failed."); - if ([[[[[[users objectAtIndex:0] folders] allObjects] objectAtIndex:1] files] count] != 17 && [[[[[[users objectAtIndex:0] folders] allObjects] objectAtIndex:1] files] count] != 63) - STFail(@"Database insertion failed."); -} - -- (void)parsingFailed:(Parser *)parser withError:(NSError *)error -{ - STFail(@"%@", error); -} - -// **************************************************** -// Test Byte Formatter -// **************************************************** - -- (void)testByteFormatter -{ - int bytes = 100; - if (![FORMAT_BYTES(bytes) isEqual:@"100 Bytes"]) - STFail(@"Check byte formatter.");bytes = 100; - - bytes = KB; - if (![FORMAT_BYTES(bytes) isEqual:@"1.00 KB"]) - STFail(@"Check byte formatter as %@ != 1.00 KB", FORMAT_BYTES(bytes)); - - bytes = MB; - if (![FORMAT_BYTES(bytes) isEqual:@"1.00 MB"]) - STFail(@"Check byte formatter as %@ != 1.00 MB", FORMAT_BYTES(bytes)); - - bytes = GB; - if (![FORMAT_BYTES(bytes) isEqual:@"1.00 GB"]) - STFail(@"Check byte formatter as %@ != 1.00 GB", FORMAT_BYTES(bytes)); -} - -// **************************************************** -// Test HTTP Request -// **************************************************** - -- (void)testHTTPRequest -{ - HTTPRequestOperation *operation = [HTTPRequestOperation requestWithURL:@"http://ww.google.com" andDelegate:self]; - [operation startSynchronously]; -} - -- (void)HTTPOperationFinished:(HTTPRequestOperation *)operation -{ - if ([operation responseData].length == 0) - { - STFail(@"Response data is empty."); - } - if ([operation tag] == 2) - { - NSArray *users = [DBHandler fetchObjectsOfEntity:USER_TABLE]; - if ([users count] == 0) - STFail(@"Database insertion failed."); - if ([[[users objectAtIndex:0] folders] count] != 2) - STFail(@"Database insertion failed."); - if ([[[[[[users objectAtIndex:0] folders] allObjects] objectAtIndex:0] files] count] != 17 && [[[[[[users objectAtIndex:0] folders] allObjects] objectAtIndex:0] files] count] != 63) - STFail(@"Database insertion failed."); - if ([[[[[[users objectAtIndex:0] folders] allObjects] objectAtIndex:1] files] count] != 17 && [[[[[[users objectAtIndex:0] folders] allObjects] objectAtIndex:1] files] count] != 63) - STFail(@"Database insertion failed."); - } -} - -- (void)HTTPOperationFailed:(HTTPRequestOperation *)operation withError:(NSError *)error -{ - STFail(@"%@", [error description]); -} - -// **************************************************** -// Test HTTP Request With Parser -// **************************************************** - -- (void)testHTTPRequestWithParser -{ - HTTPRequestOperation *operation = [HTTPRequestOperation requestWithURL:SAMPLE_JSON_URL andDelegate:self]; - [operation registerParserClass:[Parser class]]; - [operation setTag:2]; - [operation startSynchronously]; -} - -@end diff --git a/YakimbiTest/YakimbiTestTests/en.lproj/InfoPlist.strings b/YakimbiTest/YakimbiTestTests/en.lproj/InfoPlist.strings deleted file mode 100644 index 477b28f..0000000 --- a/YakimbiTest/YakimbiTestTests/en.lproj/InfoPlist.strings +++ /dev/null @@ -1,2 +0,0 @@ -/* Localized versions of Info.plist keys */ - diff --git a/YakimbiTest/YakimbiTestTests/test.json b/YakimbiTest/YakimbiTestTests/test.json deleted file mode 100644 index bcffb7b..0000000 --- a/YakimbiTest/YakimbiTestTests/test.json +++ /dev/null @@ -1,1718 +0,0 @@ -{ - "totalSpace": 268435456000, - "last_rev_id": 119, - "usedSpace": 380826907, - "availableSpace": 268054629093, - "mode": "list", - "pendingRequests": 0, - "my_files": { - "content": [ - { - "status": "new", - "is_shared": "no", - "share_id": "", - "user_id": 7, - "name": "files", - "shared_by": 0, - "shared_date": "", - "share_level": "", - "parent_id": null, - "last_updated_date": "2012-08-07 08:28:31", - "last_updated_by": "Akhter, Fazeel", - "link": "", - "created_date": "2012-08-07 08:28:31", - "item_id": 13, - "path": "My Files/files", - "path_by_id": "/", - "type": "0", - "mime_type": "", - "size": 0 - }, - { - "status": "new", - "is_shared": "no", - "share_id": "", - "user_id": 7, - "name": "Stemiona.rtf", - "shared_by": 0, - "shared_date": "", - "share_level": "", - "parent_id": null, - "last_updated_date": "2012-08-07 08:29:20", - "last_updated_by": "Akhter, Fazeel", - "link": "http://ep-dev.yakimbi.com/edocs/download", - "created_date": "2012-08-07 08:29:20", - "item_id": 14, - "path": "My Files/Stemiona.rtf", - "path_by_id": "/", - "type": "1", - "mime_type": "693", - "size": 864 - }, - { - "status": "new", - "is_shared": "no", - "share_id": "", - "user_id": 7, - "name": "sup_tutorial_ios_objectapi_application_development.pdf", - "shared_by": 0, - "shared_date": "", - "share_level": "", - "parent_id": null, - "last_updated_date": "2012-08-07 08:29:20", - "last_updated_by": "Akhter, Fazeel", - "link": "http://ep-dev.yakimbi.com/edocs/download", - "created_date": "2012-08-07 08:29:20", - "item_id": 15, - "path": "My Files/sup_tutorial_ios_objectapi_application_development.pdf", - "path_by_id": "/", - "type": "1", - "mime_type": "3", - "size": 978983 - }, - { - "status": "new", - "is_shared": "no", - "share_id": "", - "user_id": 7, - "name": "Strougo_VTMSpring2011.pdf", - "shared_by": 0, - "shared_date": "", - "share_level": "", - "parent_id": null, - "last_updated_date": "2012-08-07 08:29:31", - "last_updated_by": "Akhter, Fazeel", - "link": "http://ep-dev.yakimbi.com/edocs/download", - "created_date": "2012-08-07 08:29:31", - "item_id": 16, - "path": "My Files/Strougo_VTMSpring2011.pdf", - "path_by_id": "/", - "type": "1", - "mime_type": "3", - "size": 7883101 - }, - { - "status": "new", - "is_shared": "no", - "share_id": "", - "user_id": 7, - "name": "IMG_0026.JPG", - "shared_by": 0, - "shared_date": "", - "share_level": "", - "parent_id": null, - "last_updated_date": "2012-08-07 08:30:09", - "last_updated_by": "Akhter, Fazeel", - "link": "http://ep-dev.yakimbi.com/edocs/download", - "created_date": "2012-08-07 08:30:09", - "item_id": 17, - "path": "My Files/IMG_0026.JPG", - "path_by_id": "/", - "type": "1", - "mime_type": "24", - "size": 286258 - }, - { - "status": "new", - "is_shared": "no", - "share_id": "", - "user_id": 7, - "name": "IMG_0023.JPG", - "shared_by": 0, - "shared_date": "", - "share_level": "", - "parent_id": null, - "last_updated_date": "2012-08-07 08:30:10", - "last_updated_by": "Akhter, Fazeel", - "link": "http://ep-dev.yakimbi.com/edocs/download", - "created_date": "2012-08-07 08:30:10", - "item_id": 18, - "path": "My Files/IMG_0023.JPG", - "path_by_id": "/", - "type": "1", - "mime_type": "24", - "size": 269281 - }, - { - "status": "new", - "is_shared": "no", - "share_id": "", - "user_id": 7, - "name": "IMG_0025.JPG", - "shared_by": 0, - "shared_date": "", - "share_level": "", - "parent_id": null, - "last_updated_date": "2012-08-07 08:30:15", - "last_updated_by": "Akhter, Fazeel", - "link": "http://ep-dev.yakimbi.com/edocs/download", - "created_date": "2012-08-07 08:30:15", - "item_id": 19, - "path": "My Files/IMG_0025.JPG", - "path_by_id": "/", - "type": "1", - "mime_type": "24", - "size": 293412 - }, - { - "status": "new", - "is_shared": "no", - "share_id": "", - "user_id": 7, - "name": "IMG_0021.JPG", - "shared_by": 0, - "shared_date": "", - "share_level": "", - "parent_id": null, - "last_updated_date": "2012-08-07 08:30:20", - "last_updated_by": "Akhter, Fazeel", - "link": "http://ep-dev.yakimbi.com/edocs/download", - "created_date": "2012-08-07 08:30:20", - "item_id": 20, - "path": "My Files/IMG_0021.JPG", - "path_by_id": "/", - "type": "1", - "mime_type": "24", - "size": 326635 - }, - { - "status": "new", - "is_shared": "no", - "share_id": "", - "user_id": 7, - "name": "IMG_0028.JPG", - "shared_by": 0, - "shared_date": "", - "share_level": "", - "parent_id": null, - "last_updated_date": "2012-08-07 08:30:24", - "last_updated_by": "Akhter, Fazeel", - "link": "http://ep-dev.yakimbi.com/edocs/download", - "created_date": "2012-08-07 08:30:24", - "item_id": 21, - "path": "My Files/IMG_0028.JPG", - "path_by_id": "/", - "type": "1", - "mime_type": "24", - "size": 212257 - }, - { - "status": "new", - "is_shared": "no", - "share_id": "", - "user_id": 7, - "name": "IMG_0027.JPG", - "shared_by": 0, - "shared_date": "", - "share_level": "", - "parent_id": null, - "last_updated_date": "2012-08-07 08:30:30", - "last_updated_by": "Akhter, Fazeel", - "link": "http://ep-dev.yakimbi.com/edocs/download", - "created_date": "2012-08-07 08:30:30", - "item_id": 22, - "path": "My Files/IMG_0027.JPG", - "path_by_id": "/", - "type": "1", - "mime_type": "24", - "size": 184790 - }, - { - "status": "new", - "is_shared": "no", - "share_id": "", - "user_id": 7, - "name": "IMG_0019.JPG", - "shared_by": 0, - "shared_date": "", - "share_level": "", - "parent_id": null, - "last_updated_date": "2012-08-07 08:30:34", - "last_updated_by": "Akhter, Fazeel", - "link": "http://ep-dev.yakimbi.com/edocs/download", - "created_date": "2012-08-07 08:30:34", - "item_id": 23, - "path": "My Files/IMG_0019.JPG", - "path_by_id": "/", - "type": "1", - "mime_type": "24", - "size": 305075 - }, - { - "status": "new", - "is_shared": "no", - "share_id": "", - "user_id": 7, - "name": "IMG_0024.JPG", - "shared_by": 0, - "shared_date": "", - "share_level": "", - "parent_id": null, - "last_updated_date": "2012-08-07 08:30:40", - "last_updated_by": "Akhter, Fazeel", - "link": "http://ep-dev.yakimbi.com/edocs/download", - "created_date": "2012-08-07 08:30:40", - "item_id": 24, - "path": "My Files/IMG_0024.JPG", - "path_by_id": "/", - "type": "1", - "mime_type": "24", - "size": 285934 - }, - { - "status": "new", - "is_shared": "no", - "share_id": "", - "user_id": 7, - "name": "IMG_0022.JPG", - "shared_by": 0, - "shared_date": "", - "share_level": "", - "parent_id": null, - "last_updated_date": "2012-08-07 08:30:45", - "last_updated_by": "Akhter, Fazeel", - "link": "http://ep-dev.yakimbi.com/edocs/download", - "created_date": "2012-08-07 08:30:45", - "item_id": 25, - "path": "My Files/IMG_0022.JPG", - "path_by_id": "/", - "type": "1", - "mime_type": "24", - "size": 258605 - }, - { - "status": "new", - "is_shared": "no", - "share_id": "", - "user_id": 7, - "name": "IMG_0020.JPG", - "shared_by": 0, - "shared_date": "", - "share_level": "", - "parent_id": null, - "last_updated_date": "2012-08-07 08:30:51", - "last_updated_by": "Akhter, Fazeel", - "link": "http://ep-dev.yakimbi.com/edocs/download", - "created_date": "2012-08-07 08:30:51", - "item_id": 26, - "path": "My Files/IMG_0020.JPG", - "path_by_id": "/", - "type": "1", - "mime_type": "24", - "size": 306145 - }, - { - "status": "new", - "is_shared": "no", - "share_id": "", - "user_id": 7, - "name": "IMG_0018.JPG", - "shared_by": 0, - "shared_date": "", - "share_level": "", - "parent_id": null, - "last_updated_date": "2012-08-07 08:30:56", - "last_updated_by": "Akhter, Fazeel", - "link": "http://ep-dev.yakimbi.com/edocs/download", - "created_date": "2012-08-07 08:30:56", - "item_id": 27, - "path": "My Files/IMG_0018.JPG", - "path_by_id": "/", - "type": "1", - "mime_type": "24", - "size": 201824 - }, - { - "status": "new", - "is_shared": "no", - "share_id": "", - "user_id": 7, - "name": "IMG_0013.JPG", - "shared_by": 0, - "shared_date": "", - "share_level": "", - "parent_id": null, - "last_updated_date": "2012-08-07 08:31:01", - "last_updated_by": "Akhter, Fazeel", - "link": "http://ep-dev.yakimbi.com/edocs/download", - "created_date": "2012-08-07 08:31:01", - "item_id": 28, - "path": "My Files/IMG_0013.JPG", - "path_by_id": "/", - "type": "1", - "mime_type": "24", - "size": 238826 - }, - { - "status": "new", - "is_shared": "no", - "share_id": "", - "user_id": 7, - "name": "IMG_0016.JPG", - "shared_by": 0, - "shared_date": "", - "share_level": "", - "parent_id": null, - "last_updated_date": "2012-08-07 08:31:06", - "last_updated_by": "Akhter, Fazeel", - "link": "http://ep-dev.yakimbi.com/edocs/download", - "created_date": "2012-08-07 08:31:06", - "item_id": 29, - "path": "My Files/IMG_0016.JPG", - "path_by_id": "/", - "type": "1", - "mime_type": "24", - "size": 222857 - }, - { - "status": "new", - "is_shared": "no", - "share_id": "", - "user_id": 7, - "name": "IMG_0015.JPG", - "shared_by": 0, - "shared_date": "", - "share_level": "", - "parent_id": null, - "last_updated_date": "2012-08-07 08:31:11", - "last_updated_by": "Akhter, Fazeel", - "link": "http://ep-dev.yakimbi.com/edocs/download", - "created_date": "2012-08-07 08:31:11", - "item_id": 30, - "path": "My Files/IMG_0015.JPG", - "path_by_id": "/", - "type": "1", - "mime_type": "24", - "size": 243848 - }, - { - "status": "new", - "is_shared": "no", - "share_id": "", - "user_id": 7, - "name": "IMG_0014.JPG", - "shared_by": 0, - "shared_date": "", - "share_level": "", - "parent_id": null, - "last_updated_date": "2012-08-07 08:31:16", - "last_updated_by": "Akhter, Fazeel", - "link": "http://ep-dev.yakimbi.com/edocs/download", - "created_date": "2012-08-07 08:31:16", - "item_id": 31, - "path": "My Files/IMG_0014.JPG", - "path_by_id": "/", - "type": "1", - "mime_type": "24", - "size": 258099 - }, - { - "status": "new", - "is_shared": "no", - "share_id": "", - "user_id": 7, - "name": "IMG_0012.JPG", - "shared_by": 0, - "shared_date": "", - "share_level": "", - "parent_id": null, - "last_updated_date": "2012-08-07 08:31:22", - "last_updated_by": "Akhter, Fazeel", - "link": "http://ep-dev.yakimbi.com/edocs/download", - "created_date": "2012-08-07 08:31:22", - "item_id": 32, - "path": "My Files/IMG_0012.JPG", - "path_by_id": "/", - "type": "1", - "mime_type": "24", - "size": 274437 - }, - { - "status": "new", - "is_shared": "no", - "share_id": "", - "user_id": 7, - "name": "IMG_0017.JPG", - "shared_by": 0, - "shared_date": "", - "share_level": "", - "parent_id": null, - "last_updated_date": "2012-08-07 08:31:27", - "last_updated_by": "Akhter, Fazeel", - "link": "http://ep-dev.yakimbi.com/edocs/download", - "created_date": "2012-08-07 08:31:27", - "item_id": 33, - "path": "My Files/IMG_0017.JPG", - "path_by_id": "/", - "type": "1", - "mime_type": "24", - "size": 211974 - }, - { - "status": "new", - "is_shared": "no", - "share_id": "", - "user_id": 7, - "name": "IMG_0011.JPG", - "shared_by": 0, - "shared_date": "", - "share_level": "", - "parent_id": null, - "last_updated_date": "2012-08-07 08:31:32", - "last_updated_by": "Akhter, Fazeel", - "link": "http://ep-dev.yakimbi.com/edocs/download", - "created_date": "2012-08-07 08:31:32", - "item_id": 34, - "path": "My Files/IMG_0011.JPG", - "path_by_id": "/", - "type": "1", - "mime_type": "24", - "size": 254660 - }, - { - "status": "new", - "is_shared": "no", - "share_id": "", - "user_id": 7, - "name": "Yakimbi0.8.102-Demo.ipa", - "shared_by": 0, - "shared_date": "", - "share_level": "", - "parent_id": 13, - "last_updated_date": "2012-08-07 08:32:29", - "last_updated_by": "Akhter, Fazeel", - "link": "http://ep-dev.yakimbi.com/edocs/download", - "created_date": "2012-08-07 08:32:29", - "item_id": 35, - "path": "My Files/files/Yakimbi0.8.102-Demo.ipa", - "path_by_id": "/13/", - "type": "1", - "mime_type": "80", - "size": 12964921 - }, - { - "status": "new", - "is_shared": "no", - "share_id": "", - "user_id": 7, - "name": "Yakimbi0.8.103-Demo1.01.ipa", - "shared_by": 0, - "shared_date": "", - "share_level": "", - "parent_id": 13, - "last_updated_date": "2012-08-07 08:32:29", - "last_updated_by": "Akhter, Fazeel", - "link": "http://ep-dev.yakimbi.com/edocs/download", - "created_date": "2012-08-07 08:32:29", - "item_id": 36, - "path": "My Files/files/Yakimbi0.8.103-Demo1.01.ipa", - "path_by_id": "/13/", - "type": "1", - "mime_type": "80", - "size": 12965410 - }, - { - "status": "new", - "is_shared": "no", - "share_id": "", - "user_id": 7, - "name": "Yakimbi0.90.100.ipa", - "shared_by": 0, - "shared_date": "", - "share_level": "", - "parent_id": 13, - "last_updated_date": "2012-08-07 08:32:44", - "last_updated_by": "Akhter, Fazeel", - "link": "http://ep-dev.yakimbi.com/edocs/download", - "created_date": "2012-08-07 08:32:44", - "item_id": 37, - "path": "My Files/files/Yakimbi0.90.100.ipa", - "path_by_id": "/13/", - "type": "1", - "mime_type": "80", - "size": 12482120 - }, - { - "status": "new", - "is_shared": "no", - "share_id": "", - "user_id": 7, - "name": "Yakimbi0.8.101-Demo.ipa", - "shared_by": 0, - "shared_date": "", - "share_level": "", - "parent_id": 13, - "last_updated_date": "2012-08-07 08:32:58", - "last_updated_by": "Akhter, Fazeel", - "link": "http://ep-dev.yakimbi.com/edocs/download", - "created_date": "2012-08-07 08:32:58", - "item_id": 38, - "path": "My Files/files/Yakimbi0.8.101-Demo.ipa", - "path_by_id": "/13/", - "type": "1", - "mime_type": "80", - "size": 12965005 - }, - { - "status": "new", - "is_shared": "no", - "share_id": "", - "user_id": 7, - "name": "Yakimbi0.8.103-Demo1.0.ipa", - "shared_by": 0, - "shared_date": "", - "share_level": "", - "parent_id": 13, - "last_updated_date": "2012-08-07 08:33:13", - "last_updated_by": "Akhter, Fazeel", - "link": "http://ep-dev.yakimbi.com/edocs/download", - "created_date": "2012-08-07 08:33:13", - "item_id": 39, - "path": "My Files/files/Yakimbi0.8.103-Demo1.0.ipa", - "path_by_id": "/13/", - "type": "1", - "mime_type": "80", - "size": 12965314 - }, - { - "status": "new", - "is_shared": "no", - "share_id": "", - "user_id": 7, - "name": "Yakimbi0.8.103-Demo.ipa", - "shared_by": 0, - "shared_date": "", - "share_level": "", - "parent_id": 13, - "last_updated_date": "2012-08-07 08:33:27", - "last_updated_by": "Akhter, Fazeel", - "link": "http://ep-dev.yakimbi.com/edocs/download", - "created_date": "2012-08-07 08:33:27", - "item_id": 40, - "path": "My Files/files/Yakimbi0.8.103-Demo.ipa", - "path_by_id": "/13/", - "type": "1", - "mime_type": "80", - "size": 12965396 - }, - { - "status": "new", - "is_shared": "no", - "share_id": "", - "user_id": 7, - "name": "Yakimbi0.8.101.ipa", - "shared_by": 0, - "shared_date": "", - "share_level": "", - "parent_id": 13, - "last_updated_date": "2012-08-07 08:33:42", - "last_updated_by": "Akhter, Fazeel", - "link": "http://ep-dev.yakimbi.com/edocs/download", - "created_date": "2012-08-07 08:33:42", - "item_id": 41, - "path": "My Files/files/Yakimbi0.8.101.ipa", - "path_by_id": "/13/", - "type": "1", - "mime_type": "80", - "size": 12963533 - }, - { - "status": "new", - "is_shared": "no", - "share_id": "", - "user_id": 7, - "name": "Yakimbi0.8.105.ipa", - "shared_by": 0, - "shared_date": "", - "share_level": "", - "parent_id": 13, - "last_updated_date": "2012-08-07 08:33:56", - "last_updated_by": "Akhter, Fazeel", - "link": "http://ep-dev.yakimbi.com/edocs/download", - "created_date": "2012-08-07 08:33:56", - "item_id": 42, - "path": "My Files/files/Yakimbi0.8.105.ipa", - "path_by_id": "/13/", - "type": "1", - "mime_type": "80", - "size": 12974632 - }, - { - "status": "new", - "is_shared": "no", - "share_id": "", - "user_id": 7, - "name": "Yakimbi0.90.100().ipa", - "shared_by": 0, - "shared_date": "", - "share_level": "", - "parent_id": 13, - "last_updated_date": "2012-08-07 08:34:11", - "last_updated_by": "Akhter, Fazeel", - "link": "http://ep-dev.yakimbi.com/edocs/download", - "created_date": "2012-08-07 08:34:11", - "item_id": 43, - "path": "My Files/files/Yakimbi0.90.100().ipa", - "path_by_id": "/13/", - "type": "1", - "mime_type": "80", - "size": 12482101 - }, - { - "status": "new", - "is_shared": "no", - "share_id": "", - "user_id": 7, - "name": "Yakimbi0.8.99.ipa", - "shared_by": 0, - "shared_date": "", - "share_level": "", - "parent_id": 13, - "last_updated_date": "2012-08-07 08:34:27", - "last_updated_by": "Akhter, Fazeel", - "link": "http://ep-dev.yakimbi.com/edocs/download", - "created_date": "2012-08-07 08:34:27", - "item_id": 44, - "path": "My Files/files/Yakimbi0.8.99.ipa", - "path_by_id": "/13/", - "type": "1", - "mime_type": "80", - "size": 12961283 - }, - { - "status": "new", - "is_shared": "no", - "share_id": "", - "user_id": 7, - "name": "Yakimbi0.8.100.ipa", - "shared_by": 0, - "shared_date": "", - "share_level": "", - "parent_id": 13, - "last_updated_date": "2012-08-07 08:34:43", - "last_updated_by": "Akhter, Fazeel", - "link": "http://ep-dev.yakimbi.com/edocs/download", - "created_date": "2012-08-07 08:34:43", - "item_id": 45, - "path": "My Files/files/Yakimbi0.8.100.ipa", - "path_by_id": "/13/", - "type": "1", - "mime_type": "80", - "size": 12963631 - }, - { - "status": "new", - "is_shared": "no", - "share_id": "", - "user_id": 7, - "name": "Yakimbi0.8.99-Demo.ipa", - "shared_by": 0, - "shared_date": "", - "share_level": "", - "parent_id": 13, - "last_updated_date": "2012-08-07 08:34:59", - "last_updated_by": "Akhter, Fazeel", - "link": "http://ep-dev.yakimbi.com/edocs/download", - "created_date": "2012-08-07 08:34:59", - "item_id": 46, - "path": "My Files/files/Yakimbi0.8.99-Demo.ipa", - "path_by_id": "/13/", - "type": "1", - "mime_type": "80", - "size": 12960634 - }, - { - "status": "new", - "is_shared": "no", - "share_id": "", - "user_id": 7, - "name": "Yakimbi0.8.97.ipa", - "shared_by": 0, - "shared_date": "", - "share_level": "", - "parent_id": 13, - "last_updated_date": "2012-08-07 08:35:15", - "last_updated_by": "Akhter, Fazeel", - "link": "http://ep-dev.yakimbi.com/edocs/download", - "created_date": "2012-08-07 08:35:15", - "item_id": 47, - "path": "My Files/files/Yakimbi0.8.97.ipa", - "path_by_id": "/13/", - "type": "1", - "mime_type": "80", - "size": 12058002 - }, - { - "status": "new", - "is_shared": "no", - "share_id": "", - "user_id": 7, - "name": "Yakimbi0.8.92.ipa", - "shared_by": 0, - "shared_date": "", - "share_level": "", - "parent_id": 13, - "last_updated_date": "2012-08-07 08:35:30", - "last_updated_by": "Akhter, Fazeel", - "link": "http://ep-dev.yakimbi.com/edocs/download", - "created_date": "2012-08-07 08:35:30", - "item_id": 48, - "path": "My Files/files/Yakimbi0.8.92.ipa", - "path_by_id": "/13/", - "type": "1", - "mime_type": "80", - "size": 12066950 - }, - { - "status": "new", - "is_shared": "no", - "share_id": "", - "user_id": 7, - "name": "git.from.bottom.up.pdf", - "shared_by": 0, - "shared_date": "", - "share_level": "", - "parent_id": null, - "last_updated_date": "2012-08-07 08:37:59", - "last_updated_by": "Akhter, Fazeel", - "link": "http://ep-dev.yakimbi.com/edocs/download", - "created_date": "2012-08-07 08:37:59", - "item_id": 50, - "path": "My Files/git.from.bottom.up.pdf", - "path_by_id": "/", - "type": "1", - "mime_type": "3", - "size": 811094 - }, - { - "status": "new", - "is_shared": "no", - "share_id": "", - "user_id": 7, - "name": "progit.pdf", - "shared_by": 0, - "shared_date": "", - "share_level": "", - "parent_id": null, - "last_updated_date": "2012-08-07 08:38:14", - "last_updated_by": "Akhter, Fazeel", - "link": "http://ep-dev.yakimbi.com/edocs/download", - "created_date": "2012-08-07 08:38:14", - "item_id": 52, - "path": "My Files/progit.pdf", - "path_by_id": "/", - "type": "1", - "mime_type": "3", - "size": 4052928 - }, - { - "status": "new", - "is_shared": "no", - "share_id": "", - "user_id": 7, - "name": "Abc.rtf", - "shared_by": 0, - "shared_date": "", - "share_level": "", - "parent_id": null, - "last_updated_date": "2012-08-07 08:38:20", - "last_updated_by": "Akhter, Fazeel", - "link": "http://ep-dev.yakimbi.com/edocs/download", - "created_date": "2012-08-07 08:38:20", - "item_id": 53, - "path": "My Files/Abc.rtf", - "path_by_id": "/", - "type": "1", - "mime_type": "693", - "size": 338 - }, - { - "status": "remove", - "is_shared": "no", - "share_id": "", - "user_id": 7, - "name": "ie_2011.pdf", - "shared_by": 0, - "shared_date": "", - "share_level": "", - "parent_id": null, - "last_updated_date": "2012-08-07 08:42:52", - "last_updated_by": "Akhter, Fazeel", - "link": "http://ep-dev.yakimbi.com/edocs/download", - "created_date": "2012-08-07 08:37:58", - "item_id": 49, - "path": "My Files/", - "path_by_id": "/", - "type": "1", - "mime_type": "3", - "size": 106918 - }, - { - "status": "move", - "is_shared": "no", - "share_id": "", - "user_id": 7, - "name": "Abc.rtf", - "shared_by": 0, - "shared_date": "", - "share_level": "", - "parent_id": 13, - "last_updated_date": "2012-08-13 08:00:51", - "last_updated_by": "Akhter, Fazeel", - "link": "http://ep-dev.yakimbi.com/edocs/download", - "created_date": "2012-08-07 08:38:20", - "item_id": 53, - "path": "My Files/files/Abc.rtf", - "path_by_id": "/13/", - "type": "1", - "mime_type": "693", - "size": 338 - }, - { - "status": "move", - "is_shared": "no", - "share_id": "", - "user_id": 7, - "name": "IMG_0012.JPG", - "shared_by": 0, - "shared_date": "", - "share_level": "", - "parent_id": 13, - "last_updated_date": "2012-08-13 08:01:10", - "last_updated_by": "Akhter, Fazeel", - "link": "http://ep-dev.yakimbi.com/edocs/download", - "created_date": "2012-08-07 08:31:22", - "item_id": 32, - "path": "My Files/files/IMG_0012.JPG", - "path_by_id": "/13/", - "type": "1", - "mime_type": "24", - "size": 274437 - }, - { - "status": "move", - "is_shared": "no", - "share_id": "", - "user_id": 7, - "name": "IMG_0011.JPG", - "shared_by": 0, - "shared_date": "", - "share_level": "", - "parent_id": 13, - "last_updated_date": "2012-08-13 08:02:27", - "last_updated_by": "Akhter, Fazeel", - "link": "http://ep-dev.yakimbi.com/edocs/download", - "created_date": "2012-08-07 08:31:32", - "item_id": 34, - "path": "My Files/files/IMG_0011.JPG", - "path_by_id": "/13/", - "type": "1", - "mime_type": "24", - "size": 254660 - }, - { - "status": "move", - "is_shared": "no", - "share_id": "", - "user_id": 7, - "name": "IMG_0013.JPG", - "shared_by": 0, - "shared_date": "", - "share_level": "", - "parent_id": 13, - "last_updated_date": "2012-08-13 08:02:43", - "last_updated_by": "Akhter, Fazeel", - "link": "http://ep-dev.yakimbi.com/edocs/download", - "created_date": "2012-08-07 08:31:01", - "item_id": 28, - "path": "My Files/files/IMG_0013.JPG", - "path_by_id": "/13/", - "type": "1", - "mime_type": "24", - "size": 238826 - }, - { - "status": "move", - "is_shared": "no", - "share_id": "", - "user_id": 7, - "name": "IMG_0014.JPG", - "shared_by": 0, - "shared_date": "", - "share_level": "", - "parent_id": 13, - "last_updated_date": "2012-08-13 08:03:01", - "last_updated_by": "Akhter, Fazeel", - "link": "http://ep-dev.yakimbi.com/edocs/download", - "created_date": "2012-08-07 08:31:16", - "item_id": 31, - "path": "My Files/files/IMG_0014.JPG", - "path_by_id": "/13/", - "type": "1", - "mime_type": "24", - "size": 258099 - }, - { - "status": "move", - "is_shared": "no", - "share_id": "", - "user_id": 7, - "name": "IMG_0022.JPG", - "shared_by": 0, - "shared_date": "", - "share_level": "", - "parent_id": 13, - "last_updated_date": "2012-08-13 08:03:17", - "last_updated_by": "Akhter, Fazeel", - "link": "http://ep-dev.yakimbi.com/edocs/download", - "created_date": "2012-08-07 08:30:45", - "item_id": 25, - "path": "My Files/files/IMG_0022.JPG", - "path_by_id": "/13/", - "type": "1", - "mime_type": "24", - "size": 258605 - }, - { - "status": "move", - "is_shared": "no", - "share_id": "", - "user_id": 7, - "name": "IMG_0015.JPG", - "shared_by": 0, - "shared_date": "", - "share_level": "", - "parent_id": 13, - "last_updated_date": "2012-08-13 08:04:15", - "last_updated_by": "Akhter, Fazeel", - "link": "http://ep-dev.yakimbi.com/edocs/download", - "created_date": "2012-08-07 08:31:11", - "item_id": 30, - "path": "My Files/files/IMG_0015.JPG", - "path_by_id": "/13/", - "type": "1", - "mime_type": "24", - "size": 243848 - }, - { - "status": "move", - "is_shared": "no", - "share_id": "", - "user_id": 7, - "name": "git.from.bottom.up.pdf", - "shared_by": 0, - "shared_date": "", - "share_level": "", - "parent_id": 13, - "last_updated_date": "2012-08-13 08:04:37", - "last_updated_by": "Akhter, Fazeel", - "link": "http://ep-dev.yakimbi.com/edocs/download", - "created_date": "2012-08-07 08:37:59", - "item_id": 50, - "path": "My Files/files/git.from.bottom.up.pdf", - "path_by_id": "/13/", - "type": "1", - "mime_type": "3", - "size": 811094 - }, - { - "status": "new", - "is_shared": "no", - "share_id": "", - "user_id": 7, - "name": "Fazeel123.pdf", - "shared_by": 0, - "shared_date": "", - "share_level": "", - "parent_id": null, - "last_updated_date": "2012-08-17 09:38:26", - "last_updated_by": "Akhter, Fazeel", - "link": "http://ep-dev.yakimbi.com/edocs/download", - "created_date": "2012-08-17 09:38:26", - "item_id": 2553, - "path": "My Files/Fazeel123.pdf", - "path_by_id": "/", - "type": "1", - "mime_type": "3", - "size": 35226082 - }, - { - "status": "new", - "is_shared": "no", - "share_id": "", - "user_id": 7, - "name": "Fazeel123 (1).pdf", - "shared_by": 0, - "shared_date": "", - "share_level": "", - "parent_id": null, - "last_updated_date": "2012-08-17 09:39:42", - "last_updated_by": "Akhter, Fazeel", - "link": "http://ep-dev.yakimbi.com/edocs/download", - "created_date": "2012-08-17 09:39:42", - "item_id": 2554, - "path": "My Files/Fazeel123 (1).pdf", - "path_by_id": "/", - "type": "1", - "mime_type": "3", - "size": 35226082 - }, - { - "status": "new", - "is_shared": "no", - "share_id": "", - "user_id": 7, - "name": "Fazeel123 (3).pdf", - "shared_by": 0, - "shared_date": "", - "share_level": "", - "parent_id": null, - "last_updated_date": "2012-08-17 09:42:25", - "last_updated_by": "Akhter, Fazeel", - "link": "http://ep-dev.yakimbi.com/edocs/download", - "created_date": "2012-08-17 09:42:25", - "item_id": 2556, - "path": "My Files/Fazeel123 (3).pdf", - "path_by_id": "/", - "type": "1", - "mime_type": "3", - "size": 1228783 - }, - { - "status": "new", - "is_shared": "no", - "share_id": "", - "user_id": 7, - "name": "Hello123.pdf", - "shared_by": 0, - "shared_date": "", - "share_level": "", - "parent_id": null, - "last_updated_date": "2012-08-17 09:46:11", - "last_updated_by": "Akhter, Fazeel", - "link": "http://ep-dev.yakimbi.com/edocs/download", - "created_date": "2012-08-17 09:46:11", - "item_id": 2557, - "path": "My Files/Hello123.pdf", - "path_by_id": "/", - "type": "1", - "mime_type": "3", - "size": 1228711 - }, - { - "status": "remove", - "is_shared": "no", - "share_id": "", - "user_id": 7, - "name": "intro-to-git.pdf", - "shared_by": 0, - "shared_date": "", - "share_level": "", - "parent_id": null, - "last_updated_date": "2012-08-17 09:57:29", - "last_updated_by": "Akhter, Fazeel", - "link": "http://ep-dev.yakimbi.com/edocs/download", - "created_date": "2012-08-07 08:38:07", - "item_id": 51, - "path": "My Files/", - "path_by_id": "/", - "type": "1", - "mime_type": "3", - "size": 35198010 - }, - { - "status": "new", - "is_shared": "no", - "share_id": "", - "user_id": 7, - "name": "A-B-C.pdf", - "shared_by": 0, - "shared_date": "", - "share_level": "", - "parent_id": 13, - "last_updated_date": "2012-08-17 10:18:31", - "last_updated_by": "Akhter, Fazeel", - "link": "http://ep-dev.yakimbi.com/edocs/download", - "created_date": "2012-08-17 10:18:31", - "item_id": 2571, - "path": "My Files/files/A-B-C.pdf", - "path_by_id": "/13/", - "type": "1", - "mime_type": "3", - "size": 202944 - }, - { - "status": "update", - "is_shared": "no", - "share_id": "", - "user_id": 7, - "name": "A-B-C.pdf", - "shared_by": 0, - "shared_date": "", - "share_level": "", - "parent_id": 13, - "last_updated_date": "2012-08-17 10:24:15", - "last_updated_by": "Akhter, Fazeel", - "link": "http://ep-dev.yakimbi.com/edocs/download", - "created_date": "2012-08-17 10:18:31", - "item_id": 2571, - "path": "My Files/files/A-B-C.pdf", - "path_by_id": "/13/", - "type": "1", - "mime_type": "3", - "size": 225223 - }, - { - "status": "new", - "is_shared": "no", - "share_id": "", - "user_id": 7, - "name": "intro.to.git copy.pdf", - "shared_by": 0, - "shared_date": "", - "share_level": "", - "parent_id": null, - "last_updated_date": "2012-08-17 11:22:40", - "last_updated_by": "Akhter, Fazeel", - "link": "http://ep-dev.yakimbi.com/edocs/download", - "created_date": "2012-08-17 11:22:40", - "item_id": 2572, - "path": "My Files/intro.to.git copy.pdf", - "path_by_id": "/", - "type": "1", - "mime_type": "3", - "size": 3768327 - }, - { - "status": "new", - "is_shared": "no", - "share_id": "", - "user_id": 7, - "name": "intro-to-git.pdf", - "shared_by": 0, - "shared_date": "", - "share_level": "", - "parent_id": null, - "last_updated_date": "2012-08-17 11:22:41", - "last_updated_by": "Akhter, Fazeel", - "link": "http://ep-dev.yakimbi.com/edocs/download", - "created_date": "2012-08-17 11:22:41", - "item_id": 2573, - "path": "My Files/intro-to-git.pdf", - "path_by_id": "/", - "type": "1", - "mime_type": "3", - "size": 3768327 - }, - { - "status": "new", - "is_shared": "no", - "share_id": "", - "user_id": 7, - "name": "NewBig.pdf", - "shared_by": 0, - "shared_date": "", - "share_level": "", - "parent_id": null, - "last_updated_date": "2012-08-17 14:20:13", - "last_updated_by": "Akhter, Fazeel", - "link": "http://ep-dev.yakimbi.com/edocs/download", - "created_date": "2012-08-17 14:20:13", - "item_id": 2583, - "path": "My Files/NewBig.pdf", - "path_by_id": "/", - "type": "1", - "mime_type": "3", - "size": 35197803 - }, - { - "status": "new", - "is_shared": "no", - "share_id": "", - "user_id": 7, - "name": "Fazil123.pdf", - "shared_by": 0, - "shared_date": "", - "share_level": "", - "parent_id": null, - "last_updated_date": "2012-08-17 15:17:41", - "last_updated_by": "Akhter, Fazeel", - "link": "http://ep-dev.yakimbi.com/edocs/download", - "created_date": "2012-08-17 15:17:41", - "item_id": 2594, - "path": "My Files/Fazil123.pdf", - "path_by_id": "/", - "type": "1", - "mime_type": "3", - "size": 35197520 - }, - { - "status": "update", - "is_shared": "no", - "share_id": "", - "user_id": 7, - "name": "intro-to-git.pdf", - "shared_by": 0, - "shared_date": "", - "share_level": "", - "parent_id": null, - "last_updated_date": "2012-08-17 15:21:49", - "last_updated_by": "Akhter, Fazeel", - "link": "http://ep-dev.yakimbi.com/edocs/download", - "created_date": "2012-08-17 11:22:41", - "item_id": 2573, - "path": "My Files/intro-to-git.pdf", - "path_by_id": "/", - "type": "1", - "mime_type": "3", - "size": 35198931 - }, - { - "status": "remove", - "is_shared": "no", - "share_id": "", - "user_id": 7, - "name": "Fazeel123 (2).pdf", - "shared_by": 0, - "shared_date": "", - "share_level": "", - "parent_id": null, - "last_updated_date": "2012-08-17 09:40:57", - "last_updated_by": "Akhter, Fazeel", - "link": "http://ep-dev.yakimbi.com/edocs/download", - "created_date": "2012-08-17 09:40:57", - "item_id": 2555, - "path": "My Files/", - "path_by_id": "/", - "type": "1", - "mime_type": "3", - "size": 35226082 - }, - { - "status": "update", - "is_shared": "no", - "share_id": "", - "user_id": 7, - "name": "Fazeel123 (1).pdf", - "shared_by": 0, - "shared_date": "", - "share_level": "", - "parent_id": null, - "last_updated_date": "2012-08-30 09:02:41", - "last_updated_by": "Akhter, Fazeel", - "link": "http://ep-dev.yakimbi.com/edocs/download", - "created_date": "2012-08-17 09:39:42", - "item_id": 2554, - "path": "My Files/Fazeel123 (1).pdf", - "path_by_id": "/", - "type": "1", - "mime_type": "3", - "size": 35226270 - }, - { - "status": "new", - "is_shared": "no", - "share_id": "", - "user_id": 7, - "name": "NewFileNameTezt.pdf", - "shared_by": 0, - "shared_date": "", - "share_level": "", - "parent_id": null, - "last_updated_date": "2012-08-30 09:03:48", - "last_updated_by": "Akhter, Fazeel", - "link": "http://ep-dev.yakimbi.com/edocs/download", - "created_date": "2012-08-30 09:03:48", - "item_id": 3744, - "path": "My Files/NewFileNameTezt.pdf", - "path_by_id": "/", - "type": "1", - "mime_type": "3", - "size": 1228100 - } - ], - "name": "My Files", - "id": "S1" - }, - "rev_id": 119, - "shared_files": { - "content": [ - { - "status": "new", - "is_shared": "yes", - "share_id": "13", - "user_id": 7, - "name": "Wily Pics", - "shared_by": 0, - "created_date": "2012-08-07 14:39:56", - "shared_date": "", - "share_level": 0, - "parent_id": null, - "last_updated_date": "2012-08-07 14:39:56", - "last_updated_by": "Azril, Amir", - "link": "", - "trans_type": "shared_files", - "item_id": 474, - "path": "", - "path_by_id": "/", - "type": "0", - "mime_type": "", - "size": 0 - }, - { - "status": "new", - "is_shared": "yes", - "share_id": "13", - "user_id": 7, - "name": "Wily Pics", - "shared_by": 0, - "created_date": "2012-08-07 14:39:56", - "shared_date": "", - "share_level": 0, - "parent_id": null, - "last_updated_date": "2012-08-07 14:39:56", - "last_updated_by": "Azril, Amir", - "link": "", - "trans_type": "shared_files", - "item_id": 474, - "path": "", - "path_by_id": "/", - "type": "0", - "mime_type": "", - "size": 0 - }, - { - "status": "new", - "is_shared": "yes", - "share_id": "13", - "user_id": 7, - "name": "Wily Pics", - "shared_by": 0, - "created_date": "2012-08-07 14:39:56", - "shared_date": "", - "share_level": 0, - "parent_id": null, - "last_updated_date": "2012-08-07 14:39:56", - "last_updated_by": "Azril, Amir", - "link": "", - "trans_type": "shared_files", - "item_id": 474, - "path": "", - "path_by_id": "/", - "type": "0", - "mime_type": "", - "size": 0 - }, - { - "status": "new", - "is_shared": "yes", - "share_id": "13", - "user_id": 7, - "name": "Wily Pics", - "shared_by": 0, - "created_date": "2012-08-07 14:39:56", - "shared_date": "", - "share_level": 0, - "parent_id": null, - "last_updated_date": "2012-08-07 14:39:56", - "last_updated_by": "Azril, Amir", - "link": "", - "trans_type": "shared_files", - "item_id": 474, - "path": "", - "path_by_id": "/", - "type": "0", - "mime_type": "", - "size": 0 - }, - { - "status": "new", - "is_shared": "yes", - "share_id": "14", - "user_id": 7, - "name": "Sample PDF Form.pdf", - "shared_by": 0, - "created_date": "2012-08-08 09:49:24", - "shared_date": "", - "share_level": 0, - "parent_id": null, - "last_updated_date": "2012-08-08 09:49:24", - "last_updated_by": "Azril, Amir", - "link": "http://ep-dev.yakimbi.com/edocs/download", - "trans_type": "shared_files", - "item_id": 493, - "path": "", - "path_by_id": "/", - "type": "1", - "mime_type": "0", - "size": 1251022 - }, - { - "status": "new", - "is_shared": "yes", - "share_id": "23", - "user_id": 7, - "name": "Lamborghini Aventador Twin Turbo LP700-4 by Underground Racing - YouTube.mp4", - "shared_by": 0, - "created_date": "2012-08-10 10:23:44", - "shared_date": "", - "share_level": 1, - "parent_id": null, - "last_updated_date": "2012-08-10 10:23:44", - "last_updated_by": "Azril, Amir", - "link": "http://ep-dev.yakimbi.com/edocs/download", - "trans_type": "shared_files", - "item_id": 594, - "path": "", - "path_by_id": "/", - "type": "1", - "mime_type": "32", - "size": 81451140 - }, - { - "status": "new", - "is_shared": "yes", - "share_id": "24", - "user_id": 7, - "name": "Sample PDF Form.pdf", - "shared_by": 0, - "created_date": "2012-08-08 09:49:24", - "shared_date": "", - "share_level": 1, - "parent_id": null, - "last_updated_date": "2012-08-08 09:49:24", - "last_updated_by": "Azril, Amir", - "link": "http://ep-dev.yakimbi.com/edocs/download", - "trans_type": "shared_files", - "item_id": 493, - "path": "", - "path_by_id": "/", - "type": "1", - "mime_type": "0", - "size": 1251022 - }, - { - "status": "remove", - "is_shared": "yes", - "share_id": "", - "user_id": 7, - "name": "IMG_20120726_084545 (1).jpg", - "shared_by": 0, - "created_date": "2012-08-07 14:52:46", - "shared_date": "", - "share_level": -1, - "parent_id": 474, - "last_updated_date": "2012-08-07 14:52:46", - "last_updated_by": "Azril, Amir", - "link": "http://ep-dev.yakimbi.com/edocs/download", - "trans_type": "shared_files", - "item_id": 481, - "path": "Shared Files/Wily Pics", - "path_by_id": "/474/", - "type": "1", - "mime_type": "24", - "size": 1010386 - }, - { - "status": "new", - "is_shared": "yes", - "share_id": "26", - "user_id": 7, - "name": "BlondDrive.tv Lamborghini Gallardo Superleggera.mp4", - "shared_by": 0, - "created_date": "2012-08-14 13:10:39", - "shared_date": "", - "share_level": 0, - "parent_id": null, - "last_updated_date": "2012-08-14 13:10:57", - "last_updated_by": "Azril, Amir", - "link": "http://ep-dev.yakimbi.com/edocs/download", - "trans_type": "shared_files", - "item_id": 910, - "path": "", - "path_by_id": "/", - "type": "1", - "mime_type": "32", - "size": 93502738 - }, - { - "status": "new", - "is_shared": "yes", - "share_id": "26", - "user_id": 7, - "name": "BlondDrive.tv Lamborghini Gallardo Superleggera.mp4", - "shared_by": 0, - "created_date": "2012-08-14 13:10:39", - "shared_date": "", - "share_level": 0, - "parent_id": null, - "last_updated_date": "2012-08-14 13:10:57", - "last_updated_by": "Azril, Amir", - "link": "http://ep-dev.yakimbi.com/edocs/download", - "trans_type": "shared_files", - "item_id": 910, - "path": "", - "path_by_id": "/", - "type": "1", - "mime_type": "32", - "size": 93502738 - }, - { - "status": "new", - "is_shared": "yes", - "share_id": "41", - "user_id": 7, - "name": "20 Mar 2012 18 53 19.png", - "shared_by": 0, - "created_date": "2012-08-17 09:50:34", - "shared_date": "", - "share_level": 1, - "parent_id": 2558, - "last_updated_date": "2012-08-17 09:50:34", - "last_updated_by": "Azril, Amir", - "link": "http://ep-dev.yakimbi.com/edocs/download", - "trans_type": "shared_files", - "item_id": 2560, - "path": "", - "path_by_id": "/", - "type": "1", - "mime_type": "25", - "size": 285251 - }, - { - "status": "new", - "is_shared": "yes", - "share_id": "42", - "user_id": 7, - "name": "20 Mar 2012 18 54 06.png", - "shared_by": 0, - "created_date": "2012-08-17 09:51:04", - "shared_date": "", - "share_level": 1, - "parent_id": 2558, - "last_updated_date": "2012-08-17 09:51:04", - "last_updated_by": "Azril, Amir", - "link": "http://ep-dev.yakimbi.com/edocs/download", - "trans_type": "shared_files", - "item_id": 2561, - "path": "", - "path_by_id": "/", - "type": "1", - "mime_type": "25", - "size": 341775 - }, - { - "status": "new", - "is_shared": "yes", - "share_id": "43", - "user_id": 7, - "name": "23 Dec 2011 12 10 22.png", - "shared_by": 0, - "created_date": "2012-08-17 09:51:30", - "shared_date": "", - "share_level": 1, - "parent_id": 2558, - "last_updated_date": "2012-08-17 09:51:30", - "last_updated_by": "Azril, Amir", - "link": "http://ep-dev.yakimbi.com/edocs/download", - "trans_type": "shared_files", - "item_id": 2562, - "path": "", - "path_by_id": "/", - "type": "1", - "mime_type": "25", - "size": 262125 - }, - { - "status": "new", - "is_shared": "yes", - "share_id": "45", - "user_id": 7, - "name": "Revoltech-Optimus-Prime-01_1309801084.jpg", - "shared_by": 0, - "created_date": "2012-08-17 09:57:25", - "shared_date": "", - "share_level": 1, - "parent_id": 2558, - "last_updated_date": "2012-08-17 09:57:25", - "last_updated_by": "Azril, Amir", - "link": "http://ep-dev.yakimbi.com/edocs/download", - "trans_type": "shared_files", - "item_id": 2563, - "path": "", - "path_by_id": "/", - "type": "1", - "mime_type": "24", - "size": 160156 - }, - { - "status": "new", - "is_shared": "yes", - "share_id": "46", - "user_id": 7, - "name": "Revoltech-Optimus-Prime-02_1309801084.jpg", - "shared_by": 0, - "created_date": "2012-08-17 09:57:26", - "shared_date": "", - "share_level": 1, - "parent_id": 2558, - "last_updated_date": "2012-08-17 09:57:26", - "last_updated_by": "Azril, Amir", - "link": "http://ep-dev.yakimbi.com/edocs/download", - "trans_type": "shared_files", - "item_id": 2564, - "path": "", - "path_by_id": "/", - "type": "1", - "mime_type": "24", - "size": 247136 - }, - { - "status": "new", - "is_shared": "yes", - "share_id": "52", - "user_id": 7, - "name": "A-B-C.pdf", - "shared_by": 0, - "created_date": "2012-08-27 13:46:29", - "shared_date": "", - "share_level": 0, - "parent_id": null, - "last_updated_date": "2012-08-27 13:46:29", - "last_updated_by": "account, Test", - "link": "http://ep-dev.yakimbi.com/edocs/download", - "trans_type": "shared_files", - "item_id": 3725, - "path": "", - "path_by_id": "/", - "type": "1", - "mime_type": "3", - "size": 202944 - }, - { - "status": "new", - "is_shared": "yes", - "share_id": "53", - "user_id": 7, - "name": "Fire Evacuation Plan - Map.jpg", - "shared_by": 0, - "created_date": "2012-08-27 13:46:02", - "shared_date": "", - "share_level": 0, - "parent_id": null, - "last_updated_date": "2012-08-27 13:46:02", - "last_updated_by": "account, Test", - "link": "http://ep-dev.yakimbi.com/edocs/download", - "trans_type": "shared_files", - "item_id": 3723, - "path": "", - "path_by_id": "/", - "type": "1", - "mime_type": "24", - "size": 127253 - } - ], - "name": "Shared Files", - "id": "S2" - } -} \ No newline at end of file diff --git a/YakimbiTestUsingARC/YakimbiTest.xcodeproj/project.pbxproj b/YakimbiTestUsingARC/YakimbiTest.xcodeproj/project.pbxproj deleted file mode 100644 index fe29ed1..0000000 --- a/YakimbiTestUsingARC/YakimbiTest.xcodeproj/project.pbxproj +++ /dev/null @@ -1,696 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 46; - objects = { - -/* Begin PBXBuildFile section */ - 26743EAD16D3FECE008E0446 /* MyNavigationController.m in Sources */ = {isa = PBXBuildFile; fileRef = 26743EAC16D3FECE008E0446 /* MyNavigationController.m */; }; - 26743EB416D40CB3008E0446 /* NSDictionary+Addition.m in Sources */ = {isa = PBXBuildFile; fileRef = 26743EB116D40CB3008E0446 /* NSDictionary+Addition.m */; }; - 26743EC616D4239C008E0446 /* InfoViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 26743EC416D4239C008E0446 /* InfoViewController.m */; }; - 26743EC716D4239C008E0446 /* InfoViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 26743EC516D4239C008E0446 /* InfoViewController.xib */; }; - 2676D1DC16D212A20019B3A5 /* AppConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 2676D1DB16D212A20019B3A5 /* AppConstants.m */; }; - 2676D1ED16D249990019B3A5 /* DatabaseHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 2676D1EC16D249990019B3A5 /* DatabaseHandler.m */; }; - 2676D1F016D250A20019B3A5 /* Folder.m in Sources */ = {isa = PBXBuildFile; fileRef = 2676D1EF16D250A20019B3A5 /* Folder.m */; }; - 2676D1F916D257570019B3A5 /* File.m in Sources */ = {isa = PBXBuildFile; fileRef = 2676D1F816D257570019B3A5 /* File.m */; }; - 2676D1FC16D27C3F0019B3A5 /* User.m in Sources */ = {isa = PBXBuildFile; fileRef = 2676D1FB16D27C3F0019B3A5 /* User.m */; }; - 2692E62D16D2B0E100D109BC /* ListViewController_iPad.xib in Resources */ = {isa = PBXBuildFile; fileRef = 2692E62916D2B0E100D109BC /* ListViewController_iPad.xib */; }; - 2692E62E16D2B0E100D109BC /* ListViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2692E62B16D2B0E100D109BC /* ListViewController.m */; }; - 2692E62F16D2B0E100D109BC /* ListViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 2692E62C16D2B0E100D109BC /* ListViewController.xib */; }; - 2692E63216D2BB5900D109BC /* FileViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 2692E63116D2BB5900D109BC /* FileViewCell.m */; }; - 2692E63616D2BBA800D109BC /* FileViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 2692E63516D2BBA800D109BC /* FileViewCell.xib */; }; - 2692E63816D2C20100D109BC /* Purple_Folder.png in Resources */ = {isa = PBXBuildFile; fileRef = 2692E63716D2C20100D109BC /* Purple_Folder.png */; }; - 2692E64016D2C78100D109BC /* FolderViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 2692E63F16D2C78100D109BC /* FolderViewCell.m */; }; - 2692E64216D2C78E00D109BC /* FolderViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 2692E64116D2C78E00D109BC /* FolderViewCell.xib */; }; - 2692E64616D2CE0600D109BC /* TableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2692E64416D2CE0600D109BC /* TableViewController.m */; }; - 2692E64716D2CE0600D109BC /* TableViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 2692E64516D2CE0600D109BC /* TableViewController.xib */; }; - 2692E64916D2D06C00D109BC /* FolderViewCell_iPad.xib in Resources */ = {isa = PBXBuildFile; fileRef = 2692E64816D2D06C00D109BC /* FolderViewCell_iPad.xib */; }; - 2692E64B16D2D18C00D109BC /* FileViewCell_iPad.xib in Resources */ = {isa = PBXBuildFile; fileRef = 2692E64A16D2D18C00D109BC /* FileViewCell_iPad.xib */; }; - 269F65E616CFAB9C00663B98 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 269F65E516CFAB9C00663B98 /* UIKit.framework */; }; - 269F65E816CFAB9C00663B98 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 269F65E716CFAB9C00663B98 /* Foundation.framework */; }; - 269F65EA16CFAB9C00663B98 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 269F65E916CFAB9C00663B98 /* CoreGraphics.framework */; }; - 269F65EC16CFAB9C00663B98 /* CoreData.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 269F65EB16CFAB9C00663B98 /* CoreData.framework */; }; - 269F65F216CFAB9C00663B98 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 269F65F016CFAB9C00663B98 /* InfoPlist.strings */; }; - 269F65F416CFAB9C00663B98 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 269F65F316CFAB9C00663B98 /* main.m */; }; - 269F65F816CFAB9C00663B98 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 269F65F716CFAB9C00663B98 /* AppDelegate.m */; }; - 269F65FA16CFAB9C00663B98 /* Default.png in Resources */ = {isa = PBXBuildFile; fileRef = 269F65F916CFAB9C00663B98 /* Default.png */; }; - 269F65FC16CFAB9C00663B98 /* Default@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 269F65FB16CFAB9C00663B98 /* Default@2x.png */; }; - 269F65FE16CFAB9C00663B98 /* Default-568h@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 269F65FD16CFAB9C00663B98 /* Default-568h@2x.png */; }; - 269F660116CFAB9C00663B98 /* YakimbiTest.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = 269F65FF16CFAB9C00663B98 /* YakimbiTest.xcdatamodeld */; }; - 269F660916CFAB9C00663B98 /* SenTestingKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 269F660816CFAB9C00663B98 /* SenTestingKit.framework */; }; - 269F660A16CFAB9C00663B98 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 269F65E516CFAB9C00663B98 /* UIKit.framework */; }; - 269F660B16CFAB9C00663B98 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 269F65E716CFAB9C00663B98 /* Foundation.framework */; }; - 269F660C16CFAB9C00663B98 /* CoreData.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 269F65EB16CFAB9C00663B98 /* CoreData.framework */; }; - 269F661416CFAB9C00663B98 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 269F661216CFAB9C00663B98 /* InfoPlist.strings */; }; - 269F661716CFAB9C00663B98 /* YakimbiTestTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 269F661616CFAB9C00663B98 /* YakimbiTestTests.m */; }; - 269F662216CFABCE00663B98 /* Parser.m in Sources */ = {isa = PBXBuildFile; fileRef = 269F662116CFABCE00663B98 /* Parser.m */; }; - 269F662816CFAC3400663B98 /* MainViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 269F662516CFAC3400663B98 /* MainViewController.m */; }; - 269F662916CFAC3400663B98 /* MainViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 269F662616CFAC3400663B98 /* MainViewController.xib */; }; - 269F662A16CFAC3400663B98 /* MainViewController_iPad.xib in Resources */ = {isa = PBXBuildFile; fileRef = 269F662716CFAC3400663B98 /* MainViewController_iPad.xib */; }; - 269F663216CFAF4B00663B98 /* HTTPRequestOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 269F663116CFAF4B00663B98 /* HTTPRequestOperation.m */; }; -/* End PBXBuildFile section */ - -/* Begin PBXContainerItemProxy section */ - 269F660D16CFAB9C00663B98 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 269F65DA16CFAB9B00663B98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 269F65E116CFAB9B00663B98; - remoteInfo = YakimbiTest; - }; -/* End PBXContainerItemProxy section */ - -/* Begin PBXFileReference section */ - 26743EAB16D3FECE008E0446 /* MyNavigationController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MyNavigationController.h; path = Custom/MyNavigationController.h; sourceTree = ""; }; - 26743EAC16D3FECE008E0446 /* MyNavigationController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MyNavigationController.m; path = Custom/MyNavigationController.m; sourceTree = ""; }; - 26743EB016D40CB3008E0446 /* NSDictionary+Addition.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSDictionary+Addition.h"; sourceTree = ""; }; - 26743EB116D40CB3008E0446 /* NSDictionary+Addition.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSDictionary+Addition.m"; sourceTree = ""; }; - 26743EC316D4239C008E0446 /* InfoViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = InfoViewController.h; path = ViewControllers/InfoViewController.h; sourceTree = ""; }; - 26743EC416D4239C008E0446 /* InfoViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = InfoViewController.m; path = ViewControllers/InfoViewController.m; sourceTree = ""; }; - 26743EC516D4239C008E0446 /* InfoViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = InfoViewController.xib; path = ViewControllers/InfoViewController.xib; sourceTree = ""; }; - 2676D1DA16D212A20019B3A5 /* AppConstants.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppConstants.h; path = Utilities/AppConstants.h; sourceTree = ""; }; - 2676D1DB16D212A20019B3A5 /* AppConstants.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AppConstants.m; path = Utilities/AppConstants.m; sourceTree = ""; }; - 2676D1EB16D249990019B3A5 /* DatabaseHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DatabaseHandler.h; sourceTree = ""; }; - 2676D1EC16D249990019B3A5 /* DatabaseHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DatabaseHandler.m; sourceTree = ""; }; - 2676D1EE16D250A20019B3A5 /* Folder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Folder.h; path = "DB Files/Folder.h"; sourceTree = ""; }; - 2676D1EF16D250A20019B3A5 /* Folder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = Folder.m; path = "DB Files/Folder.m"; sourceTree = ""; }; - 2676D1F716D257570019B3A5 /* File.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = File.h; path = "DB Files/File.h"; sourceTree = ""; }; - 2676D1F816D257570019B3A5 /* File.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = File.m; path = "DB Files/File.m"; sourceTree = ""; }; - 2676D1FA16D27C3F0019B3A5 /* User.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = User.h; path = "DB Files/User.h"; sourceTree = ""; }; - 2676D1FB16D27C3F0019B3A5 /* User.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = User.m; path = "DB Files/User.m"; sourceTree = ""; }; - 2692E62916D2B0E100D109BC /* ListViewController_iPad.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = ListViewController_iPad.xib; path = ViewControllers/ListViewController_iPad.xib; sourceTree = ""; }; - 2692E62A16D2B0E100D109BC /* ListViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ListViewController.h; path = ViewControllers/ListViewController.h; sourceTree = ""; }; - 2692E62B16D2B0E100D109BC /* ListViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ListViewController.m; path = ViewControllers/ListViewController.m; sourceTree = ""; }; - 2692E62C16D2B0E100D109BC /* ListViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = ListViewController.xib; path = ViewControllers/ListViewController.xib; sourceTree = ""; }; - 2692E63016D2BB5800D109BC /* FileViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FileViewCell.h; path = Cells/FileViewCell.h; sourceTree = ""; }; - 2692E63116D2BB5900D109BC /* FileViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = FileViewCell.m; path = Cells/FileViewCell.m; sourceTree = ""; }; - 2692E63516D2BBA800D109BC /* FileViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = FileViewCell.xib; path = Cells/FileViewCell.xib; sourceTree = ""; }; - 2692E63716D2C20100D109BC /* Purple_Folder.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = Purple_Folder.png; path = ../../../../Downloads/Purple_Folder.png; sourceTree = ""; }; - 2692E63E16D2C78100D109BC /* FolderViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FolderViewCell.h; path = Cells/FolderViewCell.h; sourceTree = ""; }; - 2692E63F16D2C78100D109BC /* FolderViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = FolderViewCell.m; path = Cells/FolderViewCell.m; sourceTree = ""; }; - 2692E64116D2C78E00D109BC /* FolderViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = FolderViewCell.xib; path = Cells/FolderViewCell.xib; sourceTree = ""; }; - 2692E64316D2CE0600D109BC /* TableViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TableViewController.h; path = ViewControllers/TableViewController.h; sourceTree = ""; }; - 2692E64416D2CE0600D109BC /* TableViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = TableViewController.m; path = ViewControllers/TableViewController.m; sourceTree = ""; }; - 2692E64516D2CE0600D109BC /* TableViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = TableViewController.xib; path = ViewControllers/TableViewController.xib; sourceTree = ""; }; - 2692E64816D2D06C00D109BC /* FolderViewCell_iPad.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = FolderViewCell_iPad.xib; path = Cells/FolderViewCell_iPad.xib; sourceTree = ""; }; - 2692E64A16D2D18C00D109BC /* FileViewCell_iPad.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = FileViewCell_iPad.xib; path = Cells/FileViewCell_iPad.xib; sourceTree = ""; }; - 269F65E216CFAB9C00663B98 /* YakimbiTest.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = YakimbiTest.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 269F65E516CFAB9C00663B98 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; - 269F65E716CFAB9C00663B98 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; - 269F65E916CFAB9C00663B98 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; - 269F65EB16CFAB9C00663B98 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = System/Library/Frameworks/CoreData.framework; sourceTree = SDKROOT; }; - 269F65EF16CFAB9C00663B98 /* YakimbiTest-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "YakimbiTest-Info.plist"; sourceTree = ""; }; - 269F65F116CFAB9C00663B98 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; - 269F65F316CFAB9C00663B98 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; - 269F65F516CFAB9C00663B98 /* YakimbiTest-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "YakimbiTest-Prefix.pch"; sourceTree = ""; }; - 269F65F616CFAB9C00663B98 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; - 269F65F716CFAB9C00663B98 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; - 269F65F916CFAB9C00663B98 /* Default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Default.png; sourceTree = ""; }; - 269F65FB16CFAB9C00663B98 /* Default@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default@2x.png"; sourceTree = ""; }; - 269F65FD16CFAB9C00663B98 /* Default-568h@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default-568h@2x.png"; sourceTree = ""; }; - 269F660016CFAB9C00663B98 /* YakimbiTest.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = YakimbiTest.xcdatamodel; sourceTree = ""; }; - 269F660716CFAB9C00663B98 /* YakimbiTestTests.octest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = YakimbiTestTests.octest; sourceTree = BUILT_PRODUCTS_DIR; }; - 269F660816CFAB9C00663B98 /* SenTestingKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SenTestingKit.framework; path = Library/Frameworks/SenTestingKit.framework; sourceTree = DEVELOPER_DIR; }; - 269F661116CFAB9C00663B98 /* YakimbiTestTests-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "YakimbiTestTests-Info.plist"; sourceTree = ""; }; - 269F661316CFAB9C00663B98 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; - 269F661516CFAB9C00663B98 /* YakimbiTestTests.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YakimbiTestTests.h; sourceTree = ""; }; - 269F661616CFAB9C00663B98 /* YakimbiTestTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YakimbiTestTests.m; sourceTree = ""; }; - 269F662016CFABCE00663B98 /* Parser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Parser.h; path = Parsers/Parser.h; sourceTree = ""; }; - 269F662116CFABCE00663B98 /* Parser.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = Parser.m; path = Parsers/Parser.m; sourceTree = ""; }; - 269F662416CFAC3400663B98 /* MainViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MainViewController.h; path = ViewControllers/MainViewController.h; sourceTree = ""; }; - 269F662516CFAC3400663B98 /* MainViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MainViewController.m; path = ViewControllers/MainViewController.m; sourceTree = ""; }; - 269F662616CFAC3400663B98 /* MainViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = MainViewController.xib; path = ViewControllers/MainViewController.xib; sourceTree = ""; }; - 269F662716CFAC3400663B98 /* MainViewController_iPad.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = MainViewController_iPad.xib; path = ViewControllers/MainViewController_iPad.xib; sourceTree = ""; }; - 269F662C16CFAC6E00663B98 /* Macros.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Macros.h; path = Utilities/Macros.h; sourceTree = ""; }; - 269F663016CFAF4B00663B98 /* HTTPRequestOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = HTTPRequestOperation.h; path = Network/HTTPRequestOperation.h; sourceTree = ""; }; - 269F663116CFAF4B00663B98 /* HTTPRequestOperation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = HTTPRequestOperation.m; path = Network/HTTPRequestOperation.m; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 269F65DF16CFAB9B00663B98 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 269F65E616CFAB9C00663B98 /* UIKit.framework in Frameworks */, - 269F65E816CFAB9C00663B98 /* Foundation.framework in Frameworks */, - 269F65EA16CFAB9C00663B98 /* CoreGraphics.framework in Frameworks */, - 269F65EC16CFAB9C00663B98 /* CoreData.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 269F660316CFAB9C00663B98 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 269F660916CFAB9C00663B98 /* SenTestingKit.framework in Frameworks */, - 269F660A16CFAB9C00663B98 /* UIKit.framework in Frameworks */, - 269F660B16CFAB9C00663B98 /* Foundation.framework in Frameworks */, - 269F660C16CFAB9C00663B98 /* CoreData.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 26743EAA16D3FEAB008E0446 /* Custom */ = { - isa = PBXGroup; - children = ( - 26743EAB16D3FECE008E0446 /* MyNavigationController.h */, - 26743EAC16D3FECE008E0446 /* MyNavigationController.m */, - ); - name = Custom; - sourceTree = ""; - }; - 26743EAF16D40CB3008E0446 /* Additions */ = { - isa = PBXGroup; - children = ( - 26743EB016D40CB3008E0446 /* NSDictionary+Addition.h */, - 26743EB116D40CB3008E0446 /* NSDictionary+Addition.m */, - ); - path = Additions; - sourceTree = ""; - }; - 26743EC816D423A4008E0446 /* Info View */ = { - isa = PBXGroup; - children = ( - 26743EC316D4239C008E0446 /* InfoViewController.h */, - 26743EC416D4239C008E0446 /* InfoViewController.m */, - 26743EC516D4239C008E0446 /* InfoViewController.xib */, - ); - name = "Info View"; - sourceTree = ""; - }; - 2676D1E916D238690019B3A5 /* DB Files */ = { - isa = PBXGroup; - children = ( - 269F65FF16CFAB9C00663B98 /* YakimbiTest.xcdatamodeld */, - 2676D1FA16D27C3F0019B3A5 /* User.h */, - 2676D1FB16D27C3F0019B3A5 /* User.m */, - 2676D1F716D257570019B3A5 /* File.h */, - 2676D1F816D257570019B3A5 /* File.m */, - 2676D1EE16D250A20019B3A5 /* Folder.h */, - 2676D1EF16D250A20019B3A5 /* Folder.m */, - ); - name = "DB Files"; - path = ..; - sourceTree = ""; - }; - 2676D1EA16D249990019B3A5 /* Database */ = { - isa = PBXGroup; - children = ( - 2676D1E916D238690019B3A5 /* DB Files */, - 2676D1EB16D249990019B3A5 /* DatabaseHandler.h */, - 2676D1EC16D249990019B3A5 /* DatabaseHandler.m */, - ); - path = Database; - sourceTree = ""; - }; - 2692E63416D2BB7900D109BC /* Cells */ = { - isa = PBXGroup; - children = ( - 2692E63016D2BB5800D109BC /* FileViewCell.h */, - 2692E63116D2BB5900D109BC /* FileViewCell.m */, - 2692E63516D2BBA800D109BC /* FileViewCell.xib */, - 2692E64A16D2D18C00D109BC /* FileViewCell_iPad.xib */, - 2692E63E16D2C78100D109BC /* FolderViewCell.h */, - 2692E63F16D2C78100D109BC /* FolderViewCell.m */, - 2692E64116D2C78E00D109BC /* FolderViewCell.xib */, - 2692E64816D2D06C00D109BC /* FolderViewCell_iPad.xib */, - ); - name = Cells; - sourceTree = ""; - }; - 269F65D916CFAB9B00663B98 = { - isa = PBXGroup; - children = ( - 269F65ED16CFAB9C00663B98 /* YakimbiTest */, - 269F660F16CFAB9C00663B98 /* YakimbiTestTests */, - 269F65E416CFAB9C00663B98 /* Frameworks */, - 269F65E316CFAB9C00663B98 /* Products */, - ); - sourceTree = ""; - }; - 269F65E316CFAB9C00663B98 /* Products */ = { - isa = PBXGroup; - children = ( - 269F65E216CFAB9C00663B98 /* YakimbiTest.app */, - 269F660716CFAB9C00663B98 /* YakimbiTestTests.octest */, - ); - name = Products; - sourceTree = ""; - }; - 269F65E416CFAB9C00663B98 /* Frameworks */ = { - isa = PBXGroup; - children = ( - 269F65E516CFAB9C00663B98 /* UIKit.framework */, - 269F65E716CFAB9C00663B98 /* Foundation.framework */, - 269F65E916CFAB9C00663B98 /* CoreGraphics.framework */, - 269F65EB16CFAB9C00663B98 /* CoreData.framework */, - 269F660816CFAB9C00663B98 /* SenTestingKit.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; - 269F65ED16CFAB9C00663B98 /* YakimbiTest */ = { - isa = PBXGroup; - children = ( - 26743EAF16D40CB3008E0446 /* Additions */, - 26743EAA16D3FEAB008E0446 /* Custom */, - 2692E63416D2BB7900D109BC /* Cells */, - 269F663316CFAF4F00663B98 /* Network */, - 269F662F16CFAC7400663B98 /* Utilities */, - 269F662B16CFAC3C00663B98 /* ViewControllers */, - 269F662316CFABD500663B98 /* Parsers */, - 2676D1EA16D249990019B3A5 /* Database */, - 269F65F616CFAB9C00663B98 /* AppDelegate.h */, - 269F65F716CFAB9C00663B98 /* AppDelegate.m */, - 269F65EE16CFAB9C00663B98 /* Supporting Files */, - ); - path = YakimbiTest; - sourceTree = ""; - }; - 269F65EE16CFAB9C00663B98 /* Supporting Files */ = { - isa = PBXGroup; - children = ( - 2692E63716D2C20100D109BC /* Purple_Folder.png */, - 269F65EF16CFAB9C00663B98 /* YakimbiTest-Info.plist */, - 269F65F016CFAB9C00663B98 /* InfoPlist.strings */, - 269F65F316CFAB9C00663B98 /* main.m */, - 269F65F516CFAB9C00663B98 /* YakimbiTest-Prefix.pch */, - 269F65F916CFAB9C00663B98 /* Default.png */, - 269F65FB16CFAB9C00663B98 /* Default@2x.png */, - 269F65FD16CFAB9C00663B98 /* Default-568h@2x.png */, - ); - name = "Supporting Files"; - sourceTree = ""; - }; - 269F660F16CFAB9C00663B98 /* YakimbiTestTests */ = { - isa = PBXGroup; - children = ( - 269F661516CFAB9C00663B98 /* YakimbiTestTests.h */, - 269F661616CFAB9C00663B98 /* YakimbiTestTests.m */, - 269F661016CFAB9C00663B98 /* Supporting Files */, - ); - path = YakimbiTestTests; - sourceTree = ""; - }; - 269F661016CFAB9C00663B98 /* Supporting Files */ = { - isa = PBXGroup; - children = ( - 269F661116CFAB9C00663B98 /* YakimbiTestTests-Info.plist */, - 269F661216CFAB9C00663B98 /* InfoPlist.strings */, - ); - name = "Supporting Files"; - sourceTree = ""; - }; - 269F662316CFABD500663B98 /* Parsers */ = { - isa = PBXGroup; - children = ( - 269F662016CFABCE00663B98 /* Parser.h */, - 269F662116CFABCE00663B98 /* Parser.m */, - ); - name = Parsers; - sourceTree = ""; - }; - 269F662B16CFAC3C00663B98 /* ViewControllers */ = { - isa = PBXGroup; - children = ( - 26743EC816D423A4008E0446 /* Info View */, - 2692E64316D2CE0600D109BC /* TableViewController.h */, - 2692E64416D2CE0600D109BC /* TableViewController.m */, - 2692E64516D2CE0600D109BC /* TableViewController.xib */, - 2692E62A16D2B0E100D109BC /* ListViewController.h */, - 2692E62B16D2B0E100D109BC /* ListViewController.m */, - 2692E62C16D2B0E100D109BC /* ListViewController.xib */, - 2692E62916D2B0E100D109BC /* ListViewController_iPad.xib */, - 269F662416CFAC3400663B98 /* MainViewController.h */, - 269F662516CFAC3400663B98 /* MainViewController.m */, - 269F662616CFAC3400663B98 /* MainViewController.xib */, - 269F662716CFAC3400663B98 /* MainViewController_iPad.xib */, - ); - name = ViewControllers; - sourceTree = ""; - }; - 269F662F16CFAC7400663B98 /* Utilities */ = { - isa = PBXGroup; - children = ( - 269F662C16CFAC6E00663B98 /* Macros.h */, - 2676D1DA16D212A20019B3A5 /* AppConstants.h */, - 2676D1DB16D212A20019B3A5 /* AppConstants.m */, - ); - name = Utilities; - sourceTree = ""; - }; - 269F663316CFAF4F00663B98 /* Network */ = { - isa = PBXGroup; - children = ( - 269F663016CFAF4B00663B98 /* HTTPRequestOperation.h */, - 269F663116CFAF4B00663B98 /* HTTPRequestOperation.m */, - ); - name = Network; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - 269F65E116CFAB9B00663B98 /* YakimbiTest */ = { - isa = PBXNativeTarget; - buildConfigurationList = 269F661A16CFAB9C00663B98 /* Build configuration list for PBXNativeTarget "YakimbiTest" */; - buildPhases = ( - 269F65DE16CFAB9B00663B98 /* Sources */, - 269F65DF16CFAB9B00663B98 /* Frameworks */, - 269F65E016CFAB9B00663B98 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = YakimbiTest; - productName = YakimbiTest; - productReference = 269F65E216CFAB9C00663B98 /* YakimbiTest.app */; - productType = "com.apple.product-type.application"; - }; - 269F660616CFAB9C00663B98 /* YakimbiTestTests */ = { - isa = PBXNativeTarget; - buildConfigurationList = 269F661D16CFAB9C00663B98 /* Build configuration list for PBXNativeTarget "YakimbiTestTests" */; - buildPhases = ( - 269F660216CFAB9C00663B98 /* Sources */, - 269F660316CFAB9C00663B98 /* Frameworks */, - 269F660416CFAB9C00663B98 /* Resources */, - 269F660516CFAB9C00663B98 /* ShellScript */, - ); - buildRules = ( - ); - dependencies = ( - 269F660E16CFAB9C00663B98 /* PBXTargetDependency */, - ); - name = YakimbiTestTests; - productName = YakimbiTestTests; - productReference = 269F660716CFAB9C00663B98 /* YakimbiTestTests.octest */; - productType = "com.apple.product-type.bundle"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 269F65DA16CFAB9B00663B98 /* Project object */ = { - isa = PBXProject; - attributes = { - LastUpgradeCheck = 0460; - ORGANIZATIONNAME = SAPLogix; - }; - buildConfigurationList = 269F65DD16CFAB9B00663B98 /* Build configuration list for PBXProject "YakimbiTest" */; - compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; - hasScannedForEncodings = 0; - knownRegions = ( - en, - ); - mainGroup = 269F65D916CFAB9B00663B98; - productRefGroup = 269F65E316CFAB9C00663B98 /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - 269F65E116CFAB9B00663B98 /* YakimbiTest */, - 269F660616CFAB9C00663B98 /* YakimbiTestTests */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - 269F65E016CFAB9B00663B98 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 269F65F216CFAB9C00663B98 /* InfoPlist.strings in Resources */, - 269F65FA16CFAB9C00663B98 /* Default.png in Resources */, - 269F65FC16CFAB9C00663B98 /* Default@2x.png in Resources */, - 269F65FE16CFAB9C00663B98 /* Default-568h@2x.png in Resources */, - 269F662916CFAC3400663B98 /* MainViewController.xib in Resources */, - 269F662A16CFAC3400663B98 /* MainViewController_iPad.xib in Resources */, - 2692E62D16D2B0E100D109BC /* ListViewController_iPad.xib in Resources */, - 2692E62F16D2B0E100D109BC /* ListViewController.xib in Resources */, - 2692E63616D2BBA800D109BC /* FileViewCell.xib in Resources */, - 2692E63816D2C20100D109BC /* Purple_Folder.png in Resources */, - 2692E64216D2C78E00D109BC /* FolderViewCell.xib in Resources */, - 2692E64716D2CE0600D109BC /* TableViewController.xib in Resources */, - 2692E64916D2D06C00D109BC /* FolderViewCell_iPad.xib in Resources */, - 2692E64B16D2D18C00D109BC /* FileViewCell_iPad.xib in Resources */, - 26743EC716D4239C008E0446 /* InfoViewController.xib in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 269F660416CFAB9C00663B98 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 269F661416CFAB9C00663B98 /* InfoPlist.strings in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXShellScriptBuildPhase section */ - 269F660516CFAB9C00663B98 /* ShellScript */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "# Run the unit tests in this test bundle.\n\"${SYSTEM_DEVELOPER_DIR}/Tools/RunUnitTests\"\n"; - }; -/* End PBXShellScriptBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 269F65DE16CFAB9B00663B98 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 269F65F416CFAB9C00663B98 /* main.m in Sources */, - 269F65F816CFAB9C00663B98 /* AppDelegate.m in Sources */, - 269F660116CFAB9C00663B98 /* YakimbiTest.xcdatamodeld in Sources */, - 269F662216CFABCE00663B98 /* Parser.m in Sources */, - 269F662816CFAC3400663B98 /* MainViewController.m in Sources */, - 269F663216CFAF4B00663B98 /* HTTPRequestOperation.m in Sources */, - 2676D1DC16D212A20019B3A5 /* AppConstants.m in Sources */, - 2676D1ED16D249990019B3A5 /* DatabaseHandler.m in Sources */, - 2676D1F016D250A20019B3A5 /* Folder.m in Sources */, - 2676D1F916D257570019B3A5 /* File.m in Sources */, - 2676D1FC16D27C3F0019B3A5 /* User.m in Sources */, - 2692E62E16D2B0E100D109BC /* ListViewController.m in Sources */, - 2692E63216D2BB5900D109BC /* FileViewCell.m in Sources */, - 2692E64016D2C78100D109BC /* FolderViewCell.m in Sources */, - 2692E64616D2CE0600D109BC /* TableViewController.m in Sources */, - 26743EAD16D3FECE008E0446 /* MyNavigationController.m in Sources */, - 26743EB416D40CB3008E0446 /* NSDictionary+Addition.m in Sources */, - 26743EC616D4239C008E0446 /* InfoViewController.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 269F660216CFAB9C00663B98 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 269F661716CFAB9C00663B98 /* YakimbiTestTests.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXTargetDependency section */ - 269F660E16CFAB9C00663B98 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 269F65E116CFAB9B00663B98 /* YakimbiTest */; - targetProxy = 269F660D16CFAB9C00663B98 /* PBXContainerItemProxy */; - }; -/* End PBXTargetDependency section */ - -/* Begin PBXVariantGroup section */ - 269F65F016CFAB9C00663B98 /* InfoPlist.strings */ = { - isa = PBXVariantGroup; - children = ( - 269F65F116CFAB9C00663B98 /* en */, - ); - name = InfoPlist.strings; - sourceTree = ""; - }; - 269F661216CFAB9C00663B98 /* InfoPlist.strings */ = { - isa = PBXVariantGroup; - children = ( - 269F661316CFAB9C00663B98 /* en */, - ); - name = InfoPlist.strings; - sourceTree = ""; - }; -/* End PBXVariantGroup section */ - -/* Begin XCBuildConfiguration section */ - 269F661816CFAB9C00663B98 /* 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; - }; - 269F661916CFAB9C00663B98 /* 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; - }; - 269F661B16CFAB9C00663B98 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_ENABLE_OBJC_ARC = YES; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = "YakimbiTest/YakimbiTest-Prefix.pch"; - INFOPLIST_FILE = "YakimbiTest/YakimbiTest-Info.plist"; - PRODUCT_NAME = "$(TARGET_NAME)"; - WRAPPER_EXTENSION = app; - }; - name = Debug; - }; - 269F661C16CFAB9C00663B98 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_ENABLE_OBJC_ARC = YES; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = "YakimbiTest/YakimbiTest-Prefix.pch"; - INFOPLIST_FILE = "YakimbiTest/YakimbiTest-Info.plist"; - PRODUCT_NAME = "$(TARGET_NAME)"; - WRAPPER_EXTENSION = app; - }; - name = Release; - }; - 269F661E16CFAB9C00663B98 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/YakimbiTest.app/YakimbiTest"; - FRAMEWORK_SEARCH_PATHS = ( - "\"$(SDKROOT)/Developer/Library/Frameworks\"", - "\"$(DEVELOPER_LIBRARY_DIR)/Frameworks\"", - ); - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = "YakimbiTest/YakimbiTest-Prefix.pch"; - INFOPLIST_FILE = "YakimbiTestTests/YakimbiTestTests-Info.plist"; - PRODUCT_NAME = "$(TARGET_NAME)"; - TEST_HOST = "$(BUNDLE_LOADER)"; - WRAPPER_EXTENSION = octest; - }; - name = Debug; - }; - 269F661F16CFAB9C00663B98 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/YakimbiTest.app/YakimbiTest"; - FRAMEWORK_SEARCH_PATHS = ( - "\"$(SDKROOT)/Developer/Library/Frameworks\"", - "\"$(DEVELOPER_LIBRARY_DIR)/Frameworks\"", - ); - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = "YakimbiTest/YakimbiTest-Prefix.pch"; - INFOPLIST_FILE = "YakimbiTestTests/YakimbiTestTests-Info.plist"; - PRODUCT_NAME = "$(TARGET_NAME)"; - TEST_HOST = "$(BUNDLE_LOADER)"; - WRAPPER_EXTENSION = octest; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 269F65DD16CFAB9B00663B98 /* Build configuration list for PBXProject "YakimbiTest" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 269F661816CFAB9C00663B98 /* Debug */, - 269F661916CFAB9C00663B98 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 269F661A16CFAB9C00663B98 /* Build configuration list for PBXNativeTarget "YakimbiTest" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 269F661B16CFAB9C00663B98 /* Debug */, - 269F661C16CFAB9C00663B98 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 269F661D16CFAB9C00663B98 /* Build configuration list for PBXNativeTarget "YakimbiTestTests" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 269F661E16CFAB9C00663B98 /* Debug */, - 269F661F16CFAB9C00663B98 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - -/* Begin XCVersionGroup section */ - 269F65FF16CFAB9C00663B98 /* YakimbiTest.xcdatamodeld */ = { - isa = XCVersionGroup; - children = ( - 269F660016CFAB9C00663B98 /* YakimbiTest.xcdatamodel */, - ); - currentVersion = 269F660016CFAB9C00663B98 /* YakimbiTest.xcdatamodel */; - path = YakimbiTest.xcdatamodeld; - sourceTree = ""; - versionGroupType = wrapper.xcdatamodel; - }; -/* End XCVersionGroup section */ - }; - rootObject = 269F65DA16CFAB9B00663B98 /* Project object */; -} diff --git a/YakimbiTestUsingARC/YakimbiTest.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/YakimbiTestUsingARC/YakimbiTest.xcodeproj/project.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 1d8d311..0000000 --- a/YakimbiTestUsingARC/YakimbiTest.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/YakimbiTestUsingARC/YakimbiTest.xcodeproj/project.xcworkspace/xcuserdata/SAPMBP.xcuserdatad/UserInterfaceState.xcuserstate b/YakimbiTestUsingARC/YakimbiTest.xcodeproj/project.xcworkspace/xcuserdata/SAPMBP.xcuserdatad/UserInterfaceState.xcuserstate deleted file mode 100644 index 5982f973a692cccb3fe0ca6449351a6bb6226788..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 122624 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 diff --git a/YakimbiTestUsingARC/YakimbiTest.xcodeproj/project.xcworkspace/xcuserdata/SAPMBP.xcuserdatad/xcdebugger/Expressions.xcexplist b/YakimbiTestUsingARC/YakimbiTest.xcodeproj/project.xcworkspace/xcuserdata/SAPMBP.xcuserdatad/xcdebugger/Expressions.xcexplist deleted file mode 100644 index ca6c635..0000000 --- a/YakimbiTestUsingARC/YakimbiTest.xcodeproj/project.xcworkspace/xcuserdata/SAPMBP.xcuserdatad/xcdebugger/Expressions.xcexplist +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/YakimbiTestUsingARC/YakimbiTest.xcodeproj/xcuserdata/SAPMBP.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist b/YakimbiTestUsingARC/YakimbiTest.xcodeproj/xcuserdata/SAPMBP.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist deleted file mode 100644 index 5610a77..0000000 --- a/YakimbiTestUsingARC/YakimbiTest.xcodeproj/xcuserdata/SAPMBP.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - diff --git a/YakimbiTestUsingARC/YakimbiTest.xcodeproj/xcuserdata/SAPMBP.xcuserdatad/xcschemes/YakimbiTest.xcscheme b/YakimbiTestUsingARC/YakimbiTest.xcodeproj/xcuserdata/SAPMBP.xcuserdatad/xcschemes/YakimbiTest.xcscheme deleted file mode 100644 index fcbfcf2..0000000 --- a/YakimbiTestUsingARC/YakimbiTest.xcodeproj/xcuserdata/SAPMBP.xcuserdatad/xcschemes/YakimbiTest.xcscheme +++ /dev/null @@ -1,96 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/YakimbiTestUsingARC/YakimbiTest.xcodeproj/xcuserdata/SAPMBP.xcuserdatad/xcschemes/xcschememanagement.plist b/YakimbiTestUsingARC/YakimbiTest.xcodeproj/xcuserdata/SAPMBP.xcuserdatad/xcschemes/xcschememanagement.plist deleted file mode 100644 index 81e669b..0000000 --- a/YakimbiTestUsingARC/YakimbiTest.xcodeproj/xcuserdata/SAPMBP.xcuserdatad/xcschemes/xcschememanagement.plist +++ /dev/null @@ -1,27 +0,0 @@ - - - - - SchemeUserState - - YakimbiTest.xcscheme - - orderHint - 0 - - - SuppressBuildableAutocreation - - 269F65E116CFAB9B00663B98 - - primary - - - 269F660616CFAB9C00663B98 - - primary - - - - - diff --git a/YakimbiTestUsingARC/YakimbiTest/Additions/NSDictionary+Addition.h b/YakimbiTestUsingARC/YakimbiTest/Additions/NSDictionary+Addition.h deleted file mode 100644 index 1b7d020..0000000 --- a/YakimbiTestUsingARC/YakimbiTest/Additions/NSDictionary+Addition.h +++ /dev/null @@ -1,15 +0,0 @@ -// -// NSDictionary+Addition.h -// -// -// Created by Syed Arsalan Pervez on 3/14/12. -// Copyright (c) 2012 SAPLogix. All rights reserved. -// - -@interface NSDictionary (ADDITION) - -- (BOOL)containsKey:(NSString *)key; -- (BOOL)containsKeys:(NSArray *)keys; -- (id)valueForKey:(NSString *)key; - -@end diff --git a/YakimbiTestUsingARC/YakimbiTest/Additions/NSDictionary+Addition.m b/YakimbiTestUsingARC/YakimbiTest/Additions/NSDictionary+Addition.m deleted file mode 100644 index 745dc48..0000000 --- a/YakimbiTestUsingARC/YakimbiTest/Additions/NSDictionary+Addition.m +++ /dev/null @@ -1,43 +0,0 @@ -// -// NSDictionary+Addition.m -// -// -// Created by Syed Arsalan Pervez on 3/14/12. -// Copyright (c) 2012 SAPLogix. All rights reserved. -// - -#import "NSDictionary+Addition.h" - -@implementation NSDictionary (ADDITION) - -- (BOOL)containsKey:(NSString *)key -{ - return [[self allKeys] containsObject:key]; -} - -- (BOOL)containsKeys:(NSArray *)keys -{ - for (NSString *key in keys) - { - if (![self containsKey:key]) - return NO; - } - - return YES; -} - -- (id)valueForKey:(NSString *)key -{ - int index = [[self allKeys] indexOfObject:key]; - if (index != NSNotFound) - { - id val = [[self allValues] objectAtIndex:index]; - - if (![val isKindOfClass:[NSNull class]]) - return val; - } - - return nil; -} - -@end diff --git a/YakimbiTestUsingARC/YakimbiTest/AppDelegate.h b/YakimbiTestUsingARC/YakimbiTest/AppDelegate.h deleted file mode 100644 index 5005c72..0000000 --- a/YakimbiTestUsingARC/YakimbiTest/AppDelegate.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// AppDelegate.h -// YakimbiTest -// -// Created by Syed Arsalan Pervez on 2/16/13. -// Copyright (c) 2013 SAPLogix. All rights reserved. -// - -#import -#import "MyNavigationController.h" -#import "MainViewController.h" - -@interface AppDelegate : UIResponder - -@property (strong, nonatomic) UIWindow *window; -@property (strong, nonatomic) MyNavigationController *navigationController; - -@end diff --git a/YakimbiTestUsingARC/YakimbiTest/AppDelegate.m b/YakimbiTestUsingARC/YakimbiTest/AppDelegate.m deleted file mode 100644 index 76c6f51..0000000 --- a/YakimbiTestUsingARC/YakimbiTest/AppDelegate.m +++ /dev/null @@ -1,54 +0,0 @@ -// -// AppDelegate.m -// YakimbiTest -// -// Created by Syed Arsalan Pervez on 2/16/13. -// Copyright (c) 2013 SAPLogix. All rights reserved. -// - -#import "AppDelegate.h" - -@implementation AppDelegate - -- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions -{ - self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; - // Override point for customization after application launch. - - MainViewController *_mainViewController = [MainViewController new]; - _navigationController = [[MyNavigationController alloc] initWithRootViewController:_mainViewController]; - - Log(@"Total %@", FORMAT_BYTES(268435456000)); - Log(@"Used %@", FORMAT_BYTES(380826907)); - Log(@"Available %@", FORMAT_BYTES(268054629093)); - - [_window setRootViewController:_navigationController]; - - self.window.backgroundColor = [UIColor whiteColor]; - [self.window makeKeyAndVisible]; - return YES; -} - -- (void)applicationWillResignActive:(UIApplication *)application -{ - // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. - // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game. -} - -- (void)applicationDidEnterBackground:(UIApplication *)application -{ - // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. - // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. -} - -- (void)applicationWillEnterForeground:(UIApplication *)application -{ - // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background. -} - -- (void)applicationDidBecomeActive:(UIApplication *)application -{ - // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. -} - -@end diff --git a/YakimbiTestUsingARC/YakimbiTest/Cells/FileViewCell.h b/YakimbiTestUsingARC/YakimbiTest/Cells/FileViewCell.h deleted file mode 100644 index 299faf7..0000000 --- a/YakimbiTestUsingARC/YakimbiTest/Cells/FileViewCell.h +++ /dev/null @@ -1,25 +0,0 @@ -// -// FileViewCell.h -// YakimbiTest -// -// Created by Syed Arsalan Pervez on 2/19/13. -// Copyright (c) 2013 SAPLogix. All rights reserved. -// - -#import -#import "FolderViewCell.h" - -@interface FileViewCell : FolderViewCell -{ - IBOutlet UILabel *_sharedByLabel; - IBOutlet UILabel *_sharedByLabel2; - IBOutlet UILabel *_fileCountLabel; - IBOutlet UILabel *_folderCountLabel; -} - -@property (readonly, nonatomic) UILabel *sharedByLabel; -@property (readonly, nonatomic) UILabel *sharedByLabel2; -@property (readonly, nonatomic) UILabel *fileCountLabel; -@property (readonly, nonatomic) UILabel *folderCountLabel; - -@end diff --git a/YakimbiTestUsingARC/YakimbiTest/Cells/FileViewCell.m b/YakimbiTestUsingARC/YakimbiTest/Cells/FileViewCell.m deleted file mode 100644 index 06b466f..0000000 --- a/YakimbiTestUsingARC/YakimbiTest/Cells/FileViewCell.m +++ /dev/null @@ -1,29 +0,0 @@ -// -// FileViewCell.m -// YakimbiTest -// -// Created by Syed Arsalan Pervez on 2/19/13. -// Copyright (c) 2013 SAPLogix. All rights reserved. -// - -#import "FileViewCell.h" - -@implementation FileViewCell - -- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier -{ - self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]; - if (self) { - // Initialization code - } - return self; -} - -- (void)setSelected:(BOOL)selected animated:(BOOL)animated -{ - [super setSelected:selected animated:animated]; - - // Configure the view for the selected state -} - -@end diff --git a/YakimbiTestUsingARC/YakimbiTest/Cells/FileViewCell.xib b/YakimbiTestUsingARC/YakimbiTest/Cells/FileViewCell.xib deleted file mode 100644 index 75f0d8f..0000000 --- a/YakimbiTestUsingARC/YakimbiTest/Cells/FileViewCell.xib +++ /dev/null @@ -1,456 +0,0 @@ - - - - 1552 - 11G63 - 3084 - 1138.51 - 569.00 - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 2083 - - - IBProxyObject - IBUIImageView - IBUILabel - IBUITableViewCell - - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - PluginDependencyRecalculationVersion - - - - - IBFilesOwner - IBCocoaTouchFramework - - - IBFirstResponder - IBCocoaTouchFramework - - - - 292 - - - - 256 - - - - 292 - {{92, 8}, {205, 21}} - - - - _NS:9 - NO - YES - 7 - NO - IBCocoaTouchFramework - <name> - - 1 - MCAwIDAAA - darkTextColor - - - 3 - MQA - - 0 - - 2 - 17 - - - Helvetica-Bold - 17 - 16 - - NO - - - - 292 - {{92, 30}, {205, 21}} - - - - _NS:9 - NO - YES - 7 - NO - IBCocoaTouchFramework - <path> - - - 0 - - 1 - 12 - - - Helvetica - 12 - 16 - - NO - - - - 292 - {{92, 50}, {205, 21}} - - - - _NS:9 - NO - YES - 7 - NO - IBCocoaTouchFramework - <by> - - - 0 - - - NO - - - - 292 - {{92, 69}, {205, 21}} - - - - _NS:9 - NO - YES - 7 - NO - IBCocoaTouchFramework - <by> - - - 0 - - - NO - - - - 292 - {{4, 72}, {81, 21}} - - - - _NS:9 - NO - YES - 7 - NO - IBCocoaTouchFramework - <by> - - - 0 - 1 - - 1 - 11 - - - Helvetica - 11 - 16 - - NO - - - - 292 - {{4, 52}, {81, 21}} - - - - _NS:9 - NO - YES - 7 - NO - IBCocoaTouchFramework - <by> - - - 0 - 1 - - - NO - - - - 292 - {{4, -2}, {81, 58}} - - - - _NS:9 - 1 - NO - IBCocoaTouchFramework - - NSImage - Purple_Folder.png - - - - {300, 96} - - - - _NS:11 - - 3 - MCAwAA - - NO - YES - 4 - YES - IBCocoaTouchFramework - - - {320, 97} - - - - _NS:9 - IBCocoaTouchFramework - 1 - - FileCell - - - - - - - - _nameLabel - - - - 50 - - - - _pathLabel - - - - 51 - - - - _sharedByLabel - - - - 52 - - - - _fileCountLabel - - - - 53 - - - - _folderCountLabel - - - - 54 - - - - _sharedByLabel2 - - - - 56 - - - - - - 0 - - - - - - -1 - - - File's Owner - - - -2 - - - - - 2 - - - - - - - - - - - - - - 3 - - - - - - 8 - - - - - - 15 - - - - - - 45 - - - - - 46 - - - - - 49 - - - - - 55 - - - - - - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIResponder - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - FileViewCell - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - - - - 70 - - - - - FileViewCell - FolderViewCell - - UILabel - UILabel - UILabel - UILabel - - - - _fileCountLabel - UILabel - - - _folderCountLabel - UILabel - - - _sharedByLabel - UILabel - - - _sharedByLabel2 - UILabel - - - - IBProjectSource - ./Classes/FileViewCell.h - - - - FolderViewCell - UITableViewCell - - UILabel - UILabel - - - - _nameLabel - UILabel - - - _pathLabel - UILabel - - - - IBProjectSource - ./Classes/FolderViewCell.h - - - - - 0 - IBCocoaTouchFramework - YES - 3 - - Purple_Folder.png - {512, 512} - - 2083 - - diff --git a/YakimbiTestUsingARC/YakimbiTest/Cells/FileViewCell_iPad.xib b/YakimbiTestUsingARC/YakimbiTest/Cells/FileViewCell_iPad.xib deleted file mode 100644 index 7f2df25..0000000 --- a/YakimbiTestUsingARC/YakimbiTest/Cells/FileViewCell_iPad.xib +++ /dev/null @@ -1,452 +0,0 @@ - - - - 1552 - 11G63 - 3084 - 1138.51 - 569.00 - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 2083 - - - IBProxyObject - IBUIImageView - IBUILabel - IBUITableViewCell - - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - PluginDependencyRecalculationVersion - - - - - IBFilesOwner - IBIPadFramework - - - IBFirstResponder - IBIPadFramework - - - - 292 - - - - 256 - - - - 292 - {{92, 8}, {656, 21}} - - - - _NS:9 - NO - YES - 7 - NO - IBIPadFramework - <name> - - 1 - MCAwIDAAA - darkTextColor - - - 3 - MQA - - 0 - - 2 - 17 - - - Helvetica-Bold - 17 - 16 - - NO - - - - 292 - {{92, 30}, {656, 21}} - - - - _NS:9 - NO - YES - 7 - NO - IBIPadFramework - <path> - - - 0 - - 1 - 12 - - - Helvetica - 12 - 16 - - NO - - - - 292 - {{92, 50}, {656, 21}} - - - - _NS:9 - NO - YES - 7 - NO - IBIPadFramework - <by> - - - 0 - - - NO - - - - 292 - {{92, 69}, {655, 21}} - - - _NS:9 - NO - YES - 7 - NO - IBIPadFramework - <by> - - - 0 - - - NO - - - - 292 - {{4, 72}, {81, 21}} - - - - _NS:9 - NO - YES - 7 - NO - IBIPadFramework - <by> - - - 0 - 1 - - - NO - - - - 292 - {{4, 52}, {81, 21}} - - - - _NS:9 - NO - YES - 7 - NO - IBIPadFramework - <by> - - - 0 - 1 - - - NO - - - - 292 - {{4, -2}, {81, 58}} - - - - _NS:9 - 1 - NO - IBIPadFramework - - NSImage - Purple_Folder.png - - - - {748, 96} - - - - _NS:11 - - 3 - MCAwAA - - NO - YES - 4 - YES - IBCocoaTouchFramework - - - {768, 97} - - - - _NS:9 - IBIPadFramework - 1 - - FileCell - - - - - - - - _nameLabel - - - - 10 - - - - _pathLabel - - - - 11 - - - - _sharedByLabel - - - - 12 - - - - _fileCountLabel - - - - 13 - - - - _folderCountLabel - - - - 14 - - - - _sharedByLabel2 - - - - 15 - - - - - - 0 - - - - - - -1 - - - File's Owner - - - -2 - - - - - 2 - - - - - - - - - - - - - - 3 - - - - - - 4 - - - - - - 5 - - - - - - 6 - - - - - - 7 - - - - - - 8 - - - - - - 9 - - - - - - - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIResponder - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - FileViewCell - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - - - - 42 - - - - - FileViewCell - FolderViewCell - - UILabel - UILabel - UILabel - UILabel - - - - _fileCountLabel - UILabel - - - _folderCountLabel - UILabel - - - _sharedByLabel - UILabel - - - _sharedByLabel2 - UILabel - - - - IBProjectSource - ./Classes/FileViewCell.h - - - - FolderViewCell - UITableViewCell - - UILabel - UILabel - - - - _nameLabel - UILabel - - - _pathLabel - UILabel - - - - IBProjectSource - ./Classes/FolderViewCell.h - - - - - 0 - IBIPadFramework - YES - 3 - - Purple_Folder.png - {512, 512} - - 2083 - - diff --git a/YakimbiTestUsingARC/YakimbiTest/Cells/FolderViewCell.h b/YakimbiTestUsingARC/YakimbiTest/Cells/FolderViewCell.h deleted file mode 100644 index a6cf07c..0000000 --- a/YakimbiTestUsingARC/YakimbiTest/Cells/FolderViewCell.h +++ /dev/null @@ -1,20 +0,0 @@ -// -// FolderViewCell.h -// YakimbiTest -// -// Created by Syed Arsalan Pervez on 2/19/13. -// Copyright (c) 2013 SAPLogix. All rights reserved. -// - -#import - -@interface FolderViewCell : UITableViewCell -{ - IBOutlet UILabel *_nameLabel; - IBOutlet UILabel *_pathLabel; -} - -@property (readonly, nonatomic) UILabel *nameLabel; -@property (readonly, nonatomic) UILabel *pathLabel; - -@end diff --git a/YakimbiTestUsingARC/YakimbiTest/Cells/FolderViewCell.m b/YakimbiTestUsingARC/YakimbiTest/Cells/FolderViewCell.m deleted file mode 100644 index ab2ecdb..0000000 --- a/YakimbiTestUsingARC/YakimbiTest/Cells/FolderViewCell.m +++ /dev/null @@ -1,13 +0,0 @@ -// -// FolderViewCell.m -// YakimbiTest -// -// Created by Syed Arsalan Pervez on 2/19/13. -// Copyright (c) 2013 SAPLogix. All rights reserved. -// - -#import "FolderViewCell.h" - -@implementation FolderViewCell - -@end diff --git a/YakimbiTestUsingARC/YakimbiTest/Cells/FolderViewCell.xib b/YakimbiTestUsingARC/YakimbiTest/Cells/FolderViewCell.xib deleted file mode 100644 index 374c4ee..0000000 --- a/YakimbiTestUsingARC/YakimbiTest/Cells/FolderViewCell.xib +++ /dev/null @@ -1,270 +0,0 @@ - - - - 1552 - 11G63 - 3084 - 1138.51 - 569.00 - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 2083 - - - IBProxyObject - IBUIImageView - IBUILabel - IBUITableViewCell - - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - PluginDependencyRecalculationVersion - - - - - IBFilesOwner - IBCocoaTouchFramework - - - IBFirstResponder - IBCocoaTouchFramework - - - - 292 - - - - 256 - - - - 292 - {{92, 8}, {224, 21}} - - - - _NS:9 - NO - YES - 7 - NO - IBCocoaTouchFramework - <name> - - 1 - MCAwIDAAA - darkTextColor - - - 3 - MQA - - 0 - - 2 - 17 - - - Helvetica-Bold - 17 - 16 - - NO - - - - 292 - {{92, 30}, {224, 21}} - - - _NS:9 - NO - YES - 7 - NO - IBCocoaTouchFramework - <path> - - - 0 - - 1 - 12 - - - Helvetica - 12 - 16 - - NO - - - - 292 - {{4, -2}, {81, 58}} - - - - _NS:9 - 1 - NO - IBCocoaTouchFramework - - NSImage - Purple_Folder.png - - - - {300, 56} - - - - _NS:11 - - 3 - MCAwAA - - NO - YES - 4 - YES - IBCocoaTouchFramework - - - {320, 57} - - - - _NS:9 - IBCocoaTouchFramework - 1 - - FolderCell - - - - - - - - _nameLabel - - - - 7 - - - - _pathLabel - - - - 8 - - - - - - 0 - - - - - - -1 - - - File's Owner - - - -2 - - - - - 3 - - - - - - - - - - 4 - - - - - - 5 - - - - - - 6 - - - - - - - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIResponder - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - FolderViewCell - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - - - - 19 - - - - - FolderViewCell - UITableViewCell - - UILabel - UILabel - - - - _nameLabel - UILabel - - - _pathLabel - UILabel - - - - IBProjectSource - ./Classes/FolderViewCell.h - - - - - 0 - IBCocoaTouchFramework - YES - 3 - - Purple_Folder.png - {512, 512} - - 2083 - - diff --git a/YakimbiTestUsingARC/YakimbiTest/Cells/FolderViewCell_iPad.xib b/YakimbiTestUsingARC/YakimbiTest/Cells/FolderViewCell_iPad.xib deleted file mode 100644 index 34ebd82..0000000 --- a/YakimbiTestUsingARC/YakimbiTest/Cells/FolderViewCell_iPad.xib +++ /dev/null @@ -1,271 +0,0 @@ - - - - 1552 - 11G63 - 3084 - 1138.51 - 569.00 - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 2083 - - - IBProxyObject - IBUIImageView - IBUILabel - IBUITableViewCell - - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - PluginDependencyRecalculationVersion - - - - - IBFilesOwner - IBIPadFramework - - - IBFirstResponder - IBIPadFramework - - - - 292 - - - - 256 - - - - 292 - {{92, 8}, {636, 21}} - - - - _NS:9 - NO - YES - 7 - NO - IBIPadFramework - <name> - - 1 - MCAwIDAAA - darkTextColor - - - 3 - MQA - - 0 - - 2 - 17 - - - Helvetica-Bold - 17 - 16 - - NO - - - - 292 - {{92, 30}, {636, 21}} - - - - _NS:9 - NO - YES - 7 - NO - IBIPadFramework - <path> - - - 0 - - 1 - 12 - - - Helvetica - 12 - 16 - - NO - - - - 292 - {{4, -2}, {81, 58}} - - - - _NS:9 - 1 - NO - IBIPadFramework - - NSImage - Purple_Folder.png - - - - {748, 56} - - - - _NS:11 - - 3 - MCAwAA - - NO - YES - 4 - YES - IBCocoaTouchFramework - - - {768, 57} - - - - _NS:9 - IBIPadFramework - 1 - - FolderCell - - - - - - - - _nameLabel - - - - 8 - - - - _pathLabel - - - - 9 - - - - - - 0 - - - - - - -1 - - - File's Owner - - - -2 - - - - - 4 - - - - - - - - - - 5 - - - - - - 6 - - - - - - 7 - - - - - - - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIResponder - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - FolderViewCell - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - - - - 26 - - - - - FolderViewCell - UITableViewCell - - UILabel - UILabel - - - - _nameLabel - UILabel - - - _pathLabel - UILabel - - - - IBProjectSource - ./Classes/FolderViewCell.h - - - - - 0 - IBIPadFramework - YES - 3 - - Purple_Folder.png - {512, 512} - - 2083 - - diff --git a/YakimbiTestUsingARC/YakimbiTest/Custom/MyNavigationController.h b/YakimbiTestUsingARC/YakimbiTest/Custom/MyNavigationController.h deleted file mode 100644 index 0dfdae0..0000000 --- a/YakimbiTestUsingARC/YakimbiTest/Custom/MyNavigationController.h +++ /dev/null @@ -1,13 +0,0 @@ -// -// MyNavigationController.h -// YakimbiTest -// -// Created by Syed Arsalan Pervez on 2/19/13. -// Copyright (c) 2013 SAPLogix. All rights reserved. -// - -#import - -@interface MyNavigationController : UINavigationController - -@end diff --git a/YakimbiTestUsingARC/YakimbiTest/Custom/MyNavigationController.m b/YakimbiTestUsingARC/YakimbiTest/Custom/MyNavigationController.m deleted file mode 100644 index bf50067..0000000 --- a/YakimbiTestUsingARC/YakimbiTest/Custom/MyNavigationController.m +++ /dev/null @@ -1,27 +0,0 @@ -// -// MyNavigationController.m -// YakimbiTest -// -// Created by Syed Arsalan Pervez on 2/19/13. -// Copyright (c) 2013 SAPLogix. All rights reserved. -// - -#import "MyNavigationController.h" - -@interface MyNavigationController () - -@end - -@implementation MyNavigationController - -- (BOOL)shouldAutorotate -{ - return YES; -} - -- (NSUInteger)supportedInterfaceOrientations -{ - return UIInterfaceOrientationMaskAll; -} - -@end diff --git a/YakimbiTestUsingARC/YakimbiTest/DB Files/File.h b/YakimbiTestUsingARC/YakimbiTest/DB Files/File.h deleted file mode 100644 index 0349df1..0000000 --- a/YakimbiTestUsingARC/YakimbiTest/DB Files/File.h +++ /dev/null @@ -1,39 +0,0 @@ -// -// File.h -// YakimbiTest -// -// Created by Syed Arsalan Pervez on 2/18/13. -// Copyright (c) 2013 SAPLogix. All rights reserved. -// - -#import -#import - -@class Folder; - -@interface File : NSManagedObject - -@property (nonatomic, retain) NSString * isShared; -@property (nonatomic, retain) NSString * status; -@property (nonatomic, retain) NSString * shareId; -@property (nonatomic, retain) NSNumber * userId; -@property (nonatomic, retain) NSString * name; -@property (nonatomic, retain) NSNumber * sharedBy; -@property (nonatomic, retain) NSString * createdDate; -@property (nonatomic, retain) NSString * sharedDate; -@property (nonatomic, retain) NSNumber * shareLevel; -@property (nonatomic, retain) NSNumber * parentId; -@property (nonatomic, retain) NSString * lastUpdatedDate; -@property (nonatomic, retain) NSString * lastUpdatedBy; -@property (nonatomic, retain) NSString * link; -@property (nonatomic, retain) NSString * transType; -@property (nonatomic, retain) NSNumber * itemId; -@property (nonatomic, retain) NSString * path; -@property (nonatomic, retain) NSString * pathById; -@property (nonatomic, retain) NSString * type; -@property (nonatomic, retain) NSString * mimeType; -@property (nonatomic, retain) NSNumber * size; -@property (nonatomic, retain) NSNumber * hidden; -@property (nonatomic, retain) Folder *folder; - -@end diff --git a/YakimbiTestUsingARC/YakimbiTest/DB Files/File.m b/YakimbiTestUsingARC/YakimbiTest/DB Files/File.m deleted file mode 100644 index e802265..0000000 --- a/YakimbiTestUsingARC/YakimbiTest/DB Files/File.m +++ /dev/null @@ -1,38 +0,0 @@ -// -// File.m -// YakimbiTest -// -// Created by Syed Arsalan Pervez on 2/18/13. -// Copyright (c) 2013 SAPLogix. All rights reserved. -// - -#import "File.h" -#import "Folder.h" - - -@implementation File - -@dynamic isShared; -@dynamic status; -@dynamic shareId; -@dynamic userId; -@dynamic name; -@dynamic sharedBy; -@dynamic createdDate; -@dynamic sharedDate; -@dynamic shareLevel; -@dynamic parentId; -@dynamic lastUpdatedDate; -@dynamic lastUpdatedBy; -@dynamic link; -@dynamic transType; -@dynamic itemId; -@dynamic path; -@dynamic pathById; -@dynamic type; -@dynamic mimeType; -@dynamic size; -@dynamic hidden; -@dynamic folder; - -@end diff --git a/YakimbiTestUsingARC/YakimbiTest/DB Files/Folder.h b/YakimbiTestUsingARC/YakimbiTest/DB Files/Folder.h deleted file mode 100644 index a628e29..0000000 --- a/YakimbiTestUsingARC/YakimbiTest/DB Files/Folder.h +++ /dev/null @@ -1,29 +0,0 @@ -// -// Folder.h -// YakimbiTest -// -// Created by Syed Arsalan Pervez on 2/18/13. -// Copyright (c) 2013 SAPLogix. All rights reserved. -// - -#import -#import - -@class File, User; - -@interface Folder : NSManagedObject - -@property (nonatomic, retain) NSString * name; -@property (nonatomic, retain) NSString * fid; -@property (nonatomic, retain) NSSet *files; -@property (nonatomic, retain) User *user; -@end - -@interface Folder (CoreDataGeneratedAccessors) - -- (void)addFilesObject:(File *)value; -- (void)removeFilesObject:(File *)value; -- (void)addFiles:(NSSet *)values; -- (void)removeFiles:(NSSet *)values; - -@end diff --git a/YakimbiTestUsingARC/YakimbiTest/DB Files/Folder.m b/YakimbiTestUsingARC/YakimbiTest/DB Files/Folder.m deleted file mode 100644 index 6cec647..0000000 --- a/YakimbiTestUsingARC/YakimbiTest/DB Files/Folder.m +++ /dev/null @@ -1,21 +0,0 @@ -// -// Folder.m -// YakimbiTest -// -// Created by Syed Arsalan Pervez on 2/18/13. -// Copyright (c) 2013 SAPLogix. All rights reserved. -// - -#import "Folder.h" -#import "File.h" -#import "User.h" - - -@implementation Folder - -@dynamic name; -@dynamic fid; -@dynamic files; -@dynamic user; - -@end diff --git a/YakimbiTestUsingARC/YakimbiTest/DB Files/User.h b/YakimbiTestUsingARC/YakimbiTest/DB Files/User.h deleted file mode 100644 index e08e260..0000000 --- a/YakimbiTestUsingARC/YakimbiTest/DB Files/User.h +++ /dev/null @@ -1,34 +0,0 @@ -// -// User.h -// YakimbiTest -// -// Created by Syed Arsalan Pervez on 2/18/13. -// Copyright (c) 2013 SAPLogix. All rights reserved. -// - -#import -#import - -@class Folder; - -@interface User : NSManagedObject - -@property (nonatomic, retain) NSNumber * totalSpace; -@property (nonatomic, retain) NSNumber * lastRevId; -@property (nonatomic, retain) NSNumber * usedSpace; -@property (nonatomic, retain) NSNumber * availableSpace; -@property (nonatomic, retain) NSString * mode; -@property (nonatomic, retain) NSNumber * pendingRequests; -@property (nonatomic, retain) NSNumber * revId; -@property (nonatomic, retain) NSDate * lastUpdated; -@property (nonatomic, retain) NSSet *folders; -@end - -@interface User (CoreDataGeneratedAccessors) - -- (void)addFoldersObject:(Folder *)value; -- (void)removeFoldersObject:(Folder *)value; -- (void)addFolders:(NSSet *)values; -- (void)removeFolders:(NSSet *)values; - -@end diff --git a/YakimbiTestUsingARC/YakimbiTest/DB Files/User.m b/YakimbiTestUsingARC/YakimbiTest/DB Files/User.m deleted file mode 100644 index e562e05..0000000 --- a/YakimbiTestUsingARC/YakimbiTest/DB Files/User.m +++ /dev/null @@ -1,25 +0,0 @@ -// -// User.m -// YakimbiTest -// -// Created by Syed Arsalan Pervez on 2/18/13. -// Copyright (c) 2013 SAPLogix. All rights reserved. -// - -#import "User.h" -#import "Folder.h" - - -@implementation User - -@dynamic totalSpace; -@dynamic lastRevId; -@dynamic usedSpace; -@dynamic availableSpace; -@dynamic mode; -@dynamic pendingRequests; -@dynamic revId; -@dynamic lastUpdated; -@dynamic folders; - -@end diff --git a/YakimbiTestUsingARC/YakimbiTest/Database/DatabaseHandler.h b/YakimbiTestUsingARC/YakimbiTest/Database/DatabaseHandler.h deleted file mode 100755 index b4922e2..0000000 --- a/YakimbiTestUsingARC/YakimbiTest/Database/DatabaseHandler.h +++ /dev/null @@ -1,57 +0,0 @@ -// -// DatabaseHandler.h -// -// -// Created by Syed Arsalan Pervez on 8/2/11. -// Copyright 2011 SAPLogix. All rights reserved. -// - -#import -#import - -#define DBHandler [DatabaseHandler sharedHandler] - -@interface DatabaseHandler : NSObject -{ - __strong NSManagedObjectContext *_manageContext; - __strong NSPersistentStoreCoordinator *_storeCordinator; - __strong NSPersistentStore *_persistentStore; -} - -@property (readonly, nonatomic) NSManagedObjectContext *_manageContext; - -// Insert Records -- (BOOL) insertObject:(id)manageObject; -- (BOOL) insertObject:(id)manageObject andSave:(BOOL)save; - -// Delete Object -- (BOOL) deleteObject:(id)manageObject; -- (BOOL) deleteObject:(id)manageObject andSave:(BOOL)save; - -// Fetch Records -- (id) fetchObjectsOfEntity:(NSString *)entity; -- (id) fetchObjectsOfEntity:(NSString *)entity withExpressionDescription:(NSArray *)expDesc; -- (id) fetchObjectsOfEntity:(NSString *)entity usingPredicate:(NSPredicate *)predicate; -- (id) fetchObjectsOfEntity:(NSString *)entity usingPredicate:(NSPredicate *)predicate uniqueResult:(BOOL)unique; -- (id) fetchObjectsOfEntity:(NSString *)entity usingPredicate:(NSPredicate *)predicate withSortDescriptors:(NSArray *)sortDesc withExpressionDescription:(NSArray *)expDesc withResultType:(NSFetchRequestResultType)resultType; -- (id) fetchObjectsOfEntity:(NSString *)entity usingPredicate:(NSPredicate *)predicate withSortDescriptors:(NSArray *)sortDesc withExpressionDescription:(NSArray *)expDesc withResultType:(NSFetchRequestResultType)resultType uniqueResult:(BOOL)unique; - -// Get Entity Description -- (NSEntityDescription *) entityDescriptionForName:(NSString *)name; - -// Save Context -- (BOOL) saveContext; - -// Singleton Accessor -+ (DatabaseHandler *) sharedHandler; -+ (void)deleteSQLiteFile; - -// ManageObject for Entity -- (id) manageObjectForEntity:(id)entityName; -- (id) manageObjectForEntity:(id)entityName autorelease:(BOOL)autorelease; - -// Undo & Redo -- (BOOL) undoChanges; -- (BOOL) redoChanges; - -@end diff --git a/YakimbiTestUsingARC/YakimbiTest/Database/DatabaseHandler.m b/YakimbiTestUsingARC/YakimbiTest/Database/DatabaseHandler.m deleted file mode 100755 index 44e625f..0000000 --- a/YakimbiTestUsingARC/YakimbiTest/Database/DatabaseHandler.m +++ /dev/null @@ -1,315 +0,0 @@ -// -// DatabaseHandler.m -// -// -// Created by Syed Arsalan Pervez on 8/2/11. -// Copyright 2011 SAPLogix. All rights reserved. -// - -#import "DatabaseHandler.h" - -// Toggle to clear db on startup -static const BOOL SQLITE_TESTING = NO; - -// Changed to match the user model fileaname -static NSString *SQLITE_FILE = @"YakimbiTest.sqlite"; -static NSString *SQLITE_FILE_NAME = @"YakimbiTest"; - -// Should not be changed -//static NSString *SQLITE_FILE_EXT = @"sqlite"; -static NSString *COREDATA_DATAMODEL_EXT = @"momd"; - - -@implementation DatabaseHandler - -@synthesize _manageContext; - -static DatabaseHandler *sharedObject; - -- (id) initWithDBName:(NSString *)name FileName:(NSString *)file -{ - self = [super init]; - if (self) - { - NSError *error = nil; - -// if (SQLITE_TESTING) -// { -// if ([[NSFileManager defaultManager] fileExistsAtPath:[[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0] stringByAppendingPathComponent:file]]) -// { -// [[NSFileManager defaultManager] removeItemAtPath:[[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0] stringByAppendingPathComponent:file] error:&error]; -// -// if (error) -// Log(@"Error: %@", error); -// -// error = nil; -// } -// } -// -// if (![[NSFileManager defaultManager] fileExistsAtPath:[[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0] stringByAppendingPathComponent:file]]) -// { -// [[NSFileManager defaultManager] copyItemAtPath:[[NSBundle mainBundle] pathForResource:name ofType:SQLITE_FILE_EXT] toPath:[[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0] stringByAppendingPathComponent:file] error:&error]; -// -// if (error) -// Log(@"Error: %@", error); -// -// error = nil; -// } - - NSManagedObjectModel *_model = [[NSManagedObjectModel alloc] initWithContentsOfURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:name ofType:COREDATA_DATAMODEL_EXT]]]; - - NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys: - [NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption, - [NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption, - nil]; - - _storeCordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:_model]; - error = nil; - if ([_storeCordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:[NSURL fileURLWithPath:[[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0] stringByAppendingPathComponent:file]] options:options error:&error]) - { - _manageContext = [[NSManagedObjectContext alloc] init]; - [_manageContext setPersistentStoreCoordinator:_storeCordinator]; - } - else - { - Log(@"Error %@", error); - } - } - - return self; -} - -+ (DatabaseHandler *) sharedHandler -{ - @synchronized(sharedObject) - { - if (!sharedObject) - { - sharedObject = [[DatabaseHandler alloc] initWithDBName:SQLITE_FILE_NAME FileName:SQLITE_FILE]; - } - } - - return sharedObject; -} - -- (id) manageObjectForEntity:(id)entityName -{ - return [self manageObjectForEntity:entityName autorelease:YES]; -} - -- (id) manageObjectForEntity:(id)entityName autorelease:(BOOL)autorelease -{ - if ([entityName isKindOfClass:[NSString class]]) - { - Class cls = NSClassFromString(entityName); - - id _manageObject = [[cls alloc] initWithEntity:[NSEntityDescription entityForName:entityName inManagedObjectContext:[DBHandler _manageContext]] insertIntoManagedObjectContext:[DBHandler _manageContext]]; - - return _manageObject; - } - - return nil; -} - -#pragma mark -#pragma mark Undo & Redo - -// Does a rollback -- (BOOL) undoChanges -{ - if ([_manageContext tryLock]) - { - [_manageContext rollback]; - [_manageContext unlock]; - - return YES; - } - - return NO; -} - -- (BOOL) redoChanges -{ - if ([_manageContext tryLock]) - { - [_manageContext redo]; - [_manageContext unlock]; - - return YES; - } - - return NO; -} - -#pragma mark -#pragma mark Insert Record - -/* - - Insert Record - - */ - -- (BOOL) insertObject:(id)manageObject -{ - return [self insertObject:manageObject andSave:NO]; -} - -- (BOOL) insertObject:(id)manageObject andSave:(BOOL)save -{ - [_manageContext insertObject:manageObject]; - - if (save) - { - return [self saveContext]; - } - else - return true; - - return false; -} - -#pragma mark -#pragma mark Delete Record - -/* - - Delete Record - - */ - -- (BOOL) deleteObject:(id)manageObject -{ - return [self deleteObject:manageObject andSave:NO]; -} - -- (BOOL) deleteObject:(id)manageObject andSave:(BOOL)save -{ - [_manageContext deleteObject:manageObject]; - - if (save) - { - return [self saveContext]; - } - else - return true; - - return false; -} - -#pragma mark -#pragma mark Save Record - -/* - - Save Record - - */ - -- (BOOL) saveContext -{ - NSError *error = nil; - if (![_manageContext save:&error]) - { - Log(@"Error: %@", error); - - return false; - } - - return true; -} - -#pragma mark -#pragma mark Fetch Records - -- (id) fetchObjectsOfEntity:(NSString *)entity -{ - return [self fetchObjectsOfEntity:entity usingPredicate:nil withSortDescriptors:nil withExpressionDescription:nil withResultType:NSManagedObjectResultType]; -} - -- (id) fetchObjectsOfEntity:(NSString *)entity withExpressionDescription:(NSArray *)expDesc -{ - return [self fetchObjectsOfEntity:entity usingPredicate:nil withSortDescriptors:nil withExpressionDescription:expDesc withResultType:NSDictionaryResultType]; -} - -- (id) fetchObjectsOfEntity:(NSString *)entity usingPredicate:(NSPredicate *)predicate -{ - return [self fetchObjectsOfEntity:entity usingPredicate:predicate withSortDescriptors:nil withExpressionDescription:nil withResultType:NSManagedObjectResultType]; -} - -- (id) fetchObjectsOfEntity:(NSString *)entity usingPredicate:(NSPredicate *)predicate uniqueResult:(BOOL)unique -{ - return [self fetchObjectsOfEntity:entity usingPredicate:predicate withSortDescriptors:nil withExpressionDescription:nil withResultType:NSManagedObjectResultType uniqueResult:unique]; -} - -- (id) fetchObjectsOfEntity:(NSString *)entity usingPredicate:(NSPredicate *)predicate withSortDescriptors:(NSArray *)sortDesc withExpressionDescription:(NSArray *)expDesc withResultType:(NSFetchRequestResultType)resultType -{ - return [self fetchObjectsOfEntity:entity usingPredicate:predicate withSortDescriptors:sortDesc withExpressionDescription:expDesc withResultType:resultType uniqueResult:NO]; -} - -- (id) fetchObjectsOfEntity:(NSString *)entity usingPredicate:(NSPredicate *)predicate withSortDescriptors:(NSArray *)sortDesc withExpressionDescription:(NSArray *)expDesc withResultType:(NSFetchRequestResultType)resultType uniqueResult:(BOOL)unique -{ - NSFetchRequest *_request = nil; - NSArray *objects = nil; - NSError *error = nil; - - @try - { - _request = [[NSFetchRequest alloc] init]; - [_request setEntity:[NSEntityDescription entityForName:entity inManagedObjectContext:_manageContext]]; - - if (predicate) - [_request setPredicate:predicate]; // Predicate - - if (sortDesc) - [_request setSortDescriptors:sortDesc]; // Sort Descriptors - - if (expDesc) - [_request setPropertiesToFetch:expDesc]; // Expression Descriptions (for using aggregate functions in CoreData) - - [_request setResultType:resultType]; - - if (unique) - [_request setReturnsDistinctResults:unique]; - - objects = [_manageContext executeFetchRequest:_request error:&error]; - } - @catch(NSException *ex) - { - Log(@"Fetch Exception: %@", ex); - } - @finally - { - if (!error) - { - return objects; - } - else - { - Log(@"Fetch Error: %@", error); - } - } - - // show fetch error - - return nil; -} - -- (NSEntityDescription *) entityDescriptionForName:(NSString *)name -{ - return [NSEntityDescription entityForName:name inManagedObjectContext:_manageContext]; -} - -#pragma mark -#pragma mark Memory Management - -+ (void)deleteSQLiteFile -{ - NSString *path = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0] stringByAppendingPathComponent:SQLITE_FILE]; - if ([[NSFileManager defaultManager] fileExistsAtPath:path]) - { - [[NSFileManager defaultManager] removeItemAtPath:path error:nil]; - } -} - -@end diff --git a/YakimbiTestUsingARC/YakimbiTest/Default-568h@2x.png b/YakimbiTestUsingARC/YakimbiTest/Default-568h@2x.png deleted file mode 100644 index 0891b7aabfcf3422423b109c8beed2bab838c607..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18594 zcmeI4X;f257Jx&9fS`ixvS;&$x8J@slQFSel)6zJN=?13FB7H(lQjRkSy8x_-S~tvu2gzn1oS+dLcF#eqtq$ z%tf9TTvX?`)R@}3uBI;jzS-=ZR-Td&MHaS&;!0?Ni*#$#`n*~CcQK)Q9vAQ~TUpnI!j)a2biYK^R)M~A5wUDZhx?ULMX z3x1P&qt=trOY6P2U67L=m=U?F|5#Uj(eCueNTZaHs_ceWiHeET+j+tp3Jt9g(ekqP z2WOvfR{qV+9r+o4J5?qK>7;;^+I7tGv-i)es$X_D=EoKF+S?zsyj^oRFElP}c}JT< zd8SUs-?O?}2YD#ngKbnHgzHBcboxK_2r9l(?eNCl-pEzkJm}fY?WC*jnS?VBE4EpY zO$fEejz6fU;W2Kl>JeQBZBl-%Irg`obSlg*@4QB;Dd1H7^Oi5wvt4d{RZ!8Og?^aE z)k0$1g+V3fd(gdQ3d&q2q-FL*uy#}|bc^=VhFsl0jBgUGJ+-s3U8MK9A!YJJMxpci z5hJ%|{DwV48fZn0{n5l$N_KcSb#NKE4plB`9I6Zt=Z!~-zw0{9tg$L&Ju1F0X)Cy8 zKF;(&lJ>x)Jw(=;p~sF(Sd9VWGwFE2rnyS9!f^DZ8+aCLq zQ};>lcJ1GDLqjm6Hd>|Eabno@P`~Bn(~6^aD_#yoEH(a?Nm1S<;S+hSxI5d16^<1lEM3NPFi zkqPrpL)+ zgnseFikg`gJVBha1&7C4;O6>h=dt~`ND+;Zd?W(4v2JIb7Pt>Td42%M-Ju-XAH#Pns762L}K3 zDhvsRqN0Ni(1UrishD2YvV?4*h2iFj$+&N||Fn$4n|^NSU+o?~jq`0jVQt8T9l{7b zXiwwODFh2V!Q6sqP9S>WH$oOf$N~=d0-bqTlD61!=`&0eAP-F>XN?*|gtOXX{ zQVTWyYo4ZK0GAw!GHf|pz9`D;-bbb*5LBX*{bnz|+)$@&P9|ORM2o?95{;ejvo&r- zq8cBhTN6nn)7~W>54U)%-F_-b?YKdfk5I8MHcuzBD5)!;yv#Z&R&^y=@=>VTIMy#r zX&U<=BsPkdqcMe<_}2+>H%XKyrr5ZR8_KVe>ZqYN z^=^~TFD};;rHJ$U;{~w^hYojl4hRI@SH$^K{YEo=sg)WY87r!*7blQK&qnpDo0`Vn zkl)9u9g=mCh&ZCJS(L4yN3k0kQ zuvg$h2KEEk51T+O0JQ+r0`R>g{jvqM0Mr6d3qUOZwE!?PI7HY@CE|dr sfw?Q;rAv?G4&^^8-z_>&sWXMxvD*gPOU4CBe-*@OtE+wfmVJNyHv)PfH~;_u diff --git a/YakimbiTestUsingARC/YakimbiTest/Default.png b/YakimbiTestUsingARC/YakimbiTest/Default.png deleted file mode 100644 index 4c8ca6f693f96d511e9113c0eb59eec552354e42..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6540 zcmeAS@N?(olHy`uVBq!ia0y~yU~~ZD2OMlbkt;o0To@QwR5G2N13aCb6#|O#(=u~X z85k@CTSM>X-wqM6>&y>YB4)1;;ojbLbbV-W^iFB1wa3^zCog^LCAReC4K0-?R_2{6 zrP*)4+_uWUy3w5N52M3PW_}MFMP9a~>YLvVZ1D_k*IMQ2QT^fwzoOb(*3gH$%aYWC zkHmcab=va2<#X%jakpJ;<1@F;k__#bwtC&%^D0v(FBh9K&$sK+<}2RJS609D)17$w ztdQP8(eLM8Ka}m_IQ@3wyMKP)l=oM4-?`YS_*P?4V_ORLPxsj&7Ju#kH;>6^Kp?T7~ zl+q?{UOOqV==?+d{=)5s|M~T1mwtH@+Z^$G&eEO9JNP^AX@3jZ*J*!!>lc|1-W%fA z@AOQpXZ_Lt>rxFXrGp*zLPiW@uo_c7C{As>j zWeX)wi+LTp_)@KYZCX{j;H?|1yXT4DnlS(Fr8gyP5|uaX_gLvaW0ScZdnG7o+u{T6 zFI-%d{ls*WuCDa5UJ@|RXv&ejZe}*BMkiWY51&pnRPw(hlykSzvj6e%mYz-GdvzBD zF10?szF_~!jS=?2HyQuPCvARXAe}C}WP|yQ*>5~~=*Nxq8+HHW1~FMDRCP^TcacKuk$ z(U#REVv)D!PhJ*ecH-ELFUrfyV&*)Z)>UCOuS?yd^L@Afk>ihynYPc{^CRwu+JHX+#$@YsC4c|l0tGigsn@jy) zXD($Ouk>H+V(Mr6NQT0S9BFM~V6nkj;1OBOz`zY;a|<&v%$g$sEJPk;hD4M^`1)8S z=jZArrsOB3>Q&?x097+E*i={nnYpPYi3%0DIeEoa6}C!X6;?ntNLXJ<0j#7X+g2&U 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 diff --git a/YakimbiTestUsingARC/YakimbiTest/Network/HTTPRequestOperation.h b/YakimbiTestUsingARC/YakimbiTest/Network/HTTPRequestOperation.h deleted file mode 100644 index 6ebc106..0000000 --- a/YakimbiTestUsingARC/YakimbiTest/Network/HTTPRequestOperation.h +++ /dev/null @@ -1,65 +0,0 @@ -// -// HTTPRequestOperation.h -// YakimbiTest -// -// Created by Syed Arsalan Pervez on 2/16/13. -// Copyright (c) 2013 SAPLogix. All rights reserved. -// - -#import - -@class HTTPRequestOperation; - -@protocol HTTPRequestOperationDelegate - -@optional - -- (void)HTTPOperationStarted:(HTTPRequestOperation *)operation; - -@required - -- (void)HTTPOperationFinished:(HTTPRequestOperation *)operation; -- (void)HTTPOperationFailed:(HTTPRequestOperation *)operation withError:(NSError *)error; - -@end - -@interface HTTPRequestOperation : NSOperation -{ - int _tag; - - __weak id _delegate; - - BOOL _failed; - BOOL _finished; - BOOL _executing; - BOOL _cancelled; - BOOL _concurrent; - - NSURL *_requestURL; - - NSMutableData *_data; - - NSURLConnection *_urlConnection; - - Class _parserClass; -} - -@property (nonatomic) int tag; -@property (weak, nonatomic) id delegate; -@property (readonly, nonatomic) NSURL *requestURL; - -- (BOOL)isFailed; - -- (void)startSynchronously; -- (void)startAsynchronously; - -- (NSData *)responseData; -- (NSString *)responseString; - -- (void)registerParserClass:(Class)class; - -- (id)initWithRequestURL:(id)requestURL; -+ (HTTPRequestOperation *)requestWithURL:(id)requestURL; -+ (HTTPRequestOperation *)requestWithURL:(id)requestURL andDelegate:(id)delegate; - -@end diff --git a/YakimbiTestUsingARC/YakimbiTest/Network/HTTPRequestOperation.m b/YakimbiTestUsingARC/YakimbiTest/Network/HTTPRequestOperation.m deleted file mode 100644 index f308ecd..0000000 --- a/YakimbiTestUsingARC/YakimbiTest/Network/HTTPRequestOperation.m +++ /dev/null @@ -1,301 +0,0 @@ -// -// HTTPRequestOperation.m -// YakimbiTest -// -// Created by Syed Arsalan Pervez on 2/16/13. -// Copyright (c) 2013 SAPLogix. All rights reserved. -// - -#import "HTTPRequestOperation.h" - -@implementation HTTPRequestOperation - -#pragma mark - Init Methods - -- (id)initWithRequestURL:(id)requestURL -{ - self = [super init]; - if (self) - { - if ([requestURL isKindOfClass:[NSURL class]]) - { - _requestURL = [requestURL copy]; - } - else - if ([requestURL isKindOfClass:[NSString class]]) - { - _requestURL = [NSURL URLWithString:requestURL]; - } - } - return self; -} - -+ (HTTPRequestOperation *)requestWithURL:(id)requestURL -{ - return [[HTTPRequestOperation alloc] initWithRequestURL:requestURL]; -} - -+ (HTTPRequestOperation *)requestWithURL:(id)requestURL andDelegate:(id)delegate -{ - HTTPRequestOperation *operation = [HTTPRequestOperation requestWithURL:requestURL]; - [operation setDelegate:delegate]; - return operation; -} - -#pragma mark - Method To Execute Operation Either Synchronously or Asynchronously - -- (void)startSynchronously -{ - [self start]; -} - -- (void)startAsynchronously -{ - [self performSelectorInBackground:@selector(start) withObject:nil]; -} - -#pragma mark - NSOperation Overridden Methods - -- (void)start -{ - if ([self isExecuting]) - return; - - [self setIsCancelled:NO]; - [self setIsFailed:NO]; - [self setIsFinished:NO]; - - if (!_requestURL) - { - @throw [NSException exceptionWithName:NSInvalidArgumentException reason:@"Request URL is not specified." userInfo:nil]; - } - else - { - if ([self isConcurrent]) - { - [self main]; - } - else - { - @throw [NSException exceptionWithName:NSInternalInconsistencyException reason:@"Can't be started right now as it dependeds on another operation." userInfo:nil]; - } - } -} - -- (void)main -{ - _urlConnection = [NSURLConnection connectionWithRequest:[NSURLRequest requestWithURL:_requestURL] delegate:self]; - - if (!_urlConnection) - { - [self setIsExecuting:NO]; - [self setIsFailed:YES]; - } - else - { - [self setIsExecuting:YES]; - [self HTTPOperationStarted]; - } - - while ([self isExecuting]) - { - [[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:1]]; - } -} - -- (void)cancel -{ - if (_executing) - { - [_urlConnection cancel]; - - [self setIsExecuting:NO]; - [self setIsCancelled:YES]; - } -} - -- (BOOL)isFailed -{ - return _failed; -} - -- (BOOL)isFinished -{ - return _finished; -} - -- (BOOL)isCancelled -{ - return _cancelled; -} - -- (BOOL)isExecuting -{ - return _executing; -} - -- (BOOL)isConcurrent -{ - if ([[self dependencies] count] > 0) - { - for (HTTPRequestOperation *operation in [self dependencies]) - { - if (!([operation isFinished] || [operation isCancelled] || [operation isFailed])) - { - return NO; - } - } - } - return YES; -} - -#pragma mark - NSURLConnectionDelegate Methods - -- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error -{ - [self setIsExecuting:NO]; - [self setIsFailed:YES]; - [self HTTPOperationFailedWithError:error]; -} - -#pragma mark - NSURLConnectionDelegate Methods - -- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data -{ - [_data appendData:data]; -} - -- (void)connectionDidFinishLoading:(NSURLConnection *)connection -{ - if (!_parserClass) - { - [self setIsExecuting:NO]; - [self setIsFinished:YES]; - [self HTTPOperationFinished]; - } - else - { - id object = [_parserClass new]; - if (object && [object conformsToProtocol:@protocol(ParserDelegate)]) - { - [object setDelegate:self]; - [object parseData:_data inBackground:[NSThread isMainThread]]; - } - } -} - -- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response -{ - _data = [NSMutableData new]; -} - -- (NSURLRequest *)connection:(NSURLConnection *)connection willSendRequest:(NSURLRequest *)request redirectResponse:(NSURLResponse *)response -{ - return request; -} - -#pragma mark - Setters - -- (void)setIsFailed:(BOOL)failed -{ - [self willChangeValueForKey:@"isFailed"]; - _failed = failed; - [self didChangeValueForKey:@"isFailed"]; -} - -- (void)setIsFinished:(BOOL)finished -{ - [self willChangeValueForKey:@"isFinished"]; - _finished = finished; - [self didChangeValueForKey:@"isFinished"]; -} - -- (void)setIsExecuting:(BOOL)executing -{ - [self willChangeValueForKey:@"isExecuting"]; - _executing = executing; - [self didChangeValueForKey:@"isExecuting"]; -} - -- (void)setIsCancelled:(BOOL)cancelled -{ - [self willChangeValueForKey:@"isCancelled"]; - _cancelled = cancelled; - [self didChangeValueForKey:@"isCancelled"]; -} - -- (void)setIsConcurrent:(BOOL)concurrent -{ - [self willChangeValueForKey:@"isConcurrent"]; - _concurrent = concurrent; - [self didChangeValueForKey:@"isConcurrent"]; -} - -#pragma mark - HTTPOperationDelegate Methods - -- (void)HTTPOperationStarted -{ - if (_delegate && [_delegate respondsToSelector:@selector(HTTPOperationStarted:)]) - { - dispatch_async(dispatch_get_main_queue(), ^{ - [_delegate performSelector:@selector(HTTPOperationStarted:) withObject:self]; - }); - } -} - -- (void)HTTPOperationFinished -{ - if (_delegate && [_delegate respondsToSelector:@selector(HTTPOperationFinished:)]) - { - dispatch_async(dispatch_get_main_queue(), ^{ - [_delegate performSelector:@selector(HTTPOperationFinished:) withObject:self]; - }); - } -} - -- (void)HTTPOperationFailedWithError:(NSError *)error -{ - if (_delegate && [_delegate respondsToSelector:@selector(HTTPOperationFailed:withError:)]) - { - dispatch_async(dispatch_get_main_queue(), ^{ - [_delegate performSelector:@selector(HTTPOperationFailed:withError:) withObject:self withObject:error]; - }); - } -} - -#pragma mark - Getters - -- (NSData *)responseData -{ - return _data ? [NSData dataWithData:_data] : nil; -} - -- (NSString *)responseString -{ - return _data ? [[NSString alloc] initWithData:_data encoding:NSUTF8StringEncoding] : nil; -} - -#pragma mark - Parser - -- (void)registerParserClass:(Class)class -{ - _parserClass = class; -} - -#pragma mark - ParserDelegate Methods - -- (void)parsingFinished:(Parser *)parser -{ - [self setIsExecuting:NO]; - [self setIsFinished:YES]; - [self HTTPOperationFinished]; -} - -- (void)parsingFailed:(Parser *)parser withError:(NSError *)error -{ - [self setIsExecuting:NO]; - [self setIsFailed:YES]; - [self HTTPOperationFailedWithError:error]; -} - -@end diff --git a/YakimbiTestUsingARC/YakimbiTest/Parsers/Parser.h b/YakimbiTestUsingARC/YakimbiTest/Parsers/Parser.h deleted file mode 100644 index 6fcbe6d..0000000 --- a/YakimbiTestUsingARC/YakimbiTest/Parsers/Parser.h +++ /dev/null @@ -1,38 +0,0 @@ -// -// Parser.h -// YakimbiTest -// -// Created by Syed Arsalan Pervez on 2/16/13. -// Copyright (c) 2013 SAPLogix. All rights reserved. -// - -#import - -@class Parser; - -@protocol ParserDelegate - -@required -- (void)parseData:(NSData *)data; -- (void)parseData:(NSData *)data inBackground:(BOOL)inBackground; - -@end - -@protocol ParserResponseDelegate - -@required -- (void)parsingFinished:(Parser *)parser; -- (void)parsingFailed:(Parser *)parser withError:(NSError *)error; - -@end - -@interface Parser : NSObject -{ - __weak id _delegate; - int _tag; -} - -@property (weak , nonatomic) id delegate; -@property (assign, nonatomic) int tag; - -@end diff --git a/YakimbiTestUsingARC/YakimbiTest/Parsers/Parser.m b/YakimbiTestUsingARC/YakimbiTest/Parsers/Parser.m deleted file mode 100644 index d9791ed..0000000 --- a/YakimbiTestUsingARC/YakimbiTest/Parsers/Parser.m +++ /dev/null @@ -1,182 +0,0 @@ -// -// Parser.m -// YakimbiTest -// -// Created by Syed Arsalan Pervez on 2/16/13. -// Copyright (c) 2013 SAPLogix. All rights reserved. -// - -#import "Parser.h" - -@implementation Parser - -#pragma mark - Parse Data - -- (void)parseData:(NSData *)data inBackground:(BOOL)inBackground -{ - if (inBackground) - [self performSelectorInBackground:@selector(parseData:) withObject:data]; - else - [self parseData:data]; -} - -- (void)parseData:(NSData *)data -{ - @autoreleasepool - { - if (data == nil) - { - if (_delegate && [_delegate conformsToProtocol:@protocol(ParserResponseDelegate)]) - { - [_delegate parsingFailed:self withError:[NSError errorWithDomain:@"com.Yakimbi" code:1000 userInfo:@{NSLocalizedDescriptionKey:@"Data is nil."}]]; - } - return; - } - - NSError *error = nil; - NSDictionary *dictionary = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:&error]; - - if (!error) - { - User *_user = nil; - - NSArray *_users = [DBHandler fetchObjectsOfEntity:USER_TABLE]; - if ([_users count] > 0) - _user = [_users objectAtIndex:0]; - else - _user = [DBHandler manageObjectForEntity:USER_TABLE]; - - [_user setLastUpdated:[NSDate date]]; - [_user setTotalSpace:[dictionary valueForKey:@"totalSpace"]]; - [_user setLastRevId:[dictionary valueForKey:@"last_rev_id"]]; - [_user setUsedSpace:[dictionary valueForKey:@"usedSpace"]]; - [_user setAvailableSpace:[dictionary valueForKey:@"availableSpace"]]; - [_user setMode:[dictionary valueForKey:@"mode"]]; - [_user setPendingRequests:[dictionary valueForKey:@"pendingRequests"]]; - [_user setRevId:[dictionary valueForKey:@"rev_id"]]; - - // Check rev_id, if same then return - if ([_user.revId isEqualToNumber:[dictionary valueForKey:@"rev_id"]]) - { - // My Files - [self addOrUpdateFoldersFromDictionary:[dictionary valueForKey:@"my_files"] forUser:_user]; - // SharedFiles - [self addOrUpdateFoldersFromDictionary:[dictionary valueForKey:@"shared_files"] forUser:_user]; - } - - [DBHandler performSelectorOnMainThread:@selector(saveContext) withObject:nil waitUntilDone:NO]; - } - else - { - Log(@"Parsing Error: %@", error); - - if (_delegate && [_delegate conformsToProtocol:@protocol(ParserResponseDelegate)]) - { - [_delegate parsingFailed:self withError:[NSError errorWithDomain:@"com.Yakimbi" code:1001 userInfo:@{NSLocalizedDescriptionKey:@"Failed to parse the given data."}]]; - } - return; - } - - if (_delegate && [_delegate conformsToProtocol:@protocol(ParserResponseDelegate)]) - { - [_delegate parsingFinished:self]; - } - } -} - -#pragma mark - Support Methods - -- (void)addOrUpdateFoldersFromDictionary:(NSDictionary *)myfiles forUser:(User *)_user -{ - Folder *_folder = nil; - - BOOL found = NO; - - NSSet *folderSet = [[_user folders] filteredSetUsingPredicate:[NSPredicate predicateWithFormat:@"self.fid == %@", [myfiles valueForKey:@"id"]]]; - - // Check if user already has folders and were we able to find the folder we are about to add/update - if ([[_user folders] count] > 0 && [folderSet count] > 0) - { - _folder = [[folderSet allObjects] objectAtIndex:0]; - found = YES; - } - else // if not found then add the folder - { - _folder = [DBHandler manageObjectForEntity:FOLDER_TABLE]; - [_folder setFid:[myfiles valueForKey:@"id"]]; - } - - [_folder setName:[myfiles valueForKey:@"name"]]; - - // Hide all before adding/updating - [[_folder files] setValue:[NSNumber numberWithBool:YES] forKey:@"hidden"]; - - for (NSDictionary *fileDictionary in [myfiles valueForKey:@"content"]) - { - File *_file = nil; - - // If folder already exists then check if file already exists or not - if (found) - { - NSSet *fileSet = [[_folder files] filteredSetUsingPredicate:[NSPredicate predicateWithFormat:@"self.itemId == %@", [fileDictionary valueForKey:@"item_id"]]]; - if ([fileSet count] > 0) - _file = [[fileSet allObjects] objectAtIndex:0]; - } - - // If file not found then create - if (!_file) - { - _file = [DBHandler manageObjectForEntity:FILE_TABLE]; - [_file setFolder:_folder]; - [_folder addFilesObject:_file]; - } - - // Replace all the fields with respective values received from server - [self assignFileObject:_file valuesFromDictionary:fileDictionary]; - - // Unhide the ones that were received from the server - [_file setHidden:[NSNumber numberWithBool:NO]]; - } - - // If folder not found then add it - if (!found) - { - [_folder setUser:_user]; - [_user addFoldersObject:_folder]; - } -} - -- (void)assignFileObject:(File *)file valuesFromDictionary:(NSDictionary *)dictionary -{ - [file setStatus:[dictionary valueForKey:@"status"]]; - [file setIsShared:[dictionary valueForKey:@"is_shared"]]; - [file setShareId:[dictionary valueForKey:@"share_id"]]; - [file setUserId:[dictionary valueForKey:@"user_id"]]; - [file setName:[dictionary valueForKey:@"name"]]; - [file setSharedBy:[dictionary valueForKey:@"shared_by"]]; - [file setCreatedDate:[dictionary valueForKey:@"created_date"]]; - [file setSharedDate:[dictionary valueForKey:@"shared_date"]]; - - // Note: in json response my_files->content->"share_level" is of type string and in shared_files->content->"share_level" if of type number (issue or intentional?) - // stored in local DB as number - if ([[dictionary valueForKey:@"share_level"] isKindOfClass:[NSString class]]) - [file setShareLevel:[NSNumber numberWithInt:[[dictionary valueForKey:@"share_level"] intValue]]]; - else - [file setShareLevel:[dictionary valueForKey:@"share_level"]]; - - if ([[dictionary allKeys] containsObject:@"parent_id"]) - [file setParentId:[dictionary valueForKey:@"parent_id"]]; - - [file setLastUpdatedDate:[dictionary valueForKey:@"last_updated_date"]]; - [file setLastUpdatedBy:[dictionary valueForKey:@"last_updated_by"]]; - [file setLink:[dictionary valueForKey:@"link"]]; - [file setTransType:[dictionary valueForKey:@"trans_type"]]; - [file setItemId:[dictionary valueForKey:@"item_id"]]; - [file setPath:[dictionary valueForKey:@"path"]]; - [file setPathById:[dictionary valueForKey:@"path_by_id"]]; - [file setType:[dictionary valueForKey:@"type"]]; - [file setMimeType:[dictionary valueForKey:@"mime_type"]]; - [file setSize:[dictionary valueForKey:@"size"]]; -} - -@end diff --git a/YakimbiTestUsingARC/YakimbiTest/Utilities/AppConstants.h b/YakimbiTestUsingARC/YakimbiTest/Utilities/AppConstants.h deleted file mode 100644 index f0417b5..0000000 --- a/YakimbiTestUsingARC/YakimbiTest/Utilities/AppConstants.h +++ /dev/null @@ -1,21 +0,0 @@ -// -// AppConstants.h -// YakimbiTest -// -// Created by Syed Arsalan Pervez on 2/18/13. -// Copyright (c) 2013 SAPLogix. All rights reserved. -// - -#import - -#define SAMPLE_JSON_URL @"https://gist.github.com/raw/4680060/aac6d818e7103edfe721e719b1512f707bcfb478/sample.json" - -#define USER_TABLE @"User" -#define FOLDER_TABLE @"Folder" -#define FILE_TABLE @"File" - -#define REFRESH_INTERVAL 140 - -@interface AppConstants : NSObject - -@end diff --git a/YakimbiTestUsingARC/YakimbiTest/Utilities/AppConstants.m b/YakimbiTestUsingARC/YakimbiTest/Utilities/AppConstants.m deleted file mode 100644 index 02de659..0000000 --- a/YakimbiTestUsingARC/YakimbiTest/Utilities/AppConstants.m +++ /dev/null @@ -1,13 +0,0 @@ -// -// AppConstants.m -// YakimbiTest -// -// Created by Syed Arsalan Pervez on 2/18/13. -// Copyright (c) 2013 SAPLogix. All rights reserved. -// - -#import "AppConstants.h" - -@implementation AppConstants - -@end diff --git a/YakimbiTestUsingARC/YakimbiTest/Utilities/Macros.h b/YakimbiTestUsingARC/YakimbiTest/Utilities/Macros.h deleted file mode 100644 index fe6254e..0000000 --- a/YakimbiTestUsingARC/YakimbiTest/Utilities/Macros.h +++ /dev/null @@ -1,40 +0,0 @@ -// -// Macros.h -// YakimbiTest -// -// Created by Syed Arsalan Pervez on 2/16/13. -// Copyright (c) 2013 SAPLogix. All rights reserved. -// - -//****************************************************************************** -// Logging -//****************************************************************************** - -#define IS_DEBUG 1 - -#define Log(fmt, ...) if (IS_DEBUG == 1) { NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__); } - -//****************************************************************************** -// Release & Set Pointer To Nil -//****************************************************************************** - -#define SAFE_RELEASE(a) if (a) { [a release]; a = nil; } - -//****************************************************************************** -// Device Detection -//****************************************************************************** - -#define DEVICE_iPAD ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) - -//****************************************************************************** -// Byte Formatting -//****************************************************************************** - -#define KB (1024) -#define MB (1024*1024) -#define GB (1024*1024*1024) - -#define FORMAT_BYTES(bytes) bytes >= GB ? [NSString stringWithFormat:@"%.2f GB", (float)bytes/(float)GB] : \ -bytes >= MB ? [NSString stringWithFormat:@"%.2f MB", (float)bytes/(float)MB] : \ -bytes >= KB ? [NSString stringWithFormat:@"%.2f KB", (float)bytes/(float)KB] : \ -[NSString stringWithFormat:@"%.0f Bytes", (float)bytes] diff --git a/YakimbiTestUsingARC/YakimbiTest/ViewControllers/InfoViewController.h b/YakimbiTestUsingARC/YakimbiTest/ViewControllers/InfoViewController.h deleted file mode 100644 index 7cd9895..0000000 --- a/YakimbiTestUsingARC/YakimbiTest/ViewControllers/InfoViewController.h +++ /dev/null @@ -1,21 +0,0 @@ -// -// InfoViewController.h -// YakimbiTest -// -// Created by Syed Arsalan Pervez on 2/20/13. -// Copyright (c) 2013 SAPLogix. All rights reserved. -// - -#import - -@interface InfoViewController : UIViewController -{ - IBOutlet UIProgressView *_progressView; - IBOutlet UILabel *_spaceLabel; - - __weak User *_user; -} - -@property (weak, nonatomic) User *user; - -@end diff --git a/YakimbiTestUsingARC/YakimbiTest/ViewControllers/InfoViewController.m b/YakimbiTestUsingARC/YakimbiTest/ViewControllers/InfoViewController.m deleted file mode 100644 index 0259c84..0000000 --- a/YakimbiTestUsingARC/YakimbiTest/ViewControllers/InfoViewController.m +++ /dev/null @@ -1,31 +0,0 @@ -// -// InfoViewController.m -// YakimbiTest -// -// Created by Syed Arsalan Pervez on 2/20/13. -// Copyright (c) 2013 SAPLogix. All rights reserved. -// - -#import "InfoViewController.h" - -@interface InfoViewController () - -@end - -@implementation InfoViewController - -- (void)viewDidLoad -{ - [self setContentSizeForViewInPopover:CGSizeMake(320, 320)]; - - [_spaceLabel setText:[NSString stringWithFormat:@"Using %@ of your %@", FORMAT_BYTES([[_user usedSpace] floatValue]), FORMAT_BYTES([[_user totalSpace] floatValue])]]; -} - -- (void)viewDidAppear:(BOOL)animated -{ - [super viewDidAppear:animated]; - float progress = (([_user.usedSpace floatValue] / [_user.totalSpace floatValue]) * 1.0); - [_progressView setProgress:progress animated:YES]; -} - -@end diff --git a/YakimbiTestUsingARC/YakimbiTest/ViewControllers/InfoViewController.xib b/YakimbiTestUsingARC/YakimbiTest/ViewControllers/InfoViewController.xib deleted file mode 100644 index 2aef3d6..0000000 --- a/YakimbiTestUsingARC/YakimbiTest/ViewControllers/InfoViewController.xib +++ /dev/null @@ -1,238 +0,0 @@ - - - - 1552 - 11G63 - 3084 - 1138.51 - 569.00 - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 2083 - - - IBProxyObject - IBUILabel - IBUIProgressView - IBUIView - - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - PluginDependencyRecalculationVersion - - - - - IBFilesOwner - IBCocoaTouchFramework - - - IBFirstResponder - IBCocoaTouchFramework - - - - 274 - - - - 292 - {{20, 20}, {280, 9}} - - - _NS:9 - NO - IBCocoaTouchFramework - 1 - - 1 - MCAwLjUwMTk2MDgxNCAxAA - - - 1 - MSAxIDEAA - - - - - 292 - {{20, 37}, {280, 21}} - - - _NS:9 - NO - YES - 7 - NO - IBCocoaTouchFramework - Label - - 1 - MCAwIDAAA - darkTextColor - - - 0 - 1 - - 1 - 15 - - - Helvetica - 15 - 16 - - NO - - - {{0, 20}, {320, 548}} - - - - - 3 - MQA - - 2 - - - - - IBUIScreenMetrics - - YES - - - - - - {320, 568} - {568, 320} - - - IBCocoaTouchFramework - Retina 4 Full Screen - 2 - - IBCocoaTouchFramework - - - - - - - view - - - - 3 - - - - _spaceLabel - - - - 13 - - - - _progressView - - - - 14 - - - - - - 0 - - - - - - 1 - - - - - - - - - -1 - - - File's Owner - - - -2 - - - - - 4 - - - - - - 11 - - - - - - - InfoViewController - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIResponder - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - - - - 14 - - - - - InfoViewController - UIViewController - - UIProgressView - UILabel - - - - _progressView - UIProgressView - - - _spaceLabel - UILabel - - - - IBProjectSource - ./Classes/InfoViewController.h - - - - - 0 - IBCocoaTouchFramework - YES - 3 - 2083 - - diff --git a/YakimbiTestUsingARC/YakimbiTest/ViewControllers/ListViewController.h b/YakimbiTestUsingARC/YakimbiTest/ViewControllers/ListViewController.h deleted file mode 100644 index 739fe75..0000000 --- a/YakimbiTestUsingARC/YakimbiTest/ViewControllers/ListViewController.h +++ /dev/null @@ -1,30 +0,0 @@ -// -// ListViewController.h -// YakimbiTest -// -// Created by Syed Arsalan Pervez on 2/18/13. -// Copyright (c) 2013 SAPLogix. All rights reserved. -// - -#import - -@interface ListViewController : UIViewController -{ - Folder *_folder; - - NSArray *_items; - - IBOutlet UITableView *_tableView; - IBOutlet UILabel *_pageLabel; - IBOutlet UIBarButtonItem *_nextBarBtn; - IBOutlet UIBarButtonItem *_previousBarBtn; - - int currentPage; - int noOfPages; - - __strong UIPopoverController *_popOverViewController; -} - -@property (retain, nonatomic) Folder *folder; - -@end diff --git a/YakimbiTestUsingARC/YakimbiTest/ViewControllers/ListViewController.m b/YakimbiTestUsingARC/YakimbiTest/ViewControllers/ListViewController.m deleted file mode 100644 index e5add6c..0000000 --- a/YakimbiTestUsingARC/YakimbiTest/ViewControllers/ListViewController.m +++ /dev/null @@ -1,252 +0,0 @@ -// -// ListViewController.m -// YakimbiTest -// -// Created by Syed Arsalan Pervez on 2/18/13. -// Copyright (c) 2013 SAPLogix. All rights reserved. -// - -#import "ListViewController.h" -#import "TableViewController.h" -#import "FileViewCell.h" - -#define DISPLAY_NO_OF_ITEMS 20 - -static NSString *identifier = @"FileCell"; - -@interface ListViewController () - -@end - -@implementation ListViewController - -- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil -{ - if (DEVICE_iPAD) - { - self = [super initWithNibName:[NSStringFromClass([self class]) stringByAppendingString:@"_iPad"] bundle:nibBundleOrNil]; - } - else - self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; - - if (self) - { - } - return self; -} - -#pragma mark - UIViewController Overridden Methods - -- (void)viewDidLoad -{ - [super viewDidLoad]; - // Do any additional setup after loading the view from its nib. - - if (DEVICE_iPAD) - { - [_tableView registerNib:[UINib nibWithNibName:@"FileViewCell_iPad" bundle:nil] forCellReuseIdentifier:identifier]; - } - else - { - [_tableView registerNib:[UINib nibWithNibName:@"FileViewCell" bundle:nil] forCellReuseIdentifier:identifier]; - } - - [[self navigationItem] setRightBarButtonItems:@[_nextBarBtn, _previousBarBtn]]; -} - -- (void)viewWillAppear:(BOOL)animated -{ - [super viewWillAppear:animated]; - - if (_folder) - { - [self setTitle:[_folder name]]; - - currentPage = 1; - noOfPages = ceil((double)[[self files] count] / (double)DISPLAY_NO_OF_ITEMS); - - [self refreshData]; - } - - [self setFrameBaseOnOrientation]; -} - -#pragma mark - Refresh Data - -- (void)refreshData -{ - NSSortDescriptor *asc = [NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES]; - - int loc = 0; - int len = 0; - NSRange range; - - // Calculate start location and no. of records to be shown - // If less records than min no. to be displayed at once - if ((currentPage * DISPLAY_NO_OF_ITEMS) > [[_folder files] count]) - { - loc = (currentPage - 1) * DISPLAY_NO_OF_ITEMS; - len = [[self files] count] - loc; - range = NSMakeRange(loc, len); - } - else - { - loc = (currentPage - 1) * DISPLAY_NO_OF_ITEMS; - len = DISPLAY_NO_OF_ITEMS; - range = NSMakeRange(loc, len); - } - - // Get subarray and sort it - _items = [[[self files] subarrayWithRange:range] sortedArrayUsingDescriptors:@[asc]]; - - // Show range of records shown from the total no. of records - _pageLabel.text = [NSString stringWithFormat:@"Showing %i - %i of %i", ++loc, loc+[_items count]-1, [[self files] count]]; - - // Reload data - [_tableView reloadData]; - - // Scroll to top - [_tableView scrollRectToVisible:CGRectMake(0, 0, 1, 1) animated:YES]; -} - -- (NSArray *)files -{ - return [[[_folder files] filteredSetUsingPredicate:[NSPredicate predicateWithFormat:@"self.hidden == 0"]] allObjects]; -} - -#pragma mark - Event Handlers - -- (IBAction)next:(id)sender -{ - if (currentPage == noOfPages) - return; - - ++currentPage; - [self refreshData]; -} - -- (IBAction)previous:(id)sender -{ - if (currentPage <= 1) - return; - - --currentPage; - [self refreshData]; -} - -#pragma mark - UITableView Delegate & Datasource Methods - -- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView -{ - return 1; -} - -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section -{ - return [_items count]; -} - -- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath -{ - FileViewCell *cell = (FileViewCell *)[tableView dequeueReusableCellWithIdentifier:identifier]; - - File *_file = [_items objectAtIndex:indexPath.row]; - - cell.nameLabel.text = [_file name]; - cell.pathLabel.text = [NSString stringWithFormat:@"Path: %@", [_file path]]; - - if (DEVICE_iPAD) - { - cell.sharedByLabel.text = [NSString stringWithFormat:@"Created on: %@ by %@", [_file createdDate], [_file lastUpdatedBy]]; - cell.sharedByLabel2.text = [NSString stringWithFormat:@"Link: %@", [_file link]]; - } - else - { - cell.sharedByLabel.text = [NSString stringWithFormat:@"Created on: %@", [_file createdDate]]; - cell.sharedByLabel2.text = [NSString stringWithFormat:@"Last Updated By: %@", [_file lastUpdatedBy]]; - } - - if ([[_file type] isEqualToString:@"1"]) - { - cell.fileCountLabel.text = @"file"; - cell.folderCountLabel.text = FORMAT_BYTES([[_file size] floatValue]); - } - else - { - cell.fileCountLabel.text = @"folder"; - cell.folderCountLabel.text = @""; - cell.sharedByLabel2.text = @""; - } - - _file = nil; - - return cell; -} - -- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath -{ - if (DEVICE_iPAD) - { - TableViewController *_mainViewController = [TableViewController new]; - if (!_popOverViewController) - _popOverViewController = [[UIPopoverController alloc] initWithContentViewController:_mainViewController]; - [_mainViewController setPopOverViewController:_popOverViewController]; - [_popOverViewController setDelegate:self]; - - // Calculate the location to show the UIPopoverController - CGRect rect = [tableView rectForRowAtIndexPath:indexPath]; - [_popOverViewController presentPopoverFromRect:CGRectMake(rect.origin.x + rect.size.width-25, CGRectGetMidY(rect)+ (int)(rect.size.height/2) - 18 - tableView.contentOffset.y, 1, 1) inView:[self view] permittedArrowDirections:UIPopoverArrowDirectionRight animated:YES]; - } - else - { - UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:@"Test" delegate:nil cancelButtonTitle:@"Cancel" destructiveButtonTitle:nil otherButtonTitles:@"Row1", @"Row2", @"Row3", @"Row4", nil]; - [actionSheet showInView:[self view]]; - } - [tableView deselectRowAtIndexPath:indexPath animated:YES]; -} - -- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath -{ - return 94; -} - -#pragma mark - View Rotation Handler - -- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration -{ - [self setFrameBaseOnOrientation]; -} - -- (void)setFrameBaseOnOrientation -{ - if (UIInterfaceOrientationIsLandscape([[UIApplication sharedApplication] statusBarOrientation])) - { - if (DEVICE_iPAD) - { - [_pageLabel setFrame:CGRectMake(0, 3, 1024, 30)]; - } - else - { - [_pageLabel setFrame:CGRectMake(0, 3, 480, 30)]; - } - } - else - { - if (DEVICE_iPAD) - { - [_pageLabel setFrame:CGRectMake(0, 3, 768, 30)]; - } - else - { - [_pageLabel setFrame:CGRectMake(0, 3, 320, 30)]; - } - } -} - -#pragma mark - UIPopoverControllerDelegate Methods - -- (void)popoverControllerDidDismissPopover:(UIPopoverController *)popoverController -{ -} - -@end diff --git a/YakimbiTestUsingARC/YakimbiTest/ViewControllers/ListViewController.xib b/YakimbiTestUsingARC/YakimbiTest/ViewControllers/ListViewController.xib deleted file mode 100644 index 9014570..0000000 --- a/YakimbiTestUsingARC/YakimbiTest/ViewControllers/ListViewController.xib +++ /dev/null @@ -1,284 +0,0 @@ - - - - 1552 - 11G63 - 3084 - 1138.51 - 569.00 - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 2083 - - - IBProxyObject - IBUIBarButtonItem - IBUILabel - IBUITableView - IBUIView - - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - PluginDependencyRecalculationVersion - - - - - IBFilesOwner - IBCocoaTouchFramework - - - IBFirstResponder - IBCocoaTouchFramework - - - < - IBCocoaTouchFramework - 1 - - - > - IBCocoaTouchFramework - 1 - - - - 274 - - - - 274 - {{0, 32}, {320, 472}} - - _NS:9 - - 3 - MQA - - YES - IBCocoaTouchFramework - YES - 1 - 0 - YES - 44 - 22 - 22 - - - - 292 - {{0, 5}, {320, 21}} - - _NS:9 - NO - YES - 7 - NO - IBCocoaTouchFramework - Label - - 1 - MCAwIDAAA - darkTextColor - - - 0 - 1 - - 1 - 14 - - - Helvetica - 14 - 16 - - NO - - - {{0, 64}, {320, 504}} - - - 3 - MQA - - 2 - - - - - NO - - - IBUIScreenMetrics - - YES - - - - - - {320, 568} - {568, 320} - - - IBCocoaTouchFramework - Retina 4 Full Screen - 2 - - IBCocoaTouchFramework - - - - - - - view - - - - 3 - - - - _tableView - - - - 11 - - - - _previousBarBtn - - - - 15 - - - - _nextBarBtn - - - - 16 - - - - _pageLabel - - - - 20 - - - - dataSource - - - - 9 - - - - delegate - - - - 10 - - - - next: - - - - 18 - - - - previous: - - - - 17 - - - - - - 0 - - - - - - 1 - - - - - - - - - -1 - - - File's Owner - - - -2 - - - - - 4 - - - - - 12 - - - - - 13 - - - - - 19 - - - - - - - ListViewController - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIResponder - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - - - - 20 - - - 0 - IBCocoaTouchFramework - YES - 3 - 2083 - - diff --git a/YakimbiTestUsingARC/YakimbiTest/ViewControllers/ListViewController_iPad.xib b/YakimbiTestUsingARC/YakimbiTest/ViewControllers/ListViewController_iPad.xib deleted file mode 100644 index 039c524..0000000 --- a/YakimbiTestUsingARC/YakimbiTest/ViewControllers/ListViewController_iPad.xib +++ /dev/null @@ -1,340 +0,0 @@ - - - - 1552 - 11G63 - 3084 - 1138.51 - 569.00 - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 2083 - - - IBProxyObject - IBUIBarButtonItem - IBUILabel - IBUITableView - IBUIView - - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - PluginDependencyRecalculationVersion - - - - - IBFilesOwner - IBIPadFramework - - - IBFirstResponder - IBIPadFramework - - - > - IBIPadFramework - 1 - - - < - IBIPadFramework - 1 - - - - 292 - - - - 274 - {{0, 32}, {768, 928}} - - - _NS:9 - - 3 - MQA - - YES - IBIPadFramework - YES - 1 - 0 - YES - 44 - 22 - 22 - - - - 256 - {{20, 5}, {728, 21}} - - - _NS:9 - NO - YES - 7 - NO - IBIPadFramework - Label - - 1 - MCAwIDAAA - darkTextColor - - - 0 - 1 - - 1 - 14 - - - Helvetica - 14 - 16 - - NO - - - {{0, 64}, {768, 960}} - - - - - 3 - MQA - - 2 - - - NO - - 2 - - - NO - - - IBUIScreenMetrics - - YES - - - - - - {768, 1024} - {1024, 768} - - - IBIPadFramework - iPad Full Screen - 1 - - IBIPadFramework - - - - - - - view - - - - 3 - - - - _tableView - - - - 5 - - - - _previousBarBtn - - - - 16 - - - - _nextBarBtn - - - - 15 - - - - _pageLabel - - - - 21 - - - - dataSource - - - - 6 - - - - delegate - - - - 7 - - - - previous: - - - - 19 - - - - next: - - - - 18 - - - - - - 0 - - - - - - -1 - - - File's Owner - - - -2 - - - - - 2 - - - - - - - - - 4 - - - - - 8 - - - - - 9 - - - - - 20 - - - - - - - ListViewController - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIResponder - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - - - - 21 - - - - - ListViewController - UIViewController - - id - id - - - - next: - id - - - previous: - id - - - - UIBarButtonItem - UILabel - UIBarButtonItem - UITableView - - - - _nextBarBtn - UIBarButtonItem - - - _pageLabel - UILabel - - - _previousBarBtn - UIBarButtonItem - - - _tableView - UITableView - - - - IBProjectSource - ./Classes/ListViewController.h - - - - - 0 - IBIPadFramework - YES - 3 - 2083 - - diff --git a/YakimbiTestUsingARC/YakimbiTest/ViewControllers/MainViewController.h b/YakimbiTestUsingARC/YakimbiTest/ViewControllers/MainViewController.h deleted file mode 100644 index 460e22a..0000000 --- a/YakimbiTestUsingARC/YakimbiTest/ViewControllers/MainViewController.h +++ /dev/null @@ -1,31 +0,0 @@ -// -// MainViewController.h -// YakimbiTest -// -// Created by Syed Arsalan Pervez on 2/16/13. -// Copyright (c) 2013 SAPLogix. All rights reserved. -// - -#import -#import "ListViewController.h" -#import "InfoViewController.h" - -@interface MainViewController : UIViewController -{ - User *_user; - - NSArray *_items; - - IBOutlet UILabel *_statusLabel; - IBOutlet UITableView *_tableView; - - IBOutlet UIBarButtonItem *_infoBtn; - - ListViewController *_listViewController; - - __strong HTTPRequestOperation *_fetchOperation; - - __strong UIPopoverController *_popOverViewController; -} - -@end diff --git a/YakimbiTestUsingARC/YakimbiTest/ViewControllers/MainViewController.m b/YakimbiTestUsingARC/YakimbiTest/ViewControllers/MainViewController.m deleted file mode 100644 index 65a0690..0000000 --- a/YakimbiTestUsingARC/YakimbiTest/ViewControllers/MainViewController.m +++ /dev/null @@ -1,241 +0,0 @@ -// -// MainViewController.m -// YakimbiTest -// -// Created by Syed Arsalan Pervez on 2/16/13. -// Copyright (c) 2013 SAPLogix. All rights reserved. -// - -#import "MainViewController.h" -#import "FolderViewCell.h" - -static NSString *identifier = @"FolderCell"; - -@interface MainViewController () - -@end - -@implementation MainViewController - -- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil -{ - if (DEVICE_iPAD) - { - self = [super initWithNibName:[NSStringFromClass([self class]) stringByAppendingString:@"_iPad"] bundle:nibBundleOrNil]; - } - else - self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; - - if (self) - { - } - return self; -} - -#pragma mark - UIViewController Overridden Methods - -- (void)viewDidLoad -{ - [super viewDidLoad]; - // Do any additional setup after loading the view from its nib. - - _fetchOperation = [HTTPRequestOperation requestWithURL:SAMPLE_JSON_URL andDelegate:self]; - [_fetchOperation registerParserClass:[Parser class]]; - [self fetchData]; - - if (DEVICE_iPAD) - { - [_tableView registerNib:[UINib nibWithNibName:@"FolderViewCell_iPad" bundle:nil] forCellReuseIdentifier:identifier]; - } - else - { - [_tableView registerNib:[UINib nibWithNibName:@"FolderViewCell" bundle:nil] forCellReuseIdentifier:identifier]; - } - - [_statusLabel setText:@""]; - - [[self navigationItem] setRightBarButtonItem:_infoBtn]; - - [self refreshData]; -} - -- (void)viewWillAppear:(BOOL)animated -{ - [super viewWillAppear:animated]; - - [self setFrameBaseOnOrientation]; -} - -#pragma mark - Refresh Data - -- (void)refreshData -{ - NSArray *_users = [DBHandler fetchObjectsOfEntity:USER_TABLE]; - if ([_users count] > 0) - { - _user = [_users objectAtIndex:0]; - - if (_user) - { - NSSortDescriptor *asc = [NSSortDescriptor sortDescriptorWithKey:@"fid" ascending:YES]; - _items = [[[_user folders] allObjects] sortedArrayUsingDescriptors:@[asc]]; - } - - [_tableView reloadData]; - } -} - -#pragma mark - Fetch Data - -- (void)fetchData -{ - @try - { - [_fetchOperation startAsynchronously]; - } - @catch (NSException *exception) - { - Log(@"Exception %@", exception); - } - @finally - { - } -} - -#pragma mark - HTTPRequestOperationDelegate Methods - -- (void)HTTPOperationStarted:(HTTPRequestOperation *)operation -{ - Log(@"Started!"); -} - -- (void)HTTPOperationFinished:(HTTPRequestOperation *)operation -{ - Log(@"Finished!"); - - [self refreshData]; - - [_statusLabel setText:[NSString stringWithFormat:@"Last Updated: %@", [_user lastUpdated]]]; - - [self performSelector:@selector(fetchData) withObject:nil afterDelay:REFRESH_INTERVAL]; -} - -- (void)HTTPOperationFailed:(HTTPRequestOperation *)operation withError:(NSError *)error -{ - Log(@"Failed!"); - - [_statusLabel setText:[NSString stringWithFormat:@"Last Updated: %@", [_user lastUpdated]]]; - - [self performSelector:@selector(fetchData) withObject:nil afterDelay:REFRESH_INTERVAL]; -} - -#pragma mark - UITableView Delegate & Datasource Methods - -- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView -{ - return 1; -} - -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section -{ - return [_user.folders count]; -} - -- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath -{ - FolderViewCell *cell = (FolderViewCell *)[tableView dequeueReusableCellWithIdentifier:identifier]; - - Folder *_folder = [_items objectAtIndex:indexPath.row]; - - cell.nameLabel.text = [_folder name]; - - int folders = [[[_folder files] filteredSetUsingPredicate:[NSPredicate predicateWithFormat:@"self.type == '0'"]] count]; - int files = [[[_folder files] filteredSetUsingPredicate:[NSPredicate predicateWithFormat:@"self.type == '1'"]] count]; - - cell.pathLabel.text = [NSString stringWithFormat:@"Files: %i Folders: %i", files, folders]; - - _folder = nil; - - return cell; -} - -- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath -{ - [tableView deselectRowAtIndexPath:indexPath animated:YES]; - - if (!_listViewController) - _listViewController = [ListViewController new]; - - Folder *folder = [_items objectAtIndex:indexPath.row]; - [_listViewController setFolder:folder]; - folder = nil; - [[self navigationController] pushViewController:_listViewController animated:YES]; -} - -- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath -{ - return 58; -} - -#pragma mark - View Rotation Handler - -- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration -{ - [self setFrameBaseOnOrientation]; -} - -- (void)setFrameBaseOnOrientation -{ - if (UIInterfaceOrientationIsLandscape([[UIApplication sharedApplication] statusBarOrientation])) - { - if (DEVICE_iPAD) - { - [_statusLabel setFrame:CGRectMake(0, _tableView.frame.size.height, 1024, 30)]; - } - else - { - [_statusLabel setFrame:CGRectMake(0, _tableView.frame.size.height, 480, 30)]; - } - } - else - { - if (DEVICE_iPAD) - { - [_statusLabel setFrame:CGRectMake(0, _tableView.frame.size.height, 768, 30)]; - } - else - { - [_statusLabel setFrame:CGRectMake(0, _tableView.frame.size.height, 320, 30)]; - } - } -} - -#pragma mark - Event Handlers - -- (IBAction)showInfo:(id)sender -{ - InfoViewController *_infoViewController = [InfoViewController new]; - [_infoViewController setUser:_user]; - - if (DEVICE_iPAD) - { - if (!_popOverViewController) - _popOverViewController = [[UIPopoverController alloc] initWithContentViewController:_infoViewController]; - - [_popOverViewController setDelegate:self]; - - [_popOverViewController presentPopoverFromBarButtonItem:sender permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES]; - } - else - { - [[self navigationController] pushViewController:_infoViewController animated:YES]; - } -} - -#pragma mark - UIPopoverControllerDelegate Methods - -- (void)popoverControllerDidDismissPopover:(UIPopoverController *)popoverController -{ -} - -@end diff --git a/YakimbiTestUsingARC/YakimbiTest/ViewControllers/MainViewController.xib b/YakimbiTestUsingARC/YakimbiTest/ViewControllers/MainViewController.xib deleted file mode 100644 index 81a6684..0000000 --- a/YakimbiTestUsingARC/YakimbiTest/ViewControllers/MainViewController.xib +++ /dev/null @@ -1,303 +0,0 @@ - - - - 1552 - 11G63 - 3084 - 1138.51 - 569.00 - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 2083 - - - IBProxyObject - IBUIBarButtonItem - IBUILabel - IBUITableView - IBUIView - - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - PluginDependencyRecalculationVersion - - - - - IBFilesOwner - IBCocoaTouchFramework - - - IBFirstResponder - IBCocoaTouchFramework - - - Info - IBCocoaTouchFramework - 1 - - - - 274 - - - - 274 - {320, 473} - - - _NS:9 - - 3 - MQA - - YES - IBCocoaTouchFramework - YES - 1 - 0 - YES - 44 - 22 - 22 - - - - 292 - {{20, 481}, {280, 21}} - - - _NS:9 - NO - YES - 7 - NO - IBCocoaTouchFramework - Label - - 1 - MCAwIDAAA - darkTextColor - - - 0 - 1 - - 1 - 11 - - - Helvetica - 11 - 16 - - NO - - - {{0, 64}, {320, 504}} - - - - 3 - MQA - - 2 - - - - - NO - - - IBUIScreenMetrics - - YES - - - - - - {320, 568} - {568, 320} - - - IBCocoaTouchFramework - Retina 4 Full Screen - 2 - - IBCocoaTouchFramework - - - - - - - view - - - - 3 - - - - _tableView - - - - 19 - - - - _statusLabel - - - - 20 - - - - _infoBtn - - - - 23 - - - - dataSource - - - - 17 - - - - delegate - - - - 18 - - - - showInfo: - - - - 24 - - - - - - 0 - - - - - - 1 - - - - - - - - - -1 - - - File's Owner - - - -2 - - - - - 4 - - - - - - 11 - - - - - - 22 - - - - - - - MainViewController - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIResponder - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - - - - 24 - - - - - MainViewController - UIViewController - - showInfo: - id - - - showInfo: - - showInfo: - id - - - - UIBarButtonItem - UILabel - UITableView - - - - _infoBtn - UIBarButtonItem - - - _statusLabel - UILabel - - - _tableView - UITableView - - - - IBProjectSource - ./Classes/MainViewController.h - - - - - 0 - IBCocoaTouchFramework - YES - 3 - 2083 - - diff --git a/YakimbiTestUsingARC/YakimbiTest/ViewControllers/MainViewController_iPad.xib b/YakimbiTestUsingARC/YakimbiTest/ViewControllers/MainViewController_iPad.xib deleted file mode 100644 index 87b740a..0000000 --- a/YakimbiTestUsingARC/YakimbiTest/ViewControllers/MainViewController_iPad.xib +++ /dev/null @@ -1,307 +0,0 @@ - - - - 1552 - 11G63 - 3084 - 1138.51 - 569.00 - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 2083 - - - IBProxyObject - IBUIBarButtonItem - IBUILabel - IBUITableView - IBUIView - - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - PluginDependencyRecalculationVersion - - - - - IBFilesOwner - IBIPadFramework - - - IBFirstResponder - IBIPadFramework - - - Info - IBIPadFramework - 1 - - - - 292 - - - - 274 - {768, 931} - - - - _NS:9 - - 3 - MQA - - YES - IBIPadFramework - YES - 1 - 0 - YES - 44 - 22 - 22 - - - - 260 - {{20, 935}, {728, 21}} - - - _NS:9 - NO - YES - 7 - NO - IBIPadFramework - Label - - 1 - MCAwIDAAA - darkTextColor - - - 0 - 1 - - 1 - 17 - - - Helvetica - 17 - 16 - - NO - - - {{0, 64}, {768, 960}} - - - - - 3 - MQA - - 2 - - - NO - - 2 - - - NO - - - IBUIScreenMetrics - - YES - - - - - - {768, 1024} - {1024, 768} - - - IBIPadFramework - iPad Full Screen - 1 - - IBIPadFramework - - - - - - - view - - - - 3 - - - - _statusLabel - - - - 6 - - - - _tableView - - - - 7 - - - - _infoBtn - - - - 11 - - - - dataSource - - - - 8 - - - - delegate - - - - 9 - - - - showInfo: - - - - 12 - - - - - - 0 - - - - - - -1 - - - File's Owner - - - -2 - - - - - 2 - - - - - - - - - 4 - - - - - - 5 - - - - - 10 - - - - - - - MainViewController - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIResponder - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - - - - 12 - - - - - MainViewController - UIViewController - - showInfo: - id - - - showInfo: - - showInfo: - id - - - - UIBarButtonItem - UILabel - UITableView - - - - _infoBtn - UIBarButtonItem - - - _statusLabel - UILabel - - - _tableView - UITableView - - - - IBProjectSource - ./Classes/MainViewController.h - - - - - 0 - IBIPadFramework - YES - 3 - 2083 - - diff --git a/YakimbiTestUsingARC/YakimbiTest/ViewControllers/TableViewController.h b/YakimbiTestUsingARC/YakimbiTest/ViewControllers/TableViewController.h deleted file mode 100644 index 0a56069..0000000 --- a/YakimbiTestUsingARC/YakimbiTest/ViewControllers/TableViewController.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// TableViewController.h -// YakimbiTest -// -// Created by Syed Arsalan Pervez on 2/19/13. -// Copyright (c) 2013 SAPLogix. All rights reserved. -// - -#import - -@interface TableViewController : UITableViewController -{ - __weak UIPopoverController *_popOverViewController; -} - -@property (weak, nonatomic) UIPopoverController *popOverViewController; - -@end diff --git a/YakimbiTestUsingARC/YakimbiTest/ViewControllers/TableViewController.m b/YakimbiTestUsingARC/YakimbiTest/ViewControllers/TableViewController.m deleted file mode 100644 index 807b389..0000000 --- a/YakimbiTestUsingARC/YakimbiTest/ViewControllers/TableViewController.m +++ /dev/null @@ -1,119 +0,0 @@ -// -// TableViewController.m -// YakimbiTest -// -// Created by Syed Arsalan Pervez on 2/19/13. -// Copyright (c) 2013 SAPLogix. All rights reserved. -// - -#import "TableViewController.h" - -@interface TableViewController () - -@end - -@implementation TableViewController - -- (id)initWithStyle:(UITableViewStyle)style -{ - self = [super initWithStyle:style]; - if (self) { - // Custom initialization - } - return self; -} - -- (void)viewDidLoad -{ - [super viewDidLoad]; - - // Uncomment the following line to preserve selection between presentations. - // self.clearsSelectionOnViewWillAppear = NO; - - // Uncomment the following line to display an Edit button in the navigation bar for this view controller. - // self.navigationItem.rightBarButtonItem = self.editButtonItem; - - [self setContentSizeForViewInPopover:CGSizeMake(200, 200)]; -} - -- (void)didReceiveMemoryWarning -{ - [super didReceiveMemoryWarning]; - // Dispose of any resources that can be recreated. -} - -#pragma mark - Table view data source - -- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView -{ - // Return the number of sections. - return 1; -} - -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section -{ - // Return the number of rows in the section. - return 4; -} - -- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath -{ - static NSString *CellIdentifier = @"Cell"; - UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; - if (cell == nil) { - cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; - } - - cell.textLabel.text = [NSString stringWithFormat:@"Row%i", indexPath.row]; - - return cell; -} - -/* -// Override to support conditional editing of the table view. -- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath -{ - // Return NO if you do not want the specified item to be editable. - return YES; -} -*/ - -/* -// Override to support editing the table view. -- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath -{ - if (editingStyle == UITableViewCellEditingStyleDelete) { - // Delete the row from the data source - [tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade]; - } - else if (editingStyle == UITableViewCellEditingStyleInsert) { - // Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view - } -} -*/ - -/* -// Override to support rearranging the table view. -- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath -{ -} -*/ - -/* -// Override to support conditional rearranging of the table view. -- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath -{ - // Return NO if you do not want the item to be re-orderable. - return YES; -} -*/ - -#pragma mark - Table view delegate - -- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath -{ - if (_popOverViewController) - [_popOverViewController dismissPopoverAnimated:YES]; -} - -@end diff --git a/YakimbiTestUsingARC/YakimbiTest/ViewControllers/TableViewController.xib b/YakimbiTestUsingARC/YakimbiTest/ViewControllers/TableViewController.xib deleted file mode 100644 index 5012ed7..0000000 --- a/YakimbiTestUsingARC/YakimbiTest/ViewControllers/TableViewController.xib +++ /dev/null @@ -1,140 +0,0 @@ - - - - 1552 - 11G63 - 3084 - 1138.51 - 569.00 - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 2083 - - - IBProxyObject - IBUITableView - - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - PluginDependencyRecalculationVersion - - - - - IBFilesOwner - IBIPadFramework - - - IBFirstResponder - IBIPadFramework - - - - 274 - {768, 1024} - - - - 3 - MQA - - NO - YES - NO - IBIPadFramework - NO - 1 - 0 - YES - 44 - 22 - 22 - - - - - - - view - - - - 11 - - - - dataSource - - - - 9 - - - - delegate - - - - 10 - - - - - - 0 - - - - - - -1 - - - File's Owner - - - -2 - - - - - 8 - - - - - - - TableViewController - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIResponder - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - - - - 11 - - - - - TableViewController - UITableViewController - - IBProjectSource - ./Classes/TableViewController.h - - - - - 0 - IBIPadFramework - YES - 3 - 2083 - - diff --git a/YakimbiTestUsingARC/YakimbiTest/YakimbiTest-Info.plist b/YakimbiTestUsingARC/YakimbiTest/YakimbiTest-Info.plist deleted file mode 100644 index d52e538..0000000 --- a/YakimbiTestUsingARC/YakimbiTest/YakimbiTest-Info.plist +++ /dev/null @@ -1,45 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleDisplayName - ${PRODUCT_NAME} - CFBundleExecutable - ${EXECUTABLE_NAME} - CFBundleIdentifier - com.saplogix.${PRODUCT_NAME:rfc1034identifier} - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - ${PRODUCT_NAME} - CFBundlePackageType - APPL - CFBundleShortVersionString - 1.0 - CFBundleSignature - ???? - CFBundleVersion - 1.0 - LSRequiresIPhoneOS - - UIRequiredDeviceCapabilities - - armv7 - - UISupportedInterfaceOrientations - - UIInterfaceOrientationPortrait - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight - - UISupportedInterfaceOrientations~ipad - - UIInterfaceOrientationPortrait - UIInterfaceOrientationPortraitUpsideDown - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight - - - diff --git a/YakimbiTestUsingARC/YakimbiTest/YakimbiTest-Prefix.pch b/YakimbiTestUsingARC/YakimbiTest/YakimbiTest-Prefix.pch deleted file mode 100644 index 5d0ad32..0000000 --- a/YakimbiTestUsingARC/YakimbiTest/YakimbiTest-Prefix.pch +++ /dev/null @@ -1,26 +0,0 @@ -// -// Prefix header for all source files of the 'YakimbiTest' target in the 'YakimbiTest' project -// - -#import - -#ifndef __IPHONE_3_0 -#warning "This project uses features only available in iOS SDK 3.0 and later." -#endif - -#ifdef __OBJC__ - #import - #import - #import - -#import "User.h" -#import "Folder.h" -#import "File.h" - -#import "Macros.h" -#import "AppConstants.h" -#import "DatabaseHandler.h" -#import "Parser.h" -#import "HTTPRequestOperation.h" - -#endif diff --git a/YakimbiTestUsingARC/YakimbiTest/YakimbiTest.xcdatamodeld/.xccurrentversion b/YakimbiTestUsingARC/YakimbiTest/YakimbiTest.xcdatamodeld/.xccurrentversion deleted file mode 100644 index 25f4817..0000000 --- a/YakimbiTestUsingARC/YakimbiTest/YakimbiTest.xcdatamodeld/.xccurrentversion +++ /dev/null @@ -1,8 +0,0 @@ - - - - - _XCCurrentVersionName - YakimbiTest.xcdatamodel - - diff --git a/YakimbiTestUsingARC/YakimbiTest/YakimbiTest.xcdatamodeld/YakimbiTest.xcdatamodel/contents b/YakimbiTestUsingARC/YakimbiTest/YakimbiTest.xcdatamodeld/YakimbiTest.xcdatamodel/contents deleted file mode 100644 index 24fff4c..0000000 --- a/YakimbiTestUsingARC/YakimbiTest/YakimbiTest.xcdatamodeld/YakimbiTest.xcdatamodel/contents +++ /dev/null @@ -1,49 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/YakimbiTestUsingARC/YakimbiTest/en.lproj/InfoPlist.strings b/YakimbiTestUsingARC/YakimbiTest/en.lproj/InfoPlist.strings deleted file mode 100644 index 477b28f..0000000 --- a/YakimbiTestUsingARC/YakimbiTest/en.lproj/InfoPlist.strings +++ /dev/null @@ -1,2 +0,0 @@ -/* Localized versions of Info.plist keys */ - diff --git a/YakimbiTestUsingARC/YakimbiTest/main.m b/YakimbiTestUsingARC/YakimbiTest/main.m deleted file mode 100644 index 1460e08..0000000 --- a/YakimbiTestUsingARC/YakimbiTest/main.m +++ /dev/null @@ -1,18 +0,0 @@ -// -// main.m -// YakimbiTest -// -// Created by Syed Arsalan Pervez on 2/16/13. -// Copyright (c) 2013 SAPLogix. All rights reserved. -// - -#import - -#import "AppDelegate.h" - -int main(int argc, char *argv[]) -{ - @autoreleasepool { - return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); - } -} diff --git a/YakimbiTestUsingARC/YakimbiTestTests/YakimbiTestTests-Info.plist b/YakimbiTestUsingARC/YakimbiTestTests/YakimbiTestTests-Info.plist deleted file mode 100644 index 384cea3..0000000 --- a/YakimbiTestUsingARC/YakimbiTestTests/YakimbiTestTests-Info.plist +++ /dev/null @@ -1,22 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - ${EXECUTABLE_NAME} - CFBundleIdentifier - com.saplogix.${PRODUCT_NAME:rfc1034identifier} - CFBundleInfoDictionaryVersion - 6.0 - CFBundlePackageType - BNDL - CFBundleShortVersionString - 1.0 - CFBundleSignature - ???? - CFBundleVersion - 1 - - diff --git a/YakimbiTestUsingARC/YakimbiTestTests/YakimbiTestTests.h b/YakimbiTestUsingARC/YakimbiTestTests/YakimbiTestTests.h deleted file mode 100644 index 4192295..0000000 --- a/YakimbiTestUsingARC/YakimbiTestTests/YakimbiTestTests.h +++ /dev/null @@ -1,13 +0,0 @@ -// -// YakimbiTestTests.h -// YakimbiTestTests -// -// Created by Syed Arsalan Pervez on 2/16/13. -// Copyright (c) 2013 SAPLogix. All rights reserved. -// - -#import - -@interface YakimbiTestTests : SenTestCase - -@end diff --git a/YakimbiTestUsingARC/YakimbiTestTests/YakimbiTestTests.m b/YakimbiTestUsingARC/YakimbiTestTests/YakimbiTestTests.m deleted file mode 100644 index e2b72cf..0000000 --- a/YakimbiTestUsingARC/YakimbiTestTests/YakimbiTestTests.m +++ /dev/null @@ -1,32 +0,0 @@ -// -// YakimbiTestTests.m -// YakimbiTestTests -// -// Created by Syed Arsalan Pervez on 2/16/13. -// Copyright (c) 2013 SAPLogix. All rights reserved. -// - -#import "YakimbiTestTests.h" - -@implementation YakimbiTestTests - -- (void)setUp -{ - [super setUp]; - - // Set-up code here. -} - -- (void)tearDown -{ - // Tear-down code here. - - [super tearDown]; -} - -- (void)testExample -{ - STFail(@"Unit tests are not implemented yet in YakimbiTestTests"); -} - -@end diff --git a/YakimbiTestUsingARC/YakimbiTestTests/en.lproj/InfoPlist.strings b/YakimbiTestUsingARC/YakimbiTestTests/en.lproj/InfoPlist.strings deleted file mode 100644 index 477b28f..0000000 --- a/YakimbiTestUsingARC/YakimbiTestTests/en.lproj/InfoPlist.strings +++ /dev/null @@ -1,2 +0,0 @@ -/* Localized versions of Info.plist keys */ -