mirror of
https://github.com/MacPass/MacPass.git
synced 2025-12-13 08:52:20 +00:00
Added QR code scanner tooling for use in OTP auth URLs
This commit is contained in:
@@ -58,6 +58,9 @@
|
||||
4C2F17A21FD69BCA0097418D /* MPUserNotificationCenterDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C2F17A11FD69BCA0097418D /* MPUserNotificationCenterDelegate.m */; };
|
||||
4C32B0E71A1D4436007E12F1 /* KPKFormat+MPUTIDetection.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C32B0E61A1D4436007E12F1 /* KPKFormat+MPUTIDetection.m */; };
|
||||
4C349A00218852160055AF45 /* MPKeyTyper.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C3499FF218852160055AF45 /* MPKeyTyper.m */; };
|
||||
4C35664025824C0A00CAB95B /* NSImage+MPQRCode.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C35663F25824C0A00CAB95B /* NSImage+MPQRCode.m */; };
|
||||
4C356645258259AA00CAB95B /* MPTOTPSetupViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C356643258259AA00CAB95B /* MPTOTPSetupViewController.m */; };
|
||||
4C356646258259AA00CAB95B /* MPTOTPSetupViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4C356644258259AA00CAB95B /* MPTOTPSetupViewController.xib */; };
|
||||
4C3666411787327E00B249F1 /* MPDocument+Attachments.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C3666401787327E00B249F1 /* MPDocument+Attachments.m */; };
|
||||
4C370EFE215B76CB00703AAE /* MPOutlineTableCellView.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C370EFD215B76CB00703AAE /* MPOutlineTableCellView.m */; };
|
||||
4C37A84015B8B474005EF8EE /* MPOutlineDataSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C37A83F15B8B474005EF8EE /* MPOutlineDataSource.m */; };
|
||||
@@ -125,6 +128,8 @@
|
||||
4C4B7EEE17A467E1000234C7 /* MPGroupInspectorViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C4B7EEC17A467E1000234C7 /* MPGroupInspectorViewController.m */; };
|
||||
4C4B7EF317A467FC000234C7 /* MPEntryInspectorViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C4B7EF117A467FC000234C7 /* MPEntryInspectorViewController.m */; };
|
||||
4C4B7EF817A4B335000234C7 /* MPUniqueCharactersFormatter.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C4B7EF717A4B335000234C7 /* MPUniqueCharactersFormatter.m */; };
|
||||
4C4BE0C8257E9B91000AEA8C /* MPNotificationPreferencesController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C4BE0C6257E9B91000AEA8C /* MPNotificationPreferencesController.m */; };
|
||||
4C4BE0C9257E9B91000AEA8C /* MPNotificationPreferencesController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4C4BE0C7257E9B91000AEA8C /* MPNotificationPreferencesController.xib */; };
|
||||
4C4DC0A61C3AD17500DE9DCF /* KeePassKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4C7B63791C0CB55600D7038C /* KeePassKit.framework */; };
|
||||
4C4F72D118DF704400E8D378 /* DDHotKeyTextField.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C4F72CF18DF704400E8D378 /* DDHotKeyTextField.m */; };
|
||||
4C4FCE15177CFE6B00BBF7AE /* MPCustomFieldTableCellView.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C4FCE14177CFE6B00BBF7AE /* MPCustomFieldTableCellView.m */; };
|
||||
@@ -452,6 +457,11 @@
|
||||
4C32B0E61A1D4436007E12F1 /* KPKFormat+MPUTIDetection.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "KPKFormat+MPUTIDetection.m"; sourceTree = "<group>"; };
|
||||
4C3499FE218852160055AF45 /* MPKeyTyper.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MPKeyTyper.h; sourceTree = "<group>"; };
|
||||
4C3499FF218852160055AF45 /* MPKeyTyper.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MPKeyTyper.m; sourceTree = "<group>"; };
|
||||
4C35663E25824C0A00CAB95B /* NSImage+MPQRCode.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "NSImage+MPQRCode.h"; sourceTree = "<group>"; };
|
||||
4C35663F25824C0A00CAB95B /* NSImage+MPQRCode.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "NSImage+MPQRCode.m"; sourceTree = "<group>"; };
|
||||
4C356642258259AA00CAB95B /* MPTOTPSetupViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MPTOTPSetupViewController.h; sourceTree = "<group>"; };
|
||||
4C356643258259AA00CAB95B /* MPTOTPSetupViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MPTOTPSetupViewController.m; sourceTree = "<group>"; };
|
||||
4C356644258259AA00CAB95B /* MPTOTPSetupViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MPTOTPSetupViewController.xib; sourceTree = "<group>"; };
|
||||
4C3666401787327E00B249F1 /* MPDocument+Attachments.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "MPDocument+Attachments.m"; sourceTree = "<group>"; };
|
||||
4C370EFC215B76CB00703AAE /* MPOutlineTableCellView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MPOutlineTableCellView.h; sourceTree = "<group>"; };
|
||||
4C370EFD215B76CB00703AAE /* MPOutlineTableCellView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MPOutlineTableCellView.m; sourceTree = "<group>"; };
|
||||
@@ -557,6 +567,9 @@
|
||||
4C4B7EF117A467FC000234C7 /* MPEntryInspectorViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPEntryInspectorViewController.m; sourceTree = "<group>"; };
|
||||
4C4B7EF617A4B335000234C7 /* MPUniqueCharactersFormatter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPUniqueCharactersFormatter.h; sourceTree = "<group>"; };
|
||||
4C4B7EF717A4B335000234C7 /* MPUniqueCharactersFormatter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPUniqueCharactersFormatter.m; sourceTree = "<group>"; };
|
||||
4C4BE0C5257E9B91000AEA8C /* MPNotificationPreferencesController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MPNotificationPreferencesController.h; sourceTree = "<group>"; };
|
||||
4C4BE0C6257E9B91000AEA8C /* MPNotificationPreferencesController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MPNotificationPreferencesController.m; sourceTree = "<group>"; };
|
||||
4C4BE0C7257E9B91000AEA8C /* MPNotificationPreferencesController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MPNotificationPreferencesController.xib; sourceTree = "<group>"; };
|
||||
4C4F72CF18DF704400E8D378 /* DDHotKeyTextField.m */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.objc; name = DDHotKeyTextField.m; path = DDHotKey/DDHotKeyTextField.m; sourceTree = "<group>"; tabWidth = 4; };
|
||||
4C4F72D018DF704400E8D378 /* DDHotKeyTextField.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DDHotKeyTextField.h; path = DDHotKey/DDHotKeyTextField.h; sourceTree = "<group>"; };
|
||||
4C4FCE13177CFE6B00BBF7AE /* MPCustomFieldTableCellView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPCustomFieldTableCellView.h; sourceTree = "<group>"; };
|
||||
@@ -1202,6 +1215,8 @@
|
||||
4C6BF0752559BD4800E5812A /* KPKBinary+MacPassAddtions.m */,
|
||||
4CB1123F256EB77900204D1B /* KPKEntry+OTP.h */,
|
||||
4CB11240256EB77900204D1B /* KPKEntry+OTP.m */,
|
||||
4C35663E25824C0A00CAB95B /* NSImage+MPQRCode.h */,
|
||||
4C35663F25824C0A00CAB95B /* NSImage+MPQRCode.m */,
|
||||
);
|
||||
name = Categories;
|
||||
sourceTree = "<group>";
|
||||
@@ -1369,6 +1384,9 @@
|
||||
4CD7223917A7CB0700F5A1E1 /* MPWorkflowPreferencesController.h */,
|
||||
4CD7223A17A7CB0700F5A1E1 /* MPWorkflowPreferencesController.m */,
|
||||
6021FE6318E15D9100C3BC51 /* WorkflowPreferences.xib */,
|
||||
4C4BE0C5257E9B91000AEA8C /* MPNotificationPreferencesController.h */,
|
||||
4C4BE0C6257E9B91000AEA8C /* MPNotificationPreferencesController.m */,
|
||||
4C4BE0C7257E9B91000AEA8C /* MPNotificationPreferencesController.xib */,
|
||||
);
|
||||
name = Preferences;
|
||||
sourceTree = "<group>";
|
||||
@@ -1696,6 +1714,9 @@
|
||||
4C73B6EE215E64A7009787F7 /* MPWelcomeViewController.h */,
|
||||
4C73B6EF215E64A7009787F7 /* MPWelcomeViewController.m */,
|
||||
4C7F8B6A1A10B68400CCB83D /* WelcomeView.xib */,
|
||||
4C356642258259AA00CAB95B /* MPTOTPSetupViewController.h */,
|
||||
4C356643258259AA00CAB95B /* MPTOTPSetupViewController.m */,
|
||||
4C356644258259AA00CAB95B /* MPTOTPSetupViewController.xib */,
|
||||
);
|
||||
name = "View Controller";
|
||||
sourceTree = "<group>";
|
||||
@@ -1938,6 +1959,7 @@
|
||||
4C3826B71AD04D8E007D7D67 /* 42_MemoryTemplate.pdf in Resources */,
|
||||
4C3826B41AD04D8E007D7D67 /* 39_HistoryTemplate.pdf in Resources */,
|
||||
4C77E37D15B84A240093A587 /* MainMenu.xib in Resources */,
|
||||
4C4BE0C9257E9B91000AEA8C /* MPNotificationPreferencesController.xib in Resources */,
|
||||
4C3826CD1AD04D8E007D7D67 /* 66_MoneyTemplate.pdf in Resources */,
|
||||
78E1F8B022E3A5D600E738AE /* AutotypeDoctorReportViewController.xib in Resources */,
|
||||
4CA0B2ED15BCADAC00654E32 /* PreferencesWindow.xib in Resources */,
|
||||
@@ -2031,6 +2053,7 @@
|
||||
4C17D11E2250EFBC00C650C4 /* SavePanelAccessoryView.xib in Resources */,
|
||||
4CE88B9717BA651C0042E078 /* contextTriangleTemplate.pdf in Resources */,
|
||||
4C7ABA4817BAEC6700FF5799 /* 15_ScannerTemplate.pdf in Resources */,
|
||||
4C356646258259AA00CAB95B /* MPTOTPSetupViewController.xib in Resources */,
|
||||
4C7ABA4917BAEC6700FF5799 /* 16_BrowserTemplate.pdf in Resources */,
|
||||
4C7ABA4A17BAEC6700FF5799 /* 17_CDRomTemplate.pdf in Resources */,
|
||||
4C7ABA4B17BAEC6700FF5799 /* 19_EmailTemplate.pdf in Resources */,
|
||||
@@ -2129,6 +2152,7 @@
|
||||
4C89F524182FB4740069C73C /* MPAutotypeCommand.m in Sources */,
|
||||
4C6DCC611FA24C2100C8AD3F /* MPAutotypeCandidateSelectionViewController.m in Sources */,
|
||||
4CFC53BF16E94729007396BE /* MPShadowBox.m in Sources */,
|
||||
4C356645258259AA00CAB95B /* MPTOTPSetupViewController.m in Sources */,
|
||||
4C0AF62F195C1F2B009E658D /* MPEntrySearchContext.m in Sources */,
|
||||
4C1F7FA21E3A12E600D6A40E /* MPModifiedKey.m in Sources */,
|
||||
4C888C9316EB6F5E003D34A1 /* MPToolbarItem.m in Sources */,
|
||||
@@ -2199,8 +2223,10 @@
|
||||
4C26C33F18D8C92100CF1A1C /* MPTemporaryFileStorage.m in Sources */,
|
||||
4C663D411D6D91A900CB6237 /* MPNumberFormatter.m in Sources */,
|
||||
4CD2B9061849424B0051B395 /* MPAutotypeContext.m in Sources */,
|
||||
4C4BE0C8257E9B91000AEA8C /* MPNotificationPreferencesController.m in Sources */,
|
||||
4CFB18E418A17FA20097A34B /* MPUpdatePreferencesController.m in Sources */,
|
||||
4C6BF0762559BD4800E5812A /* KPKBinary+MacPassAddtions.m in Sources */,
|
||||
4C35664025824C0A00CAB95B /* NSImage+MPQRCode.m in Sources */,
|
||||
4CD4EE131FC7284000EA6EB3 /* MPPickcharsViewController.m in Sources */,
|
||||
4CCEDE2A179F203B008402BE /* MPOutlineView.m in Sources */,
|
||||
4CB33F861EAF54A000C9341E /* KPKNode+MPIsHistory.m in Sources */,
|
||||
|
||||
@@ -17,17 +17,72 @@
|
||||
</customObject>
|
||||
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
|
||||
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
|
||||
<customView translatesAutoresizingMaskIntoConstraints="NO" id="Hz6-mo-xeY">
|
||||
<rect key="frame" x="0.0" y="0.0" width="480" height="290"/>
|
||||
<customView misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Hz6-mo-xeY">
|
||||
<rect key="frame" x="0.0" y="0.0" width="480" height="409"/>
|
||||
<subviews>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="zBX-HB-tR7">
|
||||
<rect key="frame" x="236" y="13" width="82" height="32"/>
|
||||
<buttonCell key="cell" type="push" title="Cancel" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="60p-7v-Nje">
|
||||
<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="cancelSelection:" target="-1" id="EzT-DQ-zhY"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="V5B-Qq-GN8">
|
||||
<rect key="frame" x="318" y="13" width="148" height="32"/>
|
||||
<buttonCell key="cell" type="push" title="Perform Autotype" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="w7H-hx-CUF">
|
||||
<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="selectAutotypeContext:" target="-2" id="a2F-ID-uOd"/>
|
||||
</connections>
|
||||
</button>
|
||||
<stackView distribution="fill" orientation="vertical" alignment="centerX" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" detachesHiddenViews="YES" translatesAutoresizingMaskIntoConstraints="NO" id="82Y-g7-4wV">
|
||||
<rect key="frame" x="20" y="317" width="440" height="72"/>
|
||||
<subviews>
|
||||
<imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="bWJ-Ub-c10">
|
||||
<rect key="frame" x="204" y="40" width="32" height="32"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" relation="lessThanOrEqual" constant="128" id="Rzo-8n-W92"/>
|
||||
<constraint firstAttribute="width" relation="lessThanOrEqual" constant="128" id="uhc-Ce-lb8"/>
|
||||
</constraints>
|
||||
<imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyUpOrDown" image="NSApplicationIcon" id="d6x-JH-Lw2"/>
|
||||
</imageView>
|
||||
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="kDw-2l-7gQ">
|
||||
<rect key="frame" x="-2" y="0.0" width="444" height="32"/>
|
||||
<textFieldCell key="cell" sendsActionOnEndEditing="YES" title="There are multiple matches for the current window. Please select which match should be used." id="gcf-gb-ZsF">
|
||||
<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>
|
||||
<visibilityPriorities>
|
||||
<integer value="1000"/>
|
||||
<integer value="1000"/>
|
||||
</visibilityPriorities>
|
||||
<customSpacing>
|
||||
<real value="3.4028234663852886e+38"/>
|
||||
<real value="3.4028234663852886e+38"/>
|
||||
</customSpacing>
|
||||
</stackView>
|
||||
<scrollView wantsLayer="YES" verticalCompressionResistancePriority="250" autohidesScrollers="YES" horizontalLineScroll="38" horizontalPageScroll="10" verticalLineScroll="38" verticalPageScroll="10" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="7cB-re-3ys">
|
||||
<rect key="frame" x="20" y="61" width="440" height="129"/>
|
||||
<rect key="frame" x="20" y="61" width="440" height="248"/>
|
||||
<clipView key="contentView" id="WSc-o2-GsZ">
|
||||
<rect key="frame" x="1" y="1" width="438" height="127"/>
|
||||
<rect key="frame" x="1" y="1" width="438" height="246"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<tableView verticalHuggingPriority="750" allowsExpansionToolTips="YES" columnAutoresizingStyle="lastColumnOnly" alternatingRowBackgroundColors="YES" columnReordering="NO" multipleSelection="NO" emptySelection="NO" autosaveColumns="NO" typeSelect="NO" rowHeight="36" viewBased="YES" id="Ih2-lo-t2W">
|
||||
<rect key="frame" x="0.0" y="0.0" width="438" height="127"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="438" height="246"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<size key="intercellSpacing" width="3" height="2"/>
|
||||
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -114,61 +169,6 @@
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
</scroller>
|
||||
</scrollView>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="zBX-HB-tR7">
|
||||
<rect key="frame" x="236" y="13" width="82" height="32"/>
|
||||
<buttonCell key="cell" type="push" title="Cancel" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="60p-7v-Nje">
|
||||
<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="cancelSelection:" target="-1" id="EzT-DQ-zhY"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="V5B-Qq-GN8">
|
||||
<rect key="frame" x="318" y="13" width="148" height="32"/>
|
||||
<buttonCell key="cell" type="push" title="Perform Autotype" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="w7H-hx-CUF">
|
||||
<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="selectAutotypeContext:" target="-2" id="a2F-ID-uOd"/>
|
||||
</connections>
|
||||
</button>
|
||||
<stackView distribution="fill" orientation="vertical" alignment="centerX" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" detachesHiddenViews="YES" translatesAutoresizingMaskIntoConstraints="NO" id="82Y-g7-4wV">
|
||||
<rect key="frame" x="20" y="198" width="440" height="72"/>
|
||||
<subviews>
|
||||
<imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="bWJ-Ub-c10">
|
||||
<rect key="frame" x="204" y="40" width="32" height="32"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" relation="lessThanOrEqual" constant="128" id="Rzo-8n-W92"/>
|
||||
<constraint firstAttribute="width" relation="lessThanOrEqual" constant="128" id="uhc-Ce-lb8"/>
|
||||
</constraints>
|
||||
<imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyUpOrDown" image="NSApplicationIcon" id="d6x-JH-Lw2"/>
|
||||
</imageView>
|
||||
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="kDw-2l-7gQ">
|
||||
<rect key="frame" x="-2" y="0.0" width="444" height="32"/>
|
||||
<textFieldCell key="cell" sendsActionOnEndEditing="YES" title="There are multiple matches for the current window. Please select which match should be used." id="gcf-gb-ZsF">
|
||||
<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>
|
||||
<visibilityPriorities>
|
||||
<integer value="1000"/>
|
||||
<integer value="1000"/>
|
||||
</visibilityPriorities>
|
||||
<customSpacing>
|
||||
<real value="3.4028234663852886e+38"/>
|
||||
<real value="3.4028234663852886e+38"/>
|
||||
</customSpacing>
|
||||
</stackView>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstAttribute="bottom" secondItem="V5B-Qq-GN8" secondAttribute="bottom" constant="20" id="FMz-e1-hOB"/>
|
||||
@@ -184,7 +184,7 @@ DQ
|
||||
<constraint firstItem="zBX-HB-tR7" firstAttribute="top" secondItem="7cB-re-3ys" secondAttribute="bottom" constant="20" symbolic="YES" id="onA-YV-ezJ"/>
|
||||
<constraint firstItem="82Y-g7-4wV" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" constant="20" symbolic="YES" id="uoN-Et-pWh"/>
|
||||
</constraints>
|
||||
<point key="canvasLocation" x="-353" y="-2693.5"/>
|
||||
<point key="canvasLocation" x="-353" y="-2707.5"/>
|
||||
</customView>
|
||||
</objects>
|
||||
<resources>
|
||||
|
||||
18
MacPass/MPNotificationPreferencesController.h
Normal file
18
MacPass/MPNotificationPreferencesController.h
Normal file
@@ -0,0 +1,18 @@
|
||||
//
|
||||
// MPNotificationPreferencesController.h
|
||||
// MacPass
|
||||
//
|
||||
// Created by Michael Starke on 07.12.20.
|
||||
// Copyright © 2020 HicknHack Software GmbH. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Cocoa/Cocoa.h>
|
||||
#import "MPPreferencesTab.h"
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface MPNotificationPreferencesController : NSViewController <MPPreferencesTab>
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
25
MacPass/MPNotificationPreferencesController.m
Normal file
25
MacPass/MPNotificationPreferencesController.m
Normal file
@@ -0,0 +1,25 @@
|
||||
//
|
||||
// MPNotificationPreferencesController.m
|
||||
// MacPass
|
||||
//
|
||||
// Created by Michael Starke on 07.12.20.
|
||||
// Copyright © 2020 HicknHack Software GmbH. All rights reserved.
|
||||
//
|
||||
|
||||
#import "MPNotificationPreferencesController.h"
|
||||
|
||||
@interface MPNotificationPreferencesController ()
|
||||
|
||||
@end
|
||||
|
||||
@implementation MPNotificationPreferencesController
|
||||
|
||||
- (NSImage *)image {
|
||||
return [NSImage imageNamed:NSImageNameNetwork];
|
||||
}
|
||||
|
||||
- (void)viewDidLoad {
|
||||
[super viewDidLoad];
|
||||
}
|
||||
|
||||
@end
|
||||
19
MacPass/MPNotificationPreferencesController.xib
Normal file
19
MacPass/MPNotificationPreferencesController.xib
Normal file
@@ -0,0 +1,19 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="11134" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
|
||||
<dependencies>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="11134"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
<customObject id="-2" userLabel="File's Owner" customClass="MPNotificationPreferencesController">
|
||||
<connections>
|
||||
<outlet property="view" destination="Hz6-mo-xeY" id="0bl-1N-x8E"/>
|
||||
</connections>
|
||||
</customObject>
|
||||
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
|
||||
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
|
||||
<customView id="Hz6-mo-xeY">
|
||||
<rect key="frame" x="0.0" y="0.0" width="480" height="272"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
</customView>
|
||||
</objects>
|
||||
</document>
|
||||
17
MacPass/MPTOTPSetupViewController.h
Normal file
17
MacPass/MPTOTPSetupViewController.h
Normal file
@@ -0,0 +1,17 @@
|
||||
//
|
||||
// MPTOTPSetupViewController.h
|
||||
// MacPass
|
||||
//
|
||||
// Created by Michael Starke on 10.12.20.
|
||||
// Copyright © 2020 HicknHack Software GmbH. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Cocoa/Cocoa.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface MPTOTPSetupViewController : NSViewController
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
22
MacPass/MPTOTPSetupViewController.m
Normal file
22
MacPass/MPTOTPSetupViewController.m
Normal file
@@ -0,0 +1,22 @@
|
||||
//
|
||||
// MPTOTPSetupViewController.m
|
||||
// MacPass
|
||||
//
|
||||
// Created by Michael Starke on 10.12.20.
|
||||
// Copyright © 2020 HicknHack Software GmbH. All rights reserved.
|
||||
//
|
||||
|
||||
#import "MPTOTPSetupViewController.h"
|
||||
|
||||
@interface MPTOTPSetupViewController ()
|
||||
|
||||
@end
|
||||
|
||||
@implementation MPTOTPSetupViewController
|
||||
|
||||
- (void)viewDidLoad {
|
||||
[super viewDidLoad];
|
||||
// Do view setup here.
|
||||
}
|
||||
|
||||
@end
|
||||
22
MacPass/MPTOTPSetupViewController.xib
Normal file
22
MacPass/MPTOTPSetupViewController.xib
Normal file
@@ -0,0 +1,22 @@
|
||||
<?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">
|
||||
<dependencies>
|
||||
<deployment identifier="macosx"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="17506"/>
|
||||
<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="view" destination="Hz6-mo-xeY" id="0bl-1N-x8E"/>
|
||||
</connections>
|
||||
</customObject>
|
||||
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
|
||||
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
|
||||
<customView id="Hz6-mo-xeY">
|
||||
<rect key="frame" x="0.0" y="0.0" width="496" height="534"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<point key="canvasLocation" x="-198" y="53"/>
|
||||
</customView>
|
||||
</objects>
|
||||
</document>
|
||||
@@ -60,7 +60,7 @@
|
||||
<constraint firstItem="Lz5-aM-o4b" firstAttribute="top" secondItem="Hz6-mo-xeY" secondAttribute="top" id="y4i-uB-HlK"/>
|
||||
<constraint firstItem="Lz5-aM-o4b" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" id="zFP-JZ-Qtu"/>
|
||||
</constraints>
|
||||
<point key="canvasLocation" x="-86" y="170"/>
|
||||
<point key="canvasLocation" x="-180" y="74"/>
|
||||
</customView>
|
||||
</objects>
|
||||
</document>
|
||||
|
||||
19
MacPass/NSImage+MPQRCode.h
Normal file
19
MacPass/NSImage+MPQRCode.h
Normal file
@@ -0,0 +1,19 @@
|
||||
//
|
||||
// NSImage+MPQRCode.h
|
||||
// MacPass
|
||||
//
|
||||
// Created by Michael Starke on 10.12.20.
|
||||
// Copyright © 2020 HicknHack Software GmbH. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Cocoa/Cocoa.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface NSImage (MPQRCode)
|
||||
|
||||
@property (nonatomic, readonly, copy) NSString *QRCodeString;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
29
MacPass/NSImage+MPQRCode.m
Normal file
29
MacPass/NSImage+MPQRCode.m
Normal file
@@ -0,0 +1,29 @@
|
||||
//
|
||||
// NSImage+MPQRCode.m
|
||||
// MacPass
|
||||
//
|
||||
// Created by Michael Starke on 10.12.20.
|
||||
// Copyright © 2020 HicknHack Software GmbH. All rights reserved.
|
||||
//
|
||||
|
||||
#import "NSImage+MPQRCode.h"
|
||||
#import <CoreImage/CoreImage.h>
|
||||
|
||||
@implementation NSImage (MPQRCode)
|
||||
|
||||
- (NSString *)QRCodeString {
|
||||
NSRect rect = NSMakeRect(0, 0, self.size.width, self.size.height);
|
||||
NSBitmapImageRep *bitmapRep = (NSBitmapImageRep *)[self bestRepresentationForRect:rect context:nil hints:nil];
|
||||
CIImage *ciImage = [[CIImage alloc] initWithBitmapImageRep:bitmapRep];
|
||||
CIDetector *detector = [CIDetector detectorOfType:CIDetectorTypeQRCode context:nil options:nil];
|
||||
NSArray<CIFeature *> *features = [detector featuresInImage:ciImage];
|
||||
for(CIFeature *feature in features) {
|
||||
if(feature.type == CIFeatureTypeQRCode) {
|
||||
CIQRCodeFeature *qrCodeFeature = (CIQRCodeFeature *)feature;
|
||||
return qrCodeFeature.messageString;
|
||||
}
|
||||
}
|
||||
return @"";
|
||||
}
|
||||
|
||||
@end
|
||||
Reference in New Issue
Block a user