[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: extragear/network/kmldonkey
From: Gioacchino Mazzurco <gmazzurco89 () gmail ! com>
Date: 2009-06-08 19:23:24
Message-ID: 1244489004.356366.31829.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 979030 by gmazzurco:
a lot of fix and improvement thanks to Aleksey Markelov
M +6 -17 kmldonkey/kmldonkey.cpp
M +2 -4 kmlplasma/kmlplasmaapplet.cpp
M +3 -3 kmlplasma/kmlplasmaengine.cpp
M +2 -2 kmlplasma/kmlplasmaengine.h
M +40 -0 libkmldonkey/donkeyprotocol.cpp
M +2 -0 libkmldonkey/donkeyprotocol.h
--- trunk/extragear/network/kmldonkey/kmldonkey/kmldonkey.cpp #979029:979030
@@ -93,7 +93,6 @@
#include <hostdialog.h>
#include <donkeyhost.h>
#include <emulecollection.h>
-#include <torrenthost.h>
#include <kdeversion.h>
#include <KShortcutsDialog>
@@ -687,15 +686,7 @@
qDebug() << filePath;
if (filePath.isEmpty()) return;
- TorrentHost * torrentSender = new TorrentHost(filePath, \
donkey->getLocalAddress(), \
QHostAddress(donkey->getHost()->address()));
- qDebug() << "submitting file: " << filePath
- << "local address: " << donkey->getLocalAddress()
- << "donkey host: " << donkey->getHost()->address();
- QString url = QString("http://%1:%2/%3")
- .arg(donkey->getLocalAddress().toString())
- .arg(torrentSender->serverPort())
- .arg(QFileInfo(filePath).fileName());
- donkey->submitUrl(url);
+ donkey->submitUrl( KUrl::fromPath(filePath) );
}
@@ -710,18 +701,16 @@
void KMLDonkey::dragEnterEvent(QDragEnterEvent* event)
{
- event->accept(Q3UriDrag::canDecode(event));
+ event->setAccepted( KUrl::List::canDecode( event->mimeData() ) );
}
void KMLDonkey::dropEvent(QDropEvent* event)
{
- QStringList uri;
+ if( !KUrl::List::canDecode( event->mimeData() ) )
+ return;
- if (Q3UriDrag::decodeToUnicodeUris(event, uri))
- {
- QStringList::Iterator it;
- for (it = uri.begin(); it != uri.end(); ++it)
- donkey->submitUrl(*it);
+ foreach ( const KUrl &url, KUrl::List::fromMimeData(event->mimeData()) ) {
+ donkey->submitUrl(url);
}
}
--- trunk/extragear/network/kmldonkey/kmlplasma/kmlplasmaapplet.cpp #979029:979030
@@ -222,14 +222,12 @@
if( ! KUrl::List::canDecode(event->mimeData()) )
return;
- QStringList urls;
- foreach(const KUrl &url, KUrl::List::fromMimeData(event->mimeData()))
- urls << url.url();
+ const KUrl::List urls = KUrl::List::fromMimeData(event->mimeData());
#ifdef QT_DEBUG
bool ok =
#endif
- QMetaObject::invokeMethod(m_engine,"submitUrls",Q_ARG(QStringList,urls));
+ QMetaObject::invokeMethod(m_engine,"submitUrls",Q_ARG(KUrl::List,urls));
Q_ASSERT(ok);
--- trunk/extragear/network/kmldonkey/kmlplasma/kmlplasmaengine.cpp #979029:979030
@@ -176,15 +176,15 @@
HostDialog::showDialog(0, d->hostManager, d->donkey);
}
-void KmlPlasmaEngine::submitUrl(const QString& url)
+void KmlPlasmaEngine::submitUrl(const KUrl &url)
{
kDebug() << "KmlPlasmaEngine::submitUrl url=" << url;
d->donkey->submitUrl(url);
}
-void KmlPlasmaEngine::submitUrls(const QStringList& urls)
+void KmlPlasmaEngine::submitUrls(const KUrl::List &urls)
{
- foreach(const QString &url, urls)
+ foreach(const KUrl &url, urls)
submitUrl(url);
}
--- trunk/extragear/network/kmldonkey/kmlplasma/kmlplasmaengine.h #979029:979030
@@ -50,8 +50,8 @@
void configureConnections();
void connectToHost(const QString& hostname = QString());
- void submitUrl(const QString& url);
- void submitUrls(const QStringList& urls);
+ void submitUrl(const KUrl& url);
+ void submitUrls(const KUrl::List& urls);
protected Q_SLOTS:
void connectToHost(HostInterface* host);
--- trunk/extragear/network/kmldonkey/libkmldonkey/donkeyprotocol.cpp #979029:979030
@@ -36,10 +36,13 @@
#include "hostiface.h"
#include "donkeyhost.h"
#include "searchquery.h"
+#include "torrenthost.h"
#include <qregexp.h>
//Added by qt3to4:
#include <Q3ValueList>
+#include <QFileInfo>
+#include <QHostAddress>
#include <kdebug.h>
DonkeyProtocol::DonkeyProtocol(bool poll, QObject *parent)
@@ -980,6 +983,43 @@
}
}
+void DonkeyProtocol::submitUrl(const KUrl &url)
+{
+ downloadstarted = true;//?
+ const QString scheme = url.scheme().toLower();
+ const bool isTorrent = url.url().endsWith(".torrent",Qt::CaseInsensitive);
+ if ( (scheme.isEmpty() || scheme == "file") && isTorrent ) {
+ //local torrent
+ const QString fileName = url.path();
+ const QHostAddress localAddress = sock.address();
+ const QHostAddress donkeyAddress = QHostAddress(getHost()->address());
+ //XXX: may be improved by using one instance of TorrentHost
+ //and make distinction inside instead of using instance per file
+ TorrentHost * torrentSender = new TorrentHost(fileName, localAddress, \
donkeyAddress); + kDebug() << "submitting file: " << fileName
+ << "local address: " << localAddress
+ << "donkey host: " << donkeyAddress;
+
+ KUrl httpUrl;
+ httpUrl.setScheme("http");
+ httpUrl.setHost(localAddress.toString());
+ httpUrl.setPort(torrentSender->serverPort());
+ httpUrl.setPath(QFileInfo(fileName).fileName());
+ //resubmit
+ submitUrl(httpUrl);
+ } else if ( (scheme == "http" || scheme == "ftp") && !isTorrent) {
+ //web file
+ sendConsoleMessage("http \"" + url.url() + "\"");
+ }
+ else {
+ //other
+ DonkeyMessage out(Url);
+ out.writeString(url.url());
+ sock.sendMessage(out);
+ }
+}
+
+
void DonkeyProtocol::sendMessage(const DonkeyMessage& msg)
{
sock.sendMessage(msg);
--- trunk/extragear/network/kmldonkey/libkmldonkey/donkeyprotocol.h #979029:979030
@@ -510,6 +510,8 @@
*/
void submitUrl(const QString& url);
+ void submitUrl(const KUrl &url);
+
//! Send a DonkeyMessage to the core.
/*!
* Dispatch a DonkeyMessage to the core. This is a low level
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic