summaryrefslogtreecommitdiff
path: root/tracker/AdminServer/DialogAddServer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tracker/AdminServer/DialogAddServer.cpp')
-rw-r--r--tracker/AdminServer/DialogAddServer.cpp109
1 files changed, 109 insertions, 0 deletions
diff --git a/tracker/AdminServer/DialogAddServer.cpp b/tracker/AdminServer/DialogAddServer.cpp
new file mode 100644
index 0000000..699fbf9
--- /dev/null
+++ b/tracker/AdminServer/DialogAddServer.cpp
@@ -0,0 +1,109 @@
+//========= Copyright Valve Corporation, All rights reserved. ============//
+//
+// Purpose:
+//
+// $NoKeywords: $
+//=============================================================================
+
+#include "DialogAddServer.h"
+#include "INetAPI.h"
+#include "IGameList.h"
+#include "Server.h"
+
+#include <VGUI_MessageBox.h>
+#include <VGUI_KeyValues.h>
+
+using namespace vgui;
+
+//-----------------------------------------------------------------------------
+// Purpose: Constructor
+// Input : *gameList - game list to add specified server to
+//-----------------------------------------------------------------------------
+CDialogAddServer::CDialogAddServer(IGameList *gameList) : Frame(NULL, "DialogAddServer")
+{
+ MakePopup();
+
+ m_pGameList = gameList;
+
+ SetTitle("Add Server - Servers", true);
+
+ LoadControlSettings("Admin\\DialogAddServer.res");
+}
+
+//-----------------------------------------------------------------------------
+// Purpose: Destructor
+//-----------------------------------------------------------------------------
+CDialogAddServer::~CDialogAddServer()
+{
+}
+
+//-----------------------------------------------------------------------------
+// Purpose: Activates this dialog
+//-----------------------------------------------------------------------------
+void CDialogAddServer::Open()
+{
+ MoveToFront();
+ RequestFocus();
+}
+
+//-----------------------------------------------------------------------------
+// Purpose:
+// Input : *command -
+//-----------------------------------------------------------------------------
+void CDialogAddServer::OnCommand(const char *command)
+{
+ if (!stricmp(command, "OK"))
+ {
+ OnOK();
+ }
+ else
+ {
+ BaseClass::OnCommand(command);
+ }
+}
+
+//-----------------------------------------------------------------------------
+// Purpose: Handles the OK button being pressed; adds the server to the game list
+//-----------------------------------------------------------------------------
+void CDialogAddServer::OnOK()
+{
+ // try and parse out IP address
+ const char *address = GetControlString("ServerNameText", "");
+ netadr_t netaddr;
+ if (net->StringToAdr(address, &netaddr))
+ {
+ // net address successfully parsed, add the server to the game list
+ serveritem_t server;
+ memset(&server, 0, sizeof(server));
+ for (int i = 0; i < 4; i++)
+ {
+ server.ip[i] = netaddr.ip[i];
+ }
+ server.port = (netaddr.port & 0xff) << 8 | (netaddr.port & 0xff00) >> 8;;
+ if (!server.port)
+ {
+ // use the default port since it was not entered
+ server.port = 27015;
+ }
+ m_pGameList->AddNewServer(server);
+ m_pGameList->StartRefresh();
+ }
+ else
+ {
+ // could not parse the ip address, popup an error
+ MessageBox *dlg = new MessageBox("Add Server - Error", "The server IP address you entered is invalid.");
+ dlg->DoModal();
+ }
+
+ // mark ourselves to be closed
+ PostMessage(this, new KeyValues("Close"));
+}
+
+//-----------------------------------------------------------------------------
+// Purpose: Deletes dialog on close
+//-----------------------------------------------------------------------------
+void CDialogAddServer::OnClose()
+{
+ BaseClass::OnClose();
+ MarkForDeletion();
+}