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

📄 wndmain.cpp

📁 p2p软件
💻 CPP
📖 第 1 页 / 共 5 页
字号:
	
	m_wndMonitorBar.OnSkinChange();
	m_wndRemoteWnd.OnSkinChange();
	
	SetWindowPos( NULL, 0, 0, 0, 0, SWP_NOMOVE|SWP_NOSIZE|
		SWP_NOACTIVATE|SWP_NOZORDER|SWP_FRAMECHANGED|SWP_DRAWFRAME );
	
	UpdateMessages();
	
	if ( TRUE )
	{
		m_wndToolBar.OnUpdated();
		m_pWindows.PostSkinChange();
		m_wndTabBar.OnUpdateCmdUI( this, FALSE );
		RedrawWindow( NULL, NULL, RDW_INVALIDATE|RDW_FRAME|RDW_ALLCHILDREN );
	}
	
	CSettingsManagerDlg::OnSkinChange( TRUE );
	CDownloadMonitorDlg::OnSkinChange( TRUE );
	CFilePreviewDlg::OnSkinChange( TRUE );
	
	Invalidate();
	
	return 0;
}

LONG CMainWnd::OnWinsock(WPARAM wParam, LPARAM lParam)
{
	Network.OnWinsock( wParam, lParam );
	return 0;
}

LONG CMainWnd::OnHandleURL(WPARAM wParam, LPARAM lParam)
{
	CShareazaURL* pURL = (CShareazaURL*)wParam;
	
	DWORD tNow = GetTickCount();
	BOOL bSoon = ( tNow - m_tURLTime < 750 );
	m_tURLTime = tNow;
	
	if ( IsWindowEnabled() )
	{
		m_pURLDialog = new CURLActionDlg( this, pURL, bSoon );
		m_pURLDialog->DoModal();
		delete m_pURLDialog;
		m_pURLDialog = NULL;
	}
	else
	{
		if ( m_pURLDialog != NULL && bSoon )
		{
			m_pURLDialog->AddURL( pURL );
		}
		else
		{
			theApp.Message( MSG_ERROR, IDS_URL_BUSY );
			delete pURL;
		}
	}
	
	return 0;
}

LONG CMainWnd::OnHandleCollection(WPARAM wParam, LPARAM lParam)
{
	LPTSTR pszPath = (LPTSTR)wParam;
	CString strPath( pszPath );
	delete [] pszPath;
	
	if ( CLibraryWnd* pLibrary = (CLibraryWnd*)m_pWindows.Open( RUNTIME_CLASS(CLibraryWnd) ) )
	{
		pLibrary->OnCollection( strPath );
	}
	
	return 0;
}

LONG CMainWnd::OnVersionCheck(WPARAM wParam, LPARAM lParam)
{
	if ( wParam == 0 && VersionChecker.m_sMessage.GetLength() )
	{
		AfxMessageBox( VersionChecker.m_sMessage, MB_ICONINFORMATION );
	}
	
	if ( ( wParam == 0 || wParam == 1 ) && VersionChecker.m_bUpgrade )
	{
		CUpgradeDlg dlg;
		dlg.DoModal();
	}
	
	if ( wParam == 2 && VersionChecker.m_sUpgradePath.GetLength() )
	{
		CString strFormat, strMessage;
		
		LoadString( strFormat, IDS_UPGRADE_LAUNCH );
		strMessage.Format( strFormat, (LPCTSTR)VersionChecker.m_sUpgradeFile );
		
		if ( AfxMessageBox( strMessage, MB_ICONQUESTION|MB_YESNO ) == IDYES )
		{
			ShellExecute( GetSafeHwnd(), _T("open"), VersionChecker.m_sUpgradePath,
				_T("/launch"), NULL, SW_SHOWNORMAL );
			PostMessage( WM_CLOSE );
		}
	}
	
	return 0;
}

LONG CMainWnd::OnOpenChat(WPARAM wParam, LPARAM lParam)
{
	CSingleLock pLock( &ChatCore.m_pSection, TRUE );
	CChatSession* pSession = (CChatSession*)wParam;
	if ( ChatCore.Check( pSession ) ) pSession->OnOpenWindow();
	return 0;
}

