summaryrefslogtreecommitdiff
path: root/tracker/AdminServer/DialogAddBan.cpp
diff options
context:
space:
mode:
authorFluorescentCIAAfricanAmerican <[email protected]>2020-04-22 12:56:21 -0400
committerFluorescentCIAAfricanAmerican <[email protected]>2020-04-22 12:56:21 -0400
commit3bf9df6b2785fa6d951086978a3e66f49427166a (patch)
tree2c0f1f0c63c4832882bc93814ebd2c2b1c6224e5 /tracker/AdminServer/DialogAddBan.cpp
downloadarchived-source-engine-2018-hl2-src-3bf9df6b2785fa6d951086978a3e66f49427166a.tar.xz
archived-source-engine-2018-hl2-src-3bf9df6b2785fa6d951086978a3e66f49427166a.zip
Diffstat (limited to 'tracker/AdminServer/DialogAddBan.cpp')
-rw-r--r--tracker/AdminServer/DialogAddBan.cpp250
1 files changed, 250 insertions, 0 deletions
diff --git a/tracker/AdminServer/DialogAddBan.cpp b/tracker/AdminServer/DialogAddBan.cpp
new file mode 100644
index 0000000..5464ea9
--- /dev/null
+++ b/tracker/AdminServer/DialogAddBan.cpp
@@ -0,0 +1,250 @@
+//========= Copyright Valve Corporation, All rights reserved. ============//
+//
+// Purpose:
+//
+// $NoKeywords: $
+//=============================================================================
+
+#include <stdio.h>
+#include "DialogAddBan.h"
+
+#include <vgui/ISurface.h>
+#include <KeyValues.h>
+
+#include <vgui_controls/Button.h>
+#include <vgui_controls/Label.h>
+#include <vgui_controls/TextEntry.h>
+#include <vgui_controls/CheckButton.h>
+#include <vgui_controls/MessageBox.h>
+
+using namespace vgui;
+
+//-----------------------------------------------------------------------------
+// Purpose: Constructor
+//-----------------------------------------------------------------------------
+CDialogAddBan::CDialogAddBan(vgui::Panel *parent) : Frame(parent, "DialogAddBan")
+{
+ SetSize(320, 200);
+ SetTitle("#Game_Ban_Add_Title", false);
+
+ m_pIDTextEntry = new TextEntry(this, "IDTextEntry");
+
+ m_pOkayButton = new Button(this, "OkayButton", "#Okay_Button");
+
+ m_pPermBanRadio = new RadioButton(this, "PermBanRadio", "#Add_Ban_Time_Permanent");
+ m_pTempBanRadio = new RadioButton(this, "TempBanRadio", "#Add_Ban_Time_Temporary");
+ m_pPermBanRadio->SetSelected(true);
+
+ m_pTimeTextEntry = new TextEntry(this, "TimeTextEntry");
+ m_pTimeCombo = new ComboBox(this, "TimeCombo",3,false);
+ int defaultItem = m_pTimeCombo->AddItem("#Add_Ban_Period_Minutes", NULL);
+ m_pTimeCombo->AddItem("#Add_Ban_Period_Hours", NULL);
+ m_pTimeCombo->AddItem("#Add_Ban_Period_Days", NULL);
+ m_pTimeCombo->ActivateItem(defaultItem);
+
+ LoadControlSettings("Admin\\DialogAddBan.res", "PLATFORM");
+
+ SetTitle("#Add_Ban_Title", true);
+ SetSizeable(false);
+
+ // set our initial position in the middle of the workspace
+ MoveToCenterOfScreen();
+}
+
+//-----------------------------------------------------------------------------
+// Purpose: Destructor
+//-----------------------------------------------------------------------------
+CDialogAddBan::~CDialogAddBan()
+{
+}
+
+
+//-----------------------------------------------------------------------------
+// Purpose: initializes the dialog and brings it to the foreground
+//-----------------------------------------------------------------------------
+void CDialogAddBan::Activate(const char *type,const char *player,const char *authid)
+{
+
+ m_cType=type;
+
+ m_pOkayButton->SetAsDefaultButton(true);
+ MakePopup();
+ MoveToFront();
+
+ RequestFocus();
+ m_pIDTextEntry->RequestFocus();
+ SetVisible(true);
+
+ SetTextEntry("PlayerTextEntry",player);
+ SetTextEntry("IDTextEntry",authid);
+
+ BaseClass::Activate();
+}
+
+//-----------------------------------------------------------------------------
+// Purpose: Sets the text of a labell by name
+//-----------------------------------------------------------------------------
+void CDialogAddBan::SetLabelText(const char *textEntryName, const char *text)
+{
+ Label *entry = dynamic_cast<Label *>(FindChildByName(textEntryName));
+ if (entry)
+ {
+ entry->SetText(text);
+ }
+}
+
+//-----------------------------------------------------------------------------
+// Purpose: Sets the text of a labell by name
+//-----------------------------------------------------------------------------
+void CDialogAddBan::SetTextEntry(const char *textEntryName, const char *text)
+{
+ TextEntry *entry = dynamic_cast<TextEntry *>(FindChildByName(textEntryName));
+ if (entry)
+ {
+ entry->SetText(text);
+ }
+}
+
+bool CDialogAddBan::IsIPCheck()
+{
+ char buf[64];
+ int dotCount=0;
+ m_pIDTextEntry->GetText(buf, sizeof(buf)-1);
+
+ for(unsigned int i=0;i<strlen(buf);i++)
+ {
+ if(buf[i]=='.')
+ {
+ dotCount++;
+ }
+ }
+
+ if(dotCount>0)
+ {
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+}
+
+//-----------------------------------------------------------------------------
+// Purpose:
+//-----------------------------------------------------------------------------
+void CDialogAddBan::OnCommand(const char *command)
+{
+ bool bClose = false;
+
+ if (!stricmp(command, "Okay"))
+ {
+ KeyValues *msg = new KeyValues("AddBanValue");
+ char buf[64],idbuf[64];
+ float time;
+ m_pIDTextEntry->GetText(idbuf, sizeof(idbuf));
+ m_pTimeTextEntry->GetText(buf, 64);
+
+
+ if(strlen(idbuf)<=0)
+ {
+ MessageBox *dlg = new MessageBox("#Add_Ban_Error", "#Add_Ban_ID_Invalid");
+ dlg->DoModal();
+ bClose=false;
+ }
+ else if(strlen(buf)<=0 && !m_pPermBanRadio->IsSelected())
+ {
+ MessageBox *dlg = new MessageBox("#Add_Ban_Error", "#Add_Ban_Time_Empty");
+ dlg->DoModal();
+ bClose=false;
+ }
+ else
+ {
+ if(m_pPermBanRadio->IsSelected())
+ {
+ time=0;
+ }
+ else
+ {
+ sscanf(buf,"%f",&time);
+ m_pTimeCombo->GetText(buf,64);
+ if(strstr(buf,"hour"))
+ {
+ time*=60;
+ }
+ else if(strstr(buf,"day"))
+ {
+ time*=(60*24);
+ }
+ if(time<0)
+ {
+ MessageBox *dlg = new MessageBox("#Add_Ban_Error", "#Add_Ban_Time_Invalid");
+ dlg->DoModal();
+ bClose=false;
+ }
+ }
+
+ if(time>=0)
+ {
+ msg->SetFloat("time", time);
+ msg->SetString("id", idbuf);
+ msg->SetString("type",m_cType);
+ msg->SetInt("ipcheck",IsIPCheck());
+
+ PostActionSignal(msg);
+
+ bClose = true;
+ }
+ }
+
+ }
+ else if (!stricmp(command, "Close"))
+ {
+ bClose = true;
+ }
+ else
+ {
+ BaseClass::OnCommand(command);
+ }
+
+ if (bClose)
+ {
+ Close();
+ }
+}
+
+
+//-----------------------------------------------------------------------------
+// Purpose:
+//-----------------------------------------------------------------------------
+void CDialogAddBan::PerformLayout()
+{
+ BaseClass::PerformLayout();
+}
+
+//-----------------------------------------------------------------------------
+// Purpose: deletes the dialog on close
+//-----------------------------------------------------------------------------
+void CDialogAddBan::OnClose()
+{
+ BaseClass::OnClose();
+ MarkForDeletion();
+}
+
+//-----------------------------------------------------------------------------
+// Purpose: called when the perm/temp ban time radio buttons are pressed
+//-----------------------------------------------------------------------------
+void CDialogAddBan::OnButtonToggled(Panel *panel)
+{
+ if (panel == m_pPermBanRadio)
+ {
+ m_pTimeTextEntry->SetEnabled(false);
+ m_pTimeCombo->SetEnabled(false);
+ }
+ else
+ {
+ m_pTimeTextEntry->SetEnabled(true);
+ m_pTimeCombo->SetEnabled(true);
+ }
+
+ Repaint();
+}