Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
46 commits
Select commit Hold shift + click to select a range
ceaaca0
Add custom build for debugging merge
tsdicloud Jan 31, 2024
de80120
Add script for automatic backport PR creation
tsdicloud Feb 12, 2024
93f2761
Update script for adding new stable branch
TSI-amrutwaghmare Mar 29, 2024
0f90479
Update stable branch 5.2.7
TSI-amrutwaghmare Apr 15, 2024
8234eef
Update new version 5.2.7
TSI-amrutwaghmare May 22, 2024
09f7c69
Update nmc-custom-client.yml
TSI-amrutwaghmare Jul 26, 2024
af4b05f
Update nmc-custom-stables.yml
TSI-amrutwaghmare Aug 26, 2024
4c57427
Update nmc-custom-stables.yml for NC stable 5.5.5
TSI-amrutwaghmare Sep 30, 2024
953861b
Update nmc-custom-client.yml for NC Stable 5.5.5
TSI-amrutwaghmare Sep 30, 2024
bd3c21c
Update nmc-custom-stables.yml for stable-6.1.3
harshada-15-tsys Nov 18, 2024
b24627e
Update nmc-custom-stables.yml
harshada-15-tsys Mar 31, 2025
8856cc6
Update nmc-custom-client.yml
harshada-15-tsys Mar 31, 2025
fae49d6
Update nmc-custom-stables.yml for NC stable-6.6.0
harshada-15-tsys Apr 16, 2025
a29606f
Update nmc-custom-stables.yml for NC Stable 6.5.0
harshada-15-tsys Apr 17, 2025
f9cad36
Update nmc-custom-stables.yml for NC stable-6.6.0
harshada-15-tsys Apr 17, 2025
4e83e87
NMC 2161 - Menu option images and color theming changes
TSI-amrutwaghmare Nov 29, 2023
46dadea
NMC 2161 - Menu option images and color theming and other changes
harshada-15-tsys Apr 11, 2025
f0cbdf5
NMC 2161 - Menu option changes
harshada-15-tsys Oct 3, 2025
f183961
Update nmc-custom-stables.yml for NC Stable 6.5.0
harshada-15-tsys Apr 17, 2025
10cf65b
Update nmc-custom-stables.yml for NC stable-6.6.0
harshada-15-tsys Apr 17, 2025
ce9937d
NMC 2161 - Menu option images and color theming changes
TSI-amrutwaghmare Nov 29, 2023
584fc68
NMC 2161 - Menu option images and color theming and other changes
harshada-15-tsys Apr 11, 2025
8929a27
NMC 2161 - Menu option changes
harshada-15-tsys Oct 3, 2025
7b2a6c2
NMC 2161 - Menu option changes
harshada-15-tsys Dec 16, 2025
b9af2d0
Update script for adding new stable branch
TSI-amrutwaghmare Mar 29, 2024
3aaca17
NMC 2161 - Menu option images and color theming changes
TSI-amrutwaghmare Nov 29, 2023
342bc81
NMC 2161 - Menu option images and color theming and other changes
harshada-15-tsys Apr 11, 2025
597eb7f
NMC 2161 - Menu option changes
harshada-15-tsys Oct 3, 2025
4fa7ede
NMC 2161 - Menu option images and color theming changes
TSI-amrutwaghmare Nov 29, 2023
b565a06
NMC 2161 - Menu option images and color theming and other changes
harshada-15-tsys Apr 11, 2025
bef9d32
NMC 2161 - Menu option changes
harshada-15-tsys Oct 3, 2025
7587c52
NMC 2161 - Menu option changes
harshada-15-tsys Dec 16, 2025
8199c51
NMC 2161 - Menu option images and color theming changes
TSI-amrutwaghmare Nov 29, 2023
033c775
NMC 2161 - Menu option images and color theming and other changes
harshada-15-tsys Apr 11, 2025
b8eddaa
NMC 2161 - Menu option changes
harshada-15-tsys Oct 3, 2025
3a7a84c
NMC 2161 - Menu option images and color theming changes
TSI-amrutwaghmare Nov 29, 2023
971674f
NMC 2161 - Menu option images and color theming and other changes
harshada-15-tsys Apr 11, 2025
21b3c34
NMC 2161 - Menu option changes
harshada-15-tsys Oct 3, 2025
919a844
NMC 2161 - Menu option changes
harshada-15-tsys Dec 16, 2025
02606dc
NMC 2161 - Menu option images and color theming changes
TSI-amrutwaghmare Nov 29, 2023
36ba914
NMC 2161 - Menu option images and color theming and other changes
harshada-15-tsys Apr 11, 2025
b2d06ea
NMC 2161 - Menu option changes
harshada-15-tsys Oct 3, 2025
aa16c7b
NMC 2161 - Menu option images and color theming changes
TSI-amrutwaghmare Nov 29, 2023
4ea4733
NMC 2161 - Menu option images and color theming and other changes
harshada-15-tsys Apr 11, 2025
f940b14
NMC 2161 - Menu option changes
harshada-15-tsys Oct 3, 2025
2f16012
NMC 2161 - Menu option changes
harshada-15-tsys Dec 16, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 43 additions & 0 deletions .github/workflows/nmc-custom-client.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
###
# SPDX-License-Identifier: AGPL-3.0
#
# Author: Bernd rederlechner <bernd.rederlechner@t-systems.com>
#
# Builds a stable release package based on a release assembly
# customisation-<version>-<increment>
#
# As soon as a package is deployed to production, the tag and the branch
# MUST STAY FOR 2 years and not deleted.
#
# Release packages, tags and customisation branches not delivered to production should
# be deleted asap a newer release is available.
#

