X-Git-Url: http://git.maemo.org/git/?p=simple-xmbc-rem;a=blobdiff_plain;f=simplexbmcremote-0.8.1%2Fxbmc.cpp;fp=simplexbmcremote-0.8.1%2Fxbmc.cpp;h=5730eb565cf941001698d27f934e5d2419eedd35;hp=0000000000000000000000000000000000000000;hb=a3cf4f79d3cde0b08b3badc0fb2caa5739265b1e;hpb=d328e0caa02487fe504e1aa27147c50eaffcbee3 diff --git a/simplexbmcremote-0.8.1/xbmc.cpp b/simplexbmcremote-0.8.1/xbmc.cpp new file mode 100644 index 0000000..5730eb5 --- /dev/null +++ b/simplexbmcremote-0.8.1/xbmc.cpp @@ -0,0 +1,145 @@ +#include "xbmc.h" +#include "constants.h" +#include "genericnotify.h" + +#include +#include +#include + +// XBMC constants -- from https://github.com/xbmc/xbmc/blob/master/xbmc/guilib/Key.h +#define ACTION_MOVE_LEFT 1 +#define ACTION_MOVE_RIGHT 2 +#define ACTION_MOVE_UP 3 +#define ACTION_MOVE_DOWN 4 +#define ACTION_NEXT_SUBTITLE 26 // switch to next subtitle of movie. Can b used in videoFullScreen.xml window id=2005 +#define ACTION_SUBTITLE_DELAY_MIN 52 // Decrease subtitle/movie Delay. Can b used in videoFullScreen.xml window id=2005 +#define ACTION_SUBTITLE_DELAY_PLUS 53 // Increase subtitle/movie Delay. Can b used in videoFullScreen.xml window id=2005 +#define ACTION_AUDIO_DELAY_MIN 54 // Increase avsync delay. Can b used in videoFullScreen.xml window id=2005 +#define ACTION_AUDIO_DELAY_PLUS 55 // Decrease avsync delay. Can b used in videoFullScreen.xml window id=2005 +#define ACTION_AUDIO_NEXT_LANGUAGE 56 // Select next language in movie. Can b used in videoFullScreen.xml window id=2005 +#define ACTION_ENTER 135 +#define ACTION_SHOW_GUI 18 // toggle between GUI and movie or GUI and visualisation. +#define ACTION_STEP_FORWARD 20 // seek +1% in the movie. Can b used in videoFullScreen.xml window id=2005 +#define ACTION_STEP_BACK 21 // seek -1% in the movie. Can b used in videoFullScreen.xml window id=2005 +#define ACTION_BIG_STEP_FORWARD 22 // seek +10% in the movie. Can b used in videoFullScreen.xml window id=2005 +#define ACTION_BIG_STEP_BACK 23 // seek -10% in the movie. Can b used in videoFullScreen.xml window id=2005 + +#define ACTION_PLAYER_PLAY 79 // Play current song. Unpauses song and sets playspeed to 1x. global action, can be used anywhere +#define ACTION_SELECT_ITEM 7 +#define ACTION_HIGHLIGHT_ITEM 8 +#define ACTION_PARENT_DIR 9 + +#define ACTION_VOLUME_UP 88 +#define ACTION_VOLUME_DOWN 89 +#define ACTION_MUTE 91 + +#define ACTION_PAUSE 12 +#define ACTION_STOP 13 +#define ACTION_NEXT_ITEM 14 +#define ACTION_PREV_ITEM 15 +#define ACTION_FORWARD 16 // Can be used to specify specific action in a window, Playback control is handled in ACTION_PLAYER_* +#define ACTION_REWIND 17 // Can be used to specify specific action in a window, Playback control is handled in ACTION_PLAYER_* + +Xbmc::Xbmc(QObject *parent) : QObject(parent) +{ + m_manager = new QNetworkAccessManager(this); +} + +Xbmc::~Xbmc() +{ + delete m_manager; +} + +void Xbmc::commandActionFinished() +{ + QNetworkReply* reply = qobject_cast(sender()); + if (reply) { + if (reply->error() == QNetworkReply::NoError) { + QTextStream stream(reply); + QString msg = stream.readAll(); + qDebug("Xbmc::commandActionFinished: %s", qPrintable(msg)); + } else { + notify::notify(reply->errorString()); + } + reply->deleteLater(); + } +} + +void Xbmc::do_command_action(int action) +{ + QSettings settings; + QString server = settings.value(SETUP_XBMC_SERVER, SETUP_XBMC_SERVER_DEFAULT).toString(); + QString port = settings.value(SETUP_XBMC_PORT, SETUP_XBMC_PORT_DEFAULT).toString(); + + QUrl url = QUrl(QString("http://%1:%2/xbmcCmds/xbmcHttp?command=Action(%3)").arg(server).arg(port).arg(action)); + + QNetworkRequest request; + request.setUrl(url); + + QNetworkReply *reply = m_manager->get(request); + connect(reply, SIGNAL(finished()), this, SLOT(commandActionFinished())); +} + +void Xbmc::actionRight() +{ + do_command_action(ACTION_MOVE_RIGHT); + do_command_action(ACTION_STEP_FORWARD); +} + +void Xbmc::actionLeft() +{ + do_command_action(ACTION_MOVE_LEFT); + do_command_action(ACTION_STEP_BACK); +} + +void Xbmc::actionUp() +{ + do_command_action(ACTION_MOVE_UP); + do_command_action(ACTION_BIG_STEP_FORWARD); +} + +void Xbmc::actionDown() +{ + do_command_action(ACTION_MOVE_DOWN); + do_command_action(ACTION_BIG_STEP_BACK); +} + +void Xbmc::actionMute() +{ + do_command_action(ACTION_MUTE); +} + +void Xbmc::actionVolumeUp() +{ + do_command_action(ACTION_VOLUME_UP); +} + +void Xbmc::actionVolumeDown() +{ + do_command_action(ACTION_VOLUME_DOWN); +} + +void Xbmc::actionNextSubtitle() +{ + do_command_action(ACTION_NEXT_SUBTITLE); +} + +void Xbmc::actionNextLanguage() +{ + do_command_action(ACTION_AUDIO_NEXT_LANGUAGE); +} + +void Xbmc::actionPlay() +{ + do_command_action(ACTION_PLAYER_PLAY); +} + +void Xbmc::actionSelect() +{ + do_command_action(ACTION_SELECT_ITEM); +} + +void Xbmc::actionStop() +{ + do_command_action(ACTION_STOP); +}