• Skip to content
  • Skip to link menu
KDE API Reference
  • KDE API Reference
  • kdelibs API Reference
  • KDE Home
  • Contact Us
 

KIO

  • sources
  • kde-4.12
  • kdelibs
  • kio
  • misc
  • kpac
downloader.cpp
Go to the documentation of this file.
1 /*
2  Copyright (c) 2003 Malte Starostik <malte@kde.org>
3 
4  This library is free software; you can redistribute it and/or
5  modify it under the terms of the GNU Library General Public
6  License as published by the Free Software Foundation; either
7  version 2 of the License, or (at your option) any later version.
8 
9  This library is distributed in the hope that it will be useful,
10  but WITHOUT ANY WARRANTY; without even the implied warranty of
11  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12  Library General Public License for more details.
13 
14  You should have received a copy of the GNU Library General Public License
15  along with this library; see the file COPYING.LIB. If not, write to
16  the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
17  Boston, MA 02110-1301, USA.
18 */
19 
20 #include "downloader.h"
21 
22 #include <cstdlib>
23 #include <cstring>
24 
25 #include <QtCore/QTextCodec>
26 
27 #include <kcharsets.h>
28 #include <kglobal.h>
29 #include <klocale.h>
30 #include <kio/job.h>
31 
32 namespace KPAC
33 {
34  Downloader::Downloader( QObject* parent )
35  : QObject( parent )
36  {
37  }
38 
39  void Downloader::download( const KUrl& url )
40  {
41  m_data.resize( 0 );
42  m_script.clear();
43  m_scriptURL = url;
44 
45  KIO::TransferJob* job = KIO::get( url, KIO::NoReload, KIO::HideProgressInfo );
46  connect( job, SIGNAL(data(KIO::Job*,QByteArray)),
47  SLOT(data(KIO::Job*,QByteArray)) );
48  connect( job, SIGNAL (redirection(KIO::Job*,KUrl)),
49  SLOT(redirection(KIO::Job*,KUrl)) );
50  connect( job, SIGNAL(result(KJob*)), SLOT(result(KJob*)) );
51  }
52 
53  void Downloader::failed()
54  {
55  emit result( false );
56  }
57 
58  void Downloader::setError( const QString& error )
59  {
60  m_error = error;
61  }
62 
63  void Downloader::redirection( KIO::Job* , const KUrl& url )
64  {
65  m_scriptURL = url;
66  }
67 
68  void Downloader::data( KIO::Job*, const QByteArray& data )
69  {
70  unsigned offset = m_data.size();
71  m_data.resize( offset + data.size() );
72  std::memcpy( m_data.data() + offset, data.data(), data.size() );
73  }
74 
75  static bool hasErrorPage(KJob* job)
76  {
77  KIO::TransferJob* tJob = qobject_cast<KIO::TransferJob*>(job);
78  return (tJob && tJob->isErrorPage());
79  }
80 
81  void Downloader::result( KJob* job )
82  {
83  if ( !job->error() && !hasErrorPage(job) )
84  {
85  bool dummy;
86  m_script = KGlobal::charsets()->codecForName(
87  static_cast<KIO::Job*>( job )->queryMetaData( "charset" ), dummy )->toUnicode( m_data );
88  emit result( true );
89  }
90  else
91  {
92  if ( job->error() )
93  setError( i18n( "Could not download the proxy configuration script:\n%1" ,
94  job->errorString() ) );
95  else setError( i18n( "Could not download the proxy configuration script" ) ); // error page
96  failed();
97  }
98  }
99 }
100 
101 // vim: ts=4 sw=4 et
102 #include "downloader.moc"
103 
i18n
QString i18n(const char *text)
KCharsets::codecForName
QTextCodec * codecForName(const QString &name) const
kcharsets.h
KIO::HideProgressInfo
Hide progress information dialog, i.e.
Definition: jobclasses.h:51
KIO::get
TransferJob * get(const KUrl &url, LoadType reload=NoReload, JobFlags flags=DefaultFlags)
Get (a.k.a.
Definition: job.cpp:1371
downloader.h
QString
QObject
klocale.h
KUrl
KIO::TransferJob::isErrorPage
bool isErrorPage() const
Checks whether we got an error page.
Definition: job.cpp:1239
KPAC::Downloader::Downloader
Downloader(QObject *)
Definition: downloader.cpp:34
kglobal.h
KGlobal::charsets
KCharsets * charsets()
KPAC::Downloader::setError
void setError(const QString &)
Definition: downloader.cpp:58
KPAC::hasErrorPage
static bool hasErrorPage(KJob *job)
Definition: downloader.cpp:75
KPAC::Downloader::download
void download(const KUrl &)
Definition: downloader.cpp:39
job.h
KPAC::Downloader::result
void result(bool)
KPAC::Downloader::error
const QString & error()
Definition: downloader.h:42
KIO::Job
The base class for all jobs.
Definition: jobclasses.h:94
KIO::NoReload
Definition: job.h:29
KIO::TransferJob
The transfer job pumps data into and/or out of a Slave.
Definition: jobclasses.h:555
KPAC::Downloader::failed
virtual void failed()
Definition: downloader.cpp:53
KJob
This file is part of the KDE documentation.
Documentation copyright © 1996-2014 The KDE developers.
Generated on Tue Oct 14 2014 22:50:01 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

KIO

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

kdelibs API Reference

Skip menu "kdelibs API Reference"
  • DNSSD
  • Interfaces
  •   KHexEdit
  •   KMediaPlayer
  •   KSpeech
  •   KTextEditor
  • kconf_update
  • KDE3Support
  •   KUnitTest
  • KDECore
  • KDED
  • KDEsu
  • KDEUI
  • KDEWebKit
  • KDocTools
  • KFile
  • KHTML
  • KImgIO
  • KInit
  • kio
  • KIOSlave
  • KJS
  •   KJS-API
  • kjsembed
  •   WTF
  • KNewStuff
  • KParts
  • KPty
  • Kross
  • KUnitConversion
  • KUtils
  • Nepomuk
  • Nepomuk-Core
  • Nepomuk
  • Plasma
  • Solid
  • Sonnet
  • ThreadWeaver

Search



Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal