#include "mainwindow.h"
#include "ui_mainwindow.h"
-#include "constants.h"
#include "setupdialog.h"
-#include "json.h"
+#include "xbmc.h"
#include <QCoreApplication>
-#include <QSettings>
-#include <QTimer>
-#include <QTextStream>
-#include <QNetworkReply>
#if defined(Q_OS_SYMBIAN) && defined(ORIENTATIONLOCK)
#include <eikenv.h>
#include <aknappui.h>
#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)
}
}
-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();
}