From fbd4099019eca9ac40332bf6428e2350b7bfba50 Mon Sep 17 00:00:00 2001 From: TSI-amrutwaghmare <96108296+TSI-amrutwaghmare@users.noreply.github.com> Date: Wed, 1 Nov 2023 15:13:42 +0530 Subject: [PATCH 1/4] NMC 2237 - More option tab customisation changes --- Tests/NextcloudUnitTests/MoreTests.swift | 37 +++++ iOSClient/More/Cells/BaseNCMoreCell.swift | 16 -- iOSClient/More/Cells/NCMoreUserCell.xib | 76 ++++++++++ iOSClient/More/NCMore.storyboard | 171 ++++++++++++---------- iOSClient/More/NCMore.swift | 150 +++++++++++++------ 5 files changed, 318 insertions(+), 132 deletions(-) create mode 100644 Tests/NextcloudUnitTests/MoreTests.swift create mode 100755 iOSClient/More/Cells/NCMoreUserCell.xib diff --git a/Tests/NextcloudUnitTests/MoreTests.swift b/Tests/NextcloudUnitTests/MoreTests.swift new file mode 100644 index 0000000000..0a96912994 --- /dev/null +++ b/Tests/NextcloudUnitTests/MoreTests.swift @@ -0,0 +1,37 @@ +// +// MoreTests.swift +// NextcloudTests +// +// Created by A200020526 on 09/06/23. +// Copyright © 2023 Marino Faggiana. All rights reserved. +// + +@testable import Nextcloud +import XCTest + +final class MoreTests: XCTestCase { + + override func setUpWithError() throws { + // Put setup code here. This method is called before the invocation of each test method in the class. + } + + override func tearDownWithError() throws { + // Put teardown code here. This method is called after the invocation of each test method in the class. + } + + func testExample() throws { + // This is an example of a functional test case. + // Use XCTAssert and related functions to verify your tests produce the correct results. + // Any test you write for XCTest can be annotated as throws and async. + // Mark your test throws to produce an unexpected failure when your test encounters an uncaught error. + // Mark your test async to allow awaiting for asynchronous code to complete. Check the results with assertions afterwards. + } + + func testPerformanceExample() throws { + // This is an example of a performance test case. + self.measure { + // Put the code you want to measure the time of here. + } + } + +} diff --git a/iOSClient/More/Cells/BaseNCMoreCell.swift b/iOSClient/More/Cells/BaseNCMoreCell.swift index 9b5b705cd1..c0d41bc513 100644 --- a/iOSClient/More/Cells/BaseNCMoreCell.swift +++ b/iOSClient/More/Cells/BaseNCMoreCell.swift @@ -28,22 +28,6 @@ class BaseNCMoreCell: UITableViewCell { let selectionColor: UIView = UIView() let defaultCornerRadius: CGFloat = 10.0 - override var frame: CGRect { - get { - return super.frame - } - set (newFrame) { - var frame = newFrame - let newWidth = frame.width * 0.90 - let space = (frame.width - newWidth) / 2 - frame.size.width = newWidth - frame.origin.x += space - super.frame = frame - } - } - - open func setupCell(account: String, controller: NCMainTabBarController?) {} - override func awakeFromNib() { super.awakeFromNib() diff --git a/iOSClient/More/Cells/NCMoreUserCell.xib b/iOSClient/More/Cells/NCMoreUserCell.xib new file mode 100755 index 0000000000..477fe2539e --- /dev/null +++ b/iOSClient/More/Cells/NCMoreUserCell.xib @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iOSClient/More/NCMore.storyboard b/iOSClient/More/NCMore.storyboard index 57caeedfce..794b3d16a6 100644 --- a/iOSClient/More/NCMore.storyboard +++ b/iOSClient/More/NCMore.storyboard @@ -1,102 +1,114 @@ - + - + - + - - + + - - + + + + + + + - + - - + + - - + + - - + + - - - - - + + + + + - - - - - - - - - - + + - - + + - - + + - - - - - - - - - - - + + + + + + + + + + + + + + + + - + - - - - - - - + + + + + + + - + - - - - - + + + + + + + - + + diff --git a/iOSClient/More/NCMore.swift b/iOSClient/More/NCMore.swift index 43301a4fd4..15d9fced96 100644 --- a/iOSClient/More/NCMore.swift +++ b/iOSClient/More/NCMore.swift @@ -24,15 +24,16 @@ import UIKit import NextcloudKit import SafariServices -import SwiftUI -import Foundation class NCMore: UIViewController, UITableViewDelegate, UITableViewDataSource { + @IBOutlet weak var tableView: UITableView! @IBOutlet weak var labelQuota: UILabel! @IBOutlet weak var labelQuotaExternalSite: UILabel! @IBOutlet weak var progressQuota: UIProgressView! @IBOutlet weak var viewQuota: UIView! + @IBOutlet weak var quotaLabel1: UILabel! + @IBOutlet weak var quotalabel2: UILabel! private var functionMenu: [NKExternalSite] = [] private var externalSiteMenu: [NKExternalSite] = [] @@ -48,10 +49,12 @@ class NCMore: UIViewController, UITableViewDelegate, UITableViewDataSource { var type: SectionType enum SectionType { + case account case moreApps case regular } } + private var sections: [Section] = [] @MainActor @@ -79,6 +82,7 @@ class NCMore: UIViewController, UITableViewDelegate, UITableViewDataSource { tableView.delegate = self tableView.dataSource = self tableView.backgroundColor = .systemGroupedBackground + tableView.register(NCMoreUserCell.fromNib(), forCellReuseIdentifier: NCMoreUserCell.reuseIdentifier) tableView.register(NCMoreAppSuggestionsCell.fromNib(), forCellReuseIdentifier: NCMoreAppSuggestionsCell.reuseIdentifier) // create tap gesture recognizer @@ -96,10 +100,21 @@ class NCMore: UIViewController, UITableViewDelegate, UITableViewDataSource { } loadItems() + changeTheming() tableView.reloadData() } // MARK: - + + @objc func changeTheming() { + viewQuota.backgroundColor = NCBrandColor.shared.memoryConsuptionBackground + quotaLabel1.textColor = NCBrandColor.shared.label + quotalabel2.textColor = NCBrandColor.shared.label + labelQuota.textColor = NCBrandColor.shared.label + labelQuotaExternalSite.textColor = NCBrandColor.shared.label + progressQuota.progressTintColor = NCBrandColor.shared.brandElement + progressQuota.trackTintColor = NCBrandColor.shared.commonViewInfoText + } func loadItems() { guard let tableAccount = self.database.getTableAccount(predicate: NSPredicate(format: "account == %@", session.account)), @@ -118,13 +133,29 @@ class NCMore: UIViewController, UITableViewDelegate, UITableViewDataSource { labelQuotaExternalSite.text = "" progressQuota.progressTintColor = NCBrandColor.shared.getElement(account: session.account) + // ITEM : Transfer + item = NKExternalSite() + item.name = "_transfers_" + item.icon = "arrow.left.arrow.right.circle" + item.url = "segueTransfers" + item.order = 10 +// functionMenu.append(item) + // ITEM : Recent item = NKExternalSite() item.name = "_recent_" - item.icon = "clock.arrow.circlepath" + item.icon = "recent" item.url = "segueRecent" item.order = 20 functionMenu.append(item) + + // ITEM : Notification + item = NKExternalSite() + item.name = "_notifications_" + item.icon = "notification" + item.url = "segueNotification" + item.order = 30 + functionMenu.append(item) /* if capabilities.capabilityActivityEnabled { @@ -145,14 +176,14 @@ class NCMore: UIViewController, UITableViewDelegate, UITableViewDataSource { item.icon = "sparkles" item.url = "openAssistant" item.order = 40 - functionMenu.append(item) +// functionMenu.append(item) } // ITEM : Shares if capabilities.fileSharingApiEnabled { item = NKExternalSite() item.name = "_list_shares_" - item.icon = "person.badge.plus" + item.icon = "shareFill" item.url = "segueShares" item.order = 50 functionMenu.append(item) @@ -161,7 +192,7 @@ class NCMore: UIViewController, UITableViewDelegate, UITableViewDataSource { // ITEM : Offline item = NKExternalSite() item.name = "_manage_file_offline_" - item.icon = "icloud.and.arrow.down" + item.icon = "offlineMenu" item.url = "segueOffline" item.order = 60 functionMenu.append(item) @@ -173,16 +204,15 @@ class NCMore: UIViewController, UITableViewDelegate, UITableViewDataSource { item.icon = "person.2" item.url = "segueGroupfolders" item.order = 61 - functionMenu.append(item) +// functionMenu.append(item) } - // ITEM : Scan item = NKExternalSite() item.name = "_scanned_images_" item.icon = "doc.text.viewfinder" item.url = "openStoryboardNCScan" item.order = 70 - functionMenu.append(item) +// functionMenu.append(item) // ITEM : Trash item = NKExternalSite() @@ -201,8 +231,8 @@ class NCMore: UIViewController, UITableViewDelegate, UITableViewDataSource { // ITEM : Settings item = NKExternalSite() item.name = "_settings_" - item.icon = "gear" - item.url = "openSettings" + item.icon = "settings" + item.url = "segueSettings" settingsMenu.append(item) if !quotaMenu.isEmpty { @@ -211,6 +241,8 @@ class NCMore: UIViewController, UITableViewDelegate, UITableViewDataSource { } // Display Name user & Quota + + if tableAccount.quotaRelative > 0 { progressQuota.progress = Float(tableAccount.quotaRelative) / 100 } else { @@ -248,14 +280,33 @@ class NCMore: UIViewController, UITableViewDelegate, UITableViewDataSource { } } } - } + + switch tableAccount.quotaTotal { + case -1: + quota = "0" + case -2: + quota = NSLocalizedString("_quota_space_unknown_", comment: "") + case -3: + quota = NSLocalizedString("_quota_space_unlimited_", comment: "") + default: + quota = utilityFileSystem.transformedSize(tableAccount.quotaTotal) + } + + let quotaUsed: String = utilityFileSystem.transformedSize(tableAccount.quotaUsed) + let quota2: String = utilityFileSystem.transformedSize(tableAccount.quotaTotal) + let percentageUsedFormatted = "\(Int(progressQuota.progress * 100))%" + + labelQuota.text = String.localizedStringWithFormat(NSLocalizedString("_quota_using_percentage_", comment: ""), percentageUsedFormatted) + + quotaLabel1.text = String.localizedStringWithFormat(NSLocalizedString("_quota_using_", comment: ""), quotaUsed) + quotalabel2.text = String.localizedStringWithFormat(NSLocalizedString("_quota_using_of_", comment: ""), quota2) loadSections() } private func loadSections() { - if !NCBrandOptions.shared.disable_show_more_nextcloud_apps_in_settings { - sections.append(Section(items: [NKExternalSite()], type: .moreApps)) + if tabAccount != nil { + sections.append(Section(items: [NKExternalSite()], type: .account)) } if !functionMenu.isEmpty { @@ -273,7 +324,8 @@ class NCMore: UIViewController, UITableViewDelegate, UITableViewDataSource { // MARK: - Action - @objc func tapLabelQuotaExternalSite(_ sender: Any?) { + @objc func tapLabelQuotaExternalSite() { + if !quotaMenu.isEmpty { let item = quotaMenu[0] if let browserWebVC = UIStoryboard(name: "NCBrowserWeb", bundle: nil).instantiateInitialViewController() as? NCBrowserWeb { @@ -286,10 +338,21 @@ class NCMore: UIViewController, UITableViewDelegate, UITableViewDataSource { } } + @objc func tapImageLogoManageAccount() { + + let controller = CCManageAccount() + + self.navigationController?.pushViewController(controller, animated: true) + } + // MARK: - func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { - return 50 + if sections[indexPath.section].type == .account { + return 100 + } else { + return NCGlobal.shared.heightCellSettings + } } func numberOfSections(in tableView: UITableView) -> Int { @@ -299,7 +362,9 @@ class NCMore: UIViewController, UITableViewDelegate, UITableViewDataSource { func tableView(_ tableView: UITableView, heightForHeaderInSection index: Int) -> CGFloat { let section = sections[index] - if section.type == .moreApps || (index > 0 && sections[index - 1].type == .moreApps) { + if section.type == .account { + return 10 + } else if section.type == .moreApps || sections[index - 1].type == .moreApps { return 1 } else { return 20 @@ -313,7 +378,30 @@ class NCMore: UIViewController, UITableViewDelegate, UITableViewDataSource { func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let section = sections[indexPath.section] - if section.type == .moreApps { + if section.type == .account { + + guard let cell = tableView.dequeueReusableCell(withIdentifier: NCMoreUserCell.reuseIdentifier, for: indexPath) as? NCMoreUserCell else { return UITableViewCell() } + + cell.avatar.image = nil + cell.icon.image = nil + cell.status.text = "" + cell.displayName.text = "" + + if let account = tabAccount { + cell.avatar.image = UIImage.init(named: "user_settings")?.image(color: NCBrandColor.shared.iconColor, size: 25) + + if account.alias.isEmpty { + cell.displayName?.text = account.displayName + } else { + cell.displayName?.text = account.displayName + " (" + account.alias + ")" + } + cell.displayName.textColor = .label + } + cell.removeCornerRadius() + cell.icon.isHidden = true + return cell + + } else if section.type == .moreApps { guard let cell = tableView.dequeueReusableCell(withIdentifier: NCMoreAppSuggestionsCell.reuseIdentifier, for: indexPath) as? NCMoreAppSuggestionsCell else { return UITableViewCell() } cell.setupCell(account: session.account, controller: controller) return cell @@ -324,32 +412,11 @@ class NCMore: UIViewController, UITableViewDelegate, UITableViewDataSource { let item = sections[indexPath.section].items[indexPath.row] - cell.imageIcon?.image = utility.loadImage(named: item.icon, colors: [NCBrandColor.shared.iconImageColor]) + cell.imageIcon?.image = utility.loadImage(named: item.icon).image(color: NCBrandColor.shared.iconColor, size: 25) cell.imageIcon?.contentMode = .scaleAspectFit cell.labelText?.text = NSLocalizedString(item.name, comment: "") - cell.labelText.textColor = NCBrandColor.shared.textColor - - cell.accessoryType = UITableViewCell.AccessoryType.disclosureIndicator - - cell.separator.backgroundColor = .separator - cell.separatorHeigth.constant = 0.4 - + cell.labelText.textColor = .label cell.removeCornerRadius() - let rows = tableView.numberOfRows(inSection: indexPath.section) - - if indexPath.row == 0 { - cell.applyCornerRadius() - if indexPath.row == rows - 1 { - cell.separator.backgroundColor = .clear - cell.layer.maskedCorners = [.layerMaxXMinYCorner, .layerMinXMinYCorner, .layerMaxXMaxYCorner, .layerMinXMaxYCorner] - } else { - cell.layer.maskedCorners = [.layerMaxXMinYCorner, .layerMinXMinYCorner] - } - } else if indexPath.row == rows - 1 { - cell.applyCornerRadius() - cell.layer.maskedCorners = [.layerMaxXMaxYCorner, .layerMinXMaxYCorner] - cell.separator.backgroundColor = .clear - } return cell } @@ -381,6 +448,7 @@ class NCMore: UIViewController, UITableViewDelegate, UITableViewDataSource { } } else if item.url == "logout" { let alertController = UIAlertController(title: "", message: NSLocalizedString("_want_delete_", comment: ""), preferredStyle: .alert) + let actionYes = UIAlertAction(title: NSLocalizedString("_yes_delete_", comment: ""), style: .default) { (_: UIAlertAction) in if NCBrandOptions.shared.disable_intro { if let viewController = UIStoryboard(name: "NCLogin", bundle: nil).instantiateViewController(withIdentifier: "NCLogin") as? NCLogin { From 5eece29f526d6e464afaa29994ccc79d976c3a8e Mon Sep 17 00:00:00 2001 From: harshada-15-tsys Date: Thu, 10 Apr 2025 13:41:04 +0530 Subject: [PATCH 2/4] NMC 2237 - More option tab customisation and UI changes --- Nextcloud.xcodeproj/project.pbxproj | 17 ++++++++ iOSClient/More/Cells/NCMoreUserCell.swift | 44 +++++++++++++++++++ iOSClient/More/NCMore.storyboard | 8 ++-- iOSClient/More/NCMore.swift | 53 +++++++++++++---------- 4 files changed, 95 insertions(+), 27 deletions(-) create mode 100644 iOSClient/More/Cells/NCMoreUserCell.swift diff --git a/Nextcloud.xcodeproj/project.pbxproj b/Nextcloud.xcodeproj/project.pbxproj index 8dd4c5545f..312eda58e5 100644 --- a/Nextcloud.xcodeproj/project.pbxproj +++ b/Nextcloud.xcodeproj/project.pbxproj @@ -85,6 +85,12 @@ AFCE353527E4ED5900FEA6C2 /* DateFormatter+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = AFCE353427E4ED5900FEA6C2 /* DateFormatter+Extension.swift */; }; AFCE353727E4ED7B00FEA6C2 /* NCShareCells.swift in Sources */ = {isa = PBXBuildFile; fileRef = AFCE353627E4ED7B00FEA6C2 /* NCShareCells.swift */; }; AFCE353927E5DE0500FEA6C2 /* Shareable.swift in Sources */ = {isa = PBXBuildFile; fileRef = AFCE353827E5DE0400FEA6C2 /* Shareable.swift */; }; + AFCE353927E5DE0500FEA6C2 /* NCShare+Helper.swift in Sources */ = {isa = PBXBuildFile; fileRef = AFCE353827E5DE0400FEA6C2 /* NCShare+Helper.swift */; }; + B568C2B12DA7AA5F0072FCB4 /* MoreTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B568C2B02DA7AA5F0072FCB4 /* MoreTests.swift */; }; + B568C2B32DA7AAAE0072FCB4 /* NCMoreUserCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = B568C2B22DA7AAAE0072FCB4 /* NCMoreUserCell.xib */; }; + B568C2B52DA7AADD0072FCB4 /* NCMoreUserCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = B568C2B42DA7AADD0072FCB4 /* NCMoreUserCell.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 */; }; F321DA8A2B71205A00DDA0E6 /* NCTrashSelectTabBar.swift in Sources */ = {isa = PBXBuildFile; fileRef = F321DA892B71205A00DDA0E6 /* NCTrashSelectTabBar.swift */; }; @@ -1221,6 +1227,10 @@ AFCE353427E4ED5900FEA6C2 /* DateFormatter+Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "DateFormatter+Extension.swift"; sourceTree = ""; }; AFCE353627E4ED7B00FEA6C2 /* NCShareCells.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NCShareCells.swift; sourceTree = ""; }; AFCE353827E5DE0400FEA6C2 /* Shareable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Shareable.swift; sourceTree = ""; }; + AFCE353827E5DE0400FEA6C2 /* NCShare+Helper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NCShare+Helper.swift"; sourceTree = ""; }; + B568C2B02DA7AA5F0072FCB4 /* MoreTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MoreTests.swift; sourceTree = ""; }; + B568C2B22DA7AAAE0072FCB4 /* NCMoreUserCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = NCMoreUserCell.xib; sourceTree = ""; }; + B568C2B42DA7AADD0072FCB4 /* NCMoreUserCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NCMoreUserCell.swift; sourceTree = ""; }; 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 = ""; }; @@ -2024,6 +2034,8 @@ isa = PBXGroup; children = ( AA52EB452D42AC5A0089C348 /* Placeholder.swift */, + B568C2B02DA7AA5F0072FCB4 /* MoreTests.swift */, + AF8ED1FB2757821000B8DBC4 /* NextcloudUnitTests.swift */, ); path = NextcloudUnitTests; sourceTree = ""; @@ -2165,6 +2177,8 @@ F3BB46502A39EC2D00461F6E /* Cells */ = { isa = PBXGroup; children = ( + B568C2B42DA7AADD0072FCB4 /* NCMoreUserCell.swift */, + B568C2B22DA7AAAE0072FCB4 /* NCMoreUserCell.xib */, F3BB464C2A39ADCC00461F6E /* NCMoreAppSuggestionsCell.xib */, F3BB46512A39EC4900461F6E /* NCMoreAppSuggestionsCell.swift */, F3BB46532A3A1E9D00461F6E /* CCCellMore.swift */, @@ -3949,6 +3963,8 @@ F7381EE5218218C9000B1560 /* NCOffline.storyboard in Resources */, F768822D2C0DD1E7001CF441 /* Acknowledgements.rtf in Resources */, F76D3CF32428B94E005DFA87 /* NCViewerPDFSearchCell.xib in Resources */, + B568C2B32DA7AAAE0072FCB4 /* NCMoreUserCell.xib in Resources */, + F7CA212E25F1333300826ABB /* NCAccountRequest.storyboard in Resources */, F717402D24F699A5000C87D5 /* NCFavorite.storyboard in Resources */, F723B3DD22FC6D1D00301EFE /* NCShareCommentsCell.xib in Resources */, F78ACD4B21903F850088454D /* NCTrashListCell.xib in Resources */, @@ -4569,6 +4585,7 @@ F7816EF22C2C3E1F00A52517 /* NCPushNotification.swift in Sources */, F76882342C0DD1E7001CF441 /* NCDisplayView.swift in Sources */, F7C30DF6291BC0CA0017149B /* NCNetworkingE2EEUpload.swift in Sources */, + B568C2B52DA7AADD0072FCB4 /* NCMoreUserCell.swift in Sources */, F7501C332212E57500FB1415 /* NCMedia.swift in Sources */, F7411C552D7B26D700F57358 /* NCNetworking+ServerError.swift in Sources */, F72944F22A84246400246839 /* NCEndToEndMetadataV20.swift in Sources */, diff --git a/iOSClient/More/Cells/NCMoreUserCell.swift b/iOSClient/More/Cells/NCMoreUserCell.swift new file mode 100644 index 0000000000..1d6e30cece --- /dev/null +++ b/iOSClient/More/Cells/NCMoreUserCell.swift @@ -0,0 +1,44 @@ +// +// NCMoreUserCell.swift +// Nextcloud +// +// Created by Milen on 14.06.23. +// Copyright © 2023 Marino Faggiana. All rights reserved. +// +// Author Marino Faggiana +// +// 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 . +// + +import Foundation +import MarqueeLabel + +class NCMoreUserCell: BaseNCMoreCell { + @IBOutlet weak var displayName: UILabel! + @IBOutlet weak var avatar: UIImageView! + @IBOutlet weak var icon: UIImageView! + @IBOutlet weak var status: MarqueeLabel! + + static let reuseIdentifier = "NCMoreUserCell" + + static func fromNib() -> UINib { + return UINib(nibName: "NCMoreUserCell", bundle: nil) + } + + override func awakeFromNib() { + super.awakeFromNib() + + icon.makeCircularBackground(withColor: .systemBackground) + } +} diff --git a/iOSClient/More/NCMore.storyboard b/iOSClient/More/NCMore.storyboard index 794b3d16a6..754b283038 100644 --- a/iOSClient/More/NCMore.storyboard +++ b/iOSClient/More/NCMore.storyboard @@ -34,11 +34,11 @@ - - + + - - + +