diff options
author | Jef <jef@targetspot.com> | 2024-09-24 08:54:57 -0400 |
---|---|---|
committer | Jef <jef@targetspot.com> | 2024-09-24 08:54:57 -0400 |
commit | 20d28e80a5c861a9d5f449ea911ab75b4f37ad0d (patch) | |
tree | 12f17f78986871dd2cfb0a56e5e93b545c1ae0d0 /Src/Plugins/General/gen_ff/prefs.cpp | |
parent | 537bcbc86291b32fc04ae4133ce4d7cac8ebe9a7 (diff) | |
download | winamp-20d28e80a5c861a9d5f449ea911ab75b4f37ad0d.tar.gz |
Initial community commit
Diffstat (limited to 'Src/Plugins/General/gen_ff/prefs.cpp')
-rw-r--r-- | Src/Plugins/General/gen_ff/prefs.cpp | 136 |
1 files changed, 136 insertions, 0 deletions
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 <commctrl.h> +#include <windowsx.h> + +void turnonoff(HWND wnd, int *t, int n, int v) { + for (int i=0;i<n;i++) { + EnableWindow(GetDlgItem(wnd, t[i]), v); + } +} + +extern void initFFApi(); +extern Wa2CfgItems *cfgitems; +extern HINSTANCE hInstance; + +_int last_page(L"Last Page", 0); +Wa2FFOptions *ffoptions = NULL; +HWND subWnd = NULL, tabwnd = NULL; +int subWndId = -1; +extern int m_are_we_loaded; +int toggle_from_wa2 = 0; + +void _dosetsel(HWND hwndDlg) +{ + tabwnd = GetDlgItem(hwndDlg,IDC_TAB1); + int sel=TabCtrl_GetCurSel(tabwnd); + + if (sel >= 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 |