/* | |
Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies) | |
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 "config.h" | |
#include "qwebpluginfactory.h" | |
/*! | |
\class QWebPluginFactory | |
\since 4.4 | |
\brief The QWebPluginFactory class is used to embed custom data types in web pages. | |
\inmodule QtWebKit | |
The HTML \c{<object>} tag is used to embed arbitrary content into a web page, | |
for example: | |
\code | |
<object type="application/x-pdf" data="http://qt.nokia.com/document.pdf" width="500" height="400"></object> | |
\endcode | |
QtWebkit will natively handle the most basic data types like \c{text/html} and | |
\c{image/jpeg}, but for any advanced or custom data types you will need to | |
provide a handler yourself. | |
QWebPluginFactory is a factory for creating plugins for QWebPage, where each | |
plugin provides support for one or more data types. A plugin factory can be | |
installed on a QWebPage using QWebPage::setPluginFactory(). | |
\note The plugin factory is only used if plugins are enabled through QWebSettings. | |
You provide a QWebPluginFactory by implementing the plugins() and the | |
create() methods. For plugins() it is necessary to describe the plugins the | |
factory can create, including a description and the supported MIME types. | |
The MIME types each plugin can handle should match the ones specified in | |
in the HTML \c{<object>} tag of your content. | |
The create() method is called if the requested MIME type is supported. The | |
implementation has to return a new instance of the plugin requested for the | |
given MIME type and the specified URL. | |
The plugins themselves are subclasses of QObject, but currently only plugins | |
based on either QWidget or QGraphicsWidget are supported. | |
*/ | |
/*! | |
\class QWebPluginFactory::Plugin | |
\since 4.4 | |
\brief The QWebPluginFactory::Plugin structure describes the properties of a plugin a QWebPluginFactory can create. | |
\inmodule QtWebKit | |
*/ | |
/*! | |
\variable QWebPluginFactory::Plugin::name | |
The name of the plugin. | |
*/ | |
/*! | |
\variable QWebPluginFactory::Plugin::description | |
The description of the plugin. | |
*/ | |
/*! | |
\variable QWebPluginFactory::Plugin::mimeTypes | |
The list of mime types supported by the plugin. | |
*/ | |
/*! | |
\class QWebPluginFactory::MimeType | |
\since 4.4 | |
\brief The QWebPluginFactory::MimeType structure describes a mime type supported by a plugin. | |
\inmodule QtWebKit | |
*/ | |
/*! | |
Returns true if this mimetype is the same as the \a other mime type. | |
*/ | |
bool QWebPluginFactory::MimeType::operator==(const MimeType& other) const | |
{ | |
return name == other.name | |
&& description == other.description | |
&& fileExtensions == other.fileExtensions; | |
} | |
/*! | |
\fn bool QWebPluginFactory::MimeType::operator!=(const MimeType& other) const | |
Returns true if this mimetype is different from the \a other mime type. | |
*/ | |
/*! | |
\variable QWebPluginFactory::MimeType::name | |
The full name of the MIME type; e.g., \c{text/plain} or \c{image/png}. | |
*/ | |
/*! | |
\variable QWebPluginFactory::MimeType::description | |
The description of the mime type. | |
*/ | |
/*! | |
\variable QWebPluginFactory::MimeType::fileExtensions | |
The list of file extensions that are used by this mime type. | |
For example, a mime type for PDF documents would return "pdf" as its file extension. | |
*/ | |
/*! | |
Constructs a QWebPluginFactory with parent \a parent. | |
*/ | |
QWebPluginFactory::QWebPluginFactory(QObject *parent) | |
: QObject(parent) | |
{ | |
} | |
/*! | |
Destructor. | |
*/ | |
QWebPluginFactory::~QWebPluginFactory() | |
{ | |
} | |
/*! | |
\fn QList<Plugin> QWebPluginFactory::plugins() const = 0 | |
This function is reimplemented in subclasses to return a list of | |
supported plugins the factory can create. | |
\note Currently, this function is only called when JavaScript programs | |
access the global \c plugins or \c mimetypes objects. | |
*/ | |
/*! | |
This function is called to refresh the list of supported plugins. It may be called after a new plugin | |
has been installed in the system. | |
*/ | |
void QWebPluginFactory::refreshPlugins() | |
{ | |
} | |
/*! | |
\fn QObject *QWebPluginFactory::create(const QString &mimeType, const QUrl &url, | |
const QStringList &argumentNames, const QStringList &argumentValues) const = 0 | |
Implemented in subclasses to create a new plugin that can display content of | |
the MIME type given by \a mimeType. The URL of the content is provided in \a url. | |
The returned object should be a QWidget. | |
The HTML object element can provide parameters through the \c{<param>} tag. | |
The name and the value attributes of these tags are specified by the | |
\a argumentNames and \a argumentValues string lists. | |
For example: | |
\code | |
<object type="application/x-pdf" data="http://qt.nokia.com/document.pdf" width="500" height="400"> | |
<param name="showTableOfContents" value="true" /> | |
<param name="hideThumbnails" value="false" /> | |
</object> | |
\endcode | |
The above object element will result in a call to create() with the following arguments: | |
\table | |
\header \o Parameter | |
\o Value | |
\row \o mimeType | |
\o "application/x-pdf" | |
\row \o url | |
\o "http://qt.nokia.com/document.pdf" | |
\row \o argumentNames | |
\o "showTableOfContents" "hideThumbnails" | |
\row \o argumentVaues | |
\o "true" "false" | |
\endtable | |
\note Ownership of the returned object will be transferred to the caller. | |
*/ | |
/*! | |
\enum QWebPluginFactory::Extension | |
\internal | |
This enum describes the types of extensions that the plugin factory can support. Before using these extensions, you | |
should verify that the extension is supported by calling supportsExtension(). | |
Currently there are no extensions. | |
*/ | |
/*! | |
\class QWebPluginFactory::ExtensionOption | |
\internal | |
\since 4.4 | |
\brief The ExtensionOption class provides an extended input argument to QWebPluginFactory's extension support. | |
\inmodule QtWebKit | |
\sa QWebPluginFactory::extension() | |
*/ | |
/*! | |
\class QWebPluginFactory::ExtensionReturn | |
\internal | |
\since 4.4 | |
\brief The ExtensionOption class provides an extended output argument to QWebPluginFactory's extension support. | |
\inmodule QtWebKit | |
\sa QWebPluginFactory::extension() | |
*/ | |
/*! | |
This virtual function can be reimplemented in a QWebPluginFactory subclass to provide support for extensions. The \a option | |
argument is provided as input to the extension; the output results can be stored in \a output. | |
\internal | |
The behaviour of this function is determined by \a extension. | |
You can call supportsExtension() to check if an extension is supported by the factory. | |
By default, no extensions are supported, and this function returns false. | |
\sa supportsExtension(), Extension | |
*/ | |
bool QWebPluginFactory::extension(Extension extension, const ExtensionOption *option, ExtensionReturn *output) | |
{ | |
Q_UNUSED(extension) | |
Q_UNUSED(option) | |
Q_UNUSED(output) | |
return false; | |
} | |
/*! | |
This virtual function returns true if the plugin factory supports \a extension; otherwise false is returned. | |
\internal | |
\sa extension() | |
*/ | |
bool QWebPluginFactory::supportsExtension(Extension extension) const | |
{ | |
Q_UNUSED(extension) | |
return false; | |
} |