summary refs log tree commit diff stats
path: root/plugins/wmpa/wmpadialog.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/wmpa/wmpadialog.cpp')
-rw-r--r--plugins/wmpa/wmpadialog.cpp375
1 files changed, 0 insertions, 375 deletions
diff --git a/plugins/wmpa/wmpadialog.cpp b/plugins/wmpa/wmpadialog.cpp
deleted file mode 100644
index 28d33c93..00000000
--- a/plugins/wmpa/wmpadialog.cpp
+++ /dev/null
@@ -1,375 +0,0 @@
-/******************************************************************

-* $Id$

-*

-* $Log$

-*

-* Copyright © 2005 David Cullen, All rights reserved

-*

-******************************************************************/

-#include "stdafx.h"

-#include "wmpa.h"

-#include "WMPADialog.h"

-#include "shellapi.h"

-#include "hexchat-plugin.h"

-

-#ifdef _DEBUG

-#define new DEBUG_NEW

-#undef THIS_FILE

-static char THIS_FILE[] = __FILE__;

-#endif

-

-#define ID_TRAY_ICON    1000

-#define WM_TRAY_ICON    (WM_APP + 1)

-

-/////////////////////////////////////////////////////////////////////////////

-// CWMPADialog dialog

-

-CWMPADialog::CWMPADialog(CWnd* pParent /*=NULL*/)

-	: CDialog(CWMPADialog::IDD, pParent)

-{

-	EnableAutomation();

-

-	//{{AFX_DATA_INIT(CWMPADialog)

-	//}}AFX_DATA_INIT

-}

-

-

-void CWMPADialog::OnFinalRelease()

-{

-	// When the last reference for an automation object is released

-	// OnFinalRelease is called.  The base class will automatically

-	// deletes the object.  Add additional cleanup required for your

-	// object before calling the base class.

-

-	CDialog::OnFinalRelease();

-}

-

-void CWMPADialog::DoDataExchange(CDataExchange* pDX)

-{

-	CDialog::DoDataExchange(pDX);

-	//{{AFX_DATA_MAP(CWMPADialog)

-	DDX_Control(pDX, IDC_SONGLIST, m_SongListBox);

-	DDX_Control(pDX, IDC_PLAYLIST, m_PlaylistBox);

-	DDX_Control(pDX, IDC_WMP, m_WMP);

-	//}}AFX_DATA_MAP

-}

-

-

-BEGIN_MESSAGE_MAP(CWMPADialog, CDialog)

-	//{{AFX_MSG_MAP(CWMPADialog)

-	ON_LBN_DBLCLK(IDC_PLAYLIST, OnDblclkPlaylist)

-	ON_WM_SHOWWINDOW()

-	ON_WM_CLOSE()

-	ON_LBN_DBLCLK(IDC_SONGLIST, OnDblclkSonglist)

-	ON_WM_DESTROY()

-	ON_WM_SIZE()

-	//}}AFX_MSG_MAP

-END_MESSAGE_MAP()

-

-BEGIN_DISPATCH_MAP(CWMPADialog, CDialog)

-	//{{AFX_DISPATCH_MAP(CWMPADialog)

-		// NOTE - the ClassWizard will add and remove mapping macros here.

-	//}}AFX_DISPATCH_MAP

-END_DISPATCH_MAP()

-

-// Note: we add support for IID_IWMPADialog to support typesafe binding

-//  from VBA.  This IID must match the GUID that is attached to the

-//  dispinterface in the .ODL file.

-

-// {01C1B3AA-C7FC-4023-89A5-C814E1B62B9B}

-static const IID IID_IWMPADialog =

-{ 0x1c1b3aa, 0xc7fc, 0x4023, { 0x89, 0xa5, 0xc8, 0x14, 0xe1, 0xb6, 0x2b, 0x9b } };

-

-BEGIN_INTERFACE_MAP(CWMPADialog, CDialog)

-	INTERFACE_PART(CWMPADialog, IID_IWMPADialog, Dispatch)

-END_INTERFACE_MAP()

-

-/////////////////////////////////////////////////////////////////////////////

-// CWMPADialog message handlers

-

-void CWMPADialog::OnDblclkPlaylist()

