downloader.cpp
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
#include <cstdlib>
00022
#include <cstring>
00023
00024
#include <qtextcodec.h>
00025
00026
#include <kcharsets.h>
00027
#include <kglobal.h>
00028
#include <klocale.h>
00029
#include <kio/job.h>
00030
00031
#include "downloader.moc"
00032
00033
namespace KPAC
00034 {
00035 Downloader::Downloader(
QObject* parent )
00036 :
QObject( parent )
00037 {
00038 }
00039
00040
void Downloader::download(
const KURL& url )
00041 {
00042 m_data.resize( 0 );
00043 m_script = QString::null;
00044 m_scriptURL = url;
00045
00046
KIO::TransferJob* job =
KIO::get( url,
false,
false );
00047 connect( job, SIGNAL(
data(
KIO::Job*,
const QByteArray& ) ),
00048 SLOT(
data(
KIO::Job*,
const QByteArray& ) ) );
00049 connect( job, SIGNAL(
result(
KIO::Job* ) ), SLOT(
result(
KIO::Job* ) ) );
00050 }
00051
00052
void Downloader::failed()
00053 {
00054 emit
result(
false );
00055 }
00056
00057
void Downloader::setError(
const QString& error )
00058 {
00059 m_error = error;
00060 }
00061
00062
void Downloader::data(
KIO::Job*,
const QByteArray& data )
00063 {
00064
unsigned offset = m_data.size();
00065 m_data.resize( offset + data.size() );
00066 std::memcpy( m_data.data() + offset, data.data(), data.size() );
00067 }
00068
00069
void Downloader::result(
KIO::Job* job )
00070 {
00071
if ( !job->
error() && !static_cast< KIO::TransferJob* >( job )->isErrorPage() )
00072 {
00073
bool dummy;
00074 m_script =
KGlobal::charsets()->
codecForName(
00075 job->
queryMetaData(
"charset" ), dummy )->toUnicode( m_data );
00076 emit
result(
true );
00077 }
00078
else
00079 {
00080
if ( job->
error() )
00081 setError( i18n(
"Could not download the proxy configuration script:\n%1" )
00082 .arg( job->
errorString() ) );
00083
else setError( i18n(
"Could not download the proxy configuration script" ) );
00084 failed();
00085 }
00086 }
00087 }
00088
00089
This file is part of the documentation for kio Library Version 3.2.3.