22#include <tqwindowdefs.h>
25#include "tdeglobalaccel_win.h"
26#include "tdeglobalaccel.h"
27#include "kkeyserver_x11.h"
29#include <tqpopupmenu.h>
32#include <tqmetaobject.h>
33#include <private/qucomextra_p.h>
34#include <tdeapplication.h>
36#include <kkeynative.h>
40static TQValueList< TDEGlobalAccelPrivate* >* all_accels = 0;
42TDEGlobalAccelPrivate::TDEGlobalAccelPrivate()
43: TDEAccelBase( TDEAccelBase::NATIVE_KEYS )
45, m_blockingDisabled( false )
47 if( all_accels == NULL )
48 all_accels =
new TQValueList< TDEGlobalAccelPrivate* >;
49 all_accels->append(
this );
50 m_sConfigGroup =
"Global Shortcuts";
54TDEGlobalAccelPrivate::~TDEGlobalAccelPrivate()
60 all_accels->remove(
this );
61 if( all_accels->count() == 0 ) {
67void TDEGlobalAccelPrivate::setEnabled(
bool bEnable )
73void TDEGlobalAccelPrivate::blockShortcuts(
bool block )
75 if( all_accels == NULL )
77 for( TQValueList< TDEGlobalAccelPrivate* >::ConstIterator it = all_accels->begin();
78 it != all_accels->end();
80 if( (*it)->m_blockingDisabled )
82 (*it)->m_blocked = block;
83 (*it)->updateConnections();
87void TDEGlobalAccelPrivate::disableBlocking(
bool block )
89 m_blockingDisabled = block;
92bool TDEGlobalAccelPrivate::isEnabledInternal()
const
94 return TDEAccelBase::isEnabled() && !m_blocked;
97bool TDEGlobalAccelPrivate::emitSignal( Signal )
102bool TDEGlobalAccelPrivate::connectKey( TDEAccelAction& action,
const KKeyServer::Key& key )
103 {
return grabKey( key,
true, &action ); }
105 {
return grabKey( key,
true, 0 ); }
106bool TDEGlobalAccelPrivate::disconnectKey( TDEAccelAction& action,
const KKeyServer::Key& key )
107 {
return grabKey( key,
false, &action ); }
109 {
return grabKey( key,
false, 0 ); }
111bool TDEGlobalAccelPrivate::grabKey(
const KKeyServer::Key& key,
bool bGrab, TDEAccelAction* pAction )
300void TDEGlobalAccelPrivate::activate( TDEAccelAction* pAction,
const KKeySequence& seq )
302 kdDebug(125) <<
"TDEGlobalAccelPrivate::activate( \"" << pAction->name() <<
"\" ) " <<
endl;
304 TQRegExp rexPassIndex(
"([ ]*int[ ]*)" );
305 TQRegExp rexPassInfo(
" TQString" );
306 TQRegExp rexIndex(
" ([0-9]+)$" );
311 if( rexPassIndex.search( pAction->methodSlotPtr() ) >= 0 && rexIndex.search( pAction->name() ) >= 0 ) {
312 int n = rexIndex.cap(1).toInt();
313 kdDebug(125) <<
"Calling " << pAction->methodSlotPtr() <<
" int = " << n <<
endl;
314 int slot_id = pAction->objSlotPtr()->metaObject()->findSlot( normalizeSignalSlot( pAction->methodSlotPtr() ).data() + 1,
true );
317 static_QUType_int.set(o+1,n);
318 const_cast< TQObject*
>( pAction->objSlotPtr())->tqt_invoke( slot_id, o );
320 }
else if( rexPassInfo.search( pAction->methodSlotPtr() ) ) {
321 int slot_id = pAction->objSlotPtr()->metaObject()->findSlot( normalizeSignalSlot( pAction->methodSlotPtr() ).data() + 1, true );
324 static_QUType_QString.set(o+1,pAction->name());
325 static_QUType_QString.set(o+2,pAction->label());
326 static_QUType_ptr.set(o+3,&seq);
327 const_cast< TQObject*
>( pAction->objSlotPtr())->tqt_invoke( slot_id, o );
330 int slot_id = pAction->objSlotPtr()->metaObject()->findSlot( normalizeSignalSlot( pAction->methodSlotPtr() ).data() + 1, true );
332 const_cast< TQObject*
>( pAction->objSlotPtr())->tqt_invoke( slot_id, 0 );
336void TDEGlobalAccelPrivate::slotActivated(
int iAction )
338 TDEAccelAction* pAction = actions().actionPtr( iAction );
343#include "tdeglobalaccel_win.moc"
A KKeySequence object holds a sequence of up to 4 keys.
kdbgstream kdDebug(int area=0)
Returns a debug stream.
kdbgstream & endl(kdbgstream &s)
Prints an "\n".