virtual bool onEvent(const GEvent& e) override { if (GApp::onEvent(e)) { return true; } switch (e.type) { case GEventType::GUI_ACTION: if (e.gui.control == m_connectToAddressBox) { connectToServer(m_connectToAddress); m_connectToAddress = ""; return true; } else { // Send a text message to the other machine shared_ptr<Conversation> conversation = findConversation(e.gui.control); if (notNull(conversation)) { BinaryOutput bo; bo.writeString32(conversation->textToSend); conversation->connection->send(TEXT, bo); conversation->textToSend = ""; return true; } } break; case GEventType::GUI_CLOSE: { // Shut down the associated network connection by letting // the Conversation's destructor execute for (int i = 0; i < m_conversationArray.size(); ++i) { if (m_conversationArray[i]->window.get() == e.guiClose.window) { m_conversationArray.fastRemove(i); break; // Leave the FOR loop } } // for } break; case GEventType::QUIT: m_conversationArray.clear(); m_server->stop(); m_server.reset(); break; } //switch return false; } // onEvent
void sendMyName(shared_ptr<NetSendConnection> connection) const { BinaryOutput bo; bo.writeString32(m_name); connection->send(CHANGE_NAME, bo); }