mirror of
https://github.com/kiwix/kiwix-apple.git
synced 2025-09-27 05:49:25 -04:00
Language filter
This commit is contained in:
parent
4663c1fc69
commit
330933b60d
@ -49,6 +49,16 @@ class LibraryBooksController: CoreDataCollectionBaseController, UICollectionView
|
|||||||
collectionView.collectionViewLayout.invalidateLayout()
|
collectionView.collectionViewLayout.invalidateLayout()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
|
||||||
|
if segue.identifier == "showLangFilter" {
|
||||||
|
let nav = segue.destination as? UINavigationController
|
||||||
|
let controller = nav?.topViewController as? LibraryLanguageController
|
||||||
|
controller?.dismissBlock = {[unowned self] in
|
||||||
|
print("sdjk")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// MARK: - Refresh
|
// MARK: - Refresh
|
||||||
|
|
||||||
private(set) var isRefreshing = false // used to control text on empty table view
|
private(set) var isRefreshing = false // used to control text on empty table view
|
||||||
@ -111,7 +121,6 @@ class LibraryBooksController: CoreDataCollectionBaseController, UICollectionView
|
|||||||
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "Cell", for: indexPath) as! LibraryCollectionCell
|
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "Cell", for: indexPath) as! LibraryCollectionCell
|
||||||
|
|
||||||
let book = fetchedResultController.object(at: indexPath)
|
let book = fetchedResultController.object(at: indexPath)
|
||||||
print(book.meta4URL)
|
|
||||||
cell.delegate = self
|
cell.delegate = self
|
||||||
cell.imageView.image = UIImage(data: book.favIcon ?? Data())
|
cell.imageView.image = UIImage(data: book.favIcon ?? Data())
|
||||||
cell.titleLabel.text = book.title
|
cell.titleLabel.text = book.title
|
||||||
@ -155,7 +164,6 @@ class LibraryBooksController: CoreDataCollectionBaseController, UICollectionView
|
|||||||
let titleDescriptor = NSSortDescriptor(key: "title", ascending: true)
|
let titleDescriptor = NSSortDescriptor(key: "title", ascending: true)
|
||||||
fetchRequest.sortDescriptors = [langDescriptor, titleDescriptor]
|
fetchRequest.sortDescriptors = [langDescriptor, titleDescriptor]
|
||||||
fetchRequest.predicate = NSPredicate(format: "language.name != nil")
|
fetchRequest.predicate = NSPredicate(format: "language.name != nil")
|
||||||
//// fetchRequest.predicate = self.onlineCompoundPredicate
|
|
||||||
|
|
||||||
let controller = NSFetchedResultsController(fetchRequest: fetchRequest,
|
let controller = NSFetchedResultsController(fetchRequest: fetchRequest,
|
||||||
managedObjectContext: self.managedObjectContext,
|
managedObjectContext: self.managedObjectContext,
|
||||||
@ -165,3 +173,9 @@ class LibraryBooksController: CoreDataCollectionBaseController, UICollectionView
|
|||||||
return controller as! NSFetchedResultsController<Book>
|
return controller as! NSFetchedResultsController<Book>
|
||||||
}()
|
}()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
extension Localized {
|
||||||
|
class Library {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -2,22 +2,167 @@
|
|||||||
// LibraryLanguageController.swift
|
// LibraryLanguageController.swift
|
||||||
// Kiwix
|
// Kiwix
|
||||||
//
|
//
|
||||||
// Created by Chris Li on 1/23/17.
|
// Created by Chris Li on 1/24/17.
|
||||||
// Copyright © 2017 Chris Li. All rights reserved.
|
// Copyright © 2017 Chris Li. All rights reserved.
|
||||||
//
|
//
|
||||||
|
|
||||||
import UIKit
|
import UIKit
|
||||||
|
import CoreData
|
||||||
|
import DZNEmptyDataSet
|
||||||
|
|
||||||
class LibraryLanguageController: CoreDataTableBaseController {
|
class LibraryLanguageController: UITableViewController, NSFetchedResultsControllerDelegate, DZNEmptyDataSetSource, DZNEmptyDataSetDelegate {
|
||||||
|
|
||||||
|
@IBOutlet weak var langNameSegmentedControl: UISegmentedControl!
|
||||||
|
@IBAction func segmentedControlChanged(_ sender: UISegmentedControl) {
|
||||||
|
Preference.LangFilter.displayInOriginalLocale = !Preference.LangFilter.displayInOriginalLocale
|
||||||
|
tableView.reloadRows(at: tableView.indexPathsForVisibleRows ?? [IndexPath](), with: .automatic)
|
||||||
|
}
|
||||||
|
@IBAction func doneButtonTapped(_ sender: UIBarButtonItem) {
|
||||||
|
dismiss(animated: true, completion: nil)
|
||||||
|
}
|
||||||
|
|
||||||
|
private let managedObjectContext = AppDelegate.persistentContainer.viewContext
|
||||||
|
private var initialShowLanguageSet = Set<Language>()
|
||||||
|
private var showLanguages = [Language]()
|
||||||
|
private var hideLanguages = [Language]()
|
||||||
|
var dismissBlock: (() -> Void)?
|
||||||
|
|
||||||
override func viewDidLoad() {
|
override func viewDidLoad() {
|
||||||
super.viewDidLoad()
|
super.viewDidLoad()
|
||||||
|
|
||||||
// Do any additional setup after loading the view.
|
showLanguages = Language.fetch(displayed: true, context: managedObjectContext)
|
||||||
|
hideLanguages = Language.fetch(displayed: false, context: managedObjectContext)
|
||||||
|
initialShowLanguageSet = Set(showLanguages)
|
||||||
|
|
||||||
|
configureSegmentedControls()
|
||||||
|
sort()
|
||||||
}
|
}
|
||||||
|
|
||||||
@IBAction func dismissButtonTapped(_ sender: UIBarButtonItem) {
|
override func viewWillDisappear(_ animated: Bool) {
|
||||||
dismiss(animated: true, completion: nil)
|
super.viewWillDisappear(animated)
|
||||||
|
dismissBlock?()
|
||||||
|
}
|
||||||
|
|
||||||
|
func configureSegmentedControls() {
|
||||||
|
langNameSegmentedControl.selectedSegmentIndex = Preference.LangFilter.displayInOriginalLocale == true ? 1 : 0
|
||||||
|
langNameSegmentedControl.setTitle((Locale.current as NSLocale).displayName(forKey: NSLocale.Key.identifier, value: Locale.preferredLangCodes[0]), forSegmentAt: 0)
|
||||||
|
langNameSegmentedControl.setTitle(Localized.Library.LanguageFilter.original, forSegmentAt: 1)
|
||||||
|
}
|
||||||
|
|
||||||
|
// MARK: - Sort
|
||||||
|
|
||||||
|
func sort() {
|
||||||
|
showLanguages = sortByCountDesc(languages: showLanguages)
|
||||||
|
hideLanguages = sortByCountDesc(languages: hideLanguages)
|
||||||
|
}
|
||||||
|
|
||||||
|
func sortByCountDesc(languages: [Language]) -> [Language] {
|
||||||
|
return languages.sorted { (language0, language1) -> Bool in
|
||||||
|
let count0 = language0.books.count
|
||||||
|
let count1 = language1.books.count
|
||||||
|
guard count0 != count1 else {
|
||||||
|
return alphabeticalAscCompare(language0: language0, language1: language1,
|
||||||
|
byOriginalLocale: Preference.LangFilter.displayInOriginalLocale)
|
||||||
|
}
|
||||||
|
return count0 > count1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private func alphabeticalAscCompare(language0: Language, language1: Language, byOriginalLocale: Bool) -> Bool {
|
||||||
|
if byOriginalLocale {
|
||||||
|
guard let name0 = language0.nameInOriginalLocale,
|
||||||
|
let name1 = language1.nameInOriginalLocale else {return false}
|
||||||
|
return name0.compare(name1) == .orderedAscending
|
||||||
|
} else {
|
||||||
|
guard let name0 = language0.nameInCurrentLocale,
|
||||||
|
let name1 = language1.nameInCurrentLocale else {return false}
|
||||||
|
return name0.compare(name1) == .orderedAscending
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// MARK: - Table view data source
|
||||||
|
|
||||||
|
override func numberOfSections(in tableView: UITableView) -> Int {
|
||||||
|
return 2
|
||||||
|
}
|
||||||
|
|
||||||
|
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
|
||||||
|
return section == 0 ? showLanguages.count : hideLanguages.count
|
||||||
|
}
|
||||||
|
|
||||||
|
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
|
||||||
|
let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath)
|
||||||
|
if indexPath.section == 0 {
|
||||||
|
configureCell(cell, atIndexPath: indexPath, language: showLanguages[indexPath.row])
|
||||||
|
} else {
|
||||||
|
configureCell(cell, atIndexPath: indexPath, language: hideLanguages[indexPath.row])
|
||||||
|
}
|
||||||
|
return cell
|
||||||
|
}
|
||||||
|
|
||||||
|
func configureCell(_ cell: UITableViewCell, atIndexPath indexPath: IndexPath, language: Language) {
|
||||||
|
cell.textLabel?.text = Preference.LangFilter.displayInOriginalLocale ? language.nameInOriginalLocale : language.nameInCurrentLocale
|
||||||
|
cell.detailTextLabel?.text = language.books.count.description
|
||||||
|
}
|
||||||
|
|
||||||
|
override func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
|
||||||
|
if showLanguages.count == 0 {
|
||||||
|
return section == 0 ? "" : Localized.Library.LanguageFilter.all + " "
|
||||||
|
} else {
|
||||||
|
return section == 0 ? Localized.Library.LanguageFilter.showing : Localized.Library.LanguageFilter.hiding
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// MARK: - Table view delegate
|
||||||
|
|
||||||
|
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
|
||||||
|
func animateUpdates(_ originalIndexPath: IndexPath, destinationIndexPath: IndexPath) {
|
||||||
|
tableView.beginUpdates()
|
||||||
|
tableView.deleteRows(at: [indexPath], with: .right)
|
||||||
|
tableView.insertRows(at: [destinationIndexPath], with: .right)
|
||||||
|
tableView.headerView(forSection: 0)?.textLabel?.text = self.tableView(tableView, titleForHeaderInSection: 0)
|
||||||
|
tableView.headerView(forSection: 1)?.textLabel?.text = self.tableView(tableView, titleForHeaderInSection: 1)
|
||||||
|
tableView.endUpdates()
|
||||||
|
}
|
||||||
|
|
||||||
|
if indexPath.section == 0 {
|
||||||
|
let language = showLanguages[indexPath.row]
|
||||||
|
language.isDisplayed = false
|
||||||
|
hideLanguages.append(language)
|
||||||
|
showLanguages.remove(at: indexPath.row)
|
||||||
|
hideLanguages = sortByCountDesc(languages: hideLanguages)
|
||||||
|
|
||||||
|
guard let row = hideLanguages.index(of: language) else {tableView.reloadData(); return}
|
||||||
|
let destinationIndexPath = IndexPath(row: row, section: 1)
|
||||||
|
animateUpdates(indexPath, destinationIndexPath: destinationIndexPath)
|
||||||
|
} else {
|
||||||
|
let language = hideLanguages[indexPath.row]
|
||||||
|
language.isDisplayed = true
|
||||||
|
showLanguages.append(language)
|
||||||
|
hideLanguages.remove(at: indexPath.row)
|
||||||
|
showLanguages = sortByCountDesc(languages: showLanguages)
|
||||||
|
|
||||||
|
guard let row = showLanguages.index(of: language) else {tableView.reloadData(); return}
|
||||||
|
let destinationIndexPath = IndexPath(row: row, section: 0)
|
||||||
|
animateUpdates(indexPath, destinationIndexPath: destinationIndexPath)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
override func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
|
||||||
|
if section == 0 {
|
||||||
|
return showLanguages.count == 0 ? CGFloat.leastNormalMagnitude : 44
|
||||||
|
} else {
|
||||||
|
return 30
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
extension Localized.Library {
|
||||||
|
class LanguageFilter {
|
||||||
|
static let title = NSLocalizedString("Languages", comment: "Library, Language Filter")
|
||||||
|
static let all = NSLocalizedString("ALL", comment: "Library, Language Filter")
|
||||||
|
static let showing = NSLocalizedString("SHOWING", comment: "Library, Language Filter")
|
||||||
|
static let hiding = NSLocalizedString("HIDING", comment: "Library, Language Filter")
|
||||||
|
static let original = NSLocalizedString("Original", comment: "Library, Language Filter")
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -52,7 +52,7 @@
|
|||||||
</collectionViewFlowLayout>
|
</collectionViewFlowLayout>
|
||||||
<cells>
|
<cells>
|
||||||
<collectionViewCell opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" reuseIdentifier="Cell" id="Aea-Om-Uku" customClass="LibraryCollectionCell" customModule="Kiwix" customModuleProvider="target">
|
<collectionViewCell opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" reuseIdentifier="Cell" id="Aea-Om-Uku" customClass="LibraryCollectionCell" customModule="Kiwix" customModuleProvider="target">
|
||||||
<rect key="frame" x="28" y="0.0" width="320" height="66"/>
|
<rect key="frame" x="27.5" y="0.0" width="320" height="66"/>
|
||||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||||
<view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">
|
<view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="320" height="66"/>
|
<rect key="frame" x="0.0" y="0.0" width="320" height="66"/>
|
||||||
@ -175,7 +175,7 @@
|
|||||||
</barButtonItem>
|
</barButtonItem>
|
||||||
<barButtonItem key="rightBarButtonItem" image="LanguageFilter" id="0v8-uV-zCG">
|
<barButtonItem key="rightBarButtonItem" image="LanguageFilter" id="0v8-uV-zCG">
|
||||||
<connections>
|
<connections>
|
||||||
<segue destination="9UV-8Y-ZY2" kind="popoverPresentation" popoverAnchorBarButtonItem="0v8-uV-zCG" id="PFl-Zb-f3y">
|
<segue destination="yzc-l3-ioG" kind="popoverPresentation" identifier="showLangFilter" popoverAnchorBarButtonItem="0v8-uV-zCG" id="hlL-SF-vTM">
|
||||||
<popoverArrowDirection key="popoverArrowDirection" up="YES" down="YES" left="YES" right="YES"/>
|
<popoverArrowDirection key="popoverArrowDirection" up="YES" down="YES" left="YES" right="YES"/>
|
||||||
</segue>
|
</segue>
|
||||||
</connections>
|
</connections>
|
||||||
@ -189,46 +189,6 @@
|
|||||||
</objects>
|
</objects>
|
||||||
<point key="canvasLocation" x="-173.59999999999999" y="-1395.6521739130435"/>
|
<point key="canvasLocation" x="-173.59999999999999" y="-1395.6521739130435"/>
|
||||||
</scene>
|
</scene>
|
||||||
<!--Library Language Controller-->
|
|
||||||
<scene sceneID="nQz-wd-Pht">
|
|
||||||
<objects>
|
|
||||||
<viewController id="AY1-gf-NdX" customClass="LibraryLanguageController" customModule="Kiwix" customModuleProvider="target" sceneMemberID="viewController">
|
|
||||||
<layoutGuides>
|
|
||||||
<viewControllerLayoutGuide type="top" id="Gbe-6q-AdX"/>
|
|
||||||
<viewControllerLayoutGuide type="bottom" id="8vj-R1-8rW"/>
|
|
||||||
</layoutGuides>
|
|
||||||
<view key="view" contentMode="scaleToFill" id="mon-4F-A4S">
|
|
||||||
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
|
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
|
||||||
<subviews>
|
|
||||||
<tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="44" sectionHeaderHeight="28" sectionFooterHeight="28" translatesAutoresizingMaskIntoConstraints="NO" id="28D-2G-Cvf">
|
|
||||||
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
|
|
||||||
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
|
||||||
</tableView>
|
|
||||||
</subviews>
|
|
||||||
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
|
||||||
<constraints>
|
|
||||||
<constraint firstItem="28D-2G-Cvf" firstAttribute="top" secondItem="mon-4F-A4S" secondAttribute="top" id="DJO-iO-hYh"/>
|
|
||||||
<constraint firstItem="28D-2G-Cvf" firstAttribute="leading" secondItem="mon-4F-A4S" secondAttribute="leading" id="E9e-XT-g3D"/>
|
|
||||||
<constraint firstItem="8vj-R1-8rW" firstAttribute="top" secondItem="28D-2G-Cvf" secondAttribute="bottom" id="pQ2-u7-NMz"/>
|
|
||||||
<constraint firstAttribute="trailing" secondItem="28D-2G-Cvf" secondAttribute="trailing" id="rLN-pb-zDN"/>
|
|
||||||
</constraints>
|
|
||||||
</view>
|
|
||||||
<navigationItem key="navigationItem" id="vzE-Av-BsR">
|
|
||||||
<barButtonItem key="leftBarButtonItem" systemItem="done" id="OR7-vP-57g">
|
|
||||||
<connections>
|
|
||||||
<action selector="dismissButtonTapped:" destination="AY1-gf-NdX" id="PQe-Ul-pjG"/>
|
|
||||||
</connections>
|
|
||||||
</barButtonItem>
|
|
||||||
</navigationItem>
|
|
||||||
<connections>
|
|
||||||
<outlet property="tableView" destination="28D-2G-Cvf" id="wxf-wh-F7V"/>
|
|
||||||
</connections>
|
|
||||||
</viewController>
|
|
||||||
<placeholder placeholderIdentifier="IBFirstResponder" id="LO6-m0-Uxj" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
|
||||||
</objects>
|
|
||||||
<point key="canvasLocation" x="1712.8" y="-1396.5517241379312"/>
|
|
||||||
</scene>
|
|
||||||
<!--Tab Bar Controller-->
|
<!--Tab Bar Controller-->
|
||||||
<scene sceneID="c2f-93-r3I">
|
<scene sceneID="c2f-93-r3I">
|
||||||
<objects>
|
<objects>
|
||||||
@ -286,22 +246,88 @@
|
|||||||
<point key="canvasLocation" x="-1112.8" y="-740.7796101949026"/>
|
<point key="canvasLocation" x="-1112.8" y="-740.7796101949026"/>
|
||||||
</scene>
|
</scene>
|
||||||
<!--Navigation Controller-->
|
<!--Navigation Controller-->
|
||||||
<scene sceneID="p9k-Dg-805">
|
<scene sceneID="009-Nq-Jlu">
|
||||||
<objects>
|
<objects>
|
||||||
<navigationController automaticallyAdjustsScrollViewInsets="NO" id="9UV-8Y-ZY2" sceneMemberID="viewController">
|
<navigationController automaticallyAdjustsScrollViewInsets="NO" id="yzc-l3-ioG" sceneMemberID="viewController">
|
||||||
<toolbarItems/>
|
<toolbarItems/>
|
||||||
<navigationBar key="navigationBar" contentMode="scaleToFill" id="R1C-h3-seO">
|
<navigationBar key="navigationBar" contentMode="scaleToFill" id="Wdw-pU-0LU">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="375" height="44"/>
|
<rect key="frame" x="0.0" y="0.0" width="375" height="44"/>
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
</navigationBar>
|
</navigationBar>
|
||||||
<nil name="viewControllers"/>
|
<nil name="viewControllers"/>
|
||||||
<connections>
|
<connections>
|
||||||
<segue destination="AY1-gf-NdX" kind="relationship" relationship="rootViewController" id="sor-RY-jDf"/>
|
<segue destination="YXq-FN-ov8" kind="relationship" relationship="rootViewController" id="1TZ-7g-6UX"/>
|
||||||
</connections>
|
</connections>
|
||||||
</navigationController>
|
</navigationController>
|
||||||
<placeholder placeholderIdentifier="IBFirstResponder" id="VM9-Mm-1VF" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
<placeholder placeholderIdentifier="IBFirstResponder" id="HvZ-jb-XAs" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
||||||
</objects>
|
</objects>
|
||||||
<point key="canvasLocation" x="745" y="-1396"/>
|
<point key="canvasLocation" x="952.79999999999995" y="-1402.8485757121441"/>
|
||||||
|
</scene>
|
||||||
|
<!--Library Language Controller-->
|
||||||
|
<scene sceneID="jB1-ec-I5Q">
|
||||||
|
<objects>
|
||||||
|
<tableViewController storyboardIdentifier="LanguageFilterController" id="YXq-FN-ov8" customClass="LibraryLanguageController" customModule="Kiwix" customModuleProvider="target" sceneMemberID="viewController">
|
||||||
|
<tableView key="view" clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="grouped" separatorStyle="default" rowHeight="44" sectionHeaderHeight="18" sectionFooterHeight="18" id="gqM-t7-QqQ">
|
||||||
|
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
|
<color key="backgroundColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/>
|
||||||
|
<prototypes>
|
||||||
|
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" reuseIdentifier="Cell" textLabel="dyh-6J-ZGf" detailTextLabel="d0p-hJ-zVy" style="IBUITableViewCellStyleValue1" id="PuW-jR-mYi">
|
||||||
|
<rect key="frame" x="0.0" y="56" width="375" height="44"/>
|
||||||
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
|
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="PuW-jR-mYi" id="hQJ-5P-hy0">
|
||||||
|
<rect key="frame" x="0.0" y="0.0" width="375" height="43.5"/>
|
||||||
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
|
<subviews>
|
||||||
|
<label opaque="NO" multipleTouchEnabled="YES" contentMode="left" text="Title" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="dyh-6J-ZGf">
|
||||||
|
<rect key="frame" x="15" y="12" width="33.5" height="20.5"/>
|
||||||
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
|
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||||
|
<nil key="textColor"/>
|
||||||
|
<nil key="highlightedColor"/>
|
||||||
|
</label>
|
||||||
|
<label opaque="NO" multipleTouchEnabled="YES" contentMode="left" text="Detail" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="d0p-hJ-zVy">
|
||||||
|
<rect key="frame" x="316" y="12" width="44" height="20.5"/>
|
||||||
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
|
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||||
|
<nil key="textColor"/>
|
||||||
|
<nil key="highlightedColor"/>
|
||||||
|
</label>
|
||||||
|
</subviews>
|
||||||
|
</tableViewCellContentView>
|
||||||
|
</tableViewCell>
|
||||||
|
</prototypes>
|
||||||
|
<connections>
|
||||||
|
<outlet property="dataSource" destination="YXq-FN-ov8" id="hRN-3s-A7O"/>
|
||||||
|
<outlet property="delegate" destination="YXq-FN-ov8" id="D0R-dF-zb9"/>
|
||||||
|
</connections>
|
||||||
|
</tableView>
|
||||||
|
<navigationItem key="navigationItem" id="GNP-b4-wXb">
|
||||||
|
<nil key="title"/>
|
||||||
|
<barButtonItem key="leftBarButtonItem" style="done" systemItem="done" id="hYI-fs-ZEn">
|
||||||
|
<connections>
|
||||||
|
<action selector="doneButtonTapped:" destination="YXq-FN-ov8" id="ANg-X6-3dK"/>
|
||||||
|
</connections>
|
||||||
|
</barButtonItem>
|
||||||
|
<segmentedControl key="titleView" opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="top" segmentControlStyle="plain" selectedSegmentIndex="0" id="ODt-wT-Y6T">
|
||||||
|
<rect key="frame" x="126" y="8" width="123" height="29"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||||
|
<segments>
|
||||||
|
<segment title="English"/>
|
||||||
|
<segment title="Original"/>
|
||||||
|
</segments>
|
||||||
|
<connections>
|
||||||
|
<action selector="segmentedControlChanged:" destination="YXq-FN-ov8" eventType="valueChanged" id="8hy-Cm-9U2"/>
|
||||||
|
</connections>
|
||||||
|
</segmentedControl>
|
||||||
|
</navigationItem>
|
||||||
|
<connections>
|
||||||
|
<outlet property="langNameSegmentedControl" destination="ODt-wT-Y6T" id="6A8-6v-b1K"/>
|
||||||
|
</connections>
|
||||||
|
</tableViewController>
|
||||||
|
<placeholder placeholderIdentifier="IBFirstResponder" id="MZw-BB-s9z" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
||||||
|
</objects>
|
||||||
|
<point key="canvasLocation" x="1871" y="-1403"/>
|
||||||
</scene>
|
</scene>
|
||||||
</scenes>
|
</scenes>
|
||||||
<resources>
|
<resources>
|
||||||
|
@ -11,7 +11,6 @@
|
|||||||
9705D5941E368189005292AC /* Library.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 9705D5931E368189005292AC /* Library.storyboard */; };
|
9705D5941E368189005292AC /* Library.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 9705D5931E368189005292AC /* Library.storyboard */; };
|
||||||
9705D5961E368712005292AC /* LibraryBooksController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9705D5951E368712005292AC /* LibraryBooksController.swift */; };
|
9705D5961E368712005292AC /* LibraryBooksController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9705D5951E368712005292AC /* LibraryBooksController.swift */; };
|
||||||
9705D5981E368933005292AC /* CoreDataCollectionBaseController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9705D5971E368933005292AC /* CoreDataCollectionBaseController.swift */; };
|
9705D5981E368933005292AC /* CoreDataCollectionBaseController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9705D5971E368933005292AC /* CoreDataCollectionBaseController.swift */; };
|
||||||
9705D59A1E36B876005292AC /* LibraryLanguageController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9705D5991E36B876005292AC /* LibraryLanguageController.swift */; };
|
|
||||||
970A2A221DD562CB0078BB7C /* BookOperations.swift in Sources */ = {isa = PBXBuildFile; fileRef = 970A2A211DD562CB0078BB7C /* BookOperations.swift */; };
|
970A2A221DD562CB0078BB7C /* BookOperations.swift in Sources */ = {isa = PBXBuildFile; fileRef = 970A2A211DD562CB0078BB7C /* BookOperations.swift */; };
|
||||||
970E7F741D9DB0FC00741290 /* 1.8.xcmappingmodel in Sources */ = {isa = PBXBuildFile; fileRef = 970E7F731D9DB0FC00741290 /* 1.8.xcmappingmodel */; };
|
970E7F741D9DB0FC00741290 /* 1.8.xcmappingmodel in Sources */ = {isa = PBXBuildFile; fileRef = 970E7F731D9DB0FC00741290 /* 1.8.xcmappingmodel */; };
|
||||||
970E7F831DA0305000741290 /* WelcomeController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 970E7F7F1DA0305000741290 /* WelcomeController.swift */; };
|
970E7F831DA0305000741290 /* WelcomeController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 970E7F7F1DA0305000741290 /* WelcomeController.swift */; };
|
||||||
@ -36,6 +35,7 @@
|
|||||||
973208271DD2238B00EDD3DC /* Queue.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97D6811C1D6F70AC00E5FA99 /* Queue.swift */; };
|
973208271DD2238B00EDD3DC /* Queue.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97D6811C1D6F70AC00E5FA99 /* Queue.swift */; };
|
||||||
973208291DD223DB00EDD3DC /* RefreshLibrary.swift in Sources */ = {isa = PBXBuildFile; fileRef = 973208281DD223DB00EDD3DC /* RefreshLibrary.swift */; };
|
973208291DD223DB00EDD3DC /* RefreshLibrary.swift in Sources */ = {isa = PBXBuildFile; fileRef = 973208281DD223DB00EDD3DC /* RefreshLibrary.swift */; };
|
||||||
9734E54E1D289D060061C39B /* Welcome.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 9734E54D1D289D060061C39B /* Welcome.storyboard */; };
|
9734E54E1D289D060061C39B /* Welcome.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 9734E54D1D289D060061C39B /* Welcome.storyboard */; };
|
||||||
|
9737F6211E379D0700961020 /* LibraryLanguageController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9737F6201E379D0700961020 /* LibraryLanguageController.swift */; };
|
||||||
973A5C921DEA3F5600C7804C /* CoreDataTableBaseController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 973A5C911DEA3F5600C7804C /* CoreDataTableBaseController.swift */; };
|
973A5C921DEA3F5600C7804C /* CoreDataTableBaseController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 973A5C911DEA3F5600C7804C /* CoreDataTableBaseController.swift */; };
|
||||||
973A5C951DEA6DD000C7804C /* URLResponseCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = 973A5C931DEA6CA900C7804C /* URLResponseCache.swift */; };
|
973A5C951DEA6DD000C7804C /* URLResponseCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = 973A5C931DEA6CA900C7804C /* URLResponseCache.swift */; };
|
||||||
973A5C991DEBC54800C7804C /* CloudKit.swift in Sources */ = {isa = PBXBuildFile; fileRef = 973A5C981DEBC54800C7804C /* CloudKit.swift */; };
|
973A5C991DEBC54800C7804C /* CloudKit.swift in Sources */ = {isa = PBXBuildFile; fileRef = 973A5C981DEBC54800C7804C /* CloudKit.swift */; };
|
||||||
@ -96,7 +96,6 @@
|
|||||||
97BC0FBF1DD90A65004BBAD1 /* JSInjection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97BC0FBD1DD90A65004BBAD1 /* JSInjection.swift */; };
|
97BC0FBF1DD90A65004BBAD1 /* JSInjection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97BC0FBD1DD90A65004BBAD1 /* JSInjection.swift */; };
|
||||||
97BC0FC01DD90A65004BBAD1 /* MainController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97BC0FBE1DD90A65004BBAD1 /* MainController.swift */; };
|
97BC0FC01DD90A65004BBAD1 /* MainController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97BC0FBE1DD90A65004BBAD1 /* MainController.swift */; };
|
||||||
97BC0FC21DD92B62004BBAD1 /* Buttons.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97BC0FC11DD92B62004BBAD1 /* Buttons.swift */; };
|
97BC0FC21DD92B62004BBAD1 /* Buttons.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97BC0FC11DD92B62004BBAD1 /* Buttons.swift */; };
|
||||||
97C005D61D64B3B0004352E8 /* Library--old.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C005D51D64B3B0004352E8 /* Library--old.storyboard */; };
|
|
||||||
97C2C26A1DDCC58500A9CC64 /* ArticleOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9764CBD21D8083AA00072D6A /* ArticleOperation.swift */; };
|
97C2C26A1DDCC58500A9CC64 /* ArticleOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9764CBD21D8083AA00072D6A /* ArticleOperation.swift */; };
|
||||||
97C601DC1D7F15C400362D4F /* Bookmark.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C601DB1D7F15C400362D4F /* Bookmark.storyboard */; };
|
97C601DC1D7F15C400362D4F /* Bookmark.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C601DB1D7F15C400362D4F /* Bookmark.storyboard */; };
|
||||||
97C601DE1D7F342100362D4F /* HTMLHeading.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97C601DD1D7F342100362D4F /* HTMLHeading.swift */; };
|
97C601DE1D7F342100362D4F /* HTMLHeading.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97C601DD1D7F342100362D4F /* HTMLHeading.swift */; };
|
||||||
@ -163,7 +162,6 @@
|
|||||||
9705D5931E368189005292AC /* Library.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = Library.storyboard; sourceTree = "<group>"; };
|
9705D5931E368189005292AC /* Library.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = Library.storyboard; sourceTree = "<group>"; };
|
||||||
9705D5951E368712005292AC /* LibraryBooksController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LibraryBooksController.swift; sourceTree = "<group>"; };
|
9705D5951E368712005292AC /* LibraryBooksController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LibraryBooksController.swift; sourceTree = "<group>"; };
|
||||||
9705D5971E368933005292AC /* CoreDataCollectionBaseController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CoreDataCollectionBaseController.swift; sourceTree = "<group>"; };
|
9705D5971E368933005292AC /* CoreDataCollectionBaseController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CoreDataCollectionBaseController.swift; sourceTree = "<group>"; };
|
||||||
9705D5991E36B876005292AC /* LibraryLanguageController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LibraryLanguageController.swift; sourceTree = "<group>"; };
|
|
||||||
970912551D7F452C00BBD5A1 /* 1.8.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = 1.8.xcdatamodel; sourceTree = "<group>"; };
|
970912551D7F452C00BBD5A1 /* 1.8.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = 1.8.xcdatamodel; sourceTree = "<group>"; };
|
||||||
970A2A211DD562CB0078BB7C /* BookOperations.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BookOperations.swift; sourceTree = "<group>"; };
|
970A2A211DD562CB0078BB7C /* BookOperations.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BookOperations.swift; sourceTree = "<group>"; };
|
||||||
970E7F731D9DB0FC00741290 /* 1.8.xcmappingmodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcmappingmodel; name = 1.8.xcmappingmodel; path = Kiwix/CoreData/Migration/1.8.xcmappingmodel; sourceTree = SOURCE_ROOT; };
|
970E7F731D9DB0FC00741290 /* 1.8.xcmappingmodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcmappingmodel; name = 1.8.xcmappingmodel; path = Kiwix/CoreData/Migration/1.8.xcmappingmodel; sourceTree = SOURCE_ROOT; };
|
||||||
@ -191,6 +189,7 @@
|
|||||||
973208251DD21E9C00EDD3DC /* CoreDataContainer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CoreDataContainer.swift; sourceTree = "<group>"; };
|
973208251DD21E9C00EDD3DC /* CoreDataContainer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CoreDataContainer.swift; sourceTree = "<group>"; };
|
||||||
973208281DD223DB00EDD3DC /* RefreshLibrary.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RefreshLibrary.swift; sourceTree = "<group>"; };
|
973208281DD223DB00EDD3DC /* RefreshLibrary.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RefreshLibrary.swift; sourceTree = "<group>"; };
|
||||||
9734E54D1D289D060061C39B /* Welcome.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = Welcome.storyboard; path = "Kiwix-iOS/Storyboard/Welcome.storyboard"; sourceTree = SOURCE_ROOT; };
|
9734E54D1D289D060061C39B /* Welcome.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = Welcome.storyboard; path = "Kiwix-iOS/Storyboard/Welcome.storyboard"; sourceTree = SOURCE_ROOT; };
|
||||||
|
9737F6201E379D0700961020 /* LibraryLanguageController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LibraryLanguageController.swift; sourceTree = "<group>"; };
|
||||||
973A5C911DEA3F5600C7804C /* CoreDataTableBaseController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CoreDataTableBaseController.swift; sourceTree = "<group>"; };
|
973A5C911DEA3F5600C7804C /* CoreDataTableBaseController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CoreDataTableBaseController.swift; sourceTree = "<group>"; };
|
||||||
973A5C931DEA6CA900C7804C /* URLResponseCache.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = URLResponseCache.swift; sourceTree = "<group>"; };
|
973A5C931DEA6CA900C7804C /* URLResponseCache.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = URLResponseCache.swift; sourceTree = "<group>"; };
|
||||||
973A5C981DEBC54800C7804C /* CloudKit.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CloudKit.swift; sourceTree = "<group>"; };
|
973A5C981DEBC54800C7804C /* CloudKit.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CloudKit.swift; sourceTree = "<group>"; };
|
||||||
@ -265,7 +264,6 @@
|
|||||||
97BC0FBD1DD90A65004BBAD1 /* JSInjection.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = JSInjection.swift; sourceTree = "<group>"; };
|
97BC0FBD1DD90A65004BBAD1 /* JSInjection.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = JSInjection.swift; sourceTree = "<group>"; };
|
||||||
97BC0FBE1DD90A65004BBAD1 /* MainController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MainController.swift; sourceTree = "<group>"; };
|
97BC0FBE1DD90A65004BBAD1 /* MainController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MainController.swift; sourceTree = "<group>"; };
|
||||||
97BC0FC11DD92B62004BBAD1 /* Buttons.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Buttons.swift; sourceTree = "<group>"; };
|
97BC0FC11DD92B62004BBAD1 /* Buttons.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Buttons.swift; sourceTree = "<group>"; };
|
||||||
97C005D51D64B3B0004352E8 /* Library--old.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = "Library--old.storyboard"; path = "Kiwix-iOS/Storyboard/Library--old.storyboard"; sourceTree = SOURCE_ROOT; };
|
|
||||||
97C601DB1D7F15C400362D4F /* Bookmark.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = Bookmark.storyboard; sourceTree = "<group>"; };
|
97C601DB1D7F15C400362D4F /* Bookmark.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = Bookmark.storyboard; sourceTree = "<group>"; };
|
||||||
97C601DD1D7F342100362D4F /* HTMLHeading.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HTMLHeading.swift; sourceTree = "<group>"; };
|
97C601DD1D7F342100362D4F /* HTMLHeading.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HTMLHeading.swift; sourceTree = "<group>"; };
|
||||||
97D0E9921DDA487E0029530E /* SearchBaseController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SearchBaseController.swift; sourceTree = "<group>"; };
|
97D0E9921DDA487E0029530E /* SearchBaseController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SearchBaseController.swift; sourceTree = "<group>"; };
|
||||||
@ -625,7 +623,6 @@
|
|||||||
975227CA1D0227E8001D1DDE /* Main.storyboard */,
|
975227CA1D0227E8001D1DDE /* Main.storyboard */,
|
||||||
97C601DB1D7F15C400362D4F /* Bookmark.storyboard */,
|
97C601DB1D7F15C400362D4F /* Bookmark.storyboard */,
|
||||||
9705D5931E368189005292AC /* Library.storyboard */,
|
9705D5931E368189005292AC /* Library.storyboard */,
|
||||||
97C005D51D64B3B0004352E8 /* Library--old.storyboard */,
|
|
||||||
97F03CE11D2440470040D26E /* Search.storyboard */,
|
97F03CE11D2440470040D26E /* Search.storyboard */,
|
||||||
976C1DCF1E3000B6005EDEC4 /* Setting.storyboard */,
|
976C1DCF1E3000B6005EDEC4 /* Setting.storyboard */,
|
||||||
9734E54D1D289D060061C39B /* Welcome.storyboard */,
|
9734E54D1D289D060061C39B /* Welcome.storyboard */,
|
||||||
@ -728,7 +725,7 @@
|
|||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
9705D5951E368712005292AC /* LibraryBooksController.swift */,
|
9705D5951E368712005292AC /* LibraryBooksController.swift */,
|
||||||
9705D5991E36B876005292AC /* LibraryLanguageController.swift */,
|
9737F6201E379D0700961020 /* LibraryLanguageController.swift */,
|
||||||
);
|
);
|
||||||
path = Library;
|
path = Library;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
@ -979,7 +976,6 @@
|
|||||||
975227CD1D0227E8001D1DDE /* Main.storyboard in Resources */,
|
975227CD1D0227E8001D1DDE /* Main.storyboard in Resources */,
|
||||||
976C1DD01E3000B6005EDEC4 /* Setting.storyboard in Resources */,
|
976C1DD01E3000B6005EDEC4 /* Setting.storyboard in Resources */,
|
||||||
971A10801D022F74007FC62C /* Pic_I.png in Resources */,
|
971A10801D022F74007FC62C /* Pic_I.png in Resources */,
|
||||||
97C005D61D64B3B0004352E8 /* Library--old.storyboard in Resources */,
|
|
||||||
971A107F1D022F74007FC62C /* ImportBookLearnMore.html in Resources */,
|
971A107F1D022F74007FC62C /* ImportBookLearnMore.html in Resources */,
|
||||||
971A107E1D022F74007FC62C /* DownloaderLearnMore.html in Resources */,
|
971A107E1D022F74007FC62C /* DownloaderLearnMore.html in Resources */,
|
||||||
);
|
);
|
||||||
@ -1102,7 +1098,7 @@
|
|||||||
9705D5961E368712005292AC /* LibraryBooksController.swift in Sources */,
|
9705D5961E368712005292AC /* LibraryBooksController.swift in Sources */,
|
||||||
97D681391D6F711A00E5FA99 /* DownloadTask.swift in Sources */,
|
97D681391D6F711A00E5FA99 /* DownloadTask.swift in Sources */,
|
||||||
977B954D1DD4C40400F6F62B /* ScanLocalBook.swift in Sources */,
|
977B954D1DD4C40400F6F62B /* ScanLocalBook.swift in Sources */,
|
||||||
9705D59A1E36B876005292AC /* LibraryLanguageController.swift in Sources */,
|
9737F6211E379D0700961020 /* LibraryLanguageController.swift in Sources */,
|
||||||
97D681321D6F70EC00E5FA99 /* MigrationPolicy.swift in Sources */,
|
97D681321D6F70EC00E5FA99 /* MigrationPolicy.swift in Sources */,
|
||||||
976C1DCB1E2FD5FC005EDEC4 /* TableOfContentsController.swift in Sources */,
|
976C1DCB1E2FD5FC005EDEC4 /* TableOfContentsController.swift in Sources */,
|
||||||
976C1DD81E327328005EDEC4 /* FontSizeController.swift in Sources */,
|
976C1DD81E327328005EDEC4 /* FontSizeController.swift in Sources */,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user