Skip to content

Commit

Permalink
UI: Add UI for bed settings screen
Browse files Browse the repository at this point in the history
  • Loading branch information
josefdolezal committed May 7, 2017
1 parent ebc9adf commit c2b0f73
Show file tree
Hide file tree
Showing 4 changed files with 84 additions and 2 deletions.
12 changes: 12 additions & 0 deletions OctoPhone/Generated/Localizable.Generated.swift
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@ enum L10n {
case anErrorOccuredWhileTryingToPrintFile
/// Axis
case axis
/// Bed settings
case bedSettings
/// Bed temperature
case bedTemperature
/// Bed temperature offset
Expand Down Expand Up @@ -183,6 +185,8 @@ enum L10n {
case nozzleDiameter
/// Number of extruders
case numberOfExtruders
/// Offset temperature
case offsetTemperature
/// Ok
case ok
/// Orange
Expand Down Expand Up @@ -291,6 +295,8 @@ enum L10n {
case storedLogsCouldNotBeLoaded
/// Stored printers could not be loaded.
case storedPrintersCouldNotBeLoaded
/// Target temeprature
case targetTemperature
/// Terminal
case terminal
/// Unknown
Expand Down Expand Up @@ -337,6 +343,8 @@ extension L10n: CustomStringConvertible {
return L10n.tr(key: "An error occured while trying to print file")
case .axis:
return L10n.tr(key: "Axis")
case .bedSettings:
return L10n.tr(key: "Bed settings")
case .bedTemperature:
return L10n.tr(key: "Bed temperature")
case .bedTemperatureOffset:
Expand Down Expand Up @@ -503,6 +511,8 @@ extension L10n: CustomStringConvertible {
return L10n.tr(key: "Nozzle diameter")
case .numberOfExtruders:
return L10n.tr(key: "Number of extruders")
case .offsetTemperature:
return L10n.tr(key: "Offset temperature")
case .ok:
return L10n.tr(key: "Ok")
case .orange:
Expand Down Expand Up @@ -611,6 +621,8 @@ extension L10n: CustomStringConvertible {
return L10n.tr(key: "Stored logs could not be loaded")
case .storedPrintersCouldNotBeLoaded:
return L10n.tr(key: "Stored printers could not be loaded")
case .targetTemperature:
return L10n.tr(key: "Target temperature")
case .terminal:
return L10n.tr(key: "Terminal")
case .unknown:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,13 +20,26 @@ protocol BedSettingsViewControllerDelegate: class {
class BedSettingsViewController: BaseViewController {
// MARK: - Properties

/// Screen closing buttons
private lazy var doneButton: UIBarButtonItem = {
let button = UIBarButtonItem(barButtonSystemItem: .done, target: self,
action: #selector(doneButtonTapped))

return button
}()

/// Label for target temperature
private let targetTempLabel = BedSettingsViewController.inputLabel(text: tr(.targetTemperature))

/// Label for offset temperature
private let offsetTempLabel = BedSettingsViewController.inputLabel(text: tr(.offsetTemperature))

/// Input for bed target temperature
private let tagetTempField = BedSettingsViewController.inputField(placeholder: tr(.targetTemperature))

/// Input for bed offset temperature
private let offsetTempField = BedSettingsViewController.inputField(placeholder: tr(.offsetTemperature))

/// Controller logic
fileprivate var viewModel: BedSettingsViewModelType!

Expand All @@ -41,22 +54,68 @@ class BedSettingsViewController: BaseViewController {

// MARK: - Controller lifecycle

override func loadView() {
super.loadView()

let stackView = UIStackView(arrangedSubviews: [targetTempLabel, tagetTempField,
offsetTempLabel, offsetTempField],
axis: .vertical)

view.addSubview(stackView)

stackView.snp.makeConstraints { make in
make.leading.trailing.top.equalToSuperview().inset(15)
make.width.equalToSuperview()
}
}

override func viewDidLoad() {
super.viewDidLoad()

navigationItem.rightBarButtonItem = doneButton
edgesForExtendedLayout = []
}

// MARK: - Internal logic

/// Binds outputs of View Model to UI and converts
/// user interaction to View Model inputs
private func bindViewModel() {

title = viewModel.outputs.title.value
}

/// UI Callback for done button tap
func doneButtonTapped() {
viewModel.inputs.doneButtonTapped()
}

/// Preconfigured label for text input
///
/// - Parameter text: Text of label
/// - Returns: New prconfigure instance of label
private static func inputLabel(text: String) -> UILabel {
let label = UILabel()

label.setContentHuggingPriority(UILayoutPriorityRequired, for: .vertical)
label.font = .preferredFont(forTextStyle: .caption1)
label.text = text

return label
}

/// Preconfigured text input
///
/// - Parameter placeholder: Placeholder text for input
/// - Returns: New preconfigured instance of text input
private static func inputField(placeholder: String) -> UITextField {
let input = UITextField()

input.snp.makeConstraints { make in
make.height.equalTo(44)
}

input.placeholder = placeholder

return input
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,8 @@ protocol BedSettingsViewModelInputs {

/// Outputs of bed settings logic
protocol BedSettingsViewModelOutputs {

/// Screen title
var title: Property<String> { get }
}

// MARK: - Common public interface
Expand All @@ -47,6 +48,8 @@ final class BedSettingsViewModel: BedSettingsViewModelType, BedSettingsViewModel

// MARK: Outputs

let title = Property<String>(value: tr(.bedSettings))

// MARK: Private properties

/// Bed settings flow delegate
Expand Down
8 changes: 8 additions & 0 deletions en.lproj/Localizable.strings
Original file line number Diff line number Diff line change
Expand Up @@ -248,3 +248,11 @@
"Selected port could not be connected" = "Selected port could not be connected.";
"Do you want to cancel print job" = "Do you really want to cancel current job? This action cannot be undone.";
"Cancel print job" = "Cancel print job";


// *
// * Bed settings
// *
"Bed settings" = "Bed settings";
"Target temperature" = "Target temeprature";
"Offset temperature" = "Offset temperature";

0 comments on commit c2b0f73

Please sign in to comment.