Fix #745: add option to prevent screensaver on Now Playing page
This commit is contained in:
+26
-23
@@ -61,6 +61,8 @@ type AppConfig struct {
|
|||||||
SidebarWidthFraction float64
|
SidebarWidthFraction float64
|
||||||
SidebarTab string
|
SidebarTab string
|
||||||
|
|
||||||
|
PreventScreensaverOnNowPlayingPage bool
|
||||||
|
|
||||||
FontNormalTTF string
|
FontNormalTTF string
|
||||||
FontBoldTTF string
|
FontBoldTTF string
|
||||||
UIScaleSize string
|
UIScaleSize string
|
||||||
@@ -189,29 +191,30 @@ var SupportedStartupPages = []string{"Albums", "Favorites", "Playlists", "Artist
|
|||||||
func DefaultConfig(appVersionTag string) *Config {
|
func DefaultConfig(appVersionTag string) *Config {
|
||||||
return &Config{
|
return &Config{
|
||||||
Application: AppConfig{
|
Application: AppConfig{
|
||||||
WindowWidth: 1000,
|
WindowWidth: 1000,
|
||||||
WindowHeight: 800,
|
WindowHeight: 800,
|
||||||
LastCheckedVersion: appVersionTag,
|
LastCheckedVersion: appVersionTag,
|
||||||
LastLaunchedVersion: "",
|
LastLaunchedVersion: "",
|
||||||
EnableSystemTray: true,
|
EnableSystemTray: true,
|
||||||
CloseToSystemTray: false,
|
CloseToSystemTray: false,
|
||||||
StartupPage: "Albums",
|
StartupPage: "Albums",
|
||||||
SettingsTab: "General",
|
SettingsTab: "General",
|
||||||
AllowMultiInstance: false,
|
AllowMultiInstance: false,
|
||||||
MaxImageCacheSizeMB: 50,
|
MaxImageCacheSizeMB: 50,
|
||||||
UIScaleSize: "Normal",
|
UIScaleSize: "Normal",
|
||||||
SavePlayQueue: true,
|
SavePlayQueue: true,
|
||||||
SaveQueueToServer: false,
|
SaveQueueToServer: false,
|
||||||
ShowTrackChangeNotification: false,
|
ShowTrackChangeNotification: false,
|
||||||
EnableLrcLib: true,
|
EnableLrcLib: true,
|
||||||
EnablePasswordStorage: true,
|
EnablePasswordStorage: true,
|
||||||
SkipSSLVerify: false,
|
SkipSSLVerify: false,
|
||||||
EnqueueBatchSize: 100,
|
EnqueueBatchSize: 100,
|
||||||
Language: "auto",
|
Language: "auto",
|
||||||
EnableAutoUpdateChecker: true,
|
EnableAutoUpdateChecker: true,
|
||||||
RequestTimeoutSeconds: 15,
|
RequestTimeoutSeconds: 15,
|
||||||
EnableOSMediaPlayerAPIs: true,
|
EnableOSMediaPlayerAPIs: true,
|
||||||
SidebarWidthFraction: 0.8,
|
SidebarWidthFraction: 0.8,
|
||||||
|
PreventScreensaverOnNowPlayingPage: false,
|
||||||
},
|
},
|
||||||
AlbumPage: AlbumPageConfig{
|
AlbumPage: AlbumPageConfig{
|
||||||
TracklistColumns: []string{"Artist", "Time", "Plays", "Favorite", "Rating"},
|
TracklistColumns: []string{"Artist", "Time", "Plays", "Favorite", "Rating"},
|
||||||
|
|||||||
@@ -279,6 +279,7 @@
|
|||||||
"Remove from queue": "Remove from queue",
|
"Remove from queue": "Remove from queue",
|
||||||
"Play albums": "Play albums",
|
"Play albums": "Play albums",
|
||||||
"Play song radio": "Play song radio",
|
"Play song radio": "Play song radio",
|
||||||
|
"Prevent screensaver on Now Playing page": "Prevent screensaver on Now Playing page",
|
||||||
"to": "to",
|
"to": "to",
|
||||||
"by": "by",
|
"by": "by",
|
||||||
"Jan": "Jan",
|
"Jan": "Jan",
|
||||||
|
|||||||
@@ -17,6 +17,8 @@ type Router struct {
|
|||||||
Controller *controller.Controller
|
Controller *controller.Controller
|
||||||
Nav NavigationHandler
|
Nav NavigationHandler
|
||||||
widgetPool *util.WidgetPool
|
widgetPool *util.WidgetPool
|
||||||
|
|
||||||
|
OnNavigateTo func(controller.Route)
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewRouter(app *backend.App, controller *controller.Controller, nav NavigationHandler) Router {
|
func NewRouter(app *backend.App, controller *controller.Controller, nav NavigationHandler) Router {
|
||||||
@@ -63,8 +65,11 @@ func (r Router) CreatePage(rte controller.Route) Page {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r Router) NavigateTo(rte controller.Route) {
|
func (r *Router) NavigateTo(rte controller.Route) {
|
||||||
if rte != r.Nav.CurrentPage() {
|
if rte != r.Nav.CurrentPage() {
|
||||||
r.Nav.SetPage(r.CreatePage(rte))
|
r.Nav.SetPage(r.CreatePage(rte))
|
||||||
}
|
}
|
||||||
|
if r.OnNavigateTo != nil {
|
||||||
|
r.OnNavigateTo(rte)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -634,12 +634,16 @@ func (s *SettingsDialog) createAdvancedTab() *container.TabItem {
|
|||||||
})
|
})
|
||||||
osMediaAPIs.Checked = s.config.Application.EnableOSMediaPlayerAPIs
|
osMediaAPIs.Checked = s.config.Application.EnableOSMediaPlayerAPIs
|
||||||
|
|
||||||
|
preventScreensaver := widget.NewCheckWithData(lang.L("Prevent screensaver on Now Playing page"),
|
||||||
|
binding.BindBool(&s.config.Application.PreventScreensaverOnNowPlayingPage))
|
||||||
|
|
||||||
return container.NewTabItem(lang.L("Advanced"), container.NewVBox(
|
return container.NewTabItem(lang.L("Advanced"), container.NewVBox(
|
||||||
multi,
|
multi,
|
||||||
sslSkip,
|
sslSkip,
|
||||||
update,
|
update,
|
||||||
lrclib,
|
lrclib,
|
||||||
osMediaAPIs,
|
osMediaAPIs,
|
||||||
|
preventScreensaver,
|
||||||
imgCacheCfg,
|
imgCacheCfg,
|
||||||
))
|
))
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -51,6 +51,8 @@ type MainWindow struct {
|
|||||||
|
|
||||||
// updated when changing servers or libraries
|
// updated when changing servers or libraries
|
||||||
librarySubmenu *fyne.Menu
|
librarySubmenu *fyne.Menu
|
||||||
|
|
||||||
|
isScreensaverDisabled bool
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewMainWindow(fyneApp fyne.App, appName, displayAppName, appVersion string, app *backend.App) MainWindow {
|
func NewMainWindow(fyneApp fyne.App, appName, displayAppName, appVersion string, app *backend.App) MainWindow {
|
||||||
@@ -156,6 +158,18 @@ func NewMainWindow(fyneApp fyne.App, appName, displayAppName, appVersion string,
|
|||||||
m.Window.SetContent(fynetooltip.AddWindowToolTipLayer(m.content, m.Window.Canvas()))
|
m.Window.SetContent(fynetooltip.AddWindowToolTipLayer(m.content, m.Window.Canvas()))
|
||||||
m.setInitialSize()
|
m.setInitialSize()
|
||||||
|
|
||||||
|
m.Router.OnNavigateTo = func(r controller.Route) {
|
||||||
|
if r.Page == controller.NowPlayingRoute().Page {
|
||||||
|
if m.App.Config.Application.PreventScreensaverOnNowPlayingPage && !m.isScreensaverDisabled {
|
||||||
|
fyne.CurrentApp().Driver().SetDisableScreenBlanking(true)
|
||||||
|
m.isScreensaverDisabled = true
|
||||||
|
}
|
||||||
|
} else if m.isScreensaverDisabled {
|
||||||
|
fyne.CurrentApp().Driver().SetDisableScreenBlanking(false)
|
||||||
|
m.isScreensaverDisabled = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
m.Window.SetCloseIntercept(func() {
|
m.Window.SetCloseIntercept(func() {
|
||||||
m.SaveWindowSettings()
|
m.SaveWindowSettings()
|
||||||
if app.Config.Application.CloseToSystemTray && m.HaveSystemTray() {
|
if app.Config.Application.CloseToSystemTray && m.HaveSystemTray() {
|
||||||
|
|||||||
Reference in New Issue
Block a user