From f45f5f8b7ccb1aa095c1ae576f5f16932d4df4b2 Mon Sep 17 00:00:00 2001 From: lucyrubin Date: Sun, 11 Jan 2026 12:43:38 -0600 Subject: [PATCH 1/5] Gallery view controller layout --- BlocksForAll.xcodeproj/project.pbxproj | 4 + .../Freeplay Tab.imageset/Contents.json | 12 + .../Freeplay Tab.imageset/Freeplay Tab.svg | 1 + .../Robot Tab.imageset/Contents.json | 12 + .../Robot Tab.imageset/Robot Tab.svg | 1 + .../Blocks4All.imageset/Blocks4All.png | Bin 0 -> 33479 bytes .../Blocks4All.imageset/Contents.json | 12 + BlocksForAll/Base.lproj/Main.storyboard | 208 +++++++++++++++++- .../StartScreenGallery.swift | 10 + 9 files changed, 259 insertions(+), 1 deletion(-) create mode 100644 BlocksForAll/Assets.xcassets/block_images/reduced_size_images/Gallery Images/Freeplay Tab.imageset/Contents.json create mode 100644 BlocksForAll/Assets.xcassets/block_images/reduced_size_images/Gallery Images/Freeplay Tab.imageset/Freeplay Tab.svg create mode 100644 BlocksForAll/Assets.xcassets/block_images/reduced_size_images/Gallery Images/Robot Tab.imageset/Contents.json create mode 100644 BlocksForAll/Assets.xcassets/block_images/reduced_size_images/Gallery Images/Robot Tab.imageset/Robot Tab.svg create mode 100644 BlocksForAll/Assets.xcassets/block_images/reduced_size_images/Main Menu/Blocks4All.imageset/Blocks4All.png create mode 100644 BlocksForAll/Assets.xcassets/block_images/reduced_size_images/Main Menu/Blocks4All.imageset/Contents.json create mode 100644 BlocksForAll/GalleryViewControllers/StartScreenGallery.swift diff --git a/BlocksForAll.xcodeproj/project.pbxproj b/BlocksForAll.xcodeproj/project.pbxproj index 126c24a..14f8156 100644 --- a/BlocksForAll.xcodeproj/project.pbxproj +++ b/BlocksForAll.xcodeproj/project.pbxproj @@ -63,6 +63,7 @@ 8DEF21BF2C40362400E5E21F /* horse.mp3 in Resources */ = {isa = PBXBuildFile; fileRef = 8DEF21B52C40362400E5E21F /* horse.mp3 */; }; 8DEF21C12C40371000E5E21F /* bounceOffWall.mp3 in Resources */ = {isa = PBXBuildFile; fileRef = 8DEF21C02C40371000E5E21F /* bounceOffWall.mp3 */; }; 8DEF21C52C4037B300E5E21F /* Movement4BeatLoop.mp3 in Resources */ = {isa = PBXBuildFile; fileRef = 8DEF21C42C4037B300E5E21F /* Movement4BeatLoop.mp3 */; }; + 8DF2EC1B2F14123D007E6CB9 /* StartScreenGallery.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8DF2EC1A2F141239007E6CB9 /* StartScreenGallery.swift */; }; 8DFEBAC02C2B40AC00491CAD /* FullScreenFreeplayViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8DFEBABF2C2B40AC00491CAD /* FullScreenFreeplayViewController.swift */; }; 8DFEBAC22C2C6F8900491CAD /* SelectLocationModifierViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8DFEBAC12C2C6F8900491CAD /* SelectLocationModifierViewController.swift */; }; 8DFEBAC62C2C973500491CAD /* SpeedModViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8DFEBAC52C2C973500491CAD /* SpeedModViewController.swift */; }; @@ -167,6 +168,7 @@ 8DEF21B52C40362400E5E21F /* horse.mp3 */ = {isa = PBXFileReference; lastKnownFileType = audio.mp3; name = horse.mp3; path = "BlocksForAll/Audio Files/Sound Blocks/horse.mp3"; sourceTree = SOURCE_ROOT; }; 8DEF21C02C40371000E5E21F /* bounceOffWall.mp3 */ = {isa = PBXFileReference; lastKnownFileType = audio.mp3; name = bounceOffWall.mp3; path = "BlocksForAll/Audio Files/bounceOffWall.mp3"; sourceTree = SOURCE_ROOT; }; 8DEF21C42C4037B300E5E21F /* Movement4BeatLoop.mp3 */ = {isa = PBXFileReference; lastKnownFileType = audio.mp3; name = Movement4BeatLoop.mp3; path = "BlocksForAll/Audio Files/Movement4BeatLoop.mp3"; sourceTree = SOURCE_ROOT; }; + 8DF2EC1A2F141239007E6CB9 /* StartScreenGallery.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StartScreenGallery.swift; sourceTree = ""; }; 8DFEBABF2C2B40AC00491CAD /* FullScreenFreeplayViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FullScreenFreeplayViewController.swift; sourceTree = ""; }; 8DFEBAC12C2C6F8900491CAD /* SelectLocationModifierViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SelectLocationModifierViewController.swift; sourceTree = ""; }; 8DFEBAC52C2C973500491CAD /* SpeedModViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SpeedModViewController.swift; sourceTree = ""; }; @@ -285,6 +287,7 @@ 8DE37AFF2C1A3C24006DB159 /* GalleryViewControllers */ = { isa = PBXGroup; children = ( + 8DF2EC1A2F141239007E6CB9 /* StartScreenGallery.swift */, 8DE37B002C1A3C39006DB159 /* ProjectCollectionViewCell.swift */, 8DE37B022C1A3D68006DB159 /* Project.swift */, 8DE37B042C1A3F12006DB159 /* ProjectGalleryViewController.swift */, @@ -639,6 +642,7 @@ 701A43871EC26EFD00314599 /* BlocksViewController.swift in Sources */, FD3A59562A3B639E00122BEF /* InstructionsViewController.swift in Sources */, 844EAEF722E60CBB00BB1A62 /* FunctionTableViewCell.swift in Sources */, + 8DF2EC1B2F14123D007E6CB9 /* StartScreenGallery.swift in Sources */, 8DE37B032C1A3D68006DB159 /* Project.swift in Sources */, F13A0AE91E6B2C3E00DB4C86 /* BlocksTypeTableViewController.swift in Sources */, 8DFEBAC62C2C973500491CAD /* SpeedModViewController.swift in Sources */, diff --git a/BlocksForAll/Assets.xcassets/block_images/reduced_size_images/Gallery Images/Freeplay Tab.imageset/Contents.json b/BlocksForAll/Assets.xcassets/block_images/reduced_size_images/Gallery Images/Freeplay Tab.imageset/Contents.json new file mode 100644 index 0000000..1224289 --- /dev/null +++ b/BlocksForAll/Assets.xcassets/block_images/reduced_size_images/Gallery Images/Freeplay Tab.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "Freeplay Tab.svg", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/BlocksForAll/Assets.xcassets/block_images/reduced_size_images/Gallery Images/Freeplay Tab.imageset/Freeplay Tab.svg b/BlocksForAll/Assets.xcassets/block_images/reduced_size_images/Gallery Images/Freeplay Tab.imageset/Freeplay Tab.svg new file mode 100644 index 0000000..354a0c0 --- /dev/null +++ b/BlocksForAll/Assets.xcassets/block_images/reduced_size_images/Gallery Images/Freeplay Tab.imageset/Freeplay Tab.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/BlocksForAll/Assets.xcassets/block_images/reduced_size_images/Gallery Images/Robot Tab.imageset/Contents.json b/BlocksForAll/Assets.xcassets/block_images/reduced_size_images/Gallery Images/Robot Tab.imageset/Contents.json new file mode 100644 index 0000000..7cbde46 --- /dev/null +++ b/BlocksForAll/Assets.xcassets/block_images/reduced_size_images/Gallery Images/Robot Tab.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "Robot Tab.svg", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/BlocksForAll/Assets.xcassets/block_images/reduced_size_images/Gallery Images/Robot Tab.imageset/Robot Tab.svg b/BlocksForAll/Assets.xcassets/block_images/reduced_size_images/Gallery Images/Robot Tab.imageset/Robot Tab.svg new file mode 100644 index 0000000..5785d21 --- /dev/null +++ b/BlocksForAll/Assets.xcassets/block_images/reduced_size_images/Gallery Images/Robot Tab.imageset/Robot Tab.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/BlocksForAll/Assets.xcassets/block_images/reduced_size_images/Main Menu/Blocks4All.imageset/Blocks4All.png b/BlocksForAll/Assets.xcassets/block_images/reduced_size_images/Main Menu/Blocks4All.imageset/Blocks4All.png new file mode 100644 index 0000000000000000000000000000000000000000..282c33e7989b1e250db27651ae7e120536715c47 GIT binary patch literal 33479 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

;!I`TEEbqd!u1}yGyK$Y` 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≫ox~7vU$nkk9N2TOo^G?l3vld(AF` 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -3145,7 +3349,7 @@ For further information on Blocks4All, please visit our website. For further det - + @@ -3159,6 +3363,7 @@ For further information on Blocks4All, please visit our website. For further det + @@ -3170,6 +3375,7 @@ For further information on Blocks4All, please visit our website. For further det + diff --git a/BlocksForAll/GalleryViewControllers/StartScreenGallery.swift b/BlocksForAll/GalleryViewControllers/StartScreenGallery.swift new file mode 100644 index 0000000..ddb10f6 --- /dev/null +++ b/BlocksForAll/GalleryViewControllers/StartScreenGallery.swift @@ -0,0 +1,10 @@ +// +// StartScreenGallery.swift +// BlocksForAll +// +// Created by Lucy Rubin on 1/11/26. +// Copyright © 2026 Blocks4All. All rights reserved. +// + +class StartScreenGallery: UIViewController { +} From 37f1afc0a4680e6bee8a89c57a0fdbc172a87311 Mon Sep 17 00:00:00 2001 From: lucyrubin Date: Sun, 11 Jan 2026 14:43:03 -0600 Subject: [PATCH 2/5] Gallery implementation --- BlocksForAll.xcodeproj/project.pbxproj | 8 +- BlocksForAll/Base.lproj/Main.storyboard | 45 ++++++++--- .../ProjectCollectionViewCell.swift | 2 +- ...ift => ProjectGalleryCollectionView.swift} | 70 ++++++---------- .../StartScreenGallery.swift | 81 +++++++++++++++++++ BlocksForAll/MainMenuViewController.swift | 16 ++-- 6 files changed, 152 insertions(+), 70 deletions(-) rename BlocksForAll/GalleryViewControllers/{ProjectGalleryViewController.swift => ProjectGalleryCollectionView.swift} (76%) diff --git a/BlocksForAll.xcodeproj/project.pbxproj b/BlocksForAll.xcodeproj/project.pbxproj index 14f8156..85b0fa3 100644 --- a/BlocksForAll.xcodeproj/project.pbxproj +++ b/BlocksForAll.xcodeproj/project.pbxproj @@ -47,7 +47,7 @@ 8DDC31A32CA1D11600337B39 /* BackgroundImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8DDC31A22CA1D11600337B39 /* BackgroundImage.swift */; }; 8DE37B012C1A3C39006DB159 /* ProjectCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8DE37B002C1A3C39006DB159 /* ProjectCollectionViewCell.swift */; }; 8DE37B032C1A3D68006DB159 /* Project.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8DE37B022C1A3D68006DB159 /* Project.swift */; }; - 8DE37B052C1A3F12006DB159 /* ProjectGalleryViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8DE37B042C1A3F12006DB159 /* ProjectGalleryViewController.swift */; }; + 8DE37B052C1A3F12006DB159 /* ProjectGalleryCollectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8DE37B042C1A3F12006DB159 /* ProjectGalleryCollectionView.swift */; }; 8DE76F832A3100BE002E11C2 /* SettingsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8DE76F822A3100BE002E11C2 /* SettingsViewController.swift */; }; 8DE83BA82CA0B34B005DF819 /* SelectBackgroundModifierViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8DE83BA72CA0B34B005DF819 /* SelectBackgroundModifierViewController.swift */; }; 8DE97FD52C29CFE4008661BB /* AddProjectCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8DE97FD42C29CFE4008661BB /* AddProjectCollectionViewCell.swift */; }; @@ -152,7 +152,7 @@ 8DDC31A22CA1D11600337B39 /* BackgroundImage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BackgroundImage.swift; sourceTree = ""; }; 8DE37B002C1A3C39006DB159 /* ProjectCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProjectCollectionViewCell.swift; sourceTree = ""; }; 8DE37B022C1A3D68006DB159 /* Project.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Project.swift; sourceTree = ""; }; - 8DE37B042C1A3F12006DB159 /* ProjectGalleryViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProjectGalleryViewController.swift; sourceTree = ""; }; + 8DE37B042C1A3F12006DB159 /* ProjectGalleryCollectionView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProjectGalleryCollectionView.swift; sourceTree = ""; }; 8DE76F822A3100BE002E11C2 /* SettingsViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsViewController.swift; sourceTree = ""; }; 8DE83BA72CA0B34B005DF819 /* SelectBackgroundModifierViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SelectBackgroundModifierViewController.swift; sourceTree = ""; }; 8DE97FD42C29CFE4008661BB /* AddProjectCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AddProjectCollectionViewCell.swift; sourceTree = ""; }; @@ -290,7 +290,7 @@ 8DF2EC1A2F141239007E6CB9 /* StartScreenGallery.swift */, 8DE37B002C1A3C39006DB159 /* ProjectCollectionViewCell.swift */, 8DE37B022C1A3D68006DB159 /* Project.swift */, - 8DE37B042C1A3F12006DB159 /* ProjectGalleryViewController.swift */, + 8DE37B042C1A3F12006DB159 /* ProjectGalleryCollectionView.swift */, 8DE97FD42C29CFE4008661BB /* AddProjectCollectionViewCell.swift */, ); path = GalleryViewControllers; @@ -620,7 +620,7 @@ F10F71691E65BFF50049F3AA /* Block.swift in Sources */, 8DD0F84A2BFE7DD0005021EB /* Robot.swift in Sources */, F18FFFB31E65B0FB0090C4B6 /* AppDelegate.swift in Sources */, - 8DE37B052C1A3F12006DB159 /* ProjectGalleryViewController.swift in Sources */, + 8DE37B052C1A3F12006DB159 /* ProjectGalleryCollectionView.swift in Sources */, 8D822CDA2C137B3300A8A20D /* FreePlayWorkspaceViewController.swift in Sources */, 8D92E0DB2CAB83B800F74DC7 /* UserData.swift in Sources */, F73D31762A5DFA0F00008126 /* AddRobotViewController.swift in Sources */, diff --git a/BlocksForAll/Base.lproj/Main.storyboard b/BlocksForAll/Base.lproj/Main.storyboard index 2f5e7e3..3ecfb1f 100644 --- a/BlocksForAll/Base.lproj/Main.storyboard +++ b/BlocksForAll/Base.lproj/Main.storyboard @@ -1,5 +1,5 @@ - + @@ -324,7 +324,7 @@ - + @@ -378,6 +378,9 @@ + + + @@ -403,7 +409,7 @@ - + @@ -520,6 +526,20 @@ + + + + + + + + + + + + + + @@ -1106,7 +1126,6 @@ - @@ -1114,6 +1133,7 @@ + @@ -1405,7 +1425,7 @@ - + @@ -1495,7 +1515,7 @@ - +