LONG CMainWnd::OnOpenSearch(WPARAM wParam, LPARAM lParam)
{
	CQuerySearch* pSearch = (CQuerySearch*)wParam;
	if ( pSearch->OpenWindow() == NULL ) delete pSearch;
	return 0;
}

LONG CMainWnd::OnMediaKey(WPARAM wParam, LPARAM lParam)
{
	if ( CMediaWnd* pWnd = (CMediaWnd*)m_pWindows.Find( RUNTIME_CLASS(CMediaWnd) ) )
	{
		return pWnd->SendMessage( 0x0319, 1, lParam );
	}
	return 0;
}

LONG CMainWnd::OnDevModeChange(WPARAM wParam, LPARAM lParam)
{
	if ( CMediaWnd* pWnd = (CMediaWnd*)m_pWindows.Find( RUNTIME_CLASS(CMediaWnd) ) )
	{
		return pWnd->SendMessage( WM_DEVMODECHANGE, wParam, lParam );
	}
	return 0;
}

LONG CMainWnd::OnDisplayChange(WPARAM wParam, LPARAM lParam)
{
	if ( CMediaWnd* pWnd = (CMediaWnd*)m_pWindows.Find( RUNTIME_CLASS(CMediaWnd) ) )
	{
		return pWnd->SendMessage( WM_DISPLAYCHANGE, wParam, lParam );
	}
	return 0;
}

/////////////////////////////////////////////////////////////////////////////
// CMainWnd status message functionality

LONG CMainWnd::OnSetMessageString(WPARAM wParam, LPARAM lParam)
{
	if ( wParam == AFX_IDS_IDLEMESSAGE )
	{
		CString strOld;
		m_wndStatusBar.GetWindowText( strOld );
		if ( strOld != m_sMsgStatus ) m_wndStatusBar.SetWindowText( m_sMsgStatus );
		m_nIDLastMessage = m_nIDTracking = wParam;
		return 0;
	}
	else
	{
		return CMDIFrameWnd::OnSetMessageString( wParam, lParam );
	}
}

void CMainWnd::GetMessageString(UINT nID, CString& rMessage) const
{
	if ( LoadString( rMessage, nID ) )
	{
		int nPos = rMessage.Find( '\n' );
		if ( nPos >= 0 ) rMessage.SetAt( nPos, 0 );
	}
}

void CMainWnd::UpdateMessages()
{
	CString strFormat, strMessage, strOld;

	int nCount = Network.IsWellConnected();

	if ( nCount > 0 )
	{
		QWORD nLocalVolume;
		LibraryMaps.GetStatistics( NULL, &nLocalVolume );

		LoadString( strFormat, IDS_STATUS_BAR_CONNECTED );
		strMessage.Format( strFormat, nCount,
			(LPCTSTR)Settings.SmartVolume( nLocalVolume, TRUE ) );
	}
	else if ( Network.IsConnected() )
	{
		LoadString( strMessage, IDS_STATUS_BAR_CONNECTING );
	}
	else
	{
		LoadString( strMessage, IDS_STATUS_BAR_DISCONNECTED );
	}

	if ( VersionChecker.m_sQuote.GetLength() )
	{
		strMessage += _T("  ");
		strMessage += VersionChecker.m_sQuote;
	}

	if ( m_nIDLastMessage == AFX_IDS_IDLEMESSAGE )
	{
		m_wndStatusBar.GetWindowText( strOld );
		if ( strOld != strMessage ) m_wndStatusBar.SetWindowText( strMessage );
	}

	m_sMsgStatus = strMessage;

	LoadString( strFormat, IDS_STATUS_BAR_BANDWIDTH );
	strMessage.Format( strFormat,
		(LPCTSTR)Settings.SmartVolume( CGraphItem::GetValue( GRC_TOTAL_BANDWIDTH_IN ), FALSE, TRUE ),
		(LPCTSTR)Settings.SmartVolume( CGraphItem::GetValue( GRC_TOTAL_BANDWIDTH_OUT ), FALSE, TRUE ),
		(int)CGraphItem::GetValue( GRC_DOWNLOADS_TRANSFERS, 0 ),
		(int)CGraphItem::GetValue( GRC_UPLOADS_TRANSFERS, 0 ) );

	m_wndStatusBar.GetPaneText( 1, strOld );
	if ( strOld != strMessage ) m_wndStatusBar.SetPaneText( 1, strMessage );

	if ( m_bTrayIcon )
	{
		LoadString( strFormat, IDS_TRAY_TIP );
		strMessage.Format( strFormat,
			(int)CGraphItem::GetValue( GRC_GNUTELLA_CONNECTIONS, 0 ),
			(LPCTSTR)Settings.SmartVolume( CGraphItem::GetValue( GRC_TOTAL_BANDWIDTH_IN ), FALSE, TRUE ),
			(LPCTSTR)Settings.SmartVolume( CGraphItem::GetValue( GRC_TOTAL_BANDWIDTH_OUT ), FALSE, TRUE ),
			(int)CGraphItem::GetValue( GRC_DOWNLOADS_TRANSFERS ),
			(int)CGraphItem::GetValue( GRC_UPLOADS_TRANSFERS ) );

		if ( strMessage != m_pTray.szTip )
		{
			m_pTray.uFlags = NIF_TIP;
			_tcsncpy( m_pTray.szTip, strMessage, 63 );
			if ( ! Shell_NotifyIcon( NIM_MODIFY, &m_pTray ) ) m_bTrayIcon = FALSE;
		}
	}
	
	LoadString( strMessage, IDR_MAINFRAME );
	
	if ( Settings.Live.AutoClose )
	{
		LoadString( strOld, IDS_CLOSING_AFTER );
		strMessage += strOld;
	}
	
	if ( _tcsistr( strMessage, _T("Shareaza") ) == NULL )
	{
		strMessage = _T("Shareaza ") + strMessage;
	}
	
	GetWindowText( strOld );
	if ( strOld != strMessage ) SetWindowText( strMessage );
}

