QMimeSourceFactory Class Reference
An extensible supply of MIME-typed data.
More...
#include <qmime.h>
List of all member functions.
Public Members
-
-
virtual const QMimeSource*Â
data ( const QString & abs_name ) const
virtual QStringÂ
makeAbsolute ( const QString & abs_or_rel_name, const QString & context ) const
const QMimeSource*Â
data ( const QString & abs_or_rel_name, const QString & context ) const
virtual voidÂ
setText ( const QString & abs_name, const QString & text )Â
virtual voidÂ
setImage ( const QString & abs_name, const QImage & im )Â
virtual voidÂ
setPixmap ( const QString & abs_name, const QPixmap & pm )Â
virtual voidÂ
setData ( const QString & abs_name, QMimeSource * data )Â
virtual voidÂ
setFilePath ( const QStringList & )Â
virtual QStringListÂ
filePath () const
-
virtual voidÂ
setExtensionType ( const QString & ext, const char * mimetype )Â
Static Public Members
Detailed Description
An extensible supply of MIME-typed data.
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 like 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 setText(),
setImage(), and setPixmap() that simply call setData() with massaged
parameters).
The rich text widgets QTextView 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
QTextView::setMimeSourceFactory() ). Other classes that are capable
of displaying rich text like QLabel, QWhatsThis or QMessageBox
always use the default factory.
As mentioned earlier, a factory can also be used as 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_xpm[]={
"...",
...
"..."};
To be able to use this image within some rich text, for example inside a
QLabel, you have to 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>?" );
Member Function Documentation
QMimeSourceFactory::QMimeSourceFactory ()
Constructs a QMimeSourceFactory which has no file path and no stored
content.
QMimeSourceFactory::~QMimeSourceFactory () [virtual]
Destructs the QMimeSourceFactory, deleting all stored content.
void QMimeSourceFactory::addFilePath ( const QString & p )
Adds another search path.
See also setFilePath().
const QMimeSource* QMimeSourceFactory::data ( const QString & abs_name ) const [virtual]
Returns a reference to the data associated with abs_name. The return
value only remains valid until a subsequent call to this function for
the same object, and only if setData() is not called to modify the data,
so you should immediately decode the result.
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 filename, the factory will search for it
on all defined paths ( see setFilePath() ).
The factory understands all image formats supported by
QImageIO. Any other mime types are determined by the filename
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 filenames 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 UTF8 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
as such files can be viewed regardless of the run-time 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, which is just
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 you problem domain, you may inherit
QMimeSourceFactory and reimplement this function to perform some
more clever mime type detection. The same applies if you want to use
the mime source factory for accessing URL referenced data over a
network.
const QMimeSource* QMimeSourceFactory::data ( const QString & abs_or_rel_name, const QString & context ) const
A convenience function. See data(const QString& abs_name).
QMimeSourceFactory* QMimeSourceFactory::defaultFactory () [static]
Returns the application-wide default mime source factory. This
factory is used by rich text rendering classes such as
QSimpleRichText, QWhatsThis and also QMessageBox to resolve named
references within rich text documents. It serves also as initial
factory for the more complex render widgets QTextView and
QTextBrowser.
See also setDefaultFactory().
QStringList QMimeSourceFactory::filePath () const [virtual]
Returns the currently set search paths.
QString QMimeSourceFactory::makeAbsolute ( const QString & abs_or_rel_name, const QString & context ) const [virtual]
Converts the absolute or relative data item name abs_or_rel_name
to an absolute name, interpreted within the context of the data
item named context (this must be an absolute name).
void QMimeSourceFactory::setData ( const QString & abs_name, QMimeSource * data ) [virtual]
Sets data to be the data item associated with
the absolute name abs_name. Note that the ownership of data is
transferred to the factory - do not delete or access the pointer after
passing it to this function.
void QMimeSourceFactory::setDefaultFactory ( QMimeSourceFactory * factory ) [static]
Sets the default factory, destroying any previously set mime source
provider. The ownership of the factory is transferred.
See also defaultFactory().
void QMimeSourceFactory::setExtensionType ( const QString & ext, const char * mimetype ) [virtual]
Sets the MIME-type to be associated with a filename extension. This
determines the MIME-type for files found via a path set by setFilePath().
void QMimeSourceFactory::setFilePath ( const QStringList & path ) [virtual]
Sets a list of directories which will be searched when named data
is requested.
See also filePath().
void QMimeSourceFactory::setImage ( const QString & abs_name, const QImage & image ) [virtual]
Sets image to be the data item associated with
the absolute name abs_name.
Equivalent to setData(abs_name, new QImageDrag(image)).
void QMimeSourceFactory::setPixmap ( const QString & abs_name, const QPixmap & pixmap ) [virtual]
Sets pixmap to be the data item associated with
the absolute name abs_name.
void QMimeSourceFactory::setText ( const QString & abs_name, const QString & text ) [virtual]
Sets text to be the data item associated with
the absolute name abs_name.
Equivalent to setData(abs_name, new QTextDrag(text)).
Search the documentation, FAQ, qt-interest archive and more (uses
www.trolltech.com):
This file is part of the Qt toolkit,
copyright © 1995-2005
Trolltech, all rights reserved.