• Skip to content
  • Skip to link menu
KDE 3.5 API Reference
  • KDE API Reference
  • API Reference
  • Sitemap
  • Contact Us
 

kio

downloader.cpp

Go to the documentation of this file.
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., 51 Franklin Street, Fifth Floor,
00017    Boston, MA 02110-1301, 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

kio

Skip menu "kio"
  • Main Page
  • Modules
  • Namespace List
  • Class Hierarchy
  • Alphabetical List
  • Class List
  • File List
  • Namespace Members
  • Class Members
  • Related Pages

API Reference

Skip menu "API Reference"
  • dcop
  • DNSSD
  • interfaces
  • Kate
  • kconf_update
  • KDECore
  • KDED
  • kdefx
  • KDEsu
  • kdeui
  • KDocTools
  • KHTML
  • KImgIO
  • KInit
  • kio
  • kioslave
  • KJS
  • KNewStuff
  • KParts
  • KUtils
Generated for API Reference by doxygen 1.5.9
This website is maintained by Adriaan de Groot and Allen Winter.
KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal