1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123
|
/*!
@file
@author Albert Semenov
@date 08/2010
*/
#include "Precompiled.h"
#include "RecentFilesManager.h"
#include "SettingsManager.h"
#include "FileSystemInfo/FileSystemInfo.h"
template <> tools::RecentFilesManager* MyGUI::Singleton<tools::RecentFilesManager>::msInstance = nullptr;
template <> const char* MyGUI::Singleton<tools::RecentFilesManager>::mClassTypeName = "RecentFilesManager";
namespace tools
{
RecentFilesManager::RecentFilesManager() :
mMaxRecentFolders(0),
mMaxRecentFiles(0),
mMaxRecentProjects(0)
{
}
RecentFilesManager::~RecentFilesManager()
{
}
void RecentFilesManager::initialise()
{
if (!SettingsManager::getInstance().tryGetValue<size_t>("Files/MaxRecentFolders", mMaxRecentFolders))
mMaxRecentFolders = 8;
if (!SettingsManager::getInstance().tryGetValue<size_t>("Files/MaxRecentFiles", mMaxRecentFiles))
mMaxRecentFiles = 8;
if (!SettingsManager::getInstance().tryGetValue<size_t>("Files/MaxRecentProjects", mMaxRecentProjects))
mMaxRecentProjects = 8;
mRecentFolder = SettingsManager::getInstance().getValue("Files/RecentFolder");
mRecentFolders = SettingsManager::getInstance().getValueList<MyGUI::UString>("Files/RecentFolder.List");
mRecentFiles = SettingsManager::getInstance().getValueList<MyGUI::UString>("Files/RecentFile.List");
mRecentProjects = SettingsManager::getInstance().getValueList<MyGUI::UString>("Files/RecentProject.List");
checkArray(mRecentFolders, mMaxRecentFolders);
checkArray(mRecentFiles, mMaxRecentFiles);
checkArray(mRecentProjects, mMaxRecentProjects);
}
void RecentFilesManager::shutdown()
{
SettingsManager::getInstance().setValue("Files/RecentFolder", mRecentFolder);
SettingsManager::getInstance().setValueList<MyGUI::UString>("Files/RecentFolder.List", mRecentFolders);
SettingsManager::getInstance().setValueList<MyGUI::UString>("Files/RecentFile.List", mRecentFiles);
SettingsManager::getInstance().setValueList<MyGUI::UString>("Files/RecentProject.List", mRecentProjects);
}
void RecentFilesManager::addRecentFolder(const MyGUI::UString& _folder)
{
MyGUI::UString folder(_folder);
if (_folder.empty())
folder = MyGUI::UString(common::getSystemCurrentFolder());
mRecentFolders.insert(mRecentFolders.begin(), folder);
checkArray(mRecentFolders, mMaxRecentFolders);
}
const RecentFilesManager::VectorUString& RecentFilesManager::getRecentFolders() const
{
return mRecentFolders;
}
const MyGUI::UString& RecentFilesManager::getRecentFolder() const
{
return mRecentFolder;
}
void RecentFilesManager::setRecentFolder(const MyGUI::UString& _value)
{
mRecentFolder = _value;
addRecentFolder(mRecentFolder);
}
void RecentFilesManager::checkArray(VectorUString& _array, size_t _maxElements)
{
for (size_t index = 0; index < _array.size(); ++ index)
_array.erase(std::remove(_array.begin() + index + 1, _array.end(), _array[index]), _array.end());
while (_array.size() > _maxElements)
_array.pop_back();
}
void RecentFilesManager::addRecentFile(const MyGUI::UString& _fileName)
{
mRecentFiles.insert(mRecentFiles.begin(), _fileName);
checkArray(mRecentFiles, mMaxRecentFiles);
SettingsManager::getInstance().setValueList<MyGUI::UString>("Files/RecentFile.List", mRecentFiles);
}
const RecentFilesManager::VectorUString& RecentFilesManager::getRecentFiles() const
{
return mRecentFiles;
}
void RecentFilesManager::addRecentProject(const MyGUI::UString& _fileName)
{
mRecentProjects.insert(mRecentProjects.begin(), _fileName);
checkArray(mRecentProjects, mMaxRecentProjects);
SettingsManager::getInstance().setValueList<MyGUI::UString>("Files/RecentProject.List", mRecentProjects);
}
const RecentFilesManager::VectorUString& RecentFilesManager::getRecentProjects() const
{
return mRecentProjects;
}
}
|