add Ctrl/Cmd+W shortcut to close Peak Meter window

This commit is contained in:
Drew Weymouth
2024-07-28 15:31:55 -07:00
parent 48c9cda18c
commit 45ac279693
7 changed files with 49 additions and 38 deletions
+8 -1
View File
@@ -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(
+12 -31
View File
@@ -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)
+25
View File
@@ -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}
)
@@ -1,6 +1,6 @@
//go:build darwin
package os
package shortcuts
import (
"fyne.io/fyne/v2"
@@ -1,6 +1,6 @@
//go:build !darwin
package os
package shortcuts
import (
"fyne.io/fyne/v2"
+1 -2
View File
@@ -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)
+1 -2
View File
@@ -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)