Skip to content

Commit 886d405

Browse files
author
Marino Faggiana
authored
New headers, menu, buttons in navigation controller, transfers (#3281)
Signed-off-by: Marino Faggiana <[email protected]>
1 parent 665c5ba commit 886d405

23 files changed

+650
-638
lines changed

Nextcloud.xcodeproj/project.pbxproj

+16
Original file line numberDiff line numberDiff line change
@@ -267,6 +267,7 @@
267267
F71F6D0B2B6A6A5E00F1EB15 /* ThreadSafeArray.swift in Sources */ = {isa = PBXBuildFile; fileRef = F71F6D062B6A6A5E00F1EB15 /* ThreadSafeArray.swift */; };
268268
F71F6D0C2B6A6A5E00F1EB15 /* ThreadSafeArray.swift in Sources */ = {isa = PBXBuildFile; fileRef = F71F6D062B6A6A5E00F1EB15 /* ThreadSafeArray.swift */; };
269269
F71F6D0D2B6A6A5E00F1EB15 /* ThreadSafeArray.swift in Sources */ = {isa = PBXBuildFile; fileRef = F71F6D062B6A6A5E00F1EB15 /* ThreadSafeArray.swift */; };
270+
F722133B2D40EF9D002F7438 /* NCFilesNavigationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F722133A2D40EF8C002F7438 /* NCFilesNavigationController.swift */; };
270271
F7226EDC1EE4089300EBECB1 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = F7226EDB1EE4089300EBECB1 /* Main.storyboard */; };
271272
F722F0112CFF569500065FB5 /* MainInterface.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = F722F0102CFF569500065FB5 /* MainInterface.storyboard */; };
272273
F723985C253C95CE00257F49 /* NCViewerRichdocument.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = F723985B253C95CE00257F49 /* NCViewerRichdocument.storyboard */; };
@@ -754,6 +755,9 @@
754755
F79EDAA526B004980007D134 /* NCPlayer.swift in Sources */ = {isa = PBXBuildFile; fileRef = F79EDAA126B004980007D134 /* NCPlayer.swift */; };
755756
F79FFB262A97C24A0055EEA4 /* NCNetworkingE2EEMarkFolder.swift in Sources */ = {isa = PBXBuildFile; fileRef = F79FFB252A97C24A0055EEA4 /* NCNetworkingE2EEMarkFolder.swift */; };
756757
F79FFB272A97C24A0055EEA4 /* NCNetworkingE2EEMarkFolder.swift in Sources */ = {isa = PBXBuildFile; fileRef = F79FFB252A97C24A0055EEA4 /* NCNetworkingE2EEMarkFolder.swift */; };
758+
F7A03E2F2D425A14007AA677 /* NCFavoriteNavigationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F7A03E2E2D425A14007AA677 /* NCFavoriteNavigationController.swift */; };
759+
F7A03E332D426115007AA677 /* NCMoreNavigationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F7A03E322D426115007AA677 /* NCMoreNavigationController.swift */; };
760+
F7A03E352D427312007AA677 /* NCMainNavigationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F7A03E342D427308007AA677 /* NCMainNavigationController.swift */; };
757761
F7A0D1352591FBC5008F8A13 /* String+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = F7A0D1342591FBC5008F8A13 /* String+Extension.swift */; };
758762
F7A0D1362591FBC5008F8A13 /* String+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = F7A0D1342591FBC5008F8A13 /* String+Extension.swift */; };
759763
F7A0D1372591FBC5008F8A13 /* String+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = F7A0D1342591FBC5008F8A13 /* String+Extension.swift */; };
@@ -1301,6 +1305,7 @@
13011305
F719D9E1288D396100762E33 /* NCColorPicker.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NCColorPicker.swift; sourceTree = "<group>"; };
13021306
F71CD6C92930D7B1006C95C1 /* NCApplicationHandle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NCApplicationHandle.swift; sourceTree = "<group>"; };
13031307
F71F6D062B6A6A5E00F1EB15 /* ThreadSafeArray.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ThreadSafeArray.swift; sourceTree = "<group>"; };
1308+
F722133A2D40EF8C002F7438 /* NCFilesNavigationController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NCFilesNavigationController.swift; sourceTree = "<group>"; };
13041309
F7226EDB1EE4089300EBECB1 /* Main.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = Main.storyboard; sourceTree = "<group>"; };
13051310
F722F0102CFF569500065FB5 /* MainInterface.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = MainInterface.storyboard; sourceTree = "<group>"; };
13061311
F723985B253C95CE00257F49 /* NCViewerRichdocument.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = NCViewerRichdocument.storyboard; sourceTree = "<group>"; };
@@ -1532,6 +1537,9 @@
15321537
F79EDA9F26B004980007D134 /* NCPlayerToolBar.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NCPlayerToolBar.swift; sourceTree = "<group>"; };
15331538
F79EDAA126B004980007D134 /* NCPlayer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NCPlayer.swift; sourceTree = "<group>"; };
15341539
F79FFB252A97C24A0055EEA4 /* NCNetworkingE2EEMarkFolder.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NCNetworkingE2EEMarkFolder.swift; sourceTree = "<group>"; };
1540+
F7A03E2E2D425A14007AA677 /* NCFavoriteNavigationController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NCFavoriteNavigationController.swift; sourceTree = "<group>"; };
1541+
F7A03E322D426115007AA677 /* NCMoreNavigationController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NCMoreNavigationController.swift; sourceTree = "<group>"; };
1542+
F7A03E342D427308007AA677 /* NCMainNavigationController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NCMainNavigationController.swift; sourceTree = "<group>"; };
15351543
F7A0D1342591FBC5008F8A13 /* String+Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "String+Extension.swift"; sourceTree = "<group>"; };
15361544
F7A48414297028FC00BD1B49 /* Nextcloud Hub.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Nextcloud Hub.png"; sourceTree = SOURCE_ROOT; };
15371545
F7A509242C26BD5D00326106 /* NCCreateDocument.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NCCreateDocument.swift; sourceTree = "<group>"; };
@@ -2094,6 +2102,7 @@
20942102
F794E13C2BBBFF2E003693D7 /* NCMainTabBarController.swift */,
20952103
F737DA9C2B7B893C0063BAFC /* NCPasscode.swift */,
20962104
F77444F7222816D5000D5EB0 /* NCPickerViewController.swift */,
2105+
F7A03E342D427308007AA677 /* NCMainNavigationController.swift */,
20972106
);
20982107
path = Main;
20992108
sourceTree = "<group>";
@@ -2545,6 +2554,7 @@
25452554
children = (
25462555
F7725A5F251F33BB00D125E0 /* NCFiles.storyboard */,
25472556
F7725A5E251F33BB00D125E0 /* NCFiles.swift */,
2557+
F722133A2D40EF8C002F7438 /* NCFilesNavigationController.swift */,
25482558
);
25492559
path = Files;
25502560
sourceTree = "<group>";
@@ -2694,6 +2704,7 @@
26942704
children = (
26952705
F717402B24F699A5000C87D5 /* NCFavorite.storyboard */,
26962706
F717402C24F699A5000C87D5 /* NCFavorite.swift */,
2707+
F7A03E2E2D425A14007AA677 /* NCFavoriteNavigationController.swift */,
26972708
);
26982709
path = Favorites;
26992710
sourceTree = "<group>";
@@ -2902,6 +2913,7 @@
29022913
F3BB46502A39EC2D00461F6E /* Cells */,
29032914
F7CB68992541676B0050EC94 /* NCMore.storyboard */,
29042915
F73F537E1E929C8500F8678D /* NCMore.swift */,
2916+
F7A03E322D426115007AA677 /* NCMoreNavigationController.swift */,
29052917
);
29062918
path = More;
29072919
sourceTree = "<group>";
@@ -4530,6 +4542,7 @@
45304542
F7FA7FFC2C0F4EE40072FC60 /* NCViewerQuickLookView.swift in Sources */,
45314543
F3A0479B2BD2668800658E7B /* NCAssistant.swift in Sources */,
45324544
F359D8672A7D03420023F405 /* NCUtility+Exif.swift in Sources */,
4545+
F7A03E352D427312007AA677 /* NCMainNavigationController.swift in Sources */,
45334546
F738D4902756740100CD1D38 /* NCLoginNavigationController.swift in Sources */,
45344547
F769CA192966EA3C00039397 /* ComponentView.swift in Sources */,
45354548
F7C9B91D2B582F550064EA91 /* NCManageDatabase+SecurityGuard.swift in Sources */,
@@ -4563,6 +4576,7 @@
45634576
F77BC3ED293E528A005F2B08 /* NCConfigServer.swift in Sources */,
45644577
F7A560422AE1593700BE8FD6 /* NCOperationSaveLivePhoto.swift in Sources */,
45654578
F7D1C4AC2C9484FD00EC6D44 /* NCMedia+CollectionViewDataSourcePrefetching.swift in Sources */,
4579+
F7A03E332D426115007AA677 /* NCMoreNavigationController.swift in Sources */,
45664580
F7401C152C75E6F300649E87 /* NCCapabilities.swift in Sources */,
45674581
F7E402312BA891EB007E5609 /* NCTrash+SelectTabBarDelegate.swift in Sources */,
45684582
F70753EB2542A99800972D44 /* NCViewerMediaPage.swift in Sources */,
@@ -4580,6 +4594,7 @@
45804594
F343A4B32A1E01FF00DDA874 /* PHAsset+Extension.swift in Sources */,
45814595
F70968A424212C4E00ED60E5 /* NCLivePhoto.swift in Sources */,
45824596
F7C30DFA291BCF790017149B /* NCNetworkingE2EECreateFolder.swift in Sources */,
4597+
F722133B2D40EF9D002F7438 /* NCFilesNavigationController.swift in Sources */,
45834598
F7BC288026663F85004D46C5 /* NCViewCertificateDetails.swift in Sources */,
45844599
F78B87E92B62550800C65ADC /* NCMediaDownloadThumbnail.swift in Sources */,
45854600
F73EF7AF2B0224350087E6E9 /* NCManageDatabase+DirectEditing.swift in Sources */,
@@ -4595,6 +4610,7 @@
45954610
F765608F23BF813600765969 /* NCContentPresenter.swift in Sources */,
45964611
F7327E352B73AEDE00A462C7 /* NCNetworking+LivePhoto.swift in Sources */,
45974612
F76687072B7D067400779E3F /* NCAudioRecorderViewController.swift in Sources */,
4613+
F7A03E2F2D425A14007AA677 /* NCFavoriteNavigationController.swift in Sources */,
45984614
F343A4BB2A1E734600DDA874 /* Optional+Extension.swift in Sources */,
45994615
F76882232C0DD1E7001CF441 /* NCCapabilitiesModel.swift in Sources */,
46004616
F7D68FCC28CB9051009139F3 /* NCManageDatabase+DashboardWidget.swift in Sources */,
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
// SPDX-FileCopyrightText: Nextcloud GmbH
2+
// SPDX-FileCopyrightText: 2025 Marino Faggiana
3+
// SPDX-License-Identifier: GPL-3.0-or-later
4+
5+
import UIKit
6+
7+
class NCFavoriteNavigationController: NCMainNavigationController {
8+
override func setNavigationRightItems() {
9+
guard let collectionViewCommon else {
10+
return
11+
}
12+
13+
func createMenu() -> [UIMenuElement] {
14+
guard let items = self.createMenuActions()
15+
else {
16+
return []
17+
}
18+
19+
let additionalSubmenu = UIMenu(title: "", options: .displayInline, children: [items.foldersOnTop])
20+
21+
return [items.select, items.viewStyleSubmenu, items.sortSubmenu, additionalSubmenu]
22+
}
23+
24+
if collectionViewCommon.isEditMode {
25+
collectionViewCommon.tabBarSelect?.update(fileSelect: collectionViewCommon.fileSelect, metadatas: collectionViewCommon.getSelectedMetadatas(), userId: session.userId)
26+
collectionViewCommon.tabBarSelect?.show()
27+
28+
let select = UIBarButtonItem(title: NSLocalizedString("_cancel_", comment: ""), style: .done) {
29+
collectionViewCommon.setEditMode(false)
30+
collectionViewCommon.collectionView.reloadData()
31+
}
32+
33+
self.collectionViewCommon?.navigationItem.rightBarButtonItems = [select]
34+
35+
} else if self.collectionViewCommon?.navigationItem.rightBarButtonItems == nil || (!collectionViewCommon.isEditMode && !(collectionViewCommon.tabBarSelect?.isHidden() ?? true)) {
36+
collectionViewCommon.tabBarSelect?.hide()
37+
38+
let menuButton = UIBarButtonItem(image: utility.loadImage(named: "ellipsis.circle"), menu: UIMenu(children: createMenu()))
39+
menuButton.tag = menuButtonTag
40+
menuButton.tintColor = NCBrandColor.shared.iconImageColor
41+
42+
self.collectionViewCommon?.navigationItem.rightBarButtonItems = [menuButton]
43+
44+
} else {
45+
46+
self.collectionViewCommon?.navigationItem.rightBarButtonItems?.first?.menu = self.collectionViewCommon?.navigationItem.rightBarButtonItems?.first?.menu?.replacingChildren(createMenu())
47+
}
48+
49+
// fix, if the tabbar was hidden before the update, set it in hidden
50+
if self.tabBarController?.tabBar.isHidden ?? true,
51+
collectionViewCommon.tabBarSelect?.isHidden() ?? true {
52+
self.tabBarController?.tabBar.isHidden = true
53+
}
54+
}
55+
}

