source: smplayer/trunk/src/myclient.cpp@ 112

Last change on this file since 112 was 112, checked in by Silvan Scherrer, 15 years ago

Smplayer: eol-style

  • Property svn:eol-style set to LF
File size: 3.2 KB
Line 
1/* smplayer, GUI front-end for mplayer.
2 Copyright (C) 2006-2010 Ricardo Villalba <rvm@escomposlinux.org>
3
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.
8
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.
13
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
17*/
18
19#include "myclient.h"
20#include <QTcpSocket>
21#include <QTextStream>
22#include <QHostAddress>
23#include <QRegExp>
24
25MyClient::MyClient(quint16 port, QObject * parent) : QObject(parent)
26{
27 qDebug("MyClient::MyClient");
28
29 this->port = port;
30 timeout = 200;
31
32 socket = new QTcpSocket(this);
33}
34
35MyClient::~MyClient() {
36 delete socket;
37}
38
39QString MyClient::readLine() {
40 QString line;
41
42 int n = 0;
43 while (!socket->canReadLine() && n < 5) {
44 //qDebug("Bytes available: %d", (int) socket->bytesAvailable());
45 socket->waitForReadyRead( timeout );
46 n++;
47 }
48 if (socket->canReadLine()) {
49 line = QString::fromUtf8(socket->readLine());
50 line.remove( QRegExp("[\r\n]") );
51 qDebug("MyClient::readLine: '%s'", line.toUtf8().data());
52 }
53
54 return line;
55}
56
57void MyClient::writeLine(QString l) {
58 socket->write( l.toUtf8() );
59 socket->flush();
60 socket->waitForBytesWritten( timeout );
61}
62
63bool MyClient::openConnection() {
64 socket->connectToHost( QHostAddress::LocalHost, port, QIODevice::ReadWrite);
65 if (!socket->waitForConnected( timeout )) return false; // Can't connect
66
67 QString line = readLine();
68 if (!line.startsWith("SMPlayer")) return false;
69 qDebug("MyClient::sendFiles: connected to a SMPlayer instance!");
70
71 line = readLine(); // Read help message
72
73 return true;
74}
75
76
77bool MyClient::sendFiles( const QStringList & files, bool addToPlaylist) {
78 QString line;
79
80 writeLine("open_files_start\r\n");
81 line = readLine();
82 if (!line.startsWith("OK")) return false;
83
84 for (int n=0; n < files.count(); n++) {
85 writeLine("open_files " + files[n] + "\r\n");
86 line = readLine();
87 if (!line.startsWith("OK")) return false;
88 }
89
90 if (!addToPlaylist)
91 writeLine("open_files_end\r\n");
92 else
93 writeLine("add_files_end\r\n");
94
95 writeLine("quit\r\n");
96
97 do {
98 line = readLine();
99 } while (!line.isNull());
100
101 /*
102 socket->disconnectFromHost();
103 socket->waitForDisconnected( timeout );
104 */
105
106 return true;
107}
108
109bool MyClient::sendAction( const QString & action ) {
110 QString line;
111
112 writeLine("f " + action + "\r\n");
113 line = readLine();
114 if (!line.startsWith("OK")) return false;
115
116 /*
117 socket->disconnectFromHost();
118 socket->waitForDisconnected( timeout );
119 */
120
121 return true;
122}
123
124bool MyClient::sendSubtitleFile(const QString & file) {
125 QString line;
126
127 writeLine("load_sub " + file + "\r\n");
128 line = readLine();
129 if (!line.startsWith("OK")) return false;
130
131 return true;
132}
133
134void MyClient::closeConnection() {
135 socket->disconnectFromHost();
136 socket->waitForDisconnected( timeout );
137}
Note: See TracBrowser for help on using the repository browser.