mirror of
https://github.com/MacPass/MacPass.git
synced 2025-12-21 15:29:38 +00:00
OTP setup view controller gets show and parses url strings
This commit is contained in:
@@ -1,8 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="17506" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||
<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="17506"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="17701"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
@@ -97,7 +97,7 @@
|
||||
<rect key="frame" x="20" y="26" width="253" height="396"/>
|
||||
<clipView key="contentView" drawsBackground="NO" copiesOnScroll="NO" id="F3N-QI-Di5">
|
||||
<rect key="frame" x="1" y="1" width="251" height="394"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<tableView verticalHuggingPriority="750" allowsExpansionToolTips="YES" columnAutoresizingStyle="lastColumnOnly" multipleSelection="NO" autosaveColumns="NO" rowHeight="36" rowSizeStyle="automatic" viewBased="YES" id="137">
|
||||
<rect key="frame" x="0.0" y="0.0" width="251" height="394"/>
|
||||
@@ -309,10 +309,10 @@
|
||||
</connections>
|
||||
</segmentedControl>
|
||||
<stackView distribution="fill" orientation="vertical" alignment="leading" horizontalStackHuggingPriority="250" verticalStackHuggingPriority="250" detachesHiddenViews="YES" translatesAutoresizingMaskIntoConstraints="NO" id="dx3-E2-FFt">
|
||||
<rect key="frame" x="20" y="131" width="251" height="333"/>
|
||||
<rect key="frame" x="20" y="132" width="251" height="332"/>
|
||||
<subviews>
|
||||
<textField horizontalHuggingPriority="249" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="52">
|
||||
<rect key="frame" x="-2" y="319" width="255" height="14"/>
|
||||
<rect key="frame" x="-2" y="318" width="255" height="14"/>
|
||||
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Title" id="71">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<color key="textColor" name="disabledControlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -320,7 +320,7 @@
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="249" verticalHuggingPriority="750" horizontalCompressionResistancePriority="249" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="53" customClass="HNHUITextField">
|
||||
<rect key="frame" x="0.0" y="290" width="251" height="21"/>
|
||||
<rect key="frame" x="0.0" y="289" width="251" height="21"/>
|
||||
<textFieldCell key="cell" lineBreakMode="truncatingTail" truncatesLastVisibleLine="YES" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" usesSingleLineMode="YES" id="70">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -332,7 +332,7 @@
|
||||
</connections>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="249" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="54">
|
||||
<rect key="frame" x="-2" y="268" width="255" height="14"/>
|
||||
<rect key="frame" x="-2" y="267" width="255" height="14"/>
|
||||
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Username" id="69">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<color key="textColor" name="disabledControlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -340,7 +340,7 @@
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="249" verticalHuggingPriority="750" horizontalCompressionResistancePriority="249" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="55" customClass="HNHUITextField">
|
||||
<rect key="frame" x="0.0" y="240" width="251" height="20"/>
|
||||
<rect key="frame" x="0.0" y="239" width="251" height="20"/>
|
||||
<textFieldCell key="cell" lineBreakMode="truncatingTail" truncatesLastVisibleLine="YES" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" usesSingleLineMode="YES" id="68">
|
||||
<font key="font" size="13" name="Menlo-Regular"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -352,7 +352,7 @@
|
||||
</connections>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="249" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="58">
|
||||
<rect key="frame" x="-2" y="218" width="255" height="14"/>
|
||||
<rect key="frame" x="-2" y="217" width="255" height="14"/>
|
||||
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Password" id="65">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<color key="textColor" name="disabledControlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -360,7 +360,7 @@
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<stackView distribution="fill" orientation="horizontal" alignment="centerY" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" horizontalHuggingPriority="249" detachesHiddenViews="YES" translatesAutoresizingMaskIntoConstraints="NO" id="C4J-K4-QBG">
|
||||
<rect key="frame" x="0.0" y="188" width="251" height="22"/>
|
||||
<rect key="frame" x="0.0" y="187" width="251" height="22"/>
|
||||
<subviews>
|
||||
<secureTextField horizontalHuggingPriority="249" verticalHuggingPriority="750" horizontalCompressionResistancePriority="249" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="60" customClass="HNHUISecureTextField">
|
||||
<rect key="frame" x="0.0" y="1" width="136" height="20"/>
|
||||
@@ -411,7 +411,7 @@
|
||||
</customSpacing>
|
||||
</stackView>
|
||||
<textField horizontalHuggingPriority="249" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="57">
|
||||
<rect key="frame" x="-2" y="166" width="255" height="14"/>
|
||||
<rect key="frame" x="-2" y="165" width="255" height="14"/>
|
||||
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="URL" id="66">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<color key="textColor" name="disabledControlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -419,7 +419,7 @@
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="56" customClass="HNHUITextField">
|
||||
<rect key="frame" x="0.0" y="137" width="251" height="21"/>
|
||||
<rect key="frame" x="0.0" y="136" width="251" height="21"/>
|
||||
<textFieldCell key="cell" lineBreakMode="truncatingTail" truncatesLastVisibleLine="YES" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" usesSingleLineMode="YES" id="67">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -431,10 +431,10 @@
|
||||
</connections>
|
||||
</textField>
|
||||
<stackView distribution="fill" orientation="horizontal" alignment="centerY" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" horizontalHuggingPriority="248" detachesHiddenViews="YES" translatesAutoresizingMaskIntoConstraints="NO" id="buA-UH-XId">
|
||||
<rect key="frame" x="0.0" y="107" width="251" height="22"/>
|
||||
<rect key="frame" x="0.0" y="107" width="251" height="21"/>
|
||||
<subviews>
|
||||
<button horizontalHuggingPriority="249" horizontalCompressionResistancePriority="249" translatesAutoresizingMaskIntoConstraints="NO" id="7">
|
||||
<rect key="frame" x="-2" y="2" width="223" height="18"/>
|
||||
<rect key="frame" x="-2" y="2" width="209" height="18"/>
|
||||
<buttonCell key="cell" type="check" title="Expires" bezelStyle="regularSquare" imagePosition="left" lineBreakMode="truncatingMiddle" state="on" inset="2" id="78">
|
||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
@@ -445,8 +445,8 @@
|
||||
</connections>
|
||||
</button>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="8">
|
||||
<rect key="frame" x="227" y="-1" width="24" height="23"/>
|
||||
<buttonCell key="cell" type="roundTextured" bezelStyle="texturedRounded" image="NSActionTemplate" imagePosition="only" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="77">
|
||||
<rect key="frame" x="207" y="-7" width="50" height="32"/>
|
||||
<buttonCell key="cell" type="push" bezelStyle="rounded" image="NSActionTemplate" imagePosition="only" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="77">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
@@ -770,7 +770,7 @@
|
||||
<rect key="frame" x="0.0" y="0.0" width="261" height="268"/>
|
||||
<clipView key="contentView" drawsBackground="NO" copiesOnScroll="NO" id="k8G-zp-BXZ">
|
||||
<rect key="frame" x="1" y="1" width="259" height="266"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<tableView focusRingType="none" verticalHuggingPriority="750" allowsExpansionToolTips="YES" columnAutoresizingStyle="lastColumnOnly" selectionHighlightStyle="none" columnSelection="YES" columnResizing="NO" multipleSelection="NO" autosaveColumns="NO" rowHeight="54" viewBased="YES" id="193">
|
||||
<rect key="frame" x="0.0" y="0.0" width="259" height="266"/>
|
||||
|
||||
@@ -599,6 +599,7 @@ typedef NS_ENUM(NSUInteger, MPEntryTab) {
|
||||
|
||||
NSInteger urlindex = [self.fieldsStackView.arrangedSubviews indexOfObject:self.URLTextField];
|
||||
NSAssert(urlindex != NSNotFound, @"Missing reference view. This should not happen!");
|
||||
[self addChildViewController:self.totpViewController];
|
||||
[self.fieldsStackView insertArrangedSubview:self.totpViewController.view atIndex:urlindex - 1];
|
||||
}
|
||||
|
||||
|
||||
@@ -7,8 +7,16 @@
|
||||
//
|
||||
|
||||
#import "MPTOTPSetupViewController.h"
|
||||
#import "NSImage+MPQRCode.h"
|
||||
#import <KeePassKit/KeePassKit.h>
|
||||
|
||||
@interface MPTOTPSetupViewController ()
|
||||
@property (strong) IBOutlet NSTextField *urlTextField;
|
||||
@property (strong) IBOutlet NSTextField *secretTextField;
|
||||
@property (strong) IBOutlet NSPopUpButton *algorithmPopUpButton;
|
||||
@property (strong) IBOutlet NSTextField *timeStepTextField;
|
||||
@property (strong) IBOutlet NSPopUpButton *digitCountPopUpButton;
|
||||
@property (strong) IBOutlet NSImageView *qrCodeImageView;
|
||||
|
||||
@end
|
||||
|
||||
@@ -18,5 +26,16 @@
|
||||
[super viewDidLoad];
|
||||
// Do view setup here.
|
||||
}
|
||||
- (IBAction)parseQRCode:(id)sender {
|
||||
if(sender != self.qrCodeImageView) {
|
||||
return; // wrong sender
|
||||
}
|
||||
NSString *qrCodeString = self.qrCodeImageView.image.QRCodeString;
|
||||
NSURL *otpURL = [NSURL URLWithString:qrCodeString];
|
||||
if(!otpURL.isTimeOTPURL) {
|
||||
return; // no valid URL
|
||||
}
|
||||
self.urlTextField.stringValue = otpURL.absoluteString;
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
@@ -1,13 +1,19 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="17506" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="17701" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
|
||||
<dependencies>
|
||||
<deployment identifier="macosx"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="17506"/>
|
||||
<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="MPTOTPSetupViewController">
|
||||
<connections>
|
||||
<outlet property="algorithmPopUpButton" destination="caF-Au-ey8" id="aZJ-ee-acD"/>
|
||||
<outlet property="digitCountPopUpButton" destination="aa3-XV-Chc" id="Ghc-Mp-R8f"/>
|
||||
<outlet property="qrCodeImageView" destination="yS5-M0-RSB" id="s9E-ID-WQz"/>
|
||||
<outlet property="secretTextField" destination="Bt8-9X-91R" id="mtn-nj-3oO"/>
|
||||
<outlet property="timeStepTextField" destination="AdN-zI-C65" id="ebN-x3-AIN"/>
|
||||
<outlet property="urlTextField" destination="GJN-85-eYH" id="Y1F-zI-hLu"/>
|
||||
<outlet property="view" destination="Hz6-mo-xeY" id="0bl-1N-x8E"/>
|
||||
</connections>
|
||||
</customObject>
|
||||
@@ -18,22 +24,26 @@
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<subviews>
|
||||
<stackView distribution="fill" orientation="vertical" alignment="centerX" spacing="20" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" detachesHiddenViews="YES" translatesAutoresizingMaskIntoConstraints="NO" id="ene-iL-JT3">
|
||||
<rect key="frame" x="20" y="106" width="314" height="190"/>
|
||||
<rect key="frame" x="20" y="78" width="314" height="218"/>
|
||||
<subviews>
|
||||
<imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="yS5-M0-RSB">
|
||||
<rect key="frame" x="122" y="123" width="70" height="70"/>
|
||||
<rect key="frame" x="122" y="151" width="70" height="70"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="64" id="EXM-vg-ehl"/>
|
||||
<constraint firstAttribute="height" constant="64" id="U2b-8Z-WPa"/>
|
||||
</constraints>
|
||||
<imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" imageFrameStyle="grayBezel" id="BXB-xr-hqw"/>
|
||||
<imageCell key="cell" selectable="YES" editable="YES" alignment="left" imageScaling="proportionallyDown" imageFrameStyle="grayBezel" id="BXB-xr-hqw"/>
|
||||
<connections>
|
||||
<action selector="parseQRCode:" target="-2" id="5u9-xL-Haj"/>
|
||||
</connections>
|
||||
</imageView>
|
||||
<gridView xPlacement="leading" yPlacement="center" rowAlignment="firstBaseline" translatesAutoresizingMaskIntoConstraints="NO" id="4gl-4p-0WY">
|
||||
<rect key="frame" x="0.0" y="0.0" width="314" height="106"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="314" height="134"/>
|
||||
<constraints>
|
||||
<constraint firstItem="yiW-Wk-6YB" firstAttribute="leading" secondItem="4gl-4p-0WY" secondAttribute="leading" constant="9" id="jcX-sf-Qkm"/>
|
||||
</constraints>
|
||||
<rows>
|
||||
<gridRow id="leK-j9-Cah"/>
|
||||
<gridRow id="GmF-7D-t30"/>
|
||||
<gridRow id="hS6-e9-JPg"/>
|
||||
<gridRow id="QY3-TF-Rbs"/>
|
||||
@@ -45,6 +55,27 @@
|
||||
<gridColumn id="aZO-dP-SsW"/>
|
||||
</columns>
|
||||
<gridCells>
|
||||
<gridCell row="leK-j9-Cah" column="Ar1-qh-iHT" id="fgi-y3-z17">
|
||||
<textField key="contentView" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="4Ic-Nt-YlL">
|
||||
<rect key="frame" x="75" y="115" width="30" height="16"/>
|
||||
<textFieldCell key="cell" lineBreakMode="clipping" title="URL" id="Kci-xp-mLu">
|
||||
<font key="font" usesAppearanceFont="YES"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
</gridCell>
|
||||
<gridCell row="leK-j9-Cah" column="Ecc-pj-MX9" id="q9e-Zx-LIY">
|
||||
<textField key="contentView" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="GJN-85-eYH">
|
||||
<rect key="frame" x="109" y="113" width="100" height="21"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" borderStyle="bezel" drawsBackground="YES" id="ZpH-Ks-BBi">
|
||||
<font key="font" usesAppearanceFont="YES"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
</gridCell>
|
||||
<gridCell row="leK-j9-Cah" column="aZO-dP-SsW" id="gOO-ed-C7I"/>
|
||||
<gridCell row="GmF-7D-t30" column="Ar1-qh-iHT" id="Isd-CW-srQ">
|
||||
<textField key="contentView" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="e3u-QK-K24">
|
||||
<rect key="frame" x="61" y="87" width="44" height="16"/>
|
||||
@@ -183,7 +214,7 @@
|
||||
<constraint firstAttribute="bottom" relation="greaterThanOrEqual" secondItem="ene-iL-JT3" secondAttribute="bottom" constant="20" symbolic="YES" id="OYl-ml-l0m"/>
|
||||
<constraint firstAttribute="trailing" secondItem="ene-iL-JT3" secondAttribute="trailing" constant="20" symbolic="YES" id="sKp-EZ-uRv"/>
|
||||
</constraints>
|
||||
<point key="canvasLocation" x="-407" y="-77"/>
|
||||
<point key="canvasLocation" x="-435" y="-254"/>
|
||||
</customView>
|
||||
</objects>
|
||||
</document>
|
||||
|
||||
@@ -14,6 +14,7 @@ NS_ASSUME_NONNULL_BEGIN
|
||||
@interface MPTOTPViewController : NSViewController
|
||||
@property (strong) IBOutlet HNHUITextField *toptValueTextField;
|
||||
@property (strong) IBOutlet NSButton *remainingTimeButton;
|
||||
@property (strong) IBOutlet NSButton *showSetupButton;
|
||||
|
||||
@end
|
||||
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
#import "MPTOTPViewController.h"
|
||||
|
||||
#import <KeePassKit/KeePassKit.h>
|
||||
#import "MPEntryInspectorViewController.h"
|
||||
|
||||
@interface MPTOTPViewController ()
|
||||
|
||||
@@ -22,6 +23,12 @@
|
||||
self.remainingTimeButton.title = @"";
|
||||
}
|
||||
|
||||
- (IBAction)showOTPSetup:(id)sender {
|
||||
MPEntryInspectorViewController *vs = (MPEntryInspectorViewController*)self.parentViewController;
|
||||
[vs showOTPSetup:sender];
|
||||
}
|
||||
|
||||
|
||||
- (void)setRepresentedObject:(id)representedObject {
|
||||
NSArray *notificationNames = @[KPKWillAddAttributeNotification, KPKDidAddAttributeNotification, KPKWillChangeAttributeNotification, KPKDidChangeAttributeNotification, KPKWillRemoveAttributeNotification, KPKDidRemoveAttributeNotification];
|
||||
if(self.representedObject) {
|
||||
|
||||
@@ -1,14 +1,15 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="17506" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="17701" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
|
||||
<dependencies>
|
||||
<deployment identifier="macosx"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="17506"/>
|
||||
<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="MPTOTPViewController">
|
||||
<connections>
|
||||
<outlet property="remainingTimeButton" destination="Hxg-bd-l1O" id="QJf-RB-7JY"/>
|
||||
<outlet property="showSetupButton" destination="xge-Jc-QnB" id="BiU-0e-j2c"/>
|
||||
<outlet property="toptValueTextField" destination="xBL-Jz-VQO" id="QwC-Um-82o"/>
|
||||
<outlet property="view" destination="Hz6-mo-xeY" id="0bl-1N-x8E"/>
|
||||
</connections>
|
||||
@@ -55,7 +56,7 @@
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
<connections>
|
||||
<action selector="showOTPSetup:" target="-1" id="mJ4-w0-CGo"/>
|
||||
<action selector="showOTPSetup:" target="-2" id="bgd-gi-zp9"/>
|
||||
</connections>
|
||||
</button>
|
||||
</subviews>
|
||||
|
||||
Reference in New Issue
Block a user