19 #include <tdeapplication.h>
20 #include <tdeconfig.h>
21 #include <tdeglobal.h>
23 #include "kclipboard.h"
41 class 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;
93 bool TDEClipboardSynchronizer::s_sync =
false;
94 bool TDEClipboardSynchronizer::s_reverse_sync =
false;
95 bool TDEClipboardSynchronizer::s_blocked =
false;
105 TDEClipboardSynchronizer::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",
118 TDEClipboardSynchronizer::~TDEClipboardSynchronizer()
120 if ( s_self ==
this )
124 void TDEClipboardSynchronizer::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 TDEClipboardSynchronizer::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 TDEClipboardSynchronizer::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 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();
193 void TDEClipboardSynchronizer::newConfiguration(
int config )
195 s_sync = (config & Synchronize);
196 self()->setupSignals();
199 #include "kclipboard.moc"
static void setSynchronizing(bool sync)
Configures TDEClipboardSynchronizer to synchronize the Selection to Clipboard whenever it changes...
static TDEClipboardSynchronizer * self()
Returns the TDEClipboardSynchronizer singleton object.
static void setReverseSynchronizing(bool enable)
Configures TDEClipboardSynchronizer to copy the Clipboard buffer to the Selection buffer whenever the...
A TDEConfigBase derived class for one specific group in a TDEConfig object.
This class is only for internal use.
static TDEConfig * config()
Returns the general config object.