Compare commits

...
7 Commits
Author SHA1 Message Date
Florian Gabach 73adcdcdad 4.0.0 release 2019-11-11 17:13:53 +01:00
Florian Gabach e75d19aac6 6.0.0 release 2019-11-11 17:12:27 +01:00
Florian Gabach 7a1565d631 5.0.0 release 2019-11-11 17:10:27 +01:00
Florian Gabach 15bdd515e7 4.0.0 release 2019-11-11 17:06:38 +01:00
Florian Gabach cc51d8fa12 Dark mode & layout fix 2019-11-11 16:56:30 +01:00
Florian Gabach fcc1b6f893 SPM Support 2019-11-11 16:52:36 +01:00
Florian Gabach 2d989f3791 Bump changelog 2019-09-30 17:16:58 +02:00
38 changed files with 136 additions and 1405 deletions
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
version = "1.0">
<FileRef
location = "self:">
</FileRef>
</Workspace>
+13
View File
@@ -1,6 +1,19 @@
Changelog Changelog
========== ==========
### 4.0.0
- Swift 5.1
- Add Catalyst support
- Add SPM support
- Dark mode fix for background
- Layout fix for child controller and autolayout extension
### 3.2.1
- Swift 5
- Remove swift-version file
### 3.2.0 ### 3.2.0
- Small refactoring - Small refactoring
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1,20 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>English</string>
<key>CFBundleIdentifier</key>
<string>com.apple.xcode.dsym.com.OpenSourceController.OpenSourceController-iOS</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundlePackageType</key>
<string>dSYM</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleVersion</key>
<string>1</string>
</dict>
</plist>
@@ -1,234 +0,0 @@
// Generated by Apple Swift version 4.0.3 (swiftlang-900.0.74.1 clang-900.0.39.2)
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wgcc-compat"
#if !defined(__has_include)
# define __has_include(x) 0
#endif
#if !defined(__has_attribute)
# define __has_attribute(x) 0
#endif
#if !defined(__has_feature)
# define __has_feature(x) 0
#endif
#if !defined(__has_warning)
# define __has_warning(x) 0
#endif
#if __has_attribute(external_source_symbol)
# define SWIFT_STRINGIFY(str) #str
# define SWIFT_MODULE_NAMESPACE_PUSH(module_name) _Pragma(SWIFT_STRINGIFY(clang attribute push(__attribute__((external_source_symbol(language="Swift", defined_in=module_name, generated_declaration))), apply_to=any(function, enum, objc_interface, objc_category, objc_protocol))))
# define SWIFT_MODULE_NAMESPACE_POP _Pragma("clang attribute pop")
#else
# define SWIFT_MODULE_NAMESPACE_PUSH(module_name)
# define SWIFT_MODULE_NAMESPACE_POP
#endif
#if __has_include(<swift/objc-prologue.h>)
# include <swift/objc-prologue.h>
#endif
#pragma clang diagnostic ignored "-Wauto-import"
#include <objc/NSObject.h>
#include <stdint.h>
#include <stddef.h>
#include <stdbool.h>
#if !defined(SWIFT_TYPEDEFS)
# define SWIFT_TYPEDEFS 1
# if __has_include(<uchar.h>)
# include <uchar.h>
# elif !defined(__cplusplus) || __cplusplus < 201103L
typedef uint_least16_t char16_t;
typedef uint_least32_t char32_t;
# endif
typedef float swift_float2 __attribute__((__ext_vector_type__(2)));
typedef float swift_float3 __attribute__((__ext_vector_type__(3)));
typedef float swift_float4 __attribute__((__ext_vector_type__(4)));
typedef double swift_double2 __attribute__((__ext_vector_type__(2)));
typedef double swift_double3 __attribute__((__ext_vector_type__(3)));
typedef double swift_double4 __attribute__((__ext_vector_type__(4)));
typedef int swift_int2 __attribute__((__ext_vector_type__(2)));
typedef int swift_int3 __attribute__((__ext_vector_type__(3)));
typedef int swift_int4 __attribute__((__ext_vector_type__(4)));
typedef unsigned int swift_uint2 __attribute__((__ext_vector_type__(2)));
typedef unsigned int swift_uint3 __attribute__((__ext_vector_type__(3)));
typedef unsigned int swift_uint4 __attribute__((__ext_vector_type__(4)));
#endif
#if !defined(SWIFT_PASTE)
# define SWIFT_PASTE_HELPER(x, y) x##y
# define SWIFT_PASTE(x, y) SWIFT_PASTE_HELPER(x, y)
#endif
#if !defined(SWIFT_METATYPE)
# define SWIFT_METATYPE(X) Class
#endif
#if !defined(SWIFT_CLASS_PROPERTY)
# if __has_feature(objc_class_property)
# define SWIFT_CLASS_PROPERTY(...) __VA_ARGS__
# else
# define SWIFT_CLASS_PROPERTY(...)
# endif
#endif
#if __has_attribute(objc_runtime_name)
# define SWIFT_RUNTIME_NAME(X) __attribute__((objc_runtime_name(X)))
#else
# define SWIFT_RUNTIME_NAME(X)
#endif
#if __has_attribute(swift_name)
# define SWIFT_COMPILE_NAME(X) __attribute__((swift_name(X)))
#else
# define SWIFT_COMPILE_NAME(X)
#endif
#if __has_attribute(objc_method_family)
# define SWIFT_METHOD_FAMILY(X) __attribute__((objc_method_family(X)))
#else
# define SWIFT_METHOD_FAMILY(X)
#endif
#if __has_attribute(noescape)
# define SWIFT_NOESCAPE __attribute__((noescape))
#else
# define SWIFT_NOESCAPE
#endif
#if __has_attribute(warn_unused_result)
# define SWIFT_WARN_UNUSED_RESULT __attribute__((warn_unused_result))
#else
# define SWIFT_WARN_UNUSED_RESULT
#endif
#if __has_attribute(noreturn)
# define SWIFT_NORETURN __attribute__((noreturn))
#else
# define SWIFT_NORETURN
#endif
#if !defined(SWIFT_CLASS_EXTRA)
# define SWIFT_CLASS_EXTRA
#endif
#if !defined(SWIFT_PROTOCOL_EXTRA)
# define SWIFT_PROTOCOL_EXTRA
#endif
#if !defined(SWIFT_ENUM_EXTRA)
# define SWIFT_ENUM_EXTRA
#endif
#if !defined(SWIFT_CLASS)
# if __has_attribute(objc_subclassing_restricted)
# define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_CLASS_EXTRA
# define SWIFT_CLASS_NAMED(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA
# else
# define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA
# define SWIFT_CLASS_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA
# endif
#endif
#if !defined(SWIFT_PROTOCOL)
# define SWIFT_PROTOCOL(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA
# define SWIFT_PROTOCOL_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA
#endif
#if !defined(SWIFT_EXTENSION)
# define SWIFT_EXTENSION(M) SWIFT_PASTE(M##_Swift_, __LINE__)
#endif
#if !defined(OBJC_DESIGNATED_INITIALIZER)
# if __has_attribute(objc_designated_initializer)
# define OBJC_DESIGNATED_INITIALIZER __attribute__((objc_designated_initializer))
# else
# define OBJC_DESIGNATED_INITIALIZER
# endif
#endif
#if !defined(SWIFT_ENUM_ATTR)
# if defined(__has_attribute) && __has_attribute(enum_extensibility)
# define SWIFT_ENUM_ATTR __attribute__((enum_extensibility(open)))
# else
# define SWIFT_ENUM_ATTR
# endif
#endif
#if !defined(SWIFT_ENUM)
# define SWIFT_ENUM(_type, _name) enum _name : _type _name; enum SWIFT_ENUM_ATTR SWIFT_ENUM_EXTRA _name : _type
# if __has_feature(generalized_swift_name)
# define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME) enum _name : _type _name SWIFT_COMPILE_NAME(SWIFT_NAME); enum SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_ENUM_ATTR SWIFT_ENUM_EXTRA _name : _type
# else
# define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME) SWIFT_ENUM(_type, _name)
# endif
#endif
#if !defined(SWIFT_UNAVAILABLE)
# define SWIFT_UNAVAILABLE __attribute__((unavailable))
#endif
#if !defined(SWIFT_UNAVAILABLE_MSG)
# define SWIFT_UNAVAILABLE_MSG(msg) __attribute__((unavailable(msg)))
#endif
#if !defined(SWIFT_AVAILABILITY)
# define SWIFT_AVAILABILITY(plat, ...) __attribute__((availability(plat, __VA_ARGS__)))
#endif
#if !defined(SWIFT_DEPRECATED)
# define SWIFT_DEPRECATED __attribute__((deprecated))
#endif
#if !defined(SWIFT_DEPRECATED_MSG)
# define SWIFT_DEPRECATED_MSG(...) __attribute__((deprecated(__VA_ARGS__)))
#endif
#if __has_feature(attribute_diagnose_if_objc)
# define SWIFT_DEPRECATED_OBJC(Msg) __attribute__((diagnose_if(1, Msg, "warning")))
#else
# define SWIFT_DEPRECATED_OBJC(Msg) SWIFT_DEPRECATED_MSG(Msg)
#endif
#if __has_feature(modules)
@import ObjectiveC;
@import UIKit;
@import Foundation;
@import CoreGraphics;
#endif
#pragma clang diagnostic ignored "-Wproperty-attribute-mismatch"
#pragma clang diagnostic ignored "-Wduplicate-method-arg"
#if __has_warning("-Wpragma-clang-attribute")
# pragma clang diagnostic ignored "-Wpragma-clang-attribute"
#endif
#pragma clang diagnostic ignored "-Wunknown-pragmas"
#pragma clang diagnostic ignored "-Wnullability"
SWIFT_MODULE_NAMESPACE_PUSH("OpenSourceController")
SWIFT_CLASS("_TtC20OpenSourceController17LicenceDownloader")
@interface LicenceDownloader : NSObject
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end
SWIFT_CLASS("_TtC20OpenSourceController11LicenceFile")
@interface LicenceFile : NSObject
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
@end
SWIFT_CLASS("_TtC20OpenSourceController20OpenSourceController")
@interface OpenSourceController : NSObject
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end
@class NSCoder;
SWIFT_CLASS("_TtC20OpenSourceController23OpenSourceTableViewCell")
@interface OpenSourceTableViewCell : UITableViewCell
- (nonnull instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString * _Nullable)reuseIdentifier OBJC_DESIGNATED_INITIALIZER;
- (nullable instancetype)initWithCoder:(NSCoder * _Nonnull)aDecoder OBJC_DESIGNATED_INITIALIZER;
- (void)setSelected:(BOOL)selected animated:(BOOL)animated;
- (void)layoutSubviews;
@end
@class UITableView;
@class NSBundle;
SWIFT_CLASS("_TtC20OpenSourceController24OpenSourceViewController")
@interface OpenSourceViewController : UITableViewController
- (void)viewDidLoad;
- (NSInteger)numberOfSectionsInTableView:(UITableView * _Nonnull)tableView SWIFT_WARN_UNUSED_RESULT;
- (NSInteger)tableView:(UITableView * _Nonnull)tableView numberOfRowsInSection:(NSInteger)section SWIFT_WARN_UNUSED_RESULT;
- (UITableViewCell * _Nonnull)tableView:(UITableView * _Nonnull)tableView cellForRowAtIndexPath:(NSIndexPath * _Nonnull)indexPath SWIFT_WARN_UNUSED_RESULT;
- (CGFloat)tableView:(UITableView * _Nonnull)tableView estimatedHeightForRowAtIndexPath:(NSIndexPath * _Nonnull)indexPath SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)initWithStyle:(UITableViewStyle)style OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)initWithNibName:(NSString * _Nullable)nibNameOrNil bundle:(NSBundle * _Nullable)nibBundleOrNil OBJC_DESIGNATED_INITIALIZER;
- (nullable instancetype)initWithCoder:(NSCoder * _Nonnull)aDecoder OBJC_DESIGNATED_INITIALIZER;
@end
SWIFT_MODULE_NAMESPACE_POP
#pragma clang diagnostic pop
Binary file not shown.
@@ -1,4 +0,0 @@
framework module OpenSourceController {
header "OpenSourceController-Swift.h"
requires objc
}
Binary file not shown.
@@ -7,6 +7,8 @@
objects = { objects = {
/* Begin PBXBuildFile section */ /* Begin PBXBuildFile section */
7622F02C23796B67001B4F5D /* CHANGELOG.md in Resources */ = {isa = PBXBuildFile; fileRef = 7622F02B23796B67001B4F5D /* CHANGELOG.md */; };
7622F02E2379B559001B4F5D /* Style.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7622F02D2379B559001B4F5D /* Style.swift */; };
7627B06221807C4B0057FFBB /* README.md in Resources */ = {isa = PBXBuildFile; fileRef = 7627B06121807C4B0057FFBB /* README.md */; }; 7627B06221807C4B0057FFBB /* README.md in Resources */ = {isa = PBXBuildFile; fileRef = 7627B06121807C4B0057FFBB /* README.md */; };
76D7F28121BEB3A0004B74CB /* OpenSourceController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76D7F26F21BEB3A0004B74CB /* OpenSourceController.swift */; }; 76D7F28121BEB3A0004B74CB /* OpenSourceController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76D7F26F21BEB3A0004B74CB /* OpenSourceController.swift */; };
76D7F28221BEB3A0004B74CB /* OpenSourceControllerConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76D7F27021BEB3A0004B74CB /* OpenSourceControllerConfig.swift */; }; 76D7F28221BEB3A0004B74CB /* OpenSourceControllerConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76D7F27021BEB3A0004B74CB /* OpenSourceControllerConfig.swift */; };
@@ -27,10 +29,12 @@
76EAA86A1E93F2CC009A41DA /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 76EAA8681E93F2CC009A41DA /* Main.storyboard */; }; 76EAA86A1E93F2CC009A41DA /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 76EAA8681E93F2CC009A41DA /* Main.storyboard */; };
76EAA86C1E93F2CC009A41DA /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 76EAA86B1E93F2CC009A41DA /* Assets.xcassets */; }; 76EAA86C1E93F2CC009A41DA /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 76EAA86B1E93F2CC009A41DA /* Assets.xcassets */; };
76EAA86F1E93F2CC009A41DA /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 76EAA86D1E93F2CC009A41DA /* LaunchScreen.storyboard */; }; 76EAA86F1E93F2CC009A41DA /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 76EAA86D1E93F2CC009A41DA /* LaunchScreen.storyboard */; };
C33E4D96204442AC00142EE6 /* CHANGELOG.md in Resources */ = {isa = PBXBuildFile; fileRef = C33E4D95204442AC00142EE6 /* CHANGELOG.md */; };
/* End PBXBuildFile section */ /* End PBXBuildFile section */
/* Begin PBXFileReference section */ /* Begin PBXFileReference section */
7622F02A23796A81001B4F5D /* OpenSourceControllerDemo.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = OpenSourceControllerDemo.entitlements; sourceTree = "<group>"; };
7622F02B23796B67001B4F5D /* CHANGELOG.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = net.daringfireball.markdown; name = CHANGELOG.md; path = ../CHANGELOG.md; sourceTree = "<group>"; };
7622F02D2379B559001B4F5D /* Style.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Style.swift; sourceTree = "<group>"; };
7627B06121807C4B0057FFBB /* README.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = net.daringfireball.markdown; name = README.md; path = ../README.md; sourceTree = "<group>"; }; 7627B06121807C4B0057FFBB /* README.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = net.daringfireball.markdown; name = README.md; path = ../README.md; sourceTree = "<group>"; };
76D7F26F21BEB3A0004B74CB /* OpenSourceController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OpenSourceController.swift; sourceTree = "<group>"; }; 76D7F26F21BEB3A0004B74CB /* OpenSourceController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OpenSourceController.swift; sourceTree = "<group>"; };
76D7F27021BEB3A0004B74CB /* OpenSourceControllerConfig.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OpenSourceControllerConfig.swift; sourceTree = "<group>"; }; 76D7F27021BEB3A0004B74CB /* OpenSourceControllerConfig.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OpenSourceControllerConfig.swift; sourceTree = "<group>"; };
@@ -53,7 +57,6 @@
76EAA86B1E93F2CC009A41DA /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; }; 76EAA86B1E93F2CC009A41DA /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
76EAA86E1E93F2CC009A41DA /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; }; 76EAA86E1E93F2CC009A41DA /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
76EAA8701E93F2CC009A41DA /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; }; 76EAA8701E93F2CC009A41DA /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
C33E4D95204442AC00142EE6 /* CHANGELOG.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = net.daringfireball.markdown; name = CHANGELOG.md; path = ../CHANGELOG.md; sourceTree = "<group>"; };
/* End PBXFileReference section */ /* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */ /* Begin PBXFrameworksBuildPhase section */
@@ -89,6 +92,7 @@
76D7F27421BEB3A0004B74CB /* UIView+Extensions.swift */, 76D7F27421BEB3A0004B74CB /* UIView+Extensions.swift */,
76D7F27521BEB3A0004B74CB /* Reusable.swift */, 76D7F27521BEB3A0004B74CB /* Reusable.swift */,
76D7F27621BEB3A0004B74CB /* UITableView+Extensions.swift */, 76D7F27621BEB3A0004B74CB /* UITableView+Extensions.swift */,
7622F02D2379B559001B4F5D /* Style.swift */,
); );
path = Utils; path = Utils;
sourceTree = "<group>"; sourceTree = "<group>";
@@ -108,6 +112,7 @@
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
76D7F27D21BEB3A0004B74CB /* HTTPDataLoader.swift */, 76D7F27D21BEB3A0004B74CB /* HTTPDataLoader.swift */,
76D7F28021BEB3A0004B74CB /* LicenceLoader.swift */,
); );
path = Loader; path = Loader;
sourceTree = "<group>"; sourceTree = "<group>";
@@ -116,7 +121,6 @@
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
76D7F27F21BEB3A0004B74CB /* LicenceFile.swift */, 76D7F27F21BEB3A0004B74CB /* LicenceFile.swift */,
76D7F28021BEB3A0004B74CB /* LicenceLoader.swift */,
); );
path = Model; path = Model;
sourceTree = "<group>"; sourceTree = "<group>";
@@ -124,8 +128,8 @@
76EAA8581E93F2CC009A41DA = { 76EAA8581E93F2CC009A41DA = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
C33E4D95204442AC00142EE6 /* CHANGELOG.md */,
7627B06121807C4B0057FFBB /* README.md */, 7627B06121807C4B0057FFBB /* README.md */,
7622F02B23796B67001B4F5D /* CHANGELOG.md */,
76EAA8631E93F2CC009A41DA /* OpenSourceControllerDemo */, 76EAA8631E93F2CC009A41DA /* OpenSourceControllerDemo */,
76D7F26E21BEB3A0004B74CB /* Sources */, 76D7F26E21BEB3A0004B74CB /* Sources */,
76EAA8621E93F2CC009A41DA /* Products */, 76EAA8621E93F2CC009A41DA /* Products */,
@@ -143,6 +147,7 @@
76EAA8631E93F2CC009A41DA /* OpenSourceControllerDemo */ = { 76EAA8631E93F2CC009A41DA /* OpenSourceControllerDemo */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
7622F02A23796A81001B4F5D /* OpenSourceControllerDemo.entitlements */,
76EAA8641E93F2CC009A41DA /* AppDelegate.swift */, 76EAA8641E93F2CC009A41DA /* AppDelegate.swift */,
76EAA8661E93F2CC009A41DA /* ViewController.swift */, 76EAA8661E93F2CC009A41DA /* ViewController.swift */,
76EAA8681E93F2CC009A41DA /* Main.storyboard */, 76EAA8681E93F2CC009A41DA /* Main.storyboard */,
@@ -215,10 +220,10 @@
buildActionMask = 2147483647; buildActionMask = 2147483647;
files = ( files = (
76EAA86F1E93F2CC009A41DA /* LaunchScreen.storyboard in Resources */, 76EAA86F1E93F2CC009A41DA /* LaunchScreen.storyboard in Resources */,
7622F02C23796B67001B4F5D /* CHANGELOG.md in Resources */,
76EAA86C1E93F2CC009A41DA /* Assets.xcassets in Resources */, 76EAA86C1E93F2CC009A41DA /* Assets.xcassets in Resources */,
7627B06221807C4B0057FFBB /* README.md in Resources */, 7627B06221807C4B0057FFBB /* README.md in Resources */,
76EAA86A1E93F2CC009A41DA /* Main.storyboard in Resources */, 76EAA86A1E93F2CC009A41DA /* Main.storyboard in Resources */,
C33E4D96204442AC00142EE6 /* CHANGELOG.md in Resources */,
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };
@@ -233,6 +238,7 @@
76D7F28521BEB3A0004B74CB /* UIView+Extensions.swift in Sources */, 76D7F28521BEB3A0004B74CB /* UIView+Extensions.swift in Sources */,
76D7F28221BEB3A0004B74CB /* OpenSourceControllerConfig.swift in Sources */, 76D7F28221BEB3A0004B74CB /* OpenSourceControllerConfig.swift in Sources */,
76D7F28321BEB3A0004B74CB /* Array+Extensions.swift in Sources */, 76D7F28321BEB3A0004B74CB /* Array+Extensions.swift in Sources */,
7622F02E2379B559001B4F5D /* Style.swift in Sources */,
76EAA8671E93F2CC009A41DA /* ViewController.swift in Sources */, 76EAA8671E93F2CC009A41DA /* ViewController.swift in Sources */,
76D7F28921BEB3A0004B74CB /* LicenceListViewController.swift in Sources */, 76D7F28921BEB3A0004B74CB /* LicenceListViewController.swift in Sources */,
76D7F28C21BEB3A0004B74CB /* HTTPDataLoader.swift in Sources */, 76D7F28C21BEB3A0004B74CB /* HTTPDataLoader.swift in Sources */,
@@ -389,11 +395,14 @@
isa = XCBuildConfiguration; isa = XCBuildConfiguration;
buildSettings = { buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CODE_SIGN_ENTITLEMENTS = OpenSourceControllerDemo/OpenSourceControllerDemo.entitlements;
DERIVE_MACCATALYST_PRODUCT_BUNDLE_IDENTIFIER = YES;
DEVELOPMENT_TEAM = XEHEC9B46E; DEVELOPMENT_TEAM = XEHEC9B46E;
INFOPLIST_FILE = OpenSourceControllerDemo/Info.plist; INFOPLIST_FILE = OpenSourceControllerDemo/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = com.fg.OpenSourceControllerDemo; PRODUCT_BUNDLE_IDENTIFIER = com.fg.OpenSourceControllerDemo;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
SUPPORTS_MACCATALYST = YES;
SWIFT_VERSION = 5.0; SWIFT_VERSION = 5.0;
}; };
name = Debug; name = Debug;
@@ -402,11 +411,14 @@
isa = XCBuildConfiguration; isa = XCBuildConfiguration;
buildSettings = { buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CODE_SIGN_ENTITLEMENTS = OpenSourceControllerDemo/OpenSourceControllerDemo.entitlements;
DERIVE_MACCATALYST_PRODUCT_BUNDLE_IDENTIFIER = YES;
DEVELOPMENT_TEAM = XEHEC9B46E; DEVELOPMENT_TEAM = XEHEC9B46E;
INFOPLIST_FILE = OpenSourceControllerDemo/Info.plist; INFOPLIST_FILE = OpenSourceControllerDemo/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = com.fg.OpenSourceControllerDemo; PRODUCT_BUNDLE_IDENTIFIER = com.fg.OpenSourceControllerDemo;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
SUPPORTS_MACCATALYST = YES;
SWIFT_VERSION = 5.0; SWIFT_VERSION = 5.0;
}; };
name = Release; name = Release;
@@ -4,5 +4,7 @@
<dict> <dict>
<key>BuildSystemType</key> <key>BuildSystemType</key>
<string>Latest</string> <string>Latest</string>
<key>PreviewsEnabled</key>
<false/>
</dict> </dict>
</plist> </plist>
@@ -1,11 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="14460.31" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES" initialViewController="fdz-at-fDg"> <document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="15505" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES" initialViewController="fdz-at-fDg">
<device id="retina4_7" orientation="portrait"> <device id="retina4_7" orientation="portrait" appearance="light"/>
<adaptation id="fullscreen"/>
</device>
<dependencies> <dependencies>
<deployment identifier="iOS"/> <deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="14460.20"/> <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="15509"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies> </dependencies>
<scenes> <scenes>
@@ -24,7 +22,7 @@
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="LI4-fC-2Ry"> <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="LI4-fC-2Ry">
<rect key="frame" x="23" y="318.5" width="329" height="30"/> <rect key="frame" x="23" y="318.5" width="329" height="30"/>
<state key="normal" title="Show me (push)"> <state key="normal" title="Show me (push)">
<color key="titleColor" cocoaTouchSystemColor="darkTextColor"/> <color key="titleColor" systemColor="labelColor" cocoaTouchSystemColor="darkTextColor"/>
</state> </state>
<connections> <connections>
<action selector="pushOpenSourceController:" destination="BYZ-38-t0r" eventType="touchUpInside" id="Exu-2l-lfA"/> <action selector="pushOpenSourceController:" destination="BYZ-38-t0r" eventType="touchUpInside" id="Exu-2l-lfA"/>
@@ -36,14 +34,14 @@
<constraint firstAttribute="height" constant="30" id="LLB-12-8xE"/> <constraint firstAttribute="height" constant="30" id="LLB-12-8xE"/>
</constraints> </constraints>
<state key="normal" title="Show me (present)"> <state key="normal" title="Show me (present)">
<color key="titleColor" cocoaTouchSystemColor="darkTextColor"/> <color key="titleColor" systemColor="labelColor" cocoaTouchSystemColor="darkTextColor"/>
</state> </state>
<connections> <connections>
<action selector="presentOpenSourceController:" destination="BYZ-38-t0r" eventType="touchUpInside" id="SoS-HF-0LZ"/> <action selector="presentOpenSourceController:" destination="BYZ-38-t0r" eventType="touchUpInside" id="SoS-HF-0LZ"/>
</connections> </connections>
</button> </button>
</subviews> </subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> <color key="backgroundColor" systemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/>
<color key="tintColor" red="0.0" green="0.58980089430000004" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> <color key="tintColor" red="0.0" green="0.58980089430000004" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<constraints> <constraints>
<constraint firstItem="wfq-WN-CRo" firstAttribute="leading" secondItem="8bC-Xf-vdC" secondAttribute="leadingMargin" constant="7" id="7s5-n0-5gS"/> <constraint firstItem="wfq-WN-CRo" firstAttribute="leading" secondItem="8bC-Xf-vdC" secondAttribute="leadingMargin" constant="7" id="7s5-n0-5gS"/>
@@ -66,7 +64,7 @@
<navigationController automaticallyAdjustsScrollViewInsets="NO" id="fdz-at-fDg" sceneMemberID="viewController"> <navigationController automaticallyAdjustsScrollViewInsets="NO" id="fdz-at-fDg" sceneMemberID="viewController">
<toolbarItems/> <toolbarItems/>
<navigationBar key="navigationBar" contentMode="scaleToFill" insetsLayoutMarginsFromSafeArea="NO" id="gcV-6a-gYe"> <navigationBar key="navigationBar" contentMode="scaleToFill" insetsLayoutMarginsFromSafeArea="NO" id="gcV-6a-gYe">
<rect key="frame" x="0.0" y="20" width="375" height="44"/> <rect key="frame" x="0.0" y="0.0" width="375" height="44"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
</navigationBar> </navigationBar>
<nil name="viewControllers"/> <nil name="viewControllers"/>
@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.security.app-sandbox</key>
<true/>
<key>com.apple.security.network.client</key>
<true/>
</dict>
</plist>
@@ -59,9 +59,6 @@ class ViewController: UIViewController {
// Navigation bar title // Navigation bar title
openSourceVC.config.title = "MyCustomTitle" openSourceVC.config.title = "MyCustomTitle"
// Navigation bar tint color
openSourceVC.config.uiConfig.barTintColor = UIColor.red
// Close button color // Close button color
openSourceVC.config.uiConfig.closeButtonColor = UIColor.green openSourceVC.config.uiConfig.closeButtonColor = UIColor.green
Binary file not shown.
+1 -1
View File
@@ -1,6 +1,6 @@
Pod::Spec.new do |s| Pod::Spec.new do |s|
s.name = 'OpenSourceController' s.name = 'OpenSourceController'
s.version = '3.2.1' s.version = '4.0.0'
s.summary = 'Display all the librarys licence used in your application. Enjoy !' s.summary = 'Display all the librarys licence used in your application. Enjoy !'
s.description = 'Display a screen with all licence used in your apply can be painful to maintain. OpenSourceController was built to respond to this problem. OpenSourceController is a simple parser to display the licences which are used in your application.' s.description = 'Display a screen with all licence used in your apply can be painful to maintain. OpenSourceController was built to respond to this problem. OpenSourceController is a simple parser to display the licences which are used in your application.'
s.homepage = 'https://github.com/floriangbh/OpenSourceController' s.homepage = 'https://github.com/floriangbh/OpenSourceController'
+28
View File
@@ -0,0 +1,28 @@
// swift-tools-version:5.1
// The swift-tools-version declares the minimum version of Swift required to build this package.
import PackageDescription
let package = Package(
name: "OpenSourceController",
products: [
// Products define the executables and libraries produced by a package, and make them visible to other packages.
.library(
name: "OpenSourceController",
targets: ["OpenSourceController"]),
],
dependencies: [
// Dependencies declare other packages that this package depends on.
// .package(url: /* package url */, from: "1.0.0"),
],
targets: [
// Targets are the basic building blocks of a package. A target can define a module or a test suite.
// Targets can depend on other targets in this package, and on products in packages which this package depends on.
.target(
name: "OpenSourceController",
dependencies: []),
.testTarget(
name: "OpenSourceControllerTests",
dependencies: ["OpenSourceController"]),
]
)
-3
View File
@@ -97,9 +97,6 @@ You can apply some customisation. To do it you can use the OpenSourceControllerC
// Navigation bar title // Navigation bar title
openSourceVC.config.title = "MyCustomTitle" openSourceVC.config.title = "MyCustomTitle"
// Navigation bar tint color
openSourceVC.config.uiConfig.barTintColor = UIColor.red
// Close button color // Close button color
openSourceVC.config.uiConfig.closeButtonColor = UIColor.white openSourceVC.config.uiConfig.closeButtonColor = UIColor.white
@@ -13,7 +13,12 @@ final class LoadingViewController: UIViewController {
// MARK: - Var // MARK: - Var
fileprivate lazy var activityIndicator: UIActivityIndicatorView = { fileprivate lazy var activityIndicator: UIActivityIndicatorView = {
let activityIndicator = UIActivityIndicatorView(style: UIActivityIndicatorView.Style.gray) let activityIndicator = UIActivityIndicatorView()
if #available(iOS 13.0, *) {
activityIndicator.style = UIActivityIndicatorView.Style.medium
} else {
activityIndicator.style = UIActivityIndicatorView.Style.gray
}
activityIndicator.startAnimating() activityIndicator.startAnimating()
return activityIndicator return activityIndicator
}() }()
@@ -37,6 +42,7 @@ final class LoadingViewController: UIViewController {
self.view.backgroundColor = self.config.uiConfig.backgroundColor self.view.backgroundColor = self.config.uiConfig.backgroundColor
self.view.addSubview(self.activityIndicator) self.view.addSubview(self.activityIndicator)
self.activityIndicator.translatesAutoresizingMaskIntoConstraints = false
self.activityIndicator.pinCenter(to: self.view) self.activityIndicator.pinCenter(to: self.view)
} }
} }
@@ -32,9 +32,6 @@ final class OpenSourceTableViewCell: UITableViewCell, Reusable {
func configure(licence: LicenceFile, config: OpenSourceControllerConfig) { func configure(licence: LicenceFile, config: OpenSourceControllerConfig) {
self.textLabel?.attributedText = licence.attributedContent self.textLabel?.attributedText = licence.attributedContent
self.textLabel?.textColor = config.uiConfig.licenceTextColor self.textLabel?.textColor = config.uiConfig.licenceTextColor
self.backgroundColor = config.uiConfig.licenceBackgroundColor
if let backgroundColor = config.uiConfig.licenceBackgroundColor {
self.backgroundColor = backgroundColor
}
} }
} }
@@ -24,13 +24,17 @@ final class OpenSourceViewController: UIViewController {
fileprivate lazy var closeButton: UIBarButtonItem = { fileprivate lazy var closeButton: UIBarButtonItem = {
let closeButton = UIBarButtonItem(barButtonSystemItem: .stop, target: self, action: #selector(self.closePicker)) let closeButton = UIBarButtonItem(barButtonSystemItem: .stop, target: self, action: #selector(self.closePicker))
closeButton.tintColor = self.config.uiConfig.closeButtonColor ?? UIColor.black closeButton.tintColor = self.config.uiConfig.closeButtonColor
return closeButton return closeButton
}() }()
// MARK: - Lifecyle // MARK: - Lifecyle
init(licences: [LicenceFile], showCloseButton: Bool, configuration: OpenSourceControllerConfig, licenceLoader: LicenceLoader) { init(licences: [LicenceFile],
showCloseButton: Bool,
configuration: OpenSourceControllerConfig,
licenceLoader: LicenceLoader) {
self.licenceLoader = licenceLoader self.licenceLoader = licenceLoader
self.licences = licences self.licences = licences
self.showCloseButton = showCloseButton self.showCloseButton = showCloseButton
@@ -59,14 +63,9 @@ final class OpenSourceViewController: UIViewController {
// MARK: - Prepare // MARK: - Prepare
fileprivate func prepareStyle() { fileprivate func prepareStyle() {
if let tintColor = self.config.uiConfig.barTintColor { let titleColor = self.config.uiConfig.titleColor
self.navigationController?.navigationBar.barTintColor = tintColor let attribut = [NSAttributedString.Key.foregroundColor: titleColor]
} self.navigationController?.navigationBar.titleTextAttributes = attribut
if let textColor = self.config.uiConfig.titleColor {
let attribut = [NSAttributedString.Key.foregroundColor: textColor]
self.navigationController?.navigationBar.titleTextAttributes = attribut
}
} }
fileprivate func prepareLicences() { fileprivate func prepareLicences() {
+5 -7
View File
@@ -11,23 +11,21 @@ public struct OpenSourceControllerConfig {
/// Sub-stuct holding configuration relevant to UI presentation ! /// Sub-stuct holding configuration relevant to UI presentation !
public struct UIConfig { public struct UIConfig {
/// Will be applied to the navigation bar
public var barTintColor: UIColor?
/// Will be applied to the navigation bar /// Will be applied to the navigation bar
public var backgroundColor: UIColor = .white public var backgroundColor: UIColor = Style.background
/// Will be applied to licence text /// Will be applied to licence text
public var licenceBackgroundColor: UIColor? public var licenceBackgroundColor: UIColor = Style.background
/// Will be applied to the navigation bar /// Will be applied to the navigation bar
public var closeButtonColor: UIColor? public var closeButtonColor: UIColor = Style.label
/// Will be applied to licence text /// Will be applied to licence text
public var licenceTextColor: UIColor? public var licenceTextColor: UIColor = Style.label
/// Will be applied to licence text /// Will be applied to licence text
public var titleColor: UIColor? public var titleColor: UIColor = Style.label
} }
/// Will be applied to the navigation bar title /// Will be applied to the navigation bar title
+27
View File
@@ -0,0 +1,27 @@
//
// UIColor+Extension.swift
// OpenSourceControllerDemo
//
// Created by Florian Gabach on 11/11/2019.
// Copyright © 2019 OpenSourceController. All rights reserved.
//
import UIKit
struct Style {
static var background: UIColor {
if #available(iOS 13.0, *) {
return UIColor.systemBackground
} else {
return UIColor.black
}
}
static var label: UIColor {
if #available(iOS 13.0, *) {
return UIColor.label
} else {
return UIColor.black
}
}
}
+1 -1
View File
@@ -8,7 +8,7 @@
import UIKit import UIKit
extension UITableView { extension UITableView {
final func register<T: UITableViewCell>(cellType: T.Type) final func register<T: UITableViewCell>(cellType: T.Type)
where T: Reusable { where T: Reusable {
self.register(cellType.self, forCellReuseIdentifier: cellType.reuseIdentifier) self.register(cellType.self, forCellReuseIdentifier: cellType.reuseIdentifier)
-2
View File
@@ -13,7 +13,6 @@ extension UIView {
// MARK: - Layout // MARK: - Layout
func pinEdges(to other: UIView, withBorderSize size: CGFloat = 0.0) { func pinEdges(to other: UIView, withBorderSize size: CGFloat = 0.0) {
self.translatesAutoresizingMaskIntoConstraints = false
self.leadingAnchor.constraint(equalTo: other.leadingAnchor, constant: size).isActive = true self.leadingAnchor.constraint(equalTo: other.leadingAnchor, constant: size).isActive = true
self.trailingAnchor.constraint(equalTo: other.trailingAnchor, constant: size).isActive = true self.trailingAnchor.constraint(equalTo: other.trailingAnchor, constant: size).isActive = true
self.topAnchor.constraint(equalTo: other.topAnchor, constant: size).isActive = true self.topAnchor.constraint(equalTo: other.topAnchor, constant: size).isActive = true
@@ -21,7 +20,6 @@ extension UIView {
} }
func pinCenter(to other: UIView) { func pinCenter(to other: UIView) {
self.translatesAutoresizingMaskIntoConstraints = false
self.centerXAnchor.constraint(equalTo: other.centerXAnchor).isActive = true self.centerXAnchor.constraint(equalTo: other.centerXAnchor).isActive = true
self.centerYAnchor.constraint(equalTo: other.centerYAnchor).isActive = true self.centerYAnchor.constraint(equalTo: other.centerYAnchor).isActive = true
} }
@@ -15,6 +15,7 @@ extension UIViewController {
func add(_ child: UIViewController) { func add(_ child: UIViewController) {
self.addChild(child) self.addChild(child)
self.view.addSubview(child.view) self.view.addSubview(child.view)
view.pinEdges(to: child.view)
child.didMove(toParent: self) child.didMove(toParent: self)
} }