1*f6dc9357SAndroid Build Coastguard Worker // ZipRegistry.h 2*f6dc9357SAndroid Build Coastguard Worker 3*f6dc9357SAndroid Build Coastguard Worker #ifndef ZIP7_INC_ZIP_REGISTRY_H 4*f6dc9357SAndroid Build Coastguard Worker #define ZIP7_INC_ZIP_REGISTRY_H 5*f6dc9357SAndroid Build Coastguard Worker 6*f6dc9357SAndroid Build Coastguard Worker #include "../../../Common/MyTypes.h" 7*f6dc9357SAndroid Build Coastguard Worker #include "../../../Common/MyString.h" 8*f6dc9357SAndroid Build Coastguard Worker 9*f6dc9357SAndroid Build Coastguard Worker #include "../../Common/MethodProps.h" 10*f6dc9357SAndroid Build Coastguard Worker 11*f6dc9357SAndroid Build Coastguard Worker #include "ExtractMode.h" 12*f6dc9357SAndroid Build Coastguard Worker 13*f6dc9357SAndroid Build Coastguard Worker /* 14*f6dc9357SAndroid Build Coastguard Worker CBoolPair::Def in writing functions means: 15*f6dc9357SAndroid Build Coastguard Worker if ( CBoolPair::Def ), we write CBoolPair::Val 16*f6dc9357SAndroid Build Coastguard Worker if ( !CBoolPair::Def ) 17*f6dc9357SAndroid Build Coastguard Worker { 18*f6dc9357SAndroid Build Coastguard Worker in NCompression functions we delete registry value 19*f6dc9357SAndroid Build Coastguard Worker in another functions we do nothing 20*f6dc9357SAndroid Build Coastguard Worker } 21*f6dc9357SAndroid Build Coastguard Worker */ 22*f6dc9357SAndroid Build Coastguard Worker 23*f6dc9357SAndroid Build Coastguard Worker namespace NExtract 24*f6dc9357SAndroid Build Coastguard Worker { 25*f6dc9357SAndroid Build Coastguard Worker struct CInfo 26*f6dc9357SAndroid Build Coastguard Worker { 27*f6dc9357SAndroid Build Coastguard Worker NPathMode::EEnum PathMode; 28*f6dc9357SAndroid Build Coastguard Worker NOverwriteMode::EEnum OverwriteMode; 29*f6dc9357SAndroid Build Coastguard Worker bool PathMode_Force; 30*f6dc9357SAndroid Build Coastguard Worker bool OverwriteMode_Force; 31*f6dc9357SAndroid Build Coastguard Worker 32*f6dc9357SAndroid Build Coastguard Worker CBoolPair SplitDest; 33*f6dc9357SAndroid Build Coastguard Worker CBoolPair ElimDup; 34*f6dc9357SAndroid Build Coastguard Worker // CBoolPair AltStreams; 35*f6dc9357SAndroid Build Coastguard Worker CBoolPair NtSecurity; 36*f6dc9357SAndroid Build Coastguard Worker CBoolPair ShowPassword; 37*f6dc9357SAndroid Build Coastguard Worker 38*f6dc9357SAndroid Build Coastguard Worker UStringVector Paths; 39*f6dc9357SAndroid Build Coastguard Worker 40*f6dc9357SAndroid Build Coastguard Worker void Save() const; 41*f6dc9357SAndroid Build Coastguard Worker void Load(); 42*f6dc9357SAndroid Build Coastguard Worker }; 43*f6dc9357SAndroid Build Coastguard Worker 44*f6dc9357SAndroid Build Coastguard Worker void Save_ShowPassword(bool showPassword); 45*f6dc9357SAndroid Build Coastguard Worker bool Read_ShowPassword(); 46*f6dc9357SAndroid Build Coastguard Worker 47*f6dc9357SAndroid Build Coastguard Worker void Save_LimitGB(UInt32 limit_GB); 48*f6dc9357SAndroid Build Coastguard Worker UInt32 Read_LimitGB(); 49*f6dc9357SAndroid Build Coastguard Worker } 50*f6dc9357SAndroid Build Coastguard Worker 51*f6dc9357SAndroid Build Coastguard Worker namespace NCompression 52*f6dc9357SAndroid Build Coastguard Worker { 53*f6dc9357SAndroid Build Coastguard Worker struct CMemUse 54*f6dc9357SAndroid Build Coastguard Worker { 55*f6dc9357SAndroid Build Coastguard Worker // UString Str; 56*f6dc9357SAndroid Build Coastguard Worker bool IsDefined; 57*f6dc9357SAndroid Build Coastguard Worker bool IsPercent; 58*f6dc9357SAndroid Build Coastguard Worker UInt64 Val; 59*f6dc9357SAndroid Build Coastguard Worker CMemUseCMemUse60*f6dc9357SAndroid Build Coastguard Worker CMemUse(): 61*f6dc9357SAndroid Build Coastguard Worker IsDefined(false), 62*f6dc9357SAndroid Build Coastguard Worker IsPercent(false), 63*f6dc9357SAndroid Build Coastguard Worker Val(0) 64*f6dc9357SAndroid Build Coastguard Worker {} 65*f6dc9357SAndroid Build Coastguard Worker ClearCMemUse66*f6dc9357SAndroid Build Coastguard Worker void Clear() 67*f6dc9357SAndroid Build Coastguard Worker { 68*f6dc9357SAndroid Build Coastguard Worker // Str.Empty(); 69*f6dc9357SAndroid Build Coastguard Worker IsDefined = false; 70*f6dc9357SAndroid Build Coastguard Worker IsPercent = false; 71*f6dc9357SAndroid Build Coastguard Worker Val = 0; 72*f6dc9357SAndroid Build Coastguard Worker } 73*f6dc9357SAndroid Build Coastguard Worker GetBytesCMemUse74*f6dc9357SAndroid Build Coastguard Worker UInt64 GetBytes(UInt64 ramSize) const 75*f6dc9357SAndroid Build Coastguard Worker { 76*f6dc9357SAndroid Build Coastguard Worker if (!IsPercent) 77*f6dc9357SAndroid Build Coastguard Worker return Val; 78*f6dc9357SAndroid Build Coastguard Worker return Calc_From_Val_Percents(ramSize, Val); 79*f6dc9357SAndroid Build Coastguard Worker } 80*f6dc9357SAndroid Build Coastguard Worker void Parse(const UString &s); 81*f6dc9357SAndroid Build Coastguard Worker }; 82*f6dc9357SAndroid Build Coastguard Worker 83*f6dc9357SAndroid Build Coastguard Worker struct CFormatOptions 84*f6dc9357SAndroid Build Coastguard Worker { 85*f6dc9357SAndroid Build Coastguard Worker UInt32 Level; 86*f6dc9357SAndroid Build Coastguard Worker UInt32 Dictionary; 87*f6dc9357SAndroid Build Coastguard Worker // UInt32 DictionaryChain; 88*f6dc9357SAndroid Build Coastguard Worker UInt32 Order; 89*f6dc9357SAndroid Build Coastguard Worker UInt32 BlockLogSize; 90*f6dc9357SAndroid Build Coastguard Worker UInt32 NumThreads; 91*f6dc9357SAndroid Build Coastguard Worker 92*f6dc9357SAndroid Build Coastguard Worker UInt32 TimePrec; 93*f6dc9357SAndroid Build Coastguard Worker CBoolPair MTime; 94*f6dc9357SAndroid Build Coastguard Worker CBoolPair ATime; 95*f6dc9357SAndroid Build Coastguard Worker CBoolPair CTime; 96*f6dc9357SAndroid Build Coastguard Worker CBoolPair SetArcMTime; 97*f6dc9357SAndroid Build Coastguard Worker 98*f6dc9357SAndroid Build Coastguard Worker CSysString FormatID; 99*f6dc9357SAndroid Build Coastguard Worker UString Method; 100*f6dc9357SAndroid Build Coastguard Worker UString Options; 101*f6dc9357SAndroid Build Coastguard Worker UString EncryptionMethod; 102*f6dc9357SAndroid Build Coastguard Worker UString MemUse; 103*f6dc9357SAndroid Build Coastguard Worker Reset_TimePrecCFormatOptions104*f6dc9357SAndroid Build Coastguard Worker void Reset_TimePrec() 105*f6dc9357SAndroid Build Coastguard Worker { 106*f6dc9357SAndroid Build Coastguard Worker TimePrec = (UInt32)(Int32)-1; 107*f6dc9357SAndroid Build Coastguard Worker } 108*f6dc9357SAndroid Build Coastguard Worker IsSet_TimePrecCFormatOptions109*f6dc9357SAndroid Build Coastguard Worker bool IsSet_TimePrec() const 110*f6dc9357SAndroid Build Coastguard Worker { 111*f6dc9357SAndroid Build Coastguard Worker return TimePrec != (UInt32)(Int32)-1; 112*f6dc9357SAndroid Build Coastguard Worker } 113*f6dc9357SAndroid Build Coastguard Worker 114*f6dc9357SAndroid Build Coastguard Worker Reset_BlockLogSizeCFormatOptions115*f6dc9357SAndroid Build Coastguard Worker void Reset_BlockLogSize() 116*f6dc9357SAndroid Build Coastguard Worker { 117*f6dc9357SAndroid Build Coastguard Worker BlockLogSize = (UInt32)(Int32)-1; 118*f6dc9357SAndroid Build Coastguard Worker } 119*f6dc9357SAndroid Build Coastguard Worker ResetForLevelChangeCFormatOptions120*f6dc9357SAndroid Build Coastguard Worker void ResetForLevelChange() 121*f6dc9357SAndroid Build Coastguard Worker { 122*f6dc9357SAndroid Build Coastguard Worker BlockLogSize = NumThreads = Level = Dictionary = Order = (UInt32)(Int32)-1; 123*f6dc9357SAndroid Build Coastguard Worker // DictionaryChain = (UInt32)(Int32)-1; 124*f6dc9357SAndroid Build Coastguard Worker Method.Empty(); 125*f6dc9357SAndroid Build Coastguard Worker // Options.Empty(); 126*f6dc9357SAndroid Build Coastguard Worker // EncryptionMethod.Empty(); 127*f6dc9357SAndroid Build Coastguard Worker } CFormatOptionsCFormatOptions128*f6dc9357SAndroid Build Coastguard Worker CFormatOptions() 129*f6dc9357SAndroid Build Coastguard Worker { 130*f6dc9357SAndroid Build Coastguard Worker // TimePrec = 0; 131*f6dc9357SAndroid Build Coastguard Worker Reset_TimePrec(); 132*f6dc9357SAndroid Build Coastguard Worker ResetForLevelChange(); 133*f6dc9357SAndroid Build Coastguard Worker } 134*f6dc9357SAndroid Build Coastguard Worker }; 135*f6dc9357SAndroid Build Coastguard Worker 136*f6dc9357SAndroid Build Coastguard Worker struct CInfo 137*f6dc9357SAndroid Build Coastguard Worker { 138*f6dc9357SAndroid Build Coastguard Worker UInt32 Level; 139*f6dc9357SAndroid Build Coastguard Worker bool ShowPassword; 140*f6dc9357SAndroid Build Coastguard Worker bool EncryptHeaders; 141*f6dc9357SAndroid Build Coastguard Worker 142*f6dc9357SAndroid Build Coastguard Worker CBoolPair NtSecurity; 143*f6dc9357SAndroid Build Coastguard Worker CBoolPair AltStreams; 144*f6dc9357SAndroid Build Coastguard Worker CBoolPair HardLinks; 145*f6dc9357SAndroid Build Coastguard Worker CBoolPair SymLinks; 146*f6dc9357SAndroid Build Coastguard Worker 147*f6dc9357SAndroid Build Coastguard Worker CBoolPair PreserveATime; 148*f6dc9357SAndroid Build Coastguard Worker 149*f6dc9357SAndroid Build Coastguard Worker UString ArcType; 150*f6dc9357SAndroid Build Coastguard Worker UStringVector ArcPaths; 151*f6dc9357SAndroid Build Coastguard Worker 152*f6dc9357SAndroid Build Coastguard Worker CObjectVector<CFormatOptions> Formats; 153*f6dc9357SAndroid Build Coastguard Worker 154*f6dc9357SAndroid Build Coastguard Worker void Save() const; 155*f6dc9357SAndroid Build Coastguard Worker void Load(); 156*f6dc9357SAndroid Build Coastguard Worker }; 157*f6dc9357SAndroid Build Coastguard Worker } 158*f6dc9357SAndroid Build Coastguard Worker 159*f6dc9357SAndroid Build Coastguard Worker namespace NWorkDir 160*f6dc9357SAndroid Build Coastguard Worker { 161*f6dc9357SAndroid Build Coastguard Worker namespace NMode 162*f6dc9357SAndroid Build Coastguard Worker { 163*f6dc9357SAndroid Build Coastguard Worker enum EEnum 164*f6dc9357SAndroid Build Coastguard Worker { 165*f6dc9357SAndroid Build Coastguard Worker kSystem, 166*f6dc9357SAndroid Build Coastguard Worker kCurrent, 167*f6dc9357SAndroid Build Coastguard Worker kSpecified 168*f6dc9357SAndroid Build Coastguard Worker }; 169*f6dc9357SAndroid Build Coastguard Worker } 170*f6dc9357SAndroid Build Coastguard Worker struct CInfo 171*f6dc9357SAndroid Build Coastguard Worker { 172*f6dc9357SAndroid Build Coastguard Worker NMode::EEnum Mode; 173*f6dc9357SAndroid Build Coastguard Worker bool ForRemovableOnly; 174*f6dc9357SAndroid Build Coastguard Worker FString Path; 175*f6dc9357SAndroid Build Coastguard Worker SetForRemovableOnlyDefaultCInfo176*f6dc9357SAndroid Build Coastguard Worker void SetForRemovableOnlyDefault() { ForRemovableOnly = true; } SetDefaultCInfo177*f6dc9357SAndroid Build Coastguard Worker void SetDefault() 178*f6dc9357SAndroid Build Coastguard Worker { 179*f6dc9357SAndroid Build Coastguard Worker Mode = NMode::kSystem; 180*f6dc9357SAndroid Build Coastguard Worker Path.Empty(); 181*f6dc9357SAndroid Build Coastguard Worker SetForRemovableOnlyDefault(); 182*f6dc9357SAndroid Build Coastguard Worker } 183*f6dc9357SAndroid Build Coastguard Worker 184*f6dc9357SAndroid Build Coastguard Worker void Save() const; 185*f6dc9357SAndroid Build Coastguard Worker void Load(); 186*f6dc9357SAndroid Build Coastguard Worker }; 187*f6dc9357SAndroid Build Coastguard Worker } 188*f6dc9357SAndroid Build Coastguard Worker 189*f6dc9357SAndroid Build Coastguard Worker 190*f6dc9357SAndroid Build Coastguard Worker struct CContextMenuInfo 191*f6dc9357SAndroid Build Coastguard Worker { 192*f6dc9357SAndroid Build Coastguard Worker CBoolPair Cascaded; 193*f6dc9357SAndroid Build Coastguard Worker CBoolPair MenuIcons; 194*f6dc9357SAndroid Build Coastguard Worker CBoolPair ElimDup; 195*f6dc9357SAndroid Build Coastguard Worker 196*f6dc9357SAndroid Build Coastguard Worker bool Flags_Def; 197*f6dc9357SAndroid Build Coastguard Worker UInt32 Flags; 198*f6dc9357SAndroid Build Coastguard Worker UInt32 WriteZone; 199*f6dc9357SAndroid Build Coastguard Worker 200*f6dc9357SAndroid Build Coastguard Worker /* 201*f6dc9357SAndroid Build Coastguard Worker CContextMenuInfo(): 202*f6dc9357SAndroid Build Coastguard Worker Flags_Def(0), 203*f6dc9357SAndroid Build Coastguard Worker WriteZone((UInt32)(Int32)-1), 204*f6dc9357SAndroid Build Coastguard Worker Flags((UInt32)(Int32)-1) 205*f6dc9357SAndroid Build Coastguard Worker {} 206*f6dc9357SAndroid Build Coastguard Worker */ 207*f6dc9357SAndroid Build Coastguard Worker 208*f6dc9357SAndroid Build Coastguard Worker void Save() const; 209*f6dc9357SAndroid Build Coastguard Worker void Load(); 210*f6dc9357SAndroid Build Coastguard Worker }; 211*f6dc9357SAndroid Build Coastguard Worker 212*f6dc9357SAndroid Build Coastguard Worker #endif 213