summaryrefslogtreecommitdiff
path: root/ios
diff options
context:
space:
mode:
authorjan Iversen <jani@libreoffice.org>2017-10-29 12:29:55 +0100
committerjan Iversen <jani@libreoffice.org>2017-10-29 12:31:22 +0100
commitba73d5e72e2eb5d787ae916631c4e3ef430f1008 (patch)
treeb10dd6b57759a19b27e4c17fec7703093f63fc93 /ios
parentadff3863890af26c9c3fb4fb5611c333c746fe61 (diff)
iOS, completed doc of DocumentController
Added "close" menu moved popover menu class to own file solved clang problem with C headers () is not permitted (void) is Change-Id: Id4f5053e325e2952171e10b0ca7f995447955748
Diffstat (limited to 'ios')
-rw-r--r--ios/LibreOfficeKit/LibreOfficeKit/LibreOfficeKit.h4
-rw-r--r--ios/LibreOfficeLight/LibreOfficeLight.xcodeproj/project.pbxproj4
-rw-r--r--ios/LibreOfficeLight/LibreOfficeLight/DocumentActions.swift53
-rwxr-xr-xios/LibreOfficeLight/LibreOfficeLight/DocumentController.swift223
-rw-r--r--ios/LibreOfficeLight/LibreOfficeLight/dummyLOkit.c2
-rwxr-xr-xios/LibreOfficeLight/LibreOfficeLight/en.lproj/Main.storyboard53
6 files changed, 227 insertions, 112 deletions
diff --git a/ios/LibreOfficeKit/LibreOfficeKit/LibreOfficeKit.h b/ios/LibreOfficeKit/LibreOfficeKit/LibreOfficeKit.h
index 56843ddfe0a2..1314f0df66eb 100644
--- a/ios/LibreOfficeKit/LibreOfficeKit/LibreOfficeKit.h
+++ b/ios/LibreOfficeKit/LibreOfficeKit/LibreOfficeKit.h
@@ -14,5 +14,5 @@
int BridgeLOkit_Init(const char *path);
int BridgeLOkit_open(const char *path);
int BridgeLOkit_ClientCommand(const char *input);
-int BridgeLOkit_Hipernate();
-int BridgeLOkit_LeaveHipernate();
+int BridgeLOkit_Hipernate(void);
+int BridgeLOkit_LeaveHipernate(void);
diff --git a/ios/LibreOfficeLight/LibreOfficeLight.xcodeproj/project.pbxproj b/ios/LibreOfficeLight/LibreOfficeLight.xcodeproj/project.pbxproj
index fd71169bfa57..d51d49ea88f1 100644
--- a/ios/LibreOfficeLight/LibreOfficeLight.xcodeproj/project.pbxproj
+++ b/ios/LibreOfficeLight/LibreOfficeLight.xcodeproj/project.pbxproj
@@ -13,6 +13,7 @@
39022C211EDC2D0800100066 /* icudt59l.dat in Resources */ = {isa = PBXBuildFile; fileRef = 39022C201EDC2D0800100066 /* icudt59l.dat */; };
39022C241EDC303200100066 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 39022C221EDC303200100066 /* InfoPlist.strings */; };
39284DB11FA5E150006F43E4 /* dummyLOkit.c in Sources */ = {isa = PBXBuildFile; fileRef = 39284DB01FA5E150006F43E4 /* dummyLOkit.c */; };
+ 39284DB31FA5F207006F43E4 /* DocumentActions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 39284DB21FA5F207006F43E4 /* DocumentActions.swift */; };
392ED9B31E5E4B03005C8435 /* ViewPrintManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 392ED9B21E5E4B03005C8435 /* ViewPrintManager.swift */; };
393975781F8BECB0002DC80B /* libiconv.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 393975771F8BECB0002DC80B /* libiconv.tbd */; };
3939757A1F8BECC1002DC80B /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 393975791F8BECC1002DC80B /* libz.tbd */; };
@@ -41,6 +42,7 @@
39022C201EDC2D0800100066 /* icudt59l.dat */ = {isa = PBXFileReference; lastKnownFileType = file; name = icudt59l.dat; path = ../generated/resources/icudt59l.dat; sourceTree = "<group>"; };
39022C231EDC303200100066 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
39284DB01FA5E150006F43E4 /* dummyLOkit.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = dummyLOkit.c; sourceTree = "<group>"; };
+ 39284DB21FA5F207006F43E4 /* DocumentActions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DocumentActions.swift; sourceTree = "<group>"; };
392ED9B21E5E4B03005C8435 /* ViewPrintManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = ViewPrintManager.swift; path = LibreOfficeLight/ViewPrintManager.swift; sourceTree = SOURCE_ROOT; };
393975771F8BECB0002DC80B /* libiconv.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libiconv.tbd; path = usr/lib/libiconv.tbd; sourceTree = SDKROOT; };
393975791F8BECC1002DC80B /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; };
@@ -131,6 +133,7 @@
39284DB01FA5E150006F43E4 /* dummyLOkit.c */,
397E08FD1E597BD8001374E0 /* AppDelegate.swift */,
3992D8591E5B762A00BEA987 /* DocumentController.swift */,
+ 39284DB21FA5F207006F43E4 /* DocumentActions.swift */,
39EF4E2E1FA500C9001914AC /* PropertiesController.swift */,
392ED9B21E5E4B03005C8435 /* ViewPrintManager.swift */,
399648461E5B87DC00E73E83 /* ViewProperties.swift */,
@@ -257,6 +260,7 @@
files = (
392ED9B31E5E4B03005C8435 /* ViewPrintManager.swift in Sources */,
399648471E5B87DC00E73E83 /* ViewProperties.swift in Sources */,
+ 39284DB31FA5F207006F43E4 /* DocumentActions.swift in Sources */,
39284DB11FA5E150006F43E4 /* dummyLOkit.c in Sources */,
3992D85A1E5B762A00BEA987 /* DocumentController.swift in Sources */,
397E08FE1E597BD8001374E0 /* AppDelegate.swift in Sources */,
diff --git a/ios/LibreOfficeLight/LibreOfficeLight/DocumentActions.swift b/ios/LibreOfficeLight/LibreOfficeLight/DocumentActions.swift
new file mode 100644
index 000000000000..d3c41977f09b
--- /dev/null
+++ b/ios/LibreOfficeLight/LibreOfficeLight/DocumentActions.swift
@@ -0,0 +1,53 @@
+//
+// This file is part of the LibreOffice project.
+//
+// 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/.
+//
+import UIKit
+
+
+
+// Protocol for action popover callback
+protocol MenuDelegate
+{
+ func actionMenuSelected(_ tag : Int)
+}
+
+
+
+class DocumentActions: UITableViewController
+{
+ // Pointer to callback class
+ var delegate : MenuDelegate?
+ var isDocActive : Bool = false
+
+ // Calling class might enable/disable each button
+ @IBAction func actionMenuSelect(_ sender: UIButton)
+ {
+ dismiss(animated: false)
+ delegate?.actionMenuSelected(sender.tag)
+ }
+
+ @IBOutlet weak var buttonClose: UIButton!
+ @IBOutlet weak var buttonProperties: UIButton!
+ @IBOutlet weak var buttonNew: UIButton!
+ @IBOutlet weak var buttonOpen: UIButton!
+ @IBOutlet weak var buttonSave: UIButton!
+ @IBOutlet weak var buttonSaveAs: UIButton!
+ @IBOutlet weak var buttonSaveAsPDF: UIButton!
+ @IBOutlet weak var buttonPrint: UIButton!
+ @IBOutlet weak var buttonCopy: UIButton!
+ @IBOutlet weak var buttonMove: UIButton!
+ @IBOutlet weak var buttonDelete: UIButton!
+
+ override func viewDidLoad()
+ {
+ super.viewDidLoad()
+ buttonSave.isEnabled = isDocActive
+ buttonSaveAs.isEnabled = isDocActive
+ buttonSaveAsPDF.isEnabled = isDocActive
+ buttonPrint.isEnabled = isDocActive
+ }
+}
diff --git a/ios/LibreOfficeLight/LibreOfficeLight/DocumentController.swift b/ios/LibreOfficeLight/LibreOfficeLight/DocumentController.swift
index 28f18b5afd66..a6c4a0b26f82 100755
--- a/ios/LibreOfficeLight/LibreOfficeLight/DocumentController.swift
+++ b/ios/LibreOfficeLight/LibreOfficeLight/DocumentController.swift
@@ -15,7 +15,7 @@ import UIKit
// It is a delegate class to recieve Menu events as well as file handling events
class DocumentController: UIViewController, MenuDelegate, UIDocumentBrowserViewControllerDelegate
{
- // Handling of DocumentController
+ // *** Handling of DocumentController
// this is normal functions every controller must implement
@@ -41,7 +41,7 @@ class DocumentController: UIViewController, MenuDelegate, UIDocumentBrowserViewC
- // Handling of Background (hipernate)
+ // *** Handling of Background (hipernate)
// iOS is not true multitasking, only 1 app can be active (foreground) at any time,
// therefore apps frequently are moved to the background.
// background really means hipernate by terminating all threads and solely keep the
@@ -63,7 +63,7 @@ class DocumentController: UIViewController, MenuDelegate, UIDocumentBrowserViewC
- // handling of PropertiesController
+ // *** handling of PropertiesController
// The PropertiesController is a left sidebar, that will scroll in when activated
// The Controller handles manipulation of properties in the document
@@ -122,134 +122,183 @@ class DocumentController: UIViewController, MenuDelegate, UIDocumentBrowserViewC
+ // *** Handling of menu popover
+ // the menu contain all globbal functions and use seque/delegate
- // var currentDocumentName : String?
+ var currentDocumentName : String? = nil
- internal func documentBrowser(_ controller: UIDocumentBrowserViewController,
- didRequestDocumentCreationWithHandler importHandler: @escaping (URL?, UIDocumentBrowserViewController.ImportMode) -> Void)
+
+
+ // Last stop before displaying popover
+ override func prepare(for segue: UIStoryboardSegue, sender: Any?)
{
- // Asks the delegate to create a new document.
+ // "showActions" is the name of the popover menu, see storyboard
+ if segue.identifier == "showActions" {
+ let vc = segue.destination as! DocumentActions
+ vc.delegate = self
+ vc.isDocActive = (currentDocumentName != nil)
+ }
}
- internal func documentBrowser(_ controller: UIDocumentBrowserViewController,
- didImportDocumentAt sourceURL: URL,
- toDestinationURL destinationURL: URL)
+
+
+ // Delegate call from menu (see protocol MenuDelegate)
+ func actionMenuSelected(_ tag : Int)
{
- // Tells the delegate that a document has been successfully imported.
- //FIX BridgeLOkit_open("jan");
- //FIX BridgeLOkit_ClientCommand("jan");
+ // a tag can sadly enough only be a number and not a string,
+ // whenever adding a menu entry, it (of course) needs to be added
+ // to the Document actions scene in storyboard and assigned a tag number
+ // the tag number must be repeated in the following switch
+ // BE CAREFULL to keep the tags synchronized (manually)
+ switch tag
+ {
+ case 1: // Open...
+ doOpenDocument()
+
+ case 2: // Properties
+ doProperties()
+ case 3: // Save
+ doSave()
+
+ case 4: // Close...
+ doClose()
+
+ case 4: // Save as...
+ doSaveAs()
+
+ case 5: // Save as PDF...
+ doSaveAsPDF()
+
+ case 6: // Print...
+ doPrint()
+
+ default: // should not happen
+ print("unknown menu" + String(tag))
+ }
}
- internal func documentBrowser(_ controller: UIDocumentBrowserViewController,
- failedToImportDocumentAt documentURL: URL,
- error: Error?)
+
+
+ // *** handling of menu actions
+ // This is the real base of the application
+
+
+
+ // Load document into LibreOfficeKit and present it
+ internal func doOpenDocument()
{
- // Tells the delegate that the document browser failed to import the specified document.
+ //FIXME
+
+ // let openMenu = UIDocumentPickerViewController(documentTypes: ["public.data"], in: .open)
+ let openMenu = UIDocumentBrowserViewController()
+ //penMenu.allowsDocumentCreation = true
+ // UIDocumentBrowserViewController.ImportMode = UIDocumentBrowserViewController.ImportMode.none // copy, move
+ //openMenu.InterfaceStyle = UIDocumentPickerViewController.dark
+ openMenu.delegate = self
+ self.present(openMenu, animated: true, completion: nil)
+ print("menu Open... to be done")
}
- internal func documentBrowser(_ controller: UIDocumentBrowserViewController,
- didPickDocumentURLs documentURLs: [URL])
+
+
+ // Show document properties (new overloaded page)
+ internal func doProperties()
{
- // Tells the delegate that the user has selected one or more documents.
- //FIX BridgeLOkit_open("jan");
- //FIX BridgeLOkit_ClientCommand("jan");
+ //FIXME
+ print("menu Properties to be done")
}
- @IBOutlet weak var janTest: UILabel!
- // Last stop before displaying popover
- override func prepare(for segue: UIStoryboardSegue, sender: Any?)
+
+ // Save current document
+ internal func doSave()
{
- if segue.identifier == "showActions" {
- let vc = segue.destination as! DocumentActions
- vc.delegate = self
+ //FIXME
+ print("menu Save to be done")
+ }
- // JIX, TO BE CHANGED
- vc.isDocActive = true
- }
+
+
+ // Close current document (without saving)
+ internal func doClose()
+ {
+ //FIXME
+ print("menu Close to be done")
}
- func actionMenuSelected(_ tag : Int)
+ // make a copy of current document, and save
+ internal func doSaveAs()
{
- switch tag
- {
- case 1: // Open...
- // let openMenu = UIDocumentPickerViewController(documentTypes: ["public.data"], in: .open)
- let openMenu = UIDocumentBrowserViewController()
- //penMenu.allowsDocumentCreation = true
- // UIDocumentBrowserViewController.ImportMode = UIDocumentBrowserViewController.ImportMode.none // copy, move
- //openMenu.InterfaceStyle = UIDocumentPickerViewController.dark
- openMenu.delegate = self
- self.present(openMenu, animated: true, completion: nil)
- print("menu Open... to be done")
+ //FIXME
+ print("menu Save as... to be done")
+ }
- case 2: // Properties
- print("menu Properties to be done")
- case 3: // Save
- print("menu Save to be done")
- case 4: // Save as...
- print("menu Save as... to be done")
+ // save current document as PDF
+ internal func doSaveAsPDF()
+ {
+ //FIXME
+ print("menu Save as PDF... to be done")
+ }
- case 5: // Save as PDF...
- print("menu Save as PDF... to be done")
- case 6: // Print...
- print("menu Print... to be done")
- default: // should not happen
- print("unknown menu" + String(tag))
- }
+ // print current document
+ internal func doPrint()
+ {
+ //FIXME
+ print("menu Print... to be done")
}
-}
-// Protocol for action popover callback
-protocol MenuDelegate
-{
- func actionMenuSelected(_ tag : Int)
-}
+ // *** Handling of DocumentViewController delegate functions
+ // this handles open/create/copy/delete document
-class DocumentActions: UITableViewController
-{
- // Pointer to callback class
- var delegate : MenuDelegate?
- var isDocActive : Bool = false
+ // Create an empty document, and present it
+ internal func documentBrowser(_ controller: UIDocumentBrowserViewController,
+ didRequestDocumentCreationWithHandler importHandler: @escaping (URL?,
+ UIDocumentBrowserViewController.ImportMode) -> Void)
+ {
+ //FIXME
+ }
+
- // Calling class might enable/disable each button
- @IBAction func actionMenuSelect(_ sender: UIButton)
+
+ // import (copy from iCloud to iPad) document, open it and present it
+ internal func documentBrowser(_ controller: UIDocumentBrowserViewController,
+ didImportDocumentAt sourceURL: URL,
+ toDestinationURL destinationURL: URL)
{
- dismiss(animated: false)
- delegate?.actionMenuSelected(sender.tag)
+ //FIXME
}
- @IBOutlet weak var buttonProperties: UIButton!
- @IBOutlet weak var buttonNew: UIButton!
- @IBOutlet weak var buttonOpen: UIButton!
- @IBOutlet weak var buttonSave: UIButton!
- @IBOutlet weak var buttonSaveAs: UIButton!
- @IBOutlet weak var buttonSaveAsPDF: UIButton!
- @IBOutlet weak var buttonPrint: UIButton!
- @IBOutlet weak var buttonCopy: UIButton!
- @IBOutlet weak var buttonMove: UIButton!
- @IBOutlet weak var buttonDelete: UIButton!
- override func viewDidLoad()
+
+ // Import failed, inform user
+ internal func documentBrowser(_ controller: UIDocumentBrowserViewController,
+ failedToImportDocumentAt documentURL: URL,
+ error: Error?)
{
- super.viewDidLoad()
- buttonSave.isEnabled = isDocActive
- buttonSaveAs.isEnabled = isDocActive
- buttonSaveAsPDF.isEnabled = isDocActive
- buttonPrint.isEnabled = isDocActive
+ //FIXME
+ }
+
+
+
+ // open document and present it
+ internal func documentBrowser(_ controller: UIDocumentBrowserViewController,
+ didPickDocumentURLs documentURLs: [URL])
+ {
+ //FIXME
+ //BridgeLOkit_open(documentURLs);
}
}
diff --git a/ios/LibreOfficeLight/LibreOfficeLight/dummyLOkit.c b/ios/LibreOfficeLight/LibreOfficeLight/dummyLOkit.c
index 5063f0f1317e..5d6effbf9647 100644
--- a/ios/LibreOfficeLight/LibreOfficeLight/dummyLOkit.c
+++ b/ios/LibreOfficeLight/LibreOfficeLight/dummyLOkit.c
@@ -5,6 +5,8 @@
// 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/.
//
+#include "lokit-Bridging-Header.h"
+
// replaces LibreOfficeKit and thereby reducing turn around time, which is
diff --git a/ios/LibreOfficeLight/LibreOfficeLight/en.lproj/Main.storyboard b/ios/LibreOfficeLight/LibreOfficeLight/en.lproj/Main.storyboard
index 925ce28c9b27..936c0620eb13 100755
--- a/ios/LibreOfficeLight/LibreOfficeLight/en.lproj/Main.storyboard
+++ b/ios/LibreOfficeLight/LibreOfficeLight/en.lproj/Main.storyboard
@@ -20,15 +20,6 @@
<view key="view" contentMode="scaleToFill" id="kh9-bI-dsS">
<rect key="frame" x="0.0" y="0.0" width="768" height="1024"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
- <subviews>
- <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="My document" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="D1P-q2-3PT">
- <rect key="frame" x="193" y="476" width="156" height="21"/>
- <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
- <fontDescription key="fontDescription" type="system" pointSize="17"/>
- <nil key="textColor"/>
- <nil key="highlightedColor"/>
- </label>
- </subviews>
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
</view>
<toolbarItems/>
@@ -47,9 +38,6 @@
</barButtonItem>
</navigationItem>
<simulatedToolbarMetrics key="simulatedBottomBarMetrics"/>
- <connections>
- <outlet property="janTest" destination="D1P-q2-3PT" id="ERV-pa-Fs9"/>
- </connections>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="x5A-6p-PRh" sceneMemberID="firstResponder"/>
</objects>
@@ -286,7 +274,7 @@
<objects>
<tableViewController autoresizesArchivedViewToFullSize="NO" title="Document Actions" automaticallyAdjustsScrollViewInsets="NO" modalTransitionStyle="crossDissolve" modalPresentationStyle="overCurrentContext" clearsSelectionOnViewWillAppear="NO" id="IER-X5-Ax8" customClass="DocumentActions" customModule="LibreOfficeLight" customModuleProvider="target" sceneMemberID="viewController">
<tableView key="view" clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="static" style="plain" separatorStyle="default" rowHeight="30" sectionHeaderHeight="28" sectionFooterHeight="28" id="RqF-IL-YJc">
- <rect key="frame" x="0.0" y="0.0" width="134" height="180"/>
+ <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"/>
<sections>
@@ -341,7 +329,7 @@
<rect key="frame" x="0.0" y="0.0" width="134" height="29.5"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
- <button opaque="NO" tag="3" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="left" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="m45-MR-Gca">
+ <button opaque="NO" tag="3" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="left" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="m45-MR-Gca" userLabel="Button Save">
<rect key="frame" x="8" y="0.0" width="118" height="30"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<accessibility key="accessibilityConfiguration" identifier="actionSave">
@@ -355,14 +343,32 @@
</subviews>
</tableViewCellContentView>
</tableViewCell>
- <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" id="AN7-6j-wO7">
+ <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" id="Kys-Iw-SeT">
<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="Kys-Iw-SeT" id="2C9-6w-WS3">
+ <rect key="frame" x="0.0" y="0.0" width="134" height="29.5"/>
+ <autoresizingMask key="autoresizingMask"/>
+ <subviews>
+ <button opaque="NO" tag="4" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="left" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="95N-Hk-rcU" userLabel="Button Close">
+ <rect key="frame" x="8" y="0.0" width="118" height="30"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+ <accessibility key="accessibilityConfiguration" identifier="actionSave">
+ <bool key="isElement" value="NO"/>
+ </accessibility>
+ <state key="normal" title="Close"/>
+ </button>
+ </subviews>
+ </tableViewCellContentView>
+ </tableViewCell>
+ <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" id="AN7-6j-wO7">
+ <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="AN7-6j-wO7" id="kl1-nQ-aIu">
<rect key="frame" x="0.0" y="0.0" width="134" height="29.5"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
- <button opaque="NO" tag="4" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="left" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="6vH-aM-aYe">
+ <button opaque="NO" tag="5" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="left" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="6vH-aM-aYe" userLabel="Button Save copy">
<rect key="frame" x="8" y="0.0" width="118" height="30"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<accessibility key="accessibilityConfiguration">
@@ -370,20 +376,20 @@
</accessibility>
<state key="normal" title="Save copy..."/>
<connections>
- <action selector="actionMenuSelect:" destination="IER-X5-Ax8" eventType="touchUpInside" id="0gI-or-ji4"/>
+ <action selector="actionMenuSelect:" destination="IER-X5-Ax8" eventType="touchUpInside" id="KBW-3d-D5Z"/>
</connections>
</button>
</subviews>
</tableViewCellContentView>
</tableViewCell>
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" id="GmK-gj-GYu">
- <rect key="frame" x="0.0" y="120" width="134" height="30"/>
+ <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="GmK-gj-GYu" id="3OK-Zz-mqN">
<rect key="frame" x="0.0" y="0.0" width="134" height="29.5"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
- <button opaque="NO" tag="5" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="left" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="apE-3B-lUt" userLabel="Button Save As PDF">
+ <button opaque="NO" tag="6" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="left" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="apE-3B-lUt" userLabel="Button Save As PDF">
<rect key="frame" x="8" y="0.0" width="118" height="30"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<accessibility key="accessibilityConfiguration" identifier="actionSaveAsPDF">
@@ -398,13 +404,13 @@
</tableViewCellContentView>
</tableViewCell>
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" id="diN-3v-tgm">
- <rect key="frame" x="0.0" y="150" width="134" height="30"/>
+ <rect key="frame" x="0.0" y="180" width="134" height="30"/>
<autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="diN-3v-tgm" id="24s-fs-4cw">
<rect key="frame" x="0.0" y="0.0" width="134" height="29.5"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
- <button opaque="NO" tag="6" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="left" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="tvH-WR-c61" userLabel="Button Print">
+ <button opaque="NO" tag="7" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="left" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="tvH-WR-c61" userLabel="Button Print">
<rect key="frame" x="8" y="0.0" width="118" height="30"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<accessibility key="accessibilityConfiguration">
@@ -427,13 +433,14 @@
</connections>
</tableView>
<extendedEdge key="edgesForExtendedLayout"/>
- <value key="contentSizeForViewInPopover" type="size" width="134" height="180"/>
+ <value key="contentSizeForViewInPopover" type="size" width="134" height="210"/>
<nil key="simulatedStatusBarMetrics"/>
<nil key="simulatedTopBarMetrics"/>
<nil key="simulatedBottomBarMetrics"/>
<freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
- <size key="freeformSize" width="134" height="180"/>
+ <size key="freeformSize" width="134" height="210"/>
<connections>
+ <outlet property="buttonClose" destination="6vH-aM-aYe" id="zNg-Rc-hcL"/>
<outlet property="buttonOpen" destination="myk-zs-md7" id="xQK-I1-pDl"/>
<outlet property="buttonPrint" destination="tvH-WR-c61" id="4YU-p2-Fim"/>
<outlet property="buttonProperties" destination="b90-ja-Wm0" id="scY-Fn-fss"/>