Example #1
0
INT_PTR
pShowMessageBox(
	LPCTSTR szMessage, 
	LPCTSTR szTitle,
	HWND hWnd,
	LPCTSTR szDontShowOptionValueName,
	INT_PTR iDefaultButton,
	INT_PTR iDefaultResponse)
{
	CConfirmDlg dlg;

	BOOL fDontShow = FALSE;
	BOOL fSuccess = pGetAppConfigValue(szDontShowOptionValueName,&fDontShow);
	if (fSuccess && fDontShow) {
		return iDefaultResponse;
	}

	dlg.SetMessage(szMessage);
	dlg.SetTitle(szTitle);
	dlg.SetDefaultButton(iDefaultButton);

	INT_PTR iResult = dlg.DoModal();
	fDontShow = dlg.GetDontShow();
	if (fDontShow) {
		fSuccess = pSetAppConfigValue(szDontShowOptionValueName,(BOOL)TRUE);
	}

	return iResult;
}
Example #2
0
LRESULT 
CAppOptGeneralPage::OnInitDialog(HWND hwndFocus, LPARAM lParam)
{
	BOOL fSuccess = FALSE;

	m_wndUILangList.Attach(GetDlgItem(IDC_UILANG));

	CString str;
	INT nIndex = 0;

	str.LoadString(IDS_LANG_AUTO);
	nIndex = m_wndUILangList.AddString(str);
	m_wndUILangList.SetItemData(nIndex, 0);

	DWORD dwConfigLangID;
	m_wConfigLangID = 0;
	fSuccess = pGetAppConfigValue(_T("Language"),&dwConfigLangID);
	if (fSuccess) {
		m_wConfigLangID = (LANGID) dwConfigLangID;
	}

	m_wndUILangList.SetCurSel(0);
	pLoadAvailableLanguageList(m_wndUILangList, m_wConfigLangID);

	m_wndAlertDisconnect.Attach(GetDlgItem(IDC_ALERT_DISCONNECT));
	m_wndAlertReconnect.Attach(GetDlgItem(IDC_ALERT_RECONNECT));
//	m_wndRemountOnBoot.Attach(GetDlgItem(IDC_REMOUNT_ON_BOOT));

	BOOL fUseDisconnectAlert = TRUE;
	BOOL fUseReconnectAlert = TRUE;

	fSuccess = pGetAppConfigValue(_T("UseDisconnectAlert"), &fUseDisconnectAlert);
	if (fSuccess && !fUseDisconnectAlert) {
		m_wndAlertDisconnect.SetCheck(BST_UNCHECKED);
	} else {
		m_wndAlertDisconnect.SetCheck(BST_CHECKED);
	}

	fSuccess = pGetAppConfigValue(_T("UseReconnectAlert"), &fUseReconnectAlert);
	if (fSuccess && !fUseReconnectAlert) {
		m_wndAlertReconnect.SetCheck(BST_UNCHECKED);
	} else {
		m_wndAlertReconnect.SetCheck(BST_CHECKED);
	}

	return TRUE;
}
Example #3
0
static LANGID 
pGetPreferredLangID(LPCTSTR lpszCmdLine)
{
	LANGID wPref = 0;
	wPref = pGetCmdLineLangID(lpszCmdLine);
	if (0 == wPref) {
		DWORD dwConfigLangID = 0;
		BOOL fSuccess = pGetAppConfigValue(_T("Language"), &dwConfigLangID);
		if (fSuccess) {
			wPref = (LANGID) dwConfigLangID;
		}
	}
	return wPref;
}
Example #4
0
static VOID 
pLoadAppOptValues(DWORD nDefs, PAPP_OPT_VALUE_DEF pOptValueDef)
{
	for (DWORD i = 0; i < nDefs; ++i) {

		PAPP_OPT_VALUE_DEF p = &pOptValueDef[i];

		if (APP_OPT_VALUE_DEF::AOV_BOOL == p->ovType) {

			BOOL fSuccess = pGetAppConfigValue(
				p->szValueName, 
				&p->CurrentValue.fValue);

			if (!fSuccess) {
				p->CurrentValue.fValue = p->DefaultValue.fValue;
			}

			p->NewValue.fValue = p->CurrentValue.fValue;

		} else if (APP_OPT_VALUE_DEF::AOV_DWORD == p->ovType) {

			BOOL fSuccess = pGetAppConfigValue(
				p->szValueName, 
				&p->CurrentValue.dwValue);

			if (!fSuccess) {
				p->CurrentValue.dwValue = p->DefaultValue.dwValue;
			}

			p->NewValue.dwValue = p->CurrentValue.dwValue;

		} else {
			// ignore invalid ones
			continue;
		}
	}
}
Example #5
0
BOOL
pSetDeviceStatusMenuItem(HMENU hMenu, UINT nStringID)
{
	BOOL fSuccess;
	CMenuHandle menu = hMenu;
	BOOL fShow = TRUE;
	pGetAppConfigValue(_T("ShowDeviceStatusText"), &fShow);
	if (!fShow) {
		return TRUE;
	}

	CMenuItemInfo mii;
	mii.fMask = MIIM_STATE | MIIM_ID | MIIM_FTYPE | MIIM_DATA;
	mii.wID = 100; // status text
	mii.fState = MFS_DISABLED;
	mii.fType = MFT_OWNERDRAW;
	mii.dwItemData = nStringID;
	// mii.dwTypeData = (LPTSTR)nStringID;// (LPTSTR)(LPCTSTR)strStatus;
	fSuccess = menu.InsertMenuItem(0xFFFF, TRUE, &mii);
	ATLASSERT(fSuccess);

	return fSuccess;
}
Example #6
0
void 
CMainFrame::pUpdateMenuItems()
{
	BOOL fSuccess(FALSE);

	if (!ndas::UpdateDeviceList())
	{
		// warning device list update failed.
	}

	if (!ndas::UpdateLogicalDeviceList())
	{
		// warning logical device list update failed.
	}

	m_taskbarMenu.ClearItemStringData();

	BOOL showText = TRUE;
	pGetAppConfigValue(_T("ShowDeviceStatusText"), &showText);
	m_taskbarMenu.ShowDeviceStatusText(showText);

	CMenuHandle taskBarRootMenu;
	taskBarRootMenu.LoadMenu(IDR_TASKBAR);

	if (pGetAppConfigBOOL(_T("ShowUnmountAll"), FALSE)) 
	{
		ndas::LogicalDeviceConstIterator itr = std::find_if(
			m_NdasLogDevices.begin(),
			m_NdasLogDevices.end(),
			ndas::LogicalDeviceMounted());

		if (m_NdasLogDevices.end() != itr)
		{
			// There is a mounted logical device 
			taskBarRootMenu.EnableMenuItem(
				IDR_UNMOUNT_ALL, 
				MF_BYCOMMAND | MFS_ENABLED);
		}
		else
		{
			// There is no mounted logical device
			taskBarRootMenu.EnableMenuItem(
				IDR_UNMOUNT_ALL, 
				MF_BYCOMMAND | MFS_DISABLED);
		}

		// do not remove menu
	}
	else 
	{
		// otherwise remove menu
		taskBarRootMenu.RemoveMenu(IDR_UNMOUNT_ALL, MF_BYCOMMAND);
	}

	CMenuHandle taskBarMenu = ::GetSubMenu(taskBarRootMenu,0);

	MENUINFO mi = {0};
	mi.cbSize = sizeof(MENUINFO);
	mi.fMask = MIM_STYLE;
	fSuccess = taskBarMenu.GetMenuInfo(&mi);
	ATLASSERT(fSuccess);

	mi.cbSize = sizeof(MENUINFO);
	mi.fMask = MIM_STYLE | MIM_APPLYTOSUBMENUS;
	mi.dwStyle |= MNS_NOTIFYBYPOS | MNS_CHECKORBMP;
	fSuccess = taskBarMenu.SetMenuInfo(&mi);
	ATLASSERT(fSuccess);

	if (m_NdasDevices.empty()) 
	{
		CMenuItemInfo mii;
		CString strMenuText = MAKEINTRESOURCE(IDS_NO_DEVICE);
		mii.fMask = MIIM_ID | MIIM_STRING | MIIM_STATE;
		mii.dwTypeData = (LPTSTR)((LPCTSTR)strMenuText);
		mii.wID = IDR_NDAS_DEVICE_NONE;
		mii.fState = MFS_DISABLED | MFS_UNHILITE;

		fSuccess = taskBarMenu.InsertMenuItem(0, TRUE, &mii);
		ATLASSERT(fSuccess);
	} 
	else 
	{
		std::for_each(
			m_NdasDevices.begin(),
			m_NdasDevices.end(), 
			NdasDeviceMenuItemCreator(m_taskbarMenu, taskBarMenu));
	}

	CMenu existingTaskbarMenu = m_taskbarIcon.m_hMenu;
	m_taskbarIcon.m_hMenu = taskBarRootMenu;
}
Example #7
0
VOID 
CAboutDialog::OnCheckUpdate(UINT /* wNotifyCode */, int /* wID */, HWND /* hWndCtl */)
{
	NDUPDATE_SYSTEM_INFO sysInfo = {0};
	NDUPDATE_UPDATE_INFO updateInfo = {0};
	sysInfo.dwLanguageSet = 0;
	sysInfo.dwPlatform = NDAS_PLATFORM_WIN2K;
	sysInfo.dwVendor = 0;

	VS_FIXEDFILEINFO vffi = {0};
	BOOL fSuccess = pGetModuleVerFileInfo(vffi);
	if (!fSuccess) {
		//
		// This is a fallback
		//
		ATLASSERT(FALSE);
		sysInfo.ProductVersion.wMajor = 3;
		sysInfo.ProductVersion.wMinor = 10;
		sysInfo.ProductVersion.wBuild = 0;
		sysInfo.ProductVersion.wPrivate = 0;
	} else {
		sysInfo.ProductVersion.wMajor = HIWORD(vffi.dwProductVersionMS);
		sysInfo.ProductVersion.wMinor = LOWORD(vffi.dwProductVersionMS);
		sysInfo.ProductVersion.wBuild = HIWORD(vffi.dwProductVersionLS);
		sysInfo.ProductVersion.wPrivate = LOWORD(vffi.dwProductVersionLS);
	}

	TCHAR szUpdateBaseURL[NDUPDATE_MAX_URL] = {0};

	fSuccess = pGetAppConfigValue(
		_T("UpdateURL"), 
		szUpdateBaseURL, 
		NDUPDATE_MAX_URL);

	if (!fSuccess) {
		HRESULT hr = ::StringCchCopy(
			szUpdateBaseURL, 
			NDUPDATE_MAX_URL, 
			_T("http://updates.ximeta.com/update/"));
		ATLASSERT(SUCCEEDED(hr));
	}

	AutoHModule hUpdateDLL = ::LoadLibrary(_T("ndupdate.dll"));
	if (NULL == (HMODULE)hUpdateDLL) {
		return;
	}

	typedef BOOL (WINAPI* NDUPDATE_NdasUpdateDoUpdate)(HWND, LPCTSTR, PNDUPDATE_SYSTEM_INFO);
	NDUPDATE_NdasUpdateDoUpdate pfnDoUpdate = (NDUPDATE_NdasUpdateDoUpdate)
		::GetProcAddress(hUpdateDLL, "NdasUpdateDoUpdate");

	LCID lcid = ::GetThreadLocale();
	fSuccess = ::SetThreadLocale(MAKELCID(_CurrentUILangID,SORT_DEFAULT));
	ATLASSERT(fSuccess);

	fSuccess = pfnDoUpdate(m_hWnd, szUpdateBaseURL, &sysInfo);
	if (!fSuccess) {
		ATLTRACE(_T("Update function failed: %08X"), ::GetLastError());
	}

	fSuccess = ::SetThreadLocale(lcid);
	ATLASSERT(fSuccess);
}
Example #8
0
// 0 to automatically advance to the next page
// -1 to prevent the page from changing
INT 
CSelectDiskPage::OnWizardNext()
{
	ATLASSERT( m_wndListBind.GetItemCount() == (int)m_pWizData->m_nDiskCount);
	ATLASSERT( 
		NMT_AGGREGATE == m_pWizData->m_nBindType || 
		NMT_RAID0 == m_pWizData->m_nBindType || 
		NMT_RAID1 == m_pWizData->m_nBindType || 
		NMT_RAID4 == m_pWizData->m_nBindType);

	NBUnitDevicePtrList listBind;
	unsigned int i;
	UINT32 BindResult;
	WTL::CString strMsg;

	// warning message
	{
		WTL::CString strTitle;
		strTitle.LoadString(IDS_APPLICATION);
		strMsg.LoadString(IDS_WARNING_BIND);
		int id = MessageBox(
			strMsg,
			strTitle,
			MB_YESNO|MB_ICONEXCLAMATION
			);
		if(IDYES != id)
			return -1;
	}

	m_pWizData->listUnitDevicesBind = m_wndListBind.GetDiskObjectList();

	NDASCOMM_CONNECTION_INFO *pConnectionInfo;
	pConnectionInfo = new NDASCOMM_CONNECTION_INFO[m_pWizData->m_nDiskCount];
	ZeroMemory(pConnectionInfo, sizeof(NDASCOMM_CONNECTION_INFO) * m_pWizData->m_nDiskCount);

	listBind = m_wndListBind.GetDiskObjectList();
	WTL::CString strTitle;
	CNBUnitDevice *UnitDiskObject;
	NBUnitDevicePtrList::const_iterator itr;
	
	for (i = 0, itr = listBind.begin(); itr != listBind.end(); ++itr, i++ )
	{
		UnitDiskObject = *itr;
		
		if(!UnitDiskObject->InitConnectionInfo(&pConnectionInfo[i], TRUE))
//		if(!((*itr)->GetAccessMask() & GENERIC_WRITE))
		{
			// "%1!s! does not have a write access privilege. You need to set write key to this NDAS device before this action."
			strMsg.FormatMessage(IDS_ERROR_NOT_REGISTERD_WRITE_FMT,
				(*itr)->GetName()
				);
			strTitle.LoadString(IDS_APPLICATION);
			MessageBox(
				strMsg,
				strTitle,
				MB_OK|MB_ICONERROR
				);

			delete [] pConnectionInfo;
			return -1;
		}
	}

	DWORD dwUserSpace = 0;
	if(!pGetAppConfigValue(_T("UserSpace"), &dwUserSpace))
	{
		dwUserSpace = 0;
	}


	AutoCursor l_auto_cursor(IDC_WAIT);
	m_pWizData->m_BindResult = NdasOpBind(
		m_pWizData->m_nDiskCount, pConnectionInfo, m_pWizData->m_nBindType, dwUserSpace);
	l_auto_cursor.Release();


	if(m_pWizData->m_BindResult != m_pWizData->m_nDiskCount) // error
		m_pWizData->dwBindLastError = ::GetLastError();		

	CNdasHIXChangeNotify HixChangeNotify(pGetNdasHostGuid());
	BOOL bResults = HixChangeNotify.Initialize();
	if(bResults)
	{
		for (i = 0; i < m_pWizData->m_nDiskCount; i++ )
		{
			NDAS_UNITDEVICE_ID unitDeviceId;
			CopyMemory(unitDeviceId.DeviceId.Node, pConnectionInfo[i].AddressLPX, 
				sizeof(unitDeviceId.DeviceId.Node));
			unitDeviceId.UnitNo = pConnectionInfo[i].UnitNo;
			HixChangeNotify.Notify(unitDeviceId);
		}
	}

	delete [] pConnectionInfo;

	return 0;
}
Example #9
0
// 0 to automatically advance to the next page
// -1 to prevent the page from changing
INT 
CSelectDiskPage::OnWizardNext()
{
	ATLASSERT( m_wndListBind.GetItemCount() == (int)m_pWizData->m_nDiskCount);
	ATLASSERT( 
		NMT_AGGREGATE == m_pWizData->m_nBindType || 
		NMT_RAID0 == m_pWizData->m_nBindType || 
		NMT_RAID1R3 == m_pWizData->m_nBindType || 
		NMT_RAID4R3 == m_pWizData->m_nBindType ||
		NMT_RAID5 == m_pWizData->m_nBindType
		);

	NBUnitDevicePtrList listBind;
	unsigned int i;
	CString strMsg;

	// Warning message if disk is over 2T.
	{
		UINT64 nSize = pGetBoundDiskSize(
			m_pWizData->m_nBindType, 
			m_pWizData->m_nDiskCount, 
			m_wndListBind.GetDiskObjectList());
		if (nSize >= 2LL * 1024 * 1024 * 1024 * 1024) { // 2 Tera.
			CString strTitle;
			strTitle.LoadString(IDS_APPLICATION);
			strMsg.LoadString(IDS_WARNING_BIND_SIZE);
			int id = MessageBox(
				strMsg,
				strTitle,
				MB_YESNO|MB_ICONEXCLAMATION
				);
			if(IDYES != id)
				return -1;
		}
			
	}
	// warning message
	{
		CString strTitle;
		strTitle.LoadString(IDS_APPLICATION);
		strMsg.LoadString(IDS_WARNING_BIND);
		int id = MessageBox(
			strMsg,
			strTitle,
			MB_YESNO|MB_ICONEXCLAMATION
			);
		if(IDYES != id)
			return -1;
	}

	m_pWizData->listUnitDevicesBind = m_wndListBind.GetDiskObjectList();

	NDASCOMM_CONNECTION_INFO *pConnectionInfo;
	pConnectionInfo = new NDASCOMM_CONNECTION_INFO[m_pWizData->m_nDiskCount];
	ZeroMemory(pConnectionInfo, sizeof(NDASCOMM_CONNECTION_INFO) * m_pWizData->m_nDiskCount);

	listBind = m_wndListBind.GetDiskObjectList();
	CString strTitle;
	CNBUnitDevice *UnitDiskObject;
	NBUnitDevicePtrList::const_iterator itr;
	
	for (i = 0, itr = listBind.begin(); itr != listBind.end(); ++itr, i++ )
	{
		UnitDiskObject = *itr;
		
		if(!UnitDiskObject->InitConnectionInfo(&pConnectionInfo[i], TRUE))
//		if(!((*itr)->GetAccessMask() & GENERIC_WRITE))
		{
			// "%1!s! does not have a write access privilege. You need to set write key to this NDAS device before this action."
			strMsg.FormatMessage(IDS_ERROR_NOT_REGISTERD_WRITE_FMT,
				(*itr)->GetName()
				);
			strTitle.LoadString(IDS_APPLICATION);
			MessageBox(
				strMsg,
				strTitle,
				MB_OK|MB_ICONERROR);

			delete [] pConnectionInfo;
			return -1;
		}
	}

	DWORD dwUserSpace = 0;
	if(!pGetAppConfigValue(_T("UserSpace"), &dwUserSpace))
	{
		dwUserSpace = 0;
	}


	AutoCursor l_auto_cursor(IDC_WAIT);
	m_pWizData->m_BindResult = NdasOpBind(
		m_pWizData->m_nDiskCount, pConnectionInfo, m_pWizData->m_nBindType, dwUserSpace);
	l_auto_cursor.Release();


	if(m_pWizData->m_BindResult != m_pWizData->m_nDiskCount) // error
		m_pWizData->dwBindLastError = ::GetLastError();		

	LPCGUID hostGuid = pGetNdasHostGuid();

	for (i = 0; i < m_pWizData->m_nDiskCount; i++ )
	{
		BOOL success = NdasCommNotifyUnitDeviceChange(
			NDAS_DIC_NDAS_ID,
			pConnectionInfo[i].Address.NdasId.Id,
			pConnectionInfo[i].UnitNo,
			hostGuid);

		if (!success)
		{
			ATLTRACE("NdasCommNotifyUnitDeviceChange failed, error=0x%X\n",
				GetLastError());
		}
	}

	delete [] pConnectionInfo;

	return 0;
}