|
@@ -24,7 +24,7 @@
|
|
|
import Foundation
|
|
|
import Sheeeeeeeeet
|
|
|
|
|
|
-class NCTrash: UIViewController ,UICollectionViewDataSource, UICollectionViewDelegate, UICollectionViewDelegateFlowLayout, UIGestureRecognizerDelegate, NCTrashListCellDelegate, NCGridCellDelegate, NCTrashSectionHeaderMenuDelegate, DropdownMenuDelegate, DZNEmptyDataSetSource, DZNEmptyDataSetDelegate {
|
|
|
+class NCTrash: UIViewController, UIGestureRecognizerDelegate, NCTrashListCellDelegate, NCGridCellDelegate, NCTrashSectionHeaderMenuDelegate, DropdownMenuDelegate, DZNEmptyDataSetSource, DZNEmptyDataSetDelegate {
|
|
|
|
|
|
@IBOutlet fileprivate weak var collectionView: UICollectionView!
|
|
|
|
|
@@ -467,139 +467,40 @@ class NCTrash: UIViewController ,UICollectionViewDataSource, UICollectionViewDel
|
|
|
}
|
|
|
}
|
|
|
*/
|
|
|
-
|
|
|
- // MARK: NC API
|
|
|
-
|
|
|
- @objc func loadListingTrash() {
|
|
|
-
|
|
|
- OCNetworking.sharedManager().listingTrash(withAccount: appDelegate.activeAccount, path: path, serverUrl: appDelegate.activeUrl, completion: { (account, item, message, errorCode) in
|
|
|
-
|
|
|
- self.refreshControl.endRefreshing()
|
|
|
+}
|
|
|
|
|
|
- if errorCode == 0 && account == self.appDelegate.activeAccount {
|
|
|
- NCManageDatabase.sharedInstance.deleteTrash(filePath: self.path, account: self.appDelegate.activeAccount)
|
|
|
- NCManageDatabase.sharedInstance.addTrashs(item as! [tableTrash])
|
|
|
- } else if errorCode == kOCErrorServerUnauthorized {
|
|
|
- self.appDelegate.openLoginView(self, delegate: self.appDelegate.activeMain, loginType: Int(k_login_Modify_Password), selector: Int(k_intro_login))
|
|
|
- } else if errorCode != 0 {
|
|
|
- self.appDelegate.messageNotification("_error_", description: message, visible: true, delay: TimeInterval(k_dismissAfterSecond), type: TWMessageBarMessageType.error, errorCode: errorCode)
|
|
|
- } else {
|
|
|
- print("[LOG] It has been changed user during networking process, error.")
|
|
|
- }
|
|
|
-
|
|
|
- self.loadDatasource()
|
|
|
- })
|
|
|
- }
|
|
|
-
|
|
|
- func restoreItem(with fileID: String) {
|
|
|
-
|
|
|
- guard let tableTrash = NCManageDatabase.sharedInstance.getTrashItem(fileID: fileID, account: appDelegate.activeAccount) else {
|
|
|
- return
|
|
|
- }
|
|
|
-
|
|
|
- let fileName = appDelegate.activeUrl + tableTrash.filePath + tableTrash.fileName
|
|
|
- let fileNameTo = appDelegate.activeUrl + k_dav + "/trashbin/" + appDelegate.activeUserID + "/restore/" + tableTrash.fileName
|
|
|
+// MARK: - Collection View
|
|
|
+
|
|
|
+extension NCTrash: UICollectionViewDelegate {
|
|
|
+
|
|
|
+ func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
|
|
|
|
|
|
- OCNetworking.sharedManager().moveFileOrFolder(withAccount: appDelegate.activeAccount, fileName: fileName, fileNameTo: fileNameTo, completion: { (account, message, errorCode) in
|
|
|
- if errorCode == 0 && account == self.appDelegate.activeAccount {
|
|
|
- NCManageDatabase.sharedInstance.deleteTrash(fileID: fileID, account: account!)
|
|
|
- self.loadDatasource()
|
|
|
- } else if errorCode == kOCErrorServerUnauthorized {
|
|
|
- self.appDelegate.openLoginView(self, delegate: self.appDelegate.activeMain, loginType: Int(k_login_Modify_Password), selector: Int(k_intro_login))
|
|
|
- } else if errorCode != 0 {
|
|
|
- self.appDelegate.messageNotification("_error_", description: message, visible: true, delay: TimeInterval(k_dismissAfterSecond), type: TWMessageBarMessageType.error, errorCode: errorCode)
|
|
|
- } else {
|
|
|
- print("[LOG] It has been changed user during networking process, error.")
|
|
|
- }
|
|
|
- })
|
|
|
- }
|
|
|
-
|
|
|
- func emptyTrash() {
|
|
|
+ let tableTrash = datasource[indexPath.item]
|
|
|
|
|
|
- OCNetworking.sharedManager().emptyTrash(withAccount: appDelegate.activeAccount, completion: { (account, message, errorCode) in
|
|
|
- if errorCode == 0 && account == self.appDelegate.activeAccount {
|
|
|
- NCManageDatabase.sharedInstance.deleteTrash(fileID: nil, account: self.appDelegate.activeAccount)
|
|
|
- } else if errorCode == kOCErrorServerUnauthorized {
|
|
|
- self.appDelegate.openLoginView(self, delegate: self.appDelegate.activeMain, loginType: Int(k_login_Modify_Password), selector: Int(k_intro_login))
|
|
|
- } else if errorCode != 0 {
|
|
|
- self.appDelegate.messageNotification("_error_", description: message, visible: true, delay: TimeInterval(k_dismissAfterSecond), type: TWMessageBarMessageType.error, errorCode: errorCode)
|
|
|
+ if isEditMode {
|
|
|
+ if let index = selectFileID.index(of: tableTrash.fileID) {
|
|
|
+ selectFileID.remove(at: index)
|
|
|
} else {
|
|
|
- print("[LOG] It has been changed user during networking process, error.")
|
|
|
+ selectFileID.append(tableTrash.fileID)
|
|
|
}
|
|
|
- self.loadDatasource()
|
|
|
- })
|
|
|
- }
|
|
|
-
|
|
|
- func deleteItem(with fileID: String) {
|
|
|
-
|
|
|
- guard let tableTrash = NCManageDatabase.sharedInstance.getTrashItem(fileID: fileID, account: appDelegate.activeAccount) else {
|
|
|
+ collectionView.reloadItems(at: [indexPath])
|
|
|
return
|
|
|
}
|
|
|
|
|
|
- let path = appDelegate.activeUrl + tableTrash.filePath + tableTrash.fileName
|
|
|
-
|
|
|
- OCNetworking.sharedManager().deleteFileOrFolder(withAccount: appDelegate.activeAccount, path: path, completion: { (account, message, errorCode) in
|
|
|
- if errorCode == 0 && account == self.appDelegate.activeAccount {
|
|
|
- NCManageDatabase.sharedInstance.deleteTrash(fileID: fileID, account: account!)
|
|
|
- self.loadDatasource()
|
|
|
- } else if errorCode != 0 {
|
|
|
- self.appDelegate.messageNotification("_error_", description: message, visible: true, delay: TimeInterval(k_dismissAfterSecond), type: TWMessageBarMessageType.error, errorCode: errorCode)
|
|
|
- } else {
|
|
|
- print("[LOG] It has been changed user during networking process, error.")
|
|
|
- }
|
|
|
- })
|
|
|
- }
|
|
|
-
|
|
|
- func downloadThumbnail(with tableTrash: tableTrash, indexPath: IndexPath) {
|
|
|
-
|
|
|
- OCNetworking.sharedManager().downloadPreviewTrash(withAccount: appDelegate.activeAccount, fileID: tableTrash.fileID, fileName: tableTrash.fileName, completion: { (account, image, message, errorCode) in
|
|
|
+ if tableTrash.directory {
|
|
|
|
|
|
- if errorCode == 0 && account == self.appDelegate.activeAccount {
|
|
|
- if let cell = self.collectionView.cellForItem(at: indexPath) {
|
|
|
- if cell is NCTrashListCell {
|
|
|
- (cell as! NCTrashListCell).imageItem.image = image
|
|
|
- } else if cell is NCGridCell {
|
|
|
- (cell as! NCGridCell).imageItem.image = image
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- })
|
|
|
- }
|
|
|
-
|
|
|
- // MARK: DATASOURCE
|
|
|
-
|
|
|
- @objc func loadDatasource() {
|
|
|
-
|
|
|
- datasource.removeAll()
|
|
|
-
|
|
|
- if path == "" {
|
|
|
- let userID = (appDelegate.activeUserID as NSString).addingPercentEncoding(withAllowedCharacters: NSCharacterSet.urlFragmentAllowed)
|
|
|
- path = k_dav + "/trashbin/" + userID! + "/trash/"
|
|
|
- }
|
|
|
-
|
|
|
- guard let tashItems = NCManageDatabase.sharedInstance.getTrash(filePath: path, sorted: datasourceSorted, ascending: datasourceAscending, account: appDelegate.activeAccount) else {
|
|
|
- return
|
|
|
- }
|
|
|
-
|
|
|
- datasource = tashItems
|
|
|
-
|
|
|
- collectionView.reloadData()
|
|
|
- }
|
|
|
-
|
|
|
- // MARK: COLLECTIONVIEW METHODS
|
|
|
-
|
|
|
- func scrollViewDidEndScrollingAnimation(_ scrollView: UIScrollView) {
|
|
|
-
|
|
|
- if scrollToIndexPath != nil {
|
|
|
- if let cell = self.collectionView.cellForItem(at: self.scrollToIndexPath!) as? NCTrashListCell {
|
|
|
- cell.backgroundColor = NCBrandColor.sharedInstance.brandElement
|
|
|
- UIView.animate(withDuration: 0.5, animations: {
|
|
|
- cell.backgroundColor = .white
|
|
|
- })
|
|
|
- }
|
|
|
+ let ncTrash:NCTrash = UIStoryboard(name: "NCTrash", bundle: nil).instantiateInitialViewController() as! NCTrash
|
|
|
+
|
|
|
+ ncTrash.path = tableTrash.filePath + tableTrash.fileName
|
|
|
+ ncTrash.titleCurrentFolder = tableTrash.trashbinFileName
|
|
|
+
|
|
|
+ self.navigationController?.pushViewController(ncTrash, animated: true)
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
+}
|
|
|
+
|
|
|
+extension NCTrash: UICollectionViewDataSource {
|
|
|
+
|
|
|
func collectionView(_ collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, at indexPath: IndexPath) -> UICollectionReusableView {
|
|
|
|
|
|
if kind == UICollectionView.elementKindSectionHeader {
|
|
@@ -629,14 +530,6 @@ class NCTrash: UIViewController ,UICollectionViewDataSource, UICollectionViewDel
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, referenceSizeForHeaderInSection section: Int) -> CGSize {
|
|
|
- return CGSize(width: collectionView.frame.width, height: highHeader)
|
|
|
- }
|
|
|
-
|
|
|
- func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, referenceSizeForFooterInSection section: Int) -> CGSize {
|
|
|
- return CGSize(width: collectionView.frame.width, height: highHeader)
|
|
|
- }
|
|
|
-
|
|
|
func numberOfSections(in collectionView: UICollectionView) -> Int {
|
|
|
return 1
|
|
|
}
|
|
@@ -700,7 +593,7 @@ class NCTrash: UIViewController ,UICollectionViewDataSource, UICollectionViewDel
|
|
|
}
|
|
|
|
|
|
return cell
|
|
|
-
|
|
|
+
|
|
|
} else {
|
|
|
|
|
|
// GRID
|
|
@@ -733,30 +626,134 @@ class NCTrash: UIViewController ,UICollectionViewDataSource, UICollectionViewDel
|
|
|
return cell
|
|
|
}
|
|
|
}
|
|
|
+}
|
|
|
+
|
|
|
+extension NCTrash: UICollectionViewDelegateFlowLayout {
|
|
|
+
|
|
|
+ func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, referenceSizeForHeaderInSection section: Int) -> CGSize {
|
|
|
+ return CGSize(width: collectionView.frame.width, height: highHeader)
|
|
|
+ }
|
|
|
|
|
|
- func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
|
|
|
-
|
|
|
- let tableTrash = datasource[indexPath.item]
|
|
|
+ func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, referenceSizeForFooterInSection section: Int) -> CGSize {
|
|
|
+ return CGSize(width: collectionView.frame.width, height: highHeader)
|
|
|
+ }
|
|
|
+}
|
|
|
|
|
|
- if isEditMode {
|
|
|
- if let index = selectFileID.index(of: tableTrash.fileID) {
|
|
|
- selectFileID.remove(at: index)
|
|
|
- } else {
|
|
|
- selectFileID.append(tableTrash.fileID)
|
|
|
- }
|
|
|
- collectionView.reloadItems(at: [indexPath])
|
|
|
+// MARK: - NC API & Algorithm
|
|
|
+
|
|
|
+extension NCTrash {
|
|
|
+
|
|
|
+ @objc func loadDatasource() {
|
|
|
+
|
|
|
+ datasource.removeAll()
|
|
|
+
|
|
|
+ if path == "" {
|
|
|
+ let userID = (appDelegate.activeUserID as NSString).addingPercentEncoding(withAllowedCharacters: NSCharacterSet.urlFragmentAllowed)
|
|
|
+ path = k_dav + "/trashbin/" + userID! + "/trash/"
|
|
|
+ }
|
|
|
+
|
|
|
+ guard let tashItems = NCManageDatabase.sharedInstance.getTrash(filePath: path, sorted: datasourceSorted, ascending: datasourceAscending, account: appDelegate.activeAccount) else {
|
|
|
return
|
|
|
}
|
|
|
|
|
|
- if tableTrash.directory {
|
|
|
+ datasource = tashItems
|
|
|
|
|
|
- let ncTrash:NCTrash = UIStoryboard(name: "NCTrash", bundle: nil).instantiateInitialViewController() as! NCTrash
|
|
|
+ collectionView.reloadData()
|
|
|
+ }
|
|
|
+
|
|
|
+ @objc func loadListingTrash() {
|
|
|
+
|
|
|
+ OCNetworking.sharedManager().listingTrash(withAccount: appDelegate.activeAccount, path: path, serverUrl: appDelegate.activeUrl, completion: { (account, item, message, errorCode) in
|
|
|
|
|
|
- ncTrash.path = tableTrash.filePath + tableTrash.fileName
|
|
|
- ncTrash.titleCurrentFolder = tableTrash.trashbinFileName
|
|
|
+ self.refreshControl.endRefreshing()
|
|
|
|
|
|
- self.navigationController?.pushViewController(ncTrash, animated: true)
|
|
|
+ if errorCode == 0 && account == self.appDelegate.activeAccount {
|
|
|
+ NCManageDatabase.sharedInstance.deleteTrash(filePath: self.path, account: self.appDelegate.activeAccount)
|
|
|
+ NCManageDatabase.sharedInstance.addTrashs(item as! [tableTrash])
|
|
|
+ } else if errorCode == kOCErrorServerUnauthorized {
|
|
|
+ self.appDelegate.openLoginView(self, delegate: self.appDelegate.activeMain, loginType: Int(k_login_Modify_Password), selector: Int(k_intro_login))
|
|
|
+ } else if errorCode != 0 {
|
|
|
+ self.appDelegate.messageNotification("_error_", description: message, visible: true, delay: TimeInterval(k_dismissAfterSecond), type: TWMessageBarMessageType.error, errorCode: errorCode)
|
|
|
+ } else {
|
|
|
+ print("[LOG] It has been changed user during networking process, error.")
|
|
|
+ }
|
|
|
+
|
|
|
+ self.loadDatasource()
|
|
|
+ })
|
|
|
+ }
|
|
|
+
|
|
|
+ func restoreItem(with fileID: String) {
|
|
|
+
|
|
|
+ guard let tableTrash = NCManageDatabase.sharedInstance.getTrashItem(fileID: fileID, account: appDelegate.activeAccount) else {
|
|
|
+ return
|
|
|
}
|
|
|
+
|
|
|
+ let fileName = appDelegate.activeUrl + tableTrash.filePath + tableTrash.fileName
|
|
|
+ let fileNameTo = appDelegate.activeUrl + k_dav + "/trashbin/" + appDelegate.activeUserID + "/restore/" + tableTrash.fileName
|
|
|
+
|
|
|
+ OCNetworking.sharedManager().moveFileOrFolder(withAccount: appDelegate.activeAccount, fileName: fileName, fileNameTo: fileNameTo, completion: { (account, message, errorCode) in
|
|
|
+ if errorCode == 0 && account == self.appDelegate.activeAccount {
|
|
|
+ NCManageDatabase.sharedInstance.deleteTrash(fileID: fileID, account: account!)
|
|
|
+ self.loadDatasource()
|
|
|
+ } else if errorCode == kOCErrorServerUnauthorized {
|
|
|
+ self.appDelegate.openLoginView(self, delegate: self.appDelegate.activeMain, loginType: Int(k_login_Modify_Password), selector: Int(k_intro_login))
|
|
|
+ } else if errorCode != 0 {
|
|
|
+ self.appDelegate.messageNotification("_error_", description: message, visible: true, delay: TimeInterval(k_dismissAfterSecond), type: TWMessageBarMessageType.error, errorCode: errorCode)
|
|
|
+ } else {
|
|
|
+ print("[LOG] It has been changed user during networking process, error.")
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+
|
|
|
+ func emptyTrash() {
|
|
|
+
|
|
|
+ OCNetworking.sharedManager().emptyTrash(withAccount: appDelegate.activeAccount, completion: { (account, message, errorCode) in
|
|
|
+ if errorCode == 0 && account == self.appDelegate.activeAccount {
|
|
|
+ NCManageDatabase.sharedInstance.deleteTrash(fileID: nil, account: self.appDelegate.activeAccount)
|
|
|
+ } else if errorCode == kOCErrorServerUnauthorized {
|
|
|
+ self.appDelegate.openLoginView(self, delegate: self.appDelegate.activeMain, loginType: Int(k_login_Modify_Password), selector: Int(k_intro_login))
|
|
|
+ } else if errorCode != 0 {
|
|
|
+ self.appDelegate.messageNotification("_error_", description: message, visible: true, delay: TimeInterval(k_dismissAfterSecond), type: TWMessageBarMessageType.error, errorCode: errorCode)
|
|
|
+ } else {
|
|
|
+ print("[LOG] It has been changed user during networking process, error.")
|
|
|
+ }
|
|
|
+ self.loadDatasource()
|
|
|
+ })
|
|
|
+ }
|
|
|
+
|
|
|
+ func deleteItem(with fileID: String) {
|
|
|
+
|
|
|
+ guard let tableTrash = NCManageDatabase.sharedInstance.getTrashItem(fileID: fileID, account: appDelegate.activeAccount) else {
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ let path = appDelegate.activeUrl + tableTrash.filePath + tableTrash.fileName
|
|
|
+
|
|
|
+ OCNetworking.sharedManager().deleteFileOrFolder(withAccount: appDelegate.activeAccount, path: path, completion: { (account, message, errorCode) in
|
|
|
+ if errorCode == 0 && account == self.appDelegate.activeAccount {
|
|
|
+ NCManageDatabase.sharedInstance.deleteTrash(fileID: fileID, account: account!)
|
|
|
+ self.loadDatasource()
|
|
|
+ } else if errorCode != 0 {
|
|
|
+ self.appDelegate.messageNotification("_error_", description: message, visible: true, delay: TimeInterval(k_dismissAfterSecond), type: TWMessageBarMessageType.error, errorCode: errorCode)
|
|
|
+ } else {
|
|
|
+ print("[LOG] It has been changed user during networking process, error.")
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+
|
|
|
+ func downloadThumbnail(with tableTrash: tableTrash, indexPath: IndexPath) {
|
|
|
+
|
|
|
+ OCNetworking.sharedManager().downloadPreviewTrash(withAccount: appDelegate.activeAccount, fileID: tableTrash.fileID, fileName: tableTrash.fileName, completion: { (account, image, message, errorCode) in
|
|
|
+
|
|
|
+ if errorCode == 0 && account == self.appDelegate.activeAccount {
|
|
|
+ if let cell = self.collectionView.cellForItem(at: indexPath) {
|
|
|
+ if cell is NCTrashListCell {
|
|
|
+ (cell as! NCTrashListCell).imageItem.image = image
|
|
|
+ } else if cell is NCGridCell {
|
|
|
+ (cell as! NCGridCell).imageItem.image = image
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ })
|
|
|
}
|
|
|
}
|
|
|
-
|