Skip to content

Commit 2b0eccc

Browse files
committed
Channel stepper
1 parent 55f6dbb commit 2b0eccc

File tree

5 files changed

+39
-8
lines changed

5 files changed

+39
-8
lines changed

.gitignore

+2
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,4 @@
11
*/xcuserdata/*
22
DerivedData
3+
Installer/MidiControl-Installer.dmg
4+
Installer/appcast.xml

MidiControl.xcodeproj/project.pbxproj

+4
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
F9B052632B584C2E006F1A33 /* GenericMidiListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F9B052622B584C2D006F1A33 /* GenericMidiListView.swift */; };
2727
F9B052652B5858E4006F1A33 /* TabsMidiListsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F9B052642B5858E3006F1A33 /* TabsMidiListsView.swift */; };
2828
F9D482802B6A8A0A00470467 /* ExpandViewer.swift in Sources */ = {isa = PBXBuildFile; fileRef = F9D4827F2B6A8A0A00470467 /* ExpandViewer.swift */; };
29+
F9D482822B6AB95E00470467 /* ChannelStepper.swift in Sources */ = {isa = PBXBuildFile; fileRef = F9D482812B6AB95D00470467 /* ChannelStepper.swift */; };
2930
F9D6B0582B374A260063F634 /* MidiControlApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = F9D6B0572B374A260063F634 /* MidiControlApp.swift */; };
3031
F9D6B05A2B374A260063F634 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F9D6B0592B374A260063F634 /* ContentView.swift */; };
3132
F9D6B05C2B374A270063F634 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = F9D6B05B2B374A270063F634 /* Assets.xcassets */; };
@@ -79,6 +80,7 @@
7980
F9B052622B584C2D006F1A33 /* GenericMidiListView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GenericMidiListView.swift; sourceTree = "<group>"; };
8081
F9B052642B5858E3006F1A33 /* TabsMidiListsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TabsMidiListsView.swift; sourceTree = "<group>"; };
8182
F9D4827F2B6A8A0A00470467 /* ExpandViewer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExpandViewer.swift; sourceTree = "<group>"; };
83+
F9D482812B6AB95D00470467 /* ChannelStepper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChannelStepper.swift; sourceTree = "<group>"; };
8284
F9D6B0542B374A260063F634 /* MidiControl.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = MidiControl.app; sourceTree = BUILT_PRODUCTS_DIR; };
8385
F9D6B0572B374A260063F634 /* MidiControlApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MidiControlApp.swift; sourceTree = "<group>"; };
8486
F9D6B0592B374A260063F634 /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = "<group>"; };
@@ -133,6 +135,7 @@
133135
children = (
134136
F90E373D2B51BFA100331483 /* MidiMessageView.swift */,
135137
F90E37402B52CC9800331483 /* TextFieldUInt8.swift */,
138+
F9D482812B6AB95D00470467 /* ChannelStepper.swift */,
136139
);
137140
path = MidiMessages;
138141
sourceTree = "<group>";
@@ -450,6 +453,7 @@
450453
F924A6B52B4DE9E0004E9129 /* MidiMessage.swift in Sources */,
451454
F90E373C2B4DF95D00331483 /* Utils.swift in Sources */,
452455
F9E4FF8D2B49B35400BA18C3 /* MidiAdapter.mm in Sources */,
456+
F9D482822B6AB95E00470467 /* ChannelStepper.swift in Sources */,
453457
F90E373E2B51BFA100331483 /* MidiMessageView.swift in Sources */,
454458
F90E37412B52CC9800331483 /* TextFieldUInt8.swift in Sources */,
455459
F97FD9F72B40B7B50032DFD0 /* MidiSourcesManager.swift in Sources */,

MidiControl/Views/KeyStroke/KeyStrokeView.swift

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ struct ToggleButton: View {
1515
var body: some View {
1616
Button(action: { value.toggle() }) {
1717
Image(systemName: iconName)
18-
.foregroundColor(value ? Color.black : Color.blue)
18+
.foregroundColor(value ? Color.blue : Color.black)
1919
}
2020
}
2121
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
//
2+
// ChannelStepper.swift
3+
// MidiControl
4+
//
5+
// Created by Sviatoslav Romankiv on 31.01.2024.
6+
//
7+
8+
import SwiftUI
9+
10+
struct ChannelStepper: View {
11+
@Binding var value: Int16
12+
13+
var body: some View {
14+
VStack {
15+
Stepper(value: $value, in: 1...16, step: 1) {
16+
Text("\(value)")
17+
}.fixedSize()
18+
Text("Channel")
19+
}.padding()
20+
}
21+
}
22+
23+
#Preview {
24+
ChannelStepper(value: .constant(10))
25+
}

