📄 statisticsdlg.cpp
字号:
//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 + -