diff --git a/includes/KABC/VCardDrag b/includes/KABC/VCardDrag new file mode 100644 index 000000000..be076cfac --- /dev/null +++ b/includes/KABC/VCardDrag @@ -0,0 +1 @@ +#include "../../kabc/vcarddrag.h" diff --git a/kabc/CMakeLists.txt b/kabc/CMakeLists.txt index 4f696302b..09aca8054 100644 --- a/kabc/CMakeLists.txt +++ b/kabc/CMakeLists.txt @@ -1,156 +1,158 @@ project(kabc) include_directories( ${KDE4_KIO_INCLUDES} ) add_definitions(${QDBUS_DEFINITIONS} -DKDE_DEFAULT_DEBUG_AREA=5700) add_definitions( -DQT_NO_CAST_FROM_ASCII ) add_definitions( -DQT_NO_CAST_TO_ASCII ) # these apply also for all subdirs include_directories( ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/vcardparser ) # kabc/vcardparser/Makefile.am: vcards set(vcards_STAT_SRCS vcardparser/vcard.cpp vcardparser/vcardline.cpp vcardparser/vcardparser.cpp ) add_subdirectory( vcardparser ) if (NOT KDEPIM_NO_KRESOURCES) add_subdirectory( formats ) add_subdirectory( plugins ) endif (NOT KDEPIM_NO_KRESOURCES) add_subdirectory( tests ) #add_subdirectory( scripts ) file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/scripts) add_custom_command( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/field.cpp ${CMAKE_CURRENT_BINARY_DIR}/addressee.h ${CMAKE_CURRENT_BINARY_DIR}/addressee.cpp WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/scripts COMMAND ${PERL_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/scripts/makeaddressee DEPENDS scripts/makeaddressee scripts/addressee.src.cpp scripts/addressee.src.h scripts/entrylist scripts/field.src.cpp ) ########### next target ############### set(kabc_LIB_SRCS address.cpp ${CMAKE_CURRENT_BINARY_DIR}/addressee.cpp ${CMAKE_CURRENT_BINARY_DIR}/addressee.h ${CMAKE_CURRENT_BINARY_DIR}/field.cpp addresseedialog.cpp contactgroup.cpp contactgrouptool.cpp distributionlist.cpp emailselectdialog.cpp errorhandler.cpp geo.cpp key.cpp ldapdn.cpp ldif.cpp phonenumber.cpp picture.cpp plugin.cpp secrecy.cpp sound.cpp timezone.cpp ldifconverter.cpp addresseelist.cpp vcardconverter.cpp vcardtool.cpp addresseehelper.cpp lock.cpp locknull.cpp sortmode.cpp + vcarddrag.cpp ${vcards_STAT_SRCS} ) if (NOT KDEPIM_NO_KRESOURCES) set(kabc_LIB_SRCS ${kabc_LIB_SRCS} addressbook.cpp addresslineedit.cpp distributionlistdialog.cpp formatfactory.cpp resource.cpp resourceabc.cpp resourcecached.cpp stdaddressbook.cpp vcardformat.cpp ) endif (NOT KDEPIM_NO_KRESOURCES) kde4_add_library(kabc SHARED ${kabc_LIB_SRCS}) target_link_libraries(kabc ${KDE4_KDEUI_LIBS} ${KDE4_KDECORE_LIBS}) target_link_libraries(kabc LINK_INTERFACE_LIBRARIES ${KDE4_KDEUI_LIBS}) if (NOT KDEPIM_NO_KRESOURCES) target_link_libraries(kabc kresources) target_link_libraries(kabc LINK_INTERFACE_LIBRARIES kresources) endif (NOT KDEPIM_NO_KRESOURCES) set_target_properties(kabc PROPERTIES VERSION ${GENERIC_LIB_VERSION} SOVERSION ${GENERIC_LIB_SOVERSION} ) install(TARGETS kabc EXPORT kdepimlibsLibraryTargets ${INSTALL_TARGETS_DEFAULT_ARGS}) ########### install files ############### install( FILES countrytransl.map DESTINATION ${DATA_INSTALL_DIR}/kabc ) install( FILES kabc_export.h address.h ${CMAKE_CURRENT_BINARY_DIR}/addressee.h addresseedialog.h addresseelist.h contactgroup.h contactgrouptool.h distributionlist.h emailselectdialog.h errorhandler.h field.h geo.h key.h ldifconverter.h lock.h locknull.h phonenumber.h picture.h plugin.h secrecy.h sortmode.h sound.h timezone.h vcardconverter.h + vcarddrag.h DESTINATION ${INCLUDE_INSTALL_DIR}/kabc COMPONENT Devel ) if (NOT KDEPIM_NO_KRESOURCES) install( FILES kabc_manager.desktop DESTINATION ${SERVICES_INSTALL_DIR}/kresources ) install( FILES addressbook.h addresslineedit.h distributionlistdialog.h format.h formatfactory.h resource.h resourceabc.h resourcecached.h stdaddressbook.h vcardformat.h DESTINATION ${INCLUDE_INSTALL_DIR}/kabc COMPONENT Devel ) endif (NOT KDEPIM_NO_KRESOURCES) diff --git a/kabc/tests/CMakeLists.txt b/kabc/tests/CMakeLists.txt index 3ebf4113b..0002df650 100644 --- a/kabc/tests/CMakeLists.txt +++ b/kabc/tests/CMakeLists.txt @@ -1,179 +1,187 @@ set( EXECUTABLE_OUTPUT_PATH ${CMAKE_CURRENT_BINARY_DIR} ) include_directories( ${CMAKE_SOURCE_DIR}/kabc ) ########### next target ############### set(addresstest_SRCS addresstest.cpp) kde4_add_unit_test(addresstest TESTNAME kabc-addresstest ${addresstest_SRCS}) target_link_libraries(addresstest ${KDE4_KDECORE_LIBS} kabc ${QT_QTTEST_LIBRARY} ${QT_QTGUI_LIBRARY}) ########### next target ############### set(addresseetest_SRCS addresseetest.cpp) kde4_add_unit_test(addresseetest TESTNAME kabc-addresseetest ${addresseetest_SRCS}) target_link_libraries(addresseetest ${KDE4_KDECORE_LIBS} kabc ${QT_QTTEST_LIBRARY} ${QT_QTGUI_LIBRARY}) ########### next target ############### set(geotest_SRCS geotest.cpp) kde4_add_unit_test(geotest TESTNAME kabc-geotest ${geotest_SRCS}) target_link_libraries(geotest ${KDE4_KDECORE_LIBS} kabc ${QT_QTTEST_LIBRARY} ${QT_QTGUI_LIBRARY}) ########### next target ############### set(keytest_SRCS keytest.cpp) kde4_add_unit_test(keytest TESTNAME kabc-keytest ${keytest_SRCS}) target_link_libraries(keytest ${KDE4_KDECORE_LIBS} kabc ${QT_QTTEST_LIBRARY} ${QT_QTGUI_LIBRARY}) ########### next target ############### set(phonenumbertest_SRCS phonenumbertest.cpp) kde4_add_unit_test(phonenumbertest TESTNAME kabc-phonenumbertest ${phonenumbertest_SRCS}) target_link_libraries(phonenumbertest ${KDE4_KDECORE_LIBS} kabc ${QT_QTTEST_LIBRARY} ${QT_QTGUI_LIBRARY}) ########### next target ############### set(picturetest_SRCS picturetest.cpp) kde4_add_unit_test(picturetest TESTNAME kabc-picturetest ${picturetest_SRCS}) target_link_libraries(picturetest ${KDE4_KDECORE_LIBS} kabc ${QT_QTTEST_LIBRARY} ${QT_QTGUI_LIBRARY}) ########### next target ############### set(secrecytest_SRCS secrecytest.cpp) kde4_add_unit_test(secrecytest TESTNAME kabc-secrecytest ${secrecytest_SRCS}) target_link_libraries(secrecytest ${KDE4_KDECORE_LIBS} kabc ${QT_QTTEST_LIBRARY} ${QT_QTGUI_LIBRARY}) ########### next target ############### set(soundtest_SRCS soundtest.cpp) kde4_add_unit_test(soundtest TESTNAME kabc-soundtest ${soundtest_SRCS}) target_link_libraries(soundtest ${KDE4_KDECORE_LIBS} kabc ${QT_QTTEST_LIBRARY} ${QT_QTGUI_LIBRARY}) ########### next target ############### set(timezonetest_SRCS timezonetest.cpp) kde4_add_unit_test(timezonetest TESTNAME kabc-timezonetest ${timezonetest_SRCS}) target_link_libraries(timezonetest ${KDE4_KDECORE_LIBS} kabc ${QT_QTTEST_LIBRARY} ${QT_QTGUI_LIBRARY}) ########### next target ############### if (NOT KDEPIM_NO_KRESOURCES) set(testlock_SRCS testlock.cpp) kde4_add_executable(testlock TEST ${testlock_SRCS}) target_link_libraries(testlock ${KDE4_KDECORE_LIBS} ${KDE4_KDEUI_LIBS} ${KDE4_KIO_LIBS} kabc ${QT_QTTEST_LIBRARY} ${QT_QTGUI_LIBRARY}) ########### next target ############### set(testkabc_SRCS testkabc.cpp) kde4_add_executable(testkabc TEST ${testkabc_SRCS}) target_link_libraries(testkabc ${KDE4_KDECORE_LIBS} kabc ${QT_QTTEST_LIBRARY} ${KDE4_KDEUI_LIBS}) ########### next target ############### set(testkabcdlg_SRCS testkabcdlg.cpp) kde4_add_executable(testkabcdlg TEST ${testkabcdlg_SRCS}) target_link_libraries(testkabcdlg ${KDE4_KDECORE_LIBS} kabc ${QT_QTTEST_LIBRARY} ${KDE4_KDEUI_LIBS}) ########### next target ############### if (UNIX) set(bigread_SRCS bigread.cpp) kde4_add_executable(bigread TEST ${bigread_SRCS}) target_link_libraries(bigread ${KDE4_KDECORE_LIBS} ${KDE4_KDEUI_LIBS} kabc kabc_file_core ) endif (UNIX) ########### next target ############### if (UNIX) set(bigwrite_SRCS bigwrite.cpp) kde4_add_executable(bigwrite TEST ${bigwrite_SRCS}) target_link_libraries(bigwrite ${KDE4_KDECORE_LIBS} ${KDE4_KDEUI_LIBS} kabc kabc_file_core ) endif (UNIX) endif (NOT KDEPIM_NO_KRESOURCES) ########### next target ############### #set(testaddresseelist_SRCS testaddresseelist.cpp) #kde4_add_unit_test(testaddresseelist TESTNAME kabc-testaddresseelist ${testaddresseelist_SRCS}) #target_link_libraries(testaddresseelist ${KDE4_KDECORE_LIBS} kabc ${QT_QTTEST_LIBRARY}) ########### next target ############### if (NOT KDEPIM_NO_KRESOURCES) set(kabcargl_SRCS kabcargl.cpp) kde4_add_executable(kabcargl TEST ${kabcargl_SRCS}) target_link_libraries(kabcargl ${KDE4_KDECORE_LIBS} kabc ${QT_QTTEST_LIBRARY} ${KDE4_KDEUI_LIBS} ) ########### next target ############### set(testaddresslineedit_SRCS testaddresslineedit.cpp) kde4_add_executable(testaddresslineedit TEST ${testaddresslineedit_SRCS}) target_link_libraries(testaddresslineedit ${KDE4_KDECORE_LIBS} kabc ${QT_QTTEST_LIBRARY} ${KDE4_KDEUI_LIBS}) endif (NOT KDEPIM_NO_KRESOURCES) ########### next target ############### set(contactgrouptest_SRCS contactgrouptest.cpp) kde4_add_unit_test(contactgrouptest TESTNAME kabc-contactgrouptest ${contactgrouptest_SRCS}) target_link_libraries(contactgrouptest ${KDE4_KDECORE_LIBS} kabc ${QT_QTTEST_LIBRARY}) + +########### next target ############### + +set(vcarddragtest_SRCS vcarddragtest.cpp) + +kde4_add_unit_test(vcarddragtest TESTNAME kabc-vcarddragtest ${vcarddragtest_SRCS}) + +target_link_libraries(vcarddragtest ${KDE4_KDECORE_LIBS} kabc ${QT_QTTEST_LIBRARY}) diff --git a/kabc/tests/vcarddragtest.cpp b/kabc/tests/vcarddragtest.cpp new file mode 100644 index 000000000..33b12317f --- /dev/null +++ b/kabc/tests/vcarddragtest.cpp @@ -0,0 +1,186 @@ +/* + This file is part of libkabc. + Copyright (C) 2010 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.net + Author: Kevin Krammer, krake@kdab.com + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + 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 + +#include "kabc/vcardconverter.h" +#include "kabc/vcarddrag.h" + +using namespace KABC; + +class VCardDragTest : public QObject +{ + Q_OBJECT + + public: + VCardDragTest(); + + private: + Addressee mAddressee1; + Addressee mAddressee2; + + private Q_SLOTS: + void testPopulate(); + void testCanDecode(); + void testFromMimeData(); +}; + +QTEST_KDEMAIN( VCardDragTest, NoGUI ) + +VCardDragTest::VCardDragTest() : QObject() +{ + mAddressee1.setGivenName( QLatin1String( "Kevin" ) ); + mAddressee1.setFamilyName( QLatin1String( "Krammer" ) ); + mAddressee1.insertEmail( QLatin1String( "kevin.krammer@gmx.at" ) ); + + mAddressee2.setGivenName( QLatin1String( "Tobias" ) ); + mAddressee2.setFamilyName( QLatin1String( "König" ) ); + mAddressee2.insertEmail( QLatin1String( "tokoe@kde.org" ) ); +} + +void VCardDragTest::testPopulate() +{ + VCardConverter converter; + const QByteArray vcard = converter.createVCard( mAddressee1 ); + QVERIFY( !vcard.isEmpty() ); + + QMimeData *data = new QMimeData(); + bool result = VCardDrag::populateMimeData( data, vcard ); + QVERIFY( result ); + QVERIFY( data->hasFormat( VCardDrag::mimeType() ) ); + QCOMPARE( data->data( VCardDrag::mimeType() ), vcard ); + delete data; + + data = new QMimeData(); + result = VCardDrag::populateMimeData( data, Addressee::List() << mAddressee1 ); + QVERIFY( result ); + QVERIFY( data->hasFormat( VCardDrag::mimeType() ) ); + QCOMPARE( data->data( VCardDrag::mimeType() ), vcard ); + delete data; + + const QByteArray vcards = converter.createVCards( Addressee::List() << mAddressee1 << mAddressee2 ); + data = new QMimeData(); + result = VCardDrag::populateMimeData( data, Addressee::List() << mAddressee1 << mAddressee2 ); + QVERIFY( result ); + QVERIFY( data->hasFormat( VCardDrag::mimeType() ) ); + QCOMPARE( data->data( VCardDrag::mimeType() ), vcards ); + delete data; + + data = new QMimeData(); + result = VCardDrag::populateMimeData( data, Addressee::List() ); + QVERIFY( !result ); + QVERIFY( !data->hasFormat( VCardDrag::mimeType() ) ); + delete data; +} + +void VCardDragTest::testCanDecode() +{ + VCardConverter converter; + const QByteArray vcard = converter.createVCard( mAddressee1 ); + QVERIFY( !vcard.isEmpty() ); + + QCOMPARE( Addressee::mimeType(), VCardDrag::mimeType() ); + + QMimeData *data = new QMimeData(); + data->setData( Addressee::mimeType(), vcard ); + QVERIFY( VCardDrag::canDecode( data ) ); + delete data; + + data = new QMimeData(); + data->setData( QLatin1String( "text/x-vcard" ), vcard ); + QVERIFY( VCardDrag::canDecode( data ) ); + delete data; + + data = new QMimeData(); + data->setData( QLatin1String( "application/octetstream" ), vcard ); + QVERIFY( !VCardDrag::canDecode( data ) ); + delete data; +} + +void VCardDragTest::testFromMimeData() +{ + VCardConverter converter; + const QByteArray vcard = converter.createVCard( mAddressee1 ); + QVERIFY( !vcard.isEmpty() ); + + QCOMPARE( Addressee::mimeType(), VCardDrag::mimeType() ); + + QByteArray content; + + QMimeData *data = new QMimeData(); + data->setData( Addressee::mimeType(), vcard ); + bool result = VCardDrag::fromMimeData( data, content ); + QVERIFY( result ); + QCOMPARE( content, vcard ); + delete data; + + data = new QMimeData(); + data->setData( QLatin1String( "text/x-vcard" ), vcard ); + result = VCardDrag::fromMimeData( data, content ); + QVERIFY( result ); + QCOMPARE( content, vcard ); + delete data; + + data = new QMimeData(); + data->setData( QLatin1String( "application/octetstream" ), vcard ); + result = VCardDrag::fromMimeData( data, content ); + QVERIFY( !result ); + delete data; + + const QByteArray vcards = converter.createVCards( Addressee::List() << mAddressee1 << mAddressee2 ); + QVERIFY( !vcards.isEmpty() ); + + Addressee::List addresseeList; + + data = new QMimeData(); + data->setData( Addressee::mimeType(), vcards ); + result = VCardDrag::fromMimeData( data, addresseeList ); + QVERIFY( result ); + QCOMPARE( addresseeList.count(), 2 ); + QCOMPARE( addresseeList[ 0 ], mAddressee1 ); + QCOMPARE( addresseeList[ 1 ], mAddressee2 ); + delete data; + + data = new QMimeData(); + data->setData( QLatin1String( "text/x-vcard" ), vcards ); + result = VCardDrag::fromMimeData( data, addresseeList ); + QVERIFY( result ); + QCOMPARE( addresseeList.count(), 2 ); + QCOMPARE( addresseeList[ 0 ], mAddressee1 ); + QCOMPARE( addresseeList[ 1 ], mAddressee2 ); + delete data; + + data = new QMimeData(); + data->setData( QLatin1String( "application/octetstream" ), vcards ); + result = VCardDrag::fromMimeData( data, addresseeList ); + QVERIFY( !result ); + delete data; + + data = new QMimeData(); + data->setData( Addressee::mimeType(), QByteArray() ); + result = VCardDrag::fromMimeData( data, addresseeList ); + QVERIFY( !result ); + delete data; +} + +#include "vcarddragtest.moc" + +// kate: space-indent on; indent-width 2; replace-tabs on; diff --git a/kabc/vcarddrag.cpp b/kabc/vcarddrag.cpp new file mode 100644 index 000000000..7a26b95e5 --- /dev/null +++ b/kabc/vcarddrag.cpp @@ -0,0 +1,99 @@ +/* + This file is part of libkabc. + + Copyright (c) 2002 Tobias Koenig + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + 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 "vcarddrag.h" + +#include "vcardconverter.h" + +#include + +#include + +using namespace KABC; + +static QString findCompatibleMimeType( const QMimeData *md ) +{ + // check the canonical MIME type first + if ( md->hasFormat( VCardDrag::mimeType() ) ) { + return VCardDrag::mimeType(); + } + + const QStringList mimeTypeOffers = md->formats(); + Q_FOREACH( const QString &mimeType, mimeTypeOffers ) { + const KMimeType::Ptr mimeTypePtr = KMimeType::mimeType( mimeType, KMimeType::ResolveAliases ); + if ( !mimeTypePtr.isNull() ) { + if ( mimeTypePtr->is( VCardDrag::mimeType() ) ) { + return mimeType; + } + } + } + + return QString(); +} + +QString VCardDrag::mimeType() +{ + return Addressee::mimeType(); +} + +bool VCardDrag::populateMimeData( QMimeData *md, const QByteArray &content ) +{ + md->setData( mimeType(), content ); + return true; +} + +bool VCardDrag::populateMimeData( QMimeData *md, const KABC::Addressee::List &addressees ) +{ + KABC::VCardConverter converter; + const QByteArray vcards = converter.createVCards( addressees ); + if ( !vcards.isEmpty() ) { + return populateMimeData( md, vcards ); + } else { + return false; + } +} + +bool VCardDrag::canDecode( const QMimeData *md ) +{ + return !findCompatibleMimeType( md ).isEmpty(); +} + +bool VCardDrag::fromMimeData( const QMimeData *md, QByteArray &content ) +{ + const QString mimeOffer = findCompatibleMimeType( md ); + if ( mimeOffer.isEmpty() ) { + return false; + } + content = md->data( mimeOffer ); + return !content.isEmpty(); +} + +bool VCardDrag::fromMimeData( const QMimeData *md, KABC::Addressee::List &addressees ) +{ + const QString mimeOffer = findCompatibleMimeType( md ); + if ( mimeOffer.isEmpty() ) { + return false; + } + addressees = KABC::VCardConverter().parseVCards( md->data( mimeOffer ) ); + return !addressees.isEmpty(); +} + +// kate: space-indent on; indent-width 2; replace-tabs on; diff --git a/kabc/vcarddrag.h b/kabc/vcarddrag.h new file mode 100644 index 000000000..e1af8b5f6 --- /dev/null +++ b/kabc/vcarddrag.h @@ -0,0 +1,109 @@ +/* + This file is part of libkabc. + + Copyright (c) 2002 Tobias Koenig + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + 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. +*/ + +#ifndef KABC_VCARDDRAG_H +#define KABC_VCARDDRAG_H + +#include "kabc_export.h" + +#include + +namespace KABC { + +/** + @brief Utility function for implementing drag&drop for vCards + + See the Qt drag'n'drop documentation. + + @since 4.5 +*/ +namespace VCardDrag +{ + /** + Mime-type of vCard. + + @see Addressee::mimeType() + + @return the MIME type used for vcards: @c text/directory + */ + KABC_EXPORT QString mimeType(); + + /** + Adds the vCard representation as data of the drag object. + + @param md the object to set the data on + @param content the vCard data to set + + @return Always @c true + */ + KABC_EXPORT bool populateMimeData( QMimeData *md, const QByteArray &content ); + + /** + Adds the vCard representation as data of the drag object. + + @param md the object to set the data on + @param addressees list of Addressee objects to serialize to vCard + + @return @c true if serializing of the given list worked, otherwise @c false + + @see VCardConverter::createVCards() + */ + KABC_EXPORT bool populateMimeData( QMimeData *md, const KABC::Addressee::List &addressees ); + + /** + Returns if drag&drop object can be decoded to vCard. + + @param md the object to check for vCard data + + @return @c true if the given data object contains a vCard MIME type, otherwise @c false + */ + KABC_EXPORT bool canDecode( const QMimeData *md ); + + /** + Decodes the drag&drop object to vCard component @p content. + + @param md the object to check for vCard data + @param content where to put the vCard data from @p md + + @return @c true if there was data for the vCard MIME type, otherwise @c false + + @see canDecode() + */ + KABC_EXPORT bool fromMimeData( const QMimeData *md, QByteArray &content ); + + /** + Decodes the MIME data @p md and puts the resulting vCard into @p addresseess. + + @param md the object to check for vCard data + @param addressees where to put the parsed vCards from @p md + + @return @c true if there was data for the vCard MIME type and it could be parsed successfully, + otherwise @c false + + @see canDecode() + */ + KABC_EXPORT bool fromMimeData( const QMimeData *md, KABC::Addressee::List &addressees ); +} + +} + +#endif // VCARDDRAG_H +// kate: space-indent on; indent-width 2; replace-tabs on;