name: MCLOUD custom client merge

on:
workflow_dispatch:
inputs:
branch:
type: choice
description: Custom build from base branch
options:
- master
- stable-4.9.7
- stable-5.2.1
- stable-5.2.7
- stable-5.5.0
- stable-5.5.5
- stable-6.1.3
- stable-6.2.7
# - v3.0.8
default: master

jobs:
assemble-custom:
uses: nextmcloud/.github/.github/workflows/nmc-custom-client.yml@master
with:
trunk: 'master'
stable: ${{ inputs.branch }}
result: ${{ format('customisation-{0}-{1}', github.actor, inputs.branch) }}
secrets: inherit
40 changes: 40 additions & 0 deletions .github/workflows/nmc-custom-stables.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
###
# SPDX-License-Identifier: AGPL-3.0
#
# Author: Bernd rederlechner <bernd.rederlechner@t-systems.com>
#
# Builds a stable release package based on a release assembly
# customisation-<version>-<increment>
#
# As soon as a package is deployed to production, the tag and the branch
# MUST STAY FOR 2 years and not deleted.
#
# Release packages, tags and customisation branches not delivered to production should
# be deleted asap a newer release is available.
#

name: MCLOUD create stable backports

on:
workflow_dispatch:
inputs:
branch:
type: choice
description: Custom build from base branch
options:
- stable-6.6.0
- stable-6.5.0
- stable-6.2.7
- stable-6.1.3
- stable-5.5.5
- stable-5.5.4
- stable-5.2.7
default: stable-6.6.0