MidiControl/Views/MidiMessages/MidiMessageView.swift

+7-7
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ struct MidiNoteOnView: View {
4242
var body: some View {
4343
HStack {
4444
Text("Note On").fontWeight(.bold)
45-
TextFieldUInt8(value: $model.channel, name: "Channel", emptyText: "Enter channel number")
45+
ChannelStepper(value: $model.channel)
4646
TextFieldUInt8(value: $model.note, name: "Note", emptyText: "Enter note number")
4747
TextFieldUInt8(value: $model.velocity, name: "Velocity", emptyText: "Enter velocity value")
4848
}
@@ -60,7 +60,7 @@ struct MidiNoteOffView: View {
6060
var body: some View {
6161
HStack {
6262
Text("Note Off").fontWeight(.bold)
63-
TextFieldUInt8(value: $model.channel, name: "Channel", emptyText: "Enter channel number")
63+
ChannelStepper(value: $model.channel)
6464
TextFieldUInt8(value: $model.note, name: "Note", emptyText: "Enter note number")
6565
TextFieldUInt8(value: $model.velocity, name: "Velocity", emptyText: "Enter velocity value")
6666
}
@@ -78,7 +78,7 @@ struct MidiControlChangeView: View {
7878
var body: some View {
7979
HStack {
8080
Text("Control Change").fontWeight(.bold)
81-
TextFieldUInt8(value: $model.channel, name: "Channel", emptyText: "Enter channel number")
81+
ChannelStepper(value: $model.channel)
8282
TextFieldUInt8(value: $model.index, name: "Index", emptyText: "Enter index")
8383
TextFieldUInt8(value: $model.data, name: "Data", emptyText: "Enter data value")
8484
}
@@ -96,7 +96,7 @@ struct MidiProgramChangeView: View {
9696
var body: some View {
9797
HStack {
9898
Text("Program Change").fontWeight(.bold)
99-
TextFieldUInt8(value: $model.channel, name: "Channel", emptyText: "Enter channel number")
99+
ChannelStepper(value: $model.channel)
100100
TextFieldUInt8(value: $model.program, name: "Program", emptyText: "Enter program value")
101101
}
102102
.onChange(of: [model.channel, model.program]) { _ in
@@ -113,7 +113,7 @@ struct MidiChannelPressureView: View {
113113
var body: some View {
114114
HStack {
115115
Text("Channel Pressure").fontWeight(.bold)
116-
TextFieldUInt8(value: $model.channel, name: "Channel", emptyText: "Enter channel number")
116+
ChannelStepper(value: $model.channel)
117117
TextFieldUInt8(value: $model.data, name: "Data", emptyText: "Enter data value")
118118
}
119119
.onChange(of: [model.channel, model.data]) { _ in
@@ -130,7 +130,7 @@ struct MidiPolyPressureView: View {
130130
var body: some View {
131131
HStack {
132132
Text("Channel Pressure").fontWeight(.bold)
133-
TextFieldUInt8(value: $model.channel, name: "Channel", emptyText: "Enter channel number")
133+
ChannelStepper(value: $model.channel)
134134
TextFieldUInt8(value: $model.note, name: "Note", emptyText: "Enter note number")
135135
TextFieldUInt8(value: $model.data, name: "Data", emptyText: "Enter data value")
136136
}
@@ -148,7 +148,7 @@ struct MidiPitchBendView: View {
148148
var body: some View {
149149
HStack {
150150
Text("Channel Pressure").fontWeight(.bold)
151-
TextFieldUInt8(value: $model.channel, name: "Channel", emptyText: "Enter channel number")
151+
ChannelStepper(value: $model.channel)
152152
TextFieldUInt16(value: $model.data, name: "Data", emptyText: "Enter data value")
153153
}
154154
.onChange(of: model.channel) { _ in

0 commit comments

Comments
 (0)