1 // OverwriteDialog.cpp
2
3 #include "StdAfx.h"
4
5 #include "OverwriteDialog.h"
6
7 #include "Common/StringConvert.h"
8 #include "Windows/FileName.h"
9 #include "Windows/Defs.h"
10 #include "Windows/ResourceString.h"
11 #include "Windows/Control/Static.h"
12 #include "Windows/PropVariantConversions.h"
13
14 #include "FormatUtils.h"
15
16 // #include "../resource.h"
17
18 #ifdef LANG
19 #include "LangUtils.h"
20 #endif
21
22 using namespace NWindows;
23
24 #ifdef LANG
25 static CIDLangPair kIDLangPairs[] =
26 {
27 { IDC_STATIC_OVERWRITE_HEADER, 0x02000901},
28 { IDC_STATIC_OVERWRITE_QUESTION_BEGIN, 0x02000902 },
29 { IDC_STATIC_OVERWRITE_QUESTION_END, 0x02000903 },
30 { IDYES, 0x02000705 },
31 { IDC_BUTTON_OVERWRITE_YES_TO_ALL, 0x02000707 },
32 { IDNO, 0x02000709 },
33 { IDC_BUTTON_OVERWRITE_NO_TO_ALL,0x0200070B },
34 { IDC_BUTTON_OVERWRITE_AUTO_RENAME, 0x02000911 },
35 { IDCANCEL, 0x02000711 }
36 };
37 #endif
38
SetFileInfoControl(int textID,int iconID,const NOverwriteDialog::CFileInfo & fileInfo)39 void COverwriteDialog::SetFileInfoControl(int textID, int iconID,
40 const NOverwriteDialog::CFileInfo &fileInfo)
41 {
42 UString sizeString;
43 if (fileInfo.SizeIsDefined)
44 sizeString = MyFormatNew(IDS_FILE_SIZE,
45 #ifdef LANG
46 0x02000982,
47 #endif
48 NumberToString(fileInfo.Size));
49
50 UString reducedName;
51 const int kLineSize = 88;
52 for (int i = 0; i < fileInfo.Name.Length();)
53 {
54 reducedName += fileInfo.Name.Mid(i, kLineSize);
55 reducedName += L" ";
56 i += kLineSize;
57 }
58
59 UString fullString = reducedName;
60 fullString += L"\n";
61 fullString += sizeString;
62 fullString += L"\n";
63
64 if (fileInfo.TimeIsDefined)
65 {
66 UString timeString;
67 FILETIME localFileTime;
68 if (!FileTimeToLocalFileTime(&fileInfo.Time, &localFileTime))
69 throw 4190402;
70 timeString = ConvertFileTimeToString(localFileTime);
71
72 fullString +=
73 #ifdef LANG
74 LangString(IDS_FILE_MODIFIED, 0x02000983);
75 #else
76 MyLoadStringW(IDS_FILE_MODIFIED);
77 #endif
78
79 fullString += L" ";
80 fullString += timeString;
81 }
82
83 NWindows::NControl::CDialogChildControl control;
84 control.Init(*this, textID);
85 control.SetText(fullString);
86
87 #ifdef _WIN32 // FIXME
88 SHFILEINFO shellFileInfo;
89 if (::SHGetFileInfo(
90 GetSystemString(fileInfo.Name), FILE_ATTRIBUTE_NORMAL, &shellFileInfo,
91 sizeof(shellFileInfo), SHGFI_ICON | SHGFI_USEFILEATTRIBUTES | SHGFI_LARGEICON))
92 {
93 NControl::CStatic staticContol;
94 staticContol.Attach(GetItem(iconID));
95 staticContol.SetIcon(shellFileInfo.hIcon);
96 }
97 #endif
98 }
99
OnInit()100 bool COverwriteDialog::OnInit()
101 {
102 #ifdef LANG
103 LangSetWindowText(HWND(*this), 0x02000900);
104 LangSetDlgItemsText(HWND(*this), kIDLangPairs, sizeof(kIDLangPairs) / sizeof(kIDLangPairs[0]));
105 #endif
106 SetFileInfoControl(IDC_STATIC_OVERWRITE_OLD_FILE_SIZE_TIME,
107 IDC_STATIC_OVERWRITE_OLD_FILE_ICON, OldFileInfo);
108 SetFileInfoControl(IDC_STATIC_OVERWRITE_NEW_FILE_SIZE_TIME,
109 IDC_STATIC_OVERWRITE_NEW_FILE_ICON, NewFileInfo);
110 return CModalDialog::OnInit();
111 }
112
OnButtonClicked(int buttonID,HWND buttonHWND)113 bool COverwriteDialog::OnButtonClicked(int buttonID, HWND buttonHWND)
114 {
115 switch(buttonID)
116 {
117 case IDYES:
118 case IDC_BUTTON_OVERWRITE_YES_TO_ALL:
119 case IDNO:
120 case IDC_BUTTON_OVERWRITE_NO_TO_ALL:
121 case IDC_BUTTON_OVERWRITE_AUTO_RENAME:
122 End(buttonID);
123 return true;
124 }
125 return CModalDialog::OnButtonClicked(buttonID, buttonHWND);
126 }
127