diff -r 6aeb7a756187 -r 3c88a81ff781 utilities/downloadmanager/src/storageutility.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/utilities/downloadmanager/src/storageutility.cpp Fri Oct 15 17:30:59 2010 -0400 @@ -0,0 +1,86 @@ +/** + This file is part of CWRT package ** + + Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). ** + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU (Lesser) General Public License as + published by the Free Software Foundation, version 2.1 of the License. + This program 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 + (Lesser) General Public License for more details. You should have + received a copy of the GNU (Lesser) General Public License along + with this program. If not, see . +*/ + +#include "storageutility.h" +#include +#include +#include + + +int StorageUtility::generateUniqueFileName(const QString &fileName, const QString &tempPath, + const QString& permPath, QString &outFileName) +{ + int uniqueExt = 0; + QString orgFilename = fileName; + QFileInfo fileinfo(tempPath, fileName); + QFileInfo fileinfoPerm(permPath, fileName); + + while(true) + { + uniqueExt++; + // check if file exists + if (fileinfo.exists() || fileinfoPerm.exists()) { + // a file with this name already exists in either temporary + // or permanent download location + QString tempFileName = orgFilename; + QString ext = fileinfo.suffix(); + QString fileNoExt = tempFileName; + if (!ext.isEmpty()) + fileNoExt = tempFileName.mid(0, tempFileName.length()-ext.length()-1); + + // add index to filename + QString strExt; + strExt.setNum(uniqueExt); + tempFileName = fileNoExt+"("+strExt+")"; + if (!ext.isEmpty()) + tempFileName = tempFileName+"."+ext; + + // set fileinfo to check again if any file with + // this new filename already exists + fileinfo.setFile(tempPath, tempFileName); + fileinfoPerm.setFile(permPath, tempFileName); + } + else { + // this is a unique filename + outFileName = fileinfo.fileName(); + return 0; + } + } + return -1; +} + +void StorageUtility::validateFileName(const QString &fileName, QString &outFileName) +{ + QString orgFileName = fileName; + // Remove invalid filename characters + orgFileName.replace( QRegExp("[?:*\"\\/<>|]"), "" ); + + // Check if filename is empty + outFileName = orgFileName.trimmed(); + if (outFileName.isEmpty()) + outFileName = FILENAME_UNKNOWN; +} + +QString StorageUtility::createTemporaryPath(const QString& clientName) +{ + /* create "downloads" folder : .//downloads */ + QString orgClientName = clientName; + orgClientName.replace( QRegExp("[\\\\/:\\*\\?\"<>\\|]+"), "_" ); + QDir currentDir(QDir::current()); + QString tempPath = currentDir.absolutePath() + "/" + orgClientName + "/" + QObject::tr(TEMPORARY_FOLDER); + currentDir.mkpath(tempPath); + return tempPath; +}