├── .gitignore ├── .gitmodules ├── GridMonster.xcodeproj └── project.pbxproj ├── GridMonster ├── GridMonster-Info.plist ├── GridMonster-Prefix.pch ├── GridMonsterAppDelegate.h ├── GridMonsterAppDelegate.m ├── GridMonsterViewController.h ├── GridMonsterViewController.m ├── GridTestObject.h ├── GridTestObject.m ├── LoremIpsum.h ├── LoremIpsum.m ├── en.lproj │ ├── GridMonsterViewController.xib │ ├── InfoPlist.strings │ └── MainWindow.xib └── main.m └── README.md /.gitignore: -------------------------------------------------------------------------------- 1 | # xcode noise 2 | build/* 3 | *.pbxuser 4 | *.mode1v3 5 | *.perspectivev3 6 | slurper_config.yml 7 | *.slurper 8 | # osx noise 9 | .DS_Store 10 | profile 11 | *.moved-aside 12 | *.xcbkptlist 13 | UserInterfaceState.xcuserstate 14 | *.xcworkspace 15 | !default.xcworkspace 16 | xcuserdata 17 | profile 18 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "grid-toolkits/MMGridView"] 2 | path = grid-toolkits/MMGridView 3 | url = https://github.com/provideal/MMGridView.git 4 | [submodule "grid-toolkits/AQGridView"] 5 | path = grid-toolkits/AQGridView 6 | url = https://github.com/AlanQuatermain/AQGridView.git 7 | [submodule "grid-toolkits/CHGridView"] 8 | path = grid-toolkits/CHGridView 9 | url = https://github.com/camh/CHGridView.git 10 | [submodule "grid-toolkits/OHGridView"] 11 | path = grid-toolkits/OHGridView 12 | url = https://github.com/AliSoftware/OHGridView.git 13 | -------------------------------------------------------------------------------- /GridMonster.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 8C37722D1363A22C005D9E41 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8C37722C1363A22C005D9E41 /* UIKit.framework */; }; 11 | 8C37722F1363A22C005D9E41 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8C37722E1363A22C005D9E41 /* Foundation.framework */; }; 12 | 8C3772311363A22C005D9E41 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8C3772301363A22C005D9E41 /* CoreGraphics.framework */; }; 13 | 8C3772371363A22C005D9E41 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 8C3772351363A22C005D9E41 /* InfoPlist.strings */; }; 14 | 8C37723A1363A22C005D9E41 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C3772391363A22C005D9E41 /* main.m */; }; 15 | 8C37723D1363A22C005D9E41 /* GridMonsterAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C37723C1363A22C005D9E41 /* GridMonsterAppDelegate.m */; }; 16 | 8C3772401363A22C005D9E41 /* MainWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 8C37723E1363A22C005D9E41 /* MainWindow.xib */; }; 17 | 8C3772431363A22C005D9E41 /* GridMonsterViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C3772421363A22C005D9E41 /* GridMonsterViewController.m */; }; 18 | 8C3772461363A22C005D9E41 /* GridMonsterViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 8C3772441363A22C005D9E41 /* GridMonsterViewController.xib */; }; 19 | 8C37725C1363A307005D9E41 /* OHGridView.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C37725A1363A307005D9E41 /* OHGridView.m */; }; 20 | 8C3772611363A32F005D9E41 /* MMGridViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C37725D1363A32F005D9E41 /* MMGridViewCell.m */; }; 21 | 8C3772621363A32F005D9E41 /* MMGridView.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C37725F1363A32F005D9E41 /* MMGridView.m */; }; 22 | 8C3772651363A339005D9E41 /* MMGridViewDefaultCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C3772631363A339005D9E41 /* MMGridViewDefaultCell.m */; }; 23 | 8C37726E1363A356005D9E41 /* CHTileView.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C3772661363A356005D9E41 /* CHTileView.m */; }; 24 | 8C37726F1363A356005D9E41 /* CHSectionHeaderView.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C3772681363A356005D9E41 /* CHSectionHeaderView.m */; }; 25 | 8C3772701363A356005D9E41 /* CHImageTileView.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C37726A1363A356005D9E41 /* CHImageTileView.m */; }; 26 | 8C3772711363A356005D9E41 /* CHGridView.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C37726C1363A356005D9E41 /* CHGridView.m */; }; 27 | 8C3772791363A35F005D9E41 /* CHGridLayout.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C3772741363A35F005D9E41 /* CHGridLayout.m */; }; 28 | 8C37727A1363A35F005D9E41 /* CHGridLayoutSection.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C3772761363A35F005D9E41 /* CHGridLayoutSection.m */; }; 29 | 8C37727B1363A35F005D9E41 /* CHGridLayoutTile.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C3772781363A35F005D9E41 /* CHGridLayoutTile.m */; }; 30 | 8C3772931363A372005D9E41 /* UIColor+AQGridView.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C37727C1363A372005D9E41 /* UIColor+AQGridView.m */; }; 31 | 8C3772941363A372005D9E41 /* NSIndexSet+AQIsSetContiguous.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C37727E1363A372005D9E41 /* NSIndexSet+AQIsSetContiguous.m */; }; 32 | 8C3772951363A372005D9E41 /* NSIndexSet+AQIndexesOutsideSet.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C3772801363A372005D9E41 /* NSIndexSet+AQIndexesOutsideSet.m */; }; 33 | 8C3772961363A372005D9E41 /* AQGridViewUpdateItem.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C3772821363A372005D9E41 /* AQGridViewUpdateItem.m */; }; 34 | 8C3772971363A372005D9E41 /* AQGridViewUpdateInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C3772841363A372005D9E41 /* AQGridViewUpdateInfo.m */; }; 35 | 8C3772981363A372005D9E41 /* AQGridViewData.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C3772861363A372005D9E41 /* AQGridViewData.m */; }; 36 | 8C3772991363A372005D9E41 /* AQGridViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C3772881363A372005D9E41 /* AQGridViewController.m */; }; 37 | 8C37729A1363A372005D9E41 /* AQGridViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C37728B1363A372005D9E41 /* AQGridViewCell.m */; }; 38 | 8C37729B1363A372005D9E41 /* AQGridViewAnimatorItem.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C37728D1363A372005D9E41 /* AQGridViewAnimatorItem.m */; }; 39 | 8C37729C1363A372005D9E41 /* AQGridView.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C3772911363A372005D9E41 /* AQGridView.m */; }; 40 | 8C37729E1363A392005D9E41 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8C37729D1363A392005D9E41 /* QuartzCore.framework */; }; 41 | 8C3772A41363AEEE005D9E41 /* GridTestObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C3772A31363AEEE005D9E41 /* GridTestObject.m */; }; 42 | 8C3772B11363B274005D9E41 /* LoremIpsum.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C3772AF1363B273005D9E41 /* LoremIpsum.m */; }; 43 | /* End PBXBuildFile section */ 44 | 45 | /* Begin PBXFileReference section */ 46 | 8C3772281363A22C005D9E41 /* GridMonster.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = GridMonster.app; sourceTree = BUILT_PRODUCTS_DIR; }; 47 | 8C37722C1363A22C005D9E41 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; 48 | 8C37722E1363A22C005D9E41 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; 49 | 8C3772301363A22C005D9E41 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; 50 | 8C3772341363A22C005D9E41 /* GridMonster-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "GridMonster-Info.plist"; sourceTree = ""; }; 51 | 8C3772361363A22C005D9E41 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; 52 | 8C3772381363A22C005D9E41 /* GridMonster-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "GridMonster-Prefix.pch"; sourceTree = ""; }; 53 | 8C3772391363A22C005D9E41 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; 54 | 8C37723B1363A22C005D9E41 /* GridMonsterAppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GridMonsterAppDelegate.h; sourceTree = ""; }; 55 | 8C37723C1363A22C005D9E41 /* GridMonsterAppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = GridMonsterAppDelegate.m; sourceTree = ""; }; 56 | 8C37723F1363A22C005D9E41 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/MainWindow.xib; sourceTree = ""; }; 57 | 8C3772411363A22C005D9E41 /* GridMonsterViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GridMonsterViewController.h; sourceTree = ""; }; 58 | 8C3772421363A22C005D9E41 /* GridMonsterViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = GridMonsterViewController.m; sourceTree = ""; }; 59 | 8C3772451363A22C005D9E41 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/GridMonsterViewController.xib; sourceTree = ""; }; 60 | 8C37725A1363A307005D9E41 /* OHGridView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OHGridView.m; sourceTree = ""; }; 61 | 8C37725B1363A307005D9E41 /* OHGridView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OHGridView.h; sourceTree = ""; }; 62 | 8C37725D1363A32F005D9E41 /* MMGridViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MMGridViewCell.m; path = MMGridView/Classes/MMGridViewCell.m; sourceTree = ""; }; 63 | 8C37725E1363A32F005D9E41 /* MMGridViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MMGridViewCell.h; path = MMGridView/Classes/MMGridViewCell.h; sourceTree = ""; }; 64 | 8C37725F1363A32F005D9E41 /* MMGridView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MMGridView.m; path = MMGridView/Classes/MMGridView.m; sourceTree = ""; }; 65 | 8C3772601363A32F005D9E41 /* MMGridView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MMGridView.h; path = MMGridView/Classes/MMGridView.h; sourceTree = ""; }; 66 | 8C3772631363A339005D9E41 /* MMGridViewDefaultCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MMGridViewDefaultCell.m; path = MMGridView/MMGridViewDefaultCell.m; sourceTree = ""; }; 67 | 8C3772641363A339005D9E41 /* MMGridViewDefaultCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MMGridViewDefaultCell.h; path = MMGridView/MMGridViewDefaultCell.h; sourceTree = ""; }; 68 | 8C3772661363A356005D9E41 /* CHTileView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CHTileView.m; sourceTree = ""; }; 69 | 8C3772671363A356005D9E41 /* CHTileView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CHTileView.h; sourceTree = ""; }; 70 | 8C3772681363A356005D9E41 /* CHSectionHeaderView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CHSectionHeaderView.m; sourceTree = ""; }; 71 | 8C3772691363A356005D9E41 /* CHSectionHeaderView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CHSectionHeaderView.h; sourceTree = ""; }; 72 | 8C37726A1363A356005D9E41 /* CHImageTileView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CHImageTileView.m; sourceTree = ""; }; 73 | 8C37726B1363A356005D9E41 /* CHImageTileView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CHImageTileView.h; sourceTree = ""; }; 74 | 8C37726C1363A356005D9E41 /* CHGridView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CHGridView.m; sourceTree = ""; }; 75 | 8C37726D1363A356005D9E41 /* CHGridView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CHGridView.h; sourceTree = ""; }; 76 | 8C3772731363A35F005D9E41 /* CHGridLayout.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CHGridLayout.h; sourceTree = ""; }; 77 | 8C3772741363A35F005D9E41 /* CHGridLayout.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CHGridLayout.m; sourceTree = ""; }; 78 | 8C3772751363A35F005D9E41 /* CHGridLayoutSection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CHGridLayoutSection.h; sourceTree = ""; }; 79 | 8C3772761363A35F005D9E41 /* CHGridLayoutSection.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CHGridLayoutSection.m; sourceTree = ""; }; 80 | 8C3772771363A35F005D9E41 /* CHGridLayoutTile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CHGridLayoutTile.h; sourceTree = ""; }; 81 | 8C3772781363A35F005D9E41 /* CHGridLayoutTile.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CHGridLayoutTile.m; sourceTree = ""; }; 82 | 8C37727C1363A372005D9E41 /* UIColor+AQGridView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "UIColor+AQGridView.m"; path = "Classes/UIColor+AQGridView.m"; sourceTree = ""; }; 83 | 8C37727D1363A372005D9E41 /* UIColor+AQGridView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "UIColor+AQGridView.h"; path = "Classes/UIColor+AQGridView.h"; sourceTree = ""; }; 84 | 8C37727E1363A372005D9E41 /* NSIndexSet+AQIsSetContiguous.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "NSIndexSet+AQIsSetContiguous.m"; path = "Classes/NSIndexSet+AQIsSetContiguous.m"; sourceTree = ""; }; 85 | 8C37727F1363A372005D9E41 /* NSIndexSet+AQIsSetContiguous.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "NSIndexSet+AQIsSetContiguous.h"; path = "Classes/NSIndexSet+AQIsSetContiguous.h"; sourceTree = ""; }; 86 | 8C3772801363A372005D9E41 /* NSIndexSet+AQIndexesOutsideSet.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "NSIndexSet+AQIndexesOutsideSet.m"; path = "Classes/NSIndexSet+AQIndexesOutsideSet.m"; sourceTree = ""; }; 87 | 8C3772811363A372005D9E41 /* NSIndexSet+AQIndexesOutsideSet.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "NSIndexSet+AQIndexesOutsideSet.h"; path = "Classes/NSIndexSet+AQIndexesOutsideSet.h"; sourceTree = ""; }; 88 | 8C3772821363A372005D9E41 /* AQGridViewUpdateItem.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AQGridViewUpdateItem.m; path = Classes/AQGridViewUpdateItem.m; sourceTree = ""; }; 89 | 8C3772831363A372005D9E41 /* AQGridViewUpdateItem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AQGridViewUpdateItem.h; path = Classes/AQGridViewUpdateItem.h; sourceTree = ""; }; 90 | 8C3772841363A372005D9E41 /* AQGridViewUpdateInfo.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AQGridViewUpdateInfo.m; path = Classes/AQGridViewUpdateInfo.m; sourceTree = ""; }; 91 | 8C3772851363A372005D9E41 /* AQGridViewUpdateInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AQGridViewUpdateInfo.h; path = Classes/AQGridViewUpdateInfo.h; sourceTree = ""; }; 92 | 8C3772861363A372005D9E41 /* AQGridViewData.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AQGridViewData.m; path = Classes/AQGridViewData.m; sourceTree = ""; }; 93 | 8C3772871363A372005D9E41 /* AQGridViewData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AQGridViewData.h; path = Classes/AQGridViewData.h; sourceTree = ""; }; 94 | 8C3772881363A372005D9E41 /* AQGridViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AQGridViewController.m; path = Classes/AQGridViewController.m; sourceTree = ""; }; 95 | 8C3772891363A372005D9E41 /* AQGridViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AQGridViewController.h; path = Classes/AQGridViewController.h; sourceTree = ""; }; 96 | 8C37728A1363A372005D9E41 /* AQGridViewCell+AQGridViewCellPrivate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "AQGridViewCell+AQGridViewCellPrivate.h"; path = "Classes/AQGridViewCell+AQGridViewCellPrivate.h"; sourceTree = ""; }; 97 | 8C37728B1363A372005D9E41 /* AQGridViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AQGridViewCell.m; path = Classes/AQGridViewCell.m; sourceTree = ""; }; 98 | 8C37728C1363A372005D9E41 /* AQGridViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AQGridViewCell.h; path = Classes/AQGridViewCell.h; sourceTree = ""; }; 99 | 8C37728D1363A372005D9E41 /* AQGridViewAnimatorItem.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AQGridViewAnimatorItem.m; path = Classes/AQGridViewAnimatorItem.m; sourceTree = ""; }; 100 | 8C37728E1363A372005D9E41 /* AQGridViewAnimatorItem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AQGridViewAnimatorItem.h; path = Classes/AQGridViewAnimatorItem.h; sourceTree = ""; }; 101 | 8C37728F1363A372005D9E41 /* AQGridView+CellLocationDelegation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "AQGridView+CellLocationDelegation.h"; path = "Classes/AQGridView+CellLocationDelegation.h"; sourceTree = ""; }; 102 | 8C3772901363A372005D9E41 /* AQGridView+CellLayout.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "AQGridView+CellLayout.h"; path = "Classes/AQGridView+CellLayout.h"; sourceTree = ""; }; 103 | 8C3772911363A372005D9E41 /* AQGridView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AQGridView.m; path = Classes/AQGridView.m; sourceTree = ""; }; 104 | 8C3772921363A372005D9E41 /* AQGridView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AQGridView.h; path = Classes/AQGridView.h; sourceTree = ""; }; 105 | 8C37729D1363A392005D9E41 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; }; 106 | 8C3772A21363AEEE005D9E41 /* GridTestObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GridTestObject.h; sourceTree = ""; }; 107 | 8C3772A31363AEEE005D9E41 /* GridTestObject.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GridTestObject.m; sourceTree = ""; }; 108 | 8C3772AF1363B273005D9E41 /* LoremIpsum.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LoremIpsum.m; sourceTree = ""; }; 109 | 8C3772B01363B274005D9E41 /* LoremIpsum.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LoremIpsum.h; sourceTree = ""; }; 110 | /* End PBXFileReference section */ 111 | 112 | /* Begin PBXFrameworksBuildPhase section */ 113 | 8C3772251363A22C005D9E41 /* Frameworks */ = { 114 | isa = PBXFrameworksBuildPhase; 115 | buildActionMask = 2147483647; 116 | files = ( 117 | 8C37729E1363A392005D9E41 /* QuartzCore.framework in Frameworks */, 118 | 8C37722D1363A22C005D9E41 /* UIKit.framework in Frameworks */, 119 | 8C37722F1363A22C005D9E41 /* Foundation.framework in Frameworks */, 120 | 8C3772311363A22C005D9E41 /* CoreGraphics.framework in Frameworks */, 121 | ); 122 | runOnlyForDeploymentPostprocessing = 0; 123 | }; 124 | /* End PBXFrameworksBuildPhase section */ 125 | 126 | /* Begin PBXGroup section */ 127 | 8C37721D1363A22B005D9E41 = { 128 | isa = PBXGroup; 129 | children = ( 130 | 8C3772321363A22C005D9E41 /* GridMonster */, 131 | 8C37722B1363A22C005D9E41 /* Frameworks */, 132 | 8C3772291363A22C005D9E41 /* Products */, 133 | ); 134 | sourceTree = ""; 135 | }; 136 | 8C3772291363A22C005D9E41 /* Products */ = { 137 | isa = PBXGroup; 138 | children = ( 139 | 8C3772281363A22C005D9E41 /* GridMonster.app */, 140 | ); 141 | name = Products; 142 | sourceTree = ""; 143 | }; 144 | 8C37722B1363A22C005D9E41 /* Frameworks */ = { 145 | isa = PBXGroup; 146 | children = ( 147 | 8C37729D1363A392005D9E41 /* QuartzCore.framework */, 148 | 8C37722C1363A22C005D9E41 /* UIKit.framework */, 149 | 8C37722E1363A22C005D9E41 /* Foundation.framework */, 150 | 8C3772301363A22C005D9E41 /* CoreGraphics.framework */, 151 | ); 152 | name = Frameworks; 153 | sourceTree = ""; 154 | }; 155 | 8C3772321363A22C005D9E41 /* GridMonster */ = { 156 | isa = PBXGroup; 157 | children = ( 158 | 8C3772B21363B28B005D9E41 /* Supporting Tools */, 159 | 8C3772541363A26B005D9E41 /* Grid Toolkits */, 160 | 8C37723B1363A22C005D9E41 /* GridMonsterAppDelegate.h */, 161 | 8C37723C1363A22C005D9E41 /* GridMonsterAppDelegate.m */, 162 | 8C37723E1363A22C005D9E41 /* MainWindow.xib */, 163 | 8C3772411363A22C005D9E41 /* GridMonsterViewController.h */, 164 | 8C3772421363A22C005D9E41 /* GridMonsterViewController.m */, 165 | 8C3772441363A22C005D9E41 /* GridMonsterViewController.xib */, 166 | 8C3772A21363AEEE005D9E41 /* GridTestObject.h */, 167 | 8C3772A31363AEEE005D9E41 /* GridTestObject.m */, 168 | 8C3772331363A22C005D9E41 /* Supporting Files */, 169 | ); 170 | path = GridMonster; 171 | sourceTree = ""; 172 | }; 173 | 8C3772331363A22C005D9E41 /* Supporting Files */ = { 174 | isa = PBXGroup; 175 | children = ( 176 | 8C3772341363A22C005D9E41 /* GridMonster-Info.plist */, 177 | 8C3772351363A22C005D9E41 /* InfoPlist.strings */, 178 | 8C3772381363A22C005D9E41 /* GridMonster-Prefix.pch */, 179 | 8C3772391363A22C005D9E41 /* main.m */, 180 | ); 181 | name = "Supporting Files"; 182 | sourceTree = ""; 183 | }; 184 | 8C3772541363A26B005D9E41 /* Grid Toolkits */ = { 185 | isa = PBXGroup; 186 | children = ( 187 | 8C3772561363A292005D9E41 /* AQGridVIew */, 188 | 8C3772571363A2A2005D9E41 /* CHGridView */, 189 | 8C3772591363A2C8005D9E41 /* MMGridView */, 190 | 8C3772581363A2B6005D9E41 /* OHGridView */, 191 | ); 192 | name = "Grid Toolkits"; 193 | path = "../grid-toolkits"; 194 | sourceTree = ""; 195 | }; 196 | 8C3772561363A292005D9E41 /* AQGridVIew */ = { 197 | isa = PBXGroup; 198 | children = ( 199 | 8C37727C1363A372005D9E41 /* UIColor+AQGridView.m */, 200 | 8C37727D1363A372005D9E41 /* UIColor+AQGridView.h */, 201 | 8C37727E1363A372005D9E41 /* NSIndexSet+AQIsSetContiguous.m */, 202 | 8C37727F1363A372005D9E41 /* NSIndexSet+AQIsSetContiguous.h */, 203 | 8C3772801363A372005D9E41 /* NSIndexSet+AQIndexesOutsideSet.m */, 204 | 8C3772811363A372005D9E41 /* NSIndexSet+AQIndexesOutsideSet.h */, 205 | 8C3772821363A372005D9E41 /* AQGridViewUpdateItem.m */, 206 | 8C3772831363A372005D9E41 /* AQGridViewUpdateItem.h */, 207 | 8C3772841363A372005D9E41 /* AQGridViewUpdateInfo.m */, 208 | 8C3772851363A372005D9E41 /* AQGridViewUpdateInfo.h */, 209 | 8C3772861363A372005D9E41 /* AQGridViewData.m */, 210 | 8C3772871363A372005D9E41 /* AQGridViewData.h */, 211 | 8C3772881363A372005D9E41 /* AQGridViewController.m */, 212 | 8C3772891363A372005D9E41 /* AQGridViewController.h */, 213 | 8C37728A1363A372005D9E41 /* AQGridViewCell+AQGridViewCellPrivate.h */, 214 | 8C37728B1363A372005D9E41 /* AQGridViewCell.m */, 215 | 8C37728C1363A372005D9E41 /* AQGridViewCell.h */, 216 | 8C37728D1363A372005D9E41 /* AQGridViewAnimatorItem.m */, 217 | 8C37728E1363A372005D9E41 /* AQGridViewAnimatorItem.h */, 218 | 8C37728F1363A372005D9E41 /* AQGridView+CellLocationDelegation.h */, 219 | 8C3772901363A372005D9E41 /* AQGridView+CellLayout.h */, 220 | 8C3772911363A372005D9E41 /* AQGridView.m */, 221 | 8C3772921363A372005D9E41 /* AQGridView.h */, 222 | ); 223 | name = AQGridVIew; 224 | path = AQGridView; 225 | sourceTree = ""; 226 | }; 227 | 8C3772571363A2A2005D9E41 /* CHGridView */ = { 228 | isa = PBXGroup; 229 | children = ( 230 | 8C3772721363A35F005D9E41 /* CHGridLayout */, 231 | 8C3772661363A356005D9E41 /* CHTileView.m */, 232 | 8C3772671363A356005D9E41 /* CHTileView.h */, 233 | 8C3772681363A356005D9E41 /* CHSectionHeaderView.m */, 234 | 8C3772691363A356005D9E41 /* CHSectionHeaderView.h */, 235 | 8C37726A1363A356005D9E41 /* CHImageTileView.m */, 236 | 8C37726B1363A356005D9E41 /* CHImageTileView.h */, 237 | 8C37726C1363A356005D9E41 /* CHGridView.m */, 238 | 8C37726D1363A356005D9E41 /* CHGridView.h */, 239 | ); 240 | path = CHGridView; 241 | sourceTree = ""; 242 | }; 243 | 8C3772581363A2B6005D9E41 /* OHGridView */ = { 244 | isa = PBXGroup; 245 | children = ( 246 | 8C37725A1363A307005D9E41 /* OHGridView.m */, 247 | 8C37725B1363A307005D9E41 /* OHGridView.h */, 248 | ); 249 | path = OHGridView; 250 | sourceTree = ""; 251 | }; 252 | 8C3772591363A2C8005D9E41 /* MMGridView */ = { 253 | isa = PBXGroup; 254 | children = ( 255 | 8C3772631363A339005D9E41 /* MMGridViewDefaultCell.m */, 256 | 8C3772641363A339005D9E41 /* MMGridViewDefaultCell.h */, 257 | 8C37725D1363A32F005D9E41 /* MMGridViewCell.m */, 258 | 8C37725E1363A32F005D9E41 /* MMGridViewCell.h */, 259 | 8C37725F1363A32F005D9E41 /* MMGridView.m */, 260 | 8C3772601363A32F005D9E41 /* MMGridView.h */, 261 | ); 262 | path = MMGridView; 263 | sourceTree = ""; 264 | }; 265 | 8C3772721363A35F005D9E41 /* CHGridLayout */ = { 266 | isa = PBXGroup; 267 | children = ( 268 | 8C3772731363A35F005D9E41 /* CHGridLayout.h */, 269 | 8C3772741363A35F005D9E41 /* CHGridLayout.m */, 270 | 8C3772751363A35F005D9E41 /* CHGridLayoutSection.h */, 271 | 8C3772761363A35F005D9E41 /* CHGridLayoutSection.m */, 272 | 8C3772771363A35F005D9E41 /* CHGridLayoutTile.h */, 273 | 8C3772781363A35F005D9E41 /* CHGridLayoutTile.m */, 274 | ); 275 | path = CHGridLayout; 276 | sourceTree = ""; 277 | }; 278 | 8C3772B21363B28B005D9E41 /* Supporting Tools */ = { 279 | isa = PBXGroup; 280 | children = ( 281 | 8C3772B31363B2BA005D9E41 /* Lorem Ipsum Generator */, 282 | ); 283 | name = "Supporting Tools"; 284 | sourceTree = ""; 285 | }; 286 | 8C3772B31363B2BA005D9E41 /* Lorem Ipsum Generator */ = { 287 | isa = PBXGroup; 288 | children = ( 289 | 8C3772AF1363B273005D9E41 /* LoremIpsum.m */, 290 | 8C3772B01363B274005D9E41 /* LoremIpsum.h */, 291 | ); 292 | name = "Lorem Ipsum Generator"; 293 | sourceTree = ""; 294 | }; 295 | /* End PBXGroup section */ 296 | 297 | /* Begin PBXNativeTarget section */ 298 | 8C3772271363A22C005D9E41 /* GridMonster */ = { 299 | isa = PBXNativeTarget; 300 | buildConfigurationList = 8C3772491363A22C005D9E41 /* Build configuration list for PBXNativeTarget "GridMonster" */; 301 | buildPhases = ( 302 | 8C3772241363A22C005D9E41 /* Sources */, 303 | 8C3772251363A22C005D9E41 /* Frameworks */, 304 | 8C3772261363A22C005D9E41 /* Resources */, 305 | ); 306 | buildRules = ( 307 | ); 308 | dependencies = ( 309 | ); 310 | name = GridMonster; 311 | productName = GridMonster; 312 | productReference = 8C3772281363A22C005D9E41 /* GridMonster.app */; 313 | productType = "com.apple.product-type.application"; 314 | }; 315 | /* End PBXNativeTarget section */ 316 | 317 | /* Begin PBXProject section */ 318 | 8C37721F1363A22B005D9E41 /* Project object */ = { 319 | isa = PBXProject; 320 | attributes = { 321 | ORGANIZATIONNAME = "Juniper Networks, Inc."; 322 | }; 323 | buildConfigurationList = 8C3772221363A22B005D9E41 /* Build configuration list for PBXProject "GridMonster" */; 324 | compatibilityVersion = "Xcode 3.2"; 325 | developmentRegion = English; 326 | hasScannedForEncodings = 0; 327 | knownRegions = ( 328 | en, 329 | ); 330 | mainGroup = 8C37721D1363A22B005D9E41; 331 | productRefGroup = 8C3772291363A22C005D9E41 /* Products */; 332 | projectDirPath = ""; 333 | projectRoot = ""; 334 | targets = ( 335 | 8C3772271363A22C005D9E41 /* GridMonster */, 336 | ); 337 | }; 338 | /* End PBXProject section */ 339 | 340 | /* Begin PBXResourcesBuildPhase section */ 341 | 8C3772261363A22C005D9E41 /* Resources */ = { 342 | isa = PBXResourcesBuildPhase; 343 | buildActionMask = 2147483647; 344 | files = ( 345 | 8C3772371363A22C005D9E41 /* InfoPlist.strings in Resources */, 346 | 8C3772401363A22C005D9E41 /* MainWindow.xib in Resources */, 347 | 8C3772461363A22C005D9E41 /* GridMonsterViewController.xib in Resources */, 348 | ); 349 | runOnlyForDeploymentPostprocessing = 0; 350 | }; 351 | /* End PBXResourcesBuildPhase section */ 352 | 353 | /* Begin PBXSourcesBuildPhase section */ 354 | 8C3772241363A22C005D9E41 /* Sources */ = { 355 | isa = PBXSourcesBuildPhase; 356 | buildActionMask = 2147483647; 357 | files = ( 358 | 8C37723A1363A22C005D9E41 /* main.m in Sources */, 359 | 8C37723D1363A22C005D9E41 /* GridMonsterAppDelegate.m in Sources */, 360 | 8C3772431363A22C005D9E41 /* GridMonsterViewController.m in Sources */, 361 | 8C37725C1363A307005D9E41 /* OHGridView.m in Sources */, 362 | 8C3772611363A32F005D9E41 /* MMGridViewCell.m in Sources */, 363 | 8C3772621363A32F005D9E41 /* MMGridView.m in Sources */, 364 | 8C3772651363A339005D9E41 /* MMGridViewDefaultCell.m in Sources */, 365 | 8C37726E1363A356005D9E41 /* CHTileView.m in Sources */, 366 | 8C37726F1363A356005D9E41 /* CHSectionHeaderView.m in Sources */, 367 | 8C3772701363A356005D9E41 /* CHImageTileView.m in Sources */, 368 | 8C3772711363A356005D9E41 /* CHGridView.m in Sources */, 369 | 8C3772791363A35F005D9E41 /* CHGridLayout.m in Sources */, 370 | 8C37727A1363A35F005D9E41 /* CHGridLayoutSection.m in Sources */, 371 | 8C37727B1363A35F005D9E41 /* CHGridLayoutTile.m in Sources */, 372 | 8C3772931363A372005D9E41 /* UIColor+AQGridView.m in Sources */, 373 | 8C3772941363A372005D9E41 /* NSIndexSet+AQIsSetContiguous.m in Sources */, 374 | 8C3772951363A372005D9E41 /* NSIndexSet+AQIndexesOutsideSet.m in Sources */, 375 | 8C3772961363A372005D9E41 /* AQGridViewUpdateItem.m in Sources */, 376 | 8C3772971363A372005D9E41 /* AQGridViewUpdateInfo.m in Sources */, 377 | 8C3772981363A372005D9E41 /* AQGridViewData.m in Sources */, 378 | 8C3772991363A372005D9E41 /* AQGridViewController.m in Sources */, 379 | 8C37729A1363A372005D9E41 /* AQGridViewCell.m in Sources */, 380 | 8C37729B1363A372005D9E41 /* AQGridViewAnimatorItem.m in Sources */, 381 | 8C37729C1363A372005D9E41 /* AQGridView.m in Sources */, 382 | 8C3772A41363AEEE005D9E41 /* GridTestObject.m in Sources */, 383 | 8C3772B11363B274005D9E41 /* LoremIpsum.m in Sources */, 384 | ); 385 | runOnlyForDeploymentPostprocessing = 0; 386 | }; 387 | /* End PBXSourcesBuildPhase section */ 388 | 389 | /* Begin PBXVariantGroup section */ 390 | 8C3772351363A22C005D9E41 /* InfoPlist.strings */ = { 391 | isa = PBXVariantGroup; 392 | children = ( 393 | 8C3772361363A22C005D9E41 /* en */, 394 | ); 395 | name = InfoPlist.strings; 396 | sourceTree = ""; 397 | }; 398 | 8C37723E1363A22C005D9E41 /* MainWindow.xib */ = { 399 | isa = PBXVariantGroup; 400 | children = ( 401 | 8C37723F1363A22C005D9E41 /* en */, 402 | ); 403 | name = MainWindow.xib; 404 | sourceTree = ""; 405 | }; 406 | 8C3772441363A22C005D9E41 /* GridMonsterViewController.xib */ = { 407 | isa = PBXVariantGroup; 408 | children = ( 409 | 8C3772451363A22C005D9E41 /* en */, 410 | ); 411 | name = GridMonsterViewController.xib; 412 | sourceTree = ""; 413 | }; 414 | /* End PBXVariantGroup section */ 415 | 416 | /* Begin XCBuildConfiguration section */ 417 | 8C3772471363A22C005D9E41 /* Debug */ = { 418 | isa = XCBuildConfiguration; 419 | buildSettings = { 420 | ARCHS = "$(ARCHS_UNIVERSAL_IPHONE_OS)"; 421 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 422 | GCC_C_LANGUAGE_STANDARD = gnu99; 423 | GCC_OPTIMIZATION_LEVEL = 0; 424 | GCC_PREPROCESSOR_DEFINITIONS = DEBUG; 425 | GCC_SYMBOLS_PRIVATE_EXTERN = NO; 426 | GCC_VERSION = com.apple.compilers.llvmgcc42; 427 | GCC_WARN_ABOUT_RETURN_TYPE = YES; 428 | GCC_WARN_UNUSED_VARIABLE = YES; 429 | IPHONEOS_DEPLOYMENT_TARGET = 4.3; 430 | SDKROOT = iphoneos; 431 | TARGETED_DEVICE_FAMILY = 2; 432 | }; 433 | name = Debug; 434 | }; 435 | 8C3772481363A22C005D9E41 /* Release */ = { 436 | isa = XCBuildConfiguration; 437 | buildSettings = { 438 | ARCHS = "$(ARCHS_UNIVERSAL_IPHONE_OS)"; 439 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 440 | GCC_C_LANGUAGE_STANDARD = gnu99; 441 | GCC_VERSION = com.apple.compilers.llvmgcc42; 442 | GCC_WARN_ABOUT_RETURN_TYPE = YES; 443 | GCC_WARN_UNUSED_VARIABLE = YES; 444 | IPHONEOS_DEPLOYMENT_TARGET = 4.3; 445 | OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1"; 446 | SDKROOT = iphoneos; 447 | TARGETED_DEVICE_FAMILY = 2; 448 | }; 449 | name = Release; 450 | }; 451 | 8C37724A1363A22C005D9E41 /* Debug */ = { 452 | isa = XCBuildConfiguration; 453 | buildSettings = { 454 | ALWAYS_SEARCH_USER_PATHS = NO; 455 | COPY_PHASE_STRIP = NO; 456 | GCC_DYNAMIC_NO_PIC = NO; 457 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 458 | GCC_PREFIX_HEADER = "GridMonster/GridMonster-Prefix.pch"; 459 | INFOPLIST_FILE = "GridMonster/GridMonster-Info.plist"; 460 | PRODUCT_NAME = "$(TARGET_NAME)"; 461 | WRAPPER_EXTENSION = app; 462 | }; 463 | name = Debug; 464 | }; 465 | 8C37724B1363A22C005D9E41 /* Release */ = { 466 | isa = XCBuildConfiguration; 467 | buildSettings = { 468 | ALWAYS_SEARCH_USER_PATHS = NO; 469 | COPY_PHASE_STRIP = YES; 470 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 471 | GCC_PREFIX_HEADER = "GridMonster/GridMonster-Prefix.pch"; 472 | INFOPLIST_FILE = "GridMonster/GridMonster-Info.plist"; 473 | PRODUCT_NAME = "$(TARGET_NAME)"; 474 | VALIDATE_PRODUCT = YES; 475 | WRAPPER_EXTENSION = app; 476 | }; 477 | name = Release; 478 | }; 479 | /* End XCBuildConfiguration section */ 480 | 481 | /* Begin XCConfigurationList section */ 482 | 8C3772221363A22B005D9E41 /* Build configuration list for PBXProject "GridMonster" */ = { 483 | isa = XCConfigurationList; 484 | buildConfigurations = ( 485 | 8C3772471363A22C005D9E41 /* Debug */, 486 | 8C3772481363A22C005D9E41 /* Release */, 487 | ); 488 | defaultConfigurationIsVisible = 0; 489 | defaultConfigurationName = Release; 490 | }; 491 | 8C3772491363A22C005D9E41 /* Build configuration list for PBXNativeTarget "GridMonster" */ = { 492 | isa = XCConfigurationList; 493 | buildConfigurations = ( 494 | 8C37724A1363A22C005D9E41 /* Debug */, 495 | 8C37724B1363A22C005D9E41 /* Release */, 496 | ); 497 | defaultConfigurationIsVisible = 0; 498 | defaultConfigurationName = Release; 499 | }; 500 | /* End XCConfigurationList section */ 501 | }; 502 | rootObject = 8C37721F1363A22B005D9E41 /* Project object */; 503 | } 504 | -------------------------------------------------------------------------------- /GridMonster/GridMonster-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleDisplayName 8 | ${PRODUCT_NAME} 9 | CFBundleExecutable 10 | ${EXECUTABLE_NAME} 11 | CFBundleIconFile 12 | 13 | CFBundleIdentifier 14 | com.intabulas.${PRODUCT_NAME:rfc1034identifier} 15 | CFBundleInfoDictionaryVersion 16 | 6.0 17 | CFBundleName 18 | ${PRODUCT_NAME} 19 | CFBundlePackageType 20 | APPL 21 | CFBundleShortVersionString 22 | 1.0 23 | CFBundleSignature 24 | ???? 25 | CFBundleVersion 26 | 1.0 27 | LSRequiresIPhoneOS 28 | 29 | NSMainNibFile 30 | MainWindow 31 | UISupportedInterfaceOrientations~ipad 32 | 33 | UIInterfaceOrientationPortrait 34 | UIInterfaceOrientationPortraitUpsideDown 35 | UIInterfaceOrientationLandscapeLeft 36 | UIInterfaceOrientationLandscapeRight 37 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /GridMonster/GridMonster-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header for all source files of the 'GridMonster' target in the 'GridMonster' project 3 | // 4 | 5 | #import 6 | 7 | #ifndef __IPHONE_3_0 8 | #warning "This project uses features only available in iPhone SDK 3.0 and later." 9 | #endif 10 | 11 | #ifdef __OBJC__ 12 | #import 13 | #import 14 | #endif 15 | -------------------------------------------------------------------------------- /GridMonster/GridMonsterAppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // GridMonsterAppDelegate.h 3 | // GridMonster 4 | // 5 | // Created by Mark Lussier on 4/23/11. 6 | // Copyright 2011 Juniper Networks, Inc. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @class GridMonsterViewController; 12 | 13 | @interface GridMonsterAppDelegate : NSObject { 14 | 15 | } 16 | 17 | @property (nonatomic, retain) IBOutlet UIWindow *window; 18 | 19 | @property (nonatomic, retain) IBOutlet GridMonsterViewController *viewController; 20 | 21 | @end 22 | -------------------------------------------------------------------------------- /GridMonster/GridMonsterAppDelegate.m: -------------------------------------------------------------------------------- 1 | // 2 | // GridMonsterAppDelegate.m 3 | // GridMonster 4 | // 5 | // Created by Mark Lussier on 4/23/11. 6 | // Copyright 2011 Juniper Networks, Inc. All rights reserved. 7 | // 8 | 9 | #import "GridMonsterAppDelegate.h" 10 | 11 | #import "GridMonsterViewController.h" 12 | 13 | @implementation GridMonsterAppDelegate 14 | 15 | 16 | @synthesize window=_window; 17 | 18 | @synthesize viewController=_viewController; 19 | 20 | - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 21 | { 22 | // Override point for customization after application launch. 23 | 24 | self.window.rootViewController = self.viewController; 25 | [self.window makeKeyAndVisible]; 26 | return YES; 27 | } 28 | 29 | - (void)applicationWillResignActive:(UIApplication *)application 30 | { 31 | /* 32 | 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. 33 | 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. 34 | */ 35 | } 36 | 37 | - (void)applicationDidEnterBackground:(UIApplication *)application 38 | { 39 | /* 40 | 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. 41 | If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. 42 | */ 43 | } 44 | 45 | - (void)applicationWillEnterForeground:(UIApplication *)application 46 | { 47 | /* 48 | 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. 49 | */ 50 | } 51 | 52 | - (void)applicationDidBecomeActive:(UIApplication *)application 53 | { 54 | /* 55 | 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. 56 | */ 57 | } 58 | 59 | - (void)applicationWillTerminate:(UIApplication *)application 60 | { 61 | /* 62 | Called when the application is about to terminate. 63 | Save data if appropriate. 64 | See also applicationDidEnterBackground:. 65 | */ 66 | } 67 | 68 | - (void)dealloc 69 | { 70 | [_window release]; 71 | [_viewController release]; 72 | [super dealloc]; 73 | } 74 | 75 | @end 76 | -------------------------------------------------------------------------------- /GridMonster/GridMonsterViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // GridMonsterViewController.h 3 | // GridMonster 4 | // 5 | // Created by Mark Lussier on 4/23/11. 6 | // Copyright 2011 Juniper Networks, Inc. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "AQGridView.h" 11 | #import "CHGridView.h" 12 | #import "MMGridView.h" 13 | #import "OHGridView.h" 14 | 15 | @interface GridMonsterViewController : UIViewController { 19 | // AQGridView 20 | AQGridView *_aqGridView; 21 | 22 | // CHGridView 23 | CHGridView *_chGridView; 24 | 25 | // MMGridView 26 | MMGridView *_mmGridView; 27 | 28 | // OHGridView 29 | OHGridView *_ohGridView; 30 | 31 | // Test Data 32 | NSMutableArray *_gridTestData; 33 | int _currentGrid; 34 | 35 | } 36 | 37 | @property (nonatomic,retain) IBOutlet UIView *gridContainer; 38 | @property (nonatomic,retain) IBOutlet UILabel *gridControlNotesLabel; 39 | @property (nonatomic,retain) IBOutlet UIButton *gridControlLinkLabel; 40 | @property (nonatomic,retain) IBOutlet UISlider *gridColumnCountSlider; 41 | @property (nonatomic,retain) IBOutlet UISlider *gridNumberOfCellsSlider; 42 | 43 | @property (nonatomic,retain) IBOutlet UIBarButtonItem *aqGridButton; 44 | @property (nonatomic,retain) IBOutlet UIBarButtonItem *chGridButton; 45 | @property (nonatomic,retain) IBOutlet UIBarButtonItem *mmGridButton; 46 | @property (nonatomic,retain) IBOutlet UIBarButtonItem *ohGridButton; 47 | 48 | - (IBAction) changeGridToolkit:(id)sender; 49 | - (IBAction) openControlInSafari:(id)sender; 50 | 51 | - (IBAction) columnCountSliderChanged:(id)sender; 52 | - (IBAction) numberOfCellsSliderChanged:(id)sender; 53 | 54 | /* Shared Generic Delegate Methods - AQ and OH have a same named datasource method */ 55 | 56 | -(NSUInteger)numberOfItemsInGridView:(id)gridview; 57 | 58 | 59 | @end 60 | -------------------------------------------------------------------------------- /GridMonster/GridMonsterViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // GridMonsterViewController.m 3 | // GridMonster 4 | // 5 | // Created by Mark Lussier on 4/23/11. 6 | // Copyright 2011 Juniper Networks, Inc. All rights reserved. 7 | // 8 | 9 | #import "GridMonsterViewController.h" 10 | 11 | #import "AQGridView.h" 12 | #import "AQGridViewCell.h" 13 | 14 | #import "CHGridView.h" 15 | #import "OHGridView.h" 16 | 17 | #import "MMGridView.h" 18 | #import "MMGridViewCell.h" 19 | #import "MMGridViewDefaultCell.h" 20 | 21 | #import "GridTestObject.h" 22 | #import "LoremIpsum.h" 23 | 24 | @interface GridMonsterViewController (Private) 25 | 26 | // AQGridView 27 | - (void) tearDownAQGridView; 28 | - (void) setupAQGridView; 29 | 30 | // CHGridView 31 | - (void) tearDownCHGridView; 32 | - (void) setupCHGridView; 33 | 34 | // MMGridView 35 | - (void) tearDownMMGridView; 36 | - (void) setupMMGridView; 37 | 38 | // OHGridView 39 | - (void) tearDownOHGridView; 40 | - (void) setupOHGridView; 41 | 42 | // Test Data 43 | - (void) createTestData:(int)numberOfColumns; 44 | - (UIColor*) generateRandomColor; 45 | 46 | @end 47 | 48 | @implementation GridMonsterViewController 49 | @synthesize gridControlNotesLabel = _gridControlNotesLabel; 50 | @synthesize gridControlLinkLabel = _gridControlLinkLabel; 51 | @synthesize gridContainer = _gridContainer; 52 | @synthesize gridColumnCountSlider = _gridColumnCountSlider; 53 | @synthesize gridNumberOfCellsSlider = _gridNumberOfCellsSlider; 54 | 55 | @synthesize aqGridButton = _aqGridButton; 56 | @synthesize chGridButton = _chGridButton; 57 | @synthesize mmGridButton = _mmGridButton; 58 | @synthesize ohGridButton = _ohGridButton; 59 | 60 | - (void)dealloc { 61 | [_aqGridView release]; 62 | [_chGridView release]; 63 | [_mmGridView release]; 64 | [_ohGridView release]; 65 | 66 | [_gridTestData release]; 67 | 68 | [super dealloc]; 69 | } 70 | 71 | - (void)didReceiveMemoryWarning { 72 | // Releases the view if it doesn't have a superview. 73 | [super didReceiveMemoryWarning]; 74 | 75 | // Release any cached data, images, etc that aren't in use. 76 | } 77 | 78 | #pragma mark - View lifecycle 79 | 80 | - (void)viewDidLoad { 81 | [super viewDidLoad]; 82 | 83 | _currentGrid = 2; 84 | 85 | [self createTestData:100]; 86 | 87 | [self setupAQGridView]; 88 | 89 | } 90 | 91 | - (void)viewDidUnload { 92 | [super viewDidUnload]; 93 | // Release any retained subviews of the main view. 94 | // e.g. self.myOutlet = nil; 95 | } 96 | 97 | - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { 98 | // Return YES for supported orientations 99 | return YES; 100 | } 101 | 102 | //- (void) didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation { 103 | //} 104 | 105 | - (void) willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration { 106 | 107 | if ( _currentGrid == 0 ) { 108 | if ( UIInterfaceOrientationIsPortrait(toInterfaceOrientation) ) { 109 | // width will be 768, which divides by four nicely already 110 | [_aqGridView setLeftContentInset:0.0]; 111 | [_aqGridView setRightContentInset:0.0]; 112 | // width will be 1024, so subtract a little to get a width divisible by five 113 | } else { 114 | [_aqGridView setLeftContentInset:2.0]; 115 | [_aqGridView setRightContentInset:2.0]; 116 | } 117 | } 118 | 119 | } 120 | 121 | - (void) teardownActiveGrid { 122 | switch (_currentGrid) { 123 | case 0: 124 | [self tearDownAQGridView]; 125 | break; 126 | case 1: 127 | [self tearDownCHGridView]; 128 | break; 129 | case 2: 130 | [self tearDownMMGridView]; 131 | break; 132 | case 3: 133 | [self tearDownOHGridView]; 134 | break; 135 | 136 | default: 137 | break; 138 | } 139 | } 140 | 141 | /* */ 142 | - (IBAction) changeGridToolkit:(id)sender { 143 | 144 | UIBarButtonItem *_gridTypeButton = (UIBarButtonItem*)sender; 145 | 146 | [self teardownActiveGrid]; 147 | 148 | 149 | switch (_gridTypeButton.tag) { 150 | case 0: 151 | [self setupAQGridView]; 152 | break; 153 | case 1: 154 | [self setupCHGridView]; 155 | break; 156 | case 2: 157 | [self setupMMGridView]; 158 | break; 159 | case 3: 160 | [self setupOHGridView]; 161 | break; 162 | 163 | default: 164 | break; 165 | } 166 | 167 | 168 | } 169 | 170 | 171 | - (void) createTestData:(int)numberOfColumns { 172 | _gridTestData = [[NSMutableArray alloc] init]; 173 | 174 | LoremIpsum *_loremGenerator = [[LoremIpsum alloc] init]; 175 | for ( int x = 0; x < numberOfColumns; x++ ) { 176 | GridTestObject *_testObject = [[GridTestObject alloc] init]; 177 | [_testObject setTestnumber:x]; 178 | [_testObject setTestsentance:[_loremGenerator words:7]]; 179 | [_testObject setTestcolor:[self generateRandomColor]]; 180 | [_gridTestData addObject:_testObject]; 181 | 182 | [_testObject release]; 183 | 184 | } 185 | [_loremGenerator release]; 186 | 187 | } 188 | 189 | - (UIColor*) generateRandomColor { 190 | float rand_max = RAND_MAX; 191 | 192 | float red = arc4random() / rand_max; 193 | float green = arc4random() / rand_max; 194 | float blue = arc4random() / rand_max; 195 | return [UIColor colorWithRed:red green:green blue:blue alpha:1.0]; 196 | } 197 | 198 | - (IBAction) openControlInSafari:(id)sender { 199 | [[ UIApplication sharedApplication ] openURL:[NSURL URLWithString:_gridControlLinkLabel.titleLabel.text]]; 200 | } 201 | 202 | - (IBAction) columnCountSliderChanged:(id)sender { 203 | 204 | switch (_currentGrid) { 205 | case 0: 206 | [_aqGridView reloadData]; 207 | break; 208 | case 1: 209 | [_chGridView setPerLine:_gridColumnCountSlider.value]; 210 | [_chGridView reloadData]; 211 | break; 212 | case 2: 213 | if ( UIInterfaceOrientationIsLandscape([[UIDevice currentDevice] orientation]) ) { 214 | [_mmGridView setNumberOfRows:_gridColumnCountSlider.value]; 215 | } else { 216 | [_mmGridView setNumberOfColumns:_gridColumnCountSlider.value]; 217 | } 218 | [_mmGridView reloadData]; 219 | break; 220 | case 3: 221 | [_ohGridView setColumnsCount:_gridColumnCountSlider.value]; 222 | [_ohGridView reloadData]; 223 | break; 224 | 225 | default: 226 | break; 227 | } 228 | 229 | 230 | } 231 | 232 | - (IBAction) numberOfCellsSliderChanged:(id)sender { 233 | 234 | [self createTestData:_gridNumberOfCellsSlider.value]; 235 | 236 | switch (_currentGrid) { 237 | case 0: 238 | [_aqGridView reloadData]; 239 | break; 240 | case 1: 241 | [_chGridView reloadData]; 242 | break; 243 | case 2: 244 | [_mmGridView reloadData]; 245 | break; 246 | case 3: 247 | [_ohGridView reloadData]; 248 | break; 249 | 250 | default: 251 | break; 252 | } 253 | 254 | 255 | } 256 | 257 | 258 | #pragma mark =[ Grid Toolkit Helpers and Delegates ]= 259 | 260 | 261 | #pragma mark ==< AQGridView >== 262 | - (void) tearDownAQGridView { 263 | [_aqGridButton setStyle:UIBarButtonItemStyleBordered]; 264 | [_aqGridView removeFromSuperview]; 265 | [_aqGridView release], _aqGridView = nil; 266 | } 267 | 268 | - (void) setupAQGridView { 269 | 270 | [_gridColumnCountSlider setEnabled:NO]; 271 | 272 | [_aqGridButton setStyle:UIBarButtonItemStyleDone]; 273 | 274 | [_gridControlNotesLabel setText:@""]; 275 | [_gridControlLinkLabel setTitle:@"https://github.com/AlanQuatermain/AQGridView" forState:UIControlStateNormal]; 276 | 277 | _aqGridView = [[AQGridView alloc] initWithFrame:CGRectMake(0,0,_gridContainer.bounds.size.width,_gridContainer.bounds.size.height)]; 278 | [_aqGridView setDelegate:self]; 279 | [_aqGridView setDataSource:self]; 280 | [_aqGridView setBackgroundColor:[UIColor clearColor]]; 281 | [_aqGridView setAutoresizingMask:UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth]; 282 | [_aqGridView setAutoresizesSubviews:YES]; 283 | 284 | 285 | if ( UIInterfaceOrientationIsLandscape([[UIApplication sharedApplication] statusBarOrientation]) ){ 286 | _aqGridView.leftContentInset = 2.0; 287 | _aqGridView.rightContentInset = 2.0; 288 | } 289 | 290 | [_gridContainer addSubview:_aqGridView]; 291 | 292 | _currentGrid = 0; 293 | [_aqGridView reloadData]; 294 | } 295 | 296 | /* AQGridView Datasource Methods */ 297 | 298 | /* USES A GENERIC HANDLER FOR numberOfItemsInGridView */ 299 | 300 | - (AQGridViewCell *) gridView: (AQGridView *) gridView cellForItemAtIndex: (NSUInteger) index { 301 | static NSString * PlainCellIdentifier = @"PlainCellIdentifier"; 302 | 303 | GridTestObject *_testObject = [_gridTestData objectAtIndex:index]; 304 | 305 | AQGridViewCell * cell = (AQGridViewCell *)[gridView dequeueReusableCellWithIdentifier: PlainCellIdentifier]; 306 | if ( cell == nil ) { 307 | cell = [[[AQGridViewCell alloc] initWithFrame: CGRectMake(0.0, 0.0, 200.0, 150.0) reuseIdentifier: PlainCellIdentifier] autorelease]; 308 | [cell.contentView setBackgroundColor:[_testObject testcolor]]; 309 | } 310 | 311 | return ( cell ); 312 | } 313 | 314 | /* AQGridView Delegte Methods - ALL OPTIONS IN AQGRIDVIEW */ 315 | //- (void) gridView: (AQGridView *) gridView willDisplayCell: (AQGridViewCell *) cell forItemAtIndex: (NSUInteger) index { 316 | //} 317 | // 318 | //// Called before selection occurs. Return a new index, or NSNotFound, to change the proposed selection. 319 | //- (NSUInteger) gridView: (AQGridView *) gridView willSelectItemAtIndex: (NSUInteger) index { 320 | //} 321 | // 322 | //- (NSUInteger) gridView: (AQGridView *) gridView willSelectItemAtIndex: (NSUInteger) index numFingersTouch:(NSUInteger) numFingers { 323 | //} 324 | // 325 | //- (NSUInteger) gridView: (AQGridView *) gridView willDeselectItemAtIndex: (NSUInteger) index { 326 | //} 327 | // 328 | //// Called after the user changes the selection 329 | //- (void) gridView: (AQGridView *) gridView didSelectItemAtIndex: (NSUInteger) index { 330 | //} 331 | // 332 | //- (void) gridView: (AQGridView *) gridView didSelectItemAtIndex: (NSUInteger) index numFingersTouch:(NSUInteger)numFingers { 333 | //} 334 | // 335 | //- (void) gridView: (AQGridView *) gridView didDeselectItemAtIndex: (NSUInteger) index { 336 | //} 337 | 338 | 339 | 340 | 341 | #pragma mark ==< CHGridView >== 342 | - (void) tearDownCHGridView { 343 | [_chGridButton setStyle:UIBarButtonItemStyleBordered]; 344 | [_chGridView removeFromSuperview]; 345 | [_chGridView release], _chGridView = nil; 346 | } 347 | 348 | - (void) setupCHGridView { 349 | 350 | [_gridColumnCountSlider setEnabled:YES]; 351 | [_gridColumnCountSlider setValue:_chGridView.perLine]; 352 | 353 | 354 | [_chGridButton setStyle:UIBarButtonItemStyleDone]; 355 | 356 | [_gridControlNotesLabel setText:@""]; 357 | [_gridControlLinkLabel setTitle:@"https://github.com/camh/CHGridView" forState:UIControlStateNormal]; 358 | 359 | _chGridView = [[CHGridView alloc] initWithFrame:CGRectMake(0,0,_gridContainer.bounds.size.width,_gridContainer.bounds.size.height)]; 360 | [_chGridView setDelegate:self]; 361 | [_chGridView setDataSource:self]; 362 | [_chGridView setBackgroundColor:[UIColor clearColor]]; 363 | [_chGridView setAutoresizingMask:UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth]; 364 | [_gridContainer addSubview:_chGridView]; 365 | 366 | _currentGrid = 1; 367 | [_chGridView reloadData]; 368 | } 369 | 370 | /* CHGridView Datasource */ 371 | - (int)numberOfTilesInSection:(int)section GridView:(CHGridView *)gridView { 372 | return _gridTestData.count; 373 | } 374 | 375 | - (CHTileView *)tileForIndexPath:(CHGridIndexPath)indexPath inGridView:(CHGridView *)gridView { 376 | static NSString *TileIndentifier = @"Tile"; 377 | 378 | GridTestObject *_testObject = [_gridTestData objectAtIndex:indexPath.tileIndex]; 379 | 380 | CHTileView *tile = (CHTileView *)[gridView dequeueReusableTileWithIdentifier:TileIndentifier]; 381 | 382 | if(tile == nil) 383 | tile = [[[CHTileView alloc] initWithFrame:CGRectZero reuseIdentifier:TileIndentifier] autorelease]; 384 | 385 | [tile setContentBackgroundColor:_testObject.testcolor]; 386 | 387 | return tile; 388 | } 389 | 390 | // optional 391 | - (int)numberOfSectionsInGridView:(CHGridView *)gridView { 392 | return 1; 393 | } 394 | // 395 | //- (NSString *)titleForHeaderOfSection:(int)section inGridView:(CHGridView *)gridView { 396 | //} 397 | 398 | /* CHGridView Delegate Methods - ALL OPTIONAL */ 399 | 400 | //- (void)selectedTileAtIndexPath:(CHGridIndexPath)indexPath inGridView:(CHGridView *)gridView { 401 | //} 402 | // 403 | //- (void)visibleTilesChangedTo:(int)tiles { 404 | //} 405 | // 406 | //- (CGSize)sizeForTileAtIndex:(CHGridIndexPath)indexPath inGridView:(CHGridView *)gridView { 407 | //} 408 | // 409 | //- (CHSectionHeaderView *)headerViewForSection:(int)section inGridView:(CHGridView *)gridView { 410 | //} 411 | 412 | 413 | #pragma mark ==< MMGridView >== 414 | - (void) tearDownMMGridView { 415 | [_mmGridButton setStyle:UIBarButtonItemStyleBordered]; 416 | 417 | [_mmGridView removeFromSuperview]; 418 | [_mmGridView release], _mmGridView = nil; 419 | } 420 | 421 | - (void) setupMMGridView { 422 | 423 | [_gridColumnCountSlider setEnabled:YES]; 424 | [_gridColumnCountSlider setValue:_mmGridView.numberOfColumns]; 425 | 426 | [_mmGridButton setStyle:UIBarButtonItemStyleDone]; 427 | 428 | [_gridControlNotesLabel setText:@"This grid view scrolls left to right vs up and down"]; 429 | [_gridControlLinkLabel setTitle:@"https://github.com/provideal/MMGridView" forState:UIControlStateNormal]; 430 | 431 | _mmGridView = [[MMGridView alloc] initWithFrame:CGRectMake(0,0,_gridContainer.bounds.size.width,_gridContainer.bounds.size.height)]; 432 | [_mmGridView setDelegate:self]; 433 | [_mmGridView setDataSource:self]; 434 | [_mmGridView setBackgroundColor:[UIColor clearColor]]; 435 | [_gridContainer addSubview:_mmGridView]; 436 | 437 | _currentGrid = 2; 438 | [_mmGridView reloadData]; 439 | } 440 | 441 | 442 | /* MMGridView Datasource */ 443 | 444 | - (NSInteger)numberOfCellsInGridView:(MMGridView *)gridView { 445 | return _gridTestData.count; 446 | } 447 | 448 | - (MMGridViewCell *)gridView:(MMGridView *)gridView cellAtIndex:(NSUInteger)index { 449 | 450 | GridTestObject *_testObject = [_gridTestData objectAtIndex:index]; 451 | 452 | MMGridViewDefaultCell *cell = [[[MMGridViewDefaultCell alloc] initWithFrame:CGRectNull] autorelease]; 453 | cell.textLabel.text = [_testObject testsentance]; 454 | [cell.backgroundView setBackgroundColor:[_testObject testcolor]]; 455 | return cell; 456 | 457 | } 458 | 459 | /* MMGridView Delegate - ALL OPTIONAL */ 460 | 461 | //- (void)gridView:(MMGridView *)gridView didSelectCell:(MMGridViewCell *)cell atIndex:(NSUInteger)index { 462 | //} 463 | // 464 | //- (void)gridView:(MMGridView *)gridView didDoubleTappedCell:(MMGridViewCell *)cell atIndex:(NSUInteger)index { 465 | //} 466 | 467 | /* MMGrid View marks this optional but doesn't check it delegate respondes to it */ 468 | - (void)gridView:(MMGridView *)gridView changedPageToIndex:(NSUInteger)index { 469 | } 470 | 471 | 472 | 473 | #pragma mark ==< OHGridView >== 474 | - (void) tearDownOHGridView { 475 | [_ohGridButton setStyle:UIBarButtonItemStyleBordered]; 476 | 477 | [_ohGridView removeFromSuperview]; 478 | [_ohGridView release], _ohGridView = nil; 479 | 480 | } 481 | 482 | - (void) setupOHGridView { 483 | 484 | [_gridColumnCountSlider setEnabled:YES]; 485 | 486 | [_gridColumnCountSlider setValue:_ohGridView.columnsCount]; 487 | 488 | [_ohGridButton setStyle:UIBarButtonItemStyleDone]; 489 | 490 | [_gridControlNotesLabel setText:@""]; 491 | [_gridControlLinkLabel setTitle:@"https://github.com/AliSoftware/OHGridView" forState:UIControlStateNormal]; 492 | 493 | _ohGridView = [[OHGridView alloc] initWithFrame:CGRectMake(0,0,_gridContainer.bounds.size.width,_gridContainer.bounds.size.height)]; 494 | [_ohGridView setDelegate:self]; 495 | [_ohGridView setDataSource:self]; 496 | [_ohGridView setBackgroundColor:[UIColor clearColor]]; 497 | [_ohGridView setAutoresizingMask:UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth]; 498 | [_gridContainer addSubview:_ohGridView]; 499 | 500 | _currentGrid = 3; 501 | [_ohGridView reloadData]; 502 | } 503 | 504 | 505 | /* OHGridView Datasource */ 506 | 507 | /* USES A GENERIC HANDLER FOR numberOfItemsInGridView */ 508 | 509 | -(OHGridViewCell*)gridView:(OHGridView*)aGridView cellAtIndexPath:(NSIndexPath*)indexPath { 510 | NSUInteger _index = [aGridView indexForIndexPath:indexPath]; 511 | 512 | GridTestObject *_testObject = [_gridTestData objectAtIndex:_index]; 513 | 514 | OHGridViewCell* cell = [aGridView dequeueReusableCell]; 515 | if (!cell) { 516 | cell = [OHGridViewCell cell]; 517 | 518 | cell.backgroundColor = [_testObject testcolor]; 519 | } 520 | 521 | cell.textLabel.text = [_testObject testsentance]; 522 | 523 | return cell; 524 | } 525 | 526 | /* OHGridView Delegate - ALL ARE OPTIONAL */ 527 | 528 | -(void)gridView:(OHGridView*)aGridView willDisplayCell:(OHGridViewCell*)aCell forIndexPath:(NSIndexPath*)indexPath { 529 | } 530 | 531 | -(void)gridView:(OHGridView*)aGridView willSelectCellAtIndexPath:(NSIndexPath*)indexPath { 532 | } 533 | 534 | -(void)gridView:(OHGridView*)aGridView didSelectCellAtIndexPath:(NSIndexPath*)indexPath { 535 | } 536 | 537 | 538 | /* Shared Generic Delegate Methods - AQ and OH have a same named datasource method */ 539 | 540 | -(NSUInteger)numberOfItemsInGridView:(id)gridview { 541 | return _gridTestData.count; 542 | } 543 | 544 | 545 | @end 546 | -------------------------------------------------------------------------------- /GridMonster/GridTestObject.h: -------------------------------------------------------------------------------- 1 | // 2 | // GridTestObject.h 3 | // GridMonster 4 | // 5 | // Created by Mark Lussier on 4/23/11. 6 | // Copyright 2011 Juniper Networks, Inc. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | 12 | @interface GridTestObject : NSObject { 13 | } 14 | 15 | @property (nonatomic) int testnumber; 16 | @property (nonatomic,copy) NSString *testsentance; 17 | @property (nonatomic,retain) UIColor *testcolor; 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /GridMonster/GridTestObject.m: -------------------------------------------------------------------------------- 1 | // 2 | // GridTestObject.m 3 | // GridMonster 4 | // 5 | // Created by Mark Lussier on 4/23/11. 6 | // Copyright 2011 Juniper Networks, Inc. All rights reserved. 7 | // 8 | 9 | #import "GridTestObject.h" 10 | 11 | 12 | @implementation GridTestObject 13 | @synthesize testnumber = _testnumber; 14 | @synthesize testsentance = _testsentance; 15 | @synthesize testcolor = _testcolor; 16 | 17 | - (void) dealloc { 18 | [_testsentance release], _testsentance = nil; 19 | [_testcolor release], _testcolor = nil; 20 | [super dealloc]; 21 | } 22 | 23 | - (NSString*) description { 24 | return [NSString stringWithFormat:@"", _testnumber, _testsentance]; 25 | } 26 | 27 | 28 | @end 29 | -------------------------------------------------------------------------------- /GridMonster/LoremIpsum.h: -------------------------------------------------------------------------------- 1 | // 2 | // LoremIpsum.h 3 | // 4 | // Created by dav on 12/24/10. 5 | // Public domain where appropriate; free for everyone, for all usages, elsewhere. 6 | // 7 | 8 | #import 9 | 10 | @interface LoremIpsum : NSObject { 11 | NSArray* _words; 12 | } 13 | 14 | - (NSString*) words:(NSUInteger)count; 15 | - (NSString*) sentences:(NSUInteger)count; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /GridMonster/LoremIpsum.m: -------------------------------------------------------------------------------- 1 | // 2 | // LoremIpsum.h 3 | // 4 | // Created by dav on 12/24/10. 5 | // Public domain where appropriate; free for everyone, for all usages, elsewhere. 6 | // 7 | 8 | #import "LoremIpsum.h" 9 | 10 | @interface LoremIpsum () 11 | - (NSString*) randomWord; 12 | @end 13 | 14 | @implementation LoremIpsum 15 | 16 | - (id) init { 17 | if ((self = [super init])) { 18 | NSMutableArray* wordsArray = [[NSMutableArray alloc] initWithCapacity:1000]; 19 | [wordsArray addObject:@"lorem"]; 20 | [wordsArray addObject:@"ipsum"]; 21 | [wordsArray addObject:@"dolor"]; 22 | [wordsArray addObject:@"sit"]; 23 | [wordsArray addObject:@"amet"]; 24 | [wordsArray addObject:@"consectetuer"]; 25 | [wordsArray addObject:@"adipiscing"]; 26 | [wordsArray addObject:@"elit"]; 27 | [wordsArray addObject:@"integer"]; 28 | [wordsArray addObject:@"in"]; 29 | [wordsArray addObject:@"mi"]; 30 | [wordsArray addObject:@"a"]; 31 | [wordsArray addObject:@"mauris"]; 32 | [wordsArray addObject:@"ornare"]; 33 | [wordsArray addObject:@"sagittis"]; 34 | [wordsArray addObject:@"suspendisse"]; 35 | [wordsArray addObject:@"potenti"]; 36 | [wordsArray addObject:@"suspendisse"]; 37 | [wordsArray addObject:@"dapibus"]; 38 | [wordsArray addObject:@"dignissim"]; 39 | [wordsArray addObject:@"dolor"]; 40 | [wordsArray addObject:@"nam"]; 41 | [wordsArray addObject:@"sapien"]; 42 | [wordsArray addObject:@"tellus"]; 43 | [wordsArray addObject:@"tempus"]; 44 | [wordsArray addObject:@"et"]; 45 | [wordsArray addObject:@"tempus"]; 46 | [wordsArray addObject:@"ac"]; 47 | [wordsArray addObject:@"tincidunt"]; 48 | [wordsArray addObject:@"in"]; 49 | [wordsArray addObject:@"arcu"]; 50 | [wordsArray addObject:@"duis"]; 51 | [wordsArray addObject:@"dictum"]; 52 | [wordsArray addObject:@"proin"]; 53 | [wordsArray addObject:@"magna"]; 54 | [wordsArray addObject:@"nulla"]; 55 | [wordsArray addObject:@"pellentesque"]; 56 | [wordsArray addObject:@"non"]; 57 | [wordsArray addObject:@"commodo"]; 58 | [wordsArray addObject:@"et"]; 59 | [wordsArray addObject:@"iaculis"]; 60 | [wordsArray addObject:@"sit"]; 61 | [wordsArray addObject:@"amet"]; 62 | [wordsArray addObject:@"mi"]; 63 | [wordsArray addObject:@"mauris"]; 64 | [wordsArray addObject:@"condimentum"]; 65 | [wordsArray addObject:@"massa"]; 66 | [wordsArray addObject:@"ut"]; 67 | [wordsArray addObject:@"metus"]; 68 | [wordsArray addObject:@"donec"]; 69 | [wordsArray addObject:@"viverra"]; 70 | [wordsArray addObject:@"sapien"]; 71 | [wordsArray addObject:@"mattis"]; 72 | [wordsArray addObject:@"rutrum"]; 73 | [wordsArray addObject:@"tristique"]; 74 | [wordsArray addObject:@"lacus"]; 75 | [wordsArray addObject:@"eros"]; 76 | [wordsArray addObject:@"semper"]; 77 | [wordsArray addObject:@"tellus"]; 78 | [wordsArray addObject:@"et"]; 79 | [wordsArray addObject:@"molestie"]; 80 | [wordsArray addObject:@"nisi"]; 81 | [wordsArray addObject:@"sapien"]; 82 | [wordsArray addObject:@"eu"]; 83 | [wordsArray addObject:@"massa"]; 84 | [wordsArray addObject:@"vestibulum"]; 85 | [wordsArray addObject:@"ante"]; 86 | [wordsArray addObject:@"ipsum"]; 87 | [wordsArray addObject:@"primis"]; 88 | [wordsArray addObject:@"in"]; 89 | [wordsArray addObject:@"faucibus"]; 90 | [wordsArray addObject:@"orci"]; 91 | [wordsArray addObject:@"luctus"]; 92 | [wordsArray addObject:@"et"]; 93 | [wordsArray addObject:@"ultrices"]; 94 | [wordsArray addObject:@"posuere"]; 95 | [wordsArray addObject:@"cubilia"]; 96 | [wordsArray addObject:@"curae;"]; 97 | [wordsArray addObject:@"fusce"]; 98 | [wordsArray addObject:@"erat"]; 99 | [wordsArray addObject:@"tortor"]; 100 | [wordsArray addObject:@"mollis"]; 101 | [wordsArray addObject:@"ut"]; 102 | [wordsArray addObject:@"accumsan"]; 103 | [wordsArray addObject:@"ut"]; 104 | [wordsArray addObject:@"lacinia"]; 105 | [wordsArray addObject:@"gravida"]; 106 | [wordsArray addObject:@"libero"]; 107 | [wordsArray addObject:@"curabitur"]; 108 | [wordsArray addObject:@"massa"]; 109 | [wordsArray addObject:@"felis"]; 110 | [wordsArray addObject:@"accumsan"]; 111 | [wordsArray addObject:@"feugiat"]; 112 | [wordsArray addObject:@"convallis"]; 113 | [wordsArray addObject:@"sit"]; 114 | [wordsArray addObject:@"amet"]; 115 | [wordsArray addObject:@"porta"]; 116 | [wordsArray addObject:@"vel"]; 117 | [wordsArray addObject:@"neque"]; 118 | [wordsArray addObject:@"duis"]; 119 | [wordsArray addObject:@"et"]; 120 | [wordsArray addObject:@"ligula"]; 121 | [wordsArray addObject:@"non"]; 122 | [wordsArray addObject:@"elit"]; 123 | [wordsArray addObject:@"ultricies"]; 124 | [wordsArray addObject:@"rutrum"]; 125 | [wordsArray addObject:@"suspendisse"]; 126 | [wordsArray addObject:@"tempor"]; 127 | [wordsArray addObject:@"quisque"]; 128 | [wordsArray addObject:@"posuere"]; 129 | [wordsArray addObject:@"malesuada"]; 130 | [wordsArray addObject:@"velit"]; 131 | [wordsArray addObject:@"sed"]; 132 | [wordsArray addObject:@"pellentesque"]; 133 | [wordsArray addObject:@"mi"]; 134 | [wordsArray addObject:@"a"]; 135 | [wordsArray addObject:@"purus"]; 136 | [wordsArray addObject:@"integer"]; 137 | [wordsArray addObject:@"imperdiet"]; 138 | [wordsArray addObject:@"orci"]; 139 | [wordsArray addObject:@"a"]; 140 | [wordsArray addObject:@"eleifend"]; 141 | [wordsArray addObject:@"mollis"]; 142 | [wordsArray addObject:@"velit"]; 143 | [wordsArray addObject:@"nulla"]; 144 | [wordsArray addObject:@"iaculis"]; 145 | [wordsArray addObject:@"arcu"]; 146 | [wordsArray addObject:@"eu"]; 147 | [wordsArray addObject:@"rutrum"]; 148 | [wordsArray addObject:@"magna"]; 149 | [wordsArray addObject:@"quam"]; 150 | [wordsArray addObject:@"sed"]; 151 | [wordsArray addObject:@"elit"]; 152 | [wordsArray addObject:@"nullam"]; 153 | [wordsArray addObject:@"egestas"]; 154 | [wordsArray addObject:@"integer"]; 155 | [wordsArray addObject:@"interdum"]; 156 | [wordsArray addObject:@"purus"]; 157 | [wordsArray addObject:@"nec"]; 158 | [wordsArray addObject:@"mauris"]; 159 | [wordsArray addObject:@"vestibulum"]; 160 | [wordsArray addObject:@"ac"]; 161 | [wordsArray addObject:@"mi"]; 162 | [wordsArray addObject:@"in"]; 163 | [wordsArray addObject:@"nunc"]; 164 | [wordsArray addObject:@"suscipit"]; 165 | [wordsArray addObject:@"dapibus"]; 166 | [wordsArray addObject:@"duis"]; 167 | [wordsArray addObject:@"consectetuer"]; 168 | [wordsArray addObject:@"ipsum"]; 169 | [wordsArray addObject:@"et"]; 170 | [wordsArray addObject:@"pharetra"]; 171 | [wordsArray addObject:@"sollicitudin"]; 172 | [wordsArray addObject:@"metus"]; 173 | [wordsArray addObject:@"turpis"]; 174 | [wordsArray addObject:@"facilisis"]; 175 | [wordsArray addObject:@"magna"]; 176 | [wordsArray addObject:@"vitae"]; 177 | [wordsArray addObject:@"dictum"]; 178 | [wordsArray addObject:@"ligula"]; 179 | [wordsArray addObject:@"nulla"]; 180 | [wordsArray addObject:@"nec"]; 181 | [wordsArray addObject:@"mi"]; 182 | [wordsArray addObject:@"nunc"]; 183 | [wordsArray addObject:@"ante"]; 184 | [wordsArray addObject:@"urna"]; 185 | [wordsArray addObject:@"gravida"]; 186 | [wordsArray addObject:@"sit"]; 187 | [wordsArray addObject:@"amet"]; 188 | [wordsArray addObject:@"congue"]; 189 | [wordsArray addObject:@"et"]; 190 | [wordsArray addObject:@"accumsan"]; 191 | [wordsArray addObject:@"vitae"]; 192 | [wordsArray addObject:@"magna"]; 193 | [wordsArray addObject:@"praesent"]; 194 | [wordsArray addObject:@"luctus"]; 195 | [wordsArray addObject:@"nullam"]; 196 | [wordsArray addObject:@"in"]; 197 | [wordsArray addObject:@"velit"]; 198 | [wordsArray addObject:@"praesent"]; 199 | [wordsArray addObject:@"est"]; 200 | [wordsArray addObject:@"curabitur"]; 201 | [wordsArray addObject:@"turpis"]; 202 | [wordsArray addObject:@"class"]; 203 | [wordsArray addObject:@"aptent"]; 204 | [wordsArray addObject:@"taciti"]; 205 | [wordsArray addObject:@"sociosqu"]; 206 | [wordsArray addObject:@"ad"]; 207 | [wordsArray addObject:@"litora"]; 208 | [wordsArray addObject:@"torquent"]; 209 | [wordsArray addObject:@"per"]; 210 | [wordsArray addObject:@"conubia"]; 211 | [wordsArray addObject:@"nostra"]; 212 | [wordsArray addObject:@"per"]; 213 | [wordsArray addObject:@"inceptos"]; 214 | [wordsArray addObject:@"hymenaeos"]; 215 | [wordsArray addObject:@"cras"]; 216 | [wordsArray addObject:@"consectetuer"]; 217 | [wordsArray addObject:@"nibh"]; 218 | [wordsArray addObject:@"in"]; 219 | [wordsArray addObject:@"lacinia"]; 220 | [wordsArray addObject:@"ornare"]; 221 | [wordsArray addObject:@"turpis"]; 222 | [wordsArray addObject:@"sem"]; 223 | [wordsArray addObject:@"tempor"]; 224 | [wordsArray addObject:@"massa"]; 225 | [wordsArray addObject:@"sagittis"]; 226 | [wordsArray addObject:@"feugiat"]; 227 | [wordsArray addObject:@"mauris"]; 228 | [wordsArray addObject:@"nibh"]; 229 | [wordsArray addObject:@"non"]; 230 | [wordsArray addObject:@"tellus"]; 231 | [wordsArray addObject:@"phasellus"]; 232 | [wordsArray addObject:@"mi"]; 233 | [wordsArray addObject:@"fusce"]; 234 | [wordsArray addObject:@"enim"]; 235 | [wordsArray addObject:@"mauris"]; 236 | [wordsArray addObject:@"ultrices"]; 237 | [wordsArray addObject:@"turpis"]; 238 | [wordsArray addObject:@"eu"]; 239 | [wordsArray addObject:@"adipiscing"]; 240 | [wordsArray addObject:@"viverra"]; 241 | [wordsArray addObject:@"justo"]; 242 | [wordsArray addObject:@"libero"]; 243 | [wordsArray addObject:@"ullamcorper"]; 244 | [wordsArray addObject:@"massa"]; 245 | [wordsArray addObject:@"id"]; 246 | [wordsArray addObject:@"ultrices"]; 247 | [wordsArray addObject:@"velit"]; 248 | [wordsArray addObject:@"est"]; 249 | [wordsArray addObject:@"quis"]; 250 | [wordsArray addObject:@"tortor"]; 251 | [wordsArray addObject:@"quisque"]; 252 | [wordsArray addObject:@"condimentum"]; 253 | [wordsArray addObject:@"lacus"]; 254 | [wordsArray addObject:@"volutpat"]; 255 | [wordsArray addObject:@"nonummy"]; 256 | [wordsArray addObject:@"accumsan"]; 257 | [wordsArray addObject:@"est"]; 258 | [wordsArray addObject:@"nunc"]; 259 | [wordsArray addObject:@"imperdiet"]; 260 | [wordsArray addObject:@"magna"]; 261 | [wordsArray addObject:@"vulputate"]; 262 | [wordsArray addObject:@"aliquet"]; 263 | [wordsArray addObject:@"nisi"]; 264 | [wordsArray addObject:@"risus"]; 265 | [wordsArray addObject:@"at"]; 266 | [wordsArray addObject:@"est"]; 267 | [wordsArray addObject:@"aliquam"]; 268 | [wordsArray addObject:@"imperdiet"]; 269 | [wordsArray addObject:@"gravida"]; 270 | [wordsArray addObject:@"tortor"]; 271 | [wordsArray addObject:@"praesent"]; 272 | [wordsArray addObject:@"interdum"]; 273 | [wordsArray addObject:@"accumsan"]; 274 | [wordsArray addObject:@"ante"]; 275 | [wordsArray addObject:@"vivamus"]; 276 | [wordsArray addObject:@"est"]; 277 | [wordsArray addObject:@"ligula"]; 278 | [wordsArray addObject:@"consequat"]; 279 | [wordsArray addObject:@"sed"]; 280 | [wordsArray addObject:@"pulvinar"]; 281 | [wordsArray addObject:@"eu"]; 282 | [wordsArray addObject:@"consequat"]; 283 | [wordsArray addObject:@"vitae"]; 284 | [wordsArray addObject:@"eros"]; 285 | [wordsArray addObject:@"nulla"]; 286 | [wordsArray addObject:@"elit"]; 287 | [wordsArray addObject:@"nunc"]; 288 | [wordsArray addObject:@"congue"]; 289 | [wordsArray addObject:@"eget"]; 290 | [wordsArray addObject:@"scelerisque"]; 291 | [wordsArray addObject:@"a"]; 292 | [wordsArray addObject:@"tempor"]; 293 | [wordsArray addObject:@"ac"]; 294 | [wordsArray addObject:@"nisi"]; 295 | [wordsArray addObject:@"morbi"]; 296 | [wordsArray addObject:@"facilisis"]; 297 | [wordsArray addObject:@"pellentesque"]; 298 | [wordsArray addObject:@"habitant"]; 299 | [wordsArray addObject:@"morbi"]; 300 | [wordsArray addObject:@"tristique"]; 301 | [wordsArray addObject:@"senectus"]; 302 | [wordsArray addObject:@"et"]; 303 | [wordsArray addObject:@"netus"]; 304 | [wordsArray addObject:@"et"]; 305 | [wordsArray addObject:@"malesuada"]; 306 | [wordsArray addObject:@"fames"]; 307 | [wordsArray addObject:@"ac"]; 308 | [wordsArray addObject:@"turpis"]; 309 | [wordsArray addObject:@"egestas"]; 310 | [wordsArray addObject:@"in"]; 311 | [wordsArray addObject:@"hac"]; 312 | [wordsArray addObject:@"habitasse"]; 313 | [wordsArray addObject:@"platea"]; 314 | [wordsArray addObject:@"dictumst"]; 315 | [wordsArray addObject:@"suspendisse"]; 316 | [wordsArray addObject:@"vel"]; 317 | [wordsArray addObject:@"lorem"]; 318 | [wordsArray addObject:@"ut"]; 319 | [wordsArray addObject:@"ligula"]; 320 | [wordsArray addObject:@"tempor"]; 321 | [wordsArray addObject:@"consequat"]; 322 | [wordsArray addObject:@"quisque"]; 323 | [wordsArray addObject:@"consectetuer"]; 324 | [wordsArray addObject:@"nisl"]; 325 | [wordsArray addObject:@"eget"]; 326 | [wordsArray addObject:@"elit"]; 327 | [wordsArray addObject:@"proin"]; 328 | [wordsArray addObject:@"quis"]; 329 | [wordsArray addObject:@"mauris"]; 330 | [wordsArray addObject:@"ac"]; 331 | [wordsArray addObject:@"orci"]; 332 | [wordsArray addObject:@"accumsan"]; 333 | [wordsArray addObject:@"suscipit"]; 334 | [wordsArray addObject:@"sed"]; 335 | [wordsArray addObject:@"ipsum"]; 336 | [wordsArray addObject:@"sed"]; 337 | [wordsArray addObject:@"vel"]; 338 | [wordsArray addObject:@"libero"]; 339 | [wordsArray addObject:@"nec"]; 340 | [wordsArray addObject:@"elit"]; 341 | [wordsArray addObject:@"feugiat"]; 342 | [wordsArray addObject:@"blandit"]; 343 | [wordsArray addObject:@"vestibulum"]; 344 | [wordsArray addObject:@"purus"]; 345 | [wordsArray addObject:@"nulla"]; 346 | [wordsArray addObject:@"accumsan"]; 347 | [wordsArray addObject:@"et"]; 348 | [wordsArray addObject:@"volutpat"]; 349 | [wordsArray addObject:@"at"]; 350 | [wordsArray addObject:@"pellentesque"]; 351 | [wordsArray addObject:@"vel"]; 352 | [wordsArray addObject:@"urna"]; 353 | [wordsArray addObject:@"suspendisse"]; 354 | [wordsArray addObject:@"nonummy"]; 355 | [wordsArray addObject:@"aliquam"]; 356 | [wordsArray addObject:@"pulvinar"]; 357 | [wordsArray addObject:@"libero"]; 358 | [wordsArray addObject:@"donec"]; 359 | [wordsArray addObject:@"vulputate"]; 360 | [wordsArray addObject:@"orci"]; 361 | [wordsArray addObject:@"ornare"]; 362 | [wordsArray addObject:@"bibendum"]; 363 | [wordsArray addObject:@"condimentum"]; 364 | [wordsArray addObject:@"lorem"]; 365 | [wordsArray addObject:@"elit"]; 366 | [wordsArray addObject:@"dignissim"]; 367 | [wordsArray addObject:@"sapien"]; 368 | [wordsArray addObject:@"ut"]; 369 | [wordsArray addObject:@"aliquam"]; 370 | [wordsArray addObject:@"nibh"]; 371 | [wordsArray addObject:@"augue"]; 372 | [wordsArray addObject:@"in"]; 373 | [wordsArray addObject:@"turpis"]; 374 | [wordsArray addObject:@"phasellus"]; 375 | [wordsArray addObject:@"ac"]; 376 | [wordsArray addObject:@"eros"]; 377 | [wordsArray addObject:@"praesent"]; 378 | [wordsArray addObject:@"luctus"]; 379 | [wordsArray addObject:@"lorem"]; 380 | [wordsArray addObject:@"a"]; 381 | [wordsArray addObject:@"mollis"]; 382 | [wordsArray addObject:@"lacinia"]; 383 | [wordsArray addObject:@"leo"]; 384 | [wordsArray addObject:@"turpis"]; 385 | [wordsArray addObject:@"commodo"]; 386 | [wordsArray addObject:@"sem"]; 387 | [wordsArray addObject:@"in"]; 388 | [wordsArray addObject:@"lacinia"]; 389 | [wordsArray addObject:@"mi"]; 390 | [wordsArray addObject:@"quam"]; 391 | [wordsArray addObject:@"et"]; 392 | [wordsArray addObject:@"quam"]; 393 | [wordsArray addObject:@"curabitur"]; 394 | [wordsArray addObject:@"a"]; 395 | [wordsArray addObject:@"libero"]; 396 | [wordsArray addObject:@"vel"]; 397 | [wordsArray addObject:@"tellus"]; 398 | [wordsArray addObject:@"mattis"]; 399 | [wordsArray addObject:@"imperdiet"]; 400 | [wordsArray addObject:@"in"]; 401 | [wordsArray addObject:@"congue"]; 402 | [wordsArray addObject:@"neque"]; 403 | [wordsArray addObject:@"ut"]; 404 | [wordsArray addObject:@"scelerisque"]; 405 | [wordsArray addObject:@"bibendum"]; 406 | [wordsArray addObject:@"libero"]; 407 | [wordsArray addObject:@"lacus"]; 408 | [wordsArray addObject:@"ullamcorper"]; 409 | [wordsArray addObject:@"sapien"]; 410 | [wordsArray addObject:@"quis"]; 411 | [wordsArray addObject:@"aliquet"]; 412 | [wordsArray addObject:@"massa"]; 413 | [wordsArray addObject:@"velit"]; 414 | [wordsArray addObject:@"vel"]; 415 | [wordsArray addObject:@"orci"]; 416 | [wordsArray addObject:@"fusce"]; 417 | [wordsArray addObject:@"in"]; 418 | [wordsArray addObject:@"nulla"]; 419 | [wordsArray addObject:@"quis"]; 420 | [wordsArray addObject:@"est"]; 421 | [wordsArray addObject:@"cursus"]; 422 | [wordsArray addObject:@"gravida"]; 423 | [wordsArray addObject:@"in"]; 424 | [wordsArray addObject:@"nibh"]; 425 | [wordsArray addObject:@"lorem"]; 426 | [wordsArray addObject:@"ipsum"]; 427 | [wordsArray addObject:@"dolor"]; 428 | [wordsArray addObject:@"sit"]; 429 | [wordsArray addObject:@"amet"]; 430 | [wordsArray addObject:@"consectetuer"]; 431 | [wordsArray addObject:@"adipiscing"]; 432 | [wordsArray addObject:@"elit"]; 433 | [wordsArray addObject:@"integer"]; 434 | [wordsArray addObject:@"fermentum"]; 435 | [wordsArray addObject:@"pretium"]; 436 | [wordsArray addObject:@"massa"]; 437 | [wordsArray addObject:@"morbi"]; 438 | [wordsArray addObject:@"feugiat"]; 439 | [wordsArray addObject:@"iaculis"]; 440 | [wordsArray addObject:@"nunc"]; 441 | [wordsArray addObject:@"aenean"]; 442 | [wordsArray addObject:@"aliquam"]; 443 | [wordsArray addObject:@"pretium"]; 444 | [wordsArray addObject:@"orci"]; 445 | [wordsArray addObject:@"cum"]; 446 | [wordsArray addObject:@"sociis"]; 447 | [wordsArray addObject:@"natoque"]; 448 | [wordsArray addObject:@"penatibus"]; 449 | [wordsArray addObject:@"et"]; 450 | [wordsArray addObject:@"magnis"]; 451 | [wordsArray addObject:@"dis"]; 452 | [wordsArray addObject:@"parturient"]; 453 | [wordsArray addObject:@"montes"]; 454 | [wordsArray addObject:@"nascetur"]; 455 | [wordsArray addObject:@"ridiculus"]; 456 | [wordsArray addObject:@"mus"]; 457 | [wordsArray addObject:@"vivamus"]; 458 | [wordsArray addObject:@"quis"]; 459 | [wordsArray addObject:@"tellus"]; 460 | [wordsArray addObject:@"vel"]; 461 | [wordsArray addObject:@"quam"]; 462 | [wordsArray addObject:@"varius"]; 463 | [wordsArray addObject:@"bibendum"]; 464 | [wordsArray addObject:@"fusce"]; 465 | [wordsArray addObject:@"est"]; 466 | [wordsArray addObject:@"metus"]; 467 | [wordsArray addObject:@"feugiat"]; 468 | [wordsArray addObject:@"at"]; 469 | [wordsArray addObject:@"porttitor"]; 470 | [wordsArray addObject:@"et"]; 471 | [wordsArray addObject:@"cursus"]; 472 | [wordsArray addObject:@"quis"]; 473 | [wordsArray addObject:@"pede"]; 474 | [wordsArray addObject:@"nam"]; 475 | [wordsArray addObject:@"ut"]; 476 | [wordsArray addObject:@"augue"]; 477 | [wordsArray addObject:@"nulla"]; 478 | [wordsArray addObject:@"posuere"]; 479 | [wordsArray addObject:@"phasellus"]; 480 | [wordsArray addObject:@"at"]; 481 | [wordsArray addObject:@"dolor"]; 482 | [wordsArray addObject:@"a"]; 483 | [wordsArray addObject:@"enim"]; 484 | [wordsArray addObject:@"cursus"]; 485 | [wordsArray addObject:@"vestibulum"]; 486 | [wordsArray addObject:@"duis"]; 487 | [wordsArray addObject:@"id"]; 488 | [wordsArray addObject:@"nisi"]; 489 | [wordsArray addObject:@"duis"]; 490 | [wordsArray addObject:@"semper"]; 491 | [wordsArray addObject:@"tellus"]; 492 | [wordsArray addObject:@"ac"]; 493 | [wordsArray addObject:@"nulla"]; 494 | [wordsArray addObject:@"vestibulum"]; 495 | [wordsArray addObject:@"scelerisque"]; 496 | [wordsArray addObject:@"lobortis"]; 497 | [wordsArray addObject:@"dolor"]; 498 | [wordsArray addObject:@"aenean"]; 499 | [wordsArray addObject:@"a"]; 500 | [wordsArray addObject:@"felis"]; 501 | [wordsArray addObject:@"aliquam"]; 502 | [wordsArray addObject:@"erat"]; 503 | [wordsArray addObject:@"volutpat"]; 504 | [wordsArray addObject:@"donec"]; 505 | [wordsArray addObject:@"a"]; 506 | [wordsArray addObject:@"magna"]; 507 | [wordsArray addObject:@"vitae"]; 508 | [wordsArray addObject:@"pede"]; 509 | [wordsArray addObject:@"sagittis"]; 510 | [wordsArray addObject:@"lacinia"]; 511 | [wordsArray addObject:@"cras"]; 512 | [wordsArray addObject:@"vestibulum"]; 513 | [wordsArray addObject:@"diam"]; 514 | [wordsArray addObject:@"ut"]; 515 | [wordsArray addObject:@"arcu"]; 516 | [wordsArray addObject:@"mauris"]; 517 | [wordsArray addObject:@"a"]; 518 | [wordsArray addObject:@"nunc"]; 519 | [wordsArray addObject:@"duis"]; 520 | [wordsArray addObject:@"sollicitudin"]; 521 | [wordsArray addObject:@"erat"]; 522 | [wordsArray addObject:@"sit"]; 523 | [wordsArray addObject:@"amet"]; 524 | [wordsArray addObject:@"turpis"]; 525 | [wordsArray addObject:@"proin"]; 526 | [wordsArray addObject:@"at"]; 527 | [wordsArray addObject:@"libero"]; 528 | [wordsArray addObject:@"eu"]; 529 | [wordsArray addObject:@"diam"]; 530 | [wordsArray addObject:@"lobortis"]; 531 | [wordsArray addObject:@"fermentum"]; 532 | [wordsArray addObject:@"nunc"]; 533 | [wordsArray addObject:@"lorem"]; 534 | [wordsArray addObject:@"turpis"]; 535 | [wordsArray addObject:@"imperdiet"]; 536 | [wordsArray addObject:@"id"]; 537 | [wordsArray addObject:@"gravida"]; 538 | [wordsArray addObject:@"eget"]; 539 | [wordsArray addObject:@"aliquet"]; 540 | [wordsArray addObject:@"sed"]; 541 | [wordsArray addObject:@"purus"]; 542 | [wordsArray addObject:@"ut"]; 543 | [wordsArray addObject:@"vehicula"]; 544 | [wordsArray addObject:@"laoreet"]; 545 | [wordsArray addObject:@"ante"]; 546 | [wordsArray addObject:@"mauris"]; 547 | [wordsArray addObject:@"eu"]; 548 | [wordsArray addObject:@"nunc"]; 549 | [wordsArray addObject:@"sed"]; 550 | [wordsArray addObject:@"sit"]; 551 | [wordsArray addObject:@"amet"]; 552 | [wordsArray addObject:@"elit"]; 553 | [wordsArray addObject:@"nec"]; 554 | [wordsArray addObject:@"ipsum"]; 555 | [wordsArray addObject:@"aliquam"]; 556 | [wordsArray addObject:@"egestas"]; 557 | [wordsArray addObject:@"donec"]; 558 | [wordsArray addObject:@"non"]; 559 | [wordsArray addObject:@"nibh"]; 560 | [wordsArray addObject:@"cras"]; 561 | [wordsArray addObject:@"sodales"]; 562 | [wordsArray addObject:@"pretium"]; 563 | [wordsArray addObject:@"massa"]; 564 | [wordsArray addObject:@"praesent"]; 565 | [wordsArray addObject:@"hendrerit"]; 566 | [wordsArray addObject:@"est"]; 567 | [wordsArray addObject:@"et"]; 568 | [wordsArray addObject:@"risus"]; 569 | [wordsArray addObject:@"vivamus"]; 570 | [wordsArray addObject:@"eget"]; 571 | [wordsArray addObject:@"pede"]; 572 | [wordsArray addObject:@"curabitur"]; 573 | [wordsArray addObject:@"tristique"]; 574 | [wordsArray addObject:@"scelerisque"]; 575 | [wordsArray addObject:@"dui"]; 576 | [wordsArray addObject:@"nullam"]; 577 | [wordsArray addObject:@"ullamcorper"]; 578 | [wordsArray addObject:@"vivamus"]; 579 | [wordsArray addObject:@"venenatis"]; 580 | [wordsArray addObject:@"velit"]; 581 | [wordsArray addObject:@"eget"]; 582 | [wordsArray addObject:@"enim"]; 583 | [wordsArray addObject:@"nunc"]; 584 | [wordsArray addObject:@"eu"]; 585 | [wordsArray addObject:@"nunc"]; 586 | [wordsArray addObject:@"eget"]; 587 | [wordsArray addObject:@"felis"]; 588 | [wordsArray addObject:@"malesuada"]; 589 | [wordsArray addObject:@"fermentum"]; 590 | [wordsArray addObject:@"quisque"]; 591 | [wordsArray addObject:@"magna"]; 592 | [wordsArray addObject:@"mauris"]; 593 | [wordsArray addObject:@"ligula"]; 594 | [wordsArray addObject:@"felis"]; 595 | [wordsArray addObject:@"luctus"]; 596 | [wordsArray addObject:@"a"]; 597 | [wordsArray addObject:@"aliquet"]; 598 | [wordsArray addObject:@"nec"]; 599 | [wordsArray addObject:@"vulputate"]; 600 | [wordsArray addObject:@"eget"]; 601 | [wordsArray addObject:@"magna"]; 602 | [wordsArray addObject:@"quisque"]; 603 | [wordsArray addObject:@"placerat"]; 604 | [wordsArray addObject:@"diam"]; 605 | [wordsArray addObject:@"sed"]; 606 | [wordsArray addObject:@"arcu"]; 607 | [wordsArray addObject:@"praesent"]; 608 | [wordsArray addObject:@"sollicitudin"]; 609 | [wordsArray addObject:@"aliquam"]; 610 | [wordsArray addObject:@"non"]; 611 | [wordsArray addObject:@"sapien"]; 612 | [wordsArray addObject:@"quisque"]; 613 | [wordsArray addObject:@"id"]; 614 | [wordsArray addObject:@"augue"]; 615 | [wordsArray addObject:@"class"]; 616 | [wordsArray addObject:@"aptent"]; 617 | [wordsArray addObject:@"taciti"]; 618 | [wordsArray addObject:@"sociosqu"]; 619 | [wordsArray addObject:@"ad"]; 620 | [wordsArray addObject:@"litora"]; 621 | [wordsArray addObject:@"torquent"]; 622 | [wordsArray addObject:@"per"]; 623 | [wordsArray addObject:@"conubia"]; 624 | [wordsArray addObject:@"nostra"]; 625 | [wordsArray addObject:@"per"]; 626 | [wordsArray addObject:@"inceptos"]; 627 | [wordsArray addObject:@"hymenaeos"]; 628 | [wordsArray addObject:@"etiam"]; 629 | [wordsArray addObject:@"lacus"]; 630 | [wordsArray addObject:@"lectus"]; 631 | [wordsArray addObject:@"mollis"]; 632 | [wordsArray addObject:@"quis"]; 633 | [wordsArray addObject:@"mattis"]; 634 | [wordsArray addObject:@"nec"]; 635 | [wordsArray addObject:@"commodo"]; 636 | [wordsArray addObject:@"facilisis"]; 637 | [wordsArray addObject:@"nibh"]; 638 | [wordsArray addObject:@"sed"]; 639 | [wordsArray addObject:@"sodales"]; 640 | [wordsArray addObject:@"sapien"]; 641 | [wordsArray addObject:@"ac"]; 642 | [wordsArray addObject:@"ante"]; 643 | [wordsArray addObject:@"duis"]; 644 | [wordsArray addObject:@"eget"]; 645 | [wordsArray addObject:@"lectus"]; 646 | [wordsArray addObject:@"in"]; 647 | [wordsArray addObject:@"nibh"]; 648 | [wordsArray addObject:@"lacinia"]; 649 | [wordsArray addObject:@"auctor"]; 650 | [wordsArray addObject:@"fusce"]; 651 | [wordsArray addObject:@"interdum"]; 652 | [wordsArray addObject:@"lectus"]; 653 | [wordsArray addObject:@"non"]; 654 | [wordsArray addObject:@"dui"]; 655 | [wordsArray addObject:@"integer"]; 656 | [wordsArray addObject:@"accumsan"]; 657 | [wordsArray addObject:@"quisque"]; 658 | [wordsArray addObject:@"quam"]; 659 | [wordsArray addObject:@"curabitur"]; 660 | [wordsArray addObject:@"scelerisque"]; 661 | [wordsArray addObject:@"imperdiet"]; 662 | [wordsArray addObject:@"nisl"]; 663 | [wordsArray addObject:@"suspendisse"]; 664 | [wordsArray addObject:@"potenti"]; 665 | [wordsArray addObject:@"nam"]; 666 | [wordsArray addObject:@"massa"]; 667 | [wordsArray addObject:@"leo"]; 668 | [wordsArray addObject:@"iaculis"]; 669 | [wordsArray addObject:@"sed"]; 670 | [wordsArray addObject:@"accumsan"]; 671 | [wordsArray addObject:@"id"]; 672 | [wordsArray addObject:@"ultrices"]; 673 | [wordsArray addObject:@"nec"]; 674 | [wordsArray addObject:@"velit"]; 675 | [wordsArray addObject:@"suspendisse"]; 676 | [wordsArray addObject:@"potenti"]; 677 | [wordsArray addObject:@"mauris"]; 678 | [wordsArray addObject:@"bibendum"]; 679 | [wordsArray addObject:@"turpis"]; 680 | [wordsArray addObject:@"ac"]; 681 | [wordsArray addObject:@"viverra"]; 682 | [wordsArray addObject:@"sollicitudin"]; 683 | [wordsArray addObject:@"metus"]; 684 | [wordsArray addObject:@"massa"]; 685 | [wordsArray addObject:@"interdum"]; 686 | [wordsArray addObject:@"orci"]; 687 | [wordsArray addObject:@"non"]; 688 | [wordsArray addObject:@"imperdiet"]; 689 | [wordsArray addObject:@"orci"]; 690 | [wordsArray addObject:@"ante"]; 691 | [wordsArray addObject:@"at"]; 692 | [wordsArray addObject:@"ipsum"]; 693 | [wordsArray addObject:@"etiam"]; 694 | [wordsArray addObject:@"eget"]; 695 | [wordsArray addObject:@"magna"]; 696 | [wordsArray addObject:@"mauris"]; 697 | [wordsArray addObject:@"at"]; 698 | [wordsArray addObject:@"tortor"]; 699 | [wordsArray addObject:@"eu"]; 700 | [wordsArray addObject:@"lectus"]; 701 | [wordsArray addObject:@"tempor"]; 702 | [wordsArray addObject:@"tincidunt"]; 703 | [wordsArray addObject:@"phasellus"]; 704 | [wordsArray addObject:@"justo"]; 705 | [wordsArray addObject:@"purus"]; 706 | [wordsArray addObject:@"pharetra"]; 707 | [wordsArray addObject:@"ut"]; 708 | [wordsArray addObject:@"ultricies"]; 709 | [wordsArray addObject:@"nec"]; 710 | [wordsArray addObject:@"consequat"]; 711 | [wordsArray addObject:@"vel"]; 712 | [wordsArray addObject:@"nisi"]; 713 | [wordsArray addObject:@"fusce"]; 714 | [wordsArray addObject:@"vitae"]; 715 | [wordsArray addObject:@"velit"]; 716 | [wordsArray addObject:@"at"]; 717 | [wordsArray addObject:@"libero"]; 718 | [wordsArray addObject:@"sollicitudin"]; 719 | [wordsArray addObject:@"sodales"]; 720 | [wordsArray addObject:@"aenean"]; 721 | [wordsArray addObject:@"mi"]; 722 | [wordsArray addObject:@"libero"]; 723 | [wordsArray addObject:@"ultrices"]; 724 | [wordsArray addObject:@"id"]; 725 | [wordsArray addObject:@"suscipit"]; 726 | [wordsArray addObject:@"vitae"]; 727 | [wordsArray addObject:@"dapibus"]; 728 | [wordsArray addObject:@"eu"]; 729 | [wordsArray addObject:@"metus"]; 730 | [wordsArray addObject:@"aenean"]; 731 | [wordsArray addObject:@"vestibulum"]; 732 | [wordsArray addObject:@"nibh"]; 733 | [wordsArray addObject:@"ac"]; 734 | [wordsArray addObject:@"massa"]; 735 | [wordsArray addObject:@"vivamus"]; 736 | [wordsArray addObject:@"vestibulum"]; 737 | [wordsArray addObject:@"libero"]; 738 | [wordsArray addObject:@"vitae"]; 739 | [wordsArray addObject:@"purus"]; 740 | [wordsArray addObject:@"in"]; 741 | [wordsArray addObject:@"hac"]; 742 | [wordsArray addObject:@"habitasse"]; 743 | [wordsArray addObject:@"platea"]; 744 | [wordsArray addObject:@"dictumst"]; 745 | [wordsArray addObject:@"curabitur"]; 746 | [wordsArray addObject:@"blandit"]; 747 | [wordsArray addObject:@"nunc"]; 748 | [wordsArray addObject:@"non"]; 749 | [wordsArray addObject:@"arcu"]; 750 | [wordsArray addObject:@"ut"]; 751 | [wordsArray addObject:@"nec"]; 752 | [wordsArray addObject:@"nibh"]; 753 | [wordsArray addObject:@"morbi"]; 754 | [wordsArray addObject:@"quis"]; 755 | [wordsArray addObject:@"leo"]; 756 | [wordsArray addObject:@"vel"]; 757 | [wordsArray addObject:@"magna"]; 758 | [wordsArray addObject:@"commodo"]; 759 | [wordsArray addObject:@"rhoncus"]; 760 | [wordsArray addObject:@"donec"]; 761 | [wordsArray addObject:@"congue"]; 762 | [wordsArray addObject:@"leo"]; 763 | [wordsArray addObject:@"eu"]; 764 | [wordsArray addObject:@"lacus"]; 765 | [wordsArray addObject:@"pellentesque"]; 766 | [wordsArray addObject:@"at"]; 767 | [wordsArray addObject:@"erat"]; 768 | [wordsArray addObject:@"id"]; 769 | [wordsArray addObject:@"mi"]; 770 | [wordsArray addObject:@"consequat"]; 771 | [wordsArray addObject:@"congue"]; 772 | [wordsArray addObject:@"praesent"]; 773 | [wordsArray addObject:@"a"]; 774 | [wordsArray addObject:@"nisl"]; 775 | [wordsArray addObject:@"ut"]; 776 | [wordsArray addObject:@"diam"]; 777 | [wordsArray addObject:@"interdum"]; 778 | [wordsArray addObject:@"molestie"]; 779 | [wordsArray addObject:@"fusce"]; 780 | [wordsArray addObject:@"suscipit"]; 781 | [wordsArray addObject:@"rhoncus"]; 782 | [wordsArray addObject:@"sem"]; 783 | [wordsArray addObject:@"donec"]; 784 | [wordsArray addObject:@"pretium"]; 785 | [wordsArray addObject:@"aliquam"]; 786 | [wordsArray addObject:@"molestie"]; 787 | [wordsArray addObject:@"vivamus"]; 788 | [wordsArray addObject:@"et"]; 789 | [wordsArray addObject:@"justo"]; 790 | [wordsArray addObject:@"at"]; 791 | [wordsArray addObject:@"augue"]; 792 | [wordsArray addObject:@"aliquet"]; 793 | [wordsArray addObject:@"dapibus"]; 794 | [wordsArray addObject:@"pellentesque"]; 795 | [wordsArray addObject:@"felis"]; 796 | [wordsArray addObject:@"morbi"]; 797 | [wordsArray addObject:@"semper"]; 798 | [wordsArray addObject:@"in"]; 799 | [wordsArray addObject:@"venenatis"]; 800 | [wordsArray addObject:@"imperdiet"]; 801 | [wordsArray addObject:@"neque"]; 802 | [wordsArray addObject:@"donec"]; 803 | [wordsArray addObject:@"auctor"]; 804 | [wordsArray addObject:@"molestie"]; 805 | [wordsArray addObject:@"augue"]; 806 | [wordsArray addObject:@"nulla"]; 807 | [wordsArray addObject:@"id"]; 808 | [wordsArray addObject:@"arcu"]; 809 | [wordsArray addObject:@"sit"]; 810 | [wordsArray addObject:@"amet"]; 811 | [wordsArray addObject:@"dui"]; 812 | [wordsArray addObject:@"lacinia"]; 813 | [wordsArray addObject:@"convallis"]; 814 | [wordsArray addObject:@"proin"]; 815 | [wordsArray addObject:@"tincidunt"]; 816 | [wordsArray addObject:@"proin"]; 817 | [wordsArray addObject:@"a"]; 818 | [wordsArray addObject:@"ante"]; 819 | [wordsArray addObject:@"nunc"]; 820 | [wordsArray addObject:@"imperdiet"]; 821 | [wordsArray addObject:@"augue"]; 822 | [wordsArray addObject:@"nullam"]; 823 | [wordsArray addObject:@"sit"]; 824 | [wordsArray addObject:@"amet"]; 825 | [wordsArray addObject:@"arcu"]; 826 | [wordsArray addObject:@"quisque"]; 827 | [wordsArray addObject:@"laoreet"]; 828 | [wordsArray addObject:@"viverra"]; 829 | [wordsArray addObject:@"felis"]; 830 | [wordsArray addObject:@"lorem"]; 831 | [wordsArray addObject:@"ipsum"]; 832 | [wordsArray addObject:@"dolor"]; 833 | [wordsArray addObject:@"sit"]; 834 | [wordsArray addObject:@"amet"]; 835 | [wordsArray addObject:@"consectetuer"]; 836 | [wordsArray addObject:@"adipiscing"]; 837 | [wordsArray addObject:@"elit"]; 838 | [wordsArray addObject:@"in"]; 839 | [wordsArray addObject:@"hac"]; 840 | [wordsArray addObject:@"habitasse"]; 841 | [wordsArray addObject:@"platea"]; 842 | [wordsArray addObject:@"dictumst"]; 843 | [wordsArray addObject:@"pellentesque"]; 844 | [wordsArray addObject:@"habitant"]; 845 | [wordsArray addObject:@"morbi"]; 846 | [wordsArray addObject:@"tristique"]; 847 | [wordsArray addObject:@"senectus"]; 848 | [wordsArray addObject:@"et"]; 849 | [wordsArray addObject:@"netus"]; 850 | [wordsArray addObject:@"et"]; 851 | [wordsArray addObject:@"malesuada"]; 852 | [wordsArray addObject:@"fames"]; 853 | [wordsArray addObject:@"ac"]; 854 | [wordsArray addObject:@"turpis"]; 855 | [wordsArray addObject:@"egestas"]; 856 | [wordsArray addObject:@"class"]; 857 | [wordsArray addObject:@"aptent"]; 858 | [wordsArray addObject:@"taciti"]; 859 | [wordsArray addObject:@"sociosqu"]; 860 | [wordsArray addObject:@"ad"]; 861 | [wordsArray addObject:@"litora"]; 862 | [wordsArray addObject:@"torquent"]; 863 | [wordsArray addObject:@"per"]; 864 | [wordsArray addObject:@"conubia"]; 865 | [wordsArray addObject:@"nostra"]; 866 | [wordsArray addObject:@"per"]; 867 | [wordsArray addObject:@"inceptos"]; 868 | [wordsArray addObject:@"hymenaeos"]; 869 | [wordsArray addObject:@"nullam"]; 870 | [wordsArray addObject:@"nibh"]; 871 | [wordsArray addObject:@"sapien"]; 872 | [wordsArray addObject:@"volutpat"]; 873 | [wordsArray addObject:@"ut"]; 874 | [wordsArray addObject:@"placerat"]; 875 | [wordsArray addObject:@"quis"]; 876 | [wordsArray addObject:@"ornare"]; 877 | [wordsArray addObject:@"at"]; 878 | [wordsArray addObject:@"lorem"]; 879 | [wordsArray addObject:@"class"]; 880 | [wordsArray addObject:@"aptent"]; 881 | [wordsArray addObject:@"taciti"]; 882 | [wordsArray addObject:@"sociosqu"]; 883 | [wordsArray addObject:@"ad"]; 884 | [wordsArray addObject:@"litora"]; 885 | [wordsArray addObject:@"torquent"]; 886 | [wordsArray addObject:@"per"]; 887 | [wordsArray addObject:@"conubia"]; 888 | [wordsArray addObject:@"nostra"]; 889 | [wordsArray addObject:@"per"]; 890 | [wordsArray addObject:@"inceptos"]; 891 | [wordsArray addObject:@"hymenaeos"]; 892 | [wordsArray addObject:@"morbi"]; 893 | [wordsArray addObject:@"dictum"]; 894 | [wordsArray addObject:@"massa"]; 895 | [wordsArray addObject:@"id"]; 896 | [wordsArray addObject:@"libero"]; 897 | [wordsArray addObject:@"ut"]; 898 | [wordsArray addObject:@"neque"]; 899 | [wordsArray addObject:@"phasellus"]; 900 | [wordsArray addObject:@"tincidunt"]; 901 | [wordsArray addObject:@"nibh"]; 902 | [wordsArray addObject:@"ut"]; 903 | [wordsArray addObject:@"tincidunt"]; 904 | [wordsArray addObject:@"lacinia"]; 905 | [wordsArray addObject:@"lacus"]; 906 | [wordsArray addObject:@"nulla"]; 907 | [wordsArray addObject:@"aliquam"]; 908 | [wordsArray addObject:@"mi"]; 909 | [wordsArray addObject:@"a"]; 910 | [wordsArray addObject:@"interdum"]; 911 | [wordsArray addObject:@"dui"]; 912 | [wordsArray addObject:@"augue"]; 913 | [wordsArray addObject:@"non"]; 914 | [wordsArray addObject:@"pede"]; 915 | [wordsArray addObject:@"duis"]; 916 | [wordsArray addObject:@"nunc"]; 917 | [wordsArray addObject:@"magna"]; 918 | [wordsArray addObject:@"vulputate"]; 919 | [wordsArray addObject:@"a"]; 920 | [wordsArray addObject:@"porta"]; 921 | [wordsArray addObject:@"at"]; 922 | [wordsArray addObject:@"tincidunt"]; 923 | [wordsArray addObject:@"a"]; 924 | [wordsArray addObject:@"nulla"]; 925 | [wordsArray addObject:@"praesent"]; 926 | [wordsArray addObject:@"facilisis"]; 927 | [wordsArray addObject:@"suspendisse"]; 928 | [wordsArray addObject:@"sodales"]; 929 | [wordsArray addObject:@"feugiat"]; 930 | [wordsArray addObject:@"purus"]; 931 | [wordsArray addObject:@"cras"]; 932 | [wordsArray addObject:@"et"]; 933 | [wordsArray addObject:@"justo"]; 934 | [wordsArray addObject:@"a"]; 935 | [wordsArray addObject:@"mauris"]; 936 | [wordsArray addObject:@"mollis"]; 937 | [wordsArray addObject:@"imperdiet"]; 938 | [wordsArray addObject:@"morbi"]; 939 | [wordsArray addObject:@"erat"]; 940 | [wordsArray addObject:@"mi"]; 941 | [wordsArray addObject:@"ultrices"]; 942 | [wordsArray addObject:@"eget"]; 943 | [wordsArray addObject:@"aliquam"]; 944 | [wordsArray addObject:@"elementum"]; 945 | [wordsArray addObject:@"iaculis"]; 946 | [wordsArray addObject:@"id"]; 947 | [wordsArray addObject:@"velit"]; 948 | [wordsArray addObject:@"in"]; 949 | [wordsArray addObject:@"scelerisque"]; 950 | [wordsArray addObject:@"enim"]; 951 | [wordsArray addObject:@"sit"]; 952 | [wordsArray addObject:@"amet"]; 953 | [wordsArray addObject:@"turpis"]; 954 | [wordsArray addObject:@"sed"]; 955 | [wordsArray addObject:@"aliquam"]; 956 | [wordsArray addObject:@"odio"]; 957 | [wordsArray addObject:@"nonummy"]; 958 | [wordsArray addObject:@"ullamcorper"]; 959 | [wordsArray addObject:@"mollis"]; 960 | [wordsArray addObject:@"lacus"]; 961 | [wordsArray addObject:@"nibh"]; 962 | [wordsArray addObject:@"tempor"]; 963 | [wordsArray addObject:@"dolor"]; 964 | [wordsArray addObject:@"sit"]; 965 | [wordsArray addObject:@"amet"]; 966 | [wordsArray addObject:@"varius"]; 967 | [wordsArray addObject:@"sem"]; 968 | [wordsArray addObject:@"neque"]; 969 | [wordsArray addObject:@"ac"]; 970 | [wordsArray addObject:@"dui"]; 971 | [wordsArray addObject:@"nunc"]; 972 | [wordsArray addObject:@"et"]; 973 | [wordsArray addObject:@"est"]; 974 | [wordsArray addObject:@"eu"]; 975 | [wordsArray addObject:@"massa"]; 976 | [wordsArray addObject:@"eleifend"]; 977 | [wordsArray addObject:@"mollis"]; 978 | [wordsArray addObject:@"mauris"]; 979 | [wordsArray addObject:@"aliquet"]; 980 | [wordsArray addObject:@"orci"]; 981 | [wordsArray addObject:@"quis"]; 982 | [wordsArray addObject:@"tellus"]; 983 | [wordsArray addObject:@"ut"]; 984 | [wordsArray addObject:@"mattis"]; 985 | [wordsArray addObject:@"praesent"]; 986 | [wordsArray addObject:@"mollis"]; 987 | [wordsArray addObject:@"consectetuer"]; 988 | [wordsArray addObject:@"quam"]; 989 | [wordsArray addObject:@"nulla"]; 990 | [wordsArray addObject:@"nulla"]; 991 | [wordsArray addObject:@"nunc"]; 992 | [wordsArray addObject:@"accumsan"]; 993 | [wordsArray addObject:@"nunc"]; 994 | [wordsArray addObject:@"sit"]; 995 | [wordsArray addObject:@"amet"]; 996 | [wordsArray addObject:@"scelerisque"]; 997 | [wordsArray addObject:@"porttitor"]; 998 | [wordsArray addObject:@"nibh"]; 999 | [wordsArray addObject:@"pede"]; 1000 | [wordsArray addObject:@"lacinia"]; 1001 | [wordsArray addObject:@"justo"]; 1002 | [wordsArray addObject:@"tristique"]; 1003 | [wordsArray addObject:@"mattis"]; 1004 | [wordsArray addObject:@"purus"]; 1005 | [wordsArray addObject:@"eros"]; 1006 | [wordsArray addObject:@"non"]; 1007 | [wordsArray addObject:@"velit"]; 1008 | [wordsArray addObject:@"aenean"]; 1009 | [wordsArray addObject:@"sagittis"]; 1010 | [wordsArray addObject:@"commodo"]; 1011 | [wordsArray addObject:@"erat"]; 1012 | [wordsArray addObject:@"aliquam"]; 1013 | [wordsArray addObject:@"id"]; 1014 | [wordsArray addObject:@"lacus"]; 1015 | [wordsArray addObject:@"morbi"]; 1016 | [wordsArray addObject:@"vulputate"]; 1017 | [wordsArray addObject:@"vestibulum"]; 1018 | [wordsArray addObject:@"elit"]; 1019 | _words = [wordsArray copy]; 1020 | [wordsArray release]; 1021 | } 1022 | return self; 1023 | } 1024 | 1025 | - (void) dealloc { 1026 | [_words release]; 1027 | [super dealloc]; 1028 | } 1029 | 1030 | #pragma mark - 1031 | 1032 | - (NSString*) randomWord { 1033 | int randomIndex = random() % [_words count]; 1034 | return [_words objectAtIndex:randomIndex]; 1035 | } 1036 | 1037 | #pragma mark - 1038 | 1039 | - (NSString*) words:(NSUInteger)count { 1040 | if (count==0) return @""; 1041 | 1042 | NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init]; 1043 | NSString* collectedWords = [self randomWord]; 1044 | for (NSUInteger i=0; i 2 | 3 | 4 | 800 5 | 10J869 6 | 1306 7 | 1038.35 8 | 461.00 9 | 10 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 11 | 301 12 | 13 | 14 | YES 15 | IBUIView 16 | IBUIBarButtonItem 17 | IBUILabel 18 | IBUIToolbar 19 | IBProxyObject 20 | IBUISlider 21 | IBUIButton 22 | 23 | 24 | YES 25 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 26 | 27 | 28 | YES 29 | 30 | YES 31 | 32 | 33 | 34 | 35 | YES 36 | 37 | IBFilesOwner 38 | IBIPadFramework 39 | 40 | 41 | IBFirstResponder 42 | IBIPadFramework 43 | 44 | 45 | 46 | 274 47 | 48 | YES 49 | 50 | 51 | 290 52 | 53 | YES 54 | 55 | 56 | 292 57 | {{574, 11}, {167, 23}} 58 | 59 | 60 | 61 | NO 62 | IBIPadFramework 63 | 0 64 | 0 65 | 100 66 | 1000 67 | 68 | 69 | {768, 44} 70 | 71 | 72 | 73 | NO 74 | NO 75 | IBIPadFramework 76 | 77 | YES 78 | 79 | IBIPadFramework 80 | 15 81 | 82 | 6 83 | 84 | 85 | AQ GridView 86 | IBIPadFramework 87 | 2 88 | 89 | 90 | 91 | 1 92 | CH GridView 93 | IBIPadFramework 94 | 1 95 | 96 | 97 | 98 | 2 99 | MM Grid View 100 | IBIPadFramework 101 | 1 102 | 103 | 104 | 105 | 3 106 | OH Grid View 107 | IBIPadFramework 108 | 1 109 | 110 | 111 | 112 | IBIPadFramework 113 | 114 | 5 115 | 116 | 117 | IBIPadFramework 118 | 1 119 | 120 | 121 | 122 | 123 | IBIPadFramework 124 | 15 125 | 126 | 6 127 | 128 | 129 | 130 | 131 | 132 | 290 133 | 134 | YES 135 | 136 | 137 | 292 138 | {{18, 25}, {169, 23}} 139 | 140 | 141 | 142 | NO 143 | IBIPadFramework 144 | 0 145 | 0 146 | 3 147 | 3 148 | 10 149 | 150 | 151 | 152 | 292 153 | {{499, 5}, {103, 21}} 154 | 155 | 156 | 157 | NO 158 | YES 159 | 7 160 | NO 161 | IBIPadFramework 162 | Grid Notes: 163 | 164 | Helvetica-Bold 165 | 14 166 | 16 167 | 168 | 169 | 1 170 | MCAwIDAAA 171 | 172 | 173 | 1 174 | 14 175 | 2 176 | 177 | 178 | 179 | 292 180 | {{499, 25}, {103, 21}} 181 | 182 | 183 | 184 | NO 185 | YES 186 | 7 187 | NO 188 | IBIPadFramework 189 | Link: 190 | 191 | 192 | 193 | 1 194 | 14 195 | 2 196 | 197 | 198 | 199 | 292 200 | {{611, 5}, {393, 21}} 201 | 202 | 203 | 204 | NO 205 | YES 206 | 7 207 | NO 208 | IBIPadFramework 209 | 210 | 211 | Helvetica 212 | 14 213 | 16 214 | 215 | 216 | 217 | 1 218 | 14 219 | 220 | 221 | 222 | 292 223 | {{611, 22}, {393, 28}} 224 | 225 | 226 | 227 | NO 228 | IBIPadFramework 229 | 0 230 | 231 | 232 | 3 233 | MQA 234 | 235 | 236 | 1 237 | MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA 238 | 239 | 240 | 3 241 | MC41AA 242 | 243 | 244 | 245 | 246 | 292 247 | {{20, 5}, {160, 21}} 248 | 249 | 250 | 251 | NO 252 | YES 253 | 7 254 | NO 255 | IBIPadFramework 256 | Number of Columns 257 | 258 | 259 | 260 | 1 261 | 10 262 | 263 | 264 | {{0, 44}, {768, 50}} 265 | 266 | 267 | 268 | 269 | 1 270 | MSAwLjg0NjA1MDk3NzcgMC40ODQyODE5ODcAA 271 | 272 | IBIPadFramework 273 | 274 | 275 | 276 | 274 277 | {{0, 95}, {768, 909}} 278 | 279 | 280 | 281 | 282 | 3 283 | MCAwAA 284 | 285 | IBIPadFramework 286 | 287 | 288 | {{0, 20}, {768, 1004}} 289 | 290 | 291 | 292 | 293 | 3 294 | MQA 295 | 296 | 2 297 | 298 | 299 | 300 | 2 301 | 302 | IBIPadFramework 303 | 304 | 305 | 306 | 307 | YES 308 | 309 | 310 | view 311 | 312 | 313 | 314 | 3 315 | 316 | 317 | 318 | changeGridToolkit: 319 | 320 | 321 | 322 | 18 323 | 324 | 325 | 326 | changeGridToolkit: 327 | 328 | 329 | 330 | 19 331 | 332 | 333 | 334 | changeGridToolkit: 335 | 336 | 337 | 338 | 20 339 | 340 | 341 | 342 | changeGridToolkit: 343 | 344 | 345 | 346 | 21 347 | 348 | 349 | 350 | gridControlNotesLabel 351 | 352 | 353 | 354 | 47 355 | 356 | 357 | 358 | gridControlLinkLabel 359 | 360 | 361 | 362 | 56 363 | 364 | 365 | 366 | openControlInSafari: 367 | 368 | 369 | 7 370 | 371 | 57 372 | 373 | 374 | 375 | gridContainer 376 | 377 | 378 | 379 | 61 380 | 381 | 382 | 383 | aqGridButton 384 | 385 | 386 | 387 | 71 388 | 389 | 390 | 391 | chGridButton 392 | 393 | 394 | 395 | 72 396 | 397 | 398 | 399 | mmGridButton 400 | 401 | 402 | 403 | 73 404 | 405 | 406 | 407 | ohGridButton 408 | 409 | 410 | 411 | 74 412 | 413 | 414 | 415 | gridNumberOfCellsSlider 416 | 417 | 418 | 419 | 75 420 | 421 | 422 | 423 | gridColumnCountSlider 424 | 425 | 426 | 427 | 80 428 | 429 | 430 | 431 | numberOfCellsSliderChanged: 432 | 433 | 434 | 7 435 | 436 | 82 437 | 438 | 439 | 440 | columnCountSliderChanged: 441 | 442 | 443 | 7 444 | 445 | 83 446 | 447 | 448 | 449 | 450 | YES 451 | 452 | 0 453 | 454 | 455 | 456 | 457 | 458 | -1 459 | 460 | 461 | File's Owner 462 | 463 | 464 | -2 465 | 466 | 467 | 468 | 469 | 2 470 | 471 | 472 | YES 473 | 474 | 475 | 476 | 477 | 478 | 479 | 480 | 4 481 | 482 | 483 | YES 484 | 485 | 486 | 487 | 488 | 489 | 490 | 491 | 492 | 493 | 494 | 495 | 496 | 5 497 | 498 | 499 | 500 | 501 | 6 502 | 503 | 504 | 505 | 506 | 10 507 | 508 | 509 | 510 | 511 | 11 512 | 513 | 514 | 515 | 516 | 13 517 | 518 | 519 | 520 | 521 | 40 522 | 523 | 524 | YES 525 | 526 | 527 | 528 | 529 | 530 | 531 | 532 | 533 | Information Bar 534 | 535 | 536 | 43 537 | 538 | 539 | 540 | 541 | 44 542 | 543 | 544 | 545 | 546 | 55 547 | 548 | 549 | 550 | 551 | 58 552 | 553 | 554 | 555 | 556 | 64 557 | 558 | 559 | YES 560 | 561 | 562 | 563 | 564 | 565 | 63 566 | 567 | 568 | Horizontal Slider 569 | 570 | 571 | 65 572 | 573 | 574 | 575 | 576 | 70 577 | 578 | 579 | 580 | 581 | 60 582 | 583 | 584 | Grid Container 585 | 586 | 587 | 78 588 | 589 | 590 | Horizontal Slider 591 | 592 | 593 | 81 594 | 595 | 596 | 597 | 598 | 599 | 600 | YES 601 | 602 | YES 603 | -1.CustomClassName 604 | -2.CustomClassName 605 | 10.IBPluginDependency 606 | 11.IBPluginDependency 607 | 13.IBPluginDependency 608 | 2.IBEditorWindowLastContentRect 609 | 2.IBPluginDependency 610 | 4.IBPluginDependency 611 | 40.IBPluginDependency 612 | 43.IBPluginDependency 613 | 44.IBPluginDependency 614 | 5.IBPluginDependency 615 | 55.IBPluginDependency 616 | 58.IBPluginDependency 617 | 6.IBPluginDependency 618 | 60.IBPluginDependency 619 | 63.IBPluginDependency 620 | 65.IBPluginDependency 621 | 70.IBPluginDependency 622 | 78.IBPluginDependency 623 | 81.IBPluginDependency 624 | 625 | 626 | YES 627 | GridMonsterViewController 628 | UIResponder 629 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 630 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 631 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 632 | {{513, 0}, {783, 856}} 633 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 634 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 635 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 636 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 637 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 638 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 639 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 640 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 641 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 642 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 643 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 644 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 645 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 646 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 647 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 648 | 649 | 650 | 651 | YES 652 | 653 | 654 | 655 | 656 | 657 | YES 658 | 659 | 660 | 661 | 662 | 83 663 | 664 | 665 | 666 | YES 667 | 668 | GridMonsterViewController 669 | UIViewController 670 | 671 | YES 672 | 673 | YES 674 | changeGridToolkit: 675 | columnCountSliderChanged: 676 | numberOfCellsSliderChanged: 677 | openControlInSafari: 678 | 679 | 680 | YES 681 | id 682 | id 683 | id 684 | id 685 | 686 | 687 | 688 | YES 689 | 690 | YES 691 | changeGridToolkit: 692 | columnCountSliderChanged: 693 | numberOfCellsSliderChanged: 694 | openControlInSafari: 695 | 696 | 697 | YES 698 | 699 | changeGridToolkit: 700 | id 701 | 702 | 703 | columnCountSliderChanged: 704 | id 705 | 706 | 707 | numberOfCellsSliderChanged: 708 | id 709 | 710 | 711 | openControlInSafari: 712 | id 713 | 714 | 715 | 716 | 717 | YES 718 | 719 | YES 720 | aqGridButton 721 | chGridButton 722 | gridColumnCountSlider 723 | gridContainer 724 | gridControlLinkLabel 725 | gridControlNotesLabel 726 | gridNumberOfCellsSlider 727 | mmGridButton 728 | ohGridButton 729 | 730 | 731 | YES 732 | UIBarButtonItem 733 | UIBarButtonItem 734 | UISlider 735 | UIView 736 | UIButton 737 | UILabel 738 | UISlider 739 | UIBarButtonItem 740 | UIBarButtonItem 741 | 742 | 743 | 744 | YES 745 | 746 | YES 747 | aqGridButton 748 | chGridButton 749 | gridColumnCountSlider 750 | gridContainer 751 | gridControlLinkLabel 752 | gridControlNotesLabel 753 | gridNumberOfCellsSlider 754 | mmGridButton 755 | ohGridButton 756 | 757 | 758 | YES 759 | 760 | aqGridButton 761 | UIBarButtonItem 762 | 763 | 764 | chGridButton 765 | UIBarButtonItem 766 | 767 | 768 | gridColumnCountSlider 769 | UISlider 770 | 771 | 772 | gridContainer 773 | UIView 774 | 775 | 776 | gridControlLinkLabel 777 | UIButton 778 | 779 | 780 | gridControlNotesLabel 781 | UILabel 782 | 783 | 784 | gridNumberOfCellsSlider 785 | UISlider 786 | 787 | 788 | mmGridButton 789 | UIBarButtonItem 790 | 791 | 792 | ohGridButton 793 | UIBarButtonItem 794 | 795 | 796 | 797 | 798 | IBProjectSource 799 | ./Classes/GridMonsterViewController.h 800 | 801 | 802 | 803 | 804 | 0 805 | IBIPadFramework 806 | 807 | com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS 808 | 809 | 810 | 811 | com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3 812 | 813 | 814 | YES 815 | 3 816 | 301 817 | 818 | 819 | -------------------------------------------------------------------------------- /GridMonster/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /GridMonster/en.lproj/MainWindow.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 800 5 | 10D540 6 | 760 7 | 1038.29 8 | 460.00 9 | 10 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 11 | 81 12 | 13 | 14 | YES 15 | 16 | 17 | 18 | YES 19 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 20 | 21 | 22 | YES 23 | 24 | YES 25 | 26 | 27 | YES 28 | 29 | 30 | 31 | YES 32 | 33 | IBFilesOwner 34 | IBCocoaTouchFramework 35 | 36 | 37 | IBFirstResponder 38 | IBCocoaTouchFramework 39 | 40 | 41 | 42 | 292 43 | {768, 1024} 44 | 45 | 46 | 1 47 | MSAxIDEAA 48 | 49 | NO 50 | NO 51 | 52 | 2 53 | 54 | IBIPadFramework 55 | YES 56 | 57 | 58 | IBIPadFramework 59 | 60 | 61 | GridMonsterViewController 62 | 63 | IBIPadFramework 64 | 65 | 66 | 67 | 68 | YES 69 | 70 | 71 | viewController 72 | 73 | 74 | 75 | 8 76 | 77 | 78 | 79 | delegate 80 | 81 | 82 | 83 | 9 84 | 85 | 86 | 87 | window 88 | 89 | 90 | 91 | 10 92 | 93 | 94 | 95 | 96 | YES 97 | 98 | 0 99 | 100 | 101 | 102 | 103 | 104 | -1 105 | 106 | 107 | File's Owner 108 | 109 | 110 | -2 111 | 112 | 113 | 114 | 115 | 2 116 | 117 | 118 | 119 | 120 | 6 121 | 122 | 123 | GridMonster App Delegate 124 | 125 | 126 | 7 127 | 128 | 129 | 130 | 131 | 132 | 133 | YES 134 | 135 | YES 136 | -1.CustomClassName 137 | -2.CustomClassName 138 | 2.IBEditorWindowLastContentRect 139 | 2.IBPluginDependency 140 | 6.CustomClassName 141 | 6.IBPluginDependency 142 | 7.CustomClassName 143 | 7.IBEditorWindowLastContentRect 144 | 7.IBPluginDependency 145 | 146 | 147 | YES 148 | UIApplication 149 | UIResponder 150 | {{200, 57}, {783, 799}} 151 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 152 | GridMonsterAppDelegate 153 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 154 | GridMonsterViewController 155 | {{512, 351}, {320, 480}} 156 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 157 | 158 | 159 | 160 | YES 161 | 162 | 163 | YES 164 | 165 | 166 | 167 | 168 | YES 169 | 170 | 171 | YES 172 | 173 | 174 | 175 | 10 176 | 177 | 178 | 179 | YES 180 | 181 | GridMonsterAppDelegate 182 | NSObject 183 | 184 | YES 185 | 186 | YES 187 | viewController 188 | window 189 | 190 | 191 | YES 192 | GridMonsterViewController 193 | UIWindow 194 | 195 | 196 | 197 | IBProjectSource 198 | GridMonsterAppDelegate.h 199 | 200 | 201 | 202 | GridMonsterViewController 203 | UIViewController 204 | 205 | IBProjectSource 206 | GridMonsterViewController.h 207 | 208 | 209 | 210 | 211 | YES 212 | 213 | NSObject 214 | 215 | IBFrameworkSource 216 | Foundation.framework/Headers/NSError.h 217 | 218 | 219 | 220 | NSObject 221 | 222 | IBFrameworkSource 223 | Foundation.framework/Headers/NSFileManager.h 224 | 225 | 226 | 227 | NSObject 228 | 229 | IBFrameworkSource 230 | Foundation.framework/Headers/NSKeyValueCoding.h 231 | 232 | 233 | 234 | NSObject 235 | 236 | IBFrameworkSource 237 | Foundation.framework/Headers/NSKeyValueObserving.h 238 | 239 | 240 | 241 | NSObject 242 | 243 | IBFrameworkSource 244 | Foundation.framework/Headers/NSKeyedArchiver.h 245 | 246 | 247 | 248 | NSObject 249 | 250 | IBFrameworkSource 251 | Foundation.framework/Headers/NSNetServices.h 252 | 253 | 254 | 255 | NSObject 256 | 257 | IBFrameworkSource 258 | Foundation.framework/Headers/NSObject.h 259 | 260 | 261 | 262 | NSObject 263 | 264 | IBFrameworkSource 265 | Foundation.framework/Headers/NSPort.h 266 | 267 | 268 | 269 | NSObject 270 | 271 | IBFrameworkSource 272 | Foundation.framework/Headers/NSRunLoop.h 273 | 274 | 275 | 276 | NSObject 277 | 278 | IBFrameworkSource 279 | Foundation.framework/Headers/NSStream.h 280 | 281 | 282 | 283 | NSObject 284 | 285 | IBFrameworkSource 286 | Foundation.framework/Headers/NSThread.h 287 | 288 | 289 | 290 | NSObject 291 | 292 | IBFrameworkSource 293 | Foundation.framework/Headers/NSURL.h 294 | 295 | 296 | 297 | NSObject 298 | 299 | IBFrameworkSource 300 | Foundation.framework/Headers/NSURLConnection.h 301 | 302 | 303 | 304 | NSObject 305 | 306 | IBFrameworkSource 307 | Foundation.framework/Headers/NSXMLParser.h 308 | 309 | 310 | 311 | NSObject 312 | 313 | IBFrameworkSource 314 | UIKit.framework/Headers/UIAccessibility.h 315 | 316 | 317 | 318 | NSObject 319 | 320 | IBFrameworkSource 321 | UIKit.framework/Headers/UINibLoading.h 322 | 323 | 324 | 325 | NSObject 326 | 327 | IBFrameworkSource 328 | UIKit.framework/Headers/UIResponder.h 329 | 330 | 331 | 332 | UIApplication 333 | UIResponder 334 | 335 | IBFrameworkSource 336 | UIKit.framework/Headers/UIApplication.h 337 | 338 | 339 | 340 | UIResponder 341 | NSObject 342 | 343 | 344 | 345 | UIResponder 346 | 347 | IBFrameworkSource 348 | UIKit.framework/Headers/UITextInput.h 349 | 350 | 351 | 352 | UISearchBar 353 | UIView 354 | 355 | IBFrameworkSource 356 | UIKit.framework/Headers/UISearchBar.h 357 | 358 | 359 | 360 | UISearchDisplayController 361 | NSObject 362 | 363 | IBFrameworkSource 364 | UIKit.framework/Headers/UISearchDisplayController.h 365 | 366 | 367 | 368 | UIView 369 | 370 | IBFrameworkSource 371 | UIKit.framework/Headers/UITextField.h 372 | 373 | 374 | 375 | UIView 376 | UIResponder 377 | 378 | IBFrameworkSource 379 | UIKit.framework/Headers/UIView.h 380 | 381 | 382 | 383 | UIViewController 384 | 385 | IBFrameworkSource 386 | UIKit.framework/Headers/UINavigationController.h 387 | 388 | 389 | 390 | UIViewController 391 | 392 | IBFrameworkSource 393 | UIKit.framework/Headers/UISplitViewController.h 394 | 395 | 396 | 397 | UIViewController 398 | 399 | IBFrameworkSource 400 | UIKit.framework/Headers/UITabBarController.h 401 | 402 | 403 | 404 | UIViewController 405 | UIResponder 406 | 407 | IBFrameworkSource 408 | UIKit.framework/Headers/UIViewController.h 409 | 410 | 411 | 412 | UIWindow 413 | UIView 414 | 415 | IBFrameworkSource 416 | UIKit.framework/Headers/UIWindow.h 417 | 418 | 419 | 420 | 421 | 0 422 | IBIPadFramework 423 | 424 | com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS 425 | 426 | 427 | 428 | com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3 429 | 430 | 431 | YES 432 | GridMonster.xcodeproj 433 | 3 434 | 81 435 | 436 | 437 | -------------------------------------------------------------------------------- /GridMonster/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // GridMonster 4 | // 5 | // Created by Mark Lussier on 4/23/11. 6 | // Copyright 2011 Juniper Networks, Inc. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | int main(int argc, char *argv[]) 12 | { 13 | NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; 14 | int retVal = UIApplicationMain(argc, argv, nil, nil); 15 | [pool release]; 16 | return retVal; 17 | } 18 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | # Grid Monster 3 | 4 | This was a lazy Saturday night experiment to test all the available "Grid" views for iOS development. 5 | 6 | 04/23/2011 - Initial Release - This first pass is just a basic example, more later 7 | 8 | ## Danger Will Robinson, Sub Module Alert 9 | 10 | 11 | This example links in the grid libraries via git submodules so be sure after you clone this to 12 | 13 | * git submodule init 14 | * git submodule update 15 | 16 | ## Grid Libraries 17 | 18 | **AQGrid** by Alan Quatermain 19 | [https://github.com/AlanQuatermain/AQGridView](https://github.com/AlanQuatermain/AQGridView) 20 | 21 | **CHGrid** by Cameron Hunt 22 | [https://github.com/camh/CHGridView](https://github.com/camh/CHGridView) 23 | 24 | **MMGrid** by Provideal GmbH 25 | [https://github.com/provideal/MMGridView](https://github.com/provideal/MMGridView) 26 | 27 | **OHGrid** by AliSoftware 28 | [https://github.com/AliSoftware/OHGridView](https://github.com/AliSoftware/OHGridView) 29 | 30 | ## Other Libraries Used 31 | 32 | Some additional open source code was used in this example 33 | 34 | Objective-C Lorem Ipsum Generator 35 | Author: Dav Yaginuma 36 | [https://github.com/dav/Objective-C-Lorem-Ipsum-Generator](https://github.com/dav/Objective-C-Lorem-Ipsum-Generator) 37 | 38 | # Enjoy 39 | 40 | [Mark Lussier](mailto:mlussier@gmail.com) 41 | ` 42 | --------------------------------------------------------------------------------