tdeio/tdefile
tderecentdirs.cpp
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 <tderecentdirs.h>
00029 #include <ksimpleconfig.h>
00030 #include <kstandarddirs.h>
00031 #include <tdeglobalsettings.h>
00032
00033 #define MAX_DIR_HISTORY 3
00034
00035 static void recentdirs_done(TDEConfig *config)
00036 {
00037 if (config == TDEGlobal::config())
00038 {
00039 config->sync();
00040 }
00041 else
00042 {
00043 delete config;
00044 }
00045 }
00046
00047 static TDEConfig *recentdirs_readList(TQString &key, TQStringList &result, bool readOnly)
00048 {
00049 TDEConfig *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(TQString::fromLatin1("tderecentdirsrc"), readOnly);
00056 }
00057 else
00058 {
00059 key = key.mid(1);
00060 config = TDEGlobal::config();
00061 config->setGroup(TQString::fromLatin1("Recent Dirs"));
00062 }
00063
00064 result=config->readPathListEntry(key);
00065 if (result.isEmpty())
00066 {
00067 result.append(TDEGlobalSettings::documentPath());
00068 }
00069 return config;
00070 }
00071
00072 TQStringList TDERecentDirs::list(const TQString &fileClass)
00073 {
00074 TQString key = fileClass;
00075 TQStringList result;
00076 recentdirs_done(recentdirs_readList(key, result, true));
00077 return result;
00078 }
00079
00080 TQString TDERecentDirs::dir(const TQString &fileClass)
00081 {
00082 TQStringList result = list(fileClass);
00083 return result[0];
00084 }
00085
00086 void TDERecentDirs::add(const TQString &fileClass, const TQString &directory)
00087 {
00088 TQString key = fileClass;
00089 TQStringList result;
00090 TDEConfig *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