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, TQ_SIGNAL( selectionChanged() ),
130 TQ_SLOT( slotSelectionChanged() ));
132 connect( clip, TQ_SIGNAL( dataChanged() ),
133 TQ_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"
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.