📄 emuledlg.cpp
字号:
Text.Trim();
if (Text.IsEmpty())
{
return; //VeryCD版
}
LPCTSTR pszSoundEvent = NULL;
int iSoundPrio = 0;
bool ShowIt = false;
switch (MsgType)
{
case TBN_CHAT:
if (thePrefs.GetUseChatNotifier())
{
m_wndTaskbarNotifier->Show(Text, MsgType, pszLink);
ShowIt = true;
pszSoundEvent = _T("eMule_Chat");
iSoundPrio = 1;
}
break;
case TBN_SERVERMSG: //VeryCD版
if (thePrefs.GetUseServerNotifier()) {
m_wndTaskbarNotifier->Show(Text, MsgType, pszLink);
ShowIt = true;
pszSoundEvent = _T("eMule_Chat");
iSoundPrio = 1;
}
break;
case TBN_DLOAD:
if (thePrefs.GetUseDownloadNotifier())
{
m_wndTaskbarNotifier->Show(Text, MsgType, pszLink);
ShowIt = true;
pszSoundEvent = _T("eMule_DownloadFinished");
iSoundPrio = 1;
}
break;
case TBN_DLOADADDED:
if (thePrefs.GetUseNewDownloadNotifier())
{
m_wndTaskbarNotifier->Show(Text, MsgType, pszLink);
ShowIt = true;
pszSoundEvent = _T("eMule_DownloadAdded");
iSoundPrio = 1;
}
break;
case TBN_LOG:
if (thePrefs.GetUseLogNotifier())
{
m_wndTaskbarNotifier->Show(Text, MsgType, pszLink);
ShowIt = true;
pszSoundEvent = _T("eMule_LogEntryAdded");
}
break;
case TBN_IMPORTANTEVENT:
if (thePrefs.GetNotifierPopOnImportantError())
{
m_wndTaskbarNotifier->Show(Text, MsgType, pszLink);
ShowIt = true;
pszSoundEvent = _T("eMule_Urgent");
iSoundPrio = 1;
}
break;
case TBN_NEWVERSION:
if (thePrefs.GetNotifierPopOnNewVersion())
{
m_wndTaskbarNotifier->Show(Text, MsgType, pszLink);
ShowIt = true;
pszSoundEvent = _T("eMule_NewVersion");
iSoundPrio = 1;
}
break;
case TBN_NULL:
m_wndTaskbarNotifier->Show(Text, MsgType, pszLink);
ShowIt = true;
break;
}
if (ShowIt && !bForceSoundOFF)
{
if (thePrefs.GetUseSoundInNotifier())
{
PlaySound(thePrefs.GetNotifierWavSoundPath(), NULL, SND_FILENAME | SND_NOSTOP | SND_NOWAIT | SND_ASYNC);
}
else if (pszSoundEvent)
{
// use 'SND_NOSTOP' only for low priority events, otherwise the 'Log message' event may overrule a more important
// event which is fired nearly at the same time.
PlaySound(pszSoundEvent, NULL, SND_APPLICATION | SND_ASYNC | SND_NODEFAULT | SND_NOWAIT | ((iSoundPrio > 0) ? 0 : SND_NOSTOP));
}
}
}
void CemuleDlg::LoadNotifier(CString configuration)
{
notifierenabled = m_wndTaskbarNotifier->LoadConfiguration(configuration);
}
LRESULT CemuleDlg::OnTaskbarNotifierClicked(WPARAM wParam,LPARAM lParam)
{
if (lParam)
{
LPTSTR pszLink = (LPTSTR)lParam;
ShellOpenFile(pszLink);
free(pszLink);
pszLink = NULL;
}
switch (m_wndTaskbarNotifier->GetMessageType())
{
case TBN_CHAT:
RestoreWindow();
SetActiveDialog(chatwnd);
break;
case TBN_DLOAD:
// if we had a link and opened the downloaded file and if we currently in traybar, dont restore the app window
if (lParam==0 || !TrayIsVisible())
{
RestoreWindow();
SetActiveDialog(transferwnd);
}
break;
case TBN_DLOADADDED:
RestoreWindow();
SetActiveDialog(transferwnd);
break;
case TBN_IMPORTANTEVENT:
RestoreWindow();
SetActiveDialog(serverwnd);
break;
case TBN_LOG:
RestoreWindow();
SetActiveDialog(serverwnd);
break;
case TBN_NEWVERSION:
{
CString theUrl;
theUrl.Format(_T("/en/version_check.php?version=%i&language=%i"),theApp.m_uCurVersionCheck,thePrefs.GetLanguageID());
theUrl = thePrefs.GetVersionCheckBaseURL()+theUrl;
ShellExecute(NULL, NULL, theUrl, NULL, thePrefs.GetAppDir(), SW_SHOWDEFAULT);
break;
}
}
return 0;
}
void CemuleDlg::OnSysColorChange()
{
CTrayDialog::OnSysColorChange();
SetAllIcons();
}
void CemuleDlg::SetAllIcons()
{
// connection state
for (int i = 0; i < ARRSIZE(connicons); i++){
if (connicons[i]) VERIFY( ::DestroyIcon(connicons[i]) );
}
connicons[0] = theApp.LoadIcon(_T("ConnectedNotNot"), 16, 16);
connicons[1] = theApp.LoadIcon(_T("ConnectedNotLow"), 16, 16);
connicons[2] = theApp.LoadIcon(_T("ConnectedNotHigh"), 16, 16);
connicons[3] = theApp.LoadIcon(_T("ConnectedLowNot"), 16, 16);
connicons[4] = theApp.LoadIcon(_T("ConnectedLowLow"), 16, 16);
connicons[5] = theApp.LoadIcon(_T("ConnectedLowHigh"), 16, 16);
connicons[6] = theApp.LoadIcon(_T("ConnectedHighNot"), 16, 16);
connicons[7] = theApp.LoadIcon(_T("ConnectedHighLow"), 16, 16);
connicons[8] = theApp.LoadIcon(_T("ConnectedHighHigh"), 16, 16);
ShowConnectionStateIcon();
// transfer state
if (transicons[0]) VERIFY( ::DestroyIcon(transicons[0]) );
if (transicons[1]) VERIFY( ::DestroyIcon(transicons[1]) );
if (transicons[2]) VERIFY( ::DestroyIcon(transicons[2]) );
if (transicons[3]) VERIFY( ::DestroyIcon(transicons[3]) );
transicons[0] = theApp.LoadIcon(_T("UP0DOWN0"), 16, 16);
transicons[1] = theApp.LoadIcon(_T("UP0DOWN1"), 16, 16);
transicons[2] = theApp.LoadIcon(_T("UP1DOWN0"), 16, 16);
transicons[3] = theApp.LoadIcon(_T("UP1DOWN1"), 16, 16);
ShowTransferStateIcon();
// users state
if (usericon) VERIFY( ::DestroyIcon(usericon) );
usericon = theApp.LoadIcon(_T("StatsClients"), 16, 16);
ShowUserStateIcon();
// traybar icons: no support for changing traybar icons on-the-fly
// if (sourceTrayIcon) VERIFY( ::DestroyIcon(sourceTrayIcon) );
// if (sourceTrayIconGrey) VERIFY( ::DestroyIcon(sourceTrayIconGrey) );
// if (sourceTrayIconLow) VERIFY( ::DestroyIcon(sourceTrayIconLow) );
// sourceTrayIcon = theApp.LoadIcon("TrayConnected", 16, 16);
// sourceTrayIconGrey = theApp.LoadIcon("TrayNotConnected", 16, 16);
// sourceTrayIconLow = theApp.LoadIcon("TrayLowID", 16, 16);
if (imicons[0]) VERIFY( ::DestroyIcon(imicons[0]) );
if (imicons[1]) VERIFY( ::DestroyIcon(imicons[1]) );
if (imicons[2]) VERIFY( ::DestroyIcon(imicons[2]) );
imicons[0] = NULL;
imicons[1] = theApp.LoadIcon(_T("Message"), 16, 16);
imicons[2] = theApp.LoadIcon(_T("MessagePending"), 16, 16);
ShowMessageState(m_iMsgIcon);
}
void CemuleDlg::Localize()
{
CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu)
{
VERIFY( pSysMenu->ModifyMenu(MP_ABOUTBOX, MF_BYCOMMAND | MF_STRING, MP_ABOUTBOX, GetResString(IDS_ABOUTBOX)) );
VERIFY( pSysMenu->ModifyMenu(MP_VERSIONCHECK, MF_BYCOMMAND | MF_STRING, MP_VERSIONCHECK, GetResString(IDS_VERSIONCHECK)) );
switch (thePrefs.GetWindowsVersion()){
case _WINVER_98_:
case _WINVER_95_:
case _WINVER_ME_:
// NOTE: I think the reason why the old version of the following code crashed under Win9X was because
// of the menus were destroyed right after they were added to the system menu. New code should work
// under Win9X too but I can't test it.
break;
default:{
// localize the 'speed control' sub menus by deleting the current menus and creating a new ones.
// remove any already available 'speed control' menus from system menu
UINT uOptMenuPos = pSysMenu->GetMenuItemCount() - 1;
CMenu* pAccelMenu = pSysMenu->GetSubMenu(uOptMenuPos);
if (pAccelMenu)
{
ASSERT( pAccelMenu->m_hMenu == m_SysMenuOptions.m_hMenu );
VERIFY( pSysMenu->RemoveMenu(uOptMenuPos, MF_BYPOSITION) );
pAccelMenu = NULL;
}
// destroy all 'speed control' menus
if (m_menuUploadCtrl)
VERIFY( m_menuUploadCtrl.DestroyMenu() );
if (m_menuDownloadCtrl)
VERIFY( m_menuDownloadCtrl.DestroyMenu() );
if (m_SysMenuOptions)
VERIFY( m_SysMenuOptions.DestroyMenu() );
// create new 'speed control' menus
if (m_SysMenuOptions.CreateMenu())
{
AddSpeedSelectorSys(&m_SysMenuOptions);
pSysMenu->AppendMenu(MF_STRING|MF_POPUP, (UINT_PTR)m_SysMenuOptions.m_hMenu, GetResString(IDS_EM_PREFS));
}
}
}
}
ShowUserStateIcon();
toolbar->Localize();
ShowConnectionState();
ShowTransferRate(true);
ShowUserCount();
CPartFileConvert::Localize();
}
void CemuleDlg::ShowUserStateIcon()
{
statusbar->SetIcon(1,usericon);
}
void CemuleDlg::QuickSpeedOther(UINT nID)
{
switch (nID) {
case MP_QS_PA: thePrefs.SetMaxUpload((uint16)(1));
thePrefs.SetMaxDownload((uint16)(1));
break ;
case MP_QS_UA:
thePrefs.SetMaxUpload((uint16)(thePrefs.GetMaxGraphUploadRate()));
thePrefs.SetMaxDownload((uint16)(thePrefs.GetMaxGraphDownloadRate()));
break ;
}
}
void CemuleDlg::QuickSpeedUpload(UINT nID)
{
switch (nID) {
case MP_QS_U10: thePrefs.SetMaxUpload((uint16)(thePrefs.GetMaxGraphUploadRate()*0.1)); break ;
case MP_QS_U20: thePrefs.SetMaxUpload((uint16)(thePrefs.GetMaxGraphUploadRate()*0.2)); break ;
case MP_QS_U30: thePrefs.SetMaxUpload((uint16)(thePrefs.GetMaxGraphUploadRate()*0.3)); break ;
case MP_QS_U40: thePrefs.SetMaxUpload((uint16)(thePrefs.GetMaxGraphUploadRate()*0.4)); break ;
case MP_QS_U50: thePrefs.SetMaxUpload((uint16)(thePrefs.GetMaxGraphUploadRate()*0.5)); break ;
case MP_QS_U60: thePrefs.SetMaxUpload((uint16)(thePrefs.GetMaxGraphUploadRate()*0.6)); break ;
case MP_QS_U70: thePrefs.SetMaxUpload((uint16)(thePrefs.GetMaxGraphUploadRate()*0.7)); break ;
case MP_QS_U80: thePrefs.SetMaxUpload((uint16)(thePrefs.GetMaxGraphUploadRate()*0.8)); break ;
case MP_QS_U90: thePrefs.SetMaxUpload((uint16)(thePrefs.GetMaxGraphUploadRate()*0.9)); break ;
case MP_QS_U100: thePrefs.SetMaxUpload(thePrefs.GetMaxGraphUploadRate()); break ;
// case MP_QS_UPC: thePrefs.SetMaxUpload(UNLIMITED); break ;
case MP_QS_UP10: thePrefs.SetMaxUpload(GetRecMaxUpload()); break ;
}
}
void CemuleDlg::QuickSpeedDownload(UINT nID)
{
switch (nID) {
case MP_QS_D10: thePrefs.SetMaxDownload((uint16)(thePrefs.GetMaxGraphDownloadRate()*0.1)); break ;
case MP_QS_D20: thePrefs.SetMaxDownload((uint16)(thePrefs.GetMaxGraphDownloadRate()*0.2)); break ;
case MP_QS_D30: thePrefs.SetMaxDownload((uint16)(thePrefs.GetMaxGraphDownloadRate()*0.3)); break ;
case MP_QS_D40: thePrefs.SetMaxDownload((uint16)(thePrefs.GetMaxGraphDownloadRate()*0.4)); break ;
case MP_QS_D50: thePrefs.SetMaxDownload((uint16)(thePrefs.GetMaxGraphDownloadRate()*0.5)); break ;
case MP_QS_D60: thePrefs.SetMaxDownload((uint16)(thePrefs.GetMaxGraphDownloadRate()*0.6)); break ;
case MP_QS_D70: thePrefs.SetMaxDownload((uint16)(thePrefs.GetMaxGraphDownloadRate()*0.7)); break ;
case MP_QS_D80: thePrefs.SetMaxDownload((uint16)(thePrefs.GetMaxGraphDownloadRate()*0.8)); break ;
case MP_QS_D90: thePrefs.SetMaxDownload((uint16)(thePrefs.GetMaxGraphDownloadRate()*0.9)); break ;
case MP_QS_D100: thePrefs.SetMaxDownload(thePrefs.GetMaxGraphDownloadRate()); break ;
// case MP_QS_DC: thePrefs.SetMaxDownload(UNLIMITED); break ;
}
}
// quick-speed changer -- based on xrmb
int CemuleDlg::GetRecMaxUpload() {
if (thePrefs.GetMaxGraphUploadRate()<7) return 0;
if (thePrefs.GetMaxGraphUploadRate()<15) return thePrefs.GetMaxGraphUploadRate()-3;
return (thePrefs.GetMaxGraphUploadRate()-4);
}
BOOL CemuleDlg::OnCommand(WPARAM wParam, LPARAM lParam)
{
switch(wParam)
{
case IDC_TOOLBARBUTTON + 0:
OnBnClickedButton2();
break;
case MP_HM_KAD:
case IDC_TOOLBARBUTTON +1:
SetActiveDialog(kademliawnd);
break;
case IDC_TOOLBARBUTTON +12: //VeryCD
if (thePrefs.GetBrowser())
SetActiveDialog(ChanblardWnd);
break;
case IDC_TOOLBARBUTTON + 2:
case MP_HM_SRVR:
SetActiveDialog(serverwnd);
break;
case IDC_TOOLBARBUTTON + 3:
case MP_HM_TRANSFER:
SetActiveDialog(transferwnd);
break;
case IDC_TOOLBARBUTTON + 4:
case MP_HM_SEARCH:
SetActiveDialog(searchwnd);
break;
case IDC_TOOLBARBUTTON + 5:
case MP_HM_FILES:
SetActiveDialog(sharedfileswnd);
break;
case IDC_TOOLBARBUTTON + 6:
case MP_HM_MSGS:
SetActiveDialog(chatwnd);
break;
case IDC_TOOLBARBUTTON + 7:
case MP_HM_IRC:
SetActiveDialog(ircwnd);
break;
case IDC_TOOLBARBUTTON + 8:
case MP_HM_STATS:
SetActiveDialog(statisticswnd);
break;
case IDC_TOOLBARBUTTON + 9:
case MP_HM_PREFS:
toolbar->CheckButton(IDC_TOOLBARBUTTON+9,TRUE);
preferenceswnd->DoModal();
toolbar->CheckButton(IDC_TOOLBARBUTTON+9,FALSE);
break;
case IDC_TOOLBARBUTTON + 10:
ShowToolPopup(true);
break;
case MP_HM_OPENINC:
ShellExecute(NULL, _T("open"), thePrefs.GetIncomingDir(),NULL, NULL, SW_SHOW);
break;
case MP_HM_HELP:
case IDC_TOOLBARBUTTON + 11:
wParam = ID_HELP;
break;
case MP_HM_CON:
OnBnClickedButton2();
break;
case MP_HM_EXIT:
OnClose();
break;
case MP_HM_LINK1: // MOD: dont remove!
ShellExecute(NULL, NULL, thePrefs.GetHomepageBaseURL(), NULL, thePrefs.GetAppDir(), SW_SHOWDEFAULT);
break;
case MP_HM_LINK2:
//VeryCD
if (thePrefs.GetBrowser())
theApp.emuledlg->ChanblardWnd->browser.Navigate("http://faq.verycd.com/", NULL, NULL, NULL, NULL);
else
ShellExecute(NULL, NULL, "http://faq.verycd.com", NULL, thePrefs.GetAppDir(), SW_SHOWDEFAULT);
break;
case MP_HM_LINK3: {
CString theUrl;
theUrl.Format("http://emule.verycd.com/?version=%i&language=%i",theApp.m_uCurVersionCheck,thePrefs.GetLanguageID());
ShellExecute(NULL, NULL, theUrl, NULL, thePrefs.GetAppDir(), SW_SHOWDEFAULT);
break;
}
case MP_WEBSVC_EDIT:
theWebServices.Edit();
break;
case MP_HM_CONVERTPF:
CPartFileConvert::ShowGUI();
break;
case MP_HM_SCHEDONOFF:
thePrefs.SetSchedulerEnabled(!thePrefs.IsSchedulerEnabled());
theApp.scheduler->Check(true);
break;
case MP_HM_1STSWIZARD:
e
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -