commit c2dc551eec6aadea5956c495d298012294ca311d Author: Okechi Date: Thu Jan 28 05:44:20 2016 -0500 "Initial" diff --git a/GetHip.xcodeproj/project.pbxproj b/GetHip.xcodeproj/project.pbxproj new file mode 100644 index 0000000..f215a76 --- /dev/null +++ b/GetHip.xcodeproj/project.pbxproj @@ -0,0 +1,1015 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 3E101F061C52E5FD00C895CA /* MultipeerConnectivity.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3E101F051C52E5FD00C895CA /* MultipeerConnectivity.framework */; }; + 3E101F081C52E65300C895CA /* PartyServiceManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E101F071C52E65300C895CA /* PartyServiceManager.swift */; }; + 3E101F0A1C52F14A00C895CA /* InviteFriendsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E101F091C52F14A00C895CA /* InviteFriendsView.swift */; }; + 3E18D4931C51F6230012F7DF /* UserParseData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E18D4921C51F6230012F7DF /* UserParseData.swift */; }; + 3E18D4951C51FAC60012F7DF /* UserParseDataSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E18D4941C51FAC60012F7DF /* UserParseDataSource.swift */; }; + 3E1AAD141C3BD92600809367 /* FriendsListViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E1AAD131C3BD92600809367 /* FriendsListViewController.swift */; }; + 3E1B5E451C5274E700D1AB62 /* SettingsDetailViewWrapper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E1B5E441C5274E700D1AB62 /* SettingsDetailViewWrapper.swift */; }; + 3E1BDA521C37111D00EE3B84 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E1BDA511C37111D00EE3B84 /* AppDelegate.swift */; }; + 3E1BDA551C37111D00EE3B84 /* GetHip.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = 3E1BDA531C37111D00EE3B84 /* GetHip.xcdatamodeld */; }; + 3E1BDA571C37111D00EE3B84 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E1BDA561C37111D00EE3B84 /* ViewController.swift */; }; + 3E1BDA5F1C37111D00EE3B84 /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = 3E1BDA5D1C37111D00EE3B84 /* LaunchScreen.xib */; }; + 3E1BDA6B1C37111D00EE3B84 /* GetHipTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E1BDA6A1C37111D00EE3B84 /* GetHipTests.swift */; }; + 3E1DE9A81C3837E800CA6CD4 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3E1DE9A71C3837E800CA6CD4 /* AudioToolbox.framework */; }; + 3E1DE9AE1C38395F00CA6CD4 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3E1DE9AD1C38395F00CA6CD4 /* SystemConfiguration.framework */; }; + 3E326BCC1C51C20000F785CF /* SettingsTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E326BCB1C51C20000F785CF /* SettingsTableViewController.swift */; }; + 3E326BCE1C51C77600F785CF /* SettingsCellWrapper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E326BCD1C51C77600F785CF /* SettingsCellWrapper.swift */; }; + 3E330B1A1C38502F00276FE4 /* LoginViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E330B191C38502F00276FE4 /* LoginViewController.swift */; }; + 3E3412571C54C31F006226E0 /* SongSelectionViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E3412561C54C31F006226E0 /* SongSelectionViewController.swift */; }; + 3E3412591C54C6B7006226E0 /* SongCellWrapper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E3412581C54C6B7006226E0 /* SongCellWrapper.swift */; }; + 3E34125B1C54C73A006226E0 /* PartySession.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E34125A1C54C73A006226E0 /* PartySession.swift */; }; + 3E34125D1C54CF1B006226E0 /* MediaPlayer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3E34125C1C54CF1B006226E0 /* MediaPlayer.framework */; }; + 3E379EF61C3E646000F7BCCD /* ParseNetDebug.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E379EF51C3E646000F7BCCD /* ParseNetDebug.m */; }; + 3E379EF71C3F794500F7BCCD /* CFNetwork.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3E76CF2D1C3835C500193B58 /* CFNetwork.framework */; }; + 3E379EFE1C3F794500F7BCCD /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3E379EF81C3F794500F7BCCD /* CoreGraphics.framework */; }; + 3E379EFF1C3F794500F7BCCD /* CoreLocation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3E379EF91C3F794500F7BCCD /* CoreLocation.framework */; }; + 3E379F001C3F794500F7BCCD /* MobileCoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3E379EFA1C3F794500F7BCCD /* MobileCoreServices.framework */; }; + 3E379F011C3F794500F7BCCD /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3E379EFB1C3F794500F7BCCD /* QuartzCore.framework */; }; + 3E379F021C3F794500F7BCCD /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3E379EFC1C3F794500F7BCCD /* Security.framework */; }; + 3E379F031C3F794500F7BCCD /* StoreKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3E379EFD1C3F794500F7BCCD /* StoreKit.framework */; }; + 3E379F051C3F982900F7BCCD /* FriendsCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E379F041C3F982900F7BCCD /* FriendsCell.swift */; }; + 3E4169491C385F1000B193AF /* 1x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3E4169481C385F1000B193AF /* 1x.png */; }; + 3E4169551C398A5B00B193AF /* SignUpViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E4169541C398A5B00B193AF /* SignUpViewController.swift */; }; + 3E4169571C399C4D00B193AF /* Images-3.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 3E4169561C399C4D00B193AF /* Images-3.xcassets */; }; + 3E438ADE1C572DFD0055C97A /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 3E438ADD1C572DFD0055C97A /* Main.storyboard */; }; + 3E438AE61C5738EF0055C97A /* Create@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3E438AE11C5738EF0055C97A /* Create@2x.png */; }; + 3E438AE71C5738EF0055C97A /* Friends@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3E438AE21C5738EF0055C97A /* Friends@2x.png */; }; + 3E438AE81C5738EF0055C97A /* Settings@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3E438AE31C5738EF0055C97A /* Settings@2x.png */; }; + 3E438AE91C5738EF0055C97A /* Star@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3E438AE41C5738EF0055C97A /* Star@2x.png */; }; + 3E438AEA1C5738EF0055C97A /* Turntable@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3E438AE51C5738EF0055C97A /* Turntable@2x.png */; }; + 3E43B8C91C37639C002F97A7 /* FBSDKCoreKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3E1BDA751C3713F900EE3B84 /* FBSDKCoreKit.framework */; }; + 3E43B8CA1C37639C002F97A7 /* FBSDKLoginKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3E43B8C51C375E73002F97A7 /* FBSDKLoginKit.framework */; }; + 3E43B8CF1C376F9F002F97A7 /* Logo.png in Resources */ = {isa = PBXBuildFile; fileRef = 3E43B8CE1C376F9F002F97A7 /* Logo.png */; }; + 3E5952631C39DBC900C88C71 /* Friends.png in Resources */ = {isa = PBXBuildFile; fileRef = 3E59525A1C39DBC900C88C71 /* Friends.png */; }; + 3E5952641C39DBC900C88C71 /* Friends@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3E59525B1C39DBC900C88C71 /* Friends@2x.png */; }; + 3E5952651C39DBC900C88C71 /* Friends@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3E59525C1C39DBC900C88C71 /* Friends@3x.png */; }; + 3E5952661C39DBC900C88C71 /* Settings.png in Resources */ = {isa = PBXBuildFile; fileRef = 3E59525D1C39DBC900C88C71 /* Settings.png */; }; + 3E5952671C39DBC900C88C71 /* Settings@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3E59525E1C39DBC900C88C71 /* Settings@2x.png */; }; + 3E5952681C39DBC900C88C71 /* Settings@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3E59525F1C39DBC900C88C71 /* Settings@3x.png */; }; + 3E5952691C39DBC900C88C71 /* Star.png in Resources */ = {isa = PBXBuildFile; fileRef = 3E5952601C39DBC900C88C71 /* Star.png */; }; + 3E59526A1C39DBC900C88C71 /* Star@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3E5952611C39DBC900C88C71 /* Star@2x.png */; }; + 3E59526B1C39DBC900C88C71 /* Star@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3E5952621C39DBC900C88C71 /* Star@3x.png */; }; + 3E59526F1C39DC1E00C88C71 /* Rectangle 10 + Change Photo + voice_presentation copy + voice_presentation copy 2 + voice_presentation + Music 2 + Music 2.png in Resources */ = {isa = PBXBuildFile; fileRef = 3E59526C1C39DC1E00C88C71 /* Rectangle 10 + Change Photo + voice_presentation copy + voice_presentation copy 2 + voice_presentation + Music 2 + Music 2.png */; }; + 3E5952701C39DC1E00C88C71 /* Rectangle 10 + Change Photo + voice_presentation copy + voice_presentation copy 2 + voice_presentation + Music 2 + Music 2@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3E59526D1C39DC1E00C88C71 /* Rectangle 10 + Change Photo + voice_presentation copy + voice_presentation copy 2 + voice_presentation + Music 2 + Music 2@2x.png */; }; + 3E5952711C39DC1E00C88C71 /* Rectangle 10 + Change Photo + voice_presentation copy + voice_presentation copy 2 + voice_presentation + Music 2 + Music 2@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3E59526E1C39DC1E00C88C71 /* Rectangle 10 + Change Photo + voice_presentation copy + voice_presentation copy 2 + voice_presentation + Music 2 + Music 2@3x.png */; }; + 3E59527B1C39DDA800C88C71 /* Create.png in Resources */ = {isa = PBXBuildFile; fileRef = 3E5952721C39DDA800C88C71 /* Create.png */; }; + 3E59527C1C39DDA800C88C71 /* Create@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3E5952731C39DDA800C88C71 /* Create@2x.png */; }; + 3E59527D1C39DDA800C88C71 /* Create@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3E5952741C39DDA800C88C71 /* Create@3x.png */; }; + 3E59527E1C39DDA800C88C71 /* Group.png in Resources */ = {isa = PBXBuildFile; fileRef = 3E5952751C39DDA800C88C71 /* Group.png */; }; + 3E59527F1C39DDA800C88C71 /* Group@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3E5952761C39DDA800C88C71 /* Group@2x.png */; }; + 3E5952801C39DDA800C88C71 /* Group@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3E5952771C39DDA800C88C71 /* Group@3x.png */; }; + 3E5952811C39DDA800C88C71 /* Settings.png in Resources */ = {isa = PBXBuildFile; fileRef = 3E5952781C39DDA800C88C71 /* Settings.png */; }; + 3E5952821C39DDA800C88C71 /* Settings@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3E5952791C39DDA800C88C71 /* Settings@2x.png */; }; + 3E5952831C39DDA800C88C71 /* Settings@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3E59527A1C39DDA800C88C71 /* Settings@3x.png */; }; + 3E5952851C39E54A00C88C71 /* HomeScreenViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E5952841C39E54A00C88C71 /* HomeScreenViewController.swift */; }; + 3E5952891C39EB6100C88C71 /* Turntable.png in Resources */ = {isa = PBXBuildFile; fileRef = 3E5952861C39EB6100C88C71 /* Turntable.png */; }; + 3E59528A1C39EB6100C88C71 /* Turntable@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3E5952871C39EB6100C88C71 /* Turntable@2x.png */; }; + 3E59528B1C39EB6100C88C71 /* Turntable@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3E5952881C39EB6100C88C71 /* Turntable@3x.png */; }; + 3E627FC31C55978E005C0372 /* PartySessionManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E627FC21C55978E005C0372 /* PartySessionManager.swift */; }; + 3E627FE61C55AE35005C0372 /* NSInputStream+URLInitialization.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E627FC81C55AE35005C0372 /* NSInputStream+URLInitialization.m */; }; + 3E627FE71C55AE35005C0372 /* NSMutableArray+QueueMethods.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E627FCA1C55AE35005C0372 /* NSMutableArray+QueueMethods.m */; }; + 3E627FE81C55AE35005C0372 /* TDAudioMetaInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E627FCD1C55AE35005C0372 /* TDAudioMetaInfo.m */; }; + 3E627FE91C55AE35005C0372 /* TDAudioPlayer.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E627FCF1C55AE35005C0372 /* TDAudioPlayer.m */; }; + 3E627FEA1C55AE35005C0372 /* TDAudioFileStream.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E627FD31C55AE35005C0372 /* TDAudioFileStream.m */; }; + 3E627FEB1C55AE35005C0372 /* TDAudioQueue.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E627FD51C55AE35005C0372 /* TDAudioQueue.m */; }; + 3E627FEC1C55AE35005C0372 /* TDAudioQueueBuffer.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E627FD71C55AE35005C0372 /* TDAudioQueueBuffer.m */; }; + 3E627FED1C55AE35005C0372 /* TDAudioQueueBufferManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E627FD91C55AE35005C0372 /* TDAudioQueueBufferManager.m */; }; + 3E627FEE1C55AE35005C0372 /* TDAudioQueueController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E627FDB1C55AE35005C0372 /* TDAudioQueueController.m */; }; + 3E627FEF1C55AE35005C0372 /* TDAudioQueueFiller.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E627FDD1C55AE35005C0372 /* TDAudioQueueFiller.m */; }; + 3E627FF01C55AE35005C0372 /* TDAudioStream.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E627FDF1C55AE35005C0372 /* TDAudioStream.m */; }; + 3E627FF11C55AE35005C0372 /* TDAudioInputStreamer.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E627FE11C55AE35005C0372 /* TDAudioInputStreamer.m */; }; + 3E627FF21C55AE35005C0372 /* TDAudioOutputStreamer.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E627FE31C55AE35005C0372 /* TDAudioOutputStreamer.m */; }; + 3E627FF31C55AE35005C0372 /* TDAudioPlayerConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E627FE51C55AE35005C0372 /* TDAudioPlayerConstants.m */; }; + 3E76CF261C38258600193B58 /* Parse.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3E76CF231C38258600193B58 /* Parse.framework */; }; + 3E76CF271C38258600193B58 /* ParseFacebookUtilsV4.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3E76CF241C38258600193B58 /* ParseFacebookUtilsV4.framework */; }; + 3E76CF281C38258600193B58 /* ParseUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3E76CF251C38258600193B58 /* ParseUI.framework */; }; + 3E76CF2A1C38318200193B58 /* Bolts.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3E76CF291C38318200193B58 /* Bolts.framework */; }; + 3E76CF2C1C38349D00193B58 /* libsqlite3.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 3E76CF2B1C38349D00193B58 /* libsqlite3.dylib */; }; + 3EBE97661C53CEDA0079B54A /* Send Invites Button.png in Resources */ = {isa = PBXBuildFile; fileRef = 3EBE97651C53CEDA0079B54A /* Send Invites Button.png */; }; + 3EBE976A1C53E4290079B54A /* Blue Check.png in Resources */ = {isa = PBXBuildFile; fileRef = 3EBE97671C53E4290079B54A /* Blue Check.png */; }; + 3EBE976B1C53E4290079B54A /* cross.png in Resources */ = {isa = PBXBuildFile; fileRef = 3EBE97681C53E4290079B54A /* cross.png */; }; + 3EBE976C1C53E4290079B54A /* Tap Circle.png in Resources */ = {isa = PBXBuildFile; fileRef = 3EBE97691C53E4290079B54A /* Tap Circle.png */; }; + 3EBE976F1C53E6950079B54A /* InviteFriendCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3EBE976E1C53E6950079B54A /* InviteFriendCell.swift */; }; + 3EBE97711C540BB80079B54A /* TestInviteFriendsController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3EBE97701C540BB80079B54A /* TestInviteFriendsController.swift */; }; + 3EBE97731C5413240079B54A /* TestInviteFriendsCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3EBE97721C5413240079B54A /* TestInviteFriendsCell.swift */; }; + 3EDA82E11C473E900081ED53 /* FriendData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3EDA82E01C473E900081ED53 /* FriendData.swift */; }; + 3EDA82E31C4741C70081ED53 /* FriendDataSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3EDA82E21C4741C70081ED53 /* FriendDataSource.swift */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 3E1BDA651C37111D00EE3B84 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 3E1BDA441C37111D00EE3B84 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 3E1BDA4B1C37111D00EE3B84; + remoteInfo = GetHip; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 3E101F051C52E5FD00C895CA /* MultipeerConnectivity.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MultipeerConnectivity.framework; path = System/Library/Frameworks/MultipeerConnectivity.framework; sourceTree = SDKROOT; }; + 3E101F071C52E65300C895CA /* PartyServiceManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PartyServiceManager.swift; sourceTree = ""; }; + 3E101F091C52F14A00C895CA /* InviteFriendsView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InviteFriendsView.swift; sourceTree = ""; }; + 3E18D4921C51F6230012F7DF /* UserParseData.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UserParseData.swift; sourceTree = ""; }; + 3E18D4941C51FAC60012F7DF /* UserParseDataSource.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UserParseDataSource.swift; sourceTree = ""; }; + 3E1AAD131C3BD92600809367 /* FriendsListViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FriendsListViewController.swift; sourceTree = ""; }; + 3E1B5E441C5274E700D1AB62 /* SettingsDetailViewWrapper.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SettingsDetailViewWrapper.swift; sourceTree = ""; }; + 3E1BDA4C1C37111D00EE3B84 /* GetHip.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = GetHip.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 3E1BDA501C37111D00EE3B84 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 3E1BDA511C37111D00EE3B84 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 3E1BDA541C37111D00EE3B84 /* GetHip.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = GetHip.xcdatamodel; sourceTree = ""; }; + 3E1BDA561C37111D00EE3B84 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; + 3E1BDA5E1C37111D00EE3B84 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/LaunchScreen.xib; sourceTree = ""; }; + 3E1BDA641C37111D00EE3B84 /* GetHipTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = GetHipTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 3E1BDA691C37111D00EE3B84 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 3E1BDA6A1C37111D00EE3B84 /* GetHipTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GetHipTests.swift; sourceTree = ""; }; + 3E1BDA751C3713F900EE3B84 /* FBSDKCoreKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = FBSDKCoreKit.framework; path = ../../FacebookSDK/FBSDKCoreKit.framework; sourceTree = ""; }; + 3E1DE9A51C38373700CA6CD4 /* libstdc++.6.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = "libstdc++.6.dylib"; path = "usr/lib/libstdc++.6.dylib"; sourceTree = SDKROOT; }; + 3E1DE9A71C3837E800CA6CD4 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; }; + 3E1DE9AB1C3838A800CA6CD4 /* libsystem_network.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libsystem_network.dylib; path = usr/lib/system/libsystem_network.dylib; sourceTree = SDKROOT; }; + 3E1DE9AD1C38395F00CA6CD4 /* SystemConfiguration.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SystemConfiguration.framework; path = System/Library/Frameworks/SystemConfiguration.framework; sourceTree = SDKROOT; }; + 3E326BCB1C51C20000F785CF /* SettingsTableViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SettingsTableViewController.swift; sourceTree = ""; }; + 3E326BCD1C51C77600F785CF /* SettingsCellWrapper.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SettingsCellWrapper.swift; sourceTree = ""; }; + 3E330B191C38502F00276FE4 /* LoginViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LoginViewController.swift; sourceTree = ""; }; + 3E3412561C54C31F006226E0 /* SongSelectionViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SongSelectionViewController.swift; sourceTree = ""; }; + 3E3412581C54C6B7006226E0 /* SongCellWrapper.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SongCellWrapper.swift; sourceTree = ""; }; + 3E34125A1C54C73A006226E0 /* PartySession.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PartySession.swift; sourceTree = ""; }; + 3E34125C1C54CF1B006226E0 /* MediaPlayer.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MediaPlayer.framework; path = System/Library/Frameworks/MediaPlayer.framework; sourceTree = SDKROOT; }; + 3E379EF51C3E646000F7BCCD /* ParseNetDebug.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ParseNetDebug.m; sourceTree = ""; }; + 3E379EF81C3F794500F7BCCD /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; + 3E379EF91C3F794500F7BCCD /* CoreLocation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreLocation.framework; path = System/Library/Frameworks/CoreLocation.framework; sourceTree = SDKROOT; }; + 3E379EFA1C3F794500F7BCCD /* MobileCoreServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MobileCoreServices.framework; path = System/Library/Frameworks/MobileCoreServices.framework; sourceTree = SDKROOT; }; + 3E379EFB1C3F794500F7BCCD /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; }; + 3E379EFC1C3F794500F7BCCD /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = System/Library/Frameworks/Security.framework; sourceTree = SDKROOT; }; + 3E379EFD1C3F794500F7BCCD /* StoreKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = StoreKit.framework; path = System/Library/Frameworks/StoreKit.framework; sourceTree = SDKROOT; }; + 3E379F041C3F982900F7BCCD /* FriendsCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FriendsCell.swift; sourceTree = ""; }; + 3E3842E11C3E15DE005DD1FB /* ParseNetDebug.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ParseNetDebug.h; sourceTree = ""; }; + 3E4169481C385F1000B193AF /* 1x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = 1x.png; path = "../../../Dropbox/Gethip/Screens/Logo Screen/6 Logo Screen/1x.png"; sourceTree = ""; }; + 3E4169541C398A5B00B193AF /* SignUpViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SignUpViewController.swift; sourceTree = ""; }; + 3E4169561C399C4D00B193AF /* Images-3.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Images-3.xcassets"; sourceTree = ""; }; + 3E438ADD1C572DFD0055C97A /* Main.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = Main.storyboard; sourceTree = ""; }; + 3E438AE11C5738EF0055C97A /* Create@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Create@2x.png"; path = "../../../Dropbox/Gethip/Screens/iPhone 5 Home/Icon Assets/Create@2x.png"; sourceTree = ""; }; + 3E438AE21C5738EF0055C97A /* Friends@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Friends@2x.png"; path = "../../../Dropbox/Gethip/Screens/iPhone 5 Home/Icon Assets/Friends@2x.png"; sourceTree = ""; }; + 3E438AE31C5738EF0055C97A /* Settings@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Settings@2x.png"; path = "../../../Dropbox/Gethip/Screens/iPhone 5 Home/Icon Assets/Settings@2x.png"; sourceTree = ""; }; + 3E438AE41C5738EF0055C97A /* Star@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Star@2x.png"; path = "../../../Dropbox/Gethip/Screens/iPhone 5 Home/Icon Assets/Star@2x.png"; sourceTree = ""; }; + 3E438AE51C5738EF0055C97A /* Turntable@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Turntable@2x.png"; path = "../../../Dropbox/Gethip/Screens/iPhone 5 Home/Icon Assets/Turntable@2x.png"; sourceTree = ""; }; + 3E43B8C31C375ADE002F97A7 /* Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Bridging-Header.h"; sourceTree = ""; }; + 3E43B8C41C375E73002F97A7 /* Bolts.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Bolts.framework; path = ../../FacebookSDK/Bolts.framework; sourceTree = ""; }; + 3E43B8C51C375E73002F97A7 /* FBSDKLoginKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = FBSDKLoginKit.framework; path = ../../FacebookSDK/FBSDKLoginKit.framework; sourceTree = ""; }; + 3E43B8CE1C376F9F002F97A7 /* Logo.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = Logo.png; path = "../../../Dropbox/gethip/Screens/6 Login/Assets/Logo.png"; sourceTree = ""; }; + 3E59525A1C39DBC900C88C71 /* Friends.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = Friends.png; path = "../Get Hip/Get Hip/Assets/Friends.png"; sourceTree = ""; }; + 3E59525B1C39DBC900C88C71 /* Friends@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Friends@2x.png"; path = "../Get Hip/Get Hip/Assets/Friends@2x.png"; sourceTree = ""; }; + 3E59525C1C39DBC900C88C71 /* Friends@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Friends@3x.png"; path = "../Get Hip/Get Hip/Assets/Friends@3x.png"; sourceTree = ""; }; + 3E59525D1C39DBC900C88C71 /* Settings.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = Settings.png; path = "../Get Hip/Get Hip/Assets/Settings.png"; sourceTree = ""; }; + 3E59525E1C39DBC900C88C71 /* Settings@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Settings@2x.png"; path = "../Get Hip/Get Hip/Assets/Settings@2x.png"; sourceTree = ""; }; + 3E59525F1C39DBC900C88C71 /* Settings@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Settings@3x.png"; path = "../Get Hip/Get Hip/Assets/Settings@3x.png"; sourceTree = ""; }; + 3E5952601C39DBC900C88C71 /* Star.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = Star.png; path = "../Get Hip/Get Hip/Assets/Star.png"; sourceTree = ""; }; + 3E5952611C39DBC900C88C71 /* Star@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Star@2x.png"; path = "../Get Hip/Get Hip/Assets/Star@2x.png"; sourceTree = ""; }; + 3E5952621C39DBC900C88C71 /* Star@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Star@3x.png"; path = "../Get Hip/Get Hip/Assets/Star@3x.png"; sourceTree = ""; }; + 3E59526C1C39DC1E00C88C71 /* Rectangle 10 + Change Photo + voice_presentation copy + voice_presentation copy 2 + voice_presentation + Music 2 + Music 2.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Rectangle 10 + Change Photo + voice_presentation copy + voice_presentation copy 2 + voice_presentation + Music 2 + Music 2.png"; path = "../../../Dropbox/Gethip/Screens/6 Back to Party/6 Back to Party/Asset/Rectangle 10 + Change Photo + voice_presentation copy + voice_presentation copy 2 + voice_presentation + Music 2 + Music 2.png"; sourceTree = ""; }; + 3E59526D1C39DC1E00C88C71 /* Rectangle 10 + Change Photo + voice_presentation copy + voice_presentation copy 2 + voice_presentation + Music 2 + Music 2@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Rectangle 10 + Change Photo + voice_presentation copy + voice_presentation copy 2 + voice_presentation + Music 2 + Music 2@2x.png"; path = "../../../Dropbox/Gethip/Screens/6 Back to Party/6 Back to Party/Asset/Rectangle 10 + Change Photo + voice_presentation copy + voice_presentation copy 2 + voice_presentation + Music 2 + Music 2@2x.png"; sourceTree = ""; }; + 3E59526E1C39DC1E00C88C71 /* Rectangle 10 + Change Photo + voice_presentation copy + voice_presentation copy 2 + voice_presentation + Music 2 + Music 2@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Rectangle 10 + Change Photo + voice_presentation copy + voice_presentation copy 2 + voice_presentation + Music 2 + Music 2@3x.png"; path = "../../../Dropbox/Gethip/Screens/6 Back to Party/6 Back to Party/Asset/Rectangle 10 + Change Photo + voice_presentation copy + voice_presentation copy 2 + voice_presentation + Music 2 + Music 2@3x.png"; sourceTree = ""; }; + 3E5952721C39DDA800C88C71 /* Create.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = Create.png; path = "../../../Dropbox/Gethip/Screens/6 Home Screen/Assets/Create.png"; sourceTree = ""; }; + 3E5952731C39DDA800C88C71 /* Create@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Create@2x.png"; path = "../../../Dropbox/Gethip/Screens/6 Home Screen/Assets/Create@2x.png"; sourceTree = ""; }; + 3E5952741C39DDA800C88C71 /* Create@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Create@3x.png"; path = "../../../Dropbox/Gethip/Screens/6 Home Screen/Assets/Create@3x.png"; sourceTree = ""; }; + 3E5952751C39DDA800C88C71 /* Group.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = Group.png; path = "../../../Dropbox/Gethip/Screens/6 Home Screen/Assets/Group.png"; sourceTree = ""; }; + 3E5952761C39DDA800C88C71 /* Group@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Group@2x.png"; path = "../../../Dropbox/Gethip/Screens/6 Home Screen/Assets/Group@2x.png"; sourceTree = ""; }; + 3E5952771C39DDA800C88C71 /* Group@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Group@3x.png"; path = "../../../Dropbox/Gethip/Screens/6 Home Screen/Assets/Group@3x.png"; sourceTree = ""; }; + 3E5952781C39DDA800C88C71 /* Settings.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = Settings.png; path = "../../../Dropbox/Gethip/Screens/6 Home Screen/Assets/Settings.png"; sourceTree = ""; }; + 3E5952791C39DDA800C88C71 /* Settings@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Settings@2x.png"; path = "../../../Dropbox/Gethip/Screens/6 Home Screen/Assets/Settings@2x.png"; sourceTree = ""; }; + 3E59527A1C39DDA800C88C71 /* Settings@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Settings@3x.png"; path = "../../../Dropbox/Gethip/Screens/6 Home Screen/Assets/Settings@3x.png"; sourceTree = ""; }; + 3E5952841C39E54A00C88C71 /* HomeScreenViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HomeScreenViewController.swift; sourceTree = ""; }; + 3E5952861C39EB6100C88C71 /* Turntable.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = Turntable.png; path = "../Get Hip/Get Hip/Assets/Turntable.png"; sourceTree = ""; }; + 3E5952871C39EB6100C88C71 /* Turntable@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Turntable@2x.png"; path = "../Get Hip/Get Hip/Assets/Turntable@2x.png"; sourceTree = ""; }; + 3E5952881C39EB6100C88C71 /* Turntable@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Turntable@3x.png"; path = "../Get Hip/Get Hip/Assets/Turntable@3x.png"; sourceTree = ""; }; + 3E627FC21C55978E005C0372 /* PartySessionManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PartySessionManager.swift; sourceTree = ""; }; + 3E627FC71C55AE35005C0372 /* NSInputStream+URLInitialization.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSInputStream+URLInitialization.h"; sourceTree = ""; }; + 3E627FC81C55AE35005C0372 /* NSInputStream+URLInitialization.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSInputStream+URLInitialization.m"; sourceTree = ""; }; + 3E627FC91C55AE35005C0372 /* NSMutableArray+QueueMethods.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSMutableArray+QueueMethods.h"; sourceTree = ""; }; + 3E627FCA1C55AE35005C0372 /* NSMutableArray+QueueMethods.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSMutableArray+QueueMethods.m"; sourceTree = ""; }; + 3E627FCC1C55AE35005C0372 /* TDAudioMetaInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TDAudioMetaInfo.h; sourceTree = ""; }; + 3E627FCD1C55AE35005C0372 /* TDAudioMetaInfo.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TDAudioMetaInfo.m; sourceTree = ""; }; + 3E627FCE1C55AE35005C0372 /* TDAudioPlayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TDAudioPlayer.h; sourceTree = ""; }; + 3E627FCF1C55AE35005C0372 /* TDAudioPlayer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TDAudioPlayer.m; sourceTree = ""; }; + 3E627FD21C55AE35005C0372 /* TDAudioFileStream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TDAudioFileStream.h; sourceTree = ""; }; + 3E627FD31C55AE35005C0372 /* TDAudioFileStream.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TDAudioFileStream.m; sourceTree = ""; }; + 3E627FD41C55AE35005C0372 /* TDAudioQueue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TDAudioQueue.h; sourceTree = ""; }; + 3E627FD51C55AE35005C0372 /* TDAudioQueue.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TDAudioQueue.m; sourceTree = ""; }; + 3E627FD61C55AE35005C0372 /* TDAudioQueueBuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TDAudioQueueBuffer.h; sourceTree = ""; }; + 3E627FD71C55AE35005C0372 /* TDAudioQueueBuffer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TDAudioQueueBuffer.m; sourceTree = ""; }; + 3E627FD81C55AE35005C0372 /* TDAudioQueueBufferManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TDAudioQueueBufferManager.h; sourceTree = ""; }; + 3E627FD91C55AE35005C0372 /* TDAudioQueueBufferManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TDAudioQueueBufferManager.m; sourceTree = ""; }; + 3E627FDA1C55AE35005C0372 /* TDAudioQueueController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TDAudioQueueController.h; sourceTree = ""; }; + 3E627FDB1C55AE35005C0372 /* TDAudioQueueController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TDAudioQueueController.m; sourceTree = ""; }; + 3E627FDC1C55AE35005C0372 /* TDAudioQueueFiller.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TDAudioQueueFiller.h; sourceTree = ""; }; + 3E627FDD1C55AE35005C0372 /* TDAudioQueueFiller.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TDAudioQueueFiller.m; sourceTree = ""; }; + 3E627FDE1C55AE35005C0372 /* TDAudioStream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TDAudioStream.h; sourceTree = ""; }; + 3E627FDF1C55AE35005C0372 /* TDAudioStream.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TDAudioStream.m; sourceTree = ""; }; + 3E627FE01C55AE35005C0372 /* TDAudioInputStreamer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TDAudioInputStreamer.h; sourceTree = ""; }; + 3E627FE11C55AE35005C0372 /* TDAudioInputStreamer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TDAudioInputStreamer.m; sourceTree = ""; }; + 3E627FE21C55AE35005C0372 /* TDAudioOutputStreamer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TDAudioOutputStreamer.h; sourceTree = ""; }; + 3E627FE31C55AE35005C0372 /* TDAudioOutputStreamer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TDAudioOutputStreamer.m; sourceTree = ""; }; + 3E627FE41C55AE35005C0372 /* TDAudioPlayerConstants.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TDAudioPlayerConstants.h; path = "../../../../Downloads/TDAudioPlayer-master/TDAudioPlayer/AudioPlayerLibrary/TDAudioPlayerConstants.h"; sourceTree = ""; }; + 3E627FE51C55AE35005C0372 /* TDAudioPlayerConstants.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = TDAudioPlayerConstants.m; path = "../../../../Downloads/TDAudioPlayer-master/TDAudioPlayer/AudioPlayerLibrary/TDAudioPlayerConstants.m"; sourceTree = ""; }; + 3E76CF231C38258600193B58 /* Parse.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Parse.framework; path = "../../Parse-iOS/Parse.framework"; sourceTree = ""; }; + 3E76CF241C38258600193B58 /* ParseFacebookUtilsV4.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ParseFacebookUtilsV4.framework; path = "../../Parse-iOS/ParseFacebookUtilsV4.framework"; sourceTree = ""; }; + 3E76CF251C38258600193B58 /* ParseUI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ParseUI.framework; path = "../../Parse-iOS/ParseUI.framework"; sourceTree = ""; }; + 3E76CF291C38318200193B58 /* Bolts.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Bolts.framework; path = "../../Parse-iOS/Bolts.framework"; sourceTree = ""; }; + 3E76CF2B1C38349D00193B58 /* libsqlite3.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libsqlite3.dylib; path = usr/lib/libsqlite3.dylib; sourceTree = SDKROOT; }; + 3E76CF2D1C3835C500193B58 /* CFNetwork.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CFNetwork.framework; path = System/Library/Frameworks/CFNetwork.framework; sourceTree = SDKROOT; }; + 3E76CF2F1C3835E300193B58 /* NetworkExtension.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = NetworkExtension.framework; path = System/Library/Frameworks/NetworkExtension.framework; sourceTree = SDKROOT; }; + 3EBE97651C53CEDA0079B54A /* Send Invites Button.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Send Invites Button.png"; path = "../../../Dropbox/Gethip/Screens/Friends + Invite Screens/i6/Invite Friends/Send Invites Button.png"; sourceTree = ""; }; + 3EBE97671C53E4290079B54A /* Blue Check.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Blue Check.png"; path = "../../../Dropbox/Gethip/Screens/Friends + Invite Screens/i6/Invite Friends/Blue Check.png"; sourceTree = ""; }; + 3EBE97681C53E4290079B54A /* cross.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = cross.png; path = "../../../Dropbox/Gethip/Screens/Friends + Invite Screens/i6/Invite Friends/cross.png"; sourceTree = ""; }; + 3EBE97691C53E4290079B54A /* Tap Circle.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Tap Circle.png"; path = "../../../Dropbox/Gethip/Screens/Friends + Invite Screens/i6/Invite Friends/Tap Circle.png"; sourceTree = ""; }; + 3EBE976E1C53E6950079B54A /* InviteFriendCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InviteFriendCell.swift; sourceTree = ""; }; + 3EBE97701C540BB80079B54A /* TestInviteFriendsController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TestInviteFriendsController.swift; sourceTree = ""; }; + 3EBE97721C5413240079B54A /* TestInviteFriendsCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TestInviteFriendsCell.swift; sourceTree = ""; }; + 3EDA82E01C473E900081ED53 /* FriendData.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FriendData.swift; sourceTree = ""; }; + 3EDA82E21C4741C70081ED53 /* FriendDataSource.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FriendDataSource.swift; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 3E1BDA491C37111D00EE3B84 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 3E34125D1C54CF1B006226E0 /* MediaPlayer.framework in Frameworks */, + 3E101F061C52E5FD00C895CA /* MultipeerConnectivity.framework in Frameworks */, + 3E379EFE1C3F794500F7BCCD /* CoreGraphics.framework in Frameworks */, + 3E379EFF1C3F794500F7BCCD /* CoreLocation.framework in Frameworks */, + 3E379F001C3F794500F7BCCD /* MobileCoreServices.framework in Frameworks */, + 3E379F011C3F794500F7BCCD /* QuartzCore.framework in Frameworks */, + 3E379F021C3F794500F7BCCD /* Security.framework in Frameworks */, + 3E379F031C3F794500F7BCCD /* StoreKit.framework in Frameworks */, + 3E379EF71C3F794500F7BCCD /* CFNetwork.framework in Frameworks */, + 3E1DE9AE1C38395F00CA6CD4 /* SystemConfiguration.framework in Frameworks */, + 3E1DE9A81C3837E800CA6CD4 /* AudioToolbox.framework in Frameworks */, + 3E76CF2C1C38349D00193B58 /* libsqlite3.dylib in Frameworks */, + 3E76CF2A1C38318200193B58 /* Bolts.framework in Frameworks */, + 3E76CF261C38258600193B58 /* Parse.framework in Frameworks */, + 3E76CF271C38258600193B58 /* ParseFacebookUtilsV4.framework in Frameworks */, + 3E76CF281C38258600193B58 /* ParseUI.framework in Frameworks */, + 3E43B8C91C37639C002F97A7 /* FBSDKCoreKit.framework in Frameworks */, + 3E43B8CA1C37639C002F97A7 /* FBSDKLoginKit.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 3E1BDA611C37111D00EE3B84 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 3E101F021C52E45C00C895CA /* FriendListSource */ = { + isa = PBXGroup; + children = ( + 3EDA82E21C4741C70081ED53 /* FriendDataSource.swift */, + 3E379F041C3F982900F7BCCD /* FriendsCell.swift */, + 3EDA82E01C473E900081ED53 /* FriendData.swift */, + 3E1AAD131C3BD92600809367 /* FriendsListViewController.swift */, + ); + name = FriendListSource; + sourceTree = ""; + }; + 3E101F031C52E4AB00C895CA /* UserSettingsSoruce */ = { + isa = PBXGroup; + children = ( + 3E5952841C39E54A00C88C71 /* HomeScreenViewController.swift */, + 3E326BCD1C51C77600F785CF /* SettingsCellWrapper.swift */, + 3E18D4941C51FAC60012F7DF /* UserParseDataSource.swift */, + 3E18D4921C51F6230012F7DF /* UserParseData.swift */, + 3E326BCB1C51C20000F785CF /* SettingsTableViewController.swift */, + 3E1B5E441C5274E700D1AB62 /* SettingsDetailViewWrapper.swift */, + ); + name = UserSettingsSoruce; + sourceTree = ""; + }; + 3E101F041C52E50400C895CA /* PartySessionSource */ = { + isa = PBXGroup; + children = ( + 3E34125A1C54C73A006226E0 /* PartySession.swift */, + 3E627FC21C55978E005C0372 /* PartySessionManager.swift */, + 3E101F071C52E65300C895CA /* PartyServiceManager.swift */, + 3E3412551C54C2BC006226E0 /* SelectSong */, + 3EBE976D1C53E5CF0079B54A /* InviteFriends */, + ); + name = PartySessionSource; + sourceTree = ""; + }; + 3E1BDA431C37111D00EE3B84 = { + isa = PBXGroup; + children = ( + 3E43B8CB1C376BBE002F97A7 /* Assets */, + 3E1BDA741C37116800EE3B84 /* Frameworks */, + 3E1BDA4E1C37111D00EE3B84 /* GetHip */, + 3E1BDA671C37111D00EE3B84 /* GetHipTests */, + 3E1BDA4D1C37111D00EE3B84 /* Products */, + ); + sourceTree = ""; + }; + 3E1BDA4D1C37111D00EE3B84 /* Products */ = { + isa = PBXGroup; + children = ( + 3E1BDA4C1C37111D00EE3B84 /* GetHip.app */, + 3E1BDA641C37111D00EE3B84 /* GetHipTests.xctest */, + ); + name = Products; + sourceTree = ""; + }; + 3E1BDA4E1C37111D00EE3B84 /* GetHip */ = { + isa = PBXGroup; + children = ( + 3E1BDA5D1C37111D00EE3B84 /* LaunchScreen.xib */, + 3E438ADD1C572DFD0055C97A /* Main.storyboard */, + 3E1BDA511C37111D00EE3B84 /* AppDelegate.swift */, + 3E627FC01C5543FB005C0372 /* User Authentication */, + 3E101F041C52E50400C895CA /* PartySessionSource */, + 3E101F031C52E4AB00C895CA /* UserSettingsSoruce */, + 3E101F021C52E45C00C895CA /* FriendListSource */, + 3E627FC11C554C7D005C0372 /* ObjC Source */, + 3E1BDA4F1C37111D00EE3B84 /* Supporting Files */, + 3E4169561C399C4D00B193AF /* Images-3.xcassets */, + 3E1BDA531C37111D00EE3B84 /* GetHip.xcdatamodeld */, + ); + path = GetHip; + sourceTree = ""; + }; + 3E1BDA4F1C37111D00EE3B84 /* Supporting Files */ = { + isa = PBXGroup; + children = ( + 3E1BDA501C37111D00EE3B84 /* Info.plist */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; + 3E1BDA671C37111D00EE3B84 /* GetHipTests */ = { + isa = PBXGroup; + children = ( + 3E1BDA6A1C37111D00EE3B84 /* GetHipTests.swift */, + 3E1BDA681C37111D00EE3B84 /* Supporting Files */, + ); + path = GetHipTests; + sourceTree = ""; + }; + 3E1BDA681C37111D00EE3B84 /* Supporting Files */ = { + isa = PBXGroup; + children = ( + 3E1BDA691C37111D00EE3B84 /* Info.plist */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; + 3E1BDA741C37116800EE3B84 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 3E34125C1C54CF1B006226E0 /* MediaPlayer.framework */, + 3E101F051C52E5FD00C895CA /* MultipeerConnectivity.framework */, + 3E379EF81C3F794500F7BCCD /* CoreGraphics.framework */, + 3E379EF91C3F794500F7BCCD /* CoreLocation.framework */, + 3E379EFA1C3F794500F7BCCD /* MobileCoreServices.framework */, + 3E379EFB1C3F794500F7BCCD /* QuartzCore.framework */, + 3E379EFC1C3F794500F7BCCD /* Security.framework */, + 3E379EFD1C3F794500F7BCCD /* StoreKit.framework */, + 3E1DE9AD1C38395F00CA6CD4 /* SystemConfiguration.framework */, + 3E1DE9AB1C3838A800CA6CD4 /* libsystem_network.dylib */, + 3E1DE9A71C3837E800CA6CD4 /* AudioToolbox.framework */, + 3E1DE9A51C38373700CA6CD4 /* libstdc++.6.dylib */, + 3E76CF2F1C3835E300193B58 /* NetworkExtension.framework */, + 3E76CF2D1C3835C500193B58 /* CFNetwork.framework */, + 3E76CF2B1C38349D00193B58 /* libsqlite3.dylib */, + 3E76CF291C38318200193B58 /* Bolts.framework */, + 3E76CF231C38258600193B58 /* Parse.framework */, + 3E76CF241C38258600193B58 /* ParseFacebookUtilsV4.framework */, + 3E76CF251C38258600193B58 /* ParseUI.framework */, + 3E43B8C41C375E73002F97A7 /* Bolts.framework */, + 3E43B8C51C375E73002F97A7 /* FBSDKLoginKit.framework */, + 3E1BDA751C3713F900EE3B84 /* FBSDKCoreKit.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + 3E3412551C54C2BC006226E0 /* SelectSong */ = { + isa = PBXGroup; + children = ( + 3E3412561C54C31F006226E0 /* SongSelectionViewController.swift */, + 3E3412581C54C6B7006226E0 /* SongCellWrapper.swift */, + ); + name = SelectSong; + sourceTree = ""; + }; + 3E438AE01C57387B0055C97A /* iPhone5 */ = { + isa = PBXGroup; + children = ( + 3E438AE11C5738EF0055C97A /* Create@2x.png */, + 3E438AE21C5738EF0055C97A /* Friends@2x.png */, + 3E438AE31C5738EF0055C97A /* Settings@2x.png */, + 3E438AE41C5738EF0055C97A /* Star@2x.png */, + 3E438AE51C5738EF0055C97A /* Turntable@2x.png */, + ); + name = iPhone5; + sourceTree = ""; + }; + 3E43B8CB1C376BBE002F97A7 /* Assets */ = { + isa = PBXGroup; + children = ( + 3E438AE01C57387B0055C97A /* iPhone5 */, + 3E43B8CD1C376F70002F97A7 /* IPhone6 */, + ); + name = Assets; + sourceTree = ""; + }; + 3E43B8CC1C376C31002F97A7 /* LoginScreen */ = { + isa = PBXGroup; + children = ( + 3E4169481C385F1000B193AF /* 1x.png */, + 3E43B8CE1C376F9F002F97A7 /* Logo.png */, + ); + name = LoginScreen; + sourceTree = ""; + }; + 3E43B8CD1C376F70002F97A7 /* IPhone6 */ = { + isa = PBXGroup; + children = ( + 3EBE97641C53CE950079B54A /* InviteFriends */, + 3E5952591C39DB2800C88C71 /* CreateJoinOrReturnToPartyScreen */, + 3E43B8CC1C376C31002F97A7 /* LoginScreen */, + ); + name = IPhone6; + sourceTree = ""; + }; + 3E5952591C39DB2800C88C71 /* CreateJoinOrReturnToPartyScreen */ = { + isa = PBXGroup; + children = ( + 3E5952861C39EB6100C88C71 /* Turntable.png */, + 3E5952871C39EB6100C88C71 /* Turntable@2x.png */, + 3E5952881C39EB6100C88C71 /* Turntable@3x.png */, + 3E5952721C39DDA800C88C71 /* Create.png */, + 3E5952731C39DDA800C88C71 /* Create@2x.png */, + 3E5952741C39DDA800C88C71 /* Create@3x.png */, + 3E5952751C39DDA800C88C71 /* Group.png */, + 3E5952761C39DDA800C88C71 /* Group@2x.png */, + 3E5952771C39DDA800C88C71 /* Group@3x.png */, + 3E5952781C39DDA800C88C71 /* Settings.png */, + 3E5952791C39DDA800C88C71 /* Settings@2x.png */, + 3E59527A1C39DDA800C88C71 /* Settings@3x.png */, + 3E59526C1C39DC1E00C88C71 /* Rectangle 10 + Change Photo + voice_presentation copy + voice_presentation copy 2 + voice_presentation + Music 2 + Music 2.png */, + 3E59526D1C39DC1E00C88C71 /* Rectangle 10 + Change Photo + voice_presentation copy + voice_presentation copy 2 + voice_presentation + Music 2 + Music 2@2x.png */, + 3E59526E1C39DC1E00C88C71 /* Rectangle 10 + Change Photo + voice_presentation copy + voice_presentation copy 2 + voice_presentation + Music 2 + Music 2@3x.png */, + 3E59525A1C39DBC900C88C71 /* Friends.png */, + 3E59525B1C39DBC900C88C71 /* Friends@2x.png */, + 3E59525C1C39DBC900C88C71 /* Friends@3x.png */, + 3E59525D1C39DBC900C88C71 /* Settings.png */, + 3E59525E1C39DBC900C88C71 /* Settings@2x.png */, + 3E59525F1C39DBC900C88C71 /* Settings@3x.png */, + 3E5952601C39DBC900C88C71 /* Star.png */, + 3E5952611C39DBC900C88C71 /* Star@2x.png */, + 3E5952621C39DBC900C88C71 /* Star@3x.png */, + ); + name = CreateJoinOrReturnToPartyScreen; + sourceTree = ""; + }; + 3E627FC01C5543FB005C0372 /* User Authentication */ = { + isa = PBXGroup; + children = ( + 3E330B191C38502F00276FE4 /* LoginViewController.swift */, + 3E4169541C398A5B00B193AF /* SignUpViewController.swift */, + 3E1BDA561C37111D00EE3B84 /* ViewController.swift */, + ); + name = "User Authentication"; + sourceTree = ""; + }; + 3E627FC11C554C7D005C0372 /* ObjC Source */ = { + isa = PBXGroup; + children = ( + 3E627FC41C55ADDE005C0372 /* TDAudioPlayer.framework */, + 3E379EF51C3E646000F7BCCD /* ParseNetDebug.m */, + 3E3842E11C3E15DE005DD1FB /* ParseNetDebug.h */, + 3E43B8C31C375ADE002F97A7 /* Bridging-Header.h */, + ); + name = "ObjC Source"; + sourceTree = ""; + }; + 3E627FC41C55ADDE005C0372 /* TDAudioPlayer.framework */ = { + isa = PBXGroup; + children = ( + 3E627FC51C55AE35005C0372 /* AudioPlayer */, + 3E627FD01C55AE35005C0372 /* AudioStreamer */, + 3E627FE41C55AE35005C0372 /* TDAudioPlayerConstants.h */, + 3E627FE51C55AE35005C0372 /* TDAudioPlayerConstants.m */, + ); + name = TDAudioPlayer.framework; + sourceTree = ""; + }; + 3E627FC51C55AE35005C0372 /* AudioPlayer */ = { + isa = PBXGroup; + children = ( + 3E627FC61C55AE35005C0372 /* Categories */, + 3E627FCB1C55AE35005C0372 /* Classes */, + 3E627FCE1C55AE35005C0372 /* TDAudioPlayer.h */, + 3E627FCF1C55AE35005C0372 /* TDAudioPlayer.m */, + ); + name = AudioPlayer; + path = "../../../../Downloads/TDAudioPlayer-master/TDAudioPlayer/AudioPlayerLibrary/AudioPlayer"; + sourceTree = ""; + }; + 3E627FC61C55AE35005C0372 /* Categories */ = { + isa = PBXGroup; + children = ( + 3E627FC71C55AE35005C0372 /* NSInputStream+URLInitialization.h */, + 3E627FC81C55AE35005C0372 /* NSInputStream+URLInitialization.m */, + 3E627FC91C55AE35005C0372 /* NSMutableArray+QueueMethods.h */, + 3E627FCA1C55AE35005C0372 /* NSMutableArray+QueueMethods.m */, + ); + path = Categories; + sourceTree = ""; + }; + 3E627FCB1C55AE35005C0372 /* Classes */ = { + isa = PBXGroup; + children = ( + 3E627FCC1C55AE35005C0372 /* TDAudioMetaInfo.h */, + 3E627FCD1C55AE35005C0372 /* TDAudioMetaInfo.m */, + ); + path = Classes; + sourceTree = ""; + }; + 3E627FD01C55AE35005C0372 /* AudioStreamer */ = { + isa = PBXGroup; + children = ( + 3E627FD11C55AE35005C0372 /* Classes */, + 3E627FE01C55AE35005C0372 /* TDAudioInputStreamer.h */, + 3E627FE11C55AE35005C0372 /* TDAudioInputStreamer.m */, + 3E627FE21C55AE35005C0372 /* TDAudioOutputStreamer.h */, + 3E627FE31C55AE35005C0372 /* TDAudioOutputStreamer.m */, + ); + name = AudioStreamer; + path = "../../../../Downloads/TDAudioPlayer-master/TDAudioPlayer/AudioPlayerLibrary/AudioStreamer"; + sourceTree = ""; + }; + 3E627FD11C55AE35005C0372 /* Classes */ = { + isa = PBXGroup; + children = ( + 3E627FD21C55AE35005C0372 /* TDAudioFileStream.h */, + 3E627FD31C55AE35005C0372 /* TDAudioFileStream.m */, + 3E627FD41C55AE35005C0372 /* TDAudioQueue.h */, + 3E627FD51C55AE35005C0372 /* TDAudioQueue.m */, + 3E627FD61C55AE35005C0372 /* TDAudioQueueBuffer.h */, + 3E627FD71C55AE35005C0372 /* TDAudioQueueBuffer.m */, + 3E627FD81C55AE35005C0372 /* TDAudioQueueBufferManager.h */, + 3E627FD91C55AE35005C0372 /* TDAudioQueueBufferManager.m */, + 3E627FDA1C55AE35005C0372 /* TDAudioQueueController.h */, + 3E627FDB1C55AE35005C0372 /* TDAudioQueueController.m */, + 3E627FDC1C55AE35005C0372 /* TDAudioQueueFiller.h */, + 3E627FDD1C55AE35005C0372 /* TDAudioQueueFiller.m */, + 3E627FDE1C55AE35005C0372 /* TDAudioStream.h */, + 3E627FDF1C55AE35005C0372 /* TDAudioStream.m */, + ); + path = Classes; + sourceTree = ""; + }; + 3EBE97641C53CE950079B54A /* InviteFriends */ = { + isa = PBXGroup; + children = ( + 3EBE97671C53E4290079B54A /* Blue Check.png */, + 3EBE97681C53E4290079B54A /* cross.png */, + 3EBE97691C53E4290079B54A /* Tap Circle.png */, + 3EBE97651C53CEDA0079B54A /* Send Invites Button.png */, + ); + name = InviteFriends; + sourceTree = ""; + }; + 3EBE976D1C53E5CF0079B54A /* InviteFriends */ = { + isa = PBXGroup; + children = ( + 3E101F091C52F14A00C895CA /* InviteFriendsView.swift */, + 3EBE976E1C53E6950079B54A /* InviteFriendCell.swift */, + 3EBE97701C540BB80079B54A /* TestInviteFriendsController.swift */, + 3EBE97721C5413240079B54A /* TestInviteFriendsCell.swift */, + ); + name = InviteFriends; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 3E1BDA4B1C37111D00EE3B84 /* GetHip */ = { + isa = PBXNativeTarget; + buildConfigurationList = 3E1BDA6E1C37111D00EE3B84 /* Build configuration list for PBXNativeTarget "GetHip" */; + buildPhases = ( + 3E1BDA481C37111D00EE3B84 /* Sources */, + 3E1BDA491C37111D00EE3B84 /* Frameworks */, + 3E1BDA4A1C37111D00EE3B84 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = GetHip; + productName = GetHip; + productReference = 3E1BDA4C1C37111D00EE3B84 /* GetHip.app */; + productType = "com.apple.product-type.application"; + }; + 3E1BDA631C37111D00EE3B84 /* GetHipTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 3E1BDA711C37111D00EE3B84 /* Build configuration list for PBXNativeTarget "GetHipTests" */; + buildPhases = ( + 3E1BDA601C37111D00EE3B84 /* Sources */, + 3E1BDA611C37111D00EE3B84 /* Frameworks */, + 3E1BDA621C37111D00EE3B84 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 3E1BDA661C37111D00EE3B84 /* PBXTargetDependency */, + ); + name = GetHipTests; + productName = GetHipTests; + productReference = 3E1BDA641C37111D00EE3B84 /* GetHipTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 3E1BDA441C37111D00EE3B84 /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 0630; + ORGANIZATIONNAME = Kroleo; + TargetAttributes = { + 3E1BDA4B1C37111D00EE3B84 = { + CreatedOnToolsVersion = 6.3.2; + }; + 3E1BDA631C37111D00EE3B84 = { + CreatedOnToolsVersion = 6.3.2; + TestTargetID = 3E1BDA4B1C37111D00EE3B84; + }; + }; + }; + buildConfigurationList = 3E1BDA471C37111D00EE3B84 /* Build configuration list for PBXProject "GetHip" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 3E1BDA431C37111D00EE3B84; + productRefGroup = 3E1BDA4D1C37111D00EE3B84 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 3E1BDA4B1C37111D00EE3B84 /* GetHip */, + 3E1BDA631C37111D00EE3B84 /* GetHipTests */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 3E1BDA4A1C37111D00EE3B84 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 3E4169491C385F1000B193AF /* 1x.png in Resources */, + 3E5952641C39DBC900C88C71 /* Friends@2x.png in Resources */, + 3E59528B1C39EB6100C88C71 /* Turntable@3x.png in Resources */, + 3E5952661C39DBC900C88C71 /* Settings.png in Resources */, + 3E5952891C39EB6100C88C71 /* Turntable.png in Resources */, + 3E59527D1C39DDA800C88C71 /* Create@3x.png in Resources */, + 3EBE976B1C53E4290079B54A /* cross.png in Resources */, + 3E43B8CF1C376F9F002F97A7 /* Logo.png in Resources */, + 3E4169571C399C4D00B193AF /* Images-3.xcassets in Resources */, + 3EBE97661C53CEDA0079B54A /* Send Invites Button.png in Resources */, + 3E438AEA1C5738EF0055C97A /* Turntable@2x.png in Resources */, + 3E5952801C39DDA800C88C71 /* Group@3x.png in Resources */, + 3E5952631C39DBC900C88C71 /* Friends.png in Resources */, + 3E5952811C39DDA800C88C71 /* Settings.png in Resources */, + 3E59527E1C39DDA800C88C71 /* Group.png in Resources */, + 3E5952711C39DC1E00C88C71 /* Rectangle 10 + Change Photo + voice_presentation copy + voice_presentation copy 2 + voice_presentation + Music 2 + Music 2@3x.png in Resources */, + 3E438AE91C5738EF0055C97A /* Star@2x.png in Resources */, + 3E5952831C39DDA800C88C71 /* Settings@3x.png in Resources */, + 3E59526B1C39DBC900C88C71 /* Star@3x.png in Resources */, + 3E59527B1C39DDA800C88C71 /* Create.png in Resources */, + 3E5952701C39DC1E00C88C71 /* Rectangle 10 + Change Photo + voice_presentation copy + voice_presentation copy 2 + voice_presentation + Music 2 + Music 2@2x.png in Resources */, + 3EBE976C1C53E4290079B54A /* Tap Circle.png in Resources */, + 3E5952671C39DBC900C88C71 /* Settings@2x.png in Resources */, + 3EBE976A1C53E4290079B54A /* Blue Check.png in Resources */, + 3E438AE71C5738EF0055C97A /* Friends@2x.png in Resources */, + 3E59528A1C39EB6100C88C71 /* Turntable@2x.png in Resources */, + 3E438ADE1C572DFD0055C97A /* Main.storyboard in Resources */, + 3E438AE81C5738EF0055C97A /* Settings@2x.png in Resources */, + 3E5952681C39DBC900C88C71 /* Settings@3x.png in Resources */, + 3E59526F1C39DC1E00C88C71 /* Rectangle 10 + Change Photo + voice_presentation copy + voice_presentation copy 2 + voice_presentation + Music 2 + Music 2.png in Resources */, + 3E59527F1C39DDA800C88C71 /* Group@2x.png in Resources */, + 3E5952691C39DBC900C88C71 /* Star.png in Resources */, + 3E59527C1C39DDA800C88C71 /* Create@2x.png in Resources */, + 3E59526A1C39DBC900C88C71 /* Star@2x.png in Resources */, + 3E5952821C39DDA800C88C71 /* Settings@2x.png in Resources */, + 3E1BDA5F1C37111D00EE3B84 /* LaunchScreen.xib in Resources */, + 3E438AE61C5738EF0055C97A /* Create@2x.png in Resources */, + 3E5952651C39DBC900C88C71 /* Friends@3x.png in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 3E1BDA621C37111D00EE3B84 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 3E1BDA481C37111D00EE3B84 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 3E101F081C52E65300C895CA /* PartyServiceManager.swift in Sources */, + 3E330B1A1C38502F00276FE4 /* LoginViewController.swift in Sources */, + 3E627FEA1C55AE35005C0372 /* TDAudioFileStream.m in Sources */, + 3E627FC31C55978E005C0372 /* PartySessionManager.swift in Sources */, + 3E627FE61C55AE35005C0372 /* NSInputStream+URLInitialization.m in Sources */, + 3E3412571C54C31F006226E0 /* SongSelectionViewController.swift in Sources */, + 3E627FE81C55AE35005C0372 /* TDAudioMetaInfo.m in Sources */, + 3E34125B1C54C73A006226E0 /* PartySession.swift in Sources */, + 3E627FF01C55AE35005C0372 /* TDAudioStream.m in Sources */, + 3E627FE91C55AE35005C0372 /* TDAudioPlayer.m in Sources */, + 3EDA82E31C4741C70081ED53 /* FriendDataSource.swift in Sources */, + 3EDA82E11C473E900081ED53 /* FriendData.swift in Sources */, + 3E627FF21C55AE35005C0372 /* TDAudioOutputStreamer.m in Sources */, + 3E379F051C3F982900F7BCCD /* FriendsCell.swift in Sources */, + 3E1BDA571C37111D00EE3B84 /* ViewController.swift in Sources */, + 3E1AAD141C3BD92600809367 /* FriendsListViewController.swift in Sources */, + 3E326BCE1C51C77600F785CF /* SettingsCellWrapper.swift in Sources */, + 3E627FF31C55AE35005C0372 /* TDAudioPlayerConstants.m in Sources */, + 3E379EF61C3E646000F7BCCD /* ParseNetDebug.m in Sources */, + 3E627FED1C55AE35005C0372 /* TDAudioQueueBufferManager.m in Sources */, + 3EBE976F1C53E6950079B54A /* InviteFriendCell.swift in Sources */, + 3E627FEF1C55AE35005C0372 /* TDAudioQueueFiller.m in Sources */, + 3E1BDA551C37111D00EE3B84 /* GetHip.xcdatamodeld in Sources */, + 3E326BCC1C51C20000F785CF /* SettingsTableViewController.swift in Sources */, + 3EBE97731C5413240079B54A /* TestInviteFriendsCell.swift in Sources */, + 3E101F0A1C52F14A00C895CA /* InviteFriendsView.swift in Sources */, + 3E1B5E451C5274E700D1AB62 /* SettingsDetailViewWrapper.swift in Sources */, + 3EBE97711C540BB80079B54A /* TestInviteFriendsController.swift in Sources */, + 3E18D4951C51FAC60012F7DF /* UserParseDataSource.swift in Sources */, + 3E627FEC1C55AE35005C0372 /* TDAudioQueueBuffer.m in Sources */, + 3E627FEB1C55AE35005C0372 /* TDAudioQueue.m in Sources */, + 3E3412591C54C6B7006226E0 /* SongCellWrapper.swift in Sources */, + 3E1BDA521C37111D00EE3B84 /* AppDelegate.swift in Sources */, + 3E627FF11C55AE35005C0372 /* TDAudioInputStreamer.m in Sources */, + 3E4169551C398A5B00B193AF /* SignUpViewController.swift in Sources */, + 3E627FEE1C55AE35005C0372 /* TDAudioQueueController.m in Sources */, + 3E627FE71C55AE35005C0372 /* NSMutableArray+QueueMethods.m in Sources */, + 3E18D4931C51F6230012F7DF /* UserParseData.swift in Sources */, + 3E5952851C39E54A00C88C71 /* HomeScreenViewController.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 3E1BDA601C37111D00EE3B84 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 3E1BDA6B1C37111D00EE3B84 /* GetHipTests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 3E1BDA661C37111D00EE3B84 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 3E1BDA4B1C37111D00EE3B84 /* GetHip */; + targetProxy = 3E1BDA651C37111D00EE3B84 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + 3E1BDA5D1C37111D00EE3B84 /* LaunchScreen.xib */ = { + isa = PBXVariantGroup; + children = ( + 3E1BDA5E1C37111D00EE3B84 /* Base */, + ); + name = LaunchScreen.xib; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 3E1BDA6C1C37111D00EE3B84 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 8.3; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + 3E1BDA6D1C37111D00EE3B84 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 8.3; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 3E1BDA6F1C37111D00EE3B84 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + /Users/okechi/Documents/FacebookSDK, + "/Users/okechi/Documents/Parse-iOS", + ); + GCC_PRECOMPILE_PREFIX_HEADER = NO; + INFOPLIST_FILE = GetHip/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "$(SDKROOT)/usr/lib/system", + ); + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "$PROJECT_NAME/Bridging-Header.h"; + }; + name = Debug; + }; + 3E1BDA701C37111D00EE3B84 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + /Users/okechi/Documents/FacebookSDK, + "/Users/okechi/Documents/Parse-iOS", + ); + GCC_PRECOMPILE_PREFIX_HEADER = NO; + INFOPLIST_FILE = GetHip/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "$(SDKROOT)/usr/lib/system", + ); + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "$PROJECT_NAME/Bridging-Header.h"; + }; + name = Release; + }; + 3E1BDA721C37111D00EE3B84 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + FRAMEWORK_SEARCH_PATHS = ( + "$(SDKROOT)/Developer/Library/Frameworks", + "$(inherited)", + ); + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + INFOPLIST_FILE = GetHipTests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_NAME = "$(TARGET_NAME)"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/GetHip.app/GetHip"; + }; + name = Debug; + }; + 3E1BDA731C37111D00EE3B84 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + FRAMEWORK_SEARCH_PATHS = ( + "$(SDKROOT)/Developer/Library/Frameworks", + "$(inherited)", + ); + INFOPLIST_FILE = GetHipTests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_NAME = "$(TARGET_NAME)"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/GetHip.app/GetHip"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 3E1BDA471C37111D00EE3B84 /* Build configuration list for PBXProject "GetHip" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 3E1BDA6C1C37111D00EE3B84 /* Debug */, + 3E1BDA6D1C37111D00EE3B84 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 3E1BDA6E1C37111D00EE3B84 /* Build configuration list for PBXNativeTarget "GetHip" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 3E1BDA6F1C37111D00EE3B84 /* Debug */, + 3E1BDA701C37111D00EE3B84 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 3E1BDA711C37111D00EE3B84 /* Build configuration list for PBXNativeTarget "GetHipTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 3E1BDA721C37111D00EE3B84 /* Debug */, + 3E1BDA731C37111D00EE3B84 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + +/* Begin XCVersionGroup section */ + 3E1BDA531C37111D00EE3B84 /* GetHip.xcdatamodeld */ = { + isa = XCVersionGroup; + children = ( + 3E1BDA541C37111D00EE3B84 /* GetHip.xcdatamodel */, + ); + currentVersion = 3E1BDA541C37111D00EE3B84 /* GetHip.xcdatamodel */; + path = GetHip.xcdatamodeld; + sourceTree = ""; + versionGroupType = wrapper.xcdatamodel; + }; +/* End XCVersionGroup section */ + }; + rootObject = 3E1BDA441C37111D00EE3B84 /* Project object */; +} diff --git a/GetHip.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/GetHip.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..3f8bcac --- /dev/null +++ b/GetHip.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/GetHip/AppDelegate.swift b/GetHip/AppDelegate.swift new file mode 100644 index 0000000..e4f46f8 --- /dev/null +++ b/GetHip/AppDelegate.swift @@ -0,0 +1,136 @@ +// +// AppDelegate.swift +// GetHip +// +// Created by Okechi on 1/1/16. +// Copyright (c) 2016 Kroleo. All rights reserved. +// + +import UIKit +import CoreData + +@UIApplicationMain +class AppDelegate: UIResponder, UIApplicationDelegate { + + var window: UIWindow? + + + func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { + + Parse.logLevel() + + //NSNotificationCenter.defaultCenter().addObserver(self, selector: "receiveWillSendURLRequestNotification:", name: PFNetworkWillSendURLRequestNotification, object: nil) + //NSNotificationCenter.defaultCenter().addObserver(self, selector: "receiveDidReceiveURLResponseNotification:", name: PFNetworkDidReceiveURLResponseNotification, object: nil) + + // Override point for customization after application launch. + Parse.setApplicationId("OUFlGeqCzg03ZbstGcbskj7UNwp53Y0yad9Fi6I0", clientKey: "xaw0kbAFnBi3zLhT1uSnzrzju56m7CnQJ8hJHW1K") + PFFacebookUtils.initializeFacebookWithApplicationLaunchOptions(launchOptions); + let paths = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.UserDomainMask, true) + print(paths[0]) + return true + } + + func receiveWillSendURLRequestNotification(notification: NSNotification) { + ParseNetDebug.receiveWillSendURLRequestNotification(notification) + } + + func receiveDidReceiveURLResponseNotification(notification: NSNotification) { + ParseNetDebug.receiveDidReceiveURLResponseNotification(notification) + } + func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject?) -> Bool { + return FBSDKApplicationDelegate.sharedInstance().application(application, openURL: url, sourceApplication: sourceApplication, annotation: annotation) + } + + + + func applicationWillResignActive(application: UIApplication) { + // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. + // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game. + } + + + func applicationDidEnterBackground(application: UIApplication) { + // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. + // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. + } + + func applicationWillEnterForeground(application: UIApplication) { + // 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. + } + + func applicationDidBecomeActive(application: UIApplication) { + // 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. + FBSDKAppEvents.activateApp() + } + + func applicationWillTerminate(application: UIApplication) { + // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. + // Saves changes in the application's managed object context before the application terminates. + self.saveContext() + } + + // MARK: - Core Data stack + + lazy var applicationDocumentsDirectory: NSURL = { + // The directory the application uses to store the Core Data store file. This code uses a directory named "oonyeje.Kroleo.GetHip" in the application's documents Application Support directory. + let urls = NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask) + return urls[urls.count-1] as! NSURL + }() + + lazy var managedObjectModel: NSManagedObjectModel = { + // The managed object model for the application. This property is not optional. It is a fatal error for the application not to be able to find and load its model. + let modelURL = NSBundle.mainBundle().URLForResource("GetHip", withExtension: "momd")! + return NSManagedObjectModel(contentsOfURL: modelURL)! + }() + + lazy var persistentStoreCoordinator: NSPersistentStoreCoordinator? = { + // The persistent store coordinator for the application. This implementation creates and return a coordinator, having added the store for the application to it. This property is optional since there are legitimate error conditions that could cause the creation of the store to fail. + // Create the coordinator and store + var coordinator: NSPersistentStoreCoordinator? = NSPersistentStoreCoordinator(managedObjectModel: self.managedObjectModel) + let url = self.applicationDocumentsDirectory.URLByAppendingPathComponent("GetHip.sqlite") + var error: NSError? = nil + var failureReason = "There was an error creating or loading the application's saved data." + if coordinator!.addPersistentStoreWithType(NSSQLiteStoreType, configuration: nil, URL: url, options: nil, error: &error) == nil { + coordinator = nil + // Report any error we got. + var dict = [String: AnyObject]() + dict[NSLocalizedDescriptionKey] = "Failed to initialize the application's saved data" + dict[NSLocalizedFailureReasonErrorKey] = failureReason + dict[NSUnderlyingErrorKey] = error + error = NSError(domain: "YOUR_ERROR_DOMAIN", code: 9999, userInfo: dict) + // Replace this with code to handle the error appropriately. + // abort() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development. + NSLog("Unresolved error \(error), \(error!.userInfo)") + abort() + } + + return coordinator + }() + + lazy var managedObjectContext: NSManagedObjectContext? = { + // Returns the managed object context for the application (which is already bound to the persistent store coordinator for the application.) This property is optional since there are legitimate error conditions that could cause the creation of the context to fail. + let coordinator = self.persistentStoreCoordinator + if coordinator == nil { + return nil + } + var managedObjectContext = NSManagedObjectContext() + managedObjectContext.persistentStoreCoordinator = coordinator + return managedObjectContext + }() + + // MARK: - Core Data Saving support + + func saveContext () { + if let moc = self.managedObjectContext { + var error: NSError? = nil + if moc.hasChanges && !moc.save(&error) { + // Replace this implementation with code to handle the error appropriately. + // abort() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development. + NSLog("Unresolved error \(error), \(error!.userInfo)") + abort() + } + } + } + +} + diff --git a/GetHip/Base.lproj/LaunchScreen.xib b/GetHip/Base.lproj/LaunchScreen.xib new file mode 100644 index 0000000..3c59ccf --- /dev/null +++ b/GetHip/Base.lproj/LaunchScreen.xib @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/GetHip/Bridging-Header.h b/GetHip/Bridging-Header.h new file mode 100644 index 0000000..3e9c534 --- /dev/null +++ b/GetHip/Bridging-Header.h @@ -0,0 +1,35 @@ +// +// Bridging-Header.h +// GetHip +// +// Created by Okechi on 1/1/16. +// Copyright (c) 2016 Kroleo. All rights reserved. +// + +#ifndef GetHip_Bridging_Header_h +#define GetHip_Bridging_Header_h + +#import +#import +#import +#import +#import +#import "ParseNetDebug.h" + +//TDAudioPlayer +#import "NSInputStream+URLInitialization.h" +#import "NSMutableArray+QueueMethods.h" +#import "TDAudioMetaInfo.h" +#import "TDAudioInputStreamer.h" +#import "TDAudioOutputStreamer.h" +#import "TDAudioPlayerConstants.h" +#import "TDAudioPlayer.h" +#import "TDAudioFileStream.h" +#import "TDAudioQueue.h" +#import "TDAudioQueueBuffer.h" +#import "TDAudioQueueBufferManager.h" +#import "TDAudioQueueController.h" +#import "TDAudioQueueFiller.h" +#import "TDAudioStream.h" + +#endif diff --git a/GetHip/FriendData.swift b/GetHip/FriendData.swift new file mode 100644 index 0000000..e469700 --- /dev/null +++ b/GetHip/FriendData.swift @@ -0,0 +1,19 @@ +// +// FriendData.swift +// GetHip +// +// Created by Okechi on 1/13/16. +// Copyright (c) 2016 Kroleo. All rights reserved. +// + +import Foundation + +class FriendData { + var displayName: String! + var profileImg: UIImage! + + init(display: String){ + self.displayName = display + self.profileImg = nil + } +} diff --git a/GetHip/FriendDataSource.swift b/GetHip/FriendDataSource.swift new file mode 100644 index 0000000..18949b5 --- /dev/null +++ b/GetHip/FriendDataSource.swift @@ -0,0 +1,65 @@ +// +// FriendDataSource.swift +// GetHip +// +// Created by Okechi on 1/13/16. +// Copyright (c) 2016 Kroleo. All rights reserved. +// + +import Foundation + + +class FriendDataSource{ + var dataSource: [FriendData] + + init() { + dataSource = [] + var query = PFUser.query() + var currentUser: String! = PFUser.currentUser()?.username + + let predicate: NSPredicate = NSPredicate(format: "(((RequestStatus = %@) OR (RequestStatus = %@)) AND (username = %@))", argumentArray: ["accepted", "pending",currentUser]) + var friendsQuery: PFQuery = PFQuery(className: "FriendRequest", predicate: predicate) + + friendsQuery.includeKey("OtherUser").findObjectsInBackgroundWithBlock { + (objects, error) -> Void in + + //print(error) + + if error == nil { + for object in objects! { + //var image:UIImage = UIImage() + + let userName = object.objectForKey("OtherUser")!.objectForKey("username") as! String + + /* let pimage:PFFile = object["profilePicture"] as! PFFile + + pimage.getDataInBackgroundWithBlock({ + (imageData, error) -> Void in + + if !(error != nil) { + image = UIImage(data: imageData!)! + } + })*/ + + var newFriend: FriendData = FriendData(display: userName) + //print(userName) + self.dataSource.append(newFriend) + + + } + NSLog("%d", self.dataSource.count) + + } + + NSNotificationCenter.defaultCenter().postNotificationName("refreshTableView", object: nil) + + } + + + } + + func getFriends() -> [FriendData]{ + + return self.dataSource + } +} diff --git a/GetHip/FriendsCell.swift b/GetHip/FriendsCell.swift new file mode 100644 index 0000000..7c4cac9 --- /dev/null +++ b/GetHip/FriendsCell.swift @@ -0,0 +1,24 @@ +// +// FriendsCell.swift +// GetHip +// +// Created by Okechi on 1/8/16. +// Copyright (c) 2016 Kroleo. All rights reserved. +// + +import UIKit + +class FriendsCell: UITableViewCell { + @IBOutlet var friendName: UILabel! + + @IBOutlet var proImage: UIImageView! + + override func awakeFromNib() { + super.awakeFromNib() + } + + override func setSelected(selected: Bool, animated: Bool) { + super.setSelected(selected, animated: animated) + } + +} diff --git a/GetHip/FriendsListViewController.swift b/GetHip/FriendsListViewController.swift new file mode 100644 index 0000000..ccdef7d --- /dev/null +++ b/GetHip/FriendsListViewController.swift @@ -0,0 +1,105 @@ +// +// FriendsListViewController.swift +// GetHip +// +// Created by Okechi on 1/5/16. +// Copyright (c) 2016 Kroleo. All rights reserved. +// + +import UIKit + +class FriendsListViewController: UITableViewController/*PFQueryTableViewController*/ { + //var manager = FriendDataSource() + var friends = [] + + @IBOutlet weak var table: UITableView! + + + @IBAction func dismissFriendView(sender: UIBarButtonItem) { + + self.parentViewController?.dismissViewControllerAnimated(true, completion: nil) + } + + + func setData(frnds:[FriendData]){ + self.friends = frnds + } + override func viewDidLoad() { + super.viewDidLoad() + self.table.delegate = self + self.table.dataSource = self + //self.navigationItem.rightBarButtonItem = self.editButtonItem() + //self.friends = manager.getFriends() + + //NSNotificationCenter.defaultCenter().addObserver(self, selector: "refreshTable:", name: "refreshTableView", object: nil) + //debug statements + + + } + + /*func refreshTable(notification: NSNotification){ + self.friends = manager.getFriends() + self.table.reloadData() + }*/ + + override func didReceiveMemoryWarning() { + super.didReceiveMemoryWarning() + } + + override func numberOfSectionsInTableView(tableView: UITableView) -> Int { + return 1 + } + + override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { + return self.friends.count + } + + override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { + let friend = self.friends[indexPath.row] as? FriendData + let cell = self.tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as? FriendsCell + + //sets display name of friend (print for debugging purposes) + cell!.friendName.text = friend!.displayName + println(friend!.displayName) + + //sets profile image of current cell + //checks if friend user has a profile image or not + if friend?.profileImg == nil { + cell!.proImage.backgroundColor = UIColor.grayColor() + } + else{ + + } + + //rounds uiimage and configures UIImageView + //cell!.proImage.layer.borderWidth = 3.0 + //cell!.proImage.clipsToBounds = true + cell!.proImage.layer.cornerRadius = cell!.proImage.frame.size.width/2 + + //cell!.proImage.layer.borderColor = UIColor.whiteColor().CGColor + //cell!.proImage.layer.masksToBounds = true + + + return cell! + } + + override func setEditing(editing: Bool, animated: Bool) { + super.setEditing(editing, animated: animated) + self.table.setEditing(editing, animated: true) + if editing{ + + } + } + + override func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) { + switch editingStyle { + case .Delete: + //delete friend from users friend array, parse, and tableView + println("delete") + default: + return + + } + } + +} diff --git a/GetHip/GetHip.xcdatamodeld/.xccurrentversion b/GetHip/GetHip.xcdatamodeld/.xccurrentversion new file mode 100644 index 0000000..e5be47a --- /dev/null +++ b/GetHip/GetHip.xcdatamodeld/.xccurrentversion @@ -0,0 +1,8 @@ + + + + + _XCCurrentVersionName + GetHip.xcdatamodel + + diff --git a/GetHip/GetHip.xcdatamodeld/GetHip.xcdatamodel/contents b/GetHip/GetHip.xcdatamodeld/GetHip.xcdatamodel/contents new file mode 100644 index 0000000..193f33c --- /dev/null +++ b/GetHip/GetHip.xcdatamodeld/GetHip.xcdatamodel/contents @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/GetHip/HomeScreenViewController.swift b/GetHip/HomeScreenViewController.swift new file mode 100644 index 0000000..584b213 --- /dev/null +++ b/GetHip/HomeScreenViewController.swift @@ -0,0 +1,101 @@ +// +// HomeScreenViewController.swift +// GetHip +// +// Created by Okechi on 1/3/16. +// Copyright (c) 2016 Kroleo. All rights reserved. +// + +import UIKit + +class HomeScreenViewController: UIViewController { + var usrDataManager = UserParseDataSource() + var frndDataManager = FriendDataSource() + var friendData: [FriendData] = [] + var userData: [UserParseData] = [] + let partyData = PartyServiceManager() + + @IBOutlet weak var CreateAPartyBtn: UIButton! + + + //async data update methods + func refreshFriendData(notification:NSNotification){ + self.friendData = self.frndDataManager.getFriends() + } + + func refreshUserData(notification:NSNotification){ + self.userData = self.usrDataManager.getUser() + + self.partyData.setPeerID((self.userData[0].displayName)) + self.partyData.setAdvertiser() + } + + func loadID(notification: NSNotification){ + self.performSegueWithIdentifier("InviteFriendsSegue", sender: nil) + } + + + override func viewDidLoad() { + super.viewDidLoad() + + // Do any additional setup after loading the view. + self.view.backgroundColor = UIColor.whiteColor() + CreateAPartyBtn.layer.cornerRadius = 5 + CreateAPartyBtn.layer.borderWidth = 1 + + NSNotificationCenter.defaultCenter().addObserver(self, selector: "loadID:", name: "gotDisplayID", object: nil) + + NSNotificationCenter.defaultCenter().addObserver(self, selector: "refreshFriendData:", name: "refreshTableView", object: nil) + + NSNotificationCenter.defaultCenter().addObserver(self, selector: "refreshUserData:", name: "refreshSettingsView", object: nil) } + + override func didReceiveMemoryWarning() { + super.didReceiveMemoryWarning() + // Dispose of any resources that can be recreated. + } + + + override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { + if segue.identifier == "InviteFriendsSegue" { + let nav: UINavigationController = (segue.destinationViewController as? UINavigationController)! + + let vc: TestInviteFriendsController = (nav.viewControllers[0] as? TestInviteFriendsController)! + + //initialize host role + self.partyData.setRole(PeerType(rawValue: 0)!) + + //initialize browser to find nearby friends + self.partyData.setBrowser() + + //initialize session + self.partyData.initializeSession() + + vc.setData(self.userData, frndData: self.friendData, party: self.partyData) + } + + if segue.identifier == "SettingsSegue" { + let nav: UINavigationController = (segue.destinationViewController as? UINavigationController)! + + let vc: SettingsTableViewController = (nav.viewControllers[0] as? SettingsTableViewController)! + vc.setData(self.userData) + } + + if segue.identifier == "FriendListSegue" { + let nav: UINavigationController = (segue.destinationViewController as? UINavigationController)! + + let vc: FriendsListViewController = (nav.viewControllers[0] as? FriendsListViewController)! + vc.setData(self.friendData) + } + } + + /* + // MARK: - Navigation + + // In a storyboard-based application, you will often want to do a little preparation before navigation + override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { + // Get the new view controller using segue.destinationViewController. + // Pass the selected object to the new view controller. + } + */ + +} diff --git a/GetHip/Images-2.xcassets/Image.imageset/Contents.json b/GetHip/Images-2.xcassets/Image.imageset/Contents.json new file mode 100644 index 0000000..f8f827e --- /dev/null +++ b/GetHip/Images-2.xcassets/Image.imageset/Contents.json @@ -0,0 +1,20 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/GetHip/Images-2.xcassets/LaunchImage.launchimage/Contents.json b/GetHip/Images-2.xcassets/LaunchImage.launchimage/Contents.json new file mode 100644 index 0000000..e37b649 --- /dev/null +++ b/GetHip/Images-2.xcassets/LaunchImage.launchimage/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "orientation" : "portrait", + "idiom" : "iphone", + "minimum-system-version" : "7.0", + "scale" : "2x" + }, + { + "orientation" : "portrait", + "idiom" : "iphone", + "minimum-system-version" : "7.0", + "subtype" : "retina4", + "scale" : "2x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/GetHip/Images-3.xcassets/Image.imageset/1x.png b/GetHip/Images-3.xcassets/Image.imageset/1x.png new file mode 100644 index 0000000..ad08030 Binary files /dev/null and b/GetHip/Images-3.xcassets/Image.imageset/1x.png differ diff --git a/GetHip/Images-3.xcassets/Image.imageset/2x.png b/GetHip/Images-3.xcassets/Image.imageset/2x.png new file mode 100644 index 0000000..fd227c7 Binary files /dev/null and b/GetHip/Images-3.xcassets/Image.imageset/2x.png differ diff --git a/GetHip/Images-3.xcassets/Image.imageset/3x.png b/GetHip/Images-3.xcassets/Image.imageset/3x.png new file mode 100644 index 0000000..cc44c5c Binary files /dev/null and b/GetHip/Images-3.xcassets/Image.imageset/3x.png differ diff --git a/GetHip/Images-3.xcassets/Image.imageset/Contents.json b/GetHip/Images-3.xcassets/Image.imageset/Contents.json new file mode 100644 index 0000000..22a8db2 --- /dev/null +++ b/GetHip/Images-3.xcassets/Image.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x", + "filename" : "1x.png" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x", + "filename" : "3x.png" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/GetHip/Images-3.xcassets/LaunchImage.launchimage/1x-1.png b/GetHip/Images-3.xcassets/LaunchImage.launchimage/1x-1.png new file mode 100644 index 0000000..d59bd84 Binary files /dev/null and b/GetHip/Images-3.xcassets/LaunchImage.launchimage/1x-1.png differ diff --git a/GetHip/Images-3.xcassets/LaunchImage.launchimage/1x.png b/GetHip/Images-3.xcassets/LaunchImage.launchimage/1x.png new file mode 100644 index 0000000..edc9150 Binary files /dev/null and b/GetHip/Images-3.xcassets/LaunchImage.launchimage/1x.png differ diff --git a/GetHip/Images-3.xcassets/LaunchImage.launchimage/Contents.json b/GetHip/Images-3.xcassets/LaunchImage.launchimage/Contents.json new file mode 100644 index 0000000..010cfb2 --- /dev/null +++ b/GetHip/Images-3.xcassets/LaunchImage.launchimage/Contents.json @@ -0,0 +1,25 @@ +{ + "images" : [ + { + "orientation" : "portrait", + "idiom" : "iphone", + "extent" : "full-screen", + "minimum-system-version" : "7.0", + "filename" : "1x-1.png", + "scale" : "2x" + }, + { + "extent" : "full-screen", + "idiom" : "iphone", + "subtype" : "retina4", + "filename" : "1x.png", + "minimum-system-version" : "7.0", + "orientation" : "portrait", + "scale" : "2x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/GetHip/Images.xcassets/AppIcon.appiconset/Contents.json b/GetHip/Images.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..118c98f --- /dev/null +++ b/GetHip/Images.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,38 @@ +{ + "images" : [ + { + "idiom" : "iphone", + "size" : "29x29", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "29x29", + "scale" : "3x" + }, + { + "idiom" : "iphone", + "size" : "40x40", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "40x40", + "scale" : "3x" + }, + { + "idiom" : "iphone", + "size" : "60x60", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "60x60", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/GetHip/Info.plist b/GetHip/Info.plist new file mode 100644 index 0000000..ceed721 --- /dev/null +++ b/GetHip/Info.plist @@ -0,0 +1,53 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + oonyeje.Kroleo.$(PRODUCT_NAME:rfc1034identifier) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleURLTypes + + + CFBundleTypeRole + Editor + CFBundleURLSchemes + + fb1166375230058840 + + + + CFBundleVersion + 1 + FacebookAppID + 1166375230058840 + FacebookDisplayName + Get Hip! + LSRequiresIPhoneOS + + UILaunchStoryboardName + LaunchScreen + UIMainStoryboardFile + Main + UIRequiredDeviceCapabilities + + armv7 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + + + diff --git a/GetHip/InviteFriendCell.swift b/GetHip/InviteFriendCell.swift new file mode 100644 index 0000000..a28f31b --- /dev/null +++ b/GetHip/InviteFriendCell.swift @@ -0,0 +1,35 @@ +// +// InviteFriendCell.swift +// GetHip +// +// Created by Okechi on 1/23/16. +// Copyright (c) 2016 Kroleo. All rights reserved. +// + +import UIKit + +class InviteFriendCell: UITableViewCell { + + @IBOutlet var friendName: UILabel! + + @IBOutlet var proImage: UIImageView! + + @IBOutlet var rdioButton: UIButton! + + override func awakeFromNib() { + super.awakeFromNib() + } + + override func setSelected(selected: Bool, animated: Bool) { + super.setSelected(selected, animated: animated) + } + + /* + // Only override drawRect: if you perform custom drawing. + // An empty implementation adversely affects performance during animation. + override func drawRect(rect: CGRect) { + // Drawing code + } + */ + +} diff --git a/GetHip/InviteFriendsView.swift b/GetHip/InviteFriendsView.swift new file mode 100644 index 0000000..8623a2e --- /dev/null +++ b/GetHip/InviteFriendsView.swift @@ -0,0 +1,116 @@ +// +// InviteFriendsView.swift +// GetHip +// +// Created by Okechi on 1/22/16. +// Copyright (c) 2016 Kroleo. All rights reserved. +// + +import UIKit +import MultipeerConnectivity +class InviteFriendsViewControler: UITableViewController{ + var usr: [UserParseData] = [] + var frnds: [FriendData] = [] + let partyService = PartyServiceManager() + + @IBAction func cancelInvites(sender: UIBarButtonItem) { + + self.parentViewController?.dismissViewControllerAnimated(true, completion: nil) + + } + + + func setData(usrDat: [UserParseData], frndData: [FriendData]){ + self.usr = usrDat + self.frnds = frndData + //self.partyService.setData(self.usr[0].displayName) + } + + override func viewDidLoad() { + super.viewDidLoad() + + // Uncomment the following line to preserve selection between presentations + // self.clearsSelectionOnViewWillAppear = false + + // Uncomment the following line to display an Edit button in the navigation bar for this view controller. + // self.navigationItem.rightBarButtonItem = self.editButtonItem() + } + + override func didReceiveMemoryWarning() { + super.didReceiveMemoryWarning() + // Dispose of any resources that can be recreated. + } + + // MARK: - Table view data source + + override func numberOfSectionsInTableView(tableView: UITableView) -> Int { + // #warning Potentially incomplete method implementation. + // Return the number of sections. + return 0 + } + + override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { + // #warning Incomplete method implementation. + // Return the number of rows in the section. + return 0 + } + + + override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { + let cell = tableView.dequeueReusableCellWithIdentifier("InviteCell", forIndexPath: indexPath) as! InviteFriendCell + + // Configure the cell... + + return cell + } + + + /* + // Override to support conditional editing of the table view. + override func tableView(tableView: UITableView, canEditRowAtIndexPath indexPath: NSIndexPath) -> Bool { + // Return NO if you do not want the specified item to be editable. + return true + } + */ + + /* + // Override to support editing the table view. + override func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) { + if editingStyle == .Delete { + // Delete the row from the data source + tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: .Fade) + } else if editingStyle == .Insert { + // Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view + } + } + */ + + /* + // Override to support rearranging the table view. + override func tableView(tableView: UITableView, moveRowAtIndexPath fromIndexPath: NSIndexPath, toIndexPath: NSIndexPath) { + + } + */ + + /* + // Override to support conditional rearranging of the table view. + override func tableView(tableView: UITableView, canMoveRowAtIndexPath indexPath: NSIndexPath) -> Bool { + // Return NO if you do not want the item to be re-orderable. + return true + } + */ + + /* + // MARK: - Navigation + + // In a storyboard-based application, you will often want to do a little preparation before navigation + override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { + // Get the new view controller using [segue destinationViewController]. + // Pass the selected object to the new view controller. + } + */ + +} + +//extensions for connecting and inviting peers + diff --git a/GetHip/LoginViewController.swift b/GetHip/LoginViewController.swift new file mode 100644 index 0000000..5c106f6 --- /dev/null +++ b/GetHip/LoginViewController.swift @@ -0,0 +1,52 @@ +// +// LoginViewController.swift +// GetHip +// +// Created by Okechi on 1/2/16. +// Copyright (c) 2016 Kroleo. All rights reserved. +// + +import UIKit + +class LoginViewController: PFLogInViewController{ + var backgroundImage: UIImageView!; + + override func viewDidLoad() { + super.viewDidLoad() + self.signUpController = SignUpViewController() + //set custom logo background image + backgroundImage = UIImageView(image: UIImage(named: "1x")) + backgroundImage.contentMode = UIViewContentMode.ScaleAspectFill + self.logInView!.insertSubview(backgroundImage, atIndex: 0) + //customize common buttons in login + customizeButtons(logInView?.logInButton!) + + //customize login button + logInView!.logInButton?.setTitle("Sign In", forState: .Normal) + + //var loginFrame: CGRect = logInView!.logInButton!.frame + //loginFrame.origin.x = loginFrame.origin.x + //loginFrame.origin.y = loginFrame.origin.y + //loginFrame.size.width = loginFrame.size.width - 100 + //loginFrame.size.height = loginFrame.size.height + //logInView!.logInButton!.frame = loginFrame + + //customize password forget button + logInView!.passwordForgottenButton?.setTitleColor(UIColor.whiteColor(), forState: .Normal) + + } + + func customizeButtons(button: UIButton!){ + button.setBackgroundImage(nil, forState: .Normal) + button.backgroundColor = UIColor.clearColor() + button.layer.cornerRadius = 5 + button.layer.borderWidth = 1 + button.layer.borderColor = UIColor.whiteColor().CGColor + } + + override func viewDidLayoutSubviews() { + super.viewDidLayoutSubviews() + //stretch background image to fill screen + backgroundImage.frame = CGRectMake(0, 0, self.logInView!.frame.width, self.logInView!.frame.height) + } +} diff --git a/GetHip/Main.storyboard b/GetHip/Main.storyboard new file mode 100644 index 0000000..8a918da --- /dev/null +++ b/GetHip/Main.storyboard @@ -0,0 +1,183 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/GetHip/ParseNetDebug.h b/GetHip/ParseNetDebug.h new file mode 100644 index 0000000..229037f --- /dev/null +++ b/GetHip/ParseNetDebug.h @@ -0,0 +1,25 @@ +// +// ParseNetDebug.h +// GetHip +// +// Created by Okechi on 1/6/16. +// Copyright (c) 2016 Kroleo. All rights reserved. +// + +#ifndef GetHip_ParseNetDebug_h +#define GetHip_ParseNetDebug_h +#import +#import + +@interface ParseNetDebug : NSObject + ++ (void)receiveWillSendURLRequestNotification:(NSNotification *) notification; + + ++ (void)receiveDidReceiveURLResponseNotification:(NSNotification *) notification; + + + +@end + +#endif diff --git a/GetHip/ParseNetDebug.m b/GetHip/ParseNetDebug.m new file mode 100644 index 0000000..22f87bd --- /dev/null +++ b/GetHip/ParseNetDebug.m @@ -0,0 +1,29 @@ +// +// ParseNetDebug.m +// GetHip +// +// Created by Okechi on 1/7/16. +// Copyright (c) 2016 Kroleo. All rights reserved. +// + +#import "ParseNetDebug.h" + +@implementation ParseNetDebug: NSObject ++ (void)receiveWillSendURLRequestNotification:(NSNotification *) notification { + NSURLRequest *request = notification.userInfo[PFNetworkNotificationURLRequestUserInfoKey]; + NSLog(@"URL : %@", request.URL.absoluteString); + NSLog(@"Method : %@", request.HTTPMethod); + NSLog(@"Headers : %@", request.allHTTPHeaderFields); + NSLog(@"Request Body : %@", [[NSString alloc] initWithData:request.HTTPBody encoding:NSUTF8StringEncoding]); +} + ++ (void)receiveDidReceiveURLResponseNotification:(NSNotification *) notification { + NSURLRequest *request = notification.userInfo[PFNetworkNotificationURLRequestUserInfoKey]; + NSHTTPURLResponse *response = notification.userInfo[PFNetworkNotificationURLResponseUserInfoKey]; + NSString *responseBody = notification.userInfo[PFNetworkNotificationURLResponseBodyUserInfoKey]; + NSLog(@"URL : %@", request.URL.absoluteString); + NSLog(@"Status Code : %ld", (long)response.statusCode); + NSLog(@"Headers : %@", response.allHeaderFields); + NSLog(@"Response Body : %@", responseBody); +} +@end diff --git a/GetHip/PartyServiceManager.swift b/GetHip/PartyServiceManager.swift new file mode 100644 index 0000000..9e2dd18 --- /dev/null +++ b/GetHip/PartyServiceManager.swift @@ -0,0 +1,233 @@ +// +// PartyServiceManager.swift +// GetHip +// +// Created by Okechi on 1/22/16. +// Copyright (c) 2016 Kroleo. All rights reserved. +// + +import Foundation +import MultipeerConnectivity + + +protocol PartyServiceManagerDelegate { + func didConnectToPeer(serviceManager: PartyServiceManager, didConnectToPeer peerIDName: String ) + + func foundAPeer(serviceManager: PartyServiceManager, foundPeer: String) + + +} + +enum PeerType : Int { + case Host = 0 + case Guest = 1 +} + +enum HostSignalType: String { + case PauseAudio = "Pause" + case PlayAudio = "Play" +} + + + +class PartyServiceManager: NSObject { + + let PartyServiceType = "GetHip-Party" + var serviceAdvertiser: MCNearbyServiceAdvertiser! = nil + var myPeerID: MCPeerID! = nil + var serviceBrowser: MCNearbyServiceBrowser! = nil + var session: MCSession! = nil + // var delegate: PartyServiceManagerDelegate? + + //peer variables + var foundPeers: [String] = [] + var invitedFriends: [String] = [] + var role: PeerType! = nil + + var connectingPeersDictionary = NSMutableDictionary() + var disconnectedPeersDictionary = NSMutableDictionary() + + /*init(){ + + //self.serviceAdvertiser = MCNearbyServiceAdvertiser(peer: self.myPeerID, discoveryInfo: nil, serviceType: self.PartyServiceType) + //super.init() + //self.serviceAdvertiser.delegate = self + + }*/ + + /*deinit { + //stop all session services + self.serviceAdvertiser.stopAdvertisingPeer() + self.serviceBrowser.stopBrowsingForPeers() + }*/ + + /*lazy var session: MCSession = { + let session = MCSession(peer: self.myPeerID, securityIdentity: nil, encryptionPreference: MCEncryptionPreference.Required) + + }()*/ + + //Peer Initializer + func setPeerID(dispName: String){ + self.myPeerID = MCPeerID(displayName: dispName) + println("PeerID set to %@", self.myPeerID.displayName) + } + + func setRole(peerRole: PeerType){ + self.role = peerRole + println("Role set to %@", self.role.rawValue) + } + + //Listening methods + func setAdvertiser(){ + self.serviceAdvertiser = MCNearbyServiceAdvertiser(peer: self.myPeerID, discoveryInfo: nil, serviceType: self.PartyServiceType) + self.serviceAdvertiser!.delegate = self + println("Advertiser Set") + } + + func startListening(){ + self.serviceAdvertiser.startAdvertisingPeer() + println("Started Listening for invitations") + } + + func stopListening(){ + self.serviceAdvertiser.stopAdvertisingPeer() + println("Stopped listening for invitations") + } + + //Browsing Methods + func setBrowser(){ + self.serviceBrowser = MCNearbyServiceBrowser(peer: self.myPeerID, serviceType: self.PartyServiceType) + self.serviceBrowser.delegate = self + println("Browser Set") + } + + func startBrowser(){ + self.serviceBrowser.startBrowsingForPeers() + println("Started Browsing for peers") + } + + func stopBrowsing(){ + self.serviceBrowser.stopBrowsingForPeers() + println("Stopped Browsing for peers") + } + + //Audio Streaming methods + func openOutputStream() -> NSMutableArray{ + + var outputs: NSMutableArray? + for peer in self.session.connectedPeers { + outputs?.addObject(self.session.startStreamWithName("music", toPeer: peer as! MCPeerID, error: nil)) + } + + return outputs! + } + + func outputStreamForPeer(peer: MCPeerID) -> NSOutputStream { + return session.startStreamWithName("music", toPeer: peer, error: nil) + } + + //Host Methods + func initializeSession(){ + self.session = MCSession(peer: self.myPeerID, securityIdentity: nil, encryptionPreference: MCEncryptionPreference.Required) + println("Started Browsing for peers") + } + + //Deprecated + /* + func setData(dispName: String){ + + //initialize session variable + self.myPeerID = MCPeerID(displayName: dispName) + self.serviceAdvertiser = MCNearbyServiceAdvertiser(peer: self.myPeerID, discoveryInfo: nil, serviceType: self.PartyServiceType) + self.serviceBrowser = MCNearbyServiceBrowser(peer: self.myPeerID, serviceType: self.PartyServiceType) + self.session = MCSession(peer: self.myPeerID, securityIdentity: nil, encryptionPreference: MCEncryptionPreference.Required) + + //assign session delegates + self.serviceAdvertiser.delegate = self + self.serviceBrowser.delegate = self + self.session.delegate = self + + //start all services + self.serviceAdvertiser.startAdvertisingPeer() + self.serviceBrowser.startBrowsingForPeers() + } + */ + + func connectedPeers() -> [AnyObject]{ + return self.session.connectedPeers + } + +} + + +//delegate extensions +extension PartyServiceManager: MCNearbyServiceBrowserDelegate{ + + func browser(browser: MCNearbyServiceBrowser!, didNotStartBrowsingForPeers error: NSError!) { + NSLog("%@", "didNotStartBrowsingForPeers: \(error)") + } + + func browser(browser: MCNearbyServiceBrowser!, foundPeer peerID: MCPeerID!, withDiscoveryInfo info: [NSObject : AnyObject]!) { + + if(peerID.displayName != self.myPeerID.displayName) { + NSLog("%@", "foundPeer: \(peerID)") + self.foundPeers.append(peerID.displayName) + + } + + //implement way of picking which friends from friend list are invited + } + + func browser(browser: MCNearbyServiceBrowser!, lostPeer peerID: MCPeerID!) { + NSLog("%@", "lostPeer: \(peerID)") + } +} + +extension PartyServiceManager: MCNearbyServiceAdvertiserDelegate{ + func advertiser(advertiser: MCNearbyServiceAdvertiser!, didNotStartAdvertisingPeer error: NSError!) { + NSLog("%@", "didNotStartAdvertisingPeer: \(error)") + + } + + func advertiser(advertiser: MCNearbyServiceAdvertiser!, didReceiveInvitationFromPeer peerID: MCPeerID!, withContext context: NSData!, invitationHandler: ((Bool, MCSession!) -> Void)!) { + NSLog("%@", "invitingPeer: \(peerID)") + } +} + +extension PartyServiceManager: MCSessionDelegate{ + + func session(session: MCSession!, peer peerID: MCPeerID!, didChangeState state: MCSessionState) { + NSLog("%@", "peer \(peerID) didChangeState: \(state.stringValue())") + } + + func session(session: MCSession!, didReceiveData data: NSData!, fromPeer peerID: MCPeerID!) { + NSLog("%@", "didRecieveData: \(data)") + } + + func session(session: MCSession!, didReceiveStream stream: NSInputStream!, withName streamName: String!, fromPeer peerID: MCPeerID!) { + NSLog("%@", "didRecieveStream: \(streamName) from peer: \(peerID)") + } + + func session(session: MCSession!, didFinishReceivingResourceWithName resourceName: String!, fromPeer peerID: MCPeerID!, atURL localURL: NSURL!, withError error: NSError!) { + NSLog("%@", "didFinishReceivingResourceWithName: \(resourceName) from peer: \(peerID)") + } + + func session(session: MCSession!, didStartReceivingResourceWithName resourceName: String!, fromPeer peerID: MCPeerID!, withProgress progress: NSProgress!) { + NSLog("%@", "didStartReceivingResourceWithName: \(resourceName) from peer: \(peerID)") + } + + +} + +//state extensions + +extension MCSessionState{ + func stringValue() -> String { + switch(self){ + case .NotConnected: return "NotConnected" + case .Connecting: return "Connecting" + case .Connected: return "Connected" + default: return "Unknown" + } + } +} diff --git a/GetHip/PartySession.swift b/GetHip/PartySession.swift new file mode 100644 index 0000000..02ad588 --- /dev/null +++ b/GetHip/PartySession.swift @@ -0,0 +1,41 @@ +// +// PartySessionManager.swift +// GetHip +// +// Created by Okechi on 1/24/16. +// Copyright (c) 2016 Kroleo. All rights reserved. +// + +import Foundation +import MediaPlayer + +class PartySession { + private var partyName: String! = "" + private var guests: [FriendData] = [] + private var host: FriendData! = nil + private var currentSong: MPMediaItem! = nil + + func setPartyName(name: String){ + + } + + func addGuests(guest: FriendData){ + self.guests.append(guest) + } + + func setHost(newHost: FriendData){ + self.host = newHost + } + + func getPartyName() -> String { + return self.partyName + } + + func getGuests() -> [FriendData] { + return self.guests + } + + func getHost() -> FriendData { + return self.host + } +} diff --git a/GetHip/PartySessionManager.swift b/GetHip/PartySessionManager.swift new file mode 100644 index 0000000..5c60c2d --- /dev/null +++ b/GetHip/PartySessionManager.swift @@ -0,0 +1,9 @@ +// +// PartySessionManager.swift +// GetHip +// +// Created by Okechi on 1/24/16. +// Copyright (c) 2016 Kroleo. All rights reserved. +// + +import Foundation diff --git a/GetHip/SettingsCellWrapper.swift b/GetHip/SettingsCellWrapper.swift new file mode 100644 index 0000000..18cc87f --- /dev/null +++ b/GetHip/SettingsCellWrapper.swift @@ -0,0 +1,66 @@ +// +// SettingsCellWrapper.swift +// GetHip +// +// Created by Okechi on 1/21/16. +// Copyright (c) 2016 Kroleo. All rights reserved. +// + +import Foundation + +class DisplayNameCell: UITableViewCell { + @IBOutlet var dispName: UILabel! + + override func awakeFromNib() { + super.awakeFromNib() + } + + override func setSelected(selected: Bool, animated: Bool) { + super.setSelected(selected, animated: animated) + } +} + +class UserNameCell: UITableViewCell { + @IBOutlet var usrName: UILabel! + + override func awakeFromNib() { + super.awakeFromNib() + } + + override func setSelected(selected: Bool, animated: Bool) { + super.setSelected(selected, animated: animated) + } +} + +class EmailCell: UITableViewCell { + @IBOutlet var email: UILabel! + + override func awakeFromNib() { + super.awakeFromNib() + } + + override func setSelected(selected: Bool, animated: Bool) { + super.setSelected(selected, animated: animated) + } +} + +class ResetPassCell: UITableViewCell { + + override func awakeFromNib() { + super.awakeFromNib() + } + + override func setSelected(selected: Bool, animated: Bool) { + super.setSelected(selected, animated: animated) + } +} + +class ProfilePicCell: UITableViewCell{ + override func awakeFromNib() { + super.awakeFromNib() + } + + override func setSelected(selected: Bool, animated: Bool) { + super.setSelected(selected, animated: animated) + } +} \ No newline at end of file diff --git a/GetHip/SettingsDetailViewWrapper.swift b/GetHip/SettingsDetailViewWrapper.swift new file mode 100644 index 0000000..66d7ca0 --- /dev/null +++ b/GetHip/SettingsDetailViewWrapper.swift @@ -0,0 +1,213 @@ +// +// SettingsDetailViewWrapper.swift +// GetHip +// +// Created by Okechi on 1/22/16. +// Copyright (c) 2016 Kroleo. All rights reserved. +// + +import UIKit + +class DisplayDetailViewController: UIViewController { + var possibleName: String! + + @IBOutlet weak var textfield: UITextField? + + @IBOutlet weak var ChnDspName: UIButton! + + + @IBAction func DspBtnConfrim(sender: UIButton) { + + self.possibleName = self.textfield?.text + + //sanitize and alert for input and success later + + var query = PFUser.query() + var currentUser = PFUser.currentUser() + + query!.whereKey("username", equalTo: (currentUser?.username as String!)) + + query!.getFirstObjectInBackgroundWithBlock { + (object, error) -> Void in + + if error != nil || object == nil { + println("Object request failed") + } + else if let object = object{ + object.setObject(self.possibleName, forKey: "displayName") + object.saveInBackground() + //NSNotificationCenter.defaultCenter().postNotificationName("savingName", object: nil) + } + } + + println(self.possibleName) + } + + var displayName: String! + + func setData(display: String){ + self.displayName = display + } + + func refreshView(notification: NSNotification){ + + + } + + override func viewDidLoad() { + super.viewDidLoad() + + self.textfield?.placeholder = self.displayName + + self.ChnDspName.layer.borderWidth = 1 + self.ChnDspName.layer.cornerRadius = 5 + self.ChnDspName.layer.borderColor = UIColor.blackColor().CGColor + // Do any additional setup after loading the view. + NSNotificationCenter.defaultCenter().addObserver(self, selector: "refreshView:", name: "savingName", object: nil) + } + + override func didReceiveMemoryWarning() { + super.didReceiveMemoryWarning() + // Dispose of any resources that can be recreated. + } + + + + + /* + // MARK: - Navigation + + // In a storyboard-based application, you will often want to do a little preparation before navigation + override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { + // Get the new view controller using segue.destinationViewController. + // Pass the selected object to the new view controller. + } + */ + +} + +class EmailDetailViewController: UIViewController { + var possibleEmail: String! + + @IBOutlet weak var textfield: UITextField? + + @IBOutlet weak var ChnEmailBtn: UIButton! + + @IBAction func ChnEmailComfirm(sender: UIButton) { + + self.possibleEmail = self.textfield?.text + //sanitize and alert for input and success later + + var query = PFUser.query() + var currentUser = PFUser.currentUser() + + query!.whereKey("username", equalTo: (currentUser?.username as String!)) + + query!.getFirstObjectInBackgroundWithBlock { + (object, error) -> Void in + + if error != nil || object == nil { + println("Object request failed") + } + else if let object = object{ + object.setObject(self.possibleEmail, forKey: "email") + object.saveInBackground() + NSNotificationCenter.defaultCenter().postNotificationName("savingEmail", object: nil) + } + } + + println(self.possibleEmail) + } + + + var email: String! + + func setData(email: String){ + self.email = email + } + + override func viewDidLoad() { + super.viewDidLoad() + + self.textfield?.placeholder = self.email + + self.ChnEmailBtn.layer.borderWidth = 1 + self.ChnEmailBtn.layer.cornerRadius = 5 + self.ChnEmailBtn.layer.borderColor = UIColor.blackColor().CGColor + // Do any additional setup after loading the view. + NSNotificationCenter.defaultCenter().addObserver(self, selector: "refreshView:", name: "savingEmail", object: nil) + } + + override func didReceiveMemoryWarning() { + super.didReceiveMemoryWarning() + // Dispose of any resources that can be recreated. + } + + func refreshView(notification: NSNotification){ + + } + + /* + // MARK: - Navigation + + // In a storyboard-based application, you will often want to do a little preparation before navigation + override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { + // Get the new view controller using segue.destinationViewController. + // Pass the selected object to the new view controller. + } + */ + +} + +class ProfileDetailViewController: UIViewController { + var profileImg: UIImageView! + + + @IBOutlet weak var img: UIImageView! + @IBOutlet weak var ChngPhtoBtn: UIButton! + + + + @IBAction func changePhoto(sender: UIButton) { + //code to change profileImg + } + + + func setData(){ + self.profileImg = nil + } + + override func viewDidLoad() { + super.viewDidLoad() + self.img!.layer.cornerRadius = self.img!.frame.size.width/2 + if self.profileImg == nil{ + self.img!.backgroundColor = UIColor.grayColor() + } + else{ + self.img = self.profileImg + } + + self.ChngPhtoBtn!.layer.borderWidth = 1 + self.ChngPhtoBtn!.layer.cornerRadius = 5 + self.ChngPhtoBtn!.layer.borderColor = UIColor.blackColor().CGColor + + // Do any additional setup after loading the view. + } + + override func didReceiveMemoryWarning() { + super.didReceiveMemoryWarning() + // Dispose of any resources that can be recreated. + } + + + /* + // MARK: - Navigation + + // In a storyboard-based application, you will often want to do a little preparation before navigation + override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { + // Get the new view controller using segue.destinationViewController. + // Pass the selected object to the new view controller. + } + */ + +} diff --git a/GetHip/SettingsTableViewController.swift b/GetHip/SettingsTableViewController.swift new file mode 100644 index 0000000..f93415e --- /dev/null +++ b/GetHip/SettingsTableViewController.swift @@ -0,0 +1,280 @@ +// +// SettingsTableViewController.swift +// GetHip +// +// Created by Okechi on 1/21/16. +// Copyright (c) 2016 Kroleo. All rights reserved. +// + +import UIKit + +class SettingsTableViewController: UITableViewController { + // var manager = UserParseDataSource() + var user = [] + + + @IBOutlet weak var logOutBtn: UIButton! + @IBOutlet weak var table: UITableView! + + @IBAction func dismissSettingsView(sender: UIBarButtonItem) { + + self.parentViewController?.dismissViewControllerAnimated(true, completion: nil) + } + + + @IBAction func logOutUser(sender: UIButton) { + PFUser.logOut() + + if PFUser.currentUser() == nil { + + self.performSegueWithIdentifier("LogOutSegue", sender: sender) + + } + + } + + func setData(usr:[UserParseData]){ + self.user = usr + } + + override func viewDidLoad() { + super.viewDidLoad() + self.navigationItem.title = "Settings" + + self.logOutBtn.layer.borderWidth = 1 + self.logOutBtn.layer.cornerRadius = 5 + self.logOutBtn.layer.borderColor = UIColor.blackColor().CGColor + + //NSNotificationCenter.defaultCenter().addObserver(self, selector: "refreshTable:", name: "refreshSettingsView", object: nil) + + self.table.reloadData() + // Uncomment the following line to preserve selection between presentations + // self.clearsSelectionOnViewWillAppear = false + + // Uncomment the following line to display an Edit button in the navigation bar for this view controller. + // self.navigationItem.rightBarButtonItem = self.editButtonItem() + } + + override func didReceiveMemoryWarning() { + super.didReceiveMemoryWarning() + // Dispose of any resources that can be recreated. + } + + // MARK: - Table view data source + + override func numberOfSectionsInTableView(tableView: UITableView) -> Int { + // #warning Potentially incomplete method implementation. + // Return the number of sections. + return 1 + } + + + + override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { + // #warning Incomplete method implementation. + // Return the number of rows in the section. + return 5 + } + + override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { + println(indexPath.row) + switch indexPath.row { + case 0: + let cell = (self.tableView.dequeueReusableCellWithIdentifier("DispNameCell", forIndexPath: indexPath) as? DisplayNameCell)! + + if self.user.count > 0 { + cell.dispName.text = (self.user[0] as? UserParseData)!.displayName + } + + return cell + + case 1: + let cell = (self.tableView.dequeueReusableCellWithIdentifier("UserNameCell", forIndexPath: indexPath) as? UserNameCell)! + + if self.user.count > 0 { + cell.usrName.text = (self.user[0] as? UserParseData)!.username + } + + return cell + + case 2: + let cell = (self.tableView.dequeueReusableCellWithIdentifier("EmailCell", forIndexPath: indexPath) as? EmailCell)! + + if self.user.count > 0 { + cell.email.text = (self.user[0] as? UserParseData)!.email + } + + return cell + case 3: + let cell = (self.table.dequeueReusableCellWithIdentifier("PassCell", forIndexPath: indexPath) as? ResetPassCell)! + + if self.user.count > 0 { + + } + + return cell + default: + let cell = (self.table.dequeueReusableCellWithIdentifier("PictureCell", forIndexPath: indexPath) as? ProfilePicCell)! + + if self.user.count > 0 { + + } + + return cell + } + } + + override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { + + switch indexPath.row { + + //display name view + case 0: + + if self.user.count > 0 { + + self.performSegueWithIdentifier("DisplayNameSegue", sender: nil) + } + + //user name view + case 1: + + if self.user.count > 0 { + + + } + + break + + //email view + case 2: + + if self.user.count > 0 { + self.performSegueWithIdentifier("EmailSegue", sender: nil) + } + + //reset pass + case 3: + + if self.user.count > 0 { + + } + break + + //Profile Picture View + default: + + if self.user.count > 0 { + self.performSegueWithIdentifier("PhotoSegue", sender: nil) + } + + } + } + + override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { + if let indexPath = self.table.indexPathForSelectedRow() { + + switch indexPath.row { + + //display name view + case 0: + if self.user.count > 0 { + let vc: DisplayDetailViewController = (segue.destinationViewController as? DisplayDetailViewController)! + vc.setData((self.user[0] as? UserParseData)!.displayName) + + println(vc.displayName) + } + + //email view + case 2: + + if self.user.count > 0 { + let vc: EmailDetailViewController = (segue.destinationViewController as? EmailDetailViewController)! + vc.setData((self.user[0] as? UserParseData)!.email) + + println(vc.email) + } + + //reset pass + case 3: + + if self.user.count > 0 { + + } + + //Profile Picture View + default: + + if self.user.count > 0 { + let vc: ProfileDetailViewController = (segue.destinationViewController as? ProfileDetailViewController)! + vc.setData() + println("img") + } + + } + + } + + } + + /* func refreshTable(notification: NSNotification){ + self.user = manager.getUser() + self.table.reloadData() + }*/ + + /* + override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { + let cell = tableView.dequeueReusableCellWithIdentifier("reuseIdentifier", forIndexPath: indexPath) as! UITableViewCell + + // Configure the cell... + + return cell + } + */ + + /* + // Override to support conditional editing of the table view. + override func tableView(tableView: UITableView, canEditRowAtIndexPath indexPath: NSIndexPath) -> Bool { + // Return NO if you do not want the specified item to be editable. + return true + } + */ + + /* + // Override to support editing the table view. + override func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) { + if editingStyle == .Delete { + // Delete the row from the data source + tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: .Fade) + } else if editingStyle == .Insert { + // Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view + } + } + */ + + /* + // Override to support rearranging the table view. + override func tableView(tableView: UITableView, moveRowAtIndexPath fromIndexPath: NSIndexPath, toIndexPath: NSIndexPath) { + + } + */ + + /* + // Override to support conditional rearranging of the table view. + override func tableView(tableView: UITableView, canMoveRowAtIndexPath indexPath: NSIndexPath) -> Bool { + // Return NO if you do not want the item to be re-orderable. + return true + } + */ + + /* + // MARK: - Navigation + + // In a storyboard-based application, you will often want to do a little preparation before navigation + override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { + // Get the new view controller using [segue destinationViewController]. + // Pass the selected object to the new view controller. + } + */ + +} diff --git a/GetHip/SignUpViewController.swift b/GetHip/SignUpViewController.swift new file mode 100644 index 0000000..ff5f49a --- /dev/null +++ b/GetHip/SignUpViewController.swift @@ -0,0 +1,29 @@ +// +// SignUpViewController.swift +// GetHip +// +// Created by Okechi on 1/3/16. +// Copyright (c) 2016 Kroleo. All rights reserved. +// + +import UIKit + +class SignUpViewController: PFSignUpViewController{ + var backgroundImage: UIImageView!; + + override func viewDidLoad() { + super.viewDidLoad() + + //set custom logo background image + backgroundImage = UIImageView(image: UIImage(named: "1x")) + backgroundImage.contentMode = UIViewContentMode.ScaleAspectFill + signUpView!.insertSubview(backgroundImage, atIndex: 0) + //self.signUpController?.signUpView!.insertSubview(backgroundImage, atIndex: 1) + } + + override func viewDidLayoutSubviews() { + super.viewDidLayoutSubviews() + //stretch background image to fill screen + backgroundImage.frame = CGRectMake(0, 0, signUpView!.frame.width, signUpView!.frame.height) + } +} \ No newline at end of file diff --git a/GetHip/SongCellWrapper.swift b/GetHip/SongCellWrapper.swift new file mode 100644 index 0000000..8e5d128 --- /dev/null +++ b/GetHip/SongCellWrapper.swift @@ -0,0 +1,70 @@ +// +// SongCell.swift +// GetHip +// +// Created by Okechi on 1/24/16. +// Copyright (c) 2016 Kroleo. All rights reserved. +// + +import UIKit + +class SongCell: UITableViewCell { + + override func awakeFromNib() { + super.awakeFromNib() + // Initialization code + } + + override func setSelected(selected: Bool, animated: Bool) { + super.setSelected(selected, animated: animated) + + // Configure the view for the selected state + } + +} + +class AlbumCell: UITableViewCell { + + override func awakeFromNib() { + super.awakeFromNib() + // Initialization code + } + + override func setSelected(selected: Bool, animated: Bool) { + super.setSelected(selected, animated: animated) + + // Configure the view for the selected state + } + +} + +class ArtistCell: UITableViewCell { + + override func awakeFromNib() { + super.awakeFromNib() + // Initialization code + } + + override func setSelected(selected: Bool, animated: Bool) { + super.setSelected(selected, animated: animated) + + // Configure the view for the selected state + } + +} + +class FilterCell: UITableViewCell { + @IBOutlet var filterBtn: UIButton! + + override func awakeFromNib() { + super.awakeFromNib() + // Initialization code + } + + override func setSelected(selected: Bool, animated: Bool) { + super.setSelected(selected, animated: animated) + + // Configure the view for the selected state + } + +} \ No newline at end of file diff --git a/GetHip/SongSelectionViewController.swift b/GetHip/SongSelectionViewController.swift new file mode 100644 index 0000000..cba6355 --- /dev/null +++ b/GetHip/SongSelectionViewController.swift @@ -0,0 +1,226 @@ +// +// SongSelectionViewController.swift +// GetHip +// +// Created by Okechi on 1/24/16. +// Copyright (c) 2016 Kroleo. All rights reserved. +// + +import UIKit +import MediaPlayer + +class SongSelectionViewController: UIViewController, UITableViewDelegate, UITableViewDataSource { + + + + @IBOutlet weak var table: UITableView! + + + @IBAction func selectFilter(sender: AnyObject) { + let filterMenu = UIAlertController(title: nil, message:nil, preferredStyle: .ActionSheet) + let cell: FilterCell = self.table.cellForRowAtIndexPath(NSIndexPath(forRow: 0, inSection: 0)) as! FilterCell + + let cancelAction = UIAlertAction(title: "Cancel", style: .Cancel, handler: { + (alert: UIAlertAction!) -> Void in + }) + + let songFilterAction = UIAlertAction(title: "Songs", style: .Default, handler: { + (alert: UIAlertAction!) -> Void in + self.filter = "Songs" + cell.filterBtn.titleLabel?.text = self.filter + self.table.reloadData() + }) + + let albumFilterAction = UIAlertAction(title: "Albums", style: .Default, handler: { + (alert: UIAlertAction!) -> Void in + self.filter = "Albums" + cell.filterBtn.titleLabel?.text = self.filter + self.table.reloadData() + }) + + let artistFilterAction = UIAlertAction(title: "Artists", style: .Default, handler: { + (alert: UIAlertAction!) -> Void in + self.filter = "Artists" + cell.filterBtn.titleLabel?.text = self.filter + self.table.reloadData() + }) + + switch self.filter { + + case "Artists": + filterMenu.addAction(songFilterAction) + filterMenu.addAction(albumFilterAction) + case "Albums": + filterMenu.addAction(songFilterAction) + filterMenu.addAction(artistFilterAction) + break + default: + filterMenu.addAction(artistFilterAction) + filterMenu.addAction(albumFilterAction) + break + } + filterMenu.addAction(cancelAction) + self.presentViewController(filterMenu, animated: true, completion: nil) + } + + private var filter: String! = "Songs" + + @IBAction func cancelInvites(sender: UIBarButtonItem) { + + self.parentViewController?.dismissViewControllerAnimated(true, completion: nil) + } + + override func viewDidLoad() { + super.viewDidLoad() + self.table.delegate = self + self.table.dataSource = self + + // Do any additional setup after loading the view. + } + + override func didReceiveMemoryWarning() { + super.didReceiveMemoryWarning() + // Dispose of any resources that can be recreated. + } + + func numberOfSectionsInTableView(tableView: UITableView) -> Int { + // #warning Potentially incomplete method implementation. + // Return the number of sections. + return 1 + } + + func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { + // #warning Incomplete method implementation. + // Return the number of rows in the section. + + + switch self.filter{ + + //return number of rows for albums + case "albums": + var albumsQuery = MPMediaQuery.albumsQuery() + var albums = albumsQuery.collections + return albums.count + 1 + + //return number of rows for artists + case "artists": + var artistsQuery = MPMediaQuery.artistsQuery() + var artists = artistsQuery.items + return artists.count + 1 + + //return number of rows for song + default: + var songsQuery = MPMediaQuery.songsQuery() + var songs = songsQuery.items + return songs.count + 1 + } + + } + + func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { + } + + func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { + + if( indexPath.row == 0){ + let cell = self.table.dequeueReusableCellWithIdentifier("FilterCell", forIndexPath: indexPath) as? FilterCell + + return cell! + + } + else{ + switch self.filter{ + + //return albums cell + case "albums": + let cell = self.table.dequeueReusableCellWithIdentifier("AlbumCell", forIndexPath: indexPath) as? AlbumCell + + + var albumsQuery = MPMediaQuery.albumsQuery() + var albums = albumsQuery.items + var rowItem: MPMediaItem = albums[indexPath.row - 1] as! MPMediaItem + + cell?.textLabel?.text = rowItem.valueForProperty(MPMediaItemPropertyAlbumTitle) as? String! + cell?.detailTextLabel?.text = rowItem.valueForProperty(MPMediaItemPropertyAlbumArtist) as? String! + + var artwork: MPMediaItemArtwork = rowItem.valueForProperty(MPMediaItemPropertyArtwork) as! MPMediaItemArtwork + + var artworkImage = artwork.imageWithSize(CGSize(width: 44,height: 44)) + + if(artworkImage != nil){ + cell?.imageView?.image = artworkImage + } + else{ + cell?.imageView?.backgroundColor = UIColor.grayColor() + + } + + return cell! + + //return artists cell + case "artists": + let cell = self.table.dequeueReusableCellWithIdentifier("ArtistCell", forIndexPath: indexPath) as? ArtistCell + + + var artistsQuery = MPMediaQuery.artistsQuery() + var artists = artistsQuery.items + var rowItem: MPMediaItem = artists[indexPath.row - 1] as! MPMediaItem + + cell?.textLabel?.text = rowItem.valueForProperty(MPMediaItemPropertyArtist) as? String! + + var artwork: MPMediaItemArtwork = rowItem.valueForProperty(MPMediaItemPropertyArtwork) as! MPMediaItemArtwork + + var artworkImage = artwork.imageWithSize(CGSize(width: 44,height: 44)) + + if(artworkImage != nil){ + cell?.imageView?.image = artworkImage + } + else{ + cell?.imageView?.backgroundColor = UIColor.grayColor() + + } + + return cell! + + //return song cell + default: + let cell = self.table.dequeueReusableCellWithIdentifier("SongCell", forIndexPath: indexPath) as? SongCell + + + var songsQuery = MPMediaQuery.songsQuery() + var songs = songsQuery.items + var rowItem: MPMediaItem = songs[indexPath.row - 1] as! MPMediaItem + + cell?.textLabel?.text = rowItem.valueForProperty(MPMediaItemPropertyTitle) as? String! + cell?.detailTextLabel?.text = rowItem.valueForProperty(MPMediaItemPropertyArtist) as? String! + + var artwork: MPMediaItemArtwork = rowItem.valueForProperty(MPMediaItemPropertyArtwork) as! MPMediaItemArtwork + + var artworkImage = artwork.imageWithSize(CGSize(width: 44,height: 44)) + + if(artworkImage != nil){ + cell?.imageView?.image = artworkImage + } + else{ + cell?.imageView?.backgroundColor = UIColor.grayColor() + + } + + return cell! + } + } + + + } + + /* + // MARK: - Navigation + + // In a storyboard-based application, you will often want to do a little preparation before navigation + override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { + // Get the new view controller using segue.destinationViewController. + // Pass the selected object to the new view controller. + } + */ + +} diff --git a/GetHip/TestInviteFriendsCell.swift b/GetHip/TestInviteFriendsCell.swift new file mode 100644 index 0000000..60b833d --- /dev/null +++ b/GetHip/TestInviteFriendsCell.swift @@ -0,0 +1,36 @@ +// +// TestInviteFriendsCell.swift +// GetHip +// +// Created by Okechi on 1/23/16. +// Copyright (c) 2016 Kroleo. All rights reserved. +// + +import Foundation +import UIKit + +class TestInviteFriendsCell: UITableViewCell { + + @IBOutlet var friendName: UILabel! + + @IBOutlet var proImage: UIImageView! + + @IBOutlet var rdioButton: UIButton! + + override func awakeFromNib() { + super.awakeFromNib() + } + + override func setSelected(selected: Bool, animated: Bool) { + super.setSelected(selected, animated: animated) + } + + /* + // Only override drawRect: if you perform custom drawing. + // An empty implementation adversely affects performance during animation. + override func drawRect(rect: CGRect) { + // Drawing code + } + */ + +} \ No newline at end of file diff --git a/GetHip/TestInviteFriendsController.swift b/GetHip/TestInviteFriendsController.swift new file mode 100644 index 0000000..1d1e9d3 --- /dev/null +++ b/GetHip/TestInviteFriendsController.swift @@ -0,0 +1,187 @@ +// +// TestInviteFriendsController.swift +// GetHip +// +// Created by Okechi on 1/23/16. +// Copyright (c) 2016 Kroleo. All rights reserved. +// + +import UIKit +import MultipeerConnectivity + +class TestInviteFriendsController: UIViewController, UITableViewDelegate, UITableViewDataSource { + var usr: [UserParseData] = [] + var frnds: [FriendData] = [] + var isFriendSelected: [Bool] = [] + var partyData: PartyServiceManager! = nil + + @IBOutlet weak var table: UITableView! + + @IBAction func cancelInvites(sender: UIBarButtonItem) { + self.partyData.stopBrowsing() + self.partyData.serviceBrowser = nil + println("Browser service deinitialized and browser deinitialized") + self.parentViewController?.dismissViewControllerAnimated(true, completion: nil) + } + + @IBAction func sendInvites(sender: UIButton) { + var numSelected = 0 + + for booli in self.isFriendSelected { + if booli == true { + numSelected++ + } + + } + + if(numSelected > 0){ + self.performSegueWithIdentifier("selectSongSegue", sender: sender) + } + else{ + println("Select a friend") + } + } + + + func setData(usrDat: [UserParseData], frndData: [FriendData], party: PartyServiceManager){ + self.usr = usrDat + self.frnds = frndData + self.partyData = party + + for i in 0.. Int { + // #warning Potentially incomplete method implementation. + // Return the number of sections. + return 1 + } + + func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { + // #warning Incomplete method implementation. + // Return the number of rows in the section. + return self.frnds.count + } + + + func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { + let friend = self.frnds[indexPath.row] + let cell = self.table.dequeueReusableCellWithIdentifier("TestInviteCell", forIndexPath: indexPath) as? TestInviteFriendsCell + + //sets display name of friend (print for debugging purposes) + cell!.friendName.text = friend.displayName + println(friend.displayName) + + //sets profile image of current cell + //checks if friend user has a profile image or not + if friend.profileImg == nil { + cell!.proImage.backgroundColor = UIColor.grayColor() + } + else{ + + } + + //rounds uiimage and configures UIImageView + //cell!.proImage.layer.borderWidth = 3.0 + //cell!.proImage.clipsToBounds = true + cell!.proImage.layer.cornerRadius = cell!.proImage.frame.size.width/2 + cell!.alpha = 0.5 + //cell!.proImage.layer.borderColor = UIColor.whiteColor().CGColor + //cell!.proImage.layer.masksToBounds = true + cell!.rdioButton.layer.cornerRadius = cell!.rdioButton.frame.size.width/2 + + return cell! + } + + func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { + let cell = table.cellForRowAtIndexPath(indexPath) as? TestInviteFriendsCell + + if self.isFriendSelected[indexPath.row] == false{ + cell!.rdioButton.setBackgroundImage(UIImage(named: "Blue Check.png"), forState: UIControlState.Normal) + self.isFriendSelected[indexPath.row] = true + } + else{ + cell!.rdioButton.setBackgroundImage(UIImage(named: "Tap Circle.png"), forState: UIControlState.Normal) + self.isFriendSelected[indexPath.row] = false + } + + + } + + override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { + var invited: [FriendData] = [] + for var i = 0; i < self.isFriendSelected.count; i++ { + if (self.isFriendSelected[i] == true) { + invited.append(self.frnds[i]) + } + } + + println(invited.count) + } + + + /* + // Override to support conditional editing of the table view. + override func tableView(tableView: UITableView, canEditRowAtIndexPath indexPath: NSIndexPath) -> Bool { + // Return NO if you do not want the specified item to be editable. + return true + } + */ + + /* + // Override to support editing the table view. + override func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) { + if editingStyle == .Delete { + // Delete the row from the data source + tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: .Fade) + } else if editingStyle == .Insert { + // Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view + } + } + */ + + /* + // Override to support rearranging the table view. + override func tableView(tableView: UITableView, moveRowAtIndexPath fromIndexPath: NSIndexPath, toIndexPath: NSIndexPath) { + + } + */ + + /* + // Override to support conditional rearranging of the table view. + override func tableView(tableView: UITableView, canMoveRowAtIndexPath indexPath: NSIndexPath) -> Bool { + // Return NO if you do not want the item to be re-orderable. + return true + } + */ + + /* + // MARK: - Navigation + + // In a storyboard-based application, you will often want to do a little preparation before navigation + override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { + // Get the new view controller using [segue destinationViewController]. + // Pass the selected object to the new view controller. + } + */ +} diff --git a/GetHip/UserParseData.swift b/GetHip/UserParseData.swift new file mode 100644 index 0000000..68b5092 --- /dev/null +++ b/GetHip/UserParseData.swift @@ -0,0 +1,27 @@ +// +// UserParseData.swift +// GetHip +// +// Created by Okechi on 1/22/16. +// Copyright (c) 2016 Kroleo. All rights reserved. +// + +import Foundation + +import Foundation + +class UserParseData { + var username: String! + var displayName: String! + var profileImg: UIImageView! + var email: String! + + + + init(usrName: String, dispName: String, email: String){ + self.username = usrName + self.profileImg = nil //proImage + self.displayName = dispName + self.email = email + } +} \ No newline at end of file diff --git a/GetHip/UserParseDataSource.swift b/GetHip/UserParseDataSource.swift new file mode 100644 index 0000000..9ff468c --- /dev/null +++ b/GetHip/UserParseDataSource.swift @@ -0,0 +1,64 @@ +// +// UserParseDataSource.swift +// GetHip +// +// Created by Okechi on 1/22/16. +// Copyright (c) 2016 Kroleo. All rights reserved. +// + +import Foundation + +class UserParseDataSource{ + var user: [UserParseData] + + init() { + user = [] + var query = PFUser.query() + var currentUser = PFUser.currentUser() + + query!.whereKey("username", equalTo: (currentUser?.username as String!)) + + query!.findObjectsInBackgroundWithBlock { + (objects, error) -> Void in + //print(error) + if error == nil { + for object in objects! { + var usr: UserParseData + + var usrName: String! + var profileImage: UIImageView + var displayName: String + var email: String + + usrName = object.objectForKey("username")! as! String + displayName = object.objectForKey("displayName") as! String + + if displayName.isEmpty { + displayName = usrName + } + + email = object.objectForKey("email")! as! String + + + usr = UserParseData(usrName: usrName, dispName: displayName, email: email) + self.user.append(usr) + //print(userName) + + + } + + } + + NSNotificationCenter.defaultCenter().postNotificationName("refreshSettingsView", object: nil) + + } + + + } + + func getUser() -> [UserParseData]{ + + return self.user + } +} + diff --git a/GetHip/ViewController.swift b/GetHip/ViewController.swift new file mode 100644 index 0000000..c97d4b1 --- /dev/null +++ b/GetHip/ViewController.swift @@ -0,0 +1,69 @@ +// +// ViewController.swift +// GetHip +// +// Created by Okechi on 1/1/16. +// Copyright (c) 2016 Kroleo. All rights reserved. +// + +import UIKit + +class ViewController: UIViewController, PFLogInViewControllerDelegate, PFSignUpViewControllerDelegate{ + + override func viewDidLoad() { + super.viewDidLoad() + // Do any additional setup after loading the view, typically from a nib + + } + + override func viewDidAppear(animated: Bool) { + super.viewDidAppear(animated) + + + if (PFUser.currentUser() == nil){ + let loginViewController = LoginViewController() + loginViewController.delegate = self + loginViewController.fields = .UsernameAndPassword | .LogInButton | .PasswordForgotten | .SignUpButton //add fb button later, need to figure out error + + //loginViewController.signUpController?.delegate = self + //*no longer needed since I am assigning custom signupController that inherits the signupController + + //hides parse logo + loginViewController.logInView?.logo?.hidden = true + loginViewController.signUpController?.signUpView?.logo?.hidden = true + + self.presentViewController(loginViewController, animated: false, completion: nil) + } + else{ + presentLoggedInAlert() + } + + } + + + override func didReceiveMemoryWarning() { + super.didReceiveMemoryWarning() + // Dispose of any resources that can be recreated. + } + + func logInViewController(logInController: PFLogInViewController, didLogInUser user: PFUser) { + self.dismissViewControllerAnimated(true, completion: nil) + presentLoggedInAlert() + } + + func signUpViewController(signUpController: PFSignUpViewController, didSignUpUser user: PFUser) { + self.dismissViewControllerAnimated(true, completion: nil) + presentLoggedInAlert() + } + + func presentLoggedInAlert() { + + + self.performSegueWithIdentifier("HomeScreenSegue", sender: nil) + + } + + + +} + diff --git a/GetHipTests/GetHipTests.swift b/GetHipTests/GetHipTests.swift new file mode 100644 index 0000000..3ce498e --- /dev/null +++ b/GetHipTests/GetHipTests.swift @@ -0,0 +1,36 @@ +// +// GetHipTests.swift +// GetHipTests +// +// Created by Okechi on 1/1/16. +// Copyright (c) 2016 Kroleo. All rights reserved. +// + +import UIKit +import XCTest + +class GetHipTests: XCTestCase { + + override func setUp() { + super.setUp() + // Put setup code here. This method is called before the invocation of each test method in the class. + } + + override func tearDown() { + // Put teardown code here. This method is called after the invocation of each test method in the class. + super.tearDown() + } + + func testExample() { + // This is an example of a functional test case. + XCTAssert(true, "Pass") + } + + func testPerformanceExample() { + // This is an example of a performance test case. + self.measureBlock() { + // Put the code you want to measure the time of here. + } + } + +} diff --git a/GetHipTests/Info.plist b/GetHipTests/Info.plist new file mode 100644 index 0000000..291359a --- /dev/null +++ b/GetHipTests/Info.plist @@ -0,0 +1,24 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + oonyeje.Kroleo.$(PRODUCT_NAME:rfc1034identifier) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + BNDL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1 + +