xref: /aosp_15_r20/external/lzma/CPP/7zip/UI/FileManager/OverwriteDialog.h (revision f6dc9357d832569d4d1f5d24eacdb3935a1ae8e6)
1 // OverwriteDialog.h
2 
3 #ifndef ZIP7_INC_OVERWRITE_DIALOG_H
4 #define ZIP7_INC_OVERWRITE_DIALOG_H
5 
6 #include "../../../Windows/Control/Dialog.h"
7 
8 #include "DialogSize.h"
9 #include "OverwriteDialogRes.h"
10 
11 namespace NOverwriteDialog
12 {
13   struct CFileInfo
14   {
15     bool Size_IsDefined;
16     bool Time_IsDefined;
17     bool Is_FileSystemFile;
18     UInt64 Size;
19     FILETIME Time;
20     UString Path;
21 
SetTimeCFileInfo22     void SetTime(const FILETIME &t)
23     {
24       Time = t;
25       Time_IsDefined = true;
26     }
27 
SetTime2CFileInfo28     void SetTime2(const FILETIME *t)
29     {
30       if (!t)
31         Time_IsDefined = false;
32       else
33         SetTime(*t);
34     }
35 
SetSizeCFileInfo36     void SetSize(UInt64 size)
37     {
38       Size = size;
39       Size_IsDefined = true;
40     }
41 
SetSize2CFileInfo42     void SetSize2(const UInt64 *size)
43     {
44       if (!size)
45         Size_IsDefined = false;
46       else
47         SetSize(*size);
48     }
49 
CFileInfoCFileInfo50     CFileInfo():
51       Size_IsDefined(false),
52       Time_IsDefined(false),
53       Is_FileSystemFile(false)
54       {}
55   };
56 }
57 
58 class COverwriteDialog: public NWindows::NControl::CModalDialog
59 {
60 #ifdef UNDER_CE
61   bool _isBig;
62 #endif
63 
64   void SetItemIcon(unsigned iconID, HICON hIcon);
65   void SetFileInfoControl(const NOverwriteDialog::CFileInfo &fileInfo, unsigned textID, unsigned iconID, unsigned iconID_2);
66   virtual bool OnInit() Z7_override;
67   virtual bool OnDestroy() Z7_override;
68   virtual bool OnButtonClicked(unsigned buttonID, HWND buttonHWND) Z7_override;
69   void ReduceString(UString &s);
70 
71 public:
72   bool ShowExtraButtons;
73   bool DefaultButton_is_NO;
74   NOverwriteDialog::CFileInfo OldFileInfo;
75   NOverwriteDialog::CFileInfo NewFileInfo;
76 
COverwriteDialog()77   COverwriteDialog(): ShowExtraButtons(true), DefaultButton_is_NO(false) {}
78 
79   INT_PTR Create(HWND parent = NULL)
80   {
81 #ifdef UNDER_CE
82     BIG_DIALOG_SIZE(280, 200);
83     _isBig = isBig;
84 #endif
85     return CModalDialog::Create(SIZED_DIALOG(IDD_OVERWRITE), parent);
86   }
87 };
88 
89 #endif
90