From 114483d925e104f69b6c3a87e11122c87c742206 Mon Sep 17 00:00:00 2001
From: Antonio Casero Palmero
Date: Sun, 25 Jan 2015 18:12:19 +0100
Subject: [PATCH] [Update] Only screenshots&gif
---
ACPDownload.podspec | 17 -
ACPDownload.xcodeproj/project.pbxproj | 409 ------------------
ACPDownload/ACPDownloadConstants.h | 24 -
ACPDownload/ACPDownloadConstants.m | 16 -
ACPDownload/ACPDownloadView.h | 80 ----
ACPDownload/ACPDownloadView.m | 181 --------
ACPDownload/ACPIndeterminateGoogleLayer.h | 14 -
ACPDownload/ACPIndeterminateGoogleLayer.m | 128 ------
ACPDownload/ACPIndeterminateLayer.h | 16 -
ACPDownload/ACPIndeterminateLayer.m | 90 ----
ACPDownload/ACPLayerProtocol.h | 81 ----
ACPDownload/ACPProgressLayer.h | 14 -
ACPDownload/ACPProgressLayer.m | 101 -----
ACPDownload/ACPStaticImages.h | 16 -
ACPDownload/ACPStaticImages.m | 160 -------
ACPDownload/ACPStaticImagesAlternative.h | 14 -
ACPDownload/ACPStaticImagesAlternative.m | 140 ------
ACPDownload/ACPStaticImagesProtocol.h | 66 ---
Example/AppDelegate.h | 17 -
Example/AppDelegate.m | 45 --
Example/Base.lproj/LaunchScreen.xib | 41 --
Example/Base.lproj/Main.storyboard | 133 ------
Example/ExampleCell.h | 18 -
Example/ExampleCell.m | 13 -
.../AppIcon.appiconset/Contents.json | 68 ---
Example/Info.plist | 47 --
Example/ViewController.h | 15 -
Example/ViewController.m | 118 -----
Example/main.m | 16 -
LICENSE | 21 -
screenshots/acpdownload-gif.gif | Bin 0 -> 186503 bytes
screenshots/acpdownload-screenshot-1.png | Bin 0 -> 34178 bytes
screenshots/acpdownload-screenshot-2.png | Bin 0 -> 15602 bytes
33 files changed, 2119 deletions(-)
delete mode 100644 ACPDownload.podspec
delete mode 100644 ACPDownload.xcodeproj/project.pbxproj
delete mode 100644 ACPDownload/ACPDownloadConstants.h
delete mode 100644 ACPDownload/ACPDownloadConstants.m
delete mode 100644 ACPDownload/ACPDownloadView.h
delete mode 100644 ACPDownload/ACPDownloadView.m
delete mode 100644 ACPDownload/ACPIndeterminateGoogleLayer.h
delete mode 100644 ACPDownload/ACPIndeterminateGoogleLayer.m
delete mode 100644 ACPDownload/ACPIndeterminateLayer.h
delete mode 100644 ACPDownload/ACPIndeterminateLayer.m
delete mode 100644 ACPDownload/ACPLayerProtocol.h
delete mode 100644 ACPDownload/ACPProgressLayer.h
delete mode 100644 ACPDownload/ACPProgressLayer.m
delete mode 100644 ACPDownload/ACPStaticImages.h
delete mode 100644 ACPDownload/ACPStaticImages.m
delete mode 100644 ACPDownload/ACPStaticImagesAlternative.h
delete mode 100644 ACPDownload/ACPStaticImagesAlternative.m
delete mode 100644 ACPDownload/ACPStaticImagesProtocol.h
delete mode 100644 Example/AppDelegate.h
delete mode 100644 Example/AppDelegate.m
delete mode 100644 Example/Base.lproj/LaunchScreen.xib
delete mode 100644 Example/Base.lproj/Main.storyboard
delete mode 100644 Example/ExampleCell.h
delete mode 100644 Example/ExampleCell.m
delete mode 100644 Example/Images.xcassets/AppIcon.appiconset/Contents.json
delete mode 100644 Example/Info.plist
delete mode 100644 Example/ViewController.h
delete mode 100644 Example/ViewController.m
delete mode 100644 Example/main.m
delete mode 100644 LICENSE
create mode 100644 screenshots/acpdownload-gif.gif
create mode 100644 screenshots/acpdownload-screenshot-1.png
create mode 100644 screenshots/acpdownload-screenshot-2.png
diff --git a/ACPDownload.podspec b/ACPDownload.podspec
deleted file mode 100644
index 528abee..0000000
--- a/ACPDownload.podspec
+++ /dev/null
@@ -1,17 +0,0 @@
-Pod::Spec.new do |s|
- s.name = 'ACPDownload'
- s.version = '1.0.0'
- s.license = { :type => 'MIT', :file => 'LICENSE' }
- s.homepage = 'https://github.com/antoniocasero/ACPDownload'
- s.authors = {'Antonio Casero' => 'anto.casero@gmail.com'}
- s.summary = 'ACPDownload provides a download indicator with 4 different states, valid for any view size. Easy to customize and configure.'
-
-# Source Info
- s.platform = :ios, '7.1'
- s.source = { :git => "https://github.com/antoniocasero/ACPDownload.git", :tag => s.version.to_s }
- s.source_files = 'ACPDownload'
- s.requires_arc = true
-
-# Pod Dependencies
-
-end
\ No newline at end of file
diff --git a/ACPDownload.xcodeproj/project.pbxproj b/ACPDownload.xcodeproj/project.pbxproj
deleted file mode 100644
index 7d534dd..0000000
--- a/ACPDownload.xcodeproj/project.pbxproj
+++ /dev/null
@@ -1,409 +0,0 @@
-// !$*UTF8*$!
-{
- archiveVersion = 1;
- classes = {
- };
- objectVersion = 46;
- objects = {
-
-/* Begin PBXBuildFile section */
- 458EE6EA1A6C420200FDBE47 /* ExampleCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 458EE6E91A6C420200FDBE47 /* ExampleCell.m */; };
- 45BDEDAD1A6DA509004CC7B2 /* README.md in Sources */ = {isa = PBXBuildFile; fileRef = 45BDEDAC1A6DA509004CC7B2 /* README.md */; };
- 45CBADC31A619C280094E920 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 45CBADC21A619C280094E920 /* main.m */; };
- 45CBADC61A619C280094E920 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 45CBADC51A619C280094E920 /* AppDelegate.m */; };
- 45CBADC91A619C280094E920 /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 45CBADC81A619C280094E920 /* ViewController.m */; };
- 45CBADCC1A619C280094E920 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 45CBADCA1A619C280094E920 /* Main.storyboard */; };
- 45CBADCE1A619C280094E920 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 45CBADCD1A619C280094E920 /* Images.xcassets */; };
- 45CBADD11A619C280094E920 /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = 45CBADCF1A619C280094E920 /* LaunchScreen.xib */; };
- 45CBADEB1A619FDA0094E920 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 45CBADEA1A619FDA0094E920 /* CoreGraphics.framework */; };
- 45D968311A7507AA0060B654 /* ACPDownloadConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 45D968221A7507AA0060B654 /* ACPDownloadConstants.m */; };
- 45D968321A7507AA0060B654 /* ACPDownloadView.m in Sources */ = {isa = PBXBuildFile; fileRef = 45D968241A7507AA0060B654 /* ACPDownloadView.m */; };
- 45D968331A7507AA0060B654 /* ACPIndeterminateGoogleLayer.m in Sources */ = {isa = PBXBuildFile; fileRef = 45D968261A7507AA0060B654 /* ACPIndeterminateGoogleLayer.m */; };
- 45D968341A7507AA0060B654 /* ACPIndeterminateLayer.m in Sources */ = {isa = PBXBuildFile; fileRef = 45D968281A7507AA0060B654 /* ACPIndeterminateLayer.m */; };
- 45D968351A7507AA0060B654 /* ACPProgressLayer.m in Sources */ = {isa = PBXBuildFile; fileRef = 45D9682B1A7507AA0060B654 /* ACPProgressLayer.m */; };
- 45D968361A7507AA0060B654 /* ACPStaticImages.m in Sources */ = {isa = PBXBuildFile; fileRef = 45D9682D1A7507AA0060B654 /* ACPStaticImages.m */; };
- 45D968371A7507AA0060B654 /* ACPStaticImagesAlternative.m in Sources */ = {isa = PBXBuildFile; fileRef = 45D9682F1A7507AA0060B654 /* ACPStaticImagesAlternative.m */; };
-/* End PBXBuildFile section */
-
-/* Begin PBXFileReference section */
- 458EE6E81A6C420200FDBE47 /* ExampleCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ExampleCell.h; sourceTree = ""; };
- 458EE6E91A6C420200FDBE47 /* ExampleCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ExampleCell.m; sourceTree = ""; };
- 45BDEDAC1A6DA509004CC7B2 /* README.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; };
- 45CBADBD1A619C280094E920 /* ACPDownload.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = ACPDownload.app; sourceTree = BUILT_PRODUCTS_DIR; };
- 45CBADC11A619C280094E920 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
- 45CBADC21A619C280094E920 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; };
- 45CBADC41A619C280094E920 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; };
- 45CBADC51A619C280094E920 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; };
- 45CBADC71A619C280094E920 /* ViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ViewController.h; sourceTree = ""; };
- 45CBADC81A619C280094E920 /* ViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ViewController.m; sourceTree = ""; };
- 45CBADCB1A619C280094E920 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; };
- 45CBADCD1A619C280094E920 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = ""; };
- 45CBADD01A619C280094E920 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/LaunchScreen.xib; sourceTree = ""; };
- 45CBADEA1A619FDA0094E920 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; };
- 45D968211A7507AA0060B654 /* ACPDownloadConstants.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ACPDownloadConstants.h; sourceTree = ""; };
- 45D968221A7507AA0060B654 /* ACPDownloadConstants.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ACPDownloadConstants.m; sourceTree = ""; };
- 45D968231A7507AA0060B654 /* ACPDownloadView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ACPDownloadView.h; sourceTree = ""; };
- 45D968241A7507AA0060B654 /* ACPDownloadView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ACPDownloadView.m; sourceTree = ""; };
- 45D968251A7507AA0060B654 /* ACPIndeterminateGoogleLayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ACPIndeterminateGoogleLayer.h; sourceTree = ""; };
- 45D968261A7507AA0060B654 /* ACPIndeterminateGoogleLayer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ACPIndeterminateGoogleLayer.m; sourceTree = ""; };
- 45D968271A7507AA0060B654 /* ACPIndeterminateLayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ACPIndeterminateLayer.h; sourceTree = ""; };
- 45D968281A7507AA0060B654 /* ACPIndeterminateLayer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ACPIndeterminateLayer.m; sourceTree = ""; };
- 45D968291A7507AA0060B654 /* ACPLayerProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ACPLayerProtocol.h; sourceTree = ""; };
- 45D9682A1A7507AA0060B654 /* ACPProgressLayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ACPProgressLayer.h; sourceTree = ""; };
- 45D9682B1A7507AA0060B654 /* ACPProgressLayer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ACPProgressLayer.m; sourceTree = ""; };
- 45D9682C1A7507AA0060B654 /* ACPStaticImages.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ACPStaticImages.h; sourceTree = ""; };
- 45D9682D1A7507AA0060B654 /* ACPStaticImages.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ACPStaticImages.m; sourceTree = ""; };
- 45D9682E1A7507AA0060B654 /* ACPStaticImagesAlternative.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ACPStaticImagesAlternative.h; sourceTree = ""; };
- 45D9682F1A7507AA0060B654 /* ACPStaticImagesAlternative.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ACPStaticImagesAlternative.m; sourceTree = ""; };
- 45D968301A7507AA0060B654 /* ACPStaticImagesProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ACPStaticImagesProtocol.h; sourceTree = ""; };
-/* End PBXFileReference section */
-
-/* Begin PBXFrameworksBuildPhase section */
- 45CBADBA1A619C280094E920 /* Frameworks */ = {
- isa = PBXFrameworksBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 45CBADEB1A619FDA0094E920 /* CoreGraphics.framework in Frameworks */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXFrameworksBuildPhase section */
-
-/* Begin PBXGroup section */
- 458EE6E41A6C41CF00FDBE47 /* Example */ = {
- isa = PBXGroup;
- children = (
- 45CBADC41A619C280094E920 /* AppDelegate.h */,
- 45CBADC51A619C280094E920 /* AppDelegate.m */,
- 45CBADC71A619C280094E920 /* ViewController.h */,
- 45CBADC81A619C280094E920 /* ViewController.m */,
- 45CBADCA1A619C280094E920 /* Main.storyboard */,
- 458EE6E81A6C420200FDBE47 /* ExampleCell.h */,
- 458EE6E91A6C420200FDBE47 /* ExampleCell.m */,
- );
- name = Example;
- sourceTree = "";
- };
- 45CBADB41A619C280094E920 = {
- isa = PBXGroup;
- children = (
- 45BDEDAC1A6DA509004CC7B2 /* README.md */,
- 45CBADBF1A619C280094E920 /* Example */,
- 45CBADBE1A619C280094E920 /* Products */,
- 45CBADEA1A619FDA0094E920 /* CoreGraphics.framework */,
- );
- sourceTree = "";
- };
- 45CBADBE1A619C280094E920 /* Products */ = {
- isa = PBXGroup;
- children = (
- 45CBADBD1A619C280094E920 /* ACPDownload.app */,
- );
- name = Products;
- sourceTree = "";
- };
- 45CBADBF1A619C280094E920 /* Example */ = {
- isa = PBXGroup;
- children = (
- 45D968201A7507AA0060B654 /* ACPDownload */,
- 458EE6E41A6C41CF00FDBE47 /* Example */,
- 45CBADCD1A619C280094E920 /* Images.xcassets */,
- 45CBADCF1A619C280094E920 /* LaunchScreen.xib */,
- 45CBADC01A619C280094E920 /* Supporting Files */,
- );
- path = Example;
- sourceTree = "";
- };
- 45CBADC01A619C280094E920 /* Supporting Files */ = {
- isa = PBXGroup;
- children = (
- 45CBADC11A619C280094E920 /* Info.plist */,
- 45CBADC21A619C280094E920 /* main.m */,
- );
- name = "Supporting Files";
- sourceTree = "";
- };
- 45D968201A7507AA0060B654 /* ACPDownload */ = {
- isa = PBXGroup;
- children = (
- 45D9689E1A7551E10060B654 /* Images */,
- 45D9689D1A7551CF0060B654 /* Animations */,
- 45D9689C1A7551BE0060B654 /* Protocols */,
- 45D968211A7507AA0060B654 /* ACPDownloadConstants.h */,
- 45D968221A7507AA0060B654 /* ACPDownloadConstants.m */,
- 45D968231A7507AA0060B654 /* ACPDownloadView.h */,
- 45D968241A7507AA0060B654 /* ACPDownloadView.m */,
- );
- path = ACPDownload;
- sourceTree = SOURCE_ROOT;
- };
- 45D9689C1A7551BE0060B654 /* Protocols */ = {
- isa = PBXGroup;
- children = (
- 45D968291A7507AA0060B654 /* ACPLayerProtocol.h */,
- 45D968301A7507AA0060B654 /* ACPStaticImagesProtocol.h */,
- );
- name = Protocols;
- sourceTree = "";
- };
- 45D9689D1A7551CF0060B654 /* Animations */ = {
- isa = PBXGroup;
- children = (
- 45D968251A7507AA0060B654 /* ACPIndeterminateGoogleLayer.h */,
- 45D968261A7507AA0060B654 /* ACPIndeterminateGoogleLayer.m */,
- 45D968271A7507AA0060B654 /* ACPIndeterminateLayer.h */,
- 45D968281A7507AA0060B654 /* ACPIndeterminateLayer.m */,
- 45D9682A1A7507AA0060B654 /* ACPProgressLayer.h */,
- 45D9682B1A7507AA0060B654 /* ACPProgressLayer.m */,
- );
- name = Animations;
- sourceTree = "";
- };
- 45D9689E1A7551E10060B654 /* Images */ = {
- isa = PBXGroup;
- children = (
- 45D9682C1A7507AA0060B654 /* ACPStaticImages.h */,
- 45D9682D1A7507AA0060B654 /* ACPStaticImages.m */,
- 45D9682E1A7507AA0060B654 /* ACPStaticImagesAlternative.h */,
- 45D9682F1A7507AA0060B654 /* ACPStaticImagesAlternative.m */,
- );
- name = Images;
- sourceTree = "";
- };
-/* End PBXGroup section */
-
-/* Begin PBXNativeTarget section */
- 45CBADBC1A619C280094E920 /* ACPDownload */ = {
- isa = PBXNativeTarget;
- buildConfigurationList = 45CBADE01A619C290094E920 /* Build configuration list for PBXNativeTarget "ACPDownload" */;
- buildPhases = (
- 45CBADB91A619C280094E920 /* Sources */,
- 45CBADBA1A619C280094E920 /* Frameworks */,
- 45CBADBB1A619C280094E920 /* Resources */,
- );
- buildRules = (
- );
- dependencies = (
- );
- name = ACPDownload;
- productName = ACPDownload;
- productReference = 45CBADBD1A619C280094E920 /* ACPDownload.app */;
- productType = "com.apple.product-type.application";
- };
-/* End PBXNativeTarget section */
-
-/* Begin PBXProject section */
- 45CBADB51A619C280094E920 /* Project object */ = {
- isa = PBXProject;
- attributes = {
- LastUpgradeCheck = 0610;
- ORGANIZATIONNAME = "Antonio Casero Palmero";
- TargetAttributes = {
- 45CBADBC1A619C280094E920 = {
- CreatedOnToolsVersion = 6.1.1;
- DevelopmentTeam = 9HX8L3BY3M;
- };
- };
- };
- buildConfigurationList = 45CBADB81A619C280094E920 /* Build configuration list for PBXProject "ACPDownload" */;
- compatibilityVersion = "Xcode 3.2";
- developmentRegion = English;
- hasScannedForEncodings = 0;
- knownRegions = (
- en,
- Base,
- );
- mainGroup = 45CBADB41A619C280094E920;
- productRefGroup = 45CBADBE1A619C280094E920 /* Products */;
- projectDirPath = "";
- projectRoot = "";
- targets = (
- 45CBADBC1A619C280094E920 /* ACPDownload */,
- );
- };
-/* End PBXProject section */
-
-/* Begin PBXResourcesBuildPhase section */
- 45CBADBB1A619C280094E920 /* Resources */ = {
- isa = PBXResourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 45CBADCC1A619C280094E920 /* Main.storyboard in Resources */,
- 45CBADD11A619C280094E920 /* LaunchScreen.xib in Resources */,
- 45CBADCE1A619C280094E920 /* Images.xcassets in Resources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXResourcesBuildPhase section */
-
-/* Begin PBXSourcesBuildPhase section */
- 45CBADB91A619C280094E920 /* Sources */ = {
- isa = PBXSourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 45D968371A7507AA0060B654 /* ACPStaticImagesAlternative.m in Sources */,
- 45D968341A7507AA0060B654 /* ACPIndeterminateLayer.m in Sources */,
- 45D968351A7507AA0060B654 /* ACPProgressLayer.m in Sources */,
- 45D968321A7507AA0060B654 /* ACPDownloadView.m in Sources */,
- 45D968361A7507AA0060B654 /* ACPStaticImages.m in Sources */,
- 458EE6EA1A6C420200FDBE47 /* ExampleCell.m in Sources */,
- 45CBADC91A619C280094E920 /* ViewController.m in Sources */,
- 45CBADC61A619C280094E920 /* AppDelegate.m in Sources */,
- 45BDEDAD1A6DA509004CC7B2 /* README.md in Sources */,
- 45D968311A7507AA0060B654 /* ACPDownloadConstants.m in Sources */,
- 45CBADC31A619C280094E920 /* main.m in Sources */,
- 45D968331A7507AA0060B654 /* ACPIndeterminateGoogleLayer.m in Sources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXSourcesBuildPhase section */
-
-/* Begin PBXVariantGroup section */
- 45CBADCA1A619C280094E920 /* Main.storyboard */ = {
- isa = PBXVariantGroup;
- children = (
- 45CBADCB1A619C280094E920 /* Base */,
- );
- name = Main.storyboard;
- sourceTree = "";
- };
- 45CBADCF1A619C280094E920 /* LaunchScreen.xib */ = {
- isa = PBXVariantGroup;
- children = (
- 45CBADD01A619C280094E920 /* Base */,
- );
- name = LaunchScreen.xib;
- sourceTree = "";
- };
-/* End PBXVariantGroup section */
-
-/* Begin XCBuildConfiguration section */
- 45CBADDE1A619C290094E920 /* 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;
- ENABLE_STRICT_OBJC_MSGSEND = YES;
- GCC_C_LANGUAGE_STANDARD = gnu99;
- GCC_DYNAMIC_NO_PIC = NO;
- GCC_OPTIMIZATION_LEVEL = 0;
- GCC_PREPROCESSOR_DEFINITIONS = (
- "DEBUG=1",
- "$(inherited)",
- );
- GCC_SYMBOLS_PRIVATE_EXTERN = NO;
- GCC_WARN_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.1;
- MTL_ENABLE_DEBUG_INFO = YES;
- ONLY_ACTIVE_ARCH = YES;
- SDKROOT = iphoneos;
- TARGETED_DEVICE_FAMILY = "1,2";
- };
- name = Debug;
- };
- 45CBADDF1A619C290094E920 /* 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 = YES;
- ENABLE_NS_ASSERTIONS = NO;
- ENABLE_STRICT_OBJC_MSGSEND = YES;
- GCC_C_LANGUAGE_STANDARD = gnu99;
- 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.1;
- MTL_ENABLE_DEBUG_INFO = NO;
- SDKROOT = iphoneos;
- TARGETED_DEVICE_FAMILY = "1,2";
- VALIDATE_PRODUCT = YES;
- };
- name = Release;
- };
- 45CBADE11A619C290094E920 /* Debug */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
- CODE_SIGN_IDENTITY = "iPhone Developer";
- "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
- INFOPLIST_FILE = Example/Info.plist;
- LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
- PRODUCT_NAME = "$(TARGET_NAME)";
- PROVISIONING_PROFILE = "";
- };
- name = Debug;
- };
- 45CBADE21A619C290094E920 /* Release */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
- CODE_SIGN_IDENTITY = "iPhone Developer";
- "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
- INFOPLIST_FILE = Example/Info.plist;
- LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
- PRODUCT_NAME = "$(TARGET_NAME)";
- PROVISIONING_PROFILE = "";
- };
- name = Release;
- };
-/* End XCBuildConfiguration section */
-
-/* Begin XCConfigurationList section */
- 45CBADB81A619C280094E920 /* Build configuration list for PBXProject "ACPDownload" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- 45CBADDE1A619C290094E920 /* Debug */,
- 45CBADDF1A619C290094E920 /* Release */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Release;
- };
- 45CBADE01A619C290094E920 /* Build configuration list for PBXNativeTarget "ACPDownload" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- 45CBADE11A619C290094E920 /* Debug */,
- 45CBADE21A619C290094E920 /* Release */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Release;
- };
-/* End XCConfigurationList section */
- };
- rootObject = 45CBADB51A619C280094E920 /* Project object */;
-}
diff --git a/ACPDownload/ACPDownloadConstants.h b/ACPDownload/ACPDownloadConstants.h
deleted file mode 100644
index e931a63..0000000
--- a/ACPDownload/ACPDownloadConstants.h
+++ /dev/null
@@ -1,24 +0,0 @@
-//
-// ACPDownloadConstants.h
-// ACPDownload
-//
-// Created by Palmero, Antonio on 1/16/15.
-// Copyright (c) 2015 Antonio Casero Palmero. All rights reserved.
-//
-
-#import
-
-@interface ACPDownloadConstants : NSObject
-
-extern NSString *const kACPStrokeAnimationKey;
-extern NSString *const kACPRotationAnimationKey;
-
-typedef NS_ENUM(NSUInteger, ACPDownloadStatus) {
- ACPDownloadStatusNone,
- ACPDownloadStatusRunning,
- ACPDownloadStatusIndeterminate,
- ACPDownloadStatusCompleted,
-
-};
-
-@end
diff --git a/ACPDownload/ACPDownloadConstants.m b/ACPDownload/ACPDownloadConstants.m
deleted file mode 100644
index 800fc3e..0000000
--- a/ACPDownload/ACPDownloadConstants.m
+++ /dev/null
@@ -1,16 +0,0 @@
-//
-// ACPDownloadConstants.m
-// ACPDownload
-//
-// Created by Palmero, Antonio on 1/16/15.
-// Copyright (c) 2015 Antonio Casero Palmero. All rights reserved.
-//
-
-#import "ACPDownloadConstants.h"
-
-@implementation ACPDownloadConstants
-
-NSString *const kACPStrokeAnimationKey = @"com.acpdownload.animation.stroke";
-NSString *const kACPRotationAnimationKey = @"com.acpdownload.animation.rotation";
-
-@end
diff --git a/ACPDownload/ACPDownloadView.h b/ACPDownload/ACPDownloadView.h
deleted file mode 100644
index a6f96c0..0000000
--- a/ACPDownload/ACPDownloadView.h
+++ /dev/null
@@ -1,80 +0,0 @@
-//
-// ACPDownloadView.h
-// ACPDownload
-//
-// Created by Antonio Casero Palmero on 10/01/15.
-// Copyright (c) 2015 Antonio Casero Palmero. All rights reserved.
-//
-
-#import
-#import "ACPLayerProtocol.h"
-#import "ACPStaticImagesProtocol.h"
-#import "ACPDownloadConstants.h"
-
-@class ACPDownloadView;
-
-typedef void (^ACPViewTappedBlock)(ACPDownloadView * downloadView, ACPDownloadStatus status);
-
-/**
- `ACPDownloadView`
-
- ##Purpose
- Custom view. Provides a graphic representation of 4 different states.
- *ACPDownloadStatusNone -> Initial state, nothing has been downloaded.
- *ACPDownloadStatusRunning -> The download or process is in progress.
- *ACPDownloadStatusIndeterminate -> Indeterminate state. (waiting, installing,...)
- *ACPDownloadStatusCompleted -> Final state, the process is completed.
-
-
- @see ACPDownloadConstants;
- */
-@interface ACPDownloadView : UIView
-
-@property (nonatomic, readonly, assign) ACPDownloadStatus currentStatus;
-
-/**
- * This method defines the state of the download indicator.
- *
- * @param newStatus current state of your process
- */
-- (void)setIndicatorStatus:(ACPDownloadStatus)newStatus;
-
-/**
- * Defines the progression of your process.
- * @warning you can set the value when you want. But if the view state is not ACPDownloadStatusRunning you won't see
- * the graphical representation.
-
- * @param progress Float value - from 0 to 1
- * @param animated Animation flag.
- */
-- (void)setProgress:(float)progress animated:(BOOL)animated;
-
-/**
- * Defines the behaviour when the user tap over it.
- * The implementation is optional.
- *
- * @param blockAction The block input provides the view object and the current state.
- */
-- (void)setActionForTap:(ACPViewTappedBlock)blockAction;
-
-/**
- * Define a new indeterminate layer, replacing the default one.
- * @see ACPLayerProtocol, ACPIndeterminateLayer
- * @param layer Object who conforms the protocol ACPLayerProtocol.
- */
-- (void)setIndeterminateLayer:(id)layer;
-
-/**
- * Define a new progress layer, replacing the default one.
- * @see ACPLayerProtocol, ACPProgressLater
- * @param layer Object who conforms the protocol ACPLayerProtocol.
- */
-- (void)setProgressLayer:(id)layer;
-
-/**
- * Define a new set of images, replacing the default one.
- * @see ACPStaticImagesProtocol
- * @param layer Object who conforms the protocol ACPStaticImagesProtocol.
- */
-- (void)setImages:(id)images;
-@end
diff --git a/ACPDownload/ACPDownloadView.m b/ACPDownload/ACPDownloadView.m
deleted file mode 100644
index b31bdab..0000000
--- a/ACPDownload/ACPDownloadView.m
+++ /dev/null
@@ -1,181 +0,0 @@
- //
-// ACPDownloadView.m
-// ACPDownload
-//
-// Created by Antonio Casero Palmero on 10/01/15.
-// Copyright (c) 2015 Antonio Casero Palmero. All rights reserved.
-//
-
-#import "ACPDownloadView.h"
-#import "ACPIndeterminateLayer.h"
-#import "ACPProgressLayer.h"
-#import "ACPStaticImages.h"
-
-
-@interface ACPDownloadView()
-
-@property (nonatomic, readwrite, assign) ACPDownloadStatus currentStatus;
-@property (nonatomic, copy) ACPViewTappedBlock viewTappedBlock;
-@property (nonatomic, strong) id staticImages;
-@property (nonatomic, strong) id indeterminateShapelayer;
-@property (nonatomic, strong) id progressShapelayer;
-
-
-@end
-
-@implementation ACPDownloadView
-
-- (instancetype)initWithFrame:(CGRect)frame {
- if (self = [super initWithFrame:frame]) {
- [self initialize];
- }
- return self;
-}
-
-- (instancetype)initWithCoder:(NSCoder *)aDecoder {
- if (self = [super initWithCoder:aDecoder]) {
- [self initialize];
- }
- return self;
-}
-
-- (void)initialize {
-
- [self setIndicatorStatus:ACPDownloadStatusNone];
-
- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(resetAnimations) name:UIApplicationDidBecomeActiveNotification object:nil];
-
- UITapGestureRecognizer *singleFingerTap =
- [[UITapGestureRecognizer alloc] initWithTarget:self
- action:@selector(handleSingleTap:)];
- [self addGestureRecognizer:singleFingerTap];
-
-}
-- (void)handleSingleTap:(UITapGestureRecognizer *)recognizer {
- NSLog(@"Tap recieved");
- if(self.viewTappedBlock){
- self.viewTappedBlock(self, self.currentStatus);
- }
-}
-- (void)dealloc
-{
- [[NSNotificationCenter defaultCenter] removeObserver:self name:UIApplicationDidBecomeActiveNotification object:nil];
-}
-- (void)layoutSubviews {
- //We set the bounds
- [super layoutSubviews];
- if(!self.staticImages){
- self.staticImages = [ACPStaticImages new];
- [self.staticImages updateColor:self.tintColor];
- }
-
- [self.staticImages updateFrame:self.bounds];
-
-}
-
-- (void)setIndicatorStatus:(ACPDownloadStatus)newStatus {
- self.currentStatus = newStatus;
- [self setNeedsDisplay];
-}
-
-- (void)resetAnimations {
-
- if (self.indeterminateLayer.isAnimating) {
- [self.indeterminateLayer stopAnimating];
- [self.indeterminateLayer startAnimating];
- }
-}
-
-- (void)setProgress:(float)progress animated:(BOOL)animated {
- [self.progressShapelayer setProgress:progress animated:animated];
-
-}
-- (void)drawRect:(CGRect)rect {
-
- [self.indeterminateShapelayer removeLayer];
- [self.progressShapelayer removeLayer];
- switch (self.currentStatus) {
- case ACPDownloadStatusNone:{
- [self.staticImages drawStatusNone];
- break;
- }
- case ACPDownloadStatusRunning:{
-
- [self initializeProgress];
- [self.staticImages drawStatusRunning];
- break;
- }
- case ACPDownloadStatusIndeterminate:{
-
- [self initializeIndeterminate];
- [self.indeterminateLayer startAnimating];
- [self.staticImages drawStatusIndeterminate];
- //Nothing
- break;
- }
- case ACPDownloadStatusCompleted:{
- [self.staticImages drawStatusComplete];
- break;
- }
- default:
- break;
- }
- [self setNeedsDisplay];
-
-}
-
-- (id)progressShapelayer {
- if (!_progressShapelayer) {
- _progressShapelayer = [ACPProgressLayer new];
- }
- return _progressShapelayer;
-}
-- (id)indeterminateLayer {
-
- if (!_indeterminateShapelayer) {
- _indeterminateShapelayer = [ACPIndeterminateLayer new];
- }
- return _indeterminateShapelayer;
-}
-
-- (void)tintColorDidChange {
- [super tintColorDidChange];
- [self.indeterminateLayer updateColor:self.tintColor];
- [self.progressShapelayer updateColor:self.tintColor];
- [self.staticImages updateColor:self.tintColor];
-}
-
-
-
-- (void)setActionForTap:(ACPViewTappedBlock)blockAction {
- self.viewTappedBlock = blockAction;
-}
-
-- (void)setIndeterminateLayer:(id)layer {
- [layer updateFrame:CGRectMake(0, 0, CGRectGetWidth(self.bounds), CGRectGetHeight(self.bounds))];
- _indeterminateShapelayer = layer;
-
-}
-- (void)setProgressLayer:(id)layer {
- [layer updateFrame:CGRectMake(0, 0, CGRectGetWidth(self.bounds), CGRectGetHeight(self.bounds))];
- _progressShapelayer = layer;
-
-}
-
-- (void)initializeIndeterminate {
- [self.indeterminateLayer updateColor:self.tintColor];
- [self.layer addSublayer:self.indeterminateLayer.layer];
- [self.indeterminateShapelayer updateFrame:CGRectMake(0, 0, CGRectGetWidth(self.bounds), CGRectGetHeight(self.bounds))];
-}
-
-- (void)initializeProgress{
- [self.progressShapelayer updateColor:self.tintColor];
- [self.layer addSublayer:self.progressShapelayer.layer];
- [self.progressShapelayer updateFrame:CGRectMake(0, 0, CGRectGetWidth(self.bounds), CGRectGetHeight(self.bounds))];
-}
-
-- (void)setImages:(id)images{
- self.staticImages = images;
- [self.staticImages updateFrame:CGRectMake(0, 0, CGRectGetWidth(self.bounds), CGRectGetHeight(self.bounds))];
-}
-@end
diff --git a/ACPDownload/ACPIndeterminateGoogleLayer.h b/ACPDownload/ACPIndeterminateGoogleLayer.h
deleted file mode 100644
index fc8a566..0000000
--- a/ACPDownload/ACPIndeterminateGoogleLayer.h
+++ /dev/null
@@ -1,14 +0,0 @@
-//
-// ACPIndeterminateGoogleLayer.h
-// ACPDownload
-//
-// Created by Palmero, Antonio on 1/16/15.
-// Copyright (c) 2015 Antonio Casero Palmero. All rights reserved.
-//
-
-#import
-#import "ACPLayerProtocol.h"
-
-@interface ACPIndeterminateGoogleLayer : NSObject
-
-@end
diff --git a/ACPDownload/ACPIndeterminateGoogleLayer.m b/ACPDownload/ACPIndeterminateGoogleLayer.m
deleted file mode 100644
index e45de80..0000000
--- a/ACPDownload/ACPIndeterminateGoogleLayer.m
+++ /dev/null
@@ -1,128 +0,0 @@
-//
-// ACPIndeterminateGoogleLayer.m
-// ACPDownload
-//
-// Created by Palmero, Antonio on 1/16/15.
-// Copyright (c) 2015 Antonio Casero Palmero. All rights reserved.
-//
-
-#import "ACPIndeterminateGoogleLayer.h"
-#import "ACPDownloadConstants.h"
-
-@interface ACPIndeterminateGoogleLayer()
-
-@property (nonatomic, readwrite) CAShapeLayer * layer;
-@property (nonatomic, readwrite) UIColor * colorLayer;
-@property (nonatomic, assign) CGRect frame;
-@property (nonatomic, assign, readwrite, getter= isAnimating) BOOL animate;
-
-@end
-
-@implementation ACPIndeterminateGoogleLayer
-
-
-
-- (CAShapeLayer *) layer {
- if (!_layer) {
- _layer = [CAShapeLayer layer];
- _layer.strokeColor = self.colorLayer.CGColor;
- _layer.fillColor = nil;
- _layer.lineWidth = 1.5f;
- }
- return _layer;
-}
-
-- (void)updateFrame:(CGRect)frame {
- self.frame = frame;
- self.layer.frame = frame;
- [self updatePath];
-
-}
-
-- (void)updatePath {
-
- CGPoint center = CGPointMake(CGRectGetMidX(self.frame), CGRectGetMidY(self.frame));
- CGFloat radius = MIN(CGRectGetWidth(self.frame) / 2, CGRectGetHeight(self.frame) / 2) - self.layer.lineWidth / 2;
- CGFloat startAngle = (CGFloat)(-M_PI_4);
- CGFloat endAngle = (CGFloat)(3 * M_PI_2);
- UIBezierPath *path = [UIBezierPath bezierPathWithArcCenter:center radius:radius startAngle:startAngle endAngle:endAngle clockwise:YES];
- self.layer.path = path.CGPath;
-
-}
-
-#pragma mark -
-
-- (void)startAnimating{
-
- CAMediaTimingFunction * timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
- CABasicAnimation *animation = [CABasicAnimation animation];
- animation.keyPath = @"transform.rotation";
- animation.duration = 4.f;
- animation.fromValue = @(0.f);
- animation.toValue = @(2 * M_PI);
- animation.repeatCount = INFINITY;
- [self.layer addAnimation:animation forKey:kACPRotationAnimationKey];
-
- CABasicAnimation *headAnimation = [CABasicAnimation animation];
- headAnimation.keyPath = @"strokeStart";
- headAnimation.duration = 1.f;
- headAnimation.fromValue = @(0.f);
- headAnimation.toValue = @(0.25f);
- headAnimation.timingFunction = timingFunction;
-
- CABasicAnimation *tailAnimation = [CABasicAnimation animation];
- tailAnimation.keyPath = @"strokeEnd";
- tailAnimation.duration = 1.f;
- tailAnimation.fromValue = @(0.f);
- tailAnimation.toValue = @(1.f);
- tailAnimation.timingFunction = timingFunction;
-
-
- CABasicAnimation *endHeadAnimation = [CABasicAnimation animation];
- endHeadAnimation.keyPath = @"strokeStart";
- endHeadAnimation.beginTime = 1.f;
- endHeadAnimation.duration = 0.5f;
- endHeadAnimation.fromValue = @(0.25f);
- endHeadAnimation.toValue = @(1.f);
- endHeadAnimation.timingFunction = timingFunction;
-
- CABasicAnimation *endTailAnimation = [CABasicAnimation animation];
- endTailAnimation.keyPath = @"strokeEnd";
- endTailAnimation.beginTime = 1.f;
- endTailAnimation.duration = 0.5f;
- endTailAnimation.fromValue = @(1.f);
- endTailAnimation.toValue = @(1.f);
- endTailAnimation.timingFunction = timingFunction;
-
- CAAnimationGroup *animations = [CAAnimationGroup animation];
- [animations setDuration:1.5f];
- [animations setAnimations:@[headAnimation, tailAnimation, endHeadAnimation, endTailAnimation]];
- animations.repeatCount = INFINITY;
- [self.layer addAnimation:animations forKey:kACPStrokeAnimationKey];
- self.animate = YES;
-
-}
-- (void)stopAnimating{
-
- if (!self.isAnimating)
- return;
-
- [self.layer removeAnimationForKey:kACPRotationAnimationKey];
- [self.layer removeAnimationForKey:kACPStrokeAnimationKey];
- self.animate = NO;
-
-}
-
-- (void)updateColor:(UIColor*)color {
- self.layer.strokeColor = color.CGColor;
-}
-
-- (void)setHidden:(BOOL)hidden {
- self.layer.hidden = YES;
-
-}
-- (void)removeLayer {
- [self stopAnimating];
- [self.layer removeFromSuperlayer];
-}
-@end
diff --git a/ACPDownload/ACPIndeterminateLayer.h b/ACPDownload/ACPIndeterminateLayer.h
deleted file mode 100644
index 08f3424..0000000
--- a/ACPDownload/ACPIndeterminateLayer.h
+++ /dev/null
@@ -1,16 +0,0 @@
-//
-// ACPIndeterminateLayer.h
-// ACPDownload
-//
-// Created by Palmero, Antonio on 1/16/15.
-// Copyright (c) 2015 Antonio Casero Palmero. All rights reserved.
-//
-
-#import
-#import "ACPLayerProtocol.h"
-
-@interface ACPIndeterminateLayer : NSObject
-
-
-
-@end
diff --git a/ACPDownload/ACPIndeterminateLayer.m b/ACPDownload/ACPIndeterminateLayer.m
deleted file mode 100644
index 346d124..0000000
--- a/ACPDownload/ACPIndeterminateLayer.m
+++ /dev/null
@@ -1,90 +0,0 @@
-//
-// ACPIndeterminateLayer.m
-// ACPDownload
-//
-// Created by Palmero, Antonio on 1/16/15.
-// Copyright (c) 2015 Antonio Casero Palmero. All rights reserved.
-//
-
-#import "ACPIndeterminateLayer.h"
-#import "ACPDownloadConstants.h"
-
-@interface ACPIndeterminateLayer()
-
-@property (nonatomic, readwrite) CAShapeLayer * layer;
-@property (nonatomic, readwrite) UIColor * colorLayer;
-@property (nonatomic, assign) CGRect frame;
-@property (nonatomic, assign, readwrite, getter= isAnimating) BOOL animate;
-
-@end
-
-@implementation ACPIndeterminateLayer
-
-
-
-- (CAShapeLayer *) layer {
- if (!_layer) {
- _layer = [CAShapeLayer layer];
- _layer.strokeColor = self.colorLayer.CGColor;
- _layer.fillColor = nil;
- _layer.lineWidth = 1.5f;
- }
- return _layer;
-}
-
-- (void)updateFrame:(CGRect)frame {
- self.frame = frame;
- self.layer.frame = frame;
- [self updatePath];
-
-}
-
-- (void)updatePath {
-
- CGPoint center = CGPointMake(CGRectGetMidX(self.frame), CGRectGetMidY(self.frame));
- CGFloat radius = MIN(CGRectGetWidth(self.frame) / 2, CGRectGetHeight(self.frame) / 2) - self.layer.lineWidth / 2;
- CGFloat startAngle = (CGFloat)(-M_PI_4);
- CGFloat endAngle = (CGFloat)(3 * M_PI_2);
- UIBezierPath *path = [UIBezierPath bezierPathWithArcCenter:center radius:radius startAngle:startAngle endAngle:endAngle clockwise:YES];
- self.layer.path = path.CGPath;
-
-}
-
-#pragma mark -
-
-- (void)startAnimating{
-
- CABasicAnimation *animation = [CABasicAnimation animation];
- animation.keyPath = @"transform.rotation";
- animation.duration = 1.0f;
- animation.fromValue = @(0.0f);
- animation.toValue = @(2 * M_PI);
- animation.repeatCount = INFINITY;
- animation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
-
- [self.layer addAnimation:animation forKey:kACPRotationAnimationKey];
- self.animate = YES;
-
-}
-- (void)stopAnimating{
-
- if (!self.isAnimating)
- return;
-
- [self.layer removeAnimationForKey:kACPRotationAnimationKey];
- self.animate = NO;
-
-}
-
-- (void)updateColor:(UIColor*)color {
- self.layer.strokeColor = color.CGColor;
-}
-- (void)setHidden:(BOOL)hidden {
- self.layer.hidden = YES;
-
-}
-- (void)removeLayer {
- [self stopAnimating];
- [self.layer removeFromSuperlayer];
-}
-@end
diff --git a/ACPDownload/ACPLayerProtocol.h b/ACPDownload/ACPLayerProtocol.h
deleted file mode 100644
index 85cb6de..0000000
--- a/ACPDownload/ACPLayerProtocol.h
+++ /dev/null
@@ -1,81 +0,0 @@
-//
-// ACPLayerProtocol.h
-// ACPDownload
-//
-// Created by Palmero, Antonio on 1/16/15.
-// Copyright (c) 2015 Antonio Casero Palmero. All rights reserved.
-//
-
-#import
-#import
-
-/**
- `ACPLayerProtocol`
-
- ##Purpose
- Protocol to define the animated layers in the view container. It is defined for two animated states, Indeterminate and Running.
- Any object who conform this protocol could replace any of the animated layer in the project.
- @see ACPIndeterminateGoogleLayer ACPIndeterminateLayer
-
- #Optional methods.
-
- Indeterminate animation has to conform -startAnimating and -stopAnimating
- Progress animation has to conform -setProgress
-
- @see ACPDownloadConstants;
- */
-
-@protocol ACPLayerProtocol
-
-@property (nonatomic, readonly) CAShapeLayer * layer;
-@property (nonatomic, readonly) UIColor * colorLayer;
-@property (nonatomic, assign, readonly, getter= isAnimating) BOOL animate;
-
-/**
- * This method will set the right frame to layer
- *
- * @param frame current frame.
- */
-- (void)updateFrame:(CGRect)frame;
-
-/**
- * It will change the color of the layer. By default is tintColor.
- *
- * @param color color
- */
-- (void)updateColor:(UIColor*)color;
-
-/**
- * It will hidde the layer.
- *
- * @param hidden YES is hidden
- */
-- (void)setHidden:(BOOL)hidden;
-
-/**
- * Remove Layer, this method remove the animation first, and then remove the layer from superview
- */
-- (void)removeLayer;
-
-@optional
-
-/**
- * This method will start the animation associated.
- * @warning the indeterminate layer has to implement it.
- */
-- (void)startAnimating;
-
-/**
-* This method will stop the animation associated.
-* @warning the indeterminate layer has to implement it.
-*/
-- (void)stopAnimating;
-
-/**
- * This method will define the progress of our Progress layer
- * @warning the progress layer has to implement it.
- * @param progress Float value from 0 to 1.
- * @param animated flag.
- */
-- (void)setProgress:(float)progress animated:(BOOL)animated;
-@end
diff --git a/ACPDownload/ACPProgressLayer.h b/ACPDownload/ACPProgressLayer.h
deleted file mode 100644
index 747ae61..0000000
--- a/ACPDownload/ACPProgressLayer.h
+++ /dev/null
@@ -1,14 +0,0 @@
-//
-// ACPProgressLayer.h
-// ACPDownload
-//
-// Created by Palmero, Antonio on 1/16/15.
-// Copyright (c) 2015 Antonio Casero Palmero. All rights reserved.
-//
-
-#import
-#import "ACPLayerProtocol.h"
-
-@interface ACPProgressLayer : NSObject
-
-@end
diff --git a/ACPDownload/ACPProgressLayer.m b/ACPDownload/ACPProgressLayer.m
deleted file mode 100644
index eda0c38..0000000
--- a/ACPDownload/ACPProgressLayer.m
+++ /dev/null
@@ -1,101 +0,0 @@
-//
-// ACPProgressLayer.m
-// ACPDownload
-//
-// Created by Palmero, Antonio on 1/16/15.
-// Copyright (c) 2015 Antonio Casero Palmero. All rights reserved.
-//
-
-#import "ACPProgressLayer.h"
-#import "ACPDownloadConstants.h"
-
-@interface ACPProgressLayer()
-
-@property (nonatomic, readwrite) CAShapeLayer * layer;
-@property (nonatomic, readwrite) UIColor * colorLayer;
-@property (nonatomic, assign) CGRect frame;
-@property (nonatomic, assign, readwrite, getter= isAnimating) BOOL animate;
-@property (nonatomic, assign) float progress;
-
-@end
-
-@implementation ACPProgressLayer
-
-- (instancetype)init
-{
- self = [super init];
- if (self) {
- self.progress =0.f;
- }
- return self;
-}
-- (CAShapeLayer *) layer {
- if (!_layer) {
- _layer = [CAShapeLayer layer];
- _layer.strokeColor = self.colorLayer.CGColor;
- _layer.fillColor = nil;
- _layer.lineWidth = 3.f;
- }
- return _layer;
-}
-
-- (void)updateFrame:(CGRect)frame {
- self.frame = frame;
- self.layer.frame = frame;
- [self updatePath];
-
-}
-
-- (void)updatePath {
-
- CGPoint center = CGPointMake(CGRectGetMidX(self.frame), CGRectGetMidY(self.frame));
- CGFloat radius = MIN(CGRectGetWidth(self.frame) / 2, CGRectGetHeight(self.frame) / 2) - self.layer.lineWidth / 2;
- radius = radius - self.layer.lineWidth/2;
- CGFloat startAngle = (CGFloat)(-M_PI/2);
- CGFloat endAngle = (CGFloat)(3 * M_PI_2);
- UIBezierPath *path = [UIBezierPath bezierPathWithArcCenter:center radius:radius startAngle:startAngle endAngle:endAngle clockwise:YES];
- self.layer.path = path.CGPath;
-
-}
-
-#pragma mark -
-
-- (void)setProgress:(float)progress {
- [self setProgress:progress animated:NO];
-}
-
-- (void)setProgress:(float)progress animated:(BOOL)animated {
- if (progress > 0) {
- if (animated) {
- CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"strokeEnd"];
- animation.fromValue = self.progress == 0 ? @0 : nil;
- animation.toValue = @(progress);
- animation.duration = 1;
- self.layer.strokeEnd = progress;
- [self.layer addAnimation:animation forKey:@"animation"];
- } else {
- [CATransaction begin];
- [CATransaction setDisableActions:YES];
- self.layer.strokeEnd = progress;
- [CATransaction commit];
- }
- } else {
- self.layer.strokeEnd = 0.0f;
- [self.layer removeAnimationForKey:@"animation"];
- }
-
- _progress = progress;
-}
-
-- (void)updateColor:(UIColor*)color {
- self.layer.strokeColor = color.CGColor;
-}
-
-- (void)setHidden:(BOOL)hidden {
- self.layer.hidden = YES;
-
-}
-- (void)removeLayer {
- [self.layer removeFromSuperlayer];
-}
-@end
diff --git a/ACPDownload/ACPStaticImages.h b/ACPDownload/ACPStaticImages.h
deleted file mode 100644
index d6225bd..0000000
--- a/ACPDownload/ACPStaticImages.h
+++ /dev/null
@@ -1,16 +0,0 @@
-//
-// ACPStaticImages.h
-// ACPDownload
-//
-// Created by Antonio Casero Palmero on 18/01/15.
-// Copyright (c) 2015 Antonio Casero Palmero. All rights reserved.
-//
-
-#import
-#import "ACPStaticImagesProtocol.h"
-
-
-@interface ACPStaticImages : NSObject
-
-
-@end
diff --git a/ACPDownload/ACPStaticImages.m b/ACPDownload/ACPStaticImages.m
deleted file mode 100644
index 5e4fa69..0000000
--- a/ACPDownload/ACPStaticImages.m
+++ /dev/null
@@ -1,160 +0,0 @@
-//
-// ACPStaticImages.m
-// ACPDownload
-//
-// Created by Antonio Casero Palmero on 18/01/15.
-// Copyright (c) 2015 Antonio Casero Palmero. All rights reserved.
-//
-
-#import "ACPStaticImages.h"
-
-@implementation ACPStaticImages
-@synthesize bounds, strokeColor;
-
-- (void)updateFrame:(CGRect)frame {
- self.bounds = frame;
-}
-
-- (void) drawStatusNone{
-
- CGRect frameContainer;
- frameContainer.origin.x = CGRectGetMidX(self.bounds) - self.bounds.size.width / 3;
- frameContainer.origin.y = CGRectGetMidY(self.bounds) - self.bounds.size.height / 3;
- frameContainer.size.width = self.bounds.size.width / 1.5;
- frameContainer.size.height = self.bounds.size.height / 1.5;
-
- //// Bezier Drawing
- UIBezierPath* bezierPath = [UIBezierPath bezierPath];
- [bezierPath moveToPoint: CGPointMake(CGRectGetMinX(frameContainer) + 0.48148 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.88542 * CGRectGetHeight(frameContainer))];
- [bezierPath addLineToPoint: CGPointMake(CGRectGetMinX(frameContainer) + 0.36111 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.75000 * CGRectGetHeight(frameContainer))];
- [bezierPath addLineToPoint: CGPointMake(CGRectGetMinX(frameContainer) + 0.33333 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.78125 * CGRectGetHeight(frameContainer))];
- [bezierPath addLineToPoint: CGPointMake(CGRectGetMinX(frameContainer) + 0.50000 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.96875 * CGRectGetHeight(frameContainer))];
- [bezierPath addLineToPoint: CGPointMake(CGRectGetMinX(frameContainer) + 0.66667 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.78125 * CGRectGetHeight(frameContainer))];
- [bezierPath addLineToPoint: CGPointMake(CGRectGetMinX(frameContainer) + 0.63889 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.75000 * CGRectGetHeight(frameContainer))];
- [bezierPath addLineToPoint: CGPointMake(CGRectGetMinX(frameContainer) + 0.51852 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.88542 * CGRectGetHeight(frameContainer))];
- [bezierPath addLineToPoint: CGPointMake(CGRectGetMinX(frameContainer) + 0.51852 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.41667 * CGRectGetHeight(frameContainer))];
- [bezierPath addLineToPoint: CGPointMake(CGRectGetMinX(frameContainer) + 0.48148 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.41667 * CGRectGetHeight(frameContainer))];
- [bezierPath addLineToPoint: CGPointMake(CGRectGetMinX(frameContainer) + 0.48148 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.88542 * CGRectGetHeight(frameContainer))];
- [bezierPath addLineToPoint: CGPointMake(CGRectGetMinX(frameContainer) + 0.48148 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.88542 * CGRectGetHeight(frameContainer))];
- [bezierPath closePath];
- [bezierPath moveToPoint: CGPointMake(CGRectGetMinX(frameContainer) + 0.44444 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.66667 * CGRectGetHeight(frameContainer))];
- [bezierPath addLineToPoint: CGPointMake(CGRectGetMinX(frameContainer) + 0.18529 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.66667 * CGRectGetHeight(frameContainer))];
- [bezierPath addCurveToPoint: CGPointMake(CGRectGetMinX(frameContainer) + 0.03704 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.50000 * CGRectGetHeight(frameContainer)) controlPoint1: CGPointMake(CGRectGetMinX(frameContainer) + 0.10363 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.66667 * CGRectGetHeight(frameContainer)) controlPoint2: CGPointMake(CGRectGetMinX(frameContainer) + 0.03704 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.59205 * CGRectGetHeight(frameContainer))];
- [bezierPath addCurveToPoint: CGPointMake(CGRectGetMinX(frameContainer) + 0.15189 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.33759 * CGRectGetHeight(frameContainer)) controlPoint1: CGPointMake(CGRectGetMinX(frameContainer) + 0.03704 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.42103 * CGRectGetHeight(frameContainer)) controlPoint2: CGPointMake(CGRectGetMinX(frameContainer) + 0.08610 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.35466 * CGRectGetHeight(frameContainer))];
- [bezierPath addLineToPoint: CGPointMake(CGRectGetMinX(frameContainer) + 0.15189 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.33759 * CGRectGetHeight(frameContainer))];
- [bezierPath addCurveToPoint: CGPointMake(CGRectGetMinX(frameContainer) + 0.14815 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.29167 * CGRectGetHeight(frameContainer)) controlPoint1: CGPointMake(CGRectGetMinX(frameContainer) + 0.14943 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.32270 * CGRectGetHeight(frameContainer)) controlPoint2: CGPointMake(CGRectGetMinX(frameContainer) + 0.14815 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.30735 * CGRectGetHeight(frameContainer))];
- [bezierPath addCurveToPoint: CGPointMake(CGRectGetMinX(frameContainer) + 0.37037 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.04167 * CGRectGetHeight(frameContainer)) controlPoint1: CGPointMake(CGRectGetMinX(frameContainer) + 0.14815 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.15360 * CGRectGetHeight(frameContainer)) controlPoint2: CGPointMake(CGRectGetMinX(frameContainer) + 0.24764 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.04167 * CGRectGetHeight(frameContainer))];
- [bezierPath addCurveToPoint: CGPointMake(CGRectGetMinX(frameContainer) + 0.58005 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.20867 * CGRectGetHeight(frameContainer)) controlPoint1: CGPointMake(CGRectGetMinX(frameContainer) + 0.46724 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.04167 * CGRectGetHeight(frameContainer)) controlPoint2: CGPointMake(CGRectGetMinX(frameContainer) + 0.54963 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.11139 * CGRectGetHeight(frameContainer))];
- [bezierPath addCurveToPoint: CGPointMake(CGRectGetMinX(frameContainer) + 0.68519 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.16667 * CGRectGetHeight(frameContainer)) controlPoint1: CGPointMake(CGRectGetMinX(frameContainer) + 0.60873 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.18241 * CGRectGetHeight(frameContainer)) controlPoint2: CGPointMake(CGRectGetMinX(frameContainer) + 0.64532 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.16667 * CGRectGetHeight(frameContainer))];
- [bezierPath addCurveToPoint: CGPointMake(CGRectGetMinX(frameContainer) + 0.85128 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.33846 * CGRectGetHeight(frameContainer)) controlPoint1: CGPointMake(CGRectGetMinX(frameContainer) + 0.77253 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.16667 * CGRectGetHeight(frameContainer)) controlPoint2: CGPointMake(CGRectGetMinX(frameContainer) + 0.84418 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.24226 * CGRectGetHeight(frameContainer))];
- [bezierPath addLineToPoint: CGPointMake(CGRectGetMinX(frameContainer) + 0.85128 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.33846 * CGRectGetHeight(frameContainer))];
- [bezierPath addCurveToPoint: CGPointMake(CGRectGetMinX(frameContainer) + 0.96296 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.50000 * CGRectGetHeight(frameContainer)) controlPoint1: CGPointMake(CGRectGetMinX(frameContainer) + 0.91535 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.35680 * CGRectGetHeight(frameContainer)) controlPoint2: CGPointMake(CGRectGetMinX(frameContainer) + 0.96296 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.42217 * CGRectGetHeight(frameContainer))];
- [bezierPath addCurveToPoint: CGPointMake(CGRectGetMinX(frameContainer) + 0.81471 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.66667 * CGRectGetHeight(frameContainer)) controlPoint1: CGPointMake(CGRectGetMinX(frameContainer) + 0.96296 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.59186 * CGRectGetHeight(frameContainer)) controlPoint2: CGPointMake(CGRectGetMinX(frameContainer) + 0.89659 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.66667 * CGRectGetHeight(frameContainer))];
- [bezierPath addLineToPoint: CGPointMake(CGRectGetMinX(frameContainer) + 0.55556 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.66667 * CGRectGetHeight(frameContainer))];
- [bezierPath addLineToPoint: CGPointMake(CGRectGetMinX(frameContainer) + 0.55556 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.70833 * CGRectGetHeight(frameContainer))];
- [bezierPath addLineToPoint: CGPointMake(CGRectGetMinX(frameContainer) + 0.81484 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.70833 * CGRectGetHeight(frameContainer))];
- [bezierPath addCurveToPoint: CGPointMake(CGRectGetMinX(frameContainer) + 1.00000 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.50000 * CGRectGetHeight(frameContainer)) controlPoint1: CGPointMake(CGRectGetMinX(frameContainer) + 0.91710 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.70833 * CGRectGetHeight(frameContainer)) controlPoint2: CGPointMake(CGRectGetMinX(frameContainer) + 1.00000 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.61483 * CGRectGetHeight(frameContainer))];
- [bezierPath addCurveToPoint: CGPointMake(CGRectGetMinX(frameContainer) + 0.88455 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.30690 * CGRectGetHeight(frameContainer)) controlPoint1: CGPointMake(CGRectGetMinX(frameContainer) + 1.00000 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.41265 * CGRectGetHeight(frameContainer)) controlPoint2: CGPointMake(CGRectGetMinX(frameContainer) + 0.95234 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.33785 * CGRectGetHeight(frameContainer))];
- [bezierPath addLineToPoint: CGPointMake(CGRectGetMinX(frameContainer) + 0.88455 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.30690 * CGRectGetHeight(frameContainer))];
- [bezierPath addCurveToPoint: CGPointMake(CGRectGetMinX(frameContainer) + 0.68519 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.12500 * CGRectGetHeight(frameContainer)) controlPoint1: CGPointMake(CGRectGetMinX(frameContainer) + 0.86519 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.20301 * CGRectGetHeight(frameContainer)) controlPoint2: CGPointMake(CGRectGetMinX(frameContainer) + 0.78328 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.12500 * CGRectGetHeight(frameContainer))];
- [bezierPath addCurveToPoint: CGPointMake(CGRectGetMinX(frameContainer) + 0.59607 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.14804 * CGRectGetHeight(frameContainer)) controlPoint1: CGPointMake(CGRectGetMinX(frameContainer) + 0.65323 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.12500 * CGRectGetHeight(frameContainer)) controlPoint2: CGPointMake(CGRectGetMinX(frameContainer) + 0.62299 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.13328 * CGRectGetHeight(frameContainer))];
- [bezierPath addCurveToPoint: CGPointMake(CGRectGetMinX(frameContainer) + 0.37037 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.00000 * CGRectGetHeight(frameContainer)) controlPoint1: CGPointMake(CGRectGetMinX(frameContainer) + 0.55153 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.05964 * CGRectGetHeight(frameContainer)) controlPoint2: CGPointMake(CGRectGetMinX(frameContainer) + 0.46714 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.00000 * CGRectGetHeight(frameContainer))];
- [bezierPath addCurveToPoint: CGPointMake(CGRectGetMinX(frameContainer) + 0.11111 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.29167 * CGRectGetHeight(frameContainer)) controlPoint1: CGPointMake(CGRectGetMinX(frameContainer) + 0.22719 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.00000 * CGRectGetHeight(frameContainer)) controlPoint2: CGPointMake(CGRectGetMinX(frameContainer) + 0.11111 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.13058 * CGRectGetHeight(frameContainer))];
- [bezierPath addCurveToPoint: CGPointMake(CGRectGetMinX(frameContainer) + 0.11155 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.30881 * CGRectGetHeight(frameContainer)) controlPoint1: CGPointMake(CGRectGetMinX(frameContainer) + 0.11111 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.29742 * CGRectGetHeight(frameContainer)) controlPoint2: CGPointMake(CGRectGetMinX(frameContainer) + 0.11126 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.30314 * CGRectGetHeight(frameContainer))];
- [bezierPath addLineToPoint: CGPointMake(CGRectGetMinX(frameContainer) + 0.11155 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.30881 * CGRectGetHeight(frameContainer))];
- [bezierPath addCurveToPoint: CGPointMake(CGRectGetMinX(frameContainer) + 0.00000 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.50000 * CGRectGetHeight(frameContainer)) controlPoint1: CGPointMake(CGRectGetMinX(frameContainer) + 0.04591 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.34090 * CGRectGetHeight(frameContainer)) controlPoint2: CGPointMake(CGRectGetMinX(frameContainer) + 0.00000 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.41455 * CGRectGetHeight(frameContainer))];
- [bezierPath addCurveToPoint: CGPointMake(CGRectGetMinX(frameContainer) + 0.18516 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.70833 * CGRectGetHeight(frameContainer)) controlPoint1: CGPointMake(CGRectGetMinX(frameContainer) + 0.00000 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.61506 * CGRectGetHeight(frameContainer)) controlPoint2: CGPointMake(CGRectGetMinX(frameContainer) + 0.08268 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.70833 * CGRectGetHeight(frameContainer))];
- [bezierPath addLineToPoint: CGPointMake(CGRectGetMinX(frameContainer) + 0.44444 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.70833 * CGRectGetHeight(frameContainer))];
- [bezierPath addLineToPoint: CGPointMake(CGRectGetMinX(frameContainer) + 0.44444 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.66667 * CGRectGetHeight(frameContainer))];
- [bezierPath addLineToPoint: CGPointMake(CGRectGetMinX(frameContainer) + 0.44444 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.66667 * CGRectGetHeight(frameContainer))];
- [bezierPath addLineToPoint: CGPointMake(CGRectGetMinX(frameContainer) + 0.44444 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.66667 * CGRectGetHeight(frameContainer))];
- [bezierPath closePath];
- bezierPath.miterLimit = 4;
-
- bezierPath.usesEvenOddFillRule = YES;
-
- [self.strokeColor setFill];
- [bezierPath fill];
-}
-- (void) drawStatusIndeterminate{
- //Nothing, just the layer animation.
-}
-- (void) drawStatusRunning{
-
- CGPoint center = CGPointMake(CGRectGetMidX(self.bounds), CGRectGetMidY(self.bounds));
- CGFloat radius = (MIN(CGRectGetWidth(self.bounds) / 2, CGRectGetHeight(self.bounds) / 2))-1;
- CGFloat startAngle = (CGFloat)(0);
- CGFloat endAngle = (CGFloat)(2*M_PI);
-
-
- //// Oval Drawing
- UIBezierPath* ovalPath = [UIBezierPath bezierPathWithArcCenter:center radius:radius startAngle:startAngle endAngle:endAngle clockwise:YES];
- [[UIColor clearColor] setFill];
- [ovalPath fill];
- [self.strokeColor setStroke];
- ovalPath.lineWidth = 1.5;
- [ovalPath stroke];
-
- CGRect page1 = self.bounds;
- page1.origin.x = CGRectGetMidX(self.bounds) - self.bounds.size.width / 8;
- page1.origin.y = CGRectGetMidY(self.bounds) - self.bounds.size.height / 8;
- page1.size.width = self.bounds.size.width / 4;
- page1.size.height = self.bounds.size.height /4;
-
- //// Rectangle Drawing
- UIBezierPath* rectanglePath = [UIBezierPath bezierPathWithRect: page1];
- [self.strokeColor setFill];
- [rectanglePath fill];
-
-}
-- (void) drawStatusComplete{
-
- CGRect frameContainer;
-
- frameContainer.origin.x = CGRectGetMidX(self.bounds) - self.bounds.size.width / 3;
- frameContainer.origin.y = CGRectGetMidY(self.bounds) - self.bounds.size.height / 3;
- frameContainer.size.width = self.bounds.size.width / 1.5;
- frameContainer.size.height = self.bounds.size.height / 1.5;
-
- //// Bezier Drawing
- UIBezierPath* bezierPath = [UIBezierPath bezierPath];
- [bezierPath moveToPoint: CGPointMake(CGRectGetMinX(frameContainer) + 0.50000 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 1.00000 * CGRectGetHeight(frameContainer))];
- [bezierPath addCurveToPoint: CGPointMake(CGRectGetMinX(frameContainer) + 1.00000 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.50000 * CGRectGetHeight(frameContainer)) controlPoint1: CGPointMake(CGRectGetMinX(frameContainer) + 0.77614 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 1.00000 * CGRectGetHeight(frameContainer)) controlPoint2: CGPointMake(CGRectGetMinX(frameContainer) + 1.00000 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.77614 * CGRectGetHeight(frameContainer))];
- [bezierPath addCurveToPoint: CGPointMake(CGRectGetMinX(frameContainer) + 0.50000 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.00000 * CGRectGetHeight(frameContainer)) controlPoint1: CGPointMake(CGRectGetMinX(frameContainer) + 1.00000 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.22386 * CGRectGetHeight(frameContainer)) controlPoint2: CGPointMake(CGRectGetMinX(frameContainer) + 0.77614 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.00000 * CGRectGetHeight(frameContainer))];
- [bezierPath addCurveToPoint: CGPointMake(CGRectGetMinX(frameContainer) + 0.00000 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.50000 * CGRectGetHeight(frameContainer)) controlPoint1: CGPointMake(CGRectGetMinX(frameContainer) + 0.22386 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.00000 * CGRectGetHeight(frameContainer)) controlPoint2: CGPointMake(CGRectGetMinX(frameContainer) + 0.00000 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.22386 * CGRectGetHeight(frameContainer))];
- [bezierPath addCurveToPoint: CGPointMake(CGRectGetMinX(frameContainer) + 0.50000 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 1.00000 * CGRectGetHeight(frameContainer)) controlPoint1: CGPointMake(CGRectGetMinX(frameContainer) + 0.00000 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.77614 * CGRectGetHeight(frameContainer)) controlPoint2: CGPointMake(CGRectGetMinX(frameContainer) + 0.22386 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 1.00000 * CGRectGetHeight(frameContainer))];
- [bezierPath addLineToPoint: CGPointMake(CGRectGetMinX(frameContainer) + 0.50000 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 1.00000 * CGRectGetHeight(frameContainer))];
- [bezierPath closePath];
- [bezierPath moveToPoint: CGPointMake(CGRectGetMinX(frameContainer) + 0.50000 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.95455 * CGRectGetHeight(frameContainer))];
- [bezierPath addCurveToPoint: CGPointMake(CGRectGetMinX(frameContainer) + 0.95455 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.50000 * CGRectGetHeight(frameContainer)) controlPoint1: CGPointMake(CGRectGetMinX(frameContainer) + 0.75104 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.95455 * CGRectGetHeight(frameContainer)) controlPoint2: CGPointMake(CGRectGetMinX(frameContainer) + 0.95455 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.75104 * CGRectGetHeight(frameContainer))];
- [bezierPath addCurveToPoint: CGPointMake(CGRectGetMinX(frameContainer) + 0.50000 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.04545 * CGRectGetHeight(frameContainer)) controlPoint1: CGPointMake(CGRectGetMinX(frameContainer) + 0.95455 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.24896 * CGRectGetHeight(frameContainer)) controlPoint2: CGPointMake(CGRectGetMinX(frameContainer) + 0.75104 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.04545 * CGRectGetHeight(frameContainer))];
- [bezierPath addCurveToPoint: CGPointMake(CGRectGetMinX(frameContainer) + 0.04545 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.50000 * CGRectGetHeight(frameContainer)) controlPoint1: CGPointMake(CGRectGetMinX(frameContainer) + 0.24896 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.04545 * CGRectGetHeight(frameContainer)) controlPoint2: CGPointMake(CGRectGetMinX(frameContainer) + 0.04545 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.24896 * CGRectGetHeight(frameContainer))];
- [bezierPath addCurveToPoint: CGPointMake(CGRectGetMinX(frameContainer) + 0.50000 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.95455 * CGRectGetHeight(frameContainer)) controlPoint1: CGPointMake(CGRectGetMinX(frameContainer) + 0.04545 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.75104 * CGRectGetHeight(frameContainer)) controlPoint2: CGPointMake(CGRectGetMinX(frameContainer) + 0.24896 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.95455 * CGRectGetHeight(frameContainer))];
- [bezierPath closePath];
- [bezierPath moveToPoint: CGPointMake(CGRectGetMinX(frameContainer) + 0.30715 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.72499 * CGRectGetHeight(frameContainer))];
- [bezierPath addLineToPoint: CGPointMake(CGRectGetMinX(frameContainer) + 0.27501 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.69285 * CGRectGetHeight(frameContainer))];
- [bezierPath addLineToPoint: CGPointMake(CGRectGetMinX(frameContainer) + 0.46786 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.50000 * CGRectGetHeight(frameContainer))];
- [bezierPath addLineToPoint: CGPointMake(CGRectGetMinX(frameContainer) + 0.27501 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.30715 * CGRectGetHeight(frameContainer))];
- [bezierPath addLineToPoint: CGPointMake(CGRectGetMinX(frameContainer) + 0.30715 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.27501 * CGRectGetHeight(frameContainer))];
- [bezierPath addLineToPoint: CGPointMake(CGRectGetMinX(frameContainer) + 0.50000 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.46786 * CGRectGetHeight(frameContainer))];
- [bezierPath addLineToPoint: CGPointMake(CGRectGetMinX(frameContainer) + 0.69285 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.27501 * CGRectGetHeight(frameContainer))];
- [bezierPath addLineToPoint: CGPointMake(CGRectGetMinX(frameContainer) + 0.72499 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.30715 * CGRectGetHeight(frameContainer))];
- [bezierPath addLineToPoint: CGPointMake(CGRectGetMinX(frameContainer) + 0.53214 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.50000 * CGRectGetHeight(frameContainer))];
- [bezierPath addLineToPoint: CGPointMake(CGRectGetMinX(frameContainer) + 0.72499 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.69285 * CGRectGetHeight(frameContainer))];
- [bezierPath addLineToPoint: CGPointMake(CGRectGetMinX(frameContainer) + 0.69285 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.72499 * CGRectGetHeight(frameContainer))];
- [bezierPath addLineToPoint: CGPointMake(CGRectGetMinX(frameContainer) + 0.50000 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.53214 * CGRectGetHeight(frameContainer))];
- [bezierPath addLineToPoint: CGPointMake(CGRectGetMinX(frameContainer) + 0.30715 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.72499 * CGRectGetHeight(frameContainer))];
- [bezierPath closePath];
- bezierPath.miterLimit = 4;
-
- bezierPath.usesEvenOddFillRule = YES;
-
- [self.strokeColor setFill];
- [bezierPath fill];
-}
-
-
-- (void)updateColor:(UIColor*)color {
- self.strokeColor = color;
-}
-@end
diff --git a/ACPDownload/ACPStaticImagesAlternative.h b/ACPDownload/ACPStaticImagesAlternative.h
deleted file mode 100644
index b086511..0000000
--- a/ACPDownload/ACPStaticImagesAlternative.h
+++ /dev/null
@@ -1,14 +0,0 @@
-//
-// ACPStaticImagesAlternative.h
-// ACPDownload
-//
-// Created by Palmero, Antonio on 1/19/15.
-// Copyright (c) 2015 Antonio Casero Palmero. All rights reserved.
-//
-
-#import
-#import "ACPStaticImagesProtocol.h"
-@interface ACPStaticImagesAlternative : NSObject
-
-
-@end
diff --git a/ACPDownload/ACPStaticImagesAlternative.m b/ACPDownload/ACPStaticImagesAlternative.m
deleted file mode 100644
index d8b3986..0000000
--- a/ACPDownload/ACPStaticImagesAlternative.m
+++ /dev/null
@@ -1,140 +0,0 @@
-//
-// ACPStaticImagesAlternative.m
-// ACPDownload
-//
-// Created by Palmero, Antonio on 1/19/15.
-// Copyright (c) 2015 Antonio Casero Palmero. All rights reserved.
-//
-
-#import "ACPStaticImagesAlternative.h"
-
-@implementation ACPStaticImagesAlternative
-
-@synthesize strokeColor,bounds;
-
-- (void)updateFrame:(CGRect)frame {
- self.bounds = frame;
-}
-
-- (void)updateColor:(UIColor*)color {
- self.strokeColor = color;
-}
-
-- (void) drawStatusNone{
- CGRect frameContainer;
- frameContainer.origin.x = CGRectGetMidX(self.bounds) - self.bounds.size.width / 3;
- frameContainer.origin.y = CGRectGetMidY(self.bounds) - self.bounds.size.height / 3;
- frameContainer.size.width = self.bounds.size.width / 1.5;
- frameContainer.size.height = self.bounds.size.height / 1.5;
-
- CGRect groupInFrame = CGRectMake(CGRectGetMinX(frameContainer) + floor(CGRectGetWidth(frameContainer) * 0.09375 + 0.5), CGRectGetMinY(frameContainer) + floor(CGRectGetHeight(frameContainer) * 0.02539 + 0.5), floor(CGRectGetWidth(frameContainer) * 0.90625 + 0.5) - floor(CGRectGetWidth(frameContainer) * 0.09375 + 0.5), floor(CGRectGetHeight(frameContainer) * 1.00000 + 0.5) - floor(CGRectGetHeight(frameContainer) * 0.02539 + 0.5));
-
- //Arrow
- UIBezierPath* bezierPath = [UIBezierPath bezierPath];
- [bezierPath moveToPoint: CGPointMake(CGRectGetMinX(groupInFrame) + 0.28199 * CGRectGetWidth(groupInFrame), CGRectGetMinY(groupInFrame) + 0.49896 * CGRectGetHeight(groupInFrame))];
- [bezierPath addLineToPoint: CGPointMake(CGRectGetMinX(groupInFrame) + 0.24671 * CGRectGetWidth(groupInFrame), CGRectGetMinY(groupInFrame) + 0.52837 * CGRectGetHeight(groupInFrame))];
- [bezierPath addLineToPoint: CGPointMake(CGRectGetMinX(groupInFrame) + 0.50026 * CGRectGetWidth(groupInFrame), CGRectGetMinY(groupInFrame) + 0.73975 * CGRectGetHeight(groupInFrame))];
- [bezierPath addLineToPoint: CGPointMake(CGRectGetMinX(groupInFrame) + 0.75381 * CGRectGetWidth(groupInFrame), CGRectGetMinY(groupInFrame) + 0.52837 * CGRectGetHeight(groupInFrame))];
- [bezierPath addLineToPoint: CGPointMake(CGRectGetMinX(groupInFrame) + 0.71853 * CGRectGetWidth(groupInFrame), CGRectGetMinY(groupInFrame) + 0.49896 * CGRectGetHeight(groupInFrame))];
- [bezierPath addLineToPoint: CGPointMake(CGRectGetMinX(groupInFrame) + 0.52521 * CGRectGetWidth(groupInFrame), CGRectGetMinY(groupInFrame) + 0.66013 * CGRectGetHeight(groupInFrame))];
- [bezierPath addLineToPoint: CGPointMake(CGRectGetMinX(groupInFrame) + 0.52521 * CGRectGetWidth(groupInFrame), CGRectGetMinY(groupInFrame) + 0.00179 * CGRectGetHeight(groupInFrame))];
- [bezierPath addLineToPoint: CGPointMake(CGRectGetMinX(groupInFrame) + 0.47531 * CGRectGetWidth(groupInFrame), CGRectGetMinY(groupInFrame) + 0.00179 * CGRectGetHeight(groupInFrame))];
- [bezierPath addLineToPoint: CGPointMake(CGRectGetMinX(groupInFrame) + 0.47531 * CGRectGetWidth(groupInFrame), CGRectGetMinY(groupInFrame) + 0.66013 * CGRectGetHeight(groupInFrame))];
- [bezierPath addLineToPoint: CGPointMake(CGRectGetMinX(groupInFrame) + 0.28199 * CGRectGetWidth(groupInFrame), CGRectGetMinY(groupInFrame) + 0.49896 * CGRectGetHeight(groupInFrame))];
- [bezierPath closePath];
- bezierPath.miterLimit = 4;
-
- [self.strokeColor setFill];
- [bezierPath fill];
-
-
- //Cube
- UIBezierPath* bezier2Path = [UIBezierPath bezierPath];
- [bezier2Path moveToPoint: CGPointMake(CGRectGetMinX(groupInFrame) + 0.62499 * CGRectGetWidth(groupInFrame), CGRectGetMinY(groupInFrame) + 0.20975 * CGRectGetHeight(groupInFrame))];
- [bezier2Path addLineToPoint: CGPointMake(CGRectGetMinX(groupInFrame) + 0.62499 * CGRectGetWidth(groupInFrame), CGRectGetMinY(groupInFrame) + 0.25134 * CGRectGetHeight(groupInFrame))];
- [bezier2Path addLineToPoint: CGPointMake(CGRectGetMinX(groupInFrame) + 0.94928 * CGRectGetWidth(groupInFrame), CGRectGetMinY(groupInFrame) + 0.25134 * CGRectGetHeight(groupInFrame))];
- [bezier2Path addLineToPoint: CGPointMake(CGRectGetMinX(groupInFrame) + 0.94928 * CGRectGetWidth(groupInFrame), CGRectGetMinY(groupInFrame) + 0.95841 * CGRectGetHeight(groupInFrame))];
- [bezier2Path addLineToPoint: CGPointMake(CGRectGetMinX(groupInFrame) + 0.05125 * CGRectGetWidth(groupInFrame), CGRectGetMinY(groupInFrame) + 0.95841 * CGRectGetHeight(groupInFrame))];
- [bezier2Path addLineToPoint: CGPointMake(CGRectGetMinX(groupInFrame) + 0.05125 * CGRectGetWidth(groupInFrame), CGRectGetMinY(groupInFrame) + 0.25134 * CGRectGetHeight(groupInFrame))];
- [bezier2Path addLineToPoint: CGPointMake(CGRectGetMinX(groupInFrame) + 0.37553 * CGRectGetWidth(groupInFrame), CGRectGetMinY(groupInFrame) + 0.25134 * CGRectGetHeight(groupInFrame))];
- [bezier2Path addLineToPoint: CGPointMake(CGRectGetMinX(groupInFrame) + 0.37553 * CGRectGetWidth(groupInFrame), CGRectGetMinY(groupInFrame) + 0.20975 * CGRectGetHeight(groupInFrame))];
- [bezier2Path addLineToPoint: CGPointMake(CGRectGetMinX(groupInFrame) + 0.00135 * CGRectGetWidth(groupInFrame), CGRectGetMinY(groupInFrame) + 0.20975 * CGRectGetHeight(groupInFrame))];
- [bezier2Path addLineToPoint: CGPointMake(CGRectGetMinX(groupInFrame) + 0.00135 * CGRectGetWidth(groupInFrame), CGRectGetMinY(groupInFrame) + 1.00000 * CGRectGetHeight(groupInFrame))];
- [bezier2Path addLineToPoint: CGPointMake(CGRectGetMinX(groupInFrame) + 0.99917 * CGRectGetWidth(groupInFrame), CGRectGetMinY(groupInFrame) + 1.00000 * CGRectGetHeight(groupInFrame))];
- [bezier2Path addLineToPoint: CGPointMake(CGRectGetMinX(groupInFrame) + 0.99917 * CGRectGetWidth(groupInFrame), CGRectGetMinY(groupInFrame) + 0.20975 * CGRectGetHeight(groupInFrame))];
- [bezier2Path addLineToPoint: CGPointMake(CGRectGetMinX(groupInFrame) + 0.62499 * CGRectGetWidth(groupInFrame), CGRectGetMinY(groupInFrame) + 0.20975 * CGRectGetHeight(groupInFrame))];
- [bezier2Path closePath];
- bezier2Path.miterLimit = 4;
-
- [self.strokeColor setFill];
- [bezier2Path fill];
-
-
-
-
-}
-- (void) drawStatusIndeterminate{
- //Nothing, just the layer animation.
-}
-- (void) drawStatusRunning{
-
- CGPoint center = CGPointMake(CGRectGetMidX(self.bounds), CGRectGetMidY(self.bounds));
- CGFloat radius = (MIN(CGRectGetWidth(self.bounds) / 2, CGRectGetHeight(self.bounds) / 2))-1;
- CGFloat startAngle = (CGFloat)(0);
- CGFloat endAngle = (CGFloat)(2*M_PI);
-
-
- //// The circle
- UIBezierPath* ovalPath = [UIBezierPath bezierPathWithArcCenter:center radius:radius startAngle:startAngle endAngle:endAngle clockwise:YES];
- [[UIColor clearColor] setFill];
- [ovalPath fill];
- [self.strokeColor setStroke];
- ovalPath.lineWidth = 1.5;
- [ovalPath stroke];
-
- CGRect page1 = self.bounds;
- page1.origin.x = CGRectGetMidX(self.bounds) - self.bounds.size.width / 8;
- page1.origin.y = CGRectGetMidY(self.bounds) - self.bounds.size.height / 8;
- page1.size.width = self.bounds.size.width / 4;
- page1.size.height = self.bounds.size.height /4;
-
- //// The stop in the middle
- UIBezierPath* rectanglePath = [UIBezierPath bezierPathWithRect: page1];
- [self.strokeColor setFill];
- [rectanglePath fill];
-
-}
-- (void) drawStatusComplete{
-
- CGRect frameContainer;
- frameContainer.origin.x = CGRectGetMidX(self.bounds) - self.bounds.size.width / 3;
- frameContainer.origin.y = CGRectGetMidY(self.bounds) - self.bounds.size.height / 3;
- frameContainer.size.width = self.bounds.size.width / 1.5;
- frameContainer.size.height = self.bounds.size.height / 1.5;
-
- UIBezierPath* bezierPath = [UIBezierPath bezierPath];
- [bezierPath moveToPoint: CGPointMake(CGRectGetMinX(frameContainer) + 0.50000 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.00000 * CGRectGetHeight(frameContainer))];
- [bezierPath addCurveToPoint: CGPointMake(CGRectGetMinX(frameContainer) + 0.00000 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.50000 * CGRectGetHeight(frameContainer)) controlPoint1: CGPointMake(CGRectGetMinX(frameContainer) + 0.22500 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.00000 * CGRectGetHeight(frameContainer)) controlPoint2: CGPointMake(CGRectGetMinX(frameContainer) + 0.00000 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.22500 * CGRectGetHeight(frameContainer))];
- [bezierPath addCurveToPoint: CGPointMake(CGRectGetMinX(frameContainer) + 0.50000 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 1.00000 * CGRectGetHeight(frameContainer)) controlPoint1: CGPointMake(CGRectGetMinX(frameContainer) + 0.00000 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.77500 * CGRectGetHeight(frameContainer)) controlPoint2: CGPointMake(CGRectGetMinX(frameContainer) + 0.22500 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 1.00000 * CGRectGetHeight(frameContainer))];
- [bezierPath addCurveToPoint: CGPointMake(CGRectGetMinX(frameContainer) + 1.00000 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.50000 * CGRectGetHeight(frameContainer)) controlPoint1: CGPointMake(CGRectGetMinX(frameContainer) + 0.77500 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 1.00000 * CGRectGetHeight(frameContainer)) controlPoint2: CGPointMake(CGRectGetMinX(frameContainer) + 1.00000 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.77500 * CGRectGetHeight(frameContainer))];
- [bezierPath addCurveToPoint: CGPointMake(CGRectGetMinX(frameContainer) + 0.50000 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.00000 * CGRectGetHeight(frameContainer)) controlPoint1: CGPointMake(CGRectGetMinX(frameContainer) + 1.00000 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.22500 * CGRectGetHeight(frameContainer)) controlPoint2: CGPointMake(CGRectGetMinX(frameContainer) + 0.77500 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.00000 * CGRectGetHeight(frameContainer))];
- [bezierPath addLineToPoint: CGPointMake(CGRectGetMinX(frameContainer) + 0.50000 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.00000 * CGRectGetHeight(frameContainer))];
- [bezierPath closePath];
- [bezierPath moveToPoint: CGPointMake(CGRectGetMinX(frameContainer) + 0.40000 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.72500 * CGRectGetHeight(frameContainer))];
- [bezierPath addLineToPoint: CGPointMake(CGRectGetMinX(frameContainer) + 0.40000 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.27500 * CGRectGetHeight(frameContainer))];
- [bezierPath addLineToPoint: CGPointMake(CGRectGetMinX(frameContainer) + 0.70000 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.50000 * CGRectGetHeight(frameContainer))];
- [bezierPath addLineToPoint: CGPointMake(CGRectGetMinX(frameContainer) + 0.40000 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.72500 * CGRectGetHeight(frameContainer))];
- [bezierPath addLineToPoint: CGPointMake(CGRectGetMinX(frameContainer) + 0.40000 * CGRectGetWidth(frameContainer), CGRectGetMinY(frameContainer) + 0.72500 * CGRectGetHeight(frameContainer))];
- [bezierPath closePath];
- bezierPath.miterLimit = 4;
-
- bezierPath.usesEvenOddFillRule = YES;
-
- [self.strokeColor setFill];
- [bezierPath fill];
-
-}
-
-
-
-@end
diff --git a/ACPDownload/ACPStaticImagesProtocol.h b/ACPDownload/ACPStaticImagesProtocol.h
deleted file mode 100644
index 7766824..0000000
--- a/ACPDownload/ACPStaticImagesProtocol.h
+++ /dev/null
@@ -1,66 +0,0 @@
-//
-// ACPStaticImages.h
-// ACPDownload
-//
-// Created by Antonio Casero Palmero on 18/01/15.
-// Copyright (c) 2015 Antonio Casero Palmero. All rights reserved.
-//
-
-#import
-#import
-
-
-/**
- `ACPStaticImagesProtocol`
-
- ##Purpose
- Protocol to define the set of static images for any state in the main view.
- @see ACPStaticImagesAlternative ACPStaticImages
-
- ##Note
- No need for different resolutions, UIBezierPath is used to paint the images.
-
- @see UIBezierPath;
- */
-
-@protocol ACPStaticImagesProtocol
-/**
- * Basic properties.
- */
-@property (nonatomic, assign) CGRect bounds;
-@property (nonatomic, strong) UIColor * strokeColor;
-
-/**
- * Draw the image for the ACPDownloadStatusNone
- */
-- (void) drawStatusNone;
-
-/**
- * Draw the image for the ACPDownloadStatusIndeterminate
- */
-- (void) drawStatusIndeterminate;
-
-/**
- * Draw the image for the ACPDownloadStatusRunning
- */
-- (void) drawStatusRunning;
-
-/**
- * Draw the image for the ACPDownloadStatusCompleted
- */
-- (void) drawStatusComplete;
-
-/**
- * Update the color of the images. By default is the tintColor.
- *
- * @param color Color selected.
- */
-- (void) updateColor:(UIColor*)color;
-
-/**
-* This method will set the right frame to layer
-*
-* @param frame current frame.
-*/
-- (void)updateFrame:(CGRect)frame;
-@end
diff --git a/Example/AppDelegate.h b/Example/AppDelegate.h
deleted file mode 100644
index 1aa214c..0000000
--- a/Example/AppDelegate.h
+++ /dev/null
@@ -1,17 +0,0 @@
-//
-// AppDelegate.h
-// ACPDownload
-//
-// Created by Antonio Casero Palmero on 10/01/15.
-// Copyright (c) 2015 Antonio Casero Palmero. All rights reserved.
-//
-
-#import
-
-@interface AppDelegate : UIResponder
-
-@property (strong, nonatomic) UIWindow *window;
-
-
-@end
-
diff --git a/Example/AppDelegate.m b/Example/AppDelegate.m
deleted file mode 100644
index d237c37..0000000
--- a/Example/AppDelegate.m
+++ /dev/null
@@ -1,45 +0,0 @@
-//
-// AppDelegate.m
-// ACPDownload
-//
-// Created by Antonio Casero Palmero on 10/01/15.
-// Copyright (c) 2015 Antonio Casero Palmero. All rights reserved.
-//
-
-#import "AppDelegate.h"
-
-@interface AppDelegate ()
-
-@end
-
-@implementation AppDelegate
-
-
-- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
- // Override point for customization after application launch.
- return YES;
-}
-
-- (void)applicationWillResignActive:(UIApplication *)application {
- // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
- // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game.
-}
-
-- (void)applicationDidEnterBackground:(UIApplication *)application {
- // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.
- // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
-}
-
-- (void)applicationWillEnterForeground:(UIApplication *)application {
- // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background.
-}
-
-- (void)applicationDidBecomeActive:(UIApplication *)application {
- // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
-}
-
-- (void)applicationWillTerminate:(UIApplication *)application {
- // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
-}
-
-@end
diff --git a/Example/Base.lproj/LaunchScreen.xib b/Example/Base.lproj/LaunchScreen.xib
deleted file mode 100644
index 331e1b1..0000000
--- a/Example/Base.lproj/LaunchScreen.xib
+++ /dev/null
@@ -1,41 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/Example/Base.lproj/Main.storyboard b/Example/Base.lproj/Main.storyboard
deleted file mode 100644
index 52f8104..0000000
--- a/Example/Base.lproj/Main.storyboard
+++ /dev/null
@@ -1,133 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/Example/ExampleCell.h b/Example/ExampleCell.h
deleted file mode 100644
index e7ca0e8..0000000
--- a/Example/ExampleCell.h
+++ /dev/null
@@ -1,18 +0,0 @@
-//
-// ExampleCell.h
-// ACPDownload
-//
-// Created by Antonio Casero Palmero on 18/01/15.
-// Copyright (c) 2015 Antonio Casero Palmero. All rights reserved.
-//
-
-#import
-#import "ACPDownloadView.h"
-
-@interface ExampleCell : UITableViewCell
-
-@property (weak, nonatomic) IBOutlet UILabel *exampleLabel;
-@property (weak, nonatomic) IBOutlet ACPDownloadView *exampleIndicator;
-
-
-@end
diff --git a/Example/ExampleCell.m b/Example/ExampleCell.m
deleted file mode 100644
index 2dd3086..0000000
--- a/Example/ExampleCell.m
+++ /dev/null
@@ -1,13 +0,0 @@
-//
-// ExampleCell.m
-// ACPDownload
-//
-// Created by Antonio Casero Palmero on 18/01/15.
-// Copyright (c) 2015 Antonio Casero Palmero. All rights reserved.
-//
-
-#import "ExampleCell.h"
-
-@implementation ExampleCell
-
-@end
diff --git a/Example/Images.xcassets/AppIcon.appiconset/Contents.json b/Example/Images.xcassets/AppIcon.appiconset/Contents.json
deleted file mode 100644
index 36d2c80..0000000
--- a/Example/Images.xcassets/AppIcon.appiconset/Contents.json
+++ /dev/null
@@ -1,68 +0,0 @@
-{
- "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"
- },
- {
- "idiom" : "ipad",
- "size" : "29x29",
- "scale" : "1x"
- },
- {
- "idiom" : "ipad",
- "size" : "29x29",
- "scale" : "2x"
- },
- {
- "idiom" : "ipad",
- "size" : "40x40",
- "scale" : "1x"
- },
- {
- "idiom" : "ipad",
- "size" : "40x40",
- "scale" : "2x"
- },
- {
- "idiom" : "ipad",
- "size" : "76x76",
- "scale" : "1x"
- },
- {
- "idiom" : "ipad",
- "size" : "76x76",
- "scale" : "2x"
- }
- ],
- "info" : {
- "version" : 1,
- "author" : "xcode"
- }
-}
\ No newline at end of file
diff --git a/Example/Info.plist b/Example/Info.plist
deleted file mode 100644
index e38a3bd..0000000
--- a/Example/Info.plist
+++ /dev/null
@@ -1,47 +0,0 @@
-
-
-
-
- CFBundleDevelopmentRegion
- en
- CFBundleExecutable
- $(EXECUTABLE_NAME)
- CFBundleIdentifier
- Uttopia.$(PRODUCT_NAME:rfc1034identifier)
- CFBundleInfoDictionaryVersion
- 6.0
- CFBundleName
- $(PRODUCT_NAME)
- CFBundlePackageType
- APPL
- CFBundleShortVersionString
- 1.0
- CFBundleSignature
- ????
- CFBundleVersion
- 1
- LSRequiresIPhoneOS
-
- UILaunchStoryboardName
- LaunchScreen
- UIMainStoryboardFile
- Main
- UIRequiredDeviceCapabilities
-
- armv7
-
- UISupportedInterfaceOrientations
-
- UIInterfaceOrientationPortrait
- UIInterfaceOrientationLandscapeLeft
- UIInterfaceOrientationLandscapeRight
-
- UISupportedInterfaceOrientations~ipad
-
- UIInterfaceOrientationPortrait
- UIInterfaceOrientationPortraitUpsideDown
- UIInterfaceOrientationLandscapeLeft
- UIInterfaceOrientationLandscapeRight
-
-
-
diff --git a/Example/ViewController.h b/Example/ViewController.h
deleted file mode 100644
index 378cb59..0000000
--- a/Example/ViewController.h
+++ /dev/null
@@ -1,15 +0,0 @@
-//
-// ViewController.h
-// ACPDownload
-//
-// Created by Antonio Casero Palmero on 10/01/15.
-// Copyright (c) 2015 Antonio Casero Palmero. All rights reserved.
-//
-
-#import
-
-@interface ViewController : UIViewController
-
-
-@end
-
diff --git a/Example/ViewController.m b/Example/ViewController.m
deleted file mode 100644
index aa39dc8..0000000
--- a/Example/ViewController.m
+++ /dev/null
@@ -1,118 +0,0 @@
-//
-// ViewController.m
-// ACPDownload
-//
-// Created by Antonio Casero Palmero on 10/01/15.
-// Copyright (c) 2015 Antonio Casero Palmero. All rights reserved.
-//
-
-#import "ViewController.h"
-#import "ACPDownloadView.h"
-#import "ACPIndeterminateGoogleLayer.h"
-#import "ExampleCell.h"
-#import "ACPStaticImagesAlternative.h"
-@interface ViewController ()
-{
- NSTimer *_timer;
-}
-@property (weak, nonatomic) IBOutlet ACPDownloadView *downloadView;
-@property (nonatomic, assign) float progress;
-@end
-
-@implementation ViewController
-
-
-- (void)viewDidLoad {
- [super viewDidLoad];
-
- // If you want to change the animation in the indeterminate state
- ACPIndeterminateGoogleLayer * layer = [ACPIndeterminateGoogleLayer new];
- [layer updateColor:[UIColor blueColor]];
- [self.downloadView setIndeterminateLayer:layer];
-
- // You can define a behaviour if the view is tapped. (Optional)
- [self.downloadView setActionForTap:^(ACPDownloadView *downloadView, ACPDownloadStatus status){
- switch (status) {
- case ACPDownloadStatusNone:
- [downloadView setIndicatorStatus:ACPDownloadStatusIndeterminate];
- break;
- case ACPDownloadStatusRunning:
- [downloadView setIndicatorStatus:ACPDownloadStatusCompleted];
- break;
- case ACPDownloadStatusIndeterminate:
- [downloadView setIndicatorStatus:ACPDownloadStatusRunning];
- break;
- case ACPDownloadStatusCompleted:
- [downloadView setIndicatorStatus:ACPDownloadStatusNone];
- break;
-
- default:
- break;
- }
- }];
- // This timer has been written just for testing purposes. It's running and changing the value of the progress variable constantly.
- _timer = [NSTimer scheduledTimerWithTimeInterval:3 target:self selector:@selector(increment:) userInfo:nil repeats:YES];
-}
-
-- (void)increment:(NSTimer *)timer {
-
- self.progress = (self.progress <= 0.8f ? self.progress + 0.2f : 0.0f);
- NSLog(@"Progress %f", self.progress);
- [self.downloadView setProgress:self.progress animated:YES];
-}
-
-#pragma mark - Tableview configuration.
-
-- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
- return 1;
-}
-
-- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
- return 25;
-}
-
-
-- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
- static NSString* cellIdentifier = @"Cell";
- ExampleCell* cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier forIndexPath:indexPath];
-
- cell.exampleLabel.text = [NSString stringWithFormat:@"Package %zd", indexPath.row];
-
- // If you want to change the images presented
- ACPStaticImagesAlternative * myOwnImages = [ACPStaticImagesAlternative new];
- [myOwnImages updateColor:cell.tintColor];
- [cell.exampleIndicator setImages:myOwnImages];
-
- //Status by default.
- [cell.exampleIndicator setIndicatorStatus:ACPDownloadStatusNone];
- cell.selectionStyle = UITableViewCellSelectionStyleNone;
- return cell;
-}
-
-- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
- ExampleCell * cellSelected = (ExampleCell*)[tableView cellForRowAtIndexPath:indexPath];
-
- switch (cellSelected.exampleIndicator.currentStatus
- ) {
- case ACPDownloadStatusNone:
- [cellSelected.exampleIndicator setIndicatorStatus:ACPDownloadStatusIndeterminate];
- break;
- case ACPDownloadStatusRunning:
- [cellSelected.exampleIndicator setIndicatorStatus:ACPDownloadStatusCompleted];
- break;
- case ACPDownloadStatusIndeterminate:
- [cellSelected.exampleIndicator setIndicatorStatus:ACPDownloadStatusRunning];
- [cellSelected.exampleIndicator setProgress:self.progress animated:YES];
- break;
- case ACPDownloadStatusCompleted:
- [cellSelected.exampleIndicator setIndicatorStatus:ACPDownloadStatusNone];
- break;
-
- default:
- break;
- }
-
-
-}
-
-@end
diff --git a/Example/main.m b/Example/main.m
deleted file mode 100644
index 10fe2ca..0000000
--- a/Example/main.m
+++ /dev/null
@@ -1,16 +0,0 @@
-//
-// main.m
-// ACPDownload
-//
-// Created by Antonio Casero Palmero on 10/01/15.
-// Copyright (c) 2015 Antonio Casero Palmero. All rights reserved.
-//
-
-#import
-#import "AppDelegate.h"
-
-int main(int argc, char * argv[]) {
- @autoreleasepool {
- return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
- }
-}
diff --git a/LICENSE b/LICENSE
deleted file mode 100644
index e874435..0000000
--- a/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2015 Antonio Casero
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
\ No newline at end of file
diff --git a/screenshots/acpdownload-gif.gif b/screenshots/acpdownload-gif.gif
new file mode 100644
index 0000000000000000000000000000000000000000..1274a6cb0f64d0d99f4cf81561d24f5bc814bafb
GIT binary patch
literal 186503
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