xref: /aosp_15_r20/external/lzma/CPP/7zip/UI/FileManager/CopyDialog.cpp (revision f6dc9357d832569d4d1f5d24eacdb3935a1ae8e6)
1*f6dc9357SAndroid Build Coastguard Worker // CopyDialog.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 "../../../Windows/FileName.h"
6*f6dc9357SAndroid Build Coastguard Worker 
7*f6dc9357SAndroid Build Coastguard Worker #include "../../../Windows/Control/Static.h"
8*f6dc9357SAndroid Build Coastguard Worker 
9*f6dc9357SAndroid Build Coastguard Worker #include "BrowseDialog.h"
10*f6dc9357SAndroid Build Coastguard Worker #include "CopyDialog.h"
11*f6dc9357SAndroid Build Coastguard Worker #include "LangUtils.h"
12*f6dc9357SAndroid Build Coastguard Worker 
13*f6dc9357SAndroid Build Coastguard Worker using namespace NWindows;
14*f6dc9357SAndroid Build Coastguard Worker 
OnInit()15*f6dc9357SAndroid Build Coastguard Worker bool CCopyDialog::OnInit()
16*f6dc9357SAndroid Build Coastguard Worker {
17*f6dc9357SAndroid Build Coastguard Worker   #ifdef Z7_LANG
18*f6dc9357SAndroid Build Coastguard Worker   LangSetDlgItems(*this, NULL, 0);
19*f6dc9357SAndroid Build Coastguard Worker   #endif
20*f6dc9357SAndroid Build Coastguard Worker   _path.Attach(GetItem(IDC_COPY));
21*f6dc9357SAndroid Build Coastguard Worker   SetText(Title);
22*f6dc9357SAndroid Build Coastguard Worker 
23*f6dc9357SAndroid Build Coastguard Worker   NControl::CStatic staticContol;
24*f6dc9357SAndroid Build Coastguard Worker   staticContol.Attach(GetItem(IDT_COPY));
25*f6dc9357SAndroid Build Coastguard Worker   staticContol.SetText(Static);
26*f6dc9357SAndroid Build Coastguard Worker   #ifdef UNDER_CE
27*f6dc9357SAndroid Build Coastguard Worker   // we do it, since WinCE selects Value\something instead of Value !!!!
28*f6dc9357SAndroid Build Coastguard Worker   _path.AddString(Value);
29*f6dc9357SAndroid Build Coastguard Worker   #endif
30*f6dc9357SAndroid Build Coastguard Worker   FOR_VECTOR (i, Strings)
31*f6dc9357SAndroid Build Coastguard Worker     _path.AddString(Strings[i]);
32*f6dc9357SAndroid Build Coastguard Worker   _path.SetText(Value);
33*f6dc9357SAndroid Build Coastguard Worker   SetItemText(IDT_COPY_INFO, Info);
34*f6dc9357SAndroid Build Coastguard Worker   NormalizeSize(true);
35*f6dc9357SAndroid Build Coastguard Worker   return CModalDialog::OnInit();
36*f6dc9357SAndroid Build Coastguard Worker }
37*f6dc9357SAndroid Build Coastguard Worker 
OnSize(WPARAM,int xSize,int ySize)38*f6dc9357SAndroid Build Coastguard Worker bool CCopyDialog::OnSize(WPARAM /* wParam */, int xSize, int ySize)
39*f6dc9357SAndroid Build Coastguard Worker {
40*f6dc9357SAndroid Build Coastguard Worker   int mx, my;
41*f6dc9357SAndroid Build Coastguard Worker   GetMargins(8, mx, my);
42*f6dc9357SAndroid Build Coastguard Worker   int bx1, bx2, by;
43*f6dc9357SAndroid Build Coastguard Worker   GetItemSizes(IDCANCEL, bx1, by);
44*f6dc9357SAndroid Build Coastguard Worker   GetItemSizes(IDOK, bx2, by);
45*f6dc9357SAndroid Build Coastguard Worker   const int y = ySize - my - by;
46*f6dc9357SAndroid Build Coastguard Worker   const int x = xSize - mx - bx1;
47*f6dc9357SAndroid Build Coastguard Worker 
48*f6dc9357SAndroid Build Coastguard Worker   InvalidateRect(NULL);
49*f6dc9357SAndroid Build Coastguard Worker 
50*f6dc9357SAndroid Build Coastguard Worker   {
51*f6dc9357SAndroid Build Coastguard Worker     RECT r;
52*f6dc9357SAndroid Build Coastguard Worker     GetClientRectOfItem(IDB_COPY_SET_PATH, r);
53*f6dc9357SAndroid Build Coastguard Worker     const int bx = RECT_SIZE_X(r);
54*f6dc9357SAndroid Build Coastguard Worker     MoveItem(IDB_COPY_SET_PATH, xSize - mx - bx, r.top, bx, RECT_SIZE_Y(r));
55*f6dc9357SAndroid Build Coastguard Worker     ChangeSubWindowSizeX(_path, xSize - mx - mx - bx - mx);
56*f6dc9357SAndroid Build Coastguard Worker   }
57*f6dc9357SAndroid Build Coastguard Worker 
58*f6dc9357SAndroid Build Coastguard Worker   {
59*f6dc9357SAndroid Build Coastguard Worker     RECT r;
60*f6dc9357SAndroid Build Coastguard Worker     GetClientRectOfItem(IDT_COPY_INFO, r);
61*f6dc9357SAndroid Build Coastguard Worker     NControl::CStatic staticContol;
62*f6dc9357SAndroid Build Coastguard Worker     staticContol.Attach(GetItem(IDT_COPY_INFO));
63*f6dc9357SAndroid Build Coastguard Worker     const int yPos = r.top;
64*f6dc9357SAndroid Build Coastguard Worker     staticContol.Move(mx, yPos, xSize - mx * 2, y - 2 - yPos);
65*f6dc9357SAndroid Build Coastguard Worker   }
66*f6dc9357SAndroid Build Coastguard Worker 
67*f6dc9357SAndroid Build Coastguard Worker   MoveItem(IDCANCEL, x, y, bx1, by);
68*f6dc9357SAndroid Build Coastguard Worker   MoveItem(IDOK, x - mx - bx2, y, bx2, by);
69*f6dc9357SAndroid Build Coastguard Worker 
70*f6dc9357SAndroid Build Coastguard Worker   return false;
71*f6dc9357SAndroid Build Coastguard Worker }
72*f6dc9357SAndroid Build Coastguard Worker 
OnButtonClicked(unsigned buttonID,HWND buttonHWND)73*f6dc9357SAndroid Build Coastguard Worker bool CCopyDialog::OnButtonClicked(unsigned buttonID, HWND buttonHWND)
74*f6dc9357SAndroid Build Coastguard Worker {
75*f6dc9357SAndroid Build Coastguard Worker   switch (buttonID)
76*f6dc9357SAndroid Build Coastguard Worker   {
77*f6dc9357SAndroid Build Coastguard Worker     case IDB_COPY_SET_PATH:
78*f6dc9357SAndroid Build Coastguard Worker       OnButtonSetPath();
79*f6dc9357SAndroid Build Coastguard Worker       return true;
80*f6dc9357SAndroid Build Coastguard Worker   }
81*f6dc9357SAndroid Build Coastguard Worker   return CModalDialog::OnButtonClicked(buttonID, buttonHWND);
82*f6dc9357SAndroid Build Coastguard Worker }
83*f6dc9357SAndroid Build Coastguard Worker 
OnButtonSetPath()84*f6dc9357SAndroid Build Coastguard Worker void CCopyDialog::OnButtonSetPath()
85*f6dc9357SAndroid Build Coastguard Worker {
86*f6dc9357SAndroid Build Coastguard Worker   UString currentPath;
87*f6dc9357SAndroid Build Coastguard Worker   _path.GetText(currentPath);
88*f6dc9357SAndroid Build Coastguard Worker 
89*f6dc9357SAndroid Build Coastguard Worker   const UString title = LangString(IDS_SET_FOLDER);
90*f6dc9357SAndroid Build Coastguard Worker 
91*f6dc9357SAndroid Build Coastguard Worker   UString resultPath;
92*f6dc9357SAndroid Build Coastguard Worker   if (!MyBrowseForFolder(*this, title, currentPath, resultPath))
93*f6dc9357SAndroid Build Coastguard Worker     return;
94*f6dc9357SAndroid Build Coastguard Worker   NFile::NName::NormalizeDirPathPrefix(resultPath);
95*f6dc9357SAndroid Build Coastguard Worker   _path.SetCurSel(-1);
96*f6dc9357SAndroid Build Coastguard Worker   _path.SetText(resultPath);
97*f6dc9357SAndroid Build Coastguard Worker }
98*f6dc9357SAndroid Build Coastguard Worker 
OnOK()99*f6dc9357SAndroid Build Coastguard Worker void CCopyDialog::OnOK()
100*f6dc9357SAndroid Build Coastguard Worker {
101*f6dc9357SAndroid Build Coastguard Worker   _path.GetText(Value);
102*f6dc9357SAndroid Build Coastguard Worker   CModalDialog::OnOK();
103*f6dc9357SAndroid Build Coastguard Worker }
104