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

📄 settings.cpp

📁 p2p软件
💻 CPP
📖 第 1 页 / 共 3 页
字号:
	Add( _T("Uploads.ClampdownFloor"), &Uploads.ClampdownFloor, 1024 );
	Add( _T("Uploads.ThrottleMode"), &Uploads.ThrottleMode, TRUE );
	Add( _T("Uploads.QueuePollMin"), &Uploads.QueuePollMin, 45000 );
	Add( _T("Uploads.QueuePollMax"), &Uploads.QueuePollMax, 120000 );
	Add( _T("Uploads.RotateChunkLimit"), &Uploads.RotateChunkLimit, 1024*1024 );
	Add( _T("Uploads.SharePartials"), &Uploads.SharePartials, TRUE );
	Add( _T("Uploads.ShareTiger"), &Uploads.ShareTiger, TRUE );
	Add( _T("Uploads.ShareHashset"), &Uploads.ShareHashset, TRUE );
	Add( _T("Uploads.ShareMetadata"), &Uploads.ShareMetadata, TRUE );
	Add( _T("Uploads.SharePreviews"), &Uploads.SharePreviews, TRUE );
	Add( _T("Uploads.DynamicPreviews"), &Uploads.DynamicPreviews, TRUE );
	Add( _T("Uploads.PreviewQuality"), &Uploads.PreviewQuality, 40 );
	Add( _T("Uploads.PreviewTransfers"), &Uploads.PreviewTransfers, 3 );
	Add( _T("Uploads.AllowBackwards"), &Uploads.AllowBackwards, TRUE );
	Add( _T("Uploads.HubUnshare"), &Uploads.HubUnshare, TRUE );
	Add( _T("Uploads.BlockAgents"), &Uploads.BlockAgents, _T("|Mozilla|") );
	Add( _T("Uploads.AutoClear"), &Uploads.AutoClear, FALSE );
	Add( _T("Uploads.ClearDelay"), &Uploads.ClearDelay, 30000 );
	Add( _T("Uploads.FilterMask"), &Uploads.FilterMask, 0xFFFFFFFD );
	
	Add( _T("Remote.Enable"), &Remote.Enable, FALSE );
	Add( _T("Remote.Username"), &Remote.Username, _T("") );
	Add( _T("Remote.Password"), &Remote.Password, _T("") );
}

//////////////////////////////////////////////////////////////////////
// CSettings construction

CSettings::CSettings()
{
	TCHAR szPath[128];
	GetModuleFileName( NULL, szPath, 128 );
	
	General.Path = szPath;
	if ( General.Path.ReverseFind( '\\' ) >= 0 )
		General.Path = General.Path.Left( General.Path.ReverseFind( '\\' ) );
	
	Live.BandwidthScale		= 90;
	Live.LoadWindowState	= FALSE;
	Live.AutoClose			= FALSE;
	Live.FirstRun			= FALSE;
	
	Setup();
}

CSettings::~CSettings()
{
	for ( POSITION pos = m_pItems.GetHeadPosition() ; pos ; )
	{
		delete (Item*)m_pItems.GetNext( pos );
	}
}

//////////////////////////////////////////////////////////////////////
// CSettings add items

void CSettings::Add(LPCTSTR pszName, DWORD* pDword, DWORD nDefault)
{
	m_pItems.AddTail( new Item( pszName, pDword, NULL, NULL ) );
	*pDword = nDefault;
}

void CSettings::Add(LPCTSTR pszName, int* pDword, DWORD nDefault)
{
	m_pItems.AddTail( new Item( pszName, (DWORD*)pDword, NULL, NULL ) );
	*pDword = nDefault;
}

void CSettings::Add(LPCTSTR pszName, DOUBLE* pFloat, DOUBLE nDefault)
{
	m_pItems.AddTail( new Item( pszName, NULL, pFloat, NULL ) );
	*pFloat = nDefault;
}

void CSettings::Add(LPCTSTR pszName, CString* pString, LPCTSTR pszDefault)
{
	m_pItems.AddTail( new Item( pszName, NULL, NULL, pString ) );
	if ( pszDefault ) *pString = pszDefault;
}

//////////////////////////////////////////////////////////////////////
// CSettings load

#define SMART_VERSION	28

