summaryrefslogtreecommitdiffstats
path: root/khtml/misc/loader.h
diff options
context:
space:
mode:
Diffstat (limited to 'khtml/misc/loader.h')
-rw-r--r--khtml/misc/loader.h522
1 files changed, 0 insertions, 522 deletions
diff --git a/khtml/misc/loader.h b/khtml/misc/loader.h
deleted file mode 100644
index 833b98b84..000000000
--- a/khtml/misc/loader.h
+++ /dev/null
@@ -1,522 +0,0 @@
-/*
- This file is part of the KDE libraries
-
- Copyright (C) 1998 Lars Knoll (knoll@mpi-hd.mpg.de)
- Copyright (C) 2001-2003 Dirk Mueller <mueller@kde.org>
- Copyright (C) 2003 Apple Computer, Inc
-
- 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.
-
- This class provides all functionality needed for loading images, style sheets and html
- pages from the web. It has a memory cache for these objects.
-*/
-#ifndef _khtml_loader_h
-#define _khtml_loader_h
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <time.h>
-
-#include "loader_client.h"
-#ifdef HAVE_LIBJPEG
-#include "loader_jpeg.h"
-#endif
-
-#include <stdlib.h>
-#include <tqptrlist.h>
-#include <tqobject.h>
-#include <tqptrdict.h>
-#include <tqdict.h>
-#include <tqpixmap.h>
-#include <tqbuffer.h>
-#include <tqstringlist.h>
-#include <tqtextcodec.h>
-#include <tqtimer.h>
-
-#include <kurl.h>
-#include <kio/global.h>
-
-#include <khtml_settings.h>
-#include <dom/dom_string.h>
-
-class TQMovie;
-class KHTMLPart;
-
-namespace TDEIO {
- class Job;
- class TransferJob;
-}
-
-namespace DOM
-{
- class CSSStyleSheetImpl;
- class DocumentImpl;
-}
-
-namespace khtml
-{
- class CachedObject;
- class Request;
- class DocLoader;
-
- /**
- * @internal
- *
- * A cached object. Classes who want to use this object should derive
- * from CachedObjectClient, to get the function calls in case the requested data has arrived.
- *
- * This class also does the actual communication with kio and loads the file.
- */
- class CachedObject
- {
- public:
- enum Type {
- Image,
- CSSStyleSheet,
- Script
- };
-
- enum Status {
- Unknown, // let imagecache decide what to do with it
- New, // inserting new image
- Pending, // only partially loaded
- Persistent, // never delete this pixmap
- Cached // regular case
- };
-
- CachedObject(const DOM::DOMString &url, Type type, TDEIO::CacheControl _cachePolicy, int size)
- : m_url(url), m_type(type), m_cachePolicy(_cachePolicy),
- m_expireDate(0), m_size(size)
- {
- m_status = Pending;
- m_accessCount = 0;
- m_cachePolicy = _cachePolicy;
- m_request = 0;
- m_deleted = false;
- m_free = false;
- m_hadError = false;
- m_wasBlocked = false;
- m_prev = m_next = 0;
- }
- virtual ~CachedObject();
-
- virtual void data( TQBuffer &buffer, bool eof) = 0;
- virtual void error( int err, const char *text ) = 0;
-
- const DOM::DOMString &url() const { return m_url; }
- Type type() const { return m_type; }
-
- virtual void ref(CachedObjectClient *consumer);
- virtual void deref(CachedObjectClient *consumer);
-
- int count() const { return m_clients.count(); }
- int accessCount() const { return m_accessCount; }
-
- void setStatus(Status s) { m_status = s; }
- Status status() const { return m_status; }
-
- virtual void setCharset( const TQString& /*charset*/ ) {}
-
- TQTextCodec* codecForBuffer( const TQString& charset, const TQByteArray& buffer ) const;
-
- int size() const { return m_size; }
-
- bool isLoaded() const { return !m_loading; }
-
- bool free() const { return m_free; }
-
- TDEIO::CacheControl cachePolicy() const { return m_cachePolicy; }
-
- void setRequest(Request *_request);
-
- bool canDelete() const { return (m_clients.count() == 0 && !m_request); }
-
- void setExpireDate(time_t _expireDate) { m_expireDate = _expireDate; }
-
- bool isExpired() const;
-
- virtual bool schedule() const { return false; }
- virtual void finish();
-
- /**
- * List of acceptable mimetypes separated by ",". A mimetype may contain a wildcard.
- */
- // e.g. "text/*"
- TQString accept() const { return m_accept; }
- void setAccept(const TQString &_accept) { m_accept = _accept; }
-
- protected:
- void setSize(int size);
- TQPtrDict<CachedObjectClient> m_clients;
- DOM::DOMString m_url;
- TQString m_accept;
- Request *m_request;
- Type m_type;
- Status m_status;
- int m_accessCount;
- TDEIO::CacheControl m_cachePolicy;
- time_t m_expireDate;
- int m_size;
- bool m_deleted : 1;
- bool m_loading : 1;
- bool m_free : 1;
- bool m_hadError : 1;
- bool m_wasBlocked : 1;
-
- private:
- bool allowInLRUList() const { return canDelete() && !m_free && status() != Persistent; }
- CachedObject* m_next;
- CachedObject* m_prev;
- friend class Cache;
- friend class ::KHTMLPart;
- };
-
-
- /**
- * a cached style sheet. also used for loading xml documents.
- *
- * ### rename to CachedTextDoc or something since it's more generic than just for css
- */
- class CachedCSSStyleSheet : public CachedObject
- {
- public:
- CachedCSSStyleSheet(DocLoader* dl, const DOM::DOMString &url, TDEIO::CacheControl cachePolicy,
- const char *accept);
- CachedCSSStyleSheet(const DOM::DOMString &url, const TQString &stylesheet_data);
-
- const DOM::DOMString &sheet() const { return m_sheet; }
-
- virtual void ref(CachedObjectClient *consumer);
-
- virtual void data( TQBuffer &buffer, bool eof );
- virtual void error( int err, const char *text );
-
- virtual bool schedule() const { return true; }
- void setCharsetHint( const TQString& charset ) { m_charsetHint = charset; }
- void setCharset( const TQString& charset ) { m_charset = charset; }
-
- protected:
- void checkNotify();
-
- DOM::DOMString m_sheet;
- TQString m_charset;
- TQString m_charsetHint;
- int m_err;
- TQString m_errText;
- };
-
- /**
- * a cached script
- */
- class CachedScript : public CachedObject
- {
- public:
- CachedScript(DocLoader* dl, const DOM::DOMString &url, TDEIO::CacheControl cachePolicy, const char* accept );
- CachedScript(const DOM::DOMString &url, const TQString &script_data);
-
- const DOM::DOMString &script() const { return m_script; }
-
- virtual void ref(CachedObjectClient *consumer);
-
- virtual void data( TQBuffer &buffer, bool eof );
- virtual void error( int err, const char *text );
-
- virtual bool schedule() const { return false; }
-
- void checkNotify();
-
- bool isLoaded() const { return !m_loading; }
- void setCharset( const TQString& charset ) { m_charset = charset; }
-
- protected:
- TQString m_charset;
- DOM::DOMString m_script;
- };
-
- class ImageSource;
-
- /**
- * a cached image
- */
- class CachedImage : public TQObject, public CachedObject
- {
- Q_OBJECT
- public:
- CachedImage(DocLoader* dl, const DOM::DOMString &url, TDEIO::CacheControl cachePolicy, const char* accept);
- virtual ~CachedImage();
-
- const TQPixmap &pixmap() const;
- const TQPixmap &scaled_pixmap(int xWidth, int xHeight);
- const TQPixmap &tiled_pixmap(const TQColor& bg, int xWidth = -1, int xHeight = -1);
-
- TQSize pixmap_size() const; // returns the size of the complete (i.e. when finished) loading
- TQRect valid_rect() const; // returns the rectangle of pixmap that has been loaded already
-
- bool canRender() const { return !isErrorImage() && pixmap_size().width() > 0 && pixmap_size().height() > 0; }
- void ref(CachedObjectClient *consumer);
- virtual void deref(CachedObjectClient *consumer);
-
- virtual void data( TQBuffer &buffer, bool eof );
- virtual void error( int err, const char *text );
-
- bool isTransparent() const { return isFullyTransparent; }
- bool isErrorImage() const { return m_hadError; }
- bool isBlockedImage() const { return m_wasBlocked; }
- const TQString& suggestedFilename() const { return m_suggestedFilename; }
- void setSuggestedFilename( const TQString& s ) { m_suggestedFilename = s; }
-#ifdef IMAGE_TITLES
- const TQString& suggestedTitle() const { return m_suggestedTitle; }
- void setSuggestedTitle( const TQString& s ) { m_suggestedTitle = s; }
-#else
- const TQString& suggestedTitle() const { return m_suggestedFilename; }
-#endif
-
- void setShowAnimations( KHTMLSettings::KAnimationAdvice );
- void pauseAnimations();
- void resumeAnimations();
-
- virtual bool schedule() const { return true; }
-
- virtual void finish();
-
- protected:
- void clear();
-
- private slots:
- /**
- * gets called, whenever a TQMovie changes frame
- */
- void movieUpdated( const TQRect &rect );
- void movieStatus(int);
- void movieResize(const TQSize&);
- void deleteMovie();
-
- private:
- void do_notify(const TQPixmap& p, const TQRect& r);
-
- TQString m_suggestedFilename;
-#ifdef IMAGE_TITLES
- TQString m_suggestedTitle;
-#endif
- TQMovie* m;
- TQPixmap* p;
- TQPixmap* scaled;
- TQPixmap* bg;
- QRgb bgColor;
- TQSize bgSize;
- mutable TQPixmap* pixPart;
-
- ImageSource* imgSource;
- const char* formatType; // Is the name of the movie format type
-
- int width;
- int height;
-
- // Is set if movie format type ( incremental/animation) was checked
- bool typeChecked : 1;
- bool isFullyTransparent : 1;
- bool monochrome : 1;
- KHTMLSettings::KAnimationAdvice m_showAnimations : 2;
-
- friend class Cache;
- friend class ::KHTMLPart;
- };
-
- /**
- * @internal
- *
- * Manages the loading of scripts/images/stylesheets for a particular document
- */
- class DocLoader
- {
- public:
- DocLoader(KHTMLPart*, DOM::DocumentImpl*);
- ~DocLoader();
-
- CachedImage *requestImage( const DOM::DOMString &url);
- CachedCSSStyleSheet *requestStyleSheet( const DOM::DOMString &url, const TQString& charsetHint,
- const char *accept = "text/css", bool userSheet = false );
- CachedScript *requestScript( const DOM::DOMString &url, const TQString& charset);
-
- bool autoloadImages() const { return m_bautoloadImages; }
- TDEIO::CacheControl cachePolicy() const { return m_cachePolicy; }
- KHTMLSettings::KAnimationAdvice showAnimations() const { return m_showAnimations; }
- time_t expireDate() const { return m_expireDate; }
- KHTMLPart* part() const { return m_part; }
- DOM::DocumentImpl* doc() const { return m_doc; }
-
- void setCacheCreationDate( time_t );
- void setExpireDate( time_t, bool relative );
- void setAutoloadImages( bool );
- void setCachePolicy( TDEIO::CacheControl cachePolicy ) { m_cachePolicy = cachePolicy; }
- void setShowAnimations( KHTMLSettings::KAnimationAdvice );
- void pauseAnimations();
- void resumeAnimations();
- void insertCachedObject( CachedObject* o ) const;
- void removeCachedObject( CachedObject* o) const { m_docObjects.remove( o ); }
-
- private:
- bool needReload(CachedObject *existing, const TQString &fullUrl);
-
- friend class Cache;
- friend class DOM::DocumentImpl;
- friend class ::KHTMLPart;
-
- TQStringList m_reloadedURLs;
- mutable TQPtrDict<CachedObject> m_docObjects;
- time_t m_expireDate;
- time_t m_creationDate;
- TDEIO::CacheControl m_cachePolicy;
- bool m_bautoloadImages : 1;
- KHTMLSettings::KAnimationAdvice m_showAnimations : 2;
- KHTMLPart* m_part;
- DOM::DocumentImpl* m_doc;
- };
-
- /**
- * @internal
- */
- class Request
- {
- public:
- Request(DocLoader* dl, CachedObject *_object, bool _incremental);
- ~Request();
- bool incremental;
- TQBuffer m_buffer;
- CachedObject *object;
- DocLoader* m_docLoader;
- };
-
- /**
- * @internal
- */
- class Loader : public TQObject
- {
- Q_OBJECT
-
- public:
- Loader();
-
- void load(DocLoader* dl, CachedObject *object, bool incremental = true);
-
- int numRequests( DocLoader* dl ) const;
- void cancelRequests( DocLoader* dl );
-
- // may return 0L
- TDEIO::Job *jobForRequest( const DOM::DOMString &url ) const;
-
- signals:
- void requestStarted( khtml::DocLoader* dl, khtml::CachedObject* obj );
- void requestDone( khtml::DocLoader* dl, khtml::CachedObject *obj );
- void requestFailed( khtml::DocLoader* dl, khtml::CachedObject *obj );
-
- protected slots:
- void slotFinished( TDEIO::Job * );
- void slotData( TDEIO::Job *, const TQByteArray & );
- void servePendingRequests();
-
- protected:
- TQPtrList<Request> m_requestsPending;
- TQPtrDict<Request> m_requestsLoading;
-#ifdef HAVE_LIBJPEG
- KJPEGFormatType m_jpegloader;
-#endif
- TQTimer m_timer;
- };
-
- /**
- * @internal
- *
- * Provides a cache/loader for objects needed for displaying the html page.
- * At the moment these are stylesheets, scripts and images
- */
- class Cache
- {
- friend class DocLoader;
-
- template<typename CachedObjectType, enum CachedObject::Type CachedType>
- static CachedObjectType* requestObject( DocLoader* dl, const KURL& kurl, const char* accept );
-
- public:
- /**
- * init the cache in case it's not already. This needs to get called once
- * before using it.
- */
- KDE_EXPORT static void init();
-
- /**
- * Ask the cache for some url. Will return a cachedObject, and
- * load the requested data in case it's not cached
- * if the DocLoader is zero, the url must be full-qualified.
- * Otherwise, it is automatically base-url expanded
- */
-// static CachedImage *requestImage(const KURL& url)
-// { return Cache::requestObject<CachedImage, CachedObject::Image>( 0, url, 0 ); }
-
- /**
- * Pre-loads a stylesheet into the cache.
- */
- static void preloadStyleSheet(const TQString &url, const TQString &stylesheet_data);
-
- /**
- * Pre-loads a script into the cache.
- */
- static void preloadScript(const TQString &url, const TQString &script_data);
-
- static void setSize( int bytes );
- static int size() { return maxSize; };
- static void statistics();
- KDE_EXPORT static void flush(bool force=false);
-
- /**
- * clears the cache
- * Warning: call this only at the end of your program, to clean
- * up memory (useful for finding memory holes)
- */
- KDE_EXPORT static void clear();
-
- static Loader *loader() { return m_loader; }
-
- static TQPixmap *nullPixmap;
- static TQPixmap *brokenPixmap;
- static TQPixmap *blockedPixmap;
- static int cacheSize;
-
- static void removeCacheEntry( CachedObject *object );
-
- private:
-
- static void checkLRUAndUncacheableListIntegrity();
-
- friend class CachedObject;
-
- static TQDict<CachedObject> *cache;
- static TQPtrList<DocLoader>* docloader;
- static TQPtrList<CachedObject> *freeList;
- static void insertInLRUList(CachedObject*);
- static void removeFromLRUList(CachedObject*);
-
- static int totalSizeOfLRU;
- static int maxSize;
-
- static Loader *m_loader;
- };
-
-} // namespace
-
-#endif