diff options
author | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
---|---|---|
committer | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
commit | 00bb99ac80741fc50ef8a289719373032f2391eb (patch) | |
tree | 3a5a9bf72f942784b38bf77dd66c534662fab5f2 /kttsd/kttsd/talkermgr.h | |
download | tdeaccessibility-00bb99ac80741fc50ef8a289719373032f2391eb.tar.gz tdeaccessibility-00bb99ac80741fc50ef8a289719373032f2391eb.zip |
Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features.
BUG:215923
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdeaccessibility@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'kttsd/kttsd/talkermgr.h')
-rw-r--r-- | kttsd/kttsd/talkermgr.h | 159 |
1 files changed, 159 insertions, 0 deletions
diff --git a/kttsd/kttsd/talkermgr.h b/kttsd/kttsd/talkermgr.h new file mode 100644 index 0000000..5b890ae --- /dev/null +++ b/kttsd/kttsd/talkermgr.h @@ -0,0 +1,159 @@ +/***************************************************** vim:set ts=4 sw=4 sts=4: + Manages all the Talker (synth) plugins. + ------------------- + Copyright: + (C) 2004-2005 by Gary Cramblitt <garycramblitt@comcast.net> + ------------------- + Original author: Gary Cramblitt <garycramblitt@comcast.net> + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program 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 General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + ******************************************************************************/ + +#ifndef _TALKERMGR_H_ +#define _TALKERMGR_H_ + +// Qt includes. +#include <qstring.h> +#include <qstringlist.h> +#include <qmap.h> +#include <qptrlist.h> + +// KTTS includes. +#include "talkercode.h" +#include "pluginproc.h" + +class TalkerMgr: public QObject +{ +public: + + /** + * Constructor. + */ + TalkerMgr(QObject *parent = 0, const char *name = 0); + + /** + * Destructor. + */ + ~TalkerMgr(); + + /** + * Load all the configured plug ins populating loadedPlugIns + */ + int loadPlugIns(KConfig* config); + + /** + * Get a list of the talkers configured in KTTS. + * @return A QStringList of fully-specified talker codes, one + * for each talker user has configured. + */ + QStringList getTalkers(); + + /** + * Returns a list of all the loaded plugins. + */ + QPtrList<PlugInProc> getLoadedPlugIns(); + + /** + * Given a talker code, returns pointer to the closest matching plugin. + * @param talker The talker (language) code. + * @return Index to m_loadedPlugins array of Talkers. + * + * If a plugin has not been loaded to match the talker, returns the default + * plugin. + */ + int talkerToPluginIndex(const QString& talker) const; + + /** + * Given a talker code, returns pointer to the closest matching plugin. + * @param talker The talker (language) code. + * @return Pointer to closest matching plugin. + * + * If a plugin has not been loaded to match the talker, returns the default + * plugin. + */ + PlugInProc* talkerToPlugin(const QString& talker) const; + + /** + * Given a talker code, returns the parsed TalkerCode of the closest matching Talker. + * @param talker The talker (language) code. + * @return Parsed TalkerCode structure. + * + * If a plugin has not been loaded to match the talker, returns the default + * plugin. + * + * The returned TalkerCode is a copy and should be destroyed by caller. + * + * TODO: When picking a talker, %KTTSD will automatically determine if text contains + * markup and pick a talker that supports that markup, if available. This + * overrides all other attributes, i.e, it is treated as an automatic "top priority" + * attribute. + */ + TalkerCode* talkerToTalkerCode(const QString& talker); + + /** + * Given a Talker Code, returns the Talker ID of the talker that would speak + * a text job with that Talker Code. + * @param talkerCode Talker Code. + * @return Talker ID of the talker that would speak the text job. + */ + QString talkerCodeToTalkerId(const QString& talkerCode); + + /** + * Get the user's default talker. + * @return A fully-specified talker code. + * + * @see talkers + * @see getTalkers + */ + QString userDefaultTalker() const; + + /** + * Determine whether the currently-configured speech plugin supports a speech markup language. + * @param talker Code for the talker to do the speaking. Example "en". + * If NULL, defaults to the user's default talker. + * @param markupType The kttsd code for the desired speech markup language. + * @return True if the plugin currently configured for the indicated + * talker supports the indicated speech markup language. + * @see kttsdMarkupType + */ + bool supportsMarkup(const QString& talker, const uint markupType) const; + + /** + * Try to automatically configure a Talker in the specified language. + * @param langCode Two-letter language code. + * @param config KConfig to be updated if successful. + * @return True if successful. + * + * If successful, the KConfig rc file is updated but the talker has not been loaded. + */ + bool autoconfigureTalker(const QString& langCode, KConfig* config); + +private: + + /** + * Array of the loaded plug ins for different Talkers. + * Array of parsed Talker Codes for the plugins. + */ + QPtrList<PlugInProc> m_loadedPlugIns; + QStringList m_loadedTalkerIds; + TalkerCode::TalkerCodeList m_loadedTalkerCodes; + + /** + * Cache of talker codes and index of closest matching Talker. + */ + mutable QMap<QString,int> m_talkerToPlugInCache; +}; + +#endif // _TALKERMGR_H_ |