diff options
Diffstat (limited to 'experimental/tqtinterface/qt4/src/inputmethod/tqinputcontextplugin.cpp')
-rw-r--r-- | experimental/tqtinterface/qt4/src/inputmethod/tqinputcontextplugin.cpp | 231 |
1 files changed, 231 insertions, 0 deletions
diff --git a/experimental/tqtinterface/qt4/src/inputmethod/tqinputcontextplugin.cpp b/experimental/tqtinterface/qt4/src/inputmethod/tqinputcontextplugin.cpp new file mode 100644 index 000000000..d8a728e5f --- /dev/null +++ b/experimental/tqtinterface/qt4/src/inputmethod/tqinputcontextplugin.cpp @@ -0,0 +1,231 @@ +/**************************************************************************** +** $Id: qinputcontextplugin.cpp,v 1.2 2004/06/20 18:43:11 daisuke Exp $ +** +** Implementation of TQInputContextPlugin class +** +** Created : 010920 +** +** Copyright (C) 2001 Trolltech AS. All rights reserved. +** +** This file is part of the widgets module of the TQt GUI Toolkit. +** +** This file may be distributed under the terms of the Q Public License +** as defined by Trolltech AS of Norway and appearing in the file +** LICENSE.TQPL included in the packaging of this file. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid TQt Enterprise Edition or TQt Professional Edition +** licenses may use this file in accordance with the TQt Commercial License +** Agreement provided with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about TQt Commercial License Agreements. +** See http://www.trolltech.com/qpl/ for TQPL licensing information. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#include "tqinputcontextplugin.h" + +#ifndef TQT_NO_IM +#ifndef TQT_NO_COMPONENT + +#include "tqinputcontextinterface_p.h" + +/*! + \class TQInputContextPlugin qinputcontextplugin.h + \brief The TQInputContextPlugin class provides an abstract base for custom TQInputContext plugins. + \reentrant + \ingroup plugins + + The input context plugin is a simple plugin interface that makes it + easy to create custom input contexts that can be loaded dynamically + into applications. + + Writing a input context plugin is achieved by subclassing this + base class, reimplementing the pure virtual functions keys(), + create(), languages(), displayName() description() and exporting + the class with the \c TQ_EXPORT_PLUGIN macro. See the \link + plugins-howto.html TQt Plugins documentation \endlink for details. + + \sa TQInputContext +*/ + +/*! + \fn TQStringList TQInputContextPlugin::keys() const + + Returns the list of TQInputContext keys this plugin provides. + + These keys are usually the class names of the custom input context + that are implemented in the plugin. + + Return value is the names to identify and specify input methods + for the input method switching mechanism and so on. The names have + to be consistent with TQInputContext::identifierName(). The names + have to consist of ASCII characters only. See also + TQInputContext::identifierName() for further information. + + \sa create(), displayName(), TQInputContext::identifierName() +*/ + +/*! + \fn TQInputContext* TQInputContextPlugin::create( const TQString& key ) + + Creates and returns a TQInputContext instance for the input context key \a key. + The input context key is usually the class name of the required input method. + + \sa keys() +*/ + +/*! + \fn TQStringList languages( const TQString &key ) + + Returns what languages are supported by the TQInputContext instance + specified by \a key. + + The languages are expressed as language code (e.g. "zh_CN", + "zh_TW", "zh_HK", "ja", "ko", ...). An input context that suports + multiple languages can return all supported languages as + TQStringList. The name has to be consistent with + TQInputContextPlugin::language(). + + This information may be used to optimize user interface. + + \sa TQInputContext::language() +*/ + +/*! + \fn TQString displayName( const TQString &key ) + + Returns a user friendly i18n-ized name of the TQInputContext + instance specified by \a key. This string may be appeared in a + menu and so on for users. + + There are two different names with different responsibility in the + input method domain. This function returns one of them. Another + name is called 'identifier name' to identify and specify input + methods for the input method switching mechanism and so on. + + Although tr( identifierName ) can provide user friendly i18n-ized + name without this function, the message catalog have to be managed + by TQt in the case. However, some sophisticated input method + framework manages their own message catalogs to provide this + i18n-ized name string. So we need this function rather than just + call tr() for identifier name. + + \sa keys(), TQInputContext::identifierName() +*/ + +/*! + \fn TQString description( const TQString &key ) + + Returns a i18n-ized brief description of the TQInputContext + instance specified by \a key. This string may be appeared in some + user interfaces. +*/ + + + +class TQInputContextPluginPrivate : public TQInputContextFactoryInterface +{ +public: + TQInputContextPluginPrivate( TQInputContextPlugin *p ) + : plugin( p ) + { + } + + virtual ~TQInputContextPluginPrivate(); + + TQRESULT queryInterface( const TQUuid &iid, TQUnknownInterface **iface ); + TQ_REFCOUNT; + + TQStringList featureList() const; + TQInputContext *create( const TQString &key ); + TQStringList languages( const TQString &key ); + TQString displayName( const TQString &key ); + TQString description( const TQString &key ); + +private: + TQInputContextPlugin *plugin; +}; + +TQRESULT TQInputContextPluginPrivate::queryInterface( const TQUuid &iid, TQUnknownInterface **iface ) +{ + *iface = 0; + + if ( iid == IID_TQUnknown ) + *iface = this; + else if ( iid == IID_TQFeatureList ) + *iface = this; + else if ( iid == IID_TQInputContextFactory ) + *iface = this; + else + return TQE_NOINTERFACE; + + (*iface)->addRef(); + return TQS_OK; +} + +TQInputContextPluginPrivate::~TQInputContextPluginPrivate() +{ + delete plugin; +} + +TQStringList TQInputContextPluginPrivate::featureList() const +{ + return plugin->keys(); +} + +TQInputContext *TQInputContextPluginPrivate::create( const TQString &key ) +{ + return plugin->create( key ); +} + +TQStringList TQInputContextPluginPrivate::languages( const TQString &key ) +{ + return plugin->languages( key ); +} + +TQString TQInputContextPluginPrivate::displayName( const TQString &key ) +{ + return plugin->displayName( key ); +} + +TQString TQInputContextPluginPrivate::description( const TQString &key ) +{ + return plugin->description( key ); +} + + +/*! + Constructs a input context plugin. This is invoked automatically by the + \c TQ_EXPORT_PLUGIN macro. +*/ +TQInputContextPlugin::TQInputContextPlugin() + : TQGPlugin( d = new TQInputContextPluginPrivate( this ) ) +{ +} + +/*! + Destroys the input context plugin. + + You never have to call this explicitly. TQt destroys a plugin + automatically when it is no longer used. +*/ +TQInputContextPlugin::~TQInputContextPlugin() +{ + // don't delete d, as this is deleted by d +} + +#endif // TQT_NO_COMPONENT +#endif // TQT_NO_IM |