📄 resorgoptions.cpp
字号:
{
// For safety, don't accept a new URL if it is blank
// since we should NEVER lose the homepage URL
// (the others don't do this so we can disable them
// if need be)
if ( (sWebURL != m_sWebURL) && !sWebURL.IsEmpty())
{
m_sWebURL = sWebURL;
AfxGetApp()->WriteProfileString(OPTIONS,
OPTION_WEB_URL,
m_sWebURL);
return TRUE;
}
return FALSE;
}
BOOL CResOrgOptions::SetFaqURL(const CString& sFaqURL)
{
if (sFaqURL != m_sFaqURL)
{
m_sFaqURL = sFaqURL;
AfxGetApp()->WriteProfileString(OPTIONS,
OPTION_FAQ_URL,
m_sFaqURL);
return TRUE;
}
return FALSE;
}
BOOL CResOrgOptions::SetDiscussionBoardURL(const CString& sDiscussionBoardURL)
{
if (sDiscussionBoardURL != m_sDiscussionBoardURL)
{
m_sDiscussionBoardURL = sDiscussionBoardURL;
AfxGetApp()->WriteProfileString(OPTIONS,
OPTION_DISCUSSIONS_URL,
m_sDiscussionBoardURL);
return TRUE;
}
return FALSE;
}
BOOL CResOrgOptions::SetKnownBugsURL(const CString& sKnownBugsURL)
{
if (sKnownBugsURL != m_sKnownBugsURL)
{
m_sKnownBugsURL = sKnownBugsURL;
AfxGetApp()->WriteProfileString(OPTIONS,
OPTION_BUGS_URL,
m_sKnownBugsURL);
return TRUE;
}
return FALSE;
}
BOOL CResOrgOptions::SetMailingListURL(const CString& sMailingListURL)
{
if (sMailingListURL != m_sMailingListURL)
{
m_sMailingListURL = sMailingListURL;
AfxGetApp()->WriteProfileString(OPTIONS,
OPTION_MAILING_LIST_URL,
m_sMailingListURL);
return TRUE;
}
return FALSE;
}
BOOL CResOrgOptions::AskAboutLoadingAddIn(BOOL bAsk)
{
m_bAskAboutLoading = bAsk;
AfxGetApp()->WriteProfileInt( OPTIONS,
OPTION_ADDIN_LOAD_PROMPT,
m_bAskAboutLoading);
return TRUE;
}
BOOL CResOrgOptions::EnableMailingListPrompt(BOOL bEnable)
{
m_bAskAboutMailingList = bEnable;
AfxGetApp()->WriteProfileInt( OPTIONS,
OPTION_MAILING_LIST_PROMPT,
m_bAskAboutMailingList);
return TRUE;
}
BOOL CResOrgOptions::IsVersionCheckDue(void) const
{
BOOL bDue = FALSE;
if (m_bEnableVersionChecking)
{
if (m_nVersionCheckInterval > 0)
{
CTime timeNow = CTime::GetCurrentTime();
CTimeSpan span(m_nVersionCheckInterval, 0, 0, 0);
bDue = (timeNow >= m_timeLastUpdateCheck + span);
}
else
{
bDue = TRUE; // Interval = 0 => check every time we startup
}
}
return bDue;
}
BOOL CResOrgOptions::DoVersionCheck(void)
{
if (IsVersionCheckDue() )
{
StartVersionCheck( TRUE,
AfxGetMainWnd(),
WM_COMMAND,
ID_RESORG_VERSION_CHECK);
return TRUE;
}
return FALSE;
}
CResOrgVersionCheck* CResOrgOptions::StartVersionCheck( BOOL bDisableDialupPrompt,
CWnd* pNotifyTarget /*= NULL*/,
UINT uMsg /*= 0*/,
UINT uID /*= 0*/)
{
if (NULL == m_pVersionChecker)
{
m_pVersionChecker = new CResOrgVersionCheck(bDisableDialupPrompt);
ASSERT_VALID(m_pVersionChecker);
}
if ( (NULL != m_pVersionChecker) && !m_pVersionChecker->IsDownloading() )
{
m_pVersionChecker->SetNotifyTarget( pNotifyTarget,
uMsg,
uID);
CString sURL = Options.GetWebURL() + _T("/version.txt");
m_pVersionChecker->StartDownload(sURL);
}
return m_pVersionChecker;
}
BOOL CResOrgOptions::IsVersionCheckRunning(void) const
{
if ( (NULL != m_pVersionChecker) && m_pVersionChecker->IsDownloading() )
{
return TRUE;
}
return FALSE;
}
DWORD CResOrgOptions::OnVersionCheckCompleted(BOOL bPromptAlways /*= FALSE*/)
{
DWORD dwErrorCode = ERROR_INTERNET_CANNOT_CONNECT;
if (NULL != m_pVersionChecker)
{
dwErrorCode = m_pVersionChecker->GetErrorCode();
if (ERROR_SUCCESS == dwErrorCode)
{
m_timeLastUpdateCheck = CTime::GetCurrentTime();
AfxGetApp()->WriteProfileInt( OPTIONS,
OPTION_LAST_UPDATE_CHECK,
(int)m_timeLastUpdateCheck.GetTime());
// Update website URLs
UpdateURLs();
CNGModuleVersion ver;
ver.GetFileVersionInfo();
CString sCurrentVer = ver.GetValue( _T("FileVersion") );
CString sSection = _T("ResOrg");
BOOL bNewVersion = FALSE;
bNewVersion = m_pVersionChecker->IsNewVersion( sSection,
sCurrentVer);
#ifdef _RESORG_EXPIRY_DATE
if (!bNewVersion)
{
// If no newer released versions are available, check for betas
sSection = _T("ResOrg Beta");
bNewVersion = m_pVersionChecker->IsNewVersion( sSection,
sCurrentVer);
}
#endif
if (bNewVersion)
{
CString sVersion = m_pVersionChecker->GetValue( sSection,
_T("Version") );
CString sDescription = m_pVersionChecker->GetValue( sSection,
_T("Description") );
CNGMessageBox dlg;
dlg.FormatMsgEx(MAKEINTRESOURCE(IDS_RESORG_UPDATED),
_T("RTF"),
sVersion,
sDescription);
dlg.SetRtf();
dlg.SetStandardIcon(IDI_INFORMATION);
dlg.AddButton(IDYES, FALSE, FALSE, _T("&Yes") );
dlg.AddButton(IDNO, TRUE, TRUE, _T("&No") );
if (IDYES == dlg.DoModal())
{
::ShellExecute( GetDesktopWindow(),
_T("open"),
GetWebURL() + _T("/downloads.html"),
NULL,
NULL,
SW_SHOWNORMAL);
}
}
else if (bPromptAlways)
{
AfxMessageBox( _T("The latest version of ResOrg is already installed"),
MB_OK | MB_ICONINFORMATION);
}
}
delete m_pVersionChecker;
m_pVersionChecker = NULL;
}
return dwErrorCode;
}
BOOL CResOrgOptions::OnExit(void)
{
// If a version check is running, Wait until it finishes
// before exiting (by now the main window has gone)
while (IsVersionCheckRunning()) { Sleep(100); }
return TRUE;
}
/////////////////////////////////////////////////////////////////////////////
// Implementation
void CResOrgOptions::OnCmdResOrgUpdateCheckCompleted(void)
{
OnVersionCheckCompleted();
}
BOOL CResOrgOptions::UpdateURLs(void)
{
if (NULL != m_pVersionChecker)
{
CString sSection = _T("ResOrg");
CString sWebURL = m_pVersionChecker->GetValue( sSection,
_T("WebSite") );
CString sFaqURL = m_pVersionChecker->GetValue( sSection,
_T("FAQ") );
CString sDiscussionBoardURL = m_pVersionChecker->GetValue( sSection,
_T("DiscussionBoard") );
CString sKnownBugsURL = m_pVersionChecker->GetValue( sSection,
_T("KnownBugs") );
CString sMailingListURL = m_pVersionChecker->GetValue( sSection,
_T("MailingList") );
if (!sWebURL.IsEmpty())
{
// Only set the website URL if we get one
// (I'm being extra careful with this one!)
SetWebURL(sWebURL);
}
SetFaqURL(sFaqURL);
SetDiscussionBoardURL(sDiscussionBoardURL);
SetKnownBugsURL(sKnownBugsURL);
SetMailingListURL(sMailingListURL);
return TRUE;
}
return FALSE;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -