1*f6dc9357SAndroid Build Coastguard Worker // CompressDialog.h 2*f6dc9357SAndroid Build Coastguard Worker 3*f6dc9357SAndroid Build Coastguard Worker #ifndef ZIP7_INC_COMPRESS_DIALOG_H 4*f6dc9357SAndroid Build Coastguard Worker #define ZIP7_INC_COMPRESS_DIALOG_H 5*f6dc9357SAndroid Build Coastguard Worker 6*f6dc9357SAndroid Build Coastguard Worker #include "../../../Common/Wildcard.h" 7*f6dc9357SAndroid Build Coastguard Worker 8*f6dc9357SAndroid Build Coastguard Worker #include "../../../Windows/Control/ComboBox.h" 9*f6dc9357SAndroid Build Coastguard Worker #include "../../../Windows/Control/Edit.h" 10*f6dc9357SAndroid Build Coastguard Worker 11*f6dc9357SAndroid Build Coastguard Worker #include "../Common/LoadCodecs.h" 12*f6dc9357SAndroid Build Coastguard Worker #include "../Common/ZipRegistry.h" 13*f6dc9357SAndroid Build Coastguard Worker 14*f6dc9357SAndroid Build Coastguard Worker #include "../FileManager/DialogSize.h" 15*f6dc9357SAndroid Build Coastguard Worker 16*f6dc9357SAndroid Build Coastguard Worker #include "CompressDialogRes.h" 17*f6dc9357SAndroid Build Coastguard Worker 18*f6dc9357SAndroid Build Coastguard Worker namespace NCompressDialog 19*f6dc9357SAndroid Build Coastguard Worker { 20*f6dc9357SAndroid Build Coastguard Worker namespace NUpdateMode 21*f6dc9357SAndroid Build Coastguard Worker { 22*f6dc9357SAndroid Build Coastguard Worker enum EEnum 23*f6dc9357SAndroid Build Coastguard Worker { 24*f6dc9357SAndroid Build Coastguard Worker kAdd, 25*f6dc9357SAndroid Build Coastguard Worker kUpdate, 26*f6dc9357SAndroid Build Coastguard Worker kFresh, 27*f6dc9357SAndroid Build Coastguard Worker kSync 28*f6dc9357SAndroid Build Coastguard Worker }; 29*f6dc9357SAndroid Build Coastguard Worker } 30*f6dc9357SAndroid Build Coastguard Worker 31*f6dc9357SAndroid Build Coastguard Worker struct CInfo 32*f6dc9357SAndroid Build Coastguard Worker { 33*f6dc9357SAndroid Build Coastguard Worker NUpdateMode::EEnum UpdateMode; 34*f6dc9357SAndroid Build Coastguard Worker NWildcard::ECensorPathMode PathMode; 35*f6dc9357SAndroid Build Coastguard Worker 36*f6dc9357SAndroid Build Coastguard Worker bool SolidIsSpecified; 37*f6dc9357SAndroid Build Coastguard Worker // bool MultiThreadIsAllowed; 38*f6dc9357SAndroid Build Coastguard Worker UInt64 SolidBlockSize; 39*f6dc9357SAndroid Build Coastguard Worker UInt32 NumThreads; 40*f6dc9357SAndroid Build Coastguard Worker 41*f6dc9357SAndroid Build Coastguard Worker NCompression::CMemUse MemUsage; 42*f6dc9357SAndroid Build Coastguard Worker 43*f6dc9357SAndroid Build Coastguard Worker CRecordVector<UInt64> VolumeSizes; 44*f6dc9357SAndroid Build Coastguard Worker 45*f6dc9357SAndroid Build Coastguard Worker UInt32 Level; 46*f6dc9357SAndroid Build Coastguard Worker UString Method; 47*f6dc9357SAndroid Build Coastguard Worker UInt64 Dict64; 48*f6dc9357SAndroid Build Coastguard Worker // UInt64 Dict64_Chain; 49*f6dc9357SAndroid Build Coastguard Worker bool OrderMode; 50*f6dc9357SAndroid Build Coastguard Worker UInt32 Order; 51*f6dc9357SAndroid Build Coastguard Worker UString Options; 52*f6dc9357SAndroid Build Coastguard Worker 53*f6dc9357SAndroid Build Coastguard Worker UString EncryptionMethod; 54*f6dc9357SAndroid Build Coastguard Worker 55*f6dc9357SAndroid Build Coastguard Worker bool SFXMode; 56*f6dc9357SAndroid Build Coastguard Worker bool OpenShareForWrite; 57*f6dc9357SAndroid Build Coastguard Worker bool DeleteAfterCompressing; 58*f6dc9357SAndroid Build Coastguard Worker 59*f6dc9357SAndroid Build Coastguard Worker CBoolPair SymLinks; 60*f6dc9357SAndroid Build Coastguard Worker CBoolPair HardLinks; 61*f6dc9357SAndroid Build Coastguard Worker CBoolPair AltStreams; 62*f6dc9357SAndroid Build Coastguard Worker CBoolPair NtSecurity; 63*f6dc9357SAndroid Build Coastguard Worker 64*f6dc9357SAndroid Build Coastguard Worker CBoolPair PreserveATime; 65*f6dc9357SAndroid Build Coastguard Worker 66*f6dc9357SAndroid Build Coastguard Worker UInt32 TimePrec; 67*f6dc9357SAndroid Build Coastguard Worker CBoolPair MTime; 68*f6dc9357SAndroid Build Coastguard Worker CBoolPair CTime; 69*f6dc9357SAndroid Build Coastguard Worker CBoolPair ATime; 70*f6dc9357SAndroid Build Coastguard Worker CBoolPair SetArcMTime; 71*f6dc9357SAndroid Build Coastguard Worker 72*f6dc9357SAndroid Build Coastguard Worker UString ArcPath; // in: Relative or abs ; out: Relative or abs 73*f6dc9357SAndroid Build Coastguard Worker 74*f6dc9357SAndroid Build Coastguard Worker // FString CurrentDirPrefix; 75*f6dc9357SAndroid Build Coastguard Worker bool KeepName; 76*f6dc9357SAndroid Build Coastguard Worker 77*f6dc9357SAndroid Build Coastguard Worker bool GetFullPathName(UString &result) const; 78*f6dc9357SAndroid Build Coastguard Worker 79*f6dc9357SAndroid Build Coastguard Worker int FormatIndex; 80*f6dc9357SAndroid Build Coastguard Worker 81*f6dc9357SAndroid Build Coastguard Worker UString Password; 82*f6dc9357SAndroid Build Coastguard Worker bool EncryptHeadersIsAllowed; 83*f6dc9357SAndroid Build Coastguard Worker bool EncryptHeaders; 84*f6dc9357SAndroid Build Coastguard Worker CInfoCInfo85*f6dc9357SAndroid Build Coastguard Worker CInfo(): 86*f6dc9357SAndroid Build Coastguard Worker UpdateMode(NCompressDialog::NUpdateMode::kAdd), 87*f6dc9357SAndroid Build Coastguard Worker PathMode(NWildcard::k_RelatPath), 88*f6dc9357SAndroid Build Coastguard Worker SFXMode(false), 89*f6dc9357SAndroid Build Coastguard Worker OpenShareForWrite(false), 90*f6dc9357SAndroid Build Coastguard Worker DeleteAfterCompressing(false), 91*f6dc9357SAndroid Build Coastguard Worker FormatIndex(-1) 92*f6dc9357SAndroid Build Coastguard Worker { 93*f6dc9357SAndroid Build Coastguard Worker Level = Order = (UInt32)(Int32)-1; 94*f6dc9357SAndroid Build Coastguard Worker NumThreads = (UInt32)(Int32)-1; 95*f6dc9357SAndroid Build Coastguard Worker SolidIsSpecified = false; 96*f6dc9357SAndroid Build Coastguard Worker Dict64 = (UInt64)(Int64)(-1); 97*f6dc9357SAndroid Build Coastguard Worker // Dict64_Chain = (UInt64)(Int64)(-1); 98*f6dc9357SAndroid Build Coastguard Worker OrderMode = false; 99*f6dc9357SAndroid Build Coastguard Worker Method.Empty(); 100*f6dc9357SAndroid Build Coastguard Worker Options.Empty(); 101*f6dc9357SAndroid Build Coastguard Worker EncryptionMethod.Empty(); 102*f6dc9357SAndroid Build Coastguard Worker TimePrec = (UInt32)(Int32)(-1); 103*f6dc9357SAndroid Build Coastguard Worker } 104*f6dc9357SAndroid Build Coastguard Worker }; 105*f6dc9357SAndroid Build Coastguard Worker } 106*f6dc9357SAndroid Build Coastguard Worker 107*f6dc9357SAndroid Build Coastguard Worker 108*f6dc9357SAndroid Build Coastguard Worker struct CBool1 109*f6dc9357SAndroid Build Coastguard Worker { 110*f6dc9357SAndroid Build Coastguard Worker bool Val; 111*f6dc9357SAndroid Build Coastguard Worker bool Supported; 112*f6dc9357SAndroid Build Coastguard Worker CBool1CBool1113*f6dc9357SAndroid Build Coastguard Worker CBool1(): Val(false), Supported(false) {} 114*f6dc9357SAndroid Build Coastguard Worker InitCBool1115*f6dc9357SAndroid Build Coastguard Worker void Init() 116*f6dc9357SAndroid Build Coastguard Worker { 117*f6dc9357SAndroid Build Coastguard Worker Val = false; 118*f6dc9357SAndroid Build Coastguard Worker Supported = false; 119*f6dc9357SAndroid Build Coastguard Worker } 120*f6dc9357SAndroid Build Coastguard Worker SetTrueTrueCBool1121*f6dc9357SAndroid Build Coastguard Worker void SetTrueTrue() 122*f6dc9357SAndroid Build Coastguard Worker { 123*f6dc9357SAndroid Build Coastguard Worker Val = true; 124*f6dc9357SAndroid Build Coastguard Worker Supported = true; 125*f6dc9357SAndroid Build Coastguard Worker } 126*f6dc9357SAndroid Build Coastguard Worker SetVal_as_SupportedCBool1127*f6dc9357SAndroid Build Coastguard Worker void SetVal_as_Supported(bool val) 128*f6dc9357SAndroid Build Coastguard Worker { 129*f6dc9357SAndroid Build Coastguard Worker Val = val; 130*f6dc9357SAndroid Build Coastguard Worker Supported = true; 131*f6dc9357SAndroid Build Coastguard Worker } 132*f6dc9357SAndroid Build Coastguard Worker 133*f6dc9357SAndroid Build Coastguard Worker /* 134*f6dc9357SAndroid Build Coastguard Worker bool IsVal_True_and_Defined() const 135*f6dc9357SAndroid Build Coastguard Worker { 136*f6dc9357SAndroid Build Coastguard Worker return Def && Val; 137*f6dc9357SAndroid Build Coastguard Worker } 138*f6dc9357SAndroid Build Coastguard Worker */ 139*f6dc9357SAndroid Build Coastguard Worker }; 140*f6dc9357SAndroid Build Coastguard Worker 141*f6dc9357SAndroid Build Coastguard Worker 142*f6dc9357SAndroid Build Coastguard Worker class CCompressDialog: public NWindows::NControl::CModalDialog 143*f6dc9357SAndroid Build Coastguard Worker { 144*f6dc9357SAndroid Build Coastguard Worker public: 145*f6dc9357SAndroid Build Coastguard Worker CBool1 SymLinks; 146*f6dc9357SAndroid Build Coastguard Worker CBool1 HardLinks; 147*f6dc9357SAndroid Build Coastguard Worker CBool1 AltStreams; 148*f6dc9357SAndroid Build Coastguard Worker CBool1 NtSecurity; 149*f6dc9357SAndroid Build Coastguard Worker CBool1 PreserveATime; 150*f6dc9357SAndroid Build Coastguard Worker private: 151*f6dc9357SAndroid Build Coastguard Worker bool _ramSize_Defined; 152*f6dc9357SAndroid Build Coastguard Worker 153*f6dc9357SAndroid Build Coastguard Worker NWindows::NControl::CComboBox m_ArchivePath; 154*f6dc9357SAndroid Build Coastguard Worker NWindows::NControl::CComboBox m_Format; 155*f6dc9357SAndroid Build Coastguard Worker NWindows::NControl::CComboBox m_Level; 156*f6dc9357SAndroid Build Coastguard Worker NWindows::NControl::CComboBox m_Method; 157*f6dc9357SAndroid Build Coastguard Worker NWindows::NControl::CComboBox m_Dictionary; 158*f6dc9357SAndroid Build Coastguard Worker // NWindows::NControl::CComboBox m_Dictionary_Chain; 159*f6dc9357SAndroid Build Coastguard Worker NWindows::NControl::CComboBox m_Order; 160*f6dc9357SAndroid Build Coastguard Worker NWindows::NControl::CComboBox m_Solid; 161*f6dc9357SAndroid Build Coastguard Worker NWindows::NControl::CComboBox m_NumThreads; 162*f6dc9357SAndroid Build Coastguard Worker NWindows::NControl::CComboBox m_MemUse; 163*f6dc9357SAndroid Build Coastguard Worker NWindows::NControl::CComboBox m_Volume; 164*f6dc9357SAndroid Build Coastguard Worker 165*f6dc9357SAndroid Build Coastguard Worker int _dictionaryCombo_left; 166*f6dc9357SAndroid Build Coastguard Worker 167*f6dc9357SAndroid Build Coastguard Worker UStringVector _memUse_Strings; 168*f6dc9357SAndroid Build Coastguard Worker 169*f6dc9357SAndroid Build Coastguard Worker NWindows::NControl::CDialogChildControl m_Params; 170*f6dc9357SAndroid Build Coastguard Worker 171*f6dc9357SAndroid Build Coastguard Worker NWindows::NControl::CComboBox m_UpdateMode; 172*f6dc9357SAndroid Build Coastguard Worker NWindows::NControl::CComboBox m_PathMode; 173*f6dc9357SAndroid Build Coastguard Worker 174*f6dc9357SAndroid Build Coastguard Worker NWindows::NControl::CEdit _password1Control; 175*f6dc9357SAndroid Build Coastguard Worker NWindows::NControl::CEdit _password2Control; 176*f6dc9357SAndroid Build Coastguard Worker NWindows::NControl::CComboBox _encryptionMethod; 177*f6dc9357SAndroid Build Coastguard Worker 178*f6dc9357SAndroid Build Coastguard Worker int _auto_MethodId; 179*f6dc9357SAndroid Build Coastguard Worker UInt32 _auto_Dict; // (UInt32)(Int32)-1 means unknown 180*f6dc9357SAndroid Build Coastguard Worker UInt32 _auto_Dict_Chain; // (UInt32)(Int32)-1 means unknown 181*f6dc9357SAndroid Build Coastguard Worker UInt32 _auto_Order; 182*f6dc9357SAndroid Build Coastguard Worker UInt64 _auto_Solid; 183*f6dc9357SAndroid Build Coastguard Worker UInt32 _auto_NumThreads; 184*f6dc9357SAndroid Build Coastguard Worker 185*f6dc9357SAndroid Build Coastguard Worker int _default_encryptionMethod_Index; 186*f6dc9357SAndroid Build Coastguard Worker 187*f6dc9357SAndroid Build Coastguard Worker int m_PrevFormat; 188*f6dc9357SAndroid Build Coastguard Worker UString DirPrefix; 189*f6dc9357SAndroid Build Coastguard Worker UString StartDirPrefix; 190*f6dc9357SAndroid Build Coastguard Worker 191*f6dc9357SAndroid Build Coastguard Worker size_t _ramSize; // full RAM size avail 192*f6dc9357SAndroid Build Coastguard Worker size_t _ramSize_Reduced; // full for 64-bit and reduced for 32-bit 193*f6dc9357SAndroid Build Coastguard Worker UInt64 _ramUsage_Auto; 194*f6dc9357SAndroid Build Coastguard Worker 195*f6dc9357SAndroid Build Coastguard Worker public: 196*f6dc9357SAndroid Build Coastguard Worker NCompression::CInfo m_RegistryInfo; 197*f6dc9357SAndroid Build Coastguard Worker 198*f6dc9357SAndroid Build Coastguard Worker void SetArchiveName(const UString &name); 199*f6dc9357SAndroid Build Coastguard Worker int FindRegistryFormat(const UString &name); 200*f6dc9357SAndroid Build Coastguard Worker unsigned FindRegistryFormat_Always(const UString &name); 201*f6dc9357SAndroid Build Coastguard Worker Get_ArcInfoEx()202*f6dc9357SAndroid Build Coastguard Worker const CArcInfoEx &Get_ArcInfoEx() 203*f6dc9357SAndroid Build Coastguard Worker { 204*f6dc9357SAndroid Build Coastguard Worker return (*ArcFormats)[GetFormatIndex()]; 205*f6dc9357SAndroid Build Coastguard Worker } 206*f6dc9357SAndroid Build Coastguard Worker 207*f6dc9357SAndroid Build Coastguard Worker NCompression::CFormatOptions &Get_FormatOptions(); 208*f6dc9357SAndroid Build Coastguard Worker 209*f6dc9357SAndroid Build Coastguard Worker void CheckSFXNameChange(); 210*f6dc9357SAndroid Build Coastguard Worker void SetArchiveName2(bool prevWasSFX); 211*f6dc9357SAndroid Build Coastguard Worker 212*f6dc9357SAndroid Build Coastguard Worker unsigned GetStaticFormatIndex(); 213*f6dc9357SAndroid Build Coastguard Worker 214*f6dc9357SAndroid Build Coastguard Worker void SetNearestSelectComboBox(NWindows::NControl::CComboBox &comboBox, UInt32 value); 215*f6dc9357SAndroid Build Coastguard Worker 216*f6dc9357SAndroid Build Coastguard Worker void SetLevel2(); SetLevel()217*f6dc9357SAndroid Build Coastguard Worker void SetLevel() 218*f6dc9357SAndroid Build Coastguard Worker { 219*f6dc9357SAndroid Build Coastguard Worker SetLevel2(); 220*f6dc9357SAndroid Build Coastguard Worker EnableMultiCombo(IDC_COMPRESS_LEVEL); 221*f6dc9357SAndroid Build Coastguard Worker SetMethod(); 222*f6dc9357SAndroid Build Coastguard Worker } 223*f6dc9357SAndroid Build Coastguard Worker 224*f6dc9357SAndroid Build Coastguard Worker void SetMethod2(int keepMethodId); 225*f6dc9357SAndroid Build Coastguard Worker void SetMethod(int keepMethodId = -1) 226*f6dc9357SAndroid Build Coastguard Worker { 227*f6dc9357SAndroid Build Coastguard Worker SetMethod2(keepMethodId); 228*f6dc9357SAndroid Build Coastguard Worker EnableMultiCombo(IDC_COMPRESS_METHOD); 229*f6dc9357SAndroid Build Coastguard Worker } 230*f6dc9357SAndroid Build Coastguard Worker MethodChanged()231*f6dc9357SAndroid Build Coastguard Worker void MethodChanged() 232*f6dc9357SAndroid Build Coastguard Worker { 233*f6dc9357SAndroid Build Coastguard Worker SetDictionary2(); 234*f6dc9357SAndroid Build Coastguard Worker EnableMultiCombo(IDC_COMPRESS_DICTIONARY); 235*f6dc9357SAndroid Build Coastguard Worker // EnableMultiCombo(IDC_COMPRESS_DICTIONARY2); 236*f6dc9357SAndroid Build Coastguard Worker SetOrder2(); 237*f6dc9357SAndroid Build Coastguard Worker EnableMultiCombo(IDC_COMPRESS_ORDER); 238*f6dc9357SAndroid Build Coastguard Worker } 239*f6dc9357SAndroid Build Coastguard Worker 240*f6dc9357SAndroid Build Coastguard Worker int GetMethodID_RAW(); 241*f6dc9357SAndroid Build Coastguard Worker int GetMethodID(); 242*f6dc9357SAndroid Build Coastguard Worker 243*f6dc9357SAndroid Build Coastguard Worker UString GetMethodSpec(UString &estimatedName); 244*f6dc9357SAndroid Build Coastguard Worker UString GetMethodSpec(); 245*f6dc9357SAndroid Build Coastguard Worker bool IsMethodEqualTo(const UString &s); 246*f6dc9357SAndroid Build Coastguard Worker UString GetEncryptionMethodSpec(); 247*f6dc9357SAndroid Build Coastguard Worker 248*f6dc9357SAndroid Build Coastguard Worker bool IsZipFormat(); 249*f6dc9357SAndroid Build Coastguard Worker bool IsXzFormat(); 250*f6dc9357SAndroid Build Coastguard Worker 251*f6dc9357SAndroid Build Coastguard Worker void SetEncryptionMethod(); 252*f6dc9357SAndroid Build Coastguard Worker 253*f6dc9357SAndroid Build Coastguard Worker int AddDict2(size_t sizeReal, size_t sizeShow); 254*f6dc9357SAndroid Build Coastguard Worker int AddDict(size_t size); 255*f6dc9357SAndroid Build Coastguard Worker // int AddDict_Chain(size_t size); 256*f6dc9357SAndroid Build Coastguard Worker 257*f6dc9357SAndroid Build Coastguard Worker void SetDictionary2(); 258*f6dc9357SAndroid Build Coastguard Worker 259*f6dc9357SAndroid Build Coastguard Worker UInt32 GetComboValue(NWindows::NControl::CComboBox &c, int defMax = 0); 260*f6dc9357SAndroid Build Coastguard Worker UInt64 GetComboValue_64(NWindows::NControl::CComboBox &c, int defMax = 0); 261*f6dc9357SAndroid Build Coastguard Worker GetLevel()262*f6dc9357SAndroid Build Coastguard Worker UInt32 GetLevel() { return GetComboValue(m_Level); } GetLevelSpec()263*f6dc9357SAndroid Build Coastguard Worker UInt32 GetLevelSpec() { return GetComboValue(m_Level, 1); } 264*f6dc9357SAndroid Build Coastguard Worker UInt32 GetLevel2(); 265*f6dc9357SAndroid Build Coastguard Worker GetDictSpec()266*f6dc9357SAndroid Build Coastguard Worker UInt64 GetDictSpec() { return GetComboValue_64(m_Dictionary, 1); } 267*f6dc9357SAndroid Build Coastguard Worker // UInt64 GetDictChainSpec() { return GetComboValue_64(m_Dictionary_Chain, 1); } 268*f6dc9357SAndroid Build Coastguard Worker GetDict2()269*f6dc9357SAndroid Build Coastguard Worker UInt64 GetDict2() 270*f6dc9357SAndroid Build Coastguard Worker { 271*f6dc9357SAndroid Build Coastguard Worker UInt64 num = GetDictSpec(); 272*f6dc9357SAndroid Build Coastguard Worker if (num == (UInt64)(Int64)-1) 273*f6dc9357SAndroid Build Coastguard Worker { 274*f6dc9357SAndroid Build Coastguard Worker if (_auto_Dict == (UInt32)(Int32)-1) 275*f6dc9357SAndroid Build Coastguard Worker return (UInt64)(Int64)-1; // unknown 276*f6dc9357SAndroid Build Coastguard Worker num = _auto_Dict; 277*f6dc9357SAndroid Build Coastguard Worker } 278*f6dc9357SAndroid Build Coastguard Worker return num; 279*f6dc9357SAndroid Build Coastguard Worker } 280*f6dc9357SAndroid Build Coastguard Worker 281*f6dc9357SAndroid Build Coastguard Worker // UInt32 GetOrder() { return GetComboValue(m_Order); } GetOrderSpec()282*f6dc9357SAndroid Build Coastguard Worker UInt32 GetOrderSpec() { return GetComboValue(m_Order, 1); } GetNumThreadsSpec()283*f6dc9357SAndroid Build Coastguard Worker UInt32 GetNumThreadsSpec() { return GetComboValue(m_NumThreads, 1); } 284*f6dc9357SAndroid Build Coastguard Worker GetNumThreads2()285*f6dc9357SAndroid Build Coastguard Worker UInt32 GetNumThreads2() 286*f6dc9357SAndroid Build Coastguard Worker { 287*f6dc9357SAndroid Build Coastguard Worker UInt32 num = GetNumThreadsSpec(); 288*f6dc9357SAndroid Build Coastguard Worker if (num == (UInt32)(Int32)-1) 289*f6dc9357SAndroid Build Coastguard Worker num = _auto_NumThreads; 290*f6dc9357SAndroid Build Coastguard Worker return num; 291*f6dc9357SAndroid Build Coastguard Worker } 292*f6dc9357SAndroid Build Coastguard Worker GetBlockSizeSpec()293*f6dc9357SAndroid Build Coastguard Worker UInt32 GetBlockSizeSpec() { return GetComboValue(m_Solid, 1); } 294*f6dc9357SAndroid Build Coastguard Worker 295*f6dc9357SAndroid Build Coastguard Worker /* 296*f6dc9357SAndroid Build Coastguard Worker UInt32 GetPrecSpec() { return GetComboValue(m_Prec, 1); } 297*f6dc9357SAndroid Build Coastguard Worker UInt32 GetPrec() { return GetComboValue(m_Prec, 0); } 298*f6dc9357SAndroid Build Coastguard Worker */ 299*f6dc9357SAndroid Build Coastguard Worker 300*f6dc9357SAndroid Build Coastguard Worker 301*f6dc9357SAndroid Build Coastguard Worker int AddOrder(UInt32 size); 302*f6dc9357SAndroid Build Coastguard Worker int AddOrder_Auto(); 303*f6dc9357SAndroid Build Coastguard Worker 304*f6dc9357SAndroid Build Coastguard Worker void SetOrder2(); 305*f6dc9357SAndroid Build Coastguard Worker 306*f6dc9357SAndroid Build Coastguard Worker bool GetOrderMode(); 307*f6dc9357SAndroid Build Coastguard Worker 308*f6dc9357SAndroid Build Coastguard Worker void SetSolidBlockSize2(); SetSolidBlockSize()309*f6dc9357SAndroid Build Coastguard Worker void SetSolidBlockSize(/* bool useDictionary = false */) 310*f6dc9357SAndroid Build Coastguard Worker { 311*f6dc9357SAndroid Build Coastguard Worker SetSolidBlockSize2(); 312*f6dc9357SAndroid Build Coastguard Worker EnableMultiCombo(IDC_COMPRESS_SOLID); 313*f6dc9357SAndroid Build Coastguard Worker } 314*f6dc9357SAndroid Build Coastguard Worker 315*f6dc9357SAndroid Build Coastguard Worker void SetNumThreads2(); SetNumThreads()316*f6dc9357SAndroid Build Coastguard Worker void SetNumThreads() 317*f6dc9357SAndroid Build Coastguard Worker { 318*f6dc9357SAndroid Build Coastguard Worker SetNumThreads2(); 319*f6dc9357SAndroid Build Coastguard Worker EnableMultiCombo(IDC_COMPRESS_THREADS); 320*f6dc9357SAndroid Build Coastguard Worker } 321*f6dc9357SAndroid Build Coastguard Worker 322*f6dc9357SAndroid Build Coastguard Worker int AddMemComboItem(UInt64 val, bool isPercent = false, bool isDefault = false); 323*f6dc9357SAndroid Build Coastguard Worker void SetMemUseCombo(); 324*f6dc9357SAndroid Build Coastguard Worker UString Get_MemUse_Spec(); 325*f6dc9357SAndroid Build Coastguard Worker UInt64 Get_MemUse_Bytes(); 326*f6dc9357SAndroid Build Coastguard Worker 327*f6dc9357SAndroid Build Coastguard Worker UInt64 GetMemoryUsage_Dict_DecompMem(UInt64 dict, UInt64 &decompressMemory); 328*f6dc9357SAndroid Build Coastguard Worker UInt64 GetMemoryUsage_Threads_Dict_DecompMem(UInt32 numThreads, UInt64 dict, UInt64 &decompressMemory); 329*f6dc9357SAndroid Build Coastguard Worker UInt64 GetMemoryUsage_DecompMem(UInt64 &decompressMemory); 330*f6dc9357SAndroid Build Coastguard Worker UInt64 GetMemoryUsageComp_Threads_Dict(UInt32 numThreads, UInt64 dict64); 331*f6dc9357SAndroid Build Coastguard Worker 332*f6dc9357SAndroid Build Coastguard Worker void PrintMemUsage(UINT res, UInt64 value); 333*f6dc9357SAndroid Build Coastguard Worker void SetMemoryUsage(); 334*f6dc9357SAndroid Build Coastguard Worker void Print_Params(); 335*f6dc9357SAndroid Build Coastguard Worker 336*f6dc9357SAndroid Build Coastguard Worker void SetParams(); 337*f6dc9357SAndroid Build Coastguard Worker 338*f6dc9357SAndroid Build Coastguard Worker void SaveOptionsInMem(); 339*f6dc9357SAndroid Build Coastguard Worker 340*f6dc9357SAndroid Build Coastguard Worker void UpdatePasswordControl(); IsShowPasswordChecked()341*f6dc9357SAndroid Build Coastguard Worker bool IsShowPasswordChecked() const { return IsButtonCheckedBool(IDX_PASSWORD_SHOW); } 342*f6dc9357SAndroid Build Coastguard Worker 343*f6dc9357SAndroid Build Coastguard Worker unsigned GetFormatIndex(); 344*f6dc9357SAndroid Build Coastguard Worker bool SetArcPathFields(const UString &path, UString &name, bool always); 345*f6dc9357SAndroid Build Coastguard Worker bool SetArcPathFields(const UString &path); 346*f6dc9357SAndroid Build Coastguard Worker bool GetFinalPath_Smart(UString &resPath) const; 347*f6dc9357SAndroid Build Coastguard Worker void ArcPath_WasChanged(const UString &newPath); 348*f6dc9357SAndroid Build Coastguard Worker 349*f6dc9357SAndroid Build Coastguard Worker void CheckSFXControlsEnable(); 350*f6dc9357SAndroid Build Coastguard Worker // void CheckVolumeEnable(); 351*f6dc9357SAndroid Build Coastguard Worker void EnableMultiCombo(unsigned id); 352*f6dc9357SAndroid Build Coastguard Worker void FormatChanged(bool isChanged); 353*f6dc9357SAndroid Build Coastguard Worker 354*f6dc9357SAndroid Build Coastguard Worker void OnButtonSetArchive(); 355*f6dc9357SAndroid Build Coastguard Worker bool IsSFX(); 356*f6dc9357SAndroid Build Coastguard Worker void OnButtonSFX(); 357*f6dc9357SAndroid Build Coastguard Worker 358*f6dc9357SAndroid Build Coastguard Worker virtual bool OnInit() Z7_override; 359*f6dc9357SAndroid Build Coastguard Worker virtual bool OnMessage(UINT message, WPARAM wParam, LPARAM lParam) Z7_override; 360*f6dc9357SAndroid Build Coastguard Worker virtual bool OnCommand(unsigned code, unsigned itemID, LPARAM lParam) Z7_override; 361*f6dc9357SAndroid Build Coastguard Worker virtual bool OnButtonClicked(unsigned buttonID, HWND buttonHWND) Z7_override; 362*f6dc9357SAndroid Build Coastguard Worker virtual void OnOK() Z7_override; 363*f6dc9357SAndroid Build Coastguard Worker virtual void OnHelp() Z7_override; 364*f6dc9357SAndroid Build Coastguard Worker MessageBoxError(LPCWSTR message)365*f6dc9357SAndroid Build Coastguard Worker void MessageBoxError(LPCWSTR message) 366*f6dc9357SAndroid Build Coastguard Worker { 367*f6dc9357SAndroid Build Coastguard Worker MessageBoxW(*this, message, L"7-Zip", MB_ICONERROR); 368*f6dc9357SAndroid Build Coastguard Worker } 369*f6dc9357SAndroid Build Coastguard Worker 370*f6dc9357SAndroid Build Coastguard Worker void ShowOptionsString(); 371*f6dc9357SAndroid Build Coastguard Worker 372*f6dc9357SAndroid Build Coastguard Worker public: 373*f6dc9357SAndroid Build Coastguard Worker const CObjectVector<CArcInfoEx> *ArcFormats; 374*f6dc9357SAndroid Build Coastguard Worker CUIntVector ArcIndices; // can not be empty, must contain Info.FormatIndex, if Info.FormatIndex >= 0 375*f6dc9357SAndroid Build Coastguard Worker AStringVector ExternalMethods; 376*f6dc9357SAndroid Build Coastguard Worker 377*f6dc9357SAndroid Build Coastguard Worker void SetMethods(const CObjectVector<CCodecInfoUser> &userCodecs); 378*f6dc9357SAndroid Build Coastguard Worker 379*f6dc9357SAndroid Build Coastguard Worker NCompressDialog::CInfo Info; 380*f6dc9357SAndroid Build Coastguard Worker UString OriginalFileName; // for bzip2, gzip2 381*f6dc9357SAndroid Build Coastguard Worker 382*f6dc9357SAndroid Build Coastguard Worker INT_PTR Create(HWND wndParent = NULL) 383*f6dc9357SAndroid Build Coastguard Worker { 384*f6dc9357SAndroid Build Coastguard Worker BIG_DIALOG_SIZE(400, 320); 385*f6dc9357SAndroid Build Coastguard Worker return CModalDialog::Create(SIZED_DIALOG(IDD_COMPRESS), wndParent); 386*f6dc9357SAndroid Build Coastguard Worker } 387*f6dc9357SAndroid Build Coastguard Worker CCompressDialog()388*f6dc9357SAndroid Build Coastguard Worker CCompressDialog() {} 389*f6dc9357SAndroid Build Coastguard Worker }; 390*f6dc9357SAndroid Build Coastguard Worker 391*f6dc9357SAndroid Build Coastguard Worker 392*f6dc9357SAndroid Build Coastguard Worker 393*f6dc9357SAndroid Build Coastguard Worker 394*f6dc9357SAndroid Build Coastguard Worker class COptionsDialog: public NWindows::NControl::CModalDialog 395*f6dc9357SAndroid Build Coastguard Worker { 396*f6dc9357SAndroid Build Coastguard Worker struct CBoolBox 397*f6dc9357SAndroid Build Coastguard Worker { 398*f6dc9357SAndroid Build Coastguard Worker bool IsSupported; 399*f6dc9357SAndroid Build Coastguard Worker bool DefaultVal; 400*f6dc9357SAndroid Build Coastguard Worker CBoolPair BoolPair; 401*f6dc9357SAndroid Build Coastguard Worker 402*f6dc9357SAndroid Build Coastguard Worker unsigned Id; 403*f6dc9357SAndroid Build Coastguard Worker unsigned Set_Id; 404*f6dc9357SAndroid Build Coastguard Worker SetIDsCBoolBox405*f6dc9357SAndroid Build Coastguard Worker void SetIDs(unsigned id, unsigned set_Id) 406*f6dc9357SAndroid Build Coastguard Worker { 407*f6dc9357SAndroid Build Coastguard Worker Id = id; 408*f6dc9357SAndroid Build Coastguard Worker Set_Id = set_Id; 409*f6dc9357SAndroid Build Coastguard Worker } 410*f6dc9357SAndroid Build Coastguard Worker CBoolBoxCBoolBox411*f6dc9357SAndroid Build Coastguard Worker CBoolBox(): 412*f6dc9357SAndroid Build Coastguard Worker IsSupported(false), 413*f6dc9357SAndroid Build Coastguard Worker DefaultVal(false) 414*f6dc9357SAndroid Build Coastguard Worker {} 415*f6dc9357SAndroid Build Coastguard Worker }; 416*f6dc9357SAndroid Build Coastguard Worker 417*f6dc9357SAndroid Build Coastguard Worker CCompressDialog *cd; 418*f6dc9357SAndroid Build Coastguard Worker 419*f6dc9357SAndroid Build Coastguard Worker NWindows::NControl::CComboBox m_Prec; 420*f6dc9357SAndroid Build Coastguard Worker 421*f6dc9357SAndroid Build Coastguard Worker UInt32 _auto_Prec; 422*f6dc9357SAndroid Build Coastguard Worker UInt32 TimePrec; 423*f6dc9357SAndroid Build Coastguard Worker Reset_TimePrec()424*f6dc9357SAndroid Build Coastguard Worker void Reset_TimePrec() { TimePrec = (UInt32)(Int32)-1; } IsSet_TimePrec()425*f6dc9357SAndroid Build Coastguard Worker bool IsSet_TimePrec() const { return TimePrec != (UInt32)(Int32)-1; } 426*f6dc9357SAndroid Build Coastguard Worker 427*f6dc9357SAndroid Build Coastguard Worker CBoolBox MTime; 428*f6dc9357SAndroid Build Coastguard Worker CBoolBox CTime; 429*f6dc9357SAndroid Build Coastguard Worker CBoolBox ATime; 430*f6dc9357SAndroid Build Coastguard Worker CBoolBox ZTime; 431*f6dc9357SAndroid Build Coastguard Worker 432*f6dc9357SAndroid Build Coastguard Worker UString SecString; 433*f6dc9357SAndroid Build Coastguard Worker UString NsString; 434*f6dc9357SAndroid Build Coastguard Worker 435*f6dc9357SAndroid Build Coastguard Worker 436*f6dc9357SAndroid Build Coastguard Worker void CheckButton_Bool1(UINT id, const CBool1 &b1); 437*f6dc9357SAndroid Build Coastguard Worker void GetButton_Bool1(UINT id, CBool1 &b1); 438*f6dc9357SAndroid Build Coastguard Worker void CheckButton_BoolBox(bool supported, const CBoolPair &b2, CBoolBox &bb); 439*f6dc9357SAndroid Build Coastguard Worker void GetButton_BoolBox(CBoolBox &bb); 440*f6dc9357SAndroid Build Coastguard Worker 441*f6dc9357SAndroid Build Coastguard Worker void Store_TimeBoxes(); 442*f6dc9357SAndroid Build Coastguard Worker 443*f6dc9357SAndroid Build Coastguard Worker UInt32 GetComboValue(NWindows::NControl::CComboBox &c, int defMax = 0); GetPrecSpec()444*f6dc9357SAndroid Build Coastguard Worker UInt32 GetPrecSpec() 445*f6dc9357SAndroid Build Coastguard Worker { 446*f6dc9357SAndroid Build Coastguard Worker UInt32 prec = GetComboValue(m_Prec, 1); 447*f6dc9357SAndroid Build Coastguard Worker if (prec == _auto_Prec) 448*f6dc9357SAndroid Build Coastguard Worker prec = (UInt32)(Int32)-1; 449*f6dc9357SAndroid Build Coastguard Worker return prec; 450*f6dc9357SAndroid Build Coastguard Worker } GetPrec()451*f6dc9357SAndroid Build Coastguard Worker UInt32 GetPrec() { return GetComboValue(m_Prec, 0); } 452*f6dc9357SAndroid Build Coastguard Worker 453*f6dc9357SAndroid Build Coastguard Worker // void OnButton_TimeDefault(); 454*f6dc9357SAndroid Build Coastguard Worker int AddPrec(unsigned prec, bool isDefault); 455*f6dc9357SAndroid Build Coastguard Worker void SetPrec(); 456*f6dc9357SAndroid Build Coastguard Worker void SetTimeMAC(); 457*f6dc9357SAndroid Build Coastguard Worker 458*f6dc9357SAndroid Build Coastguard Worker void On_CheckBoxSet_Prec_Clicked(); 459*f6dc9357SAndroid Build Coastguard Worker void On_CheckBoxSet_Clicked(const CBoolBox &bb); 460*f6dc9357SAndroid Build Coastguard Worker 461*f6dc9357SAndroid Build Coastguard Worker virtual bool OnInit() Z7_override; 462*f6dc9357SAndroid Build Coastguard Worker virtual bool OnCommand(unsigned code, unsigned itemID, LPARAM lParam) Z7_override; 463*f6dc9357SAndroid Build Coastguard Worker virtual bool OnButtonClicked(unsigned buttonID, HWND buttonHWND) Z7_override; 464*f6dc9357SAndroid Build Coastguard Worker virtual void OnOK() Z7_override; 465*f6dc9357SAndroid Build Coastguard Worker virtual void OnHelp() Z7_override; 466*f6dc9357SAndroid Build Coastguard Worker 467*f6dc9357SAndroid Build Coastguard Worker public: 468*f6dc9357SAndroid Build Coastguard Worker 469*f6dc9357SAndroid Build Coastguard Worker INT_PTR Create(HWND wndParent = NULL) 470*f6dc9357SAndroid Build Coastguard Worker { 471*f6dc9357SAndroid Build Coastguard Worker BIG_DIALOG_SIZE(240, 232); 472*f6dc9357SAndroid Build Coastguard Worker return CModalDialog::Create(SIZED_DIALOG(IDD_COMPRESS_OPTIONS), wndParent); 473*f6dc9357SAndroid Build Coastguard Worker } 474*f6dc9357SAndroid Build Coastguard Worker COptionsDialog(CCompressDialog * cdLoc)475*f6dc9357SAndroid Build Coastguard Worker COptionsDialog(CCompressDialog *cdLoc): 476*f6dc9357SAndroid Build Coastguard Worker cd(cdLoc) 477*f6dc9357SAndroid Build Coastguard Worker // , TimePrec(0) 478*f6dc9357SAndroid Build Coastguard Worker { 479*f6dc9357SAndroid Build Coastguard Worker Reset_TimePrec(); 480*f6dc9357SAndroid Build Coastguard Worker } 481*f6dc9357SAndroid Build Coastguard Worker }; 482*f6dc9357SAndroid Build Coastguard Worker 483*f6dc9357SAndroid Build Coastguard Worker #endif 484