mirror of
https://github.com/kiwix/kiwix-apple.git
synced 2025-09-27 22:10:57 -04:00
Button popover programmatically
This commit is contained in:
parent
d2dfaa7612
commit
a44c087161
@ -21,19 +21,53 @@ class LibraryBooksController: CoreDataCollectionBaseController, UICollectionView
|
||||
}
|
||||
}
|
||||
|
||||
@IBAction func dismissButtonTapped(_ sender: UIBarButtonItem) {
|
||||
dismiss(animated: true, completion: nil)
|
||||
}
|
||||
|
||||
func configureItemWidth(collectionViewWidth: CGFloat) {
|
||||
let itemsPerRow = (collectionViewWidth / 320).rounded()
|
||||
itemWidth = (collectionViewWidth - 1 * (itemsPerRow - 1)) / itemsPerRow
|
||||
}
|
||||
|
||||
// MARK: - UIControls
|
||||
|
||||
let languageFilterButton = UIBarButtonItem(image: UIImage(named: "LanguageFilter"), style: .plain, target: nil, action: nil)
|
||||
let downlaodButton = UIBarButtonItem(image: UIImage(named: "Download"), style: .plain, target: nil, action: nil)
|
||||
@IBAction func dismissButtonTapped(_ sender: UIBarButtonItem) {
|
||||
dismiss(animated: true, completion: nil)
|
||||
}
|
||||
|
||||
func configureBarButtons() {
|
||||
if isCloudTab {
|
||||
languageFilterButton.target = self
|
||||
languageFilterButton.action = #selector(languageFilterButtonTapped(sender:))
|
||||
downlaodButton.target = self
|
||||
downlaodButton.action = #selector(downloadButtonTapped(sender:))
|
||||
navigationItem.rightBarButtonItems = [languageFilterButton, downlaodButton]
|
||||
} else {
|
||||
navigationItem.rightBarButtonItem = editButtonItem
|
||||
}
|
||||
}
|
||||
|
||||
func languageFilterButtonTapped(sender: UIBarButtonItem) {
|
||||
let controller = UIStoryboard(name: "Library", bundle: nil).instantiateViewController(withIdentifier: "LibraryLanguageNavController")
|
||||
controller.modalPresentationStyle = .popover
|
||||
controller.popoverPresentationController?.barButtonItem = sender
|
||||
present(controller, animated: true, completion: nil)
|
||||
}
|
||||
|
||||
func downloadButtonTapped(sender: UIBarButtonItem) {
|
||||
let controller = UIStoryboard(name: "Library", bundle: nil).instantiateViewController(withIdentifier: "LibraryDownloadNavController")
|
||||
controller.modalPresentationStyle = .popover
|
||||
controller.popoverPresentationController?.barButtonItem = sender
|
||||
present(controller, animated: true, completion: nil)
|
||||
}
|
||||
|
||||
// MARK: - Override
|
||||
|
||||
override func viewDidLoad() {
|
||||
super.viewDidLoad()
|
||||
|
||||
configureRefreshControl()
|
||||
configureBarButtons()
|
||||
if isCloudTab { configureRefreshControl() }
|
||||
|
||||
if let layout = collectionView.collectionViewLayout as? UICollectionViewFlowLayout {
|
||||
layout.minimumInteritemSpacing = 1
|
||||
layout.minimumLineSpacing = 1
|
||||
@ -186,11 +220,15 @@ class LibraryBooksController: CoreDataCollectionBaseController, UICollectionView
|
||||
}()
|
||||
|
||||
var predicate: NSCompoundPredicate {
|
||||
let displayedLanguages = Language.fetch(displayed: true, context: managedObjectContext)
|
||||
return NSCompoundPredicate(andPredicateWithSubpredicates: [
|
||||
NSPredicate(format: "stateRaw == 0 OR stateRaw == 1"),
|
||||
displayedLanguages.count > 0 ? NSPredicate(format: "language IN %@", displayedLanguages) : NSPredicate(format: "language.name != nil")
|
||||
])
|
||||
if isCloudTab {
|
||||
let displayedLanguages = Language.fetch(displayed: true, context: managedObjectContext)
|
||||
return NSCompoundPredicate(andPredicateWithSubpredicates: [
|
||||
NSPredicate(format: "stateRaw == 0 OR stateRaw == 1"),
|
||||
displayedLanguages.count > 0 ? NSPredicate(format: "language IN %@", displayedLanguages) : NSPredicate(format: "language.name != nil")
|
||||
])
|
||||
} else {
|
||||
return NSCompoundPredicate(andPredicateWithSubpredicates: [NSPredicate(format: "stateRaw == 2")])
|
||||
}
|
||||
}
|
||||
|
||||
func reloadFetchedResultController() {
|
||||
|
@ -7,7 +7,6 @@
|
||||
<deployment identifier="iOS"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="12072"/>
|
||||
<capability name="Constraints to layout margins" minToolsVersion="6.0"/>
|
||||
<capability name="Navigation items with more than one left or right bar item" minToolsVersion="7.0"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<scenes>
|
||||
@ -156,22 +155,6 @@
|
||||
<action selector="dismissButtonTapped:" destination="cDq-va-k4I" id="RgX-lM-cfN"/>
|
||||
</connections>
|
||||
</barButtonItem>
|
||||
<rightBarButtonItems>
|
||||
<barButtonItem image="LanguageFilter" id="0v8-uV-zCG">
|
||||
<connections>
|
||||
<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"/>
|
||||
</segue>
|
||||
</connections>
|
||||
</barButtonItem>
|
||||
<barButtonItem image="Download" id="dtT-qi-KWI">
|
||||
<connections>
|
||||
<segue destination="slW-nF-UiF" kind="popoverPresentation" popoverAnchorBarButtonItem="dtT-qi-KWI" id="NDd-oj-RlO">
|
||||
<popoverArrowDirection key="popoverArrowDirection" up="YES" down="YES" left="YES" right="YES"/>
|
||||
</segue>
|
||||
</connections>
|
||||
</barButtonItem>
|
||||
</rightBarButtonItems>
|
||||
</navigationItem>
|
||||
<connections>
|
||||
<outlet property="collectionView" destination="UY0-46-c3y" id="lFH-jM-jh7"/>
|
||||
@ -212,12 +195,12 @@
|
||||
</navigationController>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="h1k-OL-RxH" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
||||
</objects>
|
||||
<point key="canvasLocation" x="-1112.8" y="-1395.6521739130435"/>
|
||||
<point key="canvasLocation" x="-1074" y="-1396"/>
|
||||
</scene>
|
||||
<!--Navigation Controller-->
|
||||
<scene sceneID="009-Nq-Jlu">
|
||||
<objects>
|
||||
<navigationController automaticallyAdjustsScrollViewInsets="NO" id="yzc-l3-ioG" sceneMemberID="viewController">
|
||||
<navigationController storyboardIdentifier="LibraryLanguageNavController" automaticallyAdjustsScrollViewInsets="NO" id="yzc-l3-ioG" sceneMemberID="viewController">
|
||||
<toolbarItems/>
|
||||
<navigationBar key="navigationBar" contentMode="scaleToFill" id="Wdw-pU-0LU">
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="44"/>
|
||||
@ -230,7 +213,7 @@
|
||||
</navigationController>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="HvZ-jb-XAs" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
||||
</objects>
|
||||
<point key="canvasLocation" x="722" y="-1396"/>
|
||||
<point key="canvasLocation" x="-1074" y="65"/>
|
||||
</scene>
|
||||
<!--Library Language Controller-->
|
||||
<scene sceneID="jB1-ec-I5Q">
|
||||
@ -296,12 +279,12 @@
|
||||
</tableViewController>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="MZw-BB-s9z" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
||||
</objects>
|
||||
<point key="canvasLocation" x="1623" y="-1397"/>
|
||||
<point key="canvasLocation" x="-174" y="64"/>
|
||||
</scene>
|
||||
<!--Navigation Controller-->
|
||||
<scene sceneID="INT-af-HVz">
|
||||
<objects>
|
||||
<navigationController automaticallyAdjustsScrollViewInsets="NO" id="slW-nF-UiF" sceneMemberID="viewController">
|
||||
<navigationController storyboardIdentifier="LibraryDownloadNavController" automaticallyAdjustsScrollViewInsets="NO" id="slW-nF-UiF" sceneMemberID="viewController">
|
||||
<toolbarItems/>
|
||||
<navigationBar key="navigationBar" contentMode="scaleToFill" id="AEw-P0-Tdq">
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="44"/>
|
||||
@ -314,7 +297,7 @@
|
||||
</navigationController>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="z5c-N8-xas" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
||||
</objects>
|
||||
<point key="canvasLocation" x="721" y="-2118"/>
|
||||
<point key="canvasLocation" x="-1074" y="-657"/>
|
||||
</scene>
|
||||
<!--Library Download Controller-->
|
||||
<scene sceneID="oBK-si-54D">
|
||||
@ -389,13 +372,11 @@
|
||||
</viewController>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="Rra-HQ-Ajz" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
||||
</objects>
|
||||
<point key="canvasLocation" x="1622" y="-2119"/>
|
||||
<point key="canvasLocation" x="-174" y="-658"/>
|
||||
</scene>
|
||||
</scenes>
|
||||
<resources>
|
||||
<image name="Cross" width="16" height="16"/>
|
||||
<image name="Dots" width="16" height="16"/>
|
||||
<image name="Download" width="16" height="16"/>
|
||||
<image name="LanguageFilter" width="16" height="16"/>
|
||||
</resources>
|
||||
</document>
|
||||
|
Loading…
x
Reference in New Issue
Block a user