void CSettings::Load()
{
	for ( POSITION pos = m_pItems.GetHeadPosition() ; pos ; )
	{
		Item* pItem = (Item*)m_pItems.GetNext( pos );
		pItem->Load();
	}
	
	if ( theApp.GetProfileInt( _T("Settings"), _T("FirstRun"), TRUE ) )
	{
		Live.FirstRun = TRUE;
		theApp.WriteProfileInt( _T("Settings"), _T("FirstRun"), FALSE );
	}
	
	SmartUpgrade();
	
	if ( theApp.GetProfileInt( _T("Settings"), _T("Running"), FALSE ) )
	{
		theApp.WriteProfileInt( _T("VersionCheck"), _T("NextCheck"), 0 );
	}
	else
	{
		theApp.WriteProfileInt( _T("Settings"), _T("Running"), TRUE );
	}
	
	Gnutella1.EnableToday	= Gnutella1.EnableAlways;
	Gnutella2.EnableToday	= Gnutella2.EnableAlways;
	eDonkey.EnableToday		= eDonkey.EnableAlways;
	
	CreateDirectory( General.Path + _T("\\Data"), NULL );
}

void CSettings::Save(BOOL bShutdown)
{
	if ( Connection.TimeoutConnect == 0 ) return;
	
	for ( POSITION pos = m_pItems.GetHeadPosition() ; pos ; )
	{
		Item* pItem = (Item*)m_pItems.GetNext( pos );
		if ( pItem->m_sName != _T(".Path") ) pItem->Save();
	}
	
	theApp.WriteProfileInt( _T("Settings"), _T("SmartVersion"), SMART_VERSION );
	theApp.WriteProfileInt( _T("Settings"), _T("Running"), bShutdown ? FALSE : TRUE );
}

//////////////////////////////////////////////////////////////////////
// CSettings smart upgrade

void CSettings::SmartUpgrade()
{
	int nVersion = theApp.GetProfileInt( _T("Settings"), _T("SmartVersion"), SMART_VERSION );
	
	if ( nVersion < 20 )
	{
		Gnutella.HubForce	= FALSE;
		
		Gnutella1.TranslateTTL			= 3;
		Gnutella1.RequeryDelay			= 45*60;
		
		Gnutella2.NumPeers				= 4;
		Gnutella2.QueryGlobalThrottle	= 200;
		Gnutella2.UdpOutResend			= 6000;
		Gnutella2.UdpOutExpire			= 26000;
		
		Library.TigerHeight		= 9;
		Library.SourceExpire	= 86400;
		Library.BitziWebSubmit	= _T("http://bitzi.com/lookup/(SHA1).(TTH)?fl=(SIZE)&ff=(FIRST20)&fn=(NAME)&a=(AGENT)&v=Q0.4&ref=shareaza");
		
		Downloads.MaxFiles				= max( Downloads.MaxFiles, 8 );
		Downloads.MaxTransfers			= max( Downloads.MaxTransfers, 32 );
		Downloads.MaxFileTransfers		= max( Downloads.MaxFileTransfers, 14 );
		Downloads.AutoExpand			= FALSE;
		
		Uploads.SharePartials	= TRUE;
		Uploads.MaxPerHost		= 2;
		Uploads.ShareTiger		= TRUE;
		
		Replace( Library.PrivateTypes, _T("|nfo|"), _T("|") );
		Replace( Library.SafeExecute, _T("|."), _T("|") );
	}
	
	if ( nVersion < 21 )
	{
		General.CloseMode		= 0;
		Library.ThumbSize		= 96;
		Library.SourceExpire	= 86400;
		Gnutella1.TranslateTTL	= 2;
	}
	
	if ( nVersion < 24 )
	{
		General.CloseMode			= 0;
		Connection.TimeoutHandshake	= max( Connection.TimeoutHandshake, 40000 );
		Connection.TimeoutConnect	= 16000;
		Connection.TimeoutHandshake	= 45000;
		Connection.TimeoutTraffic	= 140000;
		Downloads.RetryDelay		= 10*60000;
		Uploads.FilterMask			= 0xFFFFFFFD;
	}
	
	if ( nVersion < 25 )
	{
		Connection.TimeoutTraffic = 140000;
		Gnutella2.NumHubs = 2;
		Gnutella2.NumLeafs = 300;
		Gnutella2.NumPeers = 6;
	}
	
	if ( nVersion < 26 )
	{
		Downloads.ConnectThrottle = max( Downloads.ConnectThrottle, 200 );
		Downloads.MaxTransfers = min( Downloads.MaxTransfers, 128 );
	}
	
	if ( nVersion < 28 )
	{
		Connection.Firewalled = TRUE;	// We now assume so until proven otherwise
		Library.VirtualFiles = TRUE;	// Virtual files (stripping) on
		BitTorrent.Endgame = TRUE;		// Endgame on
	}
	
	if ( ( nVersion < SMART_VERSION || Live.FirstRun ) &&
		_tcsistr( MediaPlayer.FileTypes, _T("|ogg|") ) == NULL )
	{
		LONG nReg = 0;
		
		if ( RegQueryValue( HKEY_CLASSES_ROOT,
			_T("CLSID\\{02391F44-2767-4E6A-A484-9B47B506F3A4}"), NULL, &nReg )
			== ERROR_SUCCESS && nReg > 0 )
		{
			MediaPlayer.FileTypes += _T("|ogg|");
		}
	}
}

