瀏覽代碼

合并-新增密码阻挡

tangchao 2 年之前
父節點
當前提交
5a2576e720

+ 18 - 0
PDF Office/PDF Office.xcodeproj/project.pbxproj

@@ -1369,6 +1369,12 @@
 		BB6DD8252934D056001F0544 /* KMSecureEncryptSuccessTipView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB6DD8242934D056001F0544 /* KMSecureEncryptSuccessTipView.swift */; };
 		BB6DD8262934D056001F0544 /* KMSecureEncryptSuccessTipView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB6DD8242934D056001F0544 /* KMSecureEncryptSuccessTipView.swift */; };
 		BB6DD8272934D056001F0544 /* KMSecureEncryptSuccessTipView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB6DD8242934D056001F0544 /* KMSecureEncryptSuccessTipView.swift */; };
+		BB7507E929861C37002DBDB1 /* PasswordWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = BB7507E629861C37002DBDB1 /* PasswordWindowController.m */; };
+		BB7507EA29861C37002DBDB1 /* PasswordWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = BB7507E629861C37002DBDB1 /* PasswordWindowController.m */; };
+		BB7507EB29861C37002DBDB1 /* PasswordWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = BB7507E629861C37002DBDB1 /* PasswordWindowController.m */; };
+		BB7507EC29861C37002DBDB1 /* PasswordWindowController.xib in Resources */ = {isa = PBXBuildFile; fileRef = BB7507E729861C37002DBDB1 /* PasswordWindowController.xib */; };
+		BB7507ED29861C37002DBDB1 /* PasswordWindowController.xib in Resources */ = {isa = PBXBuildFile; fileRef = BB7507E729861C37002DBDB1 /* PasswordWindowController.xib */; };
+		BB7507EE29861C37002DBDB1 /* PasswordWindowController.xib in Resources */ = {isa = PBXBuildFile; fileRef = BB7507E729861C37002DBDB1 /* PasswordWindowController.xib */; };
 		BB86C1ED28F544F4005AD968 /* CPDFListView+Event.m in Sources */ = {isa = PBXBuildFile; fileRef = BB86C1EC28F544F4005AD968 /* CPDFListView+Event.m */; };
 		BB86C1EE28F544F4005AD968 /* CPDFListView+Event.m in Sources */ = {isa = PBXBuildFile; fileRef = BB86C1EC28F544F4005AD968 /* CPDFListView+Event.m */; };
 		BB86C1EF28F544F4005AD968 /* CPDFListView+Event.m in Sources */ = {isa = PBXBuildFile; fileRef = BB86C1EC28F544F4005AD968 /* CPDFListView+Event.m */; };
@@ -2632,6 +2638,9 @@
 		BB6DD81B29348F31001F0544 /* KMSecureTextFiled.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMSecureTextFiled.swift; sourceTree = "<group>"; };
 		BB6DD820293497B6001F0544 /* KMSecureEncryptModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMSecureEncryptModel.swift; sourceTree = "<group>"; };
 		BB6DD8242934D056001F0544 /* KMSecureEncryptSuccessTipView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMSecureEncryptSuccessTipView.swift; sourceTree = "<group>"; };
+		BB7507E629861C37002DBDB1 /* PasswordWindowController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PasswordWindowController.m; sourceTree = "<group>"; };
+		BB7507E729861C37002DBDB1 /* PasswordWindowController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = PasswordWindowController.xib; sourceTree = "<group>"; };
+		BB7507E829861C37002DBDB1 /* PasswordWindowController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PasswordWindowController.h; sourceTree = "<group>"; };
 		BB86C1EB28F544F4005AD968 /* CPDFListView+Event.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "CPDFListView+Event.h"; sourceTree = "<group>"; };
 		BB86C1EC28F544F4005AD968 /* CPDFListView+Event.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "CPDFListView+Event.m"; sourceTree = "<group>"; };
 		BB86C1F028F54535005AD968 /* CPDFListView+KeyEvent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "CPDFListView+KeyEvent.h"; sourceTree = "<group>"; };
@@ -4978,6 +4987,9 @@
 		BBAFC8382985191200D0648E /* OCPart */ = {
 			isa = PBXGroup;
 			children = (
+				BB7507E829861C37002DBDB1 /* PasswordWindowController.h */,
+				BB7507E629861C37002DBDB1 /* PasswordWindowController.m */,
+				BB7507E729861C37002DBDB1 /* PasswordWindowController.xib */,
 				BBAFC85029851A9700D0648E /* KMBatchTableRowView.h */,
 				BBAFC85129851A9800D0648E /* KMBatchTableRowView.m */,
 				BBAFC86329851B5900D0648E /* KMBlankView.h */,
@@ -5905,6 +5917,7 @@
 				BB89723D294B3C840045787C /* KMWatermarkPropertyController.xib in Resources */,
 				9F0CB4822967F64D00007028 /* KMPropertiesPanelReadOnlySubVC.xib in Resources */,
 				BBA8B7A62935CD740097D183 /* KMRemovePasswordAlertWindowController.xib in Resources */,
+				BB7507EC29861C37002DBDB1 /* PasswordWindowController.xib in Resources */,
 				9F0CB49A29683E1000007028 /* KMPropertiesPanelTextSubVC.xib in Resources */,
 				ADB1FEB2297543CF00ED072D /* KMBatchSettingView.xib in Resources */,
 				89DB5DAA291B8DE70029624F /* KMOutlineEditViewController.xib in Resources */,
@@ -5945,6 +5958,7 @@
 				8997011228F40842009AF911 /* KMOutlineViewController.xib in Resources */,
 				9FDD0F9A2952FF4D000C4DAD /* alias-light.json in Resources */,
 				ADD1B6F92946C0CA00C3FFF7 /* KMPrintChoosePageSizeMultipageView.xib in Resources */,
+				BB7507ED29861C37002DBDB1 /* PasswordWindowController.xib in Resources */,
 				ADD1B6CC2942E85300C3FFF7 /* KMPrintBottomView.xib in Resources */,
 				ADB1FE3F29700D3400ED072D /* KMBatchCollectionViewItem.xib in Resources */,
 				ADB1FE36297008F400ED072D /* KMBatchCollectionView.xib in Resources */,
@@ -6188,6 +6202,7 @@
 				BBC348192955920B008D2CD1 /* KMBackgroundPropertyController.xib in Resources */,
 				89E4E76629656A88002DBA6F /* KMAnnotationStampViewController.xib in Resources */,
 				899700E428F3A9F2009AF911 /* KMHomeWindowController.xib in Resources */,
+				BB7507EE29861C37002DBDB1 /* PasswordWindowController.xib in Resources */,
 				BBC348402955A60B008D2CD1 /* KMBackgroundPropertyInfoController.xib in Resources */,
 				9FDD0F9E2952FF4D000C4DAD /* comp-light.json in Resources */,
 				ADB1FEA42975303F00ED072D /* KMBatchBatesNumberView.xib in Resources */,
@@ -6577,6 +6592,7 @@
 				BB86C21428F560D1005AD968 /* NSGraphics_SKExtensions.m in Sources */,
 				9F1FE4AE29406E4700E952CA /* CTPresentationModeController.m in Sources */,
 				89E4E746296418ED002DBA6F /* TextFieldFormatter.m in Sources */,
+				BB7507E929861C37002DBDB1 /* PasswordWindowController.m in Sources */,
 				89E4E7182963F5D4002DBA6F /* KMSelfSignAnnotation.m in Sources */,
 				BBAFC86029851B2D00D0648E /* KMPDFEditAppendCustomView.m in Sources */,
 				BBC3481C295593F0008D2CD1 /* KMBackgroundListController.swift in Sources */,
@@ -7075,6 +7091,7 @@
 				89752E052939DB42003FF08E /* KMToolbarViewController.swift in Sources */,
 				9FAAA33A290F72CC0046FFCE /* KMHistoryFileCollectionView.swift in Sources */,
 				89E4E747296418ED002DBA6F /* TextFieldFormatter.m in Sources */,
+				BB7507EA29861C37002DBDB1 /* PasswordWindowController.m in Sources */,
 				89E4E7192963F5D4002DBA6F /* KMSelfSignAnnotation.m in Sources */,
 				BBAFC86129851B2D00D0648E /* KMPDFEditAppendCustomView.m in Sources */,
 				BBC3481D295593F0008D2CD1 /* KMBackgroundListController.swift in Sources */,
@@ -7614,6 +7631,7 @@
 				BB3EAEAF293E3D6000D92407 /* KMConvertBaseWindowController.swift in Sources */,
 				9F1FE4A729406E4700E952CA /* CTToolbarView.m in Sources */,
 				BB162E9D295073B50088E9D1 /* KMWatermarkManager.swift in Sources */,
+				BB7507EB29861C37002DBDB1 /* PasswordWindowController.m in Sources */,
 				BB8F4588295B19AC0037EA22 /* KMHeaderFooterDateInfoView.swift in Sources */,
 				F37322E3292DF9410013862C /* CPDFChoiceWidgetAnnotation+PDFListView.m in Sources */,
 				89D2D2BF29486D2400BFF5FE /* KMSignatureCellView.swift in Sources */,

二進制
PDF Office/PDF Office.xcodeproj/project.xcworkspace/xcuserdata/kdanmobile.xcuserdatad/UserInterfaceState.xcuserstate


+ 32 - 27
PDF Office/PDF Office/Class/Merge/OCPart/KMPDFEditAppendWindow.m

@@ -7,7 +7,7 @@
 //
 
 #import "KMPDFEditAppendWindow.h"
-//#import "PasswordWindowController.h"
+#import "PasswordWindowController.h"
 #import "KMFileAttribute.h"
 #import <Quartz/Quartz.h>
 //#import "PDFPage_SKExtensions.h"
@@ -173,6 +173,8 @@
 
 @property (assign) IBOutlet KMBlankView *myBlankView;
 
+@property (nonatomic, strong) PasswordWindowController *passwordWindowController;
+
 @end
 
 @implementation KMPDFEditAppendWindow
@@ -399,7 +401,7 @@
             NSDictionary *attrib = [[NSFileManager defaultManager] attributesOfItemAtPath:filePath error:nil];
             self.allFileSize = [[attrib objectForKey:NSFileSize] floatValue];
             
-            if ([document isLocked]) {
+            if ([document isLocked] || document.isEncrypted) {
                 [_lockFilePathArr addObject:filePath];
             } else{
                 
@@ -456,29 +458,30 @@
     if ([_lockFilePathArr count] > _lockFileIndex) {
         NSString *filePath = [_lockFilePathArr objectAtIndex:_lockFileIndex];
         
-//        PasswordWindowController *com = [[PasswordWindowController alloc] initWithWindowNibName:@"PasswordWindowController"];
-//        com.fileURL = [NSURL fileURLWithPath:filePath];
-//        [com beginSheetModalForWindow:self.window completionHandler:^(NSString *password) {
-//            if (password) {
-//                KMFileAttribute *file = [[KMFileAttribute alloc] init];
-//                file.filePath = filePath;
-//                file.isLocked = YES;
-//                file.password = password;
-//                [_files insertObject:file atIndex:_insertRow];
-//                _insertRow ++;
-//            }
-//
-//            _lockFileIndex++;
-//            if ([_lockFilePathArr count] > _lockFileIndex){
-//                dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
-//                    [self openPasswordWindow];
-//                });
-//            } else {
-//                [_tableView reloadData];
-//                [self updateButtonState];
-//            }
-//
-//        }];
+        PasswordWindowController *com = [[PasswordWindowController alloc] initWithWindowNibName:@"PasswordWindowController"];
+        self.passwordWindowController = com;
+        com.fileURL = [NSURL fileURLWithPath:filePath];
+        [com beginSheetModalForWindow:self.window completionHandler:^(NSString *password) {
+            if (password) {
+                KMFileAttribute *file = [[KMFileAttribute alloc] init];
+                file.filePath = filePath;
+                file.isLocked = YES;
+                file.password = password;
+                [_files insertObject:file atIndex:_insertRow];
+                _insertRow ++;
+            }
+
+            _lockFileIndex++;
+            if ([_lockFilePathArr count] > _lockFileIndex){
+                dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
+                    [self openPasswordWindow];
+                });
+            } else {
+                [_tableView reloadData];
+                [self updateButtonState];
+            }
+
+        }];
 //        [com release];
     }
 }
@@ -889,8 +892,10 @@
         }
         
         //通过路径获取文件
