subsonic-tui/vendor/github.com/quarckster/go-mpris-server/pkg/events/orgMprisMediaPlayer2EventHandler.go
Sagi Dayan a3923cf42c initial commit
Signed-off-by: Sagi Dayan <sagidayan@gmail.com>
2024-03-29 17:56:39 +03:00

64 lines
1.6 KiB
Go

package events
import (
"github.com/quarckster/go-mpris-server/internal"
"github.com/quarckster/go-mpris-server/pkg/server"
"github.com/quarckster/go-mpris-server/pkg/types"
)
func allRootProps(adapter types.OrgMprisMediaPlayer2Adapter) []string {
props := []string{
"CanQuit",
"CanRaise",
"HasTrackList",
"Identity",
"SupportedUriSchemes",
"SupportedMimeTypes",
}
var ok bool
_, ok = adapter.(types.OrgMprisMediaPlayer2AdapterFullscreen)
if ok {
props = append(props, "Fullscreen")
}
_, ok = adapter.(types.OrgMprisMediaPlayer2AdapterCanSetFullscreen)
if ok {
props = append(props, "CanSetFullscreen")
}
_, ok = adapter.(types.OrgMprisMediaPlayer2AdapterDesktopEntry)
if ok {
props = append(props, "DesktopEntry")
}
return props
}
func newOrgMprisMediaPlayer2EventHandler(mpris *server.Server) *orgMprisMediaPlayer2EventHandler {
eventHandler := orgMprisMediaPlayer2EventHandler{
mpris: mpris,
iface: "org.mpris.MediaPlayer2",
adapter: mpris.RootAdapter,
allProps: allRootProps(mpris.RootAdapter),
}
return &eventHandler
}
type orgMprisMediaPlayer2EventHandler struct {
mpris *server.Server
iface string
adapter types.OrgMprisMediaPlayer2Adapter
allProps []string
}
func (o *orgMprisMediaPlayer2EventHandler) EmitChanges(props []string) error {
if o.mpris.Conn == nil {
return errNoConnection
}
changes, err := internal.Changes(o.adapter, props)
if err != nil {
return err
}
return internal.EmitPropertiesChanged(o.mpris.Conn, o.iface, changes)
}
func (o *orgMprisMediaPlayer2EventHandler) OnAll() error {
return o.EmitChanges(o.allProps)
}