summaryrefslogtreecommitdiff
path: root/plugins/!NotAdopted/WinterSpeak/general/multimedia
diff options
context:
space:
mode:
authorVadim Dashevskiy <watcherhd@gmail.com>2013-03-17 13:41:49 +0000
committerVadim Dashevskiy <watcherhd@gmail.com>2013-03-17 13:41:49 +0000
commit5e6e1e8838fe7637ef588e0fb080ad07fc5700aa (patch)
tree2cc32c95da0cf49f8361879eec1fa5a4a4b557d8 /plugins/!NotAdopted/WinterSpeak/general/multimedia
parent561f00a7d38c61ec30c5898b90766314011d32d8 (diff)
Winter Speak plugin added (not adopted)
git-svn-id: http://svn.miranda-ng.org/main/trunk@4076 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c
Diffstat (limited to 'plugins/!NotAdopted/WinterSpeak/general/multimedia')
-rw-r--r--plugins/!NotAdopted/WinterSpeak/general/multimedia/winamp_2/winamp_2.cpp157
-rw-r--r--plugins/!NotAdopted/WinterSpeak/general/multimedia/winamp_2/winamp_2.h62
2 files changed, 219 insertions, 0 deletions
diff --git a/plugins/!NotAdopted/WinterSpeak/general/multimedia/winamp_2/winamp_2.cpp b/plugins/!NotAdopted/WinterSpeak/general/multimedia/winamp_2/winamp_2.cpp
new file mode 100644
index 0000000000..7ee65580ad
--- /dev/null
+++ b/plugins/!NotAdopted/WinterSpeak/general/multimedia/winamp_2/winamp_2.cpp
@@ -0,0 +1,157 @@
+//==============================================================================
+// General Code, © 2002 Ryan Winter
+//==============================================================================
+
+#include "winamp_2.h"
+
+#include <general/debug/debug.h>
+
+#include <frontend.h>
+
+namespace
+{
+ const int WINAMP_PLAY = WINAMP_BUTTON2;
+ const int WINAMP_PAUSE = WINAMP_BUTTON3;
+ const int WINAMP_STOP = WINAMP_BUTTON4;
+}
+
+//------------------------------------------------------------------------------
+// public:
+//------------------------------------------------------------------------------
+Winamp2::Winamp2()
+ :
+ m_state(PlayState_Unknown)
+{
+ CLASSCERR("Winamp2::Winamp2");
+}
+
+//------------------------------------------------------------------------------
+Winamp2::~Winamp2()
+{
+ CLASSCERR("Winamp2::~Winamp2");
+}
+
+//------------------------------------------------------------------------------
+void
+Winamp2::play()
+{
+ CLASSCERR("Winamp2::play");
+
+ HWND handle;
+
+ if (getHandle(handle))
+ {
+ m_state = getState();
+ SendMessage(handle, WM_COMMAND, WINAMP_PLAY, 0);
+ }
+}
+
+//------------------------------------------------------------------------------
+void
+Winamp2::stop()
+{
+ CLASSCERR("Winamp2::stop");
+
+ HWND handle;
+
+ if (getHandle(handle))
+ {
+ m_state = getState();
+ SendMessage(handle, WM_COMMAND, WINAMP_STOP, 0);
+ }
+}
+
+//------------------------------------------------------------------------------
+void
+Winamp2::pause()
+{
+ CLASSCERR("Winamp2::pause");
+
+ HWND handle;
+
+ if (getHandle(handle))
+ {
+ m_state = getState();
+
+ if (PlayState_Playing == m_state)
+ {
+ SendMessage(handle, WM_COMMAND, WINAMP_PAUSE, 0);
+ }
+ }
+}
+
+//------------------------------------------------------------------------------
+Winamp2::PlayState
+Winamp2::restoreState()
+{
+ CLASSCERR("Winamp2::restoreState");
+
+ switch (m_state)
+ {
+ case PlayState_Playing:
+ play();
+ break;
+
+ case PlayState_Stopped:
+ stop();
+ break;
+
+ case PlayState_Paused:
+ pause();
+ break;
+ }
+
+ return m_state;
+}
+
+//------------------------------------------------------------------------------
+// private:
+//------------------------------------------------------------------------------
+bool
+Winamp2::getHandle(HWND &handle)
+{
+ handle = FindWindow("Winamp v1.x", NULL);
+
+ bool ret = true;
+
+ if (NULL == handle)
+ {
+ ret = false;
+ }
+
+ return ret;
+}
+
+//------------------------------------------------------------------------------
+Winamp2::PlayState
+Winamp2::getState()
+{
+ CLASSCERR("Winamp2::getState");
+
+ HWND handle;
+
+ if (getHandle(handle))
+ {
+ int state = SendMessage(handle, WM_WA_IPC, 0, IPC_ISPLAYING);
+
+ switch (state)
+ {
+ case 0:
+ return PlayState_Stopped;
+ break;
+
+ case 1:
+ return PlayState_Playing;
+ break;
+
+ case 3:
+ return PlayState_Paused;
+ break;
+ }
+ }
+
+ return PlayState_Unknown;
+}
+
+//==============================================================================
+
diff --git a/plugins/!NotAdopted/WinterSpeak/general/multimedia/winamp_2/winamp_2.h b/plugins/!NotAdopted/WinterSpeak/general/multimedia/winamp_2/winamp_2.h
new file mode 100644
index 0000000000..372d1e38d9
--- /dev/null
+++ b/plugins/!NotAdopted/WinterSpeak/general/multimedia/winamp_2/winamp_2.h
@@ -0,0 +1,62 @@
+#ifndef guard_general_multimedia_winamp_2_winamp_2_h
+#define guard_general_multimedia_winamp_2_winamp_2_h
+//==============================================================================
+// General Code, © 2002 Ryan Winter
+//==============================================================================
+
+#include <windows.h>
+
+class Winamp2
+{
+ public:
+ Winamp2();
+ ~Winamp2();
+
+ enum PlayState
+ {
+ PlayState_Unknown,
+ PlayState_Stopped,
+ PlayState_Playing,
+ PlayState_Paused,
+ };
+
+ //--------------------------------------------------------------------------
+ // Description : play/pause/stop the current song
+ //--------------------------------------------------------------------------
+ void play();
+ void stop();
+ void pause();
+
+ //--------------------------------------------------------------------------
+ // Description : restore winamp to its previoud play state
+ // Return : the play state winamp has been restored to
+ //--------------------------------------------------------------------------
+ PlayState restoreState();
+
+ private:
+ //--------------------------------------------------------------------------
+ // Description : get the handle to the winamp application
+ // Parameters : handle - where to place the handle
+ // Returns : true - the handle was found
+ // false - the handle wasn't found
+ //--------------------------------------------------------------------------
+ bool getHandle(HWND &handle);
+
+ //--------------------------------------------------------------------------
+ // Description : get the current state of the winamp application
+ //--------------------------------------------------------------------------
+ PlayState getState();
+
+ PlayState m_state;
+};
+
+//==============================================================================
+//
+// Summary : Control Winamp 2.x
+//
+// Description : Allows remote control over numberous winamp 2.x setting
+// including volume, play, pause, stop etc.
+//
+//==============================================================================
+
+#endif