[Project64] Clean up Settings/SettingsPage-Directories.cpp

This commit is contained in:
zilmar 2015-12-24 06:29:57 +11:00
parent 9dd34caf87
commit ec6ab39137
2 changed files with 283 additions and 285 deletions

View File

@ -15,340 +15,340 @@
COptionsDirectoriesPage::COptionsDirectoriesPage(HWND hParent, const RECT & rcDispay) : COptionsDirectoriesPage::COptionsDirectoriesPage(HWND hParent, const RECT & rcDispay) :
m_InUpdateSettings(false) m_InUpdateSettings(false)
{ {
Create(hParent); Create(hParent);
if (m_hWnd == NULL) if (m_hWnd == NULL)
{ {
return; return;
} }
SetWindowPos(HWND_TOP, &rcDispay, SWP_HIDEWINDOW); SetWindowPos(HWND_TOP, &rcDispay, SWP_HIDEWINDOW);
m_PluginGroup.Attach(GetDlgItem(IDC_DIR_FRAME1)); m_PluginGroup.Attach(GetDlgItem(IDC_DIR_FRAME1));
m_AutoSaveGroup.Attach(GetDlgItem(IDC_DIR_FRAME3)); m_AutoSaveGroup.Attach(GetDlgItem(IDC_DIR_FRAME3));
m_InstantSaveGroup.Attach(GetDlgItem(IDC_DIR_FRAME4)); m_InstantSaveGroup.Attach(GetDlgItem(IDC_DIR_FRAME4));
m_ScreenShotGroup.Attach(GetDlgItem(IDC_DIR_FRAME5)); m_ScreenShotGroup.Attach(GetDlgItem(IDC_DIR_FRAME5));
m_TextureGroup.Attach(GetDlgItem(IDC_DIR_TEXTURE_FRAME)); m_TextureGroup.Attach(GetDlgItem(IDC_DIR_TEXTURE_FRAME));
m_PluginDir.Attach(GetDlgItem(IDC_PLUGIN_DIR)); m_PluginDir.Attach(GetDlgItem(IDC_PLUGIN_DIR));
m_AutoSaveDir.Attach(GetDlgItem(IDC_AUTO_DIR)); m_AutoSaveDir.Attach(GetDlgItem(IDC_AUTO_DIR));
m_InstantSaveDir.Attach(GetDlgItem(IDC_INSTANT_DIR)); m_InstantSaveDir.Attach(GetDlgItem(IDC_INSTANT_DIR));
m_ScreenShotDir.Attach(GetDlgItem(IDC_SNAP_DIR)); m_ScreenShotDir.Attach(GetDlgItem(IDC_SNAP_DIR));
m_TextureDir.Attach(GetDlgItem(IDC_TEXTURE_DIR)); m_TextureDir.Attach(GetDlgItem(IDC_TEXTURE_DIR));
m_PluginDefault.Attach(GetDlgItem(IDC_PLUGIN_DEFAULT)); m_PluginDefault.Attach(GetDlgItem(IDC_PLUGIN_DEFAULT));
m_PluginSelected.Attach(GetDlgItem(IDC_PLUGIN_OTHER)); m_PluginSelected.Attach(GetDlgItem(IDC_PLUGIN_OTHER));
m_AutoSaveDefault.Attach(GetDlgItem(IDC_AUTO_DEFAULT)); m_AutoSaveDefault.Attach(GetDlgItem(IDC_AUTO_DEFAULT));
m_AutoSaveSelected.Attach(GetDlgItem(IDC_AUTO_OTHER)); m_AutoSaveSelected.Attach(GetDlgItem(IDC_AUTO_OTHER));
m_InstantDefault.Attach(GetDlgItem(IDC_INSTANT_DEFAULT)); m_InstantDefault.Attach(GetDlgItem(IDC_INSTANT_DEFAULT));
m_InstantSelected.Attach(GetDlgItem(IDC_INSTANT_OTHER)); m_InstantSelected.Attach(GetDlgItem(IDC_INSTANT_OTHER));
m_ScreenShotDefault.Attach(GetDlgItem(IDC_SNAP_DEFAULT)); m_ScreenShotDefault.Attach(GetDlgItem(IDC_SNAP_DEFAULT));
m_ScreenShotSelected.Attach(GetDlgItem(IDC_SNAP_OTHER)); m_ScreenShotSelected.Attach(GetDlgItem(IDC_SNAP_OTHER));
m_TextureDefault.Attach(GetDlgItem(IDC_TEXTURE_DEFAULT)); m_TextureDefault.Attach(GetDlgItem(IDC_TEXTURE_DEFAULT));
m_TextureSelected.Attach(GetDlgItem(IDC_TEXTURE_OTHER)); m_TextureSelected.Attach(GetDlgItem(IDC_TEXTURE_OTHER));
//Set Text language for the dialog box //Set Text language for the dialog box
::SetWindowTextW(m_PluginGroup.m_hWnd, GS(DIR_PLUGIN)); ::SetWindowTextW(m_PluginGroup.m_hWnd, GS(DIR_PLUGIN));
::SetWindowTextW(m_AutoSaveGroup.m_hWnd, GS(DIR_AUTO_SAVE)); ::SetWindowTextW(m_AutoSaveGroup.m_hWnd, GS(DIR_AUTO_SAVE));
::SetWindowTextW(m_InstantSaveGroup.m_hWnd, GS(DIR_INSTANT_SAVE)); ::SetWindowTextW(m_InstantSaveGroup.m_hWnd, GS(DIR_INSTANT_SAVE));
::SetWindowTextW(m_ScreenShotGroup.m_hWnd, GS(DIR_SCREEN_SHOT)); ::SetWindowTextW(m_ScreenShotGroup.m_hWnd, GS(DIR_SCREEN_SHOT));
::SetWindowTextW(m_TextureGroup.m_hWnd, GS(DIR_TEXTURE)); ::SetWindowTextW(m_TextureGroup.m_hWnd, GS(DIR_TEXTURE));
UpdatePageSettings(); UpdatePageSettings();
} }
int CALLBACK COptionsDirectoriesPage::SelectDirCallBack(HWND hwnd, DWORD uMsg, DWORD /*lp*/, DWORD lpData) int CALLBACK COptionsDirectoriesPage::SelectDirCallBack(HWND hwnd, DWORD uMsg, DWORD /*lp*/, DWORD lpData)
{ {
switch (uMsg) switch (uMsg)
{ {
case BFFM_INITIALIZED: case BFFM_INITIALIZED:
// WParam is TRUE since you are passing a path. // WParam is TRUE since you are passing a path.
// It would be FALSE if you were passing a pidl. // It would be FALSE if you were passing a pidl.
if (lpData) if (lpData)
{ {
SendMessage(hwnd, BFFM_SETSELECTION, TRUE, lpData); SendMessage(hwnd, BFFM_SETSELECTION, TRUE, lpData);
} }
break; break;
} }
return 0; return 0;
} }
void COptionsDirectoriesPage::SelectDirectory(LanguageStringID Title, CModifiedEditBox & EditBox, CModifiedButton & Default, CModifiedButton & selected) void COptionsDirectoriesPage::SelectDirectory(LanguageStringID Title, CModifiedEditBox & EditBox, CModifiedButton & Default, CModifiedButton & selected)
{ {
wchar_t Buffer[MAX_PATH], Directory[MAX_PATH]; wchar_t Buffer[MAX_PATH], Directory[MAX_PATH];
LPITEMIDLIST pidl; LPITEMIDLIST pidl;
BROWSEINFOW bi; BROWSEINFOW bi;
stdstr InitialDir = EditBox.GetWindowText(); stdstr InitialDir = EditBox.GetWindowText();
bi.hwndOwner = m_hWnd; bi.hwndOwner = m_hWnd;
bi.pidlRoot = NULL; bi.pidlRoot = NULL;
bi.pszDisplayName = Buffer; bi.pszDisplayName = Buffer;
bi.lpszTitle = GS(Title); bi.lpszTitle = GS(Title);
bi.ulFlags = BIF_RETURNFSANCESTORS | BIF_RETURNONLYFSDIRS; bi.ulFlags = BIF_RETURNFSANCESTORS | BIF_RETURNONLYFSDIRS;
bi.lpfn = (BFFCALLBACK)SelectDirCallBack; bi.lpfn = (BFFCALLBACK)SelectDirCallBack;
bi.lParam = (DWORD)InitialDir.c_str(); bi.lParam = (DWORD)InitialDir.c_str();
if ((pidl = SHBrowseForFolderW(&bi)) != NULL) if ((pidl = SHBrowseForFolderW(&bi)) != NULL)
{ {
if (SHGetPathFromIDListW(pidl, Directory)) if (SHGetPathFromIDListW(pidl, Directory))
{ {
stdstr path; stdstr path;
CPath SelectedDir(path.FromUTF16(Directory), ""); CPath SelectedDir(path.FromUTF16(Directory), "");
EditBox.SetChanged(true); EditBox.SetChanged(true);
EditBox.SetWindowText(SelectedDir); EditBox.SetWindowText(SelectedDir);
Default.SetChanged(true); Default.SetChanged(true);
Default.SetCheck(BST_UNCHECKED); Default.SetCheck(BST_UNCHECKED);
selected.SetCheck(BM_SETCHECK); selected.SetCheck(BM_SETCHECK);
SendMessage(GetParent(), PSM_CHANGED, (WPARAM)m_hWnd, 0); SendMessage(GetParent(), PSM_CHANGED, (WPARAM)m_hWnd, 0);
} }
} }
} }
void COptionsDirectoriesPage::PluginDirChanged(UINT /*Code*/, int /*id*/, HWND /*ctl*/) void COptionsDirectoriesPage::PluginDirChanged(UINT /*Code*/, int /*id*/, HWND /*ctl*/)
{ {
if (m_InUpdateSettings) { return; } if (m_InUpdateSettings) { return; }
m_PluginDir.SetChanged(true); m_PluginDir.SetChanged(true);
SendMessage(GetParent(), PSM_CHANGED, (WPARAM)m_hWnd, 0); SendMessage(GetParent(), PSM_CHANGED, (WPARAM)m_hWnd, 0);
} }
void COptionsDirectoriesPage::AutoSaveDirChanged(UINT /*Code*/, int /*id*/, HWND /*ctl*/) void COptionsDirectoriesPage::AutoSaveDirChanged(UINT /*Code*/, int /*id*/, HWND /*ctl*/)
{ {
if (m_InUpdateSettings) { return; } if (m_InUpdateSettings) { return; }
m_AutoSaveDir.SetChanged(true); m_AutoSaveDir.SetChanged(true);
SendMessage(GetParent(), PSM_CHANGED, (WPARAM)m_hWnd, 0); SendMessage(GetParent(), PSM_CHANGED, (WPARAM)m_hWnd, 0);
} }
void COptionsDirectoriesPage::InstantSaveDirChanged(UINT /*Code*/, int /*id*/, HWND /*ctl*/) void COptionsDirectoriesPage::InstantSaveDirChanged(UINT /*Code*/, int /*id*/, HWND /*ctl*/)
{ {
if (m_InUpdateSettings) { return; } if (m_InUpdateSettings) { return; }
m_InstantSaveDir.SetChanged(true); m_InstantSaveDir.SetChanged(true);
SendMessage(GetParent(), PSM_CHANGED, (WPARAM)m_hWnd, 0); SendMessage(GetParent(), PSM_CHANGED, (WPARAM)m_hWnd, 0);
} }
void COptionsDirectoriesPage::SnapShotDirChanged(UINT /*Code*/, int /*id*/, HWND /*ctl*/) void COptionsDirectoriesPage::SnapShotDirChanged(UINT /*Code*/, int /*id*/, HWND /*ctl*/)
{ {
if (m_InUpdateSettings) { return; } if (m_InUpdateSettings) { return; }
m_ScreenShotDir.SetChanged(true); m_ScreenShotDir.SetChanged(true);
SendMessage(GetParent(), PSM_CHANGED, (WPARAM)m_hWnd, 0); SendMessage(GetParent(), PSM_CHANGED, (WPARAM)m_hWnd, 0);
} }
void COptionsDirectoriesPage::TextureDirChanged(UINT /*Code*/, int /*id*/, HWND /*ctl*/) void COptionsDirectoriesPage::TextureDirChanged(UINT /*Code*/, int /*id*/, HWND /*ctl*/)
{ {
if (m_InUpdateSettings) { return; } if (m_InUpdateSettings) { return; }
m_TextureDir.SetChanged(true); m_TextureDir.SetChanged(true);
SendMessage(GetParent(), PSM_CHANGED, (WPARAM)m_hWnd, 0); SendMessage(GetParent(), PSM_CHANGED, (WPARAM)m_hWnd, 0);
} }
void COptionsDirectoriesPage::SelectPluginDir(UINT /*Code*/, int /*id*/, HWND /*ctl*/) void COptionsDirectoriesPage::SelectPluginDir(UINT /*Code*/, int /*id*/, HWND /*ctl*/)
{ {
SelectDirectory(DIR_SELECT_PLUGIN, m_PluginDir, m_PluginDefault, m_PluginSelected); SelectDirectory(DIR_SELECT_PLUGIN, m_PluginDir, m_PluginDefault, m_PluginSelected);
} }
void COptionsDirectoriesPage::SelectAutoDir(UINT /*Code*/, int /*id*/, HWND /*ctl*/) void COptionsDirectoriesPage::SelectAutoDir(UINT /*Code*/, int /*id*/, HWND /*ctl*/)
{ {
SelectDirectory(DIR_SELECT_AUTO, m_AutoSaveDir, m_AutoSaveDefault, m_AutoSaveSelected); SelectDirectory(DIR_SELECT_AUTO, m_AutoSaveDir, m_AutoSaveDefault, m_AutoSaveSelected);
} }
void COptionsDirectoriesPage::SelectInstantDir(UINT /*Code*/, int /*id*/, HWND /*ctl*/) void COptionsDirectoriesPage::SelectInstantDir(UINT /*Code*/, int /*id*/, HWND /*ctl*/)
{ {
SelectDirectory(DIR_SELECT_INSTANT, m_InstantSaveDir, m_InstantDefault, m_InstantSelected); SelectDirectory(DIR_SELECT_INSTANT, m_InstantSaveDir, m_InstantDefault, m_InstantSelected);
} }
void COptionsDirectoriesPage::SelectSnapShotDir(UINT /*Code*/, int /*id*/, HWND /*ctl*/) void COptionsDirectoriesPage::SelectSnapShotDir(UINT /*Code*/, int /*id*/, HWND /*ctl*/)
{ {
SelectDirectory(DIR_SELECT_SCREEN, m_ScreenShotDir, m_ScreenShotDefault, m_ScreenShotSelected); SelectDirectory(DIR_SELECT_SCREEN, m_ScreenShotDir, m_ScreenShotDefault, m_ScreenShotSelected);
} }
void COptionsDirectoriesPage::SelectTextureDir(UINT /*Code*/, int /*id*/, HWND /*ctl*/) void COptionsDirectoriesPage::SelectTextureDir(UINT /*Code*/, int /*id*/, HWND /*ctl*/)
{ {
SelectDirectory(DIR_SELECT_TEXTURE, m_TextureDir, m_TextureDefault, m_TextureSelected); SelectDirectory(DIR_SELECT_TEXTURE, m_TextureDir, m_TextureDefault, m_TextureSelected);
} }
void COptionsDirectoriesPage::UpdatePageSettings() void COptionsDirectoriesPage::UpdatePageSettings()
{ {
stdstr Directory; stdstr Directory;
m_InUpdateSettings = true; m_InUpdateSettings = true;
m_PluginDir.SetChanged(g_Settings->LoadStringVal(Directory_PluginSelected, Directory)); m_PluginDir.SetChanged(g_Settings->LoadStringVal(Directory_PluginSelected, Directory));
m_PluginDir.SetWindowText(Directory.c_str()); m_PluginDir.SetWindowText(Directory.c_str());
m_AutoSaveDir.SetChanged(g_Settings->LoadStringVal(Directory_NativeSaveSelected, Directory)); m_AutoSaveDir.SetChanged(g_Settings->LoadStringVal(Directory_NativeSaveSelected, Directory));
m_AutoSaveDir.SetWindowText(Directory.c_str()); m_AutoSaveDir.SetWindowText(Directory.c_str());
m_InstantSaveDir.SetChanged(g_Settings->LoadStringVal(Directory_InstantSaveSelected, Directory)); m_InstantSaveDir.SetChanged(g_Settings->LoadStringVal(Directory_InstantSaveSelected, Directory));
m_InstantSaveDir.SetWindowText(Directory.c_str()); m_InstantSaveDir.SetWindowText(Directory.c_str());
m_ScreenShotDir.SetChanged(g_Settings->LoadStringVal(Directory_SnapShotSelected, Directory)); m_ScreenShotDir.SetChanged(g_Settings->LoadStringVal(Directory_SnapShotSelected, Directory));
m_ScreenShotDir.SetWindowText(Directory.c_str()); m_ScreenShotDir.SetWindowText(Directory.c_str());
m_TextureDir.SetChanged(g_Settings->LoadStringVal(Directory_TextureSelected, Directory)); m_TextureDir.SetChanged(g_Settings->LoadStringVal(Directory_TextureSelected, Directory));
m_TextureDir.SetWindowText(Directory.c_str()); m_TextureDir.SetWindowText(Directory.c_str());
bool UseSelected; bool UseSelected;
m_PluginDefault.SetChanged(g_Settings->LoadBool(Directory_PluginUseSelected, UseSelected)); m_PluginDefault.SetChanged(g_Settings->LoadBool(Directory_PluginUseSelected, UseSelected));
m_PluginDefault.SetCheck(!UseSelected); m_PluginDefault.SetCheck(!UseSelected);
m_PluginSelected.SetCheck(UseSelected); m_PluginSelected.SetCheck(UseSelected);
m_AutoSaveDefault.SetChanged(g_Settings->LoadBool(Directory_NativeSaveUseSelected, UseSelected)); m_AutoSaveDefault.SetChanged(g_Settings->LoadBool(Directory_NativeSaveUseSelected, UseSelected));
m_AutoSaveDefault.SetCheck(!UseSelected); m_AutoSaveDefault.SetCheck(!UseSelected);
m_AutoSaveSelected.SetCheck(UseSelected); m_AutoSaveSelected.SetCheck(UseSelected);
m_InstantDefault.SetChanged(g_Settings->LoadBool(Directory_InstantSaveUseSelected, UseSelected)); m_InstantDefault.SetChanged(g_Settings->LoadBool(Directory_InstantSaveUseSelected, UseSelected));
m_InstantDefault.SetCheck(!UseSelected); m_InstantDefault.SetCheck(!UseSelected);
m_InstantSelected.SetCheck(UseSelected); m_InstantSelected.SetCheck(UseSelected);
m_ScreenShotDefault.SetChanged(g_Settings->LoadBool(Directory_SnapShotUseSelected, UseSelected)); m_ScreenShotDefault.SetChanged(g_Settings->LoadBool(Directory_SnapShotUseSelected, UseSelected));
m_ScreenShotDefault.SetCheck(!UseSelected); m_ScreenShotDefault.SetCheck(!UseSelected);
m_ScreenShotSelected.SetCheck(UseSelected); m_ScreenShotSelected.SetCheck(UseSelected);
m_TextureDefault.SetChanged(g_Settings->LoadBool(Directory_TextureUseSelected, UseSelected)); m_TextureDefault.SetChanged(g_Settings->LoadBool(Directory_TextureUseSelected, UseSelected));
m_TextureDefault.SetCheck(!UseSelected); m_TextureDefault.SetCheck(!UseSelected);
m_TextureSelected.SetCheck(UseSelected); m_TextureSelected.SetCheck(UseSelected);
m_InUpdateSettings = false; m_InUpdateSettings = false;
} }
void COptionsDirectoriesPage::UseSelectedClicked(UINT /*Code*/, int id, HWND /*ctl*/) void COptionsDirectoriesPage::UseSelectedClicked(UINT /*Code*/, int id, HWND /*ctl*/)
{ {
CModifiedButton * Button = NULL; CModifiedButton * Button = NULL;
switch (id) switch (id)
{ {
case IDC_PLUGIN_DEFAULT: Button = &m_PluginDefault; break; case IDC_PLUGIN_DEFAULT: Button = &m_PluginDefault; break;
case IDC_PLUGIN_OTHER: Button = &m_PluginDefault; break; case IDC_PLUGIN_OTHER: Button = &m_PluginDefault; break;
case IDC_AUTO_DEFAULT: Button = &m_AutoSaveDefault; break; case IDC_AUTO_DEFAULT: Button = &m_AutoSaveDefault; break;
case IDC_AUTO_OTHER: Button = &m_AutoSaveDefault; break; case IDC_AUTO_OTHER: Button = &m_AutoSaveDefault; break;
case IDC_INSTANT_DEFAULT: Button = &m_InstantDefault; break; case IDC_INSTANT_DEFAULT: Button = &m_InstantDefault; break;
case IDC_INSTANT_OTHER: Button = &m_InstantDefault; break; case IDC_INSTANT_OTHER: Button = &m_InstantDefault; break;
case IDC_SNAP_DEFAULT: Button = &m_ScreenShotDefault; break; case IDC_SNAP_DEFAULT: Button = &m_ScreenShotDefault; break;
case IDC_SNAP_OTHER: Button = &m_ScreenShotDefault; break; case IDC_SNAP_OTHER: Button = &m_ScreenShotDefault; break;
case IDC_TEXTURE_DEFAULT: Button = &m_TextureDefault; break; case IDC_TEXTURE_DEFAULT: Button = &m_TextureDefault; break;
case IDC_TEXTURE_OTHER: Button = &m_TextureDefault; break; case IDC_TEXTURE_OTHER: Button = &m_TextureDefault; break;
} }
if (Button == NULL) if (Button == NULL)
{ {
return; return;
} }
if (!Button->IsChanged() || Button->IsReset()) if (!Button->IsChanged() || Button->IsReset())
{ {
if ((int)Button->GetMenu() == id) if ((int)Button->GetMenu() == id)
{ {
return; return;
} }
} }
Button->SetChanged(true); Button->SetChanged(true);
SendMessage(GetParent(), PSM_CHANGED, (WPARAM)m_hWnd, 0); SendMessage(GetParent(), PSM_CHANGED, (WPARAM)m_hWnd, 0);
} }
void COptionsDirectoriesPage::HidePage() void COptionsDirectoriesPage::HidePage()
{ {
ShowWindow(SW_HIDE); ShowWindow(SW_HIDE);
} }
void COptionsDirectoriesPage::ShowPage() void COptionsDirectoriesPage::ShowPage()
{ {
ShowWindow(SW_SHOW); ShowWindow(SW_SHOW);
} }
void COptionsDirectoriesPage::ResetDirectory(CModifiedEditBox & EditBox, SettingID Type) void COptionsDirectoriesPage::ResetDirectory(CModifiedEditBox & EditBox, SettingID Type)
{ {
if (!EditBox.IsChanged()) if (!EditBox.IsChanged())
{ {
return; return;
} }
stdstr dir; stdstr dir;
g_Settings->LoadDefaultString(Type, dir); g_Settings->LoadDefaultString(Type, dir);
EditBox.SetWindowText(dir.c_str()); EditBox.SetWindowText(dir.c_str());
EditBox.SetReset(true); EditBox.SetReset(true);
} }
void COptionsDirectoriesPage::ResetDefaultSelected(CModifiedButton & ButtonDefault, CModifiedButton & ButtonSelected, SettingID Type) void COptionsDirectoriesPage::ResetDefaultSelected(CModifiedButton & ButtonDefault, CModifiedButton & ButtonSelected, SettingID Type)
{ {
if (!ButtonDefault.IsChanged()) if (!ButtonDefault.IsChanged())
{ {
return; return;
} }
bool UseSelected; bool UseSelected;
g_Settings->LoadDefaultBool(Type, UseSelected); g_Settings->LoadDefaultBool(Type, UseSelected);
ButtonDefault.SetCheck(!UseSelected); ButtonDefault.SetCheck(!UseSelected);
ButtonSelected.SetCheck(UseSelected); ButtonSelected.SetCheck(UseSelected);
ButtonDefault.SetReset(true); ButtonDefault.SetReset(true);
} }
void COptionsDirectoriesPage::UpdateDirectory(CModifiedEditBox & EditBox, SettingID Type) void COptionsDirectoriesPage::UpdateDirectory(CModifiedEditBox & EditBox, SettingID Type)
{ {
if (EditBox.IsChanged()) if (EditBox.IsChanged())
{ {
stdstr dir = EditBox.GetWindowText(); stdstr dir = EditBox.GetWindowText();
g_Settings->SaveString(Type, dir.c_str()); g_Settings->SaveString(Type, dir.c_str());
} }
if (EditBox.IsReset()) if (EditBox.IsReset())
{ {
g_Settings->DeleteSetting(Type); g_Settings->DeleteSetting(Type);
} }
} }
void COptionsDirectoriesPage::UpdateDefaultSelected(CModifiedButton & Button, SettingID Type) void COptionsDirectoriesPage::UpdateDefaultSelected(CModifiedButton & Button, SettingID Type)
{ {
if (Button.IsChanged()) if (Button.IsChanged())
{ {
bool bUseSelected = (Button.GetCheck() & BST_CHECKED) == 0; bool bUseSelected = (Button.GetCheck() & BST_CHECKED) == 0;
g_Settings->SaveBool(Type, bUseSelected); g_Settings->SaveBool(Type, bUseSelected);
if (Type == Directory_TextureUseSelected && !bUseSelected) if (Type == Directory_TextureUseSelected && !bUseSelected)
{ {
g_Settings->DeleteSetting(Directory_TextureSelected); g_Settings->DeleteSetting(Directory_TextureSelected);
} }
} }
if (Button.IsReset()) if (Button.IsReset())
{ {
g_Settings->DeleteSetting(Type); g_Settings->DeleteSetting(Type);
} }
} }
void COptionsDirectoriesPage::ApplySettings(bool UpdateScreen) void COptionsDirectoriesPage::ApplySettings(bool UpdateScreen)
{ {
UpdateDirectory(m_PluginDir, Directory_PluginSelected); UpdateDirectory(m_PluginDir, Directory_PluginSelected);
UpdateDirectory(m_AutoSaveDir, Directory_NativeSaveSelected); UpdateDirectory(m_AutoSaveDir, Directory_NativeSaveSelected);
UpdateDirectory(m_InstantSaveDir, Directory_InstantSaveSelected); UpdateDirectory(m_InstantSaveDir, Directory_InstantSaveSelected);
UpdateDirectory(m_ScreenShotDir, Directory_SnapShotSelected); UpdateDirectory(m_ScreenShotDir, Directory_SnapShotSelected);
UpdateDirectory(m_TextureDir, Directory_TextureSelected); UpdateDirectory(m_TextureDir, Directory_TextureSelected);
UpdateDefaultSelected(m_PluginDefault, Directory_PluginUseSelected); UpdateDefaultSelected(m_PluginDefault, Directory_PluginUseSelected);
UpdateDefaultSelected(m_AutoSaveDefault, Directory_NativeSaveUseSelected); UpdateDefaultSelected(m_AutoSaveDefault, Directory_NativeSaveUseSelected);
UpdateDefaultSelected(m_InstantDefault, Directory_InstantSaveUseSelected); UpdateDefaultSelected(m_InstantDefault, Directory_InstantSaveUseSelected);
UpdateDefaultSelected(m_ScreenShotDefault, Directory_SnapShotUseSelected); UpdateDefaultSelected(m_ScreenShotDefault, Directory_SnapShotUseSelected);
UpdateDefaultSelected(m_TextureDefault, Directory_TextureUseSelected); UpdateDefaultSelected(m_TextureDefault, Directory_TextureUseSelected);
if (UpdateScreen) if (UpdateScreen)
{ {
UpdatePageSettings(); UpdatePageSettings();
} }
} }
bool COptionsDirectoriesPage::EnableReset(void) bool COptionsDirectoriesPage::EnableReset(void)
{ {
if (m_PluginDir.IsChanged()) { return true; } if (m_PluginDir.IsChanged()) { return true; }
if (m_AutoSaveDir.IsChanged()) { return true; } if (m_AutoSaveDir.IsChanged()) { return true; }
if (m_InstantSaveDir.IsChanged()) { return true; } if (m_InstantSaveDir.IsChanged()) { return true; }
if (m_ScreenShotDir.IsChanged()) { return true; } if (m_ScreenShotDir.IsChanged()) { return true; }
if (m_TextureDir.IsChanged()) { return true; } if (m_TextureDir.IsChanged()) { return true; }
if (m_PluginDefault.IsChanged()) { return true; } if (m_PluginDefault.IsChanged()) { return true; }
if (m_AutoSaveDefault.IsChanged()) { return true; } if (m_AutoSaveDefault.IsChanged()) { return true; }
if (m_InstantDefault.IsChanged()) { return true; } if (m_InstantDefault.IsChanged()) { return true; }
if (m_ScreenShotDefault.IsChanged()) { return true; } if (m_ScreenShotDefault.IsChanged()) { return true; }
if (m_TextureDefault.IsChanged()) { return true; } if (m_TextureDefault.IsChanged()) { return true; }
return false; return false;
} }
void COptionsDirectoriesPage::ResetPage() void COptionsDirectoriesPage::ResetPage()
{ {
ResetDirectory(m_PluginDir, Directory_PluginSelected); ResetDirectory(m_PluginDir, Directory_PluginSelected);
ResetDirectory(m_AutoSaveDir, Directory_NativeSaveSelected); ResetDirectory(m_AutoSaveDir, Directory_NativeSaveSelected);
ResetDirectory(m_InstantSaveDir, Directory_InstantSaveSelected); ResetDirectory(m_InstantSaveDir, Directory_InstantSaveSelected);
ResetDirectory(m_ScreenShotDir, Directory_SnapShotSelected); ResetDirectory(m_ScreenShotDir, Directory_SnapShotSelected);
ResetDirectory(m_TextureDir, Directory_TextureSelected); ResetDirectory(m_TextureDir, Directory_TextureSelected);
ResetDefaultSelected(m_PluginDefault, m_PluginSelected, Directory_PluginUseSelected); ResetDefaultSelected(m_PluginDefault, m_PluginSelected, Directory_PluginUseSelected);
ResetDefaultSelected(m_AutoSaveDefault, m_AutoSaveSelected, Directory_NativeSaveUseSelected); ResetDefaultSelected(m_AutoSaveDefault, m_AutoSaveSelected, Directory_NativeSaveUseSelected);
ResetDefaultSelected(m_InstantDefault, m_InstantSelected, Directory_InstantSaveUseSelected); ResetDefaultSelected(m_InstantDefault, m_InstantSelected, Directory_InstantSaveUseSelected);
ResetDefaultSelected(m_ScreenShotDefault, m_ScreenShotSelected, Directory_SnapShotUseSelected); ResetDefaultSelected(m_ScreenShotDefault, m_ScreenShotSelected, Directory_SnapShotUseSelected);
ResetDefaultSelected(m_TextureDefault, m_TextureSelected, Directory_TextureUseSelected); ResetDefaultSelected(m_TextureDefault, m_TextureSelected, Directory_TextureUseSelected);
SendMessage(GetParent(), PSM_CHANGED, (WPARAM)m_hWnd, 0); SendMessage(GetParent(), PSM_CHANGED, (WPARAM)m_hWnd, 0);
} }

