00001
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