You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tdeaccessibility/ksayit/src/ksayitsystemtray.cpp

357 lines
8.9 KiB

/***************************************************************************
ksayitsystemtray.cpp - description
-------------------
begin : Die Sep 2 2003
copyright : (C) 2003 by Robert Vogl
email : voglrobe@saphir
***************************************************************************/
/***************************************************************************
* *
* 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. *
* *
***************************************************************************/
#include <iostream>
// QT includes
#include <tqtranslator.h>
// KDE includes
#include <tdeglobal.h>
#include <tdelocale.h>
// App specific includes
#include "ksayitsystemtray.h"
KSayItSystemTray::KSayItSystemTray(TQWidget *parent, const char *name)
: KSystemTray(parent,name)
{
initActions();
changeState( StateCLIPEMPTY::Instance() );
}
KSayItSystemTray::~KSayItSystemTray()
{
delete StateWAIT::Instance();
delete StateSAY::Instance();
delete StateCLIPEMPTY::Instance();
}
void KSayItSystemTray::initActions()
{
// Context-menu
menu = this->contextMenu();
help = new KHelpMenu(this, kapp->aboutData(), false, actionCollection());
// Standard actions
settings = KStdAction::preferences(TQT_TQOBJECT(this), TQT_SLOT(slotPreferences()), actionCollection());
help_about = KStdAction::aboutApp(help, TQT_SLOT(aboutApplication()), actionCollection());
help_kde = KStdAction::aboutKDE(help, TQT_SLOT(aboutKDE()), actionCollection());
// User defined actions
say = new TDEAction(i18n("Say"),
"player_play",
0,
TQT_TQOBJECT(this), TQT_SLOT (slotSayActivated()),
actionCollection(),
"say_it");
shutup = new TDEAction(i18n("Shut Up"),
"player_stop",
0,
TQT_TQOBJECT(this), TQT_SLOT (slotStopActivated()),
actionCollection(),
"shut_up");
pause = new TDEAction (i18n("Pause"),
"player_pause",
0,
TQT_TQOBJECT(this), TQT_SLOT (slotPauseActivated()),
actionCollection(),
"pause");
next_sentence = new TDEAction (i18n("Next Sentence"),
"2rightarrow",
0,
TQT_TQOBJECT(this), TQT_SLOT (slotNextSentenceActivated()),
actionCollection(),
"next_sentence");
prev_sentence = new TDEAction (i18n("Previous Sentence"),
"2leftarrow",
0,
TQT_TQOBJECT(this), TQT_SLOT(slotPrevSentenceActivated()),
actionCollection(),
"prev_sentence");
// Actions -> Context-menu
settings->plug(menu); menu->insertSeparator();
say->plug(menu);
shutup->plug(menu);
pause->plug(menu);
next_sentence->plug(menu);
prev_sentence->plug(menu); menu->insertSeparator();
help_about->plug(menu);
help_kde->plug(menu);
// default enables/disables
say ->setEnabled(false);
shutup ->setEnabled(false);
pause ->setEnabled(false);
next_sentence->setEnabled(false);
prev_sentence->setEnabled(false);
}
void KSayItSystemTray::slotPreferences()
{
// call Preferences
emit signalCallPreferences();
}
void KSayItSystemTray::mousePressEvent(TQMouseEvent *me)
{
_state->mousePressEvent(this, me);
}
void KSayItSystemTray::mouseReleaseEvent(TQMouseEvent *me)
{
_state->mouseReleaseEvent(this, me);
}
void KSayItSystemTray::slotSayActivated()
{
// start to say content of clipboard
emit signalSayActivated();
}
void KSayItSystemTray::slotStopActivated()
{
// stop saying
emit signalShutUpActivated();
}
void KSayItSystemTray::slotPauseActivated()
{
// pause saying
emit signalPauseActivated();
}
void KSayItSystemTray::slotNextSentenceActivated()
{
// next sentence
emit signalNextActivated();
}
void KSayItSystemTray::slotPrevSentenceActivated()
{
// previous sentence
emit signalPrevActivated();
}
void KSayItSystemTray::changeState(State *state)
{
_state = state;
_state->setContext(this);
}
void KSayItSystemTray::setActions(bool sayEnabled, bool pauseEnabled, bool shutupEnabled,
bool nextEnabled, bool prevEnabled)
{
say ->setEnabled(sayEnabled);
pause ->setEnabled(pauseEnabled);
shutup ->setEnabled(shutupEnabled);
next_sentence->setEnabled(nextEnabled);
prev_sentence->setEnabled(prevEnabled);
}
void KSayItSystemTray::normalMousePressEvent(TQMouseEvent *e)
{
KSystemTray::mousePressEvent(e);
}
void KSayItSystemTray::normalMouseReleaseEvent(TQMouseEvent *e)
{
KSystemTray::mouseReleaseEvent(e);
}
void KSayItSystemTray::sayClipboard()
{
emit signalSayClipboard();
}
////////////////////////////////////////////
State::State(){
}
State::~State(){
}
void State::mousePressEvent(KSayItSystemTray *caller, TQMouseEvent *e)
{
// reimplemented by subclasses
}
void State::mouseReleaseEvent(KSayItSystemTray *caller, TQMouseEvent *e)
{
// reimplemented by subclasses
}
void State::setContext(KSayItSystemTray *caller)
{
// reimplemented by subclasses
}
void State::changeState(KSayItSystemTray *caller, State *state)
{
caller->changeState(state);
}
void State::say(KSayItSystemTray *caller)
{
caller->sayClipboard();
}
void State::mousePressEventCall(KSayItSystemTray *caller, TQMouseEvent *e)
{
caller->normalMousePressEvent(e);
}
void State::mouseReleaseEventCall(KSayItSystemTray *caller, TQMouseEvent *e)
{
caller->normalMouseReleaseEvent(e);
}
////////////////////////////////////////////
StateWAIT::StateWAIT(){
m_traypixmap = TDEGlobal::iconLoader()->loadIcon("ksayit", TDEIcon::Toolbar);
}
StateWAIT::~StateWAIT(){
}
StateWAIT* StateWAIT::_instance = 0;
StateWAIT* StateWAIT::Instance()
{
if (_instance == 0){
_instance = new StateWAIT();
}
return _instance;
}
void StateWAIT::setContext(KSayItSystemTray *caller)
{
caller->setPixmap( m_traypixmap );
}
void StateWAIT::mousePressEvent(KSayItSystemTray *caller, TQMouseEvent *e)
{
if (e->button()==Qt::LeftButton){ // left Mouse-button pressed
TQWidget::mousePressEvent(e); // do nothing (see mouseReleaseEvent)
} else {
mousePressEventCall(caller, e); // normal mouse-handling
}
}
void StateWAIT::mouseReleaseEvent(KSayItSystemTray *caller, TQMouseEvent *e)
{
if (e->button()==Qt::LeftButton){ // left Mouse-button released
say(caller);
} else {
mouseReleaseEventCall(caller, e); // normal mouse-handling
}
}
////////////////////////////////////////////
StateSAY::StateSAY(){
m_traypixmap = TDEGlobal::iconLoader()->loadIcon("ksayit_talking", TDEIcon::Toolbar);
}
StateSAY::~StateSAY(){
}
StateSAY* StateSAY::_instance = 0;
StateSAY* StateSAY::Instance()
{
if (_instance == 0){
_instance = new StateSAY();
}
return _instance;
}
void StateSAY::setContext(KSayItSystemTray *caller)
{
caller->setPixmap( m_traypixmap );
}
void StateSAY::mousePressEvent(KSayItSystemTray *caller, TQMouseEvent *e)
{
if (e->button()==Qt::LeftButton){ // left Mouse-button pressed
TQWidget::mousePressEvent(e); // do nothing (see mouseReleaseEvent)
} else {
mousePressEventCall(caller, e); // normal mouse-handling
}
}
void StateSAY::mouseReleaseEvent(KSayItSystemTray *caller, TQMouseEvent *e)
{
if (e->button()==Qt::LeftButton){ // left Mouse-button released
TQWidget::mouseReleaseEvent(e); // do nothing (see mouseReleaseEvent)
} else {
mouseReleaseEventCall(caller, e); // normal mouse-handling
}
}
////////////////////////////////////////////
StateCLIPEMPTY::StateCLIPEMPTY(){
m_traypixmap = TDEGlobal::iconLoader()->loadIcon("ksayit_clipempty", TDEIcon::Toolbar);
}
StateCLIPEMPTY::~StateCLIPEMPTY(){
}
StateCLIPEMPTY* StateCLIPEMPTY::_instance = 0;
StateCLIPEMPTY* StateCLIPEMPTY::Instance()
{
if (_instance == 0){
_instance = new StateCLIPEMPTY();
}
return _instance;
}
void StateCLIPEMPTY::setContext(KSayItSystemTray *caller)
{
caller->setPixmap( m_traypixmap );
}
void StateCLIPEMPTY::mousePressEvent(KSayItSystemTray *caller, TQMouseEvent *e)
{
if (e->button()==Qt::LeftButton){ // left Mouse-button pressed
TQWidget::mousePressEvent(e); // do nothing (see mouseReleaseEvent)
} else {
mousePressEventCall(caller, e); // normal mouse-handling
}
}
void StateCLIPEMPTY::mouseReleaseEvent(KSayItSystemTray *caller, TQMouseEvent *e)
{
if (e->button()==Qt::LeftButton){ // left Mouse-button released
TQWidget::mouseReleaseEvent(e); // do nothing (see mouseReleaseEvent)
} else {
mouseReleaseEventCall(caller, e); // normal mouse-handling
}
}
#include "ksayitsystemtray.moc"