Exemple #1
0
void CSettingConfig::ApplySettings( bool UpdateScreen )
{
	stdstr GameIni(g_Settings->LoadString(Game_IniKey));

	if (!GameIni.empty())
	{
		stdstr GoodName;
		if (!g_Settings->LoadString(Game_GoodName,GoodName))
		{
			g_Settings->SaveString(Game_GoodName,GoodName);
		}
	}

	for (SETTING_SECTIONS::const_iterator iter = m_Sections.begin(); iter != m_Sections.end(); iter++)
	{
		CConfigSettingSection * Section = *iter;
		
		for (size_t i = 0; i < Section->GetPageCount(); i++ )
		{
			CSettingsPage * Page = Section->GetPage(i);
			Page->ApplySettings(UpdateScreen);
		}
	}

	if (UpdateScreen)
	{
		::EnableWindow(GetDlgItem(IDAPPLY),false);
		::EnableWindow(GetDlgItem(IDC_RESET_PAGE), m_CurrentPage->EnableReset());
	}
	

	if (!g_Settings->LoadString(Game_IniKey).empty())
	{
		stdstr GoodName = g_Settings->LoadString(Rdb_GoodName);
		if (GoodName.length() > 0)
		{
			g_Settings->SaveString(Game_GoodName,GoodName);
		}
	}
	CSettingTypeApplication::Flush();
}
LRESULT CSettingConfig::OnClicked(WORD /*wNotifyCode*/, WORD wID, HWND, BOOL& /*bHandled*/)
{
    switch (wID)
    {
    case IDAPPLY:
        ApplySettings(true);
        break;
    case IDOK:
        ApplySettings(false);
        EndDialog(1);
        break;
    case IDCANCEL:
        EndDialog(0);
        break;
    case IDC_RESET_PAGE:
        if (m_CurrentPage)
        {
            m_CurrentPage->ResetPage();
        }
        break;
    case IDC_RESET_ALL:
        for (SETTING_SECTIONS::const_iterator iter = m_Sections.begin(); iter != m_Sections.end(); iter++)
        {
            CConfigSettingSection * Section = *iter;

            for (size_t i = 0; i < Section->GetPageCount(); i++)
            {
                CSettingsPage * Page = Section->GetPage(i);
                if (Page->EnableReset())
                {
                    Page->ResetPage();
                }
            }
        }

        break;
    }
    return FALSE;
}
LRESULT	CSettingConfig::OnInitDialog(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/)
{
    stdstr ConfigRomTitle, GameIni(g_Settings->LoadStringVal(Game_IniKey));

    if (!GameIni.empty())
    {
        ConfigRomTitle.Format("Config: %s", g_Settings->LoadStringVal(Game_GoodName).c_str());
    }

    RECT rcSettingInfo;
    ::GetWindowRect(GetDlgItem(IDC_SETTING_INFO), &rcSettingInfo);
    ::MapWindowPoints(NULL, m_hWnd, (LPPOINT)&rcSettingInfo, 2);

    CConfigSettingSection * SettingsSection;

    //Set the text for all gui Items
    SetDlgItemTextW(m_hWnd, IDC_RESET_PAGE, wGS(BOTTOM_RESET_PAGE).c_str());
    SetDlgItemTextW(m_hWnd, IDC_RESET_ALL, wGS(BOTTOM_RESET_ALL).c_str());
    SetDlgItemTextW(m_hWnd, IDOK, wGS(CHEAT_OK).c_str());
    SetDlgItemTextW(m_hWnd, IDCANCEL, wGS(CHEAT_CANCEL).c_str());
    SetDlgItemTextW(m_hWnd, IDAPPLY, wGS(BOTTOM_APPLY).c_str());

    if (m_GameConfig)
    {
        if (g_Settings->LoadBool(Setting_RdbEditor))
        {
            SetWindowText(stdstr_f("%s ** RDB Edit Mode **", ConfigRomTitle.c_str()).c_str());
        }
        else
        {
            SetWindowText(ConfigRomTitle.c_str());
        }
    }
    else
    {
        if (g_Settings->LoadBool(Setting_RdbEditor))
        {
            SetWindowTextW(m_hWnd, stdstr_f("%s ** RDB Edit Mode **", GS(OPTIONS_TITLE)).ToUTF16().c_str());
        }
        else
        {
            ::SetWindowTextW(m_hWnd, wGS(OPTIONS_TITLE).c_str());
        }

        if (g_Settings->LoadBool(Setting_PluginPageFirst))
        {
            SettingsSection = new CConfigSettingSection(wGS(TAB_PLUGIN).c_str());
            SettingsSection->AddPage(new COptionPluginPage(this->m_hWnd, rcSettingInfo));
            m_Sections.push_back(SettingsSection);
        }

        m_GeneralOptionsPage = new CGeneralOptionsPage(this, this->m_hWnd, rcSettingInfo);
        m_AdvancedPage = new CAdvancedOptionsPage(this->m_hWnd, rcSettingInfo);

        SettingsSection = new CConfigSettingSection(wGS(TAB_OPTIONS).c_str());
        SettingsSection->AddPage(m_GeneralOptionsPage);
        SettingsSection->AddPage(m_AdvancedPage);
        SettingsSection->AddPage(new COptionsDirectoriesPage(this->m_hWnd, rcSettingInfo));
        m_Sections.push_back(SettingsSection);

        SettingsSection = new CConfigSettingSection(wGS(TAB_ROMSELECTION).c_str());
        SettingsSection->AddPage(new COptionsGameBrowserPage(this->m_hWnd, rcSettingInfo));
        m_Sections.push_back(SettingsSection);

        SettingsSection = new CConfigSettingSection(wGS(TAB_SHORTCUTS).c_str());
        SettingsSection->AddPage(new COptionsShortCutsPage(this->m_hWnd, rcSettingInfo));
        m_Sections.push_back(SettingsSection);

        if (!g_Settings->LoadBool(Setting_PluginPageFirst))
        {
            SettingsSection = new CConfigSettingSection(wGS(TAB_PLUGIN).c_str());
            SettingsSection->AddPage(new COptionPluginPage(this->m_hWnd, rcSettingInfo));
            m_Sections.push_back(SettingsSection);
        }
    }

    //Game Settings
    if (!GameIni.empty())
    {
        CConfigSettingSection * GameSettings = new CConfigSettingSection(ConfigRomTitle.ToUTF16().c_str());
        GameSettings->AddPage(new CGameGeneralPage(this->m_hWnd, rcSettingInfo));
        GameSettings->AddPage(new CGameRecompilePage(this->m_hWnd, rcSettingInfo));
        GameSettings->AddPage(new CGamePluginPage(this->m_hWnd, rcSettingInfo));
        if (g_Settings->LoadBool(Setting_RdbEditor))
        {
            GameSettings->AddPage(new CGameStatusPage(this->m_hWnd, rcSettingInfo));
        }
        m_Sections.push_back(GameSettings);
    }

    m_PagesTreeList.Attach(GetDlgItem(IDC_PAGELIST));

    bool bFirstItem = true;
    bool HideAdvanced = g_Settings->LoadBool(UserInterface_BasicMode);
    for (SETTING_SECTIONS::const_iterator iter = m_Sections.begin(); iter != m_Sections.end(); iter++)
    {
        CConfigSettingSection * Section = *iter;

        HTREEITEM hSectionItem = NULL;

        for (size_t i = 0; i < Section->GetPageCount(); i++)
        {
            CSettingsPage * Page = Section->GetPage(i);
            if (HideAdvanced && Page == m_AdvancedPage)
            {
                continue;
            }
            if (i == 0)
            {
                hSectionItem = m_PagesTreeList.InsertItemW(TVIF_TEXT | TVIF_PARAM, Section->GetPageTitle(), 0, 0, 0, 0, (ULONG)Page, TVI_ROOT, TVI_LAST);
                continue;
            }
            if (hSectionItem == NULL)
            {
                continue;
            }
            m_PagesTreeList.InsertItemW(TVIF_TEXT | TVIF_PARAM, wGS(Page->PageTitle()).c_str(), 0, 0, 0, 0, (ULONG)Page, hSectionItem, TVI_LAST);
        }
        if (bFirstItem && hSectionItem != NULL)
        {
            bFirstItem = false;
            m_PagesTreeList.Expand(hSectionItem);
            m_PagesTreeList.SelectItem(hSectionItem);
        }
    }

    BoldChangedPages(m_PagesTreeList.GetRootItem());
    return TRUE;
}