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/Library/ml_online/Preferences.cpp | 110 ++++++++++++++++++++++++++ 1 file changed, 110 insertions(+) create mode 100644 Src/Plugins/Library/ml_online/Preferences.cpp (limited to 'Src/Plugins/Library/ml_online/Preferences.cpp') diff --git a/Src/Plugins/Library/ml_online/Preferences.cpp b/Src/Plugins/Library/ml_online/Preferences.cpp new file mode 100644 index 00000000..5bac3daf --- /dev/null +++ b/Src/Plugins/Library/ml_online/Preferences.cpp @@ -0,0 +1,110 @@ +#include "main.h" +#include "./preferences.h" + +#include "../winamp/wa_ipc.h" +#include "./resource.h" +#include "./api__ml_online.h" +#include "./config.h" + +#include +#include + +static prefsDlgRecW preferences; +extern C_Config *g_config; + +static INT_PTR CALLBACK Preferences_DialogProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam); + +BOOL Preferences_Register() +{ + WCHAR szBuffer[256] = {0}; + WASABI_API_LNGSTRINGW_BUF(IDS_ONLINE_SERVICES, szBuffer, ARRAYSIZE(szBuffer)); + + preferences.hInst = WASABI_API_LNG_HINST; + preferences.dlgID = IDD_OMPREF; + preferences.proc = (void *)Preferences_DialogProc; + preferences.name = Plugin_CopyString(szBuffer); + preferences.where = 6; // Media Library + + return (BOOL)SENDWAIPC(Plugin_GetWinamp(), IPC_ADD_PREFS_DLGW, &preferences); + +} + +void Preferences_Unregister() +{ + SENDWAIPC(Plugin_GetWinamp(), IPC_REMOVE_PREFS_DLG, &preferences); + +} + +BOOL Preferences_Show() +{ + return (BOOL)SENDWAIPC(Plugin_GetWinamp(), IPC_OPENPREFSTOPAGE, &preferences); +} + +static INT_PTR CALLBACK Preferences_DialogProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) +{ + switch(uMsg) + { + case WM_INITDIALOG: + { + CheckDlgButton(hwndDlg,IDC_AUTOSIZE,g_config->ReadInt("AutoSize",1)); + + char tmp[64] = {0}; + wsprintfA(tmp,"%i",g_config->ReadInt("maxbandwidth", MAXBANDWIDTH )); + SetDlgItemTextA(hwndDlg,IDC_RADIO_MAXBW,tmp); + wsprintfA(tmp,"%i",g_config->ReadInt("minbandwidth",1)); + SetDlgItemTextA(hwndDlg,IDC_RADIO_MINBW,tmp); + int radiofreq=g_config->ReadInt("radio_upd_freq",0); + CheckDlgButton(hwndDlg,radiofreq==0?IDC_RADIO_HOURLY:radiofreq==1?IDC_RADIO_DAILY:radiofreq==2?IDC_RADIO_WEEKLY:IDC_RADIO_NEVER,BST_CHECKED); + SetDlgItemTextA(hwndDlg, IDC_NOWPLAYINGURL, g_config->ReadString("nowplayingurl","")); + } + break; + + case WM_COMMAND: + switch(LOWORD(wParam)) + { + case IDC_AUTOSIZE: + g_config->WriteInt("AutoSize",IsDlgButtonChecked(hwndDlg,IDC_AUTOSIZE)); + break; + + case IDC_RADIO_NEVER: + case IDC_RADIO_DAILY: + case IDC_RADIO_WEEKLY: + case IDC_RADIO_HOURLY: + { + int radiofreq=0; + if(IsDlgButtonChecked(hwndDlg,IDC_RADIO_NEVER)) radiofreq=3; + if(IsDlgButtonChecked(hwndDlg,IDC_RADIO_DAILY)) radiofreq=1; + if(IsDlgButtonChecked(hwndDlg,IDC_RADIO_WEEKLY)) radiofreq=2; + if(IsDlgButtonChecked(hwndDlg,IDC_RADIO_HOURLY)) radiofreq=0; + g_config->WriteInt("radio_upd_freq",radiofreq); + } + break; + + case IDC_NOWPLAYINGURL: + if (HIWORD(wParam) == EN_CHANGE) + { + char nowplayingurl[1024] = {0}; + GetDlgItemTextA(hwndDlg, IDC_NOWPLAYINGURL, nowplayingurl, ARRAYSIZE(nowplayingurl)); + g_config->WriteString("nowplayingurl",nowplayingurl); + } + break; + } + break; + + case WM_DESTROY: + { + char tmp[64]={0,}; + GetDlgItemTextA(hwndDlg,IDC_RADIO_MAXBW,tmp,sizeof(tmp)-1); + int x = atoi(tmp); + if ( x < 2 ) x = 2; + g_config->WriteInt("maxbandwidth",x); + GetDlgItemTextA(hwndDlg,IDC_RADIO_MINBW,tmp,sizeof(tmp)-1); + int y = atoi(tmp); + if ( y < 1 ) y = 1; + if ( y > x ) y = x-1; + g_config->WriteInt("minbandwidth",y); + } + break; + } + return 0; +} \ No newline at end of file -- cgit