UBW3CWidget.h 2.65 KB
Newer Older
Claudio Valerio's avatar
Claudio Valerio committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117

/*
 * UBW3CWidget.h
 *
 *  Created on: 7 April 2009
 *      Author: Luc
 */

#ifndef UBW3CWIDGET_H_
#define UBW3CWIDGET_H_

#include <QtGui>
#include <QtWebKit>
#include <QtXml>

/*
 * wrapper for w3c widget 1.0 as define in http://www.w3.org/TR/widgets/
 */

#include "UBAbstractWidget.h"

class UBItem;

class UBW3CWidget : public UBAbstractWidget
{
        Q_OBJECT;

    public:
        UBW3CWidget(const QUrl& pWidgetUrl, QWidget *parent = 0);

        virtual ~UBW3CWidget();

        static QString createNPAPIWrapper(const QString& url,
            const QString& pMimeType = QString(), const QSize& sizeHint = QSize(300, 150),
            const QString& pName = QString());

        static QString createNPAPIWrapperInDir(const QString& url, const QDir& pDir,
            const QString& pMimeType = QString(), const QSize& sizeHint = QSize(300, 150),
            const QString& pName = QString());

        static QString createHtmlWrapperInDir(const QString& html, const QDir& pDir,
            const QSize& sizeHint,  const QString& pName);

        static bool hasNPAPIWrapper(const QString& pMimeType);

        class PreferenceValue
        {
            public:

                PreferenceValue()
                {
                    // NOOP
                }
                

                PreferenceValue(const QString& pValue, bool pReadonly)
                {
                    value = pValue;
                    readonly = pReadonly;
                }

                QString value;
                bool readonly;
         };

        class Metadata
        {
            public:
                QString id;
                QString name;
                QString description;
                QString author;
                QString authorEmail;
                QString authorHref;
                QString version;
        };


        QMap<QString, PreferenceValue> preferences()
        {
            return mPreferences;
        }

        Metadata metadatas() const
        {
            return mMetadatas;
        }

    private:

        QMap<QString, PreferenceValue> mPreferences;

        static bool sTemplateLoaded;

        static QMap<QString, QString> sNPAPIWrapperTemplates;

        static QString sNPAPIWrappperConfigTemplate;

        static void loadNPAPIWrappersTemplates();

        static QString textForSubElementByLocale(QDomElement rootElement, QString subTagName, QLocale locale);

        // w3c metadata widget attributes
        //
        // http://www.w3.org/TR/widgets/#widget0

        Metadata mMetadatas;

    private slots:

        void javaScriptWindowObjectCleared();

        void votingSystemError(const QString&);

};

#endif /* UBW3CWIDGET_H_ */