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>
38 #include <kactioncollection.h>
39 #include <kaboutapplicationdialog.h>
40 #include <kaboutdata.h>
42 #include <kcmdlineargs.h>
48 #include <kshortcutsdialog.h>
49 #include <ksystemtrayicon.h>
50 #include <kstandardaction.h>
51 #include <ktoolinvocation.h>
52 #include <kuniqueapplication.h>
59 setObjectName( QLatin1String(
"jovietrayicon" ));
60 setStatus(KStatusNotifierItem::Active);
61 setCategory(ApplicationStatus);
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" ));
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);
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);
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);
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);
94 (void)contextMenu()->addSeparator();
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);
103 talkersMenu =
new QMenu(i18n(
"Select Talker"));
104 contextMenu()->addMenu(talkersMenu);
108 actConfigure = KStandardAction::preferences(
this, SLOT(configureSelected()), contextMenu());
109 contextMenu()->addAction(actConfigure);
111 contextMenu()->addAction(
112 KStandardAction::keyBindings(
this, SLOT(configureKeysSelected()), contextMenu()));
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()));
120 connect(
this, SIGNAL(activateRequested(
bool,QPoint)),
122 connect(contextMenu(), SIGNAL(aboutToShow()),
131 talkersMenu->clear();
134 KConfig config(QLatin1String(
"kttsdrc" ));
142 for (
int i=0;i<list.size();i++) {
144 KAction* act=
new KAction(
this);
145 act->setText(talkerCode.
name());
147 connect(act,SIGNAL(triggered()),
this,SLOT(talkerSelected()));
148 talkersMenu->addAction(act);
157 if (overlayIconName() == QLatin1String(
"media-playback-pause")) {
159 setOverlayIconByName(QLatin1String(
"" ));
163 setOverlayIconByName(QLatin1String(
"media-playback-pause" ));
169 const bool configActive = (QDBusConnection::sessionBus().interface()->isServiceRegistered(QLatin1String(
"org.kde.kcmshell_kcmkttsd" )));
170 actConfigure->setEnabled(!configActive);
173 void JovieTrayIcon::speakClipboardSelected()
178 void JovieTrayIcon::talkerSelected()
180 KAction* act=(KAction*)QObject::sender ();
182 talkerCode.
setTalkerCode(act->property(
"talkercode").toString());
186 void JovieTrayIcon::aboutSelected()
188 QPointer<KAboutApplicationDialog> aboutDlg =
189 new KAboutApplicationDialog(KGlobal::mainComponent().aboutData());
194 void JovieTrayIcon::helpSelected()
196 KToolInvocation::invokeHelp(QString(),QLatin1String(
"jovie" ));
199 void JovieTrayIcon::stopSelected()
204 void JovieTrayIcon::pauseSelected()
209 void JovieTrayIcon::resumeSelected()
214 void JovieTrayIcon::repeatSelected()
221 void JovieTrayIcon::configureSelected()
224 lst << QLatin1String(
"kcmkttsd" ) << QLatin1String(
"--caption" ) << i18n(
"KDE Text-to-Speech");
225 QProcess::startDetached(QLatin1String(
"kcmshell4" ),lst);
228 void JovieTrayIcon::configureKeysSelected()
230 KShortcutsDialog::configure( actionCollection() );
233 #include "jovietrayicon.moc"
void setCurrentTalker(const TalkerCode &talker)
Sets the current talker for all applications.
void pause()
Pauses speech jobs belonging to the application.
QList< TalkerCode > TalkerCodeList
int sayClipboard()
Submits a speech job from the contents of the clipboard.
void slotActivateRequested(bool active, const QPoint &pos)
JovieTrayIcon(QWidget *parent=0)
QString name() const
Properties.
Model for list of configured talkers.
QString getTalkerCode() const
void resume()
Resumes speech jobs belonging to the application.
virtual void contextMenuAboutToShow()
const TalkerCode::TalkerCodeList datastore() const
The list of TalkerCodes for this model.
static Jovie * Instance()
singleton accessor
void slotUpdateTalkersMenu()
void loadTalkerCodesFromConfig(KConfig *config)
Loads the TalkerCodes into the model/view from the config file.
void setTalkerCode(const QString &code)
The Talker Code returned in XML format.