File indexing completed on 2024-04-28 03:55:13
0001 /* -*- c++ -*- 0002 SPDX-FileCopyrightText: 2000 Waldo Bastian <bastian@kde.org> 0003 0004 SPDX-License-Identifier: BSD-2-Clause 0005 */ 0006 0007 #include "krecentdirs.h" 0008 #include <KConfig> 0009 #include <KConfigGroup> 0010 #include <KSharedConfig> 0011 #include <QDebug> 0012 0013 static constexpr int s_maxDirHistory = 3; 0014 0015 static KConfigGroup recentdirs_readList(QString &key, QStringList &result) 0016 { 0017 KConfigGroup cg(KSharedConfig::openConfig(), QStringLiteral("Recent Dirs")); 0018 if ((key.length() < 2) || (key[0] != QLatin1Char(':'))) { 0019 key = QStringLiteral(":default"); 0020 } 0021 if (key[1] == QLatin1Char(':')) { 0022 } else { 0023 key.remove(0, 1); 0024 } 0025 0026 result = cg.readPathEntry(key, QStringList()); 0027 if (result.isEmpty()) { 0028 result.append(QStandardPaths::writableLocation(QStandardPaths::DocumentsLocation)); 0029 } 0030 return cg; 0031 } 0032 0033 QStringList KRecentDirs::list(const QString &fileClass) 0034 { 0035 QString key = fileClass; 0036 QStringList result; 0037 recentdirs_readList(key, result).sync(); 0038 return result; 0039 } 0040 0041 QString KRecentDirs::dir(const QString &fileClass) 0042 { 0043 const QStringList result = list(fileClass); 0044 return result[0]; 0045 } 0046 0047 void KRecentDirs::add(const QString &fileClass, const QString &directory) 0048 { 0049 QString key = fileClass; 0050 QStringList result; 0051 KConfigGroup config = recentdirs_readList(key, result); 0052 // make sure the dir is first in history 0053 result.removeAll(directory); 0054 result.prepend(directory); 0055 if (result.size() > s_maxDirHistory) { 0056 result.erase(result.begin() + s_maxDirHistory, result.end()); 0057 } 0058 0059 config.writePathEntry(key, result); 0060 config.sync(); 0061 }