mirror of
https://bitbucket.org/smil3y/kde-workspace.git
synced 2025-02-24 02:42:50 +00:00
generic: drop text-to-speech support
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
This commit is contained in:
parent
59534f0f32
commit
2ce6520523
15 changed files with 2 additions and 571 deletions
|
@ -18,8 +18,6 @@ add_subdirectory(kate-ctags)
|
||||||
add_subdirectory(katebuild-plugin)
|
add_subdirectory(katebuild-plugin)
|
||||||
add_subdirectory(search)
|
add_subdirectory(search)
|
||||||
|
|
||||||
add_subdirectory(kttsd)
|
|
||||||
|
|
||||||
add_subdirectory(openheader)
|
add_subdirectory(openheader)
|
||||||
|
|
||||||
add_subdirectory(tabify)
|
add_subdirectory(tabify)
|
||||||
|
|
|
@ -1,25 +0,0 @@
|
||||||
kde4_add_plugin(kate_kttsd katekttsd.cpp)
|
|
||||||
|
|
||||||
target_link_libraries(kate_kttsd
|
|
||||||
${KDE4_KDECORE_LIBS}
|
|
||||||
${KDE4_KTEXTEDITOR_LIBS}
|
|
||||||
${KDE4_KPARTS_LIBS}
|
|
||||||
${KDE4_KSPEECH_LIBS}
|
|
||||||
kateinterfaces
|
|
||||||
)
|
|
||||||
|
|
||||||
install(
|
|
||||||
TARGETS kate_kttsd
|
|
||||||
DESTINATION ${KDE4_PLUGIN_INSTALL_DIR}
|
|
||||||
)
|
|
||||||
|
|
||||||
########### install files ###############
|
|
||||||
|
|
||||||
install(
|
|
||||||
FILES kate_kttsd.desktop
|
|
||||||
DESTINATION ${KDE4_SERVICES_INSTALL_DIR}
|
|
||||||
)
|
|
||||||
install(
|
|
||||||
FILES ui.rc
|
|
||||||
DESTINATION ${KDE4_DATA_INSTALL_DIR}/kate/plugins/kate_kttsd
|
|
||||||
)
|
|
|
@ -1,3 +0,0 @@
|
||||||
#! /bin/sh
|
|
||||||
$EXTRACTRC *.rc >> rc.cpp
|
|
||||||
$XGETTEXT *.cpp -o $podir/kate_kttsd.pot
|
|
|
@ -1,65 +0,0 @@
|
||||||
[Desktop Entry]
|
|
||||||
Type=Service
|
|
||||||
ServiceTypes=Kate/Plugin
|
|
||||||
X-KDE-Library=kate_kttsd
|
|
||||||
X-Kate-Version=3.0
|
|
||||||
Icon=preferences-desktop-text-to-speech
|
|
||||||
Name=Text-to-Speech
|
|
||||||
Name[bg]=Четене на текст
|
|
||||||
Name[x-test]=xxText-to-Speechxx
|
|
||||||
Comment=Adds a menu entry for speaking the text
|
|
||||||
Comment[ar]=يضيف مُدخلة قائمة لنطق النصّ
|
|
||||||
Comment[ast]=Amestar una entrada al menú pa lleer el testu
|
|
||||||
Comment[bg]=Добавяне на запис в менюто за изговаряне на текст
|
|
||||||
Comment[bs]=Dodaje stavku menija za izgovaranje teksta
|
|
||||||
Comment[ca]=Afegeix una entrada al menú per parlar el text
|
|
||||||
Comment[ca@valencia]=Afig una entrada al menú per parlar el text
|
|
||||||
Comment[cs]=Přidá položku v nabídce pro čtení textu
|
|
||||||
Comment[da]=Tilføjer en menu til oplæsning af tekst
|
|
||||||
Comment[de]=Fügt einen Menüeintrag zum Vorlesen des Textes hinzu
|
|
||||||
Comment[el]=Προσθέτει μία καταχώρηση στο μενού για τη φωνητική απόδοση κειμένου
|
|
||||||
Comment[en_GB]=Adds a menu entry for speaking the text
|
|
||||||
Comment[es]=Añade una entrada de menú para leer el texto
|
|
||||||
Comment[et]=Lisab menüükirje teksti kõnelemiseks
|
|
||||||
Comment[eu]=Menuko sarrera gehitzen du testua hitzegiteko
|
|
||||||
Comment[fi]=Lisää tekstin puhumismahdollisuuden valikkoon
|
|
||||||
Comment[fr]=Ajoute une ligne de menu pour énoncer le texte
|
|
||||||
Comment[ga]=Cuir iontráil sa roghchlár chun an téacs a léamh
|
|
||||||
Comment[gl]=Engade unha entrada no menú para falar o texto
|
|
||||||
Comment[he]=מוסיף תפריט להקראת הטקסט
|
|
||||||
Comment[hu]=Menübejegyzés szövegfelolvasáshoz
|
|
||||||
Comment[ia]=Adde un entrata de menu pro pronunciar le texto
|
|
||||||
Comment[it]=Aggiunge una voce del menu per pronunciare il testo
|
|
||||||
Comment[ja]=メニューにテキストを読み上げるための項目を追加します
|
|
||||||
Comment[kk]=Мәзірге мәтінді дауыстау жолын қосу
|
|
||||||
Comment[km]=បន្ថែមធាតុម៉ឺនុយសម្រាប់ការអានអត្ថបទ
|
|
||||||
Comment[ko]=텍스트를 말하는 메뉴 항목 추가
|
|
||||||
Comment[lt]=Prideda meniu elementą teksto skaitymui
|
|
||||||
Comment[lv]=Pievieno izvēlnes komandu, kas izrunā tekstu
|
|
||||||
Comment[mr]=पाठ्य बोलण्याकरिता मेन्यू नोंद जोडतो
|
|
||||||
Comment[nb]=Legger til en menyoppføring for å si teksten høyt
|
|
||||||
Comment[nds]=Föögt en Menüindrag för't Vörlesen vun Text to
|
|
||||||
Comment[nl]=Voegt een menuoptie toe voor het uitspreken van de tekst
|
|
||||||
Comment[nn]=Legg til ei menyoppføring for opplesing av tekst
|
|
||||||
Comment[pl]=Dodaje element menu, który powoduje wypowiedzenie tekstu
|
|
||||||
Comment[pt]=Adiciona um item de menu para sintetizar o texto
|
|
||||||
Comment[pt_BR]=Adiciona um item no menu para ler o texto
|
|
||||||
Comment[ro]=Adaugă un element de meniu pentru vorbirea textului
|
|
||||||
Comment[ru]=Добавляет меню синтеза речи
|
|
||||||
Comment[si]=පෙළ කතා කරවීමට මෙනු ඇතුළත්කිරීමක් එක් කරයි
|
|
||||||
Comment[sk]=Pridá položku ponuky pre hovorenie textu
|
|
||||||
Comment[sl]=V meni doda vnos za izgovorjavo besedila
|
|
||||||
Comment[sr]=Додаје ставку менија за изговарање текста
|
|
||||||
Comment[sr@ijekavian]=Додаје ставку менија за изговарање текста
|
|
||||||
Comment[sr@ijekavianlatin]=Dodaje stavku menija za izgovaranje teksta
|
|
||||||
Comment[sr@latin]=Dodaje stavku menija za izgovaranje teksta
|
|
||||||
Comment[sv]=Lägger till ett menyalternativ för att läsa upp texten
|
|
||||||
Comment[tg]=Вориди менюро барои талаффузи матн илова мекунад
|
|
||||||
Comment[tr]=Metni okumak için bir menü girdisi oluşturur
|
|
||||||
Comment[ug]=تېكىست ئوقۇش ئۈچۈن تىزىملىككە بىر تۈر قوشىدۇ
|
|
||||||
Comment[uk]=Додає елемент меню для декламування тексту
|
|
||||||
Comment[wa]=Radjoute ene intrêye el dressêye po lére li tecse
|
|
||||||
Comment[x-test]=xxAdds a menu entry for speaking the textxx
|
|
||||||
Comment[zh_CN]=添加一个菜单条目用来朗读文本
|
|
||||||
Comment[zh_TW]=新增選單項目以唸出文字
|
|
||||||
author=Olaf Jan Schmidt, ojschmidt@kde.org
|
|
|
@ -1,101 +0,0 @@
|
||||||
/***************************************************************************
|
|
||||||
A KTextEditor (Kate Part) plugin for speaking text.
|
|
||||||
|
|
||||||
Copyright:
|
|
||||||
(C) 2003-2004 by Olaf Schmidt <ojschmidt@kde.org>
|
|
||||||
(C) 2005 by Gary Cramblitt <garycramblitt@comcast.net>
|
|
||||||
(C) 2009 by Laurent Montel <montel@kde.org>
|
|
||||||
|
|
||||||
Original Author: Olaf Schmidt <ojschmidt@kde.org>
|
|
||||||
***************************************************************************/
|
|
||||||
|
|
||||||
/***************************************************************************
|
|
||||||
* *
|
|
||||||
* 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. *
|
|
||||||
* *
|
|
||||||
***************************************************************************/
|
|
||||||
|
|
||||||
// KateKttsdPlugin includes.
|
|
||||||
#include "katekttsd.h"
|
|
||||||
#include "moc_katekttsd.cpp"
|
|
||||||
#include <ktexteditor/document.h>
|
|
||||||
// Qt includes.
|
|
||||||
#include <QtCore/QTimer>
|
|
||||||
|
|
||||||
// KDE includes.
|
|
||||||
#include <kmessagebox.h>
|
|
||||||
#include <kaction.h>
|
|
||||||
#include <klocale.h>
|
|
||||||
#include <kstandarddirs.h>
|
|
||||||
#include <ktoolinvocation.h>
|
|
||||||
#include <KActionCollection>
|
|
||||||
#include <KAboutData>
|
|
||||||
#include <KSpeech>
|
|
||||||
#include <kate/mainwindow.h>
|
|
||||||
|
|
||||||
K_PLUGIN_FACTORY(KateKttsdFactory, registerPlugin<KateKttsdPlugin>();)
|
|
||||||
K_EXPORT_PLUGIN(KateKttsdFactory(KAboutData("kate_kttsd","kate_kttsd",ki18n("Text-to-Speech Plugin"), "0.1", ki18n("Text-to-Speech Plugin"), KAboutData::License_LGPL_V2)) )
|
|
||||||
|
|
||||||
KateKttsdPlugin::KateKttsdPlugin(QObject* parent, const QList<QVariant>&)
|
|
||||||
: Kate::Plugin ((Kate::Application*)parent)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
Kate::PluginView *KateKttsdPlugin::createView (Kate::MainWindow *mainWindow)
|
|
||||||
{
|
|
||||||
return new KateKttsdPluginView(mainWindow);
|
|
||||||
}
|
|
||||||
|
|
||||||
KateKttsdPluginView::KateKttsdPluginView( Kate::MainWindow *mw )
|
|
||||||
: Kate::PluginView (mw),
|
|
||||||
Kate::XMLGUIClient(KateKttsdFactory::componentData()),
|
|
||||||
m_kspeech(nullptr)
|
|
||||||
{
|
|
||||||
KGlobal::locale()->insertCatalog("kttsd");
|
|
||||||
KAction *a = actionCollection()->addAction("tools_kttsd");
|
|
||||||
a->setText(i18n("Speak Text"));
|
|
||||||
a->setIcon(KIcon("preferences-desktop-text-to-speech"));
|
|
||||||
connect( a, SIGNAL(triggered(bool)), this, SLOT(slotReadOut()) );
|
|
||||||
|
|
||||||
mainWindow()->guiFactory()->addClient(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
KateKttsdPluginView::~KateKttsdPluginView()
|
|
||||||
{
|
|
||||||
mainWindow()->guiFactory()->removeClient( this );
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void KateKttsdPluginView::slotReadOut()
|
|
||||||
{
|
|
||||||
KTextEditor::View *v = mainWindow()->activeView();
|
|
||||||
if ( !v )
|
|
||||||
return;
|
|
||||||
KTextEditor::Document *doc = v->document();
|
|
||||||
QString text;
|
|
||||||
if ( v->selection() )
|
|
||||||
{
|
|
||||||
text = v->selectionText();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
text = doc->text();
|
|
||||||
if ( text.isEmpty() )
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (!KSpeech::isSupported())
|
|
||||||
{
|
|
||||||
KMessageBox::error(0, i18n( "Text-to-Speech not supported") );
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!m_kspeech) {
|
|
||||||
m_kspeech = new KSpeech(this);
|
|
||||||
m_kspeech->setSpeechID(QString::fromLatin1("kate"));
|
|
||||||
}
|
|
||||||
|
|
||||||
m_kspeech->say(text);
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,54 +0,0 @@
|
||||||
/***************************************************************************
|
|
||||||
A KTextEditor (Kate Part) plugin for speaking text.
|
|
||||||
|
|
||||||
Copyright:
|
|
||||||
(C) 2003-2004 by Olaf Schmidt <ojschmidt@kde.org>
|
|
||||||
(C) 2005 by Gary Cramblitt <garycramblitt@comcast.net>
|
|
||||||
|
|
||||||
Original Author: Olaf Schmidt <ojschmidt@kde.org>
|
|
||||||
***************************************************************************/
|
|
||||||
|
|
||||||
/***************************************************************************
|
|
||||||
* *
|
|
||||||
* 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. *
|
|
||||||
* *
|
|
||||||
***************************************************************************/
|
|
||||||
|
|
||||||
#ifndef _KATEKTTSD_H_
|
|
||||||
#define _KATEKTTSD_H_
|
|
||||||
|
|
||||||
#include <ktexteditor/plugin.h>
|
|
||||||
#include <ktexteditor/view.h>
|
|
||||||
#include <kate/plugin.h>
|
|
||||||
#include <kspeech.h>
|
|
||||||
|
|
||||||
#include <QtCore/QObject>
|
|
||||||
|
|
||||||
class KateKttsdPlugin : public Kate::Plugin
|
|
||||||
{
|
|
||||||
Q_OBJECT
|
|
||||||
public:
|
|
||||||
explicit KateKttsdPlugin( QObject* parent = 0, const QList<QVariant>& = QList<QVariant>() );
|
|
||||||
virtual ~KateKttsdPlugin() {};
|
|
||||||
|
|
||||||
Kate::PluginView *createView(Kate::MainWindow *mainWindow);
|
|
||||||
};
|
|
||||||
|
|
||||||
class KateKttsdPluginView : public Kate::PluginView, public Kate::XMLGUIClient
|
|
||||||
{
|
|
||||||
Q_OBJECT
|
|
||||||
public:
|
|
||||||
explicit KateKttsdPluginView(Kate::MainWindow *mw );
|
|
||||||
~KateKttsdPluginView();
|
|
||||||
|
|
||||||
public slots:
|
|
||||||
void slotReadOut();
|
|
||||||
|
|
||||||
private:
|
|
||||||
KSpeech *m_kspeech;
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif // _KATEKTTSD_H_
|
|
|
@ -1,11 +0,0 @@
|
||||||
<!DOCTYPE kpartgui>
|
|
||||||
<gui name="kate_kttsd" library="kate_kttsd" version="3">
|
|
||||||
<MenuBar>
|
|
||||||
<Menu name="tools"><text>&Tools</text>
|
|
||||||
<Action name="tools_kttsd" />
|
|
||||||
</Menu>
|
|
||||||
</MenuBar>
|
|
||||||
<ToolBar name="mainToolBar"><text>Main Toolbar</text>
|
|
||||||
<Action name="tools_kttsd" />
|
|
||||||
</ToolBar>
|
|
||||||
</gui>
|
|
|
@ -12,7 +12,6 @@ set(knotify_SRCS
|
||||||
notifybylogfile.cpp
|
notifybylogfile.cpp
|
||||||
notifybytaskbar.cpp
|
notifybytaskbar.cpp
|
||||||
notifybyexecute.cpp
|
notifybyexecute.cpp
|
||||||
notifybyktts.cpp
|
|
||||||
imageconverter.cpp
|
imageconverter.cpp
|
||||||
ksolidnotify.cpp
|
ksolidnotify.cpp
|
||||||
knotifyplugin.cpp
|
knotifyplugin.cpp
|
||||||
|
@ -24,7 +23,6 @@ add_executable(knotify4 ${knotify_SRCS})
|
||||||
target_link_libraries(knotify4
|
target_link_libraries(knotify4
|
||||||
${KDE4_KDEUI_LIBS}
|
${KDE4_KDEUI_LIBS}
|
||||||
${KDE4_SOLID_LIBS}
|
${KDE4_SOLID_LIBS}
|
||||||
${KDE4_KSPEECH_LIBS}
|
|
||||||
${KDE4_KMEDIAPLAYER_LIBS}
|
${KDE4_KMEDIAPLAYER_LIBS}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -37,7 +37,6 @@
|
||||||
#include "notifybyexecute.h"
|
#include "notifybyexecute.h"
|
||||||
#include "notifybylogfile.h"
|
#include "notifybylogfile.h"
|
||||||
#include "notifybytaskbar.h"
|
#include "notifybytaskbar.h"
|
||||||
#include "notifybyktts.h"
|
|
||||||
|
|
||||||
KNotify::KNotify( QObject *parent )
|
KNotify::KNotify( QObject *parent )
|
||||||
: QObject( parent ),
|
: QObject( parent ),
|
||||||
|
@ -66,7 +65,6 @@ void KNotify::loadConfig()
|
||||||
addPlugin(new NotifyByExecute(this));
|
addPlugin(new NotifyByExecute(this));
|
||||||
addPlugin(new NotifyByLogfile(this));
|
addPlugin(new NotifyByLogfile(this));
|
||||||
addPlugin(new NotifyByTaskbar(this));
|
addPlugin(new NotifyByTaskbar(this));
|
||||||
addPlugin(new NotifyByKTTS(this));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void KNotify::addPlugin( KNotifyPlugin * p )
|
void KNotify::addPlugin( KNotifyPlugin * p )
|
||||||
|
|
|
@ -1,76 +0,0 @@
|
||||||
/*
|
|
||||||
Copyright (C) 2007 by Olivier Goffart <ogoffart at kde.org>
|
|
||||||
Copyright (C) 2009 by Laurent Montel <montel@kde.org>
|
|
||||||
|
|
||||||
|
|
||||||
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, 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.
|
|
||||||
|
|
||||||
*/
|
|
||||||
#include "notifybyktts.h"
|
|
||||||
#include <QtDBus/QtDBus>
|
|
||||||
#include <QHash>
|
|
||||||
#include <ktoolinvocation.h>
|
|
||||||
#include <kmessagebox.h>
|
|
||||||
#include <kmacroexpander.h>
|
|
||||||
#include <klocale.h>
|
|
||||||
#include <knotifyconfig.h>
|
|
||||||
|
|
||||||
NotifyByKTTS::NotifyByKTTS(QObject *parent)
|
|
||||||
: KNotifyPlugin(parent),
|
|
||||||
m_kspeech(0)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
NotifyByKTTS::~NotifyByKTTS()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void NotifyByKTTS::notify( int id, KNotifyConfig * config )
|
|
||||||
{
|
|
||||||
if ( !KSpeech::isSupported() )
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (!m_kspeech) {
|
|
||||||
m_kspeech = new KSpeech(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
QString say = config->readEntry( "KTTS" );
|
|
||||||
QString appId = config->appname;
|
|
||||||
if (appId.isEmpty()) {
|
|
||||||
appId = QString::fromLatin1("KNotify");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!say.isEmpty()) {
|
|
||||||
QHash<QChar,QString> subst;
|
|
||||||
subst.insert( 'e', config->eventid );
|
|
||||||
subst.insert( 'a', config->appname );
|
|
||||||
subst.insert( 's', config->text );
|
|
||||||
subst.insert( 'w', QString::number( (quintptr)config->winId ));
|
|
||||||
subst.insert( 'i', QString::number( id ));
|
|
||||||
subst.insert( 'm', config->text );
|
|
||||||
say = KMacroExpander::expandMacrosShellQuote( say, subst );
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( say.isEmpty() )
|
|
||||||
say = config->text; // fallback
|
|
||||||
|
|
||||||
m_kspeech->setSpeechID(appId);
|
|
||||||
m_kspeech->say(say);
|
|
||||||
|
|
||||||
finished(id);
|
|
||||||
}
|
|
||||||
|
|
||||||
#include "moc_notifybyktts.cpp"
|
|
|
@ -1,44 +0,0 @@
|
||||||
/*
|
|
||||||
Copyright (C) 2007 by Olivier Goffart <ogoffart at kde.org>
|
|
||||||
Copyright (C) 2009 by Laurent Montel <montel@kde.org>
|
|
||||||
|
|
||||||
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, 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 NOTIFYBYKTTS_H
|
|
||||||
#define NOTIFYBYKTTS_H
|
|
||||||
|
|
||||||
#include "knotifyplugin.h"
|
|
||||||
|
|
||||||
#include <KSpeech>
|
|
||||||
|
|
||||||
class NotifyByKTTS : public KNotifyPlugin
|
|
||||||
{
|
|
||||||
Q_OBJECT
|
|
||||||
public:
|
|
||||||
NotifyByKTTS(QObject *parent=0l);
|
|
||||||
virtual ~NotifyByKTTS();
|
|
||||||
|
|
||||||
virtual QString optionName() { return "KTTS"; }
|
|
||||||
virtual void notify(int id , KNotifyConfig *config);
|
|
||||||
|
|
||||||
private:
|
|
||||||
KSpeech *m_kspeech;
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif
|
|
|
@ -4,7 +4,6 @@ set(plasmaclock_LIB_SRCS
|
||||||
calendartable.cpp
|
calendartable.cpp
|
||||||
wheelytoolbutton.cpp
|
wheelytoolbutton.cpp
|
||||||
timezonesConfig.ui
|
timezonesConfig.ui
|
||||||
generalConfig.ui
|
|
||||||
calendarConfig.ui
|
calendarConfig.ui
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -14,7 +13,6 @@ target_link_libraries(plasmaclock
|
||||||
${KDE4_PLASMA_LIBS}
|
${KDE4_PLASMA_LIBS}
|
||||||
${KDE4_KDEUI_LIBS}
|
${KDE4_KDEUI_LIBS}
|
||||||
${KDE4_KIO_LIBS}
|
${KDE4_KIO_LIBS}
|
||||||
${KDE4_KSPEECH_LIBS}
|
|
||||||
)
|
)
|
||||||
|
|
||||||
set_target_properties(plasmaclock PROPERTIES
|
set_target_properties(plasmaclock PROPERTIES
|
||||||
|
|
|
@ -51,7 +51,6 @@
|
||||||
#include <KTimeZone>
|
#include <KTimeZone>
|
||||||
#include <KToolInvocation>
|
#include <KToolInvocation>
|
||||||
#include <KMessageBox>
|
#include <KMessageBox>
|
||||||
#include <KSpeech>
|
|
||||||
|
|
||||||
#include <Plasma/Containment>
|
#include <Plasma/Containment>
|
||||||
#include <Plasma/Corona>
|
#include <Plasma/Corona>
|
||||||
|
@ -63,7 +62,6 @@
|
||||||
#include "calendar.h"
|
#include "calendar.h"
|
||||||
|
|
||||||
#include "ui_timezonesConfig.h"
|
#include "ui_timezonesConfig.h"
|
||||||
#include "ui_generalConfig.h"
|
|
||||||
|
|
||||||
class ClockApplet::Private
|
class ClockApplet::Private
|
||||||
{
|
{
|
||||||
|
@ -75,13 +73,11 @@ public:
|
||||||
adjustSystemTimeAction(nullptr),
|
adjustSystemTimeAction(nullptr),
|
||||||
label(nullptr),
|
label(nullptr),
|
||||||
calendarWidget(nullptr),
|
calendarWidget(nullptr),
|
||||||
forceTzDisplay(false),
|
forceTzDisplay(false)
|
||||||
kspeech(nullptr)
|
|
||||||
{}
|
{}
|
||||||
|
|
||||||
ClockApplet *q;
|
ClockApplet *q;
|
||||||
Ui::timezonesConfig timezonesUi;
|
Ui::timezonesConfig timezonesUi;
|
||||||
Ui::generalConfig generalUi;
|
|
||||||
QString timezone;
|
QString timezone;
|
||||||
QString defaultTimezone;
|
QString defaultTimezone;
|
||||||
QPoint clicked;
|
QPoint clicked;
|
||||||
|
@ -91,11 +87,8 @@ public:
|
||||||
QString prettyTimezone;
|
QString prettyTimezone;
|
||||||
Plasma::Label *label;
|
Plasma::Label *label;
|
||||||
Plasma::Calendar *calendarWidget;
|
Plasma::Calendar *calendarWidget;
|
||||||
int announceInterval;
|
|
||||||
QTime lastTimeSeen;
|
QTime lastTimeSeen;
|
||||||
bool forceTzDisplay : 1;
|
bool forceTzDisplay;
|
||||||
bool kttsAvailable;
|
|
||||||
KSpeech *kspeech;
|
|
||||||
|
|
||||||
QDate addTzToTipText(QString &subText, const Plasma::DataEngine::Data &data, const QDate &prevDate, bool highlight)
|
QDate addTzToTipText(QString &subText, const Plasma::DataEngine::Data &data, const QDate &prevDate, bool highlight)
|
||||||
{
|
{
|
||||||
|
@ -179,64 +172,6 @@ ClockApplet::~ClockApplet()
|
||||||
delete d;
|
delete d;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ClockApplet::speakTime(const QTime &time)
|
|
||||||
{
|
|
||||||
if (!d->announceInterval) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((time.minute() % d->announceInterval) == 0) {
|
|
||||||
QString text;
|
|
||||||
if (time.minute() == 0) {
|
|
||||||
if (KGlobal::locale()->use12Clock()) {
|
|
||||||
if (time.hour() < 12) {
|
|
||||||
text = i18ncp("Text sent to the text to speech service "
|
|
||||||
"when minutes==0 and it is AM",
|
|
||||||
"It is 1 o clock a m",
|
|
||||||
"It is %1 o clock a m",
|
|
||||||
time.hour());
|
|
||||||
} else {
|
|
||||||
text = i18ncp("Text sent to the text to speech service "
|
|
||||||
"when minutes==0 and it is PM",
|
|
||||||
"It is 1 o clock p m",
|
|
||||||
"It is %1 o clock p m",
|
|
||||||
time.hour()-12);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
text = i18ncp("Text sent to the text to speech service "
|
|
||||||
"when minutes==0 and it is the 24 hour clock",
|
|
||||||
"It is 1 o clock",
|
|
||||||
"It is %1 o clock",
|
|
||||||
time.hour());
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (KGlobal::locale()->use12Clock()) {
|
|
||||||
if (time.hour() < 12) {
|
|
||||||
text = i18nc("Text sent to the text to speech service for AM",
|
|
||||||
"It is %1:%2 a m",
|
|
||||||
time.hour(),
|
|
||||||
time.minute());
|
|
||||||
} else {
|
|
||||||
text = i18nc("Text sent to the text to speech service for PM",
|
|
||||||
"It is %1:%2 p m",
|
|
||||||
time.hour()-12,
|
|
||||||
time.minute());
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
text = i18nc("Text sent to the text to speech service for the 24 hour clock",
|
|
||||||
"It is %1:%2",
|
|
||||||
time.hour(),
|
|
||||||
time.minute());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (!d->kspeech) {
|
|
||||||
d->kspeech = new KSpeech(this);
|
|
||||||
d->kspeech->setSpeechID(QString::fromLatin1("plasmaclock"));
|
|
||||||
}
|
|
||||||
d->kspeech->say(text);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void ClockApplet::toolTipAboutToShow()
|
void ClockApplet::toolTipAboutToShow()
|
||||||
{
|
{
|
||||||
updateTipContent();
|
updateTipContent();
|
||||||
|
@ -332,11 +267,7 @@ void ClockApplet::updateClockApplet(const Plasma::DataEngine::Data &data)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const QTime t = d->lastTimeSeen;
|
|
||||||
d->lastTimeSeen = data["Time"].toTime();
|
d->lastTimeSeen = data["Time"].toTime();
|
||||||
if (d->lastTimeSeen.minute() != t.minute() || d->lastTimeSeen.hour() != t.hour()) {
|
|
||||||
speakTime(d->lastTimeSeen);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
QTime ClockApplet::lastTimeSeen() const
|
QTime ClockApplet::lastTimeSeen() const
|
||||||
|
@ -358,32 +289,6 @@ void ClockApplet::createConfigurationInterface(KConfigDialog *parent)
|
||||||
{
|
{
|
||||||
createClockConfigurationInterface(parent);
|
createClockConfigurationInterface(parent);
|
||||||
|
|
||||||
d->kttsAvailable = KSpeech::isSupported();
|
|
||||||
|
|
||||||
if (d->kttsAvailable) {
|
|
||||||
QWidget *generalWidget = new QWidget();
|
|
||||||
d->generalUi.setupUi(generalWidget);
|
|
||||||
parent->addPage(generalWidget, i18nc("General configuration page", "General"), Applet::icon());
|
|
||||||
|
|
||||||
d->generalUi.intervalCombo->addItem(i18nc("@inmenu interval between speaking clock", "Never"), QVariant(0));
|
|
||||||
d->generalUi.intervalCombo->addItem(i18nc("@inmenu interval between speaking clock", "Every minute"), QVariant(1));
|
|
||||||
d->generalUi.intervalCombo->addItem(i18nc("@inmenu interval between speaking clock", "Every 2 minutes"), QVariant(2));
|
|
||||||
d->generalUi.intervalCombo->addItem(i18nc("@inmenu interval between speaking clock", "Every 5 minutes"), QVariant(5));
|
|
||||||
d->generalUi.intervalCombo->addItem(i18nc("@inmenu interval between speaking clock", "Every 10 minutes"), QVariant(10));
|
|
||||||
d->generalUi.intervalCombo->addItem(i18nc("@inmenu interval between speaking clock", "Every 15 minutes"), QVariant(15));
|
|
||||||
d->generalUi.intervalCombo->addItem(i18nc("@inmenu interval between speaking clock", "Every 30 minutes"), QVariant(30));
|
|
||||||
d->generalUi.intervalCombo->addItem(i18nc("@inmenu interval between speaking clock", "Every hour"), QVariant(60));
|
|
||||||
|
|
||||||
for (int i=0; i< d->generalUi.intervalCombo->count() ; i++) {
|
|
||||||
if (d->generalUi.intervalCombo->itemData(i).toInt() == d->announceInterval) {
|
|
||||||
d->generalUi.intervalCombo->setCurrentIndex(i);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
connect(d->generalUi.intervalCombo, SIGNAL(currentIndexChanged(int)), parent, SLOT(settingsModified()));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (d->calendarWidget) {
|
if (d->calendarWidget) {
|
||||||
d->calendarWidget->createConfigurationInterface(parent);
|
d->calendarWidget->createConfigurationInterface(parent);
|
||||||
}
|
}
|
||||||
|
@ -435,7 +340,6 @@ void ClockApplet::configChanged()
|
||||||
d->defaultTimezone = cg.readEntry("defaultTimezone", d->timezone);
|
d->defaultTimezone = cg.readEntry("defaultTimezone", d->timezone);
|
||||||
d->forceTzDisplay = d->timezone != d->defaultTimezone;
|
d->forceTzDisplay = d->timezone != d->defaultTimezone;
|
||||||
d->setPrettyTimezone();
|
d->setPrettyTimezone();
|
||||||
d->announceInterval = cg.readEntry("announceInterval", 0);
|
|
||||||
|
|
||||||
clockConfigChanged();
|
clockConfigChanged();
|
||||||
|
|
||||||
|
@ -480,12 +384,6 @@ void ClockApplet::configAccepted()
|
||||||
d->calendarWidget->configAccepted(cg);
|
d->calendarWidget->configAccepted(cg);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (d->kttsAvailable) {
|
|
||||||
cg.writeEntry("announceInterval", d->generalUi.intervalCombo->itemData(d->generalUi.intervalCombo->currentIndex()));
|
|
||||||
} else {
|
|
||||||
cg.writeEntry("announceInterval", 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
clockConfigAccepted();
|
clockConfigAccepted();
|
||||||
|
|
||||||
emit configNeedsSaving();
|
emit configNeedsSaving();
|
||||||
|
|
|
@ -86,7 +86,6 @@ class PLASMACLOCK_EXPORT ClockApplet : public Plasma::PopupApplet
|
||||||
void setCurrentTimezone(const QString &tz);
|
void setCurrentTimezone(const QString &tz);
|
||||||
void configAccepted();
|
void configAccepted();
|
||||||
void updateClockDefaultsTo();
|
void updateClockDefaultsTo();
|
||||||
void speakTime(const QTime &);
|
|
||||||
void launchTimeControlPanel();
|
void launchTimeControlPanel();
|
||||||
|
|
||||||
private Q_SLOTS:
|
private Q_SLOTS:
|
||||||
|
|
|
@ -1,79 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<ui version="4.0">
|
|
||||||
<class>generalConfig</class>
|
|
||||||
<widget class="QWidget" name="generalConfig">
|
|
||||||
<property name="geometry">
|
|
||||||
<rect>
|
|
||||||
<x>0</x>
|
|
||||||
<y>0</y>
|
|
||||||
<width>270</width>
|
|
||||||
<height>62</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
<layout class="QGridLayout" name="gridLayout">
|
|
||||||
<item row="0" column="0" colspan="2">
|
|
||||||
<widget class="QLabel" name="label_4">
|
|
||||||
<property name="font">
|
|
||||||
<font>
|
|
||||||
<weight>75</weight>
|
|
||||||
<bold>true</bold>
|
|
||||||
</font>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
|
||||||
<string>Text to Speech</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="1" column="0">
|
|
||||||
<spacer name="horizontalSpacer_3">
|
|
||||||
<property name="orientation">
|
|
||||||
<enum>Qt::Horizontal</enum>
|
|
||||||
</property>
|
|
||||||
<property name="sizeType">
|
|
||||||
<enum>QSizePolicy::Fixed</enum>
|
|
||||||
</property>
|
|
||||||
<property name="sizeHint" stdset="0">
|
|
||||||
<size>
|
|
||||||
<width>13</width>
|
|
||||||
<height>20</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
|
||||||
</spacer>
|
|
||||||
</item>
|
|
||||||
<item row="1" column="1">
|
|
||||||
<widget class="QLabel" name="label_5">
|
|
||||||
<property name="text">
|
|
||||||
<string>Speak time:</string>
|
|
||||||
</property>
|
|
||||||
<property name="alignment">
|
|
||||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="2" column="3">
|
|
||||||
<spacer name="verticalSpacer">
|
|
||||||
<property name="orientation">
|
|
||||||
<enum>Qt::Vertical</enum>
|
|
||||||
</property>
|
|
||||||
<property name="sizeHint" stdset="0">
|
|
||||||
<size>
|
|
||||||
<width>67</width>
|
|
||||||
<height>259</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
|
||||||
</spacer>
|
|
||||||
</item>
|
|
||||||
<item row="1" column="2">
|
|
||||||
<widget class="KComboBox" name="intervalCombo"/>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</widget>
|
|
||||||
<customwidgets>
|
|
||||||
<customwidget>
|
|
||||||
<class>KComboBox</class>
|
|
||||||
<extends>QComboBox</extends>
|
|
||||||
<header>kcombobox.h</header>
|
|
||||||
</customwidget>
|
|
||||||
</customwidgets>
|
|
||||||
<connections/>
|
|
||||||
</ui>
|
|
Loading…
Add table
Reference in a new issue