summaryrefslogtreecommitdiffstats
path: root/plugins/ipfilter/ipblockingprefpage.cpp
diff options
context:
space:
mode:
authortpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2010-01-20 02:37:40 +0000
committertpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2010-01-20 02:37:40 +0000
commit9ad5c7b5e23b4940e7a3ea3ca3a6fb77e6a8fab0 (patch)
treed088b5210e77d9fa91d954d8550e00e372b47378 /plugins/ipfilter/ipblockingprefpage.cpp
downloadktorrent-9ad5c7b5e23b4940e7a3ea3ca3a6fb77e6a8fab0.tar.gz
ktorrent-9ad5c7b5e23b4940e7a3ea3ca3a6fb77e6a8fab0.zip
Updated to final KDE3 ktorrent release (2.2.6)
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/applications/ktorrent@1077377 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'plugins/ipfilter/ipblockingprefpage.cpp')
-rw-r--r--plugins/ipfilter/ipblockingprefpage.cpp258
1 files changed, 258 insertions, 0 deletions
diff --git a/plugins/ipfilter/ipblockingprefpage.cpp b/plugins/ipfilter/ipblockingprefpage.cpp
new file mode 100644
index 0000000..6d06d1b
--- /dev/null
+++ b/plugins/ipfilter/ipblockingprefpage.cpp
@@ -0,0 +1,258 @@
+/***************************************************************************
+ * Copyright (C) 2005 by Joris Guisson *
+ * joris.guisson@gmail.com *
+ * ivasic@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. *
+ ***************************************************************************/
+#include "ipblockingprefpage.h"
+#include "ipblockingpref.h"
+#include "ipfilterpluginsettings.h"
+#include "ipfilterplugin.h"
+#include "convertdialog.h"
+
+#include <kapplication.h>
+#include <kglobal.h>
+#include <kstandarddirs.h>
+#include <klocale.h>
+#include <kiconloader.h>
+#include <kurlrequester.h>
+#include <kurl.h>
+#include <kmessagebox.h>
+#include <kio/netaccess.h>
+#include <kprogress.h>
+#include <kmimetype.h>
+
+#include <util/log.h>
+#include <torrent/globals.h>
+#include <interfaces/coreinterface.h>
+
+#include <qthread.h>
+#include <qlabel.h>
+#include <qcheckbox.h>
+#include <qregexp.h>
+#include <qvalidator.h>
+#include <qlayout.h>
+#include <qdialog.h>
+#include <qobject.h>
+
+using namespace bt;
+
+#define MAX_RANGES 500
+
+namespace kt
+{
+ IPBlockingPrefPageWidget::IPBlockingPrefPageWidget(QWidget* parent) : IPBlockingPref(parent)
+ {
+ m_url->setURL(IPBlockingPluginSettings::filterURL());
+ if (m_url->url() == "")
+ m_url->setURL(QString("http://www.bluetack.co.uk/config/splist.zip"));
+
+ bool use_level1 = IPBlockingPluginSettings::useLevel1();
+
+ checkUseLevel1->setChecked(use_level1);
+
+ if(use_level1)
+ {
+ lbl_status1->setText(i18n("Status: Loaded and running."));
+ m_url->setEnabled(true);
+ btnDownload->setEnabled(true);
+ }
+ else
+ {
+ lbl_status1->setText(i18n("Status: Not loaded."));
+ m_url->setEnabled(false);
+ btnDownload->setEnabled(false);
+ }
+
+ m_plugin = 0;
+ }
+
+ void IPBlockingPrefPageWidget::apply()
+ {
+ IPBlockingPluginSettings::setFilterURL(m_url->url());
+ IPBlockingPluginSettings::setUseLevel1(checkUseLevel1->isChecked());
+ IPBlockingPluginSettings::writeConfig();
+
+ if(checkUseLevel1->isChecked())
+ {
+ QFile target(KGlobal::dirs()->saveLocation("data","ktorrent") + "level1.dat");
+ if(target.exists())
+ lbl_status1->setText(i18n("Status: Loaded and running."));
+ else
+ lbl_status1->setText(i18n("Status: <font color=\"#ff0000\">Filter file not found.</font> Download and convert filter file."));
+ }
+ else
+ lbl_status1->setText(i18n("Status: Not loaded."));
+ }
+
+ void IPBlockingPrefPageWidget::btnDownload_clicked()
+ {
+ QString target(KGlobal::dirs()->saveLocation("data","ktorrent") + "level1");
+ QFile target_file(target);
+ QFile txtfile(target + ".txt");
+ KURL url(m_url->url());
+ KURL dest(target);
+ KURL temp(KGlobal::dirs()->saveLocation("data","ktorrent") + "level1.tmp");
+ if(KIO::NetAccess::exists(temp,false, this))
+ KIO::NetAccess::del(temp,this);
+
+ bool download = true;
+
+ if(txtfile.exists())
+ {
+ if((KMessageBox::questionYesNo(this, i18n("Selected file already exists, do you want to download it again?"),i18n("File Exists")) == 4))
+ download = false;
+ else
+ KIO::NetAccess::move(target, temp);
+ }
+
+ if(download)
+ {
+ if(!url.isLocalFile())
+ {
+ if (KIO::NetAccess::download(url,target,NULL))
+ {
+ //Level1 list successfully downloaded, remove temporary file
+ KIO::NetAccess::removeTempFile(target);
+ KIO::NetAccess::del(temp, this);
+ }
+ else
+ {
+ QString err = KIO::NetAccess::lastErrorString();
+ if(err != QString::null)
+ KMessageBox::error(0,KIO::NetAccess::lastErrorString(),i18n("Error"));
+ else
+ KIO::NetAccess::move(temp, target);
+
+
+ //we don't want to convert since download failed
+ return;
+ }
+ }
+ else
+ {
+ if (!KIO::NetAccess::file_copy(url,dest, -1, true))
+ {
+ KMessageBox::error(0,KIO::NetAccess::lastErrorString(),i18n("Error"));
+ return;
+ }
+ }
+
+ //now determine if it's ZIP or TXT file
+ KMimeType::Ptr ptr = KMimeType::findByPath(target);
+ if(ptr->name() == "application/x-zip")
+ {
+ KURL zipfile("zip:" + target + "/splist.txt");
+ KURL destinationfile(target + ".txt");
+ KIO::NetAccess::file_copy(zipfile,destinationfile, -1, true);
+ }
+ else
+ {
+ KURL zipfile(target);
+ KURL destinationfile(target + ".txt");
+ KIO::NetAccess::file_copy(zipfile,destinationfile, -1, true);
+ }
+
+ }
+ convert();
+ }
+
+ void IPBlockingPrefPageWidget::checkUseLevel1_toggled(bool check)
+ {
+ if(check)
+ {
+ m_url->setEnabled(true);
+ btnDownload->setEnabled(true);
+ }
+ else
+ {
+ lbl_status1->setText("");
+ m_url->setEnabled(false);
+ btnDownload->setEnabled(false);
+ }
+ }
+
+ void IPBlockingPrefPageWidget::convert()
+ {
+ QFile target(KGlobal::dirs()->saveLocation("data","ktorrent") + "level1.dat");
+ if(target.exists())
+ {
+ if((KMessageBox::questionYesNo(this,i18n("Filter file (level1.dat) already exists, do you want to convert it again?"),i18n("File Exists")) == 4))
+ return;
+// else
+// KIO::NetAccess::del(KGlobal::dirs()->saveLocation("data","ktorrent") + "level1.dat", NULL);
+ }
+ ConvertDialog dlg(m_plugin);
+ dlg.exec();
+ }
+
+ void IPBlockingPrefPageWidget::setPlugin(IPFilterPlugin* p)
+ {
+ m_plugin = p;
+ }
+
+ void IPBlockingPrefPageWidget::setPrefPage( IPBlockingPrefPage * p )
+ {
+ m_prefpage = p;
+ }
+
+ void IPBlockingPrefPageWidget::setConverting(bool enable)
+ {
+ btnDownload->setEnabled(enable);
+ lbl_status1->setText("");
+ }
+
+
+ ////////////////////////////////////////////////////////////////////////////////////
+
+ IPBlockingPrefPage::IPBlockingPrefPage(CoreInterface* core, IPFilterPlugin* p)
+ : PrefPageInterface(i18n("IPBlocking Filter"), i18n("IPBlocking Filter Options"), KGlobal::iconLoader()->loadIcon("filter",KIcon::NoGroup)), m_core(core), m_plugin(p)
+ {
+ widget = 0;
+ }
+
+ IPBlockingPrefPage::~IPBlockingPrefPage()
+ {}
+
+ bool IPBlockingPrefPage::apply()
+ {
+ widget->apply();
+
+ if(IPBlockingPluginSettings::useLevel1())
+ m_plugin->loadAntiP2P();
+ else
+ m_plugin->unloadAntiP2P();
+
+ return true;
+ }
+
+ void IPBlockingPrefPage::createWidget(QWidget* parent)
+ {
+ widget = new IPBlockingPrefPageWidget(parent);
+ widget->setPlugin(m_plugin);
+ widget->setPrefPage(this);
+ }
+
+ void IPBlockingPrefPage::deleteWidget()
+ {
+ delete widget;
+ widget = 0;
+ }
+
+ void IPBlockingPrefPage::updateData()
+ {}
+}