Add support for the navigationpad interface

master
Michael Zanetti 2019-07-20 16:25:14 +02:00
parent 37909b1d2f
commit 8fd164427f
4 changed files with 32 additions and 44 deletions

View File

@ -242,24 +242,24 @@ Device::DeviceError DevicePluginKodi::executeAction(Device *device, const Action
commandId = kodi->setVolume(action.param(kodiVolumeActionVolumeParamTypeId).value().toInt());
} else if (action.actionTypeId() == kodiMuteActionTypeId) {
commandId = kodi->setMuted(action.param(kodiMuteActionMuteParamTypeId).value().toBool());
} else if (action.actionTypeId() == kodiPressButtonActionTypeId) {
commandId = kodi->pressButton(action.param(kodiPressButtonActionButtonParamTypeId).value().toString());
} else if (action.actionTypeId() == kodiNavigateActionTypeId) {
commandId = kodi->navigate(action.param(kodiNavigateActionToParamTypeId).value().toString());
} else if (action.actionTypeId() == kodiSystemActionTypeId) {
commandId = kodi->systemCommand(action.param(kodiSystemActionSystemCommandParamTypeId).value().toString());
} else if(action.actionTypeId() == kodiSkipBackActionTypeId) {
commandId = kodi->pressButton("skipprevious");
commandId = kodi->navigate("skipprevious");
} else if(action.actionTypeId() == kodiFastRewindActionTypeId) {
commandId = kodi->pressButton("rewind");
commandId = kodi->navigate("rewind");
} else if(action.actionTypeId() == kodiStopActionTypeId) {
commandId = kodi->pressButton("stop");
commandId = kodi->navigate("stop");
} else if(action.actionTypeId() == kodiPlayActionTypeId) {
commandId = kodi->pressButton("play");
commandId = kodi->navigate("play");
} else if(action.actionTypeId() == kodiPauseActionTypeId) {
commandId = kodi->pressButton("pause");
commandId = kodi->navigate("pause");
} else if(action.actionTypeId() == kodiFastForwardActionTypeId) {
commandId = kodi->pressButton("fastforward");
commandId = kodi->navigate("fastforward");
} else if(action.actionTypeId() == kodiSkipNextActionTypeId) {
commandId = kodi->pressButton("skipnext");
commandId = kodi->navigate("skipnext");
} else if (action.actionTypeId() == kodiShuffleActionTypeId) {
commandId = kodi->setShuffle(action.param(kodiShuffleActionShuffleParamTypeId).value().toBool());
} else if (action.actionTypeId() == kodiRepeatActionTypeId) {

View File

@ -12,7 +12,7 @@
"id": "d09953e3-c5bd-415b-973b-0d0bf2be3f69",
"name": "kodi",
"displayName": "Kodi",
"interfaces": ["mediaplayer", "extendedmediacontroller", "extendedvolumecontroller", "mediametadataprovider", "shufflerepeat", "notifications", "connectable"],
"interfaces": ["mediaplayer", "extendedmediacontroller", "extendedvolumecontroller", "mediametadataprovider", "shufflerepeat", "notifications", "extendednavigationpad", "connectable"],
"createMethods": ["user", "discovery"],
"browsable": true,
"paramTypes": [
@ -237,45 +237,24 @@
},
{
"id": "28060803-aa85-44a4-9dec-ee669dfb629f",
"name": "pressButton",
"displayName": "press button",
"name": "navigate",
"displayName": "Navigate",
"paramTypes": [
{
"id": "93861dac-0c24-4a3b-903d-d1be44eae611",
"name": "button",
"displayName": "button",
"name": "to",
"displayName": "to",
"type": "QString",
"allowedValues": [
"left",
"right",
"up",
"down",
"pageup",
"pagedown",
"select",
"left",
"right",
"enter",
"back",
"menu",
"info",
"pause",
"stop",
"skipnext",
"skipprevious",
"stepforward",
"stepback",
"osd",
"play",
"playpause",
"fastforward",
"rewind",
"fullscreen",
"mute",
"volumeup",
"volumedown",
"channelup",
"channeldown",
"red",
"green",
"yellow",
"blue"
"home"
]
}
]

View File

@ -236,10 +236,19 @@ int Kodi::showNotification(const QString &title, const QString &message, const i
return m_jsonHandler->sendData("GUI.ShowNotification", params);
}
int Kodi::pressButton(const QString &button)
int Kodi::navigate(const QString &to)
{
qCDebug(dcKodi()) << "Navigate:" << to;
if (to == "home") {
return m_jsonHandler->sendData("Input.Home", QVariantMap());
}
QVariantMap params;
params.insert("action", button);
QString mappedTo = to;
if (to == "enter") {
mappedTo = "select";
}
params.insert("action", mappedTo);
return m_jsonHandler->sendData("Input.ExecuteAction", params);
}
@ -949,7 +958,7 @@ void Kodi::processResponse(int id, const QString &method, const QVariantMap &res
return;
}
if (method == "GUI.ShowNotification") {
if (method == "GUI.ShowNotification" || method == "Input.ExecuteAction") {
emit actionExecuted(id, !response.contains("error"));
return;
}

View File

@ -57,7 +57,7 @@ public:
// actions
int showNotification(const QString &title, const QString &message, const int &displayTime, const QString &notificationType);
int pressButton(const QString &button);
int navigate(const QString &to);
int systemCommand(const QString &command);
void update();