[Project64] Cleanup Settings/SettingsPage-GameBrowser.cpp

This commit is contained in:
zilmar 2015-12-24 06:39:23 +11:00
parent fd5941fa35
commit 58c125d337
2 changed files with 198 additions and 198 deletions

View File

@ -16,242 +16,242 @@ COptionsGameBrowserPage::COptionsGameBrowserPage(HWND hParent, const RECT & rcDi
m_OrderChanged(false),
m_OrderReset(false)
{
if (!Create(hParent, rcDispay))
{
return;
}
if (!Create(hParent, rcDispay))
{
return;
}
SetDlgItemTextW(m_hWnd, IDC_ROMSEL_TEXT2, GS(RB_ROMS));
SetDlgItemTextW(m_hWnd, IDC_ROMSEL_TEXT4, GS(RB_DIRS));
SetDlgItemTextW(m_hWnd, IDC_USE_ROMBROWSER, GS(RB_USE));
SetDlgItemTextW(m_hWnd, IDC_RECURSION, GS(RB_DIR_RECURSION));
SetDlgItemTextW(m_hWnd, IDC_ROMSEL_TEXT5, GS(RB_AVALIABLE_FIELDS));
SetDlgItemTextW(m_hWnd, IDC_ROMSEL_TEXT6, GS(RB_SHOW_FIELDS));
SetDlgItemTextW(m_hWnd, IDC_ADD, GS(RB_ADD));
SetDlgItemTextW(m_hWnd, IDC_REMOVE, GS(RB_REMOVE));
SetDlgItemTextW(m_hWnd, IDC_UP, GS(RB_UP));
SetDlgItemTextW(m_hWnd, IDC_DOWN, GS(RB_DOWN));
SetDlgItemTextW(m_hWnd, IDC_ROMSEL_TEXT2, GS(RB_ROMS));
SetDlgItemTextW(m_hWnd, IDC_ROMSEL_TEXT4, GS(RB_DIRS));
SetDlgItemTextW(m_hWnd, IDC_USE_ROMBROWSER, GS(RB_USE));
SetDlgItemTextW(m_hWnd, IDC_RECURSION, GS(RB_DIR_RECURSION));
SetDlgItemTextW(m_hWnd, IDC_ROMSEL_TEXT5, GS(RB_AVALIABLE_FIELDS));
SetDlgItemTextW(m_hWnd, IDC_ROMSEL_TEXT6, GS(RB_SHOW_FIELDS));
SetDlgItemTextW(m_hWnd, IDC_ADD, GS(RB_ADD));
SetDlgItemTextW(m_hWnd, IDC_REMOVE, GS(RB_REMOVE));
SetDlgItemTextW(m_hWnd, IDC_UP, GS(RB_UP));
SetDlgItemTextW(m_hWnd, IDC_DOWN, GS(RB_DOWN));
AddModCheckBox(GetDlgItem(IDC_USE_ROMBROWSER), RomBrowser_Enabled);
AddModCheckBox(GetDlgItem(IDC_RECURSION), RomBrowser_Recursive);
AddModCheckBox(GetDlgItem(IDC_USE_ROMBROWSER), RomBrowser_Enabled);
AddModCheckBox(GetDlgItem(IDC_RECURSION), RomBrowser_Recursive);
m_Avaliable.Attach(GetDlgItem(IDC_AVALIABLE));
m_Using.Attach(GetDlgItem(IDC_USING));
m_Avaliable.Attach(GetDlgItem(IDC_AVALIABLE));
m_Using.Attach(GetDlgItem(IDC_USING));
CRomBrowser::GetFieldInfo(m_Fields);
CRomBrowser::GetFieldInfo(m_Fields);
UpdatePageSettings();
UpdatePageSettings();
}
void COptionsGameBrowserPage::UpdateFieldList(const ROMBROWSER_FIELDS_LIST & Fields)
{
m_Avaliable.ResetContent();
m_Using.ResetContent();
m_Avaliable.ResetContent();
m_Using.ResetContent();
m_OrderChanged = false;
for (int i = 0, n = Fields.size(); i < n; i++)
{
if (Fields[i].PosChanged())
{
m_OrderChanged = true;
}
int Pos = Fields[i].Pos();
if (Pos < 0)
{
m_Avaliable.SetItemData(m_Avaliable.AddStringW(GS(Fields[i].LangID())), i);
continue;
}
int listCount = m_Using.GetCount();
if (Pos > listCount) { Pos = listCount; }
m_Using.SetItemData(m_Using.InsertStringW(Pos, GS(Fields[i].LangID())), i);
}
m_OrderChanged = false;
for (int i = 0, n = Fields.size(); i < n; i++)
{
if (Fields[i].PosChanged())
{
m_OrderChanged = true;
}
int Pos = Fields[i].Pos();
if (Pos < 0)
{
m_Avaliable.SetItemData(m_Avaliable.AddStringW(GS(Fields[i].LangID())), i);
continue;
}
int listCount = m_Using.GetCount();
if (Pos > listCount) { Pos = listCount; }
m_Using.SetItemData(m_Using.InsertStringW(Pos, GS(Fields[i].LangID())), i);
}
}
void COptionsGameBrowserPage::UpdatePageSettings(void)
{
UpdateFieldList(m_Fields);
CSettingsPageImpl<COptionsGameBrowserPage>::UpdatePageSettings();
FixCtrlState();
UpdateFieldList(m_Fields);
CSettingsPageImpl<COptionsGameBrowserPage>::UpdatePageSettings();
FixCtrlState();
}
void COptionsGameBrowserPage::UseRomBrowserChanged(UINT Code, int id, HWND ctl)
{
CheckBoxChanged(Code, id, ctl);
FixCtrlState();
CheckBoxChanged(Code, id, ctl);
FixCtrlState();
}
void COptionsGameBrowserPage::FixCtrlState(void)
{
bool bEnabled = (SendDlgItemMessage(IDC_USE_ROMBROWSER, BM_GETCHECK, 0, 0) == BST_CHECKED);
::EnableWindow(GetDlgItem(IDC_ROMSEL_TEXT5), bEnabled);
::EnableWindow(GetDlgItem(IDC_ROMSEL_TEXT6), bEnabled);
::EnableWindow(GetDlgItem(IDC_AVALIABLE), bEnabled);
::EnableWindow(GetDlgItem(IDC_ADD), bEnabled);
::EnableWindow(GetDlgItem(IDC_REMOVE), bEnabled);
::EnableWindow(GetDlgItem(IDC_USING), bEnabled);
::EnableWindow(GetDlgItem(IDC_UP), bEnabled);
::EnableWindow(GetDlgItem(IDC_DOWN), bEnabled);
::EnableWindow(GetDlgItem(IDC_RECURSION), bEnabled);
bool bEnabled = (SendDlgItemMessage(IDC_USE_ROMBROWSER, BM_GETCHECK, 0, 0) == BST_CHECKED);
::EnableWindow(GetDlgItem(IDC_ROMSEL_TEXT5), bEnabled);
::EnableWindow(GetDlgItem(IDC_ROMSEL_TEXT6), bEnabled);
::EnableWindow(GetDlgItem(IDC_AVALIABLE), bEnabled);
::EnableWindow(GetDlgItem(IDC_ADD), bEnabled);
::EnableWindow(GetDlgItem(IDC_REMOVE), bEnabled);
::EnableWindow(GetDlgItem(IDC_USING), bEnabled);
::EnableWindow(GetDlgItem(IDC_UP), bEnabled);
::EnableWindow(GetDlgItem(IDC_DOWN), bEnabled);
::EnableWindow(GetDlgItem(IDC_RECURSION), bEnabled);
}
void COptionsGameBrowserPage::AddFieldClicked(UINT /*Code*/, int /*id*/, HWND /*ctl*/)
{
int index = m_Avaliable.GetCurSel();
if (index < 0)
{
return;
}
//remove from list
int i = m_Avaliable.GetItemData(index);
m_Avaliable.DeleteString(index);
int index = m_Avaliable.GetCurSel();
if (index < 0)
{
return;
}
//remove from list
int i = m_Avaliable.GetItemData(index);
m_Avaliable.DeleteString(index);
//select next in list
int listCount = m_Avaliable.GetCount();
if (index >= listCount) { index -= 1; }
m_Avaliable.SetCurSel(index);
//select next in list
int listCount = m_Avaliable.GetCount();
if (index >= listCount) { index -= 1; }
m_Avaliable.SetCurSel(index);
//Add to list
index = m_Using.AddStringW(GS(m_Fields[i].LangID()));
m_Using.SetItemData(index, i);
m_Using.SetCurSel(index);
//Add to list
index = m_Using.AddStringW(GS(m_Fields[i].LangID()));
m_Using.SetItemData(index, i);
m_Using.SetCurSel(index);
m_OrderChanged = true;
m_OrderReset = false;
SendMessage(GetParent(), PSM_CHANGED, (WPARAM)m_hWnd, 0);
m_OrderChanged = true;
m_OrderReset = false;
SendMessage(GetParent(), PSM_CHANGED, (WPARAM)m_hWnd, 0);
}
void COptionsGameBrowserPage::RemoveFieldClicked(UINT /*Code*/, int /*id*/, HWND /*ctl*/)
{
int index = m_Using.GetCurSel();
if (index < 0)
{
return;
}
//remove from list
int i = m_Using.GetItemData(index);
m_Using.DeleteString(index);
int index = m_Using.GetCurSel();
if (index < 0)
{
return;
}
//remove from list
int i = m_Using.GetItemData(index);
m_Using.DeleteString(index);
//select next in list
int listCount = m_Using.GetCount();
if (index >= listCount) { index -= 1; }
m_Using.SetCurSel(index);
//select next in list
int listCount = m_Using.GetCount();
if (index >= listCount) { index -= 1; }
m_Using.SetCurSel(index);
//Add to list
index = m_Avaliable.AddStringW(GS(m_Fields[i].LangID()));
m_Avaliable.SetItemData(index, i);
m_Avaliable.SetCurSel(index);
//Add to list
index = m_Avaliable.AddStringW(GS(m_Fields[i].LangID()));
m_Avaliable.SetItemData(index, i);
m_Avaliable.SetCurSel(index);
m_OrderChanged = true;
m_OrderReset = false;
SendMessage(GetParent(), PSM_CHANGED, (WPARAM)m_hWnd, 0);
m_OrderChanged = true;
m_OrderReset = false;
SendMessage(GetParent(), PSM_CHANGED, (WPARAM)m_hWnd, 0);
}
void COptionsGameBrowserPage::MoveFieldUpClicked(UINT /*Code*/, int /*id*/, HWND /*ctl*/)
{
int index = m_Using.GetCurSel();
if (index <= 0)
{
return;
}
int i = m_Using.GetItemData(index);
m_Using.DeleteString(index);
int index = m_Using.GetCurSel();
if (index <= 0)
{
return;
}
int i = m_Using.GetItemData(index);
m_Using.DeleteString(index);
index = m_Using.InsertStringW(index - 1, GS(m_Fields[i].LangID()));
m_Using.SetItemData(index, i);
m_Using.SetCurSel(index);
index = m_Using.InsertStringW(index - 1, GS(m_Fields[i].LangID()));
m_Using.SetItemData(index, i);
m_Using.SetCurSel(index);
m_OrderChanged = true;
m_OrderReset = false;
SendMessage(GetParent(), PSM_CHANGED, (WPARAM)m_hWnd, 0);
m_OrderChanged = true;
m_OrderReset = false;
SendMessage(GetParent(), PSM_CHANGED, (WPARAM)m_hWnd, 0);
}
void COptionsGameBrowserPage::MoveFieldDownClicked(UINT /*Code*/, int /*id*/, HWND /*ctl*/)
{
int index = m_Using.GetCurSel();
if (index < 0 || index >= (m_Using.GetCount() - 1))
{
return;
}
int i = m_Using.GetItemData(index);
m_Using.DeleteString(index);
int index = m_Using.GetCurSel();
if (index < 0 || index >= (m_Using.GetCount() - 1))
{
return;
}
int i = m_Using.GetItemData(index);
m_Using.DeleteString(index);
index = m_Using.InsertStringW(index + 1, GS(m_Fields[i].LangID()));
m_Using.SetItemData(index, i);
m_Using.SetCurSel(index);
index = m_Using.InsertStringW(index + 1, GS(m_Fields[i].LangID()));
m_Using.SetItemData(index, i);
m_Using.SetCurSel(index);
m_OrderChanged = true;
m_OrderReset = false;
SendMessage(GetParent(), PSM_CHANGED, (WPARAM)m_hWnd, 0);
m_OrderChanged = true;
m_OrderReset = false;
SendMessage(GetParent(), PSM_CHANGED, (WPARAM)m_hWnd, 0);
}
void COptionsGameBrowserPage::HidePage()
{
ShowWindow(SW_HIDE);
ShowWindow(SW_HIDE);
}
void COptionsGameBrowserPage::ShowPage()
{
ShowWindow(SW_SHOW);
ShowWindow(SW_SHOW);
}
void COptionsGameBrowserPage::ApplySettings(bool UpdateScreen)
{
bool bColChanged = false;
if (m_OrderReset)
{
for (size_t i = 0; i < m_Fields.size(); i++)
{
m_Fields[i].ResetPos();
}
bColChanged = true;
}
else
{
size_t Item, listCount = m_Using.GetCount();
for (Item = 0; Item < listCount; Item++)
{
int Pos = m_Using.GetItemData(Item);
if (m_OrderReset || m_Fields[Pos].Pos() != Item)
{
m_Fields[Pos].SetColPos(Item);
bColChanged = true;
}
}
bool bColChanged = false;
if (m_OrderReset)
{
for (size_t i = 0; i < m_Fields.size(); i++)
{
m_Fields[i].ResetPos();
}
bColChanged = true;
}
else
{
size_t Item, listCount = m_Using.GetCount();
for (Item = 0; Item < listCount; Item++)
{
int Pos = m_Using.GetItemData(Item);
if (m_OrderReset || m_Fields[Pos].Pos() != Item)
{
m_Fields[Pos].SetColPos(Item);
bColChanged = true;
}
}
listCount = m_Avaliable.GetCount();
for (Item = 0; Item < listCount; Item++)
{
int Pos = m_Avaliable.GetItemData(Item);
if (m_OrderReset || m_Fields[Pos].Pos() != -1)
{
m_Fields[Pos].SetColPos(-1);
bColChanged = true;
}
}
}
if (bColChanged)
{
g_Settings->SaveBool(RomBrowser_ColoumnsChanged, !g_Settings->LoadBool(RomBrowser_ColoumnsChanged));
}
listCount = m_Avaliable.GetCount();
for (Item = 0; Item < listCount; Item++)
{
int Pos = m_Avaliable.GetItemData(Item);
if (m_OrderReset || m_Fields[Pos].Pos() != -1)
{
m_Fields[Pos].SetColPos(-1);
bColChanged = true;
}
}
}
if (bColChanged)
{
g_Settings->SaveBool(RomBrowser_ColoumnsChanged, !g_Settings->LoadBool(RomBrowser_ColoumnsChanged));
}
CSettingsPageImpl<COptionsGameBrowserPage>::ApplySettings(UpdateScreen);
CSettingsPageImpl<COptionsGameBrowserPage>::ApplySettings(UpdateScreen);
}
bool COptionsGameBrowserPage::EnableReset(void)
{
if (m_OrderChanged) { return true; }
return CSettingsPageImpl<COptionsGameBrowserPage>::EnableReset();
if (m_OrderChanged) { return true; }
return CSettingsPageImpl<COptionsGameBrowserPage>::EnableReset();
}
void COptionsGameBrowserPage::ResetPage()
{
if (m_OrderChanged)
{
ROMBROWSER_FIELDS_LIST Fields;
CRomBrowser::GetFieldInfo(Fields, true);
UpdateFieldList(Fields);
m_OrderReset = true;
SendMessage(GetParent(), PSM_CHANGED, (WPARAM)m_hWnd, 0);
}
CSettingsPageImpl<COptionsGameBrowserPage>::ResetPage();
}
if (m_OrderChanged)
{
ROMBROWSER_FIELDS_LIST Fields;
CRomBrowser::GetFieldInfo(Fields, true);
UpdateFieldList(Fields);
m_OrderReset = true;
SendMessage(GetParent(), PSM_CHANGED, (WPARAM)m_hWnd, 0);
}
CSettingsPageImpl<COptionsGameBrowserPage>::ResetPage();
}

