~ubuntu-branches/ubuntu/trusty/smplayer/trusty

« back to all changes in this revision

Viewing changes to src/myclient.cpp

  • Committer: Package Import Robot
  • Author(s): Maia Kozheva, Maia Kozheva, Alessio Treglia
  • Date: 2012-04-14 12:01:57 UTC
  • mfrom: (20.1.1 sid)
  • Revision ID: package-import@ubuntu.com-20120414120157-7yx90enjufwsc3fd
Tags: 0.8.0-1
[ Maia Kozheva ]
* New upstream release:
  - Changes since 0.7.1:
    + A toolbar editor has been added. Now it's possible to select the
      buttons and controls that want to appear in the toolbars.
    + New video filters: gradfun, blur and sharpen.
    + Now it's possible to change the GUI (default, mini, mpc) at runtime,
      no restart required.
    + sub files from opensubtitles should work again.
    + (Youtube) Recognize short urls (like this one:
      http://y2u.be/F5OcZBVPwOA)
    + Better support for chapters in video files.
    + Bug fix: remote m3u files work from the favorites menu or command line.
    + Internal changes in the single instance option (switch to 
      QtSingleApplication).
  - Fixes since 0.7.0:
    + SMPlayer took more than 10 seconds to show when running for the very
      first time.
    + The links to download subtitles from Opensubtitles were wrong.
    + SMPlayer crashed in the favorite editor when trying to select a file
      if the KDE open dialog was used.
  - Changes since 0.7.0:
    + By default the screenshots are saved in the user's pictures folder
      instead of the SMPlayer's config folder.
    + Now it's possible to change the opensubtitles server.
    + Youtube: seeking is slow with flv videos, so now flv videos have the
      lowest priority.
    + Youtube: now it's possible to search and download videos from youtube.
      This is provided by an external application (in linux you have to
      install an independent package: smtube).
* debian/copyright:
  - Rewrite according to DEP-5 specification.
* debian/control:
  - Depend on mplayer2 | mplayer. (Closes: #638279)
  - Update Standards-Version to 3.9.3.
* Remove debian/patches/handle_local_urls.diff, merged upstream.

[ Alessio Treglia ]
* Mention smplayer is also a front-end for MPlayer2.
* Fix small typo in the description.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/*  smplayer, GUI front-end for mplayer.
2
 
    Copyright (C) 2006-2012 Ricardo Villalba <rvm@users.sourceforge.net>
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
 
 
25
 
MyClient::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
 
 
35
 
MyClient::~MyClient() {
36
 
        delete socket;
37
 
}
38
 
 
39
 
QString 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
 
 
57
 
void MyClient::writeLine(QString l) {
58
 
        socket->write( l.toUtf8() );
59
 
        socket->flush();
60
 
        socket->waitForBytesWritten( timeout );
61
 
}
62
 
 
63
 
bool 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
 
 
77
 
bool 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
 
 
109
 
bool 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
 
 
124
 
bool 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
 
 
134
 
void MyClient::closeConnection() {
135
 
        socket->disconnectFromHost();
136
 
        socket->waitForDisconnected( timeout );
137
 
}