add keyboard shortcuts for back, forward, and play-pause
This commit is contained in:
@@ -1,6 +1,7 @@
|
|||||||
package ui
|
package ui
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"runtime"
|
||||||
"supersonic/backend"
|
"supersonic/backend"
|
||||||
"supersonic/res"
|
"supersonic/res"
|
||||||
"supersonic/ui/browsing"
|
"supersonic/ui/browsing"
|
||||||
@@ -8,13 +9,22 @@ import (
|
|||||||
|
|
||||||
"fyne.io/fyne/v2"
|
"fyne.io/fyne/v2"
|
||||||
"fyne.io/fyne/v2/container"
|
"fyne.io/fyne/v2/container"
|
||||||
|
"fyne.io/fyne/v2/driver/desktop"
|
||||||
"fyne.io/fyne/v2/widget"
|
"fyne.io/fyne/v2/widget"
|
||||||
"github.com/dweymouth/go-subsonic"
|
"github.com/dweymouth/go-subsonic"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
ShortcutBack = desktop.CustomShortcut{KeyName: fyne.KeyLeft, Modifier: fyne.KeyModifierAlt}
|
||||||
|
ShortcutBackDarwin = desktop.CustomShortcut{KeyName: fyne.KeyLeft, Modifier: fyne.KeyModifierSuper}
|
||||||
|
ShortcutForward = desktop.CustomShortcut{KeyName: fyne.KeyRight, Modifier: fyne.KeyModifierAlt}
|
||||||
|
ShortcutForwardDarwin = desktop.CustomShortcut{KeyName: fyne.KeyRight, Modifier: fyne.KeyModifierSuper}
|
||||||
|
)
|
||||||
|
|
||||||
type MainWindow struct {
|
type MainWindow struct {
|
||||||
Window fyne.Window
|
Window fyne.Window
|
||||||
|
|
||||||
|
App *backend.App
|
||||||
Router browsing.Router
|
Router browsing.Router
|
||||||
BrowsingPane *browsing.BrowsingPane
|
BrowsingPane *browsing.BrowsingPane
|
||||||
BottomPanel *BottomPanel
|
BottomPanel *BottomPanel
|
||||||
@@ -28,6 +38,7 @@ var (
|
|||||||
|
|
||||||
func NewMainWindow(fyneApp fyne.App, appName string, app *backend.App) MainWindow {
|
func NewMainWindow(fyneApp fyne.App, appName string, app *backend.App) MainWindow {
|
||||||
m := MainWindow{
|
m := MainWindow{
|
||||||
|
App: app,
|
||||||
Window: fyneApp.NewWindow(appName),
|
Window: fyneApp.NewWindow(appName),
|
||||||
BrowsingPane: browsing.NewBrowsingPane(app),
|
BrowsingPane: browsing.NewBrowsingPane(app),
|
||||||
}
|
}
|
||||||
@@ -50,6 +61,7 @@ func NewMainWindow(fyneApp fyne.App, appName string, app *backend.App) MainWindo
|
|||||||
m.Router.OpenRoute(HomePage)
|
m.Router.OpenRoute(HomePage)
|
||||||
})
|
})
|
||||||
m.addNavigationButtons()
|
m.addNavigationButtons()
|
||||||
|
m.addShortcuts()
|
||||||
return m
|
return m
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -75,6 +87,27 @@ func (m *MainWindow) addNavigationButtons() {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (m *MainWindow) addShortcuts() {
|
||||||
|
back := &ShortcutBack
|
||||||
|
fwd := &ShortcutForward
|
||||||
|
if runtime.GOOS == "darwin" {
|
||||||
|
back = &ShortcutBackDarwin
|
||||||
|
fwd = &ShortcutForwardDarwin
|
||||||
|
}
|
||||||
|
m.Canvas().AddShortcut(back, func(_ fyne.Shortcut) {
|
||||||
|
m.BrowsingPane.GoBack()
|
||||||
|
})
|
||||||
|
m.Canvas().AddShortcut(fwd, func(_ fyne.Shortcut) {
|
||||||
|
m.BrowsingPane.GoForward()
|
||||||
|
})
|
||||||
|
|
||||||
|
m.Canvas().SetOnTypedKey(func(e *fyne.KeyEvent) {
|
||||||
|
if e.Name == fyne.KeySpace {
|
||||||
|
m.App.Player.PlayPause()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
func (m *MainWindow) Show() {
|
func (m *MainWindow) Show() {
|
||||||
m.Window.Show()
|
m.Window.Show()
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user