bool COptionsPageInterface::SavePage()
{
	SetOptionFromCheck(XRCID("ID_FILEPANESWAP"), OPTION_FILEPANE_SWAP);
	m_pOptions->SetOption(OPTION_FILEPANE_LAYOUT, GetChoice(XRCID("ID_FILEPANELAYOUT")));

	m_pOptions->SetOption(OPTION_MESSAGELOG_POSITION, GetChoice(XRCID("ID_MESSAGELOGPOS")));

#ifndef __WXMAC__
	SetOptionFromCheck(XRCID("ID_MINIMIZE_TRAY"), OPTION_MINIMIZE_TRAY);
#endif

	SetOptionFromCheck(XRCID("ID_PREVENT_IDLESLEEP"), OPTION_PREVENT_IDLESLEEP);

	return true;
}
Example #2
0
bool COptionsPageEdit::SavePage()
{
	COptions* pOptions = COptions::Get();

	if (GetRCheck(XRCID("ID_DEFAULT_CUSTOM")))
		pOptions->SetOption(OPTION_EDIT_DEFAULTEDITOR, _T("2") + GetText(XRCID("ID_EDITOR")));
	else
		pOptions->SetOption(OPTION_EDIT_DEFAULTEDITOR, GetRCheck(XRCID("ID_DEFAULT_TEXT")) ? _T("1") : _T("0"));

	if (GetRCheck(XRCID("ID_USEDEFAULT")))
		pOptions->SetOption(OPTION_EDIT_ALWAYSDEFAULT, 1);
	else
		pOptions->SetOption(OPTION_EDIT_ALWAYSDEFAULT, 0);

	SetOptionFromCheck(XRCID("ID_EDIT_TRACK_LOCAL"), OPTION_EDIT_TRACK_LOCAL);
    SetOptionFromCheck(XRCID("ID_EDIT_BYPASS_PROMPT"), OPTION_EDIT_BYPASS_PROMPT);

	return true;
}
bool COptionsPageSizeFormatting::SavePage()
{
	m_pOptions->SetOption(OPTION_SIZE_FORMAT, GetFormat());

	SetOptionFromCheck(XRCID("ID_SIZEFORMAT_SEPARATE_THOUTHANDS"), OPTION_SIZE_USETHOUSANDSEP);

	m_pOptions->SetOption(OPTION_SIZE_DECIMALPLACES, XRCCTRL(*this, "ID_SIZEFORMAT_DECIMALPLACES", wxSpinCtrl)->GetValue());

	return true;
}
bool COptionsPageConnectionActive::SavePage()
{
	SetOptionFromCheck(XRCID("ID_LIMITPORTS"), OPTION_LIMITPORTS);

	SetIntOptionFromText(XRCID("ID_LOWESTPORT"), OPTION_LIMITPORTS_LOW);
	SetIntOptionFromText(XRCID("ID_HIGHESTPORT"), OPTION_LIMITPORTS_HIGH);

	int mode;
	if (GetRCheck(XRCID("ID_ACTIVEMODE1")))
		mode = 0;
	else
		mode = GetRCheck(XRCID("ID_ACTIVEMODE2")) ? 1 : 2;
	m_pOptions->SetOption(OPTION_EXTERNALIPMODE, mode);

	if (mode == 1)
		SetOptionFromText(XRCID("ID_ACTIVEIP"), OPTION_EXTERNALIP);
	else if (mode == 2)
		SetOptionFromText(XRCID("ID_ACTIVERESOLVER"), OPTION_EXTERNALIPRESOLVER);
	SetOptionFromCheck(XRCID("ID_NOEXTERNALONLOCAL"), OPTION_NOEXTERNALONLOCAL);

	return true;
}
bool COptionsPageInterface::SavePage()
{
	SetOptionFromCheck(XRCID("ID_FILEPANESWAP"), OPTION_FILEPANE_SWAP);
	m_pOptions->SetOption(OPTION_FILEPANE_LAYOUT, GetChoice(XRCID("ID_FILEPANELAYOUT")));

	m_pOptions->SetOption(OPTION_MESSAGELOG_POSITION, GetChoice(XRCID("ID_MESSAGELOGPOS")));

#ifndef __WXMAC__
	SetOptionFromCheck(XRCID("ID_MINIMIZE_TRAY"), OPTION_MINIMIZE_TRAY);
#endif

	SetOptionFromCheck(XRCID("ID_PREVENT_IDLESLEEP"), OPTION_PREVENT_IDLESLEEP);
	
	SetOptionFromCheck(XRCID("ID_SPEED_DISPLAY"), OPTION_SPEED_DISPLAY);
	
	// Start of @td
	bool enablingEnc = false; // Tells us if we are "ENABLING" encryption (disabled before, enabled now)
	if (GetCheck(XRCID("ID_ENCRYPT_PASSWORDS")) != m_pOptions->GetOptionVal(OPTION_ENCRYPT_PASSWORDS))
	{
		LOG("SavePage(): Option OPTION_ENCRYPT_PASSWORDS has switched value");
		if (!GetCheck(XRCID("ID_ENCRYPT_PASSWORDS"))) // We are DISABLING encryption, let's decrypt everything already stored:m_pOptions->
		{
			LOG("SavePage(): Disabling encryption...");
			CInterProcessMutex mutex(MUTEX_SITEMANAGER);
			CXmlFile file(_T("sitemanager"));
			TiXmlElement* pDocument = file.Load();
			if (!pDocument)
			{
				LOG("SavePage(): Sitemanager.xml could not be loaded.");
				wxMessageBox(file.GetError(), _("Error loading xml file"), wxICON_ERROR);
			}

			TiXmlElement* pElement = pDocument->FirstChildElement("Servers");
			if (pElement)
			{
				LOG("SavePage(): Found \"Servers\" element. Beginning foreach....");
				for (TiXmlElement* pServer = pElement->FirstChildElement("Server"); pServer; pServer = pServer->NextSiblingElement("Server")) 
				{
					LOG("SavePage(): Found a Server element.");
					CServer s;
					if (::GetServer(pServer, s))
					{
						LOG("SavePage(): Server element loaded up from XML. \"Converting\" it.");
				 		wxString pass = s.GetPass(); // decrypts before returning
				 		LOG("SavePage(): 1.");
				 		m_pOptions->SetOption(OPTION_ENCRYPT_PASSWORDS, 0); //* Disabling encryption so that SetPass() does not encrypt the passwd
				 		LOG("SavePage(): 2.");
						s.SetPass(pass); // will not encrypt
						LOG("SavePage(): 3.");
						::SetServer(pServer, s);
						LOG("SavePage(): 5.");
						m_pOptions->SetOption(OPTION_ENCRYPT_PASSWORDS, 1); //* Enabling encryption so that next GetPass() does decrypt the pass before returning it
						LOG("SavePage(): 6.");
					}
				}
				file.Save();
			}
			m_pOptions->SetOption(OPTION_MASTER_PASSWORD, _T(""));// Resetting the master password when encryption is disabled
			CCrypto::SetMasterPassword(_T(""));
		} else {
			enablingEnc = true;
		}
		SetOptionFromCheck(XRCID("ID_ENCRYPT_PASSWORDS"), OPTION_ENCRYPT_PASSWORDS);
	}

	
	wxString defaultval = wxString(DEFAULTVALUE, wxConvUTF8);
	wxString newPassword = GetText(XRCID("ID_MASTER_PASSWORD"));
	if(GetCheck(XRCID("ID_ENCRYPT_PASSWORDS")) && newPassword != defaultval)
	{
		LOG("SavePage(): The new password is not empty.");
		wxString currentMPasswd = CCrypto::GetMasterPassword();
		if (newPassword != _T("") && newPassword != currentMPasswd) // We just changed the master password (and it is not empty), so we have to "migrate" the existing encrypted password from former encryption to new one
		{
			LOG("SavePage(): The new password is different from the former one.");
			CInterProcessMutex mutex(MUTEX_SITEMANAGER);
			CXmlFile file(_T("sitemanager"));
			TiXmlElement* pDocument = file.Load();
			if (!pDocument)
			{
				LOG("SavePage(): Sitemanager.xml could not be loaded.");
				wxMessageBox(file.GetError(), _("Error loading xml file"), wxICON_ERROR);
			}

			TiXmlElement* pElement = pDocument->FirstChildElement("Servers");
			if (pElement)
			{
				LOG("SavePage(): Found \"Servers\" element. Beginning foreach....");
				for (TiXmlElement* pServer = pElement->FirstChildElement("Server"); pServer; pServer = pServer->NextSiblingElement("Server")) 
				{
					LOG("SavePage(): Found a Server element.");
					CServer s;
					if (enablingEnc)
					{
						//* Encryption was previously disabled, so, disable it just the time to LOAD up the data
						m_pOptions->SetOption(OPTION_ENCRYPT_PASSWORDS, 0);
					}
					if (::GetServer(pServer, s))
					{
						LOG("SavePage(): Server element loaded up from XML. \"Converting\" it.");
				 		wxString pass = s.GetPass(); // uses current master passwd
				 		LOG("SavePage(): 1.");
				 		CCrypto::SetMasterPassword(newPassword);
				 		LOG("SavePage(): 2.");
						//* Ensure encryption is enabled when we SAVE
				 		m_pOptions->SetOption(OPTION_ENCRYPT_PASSWORDS, 1);
				 		LOG("SavePage(): 3.");
						s.SetPass(pass); // will encrypt using new master password
						LOG("SavePage(): 4.");	
						CCrypto::SetMasterPassword(currentMPasswd); // back to former one for next loop
						LOG("SavePage(): 5.");
						::SetServer(pServer, s);
						LOG("SavePage(): 6.");
					}
				}
				file.Save();
			}
		}
		LOG("SavePage(): Setting new master password...");
		CCrypto::SetMasterPassword(newPassword);
		wxString passwdEncrypted = wxString(CCrypto::Encrypt(newPassword).c_str(), wxConvUTF8);
		m_pOptions->SetOption(OPTION_MASTER_PASSWORD, passwdEncrypted);
	}
	
	// End of @td

	if (!m_pOptions->OptionFromFzDefaultsXml(OPTION_DEFAULT_KIOSKMODE) && m_pOptions->GetOptionVal(OPTION_DEFAULT_KIOSKMODE) != 2)
		SetOptionFromCheck(XRCID("ID_DONT_SAVE_PASSWORDS"), OPTION_DEFAULT_KIOSKMODE);

	SetOptionFromCheck(XRCID("ID_INTERFACE_SITEMANAGER_ON_STARTUP"), OPTION_INTERFACE_SITEMANAGER_ON_STARTUP);

	return true;
}