View File

@ -11,78 +11,76 @@
#pragma once #pragma once
class COptionsDirectoriesPage : class COptionsDirectoriesPage :
public CDialogImpl<COptionsDirectoriesPage>, public CDialogImpl<COptionsDirectoriesPage>,
public CSettingsPage public CSettingsPage
{ {
BEGIN_MSG_MAP_EX(COptionsDirectoriesPage)
COMMAND_ID_HANDLER_EX(IDC_SELECT_PLUGIN_DIR, SelectPluginDir)
COMMAND_ID_HANDLER_EX(IDC_SELECT_AUTO_DIR, SelectAutoDir)
COMMAND_ID_HANDLER_EX(IDC_SELECT_INSTANT_DIR, SelectInstantDir)
COMMAND_ID_HANDLER_EX(IDC_SELECT_SNAP_DIR, SelectSnapShotDir)
COMMAND_ID_HANDLER_EX(IDC_SELECT_TEXTURE_DIR, SelectTextureDir)
COMMAND_HANDLER_EX(IDC_PLUGIN_DIR, EN_UPDATE, PluginDirChanged)
COMMAND_HANDLER_EX(IDC_AUTO_DIR, EN_UPDATE, AutoSaveDirChanged)
COMMAND_HANDLER_EX(IDC_INSTANT_DIR, EN_UPDATE, InstantSaveDirChanged)
COMMAND_HANDLER_EX(IDC_SNAP_DIR, EN_UPDATE, SnapShotDirChanged)
COMMAND_HANDLER_EX(IDC_TEXTURE_DIR, EN_UPDATE, TextureDirChanged)
COMMAND_HANDLER_EX(IDC_PLUGIN_DEFAULT, BN_CLICKED, UseSelectedClicked)
COMMAND_HANDLER_EX(IDC_PLUGIN_OTHER, BN_CLICKED, UseSelectedClicked)
COMMAND_HANDLER_EX(IDC_AUTO_DEFAULT, BN_CLICKED, UseSelectedClicked)
COMMAND_HANDLER_EX(IDC_AUTO_OTHER, BN_CLICKED, UseSelectedClicked)
COMMAND_HANDLER_EX(IDC_INSTANT_DEFAULT, BN_CLICKED, UseSelectedClicked)
COMMAND_HANDLER_EX(IDC_INSTANT_OTHER, BN_CLICKED, UseSelectedClicked)
COMMAND_HANDLER_EX(IDC_SNAP_DEFAULT, BN_CLICKED, UseSelectedClicked)
COMMAND_HANDLER_EX(IDC_SNAP_OTHER, BN_CLICKED, UseSelectedClicked)
COMMAND_HANDLER_EX(IDC_TEXTURE_DEFAULT, BN_CLICKED, UseSelectedClicked)
COMMAND_HANDLER_EX(IDC_TEXTURE_OTHER, BN_CLICKED, UseSelectedClicked)
END_MSG_MAP()
BEGIN_MSG_MAP_EX(COptionsDirectoriesPage) enum { IDD = IDD_Settings_Directory };
COMMAND_ID_HANDLER_EX(IDC_SELECT_PLUGIN_DIR,SelectPluginDir);
COMMAND_ID_HANDLER_EX(IDC_SELECT_AUTO_DIR,SelectAutoDir);
COMMAND_ID_HANDLER_EX(IDC_SELECT_INSTANT_DIR,SelectInstantDir);
COMMAND_ID_HANDLER_EX(IDC_SELECT_SNAP_DIR,SelectSnapShotDir);
COMMAND_ID_HANDLER_EX(IDC_SELECT_TEXTURE_DIR,SelectTextureDir);
COMMAND_HANDLER_EX(IDC_PLUGIN_DIR,EN_UPDATE,PluginDirChanged)
COMMAND_HANDLER_EX(IDC_AUTO_DIR,EN_UPDATE,AutoSaveDirChanged)
COMMAND_HANDLER_EX(IDC_INSTANT_DIR,EN_UPDATE,InstantSaveDirChanged)
COMMAND_HANDLER_EX(IDC_SNAP_DIR,EN_UPDATE,SnapShotDirChanged)
COMMAND_HANDLER_EX(IDC_TEXTURE_DIR,EN_UPDATE,TextureDirChanged)
COMMAND_HANDLER_EX(IDC_PLUGIN_DEFAULT,BN_CLICKED,UseSelectedClicked)
COMMAND_HANDLER_EX(IDC_PLUGIN_OTHER,BN_CLICKED,UseSelectedClicked)
COMMAND_HANDLER_EX(IDC_AUTO_DEFAULT,BN_CLICKED,UseSelectedClicked)
COMMAND_HANDLER_EX(IDC_AUTO_OTHER,BN_CLICKED,UseSelectedClicked)
COMMAND_HANDLER_EX(IDC_INSTANT_DEFAULT,BN_CLICKED,UseSelectedClicked)
COMMAND_HANDLER_EX(IDC_INSTANT_OTHER,BN_CLICKED,UseSelectedClicked)
COMMAND_HANDLER_EX(IDC_SNAP_DEFAULT,BN_CLICKED,UseSelectedClicked)
COMMAND_HANDLER_EX(IDC_SNAP_OTHER,BN_CLICKED,UseSelectedClicked)
COMMAND_HANDLER_EX(IDC_TEXTURE_DEFAULT,BN_CLICKED,UseSelectedClicked)
COMMAND_HANDLER_EX(IDC_TEXTURE_OTHER,BN_CLICKED,UseSelectedClicked)
END_MSG_MAP()
enum { IDD = IDD_Settings_Directory };
public: public:
COptionsDirectoriesPage(HWND hParent, const RECT & rcDispay ); COptionsDirectoriesPage(HWND hParent, const RECT & rcDispay);
LanguageStringID PageTitle ( void ) { return TAB_DIRECTORY; } LanguageStringID PageTitle(void) { return TAB_DIRECTORY; }
void HidePage ( void ); void HidePage(void);
void ShowPage ( void ); void ShowPage(void);
void ApplySettings ( bool UpdateScreen ); void ApplySettings(bool UpdateScreen);
bool EnableReset ( void ); bool EnableReset(void);
void ResetPage ( void ); void ResetPage(void);
private: private:
void SelectPluginDir ( UINT Code, int id, HWND ctl ); void SelectPluginDir(UINT Code, int id, HWND ctl);
void SelectAutoDir ( UINT Code, int id, HWND ctl ); void SelectAutoDir(UINT Code, int id, HWND ctl);
void SelectInstantDir ( UINT Code, int id, HWND ctl ); void SelectInstantDir(UINT Code, int id, HWND ctl);
void SelectSnapShotDir ( UINT Code, int id, HWND ctl ); void SelectSnapShotDir(UINT Code, int id, HWND ctl);
void SelectTextureDir ( UINT Code, int id, HWND ctl ); void SelectTextureDir(UINT Code, int id, HWND ctl);
void PluginDirChanged ( UINT Code, int id, HWND ctl ); void PluginDirChanged(UINT Code, int id, HWND ctl);
void AutoSaveDirChanged ( UINT Code, int id, HWND ctl ); void AutoSaveDirChanged(UINT Code, int id, HWND ctl);
void InstantSaveDirChanged ( UINT Code, int id, HWND ctl ); void InstantSaveDirChanged(UINT Code, int id, HWND ctl);
void SnapShotDirChanged ( UINT Code, int id, HWND ctl ); void SnapShotDirChanged(UINT Code, int id, HWND ctl);
void TextureDirChanged ( UINT Code, int id, HWND ctl ); void TextureDirChanged(UINT Code, int id, HWND ctl);
void UseSelectedClicked ( UINT Code, int id, HWND ctl ); void UseSelectedClicked(UINT Code, int id, HWND ctl);
void UpdatePageSettings ( void ); void UpdatePageSettings(void);
void SelectDirectory ( LanguageStringID Title, CModifiedEditBox & EditBox, CModifiedButton & Default, CModifiedButton & selected ); void SelectDirectory(LanguageStringID Title, CModifiedEditBox & EditBox, CModifiedButton & Default, CModifiedButton & selected);
void UpdateDirectory ( CModifiedEditBox & EditBox, SettingID Type ); void UpdateDirectory(CModifiedEditBox & EditBox, SettingID Type);
void UpdateDefaultSelected ( CModifiedButton & Button, SettingID Type ); void UpdateDefaultSelected(CModifiedButton & Button, SettingID Type);
void ResetDirectory ( CModifiedEditBox & EditBox, SettingID Type );
void ResetDefaultSelected ( CModifiedButton & ButtonDefault, CModifiedButton & ButtonSelected, SettingID Type );
static int CALLBACK SelectDirCallBack (HWND hwnd,DWORD uMsg,DWORD lp, DWORD lpData); void ResetDirectory(CModifiedEditBox & EditBox, SettingID Type);
void ResetDefaultSelected(CModifiedButton & ButtonDefault, CModifiedButton & ButtonSelected, SettingID Type);
CPartialGroupBox m_PluginGroup, m_AutoSaveGroup, m_InstantSaveGroup, static int CALLBACK SelectDirCallBack(HWND hwnd, DWORD uMsg, DWORD lp, DWORD lpData);
m_ScreenShotGroup, m_TextureGroup;
CModifiedEditBox m_PluginDir, m_AutoSaveDir, m_InstantSaveDir,
m_ScreenShotDir, m_TextureDir;
CModifiedButton m_PluginDefault, m_PluginSelected, m_AutoSaveDefault, m_AutoSaveSelected, CPartialGroupBox m_PluginGroup, m_AutoSaveGroup, m_InstantSaveGroup,
m_InstantDefault, m_InstantSelected, m_ScreenShotDefault, m_ScreenShotSelected, m_ScreenShotGroup, m_TextureGroup;
m_TextureDefault, m_TextureSelected; CModifiedEditBox m_PluginDir, m_AutoSaveDir, m_InstantSaveDir,
m_ScreenShotDir, m_TextureDir;
bool m_InUpdateSettings;
CModifiedButton m_PluginDefault, m_PluginSelected, m_AutoSaveDefault, m_AutoSaveSelected,
m_InstantDefault, m_InstantSelected, m_ScreenShotDefault, m_ScreenShotSelected,
m_TextureDefault, m_TextureSelected;
bool m_InUpdateSettings;
}; };