iOSClient/Files/NCFiles.swift

+4-10
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@ class NCFiles: NCCollectionViewCommon {
3939
layoutKey = NCGlobal.shared.layoutViewFiles
4040
enableSearchBar = true
4141
headerRichWorkspaceDisable = false
42-
headerMenuTransferView = true
4342
emptyTitle = "_files_no_files_"
4443
emptyDescription = "_no_file_pull_down_"
4544
}
@@ -58,7 +57,6 @@ class NCFiles: NCCollectionViewCommon {
5857
self.titleCurrentFolder = getNavigationTitle()
5958

6059
NotificationCenter.default.addObserver(forName: NSNotification.Name(rawValue: NCGlobal.shared.notificationCenterChangeUser), object: nil, queue: nil) { notification in
61-
6260
if let userInfo = notification.userInfo, let account = userInfo["account"] as? String {
6361
if let controller = userInfo["controller"] as? NCMainTabBarController,
6462
controller == self.controller {
@@ -84,7 +82,7 @@ class NCFiles: NCCollectionViewCommon {
8482
}
8583

8684
self.titleCurrentFolder = self.getNavigationTitle()
87-
self.setNavigationLeftItems()
85+
(self.navigationController as? NCMainNavigationController)?.setNavigationLeftItems()
8886

8987
self.dataSource.removeAll()
9088
self.reloadDataSource()
@@ -155,13 +153,9 @@ class NCFiles: NCCollectionViewCommon {
155153
return super.reloadDataSource()
156154
}
157155

158-
self.dataSource.caching(metadatas: metadatas, dataSourceMetadatas: dataSourceMetadatas) { updated in
156+
self.dataSource.caching(metadatas: metadatas, dataSourceMetadatas: dataSourceMetadatas) {
159157
self.semaphoreReloadDataSource.signal()
160-
DispatchQueue.main.async {
161-
if updated || self.isNumberOfItemsInAllSectionsNull || self.numberOfItemsInAllSections != metadatas.count {
162-
super.reloadDataSource()
163-
}
164-
}
158+
super.reloadDataSource()
165159
}
166160
}
167161

@@ -369,6 +363,6 @@ class NCFiles: NCCollectionViewCommon {
369363
navigationItem.title = self.titleCurrentFolder
370364
}
371365

372-
setNavigationLeftItems()
366+
(self.navigationController as? NCMainNavigationController)?.setNavigationLeftItems()
373367
}
374368
}

0 commit comments

Comments
 (0)