void CGUIWindowBoxeeWizardNetwork::GetUserConfiguration(CStdString& interfaceName, CStdString& essId, CStdString& key, EncMode& enc) { // Get current settings from the GUI components CGUIMessage msg(GUI_MSG_ITEM_SELECTED, GetID(), CONTROL_INTERFACES); OnMessage(msg); int iItem = msg.GetParam1(); CNetworkInterface* interface = m_interfaces[iItem]; interfaceName = interface->GetName(); if (interface->IsWireless()) { CGUIMessage msg2(GUI_MSG_ITEM_SELECTED, GetID(), CONTROL_WIRELESS); OnMessage(msg2); int iItem = msg2.GetParam1(); essId = m_networkItems[iItem]->GetLabel(); CGUIButtonControl* passwordButton = (CGUIButtonControl*) GetControl(CONTROL_PASSWORD); key = passwordButton->GetLabel(); CGUIButtonControl* encSelectionButton = (CGUIButtonControl*) GetControl(CONTROL_ENC_SELECTION); CStdString encStr = encSelectionButton->GetLabel(); for (int i = 0; i < 5; i++) { if (strcasecmp(encStr.c_str(), ENC_LABELS[i]) == 0) { enc = ENC_MODES[i]; break; } } } }
bool CGUIWindowBoxeeWizardNetwork::SaveConfiguration() { if (!NetworkConfigurationChanged()) return true; bool result = false; CStdString currentEssId; CStdString currentKey; EncMode currentEnc; CStdString currentInterfaceName; GetUserConfiguration(currentInterfaceName, currentEssId, currentKey, currentEnc); CGUIDialogProgress* pDlgProgress = (CGUIDialogProgress*)m_gWindowManager.GetWindow(WINDOW_DIALOG_PROGRESS); pDlgProgress->SetHeading(""); pDlgProgress->SetLine(0, "Applying network configuration..."); pDlgProgress->SetLine(1, ""); pDlgProgress->SetLine(2, ""); pDlgProgress->StartModal(); pDlgProgress->Progress(); CStdString empty; NetworkAssignment assignment; CNetworkInterface* interface; for (unsigned int i = 0; i < m_interfaces.size(); i++) { interface = m_interfaces[i]; if (interface->GetName() == currentInterfaceName) { assignment = NETWORK_DHCP; interface->SetSettings(assignment, empty, empty, empty, currentEssId, currentKey, currentEnc); } else { // if we have a different interfaces, we need to take them down assignment = NETWORK_DISABLED; EncMode enc = ENC_NONE; interface->SetSettings(assignment, empty, empty, empty, empty, empty, enc); } } pDlgProgress->Close(); if (!interface->IsConnected()) CGUIDialogOK::ShowAndGetInput(0, 50001, 50002, 0); else if (!g_application.IsConnectedToNet()) CGUIDialogOK::ShowAndGetInput(0, 50003, 50004, 50002); else result = true; ResetCurrentNetworkState(); return result; }