19 #include <kapplication.h>
23 #include "kclipboard.h"
41 class KClipboardSynchronizer::MimeSource :
public TQMimeSource
44 MimeSource(
const TQMimeSource * src )
48 m_formats.setAutoDelete(
true );
49 m_data.setAutoDelete(
true );
53 TQByteArray *byteArray;
56 while ( (format = src->format( i++ )) )
58 byteArray =
new TQByteArray();
59 *byteArray = src->encodedData( format ).copy();
60 m_data.append( byteArray );
61 m_formats.append( format );
68 virtual const char *format(
int i )
const {
69 if ( i < (
int) m_formats.count() )
70 return m_formats.at( i );
74 virtual bool provides(
const char *mimeType )
const {
75 return ( m_formats.find( mimeType ) > -1 );
77 virtual TQByteArray encodedData(
const char *format )
const
79 int index = m_formats.find( format );
81 return *(m_data.at( index ));
87 mutable TQStrList m_formats;
88 mutable TQPtrList<TQByteArray> m_data;
93 bool KClipboardSynchronizer::s_sync =
false;
94 bool KClipboardSynchronizer::s_reverse_sync =
false;
95 bool KClipboardSynchronizer::s_blocked =
false;
105 KClipboardSynchronizer::KClipboardSynchronizer( TQObject *parent,
const char *name )
106 : TQObject( parent, name )
111 s_sync = config.readBoolEntry(
"SynchronizeClipboardAndSelection", s_sync);
112 s_reverse_sync = config.readBoolEntry(
"ClipboardSetSelection",
118 KClipboardSynchronizer::~KClipboardSynchronizer()
120 if ( s_self ==
this )
124 void KClipboardSynchronizer::setupSignals()
126 TQClipboard *clip = TQApplication::clipboard();
127 disconnect( clip, NULL,
this, NULL );
129 connect( clip, TQT_SIGNAL( selectionChanged() ),
130 TQT_SLOT( slotSelectionChanged() ));
132 connect( clip, TQT_SIGNAL( dataChanged() ),
133 TQT_SLOT( slotClipboardChanged() ));
136 void KClipboardSynchronizer::slotSelectionChanged()
138 TQClipboard *clip = TQApplication::clipboard();
141 if ( s_blocked || !clip->ownsSelection() )
144 setClipboard(
new MimeSource( clip->data( TQClipboard::Selection) ),
145 TQClipboard::Clipboard );
148 void KClipboardSynchronizer::slotClipboardChanged()
150 TQClipboard *clip = TQApplication::clipboard();
153 if ( s_blocked || !clip->ownsClipboard() )
156 setClipboard(
new MimeSource( clip->data( TQClipboard::Clipboard ) ),
157 TQClipboard::Selection );
160 void KClipboardSynchronizer::setClipboard( TQMimeSource *data, TQClipboard::Mode mode )
164 TQClipboard *clip = TQApplication::clipboard();
168 if ( mode == TQClipboard::Clipboard )
170 clip->setData( data, TQClipboard::Clipboard );
172 else if ( mode == TQClipboard::Selection )
174 clip->setData( data, TQClipboard::Selection );
183 self()->setupSignals();
188 s_reverse_sync = enable;
189 self()->setupSignals();
193 void KClipboardSynchronizer::newConfiguration(
int config )
195 s_sync = (config & Synchronize);
196 self()->setupSignals();
199 #include "kclipboard.moc"
static void setReverseSynchronizing(bool enable)
Configures KClipboardSynchronizer to copy the Clipboard buffer to the Selection buffer whenever the C...
static void setSynchronizing(bool sync)
Configures KClipboardSynchronizer to synchronize the Selection to Clipboard whenever it changes...
A KConfigBase derived class for one specific group in a KConfig object.
This class is only for internal use.
static KClipboardSynchronizer * self()
Returns the KClipboardSynchronizer singleton object.
static KConfig * config()
Returns the general config object.