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.
94 lines
2.9 KiB
94 lines
2.9 KiB
/***************************************************************************
|
|
station-drag-object.cpp - description
|
|
-------------------
|
|
begin : Sun Aug 28 2005
|
|
copyright : (C) 2005 by Martin Witte
|
|
email : witte@kawo1.rwth-aachen.de
|
|
***************************************************************************/
|
|
|
|
/***************************************************************************
|
|
* *
|
|
* 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 option) any later version. *
|
|
* *
|
|
***************************************************************************/
|
|
|
|
#include "include/station-drag-object.h"
|
|
#include "include/errorlog-interfaces.h"
|
|
#include <klocale.h>
|
|
|
|
#define STATION_LIST_MIME_TYPE "multimedia/kradio-stationids"
|
|
|
|
StationDragObject::StationDragObject(const TQStringList &stationIDs, TQWidget *dragSource, const char * name)
|
|
: TQStoredDrag(STATION_LIST_MIME_TYPE, dragSource, name)
|
|
{
|
|
setStations(stationIDs);
|
|
}
|
|
|
|
StationDragObject::StationDragObject(TQWidget *dragSource, const char * name)
|
|
: TQStoredDrag(STATION_LIST_MIME_TYPE, dragSource, name)
|
|
{
|
|
}
|
|
|
|
|
|
StationDragObject::~StationDragObject()
|
|
{
|
|
}
|
|
|
|
const char *StationDragObject::format(int i) const
|
|
{
|
|
if (i == 0)
|
|
return STATION_LIST_MIME_TYPE;
|
|
else
|
|
return NULL;
|
|
}
|
|
|
|
|
|
void StationDragObject::setStations(const TQStringList &stationIDs)
|
|
{
|
|
TQByteArray tmp;
|
|
int pos = 0;
|
|
for (TQValueListConstIterator<TQString> it=stationIDs.begin(); it != stationIDs.end(); ++it) {
|
|
const TQString &s = *it;
|
|
tmp.resize(tmp.size()+s.length() + 1);
|
|
for (unsigned int k = 0; k < s.length(); ++k) {
|
|
tmp[pos++] = s[k].latin1();
|
|
}
|
|
tmp[pos++] = 0;
|
|
}
|
|
setEncodedData(tmp);
|
|
}
|
|
|
|
|
|
bool StationDragObject::canDecode (const TQMimeSource *e)
|
|
{
|
|
IErrorLogClient::staticLogDebug(e->format(0));
|
|
bool retval = (e && e->format(0) == TQString(STATION_LIST_MIME_TYPE));
|
|
if (retval)
|
|
IErrorLogClient::staticLogDebug(i18n("canDecode = true"));
|
|
return retval;
|
|
}
|
|
|
|
|
|
bool StationDragObject::decode (const TQMimeSource *e, TQStringList &stationIDs)
|
|
{
|
|
stationIDs.clear();
|
|
if (canDecode(e)) {
|
|
const TQByteArray &tmp = e->tqencodedData(e->format(0));
|
|
TQString str = "";
|
|
for (unsigned int pos = 0; pos < tmp.size(); ++pos) {
|
|
if (tmp[pos]) {
|
|
str.append(tmp[pos]);
|
|
} else {
|
|
stationIDs.append(str);
|
|
str = "";
|
|
}
|
|
}
|
|
}
|
|
return true;
|
|
}
|
|
|
|
|