From 2c3290a4a310d087f85bb7c91052fbed5427ab46 Mon Sep 17 00:00:00 2001 From: "dat.nguyen" Date: Sun, 12 Feb 2017 23:25:45 +0700 Subject: [PATCH] All Done --- iOS.MediaDummy.xcodeproj/project.pbxproj | 59 +++++- .../AppIcon.appiconset/Contents.json | 25 +++ iOS.MediaDummy/Assets.xcassets/Contents.json | 6 + .../partybanner.imageset/Contents.json | 21 ++ .../partybanner.imageset/partybanner.jpg | Bin 0 -> 21542 bytes .../Base.lproj/LaunchScreen.storyboard | 12 +- iOS.MediaDummy/Base.lproj/Main.storyboard | 180 +++++++++++++++++- iOS.MediaDummy/Info.plist | 5 + iOS.MediaDummy/PartyCell.swift | 51 +++++ iOS.MediaDummy/PartyRock.swift | 39 ++++ iOS.MediaDummy/ViewController.swift | 25 --- 11 files changed, 383 insertions(+), 40 deletions(-) create mode 100644 iOS.MediaDummy/Assets.xcassets/Contents.json create mode 100644 iOS.MediaDummy/Assets.xcassets/partybanner.imageset/Contents.json create mode 100644 iOS.MediaDummy/Assets.xcassets/partybanner.imageset/partybanner.jpg create mode 100644 iOS.MediaDummy/PartyCell.swift create mode 100644 iOS.MediaDummy/PartyRock.swift delete mode 100644 iOS.MediaDummy/ViewController.swift diff --git a/iOS.MediaDummy.xcodeproj/project.pbxproj b/iOS.MediaDummy.xcodeproj/project.pbxproj index fb39836..e84eb66 100644 --- a/iOS.MediaDummy.xcodeproj/project.pbxproj +++ b/iOS.MediaDummy.xcodeproj/project.pbxproj @@ -7,8 +7,11 @@ objects = { /* Begin PBXBuildFile section */ + AA26EDED1E509FAA00743918 /* VideoVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = AA26EDEC1E509FAA00743918 /* VideoVC.swift */; }; + AA26EDEF1E50AA8500743918 /* PartyCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = AA26EDEE1E50AA8500743918 /* PartyCell.swift */; }; + AA26EDF11E50ABBF00743918 /* PartyRock.swift in Sources */ = {isa = PBXBuildFile; fileRef = AA26EDF01E50ABBF00743918 /* PartyRock.swift */; }; AA5D11B01E501A6B003984E6 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = AA5D11AF1E501A6B003984E6 /* AppDelegate.swift */; }; - AA5D11B21E501A6B003984E6 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = AA5D11B11E501A6B003984E6 /* ViewController.swift */; }; + AA5D11B21E501A6B003984E6 /* MainVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = AA5D11B11E501A6B003984E6 /* MainVC.swift */; }; AA5D11B51E501A6B003984E6 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = AA5D11B31E501A6B003984E6 /* Main.storyboard */; }; AA5D11B71E501A6B003984E6 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = AA5D11B61E501A6B003984E6 /* Assets.xcassets */; }; AA5D11BA1E501A6B003984E6 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = AA5D11B81E501A6B003984E6 /* LaunchScreen.storyboard */; }; @@ -34,9 +37,12 @@ /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ + AA26EDEC1E509FAA00743918 /* VideoVC.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = VideoVC.swift; sourceTree = ""; }; + AA26EDEE1E50AA8500743918 /* PartyCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PartyCell.swift; sourceTree = ""; }; + AA26EDF01E50ABBF00743918 /* PartyRock.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PartyRock.swift; sourceTree = ""; }; AA5D11AC1E501A6B003984E6 /* iOS.MediaDummy.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = iOS.MediaDummy.app; sourceTree = BUILT_PRODUCTS_DIR; }; AA5D11AF1E501A6B003984E6 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; - AA5D11B11E501A6B003984E6 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; + AA5D11B11E501A6B003984E6 /* MainVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainVC.swift; sourceTree = ""; }; AA5D11B41E501A6B003984E6 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; AA5D11B61E501A6B003984E6 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; AA5D11B91E501A6B003984E6 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; @@ -97,12 +103,15 @@ AA5D11AE1E501A6B003984E6 /* iOS.MediaDummy */ = { isa = PBXGroup; children = ( + AA5D11DD1E501AFA003984E6 /* Model */, + AA5D11DE1E501B05003984E6 /* View */, + AA5D11DF1E501B09003984E6 /* Controller */, + AA5D11E01E501B2E003984E6 /* Resources */, AA5D11AF1E501A6B003984E6 /* AppDelegate.swift */, - AA5D11B11E501A6B003984E6 /* ViewController.swift */, - AA5D11B31E501A6B003984E6 /* Main.storyboard */, AA5D11B61E501A6B003984E6 /* Assets.xcassets */, - AA5D11B81E501A6B003984E6 /* LaunchScreen.storyboard */, AA5D11BB1E501A6B003984E6 /* Info.plist */, + AA5D11B81E501A6B003984E6 /* LaunchScreen.storyboard */, + AA5D11B31E501A6B003984E6 /* Main.storyboard */, ); path = iOS.MediaDummy; sourceTree = ""; @@ -125,6 +134,38 @@ path = iOS.MediaDummyUITests; sourceTree = ""; }; + AA5D11DD1E501AFA003984E6 /* Model */ = { + isa = PBXGroup; + children = ( + AA26EDF01E50ABBF00743918 /* PartyRock.swift */, + ); + name = Model; + sourceTree = ""; + }; + AA5D11DE1E501B05003984E6 /* View */ = { + isa = PBXGroup; + children = ( + AA26EDEE1E50AA8500743918 /* PartyCell.swift */, + ); + name = View; + sourceTree = ""; + }; + AA5D11DF1E501B09003984E6 /* Controller */ = { + isa = PBXGroup; + children = ( + AA5D11B11E501A6B003984E6 /* MainVC.swift */, + AA26EDEC1E509FAA00743918 /* VideoVC.swift */, + ); + name = Controller; + sourceTree = ""; + }; + AA5D11E01E501B2E003984E6 /* Resources */ = { + isa = PBXGroup; + children = ( + ); + name = Resources; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -262,7 +303,10 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - AA5D11B21E501A6B003984E6 /* ViewController.swift in Sources */, + AA26EDF11E50ABBF00743918 /* PartyRock.swift in Sources */, + AA26EDED1E509FAA00743918 /* VideoVC.swift in Sources */, + AA5D11B21E501A6B003984E6 /* MainVC.swift in Sources */, + AA26EDEF1E50AA8500743918 /* PartyCell.swift in Sources */, AA5D11B01E501A6B003984E6 /* AppDelegate.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -516,6 +560,7 @@ AA5D11D61E501A6B003984E6 /* Release */, ); defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; }; AA5D11D71E501A6B003984E6 /* Build configuration list for PBXNativeTarget "iOS.MediaDummyTests" */ = { isa = XCConfigurationList; @@ -524,6 +569,7 @@ AA5D11D91E501A6B003984E6 /* Release */, ); defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; }; AA5D11DA1E501A6B003984E6 /* Build configuration list for PBXNativeTarget "iOS.MediaDummyUITests" */ = { isa = XCConfigurationList; @@ -532,6 +578,7 @@ AA5D11DC1E501A6B003984E6 /* Release */, ); defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; }; /* End XCConfigurationList section */ }; diff --git a/iOS.MediaDummy/Assets.xcassets/AppIcon.appiconset/Contents.json b/iOS.MediaDummy/Assets.xcassets/AppIcon.appiconset/Contents.json index 36d2c80..1d060ed 100644 --- a/iOS.MediaDummy/Assets.xcassets/AppIcon.appiconset/Contents.json +++ b/iOS.MediaDummy/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -1,5 +1,15 @@ { "images" : [ + { + "idiom" : "iphone", + "size" : "20x20", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "20x20", + "scale" : "3x" + }, { "idiom" : "iphone", "size" : "29x29", @@ -30,6 +40,16 @@ "size" : "60x60", "scale" : "3x" }, + { + "idiom" : "ipad", + "size" : "20x20", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "20x20", + "scale" : "2x" + }, { "idiom" : "ipad", "size" : "29x29", @@ -59,6 +79,11 @@ "idiom" : "ipad", "size" : "76x76", "scale" : "2x" + }, + { + "idiom" : "ipad", + "size" : "83.5x83.5", + "scale" : "2x" } ], "info" : { diff --git a/iOS.MediaDummy/Assets.xcassets/Contents.json b/iOS.MediaDummy/Assets.xcassets/Contents.json new file mode 100644 index 0000000..da4a164 --- /dev/null +++ b/iOS.MediaDummy/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/iOS.MediaDummy/Assets.xcassets/partybanner.imageset/Contents.json b/iOS.MediaDummy/Assets.xcassets/partybanner.imageset/Contents.json new file mode 100644 index 0000000..0fd360d --- /dev/null +++ b/iOS.MediaDummy/Assets.xcassets/partybanner.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "partybanner.jpg", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/iOS.MediaDummy/Assets.xcassets/partybanner.imageset/partybanner.jpg b/iOS.MediaDummy/Assets.xcassets/partybanner.imageset/partybanner.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e547c9f36c0be01b3807ed0c670a97f93d4b8fb3 GIT binary patch literal 21542 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 P=(JWwf-nC7!oUC701c&G literal 0 HcmV?d00001 diff --git a/iOS.MediaDummy/Base.lproj/LaunchScreen.storyboard b/iOS.MediaDummy/Base.lproj/LaunchScreen.storyboard index fdf3f97..4040406 100644 --- a/iOS.MediaDummy/Base.lproj/LaunchScreen.storyboard +++ b/iOS.MediaDummy/Base.lproj/LaunchScreen.storyboard @@ -1,7 +1,11 @@ - - + + + + + - + + @@ -21,7 +25,7 @@ - + diff --git a/iOS.MediaDummy/Base.lproj/Main.storyboard b/iOS.MediaDummy/Base.lproj/Main.storyboard index 273375f..8de7e84 100644 --- a/iOS.MediaDummy/Base.lproj/Main.storyboard +++ b/iOS.MediaDummy/Base.lproj/Main.storyboard @@ -1,14 +1,19 @@ - - + + + + + - + + + - + - + @@ -16,11 +21,176 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iOS.MediaDummy/Info.plist b/iOS.MediaDummy/Info.plist index d052473..483269c 100644 --- a/iOS.MediaDummy/Info.plist +++ b/iOS.MediaDummy/Info.plist @@ -41,5 +41,10 @@ UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight + NSAppTransportSecurity + + NSAllowsArbitraryLoads + + diff --git a/iOS.MediaDummy/PartyCell.swift b/iOS.MediaDummy/PartyCell.swift new file mode 100644 index 0000000..16a2669 --- /dev/null +++ b/iOS.MediaDummy/PartyCell.swift @@ -0,0 +1,51 @@ +// +// PartyCell.swift +// iOS.MediaDummy +// +// Created by Nguyễn Xuân Đạt on 2/12/17. +// Copyright © 2017 Nguyễn Xuân Đạt. All rights reserved. +// + +import UIKit + +class PartyCell: UITableViewCell { + + @IBOutlet weak var lblCellTitle: UILabel! + @IBOutlet weak var imgCellPreview: UIImageView! + + + 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 + } + + func downloadImage(partyRock: PartyRock) { + let url = URL(string: partyRock.videoImage)! + DispatchQueue.global().async { + do { + let data = try Data(contentsOf: url) + + + DispatchQueue.global().sync { + self.imgCellPreview.image = UIImage(data: data) + } + } catch { + //handle the error + } + } + + + } + + func updateUI(partyRock: PartyRock) { + lblCellTitle.text = partyRock.videoTitle + downloadImage(partyRock: partyRock) + } + +} diff --git a/iOS.MediaDummy/PartyRock.swift b/iOS.MediaDummy/PartyRock.swift new file mode 100644 index 0000000..f42f812 --- /dev/null +++ b/iOS.MediaDummy/PartyRock.swift @@ -0,0 +1,39 @@ +// +// File.swift +// iOS.MediaDummy +// +// Created by Nguyễn Xuân Đạt on 2/12/17. +// Copyright © 2017 Nguyễn Xuân Đạt. All rights reserved. +// + +import Foundation + +class PartyRock { + private var _videoTitle: String! + private var _videoImage: String! + private var _videoURL: String! + + var videoTitle: String { + get { + return _videoTitle + } + } + + var videoImage: String { + get { + return _videoImage + } + } + + var videoURL: String { + get { + return _videoURL + } + } + + init(videoImage: String, videoURL: String, videoTitle: String) { + _videoTitle = videoTitle + _videoImage = videoImage + _videoURL = videoURL + } +} diff --git a/iOS.MediaDummy/ViewController.swift b/iOS.MediaDummy/ViewController.swift deleted file mode 100644 index 067b2a8..0000000 --- a/iOS.MediaDummy/ViewController.swift +++ /dev/null @@ -1,25 +0,0 @@ -// -// ViewController.swift -// iOS.MediaDummy -// -// Created by Nguyễn Xuân Đạt on 2/12/17. -// Copyright © 2017 Nguyễn Xuân Đạt. All rights reserved. -// - -import UIKit - -class ViewController: UIViewController { - - override func viewDidLoad() { - super.viewDidLoad() - // Do any additional setup after loading the view, typically from a nib. - } - - override func didReceiveMemoryWarning() { - super.didReceiveMemoryWarning() - // Dispose of any resources that can be recreated. - } - - -} -