From 5cb23ede3ad1aabb2bdc08e8d5e5ec04a309a93a Mon Sep 17 00:00:00 2001 From: zilmar Date: Wed, 1 Apr 2020 21:04:17 +1030 Subject: [PATCH] GLideNUI-wtl: Start to add code for handling profiles --- src/GLideNUI-wtl/ConfigDlg.cpp | 118 +++++++++++++++++++++++++- src/GLideNUI-wtl/ConfigDlg.h | 5 ++ src/GLideNUI-wtl/GLideNUI.rc | Bin 47434 -> 48622 bytes src/GLideNUI-wtl/config-emulation.cpp | 12 ++- src/GLideNUI-wtl/config-emulation.h | 7 +- src/GLideNUI-wtl/resource.h | Bin 14850 -> 15582 bytes 6 files changed, 136 insertions(+), 6 deletions(-) diff --git a/src/GLideNUI-wtl/ConfigDlg.cpp b/src/GLideNUI-wtl/ConfigDlg.cpp index 64f7ac5d..0c0974cc 100644 --- a/src/GLideNUI-wtl/ConfigDlg.cpp +++ b/src/GLideNUI-wtl/ConfigDlg.cpp @@ -9,15 +9,20 @@ #include "config-texture.h" #include "config-osd.h" #include "config-debug.h" +#include "util.h" CConfigDlg::CConfigDlg() : m_blockReInit(false), - m_Saved(false) + m_EmulationTab(NULL), + m_Saved(false), + m_TabLeft(0), + m_ProfileLeft(0) { } CConfigDlg::~CConfigDlg() { + m_EmulationTab = NULL; for (size_t i = 0; i < m_TabWindows.size(); i++) { delete m_TabWindows[i]; @@ -42,18 +47,118 @@ LRESULT CConfigDlg::OnInitDialog(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lPar HICON hIconSmall = AtlLoadIconImage(IDI_APPICON, LR_DEFAULTCOLOR, ::GetSystemMetrics(SM_CXSMICON), ::GetSystemMetrics(SM_CYSMICON)); SetIcon(hIconSmall, FALSE); + m_EmulationTab = new CEmulationTab(*this); + m_Tabs.Attach(GetDlgItem(IDC_TABS)); AddTab(L"Video", new CVideoTab); - AddTab(L"Emulation", new CEmulationTab); + AddTab(L"Emulation", m_EmulationTab); AddTab(L"Frame buffer", new CFrameBufferTab); AddTab(L"Texture enhancement", new CTextureEnhancementTab); AddTab(L"OSD", new COsdTab); AddTab(L"Debug", new CDebugTab); + RECT Rect; + GetDlgItem(IDC_TABS).GetWindowRect(&Rect); + ::MapWindowPoints(NULL, m_hWnd, (LPPOINT)&Rect, 2); + m_TabLeft = Rect.left; + + if (m_romName != NULL) + { + std::wstring RomName(ToUTF16(m_romName)); + CWindow dlgItem = GetDlgItem(IDC_GAME_PROFILE_NAME); + CDC dc; + dc.CreateCompatibleDC(NULL); + dc.SelectFont(dlgItem.GetFont()); + SIZE size; + dc.GetTextExtent(RomName.c_str(), RomName.length(), &size); + + RECT Rect; + dlgItem.GetWindowRect(&Rect); + ::MapWindowPoints(NULL, m_hWnd, (LPPOINT)&Rect, 2); + Rect.right = Rect.left + size.cx; + dlgItem.MoveWindow(&Rect); + dlgItem.SetWindowText(RomName.c_str()); + + m_ProfileLeft = Rect.right + 10; + } + else + { + GetDlgItem(IDC_SETTINGS_PROFILE_STATIC).GetWindowRect(&Rect); + ::MapWindowPoints(NULL, m_hWnd, (LPPOINT)&Rect, 2); + m_ProfileLeft = Rect.left; + } + Init(); return 0; } +void CConfigDlg::OnCustomSettingsToggled(bool checked) +{ + if (m_hWnd == NULL) + { + return; + } + checked = m_romName != NULL ? checked : false; + GetDlgItem(IDC_GAME_PROFILE).ShowWindow(checked ? SW_SHOWNORMAL : SW_HIDE); + GetDlgItem(IDC_SAVE_SETTINGS_STATIC).ShowWindow(checked ? SW_SHOWNORMAL : SW_HIDE); + GetDlgItem(IDC_GAME_PROFILE_NAME).ShowWindow(checked ? SW_SHOWNORMAL : SW_HIDE); + GetDlgItem(IDC_USE_PROFILE).ShowWindow(checked ? SW_SHOWNORMAL : SW_HIDE); + + int32_t Move = 0; + if (checked) + { + RECT Rect; + CWindow UseProfile = GetDlgItem(IDC_USE_PROFILE); + UseProfile.GetWindowRect(&Rect); + ::MapWindowPoints(NULL, m_hWnd, (LPPOINT)&Rect, 2); + Move = Rect.left - m_ProfileLeft; + if (Move != 0) + { + Rect.left -= Move; + Rect.right -= Move; + UseProfile.MoveWindow(&Rect); + } + uint32_t Left = Rect.right + 7; + + CWindow ProfileStatic = GetDlgItem(IDC_SETTINGS_PROFILE_STATIC); + ProfileStatic.GetWindowRect(&Rect); + ::MapWindowPoints(NULL, m_hWnd, (LPPOINT)&Rect, 2); + Move = Rect.left - Left; + } + else + { + RECT Rect; + GetDlgItem(IDC_SETTINGS_PROFILE_STATIC).GetWindowRect(&Rect); + ::MapWindowPoints(NULL, m_hWnd, (LPPOINT)&Rect, 2); + + Move = Rect.left - m_TabLeft; + } + if (Move != 0) + { + int nID[] = + { + IDC_SETTINGS_PROFILE_STATIC, + IDC_PROFILE, + IDC_REMOVE_PROFILE, + }; + + RECT Rect; + GetDlgItem(nID[0]).GetWindowRect(&Rect); + ::MapWindowPoints(NULL, m_hWnd, (LPPOINT)&Rect, 2); + + for (size_t i = 0, n = sizeof(nID) / sizeof(nID[0]); i < n; i++) + { + CWindow window = GetDlgItem(nID[i]); + window.GetWindowRect(&Rect); + ::MapWindowPoints(NULL, m_hWnd, (LPPOINT)&Rect, 2); + + Rect.left -= Move; + Rect.right -= Move; + window.MoveWindow(&Rect); + } + } +} + void CConfigDlg::SaveSettings() { m_Saved = true; @@ -110,8 +215,15 @@ void CConfigDlg::Init(bool reInit, bool blockCustomSettings) return; } m_blockReInit = true; + bool CustomSettings = m_EmulationTab != NULL && CButton(m_EmulationTab->GetDlgItem(IDC_CHK_USE_PER_GAME)).GetCheck() == BST_CHECKED; - if (reInit) + /*if (reInit && m_romName != NULL && + m_EmulationTab + ui->customSettingsCheckBox->isChecked() && ui->settingsDestGameRadioButton->isChecked()) + { + loadCustomRomSettings(m_strIniPath, m_romName); + } + else*/ if (reInit) { loadSettings(m_strIniPath.c_str()); } diff --git a/src/GLideNUI-wtl/ConfigDlg.h b/src/GLideNUI-wtl/ConfigDlg.h index 02eb38a9..6291c557 100644 --- a/src/GLideNUI-wtl/ConfigDlg.h +++ b/src/GLideNUI-wtl/ConfigDlg.h @@ -5,6 +5,8 @@ #include "resource.h" #include +class CEmulationTab; + class CConfigDlg : public CDialogImpl { @@ -26,6 +28,7 @@ public: void setIniPath(const std::string & IniPath); void setRomName(const char * RomName); bool Saved(void) const { return m_Saved; } + void OnCustomSettingsToggled(bool checked); protected: LRESULT OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled); @@ -46,6 +49,8 @@ protected: std::string m_strIniPath; const char * m_romName; bool m_blockReInit; + CEmulationTab * m_EmulationTab; + uint32_t m_TabLeft, m_ProfileLeft; bool m_Saved; }; diff --git a/src/GLideNUI-wtl/GLideNUI.rc b/src/GLideNUI-wtl/GLideNUI.rc index 8bbf3c3a912f2a4a7e1e35ff8ed41c1d2dfcea31..5151e38c6bd5dfd180a735bef25b8fb4190db5d4 100644 GIT binary patch delta 571 zcmX^0iRs;MrVX#;Cx7G9n!KT!E54W^m7xR(Ga2$2(iw^w6d2MN@)?R4tQeFSbQnAt zTo{}g;u(S&92vqGT)`|?h7ch1Wbk8f2a1E_LV&U$5oe$db09WiFa}~B22%#J$&RX` zlMUPq_(6ID7=jr58Qg#>eI^Iis!o9m+EXl5>r?wbOjU-E%|%4Eoyd{J509^LgwZi4y`**AtjvyGv4fPFOi zppvyFsveM=Er5PSxWokP9!sE$KB^^8?vquTd?1R&H5cfPGGJ&UhieefPG4Y{K*AQ? zT#)}Pk<2w_FrO@_YZ~s(kjRh=G)Vy%2M`vrneM>Y@I?wDLpws zgv}bo&FFT5eHFss2=