Git commit 509c99171995c78b7aae39ef73cf9d4209d704fd by Gr=C3=A9gory Oestrei= cher. Committed on 31/08/2014 at 21:41. Pushed by goestreicher into branch 'KDE/4.14'. Generate a unique ID for file names Based on a review submitted by Dan Vratil. BUG: 327623 FIXED-IN: 4.14.1 M +11 -12 resources/dav/common/davutils.cpp M +5 -0 resources/dav/common/davutils.h http://commits.kde.org/kdepim-runtime/509c99171995c78b7aae39ef73cf9d4209d70= 4fd diff --git a/resources/dav/common/davutils.cpp b/resources/dav/common/davut= ils.cpp index 06eb77c..560a076 100644 --- a/resources/dav/common/davutils.cpp +++ b/resources/dav/common/davutils.cpp @@ -223,6 +223,15 @@ DavUtils::Protocol DavUtils::protocolByTranslatedName(= const QString &name ) return protocol; } = +QString DavUtils::createUniqueId() +{ + qint64 time =3D QDateTime::currentMSecsSinceEpoch() / 1000; + int r =3D qrand() % 1000; + QString id =3D QLatin1String( "R" ) + QString::number( r ); + QString uid =3D QString::number( time ) + QLatin1String( "." ) + id; + return uid; +} + DavItem DavUtils::createDavItem( const Akonadi::Item &item, const Akonadi:= :Collection &collection ) { QByteArray rawData; @@ -233,12 +242,7 @@ DavItem DavUtils::createDavItem( const Akonadi::Item &= item, const Akonadi::Colle = if ( item.hasPayload() ) { const KABC::Addressee contact =3D item.payload(); - - const QString fileName =3D contact.uid(); - if ( fileName.isEmpty() ) { - kError() << "Invalid contact uid"; - return davItem; - } + const QString fileName =3D createUniqueId(); = url =3D KUrl( basePath + fileName + QLatin1String(".vcf") ); = @@ -256,12 +260,7 @@ DavItem DavUtils::createDavItem( const Akonadi::Item &= item, const Akonadi::Colle rawData =3D converter.exportVCard( contact, KABC::VCardConverter::v3_0= ); } else if ( item.hasPayload() ) { const IncidencePtr ptr =3D item.payload(); - - const QString fileName =3D ptr->instanceIdentifier(); - if ( fileName.isEmpty() ) { - kError() << "Invalid incidence uid"; - return davItem; - } + const QString fileName =3D createUniqueId(); = url =3D KUrl( basePath + fileName + QLatin1String(".ics") ); mimeType =3D QLatin1String("text/calendar"); diff --git a/resources/dav/common/davutils.h b/resources/dav/common/davutil= s.h index cdf9751..ce4c25f 100644 --- a/resources/dav/common/davutils.h +++ b/resources/dav/common/davutils.h @@ -156,6 +156,11 @@ namespace DavUtils Privileges parsePrivilege( const QDomElement &element ); = /** + * Creates a unique identifier that can be used as a file name to upload= the dav item + */ + QString createUniqueId(); + + /** * Creates a new DavItem from the Akonadi::Item @p item. * * The returned item will have no payload (DavItem::data() will return a= n empty