From 20d28e80a5c861a9d5f449ea911ab75b4f37ad0d Mon Sep 17 00:00:00 2001 From: Jef Date: Tue, 24 Sep 2024 14:54:57 +0200 Subject: Initial community commit --- Src/Plugins/General/gen_ff/prefs.cpp | 136 +++++++++++++++++++++++++++++++++++ 1 file changed, 136 insertions(+) create mode 100644 Src/Plugins/General/gen_ff/prefs.cpp (limited to 'Src/Plugins/General/gen_ff/prefs.cpp') diff --git a/Src/Plugins/General/gen_ff/prefs.cpp b/Src/Plugins/General/gen_ff/prefs.cpp new file mode 100644 index 00000000..998d3b50 --- /dev/null +++ b/Src/Plugins/General/gen_ff/prefs.cpp @@ -0,0 +1,136 @@ +#include "precomp__gen_ff.h" +#include "main.h" +#include "resource.h" +#include "prefs.h" +#include "wa2cfgitems.h" +#include "wa2frontend.h" +#include "../Agave/Language/api_language.h" +#include "gen.h" +#include +#include + +void turnonoff(HWND wnd, int *t, int n, int v) { + for (int i=0;i= 0 && (sel != last_page.getValueAsInt() || !subWnd)) + { + last_page.setValueAsInt(sel); + if (subWnd) DestroyWindow(subWnd); + subWnd = NULL; + subWndId = -1; + + UINT t=0; + DLGPROC p=0; + switch (sel) + { + case 0: t=IDD_PREFS_GENERAL; p=ffPrefsProc1; subWndId = 0; break; + case 1: t=IDD_PREFS_WINDOWS; p=ffPrefsProc4; subWndId = 1; break; + case 2: t=IDD_PREFS_FONTS; p=ffPrefsProc2; subWndId = 2; break; + case 3: t=IDD_PREFS_THEMES; p=ffPrefsProc3; subWndId = 3; break; + case 4: t=IDD_PREFS_SKIN; p=ffPrefsProc5; subWndId = 5; break; + } + if (t) subWnd=WASABI_API_CREATEDIALOGW(t,hwndDlg,p); + + if (IsWindow(subWnd)) + { + RECT r = {0}; + GetClientRect(tabwnd,&r); + TabCtrl_AdjustRect(tabwnd,FALSE,&r); + SetWindowPos(subWnd,HWND_TOP,r.left,r.top,r.right-r.left,r.bottom-r.top,SWP_NOACTIVATE); + ShowWindow(subWnd,SW_SHOWNA); + } + + if(!SendMessageW(plugin.hwndParent,WM_WA_IPC,IPC_ISWINTHEMEPRESENT,IPC_USE_UXTHEME_FUNC)) + { + SendMessageW(plugin.hwndParent,WM_WA_IPC,(WPARAM)tabwnd,IPC_USE_UXTHEME_FUNC); + SendMessageW(plugin.hwndParent,WM_WA_IPC,(WPARAM)subWnd,IPC_USE_UXTHEME_FUNC); + } + } +} + +#define TabCtrl_InsertItemW(hwnd, iItem, pitem) \ + (int)SNDMSG((hwnd), TCM_INSERTITEMW, (WPARAM)(int)(iItem), (LPARAM)(const TC_ITEMW *)(pitem)) + +// frame proc +INT_PTR CALLBACK ffPrefsProc(HWND hwndDlg, UINT uMsg, WPARAM wParam,LPARAM lParam) { + switch (uMsg) + { + case WM_INITDIALOG: + { + if (WASABI_API_APP == NULL) + { + // wasabi is not initialized ! we need to init before we can access cfgitems otherwise we'd have + // to mirror their values with winamp.ini and that'd be seriously crappy + initFFApi(); + } + + if (!ffoptions) + ffoptions = new Wa2FFOptions(); + + TCITEMW item = {0}; + HWND tabwnd=GetDlgItem(hwndDlg,IDC_TAB1); + item.mask=TCIF_TEXT; + item.pszText=WASABI_API_LNGSTRINGW(IDS_GENERAL); + TabCtrl_InsertItemW(tabwnd,0,&item); + item.pszText=WASABI_API_LNGSTRINGW(IDS_WINDOW_SETTINGS); + TabCtrl_InsertItemW(tabwnd,1,&item); + item.pszText=WASABI_API_LNGSTRINGW(IDS_FONT_RENDERING); + TabCtrl_InsertItemW(tabwnd,2,&item); + if (m_are_we_loaded) + { + item.pszText=WASABI_API_LNGSTRINGW(IDS_COLOR_THEMES); + TabCtrl_InsertItemW(tabwnd,3,&item); + item.pszText=WASABI_API_LNGSTRINGW(IDS_CURRENT_SKIN); + TabCtrl_InsertItemW(tabwnd,4,&item); + } + + TabCtrl_SetCurSel(tabwnd,last_page.getValueAsInt()); + _dosetsel(hwndDlg); + } + return 0; + + case WM_NOTIFY: + { + LPNMHDR p=(LPNMHDR) lParam; + if (p->idFrom == IDC_TAB1 && p->code == TCN_SELCHANGE) + { + _dosetsel(hwndDlg); + return 0; + } + } + break; + + case WM_DESTROY: + subWnd=NULL; + return 0; + } + return 0; +} + +Wa2FFOptions::Wa2FFOptions() : CfgItemI(L"Winamp5", Wa2FFOptionsGuid) { + registerAttribute(&last_page); +} + +int ComboBox_AddStringW(HWND list, const wchar_t *string) +{ + return SendMessageW(list, CB_ADDSTRING, 0, (LPARAM)string); +} \ No newline at end of file -- cgit