diff options
author | jan Iversen <jani@libreoffice.org> | 2017-03-17 15:13:42 +0100 |
---|---|---|
committer | jan iversen <jani@libreoffice.org> | 2017-03-24 15:02:07 +0000 |
commit | 3691457e9abde8af74db9c3b85e5494b2f9d7840 (patch) | |
tree | 6de37a6b54dc4145a3f525f677b7300495476704 /ios | |
parent | cb20ca1f52f2a0d61b972f88fb01e23958a0f3a5 (diff) |
iOS LibreOfficeLight filemanager
Update to filemanager to act as an
overlay to documentView
updated appIcon to include only required
added setName dialog (used for rename/create directory/save as)
Removed trailing whitespace
Change-Id: I1c8a8cd7ef4eb76687f40e806a14884a1e396bc5
Reviewed-on: https://gerrit.libreoffice.org/35612
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: jan iversen <jani@libreoffice.org>
Diffstat (limited to 'ios')
28 files changed, 664 insertions, 611 deletions
diff --git a/ios/experimental/LibreOfficeLight/LibreOfficeLight/Assets.xcassets/AppIcon.appiconset/Contents.json b/ios/experimental/LibreOfficeLight/LibreOfficeLight/Assets.xcassets/AppIcon.appiconset/Contents.json index c5f125791449..2f6bc9bc4eff 100644 --- a/ios/experimental/LibreOfficeLight/LibreOfficeLight/Assets.xcassets/AppIcon.appiconset/Contents.json +++ b/ios/experimental/LibreOfficeLight/LibreOfficeLight/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -1,107 +1,29 @@ { "images" : [ { - "idiom" : "iphone", - "size" : "20x20", - "scale" : "2x", - "filename" : "LibreOffice-40.png" - }, - { - "idiom" : "iphone", - "size" : "20x20", - "scale" : "3x", - "filename" : "LibreOffice-60.png" - }, - { - "idiom" : "iphone", - "size" : "29x29", + "idiom" : "ipad", + "size" : "83.5x83.5", "scale" : "2x", - "filename" : "LibreOffice-58.png" - }, - { - "idiom" : "iphone", - "size" : "29x29", - "scale" : "3x", - "filename" : "LibreOffice-87.png" + "filename" : "LibreOffice-83.5x83.5@2x.png" }, { - "idiom" : "iphone", - "size" : "40x40", + "idiom" : "ipad", + "size" : "76x76", "scale" : "2x", - "filename" : "LibreOffice-80.png" - }, - { - "idiom" : "iphone", - "size" : "40x40", - "scale" : "3x", - "filename" : "LibreOffice-120.png" + "filename" : "LibreOffice-76x76@2x.png" }, { "idiom" : "iphone", "size" : "60x60", "scale" : "2x", - "filename" : "LibreOffice-120.png" + "filename" : "LibreOffice-60x60@2x.png" }, { "idiom" : "iphone", - "size" : "60x60", - "scale" : "3x", - "filename" : "LibreOffice-180.png" - }, - { - "idiom" : "ipad", - "size" : "20x20", - "scale" : "1x", - "filename" : "LibreOffice-20.png" - }, - { - "idiom" : "ipad", - "size" : "20x20", - "scale" : "2x", - "filename" : "LibreOffice-40.png" - }, - { - "idiom" : "ipad", - "size" : "29x29", - "scale" : "1x", - "filename" : "LibreOffice-29.png" - }, - { - "idiom" : "ipad", "size" : "29x29", "scale" : "2x", - "filename" : "LibreOffice-58.png" - }, - { - "idiom" : "ipad", - "size" : "40x40", - "scale" : "1x", - "filename" : "LibreOffice-40.png" - }, - { - "idiom" : "ipad", - "size" : "40x40", - "scale" : "2x", - "filename" : "LibreOffice-80.png" - }, - { - "idiom" : "ipad", - "size" : "76x76", - "scale" : "1x", - "filename" : "LibreOffice-76.png" - }, - { - "idiom" : "ipad", - "size" : "76x76", - "scale" : "2x", - "filename" : "LibreOffice-152.png" + "filename" : "LibreOffice-Small.png" }, - { - "idiom" : "ipad", - "size" : "83.5x83.5", - "scale" : "2x", - "filename" : "LibreOffice-167.png" - } ], "info" : { "version" : 1, diff --git a/ios/experimental/LibreOfficeLight/LibreOfficeLight/Assets.xcassets/AppIcon.appiconset/LibreOffice-180.png b/ios/experimental/LibreOfficeLight/LibreOfficeLight/Assets.xcassets/AppIcon.appiconset/LibreOffice-180.png Binary files differdeleted file mode 100644 index 05c3d0616ad2..000000000000 --- a/ios/experimental/LibreOfficeLight/LibreOfficeLight/Assets.xcassets/AppIcon.appiconset/LibreOffice-180.png +++ /dev/null diff --git a/ios/experimental/LibreOfficeLight/LibreOfficeLight/Assets.xcassets/AppIcon.appiconset/LibreOffice-20.png b/ios/experimental/LibreOfficeLight/LibreOfficeLight/Assets.xcassets/AppIcon.appiconset/LibreOffice-20.png Binary files differdeleted file mode 100644 index adb2ea30b016..000000000000 --- a/ios/experimental/LibreOfficeLight/LibreOfficeLight/Assets.xcassets/AppIcon.appiconset/LibreOffice-20.png +++ /dev/null diff --git a/ios/experimental/LibreOfficeLight/LibreOfficeLight/Assets.xcassets/AppIcon.appiconset/LibreOffice-29.png b/ios/experimental/LibreOfficeLight/LibreOfficeLight/Assets.xcassets/AppIcon.appiconset/LibreOffice-29.png Binary files differdeleted file mode 100644 index 69a807475505..000000000000 --- a/ios/experimental/LibreOfficeLight/LibreOfficeLight/Assets.xcassets/AppIcon.appiconset/LibreOffice-29.png +++ /dev/null diff --git a/ios/experimental/LibreOfficeLight/LibreOfficeLight/Assets.xcassets/AppIcon.appiconset/LibreOffice-40.png b/ios/experimental/LibreOfficeLight/LibreOfficeLight/Assets.xcassets/AppIcon.appiconset/LibreOffice-40.png Binary files differdeleted file mode 100644 index a0bf9afbb596..000000000000 --- a/ios/experimental/LibreOfficeLight/LibreOfficeLight/Assets.xcassets/AppIcon.appiconset/LibreOffice-40.png +++ /dev/null diff --git a/ios/experimental/LibreOfficeLight/LibreOfficeLight/Assets.xcassets/AppIcon.appiconset/LibreOffice-60.png b/ios/experimental/LibreOfficeLight/LibreOfficeLight/Assets.xcassets/AppIcon.appiconset/LibreOffice-60.png Binary files differdeleted file mode 100644 index 3e9199974bd7..000000000000 --- a/ios/experimental/LibreOfficeLight/LibreOfficeLight/Assets.xcassets/AppIcon.appiconset/LibreOffice-60.png +++ /dev/null diff --git a/ios/experimental/LibreOfficeLight/LibreOfficeLight/Assets.xcassets/AppIcon.appiconset/LibreOffice-120.png b/ios/experimental/LibreOfficeLight/LibreOfficeLight/Assets.xcassets/AppIcon.appiconset/LibreOffice-60x60@2x.png Binary files differindex b6371ab981a9..b6371ab981a9 100644 --- a/ios/experimental/LibreOfficeLight/LibreOfficeLight/Assets.xcassets/AppIcon.appiconset/LibreOffice-120.png +++ b/ios/experimental/LibreOfficeLight/LibreOfficeLight/Assets.xcassets/AppIcon.appiconset/LibreOffice-60x60@2x.png diff --git a/ios/experimental/LibreOfficeLight/LibreOfficeLight/Assets.xcassets/AppIcon.appiconset/LibreOffice-76.png b/ios/experimental/LibreOfficeLight/LibreOfficeLight/Assets.xcassets/AppIcon.appiconset/LibreOffice-76.png Binary files differdeleted file mode 100644 index 729d0cbb4f50..000000000000 --- a/ios/experimental/LibreOfficeLight/LibreOfficeLight/Assets.xcassets/AppIcon.appiconset/LibreOffice-76.png +++ /dev/null diff --git a/ios/experimental/LibreOfficeLight/LibreOfficeLight/Assets.xcassets/AppIcon.appiconset/LibreOffice-152.png b/ios/experimental/LibreOfficeLight/LibreOfficeLight/Assets.xcassets/AppIcon.appiconset/LibreOffice-76x76@2x.png Binary files differindex e0e1cf3123a9..e0e1cf3123a9 100644 --- a/ios/experimental/LibreOfficeLight/LibreOfficeLight/Assets.xcassets/AppIcon.appiconset/LibreOffice-152.png +++ b/ios/experimental/LibreOfficeLight/LibreOfficeLight/Assets.xcassets/AppIcon.appiconset/LibreOffice-76x76@2x.png diff --git a/ios/experimental/LibreOfficeLight/LibreOfficeLight/Assets.xcassets/AppIcon.appiconset/LibreOffice-80.png b/ios/experimental/LibreOfficeLight/LibreOfficeLight/Assets.xcassets/AppIcon.appiconset/LibreOffice-80.png Binary files differdeleted file mode 100644 index 25c8f68837fe..000000000000 --- a/ios/experimental/LibreOfficeLight/LibreOfficeLight/Assets.xcassets/AppIcon.appiconset/LibreOffice-80.png +++ /dev/null diff --git a/ios/experimental/LibreOfficeLight/LibreOfficeLight/Assets.xcassets/AppIcon.appiconset/LibreOffice-167.png b/ios/experimental/LibreOfficeLight/LibreOfficeLight/Assets.xcassets/AppIcon.appiconset/LibreOffice-83.5x83.5@2x.png Binary files differindex b3ac8e54e4b2..b3ac8e54e4b2 100644 --- a/ios/experimental/LibreOfficeLight/LibreOfficeLight/Assets.xcassets/AppIcon.appiconset/LibreOffice-167.png +++ b/ios/experimental/LibreOfficeLight/LibreOfficeLight/Assets.xcassets/AppIcon.appiconset/LibreOffice-83.5x83.5@2x.png diff --git a/ios/experimental/LibreOfficeLight/LibreOfficeLight/Assets.xcassets/AppIcon.appiconset/LibreOffice-87.png b/ios/experimental/LibreOfficeLight/LibreOfficeLight/Assets.xcassets/AppIcon.appiconset/LibreOffice-87.png Binary files differdeleted file mode 100644 index 0c830e3092cb..000000000000 --- a/ios/experimental/LibreOfficeLight/LibreOfficeLight/Assets.xcassets/AppIcon.appiconset/LibreOffice-87.png +++ /dev/null diff --git a/ios/experimental/LibreOfficeLight/LibreOfficeLight/Assets.xcassets/AppIcon.appiconset/LibreOffice-58.png b/ios/experimental/LibreOfficeLight/LibreOfficeLight/Assets.xcassets/AppIcon.appiconset/LibreOffice-Small.png Binary files differindex b73a8b8011e8..b73a8b8011e8 100644 --- a/ios/experimental/LibreOfficeLight/LibreOfficeLight/Assets.xcassets/AppIcon.appiconset/LibreOffice-58.png +++ b/ios/experimental/LibreOfficeLight/LibreOfficeLight/Assets.xcassets/AppIcon.appiconset/LibreOffice-Small.png diff --git a/ios/experimental/LibreOfficeLight/LibreOfficeLight/Assets.xcassets/back.imageset/Contents.json b/ios/experimental/LibreOfficeLight/LibreOfficeLight/Assets.xcassets/back.imageset/Contents.json new file mode 100644 index 000000000000..cc9fb3d1aa3e --- /dev/null +++ b/ios/experimental/LibreOfficeLight/LibreOfficeLight/Assets.xcassets/back.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x", + "filename" : "back.png" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "back@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x", + "filename" : "back@3x.png" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} diff --git a/ios/experimental/LibreOfficeLight/LibreOfficeLight/Assets.xcassets/back.imageset/back.png b/ios/experimental/LibreOfficeLight/LibreOfficeLight/Assets.xcassets/back.imageset/back.png Binary files differnew file mode 100644 index 000000000000..0b9776a64231 --- /dev/null +++ b/ios/experimental/LibreOfficeLight/LibreOfficeLight/Assets.xcassets/back.imageset/back.png diff --git a/ios/experimental/LibreOfficeLight/LibreOfficeLight/Assets.xcassets/back.imageset/back@2x.png b/ios/experimental/LibreOfficeLight/LibreOfficeLight/Assets.xcassets/back.imageset/back@2x.png Binary files differnew file mode 100644 index 000000000000..6e7c3995dfdb --- /dev/null +++ b/ios/experimental/LibreOfficeLight/LibreOfficeLight/Assets.xcassets/back.imageset/back@2x.png diff --git a/ios/experimental/LibreOfficeLight/LibreOfficeLight/Assets.xcassets/back.imageset/back@3x.png b/ios/experimental/LibreOfficeLight/LibreOfficeLight/Assets.xcassets/back.imageset/back@3x.png Binary files differnew file mode 100644 index 000000000000..e66980cddde4 --- /dev/null +++ b/ios/experimental/LibreOfficeLight/LibreOfficeLight/Assets.xcassets/back.imageset/back@3x.png diff --git a/ios/experimental/LibreOfficeLight/LibreOfficeLight/Assets.xcassets/iCloudDrive.imageset/Contents.json b/ios/experimental/LibreOfficeLight/LibreOfficeLight/Assets.xcassets/iCloudDrive.imageset/Contents.json new file mode 100644 index 000000000000..cd69f7f90c00 --- /dev/null +++ b/ios/experimental/LibreOfficeLight/LibreOfficeLight/Assets.xcassets/iCloudDrive.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x", + "filename" : "iCloudDrive.png" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "iCloudDrive@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x", + "filename" : "iCloudDrive@3x.png" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} diff --git a/ios/experimental/LibreOfficeLight/LibreOfficeLight/Assets.xcassets/iCloudDrive.imageset/iCloudDrive.png b/ios/experimental/LibreOfficeLight/LibreOfficeLight/Assets.xcassets/iCloudDrive.imageset/iCloudDrive.png Binary files differnew file mode 100644 index 000000000000..d213949b467f --- /dev/null +++ b/ios/experimental/LibreOfficeLight/LibreOfficeLight/Assets.xcassets/iCloudDrive.imageset/iCloudDrive.png diff --git a/ios/experimental/LibreOfficeLight/LibreOfficeLight/Assets.xcassets/iCloudDrive.imageset/iCloudDrive@2x.png b/ios/experimental/LibreOfficeLight/LibreOfficeLight/Assets.xcassets/iCloudDrive.imageset/iCloudDrive@2x.png Binary files differnew file mode 100644 index 000000000000..ba486fbbe6ae --- /dev/null +++ b/ios/experimental/LibreOfficeLight/LibreOfficeLight/Assets.xcassets/iCloudDrive.imageset/iCloudDrive@2x.png diff --git a/ios/experimental/LibreOfficeLight/LibreOfficeLight/Assets.xcassets/iCloudDrive.imageset/iCloudDrive@3x.png b/ios/experimental/LibreOfficeLight/LibreOfficeLight/Assets.xcassets/iCloudDrive.imageset/iCloudDrive@3x.png Binary files differnew file mode 100644 index 000000000000..28c41597cf0f --- /dev/null +++ b/ios/experimental/LibreOfficeLight/LibreOfficeLight/Assets.xcassets/iCloudDrive.imageset/iCloudDrive@3x.png diff --git a/ios/experimental/LibreOfficeLight/LibreOfficeLight/Assets.xcassets/iPhone.imageset/Contents.json b/ios/experimental/LibreOfficeLight/LibreOfficeLight/Assets.xcassets/iPhone.imageset/Contents.json new file mode 100644 index 000000000000..2d0a29db946a --- /dev/null +++ b/ios/experimental/LibreOfficeLight/LibreOfficeLight/Assets.xcassets/iPhone.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x", + "filename" : "iPhone.png" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "iPhone@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x", + "filename" : "iPhone@3x.png" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} diff --git a/ios/experimental/LibreOfficeLight/LibreOfficeLight/Assets.xcassets/iPhone.imageset/iPhone.png b/ios/experimental/LibreOfficeLight/LibreOfficeLight/Assets.xcassets/iPhone.imageset/iPhone.png Binary files differnew file mode 100644 index 000000000000..defe533b489a --- /dev/null +++ b/ios/experimental/LibreOfficeLight/LibreOfficeLight/Assets.xcassets/iPhone.imageset/iPhone.png diff --git a/ios/experimental/LibreOfficeLight/LibreOfficeLight/Assets.xcassets/iPhone.imageset/iPhone@2x.png b/ios/experimental/LibreOfficeLight/LibreOfficeLight/Assets.xcassets/iPhone.imageset/iPhone@2x.png Binary files differnew file mode 100644 index 000000000000..da7dcbff0dc4 --- /dev/null +++ b/ios/experimental/LibreOfficeLight/LibreOfficeLight/Assets.xcassets/iPhone.imageset/iPhone@2x.png diff --git a/ios/experimental/LibreOfficeLight/LibreOfficeLight/Assets.xcassets/iPhone.imageset/iPhone@3x.png b/ios/experimental/LibreOfficeLight/LibreOfficeLight/Assets.xcassets/iPhone.imageset/iPhone@3x.png Binary files differnew file mode 100644 index 000000000000..1c827c89af6f --- /dev/null +++ b/ios/experimental/LibreOfficeLight/LibreOfficeLight/Assets.xcassets/iPhone.imageset/iPhone@3x.png diff --git a/ios/experimental/LibreOfficeLight/LibreOfficeLight/DocumentController.swift b/ios/experimental/LibreOfficeLight/LibreOfficeLight/DocumentController.swift index 051d714c821b..9c6cd1b9fb82 100755 --- a/ios/experimental/LibreOfficeLight/LibreOfficeLight/DocumentController.swift +++ b/ios/experimental/LibreOfficeLight/LibreOfficeLight/DocumentController.swift @@ -11,42 +11,42 @@ import UIKit class DocumentController: UIViewController { - - + + override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view. } - - + + @IBAction func returned(segue: UIStoryboardSegue) { print("I returned") } - + override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } - - + + } class DocumentActions: UITableViewController { - + @IBAction func doOpen(_ sender: UIButton) { } - + @IBAction func doNew(_ sender: UIButton) { } - + @IBAction func doSave(_ sender: UIButton) { } - + @IBAction func doPDF(_ sender: UIButton) { } override func viewDidLoad() @@ -54,38 +54,15 @@ class DocumentActions: UITableViewController super.viewDidLoad() // Do any additional setup after loading the view. } - - - - override func didReceiveMemoryWarning() - { - super.didReceiveMemoryWarning() - // Dispose of any resources that can be recreated. - } - - -} - -class DocumentSaveAsAction: UIViewController -{ - - - override func viewDidLoad() - { - super.viewDidLoad() - // Do any additional setup after loading the view. - } - - - override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } - - + + } + diff --git a/ios/experimental/LibreOfficeLight/LibreOfficeLight/FileManagerController.swift b/ios/experimental/LibreOfficeLight/LibreOfficeLight/FileManagerController.swift index 2fee4804b4f2..9f6352071c10 100755 --- a/ios/experimental/LibreOfficeLight/LibreOfficeLight/FileManagerController.swift +++ b/ios/experimental/LibreOfficeLight/LibreOfficeLight/FileManagerController.swift @@ -1,411 +1,477 @@ // -// This file is part of the LibreOffice project. +//ThisfileispartoftheLibreOfficeproject. // -// This Source Code Form is subject to the terms of the Mozilla Public -// License, v. 2.0. If a copy of the MPL was not distributed with this -// file, You can obtain one at http://mozilla.org/MPL/2.0/. +//ThisSourceCodeFormissubjecttothetermsoftheMozillaPublic +//License,v.2.0.IfacopyoftheMPLwasnotdistributedwiththis +//file,Youcanobtainoneathttp://mozilla.org/MPL/2.0/. // -import UIKit - - -private class FileStorage -{ - // house keeping variables - private let filemgr : FileManager = FileManager.default - private var storageIsLocal : Bool = true - - // Start path for the 2 storage locations - private let baseLocalDocPath : URL - private let baseCloudDocPath : URL? - private var currentDocPath : URL? { - get { - return storageIsLocal ? baseLocalDocPath : baseCloudDocPath - } - } - - // make access to current dir independent of storage selection - private var localDir : URL - private var cloudDir : URL? - private var currentDir : URL { - get { - return storageIsLocal ? localDir : cloudDir! - } - set(newDir) { - if storageIsLocal { - localDir = newDir - } else { - cloudDir = newDir - } - } - } - - - - // content of current directory - var currentFileList : [String] = [] - var currentDirList : [String] = [] - - - - // Support functions - func iCloudEnabled() -> Bool - { - return filemgr.ubiquityIdentityToken != nil - } - - - func isSubDirectory() -> Bool - { - return currentDir != currentDocPath - } - - - - func selectStorage(_ doSwitch : Bool) -> Bool - { - if doSwitch { - storageIsLocal = !storageIsLocal - buildFileList() - } - return storageIsLocal - } - - - - func enterDirectory(_ name: String) - { - // simple add directory - currentDir = currentDir.appendingPathComponent(name) - filemgr.changeCurrentDirectoryPath(name) - buildFileList() - } - - - func leaveDirectory() - { - // step up for active storage, and only if not in root - if isSubDirectory() { - currentDir = currentDir.deletingLastPathComponent() - buildFileList() - } - } - - - - func createDirectory(_ name: String) - { - let newDir = currentDir.appendingPathComponent(name) - try! filemgr.createDirectory(at: newDir, withIntermediateDirectories: true, attributes: nil) - currentDir = currentDir.appendingPathComponent(name) - buildFileList() - } - - - - func deleteFileDirectory(_ name: String) - { - let delDir = currentDir.appendingPathComponent(name) - try! filemgr.removeItem(at: delDir) - buildFileList() - } - - - - func getFileURL(_ name: String) -> URL - { - return currentDir.appendingPathComponent(name) - } - - - - func copyFile(_ name: String) - { - try! filemgr.copyItem(at: currentDir.appendingPathComponent(name), - to: (storageIsLocal ? cloudDir! : localDir).appendingPathComponent(name)) - } - - - - func moveFile(_ name: String) - { - try! filemgr.moveItem(at: currentDir.appendingPathComponent(name), - to: (storageIsLocal ? localDir : cloudDir!).appendingPathComponent(name)) - buildFileList() - } - - - - private func buildFileList() - { - currentDirList = [] - currentFileList = [] - let rawFileList = try! filemgr.contentsOfDirectory(at: currentDir, - includingPropertiesForKeys: [URLResourceKey.isDirectoryKey]) - for rawFile in rawFileList { - var isDir: ObjCBool = false - filemgr.fileExists(atPath: rawFile.path, isDirectory: &isDir) - if isDir.boolValue { - currentDirList.append(rawFile.lastPathComponent) - } else { - currentFileList.append(rawFile.lastPathComponent) - } - } - } - - - - init() - { - baseLocalDocPath = filemgr.urls(for: .documentDirectory, in: .userDomainMask)[0] - localDir = baseLocalDocPath - - let cloudUrl = filemgr.url(forUbiquityContainerIdentifier: nil) - baseCloudDocPath = (cloudUrl == nil) ? nil : cloudUrl?.appendingPathComponent("Documents") - cloudDir = baseCloudDocPath - buildFileList() - } -} - - - -class FileManagerController : UITableViewController, actionsControlDelegate - -{ - // Housekeeping variables - private var fileData = FileStorage() - private var selectedRow : IndexPath? - - - - // selectStorage is only enabled when iCloud is active - @IBOutlet weak var buttonSelectStorage: UIBarButtonItem! - override func viewDidLoad() - { - super.viewDidLoad() - buttonSelectStorage.isEnabled = fileData.iCloudEnabled() - } - - - - // Toogle between local and cloud storage - @IBAction func doSelectStorage(_ sender: UIBarButtonItem) - { - sender.title = fileData.selectStorage(true) ? "iCloud" : "iPad" - reloadData() - } - - - - // Last stop before displaying popover - override func prepare(for segue: UIStoryboardSegue, sender: Any?) - { - if segue.identifier == "doShowFileManagerActions" { - let vc = segue.destination as! FileManagerActions - vc.delegate = self - vc.inFileSelect = (selectedRow != nil) - vc.inSubDirectory = fileData.isSubDirectory() - vc.useCloud = fileData.iCloudEnabled() - } - } - - - - func actionOpen() - { - if selectedRow != nil { - let currentCell = tableView.cellForRow(at: selectedRow!) as! FileManagerCell - if currentCell.isDirectory { - fileData.enterDirectory(currentCell.fileName) - reloadData() - } else { - // JIX delegate to Document - } - } - } - - - - func actionDelete() - { - if selectedRow != nil { - let currentCell = self.tableView.cellForRow(at: selectedRow!) as! FileManagerCell - fileData.deleteFileDirectory(currentCell.fileName) - reloadData() - } - } - - - - func actionUploadDownload() - { - if selectedRow != nil { - let currentCell = self.tableView.cellForRow(at: selectedRow!) as! FileManagerCell - fileData.copyFile(currentCell.fileName) - reloadData() - } - } - - - - func actionLevelUp() - { - fileData.leaveDirectory() - reloadData() - } - - - - func actionCreateDirectory(_ name : String) - { - fileData.createDirectory(name) - reloadData() - } - - - - // Table handling functions - override func numberOfSections(in tableView: UITableView) -> Int - { - return 1 - } - - - - override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int - { - return fileData.currentDirList.count + fileData.currentFileList.count - } - - - - override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell - { - let cell = self.tableView.dequeueReusableCell(withIdentifier: "fileEntry", for: indexPath) as! FileManagerCell - let row = indexPath.row - - if row < fileData.currentDirList.count { - cell.fileName = fileData.currentDirList[row] - cell.fileLabel.text = cell.fileName + "/" - cell.isDirectory = true - } else { - let inx = row - fileData.currentDirList.count - cell.fileName = fileData.currentFileList[inx] - cell.fileLabel.text = cell.fileName - cell.isDirectory = false - } - return cell - } - - - - // Select a row (file) and show actions - override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) - { - selectedRow = indexPath - performSegue(withIdentifier: "showActions", sender: self) - } - - - - // Support function - func reloadData() - { - selectedRow = nil - tableView.reloadData() - } - -} - - - -// Space holder for extra information needed to do the right thing for each action -class FileManagerCell: UITableViewCell { - - @IBOutlet weak var fileLabel: UILabel! - var isDirectory : Bool = false - var fileName : String = "" -} - - - -// Protocol for action popover callback -protocol actionsControlDelegate -{ - func actionOpen() - func actionDelete() - func actionUploadDownload() - func actionLevelUp() - func actionCreateDirectory(_ name : String) -} - - - -// Action popover dialog -class FileManagerActions : UITableViewController - -{ - // Pointer to callback class - var delegate : actionsControlDelegate? - var inSubDirectory : Bool = false - var inFileSelect : Bool = false - var useCloud : Bool = false - - // Calling class might enable/disable each button - @IBOutlet weak var buttonUploadDownload: UIButton! - @IBOutlet weak var buttonDelete: UIButton! - @IBOutlet weak var buttonOpen: UIButton! - @IBOutlet weak var buttonLevelUp: UIButton! - @IBOutlet weak var buttonCreateDirectory: UIButton! - @IBOutlet weak var editDirectoryName: UITextField! - - - // Actions - @IBAction func doOpen(_ sender: UIButton) - { - delegate?.actionOpen() - dismiss(animated: false) - } - - - - @IBAction func doDelete(_ sender: UIButton) - { - delegate?.actionDelete() - dismiss(animated: false) - } - - - - @IBAction func doUploadDownload(_ sender: UIButton) - { - delegate?.actionUploadDownload() - dismiss(animated: false) - } - - - - @IBAction func doLevelUp(_ sender: UIButton) - { - delegate?.actionLevelUp() - dismiss(animated: false) - } - - @IBAction func doCreateDirectory(_ sender: UIButton) - { - if editDirectoryName.text != "type name" { - delegate?.actionCreateDirectory(editDirectoryName.text!) - } - dismiss(animated: false) - } - - - - override func viewDidLoad() - { - super.viewDidLoad() - buttonLevelUp.isEnabled = inSubDirectory - buttonOpen.isEnabled = inFileSelect - buttonDelete.isEnabled = inFileSelect - buttonUploadDownload.isEnabled = (inFileSelect && useCloud) - } +importUIKit + + +privateclassFileStorage +{ +//housekeepingvariables +privateletfilemgr:FileManager=FileManager.default +privatevarstorageIsLocal:Bool=true + +//Startpathforthe2storagelocations +privateletbaseLocalDocPath:URL +privateletbaseCloudDocPath:URL? +privatevarcurrentDocPath:URL?{ +get{ +returnstorageIsLocal?baseLocalDocPath:baseCloudDocPath +} +} + +//makeaccesstocurrentdirindependentofstorageselection +privatevarlocalDir:URL +privatevarcloudDir:URL? +privatevarcurrentDir:URL{ +get{ +returnstorageIsLocal?localDir:cloudDir! +} +set(newDir){ +ifstorageIsLocal{ +localDir=newDir +}else{ +cloudDir=newDir +} +} +} + + + +//contentofcurrentdirectory +varcurrentFileList:[String]=[] +varcurrentDirList:[String]=[] + + + +//Supportfunctions +funciCloudEnabled()->Bool +{ +returnfilemgr.ubiquityIdentityToken!=nil +} + + +funcisSubDirectory()->Bool +{ +returncurrentDir!=currentDocPath +} + + + +funcselectStorage(_doSwitch:Bool)->Bool +{ +ifdoSwitch{ +storageIsLocal=!storageIsLocal +buildFileList() +} +returnstorageIsLocal +} + + + +funcenterDirectory(_name:String) +{ +//simpleadddirectory +currentDir=currentDir.appendingPathComponent(name) +filemgr.changeCurrentDirectoryPath(name) +buildFileList() +} + + +funcleaveDirectory() +{ +//stepupforactivestorage,andonlyifnotinroot +ifisSubDirectory(){ +currentDir=currentDir.deletingLastPathComponent() +buildFileList() +} +} + + + +funccreateDirectory(_name:String) +{ +letnewDir=currentDir.appendingPathComponent(name) +try!filemgr.createDirectory(at:newDir,withIntermediateDirectories:true,attributes:nil) +currentDir=currentDir.appendingPathComponent(name) +buildFileList() +} + + + +funcdeleteFileDirectory(_name:String) +{ +letdelDir=currentDir.appendingPathComponent(name) +try!filemgr.removeItem(at:delDir) +buildFileList() +} + + + +funcgetFileURL(_name:String)->URL +{ +returncurrentDir.appendingPathComponent(name) +} + + + +funccopyFile(_name:String) +{ +try!filemgr.copyItem(at:currentDir.appendingPathComponent(name), +to:(storageIsLocal?cloudDir!:localDir).appendingPathComponent(name)) +} + + + +funcmoveFile(_name:String) +{ +try!filemgr.moveItem(at:currentDir.appendingPathComponent(name), +to:(storageIsLocal?localDir:cloudDir!).appendingPathComponent(name)) +buildFileList() +} + + + +funcrenameFile(_oldName:String,_newName:String) +{ +try!filemgr.moveItem(at:currentDir.appendingPathComponent(oldName), +to:currentDir.appendingPathComponent(newName)) +buildFileList() +} + + + +privatefuncbuildFileList() +{ +currentDirList=[] +currentFileList=[] +letrawFileList=try!filemgr.contentsOfDirectory(at:currentDir, +includingPropertiesForKeys:[URLResourceKey.isDirectoryKey]) +forrawFileinrawFileList{ +varisDir:ObjCBool=false +filemgr.fileExists(atPath:rawFile.path,isDirectory:&isDir) +ifisDir.boolValue{ +currentDirList.append(rawFile.lastPathComponent) +}else{ +currentFileList.append(rawFile.lastPathComponent) +} +} +} + + + +init() +{ +baseLocalDocPath=filemgr.urls(for:.documentDirectory,in:.userDomainMask)[0] +localDir=baseLocalDocPath + +letcloudUrl=filemgr.url(forUbiquityContainerIdentifier:nil) +baseCloudDocPath=(cloudUrl==nil)?nil:cloudUrl?.appendingPathComponent("Documents") +cloudDir=baseCloudDocPath +buildFileList() +} +} + + + +classFileManagerController:UITableViewController,actionsControlDelegate + +{ +//Housekeepingvariables +privatevarfileData=FileStorage() +privatevarselectedRow:IndexPath? + + + +//selectStorageisonlyenabledwheniCloudisactive +@IBOutletweakvarbuttonSelectStorage:UIBarButtonItem! +overridefuncviewDidLoad() +{ +super.viewDidLoad() +buttonSelectStorage.isEnabled=fileData.iCloudEnabled() +} + + + +//Tooglebetweenlocalandcloudstorage +@IBActionfuncdoSelectStorage(_sender:UIBarButtonItem) +{ +sender.image=fileData.selectStorage(true)?#imageLiteral(resourceName:"iCloudDrive"):#imageLiteral(resourceName:"iPhone") +reloadData() +self.presentedViewController?.dismiss(animated:true,completion:nil) +} + + + +//Laststopbeforedisplayingpopover +overridefuncprepare(forsegue:UIStoryboardSegue,sender:Any?) +{ +ifsegue.identifier=="showActions"{ +letvc=segue.destinationas!FileManagerActions +vc.delegate=self +vc.inFileSelect=(selectedRow!=nil) +vc.inSubDirectory=fileData.isSubDirectory() +vc.useCloud=fileData.iCloudEnabled() +} +} + + + +funcactionOpen() +{ +ifselectedRow!=nil{ +letcurrentCell=tableView.cellForRow(at:selectedRow!)as!FileManagerCell +ifcurrentCell.isDirectory{ +fileData.enterDirectory(currentCell.fileName) +reloadData() +}else{ +//JIXdelegatetoDocument +} +} +} + + + +funcactionDelete() +{ +ifselectedRow!=nil{ +letcurrentCell=self.tableView.cellForRow(at:selectedRow!)as!FileManagerCell +fileData.deleteFileDirectory(currentCell.fileName) +reloadData() +} +} + + + +funcactionRename(_name:String) +{ +ifselectedRow!=nil{ +letcurrentCell=tableView.cellForRow(at:selectedRow!)as!FileManagerCell +fileData.renameFile(currentCell.fileName,name) +reloadData() +} +} + + + +funcactionUploadDownload() +{ +ifselectedRow!=nil{ +letcurrentCell=self.tableView.cellForRow(at:selectedRow!)as!FileManagerCell +fileData.copyFile(currentCell.fileName) +reloadData() +} +} + + + +funcactionLevelUp() +{ +fileData.leaveDirectory() +reloadData() +} + + + +funcactionCreateDirectory(_name:String) +{ +fileData.createDirectory(name) +reloadData() } + + + +//Tablehandlingfunctions +overridefuncnumberOfSections(intableView:UITableView)->Int +{ +return1 +} + + + +overridefunctableView(_tableView:UITableView,numberOfRowsInSectionsection:Int)->Int +{ +returnfileData.currentDirList.count+fileData.currentFileList.count +} + + + +overridefunctableView(_tableView:UITableView,cellForRowAtindexPath:IndexPath)->UITableViewCell +{ +letcell=self.tableView.dequeueReusableCell(withIdentifier:"fileEntry",for:indexPath)as!FileManagerCell +letrow=indexPath.row + +ifrow<fileData.currentDirList.count{ +cell.fileName=fileData.currentDirList[row] +cell.fileLabel.text=cell.fileName+"/" +cell.isDirectory=true +}else{ +letinx=row-fileData.currentDirList.count +cell.fileName=fileData.currentFileList[inx] +cell.fileLabel.text=cell.fileName +cell.isDirectory=false +} +returncell +} + + + +//Selectarow(file)andshowactions +overridefunctableView(_tableView:UITableView,didSelectRowAtindexPath:IndexPath) +{ +selectedRow=indexPath +performSegue(withIdentifier:"showActions",sender:self) +} + + + +//Supportfunction +funcreloadData() +{ +selectedRow=nil +tableView.reloadData() +} + +} + + + +//Spaceholderforextrainformationneededtodotherightthingforeachaction +classFileManagerCell:UITableViewCell{ + +@IBOutletweakvarfileLabel:UILabel! +varisDirectory:Bool=false +varfileName:String="" +} + + + +//Protocolforactionpopovercallback +protocolactionsControlDelegate +{ +funcactionOpen() +funcactionDelete() +funcactionRename(_name:String) +funcactionUploadDownload() +funcactionLevelUp() +funcactionCreateDirectory(_name:String) +} + + + +//Actionpopoverdialog +classFileManagerActions:UITableViewController + +{ +//Pointertocallbackclass +vardelegate:actionsControlDelegate? +varinSubDirectory:Bool=false +varinFileSelect:Bool=false +varuseCloud:Bool=false + +//Callingclassmightenable/disableeachbutton +@IBOutletweakvarbuttonUploadDownload:UIButton! +@IBOutletweakvarbuttonDelete:UIButton! +@IBOutletweakvarbuttonOpen:UIButton! +@IBOutletweakvarbuttonRename:UIButton! +@IBOutletweakvarbuttonLevelUp:UIButton! + + +//Actions +@IBActionfuncdoOpen(_sender:UIButton) +{ +delegate?.actionOpen() +dismiss(animated:false) +} + + + +@IBActionfuncdoDelete(_sender:UIButton) +{ +delegate?.actionDelete() +dismiss(animated:false) +} + + + +@IBActionfuncdoUploadDownload(_sender:UIButton) +{ +delegate?.actionUploadDownload() +dismiss(animated:false) +} + + + +@IBActionfuncdoLevelUp(_sender:UIButton) +{ +delegate?.actionLevelUp() +dismiss(animated:false) +} + + + +overridefuncviewDidLoad() +{ +super.viewDidLoad() +buttonLevelUp.isEnabled=inSubDirectory +buttonDelete.isEnabled=inFileSelect +buttonOpen.isEnabled=inFileSelect +buttonRename.isEnabled=inFileSelect +buttonUploadDownload.isEnabled=(inFileSelect&&useCloud) +} + + + +//Laststopbeforedisplayingpopover +overridefuncprepare(forsegue:UIStoryboardSegue,sender:Any?) +{ +letvc=segue.destinationas!setNameAction +vc.delegate=self.delegate +vc.protocolActionToPerform=(segue.identifier=="showRename")?0:1 +} +} + + + +//Actionpopoverdialog +classsetNameAction:UIViewController + +{ +//Pointertocallbackclass +vardelegate:actionsControlDelegate? +varprotocolActionToPerform:Int=-1 + + +//Callingclassmightenable/disableeachbutton +@IBOutletweakvareditText:UITextField! + + + +@IBActionfuncdoOK(_sender:UIButton) +{ +print("checking\(protocolActionToPerform)") +switchprotocolActionToPerform +{ +case0: +print("runrenameDir") +delegate?.actionRename(editText.text!) +case1: +print("runcreateDir") +delegate?.actionCreateDirectory(editText.text!) +default: +break +} +dismiss(animated:false) +} + + + +overridefuncviewDidLoad() +{ +super.viewDidLoad() +} +} + diff --git a/ios/experimental/LibreOfficeLight/LibreOfficeLight/en.lproj/Main.storyboard b/ios/experimental/LibreOfficeLight/LibreOfficeLight/en.lproj/Main.storyboard index 06935c3708d6..0530cf99a2ce 100755 --- a/ios/experimental/LibreOfficeLight/LibreOfficeLight/en.lproj/Main.storyboard +++ b/ios/experimental/LibreOfficeLight/LibreOfficeLight/en.lproj/Main.storyboard @@ -99,12 +99,12 @@ </tableView> <navigationItem key="navigationItem" title="File Manager" id="fBX-vO-7Rj"> <leftBarButtonItems> - <barButtonItem title="Back" id="q43-8I-nlC"> + <barButtonItem image="back" id="q43-8I-nlC"> <connections> <segue destination="iOm-U1-ALi" kind="unwind" unwindAction="returnedWithSegue:" id="oBt-oU-XA8"/> </connections> </barButtonItem> - <barButtonItem title="iCloud" id="aad-FF-63q"> + <barButtonItem image="iCloudDrive" id="aad-FF-63q"> <connections> <action selector="doSelectStorage:" destination="cip-1Z-62J" id="uv2-gA-Pqq"/> </connections> @@ -125,7 +125,7 @@ <placeholder placeholderIdentifier="IBFirstResponder" id="HFd-ah-Xo4" userLabel="First Responder" sceneMemberID="firstResponder"/> <exit id="iOm-U1-ALi" userLabel="Exit" sceneMemberID="exit"/> </objects> - <point key="canvasLocation" x="1231" y="1504"/> + <point key="canvasLocation" x="1230" y="1063"/> </scene> <!--File Manager Actions--> <scene sceneID="H5Y-px-61Q"> @@ -192,56 +192,61 @@ </subviews> </tableViewCellContentView> </tableViewCell> - <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" id="bzW-XI-AgR"> + <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" id="b9s-rz-SjN"> <rect key="frame" x="0.0" y="90" width="134" height="30"/> <autoresizingMask key="autoresizingMask"/> - <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="bzW-XI-AgR" id="z9x-qQ-lou"> + <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="b9s-rz-SjN" id="NVs-9k-H8m"> <rect key="frame" x="0.0" y="0.0" width="134" height="29.5"/> <autoresizingMask key="autoresizingMask"/> <subviews> - <button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="left" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="fNi-5u-PqA"> + <button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="left" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="5Rk-LW-Ub9"> <rect key="frame" x="10" y="-1" width="124" height="30"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> - <state key="normal" title="Level up"/> + <state key="normal" title="Rename"/> <connections> - <action selector="doLevelUp:" destination="5ff-kT-49H" eventType="touchUpInside" id="fM6-nH-5Z1"/> + <segue destination="99b-cf-b84" kind="popoverPresentation" identifier="showRename" popoverAnchorView="5Rk-LW-Ub9" id="nga-Gl-Vki"> + <popoverArrowDirection key="popoverArrowDirection" up="YES" down="YES" left="YES" right="YES"/> + </segue> </connections> </button> </subviews> </tableViewCellContentView> </tableViewCell> - <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" id="b9s-rz-SjN"> + <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" id="bzW-XI-AgR"> <rect key="frame" x="0.0" y="120" width="134" height="30"/> <autoresizingMask key="autoresizingMask"/> - <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="b9s-rz-SjN" id="NVs-9k-H8m"> + <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="bzW-XI-AgR" id="z9x-qQ-lou"> <rect key="frame" x="0.0" y="0.0" width="134" height="29.5"/> <autoresizingMask key="autoresizingMask"/> <subviews> - <button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="left" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="5Rk-LW-Ub9"> + <button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="left" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="fNi-5u-PqA"> <rect key="frame" x="10" y="-1" width="124" height="30"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> - <state key="normal" title="Create directory"/> + <state key="normal" title="Level up"/> <connections> - <action selector="doCreateDirectory:" destination="5ff-kT-49H" eventType="touchUpInside" id="oJG-8y-O2q"/> + <action selector="doLevelUp:" destination="5ff-kT-49H" eventType="touchUpInside" id="fM6-nH-5Z1"/> </connections> </button> </subviews> </tableViewCellContentView> </tableViewCell> - <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" id="Va5-1U-paI"> + <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" id="1ne-Jo-yKA"> <rect key="frame" x="0.0" y="150" width="134" height="30"/> <autoresizingMask key="autoresizingMask"/> - <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="Va5-1U-paI" id="LW9-jL-3U7"> + <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="1ne-Jo-yKA" id="qmx-Us-SWx"> <rect key="frame" x="0.0" y="0.0" width="134" height="29.5"/> <autoresizingMask key="autoresizingMask"/> <subviews> - <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="left" contentVerticalAlignment="center" text="type name" borderStyle="roundedRect" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="Lms-Tp-Xtt"> - <rect key="frame" x="8" y="0.0" width="118" height="30"/> + <button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="left" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="pir-sf-icw"> + <rect key="frame" x="10" y="-1" width="124" height="30"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> - <nil key="textColor"/> - <fontDescription key="fontDescription" type="system" pointSize="14"/> - <textInputTraits key="textInputTraits"/> - </textField> + <state key="normal" title="Create directory"/> + <connections> + <segue destination="99b-cf-b84" kind="popoverPresentation" identifier="showCreateDirectory" popoverAnchorView="pir-sf-icw" id="mBN-fl-zFy"> + <popoverArrowDirection key="popoverArrowDirection" up="YES" down="YES" left="YES" right="YES"/> + </segue> + </connections> + </button> </subviews> </tableViewCellContentView> </tableViewCell> @@ -260,17 +265,71 @@ <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/> <size key="freeformSize" width="134" height="180"/> <connections> - <outlet property="buttonCreateDirectory" destination="5Rk-LW-Ub9" id="4oy-Px-rKR"/> <outlet property="buttonDelete" destination="IQ3-hK-KmM" id="GNv-Wu-Gdw"/> <outlet property="buttonLevelUp" destination="fNi-5u-PqA" id="phL-bi-HaC"/> <outlet property="buttonOpen" destination="BSN-dd-e84" id="j4Q-KH-UFt"/> + <outlet property="buttonRename" destination="5Rk-LW-Ub9" id="Saz-Nh-NEc"/> <outlet property="buttonUploadDownload" destination="ZSm-By-dJs" id="oVW-Nt-Pfx"/> - <outlet property="editDirectoryName" destination="Lms-Tp-Xtt" id="ztl-WH-mbg"/> </connections> </tableViewController> <placeholder placeholderIdentifier="IBFirstResponder" id="gPn-3u-MDl" userLabel="First Responder" sceneMemberID="firstResponder"/> </objects> - <point key="canvasLocation" x="1929.6875" y="1200.5859375"/> + <point key="canvasLocation" x="1798" y="1063"/> + </scene> + <!--Set Name Action--> + <scene sceneID="M2W-AJ-QxD"> + <objects> + <viewController autoresizesArchivedViewToFullSize="NO" automaticallyAdjustsScrollViewInsets="NO" id="99b-cf-b84" customClass="setNameAction" customModule="LibreOfficeLight" customModuleProvider="target" sceneMemberID="viewController"> + <layoutGuides> + <viewControllerLayoutGuide type="top" id="SMN-Rx-xIG"/> + <viewControllerLayoutGuide type="bottom" id="oj2-7U-Jur"/> + </layoutGuides> + <view key="view" contentMode="scaleToFill" id="eHg-qn-AKi"> + <rect key="frame" x="0.0" y="0.0" width="240" height="80"/> + <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> + <subviews> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Name" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Smn-X6-e1O"> + <rect key="frame" x="16" y="13" width="45" height="21"/> + <fontDescription key="fontDescription" type="system" pointSize="17"/> + <nil key="textColor"/> + <nil key="highlightedColor"/> + </label> + <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="left" contentVerticalAlignment="center" text="type name" borderStyle="roundedRect" textAlignment="natural" clearsOnBeginEditing="YES" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="P46-5S-7HA"> + <rect key="frame" x="72" y="8" width="152" height="30"/> + <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> + <nil key="textColor"/> + <fontDescription key="fontDescription" type="system" pointSize="14"/> + <textInputTraits key="textInputTraits"/> + </textField> + <button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="5gp-5e-vgs"> + <rect key="frame" x="95" y="46" width="50" height="30"/> + <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> + <state key="normal" title="OK"/> + <connections> + <action selector="doOK:" destination="99b-cf-b84" eventType="touchUpInside" id="fqo-s0-dF1"/> + </connections> + </button> + </subviews> + <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/> + <constraints> + <constraint firstItem="Smn-X6-e1O" firstAttribute="top" secondItem="SMN-Rx-xIG" secondAttribute="bottom" constant="13" id="1Pp-90-Tbh"/> + <constraint firstItem="Smn-X6-e1O" firstAttribute="leading" secondItem="eHg-qn-AKi" secondAttribute="leadingMargin" id="7EW-oc-cmC"/> + </constraints> + </view> + <extendedEdge key="edgesForExtendedLayout"/> + <value key="contentSizeForViewInPopover" type="size" width="240" height="80"/> + <nil key="simulatedStatusBarMetrics"/> + <nil key="simulatedTopBarMetrics"/> + <nil key="simulatedBottomBarMetrics"/> + <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/> + <size key="freeformSize" width="240" height="80"/> + <connections> + <outlet property="editText" destination="P46-5S-7HA" id="mjq-2S-W67"/> + </connections> + </viewController> + <placeholder placeholderIdentifier="IBFirstResponder" id="p1z-28-W1j" userLabel="First Responder" sceneMemberID="firstResponder"/> + </objects> + <point key="canvasLocation" x="2365" y="786"/> </scene> <!--Print Manager--> <scene sceneID="viJ-XJ-htc"> @@ -306,7 +365,7 @@ </viewController> <placeholder placeholderIdentifier="IBFirstResponder" id="S7J-dT-DQn" userLabel="First Responder" sceneMemberID="firstResponder"/> </objects> - <point key="canvasLocation" x="2508" y="882"/> + <point key="canvasLocation" x="1230" y="-458"/> </scene> <!--Navigation Controller--> <scene sceneID="nrt-yR-DmY"> @@ -516,15 +575,6 @@ <rect key="frame" x="0.0" y="0.0" width="134" height="210"/> <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMinY="YES" flexibleMaxY="YES"/> <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/> - <button key="tableFooterView" opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" id="516-b0-K4N"> - <rect key="frame" x="0.0" y="210" width="134" height="30"/> - <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> - <state key="normal" title="Print..."/> - <connections> - <action selector="doOpen:" destination="IER-X5-Ax8" eventType="touchUpInside" id="tqe-2K-EJc"/> - <segue destination="ay1-ce-WHs" kind="presentation" id="tJ8-Jt-UeD"/> - </connections> - </button> <sections> <tableViewSection id="iZc-fF-wRk"> <cells> @@ -611,12 +661,9 @@ <button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="left" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="ioJ-xc-RrS"> <rect key="frame" x="8" y="-1" width="118" height="30"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> - <state key="normal" title="Save copy"/> + <state key="normal" title="Save as..."/> <connections> <action selector="doOpen:" destination="IER-X5-Ax8" eventType="touchUpInside" id="IhZ-cb-cgC"/> - <segue destination="gVG-YM-Glc" kind="popoverPresentation" popoverAnchorView="ioJ-xc-RrS" id="5Pw-2I-6DI"> - <popoverArrowDirection key="popoverArrowDirection" up="YES" down="YES" left="YES" right="YES"/> - </segue> </connections> </button> </subviews> @@ -647,6 +694,16 @@ <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="1ly-sz-g0x" id="wVi-tX-eKD"> <rect key="frame" x="0.0" y="0.0" width="134" height="29.5"/> <autoresizingMask key="autoresizingMask"/> + <subviews> + <button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="left" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="516-b0-K4N"> + <rect key="frame" x="8" y="-1" width="118" height="30"/> + <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> + <state key="normal" title="Print..."/> + <connections> + <action selector="doOpen:" destination="IER-X5-Ax8" eventType="touchUpInside" id="tqe-2K-EJc"/> + </connections> + </button> + </subviews> </tableViewCellContentView> </tableViewCell> </cells> @@ -657,7 +714,7 @@ <outlet property="delegate" destination="IER-X5-Ax8" id="sji-7W-aF0"/> </connections> </tableView> - <value key="contentSizeForViewInPopover" type="size" width="200" height="200"/> + <value key="contentSizeForViewInPopover" type="size" width="200" height="230"/> <nil key="simulatedStatusBarMetrics"/> <nil key="simulatedTopBarMetrics"/> <nil key="simulatedBottomBarMetrics"/> @@ -666,51 +723,13 @@ </tableViewController> <placeholder placeholderIdentifier="IBFirstResponder" id="D6j-Ov-CSK" userLabel="First Responder" sceneMemberID="firstResponder"/> </objects> - <point key="canvasLocation" x="1929.6875" y="302.9296875"/> - </scene> - <!--Save As--> - <scene sceneID="FH4-dv-F8q"> - <objects> - <viewController autoresizesArchivedViewToFullSize="NO" title="Save As" id="gVG-YM-Glc" customClass="DocumentSaveAsAction" customModule="LibreOfficeLight" customModuleProvider="target" sceneMemberID="viewController"> - <layoutGuides> - <viewControllerLayoutGuide type="top" id="JoI-LP-cup"/> - <viewControllerLayoutGuide type="bottom" id="lV5-3e-Ctd"/> - </layoutGuides> - <view key="view" contentMode="scaleToFill" id="8ob-86-sqW"> - <rect key="frame" x="0.0" y="0.0" width="200" height="60"/> - <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> - <subviews> - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="Name:" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="cFj-yx-7J7"> - <rect key="frame" x="16" y="8" width="58" height="21"/> - <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> - <fontDescription key="fontDescription" type="system" pointSize="17"/> - <nil key="textColor"/> - <nil key="highlightedColor"/> - </label> - <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="CTF-ig-GzQ"> - <rect key="frame" x="87" y="8" width="97" height="30"/> - <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> - <nil key="textColor"/> - <fontDescription key="fontDescription" type="system" pointSize="14"/> - <textInputTraits key="textInputTraits"/> - </textField> - </subviews> - <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/> - </view> - <value key="contentSizeForViewInPopover" type="size" width="200" height="200"/> - <nil key="simulatedStatusBarMetrics"/> - <nil key="simulatedTopBarMetrics"/> - <nil key="simulatedBottomBarMetrics"/> - <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/> - <size key="freeformSize" width="200" height="60"/> - </viewController> - <placeholder placeholderIdentifier="IBFirstResponder" id="EUo-VR-TkH" userLabel="First Responder" sceneMemberID="firstResponder"/> - </objects> - <point key="canvasLocation" x="2596.8000000000002" y="303.14842578710648"/> + <point key="canvasLocation" x="1799" y="303"/> </scene> </scenes> <resources> + <image name="back" width="7" height="12"/> <image name="document" width="20" height="20"/> + <image name="iCloudDrive" width="22" height="22"/> <image name="menu" width="22" height="22"/> <image name="pdf" width="20" height="20"/> <image name="print" width="20" height="20"/> @@ -720,6 +739,6 @@ </resources> <inferredMetricsTieBreakers> <segue reference="0sd-5x-euH"/> - <segue reference="tJ8-Jt-UeD"/> + <segue reference="nga-Gl-Vki"/> </inferredMetricsTieBreakers> </document> |