/////////////////////////////////////////////////////////////////////////////
// CMainWnd network menu

void CMainWnd::OnUpdateNetworkSearch(CCmdUI* pCmdUI) 
{
	pCmdUI->Enable( IsWindowEnabled() );
}

void CMainWnd::OnNetworkSearch() 
{
	if ( ! Network.IsWellConnected() ) Network.Connect( TRUE );
	
	if ( Settings.Search.SearchPanel && ! m_bTrayHide && ! IsIconic() )
	{
		m_pWindows.OpenNewSearchWindow();
	}
	else
	{
		CNewSearchDlg dlg;
		if ( dlg.DoModal() != IDOK ) return;
		new CSearchWnd( dlg.GetSearch() );
	}
	
	OpenFromTray();
}

void CMainWnd::OnUpdateNetworkConnect(CCmdUI* pCmdUI) 
{
	pCmdUI->Enable( TRUE );

	UINT nTextID = 0;

	if ( Network.IsWellConnected() )
	{
		nTextID = IDS_NETWORK_CONNECTED;
		pCmdUI->SetCheck( TRUE );
	}
	else if ( Network.IsConnected() )
	{
		nTextID = IDS_NETWORK_CONNECTING;
		pCmdUI->SetCheck( TRUE );
	}
	else
	{
		nTextID = IDS_NETWORK_CONNECT;
		pCmdUI->SetCheck( FALSE );
	}

	CString strText;
	LoadString( strText, nTextID );
	pCmdUI->SetText( strText );
}

void CMainWnd::OnNetworkConnect() 
{
	Network.Connect( TRUE );
}

void CMainWnd::OnUpdateNetworkDisconnect(CCmdUI* pCmdUI) 
{
	pCmdUI->Enable( Network.IsConnected() );
}

void CMainWnd::OnNetworkDisconnect() 
{
	Network.Disconnect();
}

void CMainWnd::OnUpdateNetworkConnectTo(CCmdUI* pCmdUI) 
{
	pCmdUI->Enable( TRUE );
}

void CMainWnd::OnNetworkConnectTo() 
{
	CConnectToDlg dlg;
	if ( dlg.DoModal() != IDOK ) return;
	Network.ConnectTo( dlg.m_sHost, dlg.m_nPort, dlg.m_nProtocol + 1, dlg.m_bNoUltraPeer );
}

