void ServerDialog::connectToSelectedServer() { if (client->getState() == State::CONNECT_SERVER) return; const int index = mServersList->getSelected(); if (index < 0) return; if (mDownload) mDownload->cancel(); mQuitButton->setEnabled(false); mConnectButton->setEnabled(false); mLoadButton->setEnabled(false); ServerInfo server = mServers.at(index); mServerInfo->hostname = server.hostname; mServerInfo->althostname = server.althostname; mServerInfo->port = server.port; mServerInfo->type = server.type; mServerInfo->name = server.name; mServerInfo->description = server.description; mServerInfo->registerUrl = server.registerUrl; mServerInfo->onlineListUrl = server.onlineListUrl; mServerInfo->supportUrl = server.supportUrl; mServerInfo->save = true; mServerInfo->persistentIp = server.persistentIp; mServerInfo->updateMirrors = server.updateMirrors; mServerInfo->packetVersion = server.packetVersion; settings.persistentIp = mServerInfo->persistentIp; settings.supportUrl = mServerInfo->supportUrl; settings.updateMirrors = mServerInfo->updateMirrors; if (chatLogger) chatLogger->setServerName(mServerInfo->hostname); saveCustomServers(*mServerInfo); if (!LoginDialog::savedPasswordKey.empty()) { if (mServerInfo->hostname != LoginDialog::savedPasswordKey) { LoginDialog::savedPassword.clear(); if (desktop) desktop->reloadWallpaper(); } } config.setValue("usePersistentIP", mPersistentIPCheckBox->isSelected()); client->setState(State::CONNECT_SERVER); }
void ServerDialog::keyPressed(KeyEvent &event) { switch (event.getActionId()) { case InputAction::GUI_CANCEL: event.consume(); client->setState(STATE_EXIT); return; case InputAction::GUI_SELECT: case InputAction::GUI_SELECT2: event.consume(); action(ActionEvent(nullptr, mConnectButton->getActionEventId())); return; case InputAction::GUI_INSERT: (new EditServerDialog(this, ServerInfo(), -1))->postInit(); return; case InputAction::GUI_DELETE: { const int index = mServersList->getSelected(); if (index >= 0) { mServersList->setSelected(0); mServers.erase(mServers.begin() + index); saveCustomServers(); } return; } case InputAction::GUI_BACKSPACE: { const int index = mServersList->getSelected(); if (index >= 0) { (new EditServerDialog(this, mServers.at(index), index))->postInit(); } return; } default: break; } if (!event.isConsumed()) mServersList->keyPressed(event); }
void ServerDialog::action(const ActionEvent &event) { const std::string &eventId = event.getId(); if (eventId == "connect") { connectToSelectedServer(); } else if (eventId == "quit") { close(); } else if (eventId == "load") { downloadServerList(); } else if (eventId == "addEntry") { CREATEWIDGET(EditServerDialog, this, ServerInfo(), -1); } else if (eventId == "editEntry") { const int index = mServersList->getSelected(); if (index >= 0) { CREATEWIDGET(EditServerDialog, this, mServers.at(index), index); } } else if (eventId == "remove") { const int index = mServersList->getSelected(); if (index >= 0) { mServersList->setSelected(0); mServers.erase(mServers.begin() + index); saveCustomServers(); } } }
void ServerDialog::action(const gcn::ActionEvent &event) { if (event.getId() == "ok") { // Give focus back to the server dialog. mServerNameField->requestFocus(); } else if (event.getId() == "connect") { // Check login if (mServerNameField->getText().empty() || mPortField->getText().empty()) { OkDialog *dlg = new OkDialog(_("Error"), _("Please type both the address and the port of a server.")); dlg->addActionListener(this); } else { mDownload->cancel(); mQuitButton->setEnabled(false); mConnectButton->setEnabled(false); mServerInfo->hostname = mServerNameField->getText(); mServerInfo->port = (short) atoi(mPortField->getText().c_str()); switch (mTypeField->getSelected()) { case 0: mServerInfo->type = ServerInfo::TMWATHENA; break; case 1: mServerInfo->type = ServerInfo::MANASERV; break; default: mServerInfo->type = ServerInfo::UNKNOWN; } // Save the selected server mServerInfo->save = true; chatLogger->setServerName(mServerInfo->hostname); saveCustomServers(*mServerInfo); Client::setState(STATE_CONNECT_SERVER); } } else if (event.getId() == "quit") { mDownload->cancel(); Client::setState(STATE_FORCE_QUIT); } else if (event.getId() == "addEntry") { setFieldsReadOnly(false); } else if (event.getId() == "remove") { int index = mServersList->getSelected(); mServers.erase(mServers.begin() + index); mServersList->setSelected(0); saveCustomServers(); } }
void ServerDialog::action(const gcn::ActionEvent &event) { if (event.getId() == "ok") { // Give focus back to the server dialog. mServersList->requestFocus(); } else if (event.getId() == "connect") { int index = mServersList->getSelected(); // Check login if (index < 0 #ifndef MANASERV_SUPPORT || mServersListModel->getServer(index).type == ServerInfo::MANASERV #endif ) { OkDialog *dlg = new OkDialog(_("Error"), _("Please select a valid server.")); dlg->addActionListener(this); } else { mDownload->cancel(); mQuitButton->setEnabled(false); mConnectButton->setEnabled(false); mDeleteButton->setEnabled(false); mManualEntryButton->setEnabled(false); mModifyButton->setEnabled(false); const ServerInfo &serverInfo = mServersListModel->getServer(index); mServerInfo->hostname = serverInfo.hostname; mServerInfo->name = serverInfo.name; mServerInfo->port = serverInfo.port; mServerInfo->type = serverInfo.type; // Save the selected server mServerInfo->save = true; saveCustomServers(*mServerInfo); chatLogger->setServerName(mServerInfo->hostname); Client::setState(STATE_CONNECT_SERVER); } } else if (event.getId() == "quit") { mDownload->cancel(); Client::setState(STATE_FORCE_QUIT); } else if (event.getId() == "addEntry") { // Add a custom server: It will delete itself using guichan logic. new CustomServerDialog(this); } else if (event.getId() == "modify") { int index = mServersList->getSelected(); // Check whether a server is selected. if (index < 0) { OkDialog *dlg = new OkDialog(_("Error"), _("Please select a custom server.")); dlg->addActionListener(this); } else { new CustomServerDialog(this, index); } } else if (event.getId() == "remove") { int index = mServersList->getSelected(); mServers.erase(mServers.begin() + index); mServersList->setSelected(0); saveCustomServers(); } }