1616package com .spotifyxp .support ;
1717
1818import com .spotifyxp .PublicValues ;
19- import com .spotifyxp .deps .org .mpris .MPRISMP2None ;
20- import com .spotifyxp .deps .org .mpris .MPRISMediaPlayer ;
19+ import com .spotifyxp .deps .org .mpris .MPRIS ;
20+ import com .spotifyxp .deps .org .mpris .MPRISBuilder ;
2121import com .spotifyxp .deps .org .mpris .Metadata ;
2222import com .spotifyxp .deps .org .mpris .TypeRunnable ;
2323import com .spotifyxp .deps .org .mpris .mpris .PlaybackStatus ;
3333import com .spotifyxp .panels .ContentPanel ;
3434import com .spotifyxp .utils .ApplicationUtils ;
3535import org .freedesktop .dbus .DBusPath ;
36- import org .freedesktop .dbus .connections .impl .DBusConnection ;
3736import org .freedesktop .dbus .exceptions .DBusException ;
3837import org .jetbrains .annotations .NotNull ;
3938import org .jetbrains .annotations .Nullable ;
4241import java .io .IOException ;
4342import java .net .URI ;
4443import java .util .Collections ;
45- import java .util .Locale ;
4644import java .util .Timer ;
4745import java .util .TimerTask ;
4846import java .util .concurrent .TimeUnit ;
5149 * !!Warning!! This class will be stripped from the final executable if the flag linuxSupport is false
5250 */
5351public class LinuxSupportModule implements SupportModule {
54- public static MPRISMP2None mpris ;
52+ public static MPRIS mpris ;
5553
5654 @ Override
5755 public String getOSName () {
@@ -68,80 +66,69 @@ public void run() {
6866 PublicValues .tempPath = System .getProperty ("java.io.tmpdir" );
6967 }
7068 try {
71- MPRISMediaPlayer mediaPlayer = new MPRISMediaPlayer (
72- DBusConnection .newConnection (DBusConnection .DBusBusType .SESSION ),
73- ApplicationUtils .getName ().toLowerCase (Locale .ENGLISH )
74- );
75- mpris = mediaPlayer .buildMPRISMediaPlayer2None (
76- new MPRISMediaPlayer .MediaPlayer2Builder ()
77- .setOnQuit (new TypeRunnable <Object >() {
78- @ Override
79- public void run (Object value ) {
80- System .exit (0 );
81- }
82- })
83- .setOnRaise (new TypeRunnable <Object >() {
84- @ Override
85- public void run (Object value ) {
86- ContentPanel .frame .toFront ();
87- }
88- })
89- .setSupportedUriSchemes ("spotify:" )
90- .setCanQuit (true )
91- .setCanRaise (true )
92- .setIdentity (ApplicationUtils .getName ())
93- .setDesktopEntry ("/home/werwolf2303/.local/share/applications/" + ApplicationUtils .getName () + ".desktop" ),
94- new MPRISMediaPlayer .PlayerBuilder ()
95- .setOnOpenURI (new TypeRunnable <String >() {
96- @ Override
97- public void run (String value ) {
98- if (value .split (":" ).length == 2 ) {
99- // URI
100- InstanceManager .getSpotifyPlayer ().load (value , true , PublicValues .shuffle );
101- }
102- }
103- })
104- .setCanControl (true )
105- .setCanPlay (true )
106- .setCanPause (true )
107- .setCanGoNext (true )
108- .setCanGoPrevious (true )
109- .setOnPlayPause (new TypeRunnable <Object >() {
110- @ Override
111- public void run (Object value ) {
112- InstanceManager .getPlayer ().getPlayer ().playPause ();
113- }
114- })
115- .setOnPlay (new TypeRunnable <Object >() {
116- @ Override
117- public void run (Object value ) {
118- InstanceManager .getPlayer ().getPlayer ().play ();
119- }
120- })
121- .setOnPause (new TypeRunnable <Object >() {
122- @ Override
123- public void run (Object value ) {
124- InstanceManager .getPlayer ().getPlayer ().pause ();
125- }
126- })
127- .setOnNext (new TypeRunnable <Object >() {
128- @ Override
129- public void run (Object value ) {
130- InstanceManager .getPlayer ().getPlayer ().next ();
131- }
132- })
133- .setOnPrevious (new TypeRunnable <Object >() {
134- @ Override
135- public void run (Object value ) {
136- InstanceManager .getPlayer ().getPlayer ().previous ();
137- }
138- })
139- .setMetadata (new Metadata .Builder ()
140- .setLength (0 )
141- .setTrackID (new DBusPath ("/" ))
142- .build ())
143- );
144- mediaPlayer .create ();
69+ mpris = new MPRISBuilder ()
70+ .setOnQuit (new Runnable () {
71+ @ Override
72+ public void run () {
73+ System .exit (0 );
74+ }
75+ })
76+ .setOnRaise (new Runnable () {
77+ @ Override
78+ public void run () {
79+ ContentPanel .frame .toFront ();
80+ }
81+ })
82+ .setSupportedUriSchemes ("spotify:" )
83+ .setCanQuit (true )
84+ .setCanRaise (true )
85+ .setIdentity (ApplicationUtils .getName ())
86+ .setDesktopEntry (ApplicationUtils .getName ())
87+ .setOnOpenURI (new TypeRunnable <String >() {
88+ @ Override
89+ public void run (String value ) {
90+ if (value .split (":" ).length == 2 ) {
91+ // URI
92+ InstanceManager .getSpotifyPlayer ().load (value , true , PublicValues .shuffle );
93+ }
94+ }
95+ })
96+ .setCanControl (true )
97+ .setCanPlay (true )
98+ .setCanPause (true )
99+ .setCanGoNext (true )
100+ .setCanGoPrevious (true )
101+ .setOnPlayPause (new Runnable () {
102+ @ Override
103+ public void run () {
104+ InstanceManager .getPlayer ().getPlayer ().playPause ();
105+ }
106+ })
107+ .setOnPlay (new Runnable () {
108+ @ Override
109+ public void run () {
110+ InstanceManager .getPlayer ().getPlayer ().play ();
111+ }
112+ })
113+ .setOnPause (new Runnable () {
114+ @ Override
115+ public void run () {
116+ InstanceManager .getPlayer ().getPlayer ().pause ();
117+ }
118+ })
119+ .setOnNext (new Runnable () {
120+ @ Override
121+ public void run () {
122+ InstanceManager .getPlayer ().getPlayer ().next ();
123+ }
124+ })
125+ .setOnPrevious (new Runnable () {
126+ @ Override
127+ public void run () {
128+ InstanceManager .getPlayer ().getPlayer ().previous ();
129+ }
130+ })
131+ .build (ApplicationUtils .getName ());
145132 } catch (DBusException e ) {
146133 ConsoleLogging .warning ("Failed to initialize MPRIS support" );
147134 }
@@ -207,7 +194,11 @@ public void onPlaybackFailed(@NotNull Player player, @NotNull Exception e) {
207194
208195 @ Override
209196 public void onTrackSeeked (@ NotNull Player player , long trackTime ) {
210-
197+ try {
198+ mpris .emitSeeked ((int ) TimeUnit .MILLISECONDS .toMicros (trackTime ));
199+ } catch (DBusException e ) {
200+ throw new RuntimeException (e );
201+ }
211202 }
212203
213204 @ Override
0 commit comments