void CMainWnd::OnNetworkBrowseTo() 
{
	CConnectToDlg dlg( NULL, TRUE );
	if ( dlg.DoModal() != IDOK ) return;

	SOCKADDR_IN pAddress;

	if ( Network.Resolve( dlg.m_sHost, dlg.m_nPort, &pAddress ) )
	{
		new CBrowseHostWnd( &pAddress );
	}
}

void CMainWnd::OnUpdateNetworkG2(CCmdUI* pCmdUI) 
{
	pCmdUI->SetCheck( Settings.Gnutella2.EnableToday );
}

void CMainWnd::OnNetworkG2() 
{
	if ( Network.IsConnected() && Settings.Gnutella2.EnableToday )
	{
		CString strMessage;
		LoadString( strMessage, IDS_NETWORK_DISABLE_G2 );
		
		if ( AfxMessageBox( strMessage, MB_ICONEXCLAMATION|MB_YESNO|MB_DEFBUTTON2 ) == IDYES )
		{
			Settings.Gnutella2.EnableToday = FALSE;
		}
	}
	else
	{
		Settings.Gnutella2.EnableToday = TRUE;
		Network.Connect( TRUE );
	}
}

void CMainWnd::OnUpdateNetworkG1(CCmdUI* pCmdUI) 
{
	pCmdUI->SetCheck( Settings.Gnutella1.EnableToday );
}

void CMainWnd::OnNetworkG1() 
{
	if ( Network.IsConnected() && Settings.Gnutella1.EnableToday )
	{
		Settings.Gnutella1.EnableToday = FALSE;
	}
	else
	{
		Settings.Gnutella1.EnableToday = TRUE;
		Network.Connect( TRUE );
	}
}

void CMainWnd::OnUpdateNetworkED2K(CCmdUI* pCmdUI) 
{
	pCmdUI->SetCheck( Settings.eDonkey.EnableToday );
}

void CMainWnd::OnNetworkED2K() 
{
	if ( Network.IsConnected() && Settings.eDonkey.EnableToday )
	{
		Settings.eDonkey.EnableToday = FALSE;
	}
	else
	{
		Settings.eDonkey.EnableToday = TRUE;
		Network.Connect( TRUE );
	}
}

void CMainWnd::OnUpdateNetworkAutoClose(CCmdUI* pCmdUI) 
{
	pCmdUI->Enable( Settings.Live.AutoClose || ( Transfers.GetActiveCount() > 0 ) );
	pCmdUI->SetCheck( Settings.Live.AutoClose );
}

void CMainWnd::OnNetworkAutoClose() 
{
	if ( Settings.Live.AutoClose )
	{
		Settings.Live.AutoClose = FALSE;
	}
	else
	{
		Network.Disconnect();
		Settings.Live.AutoClose = ( Transfers.GetActiveCount() > 0 );
		
		if ( Settings.Live.AutoClose )
		{
			if ( ! m_bTrayHide ) CloseToTray();
		}
		else
		{
			PostMessage( WM_CLOSE );
		}
	}
}

void CMainWnd::OnNetworkExit() 
{
	PostMessage( WM_CLOSE );
}

/////////////////////////////////////////////////////////////////////////////
// CMainWnd view menu

void CMainWnd::OnUpdateViewBasic(CCmdUI* pCmdUI) 
{
	pCmdUI->SetCheck( Settings.General.GUIMode == GUI_BASIC );
}

void CMainWnd::OnViewBasic() 
{
	if ( Settings.General.GUIMode == GUI_BASIC ) return;
	CString strMessage;
	LoadString( strMessage, IDS_VIEW_MODE_CONFIRM );
	if ( AfxMessageBox( strMessage, MB_ICONQUESTION|MB_YESNO ) != IDYES ) return;
	CWaitCursor pCursor;
	SetGUIMode( GUI_BASIC );
}

void CMainWnd::OnUpdateViewTabbed(CCmdUI* pCmdUI) 
{
	pCmdUI->SetCheck( Settings.General.GUIMode == GUI_TABBED );
}

void CMainWnd::OnViewTabbed() 
{
	if ( Settings.General.GUIMode == GUI_TABBED ) return;
	CString strMessage;
	LoadString( strMessage, IDS_VIEW_MODE_CONFIRM );
	if ( AfxMessageBox( strMessage, MB_ICONQUESTION|MB_YESNO ) != IDYES ) return;

⌨️ 快捷键说明

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