diff --git a/ui/controller/visualizations.go b/ui/controller/visualizations.go index 988861c..b63cdf6 100644 --- a/ui/controller/visualizations.go +++ b/ui/controller/visualizations.go @@ -7,6 +7,7 @@ import ( "fyne.io/fyne/v2" "fyne.io/fyne/v2/lang" "github.com/dweymouth/supersonic/backend/player" + "github.com/dweymouth/supersonic/ui/shortcuts" "github.com/dweymouth/supersonic/ui/util" "github.com/dweymouth/supersonic/ui/visualizations" ) @@ -35,7 +36,8 @@ func (c *Controller) ShowPeakMeter() { return } c.peakMeterWin = fyne.CurrentApp().NewWindow(lang.L("Peak Meter")) - c.peakMeterWin.SetCloseIntercept(func() { + + onClose := func() { c.stopVisualizationAnim() c.peakMeter = nil util.SaveWindowSize(c.peakMeterWin, @@ -43,6 +45,11 @@ func (c *Controller) ShowPeakMeter() { &c.App.Config.PeakMeter.WindowHeight) c.peakMeterWin.Close() c.peakMeterWin = nil + } + + c.peakMeterWin.SetCloseIntercept(onClose) + c.peakMeterWin.Canvas().AddShortcut(&shortcuts.ShortcutCloseWindow, func(_ fyne.Shortcut) { + onClose() }) if c.App.Config.PeakMeter.WindowHeight > 0 { c.peakMeterWin.Resize(fyne.NewSize( diff --git a/ui/mainwindow.go b/ui/mainwindow.go index fcfa1e3..2d17e44 100644 --- a/ui/mainwindow.go +++ b/ui/mainwindow.go @@ -13,7 +13,7 @@ import ( "github.com/dweymouth/supersonic/ui/browsing" "github.com/dweymouth/supersonic/ui/controller" "github.com/dweymouth/supersonic/ui/dialogs" - "github.com/dweymouth/supersonic/ui/os" + "github.com/dweymouth/supersonic/ui/shortcuts" "github.com/dweymouth/supersonic/ui/theme" "github.com/dweymouth/supersonic/ui/util" @@ -25,25 +25,6 @@ import ( "fyne.io/fyne/v2/widget" ) -var ( - ShortcutReload = desktop.CustomShortcut{KeyName: fyne.KeyR, Modifier: os.ControlModifier} - ShortcutSearch = desktop.CustomShortcut{KeyName: fyne.KeyF, Modifier: os.ControlModifier} - ShortcutQuickSearch = desktop.CustomShortcut{KeyName: fyne.KeyG, Modifier: os.ControlModifier} - ShortcutCloseWindow = desktop.CustomShortcut{KeyName: fyne.KeyW, Modifier: os.ControlModifier} - - ShortcutNavOne = desktop.CustomShortcut{KeyName: fyne.Key1, Modifier: os.ControlModifier} - ShortcutNavTwo = desktop.CustomShortcut{KeyName: fyne.Key2, Modifier: os.ControlModifier} - ShortcutNavThree = desktop.CustomShortcut{KeyName: fyne.Key3, Modifier: os.ControlModifier} - ShortcutNavFour = desktop.CustomShortcut{KeyName: fyne.Key4, Modifier: os.ControlModifier} - ShortcutNavFive = desktop.CustomShortcut{KeyName: fyne.Key5, Modifier: os.ControlModifier} - ShortcutNavSix = desktop.CustomShortcut{KeyName: fyne.Key6, Modifier: os.ControlModifier} - ShortcutNavSeven = desktop.CustomShortcut{KeyName: fyne.Key7, Modifier: os.ControlModifier} - ShortcutNavEight = desktop.CustomShortcut{KeyName: fyne.Key8, Modifier: os.ControlModifier} - - NavShortcuts = []desktop.CustomShortcut{ShortcutNavOne, ShortcutNavTwo, ShortcutNavThree, - ShortcutNavFour, ShortcutNavFive, ShortcutNavSix, ShortcutNavSeven, ShortcutNavEight} -) - type MainWindow struct { Window fyne.Window @@ -328,31 +309,31 @@ func (m *MainWindow) addNavigationButtons() { } func (m *MainWindow) addShortcuts() { - for _, sh := range os.BackShortcuts { + for _, sh := range shortcuts.BackShortcuts { m.Canvas().AddShortcut(&sh, func(_ fyne.Shortcut) { m.BrowsingPane.GoBack() }) } - for _, sh := range os.ForwardShortcuts { + for _, sh := range shortcuts.ForwardShortcuts { m.Canvas().AddShortcut(&sh, func(_ fyne.Shortcut) { m.BrowsingPane.GoForward() }) } - if os.SettingsShortcut != nil { - m.Canvas().AddShortcut(os.SettingsShortcut, func(_ fyne.Shortcut) { + if shortcuts.SettingsShortcut != nil { + m.Canvas().AddShortcut(shortcuts.SettingsShortcut, func(_ fyne.Shortcut) { m.showSettingsDialog() }) } - if os.QuitShortcut != nil { - m.Canvas().AddShortcut(os.QuitShortcut, func(_ fyne.Shortcut) { + if shortcuts.QuitShortcut != nil { + m.Canvas().AddShortcut(shortcuts.QuitShortcut, func(_ fyne.Shortcut) { m.Quit() }) } - m.Canvas().AddShortcut(&ShortcutReload, func(_ fyne.Shortcut) { + m.Canvas().AddShortcut(&shortcuts.ShortcutReload, func(_ fyne.Shortcut) { m.BrowsingPane.Reload() }) - m.Canvas().AddShortcut(&ShortcutSearch, func(_ fyne.Shortcut) { + m.Canvas().AddShortcut(&shortcuts.ShortcutSearch, func(_ fyne.Shortcut) { if m.Controller.HaveModal() { // Do not focus search widget behind modal dialog return @@ -361,7 +342,7 @@ func (m *MainWindow) addShortcuts() { m.Window.Canvas().Focus(s) } }) - m.Canvas().AddShortcut(&ShortcutQuickSearch, func(_ fyne.Shortcut) { + m.Canvas().AddShortcut(&shortcuts.ShortcutQuickSearch, func(_ fyne.Shortcut) { if !m.Controller.HaveModal() { m.Controller.ShowQuickSearch() } @@ -369,13 +350,13 @@ func (m *MainWindow) addShortcuts() { m.Canvas().AddShortcut(&fyne.ShortcutSelectAll{}, func(_ fyne.Shortcut) { m.BrowsingPane.SelectAll() }) - m.Canvas().AddShortcut(&ShortcutCloseWindow, func(_ fyne.Shortcut) { + m.Canvas().AddShortcut(&shortcuts.ShortcutCloseWindow, func(_ fyne.Shortcut) { if m.App.Config.Application.CloseToSystemTray && m.HaveSystemTray() { m.Window.Hide() } }) - for i, ns := range NavShortcuts { + for i, ns := range shortcuts.NavShortcuts { m.Canvas().AddShortcut(&ns, func(i int) func(fyne.Shortcut) { return func(fyne.Shortcut) { m.BrowsingPane.ActivateNavigationButton(i) diff --git a/ui/shortcuts/shortcuts.go b/ui/shortcuts/shortcuts.go new file mode 100644 index 0000000..96a1dcb --- /dev/null +++ b/ui/shortcuts/shortcuts.go @@ -0,0 +1,25 @@ +package shortcuts + +import ( + "fyne.io/fyne/v2" + "fyne.io/fyne/v2/driver/desktop" +) + +var ( + ShortcutReload = desktop.CustomShortcut{KeyName: fyne.KeyR, Modifier: fyne.KeyModifierShortcutDefault} + ShortcutSearch = desktop.CustomShortcut{KeyName: fyne.KeyF, Modifier: fyne.KeyModifierShortcutDefault} + ShortcutQuickSearch = desktop.CustomShortcut{KeyName: fyne.KeyG, Modifier: fyne.KeyModifierShortcutDefault} + ShortcutCloseWindow = desktop.CustomShortcut{KeyName: fyne.KeyW, Modifier: fyne.KeyModifierShortcutDefault} + + ShortcutNavOne = desktop.CustomShortcut{KeyName: fyne.Key1, Modifier: fyne.KeyModifierShortcutDefault} + ShortcutNavTwo = desktop.CustomShortcut{KeyName: fyne.Key2, Modifier: fyne.KeyModifierShortcutDefault} + ShortcutNavThree = desktop.CustomShortcut{KeyName: fyne.Key3, Modifier: fyne.KeyModifierShortcutDefault} + ShortcutNavFour = desktop.CustomShortcut{KeyName: fyne.Key4, Modifier: fyne.KeyModifierShortcutDefault} + ShortcutNavFive = desktop.CustomShortcut{KeyName: fyne.Key5, Modifier: fyne.KeyModifierShortcutDefault} + ShortcutNavSix = desktop.CustomShortcut{KeyName: fyne.Key6, Modifier: fyne.KeyModifierShortcutDefault} + ShortcutNavSeven = desktop.CustomShortcut{KeyName: fyne.Key7, Modifier: fyne.KeyModifierShortcutDefault} + ShortcutNavEight = desktop.CustomShortcut{KeyName: fyne.Key8, Modifier: fyne.KeyModifierShortcutDefault} + + NavShortcuts = []desktop.CustomShortcut{ShortcutNavOne, ShortcutNavTwo, ShortcutNavThree, + ShortcutNavFour, ShortcutNavFive, ShortcutNavSix, ShortcutNavSeven, ShortcutNavEight} +) diff --git a/ui/os/shortcuts_darwin.go b/ui/shortcuts/shortcuts_darwin.go similarity index 97% rename from ui/os/shortcuts_darwin.go rename to ui/shortcuts/shortcuts_darwin.go index 7dd3c20..77bdc67 100644 --- a/ui/os/shortcuts_darwin.go +++ b/ui/shortcuts/shortcuts_darwin.go @@ -1,6 +1,6 @@ //go:build darwin -package os +package shortcuts import ( "fyne.io/fyne/v2" diff --git a/ui/os/shortcuts_default.go b/ui/shortcuts/shortcuts_default.go similarity index 97% rename from ui/os/shortcuts_default.go rename to ui/shortcuts/shortcuts_default.go index 30a29d1..ba609a6 100644 --- a/ui/os/shortcuts_default.go +++ b/ui/shortcuts/shortcuts_default.go @@ -1,6 +1,6 @@ //go:build !darwin -package os +package shortcuts import ( "fyne.io/fyne/v2" diff --git a/ui/widgets/playqueuelist.go b/ui/widgets/playqueuelist.go index f369127..75400f5 100644 --- a/ui/widgets/playqueuelist.go +++ b/ui/widgets/playqueuelist.go @@ -19,7 +19,6 @@ import ( "github.com/dweymouth/supersonic/backend/mediaprovider" "github.com/dweymouth/supersonic/sharedutil" "github.com/dweymouth/supersonic/ui/layouts" - "github.com/dweymouth/supersonic/ui/os" myTheme "github.com/dweymouth/supersonic/ui/theme" "github.com/dweymouth/supersonic/ui/util" ) @@ -214,7 +213,7 @@ func (p *PlayQueueList) onPlayTrackAt(idx int) { func (p *PlayQueueList) onSelectTrack(idx int) { if d, ok := fyne.CurrentApp().Driver().(desktop.Driver); ok { mod := d.CurrentKeyModifiers() - if mod&os.ControlModifier != 0 { + if mod&fyne.KeyModifierShortcutDefault != 0 { p.selectAddOrRemove(idx) } else if mod&fyne.KeyModifierShift != 0 { p.selectRange(idx) diff --git a/ui/widgets/tracklist.go b/ui/widgets/tracklist.go index 3eada8e..3ed39ae 100644 --- a/ui/widgets/tracklist.go +++ b/ui/widgets/tracklist.go @@ -13,7 +13,6 @@ import ( "github.com/dweymouth/supersonic/backend/mediaprovider" "github.com/dweymouth/supersonic/sharedutil" "github.com/dweymouth/supersonic/ui/layouts" - "github.com/dweymouth/supersonic/ui/os" myTheme "github.com/dweymouth/supersonic/ui/theme" "github.com/dweymouth/supersonic/ui/util" @@ -489,7 +488,7 @@ func (t *Tracklist) onPlayTrackAt(idx int) { func (t *Tracklist) onSelectTrack(idx int) { if d, ok := fyne.CurrentApp().Driver().(desktop.Driver); ok { mod := d.CurrentKeyModifiers() - if mod&os.ControlModifier != 0 { + if mod&fyne.KeyModifierShortcutDefault != 0 { t.selectAddOrRemove(idx) } else if mod&fyne.KeyModifierShift != 0 { t.selectRange(idx)