-{

-	// TODO: Add your control notification handler code here

-   long index;

-

-   // Get the playlist name

-   index = m_PlaylistBox.GetCurSel();

-   CString playlistName;

-   m_PlaylistBox.GetText(index, playlistName);

-

-   // Get the playlist

-   CWMPPlaylistCollection pc = m_WMP.GetPlaylistCollection();

-   CWMPPlaylistArray pa = pc.getByName((LPCTSTR) playlistName);

-   CWMPPlaylist playlist = pa.Item(0);

-   m_WMP.SetCurrentPlaylist(playlist);

-

-   // Set the song list

-   UpdateSongList();

-

-   m_WMP.GetControls().play();

-   if (autoAnnounce) {

-      hexchat_commandf(ph, "me is playing %s", (LPCTSTR) wmpaGetSongTitle());

-   }

-   else {

-      hexchat_printf(ph, "WMPA: Playing %s", (LPCTSTR) wmpaGetSongTitle());

-   }

-}

-

-void CWMPADialog::OnShowWindow(BOOL bShow, UINT nStatus)

-{

-	CDialog::OnShowWindow(bShow, nStatus);

-	

-	// TODO: Add your message handler code here

-   if (bShow) {

-      if (!trayInit) {

-         ZeroMemory(&nid, sizeof(nid));

-         nid.cbSize = sizeof(nid);

-         nid.hWnd = m_hWnd;

-         nid.uID = ID_TRAY_ICON;

-         nid.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP;

-         nid.uCallbackMessage = WM_TRAY_ICON;

-         nid.hIcon = m_hIcon;

-         strcpy(nid.szTip, "WMPA");

-         strcat(nid.szTip,  VER_STRING);

-         strcat(nid.szTip, "\nWindows Media\nPlayer Announcer");

-         nid.dwState = 0;

-         nid.dwStateMask = 0;

-         strcpy(nid.szInfo, "WMPA ");

-         strcat(nid.szInfo, VER_STRING);

-         nid.uTimeout = 10000; // 10 second time out

-         strcat(nid.szInfoTitle, "WMPA");

-         nid.dwInfoFlags = 0;

-         trayInit = TRUE;

-      }

-   }

-

-}

-

-

-void CWMPADialog::PostNcDestroy()

-{

-	// TODO: Add your specialized code here and/or call the base class

-   delete this;

-

-	CDialog::PostNcDestroy();

-}

-

-

-BOOL CWMPADialog::OnInitDialog()

-{

-	CDialog::OnInitDialog();

-

-   CString title = "WMPA";

-   title += " ";

-   title += VER_STRING;

-   SetWindowText((LPCTSTR) title);

-

-   UpdatePlayLists();

-

-   autoAnnounce = FALSE;

-   trayInit = FALSE;

-   trayClicked = FALSE;

-

-	return TRUE;  // return TRUE unless you set the focus to a control

-	              // EXCEPTION: OCX Property Pages should return FALSE

-}

-

-void CWMPADialog::OnClose()

-{

-	// TODO: Add your message handler code here and/or call default

-   Shell_NotifyIcon(NIM_ADD, &nid);

-   ShowWindow(SW_HIDE);

-

-   // Don't let the user close the dialog

-//   CDialog::OnClose();

-}

-

-void CWMPADialog::OnCancel()

-{

-//   this->DestroyWindow();

-}

-

-void CWMPADialog::OnDblclkSonglist()

-{

-	// TODO: Add your control notification handler code here

-   int index = m_SongListBox.GetCurSel();

-   m_WMP.GetControls().playItem(m_WMP.GetCurrentPlaylist().GetItem(index));

-   if (autoAnnounce) {

-      hexchat_commandf(ph, "me is playing %s", (LPCTSTR) wmpaGetSongTitle());

-   }

-   else {

-      hexchat_printf(ph, "WMPA: Playing %s", (LPCTSTR) wmpaGetSongTitle());

-   }

-}

-

-BEGIN_EVENTSINK_MAP(CWMPADialog, CDialog)

-    //{{AFX_EVENTSINK_MAP(CWMPADialog)

-	ON_EVENT(CWMPADialog, IDC_WMP, 5806 /* CurrentItemChange */, OnCurrentItemChangeWmp, VTS_DISPATCH)

-	ON_EVENT(CWMPADialog, IDC_WMP, 5101 /* PlayStateChange */, OnPlayStateChangeWmp, VTS_I4)

-	//}}AFX_EVENTSINK_MAP

-END_EVENTSINK_MAP()

-

-void CWMPADialog::OnCurrentItemChangeWmp(LPDISPATCH pdispMedia)

-{

-	// TODO: Add your control notification handler code here

-

-   int state = m_WMP.GetPlayState();

-   if (state == 3) { // Playing

-      if (autoAnnounce) {

-         hexchat_commandf(ph, "me is playing %s", (LPCTSTR) wmpaGetSongTitle());

-      }

-      else {

-         hexchat_printf(ph, "WMPA: Playing %s", (LPCTSTR) wmpaGetSongTitle());

-      }

-   }

-

-   SelectCurrentSong();

-}

-

-void CWMPADialog::OnDestroy()

-{

-	CDialog::OnDestroy();

-	

-   // TODO: Add your message handler code here

-}

-

-void CWMPADialog::UpdateSongList()

-{

-   char buffer[32];

-   CString name;

-   CString artist;

-   CString title;

-   CString album;

-   CString bitrate;

-   CString duration;

-   CString song;

-   long index;

-   long count;

-

-   m_SongListBox.ResetContent();

-   CWMPPlaylist playlist = m_WMP.GetCurrentPlaylist();

-   count = playlist.GetCount();

-   m_SongListBox.ResetContent();

-   for (index = 0; index < count; index++) {

-      name         = playlist.GetItem(index).GetName();

-      artist       = playlist.GetItem(index).getItemInfo("Artist");

-      title        = playlist.GetItem(index).getItemInfo("Title");

-      album        = playlist.GetItem(index).getItemInfo("Album");

-      bitrate      = playlist.GetItem(index).getItemInfo("Bitrate");

-      duration     = playlist.GetItem(index).GetDurationString();

-

-      long krate = strtoul((LPCTSTR) bitrate, NULL, 10) / 1000;

-      _ultoa(krate, buffer, 10);

-      bitrate = CString(buffer);

-

-      if (album.IsEmpty()) {

-         playlist.removeItem(playlist.GetItem(index));

-         count = playlist.GetCount();

-      }

-      else {

-         song = "";

-         song += artist;

-         if (song.IsEmpty()) song = "Various";

-         song += " - ";

-         song += title;

-         song += " (";

-         song += album;

-         song += ") [";

-         song += duration;

-         song += "/";

-         song += bitrate;

-         song += "Kbps]";

-         m_SongListBox.AddString((LPCTSTR) song);

-      }

-

-   }

-   m_SongListBox.SetCurSel(0);

-}

-

-void CWMPADialog::SelectCurrentSong()

-{

-   CWMPMedia media;

-   long index;

-   long count;

-

-   count = m_WMP.GetCurrentPlaylist().GetCount();

-   for (index = 0; index < count; index++) {

-      media = m_WMP.GetCurrentPlaylist().GetItem(index);

-      if (m_WMP.GetCurrentMedia().GetIsIdentical(media)) {

-         m_SongListBox.SetCurSel(index);

-      }

-   }

-}

-

-void CWMPADialog::UpdatePlayLists()

-{

-	// TODO: Add extra initialization here

-   CWMPPlaylistCollection pc = m_WMP.GetPlaylistCollection();

-   CWMPPlaylistArray pa = pc.getAll();

-   CWMPPlaylist playlist;

-

-   int index;

-   int count = pa.GetCount();

-   m_PlaylistBox.ResetContent();

-   for (index = 0; index < count; index++) {

-      playlist = pa.Item(index);

-      m_PlaylistBox.AddString((LPCTSTR) playlist.GetName());

-   }

-}

-

-

-void CWMPADialog::OnPlayStateChangeWmp(long NewState)

-{

-	// TODO: Add your control notification handler code here

-}

-

-void CWMPADialog::OnSize(UINT nType, int cx, int cy)

-{

-	CDialog::OnSize(nType, cx, cy);

-	// TODO: Add your message handler code here

-   switch (nType) {

-      case SIZE_MINIMIZED:

-         break;

-

-      case SIZE_RESTORED:

-         Shell_NotifyIcon(NIM_DELETE, &nid);

-         break;

-

-      default:

-         break;

-   }

-}

-

-LRESULT CWMPADialog::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)

-{

-   // TODO: Add your specialized code here and/or call the base class

-   switch (message) {

-      case WM_TRAY_ICON:

-         switch (lParam) {

-            case WM_LBUTTONDBLCLK:

-               trayClicked = TRUE;

-               break;

-

-            case WM_LBUTTONUP:

-               if (trayClicked == TRUE) {

-                  ShowWindow(SW_RESTORE);

-               }

-               break;

-

-            default:

-               trayClicked = FALSE;

-               break;

-         }

-         return(TRUE);

-         break;

-

-      default:

-         return CDialog::WindowProc(message, wParam, lParam);

-         break;

-   }

-}

-

-void CWMPADialog::DeleteTrayIcon()

-{

-   Shell_NotifyIcon(NIM_DELETE, &nid);

-}