From: Ionutz Borcoman Date: Sat, 5 Mar 2011 16:28:15 +0000 (+0200) Subject: removed the state machine. use only http. X-Git-Tag: 0.8.0-1~10 X-Git-Url: http://git.maemo.org/git/?p=simple-xmbc-rem;a=commitdiff_plain;h=9615a6831af063a80e135b9fc125fbdb557d288c removed the state machine. use only http. --- diff --git a/src/constants.h b/src/constants.h index 5b27fa8..2adece1 100644 --- a/src/constants.h +++ b/src/constants.h @@ -11,27 +11,4 @@ #define SETUP_XBMC_PORT "xbmc/port" #define SETUP_XBMC_PORT_DEFAULT "9090" -// 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 - #endif // SETTINGS_H diff --git a/src/json.cpp b/src/json.cpp deleted file mode 100644 index 072fced..0000000 --- a/src/json.cpp +++ /dev/null @@ -1,30 +0,0 @@ -#include "json.h" - -int JsonEngine::id = 0; - -JsonEngine::JsonEngine() -{ -} - -QString JsonEngine::serialize(const QString& method) -{ - id++; - return QString("{\"jsonrpc\" : \"2.0\", \"method\" : \"%1\", \"id\" : %2}") - .arg(method) - .arg(id); -} - -QString JsonEngine::playerGetActivePlayers() -{ - return serialize("Player.GetActivePlayers"); -} - -QString JsonEngine::videoPlayerState() -{ - return serialize("VideoPlayer.State"); -} - -QString JsonEngine::videoPlayerPlayPause() -{ - return serialize("VideoPlayer.PlayPause"); -} diff --git a/src/json.h b/src/json.h deleted file mode 100644 index 45b23a4..0000000 --- a/src/json.h +++ /dev/null @@ -1,20 +0,0 @@ -#ifndef JSON_H -#define JSON_H - -#include - -class JsonEngine -{ - static int id; -public: - JsonEngine(); - - QString playerGetActivePlayers(); - QString videoPlayerState(); - QString videoPlayerPlayPause(); - - // make this private - QString serialize(const QString& method); -}; - -#endif // JSON_H diff --git a/src/main.cpp b/src/main.cpp index bc7d350..bb6450d 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -2,7 +2,6 @@ #include "constants.h" #include -#include int main(int argc, char *argv[]) { @@ -14,6 +13,5 @@ int main(int argc, char *argv[]) mainWindow.setOrientation(MainWindow::ScreenOrientationAuto); mainWindow.showExpanded(); - return app.exec(); } diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index f4e57c1..698fdf3 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -10,15 +10,10 @@ #include "mainwindow.h" #include "ui_mainwindow.h" -#include "constants.h" #include "setupdialog.h" -#include "json.h" +#include "xbmc.h" #include -#include -#include -#include -#include #if defined(Q_OS_SYMBIAN) && defined(ORIENTATIONLOCK) #include @@ -27,154 +22,17 @@ #include #endif // Q_OS_SYMBIAN && ORIENTATIONLOCK -///////////////////////////////////////////////////////////////////// -// -DisconnectedState::DisconnectedState(QAbstractButton *button, QTcpSocket* socket, QState *parent) - : QState(parent), m_socket(socket) -{ - assignProperty(button, "text", "Connect"); - assignProperty(button, "enabled", true); -} - -void DisconnectedState::onEntry(QEvent */*event*/) -{ - qDebug("DisconnectedState::onEntry"); -} - -void DisconnectedState::onExit(QEvent */*event*/) -{ - qDebug("DisconnectedState::onExit"); -} - -///////////////////////////////////////////////////////////////////// -// -ConnectingState::ConnectingState(QAbstractButton *button, QTcpSocket* socket, QState *parent) - : QState(parent), m_socket(socket) -{ - assignProperty(button, "text", "Connecting"); - assignProperty(button, "enabled", false); -} - -void ConnectingState::onEntry(QEvent */*event*/) -{ - qDebug("ConnectingState::onEntry"); - - connect(m_socket, SIGNAL(connected()), this, SIGNAL(connected())); - connect(m_socket, SIGNAL(error(QAbstractSocket::SocketError)), this, SLOT(onSocketError(QAbstractSocket::SocketError))); - - // TODO: we asume the socket is not already connected - // TODO: we should add code to do nothing if the connection is ok, or close and open a new one if the server or port changed - QSettings settings; - - m_socket->connectToHost(settings.value(SETUP_XBMC_SERVER, SETUP_XBMC_SERVER_DEFAULT).toString(), - settings.value(SETUP_XBMC_PORT, SETUP_XBMC_PORT_DEFAULT).toInt()); -} - -void ConnectingState::onExit(QEvent */*event*/) -{ - disconnect(m_socket, 0, this, 0); - qDebug("ConnectingState::onExit"); -} - -void ConnectingState::onSocketError(QAbstractSocket::SocketError) -{ - qDebug("ConnectingState::onSocketError: %s", qPrintable(m_socket->errorString())); - emit failed(); -} - -///////////////////////////////////////////////////////////////////// -// -ConnectedState::ConnectedState(QAbstractButton *button, QTcpSocket* socket, QState *parent) - : QState(parent), m_socket(socket) -{ - assignProperty(button, "text", "Disconnect"); - assignProperty(button, "enabled", true); -} - -void ConnectedState::onEntry(QEvent */*event*/) -{ - qDebug("ConnectedState::onEntry"); - - connect(m_socket, SIGNAL(readyRead()), this, SLOT(onSocketData())); - connect(m_socket, SIGNAL(disconnected()), this, SIGNAL(disconnected())); - connect(m_socket, SIGNAL(error(QAbstractSocket::SocketError)), this, SLOT(onSocketError(QAbstractSocket::SocketError))); -} - -void ConnectedState::onExit(QEvent */*event*/) -{ - disconnect(m_socket, 0, this, 0); - qDebug("ConnectedState::onExit"); -} - -void ConnectedState::onSocketError(QAbstractSocket::SocketError) -{ - qDebug("ConnectedState::onSocketError: %s", qPrintable(m_socket->errorString())); -} - -void ConnectedState::onSocketData() -{ - QTextStream stream(m_socket); - QString msg = stream.readAll(); - qDebug("ConnectedState::onSocketData: %s", qPrintable(msg)); -} - -///////////////////////////////////////////////////////////////////// -// -DisconnectingState::DisconnectingState(QAbstractButton *button, QTcpSocket* socket, QState *parent) - : QState(parent), m_socket(socket) -{ - assignProperty(button, "text", "Disconnecting"); - assignProperty(button, "enabled", false); -} - -void DisconnectingState::onEntry(QEvent */*event*/) -{ - qDebug("DisconnectingState::onEntry"); - - connect(m_socket, SIGNAL(disconnected()), this, SIGNAL(disconnected())); - connect(m_socket, SIGNAL(error(QAbstractSocket::SocketError)), this, SLOT(onSocketError(QAbstractSocket::SocketError))); - - if (m_socket->state() != QTcpSocket::UnconnectedState) { - qDebug("DisconnectingState::disconnectFromHost"); - m_socket->disconnectFromHost(); - } - else { - qDebug("DisconnectingState::disconnect"); - QTimer::singleShot(0, this, SIGNAL(disconnected())); - } -} - -void DisconnectingState::onExit(QEvent */*event*/) -{ - disconnect(m_socket, 0, this, 0); - qDebug("DisconnectingState::onExit"); -} - -void DisconnectingState::onSocketError(QAbstractSocket::SocketError) -{ - qDebug("DisconnectingState::onSocketError: %s", qPrintable(m_socket->errorString())); -} - -///////////////////////////////////////////////////////////////////// -// MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), m_ui(new Ui::MainWindow) { m_ui->setupUi(this); - m_manager = new QNetworkAccessManager(this); - - createStates(); - createTransitions(); - createConnections(); - - m_stateMachine.setInitialState(m_disconnectedState); - QTimer::singleShot(0, &m_stateMachine, SLOT(start())); + m_xbmc = new Xbmc(this); } MainWindow::~MainWindow() { + delete m_xbmc; delete m_ui; - delete m_manager; } void MainWindow::setOrientation(ScreenOrientation orientation) @@ -235,167 +93,12 @@ void MainWindow::on_actionSetup_triggered() } } -void MainWindow::createStates() -{ - m_disconnectedState = new DisconnectedState(m_ui->networkButton, &m_serverSocket, &m_stateMachine); - m_connectingState = new ConnectingState(m_ui->networkButton, &m_serverSocket, &m_stateMachine); - m_connectedState = new ConnectedState(m_ui->networkButton, &m_serverSocket, &m_stateMachine); - m_disconnectingState = new DisconnectingState(m_ui->networkButton, &m_serverSocket, &m_stateMachine); -} - -void MainWindow::createTransitions() -{ - m_disconnectedState->addTransition(m_ui->networkButton, SIGNAL(clicked()), m_connectingState); - - m_connectingState->addTransition(m_connectingState, SIGNAL(connected()), m_connectedState); - m_connectingState->addTransition(m_connectingState, SIGNAL(failed()), m_disconnectedState); - - m_connectedState->addTransition(m_ui->networkButton, SIGNAL(clicked()), m_disconnectingState); - m_connectedState->addTransition(m_connectedState, SIGNAL(disconnected()), m_disconnectedState); - - m_disconnectingState->addTransition(m_disconnectingState, SIGNAL(disconnected()), m_disconnectedState); -} - -void MainWindow::createConnections() -{ - connect(m_manager, SIGNAL(finished(QNetworkReply*)), this, SLOT(onNetworAccesskManagerReplyFinished(QNetworkReply*))); -} - -void MainWindow::on_videoPlayerStateBtn_clicked() -{ - QTextStream stream(&m_serverSocket); - stream << JsonEngine().videoPlayerState(); -} - -void MainWindow::on_videoPlayerPlayPauseBtn_clicked() -{ - QTextStream stream(&m_serverSocket); - stream << JsonEngine().videoPlayerPlayPause(); -} - -void MainWindow::on_videoPlayerStopBtn_clicked() -{ - QTextStream stream(&m_serverSocket); - stream << JsonEngine().serialize("VideoPlayer.Stop"); -} - -void MainWindow::on_videoPlayerSkipPreviousBtn_clicked() -{ - QTextStream stream(&m_serverSocket); - stream << JsonEngine().serialize("VideoPlayer.SkipPrevious"); -} - -void MainWindow::on_videoPlayerSkipNextBtn_clicked() -{ - QTextStream stream(&m_serverSocket); - stream << JsonEngine().serialize("VideoPlayer.SkipNext"); -} - -void MainWindow::on_videoPlayerBigSkipBackwardBtn_clicked() -{ - QTextStream stream(&m_serverSocket); - stream << JsonEngine().serialize("VideoPlayer.BigSkipBackward"); -} - -void MainWindow::on_videoPlayerBigSkipForwardBtn_clicked() -{ - QTextStream stream(&m_serverSocket); - stream << JsonEngine().serialize("VideoPlayer.BigSkipForward"); -} - -void MainWindow::on_videoPlayerSmallSkipBackwardBtn_clicked() -{ - QTextStream stream(&m_serverSocket); - stream << JsonEngine().serialize("VideoPlayer.SmallSkipBackward"); -} - -void MainWindow::on_videoPlayerSmallSkipForwardBtn_clicked() -{ - QTextStream stream(&m_serverSocket); - stream << JsonEngine().serialize("VideoPlayer.SmallSkipForward"); -} - -void MainWindow::on_videoPlayerGetTimeBtn_clicked() -{ - QTextStream stream(&m_serverSocket); - stream << JsonEngine().serialize("VideoPlayer.GetTime"); -} - -void MainWindow::on_xbmcGetVolumeBtn_clicked() -{ - QTextStream stream(&m_serverSocket); - stream << JsonEngine().serialize("XBMC.GetVolume"); -} - -void MainWindow::on_xbmcToggleMuteBtn_clicked() -{ - QTextStream stream(&m_serverSocket); - stream << JsonEngine().serialize("XBMC.ToggleMute"); -} - -void MainWindow::on_xbmcPlayBtn_clicked() -{ - QTextStream stream(&m_serverSocket); - stream << JsonEngine().serialize("XBMC.Play"); -} - -void MainWindow::on_xbmcQuitBtn_clicked() -{ - QTextStream stream(&m_serverSocket); - stream << JsonEngine().serialize("XBMC.Quit"); -} - -void MainWindow::on_playerGetActivePlayers_clicked() -{ - QTextStream stream(&m_serverSocket); - stream << JsonEngine().playerGetActivePlayers(); -} - -void MainWindow::on_actionLeftBtn_clicked() -{ - m_manager->get(QNetworkRequest(QUrl(QString("http://localhost:8080/xbmcCmds/xbmcHttp?command=Action(%1)").arg(ACTION_MOVE_LEFT)))); -} - -void MainWindow::onNetworAccesskManagerReplyFinished(QNetworkReply *reply) -{ - QTextStream stream(reply); - QString msg = stream.readAll(); - qDebug("MainWindow::onNetworAccesskManagerReplyFinished: %s", qPrintable(msg)); - - reply->deleteLater(); -} - -void MainWindow::on_actionRightBtn_clicked() -{ - m_manager->get(QNetworkRequest(QUrl(QString("http://localhost:8080/xbmcCmds/xbmcHttp?command=Action(%1)").arg(ACTION_MOVE_RIGHT)))); -} - -void MainWindow::on_actionUpBtn_clicked() -{ - m_manager->get(QNetworkRequest(QUrl(QString("http://localhost:8080/xbmcCmds/xbmcHttp?command=Action(%1)").arg(ACTION_MOVE_UP)))); -} - -void MainWindow::on_actionDownBtn_clicked() -{ - m_manager->get(QNetworkRequest(QUrl(QString("http://localhost:8080/xbmcCmds/xbmcHttp?command=Action(%1)").arg(ACTION_MOVE_DOWN)))); -} - -void MainWindow::on_actionEnterBtn_clicked() -{ - m_manager->get(QNetworkRequest(QUrl(QString("http://localhost:8080/xbmcCmds/xbmcHttp?command=Action(%1)").arg(ACTION_ENTER)))); -} - -void MainWindow::on_actionPlayBtn_clicked() -{ - m_manager->get(QNetworkRequest(QUrl(QString("http://localhost:8080/xbmcCmds/xbmcHttp?command=Action(%1)").arg(ACTION_PLAYER_PLAY)))); -} - -void MainWindow::on_actionSelectItemBtn_clicked() +void MainWindow::on_rightBtn_clicked() { - m_manager->get(QNetworkRequest(QUrl(QString("http://localhost:8080/xbmcCmds/xbmcHttp?command=Action(%1)").arg(ACTION_SELECT_ITEM)))); + m_xbmc->actionMoveRight(); } -void MainWindow::on_actionParentDirBtn_clicked() +void MainWindow::on_leftBtn_clicked() { - m_manager->get(QNetworkRequest(QUrl(QString("http://localhost:8080/xbmcCmds/xbmcHttp?command=Action(%1)").arg(ACTION_PARENT_DIR)))); + m_xbmc->actionMoveLeft(); } diff --git a/src/mainwindow.h b/src/mainwindow.h index 4ef3104..678e1cd 100644 --- a/src/mainwindow.h +++ b/src/mainwindow.h @@ -11,83 +11,12 @@ #define MAINWINDOW_H #include -#include -#include -#include -#include -#include +#include "xbmc.h" namespace Ui { class MainWindow; } -class DisconnectedState : public QState -{ -public: - DisconnectedState(QAbstractButton* button, QTcpSocket* socket, QState* parent = 0); - -protected: - void onEntry(QEvent *event); - void onExit(QEvent *event); - QTcpSocket* m_socket; -}; - -class ConnectingState : public QState -{ - Q_OBJECT -public: - ConnectingState(QAbstractButton* button, QTcpSocket* socket, QState* parent = 0); - -signals: - void connected(); - void failed(); - -private slots: - void onSocketError(QAbstractSocket::SocketError err); - -protected: - void onEntry(QEvent *event); - void onExit(QEvent *event); - QTcpSocket* m_socket; -}; - -class ConnectedState : public QState -{ - Q_OBJECT -public: - ConnectedState(QAbstractButton* button, QTcpSocket* socket, QState* parent = 0); - -private slots: - void onSocketError(QAbstractSocket::SocketError err); - void onSocketData(); - -signals: - void disconnected(); - -protected: - void onEntry(QEvent *event); - void onExit(QEvent *event); - QTcpSocket* m_socket; -}; - -class DisconnectingState : public QState -{ - Q_OBJECT -public: - DisconnectingState(QAbstractButton* button, QTcpSocket* socket, QState* parent = 0); - -signals: - void disconnected(); - -private slots: - void onSocketError(QAbstractSocket::SocketError err); - -protected: - void onEntry(QEvent *event); - void onExit(QEvent *event); - QTcpSocket* m_socket; -}; - class MainWindow : public QMainWindow { Q_OBJECT @@ -105,52 +34,14 @@ public: void showExpanded(); private slots: - // auto-connected slots void on_actionSetup_triggered(); - void on_videoPlayerStateBtn_clicked(); - void on_videoPlayerPlayPauseBtn_clicked(); - void on_videoPlayerStopBtn_clicked(); - void on_videoPlayerSkipPreviousBtn_clicked(); - void on_videoPlayerSkipNextBtn_clicked(); - void on_videoPlayerBigSkipBackwardBtn_clicked(); - void on_videoPlayerBigSkipForwardBtn_clicked(); - void on_videoPlayerSmallSkipBackwardBtn_clicked(); - void on_videoPlayerSmallSkipForwardBtn_clicked(); - void on_videoPlayerGetTimeBtn_clicked(); - void on_xbmcGetVolumeBtn_clicked(); - void on_xbmcToggleMuteBtn_clicked(); - void on_xbmcPlayBtn_clicked(); - void on_xbmcQuitBtn_clicked(); - void on_playerGetActivePlayers_clicked(); - void on_actionLeftBtn_clicked(); - - void onNetworAccesskManagerReplyFinished(QNetworkReply* reply); - void on_actionRightBtn_clicked(); - void on_actionUpBtn_clicked(); - void on_actionDownBtn_clicked(); - void on_actionEnterBtn_clicked(); - void on_actionPlayBtn_clicked(); - void on_actionSelectItemBtn_clicked(); - void on_actionParentDirBtn_clicked(); + void on_rightBtn_clicked(); + void on_leftBtn_clicked(); private: - void pendingNetworkOperation(bool pending); - - void createStates(); - void createTransitions(); - void createConnections(); - - QTcpSocket m_serverSocket; - QNetworkAccessManager *m_manager; Ui::MainWindow *m_ui; - - QStateMachine m_stateMachine; - - DisconnectedState* m_disconnectedState; - ConnectingState* m_connectingState; - ConnectedState* m_connectedState; - DisconnectingState* m_disconnectingState; + Xbmc* m_xbmc; }; #endif // MAINWINDOW_H diff --git a/src/mainwindow.ui b/src/mainwindow.ui index e8808e2..97cd748 100644 --- a/src/mainwindow.ui +++ b/src/mainwindow.ui @@ -7,274 +7,156 @@ 0 0 200 - 320 + 335 XBMC Net Movies RC - - - - - PushButton - - - - - - - 0 - - - - - - - - - VideoPlayer.State - - - ... - - - - - - - VideoPlayer.PlayPause - - - ... - - - - - - - VideoPlayer.Stop - - - ... - - - - - - - left - - - ... - - - - - - - XBMC.GetVolume - - - ... - - - - - - - VideoPlayer.BigSkipBackward - - - ... - - - - - - - VideoPlayer.BigSkipForward - - - ... - - - - - - - VideoPlayer.SmallSkipBackward - - - ... - - - - - - - XBMC.ToggleMute - - - ... - - - - - - - XBMC.Play - - - ... - - - - - - - right - - - ... - - - - - - - up - - - ... - - - - - - - VideoPlayer.SkipPrevious - - - ... - - - - - - - VideoPlayer.SmallSkipForward - - - ... - - - - - - - XBMC.Quit - - - ... - - - - - - - down - - - ... - - - - - - - enter - - - ... - - - - - - - playerGetActivePlayers - - - ... - - - - - - - VideoPlayer.GetTime - - - ... - - - - - - - VideoPlayer.SkipNext - - - ... - - - - - - - play - - - ... - - - - - - - select item - - - ... - - - - - - - parent dir - - - ... - - - - - - - - - false - - - - - - - - + + + + 63 + 243 + 26 + 25 + + + + ... + + + + + + 95 + 212 + 26 + 25 + + + + ... + + + + + + 31 + 212 + 26 + 25 + + + + ... + + + + + + 63 + 181 + 26 + 25 + + + + ... + + + + + + 63 + 212 + 26 + 25 + + + + ... + + + + + + 152 + 82 + 26 + 25 + + + + ... + + + + + + 152 + 113 + 26 + 25 + + + + ... + + + + + + 150 + 170 + 26 + 25 + + + + ... + + + + + + 11 + 81 + 26 + 25 + + + + ... + + + + + + 11 + 112 + 26 + 25 + + + + ... + + + + + + 150 + 270 + 26 + 25 + + + + ... + + diff --git a/src/xbmc.cpp b/src/xbmc.cpp new file mode 100644 index 0000000..2381b53 --- /dev/null +++ b/src/xbmc.cpp @@ -0,0 +1,82 @@ +#include "xbmc.h" +#include "constants.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 + +Xbmc::Xbmc(QObject *parent) : QObject(parent) +{ + m_manager = new QNetworkAccessManager(this); +} + +Xbmc::~Xbmc() +{ + delete m_manager; +} + +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(); + + QString url = QString("http://%1:%2/xbmcCmds/xbmcHttp?command=Action(%3)") + .arg(server) + .arg(port) + .arg(action); + + m_manager->get(QNetworkRequest(QUrl(url))); +} + +void Xbmc::actionMoveRight() +{ + do_command_action(ACTION_MOVE_RIGHT); +} + +void Xbmc::actionMoveLeft() +{ + do_command_action(ACTION_MOVE_LEFT); +} + +void Xbmc::actionMoveUp() +{ + do_command_action(ACTION_MOVE_UP); +} + +void Xbmc::actionMoveDown() +{ + do_command_action(ACTION_MOVE_DOWN); +} + +//void MainWindow::onNetworAccesskManagerReplyFinished(QNetworkReply *reply) +//{ +// QTextStream stream(reply); +// QString msg = stream.readAll(); +// qDebug("MainWindow::onNetworAccesskManagerReplyFinished: %s", qPrintable(msg)); + +// reply->deleteLater(); +//} diff --git a/src/xbmc.h b/src/xbmc.h new file mode 100644 index 0000000..4506b03 --- /dev/null +++ b/src/xbmc.h @@ -0,0 +1,25 @@ +#ifndef XBMC_H +#define XBMC_H + +#include +#include + +class Xbmc : public QObject +{ + Q_OBJECT +public: + Xbmc(QObject* parent = 0); + ~Xbmc(); + + void actionMoveRight(); + void actionMoveLeft(); + void actionMoveUp(); + void actionMoveDown(); + +private: + void do_command_action(int action); + + QNetworkAccessManager *m_manager; +}; + +#endif // XBMC_H diff --git a/src/xbmcnetmoviesremote.pro b/src/xbmcnetmoviesremote.pro index c959dab..8b2baf4 100644 --- a/src/xbmcnetmoviesremote.pro +++ b/src/xbmcnetmoviesremote.pro @@ -9,7 +9,7 @@ DEPLOYMENTFOLDERS = # file1 dir1 # Needs to be defined for Symbian DEFINES += NETWORKACCESS -QT += network maemo5 +QT += network symbian:TARGET.UID3 = 0xED8FBFF1 @@ -23,11 +23,11 @@ TARGET = xbmcnetmoviesremote SOURCES += main.cpp mainwindow.cpp \ setupdialog.cpp \ - json.cpp + xbmc.cpp HEADERS += mainwindow.h \ setupdialog.h \ constants.h \ - json.h + xbmc.h FORMS += mainwindow.ui \ setupdialog.ui