mirror of
https://git.vladimir.cc/vladimir/ewsdr.git
synced 2026-08-25 20:37:33 +00:00
Polish device dialog layout
This commit is contained in:
+92
-52
@@ -136,7 +136,15 @@ const
|
|||||||
CLR_BORDER = TColor($00303030);
|
CLR_BORDER = TColor($00303030);
|
||||||
CLR_ACCENT = TColor($0040FF80);
|
CLR_ACCENT = TColor($0040FF80);
|
||||||
CLR_AUTO = TColor($0000CCFF); // цвет авто-устройства
|
CLR_AUTO = TColor($0000CCFF); // цвет авто-устройства
|
||||||
BTN_H = 24;
|
DLG_W = 760;
|
||||||
|
DLG_H = 500;
|
||||||
|
GAP = 12;
|
||||||
|
PAD = 14;
|
||||||
|
BTN_H = 28;
|
||||||
|
EDIT_H = 26;
|
||||||
|
PANEL_H = 412;
|
||||||
|
LEFT_W = 348;
|
||||||
|
RIGHT_W = 372;
|
||||||
|
|
||||||
{ TDeviceDialog }
|
{ TDeviceDialog }
|
||||||
|
|
||||||
@@ -144,8 +152,8 @@ constructor TDeviceDialog.Create(AOwner: TComponent);
|
|||||||
begin
|
begin
|
||||||
inherited CreateNew(AOwner);
|
inherited CreateNew(AOwner);
|
||||||
Caption := 'Device Selection';
|
Caption := 'Device Selection';
|
||||||
Width := 660;
|
Width := DLG_W;
|
||||||
Height := 420;
|
Height := DLG_H;
|
||||||
Position := poScreenCenter;
|
Position := poScreenCenter;
|
||||||
BorderStyle := bsDialog;
|
BorderStyle := bsDialog;
|
||||||
Color := CLR_BG;
|
Color := CLR_BG;
|
||||||
@@ -158,6 +166,7 @@ begin
|
|||||||
FResult.Accepted := False;
|
FResult.Accepted := False;
|
||||||
|
|
||||||
BuildUI;
|
BuildUI;
|
||||||
|
SetTheme(DarkTheme);
|
||||||
LoadSaved;
|
LoadSaved;
|
||||||
RefreshSavedList;
|
RefreshSavedList;
|
||||||
end;
|
end;
|
||||||
@@ -165,21 +174,7 @@ end;
|
|||||||
function TDeviceDialog.MakeBtn(AParent: TWinControl; const Cap: string;
|
function TDeviceDialog.MakeBtn(AParent: TWinControl; const Cap: string;
|
||||||
X, Y, W, H: Integer; AClick: TNotifyEvent): TFlatButton;
|
X, Y, W, H: Integer; AClick: TNotifyEvent): TFlatButton;
|
||||||
begin
|
begin
|
||||||
Result := TFlatButton.Create(Self);
|
Result := MakeFlatBtn(AParent, Cap, X, Y, W, H, AClick);
|
||||||
Result.Parent := AParent;
|
|
||||||
Result.Caption := Cap;
|
|
||||||
Result.Left := X; Result.Top := Y;
|
|
||||||
Result.Width := W; Result.Height := H;
|
|
||||||
Result.OnClick := AClick;
|
|
||||||
Result.Font.Name := 'Courier New';
|
|
||||||
Result.Font.Size := 8;
|
|
||||||
Result.Font.Color := CLR_TEXT;
|
|
||||||
Result.ClrNorm := CLR_PANEL;
|
|
||||||
Result.ClrBorder := TColor($00404040);
|
|
||||||
Result.ClrHot := TColor($00303030);
|
|
||||||
Result.ClrActive := TColor($00003300);
|
|
||||||
Result.ClrText := CLR_TEXT;
|
|
||||||
Result.ClrTextAct := TColor($0000FF88);
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TDeviceDialog.MakeLbl(AParent: TWinControl; const Cap: string;
|
function TDeviceDialog.MakeLbl(AParent: TWinControl; const Cap: string;
|
||||||
@@ -195,22 +190,24 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TDeviceDialog.BuildUI;
|
procedure TDeviceDialog.BuildUI;
|
||||||
|
const
|
||||||
|
LabelH = 18;
|
||||||
var
|
var
|
||||||
LblHint: TLabel;
|
LblHint: TLabel;
|
||||||
Ed: TEdit;
|
FieldTop, ButtonsTop, BottomTop: Integer;
|
||||||
begin
|
begin
|
||||||
// --- Левая панель: сохранённые устройства ---
|
// --- Левая панель: сохранённые устройства ---
|
||||||
PanelLeft := TPanel.Create(Self);
|
PanelLeft := TPanel.Create(Self);
|
||||||
PanelLeft.Parent := Self;
|
PanelLeft.Parent := Self;
|
||||||
PanelLeft.SetBounds(8, 8, 300, 360);
|
PanelLeft.SetBounds(GAP, GAP, LEFT_W, PANEL_H);
|
||||||
PanelLeft.BevelOuter := bvNone;
|
PanelLeft.BevelOuter := bvNone;
|
||||||
PanelLeft.Color := CLR_PANEL;
|
PanelLeft.Color := CLR_PANEL;
|
||||||
|
|
||||||
MakeLbl(PanelLeft, 'SAVED DEVICES', 6, 6);
|
MakeLbl(PanelLeft, 'SAVED DEVICES', PAD, PAD);
|
||||||
|
|
||||||
LstSaved := TListBox.Create(Self);
|
LstSaved := TListBox.Create(Self);
|
||||||
LstSaved.Parent := PanelLeft;
|
LstSaved.Parent := PanelLeft;
|
||||||
LstSaved.SetBounds(4, 22, 292, 140);
|
LstSaved.SetBounds(PAD, PAD + LabelH, LEFT_W - PAD * 2, 174);
|
||||||
LstSaved.Color := CLR_BG;
|
LstSaved.Color := CLR_BG;
|
||||||
LstSaved.Font.Color:= CLR_TEXT;
|
LstSaved.Font.Color:= CLR_TEXT;
|
||||||
LstSaved.Font.Name := 'Courier New';
|
LstSaved.Font.Name := 'Courier New';
|
||||||
@@ -218,79 +215,122 @@ begin
|
|||||||
LstSaved.OnClick := @LstSavedClick;
|
LstSaved.OnClick := @LstSavedClick;
|
||||||
LstSaved.OnDblClick := @LstSavedDblClick;
|
LstSaved.OnDblClick := @LstSavedDblClick;
|
||||||
|
|
||||||
MakeLbl(PanelLeft, 'Name:', 6, 170);
|
FieldTop := 212;
|
||||||
|
MakeLbl(PanelLeft, 'Name:', PAD, FieldTop + 5);
|
||||||
EdName := TEdit.Create(Self);
|
EdName := TEdit.Create(Self);
|
||||||
EdName.Parent := PanelLeft;
|
EdName.Parent := PanelLeft;
|
||||||
EdName.SetBounds(50, 167, 140, BTN_H);
|
EdName.SetBounds(76, FieldTop, LEFT_W - 76 - PAD, EDIT_H);
|
||||||
EdName.Color := CLR_BG;
|
EdName.Color := CLR_BG;
|
||||||
EdName.Font.Color:= CLR_TEXT;
|
EdName.Font.Color:= CLR_TEXT;
|
||||||
EdName.Font.Name := 'Courier New';
|
EdName.Font.Name := 'Courier New';
|
||||||
EdName.Font.Size := 8;
|
EdName.Font.Size := 8;
|
||||||
|
|
||||||
MakeLbl(PanelLeft, 'IP:', 6, 198);
|
Inc(FieldTop, EDIT_H + 10);
|
||||||
|
MakeLbl(PanelLeft, 'IP:', PAD, FieldTop + 5);
|
||||||
EdIP := TEdit.Create(Self);
|
EdIP := TEdit.Create(Self);
|
||||||
EdIP.Parent := PanelLeft;
|
EdIP.Parent := PanelLeft;
|
||||||
EdIP.SetBounds(50, 195, 140, BTN_H);
|
EdIP.SetBounds(76, FieldTop, LEFT_W - 76 - PAD, EDIT_H);
|
||||||
EdIP.Color := CLR_BG;
|
EdIP.Color := CLR_BG;
|
||||||
EdIP.Font.Color:= CLR_TEXT;
|
EdIP.Font.Color:= CLR_TEXT;
|
||||||
EdIP.Font.Name := 'Courier New';
|
EdIP.Font.Name := 'Courier New';
|
||||||
EdIP.Font.Size := 8;
|
EdIP.Font.Size := 8;
|
||||||
EdIP.TextHint := '192.168.1.x';
|
EdIP.TextHint := '192.168.1.x';
|
||||||
|
|
||||||
BtnAdd := MakeBtn(PanelLeft, 'ADD', 6, 225, 70, BTN_H, @BtnAddClick);
|
ButtonsTop := FieldTop + EDIT_H + 12;
|
||||||
BtnRemove := MakeBtn(PanelLeft, 'REMOVE', 80, 225, 70, BTN_H, @BtnRemoveClick);
|
BtnAdd := MakeBtn(PanelLeft, 'ADD', PAD, ButtonsTop, 94, BTN_H, @BtnAddClick);
|
||||||
|
BtnRemove := MakeBtn(PanelLeft, 'REMOVE', PAD + 102, ButtonsTop, 94, BTN_H, @BtnRemoveClick);
|
||||||
|
|
||||||
BtnSetAuto := MakeBtn(PanelLeft, 'SET AUTOSTART', 6, 255, 130, BTN_H, @BtnSetAutoClick);
|
Inc(ButtonsTop, BTN_H + 8);
|
||||||
LblHint := MakeLbl(PanelLeft, '* = autostart', 150, 260);
|
BtnSetAuto := MakeBtn(PanelLeft, 'SET AUTOSTART', PAD, ButtonsTop, 154, BTN_H, @BtnSetAutoClick);
|
||||||
|
LblHint := MakeLbl(PanelLeft, '* = autostart', PAD + 168, ButtonsTop + 6);
|
||||||
LblHint.Font.Color := CLR_AUTO;
|
LblHint.Font.Color := CLR_AUTO;
|
||||||
|
|
||||||
BtnConnect := MakeBtn(PanelLeft, 'CONNECT', 6, 295, 130, BTN_H+4, @BtnConnectClick);
|
BottomTop := PANEL_H - PAD - BTN_H - 6;
|
||||||
|
BtnConnect := MakeBtn(PanelLeft, 'CONNECT', PAD, BottomTop, LEFT_W - PAD * 2, BTN_H + 6, @BtnConnectClick);
|
||||||
BtnConnect.ClrText := CLR_ACCENT;
|
BtnConnect.ClrText := CLR_ACCENT;
|
||||||
BtnConnect.ClrTextAct := CLR_ACCENT;
|
BtnConnect.ClrTextAct := CLR_ACCENT;
|
||||||
|
|
||||||
// --- Правая панель: discovery ---
|
// --- Правая панель: discovery ---
|
||||||
PanelRight := TPanel.Create(Self);
|
PanelRight := TPanel.Create(Self);
|
||||||
PanelRight.Parent := Self;
|
PanelRight.Parent := Self;
|
||||||
PanelRight.SetBounds(320, 8, 330, 360);
|
PanelRight.SetBounds(GAP + LEFT_W + GAP, GAP, RIGHT_W, PANEL_H);
|
||||||
PanelRight.BevelOuter := bvNone;
|
PanelRight.BevelOuter := bvNone;
|
||||||
PanelRight.Color := CLR_PANEL;
|
PanelRight.Color := CLR_PANEL;
|
||||||
|
|
||||||
MakeLbl(PanelRight, 'DISCOVERED DEVICES', 6, 6);
|
MakeLbl(PanelRight, 'DISCOVERED DEVICES', PAD, PAD);
|
||||||
|
|
||||||
LstFound := TListBox.Create(Self);
|
LstFound := TListBox.Create(Self);
|
||||||
LstFound.Parent := PanelRight;
|
LstFound.Parent := PanelRight;
|
||||||
LstFound.SetBounds(4, 22, 322, 190);
|
LstFound.SetBounds(PAD, PAD + LabelH, RIGHT_W - PAD * 2, 250);
|
||||||
LstFound.Color := CLR_BG;
|
LstFound.Color := CLR_BG;
|
||||||
LstFound.Font.Color:= CLR_TEXT;
|
LstFound.Font.Color:= CLR_TEXT;
|
||||||
LstFound.Font.Name := 'Courier New';
|
LstFound.Font.Name := 'Courier New';
|
||||||
LstFound.Font.Size := 8;
|
LstFound.Font.Size := 8;
|
||||||
LstFound.OnDblClick := @LstFoundDblClick;
|
LstFound.OnDblClick := @LstFoundDblClick;
|
||||||
|
|
||||||
BtnDiscover := MakeBtn(PanelRight, 'DISCOVER', 6, 220, 100, BTN_H, @BtnDiscoverClick);
|
ButtonsTop := PAD + LabelH + 250 + 14;
|
||||||
BtnAddFound := MakeBtn(PanelRight, 'SAVE DEVICE', 6, 250, 100, BTN_H, @BtnAddFoundClick);
|
BtnDiscover := MakeBtn(PanelRight, 'DISCOVER', PAD, ButtonsTop, 116, BTN_H, @BtnDiscoverClick);
|
||||||
|
BtnAddFound := MakeBtn(PanelRight, 'SAVE DEVICE', PAD + 128, ButtonsTop, 140, BTN_H, @BtnAddFoundClick);
|
||||||
|
|
||||||
BtnCancel := MakeBtn(PanelRight, 'CANCEL', 220, 295, 100, BTN_H+4, @BtnCancelClick);
|
BtnCancel := MakeBtn(PanelRight, 'CANCEL', RIGHT_W - PAD - 116, BottomTop, 116, BTN_H + 6, @BtnCancelClick);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TDeviceDialog.ApplyTheme;
|
procedure TDeviceDialog.ApplyTheme;
|
||||||
begin
|
begin
|
||||||
|
SetTheme(DarkTheme);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TDeviceDialog.SetTheme(const T: TAppTheme);
|
procedure TDeviceDialog.SetTheme(const T: TAppTheme);
|
||||||
|
|
||||||
procedure StyleBtn(B: TFlatButton; Accent: Boolean);
|
procedure StyleButton(B: TFlatButton; Active: Boolean);
|
||||||
begin
|
begin
|
||||||
B.ClrNorm := T.Panel;
|
if B = nil then Exit;
|
||||||
B.ClrBorder := T.Border;
|
B.Active := Active;
|
||||||
B.ClrHot := T.BG;
|
B.ClrNorm := T.BtnNorm;
|
||||||
B.ClrActive := T.Panel;
|
B.ClrActive := T.BtnActive;
|
||||||
B.ClrText := T.Text;
|
B.ClrHot := T.BtnHot;
|
||||||
if Accent then B.ClrTextAct := T.FreqActive
|
if Active then B.ClrBorder := T.BtnBorderActive
|
||||||
else B.ClrTextAct := T.Text;
|
else B.ClrBorder := T.BtnBorderNorm;
|
||||||
|
B.ClrText := T.BtnText;
|
||||||
|
B.ClrTextAct := T.BtnTextActive;
|
||||||
|
B.Font.Name := 'Courier New';
|
||||||
|
B.Font.Size := 8;
|
||||||
B.Font.Color := T.Text;
|
B.Font.Color := T.Text;
|
||||||
B.Invalidate;
|
B.Invalidate;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure StyleDiscoverButton(B: TFlatButton);
|
||||||
|
begin
|
||||||
|
if B = nil then Exit;
|
||||||
|
B.Active := False;
|
||||||
|
B.ClrNorm := T.TbDiscoverNorm;
|
||||||
|
B.ClrHot := T.TbDiscoverHot;
|
||||||
|
B.ClrActive := T.TbDiscoverHot;
|
||||||
|
B.ClrBorder := T.TbDiscoverBorder;
|
||||||
|
B.ClrText := T.TbDiscoverText;
|
||||||
|
B.ClrTextAct := T.TbDiscoverText;
|
||||||
|
B.Font.Name := 'Courier New';
|
||||||
|
B.Font.Size := 8;
|
||||||
|
B.Font.Color := T.TbDiscoverText;
|
||||||
|
B.Invalidate;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure StyleConnectButton(B: TFlatButton);
|
||||||
|
begin
|
||||||
|
if B = nil then Exit;
|
||||||
|
B.Active := False;
|
||||||
|
B.ClrNorm := T.TbStartNorm;
|
||||||
|
B.ClrActive := T.BtnActive;
|
||||||
|
B.ClrHot := T.BtnHot;
|
||||||
|
B.ClrBorder := T.TbStartBorder;
|
||||||
|
B.ClrText := T.TbStartText;
|
||||||
|
B.ClrTextAct := T.TbStartText;
|
||||||
|
B.Font.Name := 'Courier New';
|
||||||
|
B.Font.Size := 8;
|
||||||
|
B.Font.Color := T.TbStartText;
|
||||||
|
B.Invalidate;
|
||||||
|
end;
|
||||||
|
|
||||||
procedure WalkLabels(C: TWinControl);
|
procedure WalkLabels(C: TWinControl);
|
||||||
var i: Integer; Ctrl: TControl;
|
var i: Integer; Ctrl: TControl;
|
||||||
begin
|
begin
|
||||||
@@ -317,13 +357,13 @@ begin
|
|||||||
LstFound.Color := T.BG;
|
LstFound.Color := T.BG;
|
||||||
LstFound.Font.Color := T.Text;
|
LstFound.Font.Color := T.Text;
|
||||||
end;
|
end;
|
||||||
if BtnAdd <> nil then StyleBtn(BtnAdd, False);
|
StyleButton(BtnAdd, False);
|
||||||
if BtnRemove <> nil then StyleBtn(BtnRemove, False);
|
StyleButton(BtnRemove, False);
|
||||||
if BtnSetAuto <> nil then StyleBtn(BtnSetAuto, False);
|
StyleButton(BtnSetAuto, False);
|
||||||
if BtnDiscover <> nil then StyleBtn(BtnDiscover, False);
|
StyleDiscoverButton(BtnDiscover);
|
||||||
if BtnAddFound <> nil then StyleBtn(BtnAddFound, False);
|
StyleButton(BtnAddFound, False);
|
||||||
if BtnCancel <> nil then StyleBtn(BtnCancel, False);
|
StyleButton(BtnCancel, False);
|
||||||
if BtnConnect <> nil then StyleBtn(BtnConnect, True);
|
StyleConnectButton(BtnConnect);
|
||||||
// Edit fields: white bg for light theme, dark bg for dark theme
|
// Edit fields: white bg for light theme, dark bg for dark theme
|
||||||
if Integer(T.BG) > Integer(TColor($00808080)) then
|
if Integer(T.BG) > Integer(TColor($00808080)) then
|
||||||
begin
|
begin
|
||||||
|
|||||||
Reference in New Issue
Block a user