Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
cf74a2f
Add custom build for debugging merge
tsdicloud Jan 31, 2024
c954c78
Add script for automatic backport PR creation
tsdicloud Feb 12, 2024
5dec8d2
Update script for adding new stable branch
TSI-amrutwaghmare Mar 29, 2024
1a001cd
Update stable branch 5.2.7
TSI-amrutwaghmare Apr 15, 2024
f5d37fc
Update new version 5.2.7
TSI-amrutwaghmare May 22, 2024
2a15ded
Update nmc-custom-client.yml
TSI-amrutwaghmare Jul 26, 2024
aa34012
Update nmc-custom-stables.yml
TSI-amrutwaghmare Aug 26, 2024
4249d42
Update nmc-custom-stables.yml for NC stable 5.5.5
TSI-amrutwaghmare Sep 30, 2024
345b59d
Update nmc-custom-client.yml for NC Stable 5.5.5
TSI-amrutwaghmare Sep 30, 2024
673576e
Update nmc-custom-stables.yml for stable-6.1.3
harshada-15-tsys Nov 18, 2024
d64ff22
Update nmc-custom-stables.yml
harshada-15-tsys Mar 31, 2025
75368c4
Update nmc-custom-client.yml
harshada-15-tsys Mar 31, 2025
a89c676
Update nmc-custom-stables.yml for NC stable-6.6.0
harshada-15-tsys Apr 16, 2025
14a38ec
Update nmc-custom-stables.yml for NC Stable 6.5.0
harshada-15-tsys Apr 17, 2025
d7b87f5
Update nmc-custom-stables.yml for NC stable-6.6.0
harshada-15-tsys Apr 17, 2025
ee5c5fa
NMC 2161 - Menu option images and color theming changes
TSI-amrutwaghmare Nov 29, 2023
9b35513
NMC 2161 - Menu option images and color theming and other changes
harshada-15-tsys Apr 11, 2025
3e4b5b8
NMC 2161 - Menu option changes
harshada-15-tsys Oct 3, 2025
f108bcf
Update nmc-custom-stables.yml for NC Stable 6.5.0
harshada-15-tsys Apr 17, 2025
3690277
Update nmc-custom-stables.yml for NC stable-6.6.0
harshada-15-tsys Apr 17, 2025
e52037b
NMC 2161 - Menu option images and color theming changes
TSI-amrutwaghmare Nov 29, 2023
886c730
NMC 2161 - Menu option images and color theming and other changes
harshada-15-tsys Apr 11, 2025
f2432d7
NMC 2161 - Menu option changes
harshada-15-tsys Oct 3, 2025
98261ff
NMC 2161 - Menu option changes
harshada-15-tsys Dec 16, 2025
cf148f6
Update script for adding new stable branch
TSI-amrutwaghmare Mar 29, 2024
27f936e
NMC 2161 - Menu option images and color theming changes
TSI-amrutwaghmare Nov 29, 2023
f897722
NMC 2161 - Menu option images and color theming and other changes
harshada-15-tsys Apr 11, 2025
1f95c7b
NMC 2161 - Menu option changes
harshada-15-tsys Oct 3, 2025
2cada33
NMC 2161 - Menu option images and color theming changes
TSI-amrutwaghmare Nov 29, 2023
18a596b
NMC 2161 - Menu option images and color theming and other changes
harshada-15-tsys Apr 11, 2025
a23bdbc
NMC 2161 - Menu option changes
harshada-15-tsys Oct 3, 2025
162ef99
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 @@ -85,6 +85,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 @@ -1261,8 +1265,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 @@ -2549,6 +2553,7 @@
F7603298252F0E550015A421 /* Collection Common */ = {
isa = PBXGroup;
children = (
B52FAED42DA8F616001AB1BD /* NCSelectableNavigationView.swift */,
F75FE06B2BB01D0D00A0EFEF /* Cell */,
F70D7C3525FFBF81002B9E34 /* NCCollectionViewCommon.swift */,
F76995F32F9A4AC000291FA7 /* NCCollectionViewCommon+UIEditMenuInteractionDelegate.swift */,
Expand Down Expand Up @@ -4854,6 +4859,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