kio Library: downloader.cpp Source File (kio Library)

| # kio Library API Documentation
Overview | Class Hierarchy | Classes | Classes (annotated) | Members | Namespaces | Source Files

# 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

This file is part of the documentation for kio Library Version 3.4.1.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Sat Jun 11 20:23:52 2005 by doxygen 1.4.1 written by Dimitri van Heesch, © 1997-2003