• Skip to content
  • Skip to link menu
KDE API Reference
  • KDE API Reference
  • kdeaccessibility API Reference
  • KDE Home
  • Contact Us
 

jovie

  • sources
  • kde-4.12
  • kdeaccessibility
  • jovie
  • kcmkttsmgr
talkerwidget.cpp
Go to the documentation of this file.
1 /***************************************************** vim:set ts=4 sw=4 sts=4:
2  Widget to configure Talker parameters including language, synthesizer, volume,
3  rate, and pitch. Uses talkerwidget.ui.
4  -------------------
5  Copyright 2010 by Jeremy Whiting <jpwhiting@kde.org>
6  -------------------
7 
8  This program is free software; you can redistribute it and/or modify
9  it under the terms of the GNU General Public License as published by
10  the Free Software Foundation; either version 2 of the License, or
11  (at your option) any later version.
12 
13  This program is distributed in the hope that it will be useful,
14  but WITHOUT ANY WARRANTY; without even the implied warranty of
15  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16  GNU General Public License for more details.
17 
18  You should have received a copy of the GNU General Public License
19  along with this program; if not, write to the Free Software
20  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
21  ******************************************************************************/
22 
23 // KTTS includes.
24 #include "talkerwidget.h"
25 
26 // Qt includes.
27 #include <QtGui/QTableWidgetItem>
28 #include <QtGui/QWidget>
29 
30 // KDE includes.
31 #include <kcombobox.h>
32 #include <kglobal.h>
33 #include <klocale.h>
34 #include <kdebug.h>
35 #include <kmessagebox.h>
36 
37 #include "kspeechinterface.h"
38 
39 #include "ui_talkerwidget.h"
40 
41 const int kLanguageColumn = 0;
42 const int kSynthesizerColumn = 1;
43 const int kVoiceNameColumn = 2;
44 
45 TalkerWidget::TalkerWidget(QWidget* parent)
46  : QWidget(parent)
47 {
48  mUi = new Ui::TalkerWidget;
49  mUi->setupUi(this);
50  connect(mUi->nameEdit, SIGNAL(textEdited(QString)),
51  this, SIGNAL(talkerChanged()));
52  connect(mUi->AvailableTalkersTable, SIGNAL(itemSelectionChanged()),
53  this, SIGNAL(talkerChanged()));
54  connect(mUi->voiceComboBox, SIGNAL(currentIndexChanged(int)),
55  this, SIGNAL(talkerChanged()));
56  connect(mUi->volumeSlider, SIGNAL(valueChanged(int)),
57  this, SIGNAL(talkerChanged()));
58  connect(mUi->pitchSlider, SIGNAL(valueChanged(int)),
59  this, SIGNAL(talkerChanged()));
60  connect(mUi->speedSlider, SIGNAL(valueChanged(int)),
61  this, SIGNAL(talkerChanged()));
62 
63  org::kde::KSpeech* kspeech = new OrgKdeKSpeechInterface(QLatin1String( "org.kde.KSpeech" ), QLatin1String( "/KSpeech" ), QDBusConnection::sessionBus());
64 
65  m_outputModules = kspeech->outputModules();
66 
67  mUi->AvailableTalkersTable->setSortingEnabled(false);
68 
69  QString fullLanguageCode = KGlobal::locale()->defaultLanguage();
70  QString languageCode;
71  QString countryCode;
72  TalkerCode::splitFullLanguageCode(fullLanguageCode, languageCode, countryCode);
73 
74  QTableWidgetItem * defaultItem = 0;
75 
76  QStringList possibleTalkers = kspeech->getPossibleTalkers();
77  foreach (const QString & talkerString, possibleTalkers)
78  {
79  TalkerCode code(talkerString);
80  kDebug() << "Adding talker to talker widget with value " << talkerString;
81 
82  int rowcount = mUi->AvailableTalkersTable->rowCount();
83  mUi->AvailableTalkersTable->setRowCount(rowcount + 1);
84 
85  // set the synthesizer item
86  QTableWidgetItem * item = new QTableWidgetItem(code.outputModule());
87  mUi->AvailableTalkersTable->setItem(rowcount, kSynthesizerColumn, item);
88 
89  // set the voice name item
90  item = new QTableWidgetItem(code.voiceName());
91  item->setToolTip(code.voiceName());
92  mUi->AvailableTalkersTable->setItem(rowcount, kVoiceNameColumn, item);
93 
94  QString language = code.language();
95  QString langName = TalkerCode::languageCodeToLanguage(language);
96  if (language == languageCode)
97  {
98  defaultItem = item;
99  }
100 
101  // set the language name item
102  item = new QTableWidgetItem(langName.isEmpty() ? language : langName);
103  item->setToolTip(language);
104  mUi->AvailableTalkersTable->setItem(rowcount, kLanguageColumn, item);
105  }
106 
107  // turn sorting on now that the table is populated
108  mUi->AvailableTalkersTable->setSortingEnabled(true);
109 
110  // sort by language by default
111  mUi->AvailableTalkersTable->sortItems(kLanguageColumn);
112 
113  if (defaultItem)
114  {
115  mUi->AvailableTalkersTable->setCurrentItem(defaultItem);
116  }
117 }
118 
119 TalkerWidget::~TalkerWidget()
120 {
121  delete mUi;
122 }
123 
124 void TalkerWidget::setNameReadOnly(bool value)
125 {
126  mUi->nameLabel->setVisible(!value);
127  mUi->nameEdit->setVisible(!value);
128 }
129 
130 void TalkerWidget::setTalkerCode(const TalkerCode &talker)
131 {
132  mUi->nameEdit->setText(talker.name());
133  mUi->voiceComboBox->setCurrentIndex(talker.voiceType() - 1);
134  mUi->volumeSlider->setValue(talker.volume());
135  mUi->speedSlider->setValue(talker.rate());
136  mUi->pitchSlider->setValue(talker.pitch());
137 
138  // Then we need to find the row in the availabletalkerstable that matches
139  // the talker's language and output module.
140  int rowCount = mUi->AvailableTalkersTable->rowCount();
141  for (int i = 0; i < rowCount; ++i) {
142 
143  // We match the language with the language column's tooltip since it
144  // contains the language code.
145  if (mUi->AvailableTalkersTable->item(i, kLanguageColumn)->toolTip() ==
146  talker.language() &&
147  mUi->AvailableTalkersTable->item(i, kSynthesizerColumn)->text() ==
148  talker.outputModule()) {
149  mUi->AvailableTalkersTable->setCurrentCell(i, kLanguageColumn);
150  break;
151  }
152  }
153 }
154 
155 QString TalkerWidget::getName() const
156 {
157  return mUi->nameEdit->text();
158 }
159 
160 TalkerCode TalkerWidget::getTalkerCode() const
161 {
162  TalkerCode retval;
163  int row = mUi->AvailableTalkersTable->currentRow();
164  if (row > 0 && row < mUi->AvailableTalkersTable->rowCount())
165  {
166  retval.setName(mUi->nameEdit->text());
167  retval.setLanguage(mUi->AvailableTalkersTable->item(row, kLanguageColumn)->toolTip());
168  retval.setVoiceType(mUi->voiceComboBox->currentIndex() + 1); // add 1 because the enumeration starts at 1
169  retval.setVolume(mUi->volumeSlider->value());
170  retval.setRate(mUi->speedSlider->value());
171  retval.setPitch(mUi->pitchSlider->value());
172  retval.setOutputModule(mUi->AvailableTalkersTable->item(row, kSynthesizerColumn)->text());
173  }
174  return retval;
175 }
176 
177 #include "talkerwidget.moc"
178 
kLanguageColumn
const int kLanguageColumn
Definition: talkerwidget.cpp:41
talkerwidget.h
TalkerCode::setLanguage
void setLanguage(const QString &language)
Definition: talkercode.cpp:159
TalkerCode::language
QString language() const
Definition: talkercode.cpp:119
TalkerCode::setOutputModule
void setOutputModule(const QString &moduleName)
Definition: talkercode.cpp:189
kVoiceNameColumn
const int kVoiceNameColumn
Definition: talkerwidget.cpp:43
TalkerWidget::getTalkerCode
TalkerCode getTalkerCode() const
Returns user's chosen talker configuration.
Definition: talkerwidget.cpp:160
TalkerCode::voiceName
QString voiceName() const
Definition: talkercode.cpp:144
kSynthesizerColumn
const int kSynthesizerColumn
Definition: talkerwidget.cpp:42
QWidget
TalkerWidget::~TalkerWidget
~TalkerWidget()
Destructor.
Definition: talkerwidget.cpp:119
TalkerCode::setPitch
void setPitch(int pitch)
Definition: talkercode.cpp:179
TalkerWidget::talkerChanged
void talkerChanged()
TalkerCode::setVolume
void setVolume(int volume)
Definition: talkercode.cpp:169
TalkerCode::splitFullLanguageCode
static void splitFullLanguageCode(const QString &lang, QString &languageCode, QString &countryCode)
Given a language code that might contain a country code, splits the code into the two letter language...
Definition: talkercode.cpp:263
TalkerWidget::setNameReadOnly
void setNameReadOnly(bool value)
Set whether the name should be read-only (to the user)
Definition: talkerwidget.cpp:124
TalkerCode::volume
int volume() const
Definition: talkercode.cpp:129
TalkerCode::setName
void setName(const QString &name)
Definition: talkercode.cpp:154
TalkerCode::name
QString name() const
Properties.
Definition: talkercode.cpp:114
TalkerWidget::setTalkerCode
void setTalkerCode(const TalkerCode &talker)
Set the talker configuration to start with.
Definition: talkerwidget.cpp:130
TalkerCode::rate
int rate() const
Definition: talkercode.cpp:134
TalkerCode::languageCodeToLanguage
static QString languageCodeToLanguage(const QString &languageCode)
Converts a language code plus optional country code to language description.
Definition: talkercode.cpp:282
TalkerCode
Definition: talkercode.h:38
TalkerWidget::getName
QString getName() const
Get the talker's name.
Definition: talkerwidget.cpp:155
TalkerCode::voiceType
int voiceType() const
Definition: talkercode.cpp:124
TalkerCode::outputModule
QString outputModule() const
Definition: talkercode.cpp:149
TalkerWidget::TalkerWidget
TalkerWidget(QWidget *parent=0)
Constructor.
Definition: talkerwidget.cpp:45
TalkerCode::pitch
int pitch() const
Definition: talkercode.cpp:139
TalkerCode::setRate
void setRate(int rate)
Definition: talkercode.cpp:174
TalkerCode::setVoiceType
void setVoiceType(int voiceType)
Definition: talkercode.cpp:164
This file is part of the KDE documentation.
Documentation copyright © 1996-2014 The KDE developers.
Generated on Tue Oct 14 2014 22:32:25 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

jovie

Skip menu "jovie"
  • Main Page
  • Namespace List
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members

kdeaccessibility API Reference

Skip menu "kdeaccessibility API Reference"
  • jovie

Search



Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal