author | alwin <alwin> | 2005-03-07 14:37:57 (UTC) |
---|---|---|
committer | alwin <alwin> | 2005-03-07 14:37:57 (UTC) |
commit | 61b9d5f646faa5bd84391318f6440bee6cbefcd8 (patch) (unidiff) | |
tree | b05eba6d4f33dd501c8fe6af0579567de7f659ec /library/lnkproperties.cpp | |
parent | 9ac0dc3c7b4e56f38c3cefce2e5699078aa3a357 (diff) | |
download | opie-61b9d5f646faa5bd84391318f6440bee6cbefcd8.zip opie-61b9d5f646faa5bd84391318f6440bee6cbefcd8.tar.gz opie-61b9d5f646faa5bd84391318f6440bee6cbefcd8.tar.bz2 |
when copying a file to another storage it checks if the target-dir
(eg <storage>/Documents/<mime>/<mimesub>) exists and create it otherwise.
-rw-r--r-- | library/lnkproperties.cpp | 42 |
1 files changed, 40 insertions, 2 deletions
diff --git a/library/lnkproperties.cpp b/library/lnkproperties.cpp index f0f0bba..f05f398 100644 --- a/library/lnkproperties.cpp +++ b/library/lnkproperties.cpp | |||
@@ -41,12 +41,13 @@ | |||
41 | #include <qpushbutton.h> | 41 | #include <qpushbutton.h> |
42 | #include <qgroupbox.h> | 42 | #include <qgroupbox.h> |
43 | #include <qcheckbox.h> | 43 | #include <qcheckbox.h> |
44 | #include <qlabel.h> | 44 | #include <qlabel.h> |
45 | #include <qlayout.h> | 45 | #include <qlayout.h> |
46 | #include <qfile.h> | 46 | #include <qfile.h> |
47 | #include <qdir.h> | ||
47 | #include <qfileinfo.h> | 48 | #include <qfileinfo.h> |
48 | #include <qmessagebox.h> | 49 | #include <qmessagebox.h> |
49 | #include <qsize.h> | 50 | #include <qsize.h> |
50 | #include <qcombobox.h> | 51 | #include <qcombobox.h> |
51 | #include <qregexp.h> | 52 | #include <qregexp.h> |
52 | #include <qbuttongroup.h> | 53 | #include <qbuttongroup.h> |
@@ -244,25 +245,62 @@ void LnkProperties::beamLnk() | |||
244 | DocLnk doc( *((DocLnk *)lnk) ); | 245 | DocLnk doc( *((DocLnk *)lnk) ); |
245 | doc.setName(d->docname->text()); | 246 | doc.setName(d->docname->text()); |
246 | reject(); | 247 | reject(); |
247 | ir.send( doc, doc.comment() ); | 248 | ir.send( doc, doc.comment() ); |
248 | } | 249 | } |
249 | 250 | ||
251 | static bool createMimedir(const QString&base,const QString&mimetype) | ||
252 | { | ||
253 | int pos = 0; | ||
254 | int stage = 0; | ||
255 | if (base.length()==0) return FALSE; | ||
256 | QString _tname = base+"/Documents"; | ||
257 | QDir _dir(_tname+"/"+mimetype); | ||
258 | if (_dir.exists()) return TRUE; | ||
259 | pos = mimetype.find("/"); | ||
260 | _dir.setPath(_tname); | ||
261 | while (stage<2) { | ||
262 | if (!_dir.exists()) { | ||
263 | if (!_dir.mkdir(_tname)) { | ||
264 | qDebug( QString("Creation of dir %1 failed\n").arg(_tname)); | ||
265 | return FALSE; | ||
266 | } | ||
267 | } | ||
268 | switch(stage) { | ||
269 | case 0: | ||
270 | _tname+="/"+mimetype.left(pos); | ||
271 | break; | ||
272 | case 1: | ||
273 | _tname+="/"+mimetype.right(pos-1); | ||
274 | break; | ||
275 | default: | ||
276 | break; | ||
277 | } | ||
278 | _dir.setPath(_tname); | ||
279 | ++stage; | ||
280 | } | ||
281 | return TRUE; | ||
282 | } | ||
283 | |||
250 | bool LnkProperties::copyFile( DocLnk &newdoc ) | 284 | bool LnkProperties::copyFile( DocLnk &newdoc ) |
251 | { | 285 | { |
252 | const char *linkExtn = ".desktop"; | 286 | const char *linkExtn = ".desktop"; |
253 | QString fileExtn; | 287 | QString fileExtn; |
254 | int extnPos = lnk->file().findRev( '.' ); | 288 | int extnPos = lnk->file().findRev( '.' ); |
255 | if ( extnPos > 0 ) | 289 | if ( extnPos > 0 ) |
256 | fileExtn = lnk->file().mid( extnPos ); | 290 | fileExtn = lnk->file().mid( extnPos ); |
257 | 291 | ||
258 | QString safename = newdoc.name(); | 292 | QString safename = newdoc.name(); |
259 | safename.replace(QRegExp("/"),"_"); | 293 | safename.replace(QRegExp("/"),"_"); |
260 | 294 | ||
261 | QString fn = locations[ d->locationCombo->currentItem() ] | 295 | QString fn = locations[ d->locationCombo->currentItem() ] |
262 | + "/Documents/" + newdoc.type() + "/" + safename; | 296 | + "/Documents/" + newdoc.type(); |
297 | if (!createMimedir(locations[ d->locationCombo->currentItem() ],newdoc.type())) { | ||
298 | return FALSE; | ||
299 | } | ||
300 | fn+="/"+safename; | ||
263 | if ( QFile::exists(fn + fileExtn) || QFile::exists(fn + linkExtn) ) { | 301 | if ( QFile::exists(fn + fileExtn) || QFile::exists(fn + linkExtn) ) { |
264 | int n=1; | 302 | int n=1; |
265 | QString nn = fn + "_" + QString::number(n); | 303 | QString nn = fn + "_" + QString::number(n); |
266 | while ( QFile::exists(nn+fileExtn) || QFile::exists(nn+linkExtn) ) { | 304 | while ( QFile::exists(nn+fileExtn) || QFile::exists(nn+linkExtn) ) { |
267 | n++; | 305 | n++; |
268 | nn = fn + "_" + QString::number(n); | 306 | nn = fn + "_" + QString::number(n); |