-        CPDFDocument *tdocument = [[CPDFDocument alloc] initWithURL:[NSURL fileURLWithPath:[file filePath]]];
-        
+        CPDFDocument *tdocument = file.pdfDocument;
+        if (tdocument == nil) {
+            tdocument = [[CPDFDocument alloc] initWithURL:[NSURL fileURLWithPath:[file filePath]]];
+        }
         
         //所有的outline数组
         NSMutableArray *PDFOutlineArr = [NSMutableArray new];

+ 41 - 0
PDF Office/PDF Office/Class/Merge/OCPart/PasswordWindowController.h

@@ -0,0 +1,41 @@
+//
+//  PasswordWindowController.h
+//  PDF Reader
+//
+//  Created by wangshuai on 13-12-3.
+//  Copyright (c) 2013年 zhangjie. All rights reserved.
+//
+
+#import <Cocoa/Cocoa.h>
+
+@class PasswordWindowController;
+@protocol PasswordWindowDelegate <NSObject>
+@optional
+- (void)didFinshedUnlockFile:(PasswordWindowController*)passwordWindowCtr withPassword:(NSString*)password;
+- (void)didCancelUnlockFile:(PasswordWindowController*)passwordWindowCtr;
+
+@end
+
+@interface PasswordWindowController : NSWindowController{
+    NSURL *_fileURL;
+//    id<PasswordWindowDelegate> _passwordDelegate;
+    NSInteger _tag;
+    
+    IBOutlet NSTextField *_passwordTextField;
+    IBOutlet NSTextField *_titleTextField;
+    IBOutlet NSTextField *_textField;
+    
+    IBOutlet NSButton *_openButton;
+    IBOutlet NSButton *_cancelButton;
+}
+@property (nonatomic,retain) NSURL *fileURL;
+@property (nonatomic,weak) id<PasswordWindowDelegate> passwordDelegate;
+@property (nonatomic,assign) NSInteger tag;
+
+- (IBAction)cancelAction:(id)sender;
+- (IBAction)OKAction:(id)sender;
+
+- (void)beginSheetModalForWindow:(NSWindow *)window completionHandler:(void (^)(NSString *password))handler;
+
+
+@end

