winamp/Src/Winamp/main_buttons.cpp
2024-09-24 14:54:57 +02:00

241 lines
5.1 KiB
C++

/** (c) Nullsoft, Inc. C O N F I D E N T I A L
** Filename:
** Project:
** Description:
** Author:
** Created:
**/
#include "Main.h"
#include "resource.h"
extern "C" extern int g_stopaftercur;
// button 1 (prev) functions
int Main_OnButton1(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify)
{
if (id == WINAMP_BUTTON1_SHIFT) SendMessageW(hwnd, WM_COMMAND, WINAMP_REW5S, 0);
else if (id == WINAMP_BUTTON1_CTRL)
{
PlayList_setposition(0);
if (config_shuffle) PlayList_randpos( -BIGINT);
PlayList_getcurrent(FileName, FileTitle, FileTitleNum);
if (playing) StartPlaying();
else StopPlaying(0);
}
else
{
int nitem = SendMessageW(hMainWindow, WM_WA_IPC, 0, IPC_GET_PREVIOUS_PLITEM);
if (nitem != -1)
{
PlayList_setposition(nitem);
PlayList_getcurrent(FileName, FileTitle, FileTitleNum);
StartPlaying();
}
else
{
int s = 1;
if (!config_shuffle && PlayList_advance( -1) < 0)
{
s = 0;
if (config_repeat)
{
s = 1;
PlayList_advance(BIGINT);
}
}
if (s)
{
if (PlayList_getlength())
{
if (config_shuffle)
{
if (PlayList_randpos( -1)) return 1;
}
PlayList_getcurrent(FileName, FileTitle, FileTitleNum);
if (playing)
{
StopPlaying(0);
StartPlaying();
}
else StopPlaying(0);
}
}
}
}
return 1;
} // Main_OnButton1
// button 2 (play) functions
int Main_OnButton2(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify)
{
PlayList_resetcurrent();
if (!playing)
{
if (!no_notify_play)
{
FileName[0] = 0;
PlayList_getcurrent(FileName, FileTitle, FileTitleNum);
}
if (id == WINAMP_BUTTON2_CTRL)
SendMessageW(hwnd, WM_COMMAND, WINAMP_FILE_LOC, 0);
else if (!FileName[0] || id == WINAMP_BUTTON2_SHIFT)
{
SendMessageW(hwnd, WM_COMMAND, WINAMP_FILE_PLAY, 0);
}
else
{
StartPlaying();
}
}
else
{
if (id == WINAMP_BUTTON2_CTRL)
SendMessageW(hwnd, WM_COMMAND, WINAMP_FILE_LOC, 0);
else if (id == WINAMP_BUTTON2_SHIFT)
SendMessageW(hwnd, WM_COMMAND, WINAMP_FILE_PLAY, 0);
else if (paused) UnPausePlaying();
else
{
PlayList_getcurrent(FileName, FileTitle, FileTitleNum);
StartPlaying();
}
}
return 1;
} // Main_OnButton2
// button 3 (pause) functions
int Main_OnButton3(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify)
{
if (playing)
{
if (paused) UnPausePlaying();
else PausePlaying();
}
return 1;
}
// button 4 (stop) functions
int Main_OnButton4(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify)
{
if (playing)
{
if (id == WINAMP_BUTTON4_CTRL)
{
HMENU m;
int r;
g_stopaftercur = !g_stopaftercur;
r = g_stopaftercur ? MF_CHECKED : MF_UNCHECKED;
CheckMenuItem(main_menu, WINAMP_BUTTON4_CTRL, r);
m = GetSubMenu(top_menu, 3);
CheckMenuItem(m, WINAMP_BUTTON4_CTRL, r);
return 1;
}
if (id == WINAMP_BUTTON4_SHIFT && !paused)
{
// double v=0;
int x = 256;
int v = config_volume;
// double v = (double)(int)config_volume;
//double dv;// = -v / 256.;//(double)x;
int delay = 8;//2000 / x;
// v = (double)config_volume;
//dv = -v / 256.;
while (x--)
{
if (v < 0) v = 0;
in_setvol((int)v);
// v += dv;
v--;
Sleep(delay);
}
Sleep(100);
PausePlaying();
in_flush(in_getouttime());
in_setvol(config_volume);
}
StopPlaying(0);
}
return 1;
}
// button 5 (next) fucntions
int Main_OnButton5(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify)
{
if (id == WINAMP_BUTTON5_SHIFT)
SendMessageW(hwnd, WM_COMMAND, WINAMP_FFWD5S, 0);
else if (id == WINAMP_BUTTON5_CTRL)
{
PlayList_setposition(BIGINT);
if (config_shuffle)
{
PlayList_randpos( -BIGINT);
PlayList_randpos(PlayList_getlength() - 1);
}
PlayList_getcurrent(FileName, FileTitle, FileTitleNum);
if (playing) StartPlaying();
else StopPlaying(0);
}
else
{
int nitem = SendMessageW(hMainWindow, WM_WA_IPC, 0, IPC_GET_NEXT_PLITEM);
if (nitem != -1)
{
PlayList_setposition(nitem);
PlayList_getcurrent(FileName, FileTitle, FileTitleNum);
StartPlaying();
}
else if (!config_shuffle && PlayList_advance(1) < 0)
{
if (config_repeat)
{
PlayList_setposition(0);
PlayList_getcurrent(FileName, FileTitle, FileTitleNum);
if (playing)
{
StopPlaying(0);
StartPlaying();
}
else StopPlaying(0);
}
}
else
{
if (!PlayList_getlength()) return 1;
if (config_shuffle)
{
int lp = PlayList_getPosition();
int q = PlayList_randpos(1);
if (q || PlayList_getlength() == 1)
{
if (!config_repeat) return 1;
PlayList_randpos( -BIGINT);
}
if (PlayList_getPosition() == lp && PlayList_getlength() > 1)
{
PlayList_randpos(1);
}
}
else
{
// 5.64 - if pledit is cleared, shuffle is off & we're playing
// then we set playing to go back to the start of the playlist
// as we get complaints it'll go to #2 instead of #1 as shown.
if (plcleared)
{
plcleared = 0;
PlayList_setposition(0);
}
}
PlayList_getcurrent(FileName, FileTitle, FileTitleNum);
if (playing)
{
StopPlaying(0);
StartPlaying();
}
else StopPlaying(0);
}
}
return 1;
} // Main_OnButton5()