├── .DS_Store ├── Pods ├── Headers │ ├── Public │ │ └── SDWebImage │ │ │ ├── UIImage+GIF.h │ │ │ ├── SDImageCache.h │ │ │ ├── NSImage+WebCache.h │ │ │ ├── SDWebImageCoder.h │ │ │ ├── SDWebImageCompat.h │ │ │ ├── SDWebImageFrame.h │ │ │ ├── UIView+WebCache.h │ │ │ ├── NSButton+WebCache.h │ │ │ ├── SDAnimatedImageRep.h │ │ │ ├── SDImageCacheConfig.h │ │ │ ├── SDWebImageGIFCoder.h │ │ │ ├── SDWebImageManager.h │ │ │ ├── UIButton+WebCache.h │ │ │ ├── SDWebImageCoderHelper.h │ │ │ ├── SDWebImageDownloader.h │ │ │ ├── SDWebImageOperation.h │ │ │ ├── SDWebImagePrefetcher.h │ │ │ ├── SDWebImageTransition.h │ │ │ ├── UIImage+ForceDecode.h │ │ │ ├── UIImage+MultiFormat.h │ │ │ ├── UIImageView+WebCache.h │ │ │ ├── NSData+ImageContentType.h │ │ │ ├── SDWebImageCodersManager.h │ │ │ ├── SDWebImageImageIOCoder.h │ │ │ ├── UIView+WebCacheOperation.h │ │ │ ├── SDWebImageDownloaderOperation.h │ │ │ └── UIImageView+HighlightedWebCache.h │ └── Private │ │ └── SDWebImage │ │ ├── SDImageCache.h │ │ ├── UIImage+GIF.h │ │ ├── SDWebImageCoder.h │ │ ├── SDWebImageFrame.h │ │ ├── UIView+WebCache.h │ │ ├── NSButton+WebCache.h │ │ ├── NSImage+WebCache.h │ │ ├── SDAnimatedImageRep.h │ │ ├── SDImageCacheConfig.h │ │ ├── SDWebImageCompat.h │ │ ├── SDWebImageGIFCoder.h │ │ ├── SDWebImageManager.h │ │ ├── UIButton+WebCache.h │ │ ├── SDWebImageDownloader.h │ │ ├── SDWebImageOperation.h │ │ ├── SDWebImagePrefetcher.h │ │ ├── SDWebImageTransition.h │ │ ├── UIImage+ForceDecode.h │ │ ├── UIImage+MultiFormat.h │ │ ├── UIImageView+WebCache.h │ │ ├── NSData+ImageContentType.h │ │ ├── SDWebImageCoderHelper.h │ │ ├── SDWebImageCodersManager.h │ │ ├── SDWebImageImageIOCoder.h │ │ ├── UIView+WebCacheOperation.h │ │ ├── SDWebImageDownloaderOperation.h │ │ └── UIImageView+HighlightedWebCache.h ├── Target Support Files │ ├── SDWebImage │ │ ├── SDWebImage-dummy.m │ │ ├── SDWebImage-prefix.pch │ │ └── SDWebImage.xcconfig │ └── Pods-WAUnlimitedSend │ │ ├── Pods-WAUnlimitedSend-dummy.m │ │ ├── Pods-WAUnlimitedSend.debug.xcconfig │ │ ├── Pods-WAUnlimitedSend.release.xcconfig │ │ ├── Pods-WAUnlimitedSend-acknowledgements.markdown │ │ ├── Pods-WAUnlimitedSend-acknowledgements.plist │ │ └── Pods-WAUnlimitedSend-resources.sh ├── Manifest.lock ├── SDWebImage │ ├── SDWebImage │ │ ├── SDWebImageOperation.h │ │ ├── NSImage+WebCache.h │ │ ├── UIImage+ForceDecode.h │ │ ├── UIImage+GIF.m │ │ ├── UIImage+GIF.h │ │ ├── SDWebImageFrame.m │ │ ├── SDAnimatedImageRep.h │ │ ├── SDImageCacheConfig.m │ │ ├── UIImage+ForceDecode.m │ │ ├── SDWebImageCoder.m │ │ ├── SDWebImageGIFCoder.h │ │ ├── NSImage+WebCache.m │ │ ├── SDWebImageFrame.h │ │ ├── SDWebImageImageIOCoder.h │ │ ├── NSData+ImageContentType.h │ │ ├── UIView+WebCacheOperation.h │ │ ├── UIImage+MultiFormat.h │ │ ├── UIImageView+HighlightedWebCache.m │ │ ├── SDAnimatedImageRep.m │ │ ├── SDWebImageCodersManager.h │ │ ├── SDWebImageCoderHelper.h │ │ ├── SDWebImageCompat.m │ │ ├── UIView+WebCacheOperation.m │ │ ├── SDWebImageCompat.h │ │ ├── SDImageCacheConfig.h │ │ ├── UIImage+MultiFormat.m │ │ ├── UIImageView+HighlightedWebCache.h │ │ ├── SDWebImagePrefetcher.h │ │ ├── SDWebImageCoder.h │ │ ├── SDWebImageTransition.h │ │ ├── NSData+ImageContentType.m │ │ ├── SDWebImageCodersManager.m │ │ ├── SDWebImageTransition.m │ │ ├── SDWebImageDownloaderOperation.h │ │ └── SDWebImagePrefetcher.m │ └── LICENSE └── Pods.xcodeproj │ └── xcuserdata │ └── BandarHelal.xcuserdatad │ └── xcschemes │ ├── xcschememanagement.plist │ ├── SDWebImage.xcscheme │ └── Pods-WAUnlimitedSend.xcscheme ├── Packages ├── .DS_Store ├── com.BandarHL.WAUnlimitedSend_1.1-2_iphoneos-arm.deb ├── com.BandarHL.WAUnlimitedSend_1.1-2_iphoneos-arm.zip ├── com.BandarHL.WAUnlimitedSend_1.1-5_iphoneos-arm.deb └── com.BandarHL.WAUnlimitedSend_1.1-5_iphoneos-arm.zip ├── WAUnlimitedSend ├── .DS_Store ├── Package │ ├── Library │ │ ├── Application Support │ │ │ └── WAS │ │ │ │ └── WAS.bundle │ │ │ │ ├── heart.png │ │ │ │ ├── heart@2x.png │ │ │ │ ├── PrefsDonate.png │ │ │ │ ├── PrefsDonate@2x.png │ │ │ │ └── PrefsDonate@3x.png │ │ └── MobileSubstrate │ │ │ └── DynamicLibraries │ │ │ ├── WAUnlimitedSend.dylib │ │ │ └── WAUnlimitedSend.plist │ └── DEBIAN │ │ └── control ├── WAUnlimitedSend-Prefix.pch ├── BHSettingViewController.h ├── FRPreferences │ ├── FRPValueCell.h │ ├── FRPDeveloperCell.h │ ├── FRPLinkCell.h │ ├── FRPViewSection.h │ ├── FRPreferences.h │ ├── FRPSettings.h │ ├── FRPrefs.h │ ├── FRPSwitchCell.h │ ├── FRPTextFieldCell.h │ ├── FRPViewCell.h │ ├── FRPSection.h │ ├── FRPListCell.h │ ├── FRPValueCell.m │ ├── FRPSelectListTable.h │ ├── FRPSliderCell.h │ ├── FRPCell.h │ ├── FRPSection.m │ ├── FRPCell.m │ ├── FRPSegmentCell.h │ ├── FRPLinkCell.m │ ├── FRPViewSection.m │ ├── FRPViewCell.m │ ├── FRPSwitchCell.m │ ├── FRPSettings.m │ ├── FRPDeveloperCell.m │ ├── FRPTextFieldCell.m │ ├── FRPSelectListTable.m │ ├── FRPListCell.m │ ├── FRPSegmentCell.m │ ├── FRPreferences.m │ └── FRPSliderCell.m ├── SCLAlertView │ ├── SCLTextView.h │ ├── SCLAlertView-Objective-C-prefix.pch │ ├── SCLAlertViewFramework.h │ ├── SCLAlertViewResponder.h │ ├── SCLSwitchView.h │ ├── Info.plist │ ├── SCLAlertViewResponder.m │ ├── SCLTimerDisplay.h │ ├── SCLTextView.m │ ├── SCLMacros.h │ ├── SCLAlertViewStyleKit.h │ ├── SCLButton.h │ ├── SCLSwitchView.m │ ├── SCLTimerDisplay.m │ ├── SCLButton.m │ └── UIImage+ImageEffects.h ├── WAUnlimitedSend.xm └── BHSettingViewController.m ├── README.md ├── LatestBuild ├── com.bandarhl.waunlimitedsend_1.1-8_iphoneos-arm.deb ├── WAUnlimitedSend.xcworkspace ├── xcuserdata │ └── BandarHelal.xcuserdatad │ │ └── UserInterfaceState.xcuserstate ├── contents.xcworkspacedata └── xcshareddata │ └── IDEWorkspaceChecks.plist ├── WAUnlimitedSend.xcodeproj ├── project.xcworkspace │ ├── contents.xcworkspacedata │ ├── xcuserdata │ │ └── BandarHelal.xcuserdatad │ │ │ └── UserInterfaceState.xcuserstate │ └── xcshareddata │ │ └── IDEWorkspaceChecks.plist └── xcuserdata │ └── BandarHelal.xcuserdatad │ └── xcschemes │ └── xcschememanagement.plist ├── Podfile └── Podfile.lock /.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BandarHL/WAUnlimitedSend/HEAD/.DS_Store -------------------------------------------------------------------------------- /Pods/Headers/Public/SDWebImage/UIImage+GIF.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/UIImage+GIF.h -------------------------------------------------------------------------------- /Pods/Headers/Private/SDWebImage/SDImageCache.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDImageCache.h -------------------------------------------------------------------------------- /Pods/Headers/Private/SDWebImage/UIImage+GIF.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/UIImage+GIF.h -------------------------------------------------------------------------------- /Pods/Headers/Public/SDWebImage/SDImageCache.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDImageCache.h -------------------------------------------------------------------------------- /Packages/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BandarHL/WAUnlimitedSend/HEAD/Packages/.DS_Store -------------------------------------------------------------------------------- /Pods/Headers/Private/SDWebImage/SDWebImageCoder.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDWebImageCoder.h -------------------------------------------------------------------------------- /Pods/Headers/Private/SDWebImage/SDWebImageFrame.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDWebImageFrame.h -------------------------------------------------------------------------------- /Pods/Headers/Private/SDWebImage/UIView+WebCache.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/UIView+WebCache.h -------------------------------------------------------------------------------- /Pods/Headers/Public/SDWebImage/NSImage+WebCache.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/NSImage+WebCache.h -------------------------------------------------------------------------------- /Pods/Headers/Public/SDWebImage/SDWebImageCoder.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDWebImageCoder.h -------------------------------------------------------------------------------- /Pods/Headers/Public/SDWebImage/SDWebImageCompat.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDWebImageCompat.h -------------------------------------------------------------------------------- /Pods/Headers/Public/SDWebImage/SDWebImageFrame.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDWebImageFrame.h -------------------------------------------------------------------------------- /Pods/Headers/Public/SDWebImage/UIView+WebCache.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/UIView+WebCache.h -------------------------------------------------------------------------------- /Pods/Headers/Private/SDWebImage/NSButton+WebCache.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/NSButton+WebCache.h -------------------------------------------------------------------------------- /Pods/Headers/Private/SDWebImage/NSImage+WebCache.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/NSImage+WebCache.h -------------------------------------------------------------------------------- /Pods/Headers/Private/SDWebImage/SDAnimatedImageRep.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDAnimatedImageRep.h -------------------------------------------------------------------------------- /Pods/Headers/Private/SDWebImage/SDImageCacheConfig.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDImageCacheConfig.h -------------------------------------------------------------------------------- /Pods/Headers/Private/SDWebImage/SDWebImageCompat.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDWebImageCompat.h -------------------------------------------------------------------------------- /Pods/Headers/Private/SDWebImage/SDWebImageGIFCoder.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDWebImageGIFCoder.h -------------------------------------------------------------------------------- /Pods/Headers/Private/SDWebImage/SDWebImageManager.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDWebImageManager.h -------------------------------------------------------------------------------- /Pods/Headers/Private/SDWebImage/UIButton+WebCache.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/UIButton+WebCache.h -------------------------------------------------------------------------------- /Pods/Headers/Public/SDWebImage/NSButton+WebCache.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/NSButton+WebCache.h -------------------------------------------------------------------------------- /Pods/Headers/Public/SDWebImage/SDAnimatedImageRep.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDAnimatedImageRep.h -------------------------------------------------------------------------------- /Pods/Headers/Public/SDWebImage/SDImageCacheConfig.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDImageCacheConfig.h -------------------------------------------------------------------------------- /Pods/Headers/Public/SDWebImage/SDWebImageGIFCoder.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDWebImageGIFCoder.h -------------------------------------------------------------------------------- /Pods/Headers/Public/SDWebImage/SDWebImageManager.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDWebImageManager.h -------------------------------------------------------------------------------- /Pods/Headers/Public/SDWebImage/UIButton+WebCache.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/UIButton+WebCache.h -------------------------------------------------------------------------------- /Pods/Headers/Private/SDWebImage/SDWebImageDownloader.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDWebImageDownloader.h -------------------------------------------------------------------------------- /Pods/Headers/Private/SDWebImage/SDWebImageOperation.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDWebImageOperation.h -------------------------------------------------------------------------------- /Pods/Headers/Private/SDWebImage/SDWebImagePrefetcher.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDWebImagePrefetcher.h -------------------------------------------------------------------------------- /Pods/Headers/Private/SDWebImage/SDWebImageTransition.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDWebImageTransition.h -------------------------------------------------------------------------------- /Pods/Headers/Private/SDWebImage/UIImage+ForceDecode.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/UIImage+ForceDecode.h -------------------------------------------------------------------------------- /Pods/Headers/Private/SDWebImage/UIImage+MultiFormat.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/UIImage+MultiFormat.h -------------------------------------------------------------------------------- /Pods/Headers/Private/SDWebImage/UIImageView+WebCache.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/UIImageView+WebCache.h -------------------------------------------------------------------------------- /Pods/Headers/Public/SDWebImage/SDWebImageCoderHelper.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDWebImageCoderHelper.h -------------------------------------------------------------------------------- /Pods/Headers/Public/SDWebImage/SDWebImageDownloader.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDWebImageDownloader.h -------------------------------------------------------------------------------- /Pods/Headers/Public/SDWebImage/SDWebImageOperation.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDWebImageOperation.h -------------------------------------------------------------------------------- /Pods/Headers/Public/SDWebImage/SDWebImagePrefetcher.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDWebImagePrefetcher.h -------------------------------------------------------------------------------- /Pods/Headers/Public/SDWebImage/SDWebImageTransition.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDWebImageTransition.h -------------------------------------------------------------------------------- /Pods/Headers/Public/SDWebImage/UIImage+ForceDecode.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/UIImage+ForceDecode.h -------------------------------------------------------------------------------- /Pods/Headers/Public/SDWebImage/UIImage+MultiFormat.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/UIImage+MultiFormat.h -------------------------------------------------------------------------------- /Pods/Headers/Public/SDWebImage/UIImageView+WebCache.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/UIImageView+WebCache.h -------------------------------------------------------------------------------- /Pods/Headers/Private/SDWebImage/NSData+ImageContentType.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/NSData+ImageContentType.h -------------------------------------------------------------------------------- /Pods/Headers/Private/SDWebImage/SDWebImageCoderHelper.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDWebImageCoderHelper.h -------------------------------------------------------------------------------- /Pods/Headers/Private/SDWebImage/SDWebImageCodersManager.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDWebImageCodersManager.h -------------------------------------------------------------------------------- /Pods/Headers/Private/SDWebImage/SDWebImageImageIOCoder.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDWebImageImageIOCoder.h -------------------------------------------------------------------------------- /Pods/Headers/Public/SDWebImage/NSData+ImageContentType.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/NSData+ImageContentType.h -------------------------------------------------------------------------------- /Pods/Headers/Public/SDWebImage/SDWebImageCodersManager.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDWebImageCodersManager.h -------------------------------------------------------------------------------- /Pods/Headers/Public/SDWebImage/SDWebImageImageIOCoder.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDWebImageImageIOCoder.h -------------------------------------------------------------------------------- /WAUnlimitedSend/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BandarHL/WAUnlimitedSend/HEAD/WAUnlimitedSend/.DS_Store -------------------------------------------------------------------------------- /Pods/Headers/Private/SDWebImage/UIView+WebCacheOperation.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/UIView+WebCacheOperation.h -------------------------------------------------------------------------------- /Pods/Headers/Public/SDWebImage/UIView+WebCacheOperation.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/UIView+WebCacheOperation.h -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # WAUnlimitedSend open source 2 | - send Unlimited Video in WhatsApp 3 | 4 | # Version: 5 | - 1.1-5 beta 6 | -------------------------------------------------------------------------------- /Pods/Headers/Private/SDWebImage/SDWebImageDownloaderOperation.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDWebImageDownloaderOperation.h -------------------------------------------------------------------------------- /Pods/Headers/Public/SDWebImage/SDWebImageDownloaderOperation.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/SDWebImageDownloaderOperation.h -------------------------------------------------------------------------------- /Pods/Headers/Public/SDWebImage/UIImageView+HighlightedWebCache.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/UIImageView+HighlightedWebCache.h -------------------------------------------------------------------------------- /LatestBuild: -------------------------------------------------------------------------------- 1 | /Users/mac/Library/Developer/Xcode/DerivedData/WAUnlimitedSend-hjncumykejhexycomwcivehsxalc/Build/Products/Debug-iphoneos -------------------------------------------------------------------------------- /Pods/Headers/Private/SDWebImage/UIImageView+HighlightedWebCache.h: -------------------------------------------------------------------------------- 1 | ../../../SDWebImage/SDWebImage/UIImageView+HighlightedWebCache.h -------------------------------------------------------------------------------- /com.bandarhl.waunlimitedsend_1.1-8_iphoneos-arm.deb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BandarHL/WAUnlimitedSend/HEAD/com.bandarhl.waunlimitedsend_1.1-8_iphoneos-arm.deb -------------------------------------------------------------------------------- /Packages/com.BandarHL.WAUnlimitedSend_1.1-2_iphoneos-arm.deb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BandarHL/WAUnlimitedSend/HEAD/Packages/com.BandarHL.WAUnlimitedSend_1.1-2_iphoneos-arm.deb -------------------------------------------------------------------------------- /Packages/com.BandarHL.WAUnlimitedSend_1.1-2_iphoneos-arm.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BandarHL/WAUnlimitedSend/HEAD/Packages/com.BandarHL.WAUnlimitedSend_1.1-2_iphoneos-arm.zip -------------------------------------------------------------------------------- /Packages/com.BandarHL.WAUnlimitedSend_1.1-5_iphoneos-arm.deb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BandarHL/WAUnlimitedSend/HEAD/Packages/com.BandarHL.WAUnlimitedSend_1.1-5_iphoneos-arm.deb -------------------------------------------------------------------------------- /Packages/com.BandarHL.WAUnlimitedSend_1.1-5_iphoneos-arm.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BandarHL/WAUnlimitedSend/HEAD/Packages/com.BandarHL.WAUnlimitedSend_1.1-5_iphoneos-arm.zip -------------------------------------------------------------------------------- /Pods/Target Support Files/SDWebImage/SDWebImage-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_SDWebImage : NSObject 3 | @end 4 | @implementation PodsDummy_SDWebImage 5 | @end 6 | -------------------------------------------------------------------------------- /WAUnlimitedSend/Package/Library/Application Support/WAS/WAS.bundle/heart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BandarHL/WAUnlimitedSend/HEAD/WAUnlimitedSend/Package/Library/Application Support/WAS/WAS.bundle/heart.png -------------------------------------------------------------------------------- /WAUnlimitedSend/Package/Library/Application Support/WAS/WAS.bundle/heart@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BandarHL/WAUnlimitedSend/HEAD/WAUnlimitedSend/Package/Library/Application Support/WAS/WAS.bundle/heart@2x.png -------------------------------------------------------------------------------- /WAUnlimitedSend/Package/Library/Application Support/WAS/WAS.bundle/PrefsDonate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BandarHL/WAUnlimitedSend/HEAD/WAUnlimitedSend/Package/Library/Application Support/WAS/WAS.bundle/PrefsDonate.png -------------------------------------------------------------------------------- /WAUnlimitedSend/Package/Library/Application Support/WAS/WAS.bundle/PrefsDonate@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BandarHL/WAUnlimitedSend/HEAD/WAUnlimitedSend/Package/Library/Application Support/WAS/WAS.bundle/PrefsDonate@2x.png -------------------------------------------------------------------------------- /WAUnlimitedSend/Package/Library/Application Support/WAS/WAS.bundle/PrefsDonate@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BandarHL/WAUnlimitedSend/HEAD/WAUnlimitedSend/Package/Library/Application Support/WAS/WAS.bundle/PrefsDonate@3x.png -------------------------------------------------------------------------------- /WAUnlimitedSend/Package/Library/MobileSubstrate/DynamicLibraries/WAUnlimitedSend.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BandarHL/WAUnlimitedSend/HEAD/WAUnlimitedSend/Package/Library/MobileSubstrate/DynamicLibraries/WAUnlimitedSend.dylib -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-WAUnlimitedSend/Pods-WAUnlimitedSend-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Pods_WAUnlimitedSend : NSObject 3 | @end 4 | @implementation PodsDummy_Pods_WAUnlimitedSend 5 | @end 6 | -------------------------------------------------------------------------------- /WAUnlimitedSend.xcworkspace/xcuserdata/BandarHelal.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BandarHL/WAUnlimitedSend/HEAD/WAUnlimitedSend.xcworkspace/xcuserdata/BandarHelal.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /WAUnlimitedSend.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /WAUnlimitedSend.xcodeproj/project.xcworkspace/xcuserdata/BandarHelal.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BandarHL/WAUnlimitedSend/HEAD/WAUnlimitedSend.xcodeproj/project.xcworkspace/xcuserdata/BandarHelal.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /WAUnlimitedSend/WAUnlimitedSend-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header for all source files of the 'WAUnlimitedSend' target in the 'WAUnlimitedSend' project 3 | // 4 | 5 | #ifdef __OBJC__ 6 | #import 7 | #import "/opt/theos/Prefix.pch" //path/to/theos/Prefix.pch 8 | #endif 9 | -------------------------------------------------------------------------------- /Pods/Target Support Files/SDWebImage/SDWebImage-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | -------------------------------------------------------------------------------- /WAUnlimitedSend/Package/DEBIAN/control: -------------------------------------------------------------------------------- 1 | Package: com.BandarHL.WAUnlimitedSend 2 | Name: WAUnlimitedSend 3 | Version: 1.1-5 4 | Description: send Unlimited Video in WhatsApp 5 | Section: Tweaks 6 | Depends: mobilesubstrate 7 | Priority: optional 8 | Architecture: iphoneos-arm 9 | Author: @BandarHL 10 | dev: @BandarHL 11 | -------------------------------------------------------------------------------- /WAUnlimitedSend.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /WAUnlimitedSend.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Podfile: -------------------------------------------------------------------------------- 1 | # Uncomment the next line to define a global platform for your project 2 | # platform :ios, '9.0' 3 | 4 | target 'WAUnlimitedSend' do 5 | # Uncomment the next line if you're using Swift or would like to use dynamic frameworks 6 | # use_frameworks! 7 | 8 | # Pods for WAUnlimitedSend 9 | pod 'SDWebImage' 10 | 11 | end 12 | -------------------------------------------------------------------------------- /WAUnlimitedSend.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /WAUnlimitedSend/BHSettingViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // BHSettingViewController.h 3 | // WAUnlimitedSend 4 | // 5 | // Created by BandarHelal on 21/12/2018. 6 | // 7 | 8 | #import 9 | 10 | 11 | @interface BHSettingViewController : UIViewController 12 | - (void)loadBHSettingPrefsOnViewController:(UIViewController *)viewController; 13 | @end 14 | -------------------------------------------------------------------------------- /WAUnlimitedSend/FRPreferences/FRPValueCell.h: -------------------------------------------------------------------------------- 1 | // 2 | // FRPValueCell.h 3 | // FRPreferences 4 | // 5 | // Created by Fouad Raheb on 7/22/15. 6 | // Copyright (c) 2015 F0u4d. All rights reserved. 7 | // 8 | 9 | #import "FRPCell.h" 10 | 11 | @interface FRPValueCell : FRPCell 12 | 13 | + (instancetype)cellWithTitle:(NSString *)title detail:(NSString *)detail; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /WAUnlimitedSend/SCLAlertView/SCLTextView.h: -------------------------------------------------------------------------------- 1 | // 2 | // SCLTextView.h 3 | // SCLAlertView 4 | // 5 | // Created by Diogo Autilio on 9/18/15. 6 | // Copyright (c) 2015-2017 AnyKey Entertainment. All rights reserved. 7 | // 8 | 9 | #if defined(__has_feature) && __has_feature(modules) 10 | @import UIKit; 11 | #else 12 | #import 13 | #endif 14 | 15 | @interface SCLTextView : UITextField 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /WAUnlimitedSend/FRPreferences/FRPDeveloperCell.h: -------------------------------------------------------------------------------- 1 | // 2 | // FRPDeveloperCell.h 3 | // FRPreferences 4 | // 5 | // Created by Fouad Raheb on 7/3/15. 6 | // Copyright (c) 2015 F0u4d. All rights reserved. 7 | // 8 | 9 | #import "FRPCell.h" 10 | 11 | @interface FRPDeveloperCell : FRPCell 12 | 13 | + (instancetype)cellWithTitle:(NSString *)title detail:(NSString *)detail image:(UIImage *)image url:(NSString *)url; 14 | 15 | @end -------------------------------------------------------------------------------- /Podfile.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - SDWebImage (4.4.3): 3 | - SDWebImage/Core (= 4.4.3) 4 | - SDWebImage/Core (4.4.3) 5 | 6 | DEPENDENCIES: 7 | - SDWebImage 8 | 9 | SPEC REPOS: 10 | https://github.com/cocoapods/specs.git: 11 | - SDWebImage 12 | 13 | SPEC CHECKSUMS: 14 | SDWebImage: c5594f1a19c48d526d321e548902b56b479cd508 15 | 16 | PODFILE CHECKSUM: d89e5c7bde729a33e1f85931488cd3433e26e7cd 17 | 18 | COCOAPODS: 1.5.2 19 | -------------------------------------------------------------------------------- /Pods/Manifest.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - SDWebImage (4.4.3): 3 | - SDWebImage/Core (= 4.4.3) 4 | - SDWebImage/Core (4.4.3) 5 | 6 | DEPENDENCIES: 7 | - SDWebImage 8 | 9 | SPEC REPOS: 10 | https://github.com/cocoapods/specs.git: 11 | - SDWebImage 12 | 13 | SPEC CHECKSUMS: 14 | SDWebImage: c5594f1a19c48d526d321e548902b56b479cd508 15 | 16 | PODFILE CHECKSUM: d89e5c7bde729a33e1f85931488cd3433e26e7cd 17 | 18 | COCOAPODS: 1.5.2 19 | -------------------------------------------------------------------------------- /Pods/SDWebImage/SDWebImage/SDWebImageOperation.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the SDWebImage package. 3 | * (c) Olivier Poitrey 4 | * 5 | * For the full copyright and license information, please view the LICENSE 6 | * file that was distributed with this source code. 7 | */ 8 | 9 | #import 10 | 11 | @protocol SDWebImageOperation 12 | 13 | - (void)cancel; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /WAUnlimitedSend/Package/Library/MobileSubstrate/DynamicLibraries/WAUnlimitedSend.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Filter 6 | 7 | Bundles 8 | 9 | net.whatsapp.WhatsApp 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /WAUnlimitedSend/FRPreferences/FRPLinkCell.h: -------------------------------------------------------------------------------- 1 | // 2 | // FRPLinkCell.h 3 | // FRPreferences 4 | // 5 | // Created by Fouad Raheb on 7/2/15. 6 | // Copyright (c) 2015 F0u4d. All rights reserved. 7 | // 8 | 9 | #import "FRPCell.h" 10 | 11 | typedef void (^FRPLinkCellSelected)(UITableViewCell *sender); 12 | 13 | @interface FRPLinkCell : FRPCell 14 | 15 | + (instancetype)cellWithTitle:(NSString *)title selectedBlock:(FRPLinkCellSelected)block; 16 | 17 | @end 18 | 19 | -------------------------------------------------------------------------------- /WAUnlimitedSend/SCLAlertView/SCLAlertView-Objective-C-prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header 3 | // 4 | // The contents of this file are implicitly included at the beginning of every source file. 5 | // 6 | 7 | #import 8 | 9 | #ifndef __IPHONE_3_0 10 | #warning "This project uses features only available in iOS SDK 3.0 and later." 11 | #endif 12 | 13 | #ifdef __OBJC__ 14 | #import 15 | #import 16 | #import 17 | #endif 18 | -------------------------------------------------------------------------------- /WAUnlimitedSend/FRPreferences/FRPViewSection.h: -------------------------------------------------------------------------------- 1 | // 2 | // FRPViewSection.h 3 | // FRPreferences 4 | // 5 | // Created by Fouad Raheb on 7/3/15. 6 | // Copyright (c) 2015 F0u4d. All rights reserved. 7 | // 8 | 9 | #import "FRPViewCell.h" 10 | #import "FRPSection.h" 11 | 12 | @interface FRPViewSection : FRPSection 13 | 14 | @property (nonatomic, copy) FRPViewCellBlock cellBlock; 15 | 16 | + (instancetype)sectionWithHeight:(int)height initBlock:(FRPViewCellBlock)initBlock layoutBlock:(FRPViewCellBlock)layoutBlock; 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /WAUnlimitedSend/FRPreferences/FRPreferences.h: -------------------------------------------------------------------------------- 1 | // 2 | // FRPPreferences.h 3 | // FRPreferences 4 | // 5 | // Created by Fouad Raheb on 7/2/15. 6 | // Copyright (c) 2015 F0u4d. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface FRPreferences : UITableViewController 12 | 13 | @property (nonatomic, strong) NSArray *sections; 14 | @property (nonatomic, strong) NSString *plistPath; 15 | 16 | + (instancetype)tableWithSections:(NSArray *)sections title:(NSString *)title tintColor:(UIColor *)color; 17 | 18 | @end -------------------------------------------------------------------------------- /WAUnlimitedSend/FRPreferences/FRPSettings.h: -------------------------------------------------------------------------------- 1 | // 2 | // FRPSettings.h 3 | // FRPreferences 4 | // 5 | // Created by Fouad Raheb on 5/5/15. 6 | // Copyright (c) 2015 F0u4d. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface FRPSettings : NSObject 12 | 13 | @property (nonatomic, strong) NSString *key; 14 | @property (nonatomic, strong) id value; 15 | @property (nonatomic, strong) NSString *fileSave; 16 | 17 | + (instancetype)settingsWithKey:(NSString *)key defaultValue:(id)defaultValue; 18 | @end 19 | -------------------------------------------------------------------------------- /Pods/SDWebImage/SDWebImage/NSImage+WebCache.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the SDWebImage package. 3 | * (c) Olivier Poitrey 4 | * 5 | * For the full copyright and license information, please view the LICENSE 6 | * file that was distributed with this source code. 7 | */ 8 | 9 | #import "SDWebImageCompat.h" 10 | 11 | #if SD_MAC 12 | 13 | #import 14 | 15 | @interface NSImage (WebCache) 16 | 17 | - (CGImageRef)CGImage; 18 | - (NSArray *)images; 19 | - (BOOL)isGIF; 20 | 21 | @end 22 | 23 | #endif 24 | -------------------------------------------------------------------------------- /WAUnlimitedSend/SCLAlertView/SCLAlertViewFramework.h: -------------------------------------------------------------------------------- 1 | // 2 | // SCLAlertViewFramework.h 3 | // SCLAlertView 4 | // 5 | // Created by Eugene Tulusha on 9/13/16. 6 | // Copyright © 2016 AnyKey Entertainment. All rights reserved. 7 | // 8 | 9 | @import Foundation; 10 | 11 | //! Project version number for CryptoSwift. 12 | FOUNDATION_EXPORT double SCLAlertViewFrameworkVersionNumber; 13 | 14 | //! Project version string for CryptoSwift. 15 | FOUNDATION_EXPORT const unsigned char SCLAlertViewFrameworkVersionString[]; 16 | 17 | #import "SCLAlertView.h" 18 | -------------------------------------------------------------------------------- /Pods/SDWebImage/SDWebImage/UIImage+ForceDecode.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the SDWebImage package. 3 | * (c) Olivier Poitrey 4 | * 5 | * For the full copyright and license information, please view the LICENSE 6 | * file that was distributed with this source code. 7 | */ 8 | 9 | #import "SDWebImageCompat.h" 10 | 11 | @interface UIImage (ForceDecode) 12 | 13 | + (nullable UIImage *)decodedImageWithImage:(nullable UIImage *)image; 14 | 15 | + (nullable UIImage *)decodedAndScaledDownImageWithImage:(nullable UIImage *)image; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /WAUnlimitedSend/FRPreferences/FRPrefs.h: -------------------------------------------------------------------------------- 1 | // 2 | // FRPrefs.h 3 | // FRPreferences 4 | // 5 | // Created by Fouad Raheb on 7/3/15. 6 | // Copyright (c) 2015 F0u4d. All rights reserved. 7 | // 8 | 9 | #import "FRPreferences.h" 10 | #import "FRPSettings.h" 11 | 12 | #import "FRPViewSection.h" 13 | #import "FRPSection.h" 14 | 15 | #import "FRPSwitchCell.h" 16 | #import "FRPTextFieldCell.h" 17 | #import "FRPLinkCell.h" 18 | #import "FRPSliderCell.h" 19 | #import "FRPListCell.h" 20 | #import "FRPSegmentCell.h" 21 | #import "FRPValueCell.h" 22 | #import "FRPDeveloperCell.h" 23 | -------------------------------------------------------------------------------- /WAUnlimitedSend/FRPreferences/FRPSwitchCell.h: -------------------------------------------------------------------------------- 1 | // 2 | // FRPSwitchCell.h 3 | // FRPreferences 4 | // 5 | // Created by Fouad Raheb on 7/2/15. 6 | // Copyright (c) 2015 F0u4d. All rights reserved. 7 | // 8 | 9 | #import "FRPCell.h" 10 | 11 | typedef void (^FRPSwitchCellChanged)(UISwitch *sender); 12 | 13 | @interface FRPSwitchCell : FRPCell 14 | 15 | @property (nonatomic, strong) UISwitch *switchView; 16 | 17 | + (instancetype)cellWithTitle:(NSString *)title setting:(FRPSettings *)setting postNotification:(NSString *)notification changeBlock:(FRPSwitchCellChanged)block; 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /WAUnlimitedSend/FRPreferences/FRPTextFieldCell.h: -------------------------------------------------------------------------------- 1 | // 2 | // FRPSwitchCell.h 3 | // FRPreferences 4 | // 5 | // Created by Fouad Raheb on 7/2/15. 6 | // Copyright (c) 2015 F0u4d. All rights reserved. 7 | // 8 | 9 | #import "FRPCell.h" 10 | 11 | typedef void (^FRPTextFieldCellChanged)(UITextField *sender); 12 | 13 | @interface FRPTextFieldCell : FRPCell 14 | 15 | + (instancetype)cellWithTitle:(NSString *)title setting:(FRPSettings *)setting placeholder:(NSString *)placeholder postNotification:(NSString *)notification changeBlock:(FRPTextFieldCellChanged)block; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /WAUnlimitedSend/FRPreferences/FRPViewCell.h: -------------------------------------------------------------------------------- 1 | // 2 | // FRPViewCell.h 3 | // FRPreferences 4 | // 5 | // Created by Fouad Raheb on 7/3/15. 6 | // Copyright (c) 2015 F0u4d. All rights reserved. 7 | // 8 | 9 | #import "FRPCell.h" 10 | 11 | typedef void (^FRPViewCellBlock)(UITableViewCell *cell); 12 | 13 | @interface FRPViewCell : FRPCell 14 | 15 | + (instancetype)cellWithHeight:(int)height initBlock:(FRPViewCellBlock)initBlock layoutBlock:(FRPViewCellBlock)layoutBlock; 16 | 17 | @property (nonatomic, strong) FRPViewCellBlock layoutBlock; 18 | @property (nonatomic, assign) BOOL hideSeperators; 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /WAUnlimitedSend.xcodeproj/xcuserdata/BandarHelal.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | WAUnlimitedSend.xcscheme 8 | 9 | orderHint 10 | 0 11 | 12 | WAUnlimitedSend.xcscheme_^#shared#^_ 13 | 14 | orderHint 15 | 2 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /WAUnlimitedSend/SCLAlertView/SCLAlertViewResponder.h: -------------------------------------------------------------------------------- 1 | // 2 | // SCLAlertViewResponder.h 3 | // SCLAlertView 4 | // 5 | // Created by Diogo Autilio on 9/26/14. 6 | // Copyright (c) 2014-2017 AnyKey Entertainment. All rights reserved. 7 | // 8 | 9 | #if defined(__has_feature) && __has_feature(modules) 10 | @import Foundation; 11 | #else 12 | #import 13 | #endif 14 | #import "SCLAlertView.h" 15 | 16 | @interface SCLAlertViewResponder : NSObject 17 | 18 | /** TODO 19 | * 20 | * TODO 21 | */ 22 | - (instancetype)init:(SCLAlertView *)alertview; 23 | 24 | /** TODO 25 | * 26 | * TODO 27 | */ 28 | - (void)close; 29 | 30 | @end 31 | -------------------------------------------------------------------------------- /Pods/Target Support Files/SDWebImage/SDWebImage.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/SDWebImage" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/SDWebImage" 4 | OTHER_LDFLAGS = -framework "ImageIO" 5 | PODS_BUILD_DIR = ${BUILD_DIR} 6 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 7 | PODS_ROOT = ${SRCROOT} 8 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/SDWebImage 9 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 10 | SKIP_INSTALL = YES 11 | -------------------------------------------------------------------------------- /WAUnlimitedSend/FRPreferences/FRPSection.h: -------------------------------------------------------------------------------- 1 | // 2 | // FRPSection.h 3 | // FRPreferences 4 | // 5 | // Created by Fouad Raheb on 7/2/15. 6 | // Copyright (c) 2015 F0u4d. All rights reserved. 7 | // 8 | 9 | 10 | #import 11 | 12 | @interface FRPSection : UITableViewCell 13 | 14 | @property (nonatomic, strong) NSString *headerTitle; 15 | @property (nonatomic, strong) NSString *footerTitle; 16 | 17 | @property (nonatomic, strong) NSMutableArray *cells; 18 | 19 | @property (nonatomic, strong) UIColor *tintUIColor; 20 | 21 | + (instancetype)sectionWithTitle:(NSString *)title footer:(NSString *)footer; 22 | 23 | - (void)addCell:(UITableViewCell *)cell; 24 | - (void)addCells:(NSArray *)cells; 25 | 26 | @end -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-WAUnlimitedSend/Pods-WAUnlimitedSend.debug.xcconfig: -------------------------------------------------------------------------------- 1 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 2 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/SDWebImage" 3 | LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" 4 | OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/SDWebImage" 5 | OTHER_LDFLAGS = $(inherited) -ObjC -l"SDWebImage" -framework "ImageIO" 6 | PODS_BUILD_DIR = ${BUILD_DIR} 7 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 8 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/. 9 | PODS_ROOT = ${SRCROOT}/Pods 10 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-WAUnlimitedSend/Pods-WAUnlimitedSend.release.xcconfig: -------------------------------------------------------------------------------- 1 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 2 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/SDWebImage" 3 | LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" 4 | OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/SDWebImage" 5 | OTHER_LDFLAGS = $(inherited) -ObjC -l"SDWebImage" -framework "ImageIO" 6 | PODS_BUILD_DIR = ${BUILD_DIR} 7 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 8 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/. 9 | PODS_ROOT = ${SRCROOT}/Pods 10 | -------------------------------------------------------------------------------- /WAUnlimitedSend/FRPreferences/FRPListCell.h: -------------------------------------------------------------------------------- 1 | // 2 | // FRListCell.h 3 | // FRPreferences 4 | // 5 | // Created by Fouad Raheb on 7/2/15. 6 | // Copyright (c) 2015 F0u4d. All rights reserved. 7 | // 8 | 9 | #import "FRPCell.h" 10 | 11 | typedef void (^FRPListItemChange)(NSString *value); 12 | 13 | @interface FRPListCell : FRPCell 14 | + (instancetype)cellWithTitle:(NSString *)title setting:(FRPSettings *)setting items:(NSArray *)items value:(NSArray *)values popViewOnSelect:(BOOL)pop postNotification:(NSString *)notification changedBlock:(FRPListItemChange)block; 15 | @property (nonatomic, strong) NSArray *items; 16 | @property (nonatomic, strong) NSArray *values; 17 | @property (nonatomic, assign) BOOL popView; 18 | @end 19 | -------------------------------------------------------------------------------- /Pods/Pods.xcodeproj/xcuserdata/BandarHelal.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | Pods-WAUnlimitedSend.xcscheme 8 | 9 | isShown 10 | 11 | orderHint 12 | 0 13 | 14 | SDWebImage.xcscheme 15 | 16 | isShown 17 | 18 | orderHint 19 | 1 20 | 21 | 22 | SuppressBuildableAutocreation 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /Pods/SDWebImage/SDWebImage/UIImage+GIF.m: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the SDWebImage package. 3 | * (c) Olivier Poitrey 4 | * (c) Laurin Brandner 5 | * 6 | * For the full copyright and license information, please view the LICENSE 7 | * file that was distributed with this source code. 8 | */ 9 | 10 | #import "UIImage+GIF.h" 11 | #import "SDWebImageGIFCoder.h" 12 | #import "NSImage+WebCache.h" 13 | 14 | @implementation UIImage (GIF) 15 | 16 | + (UIImage *)sd_animatedGIFWithData:(NSData *)data { 17 | if (!data) { 18 | return nil; 19 | } 20 | return [[SDWebImageGIFCoder sharedCoder] decodedImageWithData:data]; 21 | } 22 | 23 | - (BOOL)isGIF { 24 | return (self.images != nil); 25 | } 26 | 27 | @end 28 | -------------------------------------------------------------------------------- /WAUnlimitedSend/SCLAlertView/SCLSwitchView.h: -------------------------------------------------------------------------------- 1 | // 2 | // SCLSwitchView.h 3 | // SCLAlertView 4 | // 5 | // Created by André Felipe Santos on 27/01/16. 6 | // Copyright (c) 2016-2017 AnyKey Entertainment. All rights reserved. 7 | // 8 | 9 | #if defined(__has_feature) && __has_feature(modules) 10 | @import UIKit; 11 | #else 12 | #import 13 | #endif 14 | 15 | @interface SCLSwitchView : UIView 16 | 17 | @property (strong, nonatomic) UIColor *tintColor UI_APPEARANCE_SELECTOR; 18 | @property (strong, nonatomic) UIColor *labelColor UI_APPEARANCE_SELECTOR; 19 | @property (strong, nonatomic) UIFont *labelFont UI_APPEARANCE_SELECTOR; 20 | @property (strong, nonatomic) NSString *labelText UI_APPEARANCE_SELECTOR; 21 | @property (nonatomic, getter=isSelected) BOOL selected; 22 | 23 | @end 24 | -------------------------------------------------------------------------------- /WAUnlimitedSend/FRPreferences/FRPValueCell.m: -------------------------------------------------------------------------------- 1 | // 2 | // FRPValueCell.m 3 | // FRPreferences 4 | // 5 | // Created by Fouad Raheb on 7/22/15. 6 | // Copyright (c) 2015 F0u4d. All rights reserved. 7 | // 8 | 9 | #import "FRPValueCell.h" 10 | 11 | @implementation FRPValueCell 12 | 13 | + (instancetype)cellWithTitle:(NSString *)title detail:(NSString *)detail { 14 | return [[self alloc] cellWithTitle:title detail:detail]; 15 | } 16 | 17 | - (instancetype)cellWithTitle:(NSString *)title detail:(NSString *)detail { 18 | FRPValueCell *cell = [super initWithTitle:title setting:nil]; 19 | cell.accessoryType = UITableViewCellAccessoryNone; 20 | cell.selectionStyle = UITableViewCellSelectionStyleNone; 21 | cell.detailTextLabel.text = detail; 22 | return cell; 23 | } 24 | 25 | @end 26 | -------------------------------------------------------------------------------- /Pods/SDWebImage/SDWebImage/UIImage+GIF.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the SDWebImage package. 3 | * (c) Olivier Poitrey 4 | * (c) Laurin Brandner 5 | * 6 | * For the full copyright and license information, please view the LICENSE 7 | * file that was distributed with this source code. 8 | */ 9 | 10 | #import "SDWebImageCompat.h" 11 | 12 | @interface UIImage (GIF) 13 | 14 | /** 15 | * Creates an animated UIImage from an NSData. 16 | * For static GIF, will create an UIImage with `images` array set to nil. For animated GIF, will create an UIImage with valid `images` array. 17 | */ 18 | + (UIImage *)sd_animatedGIFWithData:(NSData *)data; 19 | 20 | /** 21 | * Checks if an UIImage instance is a GIF. Will use the `images` array. 22 | */ 23 | - (BOOL)isGIF; 24 | 25 | @end 26 | -------------------------------------------------------------------------------- /Pods/SDWebImage/SDWebImage/SDWebImageFrame.m: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the SDWebImage package. 3 | * (c) Olivier Poitrey 4 | * 5 | * For the full copyright and license information, please view the LICENSE 6 | * file that was distributed with this source code. 7 | */ 8 | 9 | #import "SDWebImageFrame.h" 10 | 11 | @interface SDWebImageFrame () 12 | 13 | @property (nonatomic, strong, readwrite, nonnull) UIImage *image; 14 | @property (nonatomic, readwrite, assign) NSTimeInterval duration; 15 | 16 | @end 17 | 18 | @implementation SDWebImageFrame 19 | 20 | + (instancetype)frameWithImage:(UIImage *)image duration:(NSTimeInterval)duration { 21 | SDWebImageFrame *frame = [[SDWebImageFrame alloc] init]; 22 | frame.image = image; 23 | frame.duration = duration; 24 | 25 | return frame; 26 | } 27 | 28 | @end 29 | -------------------------------------------------------------------------------- /WAUnlimitedSend/FRPreferences/FRPSelectListTable.h: -------------------------------------------------------------------------------- 1 | // 2 | // FRPSelectionListViewController.h 3 | // FRPreferences 4 | // 5 | // Created by Fouad Raheb on 5/10/15. 6 | // Copyright (c) 2015 F0u4d. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "FRPListCell.h" 11 | 12 | @interface FRPSelectListTable : UITableViewController { 13 | NSArray *listItems; 14 | NSArray *listValues; 15 | NSString *currentValue; 16 | NSString *pageTitle; 17 | BOOL popView; 18 | } 19 | @property (nonatomic, copy) FRPListItemChange itemChanged; 20 | @property (nonatomic, copy) UIColor *tintUIColor; 21 | 22 | - (instancetype)initWithStyle:(UITableViewStyle)style title:(NSString *)title items:(NSArray *)items values:(NSArray *)values currentValue:(NSString *)value popViewOnSelect:(BOOL)back changeBlock:(FRPListItemChange)block; 23 | 24 | @end -------------------------------------------------------------------------------- /Pods/SDWebImage/SDWebImage/SDAnimatedImageRep.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the SDWebImage package. 3 | * (c) Olivier Poitrey 4 | * 5 | * For the full copyright and license information, please view the LICENSE 6 | * file that was distributed with this source code. 7 | */ 8 | 9 | #import "SDWebImageCompat.h" 10 | 11 | #if SD_MAC 12 | 13 | // A subclass of `NSBitmapImageRep` to fix that GIF loop count issue because `NSBitmapImageRep` will reset `NSImageCurrentFrameDuration` by using `kCGImagePropertyGIFDelayTime` but not `kCGImagePropertyGIFUnclampedDelayTime`. 14 | // Built in GIF coder use this instead of `NSBitmapImageRep` for better GIF rendering. If you do not want this, only enable `SDWebImageImageIOCoder`, which just call `NSImage` API and actually use `NSBitmapImageRep` for GIF image. 15 | 16 | @interface SDAnimatedImageRep : NSBitmapImageRep 17 | 18 | @end 19 | 20 | #endif 21 | -------------------------------------------------------------------------------- /WAUnlimitedSend/FRPreferences/FRPSliderCell.h: -------------------------------------------------------------------------------- 1 | // 2 | // FRSliderCellTableViewCell.h 3 | // FRPreferences 4 | // 5 | // Created by Fouad Raheb on 6/14/15. 6 | // Copyright (c) 2015 F0u4d. All rights reserved. 7 | // 8 | 9 | #import "FRPCell.h" 10 | 11 | typedef void (^FRPSliderCellChanged)(UISlider *sender); 12 | 13 | @interface FRPSliderCell : FRPCell 14 | 15 | @property (nonatomic, strong) UISlider *sliderCell; 16 | @property (nonatomic, strong) UILabel *lLabel; 17 | @property (nonatomic, strong) UILabel *rLabel; 18 | @property (nonatomic, strong) UILabel *cLabel; 19 | @property (nonatomic, strong) UILabel *vLabel; 20 | 21 | @property (nonatomic) float min; 22 | @property (nonatomic) float max; 23 | 24 | + (instancetype)cellWithTitle:(NSString *)title setting:(FRPSettings *)setting min:(float)min max:(float)max postNotification:(NSString *)notification changeBlock:(FRPSliderCellChanged)block; 25 | 26 | @end 27 | -------------------------------------------------------------------------------- /WAUnlimitedSend/SCLAlertView/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | $(CURRENT_PROJECT_VERSION) 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /WAUnlimitedSend/FRPreferences/FRPCell.h: -------------------------------------------------------------------------------- 1 | // 2 | // FRPCell.h 3 | // FRPreferences 4 | // 5 | // Created by Fouad Raheb on 7/2/15. 6 | // Copyright (c) 2015 F0u4d. All rights reserved. 7 | // 8 | 9 | #import "FRPreferences.h" 10 | #import "FRPSettings.h" 11 | 12 | typedef void (^FRPValueChanged)(id sender); 13 | 14 | @interface FRPCell : UITableViewCell 15 | 16 | + (instancetype)cellWithTitle:(NSString *)title setting:(FRPSettings *)setting; 17 | - (instancetype)initWithTitle:(NSString *)title setting:(FRPSettings *)setting; 18 | 19 | @property (nonatomic, strong) UIColor *tintUIColor; 20 | 21 | @property (nonatomic, strong) FRPSettings *setting; 22 | 23 | @property (nonatomic, strong) NSString *title; 24 | 25 | @property (nonatomic, strong) NSString *postNotification; 26 | 27 | @property (nonatomic, copy) FRPValueChanged valueChanged; 28 | 29 | @property (nonatomic, assign) int height; 30 | 31 | - (void)didSelectFromTable:(FRPreferences *)viewController; 32 | 33 | @end 34 | -------------------------------------------------------------------------------- /WAUnlimitedSend/FRPreferences/FRPSection.m: -------------------------------------------------------------------------------- 1 | // 2 | // FRPSection.m 3 | // FRPreferences 4 | // 5 | // Created by Fouad Raheb on 7/2/15. 6 | // Copyright (c) 2015 F0u4d. All rights reserved. 7 | // 8 | 9 | #import "FRPSection.h" 10 | 11 | @interface FRPSection () 12 | 13 | @end 14 | 15 | 16 | @implementation FRPSection 17 | 18 | + (instancetype)sectionWithTitle:(NSString *)title footer:(NSString *)footer { 19 | return [[self alloc] initWithTitle:title footer:footer]; 20 | } 21 | 22 | - (instancetype)initWithTitle:(NSString *)title footer:(NSString *)footer { 23 | if (self = [super init]) { 24 | self.headerTitle = title; 25 | self.footerTitle = footer; 26 | self.cells = [NSMutableArray new]; 27 | } 28 | 29 | return self; 30 | } 31 | 32 | - (void)addCell:(UITableViewCell *)cell { 33 | [self.cells addObject:cell]; 34 | } 35 | 36 | - (void)addCells:(NSArray *)cells { 37 | [self.cells addObjectsFromArray:cells]; 38 | } 39 | 40 | @end -------------------------------------------------------------------------------- /WAUnlimitedSend/FRPreferences/FRPCell.m: -------------------------------------------------------------------------------- 1 | // 2 | // FRPCell.m 3 | // FRPreferences 4 | // 5 | // Created by Fouad Raheb on 7/2/15. 6 | // Copyright (c) 2015 F0u4d. All rights reserved. 7 | // 8 | 9 | #import "FRPCell.h" 10 | 11 | @implementation FRPCell 12 | 13 | + (instancetype)cellWithTitle:(NSString *)title setting:(FRPSettings *)setting { 14 | return [[self alloc] initWithTitle:title setting:setting]; 15 | } 16 | 17 | - (instancetype)initWithTitle:(NSString *)title setting:(FRPSettings *)setting { 18 | if (self = [super initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:nil]) { 19 | self.clipsToBounds = YES; 20 | self.textLabel.text = title; 21 | self.setting = setting; 22 | } 23 | return self; 24 | } 25 | 26 | - (void)didSelectFromTable:(FRPreferences *)viewController { 27 | // NSIndexPath *indexPath = [viewController.tableView indexPathForCell:self]; 28 | // NSLog(@"Did Select Cell At Index: %@",indexPath); 29 | } 30 | 31 | @end 32 | -------------------------------------------------------------------------------- /Pods/SDWebImage/SDWebImage/SDImageCacheConfig.m: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the SDWebImage package. 3 | * (c) Olivier Poitrey 4 | * 5 | * For the full copyright and license information, please view the LICENSE 6 | * file that was distributed with this source code. 7 | */ 8 | 9 | #import "SDImageCacheConfig.h" 10 | 11 | static const NSInteger kDefaultCacheMaxCacheAge = 60 * 60 * 24 * 7; // 1 week 12 | 13 | @implementation SDImageCacheConfig 14 | 15 | - (instancetype)init { 16 | if (self = [super init]) { 17 | _shouldDecompressImages = YES; 18 | _shouldDisableiCloud = YES; 19 | _shouldCacheImagesInMemory = YES; 20 | _shouldUseWeakMemoryCache = YES; 21 | _diskCacheReadingOptions = 0; 22 | _diskCacheWritingOptions = NSDataWritingAtomic; 23 | _maxCacheAge = kDefaultCacheMaxCacheAge; 24 | _maxCacheSize = 0; 25 | _diskCacheExpireType = SDImageCacheConfigExpireTypeModificationDate; 26 | } 27 | return self; 28 | } 29 | 30 | @end 31 | -------------------------------------------------------------------------------- /Pods/SDWebImage/SDWebImage/UIImage+ForceDecode.m: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the SDWebImage package. 3 | * (c) Olivier Poitrey 4 | * 5 | * For the full copyright and license information, please view the LICENSE 6 | * file that was distributed with this source code. 7 | */ 8 | 9 | #import "UIImage+ForceDecode.h" 10 | #import "SDWebImageCodersManager.h" 11 | 12 | @implementation UIImage (ForceDecode) 13 | 14 | + (UIImage *)decodedImageWithImage:(UIImage *)image { 15 | if (!image) { 16 | return nil; 17 | } 18 | NSData *tempData; 19 | return [[SDWebImageCodersManager sharedInstance] decompressedImageWithImage:image data:&tempData options:@{SDWebImageCoderScaleDownLargeImagesKey: @(NO)}]; 20 | } 21 | 22 | + (UIImage *)decodedAndScaledDownImageWithImage:(UIImage *)image { 23 | if (!image) { 24 | return nil; 25 | } 26 | NSData *tempData; 27 | return [[SDWebImageCodersManager sharedInstance] decompressedImageWithImage:image data:&tempData options:@{SDWebImageCoderScaleDownLargeImagesKey: @(YES)}]; 28 | } 29 | 30 | @end 31 | -------------------------------------------------------------------------------- /WAUnlimitedSend/FRPreferences/FRPSegmentCell.h: -------------------------------------------------------------------------------- 1 | // 2 | // FRPSegmentCell.h 3 | // FRPreferences 4 | // 5 | // Created by Fouad Raheb on 7/19/15. 6 | // Copyright (c) 2015 F0u4d. All rights reserved. 7 | // 8 | 9 | #import "FRPCell.h" 10 | 11 | typedef void (^FRPSegmentValueChanged)(NSString *value); 12 | 13 | @interface FRPSegmentCell : FRPCell 14 | 15 | + (instancetype)cellWithTitle:(NSString *)title setting:(FRPSettings *)setting items:(NSArray *)items postNotification:(NSString *)notification changeBlock:(FRPSegmentValueChanged)block __attribute__((deprecated("use instead +cellWithTitle:setting:values:displayedValues:postNotification:changeBlock"))); 16 | 17 | + (instancetype)cellWithTitle:(NSString *)title setting:(FRPSettings *)setting values:(NSArray *)values displayedValues:(NSArray *)displayedValues postNotification:(NSString *)notification changeBlock:(FRPSegmentValueChanged)block; 18 | + (instancetype)cellWithTitle:(NSString *)title setting:(FRPSettings *)setting values:(NSArray *)values postNotification:(NSString *)notification changeBlock:(FRPSegmentValueChanged)block; 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /WAUnlimitedSend/SCLAlertView/SCLAlertViewResponder.m: -------------------------------------------------------------------------------- 1 | // 2 | // SCLAlertViewResponder.m 3 | // SCLAlertView 4 | // 5 | // Created by Diogo Autilio on 9/26/14. 6 | // Copyright (c) 2014-2017 AnyKey Entertainment. All rights reserved. 7 | // 8 | 9 | #import "SCLAlertViewResponder.h" 10 | 11 | @interface SCLAlertViewResponder () 12 | 13 | @property SCLAlertView *alertview; 14 | 15 | @end 16 | 17 | @implementation SCLAlertViewResponder 18 | 19 | // 20 | //// Allow alerts to be closed/renamed in a chainable manner 21 | //// Example: SCLAlertView().showSuccess(self, title: "Test", subTitle: "Value").close() 22 | 23 | // Initialisation and Title/Subtitle/Close functions 24 | - (instancetype)init:(SCLAlertView *)alertview 25 | { 26 | self.alertview = alertview; 27 | return self; 28 | } 29 | 30 | - (void)setTitletitle:(NSString *)title 31 | { 32 | self.alertview.labelTitle.text = title; 33 | } 34 | 35 | - (void)setSubTitle:(NSString *)subTitle 36 | { 37 | self.alertview.viewText.text = subTitle; 38 | } 39 | 40 | - (void)close 41 | { 42 | [self.alertview hideView]; 43 | } 44 | 45 | @end 46 | -------------------------------------------------------------------------------- /Pods/SDWebImage/SDWebImage/SDWebImageCoder.m: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the SDWebImage package. 3 | * (c) Olivier Poitrey 4 | * 5 | * For the full copyright and license information, please view the LICENSE 6 | * file that was distributed with this source code. 7 | */ 8 | 9 | #import "SDWebImageCoder.h" 10 | 11 | NSString * const SDWebImageCoderScaleDownLargeImagesKey = @"scaleDownLargeImages"; 12 | 13 | CGColorSpaceRef SDCGColorSpaceGetDeviceRGB(void) { 14 | static CGColorSpaceRef colorSpace; 15 | static dispatch_once_t onceToken; 16 | dispatch_once(&onceToken, ^{ 17 | colorSpace = CGColorSpaceCreateDeviceRGB(); 18 | }); 19 | return colorSpace; 20 | } 21 | 22 | BOOL SDCGImageRefContainsAlpha(CGImageRef imageRef) { 23 | if (!imageRef) { 24 | return NO; 25 | } 26 | CGImageAlphaInfo alphaInfo = CGImageGetAlphaInfo(imageRef); 27 | BOOL hasAlpha = !(alphaInfo == kCGImageAlphaNone || 28 | alphaInfo == kCGImageAlphaNoneSkipFirst || 29 | alphaInfo == kCGImageAlphaNoneSkipLast); 30 | return hasAlpha; 31 | } 32 | -------------------------------------------------------------------------------- /Pods/SDWebImage/SDWebImage/SDWebImageGIFCoder.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the SDWebImage package. 3 | * (c) Olivier Poitrey 4 | * 5 | * For the full copyright and license information, please view the LICENSE 6 | * file that was distributed with this source code. 7 | */ 8 | 9 | #import 10 | #import "SDWebImageCoder.h" 11 | 12 | /** 13 | Built in coder using ImageIO that supports GIF encoding/decoding 14 | @note `SDWebImageIOCoder` supports GIF but only as static (will use the 1st frame). 15 | @note Use `SDWebImageGIFCoder` for fully animated GIFs - less performant than `FLAnimatedImage` 16 | @note If you decide to make all `UIImageView`(including `FLAnimatedImageView`) instance support GIF. You should add this coder to `SDWebImageCodersManager` and make sure that it has a higher priority than `SDWebImageIOCoder` 17 | @note The recommended approach for animated GIFs is using `FLAnimatedImage`. It's more performant than `UIImageView` for GIF displaying 18 | */ 19 | @interface SDWebImageGIFCoder : NSObject 20 | 21 | + (nonnull instancetype)sharedCoder; 22 | 23 | @end 24 | -------------------------------------------------------------------------------- /Pods/SDWebImage/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2009-2017 Olivier Poitrey rs@dailymotion.com 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is furnished 8 | to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in all 11 | copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | THE SOFTWARE. 20 | 21 | -------------------------------------------------------------------------------- /WAUnlimitedSend/FRPreferences/FRPLinkCell.m: -------------------------------------------------------------------------------- 1 | // 2 | // FRPLinkCell.m 3 | // FRPreferences 4 | // 5 | // Created by Fouad Raheb on 7/2/15. 6 | // Copyright (c) 2015 F0u4d. All rights reserved. 7 | // 8 | 9 | #import "FRPLinkCell.h" 10 | 11 | @interface FRPLinkCell () 12 | @end 13 | 14 | @implementation FRPLinkCell 15 | 16 | + (instancetype)cellWithTitle:(NSString *)title selectedBlock:(FRPLinkCellSelected)block { 17 | return [[self alloc] cellWithTitle:title selectedBlock:block]; 18 | } 19 | 20 | - (instancetype)cellWithTitle:(NSString *)title selectedBlock:(FRPLinkCellSelected)block { 21 | FRPLinkCell *cell = [super initWithTitle:title setting:nil]; 22 | cell.valueChanged = block; 23 | cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; 24 | return cell; 25 | } 26 | 27 | - (void)didSelectFromTable:(FRPreferences *)viewController { 28 | NSIndexPath *indexPath = [viewController.tableView indexPathForCell:self]; 29 | [viewController.tableView deselectRowAtIndexPath:indexPath animated:YES]; 30 | if (self.valueChanged) { 31 | self.valueChanged(self); 32 | } 33 | } 34 | 35 | - (void)layoutSubviews { 36 | [super layoutSubviews]; 37 | } 38 | 39 | @end 40 | -------------------------------------------------------------------------------- /Pods/SDWebImage/SDWebImage/NSImage+WebCache.m: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the SDWebImage package. 3 | * (c) Olivier Poitrey 4 | * 5 | * For the full copyright and license information, please view the LICENSE 6 | * file that was distributed with this source code. 7 | */ 8 | 9 | #import "NSImage+WebCache.h" 10 | 11 | #if SD_MAC 12 | 13 | @implementation NSImage (WebCache) 14 | 15 | - (CGImageRef)CGImage { 16 | NSRect imageRect = NSMakeRect(0, 0, self.size.width, self.size.height); 17 | CGImageRef cgImage = [self CGImageForProposedRect:&imageRect context:NULL hints:nil]; 18 | return cgImage; 19 | } 20 | 21 | - (NSArray *)images { 22 | return nil; 23 | } 24 | 25 | - (BOOL)isGIF { 26 | BOOL isGIF = NO; 27 | for (NSImageRep *rep in self.representations) { 28 | if ([rep isKindOfClass:[NSBitmapImageRep class]]) { 29 | NSBitmapImageRep *bitmapRep = (NSBitmapImageRep *)rep; 30 | NSUInteger frameCount = [[bitmapRep valueForProperty:NSImageFrameCount] unsignedIntegerValue]; 31 | isGIF = frameCount > 1 ? YES : NO; 32 | break; 33 | } 34 | } 35 | return isGIF; 36 | } 37 | 38 | @end 39 | 40 | #endif 41 | 42 | -------------------------------------------------------------------------------- /WAUnlimitedSend/SCLAlertView/SCLTimerDisplay.h: -------------------------------------------------------------------------------- 1 | // 2 | // SCLTimerDisplay.h 3 | // SCLAlertView 4 | // 5 | // Created by Taylor Ryan on 8/18/15. 6 | // Copyright (c) 2015-2017 AnyKey Entertainment. All rights reserved. 7 | // 8 | // Taken from https://stackoverflow.com/questions/11783439/uibutton-with-timer 9 | 10 | #if defined(__has_feature) && __has_feature(modules) 11 | @import UIKit; 12 | #else 13 | #import 14 | #endif 15 | #import "SCLButton.h" 16 | 17 | @interface SCLTimerDisplay : UIView { 18 | CGFloat currentAngle; 19 | CGFloat currentTime; 20 | CGFloat timerLimit; 21 | CGFloat radius; 22 | CGFloat lineWidth; 23 | NSTimer *timer; 24 | SCLActionBlock completedBlock; 25 | } 26 | 27 | @property CGFloat currentAngle; 28 | @property NSInteger buttonIndex; 29 | @property (strong, nonatomic) UIColor *color; 30 | @property (assign, nonatomic) BOOL reverse; 31 | 32 | - (instancetype)initWithOrigin:(CGPoint)origin radius:(CGFloat)r; 33 | - (instancetype)initWithOrigin:(CGPoint)origin radius:(CGFloat)r lineWidth:(CGFloat)width; 34 | - (void)updateFrame:(CGSize)size; 35 | - (void)cancelTimer; 36 | - (void)stopTimer; 37 | - (void)startTimerWithTimeLimit:(int)tl completed:(SCLActionBlock)completed; 38 | 39 | @end 40 | -------------------------------------------------------------------------------- /WAUnlimitedSend/SCLAlertView/SCLTextView.m: -------------------------------------------------------------------------------- 1 | // 2 | // SCLTextView.m 3 | // SCLAlertView 4 | // 5 | // Created by Diogo Autilio on 9/18/15. 6 | // Copyright (c) 2015-2017 AnyKey Entertainment. All rights reserved. 7 | // 8 | 9 | #import "SCLTextView.h" 10 | 11 | #define MIN_HEIGHT 30.0f 12 | 13 | @implementation SCLTextView 14 | 15 | - (instancetype)init 16 | { 17 | self = [super init]; 18 | if (self) 19 | { 20 | [self setup]; 21 | } 22 | return self; 23 | } 24 | 25 | - (instancetype)initWithCoder:(NSCoder *)aDecoder 26 | { 27 | self = [super initWithCoder:aDecoder]; 28 | if(self) 29 | { 30 | [self setup]; 31 | } 32 | return self; 33 | } 34 | 35 | - (instancetype)initWithFrame:(CGRect)frame 36 | { 37 | self = [super initWithFrame:frame]; 38 | if (self) 39 | { 40 | [self setup]; 41 | } 42 | return self; 43 | } 44 | 45 | - (void)setup 46 | { 47 | self.frame = CGRectMake(0.0f, 0.0f, 0.0f, MIN_HEIGHT); 48 | self.returnKeyType = UIReturnKeyDone; 49 | self.borderStyle = UITextBorderStyleRoundedRect; 50 | self.autocapitalizationType = UITextAutocapitalizationTypeSentences; 51 | self.clearButtonMode = UITextFieldViewModeWhileEditing; 52 | self.layer.masksToBounds = YES; 53 | self.layer.borderWidth = 1.0f; 54 | } 55 | 56 | @end 57 | -------------------------------------------------------------------------------- /Pods/SDWebImage/SDWebImage/SDWebImageFrame.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the SDWebImage package. 3 | * (c) Olivier Poitrey 4 | * 5 | * For the full copyright and license information, please view the LICENSE 6 | * file that was distributed with this source code. 7 | */ 8 | 9 | #import 10 | #import "SDWebImageCompat.h" 11 | 12 | @interface SDWebImageFrame : NSObject 13 | 14 | // This class is used for creating animated images via `animatedImageWithFrames` in `SDWebImageCoderHelper`. Attention if you need to specify animated images loop count, use `sd_imageLoopCount` property in `UIImage+MultiFormat`. 15 | 16 | /** 17 | The image of current frame. You should not set an animated image. 18 | */ 19 | @property (nonatomic, strong, readonly, nonnull) UIImage *image; 20 | /** 21 | The duration of current frame to be displayed. The number is seconds but not milliseconds. You should not set this to zero. 22 | */ 23 | @property (nonatomic, readonly, assign) NSTimeInterval duration; 24 | 25 | /** 26 | Create a frame instance with specify image and duration 27 | 28 | @param image current frame's image 29 | @param duration current frame's duration 30 | @return frame instance 31 | */ 32 | + (instancetype _Nonnull)frameWithImage:(UIImage * _Nonnull)image duration:(NSTimeInterval)duration; 33 | 34 | @end 35 | -------------------------------------------------------------------------------- /WAUnlimitedSend/FRPreferences/FRPViewSection.m: -------------------------------------------------------------------------------- 1 | // 2 | // FRPViewSection.m 3 | // FRPreferences 4 | // 5 | // Created by Fouad Raheb on 7/3/15. 6 | // Copyright (c) 2015 F0u4d. All rights reserved. 7 | // 8 | 9 | #import "FRPViewSection.h" 10 | 11 | @implementation FRPViewSection 12 | 13 | + (instancetype)sectionWithHeight:(int)height initBlock:(FRPViewCellBlock)initBlock layoutBlock:(FRPViewCellBlock)layoutBlock { 14 | return [[self alloc] initWithHeight:height initBlock:initBlock layoutBlock:layoutBlock]; 15 | } 16 | 17 | - (instancetype)initWithHeight:(int)height initBlock:(FRPViewCellBlock)initBlock layoutBlock:(FRPViewCellBlock)layoutBlock { 18 | FRPViewSection *section = [[super class] sectionWithTitle:nil footer:nil]; 19 | FRPViewCell *cell = [FRPViewCell cellWithHeight:height 20 | initBlock:^(UITableViewCell *cell) { 21 | initBlock(cell); 22 | } 23 | layoutBlock:^(UITableViewCell *cell) { 24 | layoutBlock(cell); 25 | }]; 26 | cell.hideSeperators = YES; 27 | cell.selectionStyle = UITableViewCellSelectionStyleNone; 28 | [section addCell:cell]; 29 | return section; 30 | } 31 | 32 | @end 33 | -------------------------------------------------------------------------------- /Pods/SDWebImage/SDWebImage/SDWebImageImageIOCoder.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the SDWebImage package. 3 | * (c) Olivier Poitrey 4 | * 5 | * For the full copyright and license information, please view the LICENSE 6 | * file that was distributed with this source code. 7 | */ 8 | 9 | #import 10 | #import "SDWebImageCoder.h" 11 | 12 | /** 13 | Built in coder that supports PNG, JPEG, TIFF, includes support for progressive decoding. 14 | 15 | GIF 16 | Also supports static GIF (meaning will only handle the 1st frame). 17 | For a full GIF support, we recommend `FLAnimatedImage` or our less performant `SDWebImageGIFCoder` 18 | 19 | HEIC 20 | This coder also supports HEIC format because ImageIO supports it natively. But it depends on the system capabilities, so it won't work on all devices, see: https://devstreaming-cdn.apple.com/videos/wwdc/2017/511tj33587vdhds/511/511_working_with_heif_and_hevc.pdf 21 | Decode(Software): !Simulator && (iOS 11 || tvOS 11 || macOS 10.13) 22 | Decode(Hardware): !Simulator && ((iOS 11 && A9Chip) || (macOS 10.13 && 6thGenerationIntelCPU)) 23 | Encode(Software): macOS 10.13 24 | Encode(Hardware): !Simulator && ((iOS 11 && A10FusionChip) || (macOS 10.13 && 6thGenerationIntelCPU)) 25 | */ 26 | @interface SDWebImageImageIOCoder : NSObject 27 | 28 | + (nonnull instancetype)sharedCoder; 29 | 30 | @end 31 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-WAUnlimitedSend/Pods-WAUnlimitedSend-acknowledgements.markdown: -------------------------------------------------------------------------------- 1 | # Acknowledgements 2 | This application makes use of the following third party libraries: 3 | 4 | ## SDWebImage 5 | 6 | Copyright (c) 2009-2017 Olivier Poitrey rs@dailymotion.com 7 | 8 | Permission is hereby granted, free of charge, to any person obtaining a copy 9 | of this software and associated documentation files (the "Software"), to deal 10 | in the Software without restriction, including without limitation the rights 11 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 12 | copies of the Software, and to permit persons to whom the Software is furnished 13 | to do so, subject to the following conditions: 14 | 15 | The above copyright notice and this permission notice shall be included in all 16 | copies or substantial portions of the Software. 17 | 18 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 19 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 20 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 21 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 22 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 23 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 24 | THE SOFTWARE. 25 | 26 | 27 | Generated by CocoaPods - https://cocoapods.org 28 | -------------------------------------------------------------------------------- /WAUnlimitedSend/SCLAlertView/SCLMacros.h: -------------------------------------------------------------------------------- 1 | // 2 | // SCLMacros.h 3 | // SCLAlertView 4 | // 5 | // Created by Diogo Autilio on 10/03/15. 6 | // Copyright (c) 2015-2017 AnyKey Entertainment. All rights reserved. 7 | // 8 | 9 | #ifndef SCL_MACROS_H 10 | #define SCL_MACROS_H 11 | 12 | #define UIColorFromHEX(rgbValue) [UIColor \ 13 | colorWithRed:((float)((rgbValue & 0xFF0000) >> 16))/255.0 \ 14 | green:((float)((rgbValue & 0xFF00) >> 8))/255.0 \ 15 | blue:((float)(rgbValue & 0xFF))/255.0 alpha:1.0] 16 | 17 | #define DEGREES_TO_RADIANS(degrees) ((M_PI * degrees)/ 180) 18 | #define TIMER_STEP .01 19 | #define START_DEGREE_OFFSET -90 20 | 21 | #define SYSTEM_VERSION_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedSame) 22 | #define SYSTEM_VERSION_GREATER_THAN(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedDescending) 23 | #define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending) 24 | #define SYSTEM_VERSION_LESS_THAN(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedAscending) 25 | #define SYSTEM_VERSION_LESS_THAN_OR_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedDescending) 26 | 27 | #endif 28 | -------------------------------------------------------------------------------- /Pods/SDWebImage/SDWebImage/NSData+ImageContentType.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the SDWebImage package. 3 | * (c) Olivier Poitrey 4 | * (c) Fabrice Aneche 5 | * 6 | * For the full copyright and license information, please view the LICENSE 7 | * file that was distributed with this source code. 8 | */ 9 | 10 | #import 11 | #import "SDWebImageCompat.h" 12 | 13 | typedef NS_ENUM(NSInteger, SDImageFormat) { 14 | SDImageFormatUndefined = -1, 15 | SDImageFormatJPEG = 0, 16 | SDImageFormatPNG, 17 | SDImageFormatGIF, 18 | SDImageFormatTIFF, 19 | SDImageFormatWebP, 20 | SDImageFormatHEIC, 21 | SDImageFormatHEIF 22 | }; 23 | 24 | @interface NSData (ImageContentType) 25 | 26 | /** 27 | * Return image format 28 | * 29 | * @param data the input image data 30 | * 31 | * @return the image format as `SDImageFormat` (enum) 32 | */ 33 | + (SDImageFormat)sd_imageFormatForImageData:(nullable NSData *)data; 34 | 35 | /** 36 | * Convert SDImageFormat to UTType 37 | * 38 | * @param format Format as SDImageFormat 39 | * @return The UTType as CFStringRef 40 | */ 41 | + (nonnull CFStringRef)sd_UTTypeFromSDImageFormat:(SDImageFormat)format; 42 | 43 | /** 44 | * Convert UTTyppe to SDImageFormat 45 | * 46 | * @param uttype The UTType as CFStringRef 47 | * @return The Format as SDImageFormat 48 | */ 49 | + (SDImageFormat)sd_imageFormatFromUTType:(nonnull CFStringRef)uttype; 50 | 51 | @end 52 | -------------------------------------------------------------------------------- /WAUnlimitedSend/FRPreferences/FRPViewCell.m: -------------------------------------------------------------------------------- 1 | // 2 | // FRPViewCell.m 3 | // FRPreferences 4 | // 5 | // Created by Fouad Raheb on 7/3/15. 6 | // Copyright (c) 2015 F0u4d. All rights reserved. 7 | // 8 | 9 | #import "FRPViewCell.h" 10 | 11 | @implementation FRPViewCell 12 | 13 | + (instancetype)cellWithHeight:(int)height initBlock:(FRPViewCellBlock)initBlock layoutBlock:(FRPViewCellBlock)layoutBlock { 14 | return [[self alloc] cellWithHeight:height initBlock:initBlock layoutBlock:layoutBlock]; 15 | } 16 | 17 | - (instancetype)cellWithHeight:(int)height initBlock:(FRPViewCellBlock)initBlock layoutBlock:(FRPViewCellBlock)layoutBlock { 18 | FRPViewCell *cell = [super initWithTitle:nil setting:nil]; 19 | if (layoutBlock) self.layoutBlock = layoutBlock; 20 | cell.accessoryType = UITableViewCellAccessoryNone; 21 | cell.selectionStyle = UITableViewCellSelectionStyleNone; 22 | cell.height = height; 23 | initBlock(cell); 24 | return cell; 25 | } 26 | 27 | - (void)layoutSubviews { 28 | [super layoutSubviews]; 29 | if (self.layoutBlock) self.layoutBlock(self); 30 | } 31 | 32 | - (void)addSubview:(UIView *)view { 33 | // The separator has a height of 0.5pt on a retina display and 1pt on non-retina. 34 | // Prevent subviews with this height from being added. 35 | if (self.hideSeperators && CGRectGetHeight(view.frame)*[UIScreen mainScreen].scale == 1) { 36 | return; 37 | } 38 | [super addSubview:view]; 39 | } 40 | 41 | @end -------------------------------------------------------------------------------- /Pods/SDWebImage/SDWebImage/UIView+WebCacheOperation.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the SDWebImage package. 3 | * (c) Olivier Poitrey 4 | * 5 | * For the full copyright and license information, please view the LICENSE 6 | * file that was distributed with this source code. 7 | */ 8 | 9 | #import "SDWebImageCompat.h" 10 | #import "SDWebImageOperation.h" 11 | 12 | // These methods are used to support canceling for UIView image loading, it's designed to be used internal but not external. 13 | // All the stored operations are weak, so it will be dalloced after image loading finished. If you need to store operations, use your own class to keep a strong reference for them. 14 | @interface UIView (WebCacheOperation) 15 | 16 | /** 17 | * Set the image load operation (storage in a UIView based weak map table) 18 | * 19 | * @param operation the operation 20 | * @param key key for storing the operation 21 | */ 22 | - (void)sd_setImageLoadOperation:(nullable id)operation forKey:(nullable NSString *)key; 23 | 24 | /** 25 | * Cancel all operations for the current UIView and key 26 | * 27 | * @param key key for identifying the operations 28 | */ 29 | - (void)sd_cancelImageLoadOperationWithKey:(nullable NSString *)key; 30 | 31 | /** 32 | * Just remove the operations corresponding to the current UIView and key without cancelling them 33 | * 34 | * @param key key for identifying the operations 35 | */ 36 | - (void)sd_removeImageLoadOperationWithKey:(nullable NSString *)key; 37 | 38 | @end 39 | -------------------------------------------------------------------------------- /WAUnlimitedSend/SCLAlertView/SCLAlertViewStyleKit.h: -------------------------------------------------------------------------------- 1 | // 2 | // SCLAlertViewStyleKit.h 3 | // SCLAlertView 4 | // 5 | // Created by Diogo Autilio on 9/26/14. 6 | // Copyright (c) 2014-2017 AnyKey Entertainment. All rights reserved. 7 | // 8 | 9 | #if defined(__has_feature) && __has_feature(modules) 10 | @import Foundation; 11 | @import UIKit; 12 | #else 13 | #import 14 | #import 15 | #endif 16 | #import "SCLButton.h" 17 | 18 | @interface SCLAlertViewStyleKit : NSObject 19 | 20 | // Images 21 | /** TODO 22 | * 23 | * TODO 24 | */ 25 | + (UIImage *)imageOfCheckmark; 26 | 27 | /** TODO 28 | * 29 | * TODO 30 | */ 31 | + (UIImage *)imageOfCross; 32 | 33 | /** TODO 34 | * 35 | * TODO 36 | */ 37 | + (UIImage *)imageOfNotice; 38 | 39 | /** TODO 40 | * 41 | * TODO 42 | */ 43 | + (UIImage *)imageOfWarning; 44 | 45 | /** TODO 46 | * 47 | * TODO 48 | */ 49 | + (UIImage *)imageOfInfo; 50 | 51 | /** TODO 52 | * 53 | * TODO 54 | */ 55 | + (UIImage *)imageOfEdit; 56 | 57 | /** TODO 58 | * 59 | * TODO 60 | */ 61 | + (UIImage *)imageOfQuestion; 62 | 63 | /** TODO 64 | * 65 | * TODO 66 | */ 67 | + (void)drawCheckmark; 68 | 69 | /** TODO 70 | * 71 | * TODO 72 | */ 73 | + (void)drawCross; 74 | 75 | /** TODO 76 | * 77 | * TODO 78 | */ 79 | + (void)drawNotice; 80 | 81 | /** TODO 82 | * 83 | * TODO 84 | */ 85 | + (void)drawWarning; 86 | 87 | /** TODO 88 | * 89 | * TODO 90 | */ 91 | + (void)drawInfo; 92 | 93 | /** TODO 94 | * 95 | * TODO 96 | */ 97 | + (void)drawEdit; 98 | 99 | /** TODO 100 | * 101 | * TODO 102 | */ 103 | + (void)drawQuestion; 104 | 105 | @end 106 | -------------------------------------------------------------------------------- /Pods/SDWebImage/SDWebImage/UIImage+MultiFormat.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the SDWebImage package. 3 | * (c) Olivier Poitrey 4 | * 5 | * For the full copyright and license information, please view the LICENSE 6 | * file that was distributed with this source code. 7 | */ 8 | 9 | #import "SDWebImageCompat.h" 10 | #import "NSData+ImageContentType.h" 11 | 12 | @interface UIImage (MultiFormat) 13 | 14 | /** 15 | * UIKit: 16 | * For static image format, this value is always 0. 17 | * For animated image format, 0 means infinite looping. 18 | * @note Note that because of the limitations of categories this property can get out of sync if you create another instance with CGImage or other methods. 19 | * AppKit: 20 | * NSImage currently only support animated via GIF imageRep unlike UIImage. 21 | * The getter of this property will get the loop count from GIF imageRep 22 | * The setter of this property will set the loop count from GIF imageRep 23 | */ 24 | @property (nonatomic, assign) NSUInteger sd_imageLoopCount; 25 | 26 | /** 27 | * The image format represent the original compressed image data format. 28 | * If you don't manually specify a format, this information is retrieve from CGImage using `CGImageGetUTType`, which may return nil for non-CG based image. At this time it will return `SDImageFormatUndefined` as default value. 29 | * @note Note that because of the limitations of categories this property can get out of sync if you create another instance with CGImage or other methods. 30 | */ 31 | @property (nonatomic, assign) SDImageFormat sd_imageFormat; 32 | 33 | + (nullable UIImage *)sd_imageWithData:(nullable NSData *)data; 34 | - (nullable NSData *)sd_imageData; 35 | - (nullable NSData *)sd_imageDataAsFormat:(SDImageFormat)imageFormat; 36 | 37 | @end 38 | -------------------------------------------------------------------------------- /WAUnlimitedSend/FRPreferences/FRPSwitchCell.m: -------------------------------------------------------------------------------- 1 | // 2 | // FRPSwitchCell.m 3 | // FRPreferences 4 | // 5 | // Created by Fouad Raheb on 7/2/15. 6 | // Copyright (c) 2015 F0u4d. All rights reserved. 7 | // 8 | 9 | #import "FRPSwitchCell.h" 10 | 11 | @implementation FRPSwitchCell 12 | 13 | + (instancetype)cellWithTitle:(NSString *)title setting:(FRPSettings *)setting postNotification:(NSString *)notification changeBlock:(FRPSwitchCellChanged)block { 14 | return [[self alloc] cellWithTitle:title setting:setting postNotification:notification changeBlock:block]; 15 | } 16 | 17 | - (instancetype)cellWithTitle:(NSString *)title setting:(FRPSettings *)setting postNotification:(NSString *)notification changeBlock:(FRPSwitchCellChanged)block { 18 | FRPSwitchCell *cell = [super initWithTitle:title setting:setting]; 19 | cell.postNotification = notification; 20 | cell.valueChanged = block; 21 | self.switchView = [[UISwitch alloc] initWithFrame:CGRectZero]; 22 | [self.switchView setOn:[self.setting.value boolValue] animated:NO]; 23 | [self.switchView addTarget:self action:@selector(switchChanged:) forControlEvents:UIControlEventValueChanged]; 24 | cell.accessoryView = self.switchView; 25 | cell.selectionStyle = UITableViewCellSelectionStyleNone; 26 | return cell; 27 | } 28 | 29 | - (void)switchChanged:(UISwitch *)switchItem { 30 | self.setting.value = [NSNumber numberWithBool:[switchItem isOn]]; 31 | if (self.valueChanged) { 32 | self.valueChanged(switchItem); 33 | } 34 | [[NSNotificationCenter defaultCenter] postNotificationName:self.postNotification object:switchItem]; 35 | } 36 | 37 | - (void)layoutSubviews { 38 | [super layoutSubviews]; 39 | self.switchView.onTintColor = self.tintUIColor; 40 | // self.switchView.tintColor = self.tintUIColor; 41 | } 42 | 43 | @end 44 | -------------------------------------------------------------------------------- /WAUnlimitedSend/FRPreferences/FRPSettings.m: -------------------------------------------------------------------------------- 1 | // 2 | // FRPSettings.m 3 | // FRPreferences 4 | // 5 | // Created by Fouad Raheb on 5/5/15. 6 | // Copyright (c) 2015 F0u4d. All rights reserved. 7 | // 8 | 9 | #import "FRPSettings.h" 10 | 11 | @interface FRPSettings () 12 | typedef void(^FRPSettingValueDidChangeBlock)(void); 13 | @property (nonatomic, copy) FRPSettingValueDidChangeBlock valueDidChangeBlock; 14 | @end 15 | 16 | @implementation FRPSettings 17 | 18 | + (instancetype)settingsWithKey:(NSString *)key defaultValue:(id)defaultValue { 19 | return [[self alloc] initWithKey:key defaultValue:defaultValue]; 20 | } 21 | 22 | - (instancetype)initWithKey:(NSString *)key defaultValue:(id)defaultValue { 23 | if (self = [super init]) { 24 | self.key = key; 25 | [[NSUserDefaults standardUserDefaults] registerDefaults:@{self.key: defaultValue}]; 26 | } 27 | 28 | return self; 29 | } 30 | 31 | - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context { 32 | if (self.valueDidChangeBlock) { 33 | self.valueDidChangeBlock(); 34 | } 35 | } 36 | 37 | - (id)value { 38 | return [[NSUserDefaults standardUserDefaults] objectForKey:self.key]; 39 | } 40 | 41 | - (void)setValue:(id)value { 42 | if (self.value != value) { 43 | [[NSUserDefaults standardUserDefaults] setObject:value forKey:self.key]; 44 | [[NSUserDefaults standardUserDefaults] synchronize]; 45 | if ([self.fileSave length] > 0) { 46 | [self saveValue:value]; 47 | } 48 | } 49 | } 50 | 51 | - (void)saveValue:(id)value { 52 | NSMutableDictionary *dict = [[NSMutableDictionary alloc] initWithContentsOfFile:self.fileSave]; 53 | if (dict == nil) dict = [NSMutableDictionary new]; 54 | [dict setObject:value forKey:self.key]; 55 | [dict writeToFile:self.fileSave atomically:YES]; 56 | } 57 | 58 | @end -------------------------------------------------------------------------------- /WAUnlimitedSend/FRPreferences/FRPDeveloperCell.m: -------------------------------------------------------------------------------- 1 | // 2 | // FRPDeveloperCell.m 3 | // FRPreferences 4 | // 5 | // Created by Fouad Raheb on 7/3/15. 6 | // Copyright (c) 2015 F0u4d. All rights reserved. 7 | // 8 | 9 | #import "FRPDeveloperCell.h" 10 | #import 11 | 12 | @interface FRPDeveloperCell () 13 | @property (nonatomic, strong) NSString *url; 14 | @property (nonatomic, strong) UIImage *image; 15 | @end 16 | 17 | @implementation FRPDeveloperCell 18 | 19 | + (instancetype)cellWithTitle:(NSString *)title detail:(NSString *)detail image:(UIImage *)image url:(NSString *)url { 20 | return [[self alloc] cellWithTitle:title detail:detail image:image url:url]; 21 | } 22 | 23 | - (instancetype)cellWithTitle:(NSString *)title detail:(NSString *)detail image:(UIImage *)image url:(NSString *)url { 24 | FRPDeveloperCell *cell = [super initWithTitle:title setting:nil]; 25 | cell.url = url; 26 | cell.image = image; 27 | cell.detailTextLabel.text = detail; 28 | cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; 29 | 30 | CGSize size = CGSizeMake(35,35); 31 | UIGraphicsBeginImageContextWithOptions(size, NO, UIScreen.mainScreen.scale); 32 | [self.image drawInRect:CGRectMake(0, 0, size.width, size.height)]; 33 | UIImage *newThumbnail = UIGraphicsGetImageFromCurrentImageContext(); 34 | UIGraphicsEndImageContext(); 35 | cell.imageView.image = newThumbnail;; 36 | return cell; 37 | } 38 | 39 | - (void)layoutSubviews { 40 | [super layoutSubviews]; 41 | self.imageView.layer.cornerRadius = self.imageView.frame.size.width / 2; 42 | self.imageView.clipsToBounds = YES; 43 | } 44 | 45 | - (void)didSelectFromTable:(FRPreferences *)viewController { 46 | [viewController.tableView deselectRowAtIndexPath:[viewController.tableView indexPathForCell:self] animated:YES]; 47 | [[UIApplication sharedApplication] openURL:[NSURL URLWithString:self.url]]; 48 | } 49 | 50 | @end 51 | -------------------------------------------------------------------------------- /Pods/SDWebImage/SDWebImage/UIImageView+HighlightedWebCache.m: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the SDWebImage package. 3 | * (c) Olivier Poitrey 4 | * 5 | * For the full copyright and license information, please view the LICENSE 6 | * file that was distributed with this source code. 7 | */ 8 | 9 | #import "UIImageView+HighlightedWebCache.h" 10 | 11 | #if SD_UIKIT 12 | 13 | #import "UIView+WebCacheOperation.h" 14 | #import "UIView+WebCache.h" 15 | 16 | @implementation UIImageView (HighlightedWebCache) 17 | 18 | - (void)sd_setHighlightedImageWithURL:(nullable NSURL *)url { 19 | [self sd_setHighlightedImageWithURL:url options:0 progress:nil completed:nil]; 20 | } 21 | 22 | - (void)sd_setHighlightedImageWithURL:(nullable NSURL *)url options:(SDWebImageOptions)options { 23 | [self sd_setHighlightedImageWithURL:url options:options progress:nil completed:nil]; 24 | } 25 | 26 | - (void)sd_setHighlightedImageWithURL:(nullable NSURL *)url completed:(nullable SDExternalCompletionBlock)completedBlock { 27 | [self sd_setHighlightedImageWithURL:url options:0 progress:nil completed:completedBlock]; 28 | } 29 | 30 | - (void)sd_setHighlightedImageWithURL:(nullable NSURL *)url options:(SDWebImageOptions)options completed:(nullable SDExternalCompletionBlock)completedBlock { 31 | [self sd_setHighlightedImageWithURL:url options:options progress:nil completed:completedBlock]; 32 | } 33 | 34 | - (void)sd_setHighlightedImageWithURL:(nullable NSURL *)url 35 | options:(SDWebImageOptions)options 36 | progress:(nullable SDWebImageDownloaderProgressBlock)progressBlock 37 | completed:(nullable SDExternalCompletionBlock)completedBlock { 38 | __weak typeof(self)weakSelf = self; 39 | [self sd_internalSetImageWithURL:url 40 | placeholderImage:nil 41 | options:options 42 | operationKey:@"UIImageViewImageOperationHighlighted" 43 | setImageBlock:^(UIImage *image, NSData *imageData) { 44 | weakSelf.highlightedImage = image; 45 | } 46 | progress:progressBlock 47 | completed:completedBlock]; 48 | } 49 | 50 | @end 51 | 52 | #endif 53 | -------------------------------------------------------------------------------- /Pods/SDWebImage/SDWebImage/SDAnimatedImageRep.m: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the SDWebImage package. 3 | * (c) Olivier Poitrey 4 | * 5 | * For the full copyright and license information, please view the LICENSE 6 | * file that was distributed with this source code. 7 | */ 8 | 9 | #import "SDAnimatedImageRep.h" 10 | 11 | #if SD_MAC 12 | 13 | #import "SDWebImageGIFCoder.h" 14 | 15 | @interface SDWebImageGIFCoder () 16 | 17 | - (float)sd_frameDurationAtIndex:(NSUInteger)index source:(CGImageSourceRef)source; 18 | 19 | @end 20 | 21 | @interface SDAnimatedImageRep () 22 | 23 | @property (nonatomic, assign, readonly, nullable) CGImageSourceRef imageSource; 24 | 25 | @end 26 | 27 | @implementation SDAnimatedImageRep 28 | 29 | // `NSBitmapImageRep` will use `kCGImagePropertyGIFDelayTime` whenever you call `setProperty:withValue:` with `NSImageCurrentFrame` to change the current frame. We override it and use the actual `kCGImagePropertyGIFUnclampedDelayTime` if need. 30 | - (void)setProperty:(NSBitmapImageRepPropertyKey)property withValue:(id)value { 31 | [super setProperty:property withValue:value]; 32 | if ([property isEqualToString:NSImageCurrentFrame]) { 33 | // Access the image source 34 | CGImageSourceRef imageSource = self.imageSource; 35 | if (!imageSource) { 36 | return; 37 | } 38 | // Check format type 39 | CFStringRef type = CGImageSourceGetType(imageSource); 40 | if (!type) { 41 | return; 42 | } 43 | NSUInteger index = [value unsignedIntegerValue]; 44 | float frameDuration = 0; 45 | // Through we currently process GIF only, in the 5.x we support APNG so we keep the extensibility 46 | if (CFStringCompare(type, kUTTypeGIF, 0) == kCFCompareEqualTo) { 47 | frameDuration = [[SDWebImageGIFCoder sharedCoder] sd_frameDurationAtIndex:index source:imageSource]; 48 | } 49 | if (!frameDuration) { 50 | return; 51 | } 52 | // Reset super frame duration with the actual frame duration 53 | [super setProperty:NSImageCurrentFrameDuration withValue:@(frameDuration)]; 54 | } 55 | } 56 | 57 | - (CGImageSourceRef)imageSource { 58 | if (_tiffData) { 59 | return (__bridge CGImageSourceRef)(_tiffData); 60 | } 61 | return NULL; 62 | } 63 | 64 | @end 65 | 66 | #endif 67 | -------------------------------------------------------------------------------- /Pods/Pods.xcodeproj/xcuserdata/BandarHelal.xcuserdatad/xcschemes/SDWebImage.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 43 | 44 | 45 | 46 | 52 | 53 | 55 | 56 | 59 | 60 | 61 | -------------------------------------------------------------------------------- /WAUnlimitedSend/FRPreferences/FRPTextFieldCell.m: -------------------------------------------------------------------------------- 1 | // 2 | // FRPSwitchCell.m 3 | // FRPreferences 4 | // 5 | // Created by Fouad Raheb on 7/2/15. 6 | // Copyright (c) 2015 F0u4d. All rights reserved. 7 | // 8 | 9 | #import "FRPTextFieldCell.h" 10 | 11 | @interface FRPTextFieldCell () 12 | 13 | @property (nonatomic, strong) UITextField *textField; 14 | 15 | @end 16 | 17 | @implementation FRPTextFieldCell 18 | 19 | + (instancetype)cellWithTitle:(NSString *)title setting:(FRPSettings *)setting placeholder:(NSString *)placeholder postNotification:(NSString *)notification changeBlock:(FRPTextFieldCellChanged)block { 20 | return [[self alloc] cellWithTitle:title setting:setting placeholder:placeholder postNotification:notification changeBlock:block]; 21 | } 22 | 23 | - (instancetype)cellWithTitle:(NSString *)title setting:(FRPSettings *)setting placeholder:(NSString *)placeholder postNotification:(NSString *)notification changeBlock:(FRPTextFieldCellChanged)block { 24 | FRPTextFieldCell *cell = [super initWithTitle:title setting:setting]; 25 | cell.setting = setting; 26 | cell.postNotification = notification; 27 | cell.valueChanged = block; 28 | self.textField = [[UITextField alloc] initWithFrame:CGRectMake(0, 0, 190, 30)]; 29 | [self.textField setDelegate:self]; 30 | [self.textField setTextAlignment:NSTextAlignmentRight]; 31 | [self.textField setClearButtonMode:UITextFieldViewModeWhileEditing]; 32 | [self.textField setText:setting.value]; 33 | [self.textField setPlaceholder:placeholder]; 34 | [self.textField addTarget:self action:@selector(textFieldChanged:) forControlEvents:UIControlEventEditingChanged]; 35 | self.textField.returnKeyType = UIReturnKeyDone; 36 | cell.accessoryView = self.textField; 37 | cell.selectionStyle = UITableViewCellSelectionStyleNone; 38 | 39 | return cell; 40 | } 41 | 42 | - (void)textFieldChanged:(UITextField *)textField { 43 | self.setting.value = [textField text]; 44 | if (self.valueChanged) { 45 | self.valueChanged(textField); 46 | } 47 | [[NSNotificationCenter defaultCenter] postNotificationName:self.postNotification object:textField]; 48 | } 49 | 50 | - (BOOL)textFieldShouldReturn:(id)textField { 51 | [textField resignFirstResponder]; 52 | return NO; 53 | } 54 | 55 | - (void)layoutSubviews { 56 | [super layoutSubviews]; 57 | self.textField.tintColor = self.tintUIColor; 58 | } 59 | 60 | @end 61 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-WAUnlimitedSend/Pods-WAUnlimitedSend-acknowledgements.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreferenceSpecifiers 6 | 7 | 8 | FooterText 9 | This application makes use of the following third party libraries: 10 | Title 11 | Acknowledgements 12 | Type 13 | PSGroupSpecifier 14 | 15 | 16 | FooterText 17 | Copyright (c) 2009-2017 Olivier Poitrey rs@dailymotion.com 18 | 19 | Permission is hereby granted, free of charge, to any person obtaining a copy 20 | of this software and associated documentation files (the "Software"), to deal 21 | in the Software without restriction, including without limitation the rights 22 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 23 | copies of the Software, and to permit persons to whom the Software is furnished 24 | to do so, subject to the following conditions: 25 | 26 | The above copyright notice and this permission notice shall be included in all 27 | copies or substantial portions of the Software. 28 | 29 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 30 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 31 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 32 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 33 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 34 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 35 | THE SOFTWARE. 36 | 37 | 38 | License 39 | MIT 40 | Title 41 | SDWebImage 42 | Type 43 | PSGroupSpecifier 44 | 45 | 46 | FooterText 47 | Generated by CocoaPods - https://cocoapods.org 48 | Title 49 | 50 | Type 51 | PSGroupSpecifier 52 | 53 | 54 | StringsTable 55 | Acknowledgements 56 | Title 57 | Acknowledgements 58 | 59 | 60 | -------------------------------------------------------------------------------- /Pods/Pods.xcodeproj/xcuserdata/BandarHelal.xcuserdatad/xcschemes/Pods-WAUnlimitedSend.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 43 | 44 | 45 | 46 | 52 | 53 | 55 | 56 | 59 | 60 | 61 | -------------------------------------------------------------------------------- /Pods/SDWebImage/SDWebImage/SDWebImageCodersManager.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the SDWebImage package. 3 | * (c) Olivier Poitrey 4 | * 5 | * For the full copyright and license information, please view the LICENSE 6 | * file that was distributed with this source code. 7 | */ 8 | 9 | #import 10 | #import "SDWebImageCoder.h" 11 | 12 | /** 13 | Global object holding the array of coders, so that we avoid passing them from object to object. 14 | Uses a priority queue behind scenes, which means the latest added coders have the highest priority. 15 | This is done so when encoding/decoding something, we go through the list and ask each coder if they can handle the current data. 16 | That way, users can add their custom coders while preserving our existing prebuilt ones 17 | 18 | Note: the `coders` getter will return the coders in their reversed order 19 | Example: 20 | - by default we internally set coders = `IOCoder`, `WebPCoder`. (`GIFCoder` is not recommended to add only if you want to get GIF support without `FLAnimatedImage`) 21 | - calling `coders` will return `@[WebPCoder, IOCoder]` 22 | - call `[addCoder:[MyCrazyCoder new]]` 23 | - calling `coders` now returns `@[MyCrazyCoder, WebPCoder, IOCoder]` 24 | 25 | Coders 26 | ------ 27 | A coder must conform to the `SDWebImageCoder` protocol or even to `SDWebImageProgressiveCoder` if it supports progressive decoding 28 | Conformance is important because that way, they will implement `canDecodeFromData` or `canEncodeToFormat` 29 | Those methods are called on each coder in the array (using the priority order) until one of them returns YES. 30 | That means that coder can decode that data / encode to that format 31 | */ 32 | @interface SDWebImageCodersManager : NSObject 33 | 34 | /** 35 | Shared reusable instance 36 | */ 37 | + (nonnull instancetype)sharedInstance; 38 | 39 | /** 40 | All coders in coders manager. The coders array is a priority queue, which means the later added coder will have the highest priority 41 | */ 42 | @property (nonatomic, copy, readwrite, nullable) NSArray> *coders; 43 | 44 | /** 45 | Add a new coder to the end of coders array. Which has the highest priority. 46 | 47 | @param coder coder 48 | */ 49 | - (void)addCoder:(nonnull id)coder; 50 | 51 | /** 52 | Remove a coder in the coders array. 53 | 54 | @param coder coder 55 | */ 56 | - (void)removeCoder:(nonnull id)coder; 57 | 58 | @end 59 | -------------------------------------------------------------------------------- /Pods/SDWebImage/SDWebImage/SDWebImageCoderHelper.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the SDWebImage package. 3 | * (c) Olivier Poitrey 4 | * 5 | * For the full copyright and license information, please view the LICENSE 6 | * file that was distributed with this source code. 7 | */ 8 | 9 | #import 10 | #import "SDWebImageCompat.h" 11 | #import "SDWebImageFrame.h" 12 | 13 | @interface SDWebImageCoderHelper : NSObject 14 | 15 | /** 16 | Return an animated image with frames array. 17 | For UIKit, this will apply the patch and then create animated UIImage. The patch is because that `+[UIImage animatedImageWithImages:duration:]` just use the average of duration for each image. So it will not work if different frame has different duration. Therefore we repeat the specify frame for specify times to let it work. 18 | For AppKit, NSImage does not support animates other than GIF. This will try to encode the frames to GIF format and then create an animated NSImage for rendering. Attention the animated image may loss some detail if the input frames contain full alpha channel because GIF only supports 1 bit alpha channel. (For 1 pixel, either transparent or not) 19 | 20 | @param frames The frames array. If no frames or frames is empty, return nil 21 | @return A animated image for rendering on UIImageView(UIKit) or NSImageView(AppKit) 22 | */ 23 | + (UIImage * _Nullable)animatedImageWithFrames:(NSArray * _Nullable)frames; 24 | 25 | /** 26 | Return frames array from an animated image. 27 | For UIKit, this will unapply the patch for the description above and then create frames array. This will also work for normal animated UIImage. 28 | For AppKit, NSImage does not support animates other than GIF. This will try to decode the GIF imageRep and then create frames array. 29 | 30 | @param animatedImage A animated image. If it's not animated, return nil 31 | @return The frames array 32 | */ 33 | + (NSArray * _Nullable)framesFromAnimatedImage:(UIImage * _Nullable)animatedImage; 34 | 35 | #if SD_UIKIT || SD_WATCH 36 | /** 37 | Convert an EXIF image orientation to an iOS one. 38 | 39 | @param exifOrientation EXIF orientation 40 | @return iOS orientation 41 | */ 42 | + (UIImageOrientation)imageOrientationFromEXIFOrientation:(NSInteger)exifOrientation; 43 | /** 44 | Convert an iOS orientation to an EXIF image orientation. 45 | 46 | @param imageOrientation iOS orientation 47 | @return EXIF orientation 48 | */ 49 | + (NSInteger)exifOrientationFromImageOrientation:(UIImageOrientation)imageOrientation; 50 | #endif 51 | 52 | @end 53 | -------------------------------------------------------------------------------- /Pods/SDWebImage/SDWebImage/SDWebImageCompat.m: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the SDWebImage package. 3 | * (c) Olivier Poitrey 4 | * 5 | * For the full copyright and license information, please view the LICENSE 6 | * file that was distributed with this source code. 7 | */ 8 | 9 | #import "SDWebImageCompat.h" 10 | #import "UIImage+MultiFormat.h" 11 | 12 | #if !__has_feature(objc_arc) 13 | #error SDWebImage is ARC only. Either turn on ARC for the project or use -fobjc-arc flag 14 | #endif 15 | 16 | #if !OS_OBJECT_USE_OBJC 17 | #error SDWebImage need ARC for dispatch object 18 | #endif 19 | 20 | inline UIImage *SDScaledImageForKey(NSString * _Nullable key, UIImage * _Nullable image) { 21 | if (!image) { 22 | return nil; 23 | } 24 | 25 | #if SD_MAC 26 | return image; 27 | #elif SD_UIKIT || SD_WATCH 28 | if ((image.images).count > 0) { 29 | NSMutableArray *scaledImages = [NSMutableArray array]; 30 | 31 | for (UIImage *tempImage in image.images) { 32 | [scaledImages addObject:SDScaledImageForKey(key, tempImage)]; 33 | } 34 | 35 | UIImage *animatedImage = [UIImage animatedImageWithImages:scaledImages duration:image.duration]; 36 | if (animatedImage) { 37 | animatedImage.sd_imageLoopCount = image.sd_imageLoopCount; 38 | animatedImage.sd_imageFormat = image.sd_imageFormat; 39 | } 40 | return animatedImage; 41 | } else { 42 | #if SD_WATCH 43 | if ([[WKInterfaceDevice currentDevice] respondsToSelector:@selector(screenScale)]) { 44 | #elif SD_UIKIT 45 | if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)]) { 46 | #endif 47 | CGFloat scale = 1; 48 | if (key.length >= 8) { 49 | NSRange range = [key rangeOfString:@"@2x."]; 50 | if (range.location != NSNotFound) { 51 | scale = 2.0; 52 | } 53 | 54 | range = [key rangeOfString:@"@3x."]; 55 | if (range.location != NSNotFound) { 56 | scale = 3.0; 57 | } 58 | } 59 | 60 | if (scale != image.scale) { 61 | UIImage *scaledImage = [[UIImage alloc] initWithCGImage:image.CGImage scale:scale orientation:image.imageOrientation]; 62 | scaledImage.sd_imageFormat = image.sd_imageFormat; 63 | image = scaledImage; 64 | } 65 | } 66 | return image; 67 | } 68 | #endif 69 | } 70 | 71 | NSString *const SDWebImageErrorDomain = @"SDWebImageErrorDomain"; 72 | -------------------------------------------------------------------------------- /WAUnlimitedSend/FRPreferences/FRPSelectListTable.m: -------------------------------------------------------------------------------- 1 | // 2 | // FRPSelectionListViewController.m 3 | // FRPreferences 4 | // 5 | // Created by Fouad Raheb on 5/10/15. 6 | // Copyright (c) 2015 F0u4d. All rights reserved. 7 | // 8 | 9 | #import "FRPSelectListTable.h" 10 | 11 | @implementation FRPSelectListTable 12 | 13 | - (instancetype)initWithStyle:(UITableViewStyle)style title:(NSString *)title items:(NSArray *)items values:(NSArray *)values currentValue:(NSString *)value popViewOnSelect:(BOOL)back changeBlock:(FRPListItemChange)block { 14 | listItems = items; 15 | listValues = values; 16 | currentValue = value; 17 | popView = back; 18 | pageTitle = title; 19 | self.itemChanged = ^(id sender) { 20 | if (block) block(sender); 21 | }; 22 | return [self initWithStyle:style]; 23 | } 24 | 25 | - (void)viewDidLoad { 26 | [super viewDidLoad]; 27 | self.title = pageTitle; 28 | self.view.tintColor = self.tintUIColor; 29 | self.tableView.tintColor = self.tintUIColor; 30 | self.navigationController.navigationBar.tintColor = self.tintUIColor; 31 | } 32 | 33 | - (NSInteger)numberOfSectionsInTableView:(UITableView *)theTableView { 34 | return 1; 35 | } 36 | 37 | - (NSInteger)tableView:(UITableView *)theTableView numberOfRowsInSection:(NSInteger)section { 38 | return [listItems count]; 39 | } 40 | 41 | - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 42 | static NSString *cellIdentifier = @"LinkCellIdentifier"; 43 | UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier]; 44 | 45 | if (cell == nil) { 46 | cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier]; 47 | } 48 | cell.textLabel.text = [listItems objectAtIndex:[indexPath row]]; 49 | if ([[listValues objectAtIndex:[indexPath row]] isEqualToString:currentValue]) { 50 | cell.accessoryType = UITableViewCellAccessoryCheckmark; 51 | } 52 | else { 53 | cell.accessoryType = UITableViewCellAccessoryNone; 54 | } 55 | 56 | return cell; 57 | } 58 | 59 | - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 60 | self.itemChanged([listItems objectAtIndex:[indexPath row]]); 61 | 62 | [tableView deselectRowAtIndexPath:indexPath animated:YES]; 63 | for (UITableViewCell *cell in tableView.visibleCells) { 64 | cell.accessoryType = UITableViewCellAccessoryNone; 65 | } 66 | [tableView cellForRowAtIndexPath:indexPath].accessoryType = UITableViewCellAccessoryCheckmark; 67 | if (popView) 68 | [self.navigationController popViewControllerAnimated:YES]; 69 | } 70 | 71 | - (void)didReceiveMemoryWarning { 72 | [super didReceiveMemoryWarning]; 73 | } 74 | 75 | @end 76 | -------------------------------------------------------------------------------- /Pods/SDWebImage/SDWebImage/UIView+WebCacheOperation.m: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the SDWebImage package. 3 | * (c) Olivier Poitrey 4 | * 5 | * For the full copyright and license information, please view the LICENSE 6 | * file that was distributed with this source code. 7 | */ 8 | 9 | #import "UIView+WebCacheOperation.h" 10 | #import "objc/runtime.h" 11 | 12 | static char loadOperationKey; 13 | 14 | // key is copy, value is weak because operation instance is retained by SDWebImageManager's runningOperations property 15 | // we should use lock to keep thread-safe because these method may not be acessed from main queue 16 | typedef NSMapTable> SDOperationsDictionary; 17 | 18 | @implementation UIView (WebCacheOperation) 19 | 20 | - (SDOperationsDictionary *)sd_operationDictionary { 21 | @synchronized(self) { 22 | SDOperationsDictionary *operations = objc_getAssociatedObject(self, &loadOperationKey); 23 | if (operations) { 24 | return operations; 25 | } 26 | operations = [[NSMapTable alloc] initWithKeyOptions:NSPointerFunctionsStrongMemory valueOptions:NSPointerFunctionsWeakMemory capacity:0]; 27 | objc_setAssociatedObject(self, &loadOperationKey, operations, OBJC_ASSOCIATION_RETAIN_NONATOMIC); 28 | return operations; 29 | } 30 | } 31 | 32 | - (void)sd_setImageLoadOperation:(nullable id)operation forKey:(nullable NSString *)key { 33 | if (key) { 34 | [self sd_cancelImageLoadOperationWithKey:key]; 35 | if (operation) { 36 | SDOperationsDictionary *operationDictionary = [self sd_operationDictionary]; 37 | @synchronized (self) { 38 | [operationDictionary setObject:operation forKey:key]; 39 | } 40 | } 41 | } 42 | } 43 | 44 | - (void)sd_cancelImageLoadOperationWithKey:(nullable NSString *)key { 45 | if (key) { 46 | // Cancel in progress downloader from queue 47 | SDOperationsDictionary *operationDictionary = [self sd_operationDictionary]; 48 | id operation; 49 | 50 | @synchronized (self) { 51 | operation = [operationDictionary objectForKey:key]; 52 | } 53 | if (operation) { 54 | if ([operation conformsToProtocol:@protocol(SDWebImageOperation)]) { 55 | [operation cancel]; 56 | } 57 | @synchronized (self) { 58 | [operationDictionary removeObjectForKey:key]; 59 | } 60 | } 61 | } 62 | } 63 | 64 | - (void)sd_removeImageLoadOperationWithKey:(nullable NSString *)key { 65 | if (key) { 66 | SDOperationsDictionary *operationDictionary = [self sd_operationDictionary]; 67 | @synchronized (self) { 68 | [operationDictionary removeObjectForKey:key]; 69 | } 70 | } 71 | } 72 | 73 | @end 74 | -------------------------------------------------------------------------------- /WAUnlimitedSend/FRPreferences/FRPListCell.m: -------------------------------------------------------------------------------- 1 | // 2 | // FRListCell.m 3 | // FRPreferences 4 | // 5 | // Created by Fouad Raheb on 7/2/15. 6 | // Copyright (c) 2015 F0u4d. All rights reserved. 7 | // 8 | 9 | #import "FRPListCell.h" 10 | #import "FRPSelectListTable.h" 11 | 12 | @interface FRPListCell () 13 | @end 14 | 15 | @implementation FRPListCell 16 | 17 | + (instancetype)cellWithTitle:(NSString *)title setting:(FRPSettings *)setting items:(NSArray *)items value:(NSArray *)values popViewOnSelect:(BOOL)pop postNotification:(NSString *)notification changedBlock:(FRPListItemChange)block { 18 | return [[self alloc] cellWithTitle:title setting:setting items:items value:values popViewOnSelect:pop postNotification:(NSString *)notification changedBlock:block]; 19 | } 20 | 21 | 22 | - (instancetype)cellWithTitle:(NSString *)title setting:(FRPSettings *)setting items:(NSArray *)items value:(NSArray *)values popViewOnSelect:(BOOL)pop postNotification:(NSString *)notification changedBlock:(FRPListItemChange)block { 23 | FRPListCell *cell = [super initWithTitle:title setting:setting]; 24 | [cell setValueChanged:block]; 25 | cell.items = items; 26 | cell.values = values; 27 | self.popView = pop; 28 | cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; 29 | if ([self.values containsObject:setting.value]) 30 | cell.detailTextLabel.text = [self.items objectAtIndex:[self.values indexOfObject:setting.value]]; 31 | 32 | return cell; 33 | } 34 | 35 | - (void)didSelectFromTable:(FRPreferences *)viewController { 36 | NSIndexPath *indexPath = [viewController.tableView indexPathForCell:self]; 37 | [viewController.tableView deselectRowAtIndexPath:indexPath animated:YES]; 38 | UITableViewCell *cell = [viewController.tableView cellForRowAtIndexPath:indexPath]; 39 | 40 | FRPSelectListTable *selectionList = [[FRPSelectListTable alloc] initWithStyle:UITableViewStyleGrouped title:cell.textLabel.text items:self.items values:self.values currentValue:self.setting.value popViewOnSelect:self.popView changeBlock:^(NSString *item) { 41 | cell.detailTextLabel.text = item; 42 | NSString *valueOfItem = [self.values objectAtIndex:[self.items indexOfObject:item]]; 43 | self.setting.value = valueOfItem; 44 | if (self.valueChanged) { 45 | self.valueChanged(valueOfItem); 46 | } 47 | [[NSNotificationCenter defaultCenter] postNotificationName:self.postNotification object:valueOfItem]; 48 | }]; 49 | selectionList.tintUIColor = self.tintUIColor; 50 | if (viewController.navigationController) { 51 | [viewController.navigationController pushViewController:selectionList animated:YES]; 52 | } else { 53 | [viewController.navigationController presentViewController:selectionList animated:YES completion:nil]; 54 | } 55 | } 56 | 57 | - (void)layoutSubviews { 58 | [super layoutSubviews]; 59 | } 60 | @end 61 | -------------------------------------------------------------------------------- /WAUnlimitedSend/WAUnlimitedSend.xm: -------------------------------------------------------------------------------- 1 | #import 2 | #import 3 | #import 4 | #import 5 | #import 6 | #import 7 | #import 8 | #import "FRPrefs.h" 9 | #import "SCLAlertView.h" 10 | #import 11 | #import 12 | #import "BHSettingViewController.h" 13 | 14 | %config(generator=internal) 15 | 16 | @interface WASettingsViewController : UIViewController 17 | -(id)addSectionAtIndex:(unsigned long long)arg1; 18 | 19 | @end 20 | 21 | 22 | @interface WATableSection : NSObject 23 | -(void)setRows:(id)arg1; 24 | @end 25 | 26 | @interface WATableRow : NSObject 27 | -(id)initWithCell:(id)arg1; 28 | -(void)setHandler:(id)arg1; 29 | @end 30 | 31 | 32 | %hook WASettingsViewController 33 | - (void)viewDidLoad { 34 | 35 | %orig; 36 | 37 | WATableSection *NewSection = [self addSectionAtIndex:1]; 38 | 39 | WATableRow *NewRow = [[%c(WATableRow) alloc] init]; 40 | 41 | UITableViewCell *Cell = [[%c(UITableViewCell) alloc] init]; 42 | 43 | [Cell.textLabel setText:@"WAUnlimitedSend"]; 44 | [Cell setAccessoryType:UITableViewCellAccessoryDisclosureIndicator]; 45 | 46 | [NewRow setHandler:^{ 47 | 48 | [[BHSettingViewController alloc] loadBHSettingPrefsOnViewController:self]; 49 | 50 | 51 | }]; 52 | 53 | 54 | [NewRow initWithCell:Cell]; 55 | 56 | [NewSection setRows:@[NewRow]]; 57 | 58 | 59 | } 60 | %end 61 | 62 | 63 | %hook WAVideoTranscoderDescriptor 64 | - (_Bool)_requiresFileSizeReduction { 65 | NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 66 | if ([defaults boolForKey:@"unlimitedVideo"]) { 67 | return FALSE; 68 | } else { 69 | return %orig; 70 | } 71 | } 72 | %end 73 | 74 | %hook WAServerProperties 75 | + (unsigned long long)maxMediaSize { 76 | NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 77 | if ([defaults boolForKey:@"unlimitedVideo"]) { 78 | return 90000000000000000; 79 | } else { 80 | return %orig; 81 | } 82 | } 83 | %end 84 | 85 | %hook WAVideoTranscoder 86 | - (_Bool)isVideoEligibleForPassThrough { 87 | NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 88 | if ([defaults boolForKey:@"unlimitedVideo"]) { 89 | return TRUE; 90 | } else { 91 | return %orig; 92 | } 93 | } 94 | %end 95 | 96 | %hook WAMultiSendEditableVideo 97 | - (_Bool)needsFileSizeReduction { 98 | NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 99 | if ([defaults boolForKey:@"unlimitedVideo"]) { 100 | return FALSE; 101 | } else { 102 | return %orig; 103 | } 104 | } 105 | %end 106 | 107 | -------------------------------------------------------------------------------- /WAUnlimitedSend/FRPreferences/FRPSegmentCell.m: -------------------------------------------------------------------------------- 1 | // 2 | // FRPSegmentCell.m 3 | // FRPreferences 4 | // 5 | // Created by Fouad Raheb on 7/19/15. 6 | // Copyright (c) 2015 F0u4d. All rights reserved. 7 | // 8 | 9 | #import "FRPSegmentCell.h" 10 | 11 | @interface FRPSegmentCell () 12 | @property (nonatomic, strong) UISegmentedControl *segment; 13 | @property (nonatomic, strong) NSArray *values; 14 | @property (nonatomic, strong) NSArray *displayedValues; 15 | @end 16 | 17 | @implementation FRPSegmentCell 18 | 19 | + (instancetype)cellWithTitle:(NSString *)title setting:(FRPSettings *)setting items:(NSArray *)items postNotification:(NSString *)notification changeBlock:(FRPSegmentValueChanged)block { 20 | return [[self alloc] cellWithTitle:title setting:setting values:items displayedValues:items postNotification:notification changeBlock:block]; 21 | } 22 | 23 | + (instancetype)cellWithTitle:(NSString *)title setting:(FRPSettings *)setting values:(NSArray *)values displayedValues:(NSArray *)displayedValues postNotification:(NSString *)notification changeBlock:(FRPSegmentValueChanged)block { 24 | return [[self alloc] cellWithTitle:title setting:setting values:values displayedValues:displayedValues postNotification:notification changeBlock:block]; 25 | } 26 | 27 | + (instancetype)cellWithTitle:(NSString *)title setting:(FRPSettings *)setting values:(NSArray *)values postNotification:(NSString *)notification changeBlock:(FRPSegmentValueChanged)block { 28 | return [[self alloc] cellWithTitle:title setting:setting values:values displayedValues:nil postNotification:notification changeBlock:block]; 29 | } 30 | 31 | - (instancetype)cellWithTitle:(NSString *)title setting:(FRPSettings *)setting values:(NSArray *)values displayedValues:(NSArray *)displayedValues postNotification:(NSString *)notification changeBlock:(FRPSegmentValueChanged)block { 32 | FRPSegmentCell *cell = [super initWithTitle:title setting:setting]; 33 | cell.setting = setting; 34 | cell.postNotification = notification; 35 | [cell setValueChanged:block]; 36 | self.values = values; 37 | self.displayedValues = displayedValues; 38 | if (!self.displayedValues) { 39 | self.displayedValues = values; 40 | } 41 | 42 | self.segment = [[UISegmentedControl alloc] initWithItems:self.displayedValues]; 43 | [self.segment addTarget:self action:@selector(segmentAction:) forControlEvents:UIControlEventValueChanged]; 44 | self.segment.selectedSegmentIndex = [self.values indexOfObject:cell.setting.value]; 45 | 46 | cell.accessoryView = self.segment; 47 | cell.selectionStyle = UITableViewCellSelectionStyleNone; 48 | 49 | return cell; 50 | } 51 | 52 | - (void)segmentAction:(UISegmentedControl *)segment { 53 | NSString *selectedItem = [self.values objectAtIndex:segment.selectedSegmentIndex]; 54 | self.setting.value = selectedItem; 55 | if (self.valueChanged) { 56 | self.valueChanged(selectedItem); 57 | } 58 | [[NSNotificationCenter defaultCenter] postNotificationName:self.postNotification object:selectedItem]; 59 | } 60 | 61 | 62 | - (void)layoutSubviews { 63 | [super layoutSubviews]; 64 | self.segment.tintColor = self.tintUIColor; 65 | } 66 | @end 67 | -------------------------------------------------------------------------------- /WAUnlimitedSend/BHSettingViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // BHSettingViewController.m 3 | // WAUnlimitedSend 4 | // 5 | // Created by BandarHelal on 21/12/2018. 6 | // 7 | 8 | #import "BHSettingViewController.h" 9 | #import "FRPreferences/FRPrefs.h" 10 | #import "SCLAlertView/SCLAlertView.h" 11 | 12 | 13 | @implementation BHSettingViewController 14 | 15 | - (void)loadBHSettingPrefsOnViewController:(UIViewController *)viewController { 16 | NSURL *profileimage = [[NSURL alloc] initWithString:@"https://twitter.com/BandarHL/profile_image?size=bigger"]; 17 | NSURL *profileimage2 = [[NSURL alloc] initWithString:@"https://twitter.com/fahadaljuwausri/profile_image?size=bigger"]; 18 | FRPSection *HeaderSection = [FRPSection sectionWithTitle:@"Preferences" footer:nil]; 19 | 20 | FRPSwitchCell *sendswitch = [FRPSwitchCell cellWithTitle:@"Enable" setting:[FRPSettings settingsWithKey:@"unlimitedVideo" defaultValue:@NO] postNotification:nil changeBlock:^(UISwitch *sender) { 21 | if ([sender isOn]) { 22 | SCLAlertView *SCalert = [[SCLAlertView alloc] initWithNewWindow]; 23 | SCalert.backgroundType = SCLAlertViewBackgroundBlur; 24 | [SCalert addButton:@"Relaunch WhatsApp" actionBlock:^ { 25 | exit(0); 26 | }]; 27 | [SCalert showNotice:@"WAUnlimitedSend" subTitle:@"You need Relaunch WhatsApp to apply changes" closeButtonTitle:@"Later" duration:0.0f]; 28 | } else { 29 | SCLAlertView *SCalert = [[SCLAlertView alloc] initWithNewWindow]; 30 | SCalert.backgroundType = SCLAlertViewBackgroundBlur; 31 | [SCalert addButton:@"Relaunch WhatsApp" actionBlock:^ { 32 | exit(0); 33 | }]; 34 | [SCalert showNotice:@"WAUnlimitedSend" subTitle:@"You need Relaunch WhatsApp to apply changes" closeButtonTitle:@"Later" duration:0.0f]; 35 | } 36 | }]; 37 | 38 | 39 | 40 | FRPSection *DevSection = [FRPSection sectionWithTitle:nil footer:nil]; 41 | 42 | FRPDeveloperCell *BandarHL = [FRPDeveloperCell cellWithTitle:@"BandarHelal" detail:@"BandarHL" image:[[UIImage alloc] initWithData:[NSData dataWithContentsOfURL:profileimage]] url:@"https://twitter.com/BandarHL"]; 43 | 44 | FRPDeveloperCell *Fahad = [FRPDeveloperCell cellWithTitle:@"Fahad" detail:@"@fahadaljuwausri" image:[[UIImage alloc] initWithData:[NSData dataWithContentsOfURL:profileimage2]] url:@"https://twitter.com/fahadaljuwausri"]; 45 | 46 | FRPDeveloperCell *paypal = [FRPDeveloperCell cellWithTitle:@"Donate via paypal" detail:@"PayPal" image:[UIImage imageNamed:@"WAS.bundle/PrefsDonate.png"] url:@"https://www.paypal.me/fjr699"]; 47 | 48 | 49 | 50 | [HeaderSection addCell:sendswitch]; 51 | [DevSection addCell:BandarHL]; 52 | [DevSection addCell:Fahad]; 53 | [DevSection addCell:paypal]; 54 | 55 | 56 | FRPreferences *table = [FRPreferences tableWithSections:@[HeaderSection,DevSection] title:@"WAUnlimitedSend" tintColor:nil]; 57 | [viewController.navigationController pushViewController:table animated:YES]; 58 | if (@available(iOS 11.0, *)) { 59 | viewController.navigationController.navigationBar.prefersLargeTitles = false; 60 | } else { 61 | // Fallback on earlier versions 62 | } 63 | 64 | } 65 | 66 | @end 67 | -------------------------------------------------------------------------------- /Pods/SDWebImage/SDWebImage/SDWebImageCompat.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the SDWebImage package. 3 | * (c) Olivier Poitrey 4 | * (c) Jamie Pinkham 5 | * 6 | * For the full copyright and license information, please view the LICENSE 7 | * file that was distributed with this source code. 8 | */ 9 | 10 | #import 11 | 12 | #ifdef __OBJC_GC__ 13 | #error SDWebImage does not support Objective-C Garbage Collection 14 | #endif 15 | 16 | // Apple's defines from TargetConditionals.h are a bit weird. 17 | // Seems like TARGET_OS_MAC is always defined (on all platforms). 18 | // To determine if we are running on OSX, we can only rely on TARGET_OS_IPHONE=0 and all the other platforms 19 | #if !TARGET_OS_IPHONE && !TARGET_OS_IOS && !TARGET_OS_TV && !TARGET_OS_WATCH 20 | #define SD_MAC 1 21 | #else 22 | #define SD_MAC 0 23 | #endif 24 | 25 | // iOS and tvOS are very similar, UIKit exists on both platforms 26 | // Note: watchOS also has UIKit, but it's very limited 27 | #if TARGET_OS_IOS || TARGET_OS_TV 28 | #define SD_UIKIT 1 29 | #else 30 | #define SD_UIKIT 0 31 | #endif 32 | 33 | #if TARGET_OS_IOS 34 | #define SD_IOS 1 35 | #else 36 | #define SD_IOS 0 37 | #endif 38 | 39 | #if TARGET_OS_TV 40 | #define SD_TV 1 41 | #else 42 | #define SD_TV 0 43 | #endif 44 | 45 | #if TARGET_OS_WATCH 46 | #define SD_WATCH 1 47 | #else 48 | #define SD_WATCH 0 49 | #endif 50 | 51 | 52 | #if SD_MAC 53 | #import 54 | #ifndef UIImage 55 | #define UIImage NSImage 56 | #endif 57 | #ifndef UIImageView 58 | #define UIImageView NSImageView 59 | #endif 60 | #ifndef UIView 61 | #define UIView NSView 62 | #endif 63 | #else 64 | #if __IPHONE_OS_VERSION_MIN_REQUIRED != 20000 && __IPHONE_OS_VERSION_MIN_REQUIRED < __IPHONE_5_0 65 | #error SDWebImage doesn't support Deployment Target version < 5.0 66 | #endif 67 | 68 | #if SD_UIKIT 69 | #import 70 | #endif 71 | #if SD_WATCH 72 | #import 73 | #ifndef UIView 74 | #define UIView WKInterfaceObject 75 | #endif 76 | #ifndef UIImageView 77 | #define UIImageView WKInterfaceImage 78 | #endif 79 | #endif 80 | #endif 81 | 82 | #ifndef NS_ENUM 83 | #define NS_ENUM(_type, _name) enum _name : _type _name; enum _name : _type 84 | #endif 85 | 86 | #ifndef NS_OPTIONS 87 | #define NS_OPTIONS(_type, _name) enum _name : _type _name; enum _name : _type 88 | #endif 89 | 90 | FOUNDATION_EXPORT UIImage *SDScaledImageForKey(NSString *key, UIImage *image); 91 | 92 | typedef void(^SDWebImageNoParamsBlock)(void); 93 | 94 | FOUNDATION_EXPORT NSString *const SDWebImageErrorDomain; 95 | 96 | #ifndef dispatch_queue_async_safe 97 | #define dispatch_queue_async_safe(queue, block)\ 98 | if (dispatch_queue_get_label(DISPATCH_CURRENT_QUEUE_LABEL) == dispatch_queue_get_label(queue)) {\ 99 | block();\ 100 | } else {\ 101 | dispatch_async(queue, block);\ 102 | } 103 | #endif 104 | 105 | #ifndef dispatch_main_async_safe 106 | #define dispatch_main_async_safe(block) dispatch_queue_async_safe(dispatch_get_main_queue(), block) 107 | #endif 108 | -------------------------------------------------------------------------------- /Pods/SDWebImage/SDWebImage/SDImageCacheConfig.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the SDWebImage package. 3 | * (c) Olivier Poitrey 4 | * 5 | * For the full copyright and license information, please view the LICENSE 6 | * file that was distributed with this source code. 7 | */ 8 | 9 | #import 10 | #import "SDWebImageCompat.h" 11 | 12 | typedef NS_ENUM(NSUInteger, SDImageCacheConfigExpireType) { 13 | /** 14 | * When the image is accessed it will update this value 15 | */ 16 | SDImageCacheConfigExpireTypeAccessDate, 17 | /** 18 | * The image was obtained from the disk cache (Default) 19 | */ 20 | SDImageCacheConfigExpireTypeModificationDate 21 | }; 22 | 23 | @interface SDImageCacheConfig : NSObject 24 | 25 | /** 26 | * Decompressing images that are downloaded and cached can improve performance but can consume lot of memory. 27 | * Defaults to YES. Set this to NO if you are experiencing a crash due to excessive memory consumption. 28 | */ 29 | @property (assign, nonatomic) BOOL shouldDecompressImages; 30 | 31 | /** 32 | * Whether or not to disable iCloud backup 33 | * Defaults to YES. 34 | */ 35 | @property (assign, nonatomic) BOOL shouldDisableiCloud; 36 | 37 | /** 38 | * Whether or not to use memory cache 39 | * @note When the memory cache is disabled, the weak memory cache will also be disabled. 40 | * Defaults to YES. 41 | */ 42 | @property (assign, nonatomic) BOOL shouldCacheImagesInMemory; 43 | 44 | /** 45 | * The option to control weak memory cache for images. When enable, `SDImageCache`'s memory cache will use a weak maptable to store the image at the same time when it stored to memory, and get removed at the same time. 46 | * However when memory warning is triggered, since the weak maptable does not hold a strong reference to image instacnce, even when the memory cache itself is purged, some images which are held strongly by UIImageViews or other live instances can be recovered again, to avoid later re-query from disk cache or network. This may be helpful for the case, for example, when app enter background and memory is purged, cause cell flashing after re-enter foreground. 47 | * Defautls to YES. You can change this option dynamically. 48 | */ 49 | @property (assign, nonatomic) BOOL shouldUseWeakMemoryCache; 50 | 51 | /** 52 | * The reading options while reading cache from disk. 53 | * Defaults to 0. You can set this to `NSDataReadingMappedIfSafe` to improve performance. 54 | */ 55 | @property (assign, nonatomic) NSDataReadingOptions diskCacheReadingOptions; 56 | 57 | /** 58 | * The writing options while writing cache to disk. 59 | * Defaults to `NSDataWritingAtomic`. You can set this to `NSDataWritingWithoutOverwriting` to prevent overwriting an existing file. 60 | */ 61 | @property (assign, nonatomic) NSDataWritingOptions diskCacheWritingOptions; 62 | 63 | /** 64 | * The maximum length of time to keep an image in the cache, in seconds. 65 | */ 66 | @property (assign, nonatomic) NSInteger maxCacheAge; 67 | 68 | /** 69 | * The maximum size of the cache, in bytes. 70 | */ 71 | @property (assign, nonatomic) NSUInteger maxCacheSize; 72 | 73 | /** 74 | * The attribute which the clear cache will be checked against when clearing the disk cache 75 | * Default is Modified Date 76 | */ 77 | @property (assign, nonatomic) SDImageCacheConfigExpireType diskCacheExpireType; 78 | 79 | @end 80 | -------------------------------------------------------------------------------- /WAUnlimitedSend/SCLAlertView/SCLButton.h: -------------------------------------------------------------------------------- 1 | // 2 | // SCLButton.h 3 | // SCLAlertView 4 | // 5 | // Created by Diogo Autilio on 9/26/14. 6 | // Copyright (c) 2014-2017 AnyKey Entertainment. All rights reserved. 7 | // 8 | 9 | #if defined(__has_feature) && __has_feature(modules) 10 | @import UIKit; 11 | #else 12 | #import 13 | #endif 14 | 15 | @class SCLTimerDisplay; 16 | 17 | @interface SCLButton : UIButton 18 | 19 | typedef void (^SCLActionBlock)(void); 20 | typedef BOOL (^SCLValidationBlock)(void); 21 | typedef NSDictionary* (^CompleteButtonFormatBlock)(void); 22 | typedef NSDictionary* (^ButtonFormatBlock)(void); 23 | 24 | // Action Types 25 | typedef NS_ENUM(NSInteger, SCLActionType) 26 | { 27 | SCLNone, 28 | SCLSelector, 29 | SCLBlock 30 | }; 31 | 32 | /** Set button action type. 33 | * 34 | * Holds the button action type. 35 | */ 36 | @property SCLActionType actionType; 37 | 38 | /** Set action button block. 39 | * 40 | * TODO 41 | */ 42 | @property (copy, nonatomic) SCLActionBlock actionBlock; 43 | 44 | /** Set Validation button block. 45 | * 46 | * Set one kind of validation and keeps the alert visible until the validation is successful 47 | */ 48 | @property (copy, nonatomic) SCLValidationBlock validationBlock; 49 | 50 | /** Set Complete button format block. 51 | * 52 | * Holds the complete button format block. 53 | * Support keys : backgroundColor, borderWidth, borderColor, textColor 54 | */ 55 | @property (copy, nonatomic) CompleteButtonFormatBlock completeButtonFormatBlock; 56 | 57 | /** Set button format block. 58 | * 59 | * Holds the button format block. 60 | * Support keys : backgroundColor, borderWidth, borderColor, textColor 61 | */ 62 | @property (copy, nonatomic) ButtonFormatBlock buttonFormatBlock; 63 | 64 | /** Set SCLButton color. 65 | * 66 | * Set SCLButton color. 67 | */ 68 | @property (strong, nonatomic) UIColor *defaultBackgroundColor UI_APPEARANCE_SELECTOR; 69 | 70 | /** Set Target object. 71 | * 72 | * Target is an object that holds the information necessary to send a message to another object when an event occurs. 73 | */ 74 | @property id target; 75 | 76 | /** Set selector id. 77 | * 78 | * A selector is the name used to select a method to execute for an object, 79 | * or the unique identifier that replaces the name when the source code is compiled. 80 | */ 81 | @property SEL selector; 82 | 83 | /** Parse button configuration 84 | * 85 | * Parse ButtonFormatBlock and CompleteButtonFormatBlock setting custom configuration. 86 | * Set keys : backgroundColor, borderWidth, borderColor, textColor 87 | */ 88 | - (void)parseConfig:(NSDictionary *)buttonConfig; 89 | 90 | /** Set button timer. 91 | * 92 | * Holds the button timer, if present. 93 | */ 94 | @property (strong, nonatomic) SCLTimerDisplay *timer; 95 | 96 | /** Init method 97 | * 98 | */ 99 | - (instancetype)initWithWindowWidth:(CGFloat)windowWidth; 100 | 101 | /** Adjust width of the button according to the width of the alert and 102 | * the number of buttons. Only used when buttons are horizontally aligned. 103 | * 104 | * @param windowWidth The width of the alert. 105 | * @param numberOfButtons The number of buttons in the alert. 106 | */ 107 | - (void)adjustWidthWithWindowWidth:(CGFloat)windowWidth numberOfButtons:(NSUInteger)numberOfButtons; 108 | 109 | @end 110 | -------------------------------------------------------------------------------- /Pods/SDWebImage/SDWebImage/UIImage+MultiFormat.m: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the SDWebImage package. 3 | * (c) Olivier Poitrey 4 | * 5 | * For the full copyright and license information, please view the LICENSE 6 | * file that was distributed with this source code. 7 | */ 8 | 9 | #import "UIImage+MultiFormat.h" 10 | #import "NSImage+WebCache.h" 11 | #import "SDWebImageCodersManager.h" 12 | #import "objc/runtime.h" 13 | 14 | @implementation UIImage (MultiFormat) 15 | 16 | #if SD_MAC 17 | - (NSUInteger)sd_imageLoopCount { 18 | NSUInteger imageLoopCount = 0; 19 | for (NSImageRep *rep in self.representations) { 20 | if ([rep isKindOfClass:[NSBitmapImageRep class]]) { 21 | NSBitmapImageRep *bitmapRep = (NSBitmapImageRep *)rep; 22 | imageLoopCount = [[bitmapRep valueForProperty:NSImageLoopCount] unsignedIntegerValue]; 23 | break; 24 | } 25 | } 26 | return imageLoopCount; 27 | } 28 | 29 | - (void)setSd_imageLoopCount:(NSUInteger)sd_imageLoopCount { 30 | for (NSImageRep *rep in self.representations) { 31 | if ([rep isKindOfClass:[NSBitmapImageRep class]]) { 32 | NSBitmapImageRep *bitmapRep = (NSBitmapImageRep *)rep; 33 | [bitmapRep setProperty:NSImageLoopCount withValue:@(sd_imageLoopCount)]; 34 | break; 35 | } 36 | } 37 | } 38 | 39 | #else 40 | 41 | - (NSUInteger)sd_imageLoopCount { 42 | NSUInteger imageLoopCount = 0; 43 | NSNumber *value = objc_getAssociatedObject(self, @selector(sd_imageLoopCount)); 44 | if ([value isKindOfClass:[NSNumber class]]) { 45 | imageLoopCount = value.unsignedIntegerValue; 46 | } 47 | return imageLoopCount; 48 | } 49 | 50 | - (void)setSd_imageLoopCount:(NSUInteger)sd_imageLoopCount { 51 | NSNumber *value = @(sd_imageLoopCount); 52 | objc_setAssociatedObject(self, @selector(sd_imageLoopCount), value, OBJC_ASSOCIATION_RETAIN_NONATOMIC); 53 | } 54 | #endif 55 | 56 | - (SDImageFormat)sd_imageFormat { 57 | SDImageFormat imageFormat = SDImageFormatUndefined; 58 | NSNumber *value = objc_getAssociatedObject(self, @selector(sd_imageFormat)); 59 | if ([value isKindOfClass:[NSNumber class]]) { 60 | imageFormat = value.integerValue; 61 | return imageFormat; 62 | } 63 | // Check CGImage's UTType, may return nil for non-Image/IO based image 64 | #pragma clang diagnostic push 65 | #pragma clang diagnostic ignored "-Wunguarded-availability" 66 | if (&CGImageGetUTType != NULL) { 67 | CFStringRef uttype = CGImageGetUTType(self.CGImage); 68 | imageFormat = [NSData sd_imageFormatFromUTType:uttype]; 69 | } 70 | #pragma clang diagnostic pop 71 | return imageFormat; 72 | } 73 | 74 | - (void)setSd_imageFormat:(SDImageFormat)sd_imageFormat { 75 | objc_setAssociatedObject(self, @selector(sd_imageFormat), @(sd_imageFormat), OBJC_ASSOCIATION_RETAIN_NONATOMIC); 76 | } 77 | 78 | + (nullable UIImage *)sd_imageWithData:(nullable NSData *)data { 79 | return [[SDWebImageCodersManager sharedInstance] decodedImageWithData:data]; 80 | } 81 | 82 | - (nullable NSData *)sd_imageData { 83 | return [self sd_imageDataAsFormat:SDImageFormatUndefined]; 84 | } 85 | 86 | - (nullable NSData *)sd_imageDataAsFormat:(SDImageFormat)imageFormat { 87 | NSData *imageData = nil; 88 | if (self) { 89 | imageData = [[SDWebImageCodersManager sharedInstance] encodedDataWithImage:self format:imageFormat]; 90 | } 91 | return imageData; 92 | } 93 | 94 | 95 | @end 96 | -------------------------------------------------------------------------------- /WAUnlimitedSend/SCLAlertView/SCLSwitchView.m: -------------------------------------------------------------------------------- 1 | // 2 | // SCLSwitchView.m 3 | // SCLAlertView 4 | // 5 | // Created by André Felipe Santos on 27/01/16. 6 | // Copyright (c) 2016-2017 AnyKey Entertainment. All rights reserved. 7 | // 8 | 9 | #import "SCLSwitchView.h" 10 | #import "SCLMacros.h" 11 | 12 | @interface SCLSwitchView () 13 | 14 | @property (strong, nonatomic) UISwitch *switchKnob; 15 | @property (strong, nonatomic) UILabel *switchLabel; 16 | 17 | @end 18 | 19 | #pragma mark 20 | 21 | @implementation SCLSwitchView 22 | 23 | #pragma mark - Constructors 24 | 25 | - (instancetype)init 26 | { 27 | self = [super init]; 28 | if (self) 29 | { 30 | [self setup]; 31 | } 32 | return self; 33 | } 34 | 35 | - (instancetype)initWithCoder:(NSCoder *)aDecoder 36 | { 37 | self = [super initWithCoder:aDecoder]; 38 | if(self) 39 | { 40 | [self setup]; 41 | } 42 | return self; 43 | } 44 | 45 | - (instancetype)initWithFrame:(CGRect)frame 46 | { 47 | self = [super initWithFrame:frame]; 48 | if (self) 49 | { 50 | [self setup]; 51 | } 52 | return self; 53 | } 54 | 55 | #pragma mark - Initialization 56 | 57 | - (void)setup 58 | { 59 | // Add switch knob 60 | self.switchKnob = [[UISwitch alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 0.0f, 0.f)]; 61 | [self addSubview:self.switchKnob]; 62 | 63 | // Add switch label 64 | CGFloat x, width, height; 65 | x = self.switchKnob.frame.size.width + 8.0f; 66 | width = self.frame.size.width - self.switchKnob.frame.size.width - 8.0f; 67 | height = self.switchKnob.frame.size.height; 68 | 69 | self.switchLabel = [[UILabel alloc] initWithFrame:CGRectMake(x, 0.0f, width, height)]; 70 | 71 | NSString *switchFontFamily = @"HelveticaNeue-Bold"; 72 | CGFloat switchFontSize = 12.0f; 73 | 74 | self.switchLabel.numberOfLines = 1; 75 | self.switchLabel.textAlignment = NSTextAlignmentLeft; 76 | self.switchLabel.lineBreakMode = NSLineBreakByTruncatingTail; 77 | self.switchLabel.adjustsFontSizeToFitWidth = YES; 78 | self.switchLabel.baselineAdjustment = UIBaselineAdjustmentAlignCenters; 79 | self.switchLabel.minimumScaleFactor = 0.5f; 80 | self.switchLabel.font = [UIFont fontWithName:switchFontFamily size:switchFontSize]; 81 | self.switchLabel.textColor = UIColorFromHEX(0x4D4D4D); 82 | 83 | [self addSubview:self.switchLabel]; 84 | } 85 | 86 | #pragma mark - Getters 87 | 88 | - (UIColor *)tintColor 89 | { 90 | return self.switchKnob.tintColor; 91 | } 92 | 93 | - (UIColor *)labelColor 94 | { 95 | return self.switchLabel.textColor; 96 | } 97 | 98 | - (UIFont *)labelFont 99 | { 100 | return self.switchLabel.font; 101 | } 102 | 103 | - (NSString *)labelText 104 | { 105 | return self.switchLabel.text; 106 | } 107 | 108 | - (BOOL)isSelected 109 | { 110 | return self.switchKnob.isOn; 111 | } 112 | 113 | #pragma mark - Setters 114 | 115 | - (void)setTintColor:(UIColor *)tintColor 116 | { 117 | self.switchKnob.onTintColor = tintColor; 118 | } 119 | 120 | - (void)setLabelColor:(UIColor *)labelColor 121 | { 122 | self.switchLabel.textColor = labelColor; 123 | } 124 | 125 | - (void)setLabelFont:(UIFont *)labelFont 126 | { 127 | self.switchLabel.font = labelFont; 128 | } 129 | 130 | - (void)setLabelText:(NSString *)labelText 131 | { 132 | self.switchLabel.text = labelText; 133 | } 134 | 135 | - (void)setSelected:(BOOL)selected 136 | { 137 | self.switchKnob.on = selected; 138 | } 139 | 140 | @end 141 | -------------------------------------------------------------------------------- /WAUnlimitedSend/FRPreferences/FRPreferences.m: -------------------------------------------------------------------------------- 1 | // 2 | // FRPPreferences.m 3 | // FRPreferences 4 | // 5 | // Created by Fouad Raheb on 7/2/15. 6 | // Copyright (c) 2015 F0u4d. All rights reserved. 7 | // 8 | 9 | #import "FRPreferences.h" 10 | #import "FRPCell.h" 11 | #import "FRPSection.h" 12 | #import 13 | #import 14 | 15 | @interface FRPreferences () 16 | 17 | @property (nonatomic, strong) UIColor *tintUIColor; 18 | 19 | @end 20 | 21 | @implementation FRPreferences 22 | 23 | + (instancetype)tableWithSections:(NSArray *)sections title:(NSString *)title tintColor:(UIColor *)color { 24 | FRPreferences *table = [[self alloc] initTableWithSections:sections]; 25 | table.title = title; 26 | table.tintUIColor = color; 27 | return table; 28 | } 29 | 30 | - (instancetype)initTableWithSections:(NSArray *)sections { 31 | if (self = [super initWithStyle:UITableViewStyleGrouped]) { 32 | self.sections = sections; 33 | self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone; 34 | } 35 | return self; 36 | } 37 | 38 | - (void)updateTintColors { 39 | UIColor *tintUIColor = self.tintUIColor; 40 | for (FRPSection *section in self.sections) { 41 | for (FRPCell *cell in section.cells) { 42 | cell.tintUIColor = tintUIColor; 43 | if ([self.plistPath length] > 0 && cell.setting) { 44 | cell.setting.fileSave = self.plistPath; 45 | } 46 | } 47 | section.tintUIColor = tintUIColor; 48 | } 49 | self.view.tintColor = tintUIColor; 50 | self.tableView.tintColor = tintUIColor; 51 | } 52 | 53 | - (void)viewDidDisappear:(BOOL)animated { 54 | [super viewDidDisappear:animated]; 55 | } 56 | 57 | - (void)viewWillAppear:(BOOL)animated { 58 | [super viewWillAppear:animated]; 59 | [self updateTintColors]; 60 | 61 | NSIndexPath *selectedRowIndexPath = [self.tableView indexPathForSelectedRow]; 62 | 63 | if (selectedRowIndexPath) { 64 | [self.tableView deselectRowAtIndexPath:selectedRowIndexPath animated:YES]; 65 | 66 | [[self.navigationController transitionCoordinator] notifyWhenInteractionEndsUsingBlock:^(id context) { 67 | if ([context isCancelled]) { 68 | [self.tableView selectRowAtIndexPath:selectedRowIndexPath animated:YES scrollPosition:UITableViewScrollPositionNone]; 69 | } 70 | }]; 71 | } 72 | } 73 | 74 | - (FRPCell *)cellForIndexPath:(NSIndexPath *)indexPath { 75 | return [self.sections[indexPath.section] cells][indexPath.row]; 76 | } 77 | 78 | - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { 79 | return self.sections.count; 80 | } 81 | 82 | - (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section { 83 | return [self.sections[section] headerTitle]; 84 | } 85 | 86 | - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)sectionIndex { 87 | FRPSection *section = self.sections[sectionIndex]; 88 | 89 | return section.cells.count; 90 | } 91 | 92 | - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { 93 | FRPCell *cell = [self cellForIndexPath:indexPath]; 94 | 95 | return (cell.height > 0)?cell.height:UITableViewAutomaticDimension; 96 | } 97 | 98 | - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 99 | FRPCell *cell = [self cellForIndexPath:indexPath]; 100 | 101 | return cell; 102 | } 103 | 104 | - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 105 | FRPCell *cell = [self cellForIndexPath:indexPath]; 106 | if ([cell respondsToSelector:@selector(didSelectFromTable:)]) [cell didSelectFromTable:self]; 107 | } 108 | 109 | - (NSString *)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section { 110 | return [self.sections[section] footerTitle]; 111 | } 112 | 113 | @end 114 | -------------------------------------------------------------------------------- /WAUnlimitedSend/SCLAlertView/SCLTimerDisplay.m: -------------------------------------------------------------------------------- 1 | // 2 | // SCLTimerDisplay.m 3 | // SCLAlertView 4 | // 5 | // Created by Taylor Ryan on 8/18/15. 6 | // Copyright (c) 2015-2017 AnyKey Entertainment. All rights reserved. 7 | // 8 | 9 | #import "SCLTimerDisplay.h" 10 | #import "SCLMacros.h" 11 | 12 | @interface SCLTimerDisplay () 13 | 14 | @property (strong, nonatomic) UILabel *countLabel; 15 | 16 | @end 17 | 18 | @implementation SCLTimerDisplay 19 | 20 | @synthesize currentAngle; 21 | 22 | - (instancetype)initWithFrame:(CGRect)frame 23 | { 24 | self = [super initWithFrame:frame]; 25 | if (self) 26 | { 27 | self.backgroundColor = [UIColor clearColor]; 28 | currentAngle = 0.0f; 29 | } 30 | return self; 31 | } 32 | 33 | - (instancetype)initWithOrigin:(CGPoint)origin radius:(CGFloat)r 34 | { 35 | return [self initWithOrigin:(CGPoint)origin radius:r lineWidth:5.0f]; 36 | } 37 | 38 | - (instancetype)initWithOrigin:(CGPoint)origin radius:(CGFloat)r lineWidth:(CGFloat)width 39 | { 40 | self = [super initWithFrame:CGRectMake(origin.x, origin.y, r*2, r*2)]; 41 | if (self) { 42 | self.backgroundColor = [UIColor clearColor]; 43 | currentAngle = START_DEGREE_OFFSET; 44 | radius = r-(width/2); 45 | lineWidth = width; 46 | self.color = [UIColor whiteColor]; 47 | self.userInteractionEnabled = NO; 48 | 49 | // Add count label 50 | _countLabel = [[UILabel alloc] init]; 51 | _countLabel.textColor = [UIColor whiteColor]; 52 | _countLabel.backgroundColor = [UIColor clearColor]; 53 | _countLabel.font = [UIFont fontWithName: @"HelveticaNeue-Bold" size:12.0f]; 54 | _countLabel.textAlignment = NSTextAlignmentCenter; 55 | _countLabel.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin; 56 | [self addSubview:_countLabel]; 57 | } 58 | return self; 59 | } 60 | 61 | - (void)updateFrame:(CGSize)size 62 | { 63 | CGFloat r = radius+(lineWidth/2); 64 | 65 | CGFloat originX = size.width - (2*r) - 5; 66 | CGFloat originY = (size.height - (2*r))/2; 67 | 68 | self.frame = CGRectMake(originX, originY, r*2, r*2); 69 | self.countLabel.frame = CGRectMake(0, 0, r*2, r*2); 70 | } 71 | 72 | - (void)drawRect:(CGRect)rect 73 | { 74 | UIBezierPath* aPath = [UIBezierPath bezierPathWithArcCenter:CGPointMake(radius+(lineWidth/2), radius+(lineWidth/2)) 75 | radius:radius 76 | startAngle:DEGREES_TO_RADIANS(START_DEGREE_OFFSET) 77 | endAngle:DEGREES_TO_RADIANS(currentAngle) 78 | clockwise:YES]; 79 | [self.color setStroke]; 80 | aPath.lineWidth = lineWidth; 81 | [aPath stroke]; 82 | 83 | _countLabel.text = [NSString stringWithFormat:@"%d", (int)currentTime]; 84 | } 85 | 86 | - (void)startTimerWithTimeLimit:(int)tl completed:(SCLActionBlock)completed 87 | { 88 | if (_reverse) 89 | { 90 | currentTime = tl; 91 | } 92 | timerLimit = tl; 93 | timer = [NSTimer scheduledTimerWithTimeInterval:TIMER_STEP target:self selector:@selector(updateTimerButton:) userInfo:nil repeats:YES]; 94 | completedBlock = completed; 95 | _countLabel.textColor = _color; 96 | } 97 | 98 | - (void)cancelTimer 99 | { 100 | [timer invalidate]; 101 | } 102 | 103 | - (void)stopTimer 104 | { 105 | [timer invalidate]; 106 | if (completedBlock != nil) { 107 | completedBlock(); 108 | } 109 | } 110 | 111 | - (void)updateTimerButton:(NSTimer *)timer 112 | { 113 | if (_reverse) 114 | { 115 | currentTime -= TIMER_STEP; 116 | currentAngle = (currentTime/timerLimit) * 360 + START_DEGREE_OFFSET; 117 | 118 | if(currentTime <= 0) { 119 | [self stopTimer]; 120 | } 121 | } 122 | else { 123 | currentTime += TIMER_STEP; 124 | currentAngle = (currentTime/timerLimit) * 360 + START_DEGREE_OFFSET; 125 | 126 | if(currentAngle >= (360 + START_DEGREE_OFFSET)) { 127 | [self stopTimer]; 128 | } 129 | } 130 | [self setNeedsDisplay]; 131 | } 132 | 133 | @end 134 | -------------------------------------------------------------------------------- /Pods/SDWebImage/SDWebImage/UIImageView+HighlightedWebCache.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the SDWebImage package. 3 | * (c) Olivier Poitrey 4 | * 5 | * For the full copyright and license information, please view the LICENSE 6 | * file that was distributed with this source code. 7 | */ 8 | 9 | #import "SDWebImageCompat.h" 10 | 11 | #if SD_UIKIT 12 | 13 | #import "SDWebImageManager.h" 14 | 15 | /** 16 | * Integrates SDWebImage async downloading and caching of remote images with UIImageView for highlighted state. 17 | */ 18 | @interface UIImageView (HighlightedWebCache) 19 | 20 | /** 21 | * Set the imageView `highlightedImage` with an `url`. 22 | * 23 | * The download is asynchronous and cached. 24 | * 25 | * @param url The url for the image. 26 | */ 27 | - (void)sd_setHighlightedImageWithURL:(nullable NSURL *)url NS_REFINED_FOR_SWIFT; 28 | 29 | /** 30 | * Set the imageView `highlightedImage` with an `url` and custom options. 31 | * 32 | * The download is asynchronous and cached. 33 | * 34 | * @param url The url for the image. 35 | * @param options The options to use when downloading the image. @see SDWebImageOptions for the possible values. 36 | */ 37 | - (void)sd_setHighlightedImageWithURL:(nullable NSURL *)url 38 | options:(SDWebImageOptions)options NS_REFINED_FOR_SWIFT; 39 | 40 | /** 41 | * Set the imageView `highlightedImage` with an `url`. 42 | * 43 | * The download is asynchronous and cached. 44 | * 45 | * @param url The url for the image. 46 | * @param completedBlock A block called when operation has been completed. This block has no return value 47 | * and takes the requested UIImage as first parameter. In case of error the image parameter 48 | * is nil and the second parameter may contain an NSError. The third parameter is a Boolean 49 | * indicating if the image was retrieved from the local cache or from the network. 50 | * The fourth parameter is the original image url. 51 | */ 52 | - (void)sd_setHighlightedImageWithURL:(nullable NSURL *)url 53 | completed:(nullable SDExternalCompletionBlock)completedBlock NS_REFINED_FOR_SWIFT; 54 | 55 | /** 56 | * Set the imageView `highlightedImage` with an `url` and custom options. 57 | * 58 | * The download is asynchronous and cached. 59 | * 60 | * @param url The url for the image. 61 | * @param options The options to use when downloading the image. @see SDWebImageOptions for the possible values. 62 | * @param completedBlock A block called when operation has been completed. This block has no return value 63 | * and takes the requested UIImage as first parameter. In case of error the image parameter 64 | * is nil and the second parameter may contain an NSError. The third parameter is a Boolean 65 | * indicating if the image was retrieved from the local cache or from the network. 66 | * The fourth parameter is the original image url. 67 | */ 68 | - (void)sd_setHighlightedImageWithURL:(nullable NSURL *)url 69 | options:(SDWebImageOptions)options 70 | completed:(nullable SDExternalCompletionBlock)completedBlock; 71 | 72 | /** 73 | * Set the imageView `highlightedImage` with an `url` and custom options. 74 | * 75 | * The download is asynchronous and cached. 76 | * 77 | * @param url The url for the image. 78 | * @param options The options to use when downloading the image. @see SDWebImageOptions for the possible values. 79 | * @param progressBlock A block called while image is downloading 80 | * @note the progress block is executed on a background queue 81 | * @param completedBlock A block called when operation has been completed. This block has no return value 82 | * and takes the requested UIImage as first parameter. In case of error the image parameter 83 | * is nil and the second parameter may contain an NSError. The third parameter is a Boolean 84 | * indicating if the image was retrieved from the local cache or from the network. 85 | * The fourth parameter is the original image url. 86 | */ 87 | - (void)sd_setHighlightedImageWithURL:(nullable NSURL *)url 88 | options:(SDWebImageOptions)options 89 | progress:(nullable SDWebImageDownloaderProgressBlock)progressBlock 90 | completed:(nullable SDExternalCompletionBlock)completedBlock; 91 | 92 | @end 93 | 94 | #endif 95 | -------------------------------------------------------------------------------- /Pods/SDWebImage/SDWebImage/SDWebImagePrefetcher.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the SDWebImage package. 3 | * (c) Olivier Poitrey 4 | * 5 | * For the full copyright and license information, please view the LICENSE 6 | * file that was distributed with this source code. 7 | */ 8 | 9 | #import 10 | #import "SDWebImageManager.h" 11 | 12 | @class SDWebImagePrefetcher; 13 | 14 | @protocol SDWebImagePrefetcherDelegate 15 | 16 | @optional 17 | 18 | /** 19 | * Called when an image was prefetched. 20 | * 21 | * @param imagePrefetcher The current image prefetcher 22 | * @param imageURL The image url that was prefetched 23 | * @param finishedCount The total number of images that were prefetched (successful or not) 24 | * @param totalCount The total number of images that were to be prefetched 25 | */ 26 | - (void)imagePrefetcher:(nonnull SDWebImagePrefetcher *)imagePrefetcher didPrefetchURL:(nullable NSURL *)imageURL finishedCount:(NSUInteger)finishedCount totalCount:(NSUInteger)totalCount; 27 | 28 | /** 29 | * Called when all images are prefetched. 30 | * @param imagePrefetcher The current image prefetcher 31 | * @param totalCount The total number of images that were prefetched (whether successful or not) 32 | * @param skippedCount The total number of images that were skipped 33 | */ 34 | - (void)imagePrefetcher:(nonnull SDWebImagePrefetcher *)imagePrefetcher didFinishWithTotalCount:(NSUInteger)totalCount skippedCount:(NSUInteger)skippedCount; 35 | 36 | @end 37 | 38 | typedef void(^SDWebImagePrefetcherProgressBlock)(NSUInteger noOfFinishedUrls, NSUInteger noOfTotalUrls); 39 | typedef void(^SDWebImagePrefetcherCompletionBlock)(NSUInteger noOfFinishedUrls, NSUInteger noOfSkippedUrls); 40 | 41 | /** 42 | * Prefetch some URLs in the cache for future use. Images are downloaded in low priority. 43 | */ 44 | @interface SDWebImagePrefetcher : NSObject 45 | 46 | /** 47 | * The web image manager 48 | */ 49 | @property (strong, nonatomic, readonly, nonnull) SDWebImageManager *manager; 50 | 51 | /** 52 | * Maximum number of URLs to prefetch at the same time. Defaults to 3. 53 | */ 54 | @property (nonatomic, assign) NSUInteger maxConcurrentDownloads; 55 | 56 | /** 57 | * SDWebImageOptions for prefetcher. Defaults to SDWebImageLowPriority. 58 | */ 59 | @property (nonatomic, assign) SDWebImageOptions options; 60 | 61 | /** 62 | * Queue options for Prefetcher. Defaults to Main Queue. 63 | */ 64 | @property (strong, nonatomic, nonnull) dispatch_queue_t prefetcherQueue; 65 | 66 | @property (weak, nonatomic, nullable) id delegate; 67 | 68 | /** 69 | * Return the global image prefetcher instance. 70 | */ 71 | + (nonnull instancetype)sharedImagePrefetcher; 72 | 73 | /** 74 | * Allows you to instantiate a prefetcher with any arbitrary image manager. 75 | */ 76 | - (nonnull instancetype)initWithImageManager:(nonnull SDWebImageManager *)manager NS_DESIGNATED_INITIALIZER; 77 | 78 | /** 79 | * Assign list of URLs to let SDWebImagePrefetcher to queue the prefetching, 80 | * currently one image is downloaded at a time, 81 | * and skips images for failed downloads and proceed to the next image in the list. 82 | * Any previously-running prefetch operations are canceled. 83 | * 84 | * @param urls list of URLs to prefetch 85 | */ 86 | - (void)prefetchURLs:(nullable NSArray *)urls; 87 | 88 | /** 89 | * Assign list of URLs to let SDWebImagePrefetcher to queue the prefetching, 90 | * currently one image is downloaded at a time, 91 | * and skips images for failed downloads and proceed to the next image in the list. 92 | * Any previously-running prefetch operations are canceled. 93 | * 94 | * @param urls list of URLs to prefetch 95 | * @param progressBlock block to be called when progress updates; 96 | * first parameter is the number of completed (successful or not) requests, 97 | * second parameter is the total number of images originally requested to be prefetched 98 | * @param completionBlock block to be called when prefetching is completed 99 | * first param is the number of completed (successful or not) requests, 100 | * second parameter is the number of skipped requests 101 | */ 102 | - (void)prefetchURLs:(nullable NSArray *)urls 103 | progress:(nullable SDWebImagePrefetcherProgressBlock)progressBlock 104 | completed:(nullable SDWebImagePrefetcherCompletionBlock)completionBlock; 105 | 106 | /** 107 | * Remove and cancel queued list 108 | */ 109 | - (void)cancelPrefetching; 110 | 111 | 112 | @end 113 | -------------------------------------------------------------------------------- /Pods/SDWebImage/SDWebImage/SDWebImageCoder.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the SDWebImage package. 3 | * (c) Olivier Poitrey 4 | * 5 | * For the full copyright and license information, please view the LICENSE 6 | * file that was distributed with this source code. 7 | */ 8 | 9 | #import 10 | #import "SDWebImageCompat.h" 11 | #import "NSData+ImageContentType.h" 12 | 13 | /** 14 | A Boolean value indicating whether to scale down large images during decompressing. (NSNumber) 15 | */ 16 | FOUNDATION_EXPORT NSString * _Nonnull const SDWebImageCoderScaleDownLargeImagesKey; 17 | 18 | /** 19 | Return the shared device-dependent RGB color space created with CGColorSpaceCreateDeviceRGB. 20 | 21 | @return The device-dependent RGB color space 22 | */ 23 | CG_EXTERN CGColorSpaceRef _Nonnull SDCGColorSpaceGetDeviceRGB(void); 24 | 25 | /** 26 | Check whether CGImageRef contains alpha channel. 27 | 28 | @param imageRef The CGImageRef 29 | @return Return YES if CGImageRef contains alpha channel, otherwise return NO 30 | */ 31 | CG_EXTERN BOOL SDCGImageRefContainsAlpha(_Nullable CGImageRef imageRef); 32 | 33 | 34 | /** 35 | This is the image coder protocol to provide custom image decoding/encoding. 36 | These methods are all required to implement. 37 | @note Pay attention that these methods are not called from main queue. 38 | */ 39 | @protocol SDWebImageCoder 40 | 41 | @required 42 | #pragma mark - Decoding 43 | /** 44 | Returns YES if this coder can decode some data. Otherwise, the data should be passed to another coder. 45 | 46 | @param data The image data so we can look at it 47 | @return YES if this coder can decode the data, NO otherwise 48 | */ 49 | - (BOOL)canDecodeFromData:(nullable NSData *)data; 50 | 51 | /** 52 | Decode the image data to image. 53 | 54 | @param data The image data to be decoded 55 | @return The decoded image from data 56 | */ 57 | - (nullable UIImage *)decodedImageWithData:(nullable NSData *)data; 58 | 59 | /** 60 | Decompress the image with original image and image data. 61 | 62 | @param image The original image to be decompressed 63 | @param data The pointer to original image data. The pointer itself is nonnull but image data can be null. This data will set to cache if needed. If you do not need to modify data at the sametime, ignore this param. 64 | @param optionsDict A dictionary containing any decompressing options. Pass {SDWebImageCoderScaleDownLargeImagesKey: @(YES)} to scale down large images 65 | @return The decompressed image 66 | */ 67 | - (nullable UIImage *)decompressedImageWithImage:(nullable UIImage *)image 68 | data:(NSData * _Nullable * _Nonnull)data 69 | options:(nullable NSDictionary*)optionsDict; 70 | 71 | #pragma mark - Encoding 72 | 73 | /** 74 | Returns YES if this coder can encode some image. Otherwise, it should be passed to another coder. 75 | 76 | @param format The image format 77 | @return YES if this coder can encode the image, NO otherwise 78 | */ 79 | - (BOOL)canEncodeToFormat:(SDImageFormat)format; 80 | 81 | /** 82 | Encode the image to image data. 83 | 84 | @param image The image to be encoded 85 | @param format The image format to encode, you should note `SDImageFormatUndefined` format is also possible 86 | @return The encoded image data 87 | */ 88 | - (nullable NSData *)encodedDataWithImage:(nullable UIImage *)image format:(SDImageFormat)format; 89 | 90 | @end 91 | 92 | 93 | /** 94 | This is the image coder protocol to provide custom progressive image decoding. 95 | These methods are all required to implement. 96 | @note Pay attention that these methods are not called from main queue. 97 | */ 98 | @protocol SDWebImageProgressiveCoder 99 | 100 | @required 101 | /** 102 | Returns YES if this coder can incremental decode some data. Otherwise, it should be passed to another coder. 103 | 104 | @param data The image data so we can look at it 105 | @return YES if this coder can decode the data, NO otherwise 106 | */ 107 | - (BOOL)canIncrementallyDecodeFromData:(nullable NSData *)data; 108 | 109 | /** 110 | Incremental decode the image data to image. 111 | 112 | @param data The image data has been downloaded so far 113 | @param finished Whether the download has finished 114 | @warning because incremental decoding need to keep the decoded context, we will alloc a new instance with the same class for each download operation to avoid conflicts 115 | @return The decoded image from data 116 | */ 117 | - (nullable UIImage *)incrementallyDecodedImageWithData:(nullable NSData *)data finished:(BOOL)finished; 118 | 119 | @end 120 | -------------------------------------------------------------------------------- /Pods/SDWebImage/SDWebImage/SDWebImageTransition.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the SDWebImage package. 3 | * (c) Olivier Poitrey 4 | * 5 | * For the full copyright and license information, please view the LICENSE 6 | * file that was distributed with this source code. 7 | */ 8 | 9 | #import "SDWebImageCompat.h" 10 | 11 | #if SD_UIKIT || SD_MAC 12 | #import "SDImageCache.h" 13 | 14 | // This class is used to provide a transition animation after the view category load image finished. Use this on `sd_imageTransition` in UIView+WebCache.h 15 | // for UIKit(iOS & tvOS), we use `+[UIView transitionWithView:duration:options:animations:completion]` for transition animation. 16 | // for AppKit(macOS), we use `+[NSAnimationContext runAnimationGroup:completionHandler:]` for transition animation. You can call `+[NSAnimationContext currentContext]` to grab the context during animations block. 17 | // These transition are provided for basic usage. If you need complicated animation, consider to directly use Core Animation or use `SDWebImageAvoidAutoSetImage` and implement your own after image load finished. 18 | 19 | #if SD_UIKIT 20 | typedef UIViewAnimationOptions SDWebImageAnimationOptions; 21 | #else 22 | typedef NS_OPTIONS(NSUInteger, SDWebImageAnimationOptions) { 23 | SDWebImageAnimationOptionAllowsImplicitAnimation = 1 << 0, // specify `allowsImplicitAnimation` for the `NSAnimationContext` 24 | }; 25 | #endif 26 | 27 | typedef void (^SDWebImageTransitionPreparesBlock)(__kindof UIView * _Nonnull view, UIImage * _Nullable image, NSData * _Nullable imageData, SDImageCacheType cacheType, NSURL * _Nullable imageURL); 28 | typedef void (^SDWebImageTransitionAnimationsBlock)(__kindof UIView * _Nonnull view, UIImage * _Nullable image); 29 | typedef void (^SDWebImageTransitionCompletionBlock)(BOOL finished); 30 | 31 | @interface SDWebImageTransition : NSObject 32 | 33 | /** 34 | By default, we set the image to the view at the beginning of the animtions. You can disable this and provide custom set image process 35 | */ 36 | @property (nonatomic, assign) BOOL avoidAutoSetImage; 37 | /** 38 | The duration of the transition animation, measured in seconds. Defaults to 0.5. 39 | */ 40 | @property (nonatomic, assign) NSTimeInterval duration; 41 | /** 42 | The timing function used for all animations within this transition animation (macOS). 43 | */ 44 | @property (nonatomic, strong, nullable) CAMediaTimingFunction *timingFunction NS_AVAILABLE_MAC(10_7); 45 | /** 46 | A mask of options indicating how you want to perform the animations. 47 | */ 48 | @property (nonatomic, assign) SDWebImageAnimationOptions animationOptions; 49 | /** 50 | A block object to be executed before the animation sequence starts. 51 | */ 52 | @property (nonatomic, copy, nullable) SDWebImageTransitionPreparesBlock prepares; 53 | /** 54 | A block object that contains the changes you want to make to the specified view. 55 | */ 56 | @property (nonatomic, copy, nullable) SDWebImageTransitionAnimationsBlock animations; 57 | /** 58 | A block object to be executed when the animation sequence ends. 59 | */ 60 | @property (nonatomic, copy, nullable) SDWebImageTransitionCompletionBlock completion; 61 | 62 | @end 63 | 64 | // Convenience way to create transition. Remember to specify the duration if needed. 65 | // for UIKit, these transition just use the correspond `animationOptions`. By default we enable `UIViewAnimationOptionAllowUserInteraction` to allow user interaction during transition. 66 | // for AppKit, these transition use Core Animation in `animations`. So your view must be layer-backed. Set `wantsLayer = YES` before you apply it. 67 | 68 | @interface SDWebImageTransition (Conveniences) 69 | 70 | // class property is available in Xcode 8. We will drop the Xcode 7.3 support in 5.x 71 | #if __has_feature(objc_class_property) 72 | /// Fade transition. 73 | @property (nonatomic, class, nonnull, readonly) SDWebImageTransition *fadeTransition; 74 | /// Flip from left transition. 75 | @property (nonatomic, class, nonnull, readonly) SDWebImageTransition *flipFromLeftTransition; 76 | /// Flip from right transition. 77 | @property (nonatomic, class, nonnull, readonly) SDWebImageTransition *flipFromRightTransition; 78 | /// Flip from top transition. 79 | @property (nonatomic, class, nonnull, readonly) SDWebImageTransition *flipFromTopTransition; 80 | /// Flip from bottom transition. 81 | @property (nonatomic, class, nonnull, readonly) SDWebImageTransition *flipFromBottomTransition; 82 | /// Curl up transition. 83 | @property (nonatomic, class, nonnull, readonly) SDWebImageTransition *curlUpTransition; 84 | /// Curl down transition. 85 | @property (nonatomic, class, nonnull, readonly) SDWebImageTransition *curlDownTransition; 86 | #else 87 | + (nonnull instancetype)fadeTransition; 88 | + (nonnull instancetype)flipFromLeftTransition; 89 | + (nonnull instancetype)flipFromRightTransition; 90 | + (nonnull instancetype)flipFromTopTransition; 91 | + (nonnull instancetype)flipFromBottomTransition; 92 | + (nonnull instancetype)curlUpTransition; 93 | + (nonnull instancetype)curlDownTransition; 94 | #endif 95 | 96 | @end 97 | 98 | #endif 99 | -------------------------------------------------------------------------------- /Pods/SDWebImage/SDWebImage/NSData+ImageContentType.m: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the SDWebImage package. 3 | * (c) Olivier Poitrey 4 | * (c) Fabrice Aneche 5 | * 6 | * For the full copyright and license information, please view the LICENSE 7 | * file that was distributed with this source code. 8 | */ 9 | 10 | #import "NSData+ImageContentType.h" 11 | #if SD_MAC 12 | #import 13 | #else 14 | #import 15 | #endif 16 | 17 | // Currently Image/IO does not support WebP 18 | #define kSDUTTypeWebP ((__bridge CFStringRef)@"public.webp") 19 | // AVFileTypeHEIC/AVFileTypeHEIF is defined in AVFoundation via iOS 11, we use this without import AVFoundation 20 | #define kSDUTTypeHEIC ((__bridge CFStringRef)@"public.heic") 21 | #define kSDUTTypeHEIF ((__bridge CFStringRef)@"public.heif") 22 | 23 | @implementation NSData (ImageContentType) 24 | 25 | + (SDImageFormat)sd_imageFormatForImageData:(nullable NSData *)data { 26 | if (!data) { 27 | return SDImageFormatUndefined; 28 | } 29 | 30 | // File signatures table: http://www.garykessler.net/library/file_sigs.html 31 | uint8_t c; 32 | [data getBytes:&c length:1]; 33 | switch (c) { 34 | case 0xFF: 35 | return SDImageFormatJPEG; 36 | case 0x89: 37 | return SDImageFormatPNG; 38 | case 0x47: 39 | return SDImageFormatGIF; 40 | case 0x49: 41 | case 0x4D: 42 | return SDImageFormatTIFF; 43 | case 0x52: { 44 | if (data.length >= 12) { 45 | //RIFF....WEBP 46 | NSString *testString = [[NSString alloc] initWithData:[data subdataWithRange:NSMakeRange(0, 12)] encoding:NSASCIIStringEncoding]; 47 | if ([testString hasPrefix:@"RIFF"] && [testString hasSuffix:@"WEBP"]) { 48 | return SDImageFormatWebP; 49 | } 50 | } 51 | break; 52 | } 53 | case 0x00: { 54 | if (data.length >= 12) { 55 | //....ftypheic ....ftypheix ....ftyphevc ....ftyphevx 56 | NSString *testString = [[NSString alloc] initWithData:[data subdataWithRange:NSMakeRange(4, 8)] encoding:NSASCIIStringEncoding]; 57 | if ([testString isEqualToString:@"ftypheic"] 58 | || [testString isEqualToString:@"ftypheix"] 59 | || [testString isEqualToString:@"ftyphevc"] 60 | || [testString isEqualToString:@"ftyphevx"]) { 61 | return SDImageFormatHEIC; 62 | } 63 | if ([testString isEqualToString:@"ftypmif1"] || [testString isEqualToString:@"ftypmsf1"]) { 64 | return SDImageFormatHEIF; 65 | } 66 | } 67 | break; 68 | } 69 | } 70 | return SDImageFormatUndefined; 71 | } 72 | 73 | + (nonnull CFStringRef)sd_UTTypeFromSDImageFormat:(SDImageFormat)format { 74 | CFStringRef UTType; 75 | switch (format) { 76 | case SDImageFormatJPEG: 77 | UTType = kUTTypeJPEG; 78 | break; 79 | case SDImageFormatPNG: 80 | UTType = kUTTypePNG; 81 | break; 82 | case SDImageFormatGIF: 83 | UTType = kUTTypeGIF; 84 | break; 85 | case SDImageFormatTIFF: 86 | UTType = kUTTypeTIFF; 87 | break; 88 | case SDImageFormatWebP: 89 | UTType = kSDUTTypeWebP; 90 | break; 91 | case SDImageFormatHEIC: 92 | UTType = kSDUTTypeHEIC; 93 | break; 94 | case SDImageFormatHEIF: 95 | UTType = kSDUTTypeHEIF; 96 | break; 97 | default: 98 | // default is kUTTypePNG 99 | UTType = kUTTypePNG; 100 | break; 101 | } 102 | return UTType; 103 | } 104 | 105 | + (SDImageFormat)sd_imageFormatFromUTType:(CFStringRef)uttype { 106 | if (!uttype) { 107 | return SDImageFormatUndefined; 108 | } 109 | SDImageFormat imageFormat; 110 | if (CFStringCompare(uttype, kUTTypeJPEG, 0) == kCFCompareEqualTo) { 111 | imageFormat = SDImageFormatJPEG; 112 | } else if (CFStringCompare(uttype, kUTTypePNG, 0) == kCFCompareEqualTo) { 113 | imageFormat = SDImageFormatPNG; 114 | } else if (CFStringCompare(uttype, kUTTypeGIF, 0) == kCFCompareEqualTo) { 115 | imageFormat = SDImageFormatGIF; 116 | } else if (CFStringCompare(uttype, kUTTypeTIFF, 0) == kCFCompareEqualTo) { 117 | imageFormat = SDImageFormatTIFF; 118 | } else if (CFStringCompare(uttype, kSDUTTypeWebP, 0) == kCFCompareEqualTo) { 119 | imageFormat = SDImageFormatWebP; 120 | } else if (CFStringCompare(uttype, kSDUTTypeHEIC, 0) == kCFCompareEqualTo) { 121 | imageFormat = SDImageFormatHEIC; 122 | } else if (CFStringCompare(uttype, kSDUTTypeHEIF, 0) == kCFCompareEqualTo) { 123 | imageFormat = SDImageFormatHEIF; 124 | } else { 125 | imageFormat = SDImageFormatUndefined; 126 | } 127 | return imageFormat; 128 | } 129 | 130 | @end 131 | -------------------------------------------------------------------------------- /Pods/SDWebImage/SDWebImage/SDWebImageCodersManager.m: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the SDWebImage package. 3 | * (c) Olivier Poitrey 4 | * 5 | * For the full copyright and license information, please view the LICENSE 6 | * file that was distributed with this source code. 7 | */ 8 | 9 | #import "SDWebImageCodersManager.h" 10 | #import "SDWebImageImageIOCoder.h" 11 | #import "SDWebImageGIFCoder.h" 12 | #ifdef SD_WEBP 13 | #import "SDWebImageWebPCoder.h" 14 | #endif 15 | #import "UIImage+MultiFormat.h" 16 | 17 | #define LOCK(lock) dispatch_semaphore_wait(lock, DISPATCH_TIME_FOREVER); 18 | #define UNLOCK(lock) dispatch_semaphore_signal(lock); 19 | 20 | @interface SDWebImageCodersManager () 21 | 22 | @property (nonatomic, strong, nonnull) dispatch_semaphore_t codersLock; 23 | 24 | @end 25 | 26 | @implementation SDWebImageCodersManager 27 | 28 | + (nonnull instancetype)sharedInstance { 29 | static dispatch_once_t once; 30 | static id instance; 31 | dispatch_once(&once, ^{ 32 | instance = [self new]; 33 | }); 34 | return instance; 35 | } 36 | 37 | - (instancetype)init { 38 | if (self = [super init]) { 39 | // initialize with default coders 40 | NSMutableArray> *mutableCoders = [@[[SDWebImageImageIOCoder sharedCoder]] mutableCopy]; 41 | #ifdef SD_WEBP 42 | [mutableCoders addObject:[SDWebImageWebPCoder sharedCoder]]; 43 | #endif 44 | _coders = [mutableCoders copy]; 45 | _codersLock = dispatch_semaphore_create(1); 46 | } 47 | return self; 48 | } 49 | 50 | #pragma mark - Coder IO operations 51 | 52 | - (void)addCoder:(nonnull id)coder { 53 | if (![coder conformsToProtocol:@protocol(SDWebImageCoder)]) { 54 | return; 55 | } 56 | LOCK(self.codersLock); 57 | NSMutableArray> *mutableCoders = [self.coders mutableCopy]; 58 | if (!mutableCoders) { 59 | mutableCoders = [NSMutableArray array]; 60 | } 61 | [mutableCoders addObject:coder]; 62 | self.coders = [mutableCoders copy]; 63 | UNLOCK(self.codersLock); 64 | } 65 | 66 | - (void)removeCoder:(nonnull id)coder { 67 | if (![coder conformsToProtocol:@protocol(SDWebImageCoder)]) { 68 | return; 69 | } 70 | LOCK(self.codersLock); 71 | NSMutableArray> *mutableCoders = [self.coders mutableCopy]; 72 | [mutableCoders removeObject:coder]; 73 | self.coders = [mutableCoders copy]; 74 | UNLOCK(self.codersLock); 75 | } 76 | 77 | #pragma mark - SDWebImageCoder 78 | - (BOOL)canDecodeFromData:(NSData *)data { 79 | LOCK(self.codersLock); 80 | NSArray> *coders = self.coders; 81 | UNLOCK(self.codersLock); 82 | for (id coder in coders.reverseObjectEnumerator) { 83 | if ([coder canDecodeFromData:data]) { 84 | return YES; 85 | } 86 | } 87 | return NO; 88 | } 89 | 90 | - (BOOL)canEncodeToFormat:(SDImageFormat)format { 91 | LOCK(self.codersLock); 92 | NSArray> *coders = self.coders; 93 | UNLOCK(self.codersLock); 94 | for (id coder in coders.reverseObjectEnumerator) { 95 | if ([coder canEncodeToFormat:format]) { 96 | return YES; 97 | } 98 | } 99 | return NO; 100 | } 101 | 102 | - (UIImage *)decodedImageWithData:(NSData *)data { 103 | LOCK(self.codersLock); 104 | NSArray> *coders = self.coders; 105 | UNLOCK(self.codersLock); 106 | for (id coder in coders.reverseObjectEnumerator) { 107 | if ([coder canDecodeFromData:data]) { 108 | return [coder decodedImageWithData:data]; 109 | } 110 | } 111 | return nil; 112 | } 113 | 114 | - (UIImage *)decompressedImageWithImage:(UIImage *)image 115 | data:(NSData *__autoreleasing _Nullable *)data 116 | options:(nullable NSDictionary*)optionsDict { 117 | if (!image) { 118 | return nil; 119 | } 120 | LOCK(self.codersLock); 121 | NSArray> *coders = self.coders; 122 | UNLOCK(self.codersLock); 123 | for (id coder in coders.reverseObjectEnumerator) { 124 | if ([coder canDecodeFromData:*data]) { 125 | UIImage *decompressedImage = [coder decompressedImageWithImage:image data:data options:optionsDict]; 126 | decompressedImage.sd_imageFormat = image.sd_imageFormat; 127 | return decompressedImage; 128 | } 129 | } 130 | return nil; 131 | } 132 | 133 | - (NSData *)encodedDataWithImage:(UIImage *)image format:(SDImageFormat)format { 134 | if (!image) { 135 | return nil; 136 | } 137 | LOCK(self.codersLock); 138 | NSArray> *coders = self.coders; 139 | UNLOCK(self.codersLock); 140 | for (id coder in coders.reverseObjectEnumerator) { 141 | if ([coder canEncodeToFormat:format]) { 142 | return [coder encodedDataWithImage:image format:format]; 143 | } 144 | } 145 | return nil; 146 | } 147 | 148 | @end 149 | -------------------------------------------------------------------------------- /Pods/SDWebImage/SDWebImage/SDWebImageTransition.m: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the SDWebImage package. 3 | * (c) Olivier Poitrey 4 | * 5 | * For the full copyright and license information, please view the LICENSE 6 | * file that was distributed with this source code. 7 | */ 8 | 9 | #import "SDWebImageTransition.h" 10 | 11 | #if SD_UIKIT || SD_MAC 12 | 13 | #if SD_MAC 14 | #import 15 | #endif 16 | 17 | @implementation SDWebImageTransition 18 | 19 | - (instancetype)init { 20 | self = [super init]; 21 | if (self) { 22 | self.duration = 0.5; 23 | } 24 | return self; 25 | } 26 | 27 | @end 28 | 29 | @implementation SDWebImageTransition (Conveniences) 30 | 31 | + (SDWebImageTransition *)fadeTransition { 32 | SDWebImageTransition *transition = [SDWebImageTransition new]; 33 | #if SD_UIKIT 34 | transition.animationOptions = UIViewAnimationOptionTransitionCrossDissolve | UIViewAnimationOptionAllowUserInteraction; 35 | #else 36 | transition.animations = ^(__kindof NSView * _Nonnull view, NSImage * _Nullable image) { 37 | CATransition *trans = [CATransition animation]; 38 | trans.type = kCATransitionFade; 39 | [view.layer addAnimation:trans forKey:kCATransition]; 40 | }; 41 | #endif 42 | return transition; 43 | } 44 | 45 | + (SDWebImageTransition *)flipFromLeftTransition { 46 | SDWebImageTransition *transition = [SDWebImageTransition new]; 47 | #if SD_UIKIT 48 | transition.animationOptions = UIViewAnimationOptionTransitionFlipFromLeft | UIViewAnimationOptionAllowUserInteraction; 49 | #else 50 | transition.animations = ^(__kindof NSView * _Nonnull view, NSImage * _Nullable image) { 51 | CATransition *trans = [CATransition animation]; 52 | trans.type = kCATransitionPush; 53 | trans.subtype = kCATransitionFromLeft; 54 | [view.layer addAnimation:trans forKey:kCATransition]; 55 | }; 56 | #endif 57 | return transition; 58 | } 59 | 60 | + (SDWebImageTransition *)flipFromRightTransition { 61 | SDWebImageTransition *transition = [SDWebImageTransition new]; 62 | #if SD_UIKIT 63 | transition.animationOptions = UIViewAnimationOptionTransitionFlipFromRight | UIViewAnimationOptionAllowUserInteraction; 64 | #else 65 | transition.animations = ^(__kindof NSView * _Nonnull view, NSImage * _Nullable image) { 66 | CATransition *trans = [CATransition animation]; 67 | trans.type = kCATransitionPush; 68 | trans.subtype = kCATransitionFromRight; 69 | [view.layer addAnimation:trans forKey:kCATransition]; 70 | }; 71 | #endif 72 | return transition; 73 | } 74 | 75 | + (SDWebImageTransition *)flipFromTopTransition { 76 | SDWebImageTransition *transition = [SDWebImageTransition new]; 77 | #if SD_UIKIT 78 | transition.animationOptions = UIViewAnimationOptionTransitionFlipFromTop | UIViewAnimationOptionAllowUserInteraction; 79 | #else 80 | transition.animations = ^(__kindof NSView * _Nonnull view, NSImage * _Nullable image) { 81 | CATransition *trans = [CATransition animation]; 82 | trans.type = kCATransitionPush; 83 | trans.subtype = kCATransitionFromTop; 84 | [view.layer addAnimation:trans forKey:kCATransition]; 85 | }; 86 | #endif 87 | return transition; 88 | } 89 | 90 | + (SDWebImageTransition *)flipFromBottomTransition { 91 | SDWebImageTransition *transition = [SDWebImageTransition new]; 92 | #if SD_UIKIT 93 | transition.animationOptions = UIViewAnimationOptionTransitionFlipFromBottom | UIViewAnimationOptionAllowUserInteraction; 94 | #else 95 | transition.animations = ^(__kindof NSView * _Nonnull view, NSImage * _Nullable image) { 96 | CATransition *trans = [CATransition animation]; 97 | trans.type = kCATransitionPush; 98 | trans.subtype = kCATransitionFromBottom; 99 | [view.layer addAnimation:trans forKey:kCATransition]; 100 | }; 101 | #endif 102 | return transition; 103 | } 104 | 105 | + (SDWebImageTransition *)curlUpTransition { 106 | SDWebImageTransition *transition = [SDWebImageTransition new]; 107 | #if SD_UIKIT 108 | transition.animationOptions = UIViewAnimationOptionTransitionCurlUp | UIViewAnimationOptionAllowUserInteraction; 109 | #else 110 | transition.animations = ^(__kindof NSView * _Nonnull view, NSImage * _Nullable image) { 111 | CATransition *trans = [CATransition animation]; 112 | trans.type = kCATransitionReveal; 113 | trans.subtype = kCATransitionFromTop; 114 | [view.layer addAnimation:trans forKey:kCATransition]; 115 | }; 116 | #endif 117 | return transition; 118 | } 119 | 120 | + (SDWebImageTransition *)curlDownTransition { 121 | SDWebImageTransition *transition = [SDWebImageTransition new]; 122 | #if SD_UIKIT 123 | transition.animationOptions = UIViewAnimationOptionTransitionCurlDown | UIViewAnimationOptionAllowUserInteraction; 124 | #else 125 | transition.animations = ^(__kindof NSView * _Nonnull view, NSImage * _Nullable image) { 126 | CATransition *trans = [CATransition animation]; 127 | trans.type = kCATransitionReveal; 128 | trans.subtype = kCATransitionFromBottom; 129 | [view.layer addAnimation:trans forKey:kCATransition]; 130 | }; 131 | #endif 132 | return transition; 133 | } 134 | 135 | @end 136 | 137 | #endif 138 | -------------------------------------------------------------------------------- /WAUnlimitedSend/SCLAlertView/SCLButton.m: -------------------------------------------------------------------------------- 1 | // 2 | // SCLButton.m 3 | // SCLAlertView 4 | // 5 | // Created by Diogo Autilio on 9/26/14. 6 | // Copyright (c) 2014-2017 AnyKey Entertainment. All rights reserved. 7 | // 8 | 9 | #import "SCLButton.h" 10 | #import "SCLTimerDisplay.h" 11 | 12 | #define MARGIN_BUTTON 12.0f 13 | #define DEFAULT_WINDOW_WIDTH 240 14 | #define MIN_HEIGHT 35.0f 15 | 16 | @implementation SCLButton 17 | 18 | - (instancetype)init 19 | { 20 | self = [super init]; 21 | if (self) 22 | { 23 | [self setupWithWindowWidth:DEFAULT_WINDOW_WIDTH]; 24 | } 25 | return self; 26 | } 27 | 28 | - (instancetype)initWithWindowWidth:(CGFloat)windowWidth 29 | { 30 | self = [super init]; 31 | if (self) 32 | { 33 | [self setupWithWindowWidth:windowWidth]; 34 | } 35 | return self; 36 | } 37 | 38 | - (instancetype)initWithCoder:(NSCoder *)aDecoder 39 | { 40 | self = [super initWithCoder:aDecoder]; 41 | if(self) 42 | { 43 | [self setupWithWindowWidth:DEFAULT_WINDOW_WIDTH]; 44 | } 45 | return self; 46 | } 47 | 48 | - (instancetype)initWithFrame:(CGRect)frame 49 | { 50 | self = [super initWithFrame:frame]; 51 | if (self) 52 | { 53 | [self setupWithWindowWidth:DEFAULT_WINDOW_WIDTH]; 54 | } 55 | return self; 56 | } 57 | 58 | - (void)setupWithWindowWidth:(CGFloat)windowWidth 59 | { 60 | self.frame = CGRectMake(0.0f, 0.0f, windowWidth - (MARGIN_BUTTON * 2), MIN_HEIGHT); 61 | self.titleLabel.lineBreakMode = NSLineBreakByWordWrapping; 62 | self.titleLabel.textAlignment = NSTextAlignmentCenter; 63 | self.layer.cornerRadius = 3.0f; 64 | } 65 | 66 | - (void)adjustWidthWithWindowWidth:(CGFloat)windowWidth numberOfButtons:(NSUInteger)numberOfButtons 67 | { 68 | CGFloat allButtonsWidth = windowWidth - (MARGIN_BUTTON * 2); 69 | CGFloat buttonWidth = (allButtonsWidth - ((numberOfButtons - 1) * 10)) / numberOfButtons; 70 | 71 | self.frame = CGRectMake(0.0f, 0.0f, buttonWidth, MIN_HEIGHT); 72 | } 73 | 74 | - (void)setTitle:(NSString *)title forState:(UIControlState)state 75 | { 76 | [super setTitle:title forState:state]; 77 | self.titleLabel.numberOfLines = 0; 78 | 79 | // Update title frame. 80 | [self.titleLabel sizeToFit]; 81 | 82 | // Update button frame 83 | [self layoutIfNeeded]; 84 | 85 | // Get height needed to display title label completely 86 | CGFloat buttonHeight = MAX(self.titleLabel.frame.size.height, MIN_HEIGHT); 87 | 88 | // Update button frame 89 | self.frame = CGRectMake(self.frame.origin.x, self.frame.origin.y, self.frame.size.width, buttonHeight); 90 | } 91 | 92 | - (void)setHighlighted:(BOOL)highlighted 93 | { 94 | self.backgroundColor = (highlighted) ? [self darkerColorForColor:_defaultBackgroundColor] : _defaultBackgroundColor; 95 | [super setHighlighted:highlighted]; 96 | } 97 | 98 | - (void)setDefaultBackgroundColor:(UIColor *)defaultBackgroundColor 99 | { 100 | self.backgroundColor = _defaultBackgroundColor = defaultBackgroundColor; 101 | } 102 | 103 | - (void)setTimer:(SCLTimerDisplay *)timer 104 | { 105 | _timer = timer; 106 | [self addSubview:timer]; 107 | [timer updateFrame:self.frame.size]; 108 | timer.color = self.titleLabel.textColor; 109 | } 110 | 111 | #pragma mark - Button Apperance 112 | 113 | - (void)parseConfig:(NSDictionary *)buttonConfig 114 | { 115 | if (buttonConfig[@"backgroundColor"]) 116 | { 117 | self.defaultBackgroundColor = buttonConfig[@"backgroundColor"]; 118 | } 119 | if (buttonConfig[@"textColor"]) 120 | { 121 | [self setTitleColor:buttonConfig[@"textColor"] forState:UIControlStateNormal]; 122 | } 123 | if (buttonConfig[@"cornerRadius"]) 124 | { 125 | self.layer.cornerRadius = [buttonConfig[@"cornerRadius"] floatValue]; 126 | } 127 | if ((buttonConfig[@"borderColor"]) && (buttonConfig[@"borderWidth"])) 128 | { 129 | self.layer.borderColor = ((UIColor*)buttonConfig[@"borderColor"]).CGColor; 130 | self.layer.borderWidth = [buttonConfig[@"borderWidth"] floatValue]; 131 | } 132 | else if (buttonConfig[@"borderWidth"]) 133 | { 134 | self.layer.borderWidth = [buttonConfig[@"borderWidth"] floatValue]; 135 | } 136 | 137 | // Add Button custom font with buttonConfig parameters 138 | if (buttonConfig[@"font"]) { 139 | self.titleLabel.font = buttonConfig[@"font"]; 140 | } 141 | } 142 | 143 | #pragma mark - Helpers 144 | 145 | - (UIColor *)darkerColorForColor:(UIColor *)color 146 | { 147 | CGFloat r, g, b, a; 148 | if ([color getRed:&r green:&g blue:&b alpha:&a]) 149 | return [UIColor colorWithRed:MAX(r - 0.2f, 0.0f) 150 | green:MAX(g - 0.2f, 0.0f) 151 | blue:MAX(b - 0.2f, 0.0f) 152 | alpha:a]; 153 | return nil; 154 | } 155 | 156 | - (UIColor *)lighterColorForColor:(UIColor *)color 157 | { 158 | CGFloat r, g, b, a; 159 | if ([color getRed:&r green:&g blue:&b alpha:&a]) 160 | return [UIColor colorWithRed:MIN(r + 0.2f, 1.0f) 161 | green:MIN(g + 0.2f, 1.0f) 162 | blue:MIN(b + 0.2f, 1.0f) 163 | alpha:a]; 164 | return nil; 165 | } 166 | 167 | @end 168 | -------------------------------------------------------------------------------- /Pods/SDWebImage/SDWebImage/SDWebImageDownloaderOperation.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the SDWebImage package. 3 | * (c) Olivier Poitrey 4 | * 5 | * For the full copyright and license information, please view the LICENSE 6 | * file that was distributed with this source code. 7 | */ 8 | 9 | #import 10 | #import "SDWebImageDownloader.h" 11 | #import "SDWebImageOperation.h" 12 | 13 | FOUNDATION_EXPORT NSString * _Nonnull const SDWebImageDownloadStartNotification; 14 | FOUNDATION_EXPORT NSString * _Nonnull const SDWebImageDownloadReceiveResponseNotification; 15 | FOUNDATION_EXPORT NSString * _Nonnull const SDWebImageDownloadStopNotification; 16 | FOUNDATION_EXPORT NSString * _Nonnull const SDWebImageDownloadFinishNotification; 17 | 18 | 19 | 20 | /** 21 | Describes a downloader operation. If one wants to use a custom downloader op, it needs to inherit from `NSOperation` and conform to this protocol 22 | For the description about these methods, see `SDWebImageDownloaderOperation` 23 | */ 24 | @protocol SDWebImageDownloaderOperationInterface 25 | @required 26 | - (nonnull instancetype)initWithRequest:(nullable NSURLRequest *)request 27 | inSession:(nullable NSURLSession *)session 28 | options:(SDWebImageDownloaderOptions)options; 29 | 30 | - (nullable id)addHandlersForProgress:(nullable SDWebImageDownloaderProgressBlock)progressBlock 31 | completed:(nullable SDWebImageDownloaderCompletedBlock)completedBlock; 32 | 33 | - (BOOL)shouldDecompressImages; 34 | - (void)setShouldDecompressImages:(BOOL)value; 35 | 36 | - (nullable NSURLCredential *)credential; 37 | - (void)setCredential:(nullable NSURLCredential *)value; 38 | 39 | - (BOOL)cancel:(nullable id)token; 40 | 41 | @optional 42 | - (nullable NSURLSessionTask *)dataTask; 43 | 44 | @end 45 | 46 | 47 | @interface SDWebImageDownloaderOperation : NSOperation 48 | 49 | /** 50 | * The request used by the operation's task. 51 | */ 52 | @property (strong, nonatomic, readonly, nullable) NSURLRequest *request; 53 | 54 | /** 55 | * The operation's task 56 | */ 57 | @property (strong, nonatomic, readonly, nullable) NSURLSessionTask *dataTask; 58 | 59 | 60 | @property (assign, nonatomic) BOOL shouldDecompressImages; 61 | 62 | /** 63 | * Was used to determine whether the URL connection should consult the credential storage for authenticating the connection. 64 | * @deprecated Not used for a couple of versions 65 | */ 66 | @property (nonatomic, assign) BOOL shouldUseCredentialStorage __deprecated_msg("Property deprecated. Does nothing. Kept only for backwards compatibility"); 67 | 68 | /** 69 | * The credential used for authentication challenges in `-URLSession:task:didReceiveChallenge:completionHandler:`. 70 | * 71 | * This will be overridden by any shared credentials that exist for the username or password of the request URL, if present. 72 | */ 73 | @property (nonatomic, strong, nullable) NSURLCredential *credential; 74 | 75 | /** 76 | * The SDWebImageDownloaderOptions for the receiver. 77 | */ 78 | @property (assign, nonatomic, readonly) SDWebImageDownloaderOptions options; 79 | 80 | /** 81 | * The expected size of data. 82 | */ 83 | @property (assign, nonatomic) NSInteger expectedSize; 84 | 85 | /** 86 | * The response returned by the operation's task. 87 | */ 88 | @property (strong, nonatomic, nullable) NSURLResponse *response; 89 | 90 | /** 91 | * Initializes a `SDWebImageDownloaderOperation` object 92 | * 93 | * @see SDWebImageDownloaderOperation 94 | * 95 | * @param request the URL request 96 | * @param session the URL session in which this operation will run 97 | * @param options downloader options 98 | * 99 | * @return the initialized instance 100 | */ 101 | - (nonnull instancetype)initWithRequest:(nullable NSURLRequest *)request 102 | inSession:(nullable NSURLSession *)session 103 | options:(SDWebImageDownloaderOptions)options NS_DESIGNATED_INITIALIZER; 104 | 105 | /** 106 | * Adds handlers for progress and completion. Returns a tokent that can be passed to -cancel: to cancel this set of 107 | * callbacks. 108 | * 109 | * @param progressBlock the block executed when a new chunk of data arrives. 110 | * @note the progress block is executed on a background queue 111 | * @param completedBlock the block executed when the download is done. 112 | * @note the completed block is executed on the main queue for success. If errors are found, there is a chance the block will be executed on a background queue 113 | * 114 | * @return the token to use to cancel this set of handlers 115 | */ 116 | - (nullable id)addHandlersForProgress:(nullable SDWebImageDownloaderProgressBlock)progressBlock 117 | completed:(nullable SDWebImageDownloaderCompletedBlock)completedBlock; 118 | 119 | /** 120 | * Cancels a set of callbacks. Once all callbacks are canceled, the operation is cancelled. 121 | * 122 | * @param token the token representing a set of callbacks to cancel 123 | * 124 | * @return YES if the operation was stopped because this was the last token to be canceled. NO otherwise. 125 | */ 126 | - (BOOL)cancel:(nullable id)token; 127 | 128 | @end 129 | -------------------------------------------------------------------------------- /WAUnlimitedSend/FRPreferences/FRPSliderCell.m: -------------------------------------------------------------------------------- 1 | // 2 | // FRSliderCellTableViewCell.m 3 | // FRPreferences 4 | // 5 | // Created by Fouad Raheb on 6/14/15. 6 | // Copyright (c) 2015 F0u4d. All rights reserved. 7 | // 8 | 9 | #import "FRPSliderCell.h" 10 | 11 | @implementation FRPSliderCell 12 | 13 | + (instancetype)cellWithTitle:(NSString *)title setting:(FRPSettings *)setting min:(float)min max:(float)max postNotification:(NSString *)notification changeBlock:(FRPSliderCellChanged)block { 14 | return [[self alloc] cellWithTitle:title setting:setting min:min max:max postNotification:notification changeBlock:block]; 15 | } 16 | 17 | 18 | - (instancetype)cellWithTitle:(NSString *)title setting:(FRPSettings *)setting min:(float)min max:(float)max postNotification:(NSString *)notification changeBlock:(FRPSliderCellChanged)block { 19 | FRPSliderCell *cell = [super initWithTitle:nil setting:setting]; 20 | cell.postNotification = notification; 21 | cell.valueChanged = block; 22 | 23 | UISlider *sliderCell = [[UISlider alloc] initWithFrame:CGRectZero]; 24 | sliderCell.minimumValue = min; 25 | sliderCell.maximumValue = max; 26 | sliderCell.value = [setting.value floatValue]; 27 | [sliderCell addTarget:self action:@selector(sliderChanged:) forControlEvents:UIControlEventValueChanged]; 28 | [cell.contentView addSubview:sliderCell]; 29 | cell.sliderCell = sliderCell; 30 | 31 | UILabel *lLabel = [[UILabel alloc] initWithFrame:CGRectZero]; 32 | lLabel.text = [NSString stringWithFormat:@"%.2f",min]; 33 | lLabel.numberOfLines = 1; 34 | lLabel.baselineAdjustment = UIBaselineAdjustmentAlignBaselines; 35 | lLabel.adjustsFontSizeToFitWidth = YES; 36 | lLabel.clipsToBounds = YES; 37 | lLabel.backgroundColor = [UIColor clearColor]; 38 | lLabel.textColor = [UIColor blackColor]; 39 | lLabel.textAlignment = NSTextAlignmentCenter; 40 | [cell.contentView addSubview:lLabel]; 41 | cell.lLabel = lLabel; 42 | 43 | UILabel *rLabel = [[UILabel alloc] initWithFrame:CGRectZero]; 44 | rLabel.text = [NSString stringWithFormat:@"%.2f",max]; 45 | rLabel.numberOfLines = 1; 46 | rLabel.baselineAdjustment = UIBaselineAdjustmentAlignBaselines; 47 | rLabel.adjustsFontSizeToFitWidth = YES; 48 | rLabel.clipsToBounds = YES; 49 | rLabel.backgroundColor = [UIColor clearColor]; 50 | rLabel.textColor = [UIColor blackColor]; 51 | rLabel.textAlignment = NSTextAlignmentCenter; 52 | [cell.contentView addSubview:rLabel]; 53 | cell.rLabel = rLabel; 54 | 55 | UILabel *cLabel = [[UILabel alloc] initWithFrame:CGRectZero]; 56 | cLabel.text = title; 57 | cLabel.numberOfLines = 1; 58 | cLabel.baselineAdjustment = UIBaselineAdjustmentAlignBaselines; 59 | cLabel.adjustsFontSizeToFitWidth = YES; 60 | cLabel.clipsToBounds = YES; 61 | cLabel.backgroundColor = [UIColor clearColor]; 62 | cLabel.textColor = [UIColor blackColor]; 63 | cLabel.textAlignment = NSTextAlignmentLeft; 64 | [cell.contentView addSubview:cLabel]; 65 | cell.cLabel = cLabel; 66 | 67 | UILabel *vLabel = [[UILabel alloc] initWithFrame:CGRectZero]; 68 | vLabel.text = [NSString stringWithFormat:@"%.2f",[setting.value floatValue]]; 69 | vLabel.numberOfLines = 1; 70 | vLabel.baselineAdjustment = UIBaselineAdjustmentAlignBaselines; 71 | vLabel.adjustsFontSizeToFitWidth = YES; 72 | vLabel.clipsToBounds = YES; 73 | vLabel.backgroundColor = [UIColor clearColor]; 74 | vLabel.textColor = [UIColor grayColor]; 75 | vLabel.textAlignment = NSTextAlignmentRight; 76 | [cell.contentView addSubview:vLabel]; 77 | cell.vLabel = vLabel; 78 | 79 | cell.selectionStyle = UITableViewCellSelectionStyleNone; 80 | cell.height = 75; 81 | return cell; 82 | } 83 | 84 | - (void)layoutSubviews { 85 | [super layoutSubviews]; 86 | 87 | float sliderW = self.contentView.frame.size.width/1.8; 88 | float sliderH = 25; 89 | float sliderX = self.contentView.frame.size.width/2-sliderW/2; 90 | float sliderY = self.contentView.frame.size.height-sliderH-10; 91 | self.sliderCell.frame = CGRectMake(sliderX, sliderY, sliderW, sliderH); 92 | 93 | float lLabelW = (self.contentView.frame.size.width-(self.contentView.frame.size.width/1.8))/2-10; 94 | float lLabelH = 25; 95 | float lLabelX = sliderX-lLabelW-5; 96 | float lLabelY = self.contentView.frame.size.height-lLabelH-10; 97 | self.lLabel.frame = CGRectMake(lLabelX, lLabelY, lLabelW, lLabelH); 98 | 99 | float rLabelW = (self.contentView.frame.size.width-(self.contentView.frame.size.width/1.8))/2-10; 100 | float rLabelH = 25; 101 | float rLabelX = sliderX+sliderW+5; 102 | float rLabelY = self.contentView.frame.size.height-rLabelH-10; 103 | self.rLabel.frame = CGRectMake(rLabelX, rLabelY, rLabelW, rLabelH); 104 | 105 | float cLabelW = self.contentView.frame.size.width/1.8; 106 | float cLabelH = 25; 107 | float cLabelX = 17; 108 | float cLabelY = 8; 109 | self.cLabel.frame = CGRectMake(cLabelX, cLabelY, cLabelW, cLabelH); 110 | 111 | float vLabelW = self.contentView.frame.size.width-(self.contentView.frame.size.width/1.8); 112 | float vLabelH = 25; 113 | float vLabelX = self.contentView.frame.size.width-vLabelW-25; 114 | float vLabelY = 8; 115 | self.vLabel.frame = CGRectMake(vLabelX, vLabelY, vLabelW, vLabelH); 116 | } 117 | 118 | - (void)sliderChanged:(UISlider *)slider { 119 | self.vLabel.text = [NSString stringWithFormat:@"%.2f",[slider value]]; 120 | self.setting.value = [NSNumber numberWithFloat:[slider value]]; 121 | if (self.valueChanged) { 122 | self.valueChanged(slider); 123 | } 124 | [[NSNotificationCenter defaultCenter] postNotificationName:self.postNotification object:slider]; 125 | } 126 | 127 | @end 128 | -------------------------------------------------------------------------------- /Pods/SDWebImage/SDWebImage/SDWebImagePrefetcher.m: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the SDWebImage package. 3 | * (c) Olivier Poitrey 4 | * 5 | * For the full copyright and license information, please view the LICENSE 6 | * file that was distributed with this source code. 7 | */ 8 | 9 | #import "SDWebImagePrefetcher.h" 10 | 11 | @interface SDWebImagePrefetcher () 12 | 13 | @property (strong, nonatomic, nonnull) SDWebImageManager *manager; 14 | @property (strong, atomic, nullable) NSArray *prefetchURLs; // may be accessed from different queue 15 | @property (assign, nonatomic) NSUInteger requestedCount; 16 | @property (assign, nonatomic) NSUInteger skippedCount; 17 | @property (assign, nonatomic) NSUInteger finishedCount; 18 | @property (assign, nonatomic) NSTimeInterval startedTime; 19 | @property (copy, nonatomic, nullable) SDWebImagePrefetcherCompletionBlock completionBlock; 20 | @property (copy, nonatomic, nullable) SDWebImagePrefetcherProgressBlock progressBlock; 21 | 22 | @end 23 | 24 | @implementation SDWebImagePrefetcher 25 | 26 | + (nonnull instancetype)sharedImagePrefetcher { 27 | static dispatch_once_t once; 28 | static id instance; 29 | dispatch_once(&once, ^{ 30 | instance = [self new]; 31 | }); 32 | return instance; 33 | } 34 | 35 | - (nonnull instancetype)init { 36 | return [self initWithImageManager:[SDWebImageManager new]]; 37 | } 38 | 39 | - (nonnull instancetype)initWithImageManager:(SDWebImageManager *)manager { 40 | if ((self = [super init])) { 41 | _manager = manager; 42 | _options = SDWebImageLowPriority; 43 | _prefetcherQueue = dispatch_get_main_queue(); 44 | self.maxConcurrentDownloads = 3; 45 | } 46 | return self; 47 | } 48 | 49 | - (void)setMaxConcurrentDownloads:(NSUInteger)maxConcurrentDownloads { 50 | self.manager.imageDownloader.maxConcurrentDownloads = maxConcurrentDownloads; 51 | } 52 | 53 | - (NSUInteger)maxConcurrentDownloads { 54 | return self.manager.imageDownloader.maxConcurrentDownloads; 55 | } 56 | 57 | - (void)startPrefetchingAtIndex:(NSUInteger)index { 58 | NSURL *currentURL; 59 | @synchronized(self) { 60 | if (index >= self.prefetchURLs.count) return; 61 | currentURL = self.prefetchURLs[index]; 62 | self.requestedCount++; 63 | } 64 | [self.manager loadImageWithURL:currentURL options:self.options progress:nil completed:^(UIImage *image, NSData *data, NSError *error, SDImageCacheType cacheType, BOOL finished, NSURL *imageURL) { 65 | if (!finished) return; 66 | self.finishedCount++; 67 | 68 | if (self.progressBlock) { 69 | self.progressBlock(self.finishedCount,(self.prefetchURLs).count); 70 | } 71 | if (!image) { 72 | // Add last failed 73 | self.skippedCount++; 74 | } 75 | if ([self.delegate respondsToSelector:@selector(imagePrefetcher:didPrefetchURL:finishedCount:totalCount:)]) { 76 | [self.delegate imagePrefetcher:self 77 | didPrefetchURL:currentURL 78 | finishedCount:self.finishedCount 79 | totalCount:self.prefetchURLs.count 80 | ]; 81 | } 82 | if (self.prefetchURLs.count > self.requestedCount) { 83 | dispatch_async(self.prefetcherQueue, ^{ 84 | // we need dispatch to avoid function recursion call. This can prevent stack overflow even for huge urls list 85 | [self startPrefetchingAtIndex:self.requestedCount]; 86 | }); 87 | } else if (self.finishedCount == self.requestedCount) { 88 | [self reportStatus]; 89 | if (self.completionBlock) { 90 | self.completionBlock(self.finishedCount, self.skippedCount); 91 | self.completionBlock = nil; 92 | } 93 | self.progressBlock = nil; 94 | } 95 | }]; 96 | } 97 | 98 | - (void)reportStatus { 99 | NSUInteger total = (self.prefetchURLs).count; 100 | if ([self.delegate respondsToSelector:@selector(imagePrefetcher:didFinishWithTotalCount:skippedCount:)]) { 101 | [self.delegate imagePrefetcher:self 102 | didFinishWithTotalCount:(total - self.skippedCount) 103 | skippedCount:self.skippedCount 104 | ]; 105 | } 106 | } 107 | 108 | - (void)prefetchURLs:(nullable NSArray *)urls { 109 | [self prefetchURLs:urls progress:nil completed:nil]; 110 | } 111 | 112 | - (void)prefetchURLs:(nullable NSArray *)urls 113 | progress:(nullable SDWebImagePrefetcherProgressBlock)progressBlock 114 | completed:(nullable SDWebImagePrefetcherCompletionBlock)completionBlock { 115 | [self cancelPrefetching]; // Prevent duplicate prefetch request 116 | self.startedTime = CFAbsoluteTimeGetCurrent(); 117 | self.prefetchURLs = urls; 118 | self.completionBlock = completionBlock; 119 | self.progressBlock = progressBlock; 120 | 121 | if (urls.count == 0) { 122 | if (completionBlock) { 123 | completionBlock(0,0); 124 | } 125 | } else { 126 | // Starts prefetching from the very first image on the list with the max allowed concurrency 127 | NSUInteger listCount = self.prefetchURLs.count; 128 | for (NSUInteger i = 0; i < self.maxConcurrentDownloads && self.requestedCount < listCount; i++) { 129 | [self startPrefetchingAtIndex:i]; 130 | } 131 | } 132 | } 133 | 134 | - (void)cancelPrefetching { 135 | @synchronized(self) { 136 | self.prefetchURLs = nil; 137 | self.skippedCount = 0; 138 | self.requestedCount = 0; 139 | self.finishedCount = 0; 140 | } 141 | [self.manager cancelAll]; 142 | } 143 | 144 | @end 145 | -------------------------------------------------------------------------------- /WAUnlimitedSend/SCLAlertView/UIImage+ImageEffects.h: -------------------------------------------------------------------------------- 1 | /* 2 | File: UIImage+ImageEffects.h 3 | Abstract: This is a category of UIImage that adds methods to apply blur and tint effects to an image. This is the code you’ll want to look out to find out how to use vImage to efficiently calculate a blur. 4 | Version: 1.0 5 | 6 | Disclaimer: IMPORTANT: This Apple software is supplied to you by Apple 7 | Inc. ("Apple") in consideration of your agreement to the following 8 | terms, and your use, installation, modification or redistribution of 9 | this Apple software constitutes acceptance of these terms. If you do 10 | not agree with these terms, please do not use, install, modify or 11 | redistribute this Apple software. 12 | 13 | In consideration of your agreement to abide by the following terms, and 14 | subject to these terms, Apple grants you a personal, non-exclusive 15 | license, under Apple's copyrights in this original Apple software (the 16 | "Apple Software"), to use, reproduce, modify and redistribute the Apple 17 | Software, with or without modifications, in source and/or binary forms; 18 | provided that if you redistribute the Apple Software in its entirety and 19 | without modifications, you must retain this notice and the following 20 | text and disclaimers in all such redistributions of the Apple Software. 21 | Neither the name, trademarks, service marks or logos of Apple Inc. may 22 | be used to endorse or promote products derived from the Apple Software 23 | without specific prior written permission from Apple. Except as 24 | expressly stated in this notice, no other rights or licenses, express or 25 | implied, are granted by Apple herein, including but not limited to any 26 | patent rights that may be infringed by your derivative works or by other 27 | works in which the Apple Software may be incorporated. 28 | 29 | The Apple Software is provided by Apple on an "AS IS" basis. APPLE 30 | MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION 31 | THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS 32 | FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND 33 | OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS. 34 | 35 | IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL 36 | OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 37 | SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 38 | INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION, 39 | MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED 40 | AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE), 41 | STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE 42 | POSSIBILITY OF SUCH DAMAGE. 43 | 44 | Copyright (C) 2013 Apple Inc. All Rights Reserved. 45 | 46 | 47 | Copyright © 2013 Apple Inc. All rights reserved. 48 | WWDC 2013 License 49 | 50 | NOTE: This Apple Software was supplied by Apple as part of a WWDC 2013 51 | Session. Please refer to the applicable WWDC 2013 Session for further 52 | information. 53 | 54 | IMPORTANT: This Apple software is supplied to you by Apple Inc. 55 | ("Apple") in consideration of your agreement to the following terms, and 56 | your use, installation, modification or redistribution of this Apple 57 | software constitutes acceptance of these terms. If you do not agree with 58 | these terms, please do not use, install, modify or redistribute this 59 | Apple software. 60 | 61 | In consideration of your agreement to abide by the following terms, and 62 | subject to these terms, Apple grants you a non-exclusive license, under 63 | Apple's copyrights in this original Apple software (the "Apple 64 | Software"), to use, reproduce, modify and redistribute the Apple 65 | Software, with or without modifications, in source and/or binary forms; 66 | provided that if you redistribute the Apple Software in its entirety and 67 | without modifications, you must retain this notice and the following 68 | text and disclaimers in all such redistributions of the Apple Software. 69 | Neither the name, trademarks, service marks or logos of Apple Inc. may 70 | be used to endorse or promote products derived from the Apple Software 71 | without specific prior written permission from Apple. Except as 72 | expressly stated in this notice, no other rights or licenses, express or 73 | implied, are granted by Apple herein, including but not limited to any 74 | patent rights that may be infringed by your derivative works or by other 75 | works in which the Apple Software may be incorporated. 76 | 77 | The Apple Software is provided by Apple on an "AS IS" basis. APPLE MAKES 78 | NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE 79 | IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR 80 | A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND 81 | OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS. 82 | 83 | IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL 84 | OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 85 | SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 86 | INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION, 87 | MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED 88 | AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE), 89 | STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE 90 | POSSIBILITY OF SUCH DAMAGE. 91 | 92 | EA1002 93 | 5/3/2013 94 | */ 95 | 96 | #if defined(__has_feature) && __has_feature(modules) 97 | @import UIKit; 98 | #else 99 | #import 100 | #endif 101 | 102 | @interface UIImage (ImageEffects) 103 | 104 | - (UIImage *)applyLightEffect; 105 | - (UIImage *)applyExtraLightEffect; 106 | - (UIImage *)applyDarkEffect; 107 | - (UIImage *)applyTintEffectWithColor:(UIColor *)tintColor; 108 | 109 | - (UIImage *)applyBlurWithRadius:(CGFloat)blurRadius tintColor:(UIColor *)tintColor saturationDeltaFactor:(CGFloat)saturationDeltaFactor maskImage:(UIImage *)maskImage; 110 | 111 | + (UIImage *)imageWithColor:(UIColor *)color; 112 | + (UIImage *)convertViewToImage; 113 | + (UIImage *)convertViewToImage:(UIView *)view; 114 | 115 | @end 116 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-WAUnlimitedSend/Pods-WAUnlimitedSend-resources.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | set -e 3 | set -u 4 | set -o pipefail 5 | 6 | if [ -z ${UNLOCALIZED_RESOURCES_FOLDER_PATH+x} ]; then 7 | # If UNLOCALIZED_RESOURCES_FOLDER_PATH is not set, then there's nowhere for us to copy 8 | # resources to, so exit 0 (signalling the script phase was successful). 9 | exit 0 10 | fi 11 | 12 | mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 13 | 14 | RESOURCES_TO_COPY=${PODS_ROOT}/resources-to-copy-${TARGETNAME}.txt 15 | > "$RESOURCES_TO_COPY" 16 | 17 | XCASSET_FILES=() 18 | 19 | # This protects against multiple targets copying the same framework dependency at the same time. The solution 20 | # was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html 21 | RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????") 22 | 23 | case "${TARGETED_DEVICE_FAMILY:-}" in 24 | 1,2) 25 | TARGET_DEVICE_ARGS="--target-device ipad --target-device iphone" 26 | ;; 27 | 1) 28 | TARGET_DEVICE_ARGS="--target-device iphone" 29 | ;; 30 | 2) 31 | TARGET_DEVICE_ARGS="--target-device ipad" 32 | ;; 33 | 3) 34 | TARGET_DEVICE_ARGS="--target-device tv" 35 | ;; 36 | 4) 37 | TARGET_DEVICE_ARGS="--target-device watch" 38 | ;; 39 | *) 40 | TARGET_DEVICE_ARGS="--target-device mac" 41 | ;; 42 | esac 43 | 44 | install_resource() 45 | { 46 | if [[ "$1" = /* ]] ; then 47 | RESOURCE_PATH="$1" 48 | else 49 | RESOURCE_PATH="${PODS_ROOT}/$1" 50 | fi 51 | if [[ ! -e "$RESOURCE_PATH" ]] ; then 52 | cat << EOM 53 | error: Resource "$RESOURCE_PATH" not found. Run 'pod install' to update the copy resources script. 54 | EOM 55 | exit 1 56 | fi 57 | case $RESOURCE_PATH in 58 | *.storyboard) 59 | echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" || true 60 | ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS} 61 | ;; 62 | *.xib) 63 | echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" || true 64 | ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS} 65 | ;; 66 | *.framework) 67 | echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" || true 68 | mkdir -p "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 69 | echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" $RESOURCE_PATH ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" || true 70 | rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 71 | ;; 72 | *.xcdatamodel) 73 | echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH"`.mom\"" || true 74 | xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodel`.mom" 75 | ;; 76 | *.xcdatamodeld) 77 | echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd\"" || true 78 | xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd" 79 | ;; 80 | *.xcmappingmodel) 81 | echo "xcrun mapc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm\"" || true 82 | xcrun mapc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm" 83 | ;; 84 | *.xcassets) 85 | ABSOLUTE_XCASSET_FILE="$RESOURCE_PATH" 86 | XCASSET_FILES+=("$ABSOLUTE_XCASSET_FILE") 87 | ;; 88 | *) 89 | echo "$RESOURCE_PATH" || true 90 | echo "$RESOURCE_PATH" >> "$RESOURCES_TO_COPY" 91 | ;; 92 | esac 93 | } 94 | 95 | mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 96 | rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 97 | if [[ "${ACTION}" == "install" ]] && [[ "${SKIP_INSTALL}" == "NO" ]]; then 98 | mkdir -p "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 99 | rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 100 | fi 101 | rm -f "$RESOURCES_TO_COPY" 102 | 103 | if [[ -n "${WRAPPER_EXTENSION}" ]] && [ "`xcrun --find actool`" ] && [ -n "${XCASSET_FILES:-}" ] 104 | then 105 | # Find all other xcassets (this unfortunately includes those of path pods and other targets). 106 | OTHER_XCASSETS=$(find "$PWD" -iname "*.xcassets" -type d) 107 | while read line; do 108 | if [[ $line != "${PODS_ROOT}*" ]]; then 109 | XCASSET_FILES+=("$line") 110 | fi 111 | done <<<"$OTHER_XCASSETS" 112 | 113 | if [ -z ${ASSETCATALOG_COMPILER_APPICON_NAME+x} ]; then 114 | printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 115 | else 116 | printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" --app-icon "${ASSETCATALOG_COMPILER_APPICON_NAME}" --output-partial-info-plist "${TARGET_TEMP_DIR}/assetcatalog_generated_info_cocoapods.plist" 117 | fi 118 | fi 119 | --------------------------------------------------------------------------------