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

📄 resorgoptions.cpp

📁 一个vc中管理资源文件ID的插件
💻 CPP
📖 第 1 页 / 共 2 页
字号:
{
	// 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 + -