Home | All Classes | Main Classes | Annotated | Grouped Classes | Functions |
The QMimeSourceFactory class is an extensible provider of mime-typed data. More...
#include <qmime.h>
A QMimeSourceFactory provides an abstract interface to a collection of information. Each piece of information is represented by a QMimeSource object which can be examined and converted to concrete data types by functions such as QImageDrag::canDecode() and QImageDrag::decode().
The base QMimeSourceFactory 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, QTextEdit and QTextBrowser, use QMimeSourceFactory to resolve references such as images or links within rich text documents. They either access the default factory (see defaultFactory()) or their own (see QTextEdit::setMimeSourceFactory()). Other classes that are capable of displaying rich text (such as QLabel, QWhatsThis or QMessageBox) 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:
static const char* myimage_data[]={ "...", ... "..."};
To be able to use this image within some rich text, for example inside a QLabel, you must create a QImage from the raw data and insert it into the factory with a unique name:
QMimeSourceFactory::defaultFactory()->setImage( "myimage", QImage(myimage_data) );
Now you can create a rich text QLabel with
QLabel* label = new QLabel( "Rich text with embedded image:<img source=\"myimage\">" "Isn't that <em>cute</em>?" );
When no longer needed, you can clear the data from the factory:
delete label; QMimeSourceFactory::defaultFactory()->setData( "myimage", 0 );
See also Environment Classes and Input/Output and Networking.
See also removeFactory().
See also setFilePath().
If there is no data associated with abs_name in the factory's store, the factory tries to access the local filesystem. If abs_name isn't an absolute file name, the factory will search for it in all defined paths (see setFilePath()).
The factory understands all the image formats supported by QImageIO. Any other mime types are determined by the file name extension. The default settings are
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");The effect of these is that file names ending in "html" or "htm" will be treated as text encoded in the iso8859-1 encoding, those 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 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 QMimeSource 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 QMimeSourceFactory 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.
A convenience function. See data(const QString& abs_name). The file name is given in abs_or_rel_name and the path is in context.
See also setDefaultFactory().
Examples: action/application.cpp and application/application.cpp.
See also addFactory().
Passing 0 for data removes previously stored data.
See also defaultFactory().
See also filePath().
Equivalent to setData(abs_name, new QImageDrag(image)).
Equivalent to setData(abs_name, new QTextDrag(text)).
This file is part of the Qt toolkit. Copyright © 1995-2003 Trolltech. All Rights Reserved.
Copyright © 2003 Trolltech | Trademarks | Qt version 3.2.0b2
|