From 2bda8f7717adf28da4af0d34fb82f63d2868c31d Mon Sep 17 00:00:00 2001 From: toma Date: Wed, 25 Nov 2009 17:56:58 +0000 Subject: Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features. BUG:215923 git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdeutils@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da --- kregexpeditor/drag.cpp | 77 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 kregexpeditor/drag.cpp (limited to 'kregexpeditor/drag.cpp') diff --git a/kregexpeditor/drag.cpp b/kregexpeditor/drag.cpp new file mode 100644 index 0000000..11ecc63 --- /dev/null +++ b/kregexpeditor/drag.cpp @@ -0,0 +1,77 @@ +/* + * Copyright (c) 2002-2003 Jesper K. Pedersen + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License version 2 as published by the Free Software Foundation. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + **/ +#include "drag.h" +#include "regexp.h" +#include "regexpconverter.h" +#include "widgetfactory.h" + +RegExpWidgetDrag::RegExpWidgetDrag( RegExp* regexp, QWidget* dragSource ) + : QDragObject( dragSource ), _regexp( regexp->clone() ) +{ +} + +RegExpWidgetDrag::~RegExpWidgetDrag() +{ + delete _regexp; +} + + +bool RegExpWidgetDrag::canDecode( QDragMoveEvent* event ) +{ + return event->provides( "KRegExpEditor/widgetdrag" ); +} + +RegExpWidget* RegExpWidgetDrag::decode(QDropEvent* event, RegExpEditorWindow* window, + QWidget* parent) +{ + QByteArray payload = event->encodedData("KRegExpEditor/widgetdrag" ); + QTextStream stream( payload, IO_ReadOnly ); + QString str = stream.read(); + RegExp* regexp = WidgetFactory::createRegExp( str ); + RegExpWidget* widget = WidgetFactory::createWidget( regexp, window, parent ); + delete regexp; + return widget; +} + +const char * RegExpWidgetDrag::format ( int i ) const +{ + if ( i == 0 ) + return "KRegExpEditor/widgetdrag"; + else if ( i == 1 ) + return "text/plain"; + else + return 0; +} + +QByteArray RegExpWidgetDrag::encodedData ( const char* format ) const +{ + QByteArray data; + QTextStream stream( data, IO_WriteOnly ); + if ( QString::fromLocal8Bit( format ).startsWith(QString::fromLocal8Bit( "KRegExpEditor/widgetdrag" ) ) ) { + QString xml = _regexp->toXmlString(); + stream << xml; + } + else if ( QString::fromLocal8Bit( format ).startsWith(QString::fromLocal8Bit( "text/plain" ) ) ) { + stream << RegExpConverter::current()->toStr( _regexp, false ); + } + else { + qWarning("Unexpected drag and drop format: %s", format ); + } + return data; +} + -- cgit v1.2.3