diff options
author | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
---|---|---|
committer | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
commit | 2bda8f7717adf28da4af0d34fb82f63d2868c31d (patch) | |
tree | 8d927b7b47a90c4adb646482a52613f58acd6f8c /kregexpeditor/drag.cpp | |
download | tdeutils-2bda8f7717adf28da4af0d34fb82f63d2868c31d.tar.gz tdeutils-2bda8f7717adf28da4af0d34fb82f63d2868c31d.zip |
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
Diffstat (limited to 'kregexpeditor/drag.cpp')
-rw-r--r-- | kregexpeditor/drag.cpp | 77 |
1 files changed, 77 insertions, 0 deletions
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 <[email protected]> + * + * 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; +} + |