summaryrefslogtreecommitdiffstats
path: root/ksayit/KTTSD_Lib/kttsdlib.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'ksayit/KTTSD_Lib/kttsdlib.cpp')
-rw-r--r--ksayit/KTTSD_Lib/kttsdlib.cpp221
1 files changed, 221 insertions, 0 deletions
diff --git a/ksayit/KTTSD_Lib/kttsdlib.cpp b/ksayit/KTTSD_Lib/kttsdlib.cpp
new file mode 100644
index 0000000..224cd21
--- /dev/null
+++ b/ksayit/KTTSD_Lib/kttsdlib.cpp
@@ -0,0 +1,221 @@
+//
+// C++ Implementation: kttsdplugin
+//
+// Description:
+//
+//
+// Author: Robert Vogl <voglrobe@lapislazuli>, (C) 2004
+//
+// Copyright: See COPYING file that comes with this distribution
+//
+//
+// #include <time.h> // nanosleep
+
+// Qt includes
+#include <qstring.h>
+#include <qstringlist.h>
+
+// KDE includes
+#include <kglobal.h>
+#include <klocale.h>
+#include <kstandarddirs.h>
+#include <kdebug.h>
+
+// App specific includes
+#include "kttsdlib.h"
+#include "kttsdlibtalker2.h"
+#include "kttsdlibsetupimpl.h"
+
+
+KTTSDLib::KTTSDLib(QObject *parent, const char *name, KApplication *Appl)
+ : QObject(parent, name), m_Appl(Appl)
+{
+ KGlobal::locale()->insertCatalogue("libKTTSD");
+ m_talker = new kttsdlibtalker2(static_cast<QObject*>(this), "kttsdlibtalker");
+ connect(m_talker, SIGNAL(signalTextFinished(const uint)),
+ this, SLOT(slotTextFinished(const uint)) );
+ connect(m_talker, SIGNAL(signalTextStopped(const uint)),
+ this, SLOT(slotTextStopped(const uint)) );
+ connect(m_talker, SIGNAL(signalTextStarted(const uint)),
+ this, SLOT(slotTextStarted(const uint)) );
+
+ // reset list of currently processed jobs
+ while ( !jobList.empty() ){
+ jobList.pop();
+ }
+
+ // initialize the talker
+ m_talker->KTTSD_init(m_Appl);
+
+ // some presets
+ // m_config = new KSimpleConfig("ksayit_kttsdpluginrc");
+ // m_usersetupimpl = NULL;
+}
+
+
+KTTSDLib::~KTTSDLib()
+{
+ // delete m_config;
+}
+
+
+QString KTTSDLib::getName() const
+{
+ return "KDE KTTSD";
+}
+
+
+QString KTTSDLib::getDescription() const
+{
+ QString str;
+ str = i18n("<qt><big><u>Description:</u></big><br>");
+ str += i18n("This plugin uses the KDE TTS Daemon for speech output.");
+
+ return str;
+}
+
+
+int KTTSDLib::getActions()
+{
+ return ACTIONS::PLAY | ACTIONS::STOP | ACTIONS::PAUSE | ACTIONS::FFWD | ACTIONS::FREV;
+}
+
+
+int KTTSDLib::getStatus() const
+{
+ return TTS::AUDIOFILE;
+}
+
+
+const QWidget* KTTSDLib::getGUI(QFrame *frame)
+{
+ kdDebug(100200) << "KTTSDLib::getGUI()" << endl;
+
+ return new KTTSDlibSetupImpl( frame, "kttsdlibsetup" );
+}
+
+
+void KTTSDLib::reloadConfiguration()
+{
+ kdDebug(100200) << "KTTSDLib::reloadConfiguration()" << endl;
+ // N.A.
+}
+
+
+bool KTTSDLib::saveWasClicked() const
+{
+ kdDebug(100200) << "KTTSDLib::saveWasClicked()" << endl;
+ // N.A.
+
+ return true;
+}
+
+
+void KTTSDLib::setText(const QString &text)
+{
+ kdDebug(100200) << "KTTSDLib::setText()" << endl;
+
+ uint jobNum = m_talker->KTTSD_setText(text, "");
+ jobList.push(jobNum);
+}
+
+
+
+void KTTSDLib::sayText()
+{
+ kdDebug(100200) << "KTTSDLib::sayText()" << endl;
+
+ if( !jobList.empty() ){
+ m_curJobNum = jobList.front();
+ jobList.pop();
+ kdDebug(100200) << " Starting job No.: " << m_curJobNum << endl;
+ m_talker->KTTSD_startText( m_curJobNum );
+ }
+}
+
+
+void KTTSDLib::removeAllJobsFromList()
+{
+ kdDebug(100200) << "KTTSDLib::removeAllJobsFromList()" << endl;
+
+ m_talker->KTTSD_removeText(m_curJobNum);
+
+ while( !jobList.empty() ){
+ uint job = jobList.front();
+ jobList.pop();
+ kdDebug(100200) << "*** removing... " << job << endl;
+ m_talker->KTTSD_removeText( job );
+ }
+}
+
+void KTTSDLib::stop()
+{
+ kdDebug(100200) << "***** KTTSDLib::stop(" << m_curJobNum << ")" << endl;
+ m_talker->KTTSD_stopText(m_curJobNum);
+ removeAllJobsFromList();
+ emit signalFinished();
+}
+
+
+void KTTSDLib::pause()
+{
+ kdDebug(100200) << "void KTTSDLib::pause(" << m_curJobNum << ")" << endl;
+
+ m_talker->KTTSD_pauseText( m_curJobNum );
+}
+
+
+void KTTSDLib::resume()
+{
+ kdDebug(100200) << "void KTTSDLib::resume(" << m_curJobNum << ")" << endl;
+
+ m_talker->KTTSD_resumeText( m_curJobNum );
+}
+
+
+void KTTSDLib::ffwd()
+{
+ kdDebug(100200) << "void KTTSDLib::ffwd(" << m_curJobNum << ")" << endl;
+ m_talker->KTTSD_moveRelTextSentence(1, m_curJobNum);
+}
+
+
+void KTTSDLib::frev()
+{
+ kdDebug(100200) << "void KTTSDLib::frev(" << m_curJobNum << ")" << endl;
+ m_talker->KTTSD_moveRelTextSentence(-1, m_curJobNum);
+}
+
+
+//////////////////////////////////////
+// Signals from the talker
+//////////////////////////////////////
+
+void KTTSDLib::slotTextFinished(const uint job)
+{
+ kdDebug(100200) << "---- KTTSDLib::slotTextFinished(" << job << ")" << endl;
+
+ // check if List is empty. If yes, send signalFinished().
+ if ( jobList.empty() ){
+ kdDebug(100200) << " All jobs processed." << endl;
+ emit signalFinished();
+ } else {
+ sayText();
+ }
+}
+
+void KTTSDLib::slotTextStopped(const uint job)
+{
+ kdDebug(100200) << "---- KTTSDLib::slotTextStopped(" << job << ")" << endl;
+ // removeAllJobsFromList();
+ // emit signalFinished();
+}
+
+
+void KTTSDLib::slotTextStarted(const uint job)
+{
+ kdDebug(100200) << "---- KTTSDLib::slotTextStarted(" << job << ")" << endl;
+ // m_curJobNum = job;
+}
+
+#include "kttsdlib.moc"