19#include <tdeapplication.h>
23#include "kclipboard.h"
41class TDEClipboardSynchronizer::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;
93bool TDEClipboardSynchronizer::s_sync =
false;
94bool TDEClipboardSynchronizer::s_reverse_sync =
false;
95bool TDEClipboardSynchronizer::s_blocked =
false;
105TDEClipboardSynchronizer::TDEClipboardSynchronizer( TQObject *parent,
const char *name )
106 : TQObject( parent, name )
111 s_sync = config.readBoolEntry(
"SynchronizeClipboardAndSelection", s_sync);
112 s_reverse_sync = config.readBoolEntry(
"ClipboardSetSelection",
118TDEClipboardSynchronizer::~TDEClipboardSynchronizer()
120 if ( s_self ==
this )
124void TDEClipboardSynchronizer::setupSignals()
126 TQClipboard *clip = TQApplication::clipboard();
127 disconnect( clip, NULL,
this, NULL );
129 connect( clip, TQ_SIGNAL( selectionChanged() ),
130 TQ_SLOT( slotSelectionChanged() ));
132 connect( clip, TQ_SIGNAL( dataChanged() ),
133 TQ_SLOT( slotClipboardChanged() ));
136void TDEClipboardSynchronizer::slotSelectionChanged()
138 TQClipboard *clip = TQApplication::clipboard();
141 if ( s_blocked || !clip->ownsSelection() )
144 setClipboard(
new MimeSource( clip->data( TQClipboard::Selection) ),
145 TQClipboard::Clipboard );
148void TDEClipboardSynchronizer::slotClipboardChanged()
150 TQClipboard *clip = TQApplication::clipboard();
153 if ( s_blocked || !clip->ownsClipboard() )
156 setClipboard(
new MimeSource( clip->data( TQClipboard::Clipboard ) ),
157 TQClipboard::Selection );
160void TDEClipboardSynchronizer::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();
193void TDEClipboardSynchronizer::newConfiguration(
int config )
195 s_sync = (config & Synchronize);
196 self()->setupSignals();
199#include "kclipboard.moc"
This class is only for internal use.
static void setReverseSynchronizing(bool enable)
Configures TDEClipboardSynchronizer to copy the Clipboard buffer to the Selection buffer whenever the...
static void setSynchronizing(bool sync)
Configures TDEClipboardSynchronizer to synchronize the Selection to Clipboard whenever it changes.
static TDEClipboardSynchronizer * self()
Returns the TDEClipboardSynchronizer singleton object.
A TDEConfigBase derived class for one specific group in a TDEConfig object.
static TDEConfig * config()
Returns the general config object.