View File

@ -11,41 +11,41 @@
#pragma once
class COptionsGameBrowserPage :
public CSettingsPageImpl<COptionsGameBrowserPage>,
public CSettingsPage
public CSettingsPageImpl<COptionsGameBrowserPage>,
public CSettingsPage
{
BEGIN_MSG_MAP_EX(COptionsGameBrowserPage)
COMMAND_HANDLER_EX(IDC_ADD,BN_CLICKED,AddFieldClicked)
COMMAND_HANDLER_EX(IDC_REMOVE,BN_CLICKED,RemoveFieldClicked)
COMMAND_HANDLER_EX(IDC_UP,BN_CLICKED,MoveFieldUpClicked)
COMMAND_HANDLER_EX(IDC_DOWN,BN_CLICKED,MoveFieldDownClicked)
COMMAND_ID_HANDLER_EX(IDC_USE_ROMBROWSER,UseRomBrowserChanged)
COMMAND_ID_HANDLER_EX(IDC_RECURSION,CheckBoxChanged)
END_MSG_MAP()
BEGIN_MSG_MAP_EX(COptionsGameBrowserPage)
COMMAND_HANDLER_EX(IDC_ADD, BN_CLICKED, AddFieldClicked)
COMMAND_HANDLER_EX(IDC_REMOVE, BN_CLICKED, RemoveFieldClicked)
COMMAND_HANDLER_EX(IDC_UP, BN_CLICKED, MoveFieldUpClicked)
COMMAND_HANDLER_EX(IDC_DOWN, BN_CLICKED, MoveFieldDownClicked)
COMMAND_ID_HANDLER_EX(IDC_USE_ROMBROWSER, UseRomBrowserChanged)
COMMAND_ID_HANDLER_EX(IDC_RECURSION, CheckBoxChanged)
END_MSG_MAP()
enum { IDD = IDD_Settings_RomBrowser };
enum { IDD = IDD_Settings_RomBrowser };
public:
COptionsGameBrowserPage(HWND hParent, const RECT & rcDispay );
COptionsGameBrowserPage(HWND hParent, const RECT & rcDispay);
LanguageStringID PageTitle ( void ) { return TAB_ROMSELECTION; }
void HidePage ( void );
void ShowPage ( void );
void ApplySettings ( bool UpdateScreen );
bool EnableReset ( void );
void ResetPage ( void );
LanguageStringID PageTitle(void) { return TAB_ROMSELECTION; }
void HidePage(void);
void ShowPage(void);
void ApplySettings(bool UpdateScreen);
bool EnableReset(void);
void ResetPage(void);
private:
void UpdatePageSettings ( void );
void UpdateFieldList ( const ROMBROWSER_FIELDS_LIST & Fields );
void AddFieldClicked ( UINT Code, int id, HWND ctl );
void RemoveFieldClicked ( UINT Code, int id, HWND ctl );
void MoveFieldUpClicked ( UINT Code, int id, HWND ctl );
void MoveFieldDownClicked ( UINT Code, int id, HWND ctl );
void UseRomBrowserChanged ( UINT Code, int id, HWND ctl );
void FixCtrlState ( void );
void UpdatePageSettings(void);
void UpdateFieldList(const ROMBROWSER_FIELDS_LIST & Fields);
void AddFieldClicked(UINT Code, int id, HWND ctl);
void RemoveFieldClicked(UINT Code, int id, HWND ctl);
void MoveFieldUpClicked(UINT Code, int id, HWND ctl);
void MoveFieldDownClicked(UINT Code, int id, HWND ctl);
void UseRomBrowserChanged(UINT Code, int id, HWND ctl);
void FixCtrlState(void);
ROMBROWSER_FIELDS_LIST m_Fields;
CListBox m_Avaliable, m_Using;
bool m_OrderChanged, m_OrderReset;
ROMBROWSER_FIELDS_LIST m_Fields;
CListBox m_Avaliable, m_Using;
bool m_OrderChanged, m_OrderReset;
};