void
BluetoothServiceChildProcess::SendFile(
  const BluetoothAddress& aDeviceAddress,
  BlobParent* aBlobParent,
  BlobChild* aBlobChild,
  BluetoothReplyRunnable* aRunnable)
{
  SendRequest(aRunnable, SendFileRequest(aDeviceAddress, nullptr, aBlobChild));
}
예제 #2
0
void CFileServerDlg::OnDropFiles(HDROP hDropInfo)
{
	// TODO: 在此添加消息处理程序代码和/或调用默认值
	try
	{
		if(GetPrompt(m_hWnd))
		{
			GetDlgItem(IDC_STATIC_STATUS)->ShowWindow(SW_SHOW);
			if(StrCmp(gl_strLanguageId, CHINESE) == 0)
				SetDlgItemText(IDC_STATIC_STATUS, szStatTermiate_CH);
			else
				SetDlgItemText(IDC_STATIC_STATUS, szStatTermiate_EN);
			SetForegroundWindow();
			return;
		}

		CDialog::OnDropFiles(hDropInfo);

		if(m_bSending)
		{
			CString strMsg = _T("正等待响应或已经有文件正在传输,请稍候重试。");
			if(StrCmp(gl_strLanguageId, CHINESE) == 0)
				strMsg = szWaiting_CH;
			else
				strMsg = szWaiting_EN;
			m_PromptDlg.SetMsgText(strMsg);
			m_PromptDlg.Show();
			return;
		}
		else if(m_bReceive)
		{
			CString strMsg = _T("正等待响应或已经有文件正在传输,请稍候重试。");
			if(StrCmp(gl_strLanguageId, CHINESE) == 0)
				strMsg = szWaiting_CH;
			else
				strMsg = szWaiting_EN;
			m_PromptDlg.SetMsgText(strMsg);
			m_PromptDlg.Show();
			return;
		}


		char lpszFileName[MAX_PATH]; 
		int nFileCount, k; 

		nFileCount = DragQueryFile(hDropInfo, (UINT)-1, NULL, 0);

		CString strPathFileName;
		int filecount = 0;
		int foldercount = 0;
		for(k = 0; k < nFileCount; k++) 
		{ 
			DragQueryFile(hDropInfo, k, lpszFileName, MAX_PATH); 
			CFileFind filefind;
			if(filefind.FindFile(lpszFileName))
			{
				filefind.FindNextFile();
				if(filefind.IsDirectory())
					if(filefind.IsDirectory())
					{
						foldercount ++;
						continue;
					}
					strPathFileName = filefind.GetFilePath();
					filecount ++;
			}
		} 
		if(filecount > 1)
		{
			CString strMsg = _T("一次只能传送单个文件。");
			if(StrCmp(gl_strLanguageId, CHINESE) == 0)
				strMsg = szOneFileOnly_CH;
			else
				strMsg = szOneFileOnly_EN;
			m_PromptDlg.SetMsgText(strMsg);
			m_PromptDlg.Show();
			m_bSending = false;
			return;
		}

		if(foldercount > 0)
		{
			CString strMsg = _T("不支持文件夹传输。");
			if(StrCmp(gl_strLanguageId, CHINESE) == 0)
				strMsg = szNotFolder_CH;
			else
				strMsg = szNotFolder_EN;
			m_PromptDlg.SetMsgText(strMsg);
			m_PromptDlg.Show();
			m_bSending = false;
			return;
		}

		BasicFileInfo info;
		CString strFileName = strPathFileName;
		strcpy_s(info.FileName, sizeof(info.FileName), strFileName);
		info.Size = 0;
		CFile file;
		if(file.Open(strPathFileName, CFile::modeRead))
		{
			info.Size = file.GetLength();
			file.Close();
		}

		if (info.Size == 0)
		{
			CString strMsg = _T("不支持大小为0文件传输。");
			if(StrCmp(gl_strLanguageId, CHINESE) == 0)
				strMsg = szNotZeroFile_CH;
			else
				strMsg = szNotZeroFile_EN;
			m_PromptDlg.SetMsgText(strMsg);
			m_PromptDlg.Show();
			m_bSending = false;
			return;
		}

		State state;
		state = State::SRequestSend;
		SendMessage(WM_ADDLISTITEM, (WPARAM)&info, (LPARAM)&state);

		//this->m_strSendFileName = strPathFileName;

		CString strSendFilePathName = strPathFileName;
		int nFind = strSendFilePathName.ReverseFind('\\');
		if(nFind != -1)
		{
			m_strSendPath = strSendFilePathName.Left(nFind);
			m_strSendFileName = strSendFilePathName.Right(strPathFileName.GetLength() - nFind - 1);
		}


		m_bSending = true;
		if(!SendFileRequest(strPathFileName))
		{
			m_bSending = false;
		}
	}
	catch(...)
	{
		if (gl_pLogger) gl_pLogger->log_error("CFileServerDlg::OnDropFiles unknown exception.");
	}
}