From 61b9d5f646faa5bd84391318f6440bee6cbefcd8 Mon Sep 17 00:00:00 2001 From: alwin Date: Mon, 07 Mar 2005 14:37:57 +0000 Subject: when copying a file to another storage it checks if the target-dir (eg /Documents//) exists and create it otherwise. --- (limited to 'library') diff --git a/library/lnkproperties.cpp b/library/lnkproperties.cpp index f0f0bba..f05f398 100644 --- a/library/lnkproperties.cpp +++ b/library/lnkproperties.cpp @@ -44,6 +44,7 @@ #include #include #include +#include #include #include #include @@ -247,6 +248,39 @@ void LnkProperties::beamLnk() ir.send( doc, doc.comment() ); } +static bool createMimedir(const QString&base,const QString&mimetype) +{ + int pos = 0; + int stage = 0; + if (base.length()==0) return FALSE; + QString _tname = base+"/Documents"; + QDir _dir(_tname+"/"+mimetype); + if (_dir.exists()) return TRUE; + pos = mimetype.find("/"); + _dir.setPath(_tname); + while (stage<2) { + if (!_dir.exists()) { + if (!_dir.mkdir(_tname)) { + qDebug( QString("Creation of dir %1 failed\n").arg(_tname)); + return FALSE; + } + } + switch(stage) { + case 0: + _tname+="/"+mimetype.left(pos); + break; + case 1: + _tname+="/"+mimetype.right(pos-1); + break; + default: + break; + } + _dir.setPath(_tname); + ++stage; + } + return TRUE; +} + bool LnkProperties::copyFile( DocLnk &newdoc ) { const char *linkExtn = ".desktop"; @@ -258,8 +292,12 @@ bool LnkProperties::copyFile( DocLnk &newdoc ) QString safename = newdoc.name(); safename.replace(QRegExp("/"),"_"); - QString fn = locations[ d->locationCombo->currentItem() ] - + "/Documents/" + newdoc.type() + "/" + safename; + QString fn = locations[ d->locationCombo->currentItem() ] + + "/Documents/" + newdoc.type(); + if (!createMimedir(locations[ d->locationCombo->currentItem() ],newdoc.type())) { + return FALSE; + } + fn+="/"+safename; if ( QFile::exists(fn + fileExtn) || QFile::exists(fn + linkExtn) ) { int n=1; QString nn = fn + "_" + QString::number(n); -- cgit v0.9.0.2