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

	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);
}
Exemplo 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);
}
Exemplo n.º 3
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;
}
Exemplo n.º 4
0
LRESULT 
CMainFrame::OnCreate(LPCREATESTRUCT lParam)
{
	NdasUiDbgCall( 2, _T("m_hWnd = %p\n"), m_hWnd );

	m_AutoPnpMutex = CreateSemaphore( NULL, 1, 1, NULL );
	
	if (m_AutoPnpMutex == NULL) {

		ATLASSERT(m_AutoPnpMutex);

	} else {

		for (UINT i=0; i<NDAS_MAX_AUTO_PNP; i++) {

			m_NdasStringId[i] = (PTCHAR)::HeapAlloc( ::GetProcessHeap(), 
													HEAP_ZERO_MEMORY, 
													(NDAS_DEVICE_STRING_ID_LEN + 1) * sizeof(TCHAR) );

			if (m_NdasStringId[i] == NULL) {

				ATLASSERT(FALSE);
		
			}
		}

		m_NdasStringIdLen = 0;
	}

	xTaskDialogInitialize();

#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));

	pUpdateDeviceList();
	pUpdateMenuItems();

	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))
	{
		pShowWelcome();
		ATLVERIFY(pSetAppConfigValueBOOL(_T("FirstRun"), FALSE));
	}

	m_taskbarMenu.Init(m_hWnd);
	ATLVERIFY(m_bitmapHandler.Initialize());

	// Subscribe NDAS Event

	ATLVERIFY(NdasEventSubscribe(m_hWnd));

	NdasUiDbgCall( 2, "out\n" );

	return 0;
}
Exemplo n.º 5
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;
}
Exemplo n.º 6
0
LRESULT 
CAppOptGeneralPage::OnInitDialog(HWND hwndFocus, LPARAM lParam)
{
	m_wndUILangList.Attach(GetDlgItem(IDC_UILANG));
	m_wndDisableAutoPlay.Attach(GetDlgItem(IDC_DISABLE_AUTOPLAY));

	int nIndex = 0;
	CString str = MAKEINTRESOURCE(IDS_LANG_AUTO);
	nIndex = m_wndUILangList.AddString(str);
	m_wndUILangList.SetItemData(nIndex, 0);
	m_wndUILangList.SetCurSel(0);

	m_wConfigLangID = static_cast<LANGID>(pGetAppConfigDWORD(_T("Language"), 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));

	int AlertDisconnectCheck = 
		pGetAppConfigBOOL(_T("UseDisconnectAlert"), TRUE) ?
		BST_CHECKED : BST_UNCHECKED;

	int AlertReconnectCheck = 
		pGetAppConfigBOOL(_T("UseReconnectAlert"), TRUE) ?
		BST_CHECKED : BST_UNCHECKED;

	m_wndAlertDisconnect.SetCheck(AlertDisconnectCheck);
	m_wndAlertReconnect.SetCheck(AlertReconnectCheck);

	BOOL fSuccess = m_imageList.CreateFromImage(
		IDB_OPTION_ICONS, 
		32, 
		1, 
		CLR_DEFAULT, 
		IMAGE_BITMAP,
		LR_CREATEDIBSECTION | LR_DEFAULTCOLOR | LR_DEFAULTSIZE | LR_LOADTRANSPARENT);

	ATLASSERT(fSuccess);

	CStatic wndUIIcon = GetDlgItem(IDC_UI_ICON);
	wndUIIcon.SetIcon(m_imageList.GetIcon(0));

	CStatic wndAlertIcon = GetDlgItem(IDC_ALERT_ICON);
	wndAlertIcon.SetIcon(m_imageList.GetIcon(1));

	m_wndDisableAutoPlay.EnableWindow(FALSE);
	m_disableAutoPlay = TriStateUnknown;

	CComPtr<IAutoPlayConfig> pAutoPlayConfig;
	HRESULT hr = pAutoPlayConfig.CoCreateInstance(CLSID_CAutoPlayConfig);
	if (FAILED(hr))
	{
		ATLTRACE("CLSID_CAutoPlayConfig.CreateInstance failed, hr=0x%X\n", hr);
	}
	else
	{
		DWORD noDriveTypeAutoRun = 0;
		hr = pAutoPlayConfig->GetNoDriveTypeAutoRun(
			reinterpret_cast<ULONG_PTR>(HKEY_CURRENT_USER),
			&noDriveTypeAutoRun);
		if (FAILED(hr))
		{
			ATLTRACE("IAutoPlayConfig->GetNoDriveTypeAutoRun failed, hr=0x%X\n", hr);
		}
		else
		{
			//
			// TODO: We have to put the shield icon here later
			//
//#ifndef IDI_SHIELD
//#define IDI_SHIELD          MAKEINTRESOURCE(32518)
//#endif
//			HICON hShieldIcon = LoadIcon(NULL, IDI_SHIELD);
//			m_wndDisableAutoPlay.SendMessage(
//				BM_SETIMAGE, IMAGE_ICON, reinterpret_cast<LPARAM>(hShieldIcon));

			m_wndDisableAutoPlay.EnableWindow(TRUE);
			if (noDriveTypeAutoRun & AutorunFixedDrive)
			{
				m_wndDisableAutoPlay.SetCheck(BST_CHECKED);
				m_disableAutoPlay = TriStateYes;
			}
			else
			{
				m_wndDisableAutoPlay.SetCheck(BST_UNCHECKED);
				m_disableAutoPlay = TriStateNo;
			}
		}
	}

	return TRUE;
}