.../Source/App/Preferences/PreferencesAdvancedView+MultipleItemWrapping.swift
Line | Count | Source (jump to first uncovered line) |
1 | | // |
2 | | // PreferencesAdvancedView+MultipleItemWrapping.swift |
3 | | // CutBox |
4 | | // |
5 | | // Created by Jason Milkins on 11/4/18. |
6 | | // Copyright © 2018-2023 ocodo. All rights reserved. |
7 | | // |
8 | | |
9 | | import RxSwift |
10 | | import RxCocoa |
11 | | |
12 | | extension PreferencesAdvancedView { |
13 | | |
14 | 50 | func setupWrappingStringTextFields() { |
15 | 50 | self.shouldWrapMultipleSelection.title = "preferences_multi_clip_wrapped_checkbox_label".l7n |
16 | 50 | self.wrapStartTextField.placeholderString = "preferences_multi_clip_wrapped_start_placeholder".l7n |
17 | 50 | self.wrapEndTextField.placeholderString = "preferences_multi_clip_wrapped_end_placeholder".l7n |
18 | 50 | |
19 | 50 | let (start, end) = prefs.wrappingStrings |
20 | 50 | self.wrapStartTextField.stringValue = start ?? "" |
21 | 50 | self.wrapEndTextField.stringValue = end ?? "" |
22 | 50 | |
23 | 50 | let shouldWrapSaved = prefs.useWrappingStrings |
24 | 50 | self.shouldWrapMultipleSelection.state = shouldWrapSaved ? .on : .off |
25 | 50 | updateWrappingMultipleSelection(shouldWrapSaved) |
26 | 50 | |
27 | 50 | Observable |
28 | 50 | .combineLatest(self.wrapStartTextField.rx.text, |
29 | 50 | self.wrapEndTextField.rx.text) { ($0, $1) } |
30 | 50 | .skip(1) |
31 | 50 | .subscribe(onNext: { self.prefs.wrappingStrings = $0 }) |
32 | 50 | .disposed(by: disposeBag) |
33 | 50 | |
34 | 50 | self.shouldWrapMultipleSelection.rx.state |
35 | 50 | .skip(1) |
36 | 50 | .map { $0 == .on } |
37 | 50 | .subscribe(onNext: { self.updateWrappingMultipleSelection($0) }) |
38 | 50 | .disposed(by: disposeBag) |
39 | 50 | } |
40 | | |
41 | 50 | func updateWrappingMultipleSelection(_ bool: Bool) { |
42 | 50 | prefs.useWrappingStrings = bool |
43 | 50 | [self.wrapStartTextField, |
44 | 50 | self.wrapEndTextField] |
45 | 100 | .forEach { |
46 | 100 | $0?.isHidden = !bool |
47 | 100 | $0?.isEnabled = bool |
48 | 100 | } |
49 | 50 | } |
50 | | } |