File indexing completed on 2024-05-12 08:20:29
0001 // SPDX-FileCopyrightText: 2003 - 2010 Jesper K. Pedersen <blackie@kde.org> 0002 // SPDX-FileCopyrightText: 2023 Alexander Lohnau <alexander.lohnau@gmx.de> 0003 // 0004 // SPDX-License-Identifier: GPL-2.0-or-later 0005 0006 #include "UniqFilenameMapper.h" 0007 0008 #include <QFileInfo> 0009 0010 Utilities::UniqFilenameMapper::UniqFilenameMapper() 0011 { 0012 /* nop */ 0013 } 0014 0015 Utilities::UniqFilenameMapper::UniqFilenameMapper(const QString &target) 0016 : m_targetDirectory(target) 0017 { 0018 /* nop */ 0019 } 0020 0021 void Utilities::UniqFilenameMapper::reset() 0022 { 0023 m_uniqFiles.clear(); 0024 m_origToUniq.clear(); 0025 } 0026 0027 bool Utilities::UniqFilenameMapper::fileClashes(const QString &file) 0028 { 0029 return m_uniqFiles.contains(file) 0030 || (!m_targetDirectory.isNull() && QFileInfo::exists(file)); 0031 } 0032 0033 QString Utilities::UniqFilenameMapper::uniqNameFor(const DB::FileName &filename) 0034 { 0035 if (m_origToUniq.contains(filename)) 0036 return m_origToUniq[filename]; 0037 0038 const QString extension = QFileInfo(filename.absolute()).completeSuffix(); 0039 QString base = QFileInfo(filename.absolute()).baseName(); 0040 if (!m_targetDirectory.isNull()) { 0041 base = QString::fromUtf8("%1/%2").arg(m_targetDirectory, base); 0042 } 0043 0044 QString uniqFile; 0045 int i = 0; 0046 do { 0047 uniqFile = (i == 0) 0048 ? QString::fromUtf8("%1.%2").arg(base, extension) 0049 : QString::fromUtf8("%1-%2.%3").arg(base).arg(i).arg(extension); 0050 ++i; 0051 } while (fileClashes(uniqFile)); 0052 0053 m_origToUniq.insert(filename, uniqFile); 0054 m_uniqFiles.insert(uniqFile); 0055 return uniqFile; 0056 } 0057 // vi:expandtab:tabstop=4 shiftwidth=4: