Esempio n. 1
0
void 
CMainFrame::OnNdasLogDeviceDisconnected(
	NDAS_LOGICALDEVICE_ID logDevId)
{
	ATLTRACE("Logical Device(%d) disconnected.\n", logDevId);
	_UpdateMenuItems();

	CString szDevices = MAKEINTRESOURCE(IDS_DEVICE_UNKNOWN);

	BOOL fUseDisconnectAlert = pGetAppConfigBOOL(_T("UseDisconnectAlert"), TRUE);
	if (!fUseDisconnectAlert) 
	{
		return;
	}

	pLogicalDeviceString(szDevices, logDevId);

	CString strMessage;
	strMessage.FormatMessage(IDS_BT_DISCONNECTED_INFO, szDevices);

	m_taskbarIcon.ShowBalloonToolTip(
		static_cast<LPCTSTR>(strMessage), 
		IDS_BT_DISCONNECTED_INFO_TITLE, 
		NIIF_ERROR, 
		5000);
}
Esempio n. 2
0
void 
CMainFrame::OnNdasLogDeviceAlarmed(
	NDAS_LOGICALDEVICE_ID logDevId,
	ULONG AdapterStatus)
{
	ATLTRACE("Logical Device(%d) is alarmed(%08lx).\n", logDevId, AdapterStatus);

	_UpdateMenuItems();

	// Default String
	CString szDevices = MAKEINTRESOURCE(IDS_DEVICE_UNKNOWN);

	pLogicalDeviceString(szDevices, logDevId);

	BOOL fUseEmergencyAlert = pGetAppConfigBOOL(_T("UseReconnectAlert"), TRUE);
	if (!fUseEmergencyAlert) 
	{
		return;
	}

	CString strTitle = MAKEINTRESOURCE(IDS_BT_ALARMED_INFO_TITLE);
	UINT nFormatID;

	if(NDAS_DEVICE_ALARM_RECONNECTING == AdapterStatus)
	{
		nFormatID = IDS_BT_ALARMED_RECONNECTING;
	}
	else if(NDAS_DEVICE_ALARM_RECONNECTED == AdapterStatus)
	{
		nFormatID = IDS_BT_ALARMED_RECONNECTED;
	}
	else if(NDAS_DEVICE_ALARM_MEMBER_FAULT == AdapterStatus)
	{
		nFormatID = IDS_BT_ALARMED_MEMBER_FAULT;
	}
	else if(NDAS_DEVICE_ALARM_RECOVERING == AdapterStatus)
	{
		nFormatID = IDS_BT_ALARMED_RECOVERING;
	}
	else if(NDAS_DEVICE_ALARM_RECOVERRED == AdapterStatus)
	{
		nFormatID = IDS_BT_ALARMED_RECOVERRED;
	}
	else // if(NDAS_DEVICE_ALARM_NORMAL == AdapterStatus)
	{
//		strInfoFmt.LoadString(IDS_BT_NORMAL_INFO);
		return;
	}

	CString strMessage;
	strMessage.FormatMessage(nFormatID, szDevices);

	m_taskbarIcon.ShowBalloonToolTip(
		static_cast<LPCTSTR>(strMessage), 
		IDS_BT_ALARMED_INFO_TITLE, 
		NIIF_WARNING, 
		5000);
}
Esempio n. 3
0
void 
CMainFrame::OnCmdAppOptions(UINT /* wNotifyCode */, int /* wID */, HWND /* hWndCtl */)
{
	CAppOptPropSheet psh;
	CString strTitle = MAKEINTRESOURCE(IDS_OPTIONDLG_TITLE);
	psh.SetTitle(strTitle);
	psh.DoModal(m_hWnd);

	_UpdateMenuItems();
}
Esempio n. 4
0
void 
CMainFrame::OnCmdRefreshStatus(UINT /* wNotifyCode */, int /* wID */, HWND /* hWndCtl */)
{
	BOOL fSuccess;
	fSuccess = _UpdateDeviceList();
	if (!fSuccess) 
	{
		ErrorMessageBox(IDS_ERROR_UPDATE_DEVICE_LIST);
	}
	_UpdateMenuItems();
}
Esempio n. 5
0
void
CMainFrame::OnTaskbarMenu(UINT)
{
	// if there are any pop-up windows, do not handle this!

	HWND hWnd = ::GetLastActivePopup(m_hWnd);
	if (hWnd != m_hWnd)
	{
		ATLTRACE("Active popup HWND %x exists.\n", hWnd);
		::FlashWindow(hWnd, TRUE);
		::SwitchToThisWindow(hWnd, FALSE);
		return;
	}

	if (m_wndImportDlg.m_hWnd)
	{
		m_wndImportDlg.FlashWindow(TRUE);
		::SwitchToThisWindow(m_wndImportDlg, FALSE);
		return;
	}

	// We will save the position now as updating the list 
	// from the service may take a while and the user may change
	// the mouse position.

	POINT pt;
	::GetCursorPos(&pt);      

	BOOL updated = FALSE;
	if (m_fPendingUpdateDeviceList) 
	{
		updated = _UpdateDeviceList();
		m_fPendingUpdateDeviceList = FALSE;
	}

	if (m_fPendingUpdateMenuItem) 
	{
		_UpdateMenuItems();
		m_fPendingUpdateMenuItem = FALSE;
	}

	if (updated)
	{
		_ChangeTaskBarIcon(true);
	}

	HMENU hSubMenu = ::GetSubMenu(m_taskbarIcon.m_hMenu, 0); 
	ATLASSERT(::IsMenu(hSubMenu));
	::SetForegroundWindow(m_taskbarIcon.m_nid.hWnd);
	BOOL ret = ::TrackPopupMenu(hSubMenu, 0, pt.x, pt.y, 0, m_taskbarIcon.m_nid.hWnd, NULL);
	ATLTRACE("TrackPopupMenu returns %d : Error %d\n", ret, ::GetLastError());
	::PostMessage(m_taskbarIcon.m_nid.hWnd, WM_NULL, 0,0); // Fixes Win95 bug
}
Esempio n. 6
0
LRESULT 
CMainFrame::OnCreate(LPCREATESTRUCT lParam)
{
#ifdef NDASMGMT_USE_QUERYCANCELAUTOPLAY
	WM_QUERYCANCELAUTOPLAY = ::RegisterWindowMessage(_T("QueryCancelAutoplay"));
	ATLASSERT(WM_QUERYCANCELAUTOPLAY);
#endif

	int cxSmall = ::GetSystemMetrics(SM_CXSMICON);
	int cySmall = ::GetSystemMetrics(SM_CYSMICON);
	int cxLarge = ::GetSystemMetrics(SM_CXICON);
	int cyLarge = ::GetSystemMetrics(SM_CYICON);

	HICON hAppIcon = AtlLoadIconImage(
		IDR_MAINFRAME, LR_DEFAULTCOLOR | LR_DEFAULTSIZE, cxLarge, cyLarge);

	HICON hAppIconSmall = AtlLoadIconImage(
		IDR_MAINFRAME, LR_DEFAULTCOLOR | LR_DEFAULTSIZE, cxSmall, cySmall);

	ATLASSERT(hAppIcon && hAppIconSmall);

	SetIcon(hAppIcon, TRUE);
	SetIcon(hAppIconSmall, FALSE);

	m_hTaskbarDefaultMenu.LoadMenu(IDR_TASKBAR);
	
	m_taskbarIcon.Install(m_hWnd, 1, IDR_TASKBAR);

	// Create Task Bar Icon Image List

	// Only shell 6.0 or later can handle ILC_COLOR32

	DWORD imageListFlags = ILC_MASK;
	imageListFlags |= (GetShellVersion() >= PackVersion(6,0)) ? ILC_COLOR32 : ILC_COLOR8;
	ATLVERIFY(m_taskbarImageList.Create(cxSmall, cySmall, imageListFlags , 2, 1));
	ATLVERIFY(m_hTaskbarIconBase = AtlLoadIconImage(IDR_TASKBAR, LR_DEFAULTCOLOR, cxSmall, cySmall));
	ATLVERIFY(m_hTaskbarFailOverlay = AtlLoadIconImage(IDR_TASKBAR_FAIL, LR_DEFAULTCOLOR, cxSmall, cySmall));

	m_nTaskbarNormal = m_taskbarImageList.AddIcon(m_hTaskbarIconBase);
	m_nTaskbarFailureOverlay = m_taskbarImageList.AddIcon(m_hTaskbarFailOverlay);
	ATLVERIFY(m_taskbarImageList.SetOverlayImage(m_nTaskbarFailureOverlay, 1));

	_UpdateDeviceList();
	_UpdateMenuItems();

	if (pGetAppConfigBOOL(_T("UseHotKey"), FALSE))
	{
		NDASMGMT_POPUP_HOTKEY = ::GlobalAddAtom(ndasmgmt::NDASMGMT_ATOM_HOTKEY);
		ATLASSERT(NDASMGMT_POPUP_HOTKEY >= 0xC000 && NDASMGMT_POPUP_HOTKEY <= 0xFFFF);
		BOOL fSuccess = ::RegisterHotKey(
			m_hWnd, 
			NDASMGMT_POPUP_HOTKEY, 
			MOD_WIN, 
			'N' /* VK_N */);
		if (fSuccess)
		{
			m_fHotKeyRegistered = TRUE;
		}
		else
		{
			ATLVERIFY(0 == ::GlobalDeleteAtom(static_cast<ATOM>(NDASMGMT_POPUP_HOTKEY)));
			NDASMGMT_POPUP_HOTKEY = 0xFFFF;
		}
	}
	
	if (pGetAppConfigBOOL(_T("FirstRun"), TRUE))
	{
		_ShowWelcome();
		ATLVERIFY(pSetAppConfigValueBOOL(_T("FirstRun"), FALSE));
	}

	ATLVERIFY(m_bitmapHandler.Initialize());

	// Subscribe NDAS Event
	ATLVERIFY(NdasEventSubscribe(m_hWnd));

	return 0;
}
Esempio n. 7
0
void 
CMainFrame::OnNdasSurrenderAccessRequest(
	DWORD dwSlotNo, 
	DWORD dwUnitNo, 
	UCHAR requestFlags, 
	LPCGUID requestHostGuid)
{
	ATLTRACE("Surrender Request for Unit Device(%d,%d) FLAGS=%02X.\n", 
		dwSlotNo, dwUnitNo, requestFlags);

	_UpdateDeviceList();
	_UpdateMenuItems();

	ndas::DevicePtr pDevice;
	if (!ndas::FindDeviceBySlotNumber(pDevice, dwSlotNo))
	{
		ATLTRACE("Requested device (%d.%d) not found. Ignored. (%08X)\n",
			dwSlotNo, 
			dwUnitNo,
			::GetLastError());
		return;
	}

	ndas::UnitDevicePtr pUnitDevice;
	if (!pDevice->FindUnitDevice(pUnitDevice, dwUnitNo))
	{
		ATLTRACE("Requested unit device (%d.%d) not found. Ignored. (%08X)\n",
			dwSlotNo, 
			dwUnitNo,
			::GetLastError());
		return;
	}

	CString strHostname;

	NDAS_HOST_INFO hostInfo = {0};
	if (!::NdasQueryHostInfo(requestHostGuid,&hostInfo)) 
	{
		strHostname.LoadString(IDS_KNOWN_NDAS_HOST);
	} 
	else 
	{
		strHostname = hostInfo.szHostname;
	}

	// The host (%1!s!) requests to give up Write Access to %2!s!.\r\n
	// Do you want to accept it and unmount related drives?
	CString strMessage;
	strMessage.FormatMessage(
		IDS_ASK_SURRENDER_REQUEST_FMT,
		strHostname, 
		pDevice->GetName());

	int response = ::AtlMessageBox(
		m_hWnd,
		static_cast<LPCTSTR>(strMessage), 
		IDS_MAIN_TITLE,
		MB_YESNO | MB_ICONQUESTION | MB_APPLMODAL | MB_SETFOREGROUND | MB_TOPMOST);

	if (IDYES == response) 
	{
		NDAS_LOGICALDEVICE_ID logDeviceId = pUnitDevice->GetLogicalDeviceId();
		ndas::LogicalDevicePtr pLogDevice;
		if (!ndas::FindLogicalDevice(pLogDevice, logDeviceId))
		{
			ATLTRACE("Cannot find logical device %d\n", logDeviceId);
		}
		if (!pLogDevice->Eject())
		{
			ATLTRACE("Logical device %d eject failed\n", logDeviceId);
		}
	}
}