From ed7b84a9b5bcfa0ee4cdc3e17e9396325f24751e Mon Sep 17 00:00:00 2001
From: Hero010h <163765999+Hero010h@users.noreply.github.com>
Date: Tue, 31 Dec 2024 23:52:03 +0300
Subject: [PATCH] =?UTF-8?q?=D0=9F=D0=B5=D1=80=D0=B2=D1=8B=D0=B5=20(=D0=BF?=
=?UTF-8?q?=D0=BE)=D0=BF=D1=8B=D1=82=D0=BA=D0=B8=20=D1=81=D0=BE=D0=B7?=
=?UTF-8?q?=D0=B4=D0=B0=D0=BD=D0=B8=D1=8F=20=D0=BF=D0=B0=D0=BD=D0=B5=D0=BB?=
=?UTF-8?q?=D0=B8?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../UI/Tabs/AdminTab/AdminTab.xaml | 1 +
.../UI/Tabs/AdminTab/HoursPanel.xaml | 22 +++
.../UI/Tabs/AdminTab/HoursPanel.xaml.cs | 127 ++++++++++++++++++
3 files changed, 150 insertions(+)
create mode 100644 Content.Client/Administration/UI/Tabs/AdminTab/HoursPanel.xaml
create mode 100644 Content.Client/Administration/UI/Tabs/AdminTab/HoursPanel.xaml.cs
diff --git a/Content.Client/Administration/UI/Tabs/AdminTab/AdminTab.xaml b/Content.Client/Administration/UI/Tabs/AdminTab/AdminTab.xaml
index 32ef267ba8..d7d1dee90c 100644
--- a/Content.Client/Administration/UI/Tabs/AdminTab/AdminTab.xaml
+++ b/Content.Client/Administration/UI/Tabs/AdminTab/AdminTab.xaml
@@ -18,6 +18,7 @@
+
diff --git a/Content.Client/Administration/UI/Tabs/AdminTab/HoursPanel.xaml b/Content.Client/Administration/UI/Tabs/AdminTab/HoursPanel.xaml
new file mode 100644
index 0000000000..ab726e6e19
--- /dev/null
+++ b/Content.Client/Administration/UI/Tabs/AdminTab/HoursPanel.xaml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Content.Client/Administration/UI/Tabs/AdminTab/HoursPanel.xaml.cs b/Content.Client/Administration/UI/Tabs/AdminTab/HoursPanel.xaml.cs
new file mode 100644
index 0000000000..78c1fb1d66
--- /dev/null
+++ b/Content.Client/Administration/UI/Tabs/AdminTab/HoursPanel.xaml.cs
@@ -0,0 +1,127 @@
+using System.Linq;
+using Content.Client.Administration.UI.CustomControls;
+using Content.Shared.Administration;
+using Content.Shared.Roles;
+using JetBrains.Annotations;
+using Robust.Client.AutoGenerated;
+using Robust.Client.Console;
+using Robust.Client.UserInterface.Controls;
+using Robust.Client.UserInterface.CustomControls;
+using Robust.Client.UserInterface.XAML;
+using Robust.Shared.Utility;
+using Robust.Client.Graphics;
+using Robust.Client.UserInterface;
+using Robust.Shared.Prototypes;
+using static Robust.Client.UserInterface.Controls.LineEdit;
+using Content.Shared.Players.PlayTimeTracking;
+
+namespace Content.Client.Administration.UI.Tabs.AdminTab;
+
+[GenerateTypedNameReferences]
+[UsedImplicitly]
+public sealed partial class HoursPanel : DefaultWindow
+{
+ private enum Roles
+ {
+ Overall,
+
+ //Write in alphabetical order!
+
+ AtmosphericTechnician,
+ Bartender,
+ Bomzh,
+ Borg,
+ Botanist,
+ Boxer,
+ Brigmedic,
+ Captain,
+ CargoTechnician,
+ Chaplain,
+ Chef,
+ Chemist,
+ ChiefEngineer,
+ ChiefMedicalOfficer,
+ Clown,
+ Detective,
+ HeadOfPersonnel,
+ HeadOfSecurity,
+ Inspector,
+ Janitor,
+ Lawyer,
+ Librarian,
+ Maid,
+ MedicalDoctor,
+ MedicalIntern,
+ Mime,
+ Musician,
+ Paramedic,
+ Passenger,
+ Psychologist,
+ Quartermaster,
+ Reporter,
+ ResearchAssistant,
+ ResearchDirector,
+ SalvageSpecialist,
+ Scientist,
+ SecurityCadet,
+ SecurityOfficer,
+ SeniorEngineer,
+ SeniorOfficer,
+ SeniorPhysician,
+ SeniorResearcher,
+ ServiceWorker,
+ StationEngineer,
+ TechnicalAssistant,
+ Visitor,
+ Warden,
+ Zookeeper
+ }
+
+
+ public HoursPanel()
+ {
+ RobustXamlLoader.Load(this);
+ PlayerList.OnSelectionChanged += OnPlayerSelectionChanged;
+ HourButton.OnPressed += _ => AddMinutes(60);
+ MinutesLine.OnTextChanged += UpdateButtonsText;
+
+ foreach (var proto in IoCManager.Resolve().EnumeratePrototypes())
+ {
+
+ }
+
+ }
+ private bool TryGetMinutes(string str, out uint minutes)
+ {
+ minutes = 0;
+ return string.IsNullOrWhiteSpace(str) || uint.TryParse(str, out minutes);
+ }
+ private void AddMinutes(uint add)
+ {
+ if (!TryGetMinutes(MinutesLine.Text, out var minutes))
+ return;
+
+ MinutesLine.Text = $"{minutes + add}";
+ UpdateButtons(minutes + add);
+ }
+ private void UpdateButtonsText(LineEditEventArgs obj)
+ {
+ if (!TryGetMinutes(obj.Text, out var minutes))
+ return;
+
+ UpdateButtons(minutes);
+ }
+ private void UpdateButtons(uint minutes)
+ {
+ HourButton.Text = $"+1h ({minutes / 60})";
+ }
+ private void OnNamesChanged()
+ {
+ SubmitButton.Disabled = string.IsNullOrEmpty(PlayerNameLine.Text);
+ }
+ private void OnPlayerSelectionChanged(PlayerInfo? player)
+ {
+ PlayerNameLine.Text = player?.Username ?? string.Empty;
+ OnNamesChanged();
+ }
+}