+ 105 - 0
PDF Office/PDF Office/Class/Merge/OCPart/PasswordWindowController.m

@@ -0,0 +1,105 @@
+//
+//  PasswordWindowController.m
+//  PDF Reader
+//
+//  Created by wangshuai on 13-12-3.
+//  Copyright (c) 2013年 zhangjie. All rights reserved.
+//
+
+#import "PasswordWindowController.h"
+#import <Quartz/Quartz.h>
+
+@interface PasswordWindowController ()
+@property (nonatomic,retain) NSString *password;
+
+@end
+
+@implementation PasswordWindowController
+@synthesize fileURL = _fileURL;
+@synthesize passwordDelegate = _passwordDelegate;
+@synthesize tag = _tag;
+
+- (id)initWithWindow:(NSWindow *)window
+{
+    self = [super initWithWindow:window];
+    if (self) {
+        // Initialization code here.
+    }
+    return self;
+}
+
+- (void)windowDidLoad
+{
+    [super windowDidLoad];
+    
+    // Implement this method to handle any initialization after your window controller's window has been loaded from its nib file.
+    _titleTextField.stringValue = [_fileURL lastPathComponent]?:@"";
+    _textField.stringValue = NSLocalizedString(@"This PDF is password protected. Please enter the password below to access this PDF.", nil);
+    _openButton.title = NSLocalizedString(@"Open", nil);
+    _cancelButton.title = NSLocalizedString(@"Cancel", nil);
+}
+
+- (void)dealloc
+{
+    _passwordDelegate = nil;
+//    [_password release];
+//    [_fileURL release];
+//    [super dealloc];
+}
+
+- (void)close
+{
+//    [super close];
+    [NSApp endSheet:self.window];
+    [[self window] orderOut:self];
+//    [self release];
+
+}
+
+- (IBAction)cancelAction:(id)sender
+{
+    [self close];
+//    if ([_passwordDelegate respondsToSelector:@selector(didCancelUnlockFile:)]) {
+//        [_passwordDelegate didCancelUnlockFile:self];
+//    }
+}
+
+- (IBAction)OKAction:(id)sender
+{
+    PDFDocument *pdfDoc = [[PDFDocument alloc] initWithURL:_fileURL];
+    if (pdfDoc) {
+        if ([pdfDoc unlockWithPassword:[_passwordTextField stringValue]]) {
+            self.password = [_passwordTextField stringValue];
+             [self close];
+        }else{
+            NSAlert *alert = [[NSAlert alloc] init];
+            [alert setAlertStyle:NSAlertStyleCritical];
+            [alert setMessageText:NSLocalizedString(@"Incorrect password. Please check your password and try again.", nil)];
+            [alert runModal];
+//            [alert release];
+        }
+    }
+//    [pdfDoc release];
+}
+
+#pragma mark Show Methods
+- (void)didEndSheet:(NSWindow *)sheet returnCode:(NSInteger)returnCode contextInfo:(void *)contextInfo {
+    if (contextInfo != NULL) {
+        void (^handler)(NSString *password) = (void(^)(NSString *password))CFBridgingRelease(contextInfo);
+        handler(_password);
+//        Block_release(handler);
+    }
+}
+
+- (void)beginSheetModalForWindow:(NSWindow *)window completionHandler:(void (^)(NSString *password))handler{
+//    [self retain]; // make sure we stay around long enough
+    
+    [NSApp beginSheet:[self window]
+       modalForWindow:window
+        modalDelegate:self
+       didEndSelector:@selector(didEndSheet:returnCode:contextInfo:)
+          contextInfo:handler ? CFBridgingRetain(handler) : NULL];
+}
+
+
+@end

