diff options
Diffstat (limited to 'plugins/BASS_interface')
-rw-r--r-- | plugins/BASS_interface/src/Bass_interface.h | 4 | ||||
-rw-r--r-- | plugins/BASS_interface/src/Main.cpp | 150 |
2 files changed, 81 insertions, 73 deletions
diff --git a/plugins/BASS_interface/src/Bass_interface.h b/plugins/BASS_interface/src/Bass_interface.h index 677dc95a69..f351688973 100644 --- a/plugins/BASS_interface/src/Bass_interface.h +++ b/plugins/BASS_interface/src/Bass_interface.h @@ -18,8 +18,7 @@ Copyright (C) 2010, 2011 tico-tico #include <m_clui.h>
#include <m_fontservice.h>
#include <m_button.h>
-
-#include "m_toptoolbar.h"
+#include <m_icolib.h>
#include "resource.h"
#include "version.h"
@@ -42,6 +41,5 @@ Copyright (C) 2010, 2011 tico-tico #define OPT_TIME2 "Time2"
#define OPT_STATUS "StatMask"
#define OPT_PREVIEW "Preview"
-#define OPT_DEVOPEN "DevOpen"
#endif
diff --git a/plugins/BASS_interface/src/Main.cpp b/plugins/BASS_interface/src/Main.cpp index 71580d983b..d7fe67897c 100644 --- a/plugins/BASS_interface/src/Main.cpp +++ b/plugins/BASS_interface/src/Main.cpp @@ -48,7 +48,9 @@ static int device = -1; static int newBass = 0;
static HWND ClistHWND;
-HWND hwndSlider = NULL, hwndMute = NULL, hwndOptSlider = NULL;
+HWND hwndSlider = NULL, hwndMute = NULL, hwndOptSlider = NULL, hwnd_plugin = NULL;
+COLORREF clBack = 0;
+HBRUSH hBkgBrush = 0;
static int OnPlaySnd(WPARAM wParam, LPARAM lParam)
{
@@ -242,13 +244,10 @@ INT_PTR CALLBACK OptionsProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lPara DBWriteContactSettingWord(NULL, ModuleName, OPT_STATUS, StatMask);
device = SendDlgItemMessage(hwndDlg, IDC_OUTDEVICE, CB_GETCURSEL, 0, 0);
- if (device == 0) device = -1;
- else device += newBass;
- if (CallService(MS_TTB_GETBUTTONSTATE, (WPARAM)hTBButton, 0) == TTBST_RELEASED) {
- BASS_Free();
- BASS_Init(device, 44100, 0, ClistHWND, NULL);
- BASS_SetConfig(BASS_CONFIG_GVOL_STREAM, Volume * 100 );
- }
+ if (device == 0)
+ device = -1;
+ else
+ device += newBass;
}
return 1;
@@ -327,57 +326,48 @@ int OptionsInit(WPARAM wParam, LPARAM lParam) return 0;
}
-INT_PTR BASSSoundOnOff(WPARAM wParam, LPARAM lParam)
+int OnSettingChanged(WPARAM wParam, LPARAM lParam)
{
- if (hBass != NULL) {
- BOOL opened = CallService(MS_TTB_GETBUTTONSTATE, (WPARAM)"BASSSoundOnOff", 0) == TTBST_RELEASED;
-
- if (opened)
- {
- BASS_Free(); // Close Device
- }
- else
- {
- BASS_Init(device, 44100, 0, ClistHWND, NULL);
- BASS_SetConfig(BASS_CONFIG_GVOL_STREAM, Volume * 100 );
+ if(wParam != 0 || lParam == NULL)
+ return 0;
+
+ DBCONTACTWRITESETTING *dbcws=(DBCONTACTWRITESETTING*)lParam;
+ if(!strcmp(dbcws->szModule, "Skin")) {
+ if(!strcmp(dbcws->szSetting, "UseSound")) {
+ int useSound = dbcws->value.bVal;
+ SendMessage(hwndMute, BM_SETIMAGE, IMAGE_ICON, (LPARAM)(useSound ? Skin_GetIcon("BASSSoundOnOffUp") : Skin_GetIcon("BASSSoundOnOffDown")));
+ return 0;
}
-
- CallService(MS_TTB_SETBUTTONSTATE, (WPARAM)"BASSSoundOnOff", opened ? TTBST_PUSHED : TTBST_RELEASED);
- DBWriteContactSettingByte(NULL, ModuleName, OPT_DEVOPEN, !opened);
}
return 0;
}
-int OnToolbarLoaded(WPARAM wParam, LPARAM lParam)
+static WNDPROC OldSliderWndProc = 0;
+
+static LRESULT CALLBACK SliderWndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
- TTBButton tbb = {0};
- tbb.cbSize = sizeof(TTBButton);
- tbb.name = LPGEN("Open/close audio device");
- tbb.pszService = "BASSinterface/BASSSoundOnOff";
- tbb.pszTooltipUp = LPGEN("Audio device is opened");
- tbb.pszTooltipDn = LPGEN("Audio device is closed");
- tbb.hIconHandleUp = iconList[0].hIcolib;
- tbb.hIconHandleDn = iconList[1].hIcolib;
- tbb.dwFlags = TTBBF_SHOWTOOLTIP;
- hTBButton = TopToolbar_AddButton(&tbb);
- return 0;
+ switch(msg) {
+ case WM_ERASEBKGND:
+ return TRUE;
+ }
+ return(CallWindowProc(OldSliderWndProc, hwnd, msg, wParam, lParam));
}
-
-LRESULT CALLBACK FrameWindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
+static LRESULT CALLBACK FrameWindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch(msg)
{
case WM_CREATE:
{
- hwndMute = CreateWindow(MIRANDABUTTONCLASS, _T(""), WS_CHILD | WS_VISIBLE, 1, 1,
- 20, 20, hwnd, (HMENU)0, (HINSTANCE) GetWindowLong(hwnd, GWL_HINSTANCE), NULL);
+ hwndMute = CreateWindow(MIRANDABUTTONCLASS, _T(""), WS_CHILD | WS_VISIBLE, 1, 1,
+ 20, 20, hwnd, 0, (HINSTANCE) GetWindowLong(hwnd, GWL_HINSTANCE), NULL);
SendMessage(hwndMute, BUTTONSETASFLATBTN,0,0);
- SendMessage(hwndMute, BM_SETIMAGE,IMAGE_ICON,(LPARAM)iconList[0].hIcolib);
+ SendMessage(hwndMute, BM_SETIMAGE, IMAGE_ICON, (LPARAM)(db_get_b(NULL, "Skin", "UseSound", 1) ? Skin_GetIcon("BASSSoundOnOffUp") : Skin_GetIcon("BASSSoundOnOffDown")));
hwndSlider = CreateWindow(TRACKBAR_CLASS, _T(""), WS_CHILD | WS_VISIBLE | TBS_NOTICKS | TBS_TOOLTIPS, 21, 1, 100, 20,
hwnd, (HMENU)0, (HINSTANCE) GetWindowLongPtr(hwnd, GWL_HINSTANCE), NULL);
SendMessage(hwndSlider, TBM_SETRANGE, FALSE, MAKELONG(SLIDER_MIN, SLIDER_MAX));
SendMessage(hwndSlider, TBM_SETPOS, TRUE, Volume);
+ OldSliderWndProc = (WNDPROC)SetWindowLong(hwndSlider, GWL_WNDPROC, (LONG)SliderWndProc);
SendMessage(hwndMute, BUTTONADDTOOLTIP, (WPARAM)Translate("Click to toggle all sounds"), 0);
break;
}
@@ -386,7 +376,7 @@ LRESULT CALLBACK FrameWindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lPar if((HWND)lParam == hwndMute) {
int useSound = !db_get_b(NULL, "Skin", "UseSound", 1);
db_set_b(NULL, "Skin", "UseSound", useSound);
- SendMessage(hwndMute, BM_SETIMAGE, IMAGE_ICON, (LPARAM)(useSound ? iconList[0].hIcolib : iconList[1].hIcolib));
+ SendMessage(hwndMute, BM_SETIMAGE, IMAGE_ICON, (LPARAM)(useSound ? Skin_GetIcon("BASSSoundOnOffUp") : Skin_GetIcon("BASSSoundOnOffDown")));
}
break;
@@ -407,50 +397,72 @@ LRESULT CALLBACK FrameWindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lPar {
RECT rect;
- GetClientRect(hwnd,&rect);
+ GetClientRect(hwnd, &rect);
if(hwndMute)
MoveWindow(hwndMute, 1, 1, 20, 20, FALSE);
- SetWindowPos(hwndSlider, 0,
- rect.left+20+1, rect.top+1+ (20-18)/2, rect.right-rect.left-3-20, 18,
- SWP_NOZORDER);
+ SetWindowPos(hwndSlider, 0, rect.left+20+1, rect.top+1+ (20-18)/2, rect.right-rect.left-3-20, 18, SWP_NOZORDER);
InvalidateRect(hwnd, &rect, FALSE);
return 0;
}
- case WM_PAINT:
+ case WM_ERASEBKGND:
{
- RECT r;
+ HDC dc = (HDC)wParam;
+ RECT rc;
- if (GetUpdateRect(hwnd, &r, FALSE))
- {
- RECT rc;
- PAINTSTRUCT ps;
- COLORREF clr = db_get_dw(NULL, ModuleName, "ColorFrame", GetSysColor(COLOR_3DFACE));
- GetClientRect(hwnd, &rc);
- HDC hdc = BeginPaint(hwnd, &ps);
- if (clr != 0xFFFFFFFF) {
- HBRUSH hBkgBrush = CreateSolidBrush(clr);
- FillRect(hdc, &rc, hBkgBrush);
- DeleteObject(hBkgBrush);
- }
- SetBkMode(hdc, TRANSPARENT);
- EndPaint(hwnd, &ps);
+ GetClientRect(hwnd, &rc);
+ FillRect(dc, &rc, hBkgBrush);
+ return TRUE;
+ }
+
+ case WM_CTLCOLORSTATIC:
+ {
+ if((HANDLE)lParam == hwndSlider) {
+ HDC dc = (HDC)wParam;
+
+ SetBkColor(dc, clBack);
+ return((BOOL)hBkgBrush);
}
break;
}
+ case WM_DESTROY:
+ if(hwndSlider && IsWindow(hwndSlider) && OldSliderWndProc != 0)
+ SetWindowLong(hwndSlider, GWL_WNDPROC, (LONG)OldSliderWndProc);
+ break;
+
default:
return DefWindowProc(hwnd, msg, wParam, lParam);
}
return TRUE;
}
+int ReloadColors(WPARAM wParam, LPARAM lParam)
+{
+ ColourIDT colourid = {0};
+ colourid.cbSize = sizeof(colourid);
+ lstrcpy(colourid.group, _T(ModuleName));
+
+ lstrcpy(colourid.name, LPGENT("Frame Background"));
+ clBack = CallService(MS_COLOUR_GETT, (WPARAM)&colourid, 0);
+
+ if(hBkgBrush)
+ DeleteObject(hBkgBrush);
+ hBkgBrush = CreateSolidBrush(clBack);
+ HWND hwnd = GetFocus();
+ InvalidateRect(hwndSlider, NULL, TRUE);
+ SetFocus(hwndSlider);
+ RedrawWindow(hwnd_plugin, NULL, NULL, RDW_INVALIDATE | RDW_ALLCHILDREN | RDW_ERASE);
+ SetFocus(hwnd);
+ return 0;
+}
+
void CreateFrame()
{
if ( !ServiceExists(MS_CLIST_FRAMES_ADDFRAME))
return;
- WNDCLASS wndclass;
+ WNDCLASS wndclass = {0};
wndclass.style = 0;
wndclass.lpfnWndProc = FrameWindowProc;
wndclass.cbClsExtra = 0;
@@ -463,7 +475,7 @@ void CreateFrame() wndclass.lpszClassName = _T("BassInterfaceFrame");
RegisterClass(&wndclass);
- HWND hwnd_plugin = CreateWindow(_T("BassInterfaceFrame"), TranslateT("Bass Interface"),
+ hwnd_plugin = CreateWindow(_T("BassInterfaceFrame"), TranslateT("Bass Interface"),
WS_CHILD | WS_CLIPCHILDREN, 0, 0, 10, 10, (HWND)CallService(MS_CLUI_GETHWND, 0, 0), NULL, hInst, NULL);
CLISTFrame Frame = { sizeof(CLISTFrame) };
@@ -482,6 +494,9 @@ void CreateFrame() _tcscpy(colourid.group, _T(ModuleName));
colourid.defcolour = GetSysColor(COLOR_3DFACE);
ColourRegisterT(&colourid);
+
+ HookEvent(ME_COLOUR_RELOAD, ReloadColors);
+ ReloadColors(0, 0);
}
int OnModulesLoaded(WPARAM wParam, LPARAM lParam)
@@ -532,10 +547,7 @@ int OnModulesLoaded(WPARAM wParam, LPARAM lParam) StatMask = DBGetContactSettingWord(NULL, ModuleName, OPT_STATUS, 0x3ff);
ClistHWND = (HWND)CallService("CLUI/GetHwnd", 0, 0);
- if (DBGetContactSettingByte(NULL, ModuleName, OPT_DEVOPEN, 1))
- BASS_Init(device, 44100, 0, ClistHWND, NULL);
- else
- CallService(MS_TTB_SETBUTTONSTATE, (WPARAM)hTBButton, TTBST_PUSHED);
+ BASS_Init(device, 44100, 0, ClistHWND, NULL);
Volume = DBGetContactSettingByte(NULL, ModuleName, OPT_VOLUME, 33);
BASS_SetConfig(BASS_CONFIG_GVOL_STREAM, Volume * 100 );
@@ -570,9 +582,7 @@ extern "C" int __declspec(dllexport) Load(void) HookEvent(ME_SYSTEM_MODULESLOADED, OnModulesLoaded);
HookEvent(ME_SYSTEM_SHUTDOWN, OnShutdown);
- HookEvent(ME_TTB_MODULELOADED, OnToolbarLoaded);
-
- hService = CreateServiceFunction("BASSinterface/BASSSoundOnOff", BASSSoundOnOff);
+ HookEvent(ME_DB_CONTACT_SETTINGCHANGED, OnSettingChanged);
InitIcons();
|