20 #include "ksettings/dispatcher.h"
24 #include <kstaticdeleter.h>
38 Dispatcher * Dispatcher::m_self = 0;
48 Dispatcher::Dispatcher( TQObject * parent,
const char * name )
49 : TQObject( parent, name )
55 Dispatcher::~Dispatcher()
63 assert( instance != 0 );
68 m_instanceName[ recv ] = instanceName;
70 if( m_instanceInfo.contains( instanceName ) )
72 sig = m_instanceInfo[ instanceName ].signal;
76 sig =
new TQSignal(
this,
"signal dispatcher" );
77 m_instanceInfo[ instanceName ].signal = sig;
78 m_instanceInfo[ instanceName ].instance = instance;
80 sig->connect( recv, slot );
82 ++m_instanceInfo[ instanceName ].count;
83 connect( recv, TQT_SIGNAL( destroyed( TQObject * ) ),
this, TQT_SLOT( unregisterInstance( TQObject * ) ) );
89 if( m_instanceInfo.contains( instanceName ) )
91 KInstance * inst = m_instanceInfo[ instanceName ].instance;
104 for( TQMap<TQCString, InstanceInfo>::ConstIterator it = m_instanceInfo.begin(); it != m_instanceInfo.end(); ++it )
105 if( ( *it ).count > 0 )
106 names.append( it.key() );
114 if( ! m_instanceInfo.contains( instanceName ) )
118 m_instanceInfo[ instanceName ].instance->config()->reparseConfiguration();
119 TQSignal * sig = m_instanceInfo[ instanceName ].signal;
122 kdDebug( 701 ) <<
"emit signal to instance" <<
endl;
129 for( TQMap<TQCString, InstanceInfo>::ConstIterator it = m_instanceInfo.begin(); it != m_instanceInfo.end(); ++it )
131 ( *it ).instance->config()->sync();
135 void Dispatcher::unregisterInstance( TQObject * obj )
138 TQCString name = m_instanceName[ obj ];
139 m_instanceName.remove( obj );
140 --m_instanceInfo[ name ].count;
141 if( m_instanceInfo[ name ].count == 0 )
143 delete m_instanceInfo[ name ].signal;
144 m_instanceInfo.remove( name );
155 #include "dispatcher.moc"