+ 137 - 0
PDF Office/PDF Office/Class/Merge/OCPart/PasswordWindowController.xib

@@ -0,0 +1,137 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="17701" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
+    <dependencies>
+        <deployment identifier="macosx"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="17701"/>
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
+    </dependencies>
+    <objects>
+        <customObject id="-2" userLabel="File's Owner" customClass="PasswordWindowController">
+            <connections>
+                <outlet property="_cancelButton" destination="10" id="2Rq-Y5-VcA"/>
+                <outlet property="_openButton" destination="9" id="AOP-hG-el8"/>
+                <outlet property="_passwordTextField" destination="7" id="42"/>
+                <outlet property="_textField" destination="8" id="Pcr-bw-2m1"/>
+                <outlet property="_titleTextField" destination="45" id="55"/>
+                <outlet property="window" destination="5" id="40"/>
+            </connections>
+        </customObject>
+        <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
+        <customObject id="-3" userLabel="Application" customClass="NSObject"/>
+        <window title="PDFName.pdf" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" hidesOnDeactivate="YES" releasedWhenClosed="NO" visibleAtLaunch="NO" animationBehavior="default" id="5">
+            <windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES" utility="YES"/>
+            <windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/>
+            <rect key="contentRect" x="120" y="65" width="381" height="205"/>
+            <rect key="screenRect" x="0.0" y="0.0" width="2560" height="1415"/>
+            <view key="contentView" id="6">
+                <rect key="frame" x="0.0" y="0.0" width="381" height="205"/>
+                <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                <subviews>
+                    <imageView translatesAutoresizingMaskIntoConstraints="NO" id="12">
+                        <rect key="frame" x="15" y="104" width="60" height="60"/>
+                        <constraints>
+                            <constraint firstAttribute="height" constant="60" id="AAa-Cu-TRE"/>
+                            <constraint firstAttribute="width" constant="60" id="T2H-T0-PF2"/>
+                        </constraints>
+                        <imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyUpOrDown" image="icon_lockfile" id="13"/>
+                    </imageView>
+                    <box verticalHuggingPriority="750" boxType="separator" translatesAutoresizingMaskIntoConstraints="NO" id="11">
+                        <rect key="frame" x="0.0" y="49" width="381" height="5"/>
+                        <constraints>
+                            <constraint firstAttribute="height" constant="1" id="ZZq-vF-nGi"/>
+                        </constraints>
+                    </box>
+                    <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="10">
+                        <rect key="frame" x="206" y="7" width="76" height="32"/>
+                        <buttonCell key="cell" type="push" title="Cancel" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="14">
+                            <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+                            <font key="font" metaFont="system"/>
+                            <string key="keyEquivalent" base64-UTF8="YES">
+Gw
+</string>
+                        </buttonCell>
+                        <connections>
+                            <action selector="cancelAction:" target="-2" id="43"/>
+                        </connections>
+                    </button>
+                    <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="9">
+                        <rect key="frame" x="300" y="7" width="67" height="32"/>
+                        <constraints>
+                            <constraint firstAttribute="height" constant="20" id="Xf5-5t-kUy"/>
+                        </constraints>
+                        <buttonCell key="cell" type="push" title="Open" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="15">
+                            <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+                            <font key="font" metaFont="system"/>
+                            <string key="keyEquivalent" base64-UTF8="YES">
+DQ
+</string>
+                        </buttonCell>
+                        <connections>
+                            <action selector="OKAction:" target="-2" id="44"/>
+                        </connections>
+                    </button>
+                    <secureTextField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="7">
+                        <rect key="frame" x="124" y="80" width="199" height="22"/>
+                        <constraints>
+                            <constraint firstAttribute="width" constant="199" id="9Gd-ba-hvr"/>
+                            <constraint firstAttribute="height" constant="22" id="s2x-gL-cQh"/>
+                        </constraints>
+                        <secureTextFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" borderStyle="bezel" drawsBackground="YES" usesSingleLineMode="YES" id="17">
+                            <font key="font" metaFont="system"/>
+                            <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
+                            <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+                            <allowedInputSourceLocales>
+                                <string>NSAllRomanInputSourcesLocaleIdentifier</string>
+                            </allowedInputSourceLocales>
+                        </secureTextFieldCell>
+                    </secureTextField>
+                    <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="45">
+                        <rect key="frame" x="89" y="161" width="278" height="16"/>
+                        <textFieldCell key="cell" lineBreakMode="charWrapping" sendsActionOnEndEditing="YES" alignment="center" title="Label" id="46">
+                            <font key="font" metaFont="system"/>
+                            <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
+                            <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
+                        </textFieldCell>
+                    </textField>
+                    <textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="8">
+                        <rect key="frame" x="89" y="112" width="278" height="48"/>
+                        <constraints>
+                            <constraint firstAttribute="width" constant="274" id="tBH-cN-Iys"/>
+                        </constraints>
+                        <textFieldCell key="cell" sendsActionOnEndEditing="YES" alignment="center" title="This PDF is password protected. Please enter the password below to access this PDF." id="16">
+                            <font key="font" metaFont="system"/>
+                            <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
+                            <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
+                        </textFieldCell>
+                    </textField>
+                </subviews>
+                <constraints>
+                    <constraint firstItem="7" firstAttribute="top" secondItem="8" secondAttribute="bottom" constant="10" id="3nh-uS-Rgh"/>
+                    <constraint firstAttribute="bottom" secondItem="9" secondAttribute="bottom" constant="14" id="72E-00-nm8"/>
+                    <constraint firstItem="8" firstAttribute="trailing" secondItem="45" secondAttribute="trailing" id="DyV-Sk-dE2"/>
+                    <constraint firstItem="11" firstAttribute="leading" secondItem="6" secondAttribute="leading" id="E3K-1g-G6j"/>
+                    <constraint firstAttribute="trailing" secondItem="7" secondAttribute="trailing" constant="58" id="Jsx-Rh-DcP"/>
+                    <constraint firstItem="9" firstAttribute="top" secondItem="11" secondAttribute="bottom" constant="17" id="LGy-uv-Bgy"/>
+                    <constraint firstItem="8" firstAttribute="top" secondItem="45" secondAttribute="bottom" constant="1" id="M3A-Xs-tuP"/>
+                    <constraint firstAttribute="trailing" secondItem="9" secondAttribute="trailing" constant="21" id="NIT-Rl-zmd"/>
+                    <constraint firstAttribute="trailing" secondItem="11" secondAttribute="trailing" id="Ous-re-PEa"/>
+                    <constraint firstItem="12" firstAttribute="leading" secondItem="6" secondAttribute="leading" constant="15" id="Sy2-Pg-ved"/>
+                    <constraint firstItem="8" firstAttribute="leading" secondItem="12" secondAttribute="trailing" constant="16" id="dJj-F8-trs"/>
+                    <constraint firstAttribute="trailing" secondItem="8" secondAttribute="trailing" constant="16" id="iEo-Tw-TaD"/>
+                    <constraint firstItem="8" firstAttribute="leading" secondItem="45" secondAttribute="leading" id="iuR-Tv-XBg"/>
+                    <constraint firstItem="9" firstAttribute="centerY" secondItem="10" secondAttribute="centerY" id="ngn-xn-qC0"/>
+                    <constraint firstItem="12" firstAttribute="top" secondItem="6" secondAttribute="top" constant="41" id="obN-ML-8f7"/>
+                    <constraint firstItem="9" firstAttribute="leading" secondItem="10" secondAttribute="trailing" constant="32" id="qAm-Sy-wpl"/>
+                    <constraint firstItem="11" firstAttribute="top" secondItem="7" secondAttribute="bottom" constant="28" id="vEd-JE-D9G"/>
+                </constraints>
+            </view>
+            <connections>
+                <outlet property="delegate" destination="-2" id="41"/>
+            </connections>
+            <point key="canvasLocation" x="156.5" y="220.5"/>
+        </window>
+    </objects>
+    <resources>
+        <image name="icon_lockfile" width="40" height="44"/>
+    </resources>
+</document>