Example #1
0
CPartFile* CDlgAddTask::SilenceAddNewTask(LPCTSTR lpszUrl, LPCTSTR lpszSaveDir /* = NULL */)
{
	CString Link(lpszUrl);
	CString tcsPrefix = Link.Left(Link.Find(_T(':')));
	CPartFile * pPartFile = NULL;
	CDownloadQueue * pQueue = CGlobalVariable::downloadqueue;

	// added by vc-yavey 20100507 : 保存到指定目录  <begin>
	CString strSaveDir = (lpszSaveDir != NULL && lpszSaveDir[0] != NULL ? lpszSaveDir : thePrefs.GetMuleDirectory(EMULE_INCOMINGDIR));
	// added by vc-yavey 20100507 : 保存到指定目录  <begin>

	if (tcsPrefix.CompareNoCase(_T("ed2k")) == 0)
	{
		CED2KFileLink			*pLink = NULL;
		CFileHashKey			key;
		CAddTaskDoc::SItem		item;

		pLink = CreateFileLinkFromUrl(lpszUrl);
		if (NULL != pLink)
		{
			key = pLink->GetHashKey();
			item.strLinkText = lpszUrl;
			item.bCheck = TRUE;
			item.iCategory = 0;
		
			int iState = CGlobalVariable::filemgr.GetFileState((const uchar*)&key);

			if (pQueue)
				pPartFile = pQueue->GetFileByID((const uchar*)&key);

			CString strPrompt;
			CString strFileName;
			m_uAddState = 1;
			switch (iState)
			{
			case FILESTATE_DOWNLOADING:   
				strFileName = CGlobalVariable::filemgr.GetFileName(item.strLinkText);
				strPrompt = GetResString(IDS_TASK_IN_DOWNLOADING);
				strPrompt += strFileName;
				CGlobalVariable::ShowNotifier(strPrompt,TBN_IMPORTANTEVENT);
				break;				
			case FILESTATE_COMPLETED:
			case FILESTATE_HASH:
			case FILESTATE_LOCAL_SHARE:
			case FILESTATE_DOWNLOADED_SHARE:	
			case FILESTATE_SHARE_TASK_DELED:
				strFileName = CGlobalVariable::filemgr.GetFileName(item.strLinkText);
				strPrompt = GetResString(IDS_ALREADY_DOWNLOAD);
				strPrompt += strFileName;
				CGlobalVariable::ShowNotifier(strPrompt,TBN_IMPORTANTEVENT);
				break;			
			case FILESTATE_DELETED: 
				/*
				strFileName = CGlobalVariable::filemgr.GetFileName(item.strLinkText);
				strPrompt = GetResString(IDS_DOWN_DELED_LINKS);
				strPrompt += strFileName;
				break;				
				if(IDNO == MessageBox(strPrompt,GetResString(IDS_CAPTION),MB_YESNO))
					break;
				*/
			case FILESTATE_NOT_EXIST:
				// MODIFIED by VC-yavey on 2010-04-16	<begin>
				// 安全地创建filelink
				CED2KFileLink	*pFilelink = NULL;
				pFilelink = CreateFileLinkFromUrl(item.strLinkText);
				if( pFilelink && pFilelink->GetSize()> OLD_MAX_EMULE_FILE_SIZE && !thePrefs.CanFSHandleLargeFiles())
				{					
					// modifyed by vc-yavey on 2010-5-6 <begin>
					// 既然是SilenceAddNewTask就不要弹框吧?
					/*
					CString strMessage = GetResString(IDS_ERR_FSCANTHANDLEFILE);
					strMessage += _T("\n");
					strMessage += pFilelink->GetName();					
					::AfxMessageBox(strMessage);
					*/

					// pFilelink需要被删除
					SAFE_DELETE(pFilelink);
					// modifyed by vc-yavey on 2010-5-6 <end>

					break;
				}
				// MODIFIED by VC-yavey on 2010-04-16	<end>
				SAFE_DELETE(pFilelink);


				// modified by vc-yavey 20100507 : 保存到指定目录 <begin>
				// CGlobalVariable::filemgr.NewDownloadFile(item.strLinkText, thePrefs.GetMuleDirectory(EMULE_INCOMINGDIR), item.iCategory);
				CGlobalVariable::filemgr.NewDownloadFile(item.strLinkText, strSaveDir, item.iCategory);
				// modified by vc-yavey 20100507 : 保存到指定目录 <end>
				
				// modifyed by vc-yavey on 2010-5-6 <begin>
				// 避免订阅时跳来跳去(此函数只在电驴更新和订阅时使用)
				/*
				CCmdGotoPage	cmdGotoPage;
				if(thePrefs.bringtoforeground == 1)
					cmdGotoPage.GotoDownloading();
				*/
				// modifyed by vc-yavey on 2010-5-6 <end>

				break;				            
			}
			SAFE_DELETE(pLink);
	//		m_doc.SetItem(key, item);
			return pPartFile;			
		}
	}
	else if (tcsPrefix.CollateNoCase(_T("http")) == 0)
	{
		int iState = CGlobalVariable::filemgr.GetUrlTaskState(lpszUrl);
		CString strPrompt;
		CString strFileName;
		m_uAddState = 1;

		for (POSITION pos = pQueue->filelist.GetHeadPosition();pos != 0;)
		{
			CPartFile* cur_file = pQueue->filelist.GetNext(pos);
			if (cur_file->GetPartFileURL().CompareNoCase(lpszUrl) == 0)
			{
				pPartFile = cur_file;
				break;
			}
		}

		switch (iState)
		{
		case FILESTATE_DOWNLOADING:  
			strFileName = CGlobalVariable::filemgr.GetUrlFileName(lpszUrl);
			strPrompt = GetResString(IDS_TASK_IN_DOWNLOADING);		
			strPrompt += strFileName;
			CGlobalVariable::ShowNotifier(strPrompt,TBN_IMPORTANTEVENT);
			break;				
		case FILESTATE_COMPLETED:
		case FILESTATE_HASH:
		case FILESTATE_LOCAL_SHARE:
			strFileName = CGlobalVariable::filemgr.GetUrlFileName(lpszUrl);
			strPrompt = GetResString(IDS_ALREADY_DOWNLOAD);
			strPrompt += strFileName;
			CGlobalVariable::ShowNotifier(strPrompt,TBN_IMPORTANTEVENT);
			break;
		case FILESTATE_DOWNLOADED_SHARE:
		case FILESTATE_SHARE_TASK_DELED:
		case FILESTATE_DELETED: 
		case FILESTATE_ZEROSIZE_DOWNLOADED:
			/*
			strFileName = CGlobalVariable::filemgr.GetUrlFileName(lpszUrl);
			strPrompt = GetResString(IDS_DOWN_DELED_LINKS);
			strPrompt += strFileName;
			break;
			
			if(IDNO == MessageBox(strPrompt,GetResString(IDS_CAPTION),MB_YESNO))			
				break;
			*/
		case FILESTATE_NOT_EXIST:
			// modified by vc-yavey 20100507 : 保存到指定目录 <begin>
			//CmdFuncs::ActualllyAddUrlDownload(lpszUrl,thePrefs.GetMuleDirectory(EMULE_INCOMINGDIR));
			CmdFuncs::ActualllyAddUrlDownload(lpszUrl, strSaveDir);
			// modified by vc-yavey 20100507 : 保存到指定目录 <end>

			// modifyed by vc-yavey on 2010-5-6 <begin>
			// 避免订阅时跳来跳去(此函数只在电驴更新和订阅时使用)
			/*
			CCmdGotoPage	cmdGotoPage;
			if(thePrefs.bringtoforeground == 1)
				cmdGotoPage.GotoDownloading();
			*/
			// modifyed by vc-yavey on 2010-5-6 <end>

			break;				            
		}
		//m_doc.AppendUrl(lpszUrl);
		return pPartFile;
	}
	return pPartFile;
}