mirror of
https://github.com/nillerusr/source-engine.git
synced 2024-12-22 22:27:05 +00:00
251 lines
6.0 KiB
C++
251 lines
6.0 KiB
C++
|
//========= 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();
|
||
|
}
|