makepad/apps/amp/resources/layouts/mini.splash
Admin ec2bb0f985 apps: Camera, splash-live, Translator, Amp, Code, Route offline
New Camera app whose shots show up in Photos, and the splash_live example
(streamed live coding of Splash UI and shaders). Translator: speech and
photos run where the models run (hub or on-device), microphone opened only
on record. Amp: cubic volume, meters after volume, visualizer on the phone,
output open only while playing. Code: run errors marked in the editor,
start_app/list_apps through the WM. Route works offline from its cache.
apps/video plays through the platform's player.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-14 07:24:22 +02:00

119 lines
4.1 KiB
Text

// title: Mini
// class: small
// order: 30
// min: 260x180
// pref: 400x560
//
// A classic desktop player, stacked in bands: the main window (the time
// over a small spectrum; the title scrolling, the volume and the EQ / PL
// keys; the seek line; the keys), the visualizer band when VIS is on,
// then, as the window grows taller, the playlist band (a chooser and search over one numbered list), and
// from taller still the equalizer band between them. The bands are fixed
// except the playlist's, which takes what is left; each has a title strip
// whose key folds it.
use mod.prelude.widgets_internal.*
use mod.widgets.*
let Strip = View{
width: Fill
height: 18
flow: Right
spacing: 6
align: Align{y: 0.5}
padding: Inset{left: 6 right: 2 top: 2}
}
mod.widgets.HwLayout = View{
width: Fill
height: Fill
flow: Down
spacing: 4
// The main window.
main_band := View{
width: Fill
height: 156
flow: Down
spacing: 4
View{
width: Fill
height: 94
flow: Right
// 94: the volume slot under the title and info is 44 pt, a finger's target.
spacing: 6
View{
width: 116
height: Fill
flow: Down
spacing: 3
mod.widgets.HwSlot{component: "clock" width: Fill height: 44}
mod.widgets.HwSlot{component: "spectrum" width: Fill height: Fill}
}
View{
width: Fill
height: Fill
flow: Down
spacing: 4
mod.widgets.HwSlot{component: "marquee" width: Fill height: 24}
mod.widgets.HwSlot{component: "info" width: Fill height: 18}
View{
width: Fill
height: Fill
flow: Right
spacing: 6
mod.widgets.HwSlot{component: "volume" width: Fill height: Fill}
mod.widgets.HwSlot{component: "toggles" width: 118 height: Fill}
}
}
}
mod.widgets.HwSlot{component: "progress" width: Fill height: 14}
mod.widgets.HwSlot{component: "transport" width: Fill height: 36}
}
// The visualizer band (the VIS key): the picture, sharing the room
// under the main window with the playlist. A tap on the picture shows
// it alone (the other bands and its title strip fold away), a sideways
// swipe changes the preset.
vis_band := View{
visible: false
width: Fill
height: Fill
flow: Down
vis_strip := Strip{
mod.widgets.HwCaption{text: "VISUALIZER"}
View{width: Fill height: 1}
vis_fold := mod.widgets.HwCaptionButton{text: "\u{f077}" height: 16 padding: Inset{left: 6 right: 6} draw_text +: {text_style: theme.font_icons{font_size: 7.0}}}
}
mod.widgets.HwSlot{component: "screen" width: Fill height: Fill}
}
// The equalizer band (fixed).
eq_band := View{
width: Fill
height: 158
flow: Down
Strip{
mod.widgets.HwCaption{text: "EQUALIZER"}
View{width: Fill height: 1}
eq_fold := mod.widgets.HwCaptionButton{text: "\u{f077}" height: 16 padding: Inset{left: 6 right: 6} draw_text +: {text_style: theme.font_icons{font_size: 7.0}}}
}
mod.widgets.HwSlot{component: "eq:open" width: Fill height: Fill}
}
// The playlist band (takes the rest).
pl_band := View{
width: Fill
height: Fill
flow: Down
spacing: 4
Strip{
mod.widgets.HwCaption{text: "PLAYLIST"}
View{width: Fill height: 1}
pl_fold := mod.widgets.HwCaptionButton{text: "\u{f077}" height: 16 padding: Inset{left: 6 right: 6} draw_text +: {text_style: theme.font_icons{font_size: 7.0}}}
}
mod.widgets.HwSlot{component: "plhead" width: Fill height: 28}
View{
width: Fill
height: Fill
flow: Overlay
mod.widgets.HwSlot{component: "plist" width: Fill height: Fill}
}
}
}
true