You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
kvirc/src/modules/mediaplayer/mp_jukinterface.cpp

186 lines
4.6 KiB

//=============================================================================
//
// File : mp_jukinterface.cpp
// Created on Tue 29 Mar 2005 01:38:34 by Szymon Stfeanek
//
// This file is part of the KVIrc IRC client distribution
// Copyright (C) 2005 Szymon Stfeanek <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 "mp_jukinterface.h"
#ifdef COMPILE_TDE_SUPPORT
#include "kvi_app.h"
#include "dcopclient.h"
#include "kurl.h"
#include <tqdatastream.h>
#include <tqvaluelist.h>
#include "kvi_locale.h"
// the dcop interface of this player is incomplete :(
MP_IMPLEMENT_DESCRIPTOR(
KviJukInterface,
"juk",
__tr2qs_ctx(
"An interface to the Juk TDE media player."
,
"mediaplayer"
)
)
KviJukInterface::KviJukInterface()
: KviDCOPHelper(true, "amarok")
{
}
KviJukInterface::~KviJukInterface()
{
}
int KviJukInterface::detect(bool bStart){ return detectApp("juk",bStart,90,96); }
bool KviJukInterface::prev(){ return voidRetVoidDCOPCall("Player","forward()"); }
bool KviJukInterface::next(){ return voidRetVoidDCOPCall("Player","back()"); }
bool KviJukInterface::play(){ return voidRetVoidDCOPCall("Player","play()"); }
bool KviJukInterface::stop(){ return voidRetVoidDCOPCall("Player","stop()"); }
bool KviJukInterface::pause(){ return voidRetVoidDCOPCall("Player","pause()"); }
bool KviJukInterface::quit(){ return voidRetVoidDCOPCall("MainApplication-Interface","quit()"); }
bool KviJukInterface::setVol(kvs_int_t &iVol)
{
return voidRetFloatDCOPCall("player","setVolume(float)",(float)(iVol)/255.);
}
bool KviJukInterface::jumpTo(kvs_int_t &iPos)
{
return voidRetIntDCOPCall("player","seek(int)",iPos/1000);
}
bool KviJukInterface::getShuffle()
{
TQString szMode;
if(!stringRetVoidDCOPCall("player","randomPlayMode()",szMode))return false;
return (szMode != "NoRandom");
}
bool KviJukInterface::setShuffle(bool &bVal)
{
TQString szMode;
if(bVal)
{
szMode = "Random";
} else {
szMode = "NoRandom";
}
if(!voidRetStringDCOPCall("player","setRandomPlayMode(TQString)",szMode))return false;
return true;
}
#define MP_DCOP_STRING_CALL(_fncname,_iface,_fnc) \
TQString KviJukInterface::_fncname() \
{ \
TQString ret; \
if(!stringRetVoidDCOPCall(_iface,_fnc,ret))return 0; \
return ret; \
}
MP_DCOP_STRING_CALL(nowPlaying,"Player","playingString()")
/*
FIXME: there is trackProperty(propertyName) for these...
MP_DCOP_STRING_CALL(artist,"player","artist()")
MP_DCOP_STRING_CALL(title,"player","title()")
MP_DCOP_STRING_CALL(genre,"player","genre()")
MP_DCOP_STRING_CALL(year,"player","year()")
MP_DCOP_STRING_CALL(comment,"player","comment()")
MP_DCOP_STRING_CALL(album,"player","album()")
int KviJukInterface::sampleRate()
{
int ret;
if(!intRetVoidDCOPCall("player","sampleRate()",ret))return false;
return ret;
}
*/
int KviJukInterface::length()
{
int ret;
if(!intRetVoidDCOPCall("player","totalTime()",ret))return false;
return ret * 1000;
}
int KviJukInterface::position()
{
int ret;
if(!intRetVoidDCOPCall("player","currentTime()",ret))return false;
return ret * 1000;
}
KviMediaPlayerInterface::PlayerStatus KviJukInterface::status()
{
int ret;
if(!intRetVoidDCOPCall("player","status()",ret))return KviMediaPlayerInterface::Unknown;
switch(ret)
{
case 0:
return KviMediaPlayerInterface::Stopped;
break;
case 1:
return KviMediaPlayerInterface::Paused;
break;
case 2:
return KviMediaPlayerInterface::Playing;
break;
default:
return KviMediaPlayerInterface::Unknown;
break;
}
return KviMediaPlayerInterface::Unknown;
}
TQString KviJukInterface::mrl()
{
// ugh :/
TQString ret;
return ret;
}
bool KviJukInterface::playMrl(const TQString &mrl)
{
TQString title;
TQByteArray data, replyData;
KviTQCString replyType;
TQDataStream arg(data,IO_WriteOnly);
arg << mrl;
if(!g_pApp->dcopClient()->call(m_szAppId,"playlist","play(TQString)",data,replyType,replyData))
return false;
return true;
}
#endif //COMPILE_TDE_SUPPORT