bool CCollectionFile::InitFromLink(CString sLink) { CED2KLink* pLink = NULL; CED2KFileLink* pFileLink = NULL; try { pLink = CED2KLink::CreateLinkFromUrl(sLink); if(!pLink) throw GetResString(IDS_ERR_NOTAFILELINK); pFileLink = pLink->GetFileLink(); if (!pFileLink) throw GetResString(IDS_ERR_NOTAFILELINK); } catch (CString error) { CString strBuffer; strBuffer.Format(GetResString(IDS_ERR_INVALIDLINK),error); LogError(LOG_STATUSBAR, GetResString(IDS_ERR_LINKERROR), strBuffer); return false; } taglist.Add(new CTag(FT_FILEHASH, pFileLink->GetHashKey())); md4cpy(m_abyFileHash, pFileLink->GetHashKey()); taglist.Add(new CTag(FT_FILESIZE, pFileLink->GetSize())); SetFileSize(pFileLink->GetSize()); taglist.Add(new CTag(FT_FILENAME, pFileLink->GetName())); SetFileName(pFileLink->GetName(), false, false); delete pLink; return true; }
void CDlgAddTask::AddNewTask(LPCTSTR lpszLink, int cat) { CED2KFileLink *pLink = NULL; CFileHashKey key; CAddTaskDoc::SItem item; pLink = CreateFileLinkFromUrl(lpszLink); if (NULL != pLink) { key = pLink->GetHashKey(); item.strLinkText = lpszLink; item.bCheck = TRUE; item.iCategory = cat; GetInstance()->AddTask(key, item); SAFE_DELETE(pLink); } }
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; }