kio Library API Documentation

downloader.cpp

00001 /* 00002 Copyright (c) 2003 Malte Starostik <malte@kde.org> 00003 00004 This library is free software; you can redistribute it and/or 00005 modify it under the terms of the GNU Library General Public 00006 License as published by the Free Software Foundation; either 00007 version 2 of the License, or (at your option) any later version. 00008 00009 This library is distributed in the hope that it will be useful, 00010 but WITHOUT ANY WARRANTY; without even the implied warranty of 00011 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00012 Library General Public License for more details. 00013 00014 You should have received a copy of the GNU Library General Public License 00015 along with this library; see the file COPYING.LIB. If not, write to 00016 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 00017 Boston, MA 02111-1307, USA. 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" ) ); // error page 00084 failed(); 00085 } 00086 } 00087 } 00088 00089 // vim: ts=4 sw=4 et
KDE Logo
This file is part of the documentation for kio Library Version 3.3.0.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Wed Sep 29 09:41:00 2004 by doxygen 1.3.8 written by Dimitri van Heesch, © 1997-2003