krecentdirs.cpp00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #include <krecentdirs.h>
00029 #include <ksimpleconfig.h>
00030 #include <kstandarddirs.h>
00031 #include <kglobalsettings.h>
00032
00033 #define MAX_DIR_HISTORY 3
00034
00035 static void recentdirs_done(KConfig *config)
00036 {
00037 if (config == KGlobal::config())
00038 {
00039 config->sync();
00040 }
00041 else
00042 {
00043 delete config;
00044 }
00045 }
00046
00047 static KConfig *recentdirs_readList(QString &key, QStringList &result, bool readOnly)
00048 {
00049 KConfig *config;
00050 if ((key.length() < 2) || (key[0] != ':'))
00051 key = ":default";
00052 if (key[1] == ':')
00053 {
00054 key = key.mid(2);
00055 config = new KSimpleConfig(QString::fromLatin1("krecentdirsrc"), readOnly);
00056 }
00057 else
00058 {
00059 key = key.mid(1);
00060 config = KGlobal::config();
00061 config->setGroup(QString::fromLatin1("Recent Dirs"));
00062 }
00063
00064 result=config->readPathListEntry(key);
00065 if (result.isEmpty())
00066 {
00067 result.append(KGlobalSettings::documentPath());
00068 }
00069 return config;
00070 }
00071
00072 QStringList KRecentDirs::list(const QString &fileClass)
00073 {
00074 QString key = fileClass;
00075 QStringList result;
00076 recentdirs_done(recentdirs_readList(key, result, true));
00077 return result;
00078 }
00079
00080 QString KRecentDirs::dir(const QString &fileClass)
00081 {
00082 QStringList result = list(fileClass);
00083 return result[0];
00084 }
00085
00086 void KRecentDirs::add(const QString &fileClass, const QString &directory)
00087 {
00088 QString key = fileClass;
00089 QStringList result;
00090 KConfig *config = recentdirs_readList(key, result, false);
00091
00092 result.remove(directory);
00093 result.prepend(directory);
00094 while(result.count() > MAX_DIR_HISTORY)
00095 result.remove(result.fromLast());
00096 config->writePathEntry(key, result);
00097 recentdirs_done(config);
00098 }
00099
|