// Status.cpp : implementation file
//

#include "stdafx.h"
#include "Icecast2win.h"
#include "Status.h"

#include "Icecast2winDlg.h"

extern CIcecast2winDlg	*g_mainDialog;

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

extern void RemoveFromAdditionalGlobalStats(CString source, CString name);
extern void AddToTitleAdditionalGlobalStats(CString source, CString name);


/////////////////////////////////////////////////////////////////////////////
// CStatus dialog


CStatus::CStatus(CWnd* pParent /*=NULL*/)
	: CTabPageSSL(CStatus::IDD, pParent)
{
	//{{AFX_DATA_INIT(CStatus)
	m_Clients = _T("");
	m_Sources = _T("");
	m_RunningFor = _T("");
	//}}AFX_DATA_INIT
}


void CStatus::DoDataExchange(CDataExchange* pDX)
{
	CTabPageSSL::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CStatus)
	DDX_Control(pDX, IDC_STATIC_GS, m_GS);
	DDX_Control(pDX, IDC_GLOBALSTAT_LIST, m_GlobalStatList);
	DDX_Text(pDX, IDC_RUNNINGFOR, m_RunningFor);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CStatus, CTabPageSSL)
	//{{AFX_MSG_MAP(CStatus)
	ON_NOTIFY(NM_RCLICK, IDC_GLOBALSTAT_LIST, OnRclickGlobalstatList)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CStatus message handlers

BOOL CStatus::OnInitDialog() 
{
	CTabPageSSL::OnInitDialog();


	m_GlobalStatList.InsertColumn(0, _T("Stat Type"), LVCFMT_LEFT, m_colStats0Width);
	m_GlobalStatList.InsertColumn(1, _T("Name"), LVCFMT_LEFT, m_colStats1Width);
	m_GlobalStatList.InsertColumn(2, _T("Value"), LVCFMT_LEFT, m_colStats2Width);

	m_GlobalStatList.SetExtendedStyle(LVS_EX_FULLROWSELECT);
	// TODO: Add extra initialization here
	AddAnchor(IDC_FILLER2, BOTTOM_LEFT, BOTTOM_RIGHT);
	AddAnchor(IDC_GLOBALSTAT_LIST, TOP_LEFT, BOTTOM_RIGHT);
	AddAnchor(IDC_STATIC_RUN, BOTTOM_LEFT, BOTTOM_RIGHT);
	AddAnchor(IDC_RUNNINGFOR, BOTTOM_LEFT, BOTTOM_RIGHT);
	
	m_GS.SetFont(&(g_mainDialog->labelFont), TRUE);

	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CStatus::OnRclickGlobalstatList(NMHDR* pNMHDR, LRESULT* pResult) 
{
	// TODO: Add your control notification handler code here
	CMenu	menu;

	
    CPoint point;                                            
    ::GetCursorPos(&point); //where is the mouse?

    DWORD dwSelectionMade;                                       
    menu.LoadMenu(IDR_MENU3);  
    CMenu *pmenuPopup = menu.GetSubMenu(0);
    dwSelectionMade = pmenuPopup->TrackPopupMenu( (TPM_LEFTALIGN|TPM_LEFTBUTTON|
                                                       TPM_NONOTIFY|TPM_RETURNCMD),
                                                       point.x, point.y, this);                                
  
    pmenuPopup->DestroyMenu();
	char	msg[255] ="";
	char	buffer[1024] = "";
	char	buffer2[1024] = "";

	CString name;
	CString source;
	POSITION pos;
	int nItem;
	switch (dwSelectionMade) {
	case ID__DELETEFROMGLOBALSTATS :
		pos = m_GlobalStatList.GetFirstSelectedItemPosition();
		if (pos != NULL) {
			nItem = m_GlobalStatList.GetNextSelectedItem(pos);
			LVITEM	lvi;

			lvi.mask =  LVIF_TEXT;
			lvi.iItem = nItem;
			lvi.iSubItem = 0;
			lvi.pszText = buffer;
			lvi.cchTextMax = sizeof(buffer);
			m_GlobalStatList.GetItem(&lvi);
			source = buffer;
			lvi.iSubItem = 1;
			lvi.pszText = buffer2;
			lvi.cchTextMax = sizeof(buffer2);
			m_GlobalStatList.GetItem(&lvi);
			name = buffer2;

			if (source == "Global Stat") {
				MessageBox("Sorry, but you can't delete this type of stat", NULL, MB_OK);
			}
			else {
				RemoveFromAdditionalGlobalStats(source, name);
				m_GlobalStatList.DeleteItem(nItem);
			}
	   }
		break;
	case ID__MAKETHISSTATTHEWINDOWTITLE :
		pos = m_GlobalStatList.GetFirstSelectedItemPosition();
		if (pos != NULL) {
			nItem = m_GlobalStatList.GetNextSelectedItem(pos);
			LVITEM	lvi;

			lvi.mask =  LVIF_TEXT;
			lvi.iItem = nItem;
			lvi.iSubItem = 0;
			lvi.pszText = buffer;
			lvi.cchTextMax = sizeof(buffer);
			m_GlobalStatList.GetItem(&lvi);
			source = buffer;
			lvi.iSubItem = 1;
			lvi.pszText = buffer2;
			lvi.cchTextMax = sizeof(buffer2);
			m_GlobalStatList.GetItem(&lvi);
			name = buffer2;

			AddToTitleAdditionalGlobalStats(source, name);
		}
		break;
	default :
		break;
	}
	
	*pResult = 0;
}