• 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
  • jovie
jovietrayicon.cpp
Go to the documentation of this file.
1 /***************************************************** vim:set ts=4 sw=4 sts=4:
2  Jovie System Tray Application
3  -------------------------------
4  Copyright 2004-2006 by Gary Cramblitt <garycramblitt@comcast.net>
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 // Jovie includes.
24 #include "jovietrayicon.h"
25 #include "jovie.h"
26 
27 // Qt includes.
28 #include <QtGui/QImage>
29 #include <QtGui/QPixmap>
30 #include <QtGui/QMouseEvent>
31 #include <QtCore/QEvent>
32 #include <QtCore/QProcess>
33 #include <QtCore/QPointer>
34 #include <QDBusConnection>
35 #include <QDBusConnectionInterface>
36 
37 // KDE includes.
38 #include <kactioncollection.h>
39 #include <kaboutapplicationdialog.h>
40 #include <kaboutdata.h>
41 #include <kaction.h>
42 #include <kcmdlineargs.h>
43 #include <kconfig.h>
44 #include <kdebug.h>
45 #include <kicon.h>
46 #include <klocale.h>
47 #include <kmenu.h>
48 #include <kshortcutsdialog.h>
49 #include <ksystemtrayicon.h>
50 #include <kstandardaction.h>
51 #include <ktoolinvocation.h>
52 #include <kuniqueapplication.h>
53 
54 /* ------------------ JovieTrayIcon class ----------------------- */
55 
56 JovieTrayIcon::JovieTrayIcon(QWidget *parent)
57  :KStatusNotifierItem(QLatin1String( "jovie" ), parent)
58 {
59  setObjectName( QLatin1String("jovietrayicon" ));
60  setStatus(KStatusNotifierItem::Active);
61  setCategory(ApplicationStatus);
62 
63  QString status = QLatin1String( "Jovie - " );
64  status += i18n("KDE Text-to-Speech Manager");
65  setToolTipTitle(status);
66  setToolTipIconByName(QLatin1String( "preferences-desktop-text-to-speech" ));
67  setIconByName(QLatin1String( "preferences-desktop-text-to-speech" ));
68 
69  // Set up menu.
70  actStop = actionCollection()->addAction(QLatin1String("stop"), this, SLOT(stopSelected()));
71  actStop->setIcon(KIcon(QLatin1String("media-playback-stop")));
72  actStop->setText(i18n("&Stop/Delete"));
73  actStop->setGlobalShortcut(KShortcut());
74  contextMenu()->addAction(actStop);
75 
76  actPause = actionCollection()->addAction(QLatin1String("pause"), this, SLOT(pauseSelected()));
77  actPause->setIcon(KIcon( QLatin1String( "media-playback-pause" )));
78  actPause->setText(i18n("&Pause"));
79  actPause->setGlobalShortcut(KShortcut());
80  contextMenu()->addAction(actPause);
81 
82  actResume = actionCollection()->addAction(QLatin1String("resume"), this, SLOT(resumeSelected()));
83  actResume->setIcon(KIcon(QLatin1String( "media-playback-start" )));
84  actResume->setText(i18n("&Resume"));
85  actResume->setGlobalShortcut(KShortcut());
86  contextMenu()->addAction(actResume);
87 
88  actRepeat = actionCollection()->addAction(QLatin1String("repeat"), this, SLOT(repeatSelected()));
89  actRepeat->setIcon(KIcon(QLatin1String( "view-refresh" )));
90  actRepeat->setText(i18n("R&epeat"));
91  actRepeat->setGlobalShortcut(KShortcut());
92  contextMenu()->addAction(actRepeat);
93 
94  (void)contextMenu()->addSeparator();
95 
96  actSpeakClipboard = actionCollection()->addAction(QLatin1String("speakclipboard"),
97  this, SLOT(speakClipboardSelected()));
98  actSpeakClipboard->setIcon(KIcon(QLatin1String( "klipper" )));
99  actSpeakClipboard->setText(i18n("Spea&k Clipboard Contents"));
100  actSpeakClipboard->setGlobalShortcut(KShortcut());
101  contextMenu()->addAction (actSpeakClipboard);
102 
103  talkersMenu = new QMenu(i18n("Select Talker"));
104  contextMenu()->addMenu(talkersMenu);
105 
106  slotUpdateTalkersMenu();
107 
108  actConfigure = KStandardAction::preferences(this, SLOT(configureSelected()), contextMenu());
109  contextMenu()->addAction(actConfigure);
110 
111  contextMenu()->addAction(
112  KStandardAction::keyBindings(this, SLOT(configureKeysSelected()), contextMenu()));
113 
114  (void)contextMenu()->addSeparator();
115  (void)contextMenu()->addAction(
116  KStandardAction::helpContents(this, SLOT(helpSelected()), contextMenu()));
117  (void)contextMenu()->addAction (
118  KStandardAction::aboutApp(this, SLOT(aboutSelected()), contextMenu()));
119 
120  connect(this, SIGNAL(activateRequested(bool,QPoint)),
121  SLOT(slotActivateRequested(bool,QPoint)));
122  connect(contextMenu(), SIGNAL(aboutToShow()),
123  SLOT(contextMenuAboutToShow()));
124 }
125 
126 JovieTrayIcon::~JovieTrayIcon()
127 {
128 }
129 
130 void JovieTrayIcon::slotUpdateTalkersMenu(){
131  talkersMenu->clear();
132 
133  // Object for the KTTSD configuration.
134  KConfig config(QLatin1String( "kttsdrc" ));
135 
136  // Load existing Talkers into Talker List.
137  TalkerListModel talkerListModel;
138  talkerListModel.loadTalkerCodesFromConfig(&config);
139 
140  TalkerCode::TalkerCodeList list = talkerListModel.datastore();
141 
142  for (int i=0;i<list.size();i++) {
143  TalkerCode talkerCode=list.at(i);
144  KAction* act=new KAction(this);
145  act->setText(talkerCode.name());
146  act->setProperty("talkercode",talkerCode.getTalkerCode());
147  connect(act,SIGNAL(triggered()),this,SLOT(talkerSelected()));
148  talkersMenu->addAction(act);
149  }
150 }
151 
152 void JovieTrayIcon::slotActivateRequested(bool active, const QPoint &pos)
153 {
154  Q_UNUSED(active)
155  Q_UNUSED(pos)
156  // pause/resume icon/app
157  if (overlayIconName() == QLatin1String("media-playback-pause")) {
158  Jovie::Instance()->resume();
159  setOverlayIconByName(QLatin1String( "" ));
160  }
161  else {
162  Jovie::Instance()->pause();
163  setOverlayIconByName(QLatin1String( "media-playback-pause" ));
164  }
165 }
166 
167 void JovieTrayIcon::contextMenuAboutToShow()
168 {
169  const bool configActive = (QDBusConnection::sessionBus().interface()->isServiceRegistered(QLatin1String( "org.kde.kcmshell_kcmkttsd" )));
170  actConfigure->setEnabled(!configActive);
171 }
172 
173 void JovieTrayIcon::speakClipboardSelected()
174 {
175  Jovie::Instance()->sayClipboard();
176 }
177 
178 void JovieTrayIcon::talkerSelected()
179 {
180  KAction* act=(KAction*)QObject::sender ();
181  TalkerCode talkerCode;
182  talkerCode.setTalkerCode(act->property("talkercode").toString());
183  Jovie::Instance()->setCurrentTalker(talkerCode);
184 }
185 
186 void JovieTrayIcon::aboutSelected()
187 {
188  QPointer<KAboutApplicationDialog> aboutDlg =
189  new KAboutApplicationDialog(KGlobal::mainComponent().aboutData());
190  aboutDlg->exec();
191  delete aboutDlg;
192 }
193 
194 void JovieTrayIcon::helpSelected()
195 {
196  KToolInvocation::invokeHelp(QString(),QLatin1String( "jovie" ));
197 }
198 
199 void JovieTrayIcon::stopSelected()
200 {
201  Jovie::Instance()->stop();
202 }
203 
204 void JovieTrayIcon::pauseSelected()
205 {
206  Jovie::Instance()->pause();
207 }
208 
209 void JovieTrayIcon::resumeSelected()
210 {
211  Jovie::Instance()->resume();
212 }
213 
214 void JovieTrayIcon::repeatSelected()
215 {
216  //int jobNum = m_kspeech->getCurrentJob();
217  //int seq = m_kspeech->moveRelSentence(jobNum, 0);
218  //m_kspeech->moveRelSentence(jobNum, -seq);
219 }
220 
221 void JovieTrayIcon::configureSelected()
222 {
223  QStringList lst;
224  lst << QLatin1String( "kcmkttsd" ) << QLatin1String( "--caption" ) << i18n("KDE Text-to-Speech");
225  QProcess::startDetached(QLatin1String( "kcmshell4" ),lst);
226 }
227 
228 void JovieTrayIcon::configureKeysSelected()
229 {
230  KShortcutsDialog::configure( actionCollection() );
231 }
232 
233 #include "jovietrayicon.moc"
JovieTrayIcon::~JovieTrayIcon
~JovieTrayIcon()
Definition: jovietrayicon.cpp:126
Jovie::setCurrentTalker
void setCurrentTalker(const TalkerCode &talker)
Sets the current talker for all applications.
Definition: jovie.cpp:150
Jovie::pause
void pause()
Pauses speech jobs belonging to the application.
Definition: jovie.cpp:367
QWidget
TalkerCode::TalkerCodeList
QList< TalkerCode > TalkerCodeList
Definition: talkercode.h:61
Jovie::sayClipboard
int sayClipboard()
Submits a speech job from the contents of the clipboard.
Definition: jovie.cpp:260
JovieTrayIcon::slotActivateRequested
void slotActivateRequested(bool active, const QPoint &pos)
Definition: jovietrayicon.cpp:152
JovieTrayIcon::JovieTrayIcon
JovieTrayIcon(QWidget *parent=0)
Definition: jovietrayicon.cpp:56
TalkerCode::name
QString name() const
Properties.
Definition: talkercode.cpp:114
TalkerListModel
Model for list of configured talkers.
Definition: talkerlistmodel.h:45
TalkerCode::getTalkerCode
QString getTalkerCode() const
Definition: talkercode.cpp:202
Jovie::resume
void resume()
Resumes speech jobs belonging to the application.
Definition: jovie.cpp:372
TalkerCode
Definition: talkercode.h:38
jovie.h
Jovie::stop
void stop()
Definition: jovie.cpp:357
JovieTrayIcon::contextMenuAboutToShow
virtual void contextMenuAboutToShow()
Definition: jovietrayicon.cpp:167
TalkerListModel::datastore
const TalkerCode::TalkerCodeList datastore() const
The list of TalkerCodes for this model.
Definition: talkerlistmodel.h:65
Jovie::Instance
static Jovie * Instance()
singleton accessor
Definition: jovie.cpp:93
KStatusNotifierItem
JovieTrayIcon::slotUpdateTalkersMenu
void slotUpdateTalkersMenu()
Definition: jovietrayicon.cpp:130
jovietrayicon.h
TalkerListModel::loadTalkerCodesFromConfig
void loadTalkerCodesFromConfig(KConfig *config)
Loads the TalkerCodes into the model/view from the config file.
Definition: talkerlistmodel.cpp:193
TalkerCode::setTalkerCode
void setTalkerCode(const QString &code)
The Talker Code returned in XML format.
Definition: talkercode.cpp:197
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