removed unwanted bar now with waveforms, major updates and enhancements
This commit is contained in:
@@ -152,22 +152,22 @@ struct DJQueuePane: View {
|
||||
VStack(alignment:.leading,spacing:8) {
|
||||
HStack { Label("DJ Queue",systemImage:"text.line.first.and.arrowtriangle.forward").font(.headline);Spacer();Text("\(automix.entries.count)").foregroundStyle(.secondary) }
|
||||
HStack {
|
||||
Button(automix.enabled ? "Stop Automix" : "Start Automix") { if automix.enabled { automix.stop() } else { automix.start() } }.tint(automix.enabled ? .green : .accentColor)
|
||||
Button("Mix Now") { automix.mixNow() }.disabled(!automix.enabled || automix.entries.isEmpty || automix.progress != nil)
|
||||
Button(automix.enabled ? "Stop Automix" : "Start Automix") { if automix.enabled { automix.stop() } else { automix.start() } }.tint(automix.enabled ? .green : .accentColor).help("Start or stop automatic transitions through the queued tracks")
|
||||
Button("Mix Now") { automix.mixNow() }.disabled(!automix.enabled || automix.entries.isEmpty || automix.progress != nil).help("Transition immediately to the next queued track using the selected fade duration")
|
||||
}.controlSize(.small)
|
||||
HStack {
|
||||
Text("Fade");Slider(value:$automix.seconds,in:0...30,step:1);Text("\(Int(automix.seconds)) s").monospacedDigit().frame(width:34)
|
||||
Text("Fade");Slider(value:$automix.seconds,in:0...30,step:1).help("Duration in seconds for each automatic crossfade");Text("\(Int(automix.seconds)) s").monospacedDigit().frame(width:34)
|
||||
}.font(.caption)
|
||||
Toggle("Match BPM when available",isOn:$automix.matchTempo).font(.caption)
|
||||
Toggle("Match BPM when available",isOn:$automix.matchTempo).font(.caption).help("Match confirmed track tempos before the automatic transition")
|
||||
if let progress = automix.progress { ProgressView(value:progress) }
|
||||
List {
|
||||
ForEach(automix.entries) { entry in
|
||||
HStack(spacing:5) {
|
||||
VStack(alignment:.leading,spacing:2) { Text(entry.title).lineLimit(1);Text(entry.artist).font(.caption2).foregroundStyle(.secondary).lineLimit(1) }
|
||||
Spacer(minLength:0)
|
||||
Button { automix.move(entry.id,by:-1) } label: { Image(systemName:"chevron.up") }.accessibilityLabel("Move earlier")
|
||||
Button { automix.move(entry.id,by:1) } label: { Image(systemName:"chevron.down") }.accessibilityLabel("Move later")
|
||||
Button { automix.remove(entry.id) } label: { Image(systemName:"xmark") }.accessibilityLabel("Remove from queue")
|
||||
Button { automix.move(entry.id,by:-1) } label: { Image(systemName:"chevron.up") }.accessibilityLabel("Move earlier").help("Move this queued track one place earlier")
|
||||
Button { automix.move(entry.id,by:1) } label: { Image(systemName:"chevron.down") }.accessibilityLabel("Move later").help("Move this queued track one place later")
|
||||
Button { automix.remove(entry.id) } label: { Image(systemName:"xmark") }.accessibilityLabel("Remove from queue").help("Remove this track from the queue without deleting it from the library")
|
||||
}.font(.caption).buttonStyle(.borderless)
|
||||
}
|
||||
if automix.entries.isEmpty { Text("Add songs with + or drag them here from the DJ library.").font(.caption).foregroundStyle(.secondary) }
|
||||
@@ -183,7 +183,7 @@ struct DJQueuePane: View {
|
||||
}
|
||||
return true
|
||||
}
|
||||
HStack { Button("Shuffle") { automix.shuffle() };Button("Clear") { automix.clear() };Spacer() }.controlSize(.mini).disabled(automix.entries.isEmpty)
|
||||
HStack { Button("Shuffle") { automix.shuffle() }.help("Randomise the order of the remaining queued tracks");Button("Clear") { automix.clear() }.help("Remove all queued entries; library tracks are kept");Spacer() }.controlSize(.mini).disabled(automix.entries.isEmpty)
|
||||
Text(automix.message).font(.caption2).foregroundStyle(.secondary).lineLimit(2)
|
||||
}.padding(12).background(Color.white.opacity(0.035),in:RoundedRectangle(cornerRadius:6))
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user