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::NetworkConfigurationChanged()
{
   if (!m_foundCurrnetNetwork)
      return true;
      
   CStdString currentEssId;
   CStdString currentKey;
   EncMode    currentEnc;
   CStdString currentInterfaceName;
   
   GetUserConfiguration(currentInterfaceName, currentEssId, currentKey, currentEnc);

   CGUIMessage msg(GUI_MSG_ITEM_SELECTED, GetID(), CONTROL_INTERFACES);
   OnMessage(msg);
   int iItem = msg.GetParam1();
   CNetworkInterface* interface = m_interfaces[iItem];
      
   // Do the actual comparison
   if (m_interfaceName != currentInterfaceName)
      return true;
            
   bool result = false;   
   if (interface->IsWireless())
   {
      result = (currentEssId != m_essId || currentEnc != m_encryptionMode);
      if (currentEnc != ENC_NONE)
         result = result || (currentKey != m_key);
   }
   
   return result;
}
void CGUIWindowBoxeeWizardNetwork::ShowWirelessNetworksIfNeeded()
{
   CGUIMessage msg(GUI_MSG_ITEM_SELECTED, GetID(), CONTROL_INTERFACES );
   OnMessage(msg);
   int iItem = msg.GetParam1();
   
   CNetworkInterface* interface = m_interfaces[iItem];
   
   if (interface->IsWireless())
   {
      SET_CONTROL_VISIBLE(CONTROL_WIRELESS);
      SET_CONTROL_VISIBLE(CONTROL_SEP1);
      ShowWirelessNetworks(interface);
      SET_CONTROL_FOCUS(CONTROL_WIRELESS, 0);
      CONTROL_DISABLE(CONTROL_NEXT);            
   }
   else
   {
      SET_CONTROL_HIDDEN(CONTROL_SEP1);
      SET_CONTROL_HIDDEN(CONTROL_WIRELESS);
      SET_CONTROL_HIDDEN(CONTROL_SEP2);
      SET_CONTROL_HIDDEN(CONTROL_PASSWORD_GROUP);
      SET_CONTROL_HIDDEN(CONTROL_ENC_GROUP);
      CONTROL_ENABLE(CONTROL_NEXT);            
      SET_CONTROL_FOCUS(CONTROL_NEXT, 0);
   }
}