diff options
Diffstat (limited to 'src/modules/mediaplayer/MpInterface.cpp')
| -rw-r--r-- | src/modules/mediaplayer/MpInterface.cpp | 275 |
1 files changed, 275 insertions, 0 deletions
diff --git a/src/modules/mediaplayer/MpInterface.cpp b/src/modules/mediaplayer/MpInterface.cpp new file mode 100644 index 000000000..f5a1f569c --- /dev/null +++ b/src/modules/mediaplayer/MpInterface.cpp @@ -0,0 +1,275 @@ +//============================================================================= +// +// File : MpInterface.cpp +// Creation date : Fri Mar 25 20:01:25 2005 GMT by Szymon Stefanek +// +// This file is part of the KVIrc irc client distribution +// Copyright (C) 2005-2010 Szymon Stefanek (pragma at kvirc dot net) +// +// This program is FREE software. You can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your opinion) any later version. +// +// This program 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 General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, write to the Free Software Foundation, +// Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +// +//============================================================================= + +#include "MpInterface.h" +#include "MpMp3.h" + +#include "KviOptions.h" +#include "KviLocale.h" + +#include <QTextCodec> + +static QTextCodec * mediaplayer_get_codec() +{ + QTextCodec * c= QTextCodec::codecForName(KVI_OPTION_STRING(KviOption_stringWinampTextEncoding).toUtf8().data()); + if(!c)c = QTextCodec::codecForLocale(); + return c; + +} + +void MpInterface::notImplemented() +{ + setLastError(__tr2qs_ctx("Function not implemented","mediaplayer")); +} + +int MpInterface::position() +{ + notImplemented(); + return -1; +} + +int MpInterface::length() +{ + notImplemented(); + return -1; +} + +bool MpInterface::quit() +{ + notImplemented(); + return false; +} + +bool MpInterface::hide() +{ + notImplemented(); + return false; +} + +bool MpInterface::show() +{ + notImplemented(); + return false; +} + +bool MpInterface::minimize() +{ + notImplemented(); + return false; +} + +QString MpInterface::getLocalFile() +{ + QString ret = mrl(); + if(ret.isEmpty())return ret; + if(ret.startsWith("file://",Qt::CaseInsensitive)) + { + ret.remove(0,7); + return ret; + } + return QString(); +} + +QString MpInterface::amipEval(const QString &) +{ + return QString(); +} + +#define SCAN_MP3_FILE \ + QString f = getLocalFile(); \ + if(f.isEmpty())return QString(); \ + mp3info mp3; \ + if(!scan_mp3_file(f,&mp3))return QString(); \ + QTextCodec *pCodec; \ + pCodec=mediaplayer_get_codec(); + +#define SCAN_MP3_FILE_RET_INT \ + QString f = getLocalFile(); \ + if(f.isEmpty())return -1; \ + mp3info mp3; \ + if(!scan_mp3_file(f,&mp3))return -1; + + +QString MpInterface::artist() +{ + SCAN_MP3_FILE + return pCodec->toUnicode(QByteArray(mp3.id3.artist)); +} + +QString MpInterface::title() +{ + SCAN_MP3_FILE + return pCodec->toUnicode(QByteArray(mp3.id3.title)); +} + +QString MpInterface::genre() +{ + SCAN_MP3_FILE + return pCodec->toUnicode(QByteArray(get_typegenre(mp3.id3.genre[0]))); +} + +QString MpInterface::comment() +{ + SCAN_MP3_FILE + return pCodec->toUnicode(QByteArray(mp3.id3.comment)); +} + +QString MpInterface::year() +{ + SCAN_MP3_FILE + return QString(mp3.id3.year); +} + +QString MpInterface::album() +{ + SCAN_MP3_FILE + return pCodec->toUnicode(QByteArray(mp3.id3.album)); +} + +bool MpInterface::playMrl(const QString &) +{ + notImplemented(); + return false; +} + +bool MpInterface::amipExec(const QString &) +{ + notImplemented(); + return false; +} + +bool MpInterface::setVol(kvs_int_t &) +{ + notImplemented(); + return false; +} + +int MpInterface::getVol() +{ + notImplemented(); + return -1; +} + +bool MpInterface::mute() +{ + notImplemented(); + return false; +} + +bool MpInterface::jumpTo(kvs_int_t &) +{ + notImplemented(); + return false; +} + +MpInterface::PlayerStatus MpInterface::status() +{ + notImplemented(); + return MpInterface::Unknown; +} + +int MpInterface::bitRate() +{ + SCAN_MP3_FILE_RET_INT + return header_bitrate(&(mp3.header)); +} + +int MpInterface::sampleRate() +{ + SCAN_MP3_FILE_RET_INT + return header_frequency(&(mp3.header)); +} + +int MpInterface::channels() +{ + SCAN_MP3_FILE_RET_INT + return header_channels(&(mp3.header)); +} + +int MpInterface::getPlayListPos() +{ + notImplemented(); + return -1; +} + +bool MpInterface::setPlayListPos(kvs_int_t &) +{ + notImplemented(); + return false; +} + +int MpInterface::getListLength() +{ + notImplemented(); + return -1; +} + +int MpInterface::getEqData(kvs_int_t &) +{ + notImplemented(); + return -1; +} + +bool MpInterface::setEqData(kvs_int_t &, kvs_int_t &) +{ + notImplemented(); + return false; +} + +bool MpInterface::getRepeat() +{ + notImplemented(); + return false; +} + +bool MpInterface::getShuffle() +{ + notImplemented(); + return false; +} + +bool MpInterface::setRepeat(bool &) +{ + notImplemented(); + return false; +} + +bool MpInterface::setShuffle(bool &) +{ + notImplemented(); + return false; +} + +QString MpInterface::mediaType() +{ + QString ret = mrl(); + if(ret.endsWith(".mp3",Qt::CaseInsensitive))ret = "MPEG Layer 3"; + else if(ret.endsWith(".ogg",Qt::CaseInsensitive))ret = "OGG Vorbis"; + else if(ret.endsWith(".avi",Qt::CaseInsensitive))ret = "Audio Video Interleave"; + else if(ret.endsWith(".mpeg",Qt::CaseInsensitive))ret = "MPEG Video"; + else if(ret.endsWith(".mpg",Qt::CaseInsensitive))ret = "MPEG Video"; + else if(ret.startsWith("http://",Qt::CaseInsensitive))ret = "HTTP Audio Stream"; + else ret = QString(); + return ret; +} |
