1 // OverwriteDialog.cpp
\r
5 #include "Common/StringConvert.h"
\r
7 #include "Windows/FileName.h"
\r
8 #include "Windows/Defs.h"
\r
9 #include "Windows/ResourceString.h"
\r
10 #include "Windows/Control/Static.h"
\r
11 #include "Windows/PropVariantConversions.h"
\r
13 #include "FormatUtils.h"
\r
14 #include "OverwriteDialog.h"
\r
16 // #include "../resource.h"
\r
19 #include "LangUtils.h"
\r
22 using namespace NWindows;
\r
25 static CIDLangPair kIDLangPairs[] =
\r
27 { IDC_STATIC_OVERWRITE_HEADER, 0x02000901},
\r
28 { IDC_STATIC_OVERWRITE_QUESTION_BEGIN, 0x02000902 },
\r
29 { IDC_STATIC_OVERWRITE_QUESTION_END, 0x02000903 },
\r
30 { IDYES, 0x02000705 },
\r
31 { IDC_BUTTON_OVERWRITE_YES_TO_ALL, 0x02000707 },
\r
32 { IDNO, 0x02000709 },
\r
33 { IDC_BUTTON_OVERWRITE_NO_TO_ALL,0x0200070B },
\r
34 { IDC_BUTTON_OVERWRITE_AUTO_RENAME, 0x02000911 },
\r
35 { IDCANCEL, 0x02000711 }
\r
39 static const int kCurrentFileNameSizeLimit = 82;
\r
40 static const int kCurrentFileNameSizeLimit2 = 30;
\r
42 void COverwriteDialog::ReduceString(UString &s)
\r
44 int size = _isBig ? kCurrentFileNameSizeLimit : kCurrentFileNameSizeLimit2;
\r
45 if (s.Length() > size)
\r
46 s = s.Left(size / 2) + UString(L" ... ") + s.Right(size / 2);
\r
49 void COverwriteDialog::SetFileInfoControl(int textID, int iconID,
\r
50 const NOverwriteDialog::CFileInfo &fileInfo)
\r
53 if (fileInfo.SizeIsDefined)
\r
54 sizeString = MyFormatNew(IDS_FILE_SIZE,
\r
58 NumberToString(fileInfo.Size));
\r
60 const UString &fileName = fileInfo.Name;
\r
61 int slashPos = fileName.ReverseFind(WCHAR_PATH_SEPARATOR);
\r
65 s1 = fileName.Left(slashPos + 1);
\r
66 s2 = fileName.Mid(slashPos + 1);
\r
73 UString fullString = s1 + L'\n' + s2;
\r
74 fullString += L'\n';
\r
75 fullString += sizeString;
\r
76 fullString += L'\n';
\r
78 if (fileInfo.TimeIsDefined)
\r
81 FILETIME localFileTime;
\r
82 if (!FileTimeToLocalFileTime(&fileInfo.Time, &localFileTime))
\r
84 timeString = ConvertFileTimeToString(localFileTime);
\r
88 LangString(IDS_FILE_MODIFIED, 0x02000983);
\r
90 MyLoadStringW(IDS_FILE_MODIFIED);
\r
94 fullString += timeString;
\r
97 NWindows::NControl::CDialogChildControl control;
\r
98 control.Init(*this, textID);
\r
99 control.SetText(fullString);
\r
101 SHFILEINFO shellFileInfo;
\r
102 if (::SHGetFileInfo(
\r
103 GetSystemString(fileInfo.Name), FILE_ATTRIBUTE_NORMAL, &shellFileInfo,
\r
104 sizeof(shellFileInfo), SHGFI_ICON | SHGFI_USEFILEATTRIBUTES | SHGFI_LARGEICON))
\r
106 NControl::CStatic staticContol;
\r
107 staticContol.Attach(GetItem(iconID));
\r
108 staticContol.SetIcon(shellFileInfo.hIcon);
\r
112 bool COverwriteDialog::OnInit()
\r
115 LangSetWindowText(HWND(*this), 0x02000900);
\r
116 LangSetDlgItemsText(HWND(*this), kIDLangPairs, sizeof(kIDLangPairs) / sizeof(kIDLangPairs[0]));
\r
118 SetFileInfoControl(IDC_STATIC_OVERWRITE_OLD_FILE_SIZE_TIME, IDC_STATIC_OVERWRITE_OLD_FILE_ICON, OldFileInfo);
\r
119 SetFileInfoControl(IDC_STATIC_OVERWRITE_NEW_FILE_SIZE_TIME, IDC_STATIC_OVERWRITE_NEW_FILE_ICON, NewFileInfo);
\r
120 NormalizePosition();
\r
121 return CModalDialog::OnInit();
\r
124 bool COverwriteDialog::OnButtonClicked(int buttonID, HWND buttonHWND)
\r
129 case IDC_BUTTON_OVERWRITE_YES_TO_ALL:
\r
131 case IDC_BUTTON_OVERWRITE_NO_TO_ALL:
\r
132 case IDC_BUTTON_OVERWRITE_AUTO_RENAME:
\r
136 return CModalDialog::OnButtonClicked(buttonID, buttonHWND);
\r