123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136 |
- #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);
- }
|