⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 statisticsdlg.cpp

📁 非常出名开源客户端下载的程序emule
💻 CPP
📖 第 1 页 / 共 3 页
字号:
//this file is part of eMule
//Copyright (C)2002 Merkur ( merkur-@users.sourceforge.net / http://www.emule-project.net )
//
//This program is free software; you can redistribute it and/or
//modify it under the terms of the GNU General Public License
//as published by the Free Software Foundation; either
//version 2 of the License, or (at your option) any later version.
//
//This program is distributed in the hope that it will be useful,
//but WITHOUT ANY WARRANTY; without even the implied warranty of
//MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
//GNU General Public License for more details.
//
//You should have received a copy of the GNU General Public License
//along with this program; if not, write to the Free Software
//Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.

// StatisticsDlg.cpp : implementation file
//
#include "stdafx.h"
#include "emule.h"
#include "StatisticsDlg.h"
#include "uploadqueue.h"

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


// CStatisticsDlg dialog

IMPLEMENT_DYNAMIC(CStatisticsDlg, CDialog)
CStatisticsDlg::CStatisticsDlg(CWnd* pParent /*=NULL*/)
	: CResizableDialog(CStatisticsDlg::IDD, pParent) , m_DownloadOMeter( 3 ),m_Statistics(4),m_UploadOMeter(3)
{

}

CStatisticsDlg::~CStatisticsDlg()
{
}

void CStatisticsDlg::DoDataExchange(CDataExchange* pDX)
{
	CResizableDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CExoSliderDlg)
	DDX_Control(pDX, IDC_STATTREE, stattree);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CStatisticsDlg, CResizableDialog)
	//{{AFX_MSG_MAP(CStatisticsDlg)
	ON_WM_SHOWWINDOW()
	ON_WM_SIZE()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()


// CStatisticsDlg message handlers

