tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

ExtractCallbackSfx.h (1899B)


      1 // ExtractCallbackSfx.h
      2 
      3 #ifndef __EXTRACT_CALLBACK_SFX_H
      4 #define __EXTRACT_CALLBACK_SFX_H
      5 
      6 #include "resource.h"
      7 
      8 #include "../../../Windows/ResourceString.h"
      9 
     10 #include "../../Archive/IArchive.h"
     11 
     12 #include "../../Common/FileStreams.h"
     13 #include "../../ICoder.h"
     14 
     15 #include "../../UI/FileManager/LangUtils.h"
     16 
     17 #ifndef _NO_PROGRESS
     18 #include "../../UI/FileManager/ProgressDialog.h"
     19 #endif
     20 #include "../../UI/Common/ArchiveOpenCallback.h"
     21 
     22 class CExtractCallbackImp:
     23  public IArchiveExtractCallback,
     24  public IOpenCallbackUI,
     25  public CMyUnknownImp
     26 {
     27 public:
     28  
     29  MY_UNKNOWN_IMP
     30 
     31  INTERFACE_IArchiveExtractCallback(;)
     32  INTERFACE_IOpenCallbackUI(;)
     33 
     34 private:
     35  CMyComPtr<IInArchive> _archiveHandler;
     36  FString _directoryPath;
     37  UString _filePath;
     38  FString _diskFilePath;
     39 
     40  bool _extractMode;
     41  struct CProcessedFileInfo
     42  {
     43    FILETIME MTime;
     44    bool IsDir;
     45    UInt32 Attributes;
     46  } _processedFileInfo;
     47 
     48  COutFileStream *_outFileStreamSpec;
     49  CMyComPtr<ISequentialOutStream> _outFileStream;
     50 
     51  UString _itemDefaultName;
     52  FILETIME _defaultMTime;
     53  UInt32 _defaultAttributes;
     54 
     55  void CreateComplexDirectory(const UStringVector &dirPathParts);
     56 public:
     57  #ifndef _NO_PROGRESS
     58  CProgressDialog ProgressDialog;
     59  #endif
     60 
     61  bool _isCorrupt;
     62  UString _message;
     63 
     64  void Init(IInArchive *archiveHandler,
     65    const FString &directoryPath,
     66    const UString &itemDefaultName,
     67    const FILETIME &defaultMTime,
     68    UInt32 defaultAttributes);
     69 
     70  #ifndef _NO_PROGRESS
     71  HRESULT StartProgressDialog(const UString &title, NWindows::CThread &thread)
     72  {
     73    ProgressDialog.Create(title, thread, 0);
     74    {
     75      ProgressDialog.SetText(LangString(IDS_PROGRESS_EXTRACTING));
     76    }
     77 
     78    ProgressDialog.Show(SW_SHOWNORMAL);
     79    return S_OK;
     80  }
     81  virtual ~CExtractCallbackImp() { ProgressDialog.Destroy(); }
     82  #endif
     83 
     84 };
     85 
     86 #endif