void CDetailInfo::UpdateRssItem(CRssFeed::Item* pItem) { m_ListDetail.DeleteAllItems(); if(NULL == pItem) return; int iItem = 0; CString str; str = pItem->m_strFilename; m_ListDetail.InsertItem(iItem, GetResString(IDS_RSSTEXT_RES)); m_ListDetail.SetItemText(iItem, 1, str); iItem++; CED2KFileLink * pFileLink = CreateFileLinkFromUrl(pItem->m_strEnclosure); if (pFileLink) { str = CmdFuncs::GetFileSizeDisplayStr(pFileLink->GetSize()); m_ListDetail.InsertItem(iItem, GetResString(IDS_DL_SIZE)); m_ListDetail.SetItemText(iItem, 1, str); iItem++; delete pFileLink; } str = pItem->m_strEnclosure; m_ListDetail.InsertItem(iItem,GetResString(IDS_URL_LINK)); m_ListDetail.SetItemText(iItem,1,str); iItem++; }
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); } }
BOOL CDlgAddTask::ApplyDocToTaskMgr(LPCTSTR lpszLocation, BOOL & bFeedAdded, BOOL bAutoDown) { // MODIFIED by VC-yavey on 2010-04-16 <begin> // 处理RSS订阅url bFeedAdded = FALSE; //CAddTaskDoc::RssUrlSet & setRssUrl = m_doc.GetRssUrlSet(); CString strCurLoc; m_cmbLocation.GetWindowText(strCurLoc); if ( !PathFileExists(strCurLoc) ) { strCurLoc.Empty(); } /*for ( CAddTaskDoc::RssUrlSet::const_iterator it = setRssUrl.begin(); it != setRssUrl.end(); ++it ) { TRACE(TEXT("\nRssUrlSet str %s\n"), *it); }*/ set<CRssFeed*>& setLastRssFeed = m_editLinks.GetLastRssFeedSet(); for (set<CRssFeed*>::iterator it = setLastRssFeed.begin(); it != setLastRssFeed.end(); ++it ) { //TRACE(TEXT("m_editLinks.m_setLastRssfee str %s\n"), (*it)->m_strFeedUrl); CGlobalVariable::s_wndRssCtrl->AddFeed(*it, strCurLoc, bAutoDown); bFeedAdded = TRUE; } // MODIFIED by VC-yavey on 2010-04-16 <end> // ed2k tasks <begin> const map<CFileHashKey, CAddTaskDoc::SItem> *pMap; map<CFileHashKey, CAddTaskDoc::SItem>::const_iterator it; CArray<SSpDownLink*, SSpDownLink*> arrSpDownLinks; //special download links CArray<SSpDownLink*, SSpDownLink*> arrDowningLinks; //downloading links CArray<SSpDownLink*, SSpDownLink*> arrReDownLinks; //ask whether redownload links CArray<SSpDownLink*, SSpDownLink*> arrTooBigDownLinks; int iState; CString strFileName; pMap = m_doc.GetData(); for (it = pMap->begin(); it != pMap->end(); it++) { if (it->second.bCheck) { CED2KFileLink *pLink = NULL; // MODIFIED by VC-yavey on 2010-04-16 : 安全地创建filelink pLink = CreateFileLinkFromUrl(it->second.strLinkText); if( pLink && pLink->GetSize()> OLD_MAX_EMULE_FILE_SIZE && !thePrefs.CanFSHandleLargeFiles(lpszLocation)) { strFileName = CGlobalVariable::filemgr.GetFileName(it->second.strLinkText); SSpDownLink* psdl = new SSpDownLink; psdl->iLinkType = 0; psdl->strLink = it->second.strLinkText; psdl->iCat = it->second.iCategory; psdl->strName = strFileName; arrTooBigDownLinks.Add(psdl); continue; } SAFE_DELETE(pLink); iState = CGlobalVariable::filemgr.GetFileState(it->second.strLinkText); switch (iState) { case FILESTATE_DOWNLOADING: { strFileName = CGlobalVariable::filemgr.GetFileName(it->second.strLinkText); SSpDownLink* psdl = new SSpDownLink; psdl->iLinkType = 0; psdl->strLink = it->second.strLinkText; psdl->iCat = it->second.iCategory; psdl->iState = iState; psdl->strName = strFileName; arrDowningLinks.Add(psdl); } break; case FILESTATE_COMPLETED: case FILESTATE_HASH: case FILESTATE_DOWNLOADED_SHARE: case FILESTATE_LOCAL_SHARE: case FILESTATE_SHARE_TASK_DELED: { strFileName = CGlobalVariable::filemgr.GetFileName(it->second.strLinkText); SSpDownLink* psdl = new SSpDownLink; psdl->iLinkType = 0; psdl->strLink = it->second.strLinkText; psdl->iCat = it->second.iCategory; psdl->iState = iState; psdl->strName = strFileName; arrSpDownLinks.Add(psdl); } break; case FILESTATE_DELETED: { strFileName = CGlobalVariable::filemgr.GetFileName(it->second.strLinkText); SSpDownLink* psdl = new SSpDownLink; psdl->iLinkType = 0; psdl->strLink = it->second.strLinkText; psdl->iCat = it->second.iCategory; psdl->iState = iState; psdl->strName = strFileName; arrReDownLinks.Add(psdl); } break; default: CGlobalVariable::filemgr.NewDownloadFile(it->second.strLinkText, lpszLocation, it->second.iCategory); break; } } } // ed2k tasks <end> // Url tasks <begin> CString strUrl; BOOL bCheck; const CMapStringToPtr* pUrlData = m_doc.GetUrlData(); POSITION pos = pUrlData->GetStartPosition(); while (NULL != pos) { pUrlData->GetNextAssoc(pos, strUrl, (void*&)bCheck); strUrl.Trim(); if( _tcsrchr((LPCTSTR)strUrl+7,_T('/'))==NULL ) strUrl += _T('/'); /* int len=strUrl.GetLength(); bool state=false; int index = strUrl.Find(_T("//"),0); for(int i = index + 2;i < len;i++) { if(strUrl[i] == _T('/')) { state = true; break; } } if(state ==false) strUrl+='/';*/ if (bCheck) { iState = CGlobalVariable::filemgr.GetUrlTaskState(strUrl); //< 统一转换后再判断,避免实际是重复的Url switch (iState) { case FILESTATE_DOWNLOADING: { strFileName = CGlobalVariable::filemgr.GetUrlFileName(strUrl); SSpDownLink* psdl = new SSpDownLink; psdl->iLinkType = 1; psdl->strLink = strUrl; psdl->iCat = 0; psdl->iState = iState; psdl->strName = strFileName; arrDowningLinks.Add(psdl); } break; case FILESTATE_COMPLETED: case FILESTATE_HASH: case FILESTATE_LOCAL_SHARE: { strFileName = CGlobalVariable::filemgr.GetUrlFileName(strUrl); SSpDownLink* psdl = new SSpDownLink; psdl->iLinkType = 1; psdl->strLink = strUrl; psdl->iCat = 0; psdl->iState = iState; psdl->strName = strFileName; arrSpDownLinks.Add(psdl); } break; case FILESTATE_DOWNLOADED_SHARE: case FILESTATE_SHARE_TASK_DELED: case FILESTATE_DELETED: case FILESTATE_ZEROSIZE_DOWNLOADED: { strFileName = CGlobalVariable::filemgr.GetUrlFileName(strUrl); SSpDownLink* psdl = new SSpDownLink; psdl->iLinkType = 1; psdl->strLink = strUrl; psdl->iCat = 0; psdl->iState = iState; psdl->strName = strFileName; arrReDownLinks.Add(psdl); } break; default: CmdFuncs::ActualllyAddUrlDownload(strUrl,lpszLocation); break; } } } // URL tasks <end> int i; CString strPrompt; if (!arrSpDownLinks.IsEmpty()) { strPrompt = GetResString(IDS_ALREADY_DOWNLOAD); for (i = 0; i < arrSpDownLinks.GetCount(); i++) { if(arrSpDownLinks[i]->iLinkType==1) strPrompt += arrSpDownLinks[i]->strLink; else strPrompt += arrSpDownLinks[i]->strName; strPrompt += _T("\n"); } for (i = 0; i < arrSpDownLinks.GetCount(); i++) delete arrSpDownLinks[i]; arrSpDownLinks.RemoveAll(); } UINT iTooBigDownLinks = 0; if (!arrTooBigDownLinks.IsEmpty()) { iTooBigDownLinks =arrTooBigDownLinks.GetCount(); if (!strPrompt.IsEmpty()) strPrompt += _T("\n\n"); strPrompt = GetResString(IDS_ERR_FSCANTHANDLEFILE); strPrompt += _T("\n"); for (i = 0; i < arrTooBigDownLinks.GetCount(); i++) { if(arrTooBigDownLinks[i]->iLinkType==1) strPrompt += arrTooBigDownLinks[i]->strLink; else strPrompt += arrTooBigDownLinks[i]->strName; strPrompt += _T("\n"); } for (i = 0; i < arrTooBigDownLinks.GetCount(); i++) delete arrTooBigDownLinks[i]; arrTooBigDownLinks.RemoveAll(); } if (!arrDowningLinks.IsEmpty()) { if (!strPrompt.IsEmpty()) strPrompt += _T("\n\n"); strPrompt += GetResString(IDS_TASK_IN_DOWNLOADING); for (i = 0; i < arrDowningLinks.GetCount(); i++) { if(arrDowningLinks[i]->iLinkType==1) strPrompt += arrDowningLinks[i]->strLink; else strPrompt += arrDowningLinks[i]->strName; strPrompt += _T("\n"); } for (i = 0; i < arrDowningLinks.GetCount(); i++) delete arrDowningLinks[i]; arrDowningLinks.RemoveAll(); } if (!strPrompt.IsEmpty()) MessageBox(strPrompt,GetResString(IDS_CAPTION),MB_OK|MB_ICONWARNING); //if (IDYES == ::AfxMessageBox(strPrompt, MB_YESNO)) //{ // for (i = 0; i < arrDledLink.GetCount(); i++) // CGlobalVariable::filemgr.NewDownloadFile(arrDledLink[i], lpszLocation, arrDledLinkCat[i]); // for (i = 0; i < arrDledUrl.GetCount(); i++) // ActualllyAddUrlDownload(arrDledUrl[i], lpszLocation); //} if (!arrReDownLinks.IsEmpty()) { strPrompt = GetResString(IDS_DOWN_DELED_LINKS); for (i = 0; i < arrReDownLinks.GetCount(); i++) { if(arrReDownLinks[i]->iLinkType==1) strPrompt += arrReDownLinks[i]->strLink; else strPrompt += arrReDownLinks[i]->strName; strPrompt += _T("\n"); } if(IDYES == MessageBox(strPrompt,GetResString(IDS_CAPTION),MB_YESNO|MB_ICONWARNING)) { for (i = 0; i < arrReDownLinks.GetCount(); i++) { switch (arrReDownLinks[i]->iLinkType) { case 0: CGlobalVariable::filemgr.NewDownloadFile(arrReDownLinks[i]->strLink, lpszLocation, arrReDownLinks[i]->iCat); break; case 1: //ActualllyAddUrlDownload(arrReDownLinks[i]->strLink, lpszLocation); CmdFuncs::ActualllyAddUrlDownload(arrReDownLinks[i]->strLink,lpszLocation); break; default: break; } } } for (i = 0; i < arrReDownLinks.GetCount(); i++) delete arrReDownLinks[i]; arrReDownLinks.RemoveAll(); } if (!pMap->size() && !iTooBigDownLinks) return TRUE; return iTooBigDownLinks != pMap->size(); }
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; }
void CDlgAddTask::AddTask(const CFileHashKey &key, const CAddTaskDoc::SItem &item) { if (!IsDlgPopedUp()) { if (!thePrefs.m_bShowNewTaskDlg) { int iState = CGlobalVariable::filemgr.GetFileState((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 += item.strLinkText; 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: //case FILESTATE_ZEROSIZE_DOWNLOADED: strFileName = CGlobalVariable::filemgr.GetFileName(item.strLinkText); strPrompt = GetResString(IDS_ALREADY_DOWNLOAD); //strPrompt += item.strLinkText; strPrompt += strFileName; CGlobalVariable::ShowNotifier(strPrompt,TBN_IMPORTANTEVENT); break; case FILESTATE_DELETED: strFileName = CGlobalVariable::filemgr.GetFileName(item.strLinkText); strPrompt = GetResString(IDS_DOWN_DELED_LINKS); //strPrompt += item.strLinkText; strPrompt += strFileName; if(IDNO == MessageBox(strPrompt,GetResString(IDS_CAPTION),MB_YESNO)) break; case FILESTATE_NOT_EXIST: CED2KFileLink *pFilelink = NULL; //MODIFIED by VC-yavey on 2010-04-16 <begin> pFilelink = CreateFileLinkFromUrl(item.strLinkText); if( pFilelink && pFilelink->GetSize()> OLD_MAX_EMULE_FILE_SIZE && !thePrefs.CanFSHandleLargeFiles()) { CString strMessage = GetResString(IDS_ERR_FSCANTHANDLEFILE); strMessage += _T("\n"); strMessage += pFilelink->GetName(); ::AfxMessageBox(strMessage); break; } //MODIFIED by VC-yavey on 2010-04-16 <end> SAFE_DELETE(pFilelink); CGlobalVariable::filemgr.NewDownloadFile(item.strLinkText, thePrefs.GetMuleDirectory(EMULE_INCOMINGDIR), item.iCategory); CCmdGotoPage cmdGotoPage; if(thePrefs.bringtoforeground == 1) cmdGotoPage.GotoDownloading(); break; } return; } else { PopupDlg(); } } m_doc.SetItem(key, item); }