mirror of
https://github.com/kiwix/kiwix-apple.git
synced 2025-09-14 14:49:50 -04:00
Ios12 compatibility (#207)
* dependencies update * welcome controller * ios 12 build * icon and buttons * init and search bar config * buttonsss * fixing welcome controller * fix main controller * refactor * main controller fix * bookmark widget data update * parser * tests * geo location * tests * test
This commit is contained in:
parent
fdb809ded2
commit
bce6d19e9f
@ -12,6 +12,11 @@
|
||||
97028C54201A7D43001259CB /* WebViewControllerProtocols.swift in Sources */ = {isa = PBXBuildFile; fileRef = 972B665B2006BEBA003F5365 /* WebViewControllerProtocols.swift */; };
|
||||
9702BE221F97FA4300E6B4EE /* LibraryRefreshOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9702BE211F97FA4300E6B4EE /* LibraryRefreshOperation.swift */; };
|
||||
9707B8F61F4B4F1500075D4F /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 9707B8F51F4B4F1500075D4F /* Assets.xcassets */; };
|
||||
970EC39F23BCEBA4008DCA27 /* BookmarkManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 970EC39C23BCE2B5008DCA27 /* BookmarkManager.swift */; };
|
||||
970EC3A123BCEC84008DCA27 /* Parser.swift in Sources */ = {isa = PBXBuildFile; fileRef = 970EC3A023BCEC84008DCA27 /* Parser.swift */; };
|
||||
970EC3A423BCED7F008DCA27 /* SwiftSoup in Frameworks */ = {isa = PBXBuildFile; productRef = 970EC3A323BCED7F008DCA27 /* SwiftSoup */; };
|
||||
970EC3FB23BE8E25008DCA27 /* ParserTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 970EC3AB23BCF31F008DCA27 /* ParserTests.swift */; };
|
||||
970EC3FC23BE8E31008DCA27 /* Parser.swift in Sources */ = {isa = PBXBuildFile; fileRef = 970EC3A023BCEC84008DCA27 /* Parser.swift */; };
|
||||
97161A861F8FFD1E00A89DE3 /* LibraryCategoryController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97161A851F8FFD1E00A89DE3 /* LibraryCategoryController.swift */; };
|
||||
97161A891F90072A00A89DE3 /* LibraryTableCells.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97161A881F90072A00A89DE3 /* LibraryTableCells.swift */; };
|
||||
9719F60320DAF7A600B5D0EB /* SearchQueue.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97AC121420879252004779D1 /* SearchQueue.swift */; };
|
||||
@ -105,7 +110,6 @@
|
||||
97CAFA942051EC4B00AC1F68 /* BackupManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97598E08202B60E0005A9055 /* BackupManager.swift */; };
|
||||
97CAFA952051EC4E00AC1F68 /* DirectoryMonitor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97E4298F1FBDF48800ABE62E /* DirectoryMonitor.swift */; };
|
||||
97CAFA962051EC5100AC1F68 /* TableOfContentItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97D00A7E1FBB92D400165629 /* TableOfContentItem.swift */; };
|
||||
97CE15AE23B245FB00378D9F /* MainController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97C99B47205AF58D00439C77 /* MainController.swift */; };
|
||||
97CE15AF23B2668500378D9F /* TableViewSectionFooterLabel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97D0C4DC211BF72B00B00DAA /* TableViewSectionFooterLabel.swift */; };
|
||||
97CE15B223B26BBC00378D9F /* SwiftyUserDefaults in Frameworks */ = {isa = PBXBuildFile; productRef = 97CE15B123B26BBC00378D9F /* SwiftyUserDefaults */; };
|
||||
97CE15B423B26CC600378D9F /* SwiftyUserDefaults in Frameworks */ = {isa = PBXBuildFile; productRef = 97CE15B323B26CC600378D9F /* SwiftyUserDefaults */; };
|
||||
@ -132,7 +136,7 @@
|
||||
97D757D9238B7BA8008FB7E2 /* libicutest.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 97D757C8238B7BA8008FB7E2 /* libicutest.a */; };
|
||||
97D757DA238B7BA8008FB7E2 /* libcurl.la in Resources */ = {isa = PBXBuildFile; fileRef = 97D757C9238B7BA8008FB7E2 /* libcurl.la */; };
|
||||
97D757DB238B7BA8008FB7E2 /* liblzma.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 97D757CA238B7BA8008FB7E2 /* liblzma.a */; };
|
||||
97D757E2238B90EC008FB7E2 /* RootSplitController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97D757E1238B90EC008FB7E2 /* RootSplitController.swift */; };
|
||||
97D757E2238B90EC008FB7E2 /* RootController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97D757E1238B90EC008FB7E2 /* RootController.swift */; };
|
||||
97D757E5238F3161008FB7E2 /* SideBarController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97D757E4238F3161008FB7E2 /* SideBarController.swift */; };
|
||||
97DBCF9D203CA254004EE274 /* SettingExternalLinkController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97DBCF9C203CA254004EE274 /* SettingExternalLinkController.swift */; };
|
||||
97E34E0C20124F33005080B2 /* SearchNoTextController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97E34E0B20124F33005080B2 /* SearchNoTextController.swift */; };
|
||||
@ -148,6 +152,13 @@
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXContainerItemProxy section */
|
||||
970EC3F623BE8E20008DCA27 /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 97A2AB801C1B80FF00052E74 /* Project object */;
|
||||
proxyType = 1;
|
||||
remoteGlobalIDString = 97A36C241F8C21210079B452;
|
||||
remoteInfo = iOS;
|
||||
};
|
||||
97C575FC202CB0E900E37502 /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 97A2AB801C1B80FF00052E74 /* Project object */;
|
||||
@ -207,6 +218,11 @@
|
||||
97041F7E1F9652D4007D63F5 /* WikiMed.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = WikiMed.plist; sourceTree = "<group>"; };
|
||||
97050D001F6733400021DE78 /* WebKitWebController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WebKitWebController.swift; sourceTree = "<group>"; };
|
||||
9707B8F51F4B4F1500075D4F /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
|
||||
970EC39C23BCE2B5008DCA27 /* BookmarkManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BookmarkManager.swift; sourceTree = "<group>"; };
|
||||
970EC3A023BCEC84008DCA27 /* Parser.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Parser.swift; sourceTree = "<group>"; };
|
||||
970EC3AB23BCF31F008DCA27 /* ParserTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ParserTests.swift; sourceTree = "<group>"; };
|
||||
970EC3F123BE8E20008DCA27 /* ModelTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = ModelTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
970EC3F523BE8E20008DCA27 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
97161A851F8FFD1E00A89DE3 /* LibraryCategoryController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LibraryCategoryController.swift; sourceTree = "<group>"; };
|
||||
97161A881F90072A00A89DE3 /* LibraryTableCells.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LibraryTableCells.swift; sourceTree = "<group>"; };
|
||||
9717A2521FB2592D00837492 /* Main.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = Main.storyboard; sourceTree = "<group>"; };
|
||||
@ -273,7 +289,7 @@
|
||||
97A9F6F41E2E990500F423AA /* Inject.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = Inject.js; sourceTree = "<group>"; };
|
||||
97AC121420879252004779D1 /* SearchQueue.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchQueue.swift; sourceTree = "<group>"; };
|
||||
97B1046E1F8FC63C00488444 /* LibraryMasterController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LibraryMasterController.swift; sourceTree = "<group>"; };
|
||||
97B44894210FBC2C0004B056 /* WikiMed.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = WikiMed.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
97B44894210FBC2C0004B056 /* WikiMed.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; name = WikiMed.app; path = "/Users/chrisli/Developer/Kiwix/build/Debug-iphoneos/WikiMed.app"; sourceTree = "<absolute>"; };
|
||||
97B44896210FBC2C0004B056 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
|
||||
97B44898210FBC2C0004B056 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = "<group>"; };
|
||||
97B4489B210FBC2C0004B056 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
|
||||
@ -579,7 +595,7 @@
|
||||
97D757C8238B7BA8008FB7E2 /* libicutest.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libicutest.a; sourceTree = "<group>"; };
|
||||
97D757C9238B7BA8008FB7E2 /* libcurl.la */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = libcurl.la; sourceTree = "<group>"; };
|
||||
97D757CA238B7BA8008FB7E2 /* liblzma.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = liblzma.a; sourceTree = "<group>"; };
|
||||
97D757E1238B90EC008FB7E2 /* RootSplitController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RootSplitController.swift; sourceTree = "<group>"; };
|
||||
97D757E1238B90EC008FB7E2 /* RootController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RootController.swift; sourceTree = "<group>"; };
|
||||
97D757E4238F3161008FB7E2 /* SideBarController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SideBarController.swift; sourceTree = "<group>"; };
|
||||
97DBCF9C203CA254004EE274 /* SettingExternalLinkController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingExternalLinkController.swift; sourceTree = "<group>"; };
|
||||
97E34E0B20124F33005080B2 /* SearchNoTextController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchNoTextController.swift; sourceTree = "<group>"; };
|
||||
@ -597,6 +613,13 @@
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
970EC3EE23BE8E20008DCA27 /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
9793157E1E5127930093D3BA /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
@ -639,6 +662,7 @@
|
||||
97CA4A6D20A0F583008CEA6D /* libzim.a in Frameworks */,
|
||||
97CA4A6920A0F583008CEA6D /* libz.a in Frameworks */,
|
||||
97CA4A6620A0F583008CEA6D /* libicui18n.a in Frameworks */,
|
||||
970EC3A423BCED7F008DCA27 /* SwiftSoup in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
@ -694,6 +718,24 @@
|
||||
path = Web;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
970EC39E23BCE7F5008DCA27 /* Model */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
970EC39C23BCE2B5008DCA27 /* BookmarkManager.swift */,
|
||||
970EC3A023BCEC84008DCA27 /* Parser.swift */,
|
||||
);
|
||||
path = Model;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
970EC3F223BE8E20008DCA27 /* ModelTests */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
970EC3AB23BCF31F008DCA27 /* ParserTests.swift */,
|
||||
970EC3F523BE8E20008DCA27 /* Info.plist */,
|
||||
);
|
||||
path = ModelTests;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
97252106200F9D3C00B60A80 /* Setting */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
@ -802,7 +844,7 @@
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
97C99B47205AF58D00439C77 /* MainController.swift */,
|
||||
97D757E1238B90EC008FB7E2 /* RootSplitController.swift */,
|
||||
97D757E1238B90EC008FB7E2 /* RootController.swift */,
|
||||
97EF586C239DB83E007549B8 /* ContentViewController.swift */,
|
||||
97B4ADFA239C6C3800264AF6 /* TabsController.swift */,
|
||||
97D757E3238F29DC008FB7E2 /* SideBar */,
|
||||
@ -887,14 +929,16 @@
|
||||
97A2AB7F1C1B80FF00052E74 = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
970EC39E23BCE7F5008DCA27 /* Model */,
|
||||
973BCD1F1CEB412E00F10B44 /* Shared */,
|
||||
979315821E5127930093D3BA /* macOS */,
|
||||
975FDAD81F6082DA00A10E8C /* iOS */,
|
||||
97B44895210FBC2C0004B056 /* WikiMed */,
|
||||
970EC3F223BE8E20008DCA27 /* ModelTests */,
|
||||
3B93EAF9B5C5AA23046BDEAC /* Frameworks */,
|
||||
97A36C4E1F8C21210079B452 /* Kiwix.app */,
|
||||
97C575F2202CB0E800E37502 /* Bookmarks.appex */,
|
||||
97B44894210FBC2C0004B056 /* WikiMed.app */,
|
||||
970EC3F123BE8E20008DCA27 /* ModelTests.xctest */,
|
||||
);
|
||||
sourceTree = "<group>";
|
||||
wrapsLines = 0;
|
||||
@ -1360,6 +1404,24 @@
|
||||
/* End PBXGroup section */
|
||||
|
||||
/* Begin PBXNativeTarget section */
|
||||
970EC3F023BE8E20008DCA27 /* ModelTests */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 970EC3F823BE8E20008DCA27 /* Build configuration list for PBXNativeTarget "ModelTests" */;
|
||||
buildPhases = (
|
||||
970EC3ED23BE8E20008DCA27 /* Sources */,
|
||||
970EC3EE23BE8E20008DCA27 /* Frameworks */,
|
||||
970EC3EF23BE8E20008DCA27 /* Resources */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
970EC3F723BE8E20008DCA27 /* PBXTargetDependency */,
|
||||
);
|
||||
name = ModelTests;
|
||||
productName = ModelTests;
|
||||
productReference = 970EC3F123BE8E20008DCA27 /* ModelTests.xctest */;
|
||||
productType = "com.apple.product-type.bundle.unit-test";
|
||||
};
|
||||
979315801E5127930093D3BA /* macOS */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 979315A31E5127940093D3BA /* Build configuration list for PBXNativeTarget "macOS" */;
|
||||
@ -1403,6 +1465,7 @@
|
||||
97CE15B123B26BBC00378D9F /* SwiftyUserDefaults */,
|
||||
97CE15B623B26EB300378D9F /* Realm */,
|
||||
97CE15B823B26EB300378D9F /* RealmSwift */,
|
||||
970EC3A323BCED7F008DCA27 /* SwiftSoup */,
|
||||
);
|
||||
productName = WikiMed;
|
||||
productReference = 97A36C4E1F8C21210079B452 /* Kiwix.app */;
|
||||
@ -1449,10 +1512,14 @@
|
||||
97A2AB801C1B80FF00052E74 /* Project object */ = {
|
||||
isa = PBXProject;
|
||||
attributes = {
|
||||
LastSwiftUpdateCheck = 0940;
|
||||
LastUpgradeCheck = 1100;
|
||||
LastSwiftUpdateCheck = 1130;
|
||||
LastUpgradeCheck = 1130;
|
||||
ORGANIZATIONNAME = "Chris Li";
|
||||
TargetAttributes = {
|
||||
970EC3F023BE8E20008DCA27 = {
|
||||
CreatedOnToolsVersion = 11.3;
|
||||
TestTargetID = 97A36C241F8C21210079B452;
|
||||
};
|
||||
979315801E5127930093D3BA = {
|
||||
CreatedOnToolsVersion = 8.2.1;
|
||||
DevelopmentTeam = L7HWM3SP3L;
|
||||
@ -1519,6 +1586,7 @@
|
||||
packageReferences = (
|
||||
97CE15B023B26BBC00378D9F /* XCRemoteSwiftPackageReference "SwiftyUserDefaults" */,
|
||||
97CE15B523B26EB300378D9F /* XCRemoteSwiftPackageReference "realm-cocoa" */,
|
||||
970EC3A223BCED7F008DCA27 /* XCRemoteSwiftPackageReference "SwiftSoup" */,
|
||||
);
|
||||
productRefGroup = 97A2AB7F1C1B80FF00052E74;
|
||||
projectDirPath = "";
|
||||
@ -1528,11 +1596,19 @@
|
||||
979315801E5127930093D3BA /* macOS */,
|
||||
97B44893210FBC2C0004B056 /* WikiMed */,
|
||||
97C575F1202CB0E800E37502 /* Bookmarks */,
|
||||
970EC3F023BE8E20008DCA27 /* ModelTests */,
|
||||
);
|
||||
};
|
||||
/* End PBXProject section */
|
||||
|
||||
/* Begin PBXResourcesBuildPhase section */
|
||||
970EC3EF23BE8E20008DCA27 /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
9793157F1E5127930093D3BA /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
@ -1581,6 +1657,15 @@
|
||||
/* End PBXResourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXSourcesBuildPhase section */
|
||||
970EC3ED23BE8E20008DCA27 /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
970EC3FC23BE8E31008DCA27 /* Parser.swift in Sources */,
|
||||
970EC3FB23BE8E25008DCA27 /* ParserTests.swift in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
9793157D1E5127930093D3BA /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
@ -1623,7 +1708,6 @@
|
||||
97252103200D3C4B00B60A80 /* HUDController.swift in Sources */,
|
||||
977D7BB41F9E6A43009A8703 /* SearchResult.swift in Sources */,
|
||||
97A2180C2024EC3800D1E67B /* SettingFontSizeController.swift in Sources */,
|
||||
97CE15AE23B245FB00378D9F /* MainController.swift in Sources */,
|
||||
9702BE221F97FA4300E6B4EE /* LibraryRefreshOperation.swift in Sources */,
|
||||
9742596920FCE7BA000BB88A /* SettingLibraryController.swift in Sources */,
|
||||
97242E2B2093B38A00AA4436 /* Preference.swift in Sources */,
|
||||
@ -1634,11 +1718,12 @@
|
||||
97DBCF9D203CA254004EE274 /* SettingExternalLinkController.swift in Sources */,
|
||||
977D7BB81F9E6A43009A8703 /* ZimMultiReader.swift in Sources */,
|
||||
97028C4F20192F65001259CB /* OutlineController.swift in Sources */,
|
||||
970EC39F23BCEBA4008DCA27 /* BookmarkManager.swift in Sources */,
|
||||
97161A861F8FFD1E00A89DE3 /* LibraryCategoryController.swift in Sources */,
|
||||
97E34E0C20124F33005080B2 /* SearchNoTextController.swift in Sources */,
|
||||
97B1046F1F8FC63C00488444 /* LibraryMasterController.swift in Sources */,
|
||||
977D7BBE1F9FC618009A8703 /* Queue.swift in Sources */,
|
||||
97D757E2238B90EC008FB7E2 /* RootSplitController.swift in Sources */,
|
||||
97D757E2238B90EC008FB7E2 /* RootController.swift in Sources */,
|
||||
972B6662200808D6003F5365 /* WelcomeController.swift in Sources */,
|
||||
97252108200F9D6A00B60A80 /* SettingController.swift in Sources */,
|
||||
97A36C2D1F8C21210079B452 /* WebKitHandler.swift in Sources */,
|
||||
@ -1646,6 +1731,7 @@
|
||||
97BAA542202B4C5E00500644 /* SettingBackupController.swift in Sources */,
|
||||
97CA45D2209BB23F008CEA6D /* ZimFileProcessing.swift in Sources */,
|
||||
97A6882E207D3DE300DBBE0D /* ZimFile.swift in Sources */,
|
||||
970EC3A123BCEC84008DCA27 /* Parser.swift in Sources */,
|
||||
971B8E58202246ED00C5C939 /* RecentSearchCells.swift in Sources */,
|
||||
975F97A820D00EAE0005D642 /* SettingSearchController.swift in Sources */,
|
||||
97242E162093A9AC00AA4436 /* Bookmark.swift in Sources */,
|
||||
@ -1699,6 +1785,11 @@
|
||||
/* End PBXSourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXTargetDependency section */
|
||||
970EC3F723BE8E20008DCA27 /* PBXTargetDependency */ = {
|
||||
isa = PBXTargetDependency;
|
||||
target = 97A36C241F8C21210079B452 /* iOS */;
|
||||
targetProxy = 970EC3F623BE8E20008DCA27 /* PBXContainerItemProxy */;
|
||||
};
|
||||
97C575FD202CB0E900E37502 /* PBXTargetDependency */ = {
|
||||
isa = PBXTargetDependency;
|
||||
platformFilter = ios;
|
||||
@ -1743,6 +1834,66 @@
|
||||
/* End PBXVariantGroup section */
|
||||
|
||||
/* Begin XCBuildConfiguration section */
|
||||
970EC3F923BE8E20008DCA27 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
BUNDLE_LOADER = "$(TEST_HOST)";
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
|
||||
CLANG_ENABLE_OBJC_WEAK = YES;
|
||||
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
|
||||
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
DEVELOPMENT_TEAM = L7HWM3SP3L;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu11;
|
||||
INFOPLIST_FILE = ModelTests/Info.plist;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 13.2;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
"@loader_path/Frameworks",
|
||||
);
|
||||
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
|
||||
MTL_FAST_MATH = YES;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = org.kiwix.ModelTests;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
|
||||
SWIFT_VERSION = 5.0;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Kiwix.app/Kiwix";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
970EC3FA23BE8E20008DCA27 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
BUNDLE_LOADER = "$(TEST_HOST)";
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
|
||||
CLANG_ENABLE_OBJC_WEAK = YES;
|
||||
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
|
||||
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
DEVELOPMENT_TEAM = L7HWM3SP3L;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu11;
|
||||
INFOPLIST_FILE = ModelTests/Info.plist;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 13.2;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
"@loader_path/Frameworks",
|
||||
);
|
||||
MTL_FAST_MATH = YES;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = org.kiwix.ModelTests;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_VERSION = 5.0;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Kiwix.app/Kiwix";
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
979315A41E5127940093D3BA /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
@ -1932,7 +2083,6 @@
|
||||
97A36C4C1F8C21210079B452 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ARCHS = "$(ARCHS_STANDARD)";
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon_iOS;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||
@ -1971,7 +2121,6 @@
|
||||
97A36C4D1F8C21210079B452 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ARCHS = "$(ARCHS_STANDARD)";
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon_iOS;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||
@ -2123,6 +2272,15 @@
|
||||
/* End XCBuildConfiguration section */
|
||||
|
||||
/* Begin XCConfigurationList section */
|
||||
970EC3F823BE8E20008DCA27 /* Build configuration list for PBXNativeTarget "ModelTests" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
970EC3F923BE8E20008DCA27 /* Debug */,
|
||||
970EC3FA23BE8E20008DCA27 /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
979315A31E5127940093D3BA /* Build configuration list for PBXNativeTarget "macOS" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
@ -2171,6 +2329,14 @@
|
||||
/* End XCConfigurationList section */
|
||||
|
||||
/* Begin XCRemoteSwiftPackageReference section */
|
||||
970EC3A223BCED7F008DCA27 /* XCRemoteSwiftPackageReference "SwiftSoup" */ = {
|
||||
isa = XCRemoteSwiftPackageReference;
|
||||
repositoryURL = "https://github.com/scinfu/SwiftSoup";
|
||||
requirement = {
|
||||
kind = upToNextMajorVersion;
|
||||
minimumVersion = 2.3.0;
|
||||
};
|
||||
};
|
||||
97CE15B023B26BBC00378D9F /* XCRemoteSwiftPackageReference "SwiftyUserDefaults" */ = {
|
||||
isa = XCRemoteSwiftPackageReference;
|
||||
repositoryURL = "https://github.com/sunshinejr/SwiftyUserDefaults";
|
||||
@ -2183,14 +2349,18 @@
|
||||
isa = XCRemoteSwiftPackageReference;
|
||||
repositoryURL = "https://github.com/realm/realm-cocoa";
|
||||
requirement = {
|
||||
kind = versionRange;
|
||||
maximumVersion = 4.0.0;
|
||||
minimumVersion = 3.0.0;
|
||||
kind = upToNextMajorVersion;
|
||||
minimumVersion = 4.0.0;
|
||||
};
|
||||
};
|
||||
/* End XCRemoteSwiftPackageReference section */
|
||||
|
||||
/* Begin XCSwiftPackageProductDependency section */
|
||||
970EC3A323BCED7F008DCA27 /* SwiftSoup */ = {
|
||||
isa = XCSwiftPackageProductDependency;
|
||||
package = 970EC3A223BCED7F008DCA27 /* XCRemoteSwiftPackageReference "SwiftSoup" */;
|
||||
productName = SwiftSoup;
|
||||
};
|
||||
97CE15B123B26BBC00378D9F /* SwiftyUserDefaults */ = {
|
||||
isa = XCSwiftPackageProductDependency;
|
||||
package = 97CE15B023B26BBC00378D9F /* XCRemoteSwiftPackageReference "SwiftyUserDefaults" */;
|
||||
|
@ -24,8 +24,8 @@
|
||||
"repositoryURL": "https://github.com/realm/realm-cocoa",
|
||||
"state": {
|
||||
"branch": null,
|
||||
"revision": "40732f2ec0cdc32d9d3df8219b2e655deb3077f1",
|
||||
"version": "3.21.0"
|
||||
"revision": "c49cddd98fb37ad57a5703b25c5dd7be387c0180",
|
||||
"version": "4.0.0"
|
||||
}
|
||||
},
|
||||
{
|
||||
@ -37,6 +37,15 @@
|
||||
"version": "5.23.5"
|
||||
}
|
||||
},
|
||||
{
|
||||
"package": "SwiftSoup",
|
||||
"repositoryURL": "https://github.com/scinfu/SwiftSoup",
|
||||
"state": {
|
||||
"branch": null,
|
||||
"revision": "7f187fd8804e63dea89879c95d7c2f7703727d0f",
|
||||
"version": "2.3.0"
|
||||
}
|
||||
},
|
||||
{
|
||||
"package": "SwiftyUserDefaults",
|
||||
"repositoryURL": "https://github.com/sunshinejr/SwiftyUserDefaults",
|
||||
|
@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Scheme
|
||||
LastUpgradeVersion = "1120"
|
||||
LastUpgradeVersion = "1130"
|
||||
version = "1.3">
|
||||
<BuildAction
|
||||
parallelizeBuildables = "YES"
|
||||
@ -28,6 +28,26 @@
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
shouldUseLaunchSchemeArgsEnv = "YES">
|
||||
<Testables>
|
||||
<TestableReference
|
||||
skipped = "NO">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "970EC3B723BE8A11008DCA27"
|
||||
BuildableName = "ModelTest.xctest"
|
||||
BlueprintName = "ModelTest"
|
||||
ReferencedContainer = "container:Kiwix.xcodeproj">
|
||||
</BuildableReference>
|
||||
</TestableReference>
|
||||
<TestableReference
|
||||
skipped = "NO">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "970EC3F023BE8E20008DCA27"
|
||||
BuildableName = "ModelTests.xctest"
|
||||
BlueprintName = "ModelTests"
|
||||
ReferencedContainer = "container:Kiwix.xcodeproj">
|
||||
</BuildableReference>
|
||||
</TestableReference>
|
||||
</Testables>
|
||||
</TestAction>
|
||||
<LaunchAction
|
||||
|
@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Scheme
|
||||
LastUpgradeVersion = "1120"
|
||||
LastUpgradeVersion = "1130"
|
||||
version = "1.3">
|
||||
<BuildAction
|
||||
parallelizeBuildables = "YES"
|
||||
|
39
Model/BookmarkManager.swift
Normal file
39
Model/BookmarkManager.swift
Normal file
@ -0,0 +1,39 @@
|
||||
//
|
||||
// BookmarkManager.swift
|
||||
// Kiwix
|
||||
//
|
||||
// Created by Chris Li on 1/1/20.
|
||||
// Copyright © 2020 Chris Li. All rights reserved.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
import NotificationCenter
|
||||
import RealmSwift
|
||||
|
||||
class BookmarkManager {
|
||||
private let database = try? Realm(configuration: Realm.defaultConfig)
|
||||
|
||||
func updateBookmarkWidgetData() {
|
||||
let bookmarks: [Bookmark] = {
|
||||
var bookmarks = [Bookmark]()
|
||||
if let result = database?.objects(Bookmark.self).sorted(byKeyPath: "date", ascending: false) {
|
||||
for bookmark in result {
|
||||
guard bookmarks.count < 8 else {break}
|
||||
bookmarks.append(bookmark)
|
||||
}
|
||||
}
|
||||
return bookmarks
|
||||
}()
|
||||
let bookmarksData = bookmarks.compactMap { (bookmark) -> [String: Any]? in
|
||||
guard let zimFile = bookmark.zimFile,
|
||||
let url = URL(bookID: zimFile.id, contentPath: bookmark.path) else {return nil}
|
||||
return [
|
||||
"title": bookmark.title,
|
||||
"url": url.absoluteString,
|
||||
"thumbImageData": bookmark.thumbImageData ?? bookmark.zimFile?.icon ?? Data()
|
||||
]
|
||||
}
|
||||
UserDefaults(suiteName: "group.kiwix")?.set(bookmarksData, forKey: "bookmarks")
|
||||
NCWidgetController().setHasContent(bookmarks.count > 0, forWidgetWithBundleIdentifier: "self.Kiwix.Bookmarks")
|
||||
}
|
||||
}
|
39
Model/Parser.swift
Normal file
39
Model/Parser.swift
Normal file
@ -0,0 +1,39 @@
|
||||
//
|
||||
// Parser.swift
|
||||
// Kiwix
|
||||
//
|
||||
// Created by Chris Li on 1/1/20.
|
||||
// Copyright © 2020 Chris Li. All rights reserved.
|
||||
//
|
||||
|
||||
import CoreLocation
|
||||
import SwiftSoup
|
||||
|
||||
class Parser {
|
||||
private let document: Document
|
||||
|
||||
init?(html: String) throws {
|
||||
self.document = try SwiftSoup.parse(html)
|
||||
}
|
||||
|
||||
convenience init?(zimFileId: String, path: String) throws {
|
||||
try self.init(html: "")
|
||||
}
|
||||
|
||||
func getTitle() -> String? {
|
||||
do {
|
||||
let elements = try document.select("head > title")
|
||||
return try elements.first()?.text()
|
||||
} catch { return nil }
|
||||
}
|
||||
|
||||
func getGeoCoordinate() -> CLLocationCoordinate2D? {
|
||||
do {
|
||||
let elements = try document.select("head > meta[name='geo.position']")
|
||||
let content = try elements.first()?.attr("content")
|
||||
guard let parts = content?.split(separator: ";"), parts.count == 2,
|
||||
let lat = Double(parts[0]), let lon = Double(parts[1]) else { return nil }
|
||||
return CLLocationCoordinate2D(latitude: lat, longitude: lon)
|
||||
} catch { return nil }
|
||||
}
|
||||
}
|
22
ModelTests/Info.plist
Normal file
22
ModelTests/Info.plist
Normal file
@ -0,0 +1,22 @@
|
||||
<?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>CFBundleDevelopmentRegion</key>
|
||||
<string>$(DEVELOPMENT_LANGUAGE)</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>$(EXECUTABLE_NAME)</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>$(PRODUCT_NAME)</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>$(PRODUCT_BUNDLE_PACKAGE_TYPE)</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.0</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1</string>
|
||||
</dict>
|
||||
</plist>
|
33
ModelTests/ModelTests.swift
Normal file
33
ModelTests/ModelTests.swift
Normal file
@ -0,0 +1,33 @@
|
||||
//
|
||||
// ModelTests.swift
|
||||
// ModelTests
|
||||
//
|
||||
// Created by Chris Li on 1/2/20.
|
||||
// Copyright © 2020 Chris Li. All rights reserved.
|
||||
//
|
||||
|
||||
import XCTest
|
||||
|
||||
class ModelTests: XCTestCase {
|
||||
|
||||
override func setUp() {
|
||||
// Put setup code here. This method is called before the invocation of each test method in the class.
|
||||
}
|
||||
|
||||
override func tearDown() {
|
||||
// Put teardown code here. This method is called after the invocation of each test method in the class.
|
||||
}
|
||||
|
||||
func testExample() {
|
||||
// This is an example of a functional test case.
|
||||
// Use XCTAssert and related functions to verify your tests produce the correct results.
|
||||
}
|
||||
|
||||
func testPerformanceExample() {
|
||||
// This is an example of a performance test case.
|
||||
measure {
|
||||
// Put the code you want to measure the time of here.
|
||||
}
|
||||
}
|
||||
|
||||
}
|
45
ModelTests/ParserTests.swift
Normal file
45
ModelTests/ParserTests.swift
Normal file
@ -0,0 +1,45 @@
|
||||
//
|
||||
// ParserTest.swift
|
||||
// ParserTest
|
||||
//
|
||||
// Created by Chris Li on 1/1/20.
|
||||
// Copyright © 2020 Chris Li. All rights reserved.
|
||||
//
|
||||
|
||||
import XCTest
|
||||
import CoreLocation
|
||||
|
||||
class TitleTest: XCTestCase {
|
||||
func test() {
|
||||
[
|
||||
("<html><head><title>I am a title!</title></head></html>", "I am a title!"),
|
||||
("<html><head></head></html>", nil),
|
||||
].forEach { html, expected in
|
||||
let parser = try? Parser(html: html)
|
||||
let title = parser?.getTitle()
|
||||
XCTAssert(title == expected)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class GeoCoordinateTest: XCTestCase {
|
||||
func testSuccess() {
|
||||
let html = "<html><head><meta name='geo.position' content='42.10833333;-72.07916667'></head></html>"
|
||||
let parser = try? Parser(html: html)
|
||||
let coordinate = parser?.getGeoCoordinate()
|
||||
assert(coordinate?.latitude == 42.10833333)
|
||||
assert(coordinate?.longitude == -72.07916667)
|
||||
}
|
||||
|
||||
func testFailure() {
|
||||
[
|
||||
"<html><head><meta name='geo.position' content='-72.07916667'></head></html>",
|
||||
"<html><head><meta name='geo.position'></head></html>",
|
||||
"<html><head><h1>I am a header</h1></head></html>"
|
||||
].forEach { html in
|
||||
let parser = try? Parser(html: html)
|
||||
let coordinate = parser?.getGeoCoordinate()
|
||||
XCTAssertNil(coordinate)
|
||||
}
|
||||
}
|
||||
}
|
@ -16,15 +16,8 @@ class AppDelegate: UIResponder, UIApplicationDelegate, DirectoryMonitorDelegate
|
||||
let fileMonitor = DirectoryMonitor(url: URL.documentDirectory)
|
||||
|
||||
func applicationDidFinishLaunching(_ application: UIApplication) {
|
||||
let mainController: UIViewController = {
|
||||
if #available(iOS 13.0, *) {
|
||||
return UIViewController()
|
||||
} else {
|
||||
return UIStoryboard(name: "Main", bundle: nil).instantiateInitialViewController()!
|
||||
}
|
||||
}()
|
||||
window = UIWindow(frame: UIScreen.main.bounds)
|
||||
window?.rootViewController = mainController
|
||||
window?.rootViewController = RootController()
|
||||
window?.makeKeyAndVisible()
|
||||
|
||||
print(URL.documentDirectory)
|
||||
@ -57,19 +50,18 @@ class AppDelegate: UIResponder, UIApplicationDelegate, DirectoryMonitorDelegate
|
||||
|
||||
func application(_ app: UIApplication, open url: URL,
|
||||
options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
|
||||
guard let rootNavigationController = window?.rootViewController as? UINavigationController,
|
||||
let mainController = rootNavigationController.topViewController as? MainController else {return false}
|
||||
window?.rootViewController?.dismiss(animated: false)
|
||||
guard let rootController = window?.rootViewController as? RootController else {return false}
|
||||
rootController.dismiss(animated: false)
|
||||
if url.scheme?.caseInsensitiveCompare("kiwix") == .orderedSame {
|
||||
mainController.load(url: url)
|
||||
rootController.contentViewController.load(url: url)
|
||||
return true
|
||||
} else if url.scheme == "file" {
|
||||
if let _ = ZimMultiReader.getMetaData(url: url) {
|
||||
let canOpenInPlace = options[.openInPlace] as? Bool ?? false
|
||||
let fileImportController = FileImportController(fileURL: url, canOpenInPlace: canOpenInPlace)
|
||||
mainController.present(fileImportController, animated: true)
|
||||
rootController.present(fileImportController, animated: true)
|
||||
} else {
|
||||
mainController.present(FileImportAlertController(fileName: url.lastPathComponent), animated: true)
|
||||
rootController.present(FileImportAlertController(fileName: url.lastPathComponent), animated: true)
|
||||
}
|
||||
return true
|
||||
} else {
|
||||
@ -115,15 +107,14 @@ class AppDelegate: UIResponder, UIApplicationDelegate, DirectoryMonitorDelegate
|
||||
// MARK: - Home Screen Quick Actions
|
||||
|
||||
func application(_ application: UIApplication, performActionFor shortcutItem: UIApplicationShortcutItem, completionHandler: @escaping (Bool) -> Void) {
|
||||
guard let rootNavigationController = window?.rootViewController as? UINavigationController,
|
||||
let mainController = rootNavigationController.topViewController as? MainController,
|
||||
guard let rootController = window?.rootViewController as? RootController,
|
||||
let shortcutItemType = ShortcutItemType(rawValue: shortcutItem.type) else { completionHandler(false); return }
|
||||
switch shortcutItemType {
|
||||
case .search:
|
||||
mainController.shouldShowSearch = true
|
||||
rootController.contentViewController.searchController.isActive = true
|
||||
case .bookmark:
|
||||
mainController.presentedViewController?.dismiss(animated: false)
|
||||
mainController.presentAdaptively(controller: mainController.bookmarkController, animated: true)
|
||||
rootController.dismiss(animated: false)
|
||||
rootController.contentViewController.openBookmark()
|
||||
case .continueReading:
|
||||
break
|
||||
}
|
||||
@ -135,12 +126,12 @@ class AppDelegate: UIResponder, UIApplicationDelegate, DirectoryMonitorDelegate
|
||||
let search = UIApplicationShortcutItem(type: ShortcutItemType.search.rawValue, localizedTitle: NSLocalizedString("Search", comment: "3D Touch Menu Title"))
|
||||
var shortcutItems = [search, bookmark]
|
||||
|
||||
if let rootNavigationController = window?.rootViewController as? UINavigationController,
|
||||
let mainController = rootNavigationController.topViewController as? MainController,
|
||||
let title = mainController.currentWebController?.currentTitle, let url = mainController.currentWebController?.currentURL {
|
||||
if let rootController = window?.rootViewController as? RootController,
|
||||
let title = rootController.contentViewController.currentWebViewController?.title,
|
||||
let url = rootController.contentViewController.currentWebViewController?.currentURL {
|
||||
shortcutItems.append(UIApplicationShortcutItem(type: ShortcutItemType.continueReading.rawValue,
|
||||
localizedTitle: title , localizedSubtitle: NSLocalizedString("Continue Reading", comment: "3D Touch Menu Title"),
|
||||
icon: nil, userInfo: ["URL": url.absoluteString as NSSecureCoding]))
|
||||
localizedTitle: title , localizedSubtitle: NSLocalizedString("Continue Reading", comment: "3D Touch Menu Title"),
|
||||
icon: nil, userInfo: ["URL": url.absoluteString as NSSecureCoding]))
|
||||
}
|
||||
application.shortcutItems = shortcutItems
|
||||
}
|
||||
|
@ -10,6 +10,7 @@
|
||||
"author" : "xcode"
|
||||
},
|
||||
"properties" : {
|
||||
"template-rendering-intent" : "template",
|
||||
"preserves-vector-representation" : true
|
||||
}
|
||||
}
|
@ -2,14 +2,11 @@
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"filename" : "star.pdf"
|
||||
"filename" : "Regular-M.pdf"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
},
|
||||
"properties" : {
|
||||
"preserves-vector-representation" : true
|
||||
}
|
||||
}
|
114
iOS/Assets.xcassets/Star.imageset/Regular-M.pdf
vendored
Normal file
114
iOS/Assets.xcassets/Star.imageset/Regular-M.pdf
vendored
Normal file
@ -0,0 +1,114 @@
|
||||
%PDF-1.7
|
||||
|
||||
1 0 obj
|
||||
<< >>
|
||||
endobj
|
||||
|
||||
2 0 obj
|
||||
<< /Length 3 0 R >>
|
||||
stream
|
||||
/DeviceRGB CS
|
||||
/DeviceRGB cs
|
||||
q
|
||||
1.000000 0.000000 -0.000000 1.000000 0.000000 -0.160767 cm
|
||||
0.000000 0.000000 0.000000 scn
|
||||
5.019138 0.376961 m
|
||||
5.502104 0.000021 6.114616 0.129591 6.844951 0.659670 c
|
||||
13.076244 5.241846 l
|
||||
19.319309 0.659670 l
|
||||
20.049620 0.129591 20.650360 0.000021 21.145098 0.376961 c
|
||||
21.628063 0.742128 21.734114 1.342865 21.439583 2.190989 c
|
||||
18.977688 9.529544 l
|
||||
25.267818 14.041026 l
|
||||
25.998299 14.559334 26.292614 15.112959 26.104204 15.690153 c
|
||||
25.915794 16.267349 25.362146 16.550035 24.455078 16.538261 c
|
||||
16.739618 16.479374 l
|
||||
14.395521 23.853262 l
|
||||
14.112810 24.713142 13.688757 25.160767 13.076244 25.160767 c
|
||||
12.475481 25.160767 12.051426 24.713142 11.768715 23.853262 c
|
||||
9.424619 16.479374 l
|
||||
1.709136 16.538261 l
|
||||
0.802116 16.550035 0.248490 16.267349 0.060032 15.690153 c
|
||||
-0.140222 15.112959 0.166034 14.559334 0.896368 14.041026 c
|
||||
7.186549 9.529544 l
|
||||
4.724655 2.190989 l
|
||||
4.430171 1.342865 4.536197 0.742128 5.019138 0.376961 c
|
||||
h
|
||||
6.715380 2.697504 m
|
||||
6.691810 2.732841 6.703583 2.744619 6.715380 2.815296 c
|
||||
9.059476 9.541316 l
|
||||
9.224388 10.000712 9.130136 10.377653 8.717877 10.660364 c
|
||||
2.851727 14.712474 l
|
||||
2.792840 14.747791 2.781068 14.771361 2.792840 14.794907 c
|
||||
2.804613 14.830248 2.828182 14.830248 2.898866 14.830248 c
|
||||
10.025382 14.712474 l
|
||||
10.508324 14.700677 10.814604 14.889160 10.967720 15.372101 c
|
||||
13.017333 22.192360 l
|
||||
13.029105 22.263044 13.052675 22.286591 13.076244 22.286591 c
|
||||
13.111562 22.286591 13.135132 22.263044 13.146904 22.192360 c
|
||||
15.196517 15.372101 l
|
||||
15.349657 14.889160 15.655911 14.700677 16.138878 14.712474 c
|
||||
23.265274 14.830248 l
|
||||
23.335958 14.830248 23.359598 14.830248 23.371420 14.794907 c
|
||||
23.383240 14.771361 23.359600 14.747791 23.312557 14.712474 c
|
||||
17.446383 10.660364 l
|
||||
17.034100 10.377653 16.939871 10.000712 17.104784 9.541316 c
|
||||
19.448881 2.815296 l
|
||||
19.460653 2.744619 19.472425 2.732841 19.448881 2.697504 c
|
||||
19.425312 2.673944 19.389971 2.685724 19.342855 2.721062 c
|
||||
13.676983 7.044081 l
|
||||
13.300043 7.338564 12.864192 7.338564 12.487277 7.044081 c
|
||||
6.821381 2.721062 l
|
||||
6.774267 2.685724 6.738925 2.673944 6.715380 2.697504 c
|
||||
h
|
||||
f
|
||||
n
|
||||
Q
|
||||
|
||||
endstream
|
||||
endobj
|
||||
|
||||
3 0 obj
|
||||
2090
|
||||
endobj
|
||||
|
||||
4 0 obj
|
||||
<< /Annots []
|
||||
/Type /Page
|
||||
/MediaBox [ 0.000000 0.000000 26.159668 25.000000 ]
|
||||
/Resources 1 0 R
|
||||
/Contents 2 0 R
|
||||
/Parent 5 0 R
|
||||
>>
|
||||
endobj
|
||||
|
||||
5 0 obj
|
||||
<< /Kids [ 4 0 R ]
|
||||
/Count 1
|
||||
/Type /Pages
|
||||
>>
|
||||
endobj
|
||||
|
||||
6 0 obj
|
||||
<< /Type /Catalog
|
||||
/Pages 5 0 R
|
||||
>>
|
||||
endobj
|
||||
|
||||
xref
|
||||
0 7
|
||||
0000000000 65535 f
|
||||
0000000010 00000 n
|
||||
0000000034 00000 n
|
||||
0000002180 00000 n
|
||||
0000002203 00000 n
|
||||
0000002376 00000 n
|
||||
0000002450 00000 n
|
||||
trailer
|
||||
<< /ID [ (some) (id) ]
|
||||
/Root 6 0 R
|
||||
/Size 7
|
||||
>>
|
||||
startxref
|
||||
2509
|
||||
%%EOF
|
BIN
iOS/Assets.xcassets/Star.imageset/star.pdf
vendored
BIN
iOS/Assets.xcassets/Star.imageset/star.pdf
vendored
Binary file not shown.
12
iOS/Assets.xcassets/chevron.left.imageset/Contents.json
vendored
Normal file
12
iOS/Assets.xcassets/chevron.left.imageset/Contents.json
vendored
Normal file
@ -0,0 +1,12 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"filename" : "Regular-M.pdf"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
}
|
||||
}
|
79
iOS/Assets.xcassets/chevron.left.imageset/Regular-M.pdf
vendored
Normal file
79
iOS/Assets.xcassets/chevron.left.imageset/Regular-M.pdf
vendored
Normal file
@ -0,0 +1,79 @@
|
||||
%PDF-1.7
|
||||
|
||||
1 0 obj
|
||||
<< >>
|
||||
endobj
|
||||
|
||||
2 0 obj
|
||||
<< /Length 3 0 R >>
|
||||
stream
|
||||
/DeviceRGB CS
|
||||
/DeviceRGB cs
|
||||
q
|
||||
1.000000 0.000000 -0.000000 1.000000 0.000000 0.000000 cm
|
||||
0.000000 0.000000 0.000000 scn
|
||||
10.411055 0.341969 m
|
||||
10.626374 0.126656 10.905011 -0.000002 11.234307 -0.000002 c
|
||||
11.892923 -0.000002 12.386880 0.493956 12.386880 1.152561 c
|
||||
12.386880 1.469202 12.260221 1.760506 12.057559 1.975821 c
|
||||
2.837077 10.993670 l
|
||||
12.057559 20.011517 l
|
||||
12.260221 20.226837 12.386880 20.530815 12.386880 20.834793 c
|
||||
12.386880 21.493385 11.892923 22.000000 11.234307 22.000000 c
|
||||
10.905011 22.000000 10.626374 21.873365 10.411055 21.658047 c
|
||||
0.379955 11.842264 l
|
||||
0.139319 11.639604 0.000000 11.322966 0.000000 10.993670 c
|
||||
0.000000 10.677033 0.126660 10.385738 0.367296 10.145077 c
|
||||
10.411055 0.341969 l
|
||||
h
|
||||
f
|
||||
n
|
||||
Q
|
||||
|
||||
endstream
|
||||
endobj
|
||||
|
||||
3 0 obj
|
||||
717
|
||||
endobj
|
||||
|
||||
4 0 obj
|
||||
<< /Annots []
|
||||
/Type /Page
|
||||
/MediaBox [ 0.000000 0.000000 12.386719 22.000000 ]
|
||||
/Resources 1 0 R
|
||||
/Contents 2 0 R
|
||||
/Parent 5 0 R
|
||||
>>
|
||||
endobj
|
||||
|
||||
5 0 obj
|
||||
<< /Kids [ 4 0 R ]
|
||||
/Count 1
|
||||
/Type /Pages
|
||||
>>
|
||||
endobj
|
||||
|
||||
6 0 obj
|
||||
<< /Type /Catalog
|
||||
/Pages 5 0 R
|
||||
>>
|
||||
endobj
|
||||
|
||||
xref
|
||||
0 7
|
||||
0000000000 65535 f
|
||||
0000000010 00000 n
|
||||
0000000034 00000 n
|
||||
0000000807 00000 n
|
||||
0000000829 00000 n
|
||||
0000001002 00000 n
|
||||
0000001076 00000 n
|
||||
trailer
|
||||
<< /ID [ (some) (id) ]
|
||||
/Root 6 0 R
|
||||
/Size 7
|
||||
>>
|
||||
startxref
|
||||
1135
|
||||
%%EOF
|
12
iOS/Assets.xcassets/chevron.right.imageset/Contents.json
vendored
Normal file
12
iOS/Assets.xcassets/chevron.right.imageset/Contents.json
vendored
Normal file
@ -0,0 +1,12 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"filename" : "Regular-M.pdf"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
}
|
||||
}
|
79
iOS/Assets.xcassets/chevron.right.imageset/Regular-M.pdf
vendored
Normal file
79
iOS/Assets.xcassets/chevron.right.imageset/Regular-M.pdf
vendored
Normal file
@ -0,0 +1,79 @@
|
||||
%PDF-1.7
|
||||
|
||||
1 0 obj
|
||||
<< >>
|
||||
endobj
|
||||
|
||||
2 0 obj
|
||||
<< /Length 3 0 R >>
|
||||
stream
|
||||
/DeviceRGB CS
|
||||
/DeviceRGB cs
|
||||
q
|
||||
1.000000 0.000000 -0.000000 1.000000 0.000000 0.000000 cm
|
||||
0.000000 0.000000 0.000000 scn
|
||||
1.151884 0.000002 m
|
||||
1.481016 0.000002 1.759492 0.126581 1.974688 0.341770 c
|
||||
12.012670 10.151897 l
|
||||
12.253167 10.392422 12.379754 10.683548 12.379754 11.000004 c
|
||||
12.379754 11.329109 12.253167 11.632914 12.012670 11.848109 c
|
||||
1.987339 21.645592 l
|
||||
1.759493 21.873438 1.481016 22.000000 1.151884 22.000000 c
|
||||
0.493672 22.000000 0.000000 21.493675 0.000000 20.835464 c
|
||||
0.000000 20.531660 0.126587 20.227858 0.329106 20.012661 c
|
||||
9.544310 11.000004 l
|
||||
0.329106 1.987343 l
|
||||
0.126587 1.772152 0.000000 1.481014 0.000000 1.164557 c
|
||||
0.000000 0.506329 0.493672 0.000002 1.151884 0.000002 c
|
||||
h
|
||||
f
|
||||
n
|
||||
Q
|
||||
|
||||
endstream
|
||||
endobj
|
||||
|
||||
3 0 obj
|
||||
700
|
||||
endobj
|
||||
|
||||
4 0 obj
|
||||
<< /Annots []
|
||||
/Type /Page
|
||||
/MediaBox [ 0.000000 0.000000 12.379761 22.000000 ]
|
||||
/Resources 1 0 R
|
||||
/Contents 2 0 R
|
||||
/Parent 5 0 R
|
||||
>>
|
||||
endobj
|
||||
|
||||
5 0 obj
|
||||
<< /Kids [ 4 0 R ]
|
||||
/Count 1
|
||||
/Type /Pages
|
||||
>>
|
||||
endobj
|
||||
|
||||
6 0 obj
|
||||
<< /Type /Catalog
|
||||
/Pages 5 0 R
|
||||
>>
|
||||
endobj
|
||||
|
||||
xref
|
||||
0 7
|
||||
0000000000 65535 f
|
||||
0000000010 00000 n
|
||||
0000000034 00000 n
|
||||
0000000790 00000 n
|
||||
0000000812 00000 n
|
||||
0000000985 00000 n
|
||||
0000001059 00000 n
|
||||
trailer
|
||||
<< /ID [ (some) (id) ]
|
||||
/Root 6 0 R
|
||||
/Size 7
|
||||
>>
|
||||
startxref
|
||||
1118
|
||||
%%EOF
|
12
iOS/Assets.xcassets/folder.imageset/Contents.json
vendored
Normal file
12
iOS/Assets.xcassets/folder.imageset/Contents.json
vendored
Normal file
@ -0,0 +1,12 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"filename" : "Regular-M.pdf"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
}
|
||||
}
|
99
iOS/Assets.xcassets/folder.imageset/Regular-M.pdf
vendored
Normal file
99
iOS/Assets.xcassets/folder.imageset/Regular-M.pdf
vendored
Normal file
@ -0,0 +1,99 @@
|
||||
%PDF-1.7
|
||||
|
||||
1 0 obj
|
||||
<< >>
|
||||
endobj
|
||||
|
||||
2 0 obj
|
||||
<< /Length 3 0 R >>
|
||||
stream
|
||||
/DeviceRGB CS
|
||||
/DeviceRGB cs
|
||||
q
|
||||
1.000000 0.000000 -0.000000 1.000000 0.000000 0.000000 cm
|
||||
0.000000 0.000000 0.000000 scn
|
||||
3.721974 0.000000 m
|
||||
23.849039 0.000000 l
|
||||
25.982643 0.000000 27.215614 1.232756 27.215614 3.674564 c
|
||||
27.215614 16.156242 l
|
||||
27.215614 18.598055 25.970991 19.818960 23.493639 19.818960 c
|
||||
11.960133 19.818960 l
|
||||
11.154077 19.818960 10.679945 20.020473 10.087275 20.518322 c
|
||||
9.364218 21.122841 l
|
||||
8.581880 21.774769 7.965516 22.000000 6.803868 22.000000 c
|
||||
3.271536 22.000000 l
|
||||
1.197188 22.000000 0.000000 20.814659 0.000000 18.420258 c
|
||||
0.000000 3.674564 l
|
||||
0.000000 1.220901 1.244599 0.000000 3.721974 0.000000 c
|
||||
h
|
||||
1.908398 18.325438 m
|
||||
1.908398 19.498907 2.524786 20.091578 3.662717 20.091578 c
|
||||
6.306018 20.091578 l
|
||||
7.100203 20.091578 7.574335 19.901936 8.178877 19.380392 c
|
||||
8.901934 18.787722 l
|
||||
9.672400 18.147615 10.300635 17.910563 11.474130 17.910563 c
|
||||
23.469849 17.910563 l
|
||||
24.643343 17.910563 25.307045 17.282326 25.307045 16.049574 c
|
||||
25.307045 15.338366 l
|
||||
1.908398 15.338366 l
|
||||
1.908398 18.325438 l
|
||||
h
|
||||
3.745692 1.908401 m
|
||||
2.560326 1.908401 1.908398 2.536634 1.908398 3.769394 c
|
||||
1.908398 13.548481 l
|
||||
25.307045 13.548481 l
|
||||
25.307045 3.757540 l
|
||||
25.307045 2.536634 24.643343 1.908401 23.469849 1.908401 c
|
||||
3.745692 1.908401 l
|
||||
h
|
||||
f
|
||||
n
|
||||
Q
|
||||
|
||||
endstream
|
||||
endobj
|
||||
|
||||
3 0 obj
|
||||
1244
|
||||
endobj
|
||||
|
||||
4 0 obj
|
||||
<< /Annots []
|
||||
/Type /Page
|
||||
/MediaBox [ 0.000000 0.000000 27.215576 22.000000 ]
|
||||
/Resources 1 0 R
|
||||
/Contents 2 0 R
|
||||
/Parent 5 0 R
|
||||
>>
|
||||
endobj
|
||||
|
||||
5 0 obj
|
||||
<< /Kids [ 4 0 R ]
|
||||
/Count 1
|
||||
/Type /Pages
|
||||
>>
|
||||
endobj
|
||||
|
||||
6 0 obj
|
||||
<< /Type /Catalog
|
||||
/Pages 5 0 R
|
||||
>>
|
||||
endobj
|
||||
|
||||
xref
|
||||
0 7
|
||||
0000000000 65535 f
|
||||
0000000010 00000 n
|
||||
0000000034 00000 n
|
||||
0000001334 00000 n
|
||||
0000001357 00000 n
|
||||
0000001530 00000 n
|
||||
0000001604 00000 n
|
||||
trailer
|
||||
<< /ID [ (some) (id) ]
|
||||
/Root 6 0 R
|
||||
/Size 7
|
||||
>>
|
||||
startxref
|
||||
1663
|
||||
%%EOF
|
12
iOS/Assets.xcassets/gear.imageset/Contents.json
vendored
Normal file
12
iOS/Assets.xcassets/gear.imageset/Contents.json
vendored
Normal file
@ -0,0 +1,12 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"filename" : "Regular-M.pdf"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
}
|
||||
}
|
189
iOS/Assets.xcassets/gear.imageset/Regular-M.pdf
vendored
Normal file
189
iOS/Assets.xcassets/gear.imageset/Regular-M.pdf
vendored
Normal file
@ -0,0 +1,189 @@
|
||||
%PDF-1.7
|
||||
|
||||
1 0 obj
|
||||
<< >>
|
||||
endobj
|
||||
|
||||
2 0 obj
|
||||
<< /Length 3 0 R >>
|
||||
stream
|
||||
/DeviceRGB CS
|
||||
/DeviceRGB cs
|
||||
q
|
||||
1.000000 0.000000 -0.000000 1.000000 0.000000 -0.072388 cm
|
||||
0.000000 0.000000 0.000000 scn
|
||||
12.682625 1.601536 m
|
||||
12.975467 1.601536 13.257051 1.635330 13.561172 1.657845 c
|
||||
14.203189 0.418865 l
|
||||
14.327085 0.171074 14.574876 0.035919 14.890255 0.080971 c
|
||||
15.171841 0.137278 15.363324 0.340019 15.408375 0.644142 c
|
||||
15.599858 2.007015 l
|
||||
16.163029 2.153448 16.714941 2.367441 17.244318 2.603975 c
|
||||
18.258020 1.691637 l
|
||||
18.472040 1.488897 18.742344 1.443846 19.023930 1.601536 c
|
||||
19.271744 1.736689 19.373102 2.007017 19.316795 2.299864 c
|
||||
19.035210 3.651474 l
|
||||
19.508255 3.978113 19.970068 4.349806 20.386805 4.766554 c
|
||||
21.637041 4.237171 l
|
||||
21.918695 4.124538 22.189045 4.180855 22.402882 4.439913 c
|
||||
22.594341 4.642654 22.616947 4.935505 22.448093 5.183302 c
|
||||
21.715931 6.354696 l
|
||||
22.053869 6.827757 22.324221 7.334618 22.583269 7.875252 c
|
||||
23.968473 7.807686 l
|
||||
24.261431 7.796406 24.497871 7.954096 24.599369 8.235682 c
|
||||
24.689333 8.517265 24.610672 8.787596 24.374001 8.967821 c
|
||||
23.292826 9.823833 l
|
||||
23.439304 10.364491 23.551874 10.950173 23.608158 11.558394 c
|
||||
24.903399 11.963876 l
|
||||
25.196356 12.065257 25.365210 12.279254 25.365210 12.583377 c
|
||||
25.365210 12.876219 25.196356 13.090239 24.903399 13.191597 c
|
||||
23.608158 13.608357 l
|
||||
23.551874 14.216578 23.439304 14.779749 23.292826 15.331662 c
|
||||
24.374001 16.198931 l
|
||||
24.599369 16.367878 24.689333 16.626949 24.599369 16.908535 c
|
||||
24.497871 17.190119 24.261431 17.347809 23.968473 17.336552 c
|
||||
22.583269 17.280220 l
|
||||
22.324221 17.820877 22.053869 18.327717 21.715931 18.800785 c
|
||||
22.448093 19.972176 l
|
||||
22.605644 20.208710 22.583269 20.501575 22.402882 20.704317 c
|
||||
22.189045 20.963364 21.918695 21.030952 21.637041 20.907057 c
|
||||
20.386805 20.400192 l
|
||||
19.970068 20.794416 19.508255 21.177383 19.035210 21.504021 c
|
||||
19.316795 22.844358 l
|
||||
19.373102 23.148479 19.271744 23.418785 19.023930 23.553961 c
|
||||
18.742344 23.700394 18.472040 23.677855 18.258020 23.452578 c
|
||||
17.244318 22.562773 l
|
||||
16.714941 22.799307 16.163029 22.990789 15.599858 23.148479 c
|
||||
15.408375 24.511354 l
|
||||
15.363324 24.804197 15.160583 25.018194 14.878999 25.063269 c
|
||||
14.574877 25.108318 14.327085 24.984423 14.203189 24.736609 c
|
||||
13.561172 23.497629 l
|
||||
13.257051 23.520166 12.975467 23.542704 12.682625 23.542704 c
|
||||
12.378502 23.542704 12.108198 23.520166 11.804076 23.497629 c
|
||||
11.150804 24.736609 l
|
||||
11.026908 24.984423 10.779117 25.108318 10.474995 25.063269 c
|
||||
10.193409 25.018194 9.990669 24.804197 9.956876 24.511354 c
|
||||
9.754135 23.159737 l
|
||||
9.190965 22.990791 8.650309 22.799307 8.109675 22.562773 c
|
||||
7.095973 23.452578 l
|
||||
6.881953 23.677855 6.611625 23.700394 6.330040 23.553961 c
|
||||
6.082249 23.418785 5.980891 23.148479 6.037199 22.844358 c
|
||||
6.318784 21.504021 l
|
||||
5.856995 21.177383 5.383926 20.794416 4.967165 20.400192 c
|
||||
3.716930 20.907057 l
|
||||
3.435345 21.030952 3.176297 20.963364 2.962277 20.704317 c
|
||||
2.770816 20.501575 2.748279 20.208712 2.905969 19.983458 c
|
||||
3.638085 18.800785 l
|
||||
3.311449 18.327717 3.029865 17.820877 2.770816 17.280220 c
|
||||
1.396662 17.336552 l
|
||||
1.103820 17.347809 0.856028 17.190119 0.754647 16.908535 c
|
||||
0.664545 16.626949 0.743390 16.367878 0.979924 16.198931 c
|
||||
2.061213 15.331662 l
|
||||
1.914781 14.779749 1.802142 14.216578 1.768348 13.608357 c
|
||||
0.450548 13.191597 l
|
||||
0.157690 13.101496 0.000000 12.887499 0.000000 12.583377 c
|
||||
0.000000 12.279254 0.157690 12.065257 0.450548 11.963876 c
|
||||
1.768348 11.547138 l
|
||||
1.802142 10.950174 1.914781 10.364491 2.061213 9.823833 c
|
||||
0.979924 8.967821 l
|
||||
0.754647 8.787596 0.675802 8.517265 0.754647 8.235682 c
|
||||
0.856028 7.954096 1.103820 7.796406 1.396662 7.807686 c
|
||||
2.770816 7.875252 l
|
||||
3.029865 7.334618 3.311449 6.827757 3.638085 6.354696 c
|
||||
2.905969 5.183302 l
|
||||
2.748279 4.935505 2.770816 4.642654 2.962277 4.439913 c
|
||||
3.176297 4.180855 3.435345 4.124538 3.716930 4.237171 c
|
||||
4.967165 4.766554 l
|
||||
5.383926 4.349806 5.856995 3.978113 6.318784 3.651474 c
|
||||
6.037199 2.299864 l
|
||||
5.980891 2.007017 6.082249 1.736689 6.330040 1.601536 c
|
||||
6.611625 1.443846 6.881953 1.488897 7.095973 1.691637 c
|
||||
8.109675 2.603975 l
|
||||
8.650309 2.367441 9.190965 2.153448 9.754135 2.007015 c
|
||||
9.956876 0.644142 l
|
||||
9.990669 0.340019 10.193409 0.137278 10.474995 0.080971 c
|
||||
10.779117 0.035919 11.026908 0.171074 11.150804 0.418865 c
|
||||
11.804076 1.657845 l
|
||||
12.096918 1.635330 12.378502 1.601536 12.682625 1.601536 c
|
||||
h
|
||||
15.509756 13.292979 m
|
||||
14.991637 14.712161 13.944140 15.489328 12.660088 15.489328 c
|
||||
12.457348 15.489328 12.243350 15.466815 11.871663 15.387970 c
|
||||
8.639051 20.907057 l
|
||||
9.855494 21.504021 11.218369 21.830656 12.682625 21.830656 c
|
||||
17.593489 21.830656 21.445581 18.102463 21.805895 13.292979 c
|
||||
15.509756 13.292979 l
|
||||
h
|
||||
3.536727 12.572119 m
|
||||
3.536727 15.703349 5.023496 18.462893 7.343765 20.129866 c
|
||||
10.610147 14.577008 l
|
||||
9.990669 13.946250 9.709085 13.259185 9.709085 12.527068 c
|
||||
9.709085 11.817466 9.979412 11.164170 10.598890 10.510899 c
|
||||
7.276177 5.059404 l
|
||||
4.989703 6.737656 3.536727 9.463404 3.536727 12.572119 c
|
||||
h
|
||||
11.308493 12.538325 m
|
||||
11.308493 13.304235 11.950508 13.901199 12.682625 13.901199 c
|
||||
13.437278 13.901199 14.068036 13.304235 14.068036 12.538325 c
|
||||
14.068036 11.783671 13.437278 11.164171 12.682625 11.164171 c
|
||||
11.950508 11.164171 11.308493 11.783671 11.308493 12.538325 c
|
||||
h
|
||||
12.682625 3.313572 m
|
||||
11.184597 3.313572 9.787930 3.662737 8.560207 4.270962 c
|
||||
11.871663 9.688682 l
|
||||
12.220837 9.598557 12.457348 9.576042 12.660088 9.576042 c
|
||||
13.955398 9.576042 15.002894 10.375747 15.509756 11.828723 c
|
||||
21.794823 11.828723 l
|
||||
21.434277 7.041777 17.593489 3.313572 12.682625 3.313572 c
|
||||
h
|
||||
f
|
||||
n
|
||||
Q
|
||||
|
||||
endstream
|
||||
endobj
|
||||
|
||||
3 0 obj
|
||||
5427
|
||||
endobj
|
||||
|
||||
4 0 obj
|
||||
<< /Annots []
|
||||
/Type /Page
|
||||
/MediaBox [ 0.000000 0.000000 25.365234 25.000000 ]
|
||||
/Resources 1 0 R
|
||||
/Contents 2 0 R
|
||||
/Parent 5 0 R
|
||||
>>
|
||||
endobj
|
||||
|
||||
5 0 obj
|
||||
<< /Kids [ 4 0 R ]
|
||||
/Count 1
|
||||
/Type /Pages
|
||||
>>
|
||||
endobj
|
||||
|
||||
6 0 obj
|
||||
<< /Type /Catalog
|
||||
/Pages 5 0 R
|
||||
>>
|
||||
endobj
|
||||
|
||||
xref
|
||||
0 7
|
||||
0000000000 65535 f
|
||||
0000000010 00000 n
|
||||
0000000034 00000 n
|
||||
0000005517 00000 n
|
||||
0000005540 00000 n
|
||||
0000005713 00000 n
|
||||
0000005787 00000 n
|
||||
trailer
|
||||
<< /ID [ (some) (id) ]
|
||||
/Root 6 0 R
|
||||
/Size 7
|
||||
>>
|
||||
startxref
|
||||
5846
|
||||
%%EOF
|
12
iOS/Assets.xcassets/list.bullet.imageset/Contents.json
vendored
Normal file
12
iOS/Assets.xcassets/list.bullet.imageset/Contents.json
vendored
Normal file
@ -0,0 +1,12 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"filename" : "Regular-M.pdf"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
}
|
||||
}
|
107
iOS/Assets.xcassets/list.bullet.imageset/Regular-M.pdf
vendored
Normal file
107
iOS/Assets.xcassets/list.bullet.imageset/Regular-M.pdf
vendored
Normal file
@ -0,0 +1,107 @@
|
||||
%PDF-1.7
|
||||
|
||||
1 0 obj
|
||||
<< >>
|
||||
endobj
|
||||
|
||||
2 0 obj
|
||||
<< /Length 3 0 R >>
|
||||
stream
|
||||
/DeviceRGB CS
|
||||
/DeviceRGB cs
|
||||
q
|
||||
1.000000 0.000000 -0.000000 1.000000 0.000000 0.000000 cm
|
||||
0.000000 0.000000 0.000000 scn
|
||||
1.375671 13.210924 m
|
||||
2.139945 13.210924 2.751364 13.822323 2.751364 14.575685 c
|
||||
2.751364 15.339936 2.139945 15.951355 1.375671 15.951355 c
|
||||
0.611397 15.951355 0.000000 15.339936 0.000000 14.575685 c
|
||||
0.000000 13.822323 0.611397 13.210924 1.375671 13.210924 c
|
||||
h
|
||||
6.201465 13.702225 m
|
||||
21.115652 13.702225 l
|
||||
21.606907 13.702225 22.000000 14.084362 22.000000 14.575685 c
|
||||
22.000000 15.077919 21.606907 15.460032 21.115652 15.460032 c
|
||||
6.201465 15.460032 l
|
||||
5.699253 15.460032 5.317116 15.077919 5.317116 14.575685 c
|
||||
5.317116 14.084362 5.699253 13.702225 6.201465 13.702225 c
|
||||
h
|
||||
1.375671 6.605455 m
|
||||
2.139945 6.605455 2.751364 7.216874 2.751364 7.981148 c
|
||||
2.751364 8.745399 2.139945 9.356819 1.375671 9.356819 c
|
||||
0.611397 9.356819 0.000000 8.745399 0.000000 7.981148 c
|
||||
0.000000 7.216874 0.611397 6.605455 1.375671 6.605455 c
|
||||
h
|
||||
6.201465 7.096777 m
|
||||
21.115652 7.096777 l
|
||||
21.606907 7.096777 22.000000 7.489826 22.000000 7.981148 c
|
||||
22.000000 8.472448 21.606907 8.854586 21.115652 8.854586 c
|
||||
6.201465 8.854586 l
|
||||
5.699253 8.854586 5.317116 8.472448 5.317116 7.981148 c
|
||||
5.317116 7.489826 5.699253 7.096777 6.201465 7.096777 c
|
||||
h
|
||||
1.375671 0.000012 m
|
||||
2.139945 0.000012 2.751364 0.622344 2.751364 1.375692 c
|
||||
2.751364 2.139960 2.139945 2.751371 1.375671 2.751371 c
|
||||
0.611397 2.751371 0.000000 2.139960 0.000000 1.375692 c
|
||||
0.000000 0.622344 0.611397 0.000012 1.375671 0.000012 c
|
||||
h
|
||||
6.201465 0.502245 m
|
||||
21.115652 0.502245 l
|
||||
21.606907 0.502245 22.000000 0.884379 22.000000 1.375692 c
|
||||
22.000000 1.877927 21.606907 2.260058 21.115652 2.260058 c
|
||||
6.201465 2.260058 l
|
||||
5.699253 2.260058 5.317116 1.877927 5.317116 1.375692 c
|
||||
5.317116 0.884379 5.699253 0.502245 6.201465 0.502245 c
|
||||
h
|
||||
f
|
||||
n
|
||||
Q
|
||||
|
||||
endstream
|
||||
endobj
|
||||
|
||||
3 0 obj
|
||||
1770
|
||||
endobj
|
||||
|
||||
4 0 obj
|
||||
<< /Annots []
|
||||
/Type /Page
|
||||
/MediaBox [ 0.000000 0.000000 22.000000 15.951355 ]
|
||||
/Resources 1 0 R
|
||||
/Contents 2 0 R
|
||||
/Parent 5 0 R
|
||||
>>
|
||||
endobj
|
||||
|
||||
5 0 obj
|
||||
<< /Kids [ 4 0 R ]
|
||||
/Count 1
|
||||
/Type /Pages
|
||||
>>
|
||||
endobj
|
||||
|
||||
6 0 obj
|
||||
<< /Type /Catalog
|
||||
/Pages 5 0 R
|
||||
>>
|
||||
endobj
|
||||
|
||||
xref
|
||||
0 7
|
||||
0000000000 65535 f
|
||||
0000000010 00000 n
|
||||
0000000034 00000 n
|
||||
0000001860 00000 n
|
||||
0000001883 00000 n
|
||||
0000002056 00000 n
|
||||
0000002130 00000 n
|
||||
trailer
|
||||
<< /ID [ (some) (id) ]
|
||||
/Root 6 0 R
|
||||
/Size 7
|
||||
>>
|
||||
startxref
|
||||
2189
|
||||
%%EOF
|
12
iOS/Assets.xcassets/sidebar.left.imageset/Contents.json
vendored
Normal file
12
iOS/Assets.xcassets/sidebar.left.imageset/Contents.json
vendored
Normal file
@ -0,0 +1,12 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"filename" : "Regular-M.pdf"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
}
|
||||
}
|
115
iOS/Assets.xcassets/sidebar.left.imageset/Regular-M.pdf
vendored
Normal file
115
iOS/Assets.xcassets/sidebar.left.imageset/Regular-M.pdf
vendored
Normal file
@ -0,0 +1,115 @@
|
||||
%PDF-1.7
|
||||
|
||||
1 0 obj
|
||||
<< >>
|
||||
endobj
|
||||
|
||||
2 0 obj
|
||||
<< /Length 3 0 R >>
|
||||
stream
|
||||
/DeviceRGB CS
|
||||
/DeviceRGB cs
|
||||
q
|
||||
1.000000 0.000000 -0.000000 1.000000 0.000000 0.000000 cm
|
||||
0.000000 0.000000 0.000000 scn
|
||||
3.752299 0.000000 m
|
||||
24.425873 0.000000 l
|
||||
26.935400 0.000000 28.178171 1.242802 28.178171 3.704506 c
|
||||
28.178171 18.295473 l
|
||||
28.178171 20.757179 26.935400 22.000000 24.425873 22.000000 c
|
||||
3.752299 22.000000 l
|
||||
1.254739 22.000000 0.000000 20.769146 0.000000 18.295473 c
|
||||
0.000000 3.704506 l
|
||||
0.000000 1.230852 1.254739 0.000000 3.752299 0.000000 c
|
||||
h
|
||||
3.776210 1.923952 m
|
||||
2.581187 1.923952 1.923947 2.557302 1.923947 3.800106 c
|
||||
1.923947 18.199881 l
|
||||
1.923947 19.442677 2.581187 20.076029 3.776210 20.076029 c
|
||||
9.105909 20.076029 l
|
||||
9.105909 1.923952 l
|
||||
3.776210 1.923952 l
|
||||
h
|
||||
24.401888 20.076029 m
|
||||
25.584944 20.076029 26.254299 19.442677 26.254299 18.199881 c
|
||||
26.254299 3.800106 l
|
||||
26.254299 2.557302 25.584944 1.923952 24.401888 1.923952 c
|
||||
10.982059 1.923952 l
|
||||
10.982059 20.076029 l
|
||||
24.401888 20.076029 l
|
||||
h
|
||||
6.799563 15.642579 m
|
||||
7.169996 15.642579 7.480713 15.965240 7.480713 16.311787 c
|
||||
7.480713 16.670277 7.169996 16.980968 6.799563 16.980968 c
|
||||
4.242262 16.980968 l
|
||||
3.883747 16.980968 3.561112 16.670277 3.561112 16.311787 c
|
||||
3.561112 15.965240 3.883747 15.642579 4.242262 15.642579 c
|
||||
6.799563 15.642579 l
|
||||
h
|
||||
6.799563 12.547520 m
|
||||
7.169996 12.547520 7.480713 12.870181 7.480713 13.228671 c
|
||||
7.480713 13.587185 7.169996 13.885934 6.799563 13.885934 c
|
||||
4.242262 13.885934 l
|
||||
3.883747 13.885934 3.561112 13.587185 3.561112 13.228671 c
|
||||
3.561112 12.870181 3.883747 12.547520 4.242262 12.547520 c
|
||||
6.799563 12.547520 l
|
||||
h
|
||||
6.799563 9.464404 m
|
||||
7.169996 9.464404 7.480713 9.763178 7.480713 10.121668 c
|
||||
7.480713 10.480158 7.169996 10.790874 6.799563 10.790874 c
|
||||
4.242262 10.790874 l
|
||||
3.883747 10.790874 3.561112 10.480158 3.561112 10.121668 c
|
||||
3.561112 9.763178 3.883747 9.464404 4.242262 9.464404 c
|
||||
6.799563 9.464404 l
|
||||
h
|
||||
f
|
||||
n
|
||||
Q
|
||||
|
||||
endstream
|
||||
endobj
|
||||
|
||||
3 0 obj
|
||||
1813
|
||||
endobj
|
||||
|
||||
4 0 obj
|
||||
<< /Annots []
|
||||
/Type /Page
|
||||
/MediaBox [ 0.000000 0.000000 28.178223 22.000000 ]
|
||||
/Resources 1 0 R
|
||||
/Contents 2 0 R
|
||||
/Parent 5 0 R
|
||||
>>
|
||||
endobj
|
||||
|
||||
5 0 obj
|
||||
<< /Kids [ 4 0 R ]
|
||||
/Count 1
|
||||
/Type /Pages
|
||||
>>
|
||||
endobj
|
||||
|
||||
6 0 obj
|
||||
<< /Type /Catalog
|
||||
/Pages 5 0 R
|
||||
>>
|
||||
endobj
|
||||
|
||||
xref
|
||||
0 7
|
||||
0000000000 65535 f
|
||||
0000000010 00000 n
|
||||
0000000034 00000 n
|
||||
0000001903 00000 n
|
||||
0000001926 00000 n
|
||||
0000002099 00000 n
|
||||
0000002173 00000 n
|
||||
trailer
|
||||
<< /ID [ (some) (id) ]
|
||||
/Root 6 0 R
|
||||
/Size 7
|
||||
>>
|
||||
startxref
|
||||
2232
|
||||
%%EOF
|
12
iOS/Assets.xcassets/star.circle.fill.imageset/Contents.json
vendored
Normal file
12
iOS/Assets.xcassets/star.circle.fill.imageset/Contents.json
vendored
Normal file
@ -0,0 +1,12 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"filename" : "Regular-M.pdf"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
}
|
||||
}
|
93
iOS/Assets.xcassets/star.circle.fill.imageset/Regular-M.pdf
vendored
Normal file
93
iOS/Assets.xcassets/star.circle.fill.imageset/Regular-M.pdf
vendored
Normal file
@ -0,0 +1,93 @@
|
||||
%PDF-1.7
|
||||
|
||||
1 0 obj
|
||||
<< >>
|
||||
endobj
|
||||
|
||||
2 0 obj
|
||||
<< /Length 3 0 R >>
|
||||
stream
|
||||
/DeviceRGB CS
|
||||
/DeviceRGB cs
|
||||
q
|
||||
1.000000 0.000000 -0.000000 1.000000 0.000000 0.000000 cm
|
||||
0.000000 0.000000 0.000000 scn
|
||||
12.499991 0.000000 m
|
||||
19.338226 0.000000 25.000092 5.661768 25.000092 12.500000 c
|
||||
25.000092 19.325987 19.325979 25.000000 12.487744 25.000000 c
|
||||
5.661757 25.000000 0.000000 19.325987 0.000000 12.500000 c
|
||||
0.000000 5.661768 5.674029 0.000000 12.499991 0.000000 c
|
||||
h
|
||||
7.610293 5.674023 m
|
||||
7.328442 5.894613 7.267152 6.250013 7.438722 6.752451 c
|
||||
8.933812 11.225497 l
|
||||
5.110303 13.958346 l
|
||||
4.669130 14.264718 4.509807 14.607834 4.620088 14.950974 c
|
||||
4.718146 15.281866 5.061262 15.453436 5.600493 15.453436 c
|
||||
10.294127 15.416668 l
|
||||
11.727951 19.914209 l
|
||||
11.887248 20.416672 12.132356 20.686275 12.499991 20.686275 c
|
||||
12.867653 20.686275 13.125009 20.416672 13.272058 19.914209 c
|
||||
14.705883 15.416668 l
|
||||
19.399517 15.453436 l
|
||||
19.938725 15.453436 20.269615 15.281866 20.379896 14.950974 c
|
||||
20.502449 14.607834 20.330879 14.264718 19.889706 13.958346 c
|
||||
16.066172 11.225497 l
|
||||
17.561262 6.752451 l
|
||||
17.732832 6.250013 17.671568 5.894613 17.389690 5.674023 c
|
||||
17.095592 5.441181 16.740206 5.526962 16.299007 5.845591 c
|
||||
12.499991 8.627449 l
|
||||
8.700978 5.845591 l
|
||||
8.259805 5.526962 7.916665 5.441181 7.610293 5.674023 c
|
||||
h
|
||||
f
|
||||
n
|
||||
Q
|
||||
|
||||
endstream
|
||||
endobj
|
||||
|
||||
3 0 obj
|
||||
1218
|
||||
endobj
|
||||
|
||||
4 0 obj
|
||||
<< /Annots []
|
||||
/Type /Page
|
||||
/MediaBox [ 0.000000 0.000000 25.000122 25.000000 ]
|
||||
/Resources 1 0 R
|
||||
/Contents 2 0 R
|
||||
/Parent 5 0 R
|
||||
>>
|
||||
endobj
|
||||
|
||||
5 0 obj
|
||||
<< /Kids [ 4 0 R ]
|
||||
/Count 1
|
||||
/Type /Pages
|
||||
>>
|
||||
endobj
|
||||
|
||||
6 0 obj
|
||||
<< /Type /Catalog
|
||||
/Pages 5 0 R
|
||||
>>
|
||||
endobj
|
||||
|
||||
xref
|
||||
0 7
|
||||
0000000000 65535 f
|
||||
0000000010 00000 n
|
||||
0000000034 00000 n
|
||||
0000001308 00000 n
|
||||
0000001331 00000 n
|
||||
0000001504 00000 n
|
||||
0000001578 00000 n
|
||||
trailer
|
||||
<< /ID [ (some) (id) ]
|
||||
/Root 6 0 R
|
||||
/Size 7
|
||||
>>
|
||||
startxref
|
||||
1637
|
||||
%%EOF
|
12
iOS/Assets.xcassets/star.circle.imageset/Contents.json
vendored
Normal file
12
iOS/Assets.xcassets/star.circle.imageset/Contents.json
vendored
Normal file
@ -0,0 +1,12 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"filename" : "Regular-M.pdf"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
}
|
||||
}
|
99
iOS/Assets.xcassets/star.circle.imageset/Regular-M.pdf
vendored
Normal file
99
iOS/Assets.xcassets/star.circle.imageset/Regular-M.pdf
vendored
Normal file
@ -0,0 +1,99 @@
|
||||
%PDF-1.7
|
||||
|
||||
1 0 obj
|
||||
<< >>
|
||||
endobj
|
||||
|
||||
2 0 obj
|
||||
<< /Length 3 0 R >>
|
||||
stream
|
||||
/DeviceRGB CS
|
||||
/DeviceRGB cs
|
||||
q
|
||||
1.000000 0.000000 -0.000000 1.000000 0.000000 0.000000 cm
|
||||
0.000000 0.000000 0.000000 scn
|
||||
12.499991 0.000000 m
|
||||
19.338226 0.000000 25.000092 5.661768 25.000092 12.500000 c
|
||||
25.000092 19.325987 19.325979 25.000000 12.487744 25.000000 c
|
||||
5.661757 25.000000 0.000000 19.325987 0.000000 12.500000 c
|
||||
0.000000 5.661768 5.674029 0.000000 12.499991 0.000000 c
|
||||
h
|
||||
12.499991 2.083338 m
|
||||
6.715673 2.083338 2.095578 6.715681 2.095578 12.500000 c
|
||||
2.095578 18.272070 6.703426 22.916662 12.487744 22.916662 c
|
||||
18.272062 22.916662 22.904408 18.272070 22.916706 12.500000 c
|
||||
22.929005 6.715681 18.284309 2.083338 12.499991 2.083338 c
|
||||
h
|
||||
7.610293 5.772064 m
|
||||
7.916665 5.539221 8.259805 5.625004 8.700978 5.943632 c
|
||||
12.499991 8.725481 l
|
||||
16.299007 5.943632 l
|
||||
16.740206 5.625004 17.095592 5.539221 17.389690 5.772064 c
|
||||
17.671568 5.992651 17.732832 6.348047 17.561262 6.850485 c
|
||||
16.066172 11.323529 l
|
||||
19.889706 14.056379 l
|
||||
20.330879 14.362751 20.502449 14.693618 20.379896 15.049031 c
|
||||
20.269615 15.379898 19.938725 15.551470 19.399517 15.551470 c
|
||||
14.705883 15.514700 l
|
||||
13.272058 20.012243 l
|
||||
13.125009 20.514706 12.867653 20.784309 12.499991 20.784309 c
|
||||
12.132356 20.784309 11.887248 20.514706 11.727951 20.012243 c
|
||||
10.294127 15.514700 l
|
||||
5.600493 15.551470 l
|
||||
5.061262 15.551470 4.718146 15.379898 4.620088 15.049031 c
|
||||
4.509807 14.693618 4.669130 14.362751 5.110303 14.056379 c
|
||||
8.933812 11.323529 l
|
||||
7.438722 6.850485 l
|
||||
7.267152 6.348047 7.328442 5.992651 7.610293 5.772064 c
|
||||
h
|
||||
f
|
||||
n
|
||||
Q
|
||||
|
||||
endstream
|
||||
endobj
|
||||
|
||||
3 0 obj
|
||||
1479
|
||||
endobj
|
||||
|
||||
4 0 obj
|
||||
<< /Annots []
|
||||
/Type /Page
|
||||
/MediaBox [ 0.000000 0.000000 25.000000 25.000000 ]
|
||||
/Resources 1 0 R
|
||||
/Contents 2 0 R
|
||||
/Parent 5 0 R
|
||||
>>
|
||||
endobj
|
||||
|
||||
5 0 obj
|
||||
<< /Kids [ 4 0 R ]
|
||||
/Count 1
|
||||
/Type /Pages
|
||||
>>
|
||||
endobj
|
||||
|
||||
6 0 obj
|
||||
<< /Type /Catalog
|
||||
/Pages 5 0 R
|
||||
>>
|
||||
endobj
|
||||
|
||||
xref
|
||||
0 7
|
||||
0000000000 65535 f
|
||||
0000000010 00000 n
|
||||
0000000034 00000 n
|
||||
0000001569 00000 n
|
||||
0000001592 00000 n
|
||||
0000001765 00000 n
|
||||
0000001839 00000 n
|
||||
trailer
|
||||
<< /ID [ (some) (id) ]
|
||||
/Root 6 0 R
|
||||
/Size 7
|
||||
>>
|
||||
startxref
|
||||
1898
|
||||
%%EOF
|
12
iOS/Assets.xcassets/star.circle.plus.imageset/Contents.json
vendored
Normal file
12
iOS/Assets.xcassets/star.circle.plus.imageset/Contents.json
vendored
Normal file
@ -0,0 +1,12 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"filename" : "star.circle.plus.pdf"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
}
|
||||
}
|
129
iOS/Assets.xcassets/star.circle.plus.imageset/star.circle.plus.pdf
vendored
Normal file
129
iOS/Assets.xcassets/star.circle.plus.imageset/star.circle.plus.pdf
vendored
Normal file
@ -0,0 +1,129 @@
|
||||
%PDF-1.7
|
||||
|
||||
1 0 obj
|
||||
<< >>
|
||||
endobj
|
||||
|
||||
2 0 obj
|
||||
<< /Length 3 0 R >>
|
||||
stream
|
||||
/DeviceRGB CS
|
||||
/DeviceRGB cs
|
||||
q
|
||||
1.000000 0.000000 -0.000000 1.000000 0.000000 0.000000 cm
|
||||
0.000000 0.000000 0.000000 scn
|
||||
18.700602 25.000000 m
|
||||
12.500011 25.000000 7.287553 20.244572 6.534099 14.241598 c
|
||||
7.262839 14.216908 7.954544 14.093386 8.609191 13.895770 c
|
||||
9.177375 18.984682 13.438738 22.900219 18.700602 22.900219 c
|
||||
24.332983 22.900219 28.853710 18.367094 28.866106 12.734688 c
|
||||
28.878502 7.089937 24.345377 2.556822 18.712946 2.556822 c
|
||||
16.934301 2.556822 15.279158 3.013838 13.846341 3.816704 c
|
||||
13.624011 3.137356 13.315216 2.519768 12.932329 1.951584 c
|
||||
14.661570 1.000500 16.637854 0.469376 18.712946 0.469376 c
|
||||
25.407576 0.469376 30.965963 6.027672 30.965963 12.734688 c
|
||||
30.965963 19.429367 25.395180 25.000000 18.700602 25.000000 c
|
||||
h
|
||||
6.274708 0.000000 m
|
||||
9.683809 0.000000 12.549417 2.840912 12.549417 6.274708 c
|
||||
12.549417 9.708498 9.720843 12.549417 6.274708 12.549417 c
|
||||
2.840918 12.549417 0.000000 9.708498 0.000000 6.274708 c
|
||||
0.000000 2.816208 2.840918 0.000000 6.274708 0.000000 c
|
||||
h
|
||||
6.287053 2.198622 m
|
||||
5.854737 2.198622 5.471850 2.495062 5.471850 2.964430 c
|
||||
5.471850 5.521250 l
|
||||
3.112653 5.521250 l
|
||||
2.692681 5.521250 2.346828 5.867098 2.346828 6.274708 c
|
||||
2.346828 6.694679 2.692681 7.040508 3.112653 7.040508 c
|
||||
5.471850 7.040508 l
|
||||
5.471850 9.597347 l
|
||||
5.471850 10.054353 5.854737 10.350801 6.287053 10.350801 c
|
||||
6.707025 10.350801 7.089912 10.054353 7.089912 9.597347 c
|
||||
7.089912 7.040508 l
|
||||
9.449109 7.040508 l
|
||||
9.869081 7.040508 10.202564 6.694679 10.202564 6.274708 c
|
||||
10.202564 5.867098 9.869081 5.521250 9.449109 5.521250 c
|
||||
7.089912 5.521250 l
|
||||
7.089912 2.964430 l
|
||||
7.089912 2.495062 6.707025 2.198622 6.287053 2.198622 c
|
||||
h
|
||||
f
|
||||
n
|
||||
Q
|
||||
q
|
||||
1.000000 0.000000 -0.000000 1.000000 10.962402 5.875031 cm
|
||||
0.000000 0.000000 0.000000 scn
|
||||
2.967083 0.228466 m
|
||||
3.267695 -0.000001 3.604384 0.084171 4.037263 0.396809 c
|
||||
7.764855 3.126358 l
|
||||
11.492450 0.396809 l
|
||||
11.925354 0.084171 12.274060 -0.000001 12.562630 0.228466 c
|
||||
12.839207 0.444905 12.899319 0.793620 12.730974 1.286612 c
|
||||
11.263991 5.675564 l
|
||||
15.015644 8.357037 l
|
||||
15.448524 8.657648 15.616868 8.982294 15.496618 9.331026 c
|
||||
15.388411 9.655672 15.063739 9.824018 14.534670 9.824018 c
|
||||
9.929276 9.787941 l
|
||||
8.522408 14.200930 l
|
||||
8.378122 14.693946 8.125604 14.958481 7.764855 14.958481 c
|
||||
7.404130 14.958481 7.163632 14.693946 7.007329 14.200930 c
|
||||
5.600461 9.787941 l
|
||||
0.995068 9.824018 l
|
||||
0.465975 9.824018 0.129309 9.655672 0.033094 9.331026 c
|
||||
-0.075113 8.982294 0.081214 8.657648 0.514093 8.357037 c
|
||||
4.265721 5.675564 l
|
||||
2.798738 1.286612 l
|
||||
2.630394 0.793620 2.690531 0.444905 2.967083 0.228466 c
|
||||
h
|
||||
f
|
||||
n
|
||||
Q
|
||||
|
||||
endstream
|
||||
endobj
|
||||
|
||||
3 0 obj
|
||||
2544
|
||||
endobj
|
||||
|
||||
4 0 obj
|
||||
<< /Annots []
|
||||
/Type /Page
|
||||
/MediaBox [ 0.000000 0.000000 30.965820 25.000000 ]
|
||||
/Resources 1 0 R
|
||||
/Contents 2 0 R
|
||||
/Parent 5 0 R
|
||||
>>
|
||||
endobj
|
||||
|
||||
5 0 obj
|
||||
<< /Kids [ 4 0 R ]
|
||||
/Count 1
|
||||
/Type /Pages
|
||||
>>
|
||||
endobj
|
||||
|
||||
6 0 obj
|
||||
<< /Type /Catalog
|
||||
/Pages 5 0 R
|
||||
>>
|
||||
endobj
|
||||
|
||||
xref
|
||||
0 7
|
||||
0000000000 65535 f
|
||||
0000000010 00000 n
|
||||
0000000034 00000 n
|
||||
0000002634 00000 n
|
||||
0000002657 00000 n
|
||||
0000002830 00000 n
|
||||
0000002904 00000 n
|
||||
trailer
|
||||
<< /ID [ (some) (id) ]
|
||||
/Root 6 0 R
|
||||
/Size 7
|
||||
>>
|
||||
startxref
|
||||
2963
|
||||
%%EOF
|
12
iOS/Assets.xcassets/star.fill.imageset/Contents.json
vendored
Normal file
12
iOS/Assets.xcassets/star.fill.imageset/Contents.json
vendored
Normal file
@ -0,0 +1,12 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"filename" : "Regular-M.png"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
}
|
||||
}
|
BIN
iOS/Assets.xcassets/star.fill.imageset/Regular-M.png
vendored
Normal file
BIN
iOS/Assets.xcassets/star.fill.imageset/Regular-M.png
vendored
Normal file
Binary file not shown.
After Width: | Height: | Size: 365 B |
@ -9,17 +9,16 @@
|
||||
import UIKit
|
||||
import RealmSwift
|
||||
|
||||
@available(iOS 13.0, *)
|
||||
class ContentViewController: UIViewController, UISearchControllerDelegate, WebViewControllerDelegate,
|
||||
OutlineControllerDelegate, BookmarkControllerDelegate {
|
||||
private let sideBarButton = Button(imageSystemName: "sidebar.left")
|
||||
private let chevronLeftButton = Button(imageSystemName: "chevron.left")
|
||||
private let chevronRightButton = Button(imageSystemName: "chevron.right")
|
||||
private let outlineButton = Button(imageSystemName: "list.bullet")
|
||||
private let bookmarkButton = BookmarkButton()
|
||||
private let bookmarkToggleButton = BookmarkToggleButton()
|
||||
private let libraryButton = Button(imageSystemName: "folder")
|
||||
private let settingButton = Button(imageSystemName: "gear")
|
||||
private let sideBarButton = Button(imageName: "sidebar.left")
|
||||
private let chevronLeftButton = Button(imageName: "chevron.left")
|
||||
private let chevronRightButton = Button(imageName: "chevron.right")
|
||||
private let outlineButton = Button(imageName: "list.bullet")
|
||||
private let bookmarkButton = BookmarkButton(imageName: "star", bookmarkedImageName: "star.fill")
|
||||
private let bookmarkToggleButton = BookmarkButton(imageName: "star.circle.fill", bookmarkedImageName: "star.circle")
|
||||
private let libraryButton = Button(imageName: "folder")
|
||||
private let settingButton = Button(imageName: "gear")
|
||||
private let bookmarkLongPressGestureRecognizer = UILongPressGestureRecognizer()
|
||||
|
||||
let searchController: UISearchController
|
||||
@ -28,6 +27,8 @@ class ContentViewController: UIViewController, UISearchControllerDelegate, WebVi
|
||||
barButtonSystemItem: .cancel, target: self, action: #selector(cancelSearch))
|
||||
private var webViewControllers: [WebKitWebController] = []
|
||||
var currentWebViewController: WebKitWebController? { return webViewControllers.first }
|
||||
private(set) lazy var welcomeController = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "WelcomeController") as! WelcomeController
|
||||
private(set) lazy var libraryController = LibraryController()
|
||||
|
||||
init() {
|
||||
self.searchResultsController = SearchResultsController()
|
||||
@ -46,6 +47,25 @@ class ContentViewController: UIViewController, UISearchControllerDelegate, WebVi
|
||||
|
||||
bookmarkButton.addGestureRecognizer(bookmarkLongPressGestureRecognizer)
|
||||
bookmarkLongPressGestureRecognizer.addTarget(self, action: #selector(toggleBookmark))
|
||||
|
||||
if #available(iOS 13.0, *) {
|
||||
view.backgroundColor = .systemBackground
|
||||
} else {
|
||||
view.backgroundColor = .white
|
||||
}
|
||||
|
||||
searchController.delegate = self
|
||||
searchController.searchBar.autocorrectionType = .no
|
||||
searchController.searchBar.autocapitalizationType = .none
|
||||
searchController.hidesNavigationBarDuringPresentation = false
|
||||
searchController.searchResultsUpdater = searchResultsController
|
||||
if #available(iOS 13.0, *) {
|
||||
searchController.automaticallyShowsCancelButton = false
|
||||
searchController.showsSearchResultsController = true
|
||||
} else {
|
||||
searchController.searchBar.searchBarStyle = .minimal
|
||||
searchController.obscuresBackgroundDuringPresentation = true
|
||||
}
|
||||
}
|
||||
|
||||
required init?(coder: NSCoder) {
|
||||
@ -58,16 +78,9 @@ class ContentViewController: UIViewController, UISearchControllerDelegate, WebVi
|
||||
navigationItem.hidesBackButton = true
|
||||
navigationItem.titleView = searchController.searchBar
|
||||
definesPresentationContext = true
|
||||
view.backgroundColor = .systemBackground
|
||||
searchController.delegate = self
|
||||
searchController.searchBar.autocapitalizationType = .none
|
||||
searchController.automaticallyShowsCancelButton = false
|
||||
searchController.hidesNavigationBarDuringPresentation = false
|
||||
searchController.showsSearchResultsController = true
|
||||
searchController.searchResultsUpdater = searchResultsController
|
||||
|
||||
configureToolbar()
|
||||
createNewTab()
|
||||
setChildControllerIfNeeded(welcomeController)
|
||||
}
|
||||
|
||||
func load(url: URL) {
|
||||
@ -77,13 +90,8 @@ class ContentViewController: UIViewController, UISearchControllerDelegate, WebVi
|
||||
|
||||
// MARK: - View and Controller Management
|
||||
|
||||
func configureToolbar() {
|
||||
if splitViewController?.isCollapsed == true {
|
||||
let group = ButtonGroupView(buttons: [
|
||||
chevronLeftButton, chevronRightButton, outlineButton, bookmarkButton, libraryButton, settingButton,
|
||||
])
|
||||
toolbarItems = [UIBarButtonItem(customView: group)]
|
||||
} else {
|
||||
func configureToolbar(isGrouped: Bool) {
|
||||
if isGrouped {
|
||||
let left = ButtonGroupView(buttons: [sideBarButton, chevronLeftButton, chevronRightButton], spacing: 10)
|
||||
let right = ButtonGroupView(buttons: [bookmarkToggleButton, libraryButton, settingButton], spacing: 10)
|
||||
toolbarItems = [
|
||||
@ -91,6 +99,11 @@ class ContentViewController: UIViewController, UISearchControllerDelegate, WebVi
|
||||
UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: nil, action: nil),
|
||||
UIBarButtonItem(customView: right),
|
||||
]
|
||||
} else {
|
||||
let group = ButtonGroupView(buttons: [
|
||||
chevronLeftButton, chevronRightButton, outlineButton, bookmarkButton, libraryButton, settingButton,
|
||||
])
|
||||
toolbarItems = [UIBarButtonItem(customView: group)]
|
||||
}
|
||||
}
|
||||
|
||||
@ -207,10 +220,10 @@ class ContentViewController: UIViewController, UISearchControllerDelegate, WebVi
|
||||
}
|
||||
|
||||
// if outline view is visible, update outline items
|
||||
if let rootSplitController = splitViewController as? RootSplitController,
|
||||
!rootSplitController.isCollapsed,
|
||||
rootSplitController.displayMode != .primaryHidden {
|
||||
let selectedNavController = rootSplitController.sideBarViewController.selectedViewController
|
||||
if let rootController = splitViewController as? RootController,
|
||||
!rootController.isCollapsed,
|
||||
rootController.displayMode != .primaryHidden {
|
||||
let selectedNavController = rootController.sideBarViewController.selectedViewController
|
||||
let selectedController = (selectedNavController as? UINavigationController)?.topViewController
|
||||
if let outlineController = selectedController as? OutlineController {
|
||||
outlineController.updateContent()
|
||||
@ -292,6 +305,7 @@ class ContentViewController: UIViewController, UISearchControllerDelegate, WebVi
|
||||
try database.write {
|
||||
database.delete(bookmark)
|
||||
}
|
||||
BookmarkManager().updateBookmarkWidgetData()
|
||||
} else {
|
||||
guard let zimFile = database.object(ofType: ZimFile.self, forPrimaryKey: zimFileID) else {return}
|
||||
let bookmark = Bookmark()
|
||||
@ -321,14 +335,15 @@ class ContentViewController: UIViewController, UISearchControllerDelegate, WebVi
|
||||
database.add(bookmark)
|
||||
}
|
||||
} catch {}
|
||||
BookmarkManager().updateBookmarkWidgetData()
|
||||
})
|
||||
}
|
||||
} catch {return}
|
||||
}
|
||||
|
||||
@objc func openLibrary() {
|
||||
guard let splitController = splitViewController as? RootSplitController else {return}
|
||||
splitController.present(splitController.libraryController, animated: true)
|
||||
guard let splitController = splitViewController as? RootController else {return}
|
||||
splitController.present(libraryController, animated: true)
|
||||
}
|
||||
|
||||
@objc func openSettings() {
|
||||
@ -340,7 +355,11 @@ class ContentViewController: UIViewController, UISearchControllerDelegate, WebVi
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: - BarButton
|
||||
// MARK: - Buttons
|
||||
|
||||
private extension UIControl.State {
|
||||
static let bookmarked = UIControl.State(rawValue: 1 << 16)
|
||||
}
|
||||
|
||||
private class ButtonGroupView: UIStackView {
|
||||
convenience init(buttons: [UIButton], spacing: CGFloat? = nil) {
|
||||
@ -352,12 +371,15 @@ private class ButtonGroupView: UIStackView {
|
||||
}
|
||||
}
|
||||
|
||||
@available(iOS 13.0, *)
|
||||
private class Button: UIButton {
|
||||
fileprivate let configuration = UIImage.SymbolConfiguration(scale: .large)
|
||||
convenience init(imageSystemName: String) {
|
||||
convenience init(imageName: String) {
|
||||
self.init(type: .system)
|
||||
setImage(UIImage(systemName: imageSystemName, withConfiguration: configuration), for: .normal)
|
||||
if #available(iOS 13.0, *) {
|
||||
let configuration = UIImage.SymbolConfiguration(scale: .large)
|
||||
setImage(UIImage(systemName: imageName, withConfiguration: configuration), for: .normal)
|
||||
} else {
|
||||
setImage(UIImage(named: imageName), for: .normal)
|
||||
}
|
||||
}
|
||||
|
||||
override var intrinsicContentSize: CGSize {
|
||||
@ -365,32 +387,24 @@ private class Button: UIButton {
|
||||
}
|
||||
}
|
||||
|
||||
@available(iOS 13.0, *)
|
||||
private class BookmarkButton: Button {
|
||||
var isBookmarked: Bool = false { didSet { setNeedsLayout() } }
|
||||
override var state: UIControl.State{ get { isBookmarked ? [.bookmarked, super.state] : super.state } }
|
||||
|
||||
convenience init() {
|
||||
self.init(imageSystemName: "star")
|
||||
let filledImage = UIImage(systemName: "star.fill", withConfiguration: configuration)
|
||||
setImage(filledImage, for: .bookmarked)
|
||||
setImage(filledImage, for: [.bookmarked, .highlighted])
|
||||
convenience init(imageName: String, bookmarkedImageName: String) {
|
||||
if #available(iOS 13.0, *) {
|
||||
self.init(imageName: imageName)
|
||||
let configuration = UIImage.SymbolConfiguration(scale: .large)
|
||||
let bookmarkedImage = UIImage(systemName: bookmarkedImageName, withConfiguration: configuration)?
|
||||
.withTintColor(.systemYellow, renderingMode: .alwaysOriginal)
|
||||
setImage(bookmarkedImage, for: .bookmarked)
|
||||
setImage(bookmarkedImage, for: [.bookmarked, .highlighted])
|
||||
} else {
|
||||
self.init(type: .system)
|
||||
setImage(UIImage(named: imageName), for: .normal)
|
||||
let bookmarkedImage = UIImage(named: bookmarkedImageName)
|
||||
setImage(bookmarkedImage, for: .bookmarked)
|
||||
setImage(bookmarkedImage, for: [.bookmarked, .highlighted])
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@available(iOS 13.0, *)
|
||||
private class BookmarkToggleButton: Button {
|
||||
var isBookmarked: Bool = false { didSet { setNeedsLayout() } }
|
||||
override var state: UIControl.State{ get { isBookmarked ? [.bookmarked, super.state] : super.state } }
|
||||
|
||||
convenience init() {
|
||||
self.init(imageSystemName: "star")
|
||||
let filledImage = UIImage(systemName: "star.slash.fill", withConfiguration: configuration)
|
||||
setImage(filledImage, for: .bookmarked)
|
||||
setImage(filledImage, for: [.bookmarked, .highlighted])
|
||||
}
|
||||
}
|
||||
|
||||
private extension UIControl.State {
|
||||
static let bookmarked = UIControl.State(rawValue: 1 << 16)
|
||||
}
|
||||
|
@ -265,9 +265,9 @@ class LibraryZimFileDetailController: UIViewController, UITableViewDataSource, U
|
||||
case .deleteFile, .deleteBookmarks, .deleteFileAndBookmarks, .unlink:
|
||||
present(ActionConfirmationController(zimFile: zimFile, action: action), animated: true)
|
||||
case .openMainPage:
|
||||
guard let main = (presentingViewController as? UINavigationController)?.topViewController as? MainController,
|
||||
let url = ZimMultiReader.shared.getMainPageURL(zimFileID: zimFile.id) else {break}
|
||||
main.load(url: url)
|
||||
guard let rootController = presentingViewController as? RootController,
|
||||
let url = ZimMultiReader.shared.getMainPageURL(zimFileID: zimFile.id) else {break}
|
||||
rootController.contentViewController.load(url: url)
|
||||
dismiss(animated: true, completion: nil)
|
||||
}
|
||||
}
|
||||
|
@ -7,25 +7,24 @@
|
||||
//
|
||||
|
||||
import UIKit
|
||||
import WebKit
|
||||
|
||||
@available(iOS 13.0, *)
|
||||
class RootSplitController: UISplitViewController, UISplitViewControllerDelegate {
|
||||
class RootController: UISplitViewController, UISplitViewControllerDelegate {
|
||||
let sideBarViewController = SideBarController()
|
||||
let contentViewController = ContentViewController()
|
||||
private(set) lazy var libraryController = LibraryController()
|
||||
let contentNavigationController: UINavigationController
|
||||
|
||||
init() {
|
||||
super.init(nibName: nil, bundle: nil)
|
||||
preferredDisplayMode = .allVisible
|
||||
self.contentNavigationController = UINavigationController(rootViewController: contentViewController)
|
||||
self.contentNavigationController.isToolbarHidden = false
|
||||
|
||||
let contentNavController = UINavigationController(rootViewController: contentViewController)
|
||||
contentNavController.isToolbarHidden = false
|
||||
viewControllers = [sideBarViewController, contentNavController]
|
||||
super.init(nibName: nil, bundle: nil)
|
||||
viewControllers = [sideBarViewController, self.contentNavigationController]
|
||||
|
||||
delegate = self
|
||||
preferredDisplayMode = .allVisible
|
||||
sideBarViewController.favoriteController.delegate = contentViewController
|
||||
sideBarViewController.outlineController.delegate = contentViewController
|
||||
contentViewController.configureToolbar(isGrouped: !isCollapsed)
|
||||
}
|
||||
|
||||
required init?(coder aDecoder: NSCoder) {
|
||||
@ -33,13 +32,13 @@ class RootSplitController: UISplitViewController, UISplitViewControllerDelegate
|
||||
}
|
||||
|
||||
override func overrideTraitCollection(forChild childViewController: UIViewController) -> UITraitCollection? {
|
||||
let traitCollection = super.overrideTraitCollection(forChild: childViewController)
|
||||
if viewControllers.count > 1,
|
||||
childViewController == viewControllers.last,
|
||||
preferredDisplayMode == .allVisible {
|
||||
return UITraitCollection(horizontalSizeClass: .compact)
|
||||
} else {
|
||||
return super.overrideTraitCollection(forChild: childViewController)
|
||||
}
|
||||
return traitCollection
|
||||
}
|
||||
|
||||
// MARK: UISplitViewControllerDelegate
|
||||
@ -49,17 +48,13 @@ class RootSplitController: UISplitViewController, UISplitViewControllerDelegate
|
||||
}
|
||||
|
||||
func primaryViewController(forCollapsing splitViewController: UISplitViewController) -> UIViewController? {
|
||||
contentViewController.configureToolbar()
|
||||
let navigationController = UINavigationController(rootViewController: contentViewController)
|
||||
navigationController.isToolbarHidden = false
|
||||
return navigationController
|
||||
contentViewController.configureToolbar(isGrouped: false)
|
||||
return contentNavigationController
|
||||
}
|
||||
|
||||
func splitViewController(_ splitViewController: UISplitViewController,
|
||||
separateSecondaryFrom primaryViewController: UIViewController) -> UIViewController? {
|
||||
contentViewController.configureToolbar()
|
||||
let navigationController = UINavigationController(rootViewController: contentViewController)
|
||||
navigationController.isToolbarHidden = false
|
||||
return navigationController
|
||||
contentViewController.configureToolbar(isGrouped: true)
|
||||
return contentNavigationController
|
||||
}
|
||||
}
|
@ -244,10 +244,8 @@ class SearchNoTextController: UIViewController, UITableViewDelegate, UITableView
|
||||
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
|
||||
collectionView.deselectItem(at: indexPath, animated: true)
|
||||
let searchText = recentSearchTexts[indexPath.row]
|
||||
if #available(iOS 13.0, *), let controller = presentingViewController as? ContentViewController {
|
||||
if let controller = presentingViewController as? ContentViewController {
|
||||
controller.searchController.searchBar.text = searchText
|
||||
} else if let main = presentingViewController as? MainController {
|
||||
main.searchController.searchBar.text = searchText
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -104,18 +104,11 @@ class SearchResultsListController: UITableViewController {
|
||||
}
|
||||
|
||||
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
|
||||
if #available(iOS 13, *) {
|
||||
guard let content = presentingViewController as? ContentViewController else {return}
|
||||
update(recentSearchText: searchText)
|
||||
content.load(url: results[indexPath.row].url)
|
||||
content.searchController.dismiss(animated: true)
|
||||
content.searchController.isActive = false
|
||||
} else {
|
||||
guard let main = presentingViewController as? MainController else {return}
|
||||
update(recentSearchText: searchText)
|
||||
main.load(url: results[indexPath.row].url)
|
||||
main.searchController.isActive = false
|
||||
}
|
||||
guard let content = presentingViewController as? ContentViewController else {return}
|
||||
update(recentSearchText: searchText)
|
||||
content.load(url: results[indexPath.row].url)
|
||||
content.searchController.dismiss(animated: true)
|
||||
content.searchController.isActive = false
|
||||
}
|
||||
|
||||
override func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat {
|
||||
|
@ -73,9 +73,8 @@ class SettingFontSizeViewController: UIViewController, UITableViewDelegate, UITa
|
||||
tableView.reloadRows(at: indexPaths, with: .automatic)
|
||||
label.font = UIFont.systemFont(ofSize: CGFloat(14.0 * percentages[indexPath.row]))
|
||||
|
||||
if let navigation = navigationController?.presentingViewController as? UINavigationController,
|
||||
let main = navigation.topViewController as? MainController {
|
||||
main.currentWebController?.adjustFontSize(scale: selected)
|
||||
if let rootController = presentingViewController as? RootController {
|
||||
rootController.contentViewController.currentWebViewController?.adjustFontSize(scale: selected)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -32,8 +32,10 @@ class BookmarkController: UIViewController, UITableViewDataSource, UITableViewDe
|
||||
title = NSLocalizedString("Bookmark", comment: "Bookmark view title")
|
||||
if #available(iOS 13.0, *) {
|
||||
tabBarItem = UITabBarItem(title: "Bookmark",
|
||||
image: UIImage(systemName: "star.circle"),
|
||||
selectedImage: UIImage(systemName: "star.circle.fill"))
|
||||
image: UIImage(systemName: "star"),
|
||||
selectedImage: UIImage(systemName: "star.fill"))
|
||||
} else {
|
||||
tabBarItem = UITabBarItem(tabBarSystemItem: .favorites, tag: 0)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -32,6 +32,10 @@ class OutlineController: UITableViewController {
|
||||
tabBarItem = UITabBarItem(title: "Outline",
|
||||
image: UIImage(systemName: "list.bullet"),
|
||||
selectedImage: UIImage(systemName: "list.bullet"))
|
||||
} else {
|
||||
tabBarItem = UITabBarItem(title: "Outline",
|
||||
image: UIImage(named: "list.bullet"),
|
||||
selectedImage: UIImage(named: "list.bullet"))
|
||||
}
|
||||
}
|
||||
|
||||
@ -61,8 +65,8 @@ class OutlineController: UITableViewController {
|
||||
|
||||
// update items
|
||||
if #available(iOS 13.0, *) {
|
||||
if let rootSplitController = (splitViewController ?? presentingViewController) as? RootSplitController,
|
||||
let currentWebViewController = rootSplitController.contentViewController.currentWebViewController {
|
||||
if let rootController = (splitViewController ?? presentingViewController) as? RootController,
|
||||
let currentWebViewController = rootController.contentViewController.currentWebViewController {
|
||||
currentWebViewController.extractTableOfContents(completion: { (url, items) in
|
||||
self.items = items
|
||||
})
|
||||
|
@ -8,7 +8,6 @@
|
||||
|
||||
import UIKit
|
||||
|
||||
@available(iOS 13.0, *)
|
||||
class SideBarController: UITabBarController {
|
||||
let favoriteController = BookmarkController()
|
||||
let outlineController = OutlineController()
|
||||
@ -17,7 +16,6 @@ class SideBarController: UITabBarController {
|
||||
super.init(nibName: nil, bundle: nil)
|
||||
viewControllers = [
|
||||
UINavigationController(rootViewController: favoriteController),
|
||||
// UINavigationController(rootViewController: MapController()),
|
||||
UINavigationController(rootViewController: outlineController),
|
||||
]
|
||||
}
|
||||
|
@ -14,14 +14,12 @@ class WelcomeController: UIViewController {
|
||||
|
||||
override func viewDidLoad() {
|
||||
super.viewDidLoad()
|
||||
logoImageView.image = #imageLiteral(resourceName: "Kiwix").withRenderingMode(.alwaysTemplate)
|
||||
logoImageView.tintColor = .darkGray
|
||||
button.setTitle(NSLocalizedString("Open Library", comment: "Welcome"), for: .normal)
|
||||
}
|
||||
|
||||
@IBAction func leftButtonTapped(_ sender: Any) {
|
||||
guard let mainController = parent as? MainController else {return}
|
||||
mainController.present(mainController.libraryController, animated: true, completion: nil)
|
||||
guard let presenter = parent as? ContentViewController else {return}
|
||||
presenter.openLibrary()
|
||||
}
|
||||
|
||||
@IBAction func rightButtonTapped(_ sender: Any) {
|
||||
|
@ -1,13 +1,9 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="14109" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="84U-cN-X4E">
|
||||
<device id="ipad9_7" orientation="landscape">
|
||||
<adaptation id="splitview1_3"/>
|
||||
</device>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="15702" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="84U-cN-X4E">
|
||||
<device id="retina6_1" orientation="portrait" appearance="light"/>
|
||||
<dependencies>
|
||||
<deployment identifier="iOS"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="14088"/>
|
||||
<capability name="Aspect ratio constraints" minToolsVersion="5.1"/>
|
||||
<capability name="Constraints with non-1.0 multipliers" minToolsVersion="5.1"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="15704"/>
|
||||
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
|
||||
<capability name="Stack View standard spacing" minToolsVersion="9.0"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
@ -18,24 +14,24 @@
|
||||
<objects>
|
||||
<viewController id="sgR-df-kDZ" customClass="MainController" customModule="Kiwix" sceneMemberID="viewController">
|
||||
<view key="view" contentMode="scaleToFill" id="Lnk-x9-o6o">
|
||||
<rect key="frame" x="0.0" y="0.0" width="320" height="768"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="W03-ad-Ivv">
|
||||
<rect key="frame" x="-300" y="64" width="300" height="704"/>
|
||||
<rect key="frame" x="-300" y="88" width="300" height="774"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="300" id="7xS-W5-bXd"/>
|
||||
</constraints>
|
||||
</view>
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="ShV-5f-7OD">
|
||||
<rect key="frame" x="-1" y="64" width="1" height="704"/>
|
||||
<rect key="frame" x="-1" y="88" width="1" height="774"/>
|
||||
<color key="backgroundColor" name="systemGrayColor" catalog="System" colorSpace="catalog"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="1" id="RnR-f1-Q7L"/>
|
||||
</constraints>
|
||||
</view>
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="nGW-m1-b0h">
|
||||
<rect key="frame" x="0.0" y="0.0" width="320" height="768"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
|
||||
</view>
|
||||
</subviews>
|
||||
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
@ -74,17 +70,17 @@
|
||||
<objects>
|
||||
<viewController storyboardIdentifier="SettingFontSizeViewController" id="ixK-lM-nyu" customClass="SettingFontSizeViewController" customModule="Kiwix" customModuleProvider="target" sceneMemberID="viewController">
|
||||
<view key="view" contentMode="scaleToFill" id="fXk-M7-fW2">
|
||||
<rect key="frame" x="0.0" y="0.0" width="320" height="768"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" translatesAutoresizingMaskIntoConstraints="NO" id="dvp-sd-HfU">
|
||||
<rect key="frame" x="0.0" y="20" width="320" height="748"/>
|
||||
<rect key="frame" x="0.0" y="44" width="414" height="818"/>
|
||||
<subviews>
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="yer-2Q-hiy">
|
||||
<rect key="frame" x="0.0" y="0.0" width="320" height="50"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="414" height="36.5"/>
|
||||
<subviews>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" layoutMarginsFollowReadableWidth="YES" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Hjn-0d-dSY">
|
||||
<rect key="frame" x="20" y="8" width="280" height="34"/>
|
||||
<rect key="frame" x="20" y="8" width="374" height="20.5"/>
|
||||
<string key="text">Kiwix for iOS is an offline reader for wikipedia. Our mission is to give people equal and easy access to free knowledge of the world.</string>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||
<nil key="textColor"/>
|
||||
@ -100,25 +96,25 @@
|
||||
</constraints>
|
||||
</view>
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="oPm-la-aFL">
|
||||
<rect key="frame" x="0.0" y="50" width="320" height="1"/>
|
||||
<rect key="frame" x="0.0" y="36.5" width="414" height="1"/>
|
||||
<color key="backgroundColor" white="0.66666666666666663" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="1" id="JTP-l0-oMQ"/>
|
||||
</constraints>
|
||||
</view>
|
||||
<tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="-1" estimatedRowHeight="-1" sectionHeaderHeight="28" sectionFooterHeight="28" translatesAutoresizingMaskIntoConstraints="NO" id="fme-ig-r8Q">
|
||||
<rect key="frame" x="0.0" y="51" width="320" height="697"/>
|
||||
<rect key="frame" x="0.0" y="37.5" width="414" height="780.5"/>
|
||||
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<prototypes>
|
||||
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" preservesSuperviewLayoutMargins="YES" selectionStyle="default" indentationWidth="10" reuseIdentifier="Cell" textLabel="sky-Py-4ld" style="IBUITableViewCellStyleDefault" id="bcr-PB-cyc">
|
||||
<rect key="frame" x="0.0" y="28" width="320" height="44"/>
|
||||
<rect key="frame" x="0.0" y="28" width="414" height="43.5"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" preservesSuperviewLayoutMargins="YES" insetsLayoutMarginsFromSafeArea="NO" tableViewCell="bcr-PB-cyc" id="BGf-yG-PRY">
|
||||
<rect key="frame" x="0.0" y="0.0" width="320" height="43.5"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="414" height="43.5"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<label opaque="NO" multipleTouchEnabled="YES" contentMode="left" insetsLayoutMarginsFromSafeArea="NO" text="Title" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="sky-Py-4ld">
|
||||
<rect key="frame" x="15" y="0.0" width="290" height="43.5"/>
|
||||
<rect key="frame" x="20" y="0.0" width="374" height="43.5"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||
<nil key="textColor"/>
|
||||
@ -162,7 +158,7 @@
|
||||
<navigationController automaticallyAdjustsScrollViewInsets="NO" id="84U-cN-X4E" sceneMemberID="viewController">
|
||||
<toolbarItems/>
|
||||
<navigationBar key="navigationBar" contentMode="scaleToFill" insetsLayoutMarginsFromSafeArea="NO" id="RM6-7R-BiT">
|
||||
<rect key="frame" x="0.0" y="20" width="320" height="44"/>
|
||||
<rect key="frame" x="0.0" y="44" width="414" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
</navigationBar>
|
||||
<nil name="viewControllers"/>
|
||||
@ -182,17 +178,18 @@
|
||||
<objects>
|
||||
<viewController storyboardIdentifier="WelcomeController" id="1qf-Qn-OTE" customClass="WelcomeController" customModule="Kiwix" customModuleProvider="target" sceneMemberID="viewController">
|
||||
<view key="view" contentMode="scaleToFill" id="hKl-AZ-y4g">
|
||||
<rect key="frame" x="0.0" y="0.0" width="320" height="768"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" alignment="center" spacing="20" translatesAutoresizingMaskIntoConstraints="NO" id="gqV-bc-IWP">
|
||||
<rect key="frame" x="16" y="294.5" width="288" height="179"/>
|
||||
<rect key="frame" x="63" y="358.5" width="288" height="179"/>
|
||||
<subviews>
|
||||
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" alignment="center" translatesAutoresizingMaskIntoConstraints="NO" id="8pR-57-foL">
|
||||
<rect key="frame" x="88" y="0.0" width="112.5" height="108"/>
|
||||
<subviews>
|
||||
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="Kiwix" translatesAutoresizingMaskIntoConstraints="NO" id="tqt-hB-1ni">
|
||||
<rect key="frame" x="26" y="0.0" width="60" height="60"/>
|
||||
<color key="tintColor" systemColor="labelColor" cocoaTouchSystemColor="darkTextColor"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="60" id="DsZ-wM-gGQ"/>
|
||||
<constraint firstAttribute="height" constant="60" id="UCh-XH-DCh"/>
|
||||
@ -201,7 +198,6 @@
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="KIWIX" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="QJS-qn-q6W">
|
||||
<rect key="frame" x="0.0" y="60" width="112.5" height="48"/>
|
||||
<fontDescription key="fontDescription" type="system" weight="semibold" pointSize="40"/>
|
||||
<color key="textColor" white="0.33333333333333331" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<nil key="highlightedColor"/>
|
||||
<variation key="widthClass=regular">
|
||||
<fontDescription key="fontDescription" type="boldSystem" pointSize="50"/>
|
||||
@ -211,7 +207,7 @@
|
||||
</stackView>
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="FzP-vy-Q8J">
|
||||
<rect key="frame" x="0.0" y="128" width="288" height="1"/>
|
||||
<color key="backgroundColor" white="0.66666666666666663" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<color key="backgroundColor" systemColor="secondarySystemFillColor" red="0.47058823529999999" green="0.47058823529999999" blue="0.50196078430000002" alpha="0.16" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="1" id="cQZ-xj-Vgm"/>
|
||||
</constraints>
|
||||
@ -254,7 +250,7 @@
|
||||
</variation>
|
||||
</stackView>
|
||||
</subviews>
|
||||
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<color key="backgroundColor" systemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/>
|
||||
<constraints>
|
||||
<constraint firstItem="fkg-ea-ep8" firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="gqV-bc-IWP" secondAttribute="trailing" constant="16" id="0rs-zI-ACJ"/>
|
||||
<constraint firstItem="fkg-ea-ep8" firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="gqV-bc-IWP" secondAttribute="trailing" constant="16" id="7kO-54-VNT"/>
|
||||
@ -304,14 +300,14 @@
|
||||
<objects>
|
||||
<viewController storyboardIdentifier="LibraryOnboardingController" id="pDz-Ac-jhD" customClass="LibraryOnboardingController" customModule="Kiwix" customModuleProvider="target" sceneMemberID="viewController">
|
||||
<view key="view" contentMode="scaleToFill" id="Dwj-PX-Ijj">
|
||||
<rect key="frame" x="0.0" y="0.0" width="320" height="768"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" alignment="center" spacing="40" translatesAutoresizingMaskIntoConstraints="NO" id="8oA-El-aTo">
|
||||
<rect key="frame" x="16" y="254" width="288" height="324"/>
|
||||
<rect key="frame" x="16" y="313" width="382" height="324"/>
|
||||
<subviews>
|
||||
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" alignment="center" translatesAutoresizingMaskIntoConstraints="NO" id="ztY-Ie-nWP">
|
||||
<rect key="frame" x="94" y="0.0" width="100" height="100"/>
|
||||
<rect key="frame" x="141" y="0.0" width="100" height="100"/>
|
||||
<subviews>
|
||||
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="Book" translatesAutoresizingMaskIntoConstraints="NO" id="LNA-fY-BDE">
|
||||
<rect key="frame" x="0.0" y="0.0" width="100" height="100"/>
|
||||
@ -324,16 +320,16 @@
|
||||
<variation key="heightClass=compact" hidden="YES"/>
|
||||
</stackView>
|
||||
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" alignment="center" spacingType="standard" translatesAutoresizingMaskIntoConstraints="NO" id="v2d-zr-nei">
|
||||
<rect key="frame" x="0.0" y="140" width="288" height="54"/>
|
||||
<rect key="frame" x="0.0" y="140" width="382" height="54"/>
|
||||
<subviews>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumFontSize="20" translatesAutoresizingMaskIntoConstraints="NO" id="Z7u-05-WXc">
|
||||
<rect key="frame" x="114" y="0.0" width="60" height="29"/>
|
||||
<rect key="frame" x="161" y="0.0" width="60" height="29"/>
|
||||
<fontDescription key="fontDescription" type="system" weight="semibold" pointSize="24"/>
|
||||
<color key="textColor" white="0.33333333329999998" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="kLk-ns-EG2">
|
||||
<rect key="frame" x="0.0" y="37" width="288" height="17"/>
|
||||
<rect key="frame" x="0.0" y="37" width="382" height="17"/>
|
||||
<string key="text">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla tincidunt commodo enim, sed condimentum odio tristique vel. Pellentesque a mauris eu eros interdum pharetra. </string>
|
||||
<fontDescription key="fontDescription" type="system" weight="medium" pointSize="14"/>
|
||||
<color key="textColor" white="0.66666666666666663" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
@ -342,7 +338,7 @@
|
||||
</subviews>
|
||||
</stackView>
|
||||
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" alignment="center" translatesAutoresizingMaskIntoConstraints="NO" id="URz-zo-RNo">
|
||||
<rect key="frame" x="134" y="234" width="20" height="20"/>
|
||||
<rect key="frame" x="181" y="234" width="20" height="20"/>
|
||||
<subviews>
|
||||
<activityIndicatorView hidden="YES" opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" hidesWhenStopped="YES" style="gray" translatesAutoresizingMaskIntoConstraints="NO" id="gaI-kr-Za5">
|
||||
<rect key="frame" x="0.0" y="0.0" width="20" height="20"/>
|
||||
@ -353,7 +349,7 @@
|
||||
</constraints>
|
||||
</stackView>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="FcF-Yh-Bcn" customClass="RoundedButton" customModule="Kiwix" customModuleProvider="target">
|
||||
<rect key="frame" x="121" y="294" width="46" height="30"/>
|
||||
<rect key="frame" x="168" y="294" width="46" height="30"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" relation="lessThanOrEqual" constant="300" id="D21-SR-4MG"/>
|
||||
</constraints>
|
||||
@ -395,7 +391,7 @@
|
||||
<navigationController storyboardIdentifier="LibraryOnboardingNavController" automaticallyAdjustsScrollViewInsets="NO" id="ktd-TF-FVo" sceneMemberID="viewController">
|
||||
<toolbarItems/>
|
||||
<navigationBar key="navigationBar" contentMode="scaleToFill" insetsLayoutMarginsFromSafeArea="NO" id="V7G-Dj-goh">
|
||||
<rect key="frame" x="0.0" y="20" width="320" height="44"/>
|
||||
<rect key="frame" x="0.0" y="44" width="414" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
</navigationBar>
|
||||
<nil name="viewControllers"/>
|
||||
|
@ -16,7 +16,7 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate {
|
||||
options connectionOptions: UIScene.ConnectionOptions) {
|
||||
if let windowScene = scene as? UIWindowScene {
|
||||
window = UIWindow(windowScene: windowScene)
|
||||
window?.rootViewController = RootSplitController()
|
||||
window?.rootViewController = RootController()
|
||||
window?.makeKeyAndVisible()
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user