mirror of
https://github.com/tomahawk-player/tomahawk.git
synced 2025-03-20 07:49:42 +01:00
Add a qnr mediastream WIP to support qnetworkreply QIODevices
This commit is contained in:
parent
d7e68f3a1d
commit
13ac8c093a
@ -191,6 +191,7 @@ set( libSources
|
||||
utils/rdioparser.cpp
|
||||
utils/shortenedlinkparser.cpp
|
||||
utils/stylehelper.cpp
|
||||
utils/qnr_iodevicestream.cpp
|
||||
|
||||
widgets/checkdirtree.cpp
|
||||
widgets/querylabel.cpp
|
||||
@ -407,6 +408,7 @@ set( libHeaders
|
||||
utils/itunesparser.h
|
||||
utils/rdioparser.h
|
||||
utils/shortenedlinkparser.h
|
||||
utils/qnr_iodevicestream.h
|
||||
|
||||
widgets/checkdirtree.h
|
||||
widgets/querylabel.h
|
||||
|
86
src/libtomahawk/utils/qnr_iodevicestream.cpp
Normal file
86
src/libtomahawk/utils/qnr_iodevicestream.cpp
Normal file
@ -0,0 +1,86 @@
|
||||
/* This file is part of the KDE project
|
||||
Copyright (C) 2007 Matthias Kretz <kretz@kde.org>
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) version 3, or any
|
||||
later version accepted by the membership of KDE e.V. (or its
|
||||
successor approved by the membership of KDE e.V.), Nokia Corporation
|
||||
(or its successors, if any) and the KDE Free Qt Foundation, which shall
|
||||
act as a proxy defined in Section 6 of version 3 of the license.
|
||||
|
||||
This library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with this library. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
*/
|
||||
|
||||
#include "qnr_iodevicestream.h"
|
||||
|
||||
#include <QtNetwork/QNetworkReply>
|
||||
|
||||
using namespace Tomahawk;
|
||||
|
||||
QNR_IODeviceStream::QNR_IODeviceStream(QIODevice* ioDevice, QObject* parent)
|
||||
: Phonon::AbstractMediaStream( parent ),
|
||||
_ioDevice(ioDevice),
|
||||
_networkReply(0)
|
||||
{
|
||||
_ioDevice->reset();
|
||||
if (!_ioDevice->isOpen()) {
|
||||
_ioDevice->open(QIODevice::ReadOnly);
|
||||
}
|
||||
|
||||
Q_ASSERT(ioDevice->isOpen());
|
||||
Q_ASSERT(ioDevice->isReadable());
|
||||
// streamSize = ioDevice->size();
|
||||
// streamSeekable = !ioDevice->isSequential();
|
||||
//
|
||||
// Allow handling of QNetworkReplies WRT its isFinished() function..
|
||||
_networkReply = qobject_cast<QNetworkReply *>(_ioDevice);
|
||||
}
|
||||
|
||||
|
||||
QNR_IODeviceStream::~QNR_IODeviceStream()
|
||||
{
|
||||
}
|
||||
|
||||
void QNR_IODeviceStream::reset()
|
||||
{
|
||||
_ioDevice->reset();
|
||||
//resetDone();
|
||||
}
|
||||
|
||||
void QNR_IODeviceStream::needData()
|
||||
{
|
||||
quint32 size = 4096;
|
||||
const QByteArray data = _ioDevice->read(size);
|
||||
// #ifdef __GNUC__
|
||||
// #warning TODO 4.5 - make sure we do not break anything without this, it is preventing IODs from working when they did not yet emit readyRead()
|
||||
// #endif
|
||||
// if (data.isEmpty() && !d->ioDevice->atEnd()) {
|
||||
// error(Phonon::NormalError, d->ioDevice->errorString());
|
||||
// }
|
||||
writeData(data);
|
||||
if (_ioDevice->atEnd()) {
|
||||
// If the IO device was identified as QNetworkReply also take its
|
||||
// isFinished() into account, when triggering EOD.
|
||||
if (!_networkReply || _networkReply->isFinished()) {
|
||||
endOfData();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void QNR_IODeviceStream::seekStream(qint64 offset)
|
||||
{
|
||||
_ioDevice->seek(offset);
|
||||
//seekStreamDone();
|
||||
}
|
||||
|
||||
|
||||
// vim: sw=4 sts=4 et tw=100
|
54
src/libtomahawk/utils/qnr_iodevicestream.h
Normal file
54
src/libtomahawk/utils/qnr_iodevicestream.h
Normal file
@ -0,0 +1,54 @@
|
||||
/* This file is part of the KDE project
|
||||
Copyright (C) 2007 Matthias Kretz <kretz@kde.org>
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) version 3, or any
|
||||
later version accepted by the membership of KDE e.V. (or its
|
||||
successor approved by the membership of KDE e.V.), Nokia Corporation
|
||||
(or its successors, if any) and the KDE Free Qt Foundation, which shall
|
||||
act as a proxy defined in Section 6 of version 3 of the license.
|
||||
|
||||
This library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with this library. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
*/
|
||||
|
||||
#ifndef QNR_IODEVICESTREAM_H
|
||||
#define QNR_IODEVICESTREAM_H
|
||||
|
||||
#include "dllmacro.h"
|
||||
|
||||
#include <phonon/abstractmediastream.h>
|
||||
|
||||
class QNetworkReply;
|
||||
class QIODevice;
|
||||
|
||||
namespace Tomahawk
|
||||
{
|
||||
|
||||
class DLLEXPORT QNR_IODeviceStream : public Phonon::AbstractMediaStream
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit QNR_IODeviceStream(QIODevice *ioDevice, QObject *parent = 0);
|
||||
~QNR_IODeviceStream();
|
||||
|
||||
void reset();
|
||||
void needData();
|
||||
void seekStream(qint64);
|
||||
|
||||
private:
|
||||
QIODevice *_ioDevice;
|
||||
QNetworkReply *_networkReply;
|
||||
};
|
||||
|
||||
} // namespace Tomahawk
|
||||
|
||||
#endif // QNR_IODEVICESTREAM_H
|
Loading…
x
Reference in New Issue
Block a user