summaryrefslogtreecommitdiffstats
path: root/khtml/kmultipart
diff options
context:
space:
mode:
Diffstat (limited to 'khtml/kmultipart')
-rw-r--r--khtml/kmultipart/CMakeLists.txt48
-rw-r--r--khtml/kmultipart/Makefile.am17
-rw-r--r--khtml/kmultipart/README16
-rw-r--r--khtml/kmultipart/kmultipart.cpp613
-rw-r--r--khtml/kmultipart/kmultipart.desktop73
-rw-r--r--khtml/kmultipart/kmultipart.h118
6 files changed, 0 insertions, 885 deletions
diff --git a/khtml/kmultipart/CMakeLists.txt b/khtml/kmultipart/CMakeLists.txt
deleted file mode 100644
index 3f07007bd..000000000
--- a/khtml/kmultipart/CMakeLists.txt
+++ /dev/null
@@ -1,48 +0,0 @@
-#################################################
-#
-# (C) 2010 Serghei Amelian
-# serghei (DOT) amelian (AT) gmail.com
-#
-# Improvements and feedback are welcome
-#
-# This file is released under GPL >= 2
-#
-#################################################
-
-include_directories(
- ${TQT_INCLUDE_DIRS}
- ${CMAKE_CURRENT_BINARY_DIR}
- ${CMAKE_BINARY_DIR}
- ${CMAKE_BINARY_DIR}/tdecore
- ${CMAKE_SOURCE_DIR}
- ${CMAKE_SOURCE_DIR}/khtml
- ${CMAKE_SOURCE_DIR}/tdecore
- ${CMAKE_SOURCE_DIR}/tdeui
- ${CMAKE_SOURCE_DIR}/kio
- ${CMAKE_SOURCE_DIR}/kio/kio
- ${CMAKE_SOURCE_DIR}/kutils
-)
-
-link_directories(
- ${TQT_LIBRARY_DIRS}
-)
-
-
-##### other data ################################
-
-install( FILES kmultipart.desktop DESTINATION ${SERVICES_INSTALL_DIR} )
-
-
-##### libkmultipart #############################
-
-set( target libkmultipart )
-
-set( ${target}_SRCS
- kmultipart.cpp
-)
-
-tde_add_kpart( ${target} AUTOMOC
- SOURCES ${${target}_SRCS}
- LINK httpfilter-static kparts-shared
- DESTINATION ${PLUGIN_INSTALL_DIR}
-)
diff --git a/khtml/kmultipart/Makefile.am b/khtml/kmultipart/Makefile.am
deleted file mode 100644
index b79df405d..000000000
--- a/khtml/kmultipart/Makefile.am
+++ /dev/null
@@ -1,17 +0,0 @@
-INCLUDES = -I$(top_srcdir)/khtml -I$(top_srcdir)/kio/httpfilter -I$(top_srcdir)/kutils $(all_includes)
-
-# These are not really libraries, but modules dynamically opened.
-# So they should be installed in kde_module_dir, which is usually $kde_prefix/lib/trinity
-kde_module_LTLIBRARIES = libkmultipart.la
-
-libkmultipart_la_SOURCES = kmultipart.cpp
-libkmultipart_la_LIBADD = $(LIB_KPARTS) $(top_builddir)/kio/httpfilter/libhttpfilter.la $(LIB_QT) $(LIB_TDECORE) $(LIB_TDEUI) $(LIB_KFILE) $(LIBZ)
-libkmultipart_la_DEPENDENCIES = $(LIB_KPARTS)
-libkmultipart_la_LDFLAGS = $(all_libraries) $(KDE_PLUGIN)
-
-# Automatically generate moc files
-METASOURCES = AUTO
-
-# Install the .desktop file into the kde_services directory
-kde_services_DATA = kmultipart.desktop
-
diff --git a/khtml/kmultipart/README b/khtml/kmultipart/README
deleted file mode 100644
index c8a342d68..000000000
--- a/khtml/kmultipart/README
+++ /dev/null
@@ -1,16 +0,0 @@
-KMultiPart implements "server push" for KHTML/Konqueror:
-it handles the multipart/mixed and multipart/x-mixed-replace
-mimetype, embedding the appropriate component (part).
-
-Documentation at http://www.netscape.com/assist/net_sites/pushpull.html
-
-Typical real-world uses: webchats, webcams...
-
-Testcases:
- http://stein.cshl.org/WWW/software/CGI/examples/
-
-TODO:
-* Use the new streaming API of KParts to pipe data into the part,
-the current code does that for KHTML only.
-* Change KHTML so that it embeds KMultiPart for images which send multipart/x-mixed-replace
-data.
diff --git a/khtml/kmultipart/kmultipart.cpp b/khtml/kmultipart/kmultipart.cpp
deleted file mode 100644
index 32c514f1b..000000000
--- a/khtml/kmultipart/kmultipart.cpp
+++ /dev/null
@@ -1,613 +0,0 @@
-/* This file is part of the KDE project
- Copyright (C) 2002 David Faure <[email protected]>
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Library General Public
- License as published by the Free Software Foundation; either
- version 2 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Library General Public License for more details.
-
- You should have received a copy of the GNU Library General Public License
- along with this library; see the file COPYING.LIB. If not, write to
- the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- Boston, MA 02110-1301, USA.
-*/
-
-#include "kmultipart.h"
-
-#include <tqvbox.h>
-#include <kinstance.h>
-#include <kmimetype.h>
-#include <klocale.h>
-#include <kio/job.h>
-#include <tqfile.h>
-#include <ktempfile.h>
-#include <kmessagebox.h>
-#include <kparts/componentfactory.h>
-#include <kparts/genericfactory.h>
-#include <khtml_part.h>
-#include <unistd.h>
-#include <kxmlguifactory.h>
-#include <tqtimer.h>
-
-typedef KParts::GenericFactory<KMultiPart> KMultiPartFactory; // factory for the part
-K_EXPORT_COMPONENT_FACTORY( libkmultipart /*library name*/, KMultiPartFactory )
-
-//#define DEBUG_PARSING
-
-class KLineParser
-{
-public:
- KLineParser() {
- m_lineComplete = false;
- }
- void addChar( char c, bool storeNewline ) {
- if ( !storeNewline && c == '\r' )
- return;
- Q_ASSERT( !m_lineComplete );
- if ( storeNewline || c != '\n' ) {
- int sz = m_currentLine.size();
- m_currentLine.resize( sz+1, TQGArray::SpeedOptim );
- m_currentLine[sz] = c;
- }
- if ( c == '\n' )
- m_lineComplete = true;
- }
- bool isLineComplete() const {
- return m_lineComplete;
- }
- TQByteArray currentLine() const {
- return m_currentLine;
- }
- void clearLine() {
- Q_ASSERT( m_lineComplete );
- reset();
- }
- void reset() {
- m_currentLine.resize( 0, TQGArray::SpeedOptim );
- m_lineComplete = false;
- }
-private:
- TQByteArray m_currentLine;
- bool m_lineComplete; // true when ending with '\n'
-};
-
-/* testcase:
- Content-type: multipart/mixed;boundary=ThisRandomString
-
---ThisRandomString
-Content-type: text/plain
-
-Data for the first object.
-
---ThisRandomString
-Content-type: text/plain
-
-Data for the second and last object.
-
---ThisRandomString--
-*/
-
-
-KMultiPart::KMultiPart( TQWidget *parentWidget, const char *widgetName,
- TQObject *parent, const char *name, const TQStringList& )
- : KParts::ReadOnlyPart( parent, name )
-{
- m_filter = 0L;
-
- setInstance( KMultiPartFactory::instance() );
-
- TQVBox *box = new TQVBox( parentWidget, widgetName );
- setWidget( box );
-
- m_extension = new KParts::BrowserExtension( this );
-
- // We probably need to use m_extension to get the urlArgs in openURL...
-
- m_part = 0L;
- m_isHTMLPart = false;
- m_job = 0L;
- m_lineParser = new KLineParser;
- m_tempFile = 0L;
-
- m_timer = new TQTimer( this );
- connect( m_timer, TQT_SIGNAL( timeout() ), this, TQT_SLOT( slotProgressInfo() ) );
-}
-
-KMultiPart::~KMultiPart()
-{
- // important: delete the nested part before the part or qobject destructor runs.
- // we now delete the nested part which deletes the part's widget which makes
- // _OUR_ m_widget 0 which in turn avoids our part destructor to delete the
- // widget ;-)
- // ### additional note: it _can_ be that the part has been deleted before:
- // when we're in a html frameset and the view dies first, then it will also
- // kill the htmlpart
- if ( m_part )
- delete static_cast<KParts::ReadOnlyPart *>( m_part );
- delete m_job;
- delete m_lineParser;
- if ( m_tempFile ) {
- m_tempFile->setAutoDelete( true );
- delete m_tempFile;
- }
- delete m_filter;
- m_filter = 0L;
-}
-
-
-void KMultiPart::startHeader()
-{
- m_bParsingHeader = true; // we expect a header to come first
- m_bGotAnyHeader = false;
- m_gzip = false;
- // just to be sure for now
- delete m_filter;
- m_filter = 0L;
-}
-
-
-bool KMultiPart::openURL( const KURL &url )
-{
- m_url = url;
- m_lineParser->reset();
- startHeader();
-
- KParts::URLArgs args = m_extension->urlArgs();
- //m_mimeType = args.serviceType;
-
- // Hmm, args.reload is set to true when reloading, but this doesn't seem to be enough...
- // I get "HOLD: Reusing held slave for <url>", and the old data
-
- m_job = TDEIO::get( url, args.reload, false );
-
- emit started( 0 /*m_job*/ ); // don't pass the job, it would interfer with our own infoMessage
-
- connect( m_job, TQT_SIGNAL( result( TDEIO::Job * ) ),
- this, TQT_SLOT( slotJobFinished( TDEIO::Job * ) ) );
- connect( m_job, TQT_SIGNAL( data( TDEIO::Job *, const TQByteArray & ) ),
- this, TQT_SLOT( slotData( TDEIO::Job *, const TQByteArray & ) ) );
-
- m_numberOfFrames = 0;
- m_numberOfFramesSkipped = 0;
- m_totalNumberOfFrames = 0;
- m_qtime.start();
- m_timer->start( 1000 ); //1s
-
- return true;
-}
-
-// Yes, libtdenetwork's has such a parser already (MultiPart),
-// but it works on the complete string, expecting the whole data to be available....
-// The version here is asynchronous.
-void KMultiPart::slotData( TDEIO::Job *job, const TQByteArray &data )
-{
- if (m_boundary.isNull())
- {
- TQString tmp = job->queryMetaData("media-boundary");
- kdDebug() << "Got Boundary from kio-http '" << tmp << "'" << endl;
- if ( !tmp.isEmpty() ) {
- if (tmp.startsWith("--"))
- m_boundary = tmp.latin1();
- else
- m_boundary = TQCString("--")+tmp.latin1();
- m_boundaryLength = m_boundary.length();
- }
- }
- // Append to m_currentLine until eol
- for ( uint i = 0; i < data.size() ; ++i )
- {
- // Store char. Skip if '\n' and currently parsing a header.
- m_lineParser->addChar( data[i], !m_bParsingHeader );
- if ( m_lineParser->isLineComplete() )
- {
- TQByteArray lineData = m_lineParser->currentLine();
-#ifdef DEBUG_PARSING
- kdDebug() << "lineData.size()=" << lineData.size() << endl;
-#endif
- TQCString line( lineData.data(), lineData.size()+1 ); // deep copy
- // 0-terminate the data, but only for the line-based tests below
- // We want to keep the raw data in case it ends up in sendData()
- int sz = line.size();
- if ( sz > 0 )
- line[sz-1] = '\0';
-#ifdef DEBUG_PARSING
- kdDebug() << "[" << m_bParsingHeader << "] line='" << line << "'" << endl;
-#endif
- if ( m_bParsingHeader )
- {
- if ( !line.isEmpty() )
- m_bGotAnyHeader = true;
- if ( m_boundary.isNull() )
- {
- if ( !line.isEmpty() ) {
-#ifdef DEBUG_PARSING
- kdDebug() << "Boundary is " << line << endl;
-#endif
- m_boundary = line;
- m_boundaryLength = m_boundary.length();
- }
- }
- else if ( !tqstrnicmp( line.data(), "Content-Encoding:", 17 ) )
- {
- TQString encoding = TQString::fromLatin1(line.data()+17).stripWhiteSpace().lower();
- if (encoding == "gzip" || encoding == "x-gzip") {
- m_gzip = true;
- } else {
- kdDebug() << "FIXME: unhandled encoding type in KMultiPart: " << encoding << endl;
- }
- }
- // parse Content-Type
- else if ( !tqstrnicmp( line.data(), "Content-Type:", 13 ) )
- {
- Q_ASSERT( m_nextMimeType.isNull() );
- m_nextMimeType = TQString::fromLatin1( line.data() + 14 ).stripWhiteSpace();
- int semicolon = m_nextMimeType.find( ';' );
- if ( semicolon != -1 )
- m_nextMimeType = m_nextMimeType.left( semicolon );
- kdDebug() << "m_nextMimeType=" << m_nextMimeType << endl;
- }
- // Empty line, end of headers (if we had any header line before)
- else if ( line.isEmpty() && m_bGotAnyHeader )
- {
- m_bParsingHeader = false;
-#ifdef DEBUG_PARSING
- kdDebug() << "end of headers" << endl;
-#endif
- startOfData();
- }
- // First header (when we know it from kio_http)
- else if ( line == m_boundary )
- ; // nothing to do
- else if ( !line.isEmpty() ) // this happens with e.g. Set-Cookie:
- kdDebug() << "Ignoring header " << line << endl;
- } else {
- if ( !tqstrncmp( line, m_boundary, m_boundaryLength ) )
- {
-#ifdef DEBUG_PARSING
- kdDebug() << "boundary found!" << endl;
- kdDebug() << "after it is " << line.data() + m_boundaryLength << endl;
-#endif
- // Was it the very last boundary ?
- if ( !tqstrncmp( line.data() + m_boundaryLength, "--", 2 ) )
- {
-#ifdef DEBUG_PARSING
- kdDebug() << "Completed!" << endl;
-#endif
- endOfData();
- emit completed();
- } else
- {
- char nextChar = *(line.data() + m_boundaryLength);
-#ifdef DEBUG_PARSING
- kdDebug() << "KMultiPart::slotData nextChar='" << nextChar << "'" << endl;
-#endif
- if ( nextChar == '\n' || nextChar == '\r' ) {
- endOfData();
- startHeader();
- }
- else {
- // otherwise, false hit, it has trailing stuff
- sendData( lineData );
- }
- }
- } else {
- // send to part
- sendData( lineData );
- }
- }
- m_lineParser->clearLine();
- }
- }
-}
-
-void KMultiPart::setPart( const TQString& mimeType )
-{
- KXMLGUIFactory *guiFactory = factory();
- if ( guiFactory ) // seems to be 0 when restoring from SM
- guiFactory->removeClient( this );
- kdDebug() << "KMultiPart::setPart " << mimeType << endl;
- delete m_part;
- // Try to find an appropriate viewer component
- m_part = KParts::ComponentFactory::createPartInstanceFromQuery<KParts::ReadOnlyPart>
- ( m_mimeType, TQString::null, widget(), 0L, this, 0L );
- if ( !m_part ) {
- // TODO launch external app
- KMessageBox::error( widget(), i18n("No handler found for %1!").arg(m_mimeType) );
- return;
- }
- // By making the part a child XMLGUIClient of ours, we get its GUI merged in.
- insertChildClient( m_part );
- m_part->widget()->show();
-
- connect( m_part, TQT_SIGNAL( completed() ),
- this, TQT_SLOT( slotPartCompleted() ) );
-
- m_isHTMLPart = ( mimeType == "text/html" );
- KParts::BrowserExtension* childExtension = KParts::BrowserExtension::childObject( m_part );
-
- if ( childExtension )
- {
-
- // Forward signals from the part's browser extension
- // this is very related (but not exactly like) KHTMLPart::processObjectRequest
-
- connect( childExtension, TQT_SIGNAL( openURLNotify() ),
- m_extension, TQT_SIGNAL( openURLNotify() ) );
-
- connect( childExtension, TQT_SIGNAL( openURLRequestDelayed( const KURL &, const KParts::URLArgs & ) ),
- m_extension, TQT_SIGNAL( openURLRequest( const KURL &, const KParts::URLArgs & ) ) );
-
- connect( childExtension, TQT_SIGNAL( createNewWindow( const KURL &, const KParts::URLArgs & ) ),
- m_extension, TQT_SIGNAL( createNewWindow( const KURL &, const KParts::URLArgs & ) ) );
- connect( childExtension, TQT_SIGNAL( createNewWindow( const KURL &, const KParts::URLArgs &, const KParts::WindowArgs &, KParts::ReadOnlyPart *& ) ),
- m_extension, TQT_SIGNAL( createNewWindow( const KURL &, const KParts::URLArgs & , const KParts::WindowArgs &, KParts::ReadOnlyPart *&) ) );
-
- // Keep in sync with khtml_part.cpp
- connect( childExtension, TQT_SIGNAL( popupMenu( const TQPoint &, const KFileItemList & ) ),
- m_extension, TQT_SIGNAL( popupMenu( const TQPoint &, const KFileItemList & ) ) );
- connect( childExtension, TQT_SIGNAL( popupMenu( KXMLGUIClient *, const TQPoint &, const KFileItemList & ) ),
- m_extension, TQT_SIGNAL( popupMenu( KXMLGUIClient *, const TQPoint &, const KFileItemList & ) ) );
- connect( childExtension, TQT_SIGNAL( popupMenu( KXMLGUIClient *, const TQPoint &, const KFileItemList &, const KParts::URLArgs &, KParts::BrowserExtension::PopupFlags ) ),
- m_extension, TQT_SIGNAL( popupMenu( KXMLGUIClient *, const TQPoint &, const KFileItemList &, const KParts::URLArgs &, KParts::BrowserExtension::PopupFlags ) ) );
- connect( childExtension, TQT_SIGNAL( popupMenu( const TQPoint &, const KURL &, const TQString &, mode_t ) ),
- m_extension, TQT_SIGNAL( popupMenu( const TQPoint &, const KURL &, const TQString &, mode_t ) ) );
- connect( childExtension, TQT_SIGNAL( popupMenu( KXMLGUIClient *, const TQPoint &, const KURL &, const TQString &, mode_t ) ),
- m_extension, TQT_SIGNAL( popupMenu( KXMLGUIClient *, const TQPoint &, const KURL &, const TQString &, mode_t ) ) );
- connect( childExtension, TQT_SIGNAL( popupMenu( KXMLGUIClient *, const TQPoint &, const KURL &, const KParts::URLArgs &, KParts::BrowserExtension::PopupFlags, mode_t ) ),
- m_extension, TQT_SIGNAL( popupMenu( KXMLGUIClient *, const TQPoint &, const KURL &, const KParts::URLArgs &, KParts::BrowserExtension::PopupFlags, mode_t ) ) );
-
-
- if ( m_isHTMLPart )
- connect( childExtension, TQT_SIGNAL( infoMessage( const TQString & ) ),
- m_extension, TQT_SIGNAL( infoMessage( const TQString & ) ) );
- // For non-HTML we prefer to show our infoMessage ourselves.
-
- childExtension->setBrowserInterface( m_extension->browserInterface() );
-
- connect( childExtension, TQT_SIGNAL( enableAction( const char *, bool ) ),
- m_extension, TQT_SIGNAL( enableAction( const char *, bool ) ) );
- connect( childExtension, TQT_SIGNAL( setLocationBarURL( const TQString& ) ),
- m_extension, TQT_SIGNAL( setLocationBarURL( const TQString& ) ) );
- connect( childExtension, TQT_SIGNAL( setIconURL( const KURL& ) ),
- m_extension, TQT_SIGNAL( setIconURL( const KURL& ) ) );
- connect( childExtension, TQT_SIGNAL( loadingProgress( int ) ),
- m_extension, TQT_SIGNAL( loadingProgress( int ) ) );
- if ( m_isHTMLPart ) // for non-HTML we have our own
- connect( childExtension, TQT_SIGNAL( speedProgress( int ) ),
- m_extension, TQT_SIGNAL( speedProgress( int ) ) );
- connect( childExtension, TQT_SIGNAL( selectionInfo( const KFileItemList& ) ),
- m_extension, TQT_SIGNAL( selectionInfo( const KFileItemList& ) ) );
- connect( childExtension, TQT_SIGNAL( selectionInfo( const TQString& ) ),
- m_extension, TQT_SIGNAL( selectionInfo( const TQString& ) ) );
- connect( childExtension, TQT_SIGNAL( selectionInfo( const KURL::List& ) ),
- m_extension, TQT_SIGNAL( selectionInfo( const KURL::List& ) ) );
- connect( childExtension, TQT_SIGNAL( mouseOverInfo( const KFileItem* ) ),
- m_extension, TQT_SIGNAL( mouseOverInfo( const KFileItem* ) ) );
- connect( childExtension, TQT_SIGNAL( moveTopLevelWidget( int, int ) ),
- m_extension, TQT_SIGNAL( moveTopLevelWidget( int, int ) ) );
- connect( childExtension, TQT_SIGNAL( resizeTopLevelWidget( int, int ) ),
- m_extension, TQT_SIGNAL( resizeTopLevelWidget( int, int ) ) );
- }
-
- m_partIsLoading = false;
- // Load the part's plugins too.
- // ###### This is a hack. The bug is that KHTMLPart doesn't load its plugins
- // if className != "Browser/View".
- loadPlugins( this, m_part, m_part->instance() );
- // Get the part's GUI to appear
- if ( guiFactory )
- guiFactory->addClient( this );
-}
-
-void KMultiPart::startOfData()
-{
- kdDebug() << "KMultiPart::startOfData" << endl;
- Q_ASSERT( !m_nextMimeType.isNull() );
- if( m_nextMimeType.isNull() )
- return;
-
- if ( m_gzip )
- {
- m_filter = new HTTPFilterGZip;
- connect( m_filter, TQT_SIGNAL( output( const TQByteArray& ) ), this, TQT_SLOT( reallySendData( const TQByteArray& ) ) );
- }
-
- if ( m_mimeType != m_nextMimeType )
- {
- // Need to switch parts (or create the initial one)
- m_mimeType = m_nextMimeType;
- setPart( m_mimeType );
- }
- Q_ASSERT( m_part );
- // Pass URLArgs (e.g. reload)
- KParts::BrowserExtension* childExtension = KParts::BrowserExtension::childObject( m_part );
- if ( childExtension )
- childExtension->setURLArgs( m_extension->urlArgs() );
-
- m_nextMimeType = TQString::null;
- if ( m_tempFile ) {
- m_tempFile->setAutoDelete( true );
- delete m_tempFile;
- m_tempFile = 0;
- }
- if ( m_isHTMLPart )
- {
- KHTMLPart* htmlPart = static_cast<KHTMLPart *>( static_cast<KParts::ReadOnlyPart *>( m_part ) );
- htmlPart->begin( url() );
- }
- else
- {
- // ###### TODO use a TQByteArray and a data: URL instead
- m_tempFile = new KTempFile;
- }
-}
-
-void KMultiPart::sendData( const TQByteArray& line )
-{
- if ( m_filter )
- {
- m_filter->slotInput( line );
- }
- else
- {
- reallySendData( line );
- }
-}
-
-void KMultiPart::reallySendData( const TQByteArray& line )
-{
- if ( m_isHTMLPart )
- {
- KHTMLPart* htmlPart = static_cast<KHTMLPart *>( static_cast<KParts::ReadOnlyPart *>( m_part ) );
- htmlPart->write( line.data(), line.size() );
- }
- else if ( m_tempFile )
- {
- m_tempFile->file()->writeBlock( line.data(), line.size() );
- }
-}
-
-void KMultiPart::endOfData()
-{
- Q_ASSERT( m_part );
- if ( m_isHTMLPart )
- {
- KHTMLPart* htmlPart = static_cast<KHTMLPart *>( static_cast<KParts::ReadOnlyPart *>( m_part ) );
- htmlPart->end();
- } else if ( m_tempFile )
- {
- m_tempFile->close();
- if ( m_partIsLoading )
- {
- // The part is still loading the last data! Let it proceed then
- // Otherwise we'd keep cancelling it, and nothing would ever show up...
- kdDebug() << "KMultiPart::endOfData part isn't ready, skipping frame" << endl;
- ++m_numberOfFramesSkipped;
- m_tempFile->setAutoDelete( true );
- }
- else
- {
- kdDebug() << "KMultiPart::endOfData opening " << m_tempFile->name() << endl;
- KURL url;
- url.setPath( m_tempFile->name() );
- m_partIsLoading = true;
- (void) m_part->openURL( url );
- }
- delete m_tempFile;
- m_tempFile = 0L;
- }
-}
-
-void KMultiPart::slotPartCompleted()
-{
- if ( !m_isHTMLPart )
- {
- Q_ASSERT( m_part );
- // Delete temp file used by the part
- Q_ASSERT( m_part->url().isLocalFile() );
- kdDebug() << "slotPartCompleted deleting " << m_part->url().path() << endl;
- (void) unlink( TQFile::encodeName( m_part->url().path() ) );
- m_partIsLoading = false;
- ++m_numberOfFrames;
- // Do not emit completed from here.
- }
-}
-
-bool KMultiPart::closeURL()
-{
- m_timer->stop();
- if ( m_part )
- return m_part->closeURL();
- return true;
-}
-
-void KMultiPart::guiActivateEvent( KParts::GUIActivateEvent * )
-{
- // Not public!
- //if ( m_part )
- // m_part->guiActivateEvent( e );
-}
-
-void KMultiPart::slotJobFinished( TDEIO::Job *job )
-{
- if ( job->error() )
- {
- // TODO use khtml's error:// scheme
- job->showErrorDialog();
- emit canceled( job->errorString() );
- }
- else
- {
- /*if ( m_khtml->view()->contentsY() == 0 )
- {
- KParts::URLArgs args = m_ext->urlArgs();
- m_khtml->view()->setContentsPos( args.xOffset, args.yOffset );
- }*/
-
- emit completed();
-
- //TQTimer::singleShot( 0, this, TQT_SLOT( updateWindowCaption() ) );
- }
- m_job = 0L;
-}
-
-void KMultiPart::slotProgressInfo()
-{
- int time = m_qtime.elapsed();
- if ( !time ) return;
- if ( m_totalNumberOfFrames == m_numberOfFrames + m_numberOfFramesSkipped )
- return; // No change, don't overwrite statusbar messages if any
- //kdDebug() << m_numberOfFrames << " in " << time << " milliseconds" << endl;
- TQString str( "%1 frames per second, %2 frames skipped per second" );
- str = str.arg( 1000.0 * (double)m_numberOfFrames / (double)time );
- str = str.arg( 1000.0 * (double)m_numberOfFramesSkipped / (double)time );
- m_totalNumberOfFrames = m_numberOfFrames + m_numberOfFramesSkipped;
- //kdDebug() << str << endl;
- emit m_extension->infoMessage( str );
-}
-
-TDEAboutData* KMultiPart::createAboutData()
-{
- TDEAboutData* aboutData = new TDEAboutData( "kmultipart", I18N_NOOP("KMultiPart"),
- "0.1",
- I18N_NOOP( "Embeddable component for multipart/mixed" ),
- TDEAboutData::License_GPL,
- "(c) 2001, David Faure <[email protected]>");
- return aboutData;
-}
-
-#if 0
-KMultiPartBrowserExtension::KMultiPartBrowserExtension( KMultiPart *parent, const char *name )
- : KParts::BrowserExtension( parent, name )
-{
- m_imgPart = parent;
-}
-
-int KMultiPartBrowserExtension::xOffset()
-{
- return m_imgPart->doc()->view()->contentsX();
-}
-
-int KMultiPartBrowserExtension::yOffset()
-{
- return m_imgPart->doc()->view()->contentsY();
-}
-
-void KMultiPartBrowserExtension::print()
-{
- static_cast<KHTMLPartBrowserExtension *>( m_imgPart->doc()->browserExtension() )->print();
-}
-
-void KMultiPartBrowserExtension::reparseConfiguration()
-{
- static_cast<KHTMLPartBrowserExtension *>( m_imgPart->doc()->browserExtension() )->reparseConfiguration();
- m_imgPart->doc()->setAutoloadImages( true );
-}
-#endif
-
-#include "kmultipart.moc"
diff --git a/khtml/kmultipart/kmultipart.desktop b/khtml/kmultipart/kmultipart.desktop
deleted file mode 100644
index 0dbfd06f7..000000000
--- a/khtml/kmultipart/kmultipart.desktop
+++ /dev/null
@@ -1,73 +0,0 @@
-[Desktop Entry]
-Type=Service
-MimeType=multipart/mixed;multipart/x-mixed-replace
-Name=Embeddable Component for multipart/mixed
-Name[af]=Inlegbare Komponent vir multideel/gemeng
-Name[be]=Унутраны кампанент для multipart/mixed
-Name[bg]=Вграден компонент за преглед на съобщения multipart/mixed
-Name[bn]=multipart/mixed-এর জন্য অভ্যন্তরীণ উপাদান
-Name[bs]=Ugradiva komponenta za multipart/mixed
-Name[ca]=Component encastable per a multipart/mescla
-Name[cs]=Pohltitelné komponenty pro 'multipart/mixed'
-Name[csb]=Składowi kòmpònent dlô multipart/mixed
-Name[da]=Indlejrbar komponent for multipart/mixed
-Name[de]=Einbettungsfähige Komponente für MIME-Typ multipart/mixed
-Name[el]=Στοιχείο που μπορεί να ενσωματωθεί για multipart/mixed
-Name[eo]=Enplantebla komponanto por plurparto/mikso
-Name[es]=Componente empotrado para multiparte/mezcla
-Name[et]=Multipart/mixed põimitav komponent
-Name[eu]=Kapsulatutako zati-anitzen/nahastuen osagaia
-Name[fa]=مؤلفۀ نهفته برای چند بخش/مخلوط
-Name[fi]=Upotettava komponentti multipart/mixed-hallintaan
-Name[fr]=Composant intégrable pour le type multipart / mixed
-Name[fy]=Yn te sluten komponint foar mulipart/mixed
-Name[ga]=Comhpháirt Inleabaithe le haghaidh multipart/mixed
-Name[gl]=Compoñente incrustábel para multpart/mixed
-Name[he]=רכיב בר־הטבעה עבור מרובה חלקים\מעורב
-Name[hi]=मल्टीपार्ट/मिक्स्ड के लिए अंतर्निहित करने योग्य घटक
-Name[hr]=Ugradiva komponenta za multipart/mixed
-Name[hu]=Beágyazható komponens a multipart/mixed adattípushoz
-Name[id]=Komponen Tersisipkan untuk multipart/mixed
-Name[is]=Ívefjanleg eining fyrir MIME multipart/mixed
-Name[it]=Componente integrabile per multipart/mixed
-Name[ja]=マルチパート/混合 の埋め込み可能なコンポーネント
-Name[ka]=ჩადგმადი კომპონენტი მრავალნაწილიანი/შერეულისთვის
-Name[kk]=multipart/mixed тіркеме үшін ендірілетін компоненті
-Name[km]=សមាសភាគ​ដែល​អាច​បង្កប់ សម្រាប់​ផ្នែកជាច្រើន/លាយ
-Name[lb]=Abettbar Komponent fir de MIME-Genre multipart/mixed
-Name[lt]=Įdedamas komponentas multipart/mixed tipui
-Name[lv]=Iegulstama komponente priekš multipart/mixed
-Name[mk]=Вгнездлива компонента за multipart/mixed
-Name[ms]=Komponen boleh serta untuk pelbagai bahagian/bercampur
-Name[nb]=Innebyggbar komponent for multipart/mixed
-Name[nds]=Inbettbor Komponent för multipart/mixed
-Name[ne]=बहुभाग/मिश्रणका लागि सम्मिलित गर्न सकिने अवयव
-Name[nl]=Inbedbaar component voor multipart/mixed
-Name[nn]=Inkluderbar komponent for multipart/mixed
-Name[pa]=ਬਹੁਭਾਗੀ/ਰਲਵੇਂ ਲਈ ਸ਼ਾਮਿਲ ਭਾਗ
-Name[pl]=Moduł składowy dla multipart/mixed
-Name[pt]=Componente Embebido para multipart/mixed
-Name[pt_BR]=Componente embutido para multipart/mixed
-Name[ro]=Componentă înglobată pentru tip MIME multipart/mixed
-Name[ru]=Встраиваемый компонент для вложений
-Name[rw]=Inyangingo ishyirwamo y'ibicebyinshi/ibivanzwe
-Name[se]=Vuojuhanláhkái oassi multipart/mixed:a várás
-Name[sk]=Vložiteľný komponent pre multipart/mixed
-Name[sl]=Vgradljiva komponenta za multipart/mixed
-Name[sr]=Уградива компонента за „multipart/mixed“
-Name[sr@Latn]=Ugradiva komponenta za „multipart/mixed“
-Name[sv]=Inbyggbar komponent för multipart/mixed
-Name[ta]=பலப்பகுதி/கலக்கப்பட்ட பகுதிக்குரிய உட்பொதிந்த பகுதி
-Name[te]=మల్టిపార్ట్/మిక్స్డ్ కొరకు పొదిగిన అంశం
-Name[tg]=Компоненти дарунсохт барои қисматҳои зиёд/омезишшуда
-Name[th]=ส่วนประกอบที่ฝังตัวได้สำหรับมัลติพาร์ต/ผสม
-Name[tr]=Çok parçalı/karışık için Gömülebilir Bileşen
-Name[uk]=Вбудовна компонента для повідомлень multipart/mixed
-Name[uz]=Multipart/mixed uchun ichiga oʻrnatib boʻladigan komponent
-Name[uz@cyrillic]=Multipart/mixed учун ичига ўрнатиб бўладиган компонент
-Name[vi]=Thành phần có khả năng nhúng cho dạng thức thư đa phần/đã trộn (multipart/mixed).
-Name[zh_CN]=可嵌入的 multipart/mixed 组件
-Name[zh_HK]=multipart/mixed 的可嵌入元件
-Name[zh_TW]=multipart/mixed 的可嵌入元件
-ServiceTypes=KParts/ReadOnlyPart
-X-TDE-Library=libkmultipart
diff --git a/khtml/kmultipart/kmultipart.h b/khtml/kmultipart/kmultipart.h
deleted file mode 100644
index 1e6f83620..000000000
--- a/khtml/kmultipart/kmultipart.h
+++ /dev/null
@@ -1,118 +0,0 @@
-/* This file is part of the KDE project
- Copyright (C) 2002 David Faure <[email protected]>
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Library General Public
- License as published by the Free Software Foundation; either
- version 2 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Library General Public License for more details.
-
- You should have received a copy of the GNU Library General Public License
- along with this library; see the file COPYING.LIB. If not, write to
- the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- Boston, MA 02110-1301, USA.
-*/
-
-#ifndef __kmultipart_h__
-#define __kmultipart_h__
-
-#include <httpfilter/httpfilter.h>
-
-#include <kparts/part.h>
-#include <kparts/factory.h>
-#include <kparts/browserextension.h>
-#include <kaboutdata.h>
-#include <tqdatetime.h>
-
-class KHTMLPart;
-class TDEInstance;
-class KTempFile;
-class KLineParser;
-
-/**
- * http://www.netscape.com/assist/net_sites/pushpull.html
- */
-class KMultiPart : public KParts::ReadOnlyPart
-{
- Q_OBJECT
-public:
- KMultiPart( TQWidget *parentWidget, const char *widgetName,
- TQObject *parent, const char *name, const TQStringList& );
- virtual ~KMultiPart();
-
- virtual bool openFile() { return false; }
- virtual bool openURL( const KURL &url );
-
- virtual bool closeURL();
-
- static TDEAboutData* createAboutData();
-
-protected:
- virtual void guiActivateEvent( KParts::GUIActivateEvent *e );
- void setPart( const TQString& mimeType );
-
- void startOfData();
- void sendData( const TQByteArray& line );
- void endOfData();
-
-private slots:
- void reallySendData( const TQByteArray& line );
- //void slotPopupMenu( KXMLGUIClient *cl, const TQPoint &pos, const KURL &u, const TQString &mime, mode_t mode );
- void slotJobFinished( TDEIO::Job *job );
- void slotData( TDEIO::Job *, const TQByteArray & );
- //void updateWindowCaption();
-
- void slotPartCompleted();
-
- void startHeader();
-
- void slotProgressInfo();
-
-private:
- KParts::BrowserExtension* m_extension;
- TQGuardedPtr<KParts::ReadOnlyPart> m_part;
- bool m_isHTMLPart;
- bool m_partIsLoading;
- TDEIO::Job* m_job;
- TQCString m_boundary;
- int m_boundaryLength;
- TQString m_mimeType; // the one handled by m_part - store the kservice instead?
- TQString m_nextMimeType; // while parsing headers
- KTempFile* m_tempFile;
- KLineParser* m_lineParser;
- bool m_bParsingHeader;
- bool m_bGotAnyHeader;
- bool m_gzip;
- HTTPFilterBase *m_filter;
- // Speed measurements
- long m_totalNumberOfFrames;
- long m_numberOfFrames;
- long m_numberOfFramesSkipped;
- TQTime m_qtime;
- TQTimer* m_timer;
-};
-
-#if 0
-class KMultiPartBrowserExtension : public KParts::BrowserExtension
-{
- //Q_OBJECT
-public:
- KMultiPartBrowserExtension( KMultiPart *parent, const char *name = 0 );
-
- virtual int xOffset();
- virtual int yOffset();
-
-//protected slots:
- void print();
- void reparseConfiguration();
-
-private:
- KMultiPart *m_imgPart;
-};
-#endif
-
-#endif