xref: /aosp_15_r20/external/lzma/CPP/7zip/UI/FileManager/AppState.h (revision f6dc9357d832569d4d1f5d24eacdb3935a1ae8e6)
1*f6dc9357SAndroid Build Coastguard Worker // AppState.h
2*f6dc9357SAndroid Build Coastguard Worker 
3*f6dc9357SAndroid Build Coastguard Worker #ifndef ZIP7_INC_APP_STATE_H
4*f6dc9357SAndroid Build Coastguard Worker #define ZIP7_INC_APP_STATE_H
5*f6dc9357SAndroid Build Coastguard Worker 
6*f6dc9357SAndroid Build Coastguard Worker #include "../../../Windows/Synchronization.h"
7*f6dc9357SAndroid Build Coastguard Worker 
8*f6dc9357SAndroid Build Coastguard Worker #include "ViewSettings.h"
9*f6dc9357SAndroid Build Coastguard Worker 
10*f6dc9357SAndroid Build Coastguard Worker class CFastFolders
11*f6dc9357SAndroid Build Coastguard Worker {
12*f6dc9357SAndroid Build Coastguard Worker   NWindows::NSynchronization::CCriticalSection _criticalSection;
13*f6dc9357SAndroid Build Coastguard Worker public:
14*f6dc9357SAndroid Build Coastguard Worker   UStringVector Strings;
SetString(unsigned index,const UString & s)15*f6dc9357SAndroid Build Coastguard Worker   void SetString(unsigned index, const UString &s)
16*f6dc9357SAndroid Build Coastguard Worker   {
17*f6dc9357SAndroid Build Coastguard Worker     NWindows::NSynchronization::CCriticalSectionLock lock(_criticalSection);
18*f6dc9357SAndroid Build Coastguard Worker     while (Strings.Size() <= index)
19*f6dc9357SAndroid Build Coastguard Worker       Strings.AddNew();
20*f6dc9357SAndroid Build Coastguard Worker     Strings[index] = s;
21*f6dc9357SAndroid Build Coastguard Worker   }
GetString(unsigned index)22*f6dc9357SAndroid Build Coastguard Worker   UString GetString(unsigned index)
23*f6dc9357SAndroid Build Coastguard Worker   {
24*f6dc9357SAndroid Build Coastguard Worker     NWindows::NSynchronization::CCriticalSectionLock lock(_criticalSection);
25*f6dc9357SAndroid Build Coastguard Worker     if (index >= Strings.Size())
26*f6dc9357SAndroid Build Coastguard Worker       return UString();
27*f6dc9357SAndroid Build Coastguard Worker     return Strings[index];
28*f6dc9357SAndroid Build Coastguard Worker   }
Save()29*f6dc9357SAndroid Build Coastguard Worker   void Save()
30*f6dc9357SAndroid Build Coastguard Worker   {
31*f6dc9357SAndroid Build Coastguard Worker     NWindows::NSynchronization::CCriticalSectionLock lock(_criticalSection);
32*f6dc9357SAndroid Build Coastguard Worker     SaveFastFolders(Strings);
33*f6dc9357SAndroid Build Coastguard Worker   }
Read()34*f6dc9357SAndroid Build Coastguard Worker   void Read()
35*f6dc9357SAndroid Build Coastguard Worker   {
36*f6dc9357SAndroid Build Coastguard Worker     NWindows::NSynchronization::CCriticalSectionLock lock(_criticalSection);
37*f6dc9357SAndroid Build Coastguard Worker     ReadFastFolders(Strings);
38*f6dc9357SAndroid Build Coastguard Worker   }
39*f6dc9357SAndroid Build Coastguard Worker };
40*f6dc9357SAndroid Build Coastguard Worker 
41*f6dc9357SAndroid Build Coastguard Worker class CFolderHistory
42*f6dc9357SAndroid Build Coastguard Worker {
43*f6dc9357SAndroid Build Coastguard Worker   NWindows::NSynchronization::CCriticalSection _criticalSection;
44*f6dc9357SAndroid Build Coastguard Worker   UStringVector Strings;
45*f6dc9357SAndroid Build Coastguard Worker 
46*f6dc9357SAndroid Build Coastguard Worker   void Normalize();
47*f6dc9357SAndroid Build Coastguard Worker 
48*f6dc9357SAndroid Build Coastguard Worker public:
49*f6dc9357SAndroid Build Coastguard Worker 
GetList(UStringVector & foldersHistory)50*f6dc9357SAndroid Build Coastguard Worker   void GetList(UStringVector &foldersHistory)
51*f6dc9357SAndroid Build Coastguard Worker   {
52*f6dc9357SAndroid Build Coastguard Worker     NWindows::NSynchronization::CCriticalSectionLock lock(_criticalSection);
53*f6dc9357SAndroid Build Coastguard Worker     foldersHistory = Strings;
54*f6dc9357SAndroid Build Coastguard Worker   }
55*f6dc9357SAndroid Build Coastguard Worker 
56*f6dc9357SAndroid Build Coastguard Worker   void AddString(const UString &s);
57*f6dc9357SAndroid Build Coastguard Worker 
RemoveAll()58*f6dc9357SAndroid Build Coastguard Worker   void RemoveAll()
59*f6dc9357SAndroid Build Coastguard Worker   {
60*f6dc9357SAndroid Build Coastguard Worker     NWindows::NSynchronization::CCriticalSectionLock lock(_criticalSection);
61*f6dc9357SAndroid Build Coastguard Worker     Strings.Clear();
62*f6dc9357SAndroid Build Coastguard Worker   }
63*f6dc9357SAndroid Build Coastguard Worker 
Save()64*f6dc9357SAndroid Build Coastguard Worker   void Save()
65*f6dc9357SAndroid Build Coastguard Worker   {
66*f6dc9357SAndroid Build Coastguard Worker     NWindows::NSynchronization::CCriticalSectionLock lock(_criticalSection);
67*f6dc9357SAndroid Build Coastguard Worker     SaveFolderHistory(Strings);
68*f6dc9357SAndroid Build Coastguard Worker   }
69*f6dc9357SAndroid Build Coastguard Worker 
Read()70*f6dc9357SAndroid Build Coastguard Worker   void Read()
71*f6dc9357SAndroid Build Coastguard Worker   {
72*f6dc9357SAndroid Build Coastguard Worker     NWindows::NSynchronization::CCriticalSectionLock lock(_criticalSection);
73*f6dc9357SAndroid Build Coastguard Worker     ReadFolderHistory(Strings);
74*f6dc9357SAndroid Build Coastguard Worker     Normalize();
75*f6dc9357SAndroid Build Coastguard Worker   }
76*f6dc9357SAndroid Build Coastguard Worker };
77*f6dc9357SAndroid Build Coastguard Worker 
78*f6dc9357SAndroid Build Coastguard Worker struct CAppState
79*f6dc9357SAndroid Build Coastguard Worker {
80*f6dc9357SAndroid Build Coastguard Worker   CFastFolders FastFolders;
81*f6dc9357SAndroid Build Coastguard Worker   CFolderHistory FolderHistory;
82*f6dc9357SAndroid Build Coastguard Worker 
SaveCAppState83*f6dc9357SAndroid Build Coastguard Worker   void Save()
84*f6dc9357SAndroid Build Coastguard Worker   {
85*f6dc9357SAndroid Build Coastguard Worker     FastFolders.Save();
86*f6dc9357SAndroid Build Coastguard Worker     FolderHistory.Save();
87*f6dc9357SAndroid Build Coastguard Worker   }
ReadCAppState88*f6dc9357SAndroid Build Coastguard Worker   void Read()
89*f6dc9357SAndroid Build Coastguard Worker   {
90*f6dc9357SAndroid Build Coastguard Worker     FastFolders.Read();
91*f6dc9357SAndroid Build Coastguard Worker     FolderHistory.Read();
92*f6dc9357SAndroid Build Coastguard Worker   }
93*f6dc9357SAndroid Build Coastguard Worker };
94*f6dc9357SAndroid Build Coastguard Worker 
95*f6dc9357SAndroid Build Coastguard Worker #endif
96