//////////////////////////////////////////////////////////////////////
// CSettings settings lookup

CSettings::Item* CSettings::GetSetting(LPCTSTR pszName) const
{
	for ( POSITION pos = m_pItems.GetHeadPosition() ; pos ; )
	{
		Item* pItem = (Item*)m_pItems.GetNext( pos );
		if ( pItem->m_sName.CompareNoCase( pszName ) == 0 ) return pItem;
	}
	
	return NULL;
}

CSettings::Item* CSettings::GetSetting(LPVOID pValue) const
{
	for ( POSITION pos = m_pItems.GetHeadPosition() ; pos ; )
	{
		Item* pItem = (Item*)m_pItems.GetNext( pos );
		if ( pItem->m_pDword == pValue ||
			 pItem->m_pFloat == pValue ||
			 pItem->m_pString == pValue ) return pItem;
	}

	return NULL;
}

//////////////////////////////////////////////////////////////////////
// CSettings window position persistance

BOOL CSettings::LoadWindow(LPCTSTR pszName, CWnd* pWindow)
{
	WINDOWPLACEMENT pPos;
	CString strEntry;
	
	if ( pszName != NULL )
		strEntry = pszName;
	else
		strEntry = pWindow->GetRuntimeClass()->m_lpszClassName;
	
	int nShowCmd = theApp.GetProfileInt( _T("Windows"), strEntry + _T(".ShowCmd"), -1 );
	if ( nShowCmd == -1 ) return FALSE;
	
	ZeroMemory( &pPos, sizeof(pPos) );
	pPos.length = sizeof(pPos);
	
	pPos.rcNormalPosition.left		= theApp.GetProfileInt( _T("Windows"), strEntry + _T(".Left"), 0 );
	pPos.rcNormalPosition.top		= theApp.GetProfileInt( _T("Windows"), strEntry + _T(".Top"), 0 );
	pPos.rcNormalPosition.right		= theApp.GetProfileInt( _T("Windows"), strEntry + _T(".Right"), 0 );
	pPos.rcNormalPosition.bottom	= theApp.GetProfileInt( _T("Windows"), strEntry + _T(".Bottom"), 0 );
	
	if ( pPos.rcNormalPosition.right && pPos.rcNormalPosition.bottom )
	{
		pPos.showCmd = 0;
		pWindow->SetWindowPlacement( &pPos );
	}
	
	if ( Live.LoadWindowState && nShowCmd == SW_SHOWMINIMIZED )
	{
		pWindow->PostMessage( WM_SYSCOMMAND, SC_MINIMIZE );
	}
	else if ( ! Live.LoadWindowState && nShowCmd == SW_SHOWMAXIMIZED )
	{
		pWindow->PostMessage( WM_SYSCOMMAND, SC_MAXIMIZE );
	}
	
	return TRUE;
}

void CSettings::SaveWindow(LPCTSTR pszName, CWnd* pWindow)
{
	WINDOWPLACEMENT pPos;
	CString strEntry;

	if ( pszName != NULL )
		strEntry = pszName;
	else
		strEntry = pWindow->GetRuntimeClass()->m_lpszClassName;

	pWindow->GetWindowPlacement( &pPos );

	theApp.WriteProfileInt( _T("Windows"), strEntry + _T(".ShowCmd"), pPos.showCmd );

	if ( pPos.showCmd != SW_SHOWNORMAL ) return;

⌨️ 快捷键说明

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