96 lines
1.9 KiB
C++
96 lines
1.9 KiB
C++
// AppState.h
|
|
|
|
#ifndef __APP_STATE_H
|
|
#define __APP_STATE_H
|
|
|
|
#include "../../../Windows/Synchronization.h"
|
|
|
|
#include "ViewSettings.h"
|
|
|
|
class CFastFolders
|
|
{
|
|
NWindows::NSynchronization::CCriticalSection _criticalSection;
|
|
public:
|
|
UStringVector Strings;
|
|
void SetString(unsigned index, const UString &s)
|
|
{
|
|
NWindows::NSynchronization::CCriticalSectionLock lock(_criticalSection);
|
|
while (Strings.Size() <= index)
|
|
Strings.AddNew();
|
|
Strings[index] = s;
|
|
}
|
|
UString GetString(unsigned index)
|
|
{
|
|
NWindows::NSynchronization::CCriticalSectionLock lock(_criticalSection);
|
|
if (index >= Strings.Size())
|
|
return UString();
|
|
return Strings[index];
|
|
}
|
|
void Save()
|
|
{
|
|
NWindows::NSynchronization::CCriticalSectionLock lock(_criticalSection);
|
|
SaveFastFolders(Strings);
|
|
}
|
|
void Read()
|
|
{
|
|
NWindows::NSynchronization::CCriticalSectionLock lock(_criticalSection);
|
|
ReadFastFolders(Strings);
|
|
}
|
|
};
|
|
|
|
class CFolderHistory
|
|
{
|
|
NWindows::NSynchronization::CCriticalSection _criticalSection;
|
|
UStringVector Strings;
|
|
|
|
void Normalize();
|
|
|
|
public:
|
|
|
|
void GetList(UStringVector &foldersHistory)
|
|
{
|
|
NWindows::NSynchronization::CCriticalSectionLock lock(_criticalSection);
|
|
foldersHistory = Strings;
|
|
}
|
|
|
|
void AddString(const UString &s);
|
|
|
|
void RemoveAll()
|
|
{
|
|
NWindows::NSynchronization::CCriticalSectionLock lock(_criticalSection);
|
|
Strings.Clear();
|
|
}
|
|
|
|
void Save()
|
|
{
|
|
NWindows::NSynchronization::CCriticalSectionLock lock(_criticalSection);
|
|
SaveFolderHistory(Strings);
|
|
}
|
|
|
|
void Read()
|
|
{
|
|
NWindows::NSynchronization::CCriticalSectionLock lock(_criticalSection);
|
|
ReadFolderHistory(Strings);
|
|
Normalize();
|
|
}
|
|
};
|
|
|
|
struct CAppState
|
|
{
|
|
CFastFolders FastFolders;
|
|
CFolderHistory FolderHistory;
|
|
|
|
void Save()
|
|
{
|
|
FastFolders.Save();
|
|
FolderHistory.Save();
|
|
}
|
|
void Read()
|
|
{
|
|
FastFolders.Read();
|
|
FolderHistory.Read();
|
|
}
|
|
};
|
|
|
|
#endif
|