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...
bool readBoolEntry(const TQString &pKey, bool bDefault=false) const
Reads a boolean entry.
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.