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; }