spotube/lib/interfaces/media_player2.dart
Kingkor Roy Tirtho bea7fd14b7 dbus MPRIS implemented, OS media control support added
Hotkey support removed due to too much key_display_binding issue caused by window resize & re-renders
2022-06-26 13:27:38 +06:00

208 lines
7.7 KiB
Dart

// This file was generated using the following command and may be overwritten.
// dart-dbus generate-object defs/org.mpris.MediaPlayer2.xml
import 'package:bitsdojo_window/bitsdojo_window.dart';
import 'package:dbus/dbus.dart';
class Media_Player extends DBusObject {
/// Creates a new object to expose on [path].
Media_Player() : super(DBusObjectPath('/org/mpris/MediaPlayer2'));
/// Gets value of property org.mpris.MediaPlayer2.CanQuit
Future<DBusMethodResponse> getCanQuit() async {
return DBusMethodSuccessResponse([const DBusBoolean(true)]);
}
/// Gets value of property org.mpris.MediaPlayer2.Fullscreen
Future<DBusMethodResponse> getFullscreen() async {
return DBusMethodSuccessResponse([const DBusBoolean(false)]);
}
/// Sets property org.mpris.MediaPlayer2.Fullscreen
Future<DBusMethodResponse> setFullscreen(bool value) async {
return DBusMethodSuccessResponse();
}
/// Gets value of property org.mpris.MediaPlayer2.CanSetFullscreen
Future<DBusMethodResponse> getCanSetFullscreen() async {
return DBusMethodSuccessResponse([const DBusBoolean(false)]);
}
/// Gets value of property org.mpris.MediaPlayer2.CanRaise
Future<DBusMethodResponse> getCanRaise() async {
return DBusMethodSuccessResponse([const DBusBoolean(false)]);
}
/// Gets value of property org.mpris.MediaPlayer2.HasTrackList
Future<DBusMethodResponse> getHasTrackList() async {
return DBusMethodSuccessResponse([const DBusBoolean(false)]);
}
/// Gets value of property org.mpris.MediaPlayer2.Identity
Future<DBusMethodResponse> getIdentity() async {
return DBusMethodSuccessResponse([const DBusString("Spotube")]);
}
/// Gets value of property org.mpris.MediaPlayer2.DesktopEntry
Future<DBusMethodResponse> getDesktopEntry() async {
return DBusMethodSuccessResponse([const DBusString("spotube")]);
}
/// Gets value of property org.mpris.MediaPlayer2.SupportedUriSchemes
Future<DBusMethodResponse> getSupportedUriSchemes() async {
return DBusMethodSuccessResponse([
DBusArray.string(["http"])
]);
}
/// Gets value of property org.mpris.MediaPlayer2.SupportedMimeTypes
Future<DBusMethodResponse> getSupportedMimeTypes() async {
return DBusMethodSuccessResponse([
DBusArray.string(["audio/mpeg"])
]);
}
/// Implementation of org.mpris.MediaPlayer2.Raise()
Future<DBusMethodResponse> doRaise() async {
return DBusMethodSuccessResponse();
}
/// Implementation of org.mpris.MediaPlayer2.Quit()
Future<DBusMethodResponse> doQuit() async {
appWindow.close();
return DBusMethodSuccessResponse();
}
@override
List<DBusIntrospectInterface> introspect() {
return [
DBusIntrospectInterface('org.mpris.MediaPlayer2', methods: [
DBusIntrospectMethod('Raise'),
DBusIntrospectMethod('Quit')
], properties: [
DBusIntrospectProperty('CanQuit', DBusSignature('b'),
access: DBusPropertyAccess.read),
DBusIntrospectProperty('Fullscreen', DBusSignature('b'),
access: DBusPropertyAccess.readwrite),
DBusIntrospectProperty('CanSetFullscreen', DBusSignature('b'),
access: DBusPropertyAccess.read),
DBusIntrospectProperty('CanRaise', DBusSignature('b'),
access: DBusPropertyAccess.read),
DBusIntrospectProperty('HasTrackList', DBusSignature('b'),
access: DBusPropertyAccess.read),
DBusIntrospectProperty('Identity', DBusSignature('s'),
access: DBusPropertyAccess.read),
DBusIntrospectProperty('DesktopEntry', DBusSignature('s'),
access: DBusPropertyAccess.read),
DBusIntrospectProperty('SupportedUriSchemes', DBusSignature('as'),
access: DBusPropertyAccess.read),
DBusIntrospectProperty('SupportedMimeTypes', DBusSignature('as'),
access: DBusPropertyAccess.read)
])
];
}
@override
Future<DBusMethodResponse> handleMethodCall(DBusMethodCall methodCall) async {
if (methodCall.interface == 'org.mpris.MediaPlayer2') {
if (methodCall.name == 'Raise') {
if (methodCall.values.isNotEmpty) {
return DBusMethodErrorResponse.invalidArgs();
}
return doRaise();
} else if (methodCall.name == 'Quit') {
if (methodCall.values.isNotEmpty) {
return DBusMethodErrorResponse.invalidArgs();
}
return doQuit();
} else {
return DBusMethodErrorResponse.unknownMethod();
}
} else {
return DBusMethodErrorResponse.unknownInterface();
}
}
@override
Future<DBusMethodResponse> getProperty(String interface, String name) async {
if (interface == 'org.mpris.MediaPlayer2') {
if (name == 'CanQuit') {
return getCanQuit();
} else if (name == 'Fullscreen') {
return getFullscreen();
} else if (name == 'CanSetFullscreen') {
return getCanSetFullscreen();
} else if (name == 'CanRaise') {
return getCanRaise();
} else if (name == 'HasTrackList') {
return getHasTrackList();
} else if (name == 'Identity') {
return getIdentity();
} else if (name == 'DesktopEntry') {
return getDesktopEntry();
} else if (name == 'SupportedUriSchemes') {
return getSupportedUriSchemes();
} else if (name == 'SupportedMimeTypes') {
return getSupportedMimeTypes();
} else {
return DBusMethodErrorResponse.unknownProperty();
}
} else {
return DBusMethodErrorResponse.unknownProperty();
}
}
@override
Future<DBusMethodResponse> setProperty(
String interface, String name, DBusValue value) async {
if (interface == 'org.mpris.MediaPlayer2') {
if (name == 'CanQuit') {
return DBusMethodErrorResponse.propertyReadOnly();
} else if (name == 'Fullscreen') {
if (value.signature != DBusSignature('b')) {
return DBusMethodErrorResponse.invalidArgs();
}
return setFullscreen((value as DBusBoolean).value);
} else if (name == 'CanSetFullscreen') {
return DBusMethodErrorResponse.propertyReadOnly();
} else if (name == 'CanRaise') {
return DBusMethodErrorResponse.propertyReadOnly();
} else if (name == 'HasTrackList') {
return DBusMethodErrorResponse.propertyReadOnly();
} else if (name == 'Identity') {
return DBusMethodErrorResponse.propertyReadOnly();
} else if (name == 'DesktopEntry') {
return DBusMethodErrorResponse.propertyReadOnly();
} else if (name == 'SupportedUriSchemes') {
return DBusMethodErrorResponse.propertyReadOnly();
} else if (name == 'SupportedMimeTypes') {
return DBusMethodErrorResponse.propertyReadOnly();
} else {
return DBusMethodErrorResponse.unknownProperty();
}
} else {
return DBusMethodErrorResponse.unknownProperty();
}
}
@override
Future<DBusMethodResponse> getAllProperties(String interface) async {
var properties = <String, DBusValue>{};
if (interface == 'org.mpris.MediaPlayer2') {
properties['CanQuit'] = (await getCanQuit()).returnValues[0];
properties['Fullscreen'] = (await getFullscreen()).returnValues[0];
properties['CanSetFullscreen'] =
(await getCanSetFullscreen()).returnValues[0];
properties['CanRaise'] = (await getCanRaise()).returnValues[0];
properties['HasTrackList'] = (await getHasTrackList()).returnValues[0];
properties['Identity'] = (await getIdentity()).returnValues[0];
properties['DesktopEntry'] = (await getDesktopEntry()).returnValues[0];
properties['SupportedUriSchemes'] =
(await getSupportedUriSchemes()).returnValues[0];
properties['SupportedMimeTypes'] =
(await getSupportedMimeTypes()).returnValues[0];
}
return DBusMethodSuccessResponse([DBusDict.stringVariant(properties)]);
}
}