xref: /aosp_15_r20/external/lzma/CPP/7zip/UI/FileManager/MessagesDialog.cpp (revision f6dc9357d832569d4d1f5d24eacdb3935a1ae8e6)
1*f6dc9357SAndroid Build Coastguard Worker // MessagesDialog.cpp
2*f6dc9357SAndroid Build Coastguard Worker 
3*f6dc9357SAndroid Build Coastguard Worker #include "StdAfx.h"
4*f6dc9357SAndroid Build Coastguard Worker 
5*f6dc9357SAndroid Build Coastguard Worker #include "../../../Common/IntToString.h"
6*f6dc9357SAndroid Build Coastguard Worker 
7*f6dc9357SAndroid Build Coastguard Worker #include "../../../Windows/ResourceString.h"
8*f6dc9357SAndroid Build Coastguard Worker 
9*f6dc9357SAndroid Build Coastguard Worker #include "MessagesDialog.h"
10*f6dc9357SAndroid Build Coastguard Worker 
11*f6dc9357SAndroid Build Coastguard Worker #include "LangUtils.h"
12*f6dc9357SAndroid Build Coastguard Worker 
13*f6dc9357SAndroid Build Coastguard Worker #include "ProgressDialog2Res.h"
14*f6dc9357SAndroid Build Coastguard Worker 
15*f6dc9357SAndroid Build Coastguard Worker using namespace NWindows;
16*f6dc9357SAndroid Build Coastguard Worker 
AddMessageDirect(LPCWSTR message)17*f6dc9357SAndroid Build Coastguard Worker void CMessagesDialog::AddMessageDirect(LPCWSTR message)
18*f6dc9357SAndroid Build Coastguard Worker {
19*f6dc9357SAndroid Build Coastguard Worker   const unsigned i = (unsigned)_messageList.GetItemCount();
20*f6dc9357SAndroid Build Coastguard Worker   wchar_t sz[16];
21*f6dc9357SAndroid Build Coastguard Worker   ConvertUInt32ToString(i, sz);
22*f6dc9357SAndroid Build Coastguard Worker   _messageList.InsertItem(i, sz);
23*f6dc9357SAndroid Build Coastguard Worker   _messageList.SetSubItem(i, 1, message);
24*f6dc9357SAndroid Build Coastguard Worker }
25*f6dc9357SAndroid Build Coastguard Worker 
AddMessage(LPCWSTR message)26*f6dc9357SAndroid Build Coastguard Worker void CMessagesDialog::AddMessage(LPCWSTR message)
27*f6dc9357SAndroid Build Coastguard Worker {
28*f6dc9357SAndroid Build Coastguard Worker   UString s = message;
29*f6dc9357SAndroid Build Coastguard Worker   while (!s.IsEmpty())
30*f6dc9357SAndroid Build Coastguard Worker   {
31*f6dc9357SAndroid Build Coastguard Worker     const int pos = s.Find(L'\n');
32*f6dc9357SAndroid Build Coastguard Worker     if (pos < 0)
33*f6dc9357SAndroid Build Coastguard Worker       break;
34*f6dc9357SAndroid Build Coastguard Worker     AddMessageDirect(s.Left(pos));
35*f6dc9357SAndroid Build Coastguard Worker     s.DeleteFrontal((unsigned)pos + 1);
36*f6dc9357SAndroid Build Coastguard Worker   }
37*f6dc9357SAndroid Build Coastguard Worker   AddMessageDirect(s);
38*f6dc9357SAndroid Build Coastguard Worker }
39*f6dc9357SAndroid Build Coastguard Worker 
OnInit()40*f6dc9357SAndroid Build Coastguard Worker bool CMessagesDialog::OnInit()
41*f6dc9357SAndroid Build Coastguard Worker {
42*f6dc9357SAndroid Build Coastguard Worker   #ifdef Z7_LANG
43*f6dc9357SAndroid Build Coastguard Worker   LangSetWindowText(*this, IDD_MESSAGES);
44*f6dc9357SAndroid Build Coastguard Worker   LangSetDlgItems(*this, NULL, 0);
45*f6dc9357SAndroid Build Coastguard Worker   SetItemText(IDOK, LangString(IDS_CLOSE));
46*f6dc9357SAndroid Build Coastguard Worker   #endif
47*f6dc9357SAndroid Build Coastguard Worker   _messageList.Attach(GetItem(IDL_MESSAGE));
48*f6dc9357SAndroid Build Coastguard Worker   _messageList.SetUnicodeFormat();
49*f6dc9357SAndroid Build Coastguard Worker 
50*f6dc9357SAndroid Build Coastguard Worker   _messageList.InsertColumn(0, L"", 30);
51*f6dc9357SAndroid Build Coastguard Worker   _messageList.InsertColumn(1, LangString(IDS_MESSAGE), 600);
52*f6dc9357SAndroid Build Coastguard Worker 
53*f6dc9357SAndroid Build Coastguard Worker   FOR_VECTOR (i, *Messages)
54*f6dc9357SAndroid Build Coastguard Worker     AddMessage((*Messages)[i]);
55*f6dc9357SAndroid Build Coastguard Worker 
56*f6dc9357SAndroid Build Coastguard Worker   _messageList.SetColumnWidthAuto(0);
57*f6dc9357SAndroid Build Coastguard Worker   _messageList.SetColumnWidthAuto(1);
58*f6dc9357SAndroid Build Coastguard Worker   NormalizeSize();
59*f6dc9357SAndroid Build Coastguard Worker   return CModalDialog::OnInit();
60*f6dc9357SAndroid Build Coastguard Worker }
61*f6dc9357SAndroid Build Coastguard Worker 
OnSize(WPARAM,int xSize,int ySize)62*f6dc9357SAndroid Build Coastguard Worker bool CMessagesDialog::OnSize(WPARAM /* wParam */, int xSize, int ySize)
63*f6dc9357SAndroid Build Coastguard Worker {
64*f6dc9357SAndroid Build Coastguard Worker   int mx, my;
65*f6dc9357SAndroid Build Coastguard Worker   GetMargins(8, mx, my);
66*f6dc9357SAndroid Build Coastguard Worker   int bx, by;
67*f6dc9357SAndroid Build Coastguard Worker   GetItemSizes(IDOK, bx, by);
68*f6dc9357SAndroid Build Coastguard Worker   int y = ySize - my - by;
69*f6dc9357SAndroid Build Coastguard Worker   int x = xSize - mx - bx;
70*f6dc9357SAndroid Build Coastguard Worker 
71*f6dc9357SAndroid Build Coastguard Worker   InvalidateRect(NULL);
72*f6dc9357SAndroid Build Coastguard Worker 
73*f6dc9357SAndroid Build Coastguard Worker   MoveItem(IDOK, x, y, bx, by);
74*f6dc9357SAndroid Build Coastguard Worker   _messageList.Move(mx, my, xSize - mx * 2, y - my * 2);
75*f6dc9357SAndroid Build Coastguard Worker   return false;
76*f6dc9357SAndroid Build Coastguard Worker }
77