/*************************************************************************** * Copyright (C) 2005 by Joris Guisson * * joris.guisson@gmail.com * * * * 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. * * * * 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. * ***************************************************************************/ #if 0 #include "announcelist.h" #include "bnode.h" #include #include "globals.h" #include #include #include #include #include namespace bt { AnnounceList::AnnounceList() :m_datadir(TQString()) { curr = 0; } AnnounceList::~AnnounceList() { saveTrackers(); } void AnnounceList::load(BNode* node) { BListNode* ml = dynamic_cast(node); if (!ml) return; //ml->printDebugInfo(); for (Uint32 i = 0;i < ml->getNumChildren();i++) { BListNode* url = dynamic_cast(ml->getChild(i)); if (!url) throw Error(i18n("Parse Error")); for (Uint32 j = 0;j < url->getNumChildren();j++) { BValueNode* vn = dynamic_cast(url->getChild(j)); if (!vn) throw Error(i18n("Parse Error")); KURL url(vn->data().toString().stripWhiteSpace()); trackers.append(url); //Out() << "Added tracker " << url << endl; } } } const KURL::List AnnounceList::getTrackerURLs() { KURL::List complete(trackers); complete += custom_trackers; return complete; } void AnnounceList::addTracker(KURL url, bool custom) { if(custom) custom_trackers.append(url); else trackers.append(url); } bool AnnounceList::removeTracker(KURL url) { KURL::List::iterator i = custom_trackers.find(url); if(i != custom_trackers.end()) { custom_trackers.remove(i); return true; } else return false; } KURL AnnounceList::getTrackerURL(bool last_was_succesfull) const { int defaults = trackers.count(); int customs = custom_trackers.count(); int total = defaults + customs; if (total == 0) return KURL(); // return invalid url is there are no trackers if (last_was_succesfull) return curr < defaults ? *trackers.at(curr) : *custom_trackers.at(curr % customs); curr = (curr + 1) % total; return curr < defaults ? *trackers.at(curr) : *custom_trackers.at(curr % customs); } void AnnounceList::debugPrintURLList() { Out() << "Announce List : " << endl; for (KURL::List::iterator i = trackers.begin();i != trackers.end();i++) Out() << "URL : " << *i << endl; } void AnnounceList::saveTrackers() { TQFile file(m_datadir + "trackers"); if(!file.open(IO_WriteOnly)) return; TQTextStream stream(&file); for (KURL::List::iterator i = custom_trackers.begin();i != custom_trackers.end();i++) stream << (*i).prettyURL() << ::endl; file.close(); } void AnnounceList::loadTrackers() { TQFile file(m_datadir + "trackers"); if(!file.open(IO_ReadOnly)) return; TQTextStream stream(&file); while (!stream.atEnd()) { KURL url(stream.readLine().stripWhiteSpace()); custom_trackers.append(url); } file.close(); } void AnnounceList::setDatadir(const TQString& theValue) { m_datadir = theValue; loadTrackers(); } void AnnounceList::setTracker(KURL url) { int defaults = trackers.count(); int customs = custom_trackers.count(); int total = defaults + customs; int backup = curr; for(curr=0; currgetNumTrackerURLs();i++) { KURL url = *al->trackers.at(i); if (!trackers.contains(url) && !custom_trackers.contains(url)) custom_trackers.append(url); } } } #endif