BOOL CStatisticsDlg::OnInitDialog(){

	CResizableDialog::OnInitDialog();
	EnableWindow( FALSE );

	Localize();

	// setup tree
	h_transfer= stattree.InsertItem(GetResString(IDS_FSTAT_TRANSFER));stattree.SetItemData(h_transfer,0);
	tran1= stattree.InsertItem(GetResString(IDS_FSTAT_WAITING),h_transfer);stattree.SetItemData(tran1,1);
	tran0= stattree.InsertItem(GetResString(IDS_FSTAT_WAITING),h_transfer);stattree.SetItemData(tran0,1);

	h_upload = stattree.InsertItem(GetResString(IDS_TW_UPLOADS), h_transfer);stattree.SetItemData(h_upload,0);
	up1= stattree.InsertItem(GetResString(IDS_FSTAT_WAITING),h_upload);stattree.SetItemData(up1,1);
	up2= stattree.InsertItem(GetResString(IDS_FSTAT_WAITING),h_upload);stattree.SetItemData(up2,1);
	up3= stattree.InsertItem(GetResString(IDS_FSTAT_WAITING),h_upload);stattree.SetItemData(up3,1);
	up4= stattree.InsertItem(GetResString(IDS_FSTAT_WAITING),h_upload);stattree.SetItemData(up4,1);
	up5= stattree.InsertItem(GetResString(IDS_FSTAT_WAITING),h_upload);stattree.SetItemData(up5,1);
	up6= stattree.InsertItem(GetResString(IDS_FSTAT_WAITING),h_upload);stattree.SetItemData(up6,1);
	up7= stattree.InsertItem(GetResString(IDS_FSTAT_WAITING),h_upload);stattree.SetItemData(up7,1);
	up8= stattree.InsertItem(GetResString(IDS_FSTAT_WAITING),h_upload);stattree.SetItemData(up8,1);
	up9= stattree.InsertItem(GetResString(IDS_FSTAT_WAITING),h_upload);stattree.SetItemData(up9,1);
	up10= stattree.InsertItem(GetResString(IDS_FSTAT_WAITING),h_upload);stattree.SetItemData(up10,1);

	h_download = stattree.InsertItem(GetResString(IDS_TW_DOWNLOADS), h_transfer);stattree.SetItemData(h_download,0);
	down1= stattree.InsertItem(GetResString(IDS_FSTAT_WAITING),h_download);stattree.SetItemData(down1,1);
	down2= stattree.InsertItem(GetResString(IDS_FSTAT_WAITING),h_download);stattree.SetItemData(down2,1);
	down3= stattree.InsertItem(GetResString(IDS_FSTAT_WAITING),h_download);stattree.SetItemData(down3,1);
	down4= stattree.InsertItem(GetResString(IDS_FSTAT_WAITING),h_download);stattree.SetItemData(down4,1);
	down5= stattree.InsertItem(GetResString(IDS_FSTAT_WAITING),h_download);stattree.SetItemData(down5,1);
	down6= stattree.InsertItem(GetResString(IDS_FSTAT_WAITING),h_download);stattree.SetItemData(down6,1);
	down7= stattree.InsertItem(GetResString(IDS_FSTAT_WAITING),h_download);stattree.SetItemData(down7,1);

	h_connection = stattree.InsertItem(GetResString(IDS_FSTAT_CONNECTION));stattree.SetItemData(h_connection,0);
	con1= stattree.InsertItem(GetResString(IDS_FSTAT_WAITING),h_connection);stattree.SetItemData(con1,1);
	con2= stattree.InsertItem(GetResString(IDS_FSTAT_WAITING),h_connection);stattree.SetItemData(con2,1);
	con12= stattree.InsertItem(GetResString(IDS_FSTAT_WAITING),h_connection);stattree.SetItemData(con12,1);
	con13= stattree.InsertItem(GetResString(IDS_FSTAT_WAITING),h_connection);stattree.SetItemData(con13,1);
	con3= stattree.InsertItem(GetResString(IDS_FSTAT_WAITING),h_connection);stattree.SetItemData(con3,1);
	con4= stattree.InsertItem(GetResString(IDS_FSTAT_WAITING),h_connection);stattree.SetItemData(con4,1);
	con5= stattree.InsertItem(GetResString(IDS_FSTAT_WAITING),h_connection);stattree.SetItemData(con5,1);
	con6= stattree.InsertItem(GetResString(IDS_FSTAT_WAITING),h_connection);stattree.SetItemData(con6,1);
	con7= stattree.InsertItem(GetResString(IDS_FSTAT_WAITING),h_connection);stattree.SetItemData(con7,1);
	con8= stattree.InsertItem(GetResString(IDS_FSTAT_WAITING),h_connection);stattree.SetItemData(con8,1);
	con9= stattree.InsertItem(GetResString(IDS_FSTAT_WAITING),h_connection);stattree.SetItemData(con9,1);

	h_clients = stattree.InsertItem(GetResString(IDS_CLIENTS));stattree.SetItemData(h_clients,0);
	cli1= stattree.InsertItem(GetResString(IDS_FSTAT_WAITING),h_clients);stattree.SetItemData(cli1,1);
		cli_versions[0]= stattree.InsertItem(GetResString(IDS_FSTAT_WAITING),cli1);
		cli_versions[1]= stattree.InsertItem(GetResString(IDS_FSTAT_WAITING),cli1);
		cli_versions[2]= stattree.InsertItem(GetResString(IDS_FSTAT_WAITING),cli1);
		cli_versions[3]= stattree.InsertItem(GetResString(IDS_FSTAT_WAITING),cli1);
		cli_versions[4]= stattree.InsertItem(GetResString(IDS_FSTAT_WAITING),cli1);
		cli_versions[5]= stattree.InsertItem(GetResString(IDS_FSTAT_WAITING),cli1);

	cli2= stattree.InsertItem(GetResString(IDS_FSTAT_WAITING),h_clients);stattree.SetItemData(cli2,1);
	cli3= stattree.InsertItem(GetResString(IDS_FSTAT_WAITING),h_clients);stattree.SetItemData(cli3,1);
		cli_versions[6]= stattree.InsertItem(GetResString(IDS_FSTAT_WAITING),cli3);
		cli_versions[7]= stattree.InsertItem(GetResString(IDS_FSTAT_WAITING),cli3);
		cli_versions[8]= stattree.InsertItem(GetResString(IDS_FSTAT_WAITING),cli3);
		cli_versions[9]= stattree.InsertItem(GetResString(IDS_FSTAT_WAITING),cli3);

	cli4= stattree.InsertItem(GetResString(IDS_FSTAT_WAITING),h_clients);stattree.SetItemData(cli4,1);
		cli_versions[10]= stattree.InsertItem(GetResString(IDS_FSTAT_WAITING),cli4);
		cli_versions[11]= stattree.InsertItem(GetResString(IDS_FSTAT_WAITING),cli4);
	for (int ix=0;ix<12;ix++) stattree.SetItemData(cli_versions[ix],2);

	cli5= stattree.InsertItem(GetResString(IDS_FSTAT_WAITING),h_clients);stattree.SetItemData(cli5,1);
	cli6= stattree.InsertItem(GetResString(IDS_FSTAT_WAITING),h_clients);stattree.SetItemData(cli6,1);
	cli7= stattree.InsertItem(GetResString(IDS_FSTAT_WAITING),h_clients);stattree.SetItemData(cli7,1);
	cli8= stattree.InsertItem(GetResString(IDS_STATS_FILTEREDCLIENTS),h_clients);stattree.SetItemData(cli8,1);

	h_servers = stattree.InsertItem(GetResString(IDS_FSTAT_SERVERS));stattree.SetItemData(h_servers,0);
	srv1= stattree.InsertItem(GetResString(IDS_FSTAT_WAITING),h_servers);stattree.SetItemData(srv1,1);
	srv2= stattree.InsertItem(GetResString(IDS_FSTAT_WAITING),h_servers);stattree.SetItemData(srv2,1);
	srv3= stattree.InsertItem(GetResString(IDS_FSTAT_WAITING),h_servers);stattree.SetItemData(srv3,1);
	srv4= stattree.InsertItem(GetResString(IDS_FSTAT_WAITING),h_servers);stattree.SetItemData(srv4,1);
	srv5= stattree.InsertItem(GetResString(IDS_FSTAT_WAITING),h_servers);stattree.SetItemData(srv5,1);
	srv6= stattree.InsertItem(GetResString(IDS_FSTAT_WAITING),h_servers);stattree.SetItemData(srv6,1);
	srv7= stattree.InsertItem(GetResString(IDS_FSTAT_WAITING),h_servers);stattree.SetItemData(srv7,1);
	srv8= stattree.InsertItem(GetResString(IDS_FSTAT_WAITING),h_servers);stattree.SetItemData(srv8,1);
	srv9= stattree.InsertItem(GetResString(IDS_FSTAT_WAITING),h_servers);stattree.SetItemData(srv9,1);

	h_shared = stattree.InsertItem( GetResString(IDS_SHAREDFILES) );stattree.SetItemData(h_shared,0);
	shar1= stattree.InsertItem(GetResString(IDS_FSTAT_WAITING),h_shared);stattree.SetItemData(shar1,1);
	shar2= stattree.InsertItem(GetResString(IDS_FSTAT_WAITING),h_shared);stattree.SetItemData(shar2,1);
	shar3= stattree.InsertItem(GetResString(IDS_FSTAT_WAITING),h_shared);stattree.SetItemData(shar3,1);

	stattree.Expand(h_transfer,TVE_EXPAND);
	stattree.Expand(h_connection,TVE_EXPAND);
	stattree.Expand(h_clients,TVE_EXPAND);
	stattree.Expand(h_servers,TVE_EXPAND);
	stattree.Expand(h_shared ,TVE_EXPAND);
	stattree.Expand(h_upload,TVE_EXPAND);
	stattree.Expand(h_download,TVE_EXPAND);

	// Setup download-scope
	CRect rect;
	GetDlgItem(IDC_SCOPE_D)->GetWindowRect(rect) ;
	ScreenToClient(rect) ;
	m_DownloadOMeter.Create(WS_VISIBLE | WS_CHILD, rect, this) ; 
	m_DownloadOMeter.SetRange(0, theApp.glob_prefs->GetMaxGraphDownloadRate()+4, 0) ;
	m_DownloadOMeter.SetRange(0, theApp.glob_prefs->GetMaxGraphDownloadRate()+4, 1) ;
	m_DownloadOMeter.SetRange(0, theApp.glob_prefs->GetMaxGraphDownloadRate()+4, 2) ;

	m_DownloadOMeter.SetYUnits(GetResString(IDS_KBYTESEC)) ;
	//m_DownloadOMeter.SetXUnits(GetResString(IDS_TIME));

	// Setup upload-scope
	GetDlgItem(IDC_SCOPE_U)->GetWindowRect(rect) ;
	ScreenToClient(rect) ;
	m_UploadOMeter.Create(WS_VISIBLE | WS_CHILD, rect, this) ; 
	m_UploadOMeter.SetRange(0, theApp.glob_prefs->GetMaxGraphUploadRate()+4, 0) ;
	m_UploadOMeter.SetRange(0, theApp.glob_prefs->GetMaxGraphUploadRate()+4, 1) ;
	m_UploadOMeter.SetRange(0, theApp.glob_prefs->GetMaxGraphUploadRate()+4, 2) ;
	m_UploadOMeter.SetYUnits(GetResString(IDS_KBYTESEC)) ;
	//m_UploadOMeter.SetXUnits(GetResString(IDS_TIME));

	// Setup additional graph-scope
	GetDlgItem(IDC_STATSSCOPE)->GetWindowRect(rect) ;
	ScreenToClient(rect) ;
	m_Statistics.Create(WS_VISIBLE | WS_CHILD, rect, this) ; 
	m_Statistics.SetRanges(0, theApp.glob_prefs->GetStatsMax()) ;
	m_Statistics.autofitYscale=false;

	AddAnchor(IDC_STATIC_LINE,CSize(50,50));
	AddAnchor(IDC_STATTREE,CSize(50,50) ,CSize(100,100));
	AddAnchor(m_UploadOMeter,CSize(50,0) ,CSize(100,50));
	AddAnchor(m_DownloadOMeter,CSize(0,0) ,CSize(50,50));
	AddAnchor(m_Statistics,CSize(0,50) ,CSize(50,100));

	
	AddAnchor(IDC_C0,CSize(0,50));
	AddAnchor(IDC_C0_2,CSize(0,50));
	AddAnchor(IDC_C0_3,CSize(0,50));
	AddAnchor(IDC_C1,CSize(50,50));
	AddAnchor(IDC_C1_2,CSize(50,50));
	AddAnchor(IDC_C1_3,CSize(50,50));

	AddAnchor(IDC_S1,CSize(0,100));
	AddAnchor(IDC_S2,CSize(0,100));
	AddAnchor(IDC_S3,CSize(0,100));
	AddAnchor(IDC_S0,CSize(0,100));

	AddAnchor(IDC_STATIC_D3,CSize(0,50));
	AddAnchor(IDC_STATIC_U,CSize(50,50));
	AddAnchor(IDC_STATIC_D,CSize(0,50));
	AddAnchor(IDC_STATIC_U2,CSize(50,50));
	AddAnchor(IDC_STATIC_U3,CSize(50,50));
	AddAnchor(IDC_STATIC_D2,CSize(0,50));
	AddAnchor(IDC_STATIC_S2,CSize(0,100));
	AddAnchor(IDC_STATIC_S0,CSize(0,100));
	AddAnchor(IDC_STATIC_S1,CSize(0,100));
	AddAnchor(IDC_STATIC_S3,CSize(0,100));

	AddAnchor(IDC_TIMEAVG1,CSize(0,50));
	AddAnchor(IDC_TIMEAVG2,CSize(50,50));
	RepaintMeters();
	AddAnchor(m_Led1[0],CSize(0,50));
	AddAnchor(m_Led1[1],CSize(0,50));
	AddAnchor(m_Led1[2],CSize(0,50));
	AddAnchor(m_Led2[0],CSize(50,50));
	AddAnchor(m_Led2[1],CSize(50,50));
	AddAnchor(m_Led2[2],CSize(50,50));
	AddAnchor(m_Led3[0],CSize(0,100));
	AddAnchor(m_Led3[1],CSize(0,100));
	//AddAnchor(m_Led3[2],CSize(0,100));
	AddAnchor(m_Led3[3],CSize(0,100));

	m_Statistics.SetYUnits("") ;
	m_Statistics.SetXUnits(GetResString(IDS_TIME));

	RepaintMeters();
	m_Statistics.SetBackgroundColor(theApp.glob_prefs->GetStatsColor(0)) ;
	m_Statistics.SetGridColor(theApp.glob_prefs->GetStatsColor(1)) ;
	
	m_DownloadOMeter.InvalidateCtrl();
	m_UploadOMeter.InvalidateCtrl();
	m_Statistics.InvalidateCtrl();

	if (theApp.glob_prefs->GetStatsInterval()==0) GetDlgItem(IDC_STATTREE)->EnableWindow(false);

	UpdateData(FALSE);

	EnableWindow( TRUE );

	m_ilastMaxConnReached = 0;
	peakconnections = 0;
	totalconnectionchecks = 0;
	averageconnections = 0;
	activeconnections = 0;
	maxDown=0;
	maxDownavg=0;

	return true;
}

void CStatisticsDlg::SetupLegend( int ResIdx, int ElmtIdx, int legendNr){
	CRect Rect;

	GetDlgItem( ResIdx )->GetWindowRect( Rect );
	ScreenToClient( Rect );
	
	if (legendNr==1){
		if (!m_Led1[ ElmtIdx ]) m_Led1[ ElmtIdx ].Create( WS_VISIBLE | WS_CHILD, Rect, this );
		m_Led1[ ElmtIdx ].SetBackgroundColor( m_DownloadOMeter.GetPlotColor( ElmtIdx ) );
		m_Led1[ ElmtIdx ].SetFrameColor( RGB( 0x00, 0x00, 0x00 ) );
	} else if (legendNr==2) {
		if (!m_Led2[ ElmtIdx ]) m_Led2[ ElmtIdx ].Create( WS_VISIBLE | WS_CHILD, Rect, this );

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -