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.