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