jobs:
backport-custom:
uses: nextmcloud/.github/.github/workflows/nmc-custom-stables.yml@master
with:
trunk: 'master'
stable: ${{ inputs.branch }}
secrets: inherit
10 changes: 8 additions & 2 deletions Nextcloud.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,10 @@
AFCE353727E4ED7B00FEA6C2 /* NCShareCells.swift in Sources */ = {isa = PBXBuildFile; fileRef = AFCE353627E4ED7B00FEA6C2 /* NCShareCells.swift */; };
AFCE353927E5DE0500FEA6C2 /* Shareable.swift in Sources */ = {isa = PBXBuildFile; fileRef = AFCE353827E5DE0400FEA6C2 /* Shareable.swift */; };
CB3666201AF7550816B5CD6A /* NCContextMenuComment.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8932E90EC4278026D86CCCC9 /* NCContextMenuComment.swift */; };
AFCE353927E5DE0500FEA6C2 /* NCShare+Helper.swift in Sources */ = {isa = PBXBuildFile; fileRef = AFCE353827E5DE0400FEA6C2 /* NCShare+Helper.swift */; };
B52FAED52DA8F616001AB1BD /* NCSelectableNavigationView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B52FAED42DA8F616001AB1BD /* NCSelectableNavigationView.swift */; };
C04E2F232A17BB4D001BAD85 /* FilesIntegrationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C04E2F222A17BB4D001BAD85 /* FilesIntegrationTests.swift */; };
D575039F27146F93008DC9DC /* String+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = F7A0D1342591FBC5008F8A13 /* String+Extension.swift */; };
D5B6AA7827200C7200D49C24 /* NCActivityTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5B6AA7727200C7200D49C24 /* NCActivityTableViewCell.swift */; };
F310B1EF2BA862F1001C42F5 /* NCViewerMedia+VisionKit.swift in Sources */ = {isa = PBXBuildFile; fileRef = F310B1EE2BA862F1001C42F5 /* NCViewerMedia+VisionKit.swift */; };
F31165022F9674A1009A1E37 /* AppIcon.icon in Resources */ = {isa = PBXBuildFile; fileRef = F31165012F9674A1009A1E37 /* AppIcon.icon */; };
Expand Down Expand Up @@ -1278,8 +1282,8 @@
AFCE353427E4ED5900FEA6C2 /* DateFormatter+Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "DateFormatter+Extension.swift"; sourceTree = "<group>"; };
AFCE353627E4ED7B00FEA6C2 /* NCShareCells.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NCShareCells.swift; sourceTree = "<group>"; };
AFCE353827E5DE0400FEA6C2 /* Shareable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Shareable.swift; sourceTree = "<group>"; };
B4C7A5B36D1ED178FB6B76CB /* NCContextMenuPlayerTracks.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NCContextMenuPlayerTracks.swift; sourceTree = "<group>"; };
BB7697C94BA14450A0867940 /* NCContextMenuProfile.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NCContextMenuProfile.swift; sourceTree = "<group>"; };
AFCE353827E5DE0400FEA6C2 /* NCShare+Helper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NCShare+Helper.swift"; sourceTree = "<group>"; };
B52FAED42DA8F616001AB1BD /* NCSelectableNavigationView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NCSelectableNavigationView.swift; sourceTree = "<group>"; };
C0046CDA2A17B98400D87C9D /* NextcloudUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = NextcloudUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
C04E2F202A17BB4D001BAD85 /* NextcloudIntegrationTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = NextcloudIntegrationTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
D5B6AA7727200C7200D49C24 /* NCActivityTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NCActivityTableViewCell.swift; sourceTree = "<group>"; };
Expand Down Expand Up @@ -2575,6 +2579,7 @@
F7603298252F0E550015A421 /* Collection Common */ = {
isa = PBXGroup;
children = (
B52FAED42DA8F616001AB1BD /* NCSelectableNavigationView.swift */,
F75FE06B2BB01D0D00A0EFEF /* Cell */,
F70D7C3525FFBF81002B9E34 /* NCCollectionViewCommon.swift */,
F76995F32F9A4AC000291FA7 /* NCCollectionViewCommon+UIEditMenuInteractionDelegate.swift */,
Expand Down Expand Up @@ -4894,6 +4899,7 @@
F7FFFCA22FB300600015441E /* NCAssistantSharedTextStore.swift in Sources */,
F3DDFE0F2F15453900A784C8 /* NCAssistantChat.swift in Sources */,
F7D68FCC28CB9051009139F3 /* NCManageDatabase+DashboardWidget.swift in Sources */,
B52FAED52DA8F616001AB1BD /* NCSelectableNavigationView.swift in Sources */,
F76882292C0DD1E7001CF441 /* NCManageE2EEModel.swift in Sources */,
F7CCAB512ECF316700F8E68B /* NCCollectionViewCommon+SyncMetadata.swift in Sources */,
AA8E041D2D300FDE00E7E89C /* NCShareNetworkingDelegate.swift in Sources */,
Expand Down
130 changes: 130 additions & 0 deletions iOSClient/Main/Collection Common/NCSelectableNavigationView.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,130 @@
//
// NCSelectableNavigationView.swift
// Nextcloud
//
// Created by Henrik Storch on 27.01.22.
// Copyright © 2022 Henrik Storch. All rights reserved.
//
// Author Marino Faggiana <marino.faggiana@nextcloud.com>
// Author Henrik Storch <henrik.storch@nextcloud.com>
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
//

import NextcloudKit
import Realm
import UIKit

extension RealmSwiftObject {
var primaryKeyValue: String? {
guard let primaryKeyName = self.objectSchema.primaryKeyProperty?.name else { return nil }
return value(forKey: primaryKeyName) as? String
}
}

public protocol NCSelectableViewTabBar {
var tabBarController: UITabBarController? { get }
var hostingController: UIViewController? { get }
}

protocol NCSelectableNavigationView: AnyObject {
var viewController: UIViewController { get }
// var appDelegate: AppDelegate { get }
var selectableDataSource: [RealmSwiftObject] { get }
var collectionView: UICollectionView! { get set }
var isEditMode: Bool { get set }
var fileSelect: [String] { get set }
// var selectIndexPaths: [IndexPath] { get set }
var appDelegate: AppDelegate { get }
var selectableDataSource: [RealmSwiftObject] { get }
var collectionView: UICollectionView! { get set }
var isEditMode: Bool { get set }
var selectOcId: [String] { get set }
var appDelegate: AppDelegate { get }
var selectIndexPaths: [IndexPath] { get set }
var titleCurrentFolder: String { get }
var navigationItem: UINavigationItem { get }
var navigationController: UINavigationController? { get }
var layoutKey: String { get }
var serverUrl: String { get }
// var tabBarSelect: NCSelectableViewTabBar? { get set }
// var dataSource: NCCollectionViewDataSource { get set }

// func reloadDataSource(withQueryDB: Bool)
var tabBarSelect: NCSelectableViewTabBar? { get set }

func reloadDataSource(withQueryDB: Bool)
// func reloadDataSource(withQueryDB: Bool)
func setNavigationLeftItems()
func setNavigationRightItems(enableMenu: Bool)
func createMenuActions() -> [NCMenuAction]

func toggleSelect(isOn: Bool?)
func onListSelected()
func onGridSelected()
}

extension NCSelectableNavigationView {
func setNavigationLeftItems() {}

func saveLayout(_ layoutForView: NCDBLayoutForView) {
NCManageDatabase.shared.setLayoutForView(layoutForView: layoutForView)
NotificationCenter.default.postOnMainThread(name: NCGlobal.shared.notificationCenterReloadDataSource)
setNavigationRightItems(enableMenu: false)
}

/// If explicit `isOn` is not set, it will invert `isEditMode`
func toggleSelect(isOn: Bool? = nil) {
DispatchQueue.main.async {
self.isEditMode = isOn ?? !self.isEditMode
self.fileSelect.removeAll()
// self.selectIndexPaths.removeAll()
self.selectOcId.removeAll()
self.selectIndexPaths.removeAll()
self.setNavigationLeftItems()
self.setNavigationRightItems(enableMenu: true)
self.collectionView.reloadData()
}
}

func collectionViewSelectAll() {

fileSelect = selectableDataSource.compactMap({ $0.primaryKeyValue })
// fileSelect = NCCollectionViewDataSource().getMetadataSourceForAllSections().compactMap({ $0.primaryKeyValue })
// selectOcId = selectableDataSource.compactMap({ $0.primaryKeyValue })
collectionView.reloadData()
setNavigationRightItems(enableMenu: false)
}

func tapNotification() {
if let viewController = UIStoryboard(name: "NCNotification", bundle: nil).instantiateInitialViewController() as? NCNotification {
navigationController?.pushViewController(viewController, animated: true)
}
}

func tapTransfer() {
if let navController = UIStoryboard(name: "NCTransfers", bundle: nil).instantiateInitialViewController() as? UINavigationController,
let viewController = navController.topViewController as? NCTransfers {
viewController.modalPresentationStyle = .pageSheet
// self.present(navigationController, animated: true, completion: nil)
navigationController?.present(navController, animated: true, completion: nil)
}
}
}

extension NCSelectableNavigationView where Self: UIViewController {
var viewController: UIViewController {
self
}
}
Loading
Loading