summaryrefslogtreecommitdiffstats
path: root/src/kernel/qmime.cpp
diff options
context:
space:
mode:
authorMichele Calgaro <michele.calgaro@yahoo.it>2024-07-07 13:06:00 +0900
committerMichele Calgaro <michele.calgaro@yahoo.it>2024-07-07 13:06:00 +0900
commit628b0bb74c3fc327efff8add9c73ada04b1cbea2 (patch)
tree16062922d35b5e0153b9f866e440f36603bd4f55 /src/kernel/qmime.cpp
parent7552c6d73043b1040139033f6864db48ae5446cf (diff)
downloadtqt-628b0bb74c3fc327efff8add9c73ada04b1cbea2.tar.gz
tqt-628b0bb74c3fc327efff8add9c73ada04b1cbea2.zip
Rename drag-n-drop nt* related files to equivalent tq*
Signed-off-by: Michele Calgaro <michele.calgaro@yahoo.it>
Diffstat (limited to 'src/kernel/qmime.cpp')
-rw-r--r--src/kernel/qmime.cpp619
1 files changed, 0 insertions, 619 deletions
diff --git a/src/kernel/qmime.cpp b/src/kernel/qmime.cpp
deleted file mode 100644
index de6dc3403..000000000
--- a/src/kernel/qmime.cpp
+++ /dev/null
@@ -1,619 +0,0 @@
-/****************************************************************************
-**
-** Implementation of MIME support
-**
-** Copyright (C) 1992-2008 Trolltech ASA. All rights reserved.
-**
-** This file is part of the kernel module of the TQt GUI Toolkit.
-**
-** This file may be used under the terms of the GNU General
-** Public License versions 2.0 or 3.0 as published by the Free
-** Software Foundation and appearing in the files LICENSE.GPL2
-** and LICENSE.GPL3 included in the packaging of this file.
-** Alternatively you may (at your option) use any later version
-** of the GNU General Public License if such license has been
-** publicly approved by Trolltech ASA (or its successors, if any)
-** and the KDE Free TQt Foundation.
-**
-** Please review the following information to ensure GNU General
-** Public Licensing requirements will be met:
-** http://trolltech.com/products/qt/licenses/licensing/opensource/.
-** If you are unsure which license is appropriate for your use, please
-** review the following information:
-** http://trolltech.com/products/qt/licenses/licensing/licensingoverview
-** or contact the sales department at sales@trolltech.com.
-**
-** This file may be used under the terms of the Q Public License as
-** defined by Trolltech ASA and appearing in the file LICENSE.TQPL
-** included in the packaging of this file. Licensees holding valid TQt
-** Commercial licenses may use this file in accordance with the TQt
-** Commercial License Agreement provided with the Software.
-**
-** This file is provided "AS IS" with NO WARRANTY OF ANY KIND,
-** INCLUDING THE WARRANTIES OF DESIGN, MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE. Trolltech reserves all rights not granted
-** herein.
-**
-**********************************************************************/
-
-#include "ntqmime.h"
-
-#ifndef TQT_NO_MIME
-
-#include "tqmap.h"
-#include "tqstringlist.h"
-#include "ntqfileinfo.h"
-#include "ntqdir.h"
-#include "ntqdragobject.h"
-#include "ntqcleanuphandler.h"
-#include "ntqapplication.h" // ### for now
-#include "ntqclipboard.h" // ### for now
-
-/*!
- \class TQMimeSource ntqmime.h
- \brief The TQMimeSource class is an abstraction of objects which provide formatted data of a certain MIME type.
-
- \ingroup io
- \ingroup draganddrop
- \ingroup misc
-
- \link dnd.html Drag-and-drop\endlink and
- \link TQClipboard clipboard\endlink use this abstraction.
-
- \sa \link http://www.isi.edu/in-notes/iana/assignments/media-types/
- IANA list of MIME media types\endlink
-*/
-
-static int qt_mime_serial_number = 0;
-static TQMimeSourceFactory* defaultfactory = 0;
-static TQSingleCleanupHandler<TQMimeSourceFactory> qmime_cleanup_factory;
-
-/*!
- Constructs a mime source and assigns a globally unique serial
- number to it.
-
- \sa serialNumber()
-*/
-
-TQMimeSource::TQMimeSource()
-{
- ser_no = qt_mime_serial_number++;
- cacheType = NoCache;
-}
-
-/*!
- \fn int TQMimeSource::serialNumber() const
-
- Returns the mime source's globally unique serial number.
-*/
-
-
-void TQMimeSource::clearCache()
-{
- if ( cacheType == Text ) {
- delete cache.txt.str;
- delete cache.txt.subtype;
- cache.txt.str = 0;
- cache.txt.subtype = 0;
- } else if ( cacheType == Graphics ) {
- delete cache.gfx.img;
- delete cache.gfx.pix;
- cache.gfx.img = 0;
- cache.gfx.pix = 0;
- }
- cacheType = NoCache;
-}
-
-/*!
- Provided to ensure that subclasses destroy themselves correctly.
-*/
-TQMimeSource::~TQMimeSource()
-{
-#ifndef TQT_NO_CLIPBOARD
- extern void tqt_clipboard_cleanup_mime_source(TQMimeSource *);
- tqt_clipboard_cleanup_mime_source(this);
-#endif
- clearCache();
-}
-
-/*!
- \fn TQByteArray TQMimeSource::encodedData(const char*) const
-
- Returns the encoded data of this object in the specified MIME
- format.
-
- Subclasses must reimplement this function.
-*/
-
-
-
-/*!
- Returns TRUE if the object can provide the data in format \a
- mimeType; otherwise returns FALSE.
-
- If you inherit from TQMimeSource, for consistency reasons it is
- better to implement the more abstract canDecode() functions such
- as TQTextDrag::canDecode() and TQImageDrag::canDecode().
-*/
-bool TQMimeSource::provides(const char* mimeType) const
-{
- const char* fmt;
- for (int i=0; (fmt = format(i)); i++) {
- if ( !tqstricmp(mimeType,fmt) ) {
- return TRUE;
- }
- }
- return FALSE;
-}
-
-
-/*!
- \fn const char * TQMimeSource::format(int i) const
-
- Returns the \a{i}-th supported MIME format, or 0.
-*/
-
-
-
-class TQMimeSourceFactoryData {
-public:
- TQMimeSourceFactoryData() :
- last(0)
- {
- }
-
- ~TQMimeSourceFactoryData()
- {
- TQMap<TQString, TQMimeSource*>::Iterator it = stored.begin();
- while ( it != stored.end() ) {
- delete *it;
- ++it;
- }
- delete last;
- }
-
- TQMap<TQString, TQMimeSource*> stored;
- TQMap<TQString, TQString> extensions;
- TQStringList path;
- TQMimeSource* last;
- TQPtrList<TQMimeSourceFactory> factories;
-};
-
-
-/*!
- \class TQMimeSourceFactory ntqmime.h
- \brief The TQMimeSourceFactory class is an extensible provider of mime-typed data.
-
- \ingroup io
- \ingroup environment
-
- A TQMimeSourceFactory provides an abstract interface to a
- collection of information. Each piece of information is
- represented by a TQMimeSource object which can be examined and
- converted to concrete data types by functions such as
- TQImageDrag::canDecode() and TQImageDrag::decode().
-
- The base TQMimeSourceFactory can be used in two ways: as an
- abstraction of a collection of files or as specifically stored
- data. For it to access files, call setFilePath() before accessing
- data. For stored data, call setData() for each item (there are
- also convenience functions, e.g. setText(), setImage() and
- setPixmap(), that simply call setData() with appropriate
- parameters).
-
- The rich text widgets, TQTextEdit and TQTextBrowser, use
- TQMimeSourceFactory to resolve references such as images or links
- within rich text documents. They either access the default factory
- (see \l{defaultFactory()}) or their own (see
- \l{TQTextEdit::setMimeSourceFactory()}). Other classes that are
- capable of displaying rich text (such as TQLabel, TQWhatsThis or
- TQMessageBox) always use the default factory.
-
- A factory can also be used as a container to store data associated
- with a name. This technique is useful whenever rich text contains
- images that are stored in the program itself, not loaded from the
- hard disk. Your program may, for example, define some image data
- as:
- \code
- static const char* myimage_data[]={
- "...",
- ...
- "..."};
- \endcode
-
- To be able to use this image within some rich text, for example
- inside a TQLabel, you must create a TQImage from the raw data and
- insert it into the factory with a unique name:
- \code
- TQMimeSourceFactory::defaultFactory()->setImage( "myimage", TQImage(myimage_data) );
- \endcode
-
- Now you can create a rich text TQLabel with
-
- \code
- TQLabel* label = new TQLabel(
- "Rich text with embedded image:<img source=\"myimage\">"
- "Isn't that <em>cute</em>?" );
- \endcode
-
- When no longer needed, you can clear the data from the factory:
-
- \code
- delete label;
- TQMimeSourceFactory::defaultFactory()->setData( "myimage", 0 );
- \endcode
-*/
-
-
-/*!
- Constructs a TQMimeSourceFactory that has no file path and no
- stored content.
-*/
-TQMimeSourceFactory::TQMimeSourceFactory() :
- d(new TQMimeSourceFactoryData)
-{
- // add some reasonable defaults
- setExtensionType("htm", "text/html;charset=iso8859-1");
- setExtensionType("html", "text/html;charset=iso8859-1");
- setExtensionType("txt", "text/plain");
- setExtensionType("xml", "text/xml;charset=UTF-8");
- setExtensionType("jpg", "image/jpeg"); // support misspelled jpeg files
-}
-
-/*!
- Destroys the TQMimeSourceFactory, deleting all stored content.
-*/
-TQMimeSourceFactory::~TQMimeSourceFactory()
-{
- if ( defaultFactory() == this )
- defaultfactory = 0;
- delete d;
-}
-
-TQMimeSource* TQMimeSourceFactory::dataInternal(const TQString& abs_name, const TQMap<TQString, TQString> &extensions ) const
-{
- TQMimeSource* r = 0;
- TQFileInfo fi(abs_name);
- if ( fi.isReadable() ) {
-
- // get the right mimetype
- TQString e = fi.extension(FALSE);
- TQCString mimetype = "application/octet-stream";
- const char* imgfmt;
- if ( extensions.contains(e) )
- mimetype = extensions[e].latin1();
- else if ( ( imgfmt = TQImage::imageFormat( abs_name ) ) )
- mimetype = TQCString("image/")+TQCString(imgfmt).lower();
-
- TQFile f(abs_name);
- if ( f.open(IO_ReadOnly) && f.size() ) {
- TQByteArray ba(f.size());
- f.readBlock(ba.data(), ba.size());
- TQStoredDrag* sr = new TQStoredDrag( mimetype );
- sr->setEncodedData( ba );
- delete d->last;
- d->last = r = sr;
- }
- }
-
- // we didn't find the mime-source, so ask the default factory for
- // the mime-source (this one will iterate over all installed ones)
- //
- // this looks dangerous, as this dataInternal() function will be
- // called again when the default factory loops over all installed
- // factories (including this), but the static bool looping in
- // data() avoids endless recursions
- if ( !r && this != defaultFactory() )
- r = (TQMimeSource*)defaultFactory()->data( abs_name );
-
- return r;
-}
-
-
-/*!
- Returns a reference to the data associated with \a abs_name. The
- return value remains valid only until the next data() or setData()
- call, so you should immediately decode the result.
-
- If there is no data associated with \a abs_name in the factory's
- store, the factory tries to access the local filesystem. If \a
- abs_name isn't an absolute file name, the factory will search for
- it in all defined paths (see \l{setFilePath()}).
-
- The factory understands all the image formats supported by
- TQImageIO. Any other mime types are determined by the file name
- extension. The default settings are
- \code
- setExtensionType("html", "text/html;charset=iso8859-1");
- setExtensionType("htm", "text/html;charset=iso8859-1");
- setExtensionType("txt", "text/plain");
- setExtensionType("xml", "text/xml;charset=UTF-8");
- \endcode
- The effect of these is that file names ending in "txt" will be
- treated as text encoded in the local encoding; those ending in
- "xml" will be treated as text encoded in Unicode UTF-8 encoding.
- The text/html type is treated specially, since the encoding can be
- specified in the html file itself. "html" or "htm" will be treated
- as text encoded in the encoding specified by the html meta tag, if
- none could be found, the charset of the mime type will be used.
- The text subtype ("html", "plain", or "xml") does not affect the
- factory, but users of the factory may behave differently. We
- recommend creating "xml" files where practical. These files can be
- viewed regardless of the runtime encoding and can encode any
- Unicode characters without resorting to encoding definitions
- inside the file.
-
- Any file data that is not recognized will be retrieved as a
- TQMimeSource providing the "application/octet-stream" mime type,
- meaning uninterpreted binary data.
-
- You can add further extensions or change existing ones with
- subsequent calls to setExtensionType(). If the extension mechanism
- is not sufficient for your problem domain, you can inherit
- TQMimeSourceFactory and reimplement this function to perform some
- more specialized mime-type detection. The same applies if you want
- to use the mime source factory to access URL referenced data over
- a network.
-*/
-const TQMimeSource* TQMimeSourceFactory::data(const TQString& abs_name) const
-{
- if ( d->stored.contains(abs_name) )
- return d->stored[abs_name];
-
- TQMimeSource* r = 0;
- TQStringList::Iterator it;
- if ( abs_name[0] == '/'
-#ifdef TQ_WS_WIN
- || ( abs_name[0] && abs_name[1] == ':' ) || abs_name.startsWith("\\\\")
-#endif
- )
- {
- // handle absolute file names directly
- r = dataInternal( abs_name, d->extensions);
- }
- else { // check list of paths
- for ( it = d->path.begin(); !r && it != d->path.end(); ++it ) {
- TQString filename = *it;
- if ( filename[(int)filename.length()-1] != '/' )
- filename += '/';
- filename += abs_name;
- r = dataInternal( filename, d->extensions );
- }
- }
-
- static bool looping = FALSE;
- if ( !r && this == defaultFactory() ) {
- // we found no mime-source and we are the default factory, so
- // we know all the other installed mime-source factories, so
- // ask them
- if ( !looping ) {
- // to avoid endless recustions, don't enter the loop below
- // if data() got called from within the loop below
- looping = TRUE;
- TQPtrListIterator<TQMimeSourceFactory> it( d->factories );
- TQMimeSourceFactory *f;
- while ( ( f = it.current() ) ) {
- ++it;
- if ( f == this )
- continue;
- r = (TQMimeSource*)f->data( abs_name );
- if ( r ) {
- looping = FALSE;
- return r;
- }
- }
- looping = FALSE;
- }
- } else if ( !r ) {
- // we are not the default mime-source factory, so ask the
- // default one for the mime-source, as this one will loop over
- // all installed mime-source factories and ask these
- r = (TQMimeSource*)defaultFactory()->data( abs_name );
- }
-
- return r;
-}
-
-/*!
- Sets the list of directories that will be searched when named data
- is requested to the those given in the string list \a path.
-
- \sa filePath()
-*/
-void TQMimeSourceFactory::setFilePath( const TQStringList& path )
-{
- d->path = path;
-}
-
-/*!
- Returns the currently set search paths.
-*/
-TQStringList TQMimeSourceFactory::filePath() const
-{
- return d->path;
-}
-
-/*!
- Adds another search path, \a p to the existing search paths.
-
- \sa setFilePath()
-*/
-void TQMimeSourceFactory::addFilePath( const TQString& p )
-{
- d->path += p;
-}
-
-/*!
- Sets the mime-type to be associated with the file name extension,
- \a ext to \a mimetype. This determines the mime-type for files
- found via the paths set by setFilePath().
-*/
-void TQMimeSourceFactory::setExtensionType( const TQString& ext, const char* mimetype )
-{
- d->extensions.replace(ext, mimetype);
-}
-
-/*!
- Converts the absolute or relative data item name \a
- abs_or_rel_name to an absolute name, interpreted within the
- context (path) of the data item named \a context (this must be an
- absolute name).
-*/
-TQString TQMimeSourceFactory::makeAbsolute(const TQString& abs_or_rel_name, const TQString& context) const
-{
- if ( context.isNull() ||
- !(context[0] == '/'
-#ifdef TQ_WS_WIN
- || ( context[0] && context[1] == ':')
-#endif
- ))
- return abs_or_rel_name;
- if ( abs_or_rel_name.isEmpty() )
- return context;
- TQFileInfo c( context );
- if (!c.isDir()) {
- TQFileInfo r( c.dir(TRUE), abs_or_rel_name );
- return r.absFilePath();
- } else {
- TQDir d(context);
- TQFileInfo r(d, abs_or_rel_name);
- return r.absFilePath();
- }
-}
-
-/*!
- \overload
- A convenience function. See data(const TQString& abs_name). The
- file name is given in \a abs_or_rel_name and the path is in \a
- context.
-*/
-const TQMimeSource* TQMimeSourceFactory::data(const TQString& abs_or_rel_name, const TQString& context) const
-{
- const TQMimeSource* r = data(makeAbsolute(abs_or_rel_name,context));
- if ( !r && !d->path.isEmpty() )
- r = data(abs_or_rel_name);
- return r;
-}
-
-
-/*!
- Sets \a text to be the data item associated with the absolute name
- \a abs_name.
-
- Equivalent to setData(abs_name, new TQTextDrag(text)).
-*/
-void TQMimeSourceFactory::setText( const TQString& abs_name, const TQString& text )
-{
- setData(abs_name, new TQTextDrag(text));
-}
-
-/*!
- Sets \a image to be the data item associated with the absolute
- name \a abs_name.
-
- Equivalent to setData(abs_name, new TQImageDrag(image)).
-*/
-void TQMimeSourceFactory::setImage( const TQString& abs_name, const TQImage& image )
-{
- setData(abs_name, new TQImageDrag(image));
-}
-
-/*!
- Sets \a pixmap to be the data item associated with the absolute
- name \a abs_name.
-*/
-void TQMimeSourceFactory::setPixmap( const TQString& abs_name, const TQPixmap& pixmap )
-{
- setData(abs_name, new TQImageDrag(pixmap.convertToImage()));
-}
-
-/*!
- Sets \a data to be the data item associated with
- the absolute name \a abs_name. Note that the ownership of \a data is
- transferred to the factory: do not delete or access the pointer after
- passing it to this function.
-
- Passing 0 for data removes previously stored data.
-*/
-void TQMimeSourceFactory::setData( const TQString& abs_name, TQMimeSource* data )
-{
- if ( d->stored.contains(abs_name) )
- delete d->stored[abs_name];
- d->stored.replace(abs_name,data);
-}
-
-
-/*!
- Returns the application-wide default mime source factory. This
- factory is used by rich text rendering classes such as
- TQSimpleRichText, TQWhatsThis and TQMessageBox to resolve named
- references within rich text documents. It serves also as the
- initial factory for the more complex render widgets, TQTextEdit and
- TQTextBrowser.
-
- \sa setDefaultFactory()
-*/
-TQMimeSourceFactory* TQMimeSourceFactory::defaultFactory()
-{
- if (!defaultfactory)
- {
- defaultfactory = new TQMimeSourceFactory();
- qmime_cleanup_factory.set( &defaultfactory );
- }
- return defaultfactory;
-}
-
-/*!
- Sets the default \a factory, destroying any previously set mime
- source provider. The ownership of the factory is transferred to
- TQt.
-
- \sa defaultFactory()
-*/
-void TQMimeSourceFactory::setDefaultFactory( TQMimeSourceFactory* factory)
-{
- if ( !defaultfactory )
- qmime_cleanup_factory.set( &defaultfactory );
- else if ( defaultfactory != factory )
- delete defaultfactory;
- defaultfactory = factory;
-}
-
-/*!
- Sets the defaultFactory() to 0 and returns the previous one.
-*/
-
-TQMimeSourceFactory* TQMimeSourceFactory::takeDefaultFactory()
-{
- TQMimeSourceFactory *f = defaultfactory;
- defaultfactory = 0;
- return f;
-}
-
-/*!
- Adds the TQMimeSourceFactory \a f to the list of available
- mimesource factories. If the defaultFactory() can't resolve a
- data() it iterates over the list of installed mimesource factories
- until the data can be resolved.
-
- \sa removeFactory();
-*/
-
-void TQMimeSourceFactory::addFactory( TQMimeSourceFactory *f )
-{
- TQMimeSourceFactory::defaultFactory()->d->factories.append( f );
-}
-
-/*!
- Removes the mimesource factory \a f from the list of available
- mimesource factories.
-
- \sa addFactory();
-*/
-
-void TQMimeSourceFactory::removeFactory( TQMimeSourceFactory *f )
-{
- TQMimeSourceFactory::defaultFactory()->d->factories.removeRef( f );
-}
-
-#endif // TQT_NO_MIME