1
/* smplayer, GUI front-end for mplayer.
2
Copyright (C) 2006-2012 Ricardo Villalba <rvm@users.sourceforge.net>
4
This program is free software; you can redistribute it and/or modify
5
it under the terms of the GNU General Public License as published by
6
the Free Software Foundation; either version 2 of the License, or
7
(at your option) any later version.
9
This program is distributed in the hope that it will be useful,
10
but WITHOUT ANY WARRANTY; without even the implied warranty of
11
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
GNU General Public License for more details.
14
You should have received a copy of the GNU General Public License
15
along with this program; if not, write to the Free Software
16
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
21
#include <QTextStream>
22
#include <QHostAddress>
25
MyClient::MyClient(quint16 port, QObject * parent) : QObject(parent)
27
qDebug("MyClient::MyClient");
32
socket = new QTcpSocket(this);
35
MyClient::~MyClient() {
39
QString MyClient::readLine() {
43
while (!socket->canReadLine() && n < 5) {
44
//qDebug("Bytes available: %d", (int) socket->bytesAvailable());
45
socket->waitForReadyRead( timeout );
48
if (socket->canReadLine()) {
49
line = QString::fromUtf8(socket->readLine());
50
line.remove( QRegExp("[\r\n]") );
51
qDebug("MyClient::readLine: '%s'", line.toUtf8().data());
57
void MyClient::writeLine(QString l) {
58
socket->write( l.toUtf8() );
60
socket->waitForBytesWritten( timeout );
63
bool MyClient::openConnection() {
64
socket->connectToHost( QHostAddress::LocalHost, port, QIODevice::ReadWrite);
65
if (!socket->waitForConnected( timeout )) return false; // Can't connect
67
QString line = readLine();
68
if (!line.startsWith("SMPlayer")) return false;
69
qDebug("MyClient::sendFiles: connected to a SMPlayer instance!");
71
line = readLine(); // Read help message
77
bool MyClient::sendFiles( const QStringList & files, bool addToPlaylist) {
80
writeLine("open_files_start\r\n");
82
if (!line.startsWith("OK")) return false;
84
for (int n=0; n < files.count(); n++) {
85
writeLine("open_files " + files[n] + "\r\n");
87
if (!line.startsWith("OK")) return false;
91
writeLine("open_files_end\r\n");
93
writeLine("add_files_end\r\n");
95
writeLine("quit\r\n");
99
} while (!line.isNull());
102
socket->disconnectFromHost();
103
socket->waitForDisconnected( timeout );
109
bool MyClient::sendAction( const QString & action ) {
112
writeLine("f " + action + "\r\n");
114
if (!line.startsWith("OK")) return false;
117
socket->disconnectFromHost();
118
socket->waitForDisconnected( timeout );
124
bool MyClient::sendSubtitleFile(const QString & file) {
127
writeLine("load_sub " + file + "\r\n");
129
if (!line.startsWith("OK")) return false;
134
void MyClient::closeConnection() {
135
socket->disconnectFromHost();
136
socket->waitForDisconnected( timeout );