From b2b2692bf2a24ef4a588c0f94cffde0dbe3c94ac Mon Sep 17 00:00:00 2001 From: Lindsay Mathieson Date: Mon, 17 Sep 2012 19:52:53 +0200 Subject: Integrated spell checking - inline spell highlighter. This requires WebKit 2.3 to work. - Addition of a suggested replacement word list to the context menu, for the word right clicked on - A standard modeless spell check dialog that works on the current editable text (or selection). Heavily cribbed from Dawit's work on kdewebkitpart. BUG: 305720 CCMAIL: lindsay.mathieson@gmail.com REVIEW: 106417 REVIEWED-BY: adjam --- src/qwebkitplatformplugin.h | 201 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 201 insertions(+) create mode 100644 src/qwebkitplatformplugin.h (limited to 'src/qwebkitplatformplugin.h') diff --git a/src/qwebkitplatformplugin.h b/src/qwebkitplatformplugin.h new file mode 100644 index 00000000..a1f25fdb --- /dev/null +++ b/src/qwebkitplatformplugin.h @@ -0,0 +1,201 @@ +/* + * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies) + * Copyright (C) 2012 by Lindsay Mathieson + * + * 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. + * + */ + +#ifndef QWEBKITPLATFORMPLUGIN_H +#define QWEBKITPLATFORMPLUGIN_H + +/* + * Warning: The contents of this file is not part of the public QtWebKit API + * and may be changed from version to version or even be completely removed. +*/ + +#if defined(WTF_USE_QT_MULTIMEDIA) && WTF_USE_QT_MULTIMEDIA +#include +#endif +#include +#include +#include +#include +#include + +class QWebSelectData +{ +public: + virtual ~QWebSelectData() {} + + enum ItemType { Option, Group, Separator }; + + virtual ItemType itemType(int) const = 0; + virtual QString itemText(int index) const = 0; + virtual QString itemToolTip(int index) const = 0; + virtual bool itemIsEnabled(int index) const = 0; + virtual bool itemIsSelected(int index) const = 0; + virtual int itemCount() const = 0; + virtual bool multiple() const = 0; + virtual QColor backgroundColor() const = 0; + virtual QColor foregroundColor() const = 0; + virtual QColor itemBackgroundColor(int index) const = 0; + virtual QColor itemForegroundColor(int index) const = 0; +}; + +class QWebSelectMethod : public QObject +{ + Q_OBJECT +public: + virtual ~QWebSelectMethod() {} + + virtual void show(const QWebSelectData&) = 0; + virtual void hide() = 0; + virtual void setGeometry(const QRect&) = 0; + virtual void setFont(const QFont&) = 0; + +Q_SIGNALS: + void selectItem(int index, bool allowMultiplySelections, bool shift); + void didHide(); +}; + +class QWebNotificationData +{ +public: + virtual ~QWebNotificationData() {} + + virtual const QString title() const = 0; + virtual const QString message() const = 0; + virtual const QUrl iconUrl() const = 0; + virtual const QUrl openerPageUrl() const = 0; +}; + +class QWebNotificationPresenter : public QObject +{ + Q_OBJECT +public: + QWebNotificationPresenter() {} + virtual ~QWebNotificationPresenter() {} + + virtual void showNotification(const QWebNotificationData*) = 0; + +Q_SIGNALS: + void notificationClosed(); + void notificationClicked(); +}; + +class QWebHapticFeedbackPlayer: public QObject +{ + Q_OBJECT +public: + QWebHapticFeedbackPlayer() {} + virtual ~QWebHapticFeedbackPlayer() {} + + enum HapticStrength + { + None, Weak, Medium, Strong + }; + + enum HapticEvent + { + Press, Release + }; + + virtual void playHapticFeedback(const HapticEvent, const QString& hapticType, const HapticStrength) = 0; +}; + +class QWebTouchModifier : public QObject +{ + Q_OBJECT +public: + virtual ~QWebTouchModifier() {} + + enum PaddingDirection + { + Up, Right, Down, Left + }; + + virtual unsigned hitTestPaddingForTouch(const PaddingDirection) const = 0; +}; + +#if defined(WTF_USE_QT_MULTIMEDIA) && WTF_USE_QT_MULTIMEDIA +class QWebFullScreenVideoHandler : public QObject +{ + Q_OBJECT +public: + QWebFullScreenVideoHandler() {} + virtual ~QWebFullScreenVideoHandler() {} + virtual bool requiresFullScreenForVideoPlayback() const = 0; + +Q_SIGNALS: + void fullScreenClosed(); + +public Q_SLOTS: + virtual void enterFullScreen(QMediaPlayer*) = 0; + virtual void exitFullScreen() = 0; +}; +#endif + +class QWebSpellChecker : public QObject +{ + Q_OBJECT +public: + struct GrammarDetail + { + int location; + int length; + QStringList guesses; + QString userDescription; + }; + + virtual bool isContinousSpellCheckingEnabled() const = 0; + virtual void toggleContinousSpellChecking() = 0; + + virtual void learnWord(const QString& word) = 0; + virtual void ignoreWordInSpellDocument(const QString& word) = 0; + virtual void checkSpellingOfString(const QString& word, int* misspellingLocation, int* misspellingLength) = 0; + virtual QString autoCorrectSuggestionForMisspelledWord(const QString& word) = 0; + virtual void guessesForWord(const QString& word, const QString& context, QStringList& guesses) = 0; + + virtual bool isGrammarCheckingEnabled() = 0; + virtual void toggleGrammarChecking() = 0; + virtual void checkGrammarOfString(const QString&, QList&, int* badGrammarLocation, int* badGrammarLength) = 0; +}; + +class QWebKitPlatformPlugin +{ +public: + virtual ~QWebKitPlatformPlugin() {} + + enum Extension + { + MultipleSelections, + Notifications, + Haptics, + TouchInteraction, + FullScreenVideoPlayer, + SpellChecker + }; + + virtual bool supportsExtension(Extension) const = 0; + virtual QObject* createExtension(Extension) const = 0; +}; + +QT_BEGIN_NAMESPACE +Q_DECLARE_INTERFACE(QWebKitPlatformPlugin, "com.nokia.Qt.WebKit.PlatformPlugin/1.9"); +QT_END_NAMESPACE + +#endif // QWEBKITPLATFORMPLUGIN_H -- cgit v1.2.1