22// NCTrashGridCell.swift
33// Nextcloud
44//
5- // Created by Marino Faggiana on 19/03/2024.
6- // Copyright © 2024 Marino Faggiana. All rights reserved.
7- //
8- // Author Marino Faggiana <marino.faggiana@nextcloud.com>
9- //
10- // This program is free software: you can redistribute it and/or modify
11- // it under the terms of the GNU General Public License as published by
12- // the Free Software Foundation, either version 3 of the License, or
13- // (at your option) any later version.
14- //
15- // This program is distributed in the hope that it will be useful,
16- // but WITHOUT ANY WARRANTY; without even the implied warranty of
17- // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18- // GNU General Public License for more details.
19- //
20- // You should have received a copy of the GNU General Public License
21- // along with this program. If not, see <http://www.gnu.org/licenses/>.
5+ // Created by A200073704 on 27/06/23.
6+ // Copyright © 2023 Marino Faggiana. All rights reserved.
227//
238
249import UIKit
@@ -29,20 +14,67 @@ protocol NCTrashGridCellDelegate: AnyObject {
2914
3015class NCTrashGridCell : UICollectionViewCell , NCTrashCellProtocol {
3116
17+
3218 @IBOutlet weak var imageItem : UIImageView !
3319 @IBOutlet weak var imageSelect : UIImageView !
20+ @IBOutlet weak var imageStatus : UIImageView !
21+ @IBOutlet weak var imageFavorite : UIImageView !
22+ @IBOutlet weak var imageLocal : UIImageView !
3423 @IBOutlet weak var labelTitle : UILabel !
3524 @IBOutlet weak var labelInfo : UILabel !
36- @IBOutlet weak var labelSubinfo : UILabel !
3725 @IBOutlet weak var buttonMore : UIButton !
3826 @IBOutlet weak var imageVisualEffect : UIVisualEffectView !
27+ @IBOutlet weak var progressView : UIProgressView !
3928
40- weak var delegate : NCTrashGridCellDelegate ?
41- var objectId = " "
29+ internal var objectId = " "
4230 var indexPath = IndexPath ( )
4331 var account = " "
4432 var user = " "
4533
34+ weak var delegate : NCTrashGridCellDelegate ?
35+ var namedButtonMore = " "
36+
37+ var fileObjectId : String ? {
38+ get { return objectId }
39+ set { objectId = newValue ?? " " }
40+ }
41+ var filePreviewImageView : UIImageView ? {
42+ get { return imageItem }
43+ set { imageItem = newValue }
44+ }
45+ var fileUser : String ? {
46+ get { return user }
47+ set { user = newValue ?? " " }
48+ }
49+ var fileTitleLabel : UILabel ? {
50+ get { return labelTitle }
51+ set { labelTitle = newValue }
52+ }
53+ var fileInfoLabel : UILabel ? {
54+ get { return labelInfo }
55+ set { labelInfo = newValue }
56+ }
57+ var fileProgressView : UIProgressView ? {
58+ get { return progressView }
59+ set { progressView = newValue }
60+ }
61+ var fileSelectImage : UIImageView ? {
62+ get { return imageSelect }
63+ set { imageSelect = newValue }
64+ }
65+ var fileStatusImage : UIImageView ? {
66+ get { return imageStatus }
67+ set { imageStatus = newValue }
68+ }
69+ var fileLocalImage : UIImageView ? {
70+ get { return imageLocal }
71+ set { imageLocal = newValue }
72+ }
73+ var fileFavoriteImage : UIImageView ? {
74+ get { return imageFavorite }
75+ set { imageFavorite = newValue }
76+ }
77+
4678 override func awakeFromNib( ) {
4779 super. awakeFromNib ( )
4880 initCell ( )
@@ -66,9 +98,14 @@ class NCTrashGridCell: UICollectionViewCell, NCTrashCellProtocol {
6698 imageVisualEffect. clipsToBounds = true
6799 imageVisualEffect. alpha = 0.5
68100
101+ progressView. tintColor = NCBrandColor . shared. brandElement
102+ progressView. transform = CGAffineTransform ( scaleX: 1.0 , y: 0.5 )
103+ progressView. trackTintColor = . clear
104+
69105 labelTitle. text = " "
70106 labelInfo. text = " "
71- labelSubinfo. text = " "
107+ labelTitle. textColor = . label
108+ labelInfo. textColor = . systemGray
72109 }
73110
74111 override func snapshotView( afterScreenUpdates afterUpdates: Bool ) -> UIView ? {
@@ -79,7 +116,10 @@ class NCTrashGridCell: UICollectionViewCell, NCTrashCellProtocol {
79116 delegate? . tapMoreGridItem ( with: objectId, image: imageItem. image, sender: sender)
80117 }
81118
119+
82120 fileprivate func setA11yActions( ) {
121+ let moreName = namedButtonMore == NCGlobal . shared. buttonMoreStop ? " _cancel_ " : " _more_ "
122+
83123 self . accessibilityCustomActions = [
84124 UIAccessibilityCustomAction (
85125 name: NSLocalizedString ( " _more_ " , comment: " " ) ,
@@ -88,7 +128,8 @@ class NCTrashGridCell: UICollectionViewCell, NCTrashCellProtocol {
88128 ]
89129 }
90130
91- func setButtonMore( image: UIImage ) {
131+ func setButtonMore( named: String , image: UIImage ) {
132+ namedButtonMore = named
92133 buttonMore. setImage ( image, for: . normal)
93134 setA11yActions ( )
94135 }
@@ -110,7 +151,7 @@ class NCTrashGridCell: UICollectionViewCell, NCTrashCellProtocol {
110151 imageSelect. isHidden = false
111152 imageVisualEffect. isHidden = false
112153 } else {
113- imageSelect. isHidden = true
154+ imageSelect. image = NCImageCache . shared . getImageCheckedNo ( )
114155 imageVisualEffect. isHidden = true
115156 }
116157 }
@@ -121,68 +162,11 @@ class NCTrashGridCell: UICollectionViewCell, NCTrashCellProtocol {
121162 dateFormatter. timeStyle = . none
122163 dateFormatter. locale = Locale . current
123164
124- labelInfo. text = dateFormatter. string ( from: date as Date )
125- labelSubinfo. text = NCUtilityFileSystem ( ) . transformedSize ( size)
165+ labelInfo. text = dateFormatter. string ( from: date as Date ) + " · " + NCUtilityFileSystem( ) . transformedSize ( size)
126166 }
127167
128168 func setAccessibility( label: String , value: String ) {
129169 accessibilityLabel = label
130170 accessibilityValue = value
131171 }
132172}
133-
134- // MARK: - Grid Layout
135-
136- class NCTrashGridLayout : UICollectionViewFlowLayout {
137-
138- var heightLabelPlusButton : CGFloat = 60
139- var marginLeftRight : CGFloat = 10
140- var itemForLine : CGFloat = 3
141- var itemWidthDefault : CGFloat = 140
142-
143- // MARK: - View Life Cycle
144-
145- override init ( ) {
146- super. init ( )
147-
148- sectionHeadersPinToVisibleBounds = false
149-
150- minimumInteritemSpacing = 1
151- minimumLineSpacing = marginLeftRight
152-
153- self . scrollDirection = . vertical
154- self . sectionInset = UIEdgeInsets ( top: 10 , left: marginLeftRight, bottom: 0 , right: marginLeftRight)
155- }
156-
157- required init ? ( coder aDecoder: NSCoder ) {
158- fatalError ( " init(coder:) has not been implemented " )
159- }
160-
161- override var itemSize : CGSize {
162- get {
163- if let collectionView = collectionView {
164-
165- if collectionView. frame. width < 400 {
166- itemForLine = 3
167- } else {
168- itemForLine = collectionView. frame. width / itemWidthDefault
169- }
170-
171- let itemWidth : CGFloat = ( collectionView. frame. width - marginLeftRight * 2 - marginLeftRight * ( itemForLine - 1 ) ) / itemForLine
172- let itemHeight : CGFloat = itemWidth + heightLabelPlusButton
173-
174- return CGSize ( width: itemWidth, height: itemHeight)
175- }
176-
177- // Default fallback
178- return CGSize ( width: itemWidthDefault, height: itemWidthDefault)
179- }
180- set {
181- super. itemSize = newValue
182- }
183- }
184-
185- override func targetContentOffset( forProposedContentOffset proposedContentOffset: CGPoint ) -> CGPoint {
186- return proposedContentOffset
187- }
188- }
0 commit comments