.../Source/App/Preferences/PreferencesAdvancedView+HistoryLimit.swift
Line | Count | Source (jump to first uncovered line) |
1 | | // |
2 | | // PreferencesAdvancedView+HistoryLimit.swift |
3 | | // CutBox |
4 | | // |
5 | | // Created by Jason Milkins on 14/4/18. |
6 | | // Copyright © 2018-2023 ocodo. All rights reserved. |
7 | | // |
8 | | |
9 | | import RxCocoa |
10 | | import RxSwift |
11 | | |
12 | | extension PreferencesAdvancedView { |
13 | | |
14 | 50 | func setupHistoryLimitControls() { |
15 | 50 | self.setupHistoryUnlimitedCheckbox() |
16 | 50 | self.setupHistoryLimitTextField() |
17 | 50 | } |
18 | | |
19 | 50 | func setupHistoryUnlimitedCheckbox() { |
20 | 50 | self.historyUnlimitedCheckbox.title = "preferences_history_limit_checkbox_label".l7n |
21 | 50 | |
22 | 50 | self.historyUnlimitedCheckbox.state = prefs |
23 | 50 | .historyLimited |
24 | 50 | ? .off |
25 | 50 | : .on |
26 | 50 | |
27 | 50 | self.historyUnlimitedCheckbox.rx.state |
28 | 50 | .map { $0 == .off } |
29 | 100 | .subscribe(onNext: onNextHistoryUnlimitedCheckboxEvent) $s15CutBoxUnitTests23PreferencesAdvancedViewC29setupHistoryUnlimitedCheckboxyyFySbcACcfu_ Line | Count | Source | 29 | 50 | .subscribe(onNext: onNextHistoryUnlimitedCheckboxEvent) |
$s15CutBoxUnitTests23PreferencesAdvancedViewC29setupHistoryUnlimitedCheckboxyyFySbcACcfu_ySbcfu0_ Line | Count | Source | 29 | 50 | .subscribe(onNext: onNextHistoryUnlimitedCheckboxEvent) |
|
30 | 50 | .disposed(by: disposeBag) |
31 | 50 | } |
32 | | |
33 | 50 | func onNextHistoryUnlimitedCheckboxEvent(state: Bool) { |
34 | 50 | self.prefs.historyLimited = state |
35 | 50 | self.historyLimitTextField.isEnabled = state |
36 | 50 | if !state { |
37 | 50 | self.historyLimitTextField.stringValue = "" |
38 | 50 | } |
39 | 50 | } |
40 | | |
41 | 50 | func setupHistoryLimitTextField() { |
42 | 50 | let historyLimit = prefs.historyLimit |
43 | 50 | |
44 | 50 | self.historyLimitTitle.stringValue = "preferences_history_limit_title".l7n |
45 | 50 | self.historyLimitTextField.placeholderString = "preferences_history_limit_placeholder".l7n |
46 | 50 | |
47 | 50 | self.historyLimitTextField.formatter = HistoryLimitNumberFormatter() |
48 | 50 | |
49 | 50 | self.historyLimitTextField.stringValue = String(historyLimit) |
50 | 50 | |
51 | 50 | self.historyLimitTextField.rx.controlEvent |
52 | 50 | .map { Int(self.historyLimitTextField.stringValue) ?? 0 } |
53 | 50 | .subscribe(onNext: setHistoryLimitWithConfirmation) $s15CutBoxUnitTests23PreferencesAdvancedViewC26setupHistoryLimitTextFieldyyFySicACcfu_ Line | Count | Source | 53 | 50 | .subscribe(onNext: setHistoryLimitWithConfirmation) |
Unexecuted instantiation: $s15CutBoxUnitTests23PreferencesAdvancedViewC26setupHistoryLimitTextFieldyyFySicACcfu_ySicfu0_ |
54 | 50 | .disposed(by: disposeBag) |
55 | 50 | } |
56 | | |
57 | 2 | func setHistoryLimitWithConfirmation(_ limit: Int) { |
58 | 2 | let currentLimit = self.prefs.historyLimit |
59 | 2 | |
60 | 2 | if limitChangeIsDestructive(limit: limit, currentLimit: currentLimit) { |
61 | 2 | if dialogFactory.suppressibleConfirmationDialog( |
62 | 2 | messageText: "confirm_warning_clear_history_title".l7n, |
63 | 2 | informativeText: "confirm_warning_clear_history".l7n, |
64 | 2 | dialogName: .destructiveLimitChangeWarning) { |
65 | 1 | self.prefs.historyLimit = limit |
66 | 2 | } else { |
67 | 1 | self.historyLimitTextField?.stringValue = String(currentLimit) |
68 | 2 | } |
69 | 2 | } |
70 | 2 | } |
71 | | |
72 | 6 | func limitChangeIsDestructive(limit: Int, currentLimit: Int) -> Bool { |
73 | 6 | return (limit > 0 && currentLimit == 0) || |
74 | 6 | (limit > 0 && currentLimit > limit) |
75 | 6 | } |
76 | | } |