aboutsummaryrefslogtreecommitdiff
path: root/Src/Winamp/main_buttons.cpp
diff options
context:
space:
mode:
authorJef <jef@targetspot.com>2024-09-24 08:54:57 -0400
committerJef <jef@targetspot.com>2024-09-24 08:54:57 -0400
commit20d28e80a5c861a9d5f449ea911ab75b4f37ad0d (patch)
tree12f17f78986871dd2cfb0a56e5e93b545c1ae0d0 /Src/Winamp/main_buttons.cpp
parent537bcbc86291b32fc04ae4133ce4d7cac8ebe9a7 (diff)
downloadwinamp-20d28e80a5c861a9d5f449ea911ab75b4f37ad0d.tar.gz
Initial community commit
Diffstat (limited to 'Src/Winamp/main_buttons.cpp')
-rw-r--r--Src/Winamp/main_buttons.cpp241
1 files changed, 241 insertions, 0 deletions
diff --git a/Src/Winamp/main_buttons.cpp b/Src/Winamp/main_buttons.cpp
new file mode 100644
index 00000000..93290517
--- /dev/null
+++ b/Src/Winamp/main_buttons.cpp
@@ -0,0 +1,241 @@
+/** (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() \ No newline at end of file