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