📄 webserver.cpp
字号:
}
}
}
if (_ParseURL(Data.sURL, _T("sort")) != _T(""))
{
if(_ParseURL(Data.sURL, _T("sort")) == _T("name"))
pThis->m_Params.DownloadSort = DOWN_SORT_NAME;
else
if(_ParseURL(Data.sURL, _T("sort")) == _T("size"))
pThis->m_Params.DownloadSort = DOWN_SORT_SIZE;
else
if(_ParseURL(Data.sURL, _T("sort")) == _T("transferred"))
pThis->m_Params.DownloadSort = DOWN_SORT_TRANSFERRED;
else
if(_ParseURL(Data.sURL, _T("sort")) == _T("speed"))
pThis->m_Params.DownloadSort = DOWN_SORT_SPEED;
else
if(_ParseURL(Data.sURL, _T("sort")) == _T("progress"))
pThis->m_Params.DownloadSort = DOWN_SORT_PROGRESS;
if(_ParseURL(Data.sURL, _T("sortreverse")) == _T(""))
pThis->m_Params.bDownloadSortReverse = false;
}
if (_ParseURL(Data.sURL, _T("sortreverse")) != _T(""))
{
pThis->m_Params.bDownloadSortReverse = (_ParseURL(Data.sURL, _T("sortreverse")) == _T("true"));
}
if(_ParseURL(Data.sURL, _T("showuploadqueue")) == _T("true"))
{
pThis->m_Params.bShowUploadQueue = true;
}
if(_ParseURL(Data.sURL, _T("showuploadqueue")) == _T("false"))
{
pThis->m_Params.bShowUploadQueue = false;
}
CString sDownloadSortRev;
if(pThis->m_Params.bDownloadSortReverse)
sDownloadSortRev = _T("false");
else
sDownloadSortRev = _T("true");
Out += pThis->m_Templates.sTransferImages;
Out += pThis->m_Templates.sTransferList;
Out.Replace(_T("[DownloadHeader]"), pThis->m_Templates.sTransferDownHeader);
Out.Replace(_T("[DownloadFooter]"), pThis->m_Templates.sTransferDownFooter);
Out.Replace(_T("[UploadHeader]"), pThis->m_Templates.sTransferUpHeader);
Out.Replace(_T("[UploadFooter]"), pThis->m_Templates.sTransferUpFooter);
Out.Replace(_T("[Session]"), sSession);
InsertCatBox(Out,cat,_T(""),true,true);
if(pThis->m_Params.DownloadSort == DOWN_SORT_NAME)
Out.Replace(_T("[SortName]"), _T("&sortreverse=") + sDownloadSortRev);
else
Out.Replace(_T("[SortName]"), _T(""));
if(pThis->m_Params.DownloadSort == DOWN_SORT_SIZE)
Out.Replace(_T("[SortSize]"), _T("&sortreverse=") + sDownloadSortRev);
else
Out.Replace(_T("[SortSize]"), _T(""));
if(pThis->m_Params.DownloadSort == DOWN_SORT_TRANSFERRED)
Out.Replace(_T("[SortTransferred]"), _T("&sortreverse=") + sDownloadSortRev);
else
Out.Replace(_T("[SortTransferred]"), _T(""));
if(pThis->m_Params.DownloadSort == DOWN_SORT_SPEED)
Out.Replace(_T("[SortSpeed]"), _T("&sortreverse=") + sDownloadSortRev);
else
Out.Replace(_T("[SortSpeed]"), _T(""));
if(pThis->m_Params.DownloadSort == DOWN_SORT_PROGRESS)
Out.Replace(_T("[SortProgress]"), _T("&sortreverse=") + sDownloadSortRev);
else
Out.Replace(_T("[SortProgress]"), _T(""));
CString sortimg;
if (pThis->m_Params.bDownloadSortReverse) sortimg=_T("<img src=\"l_up.gif\">");
else sortimg=_T("<img src=\"l_down.gif\">");
Out.Replace(_T("[Filename]"), _GetPlainResString(IDS_DL_FILENAME)+CString((pThis->m_Params.DownloadSort == DOWN_SORT_NAME)?sortimg:_T("")));
Out.Replace(_T("[Size]"), _GetPlainResString(IDS_DL_SIZE)+CString((pThis->m_Params.DownloadSort == DOWN_SORT_SIZE)?sortimg:_T("")));
Out.Replace(_T("[Transferred]"), _GetPlainResString(IDS_COMPLETE)+CString((pThis->m_Params.DownloadSort == DOWN_SORT_TRANSFERRED)?sortimg:_T("")));
Out.Replace(_T("[Progress]"), _GetPlainResString(IDS_DL_PROGRESS)+CString((pThis->m_Params.DownloadSort == DOWN_SORT_PROGRESS)?sortimg:_T("")));
Out.Replace(_T("[Speed]"), _GetPlainResString(IDS_DL_SPEED)+CString((pThis->m_Params.DownloadSort == DOWN_SORT_SPEED)?sortimg:_T("")));
Out.Replace(_T("[Sources]"), _GetPlainResString(IDS_DL_SOURCES));
Out.Replace(_T("[Actions]"), _GetPlainResString(IDS_WEB_ACTIONS));
Out.Replace(_T("[User]"), _GetPlainResString(IDS_QL_USERNAME));
Out.Replace(_T("[TotalDown]"), _GetPlainResString(IDS_INFLST_USER_TOTALDOWNLOAD));
Out.Replace(_T("[TotalUp]"), _GetPlainResString(IDS_INFLST_USER_TOTALUPLOAD));
Out.Replace(_T("[Prio]"), _GetPlainResString(IDS_PRIORITY));
Out.Replace(_T("[CatSel]"),sCat);
CString OutE = pThis->m_Templates.sTransferDownLine;
CString OutE2 = pThis->m_Templates.sTransferDownLineGood;
float fTotalSize = 0, fTotalTransferred = 0, fTotalSpeed = 0;
CArray<DownloadFiles, DownloadFiles> FilesArray;
CArray<CPartFile*,CPartFile*> partlist;
theApp.emuledlg->transferwnd->downloadlistctrl.GetDisplayedFiles(&partlist);
// Populating array
bool completedAv=false;
for (int i=0;i<partlist.GetCount();i++) {
CPartFile* cur_file=partlist.GetAt(i);
if (cur_file) {
DownloadFiles dFile;
dFile.sFileName = _SpecialChars(cur_file->GetFileName());
dFile.lFileSize = cur_file->GetFileSize();
dFile.lFileTransferred = cur_file->GetCompletedSize();
dFile.fCompleted = cur_file->GetPercentCompleted();
dFile.lFileSpeed = cur_file->GetDatarate();
dFile.nFileStatus = cur_file->GetStatus();
dFile.sFileStatus = cur_file->getPartfileStatus();
dFile.nFilePrio = cur_file->GetDownPriority();
if (cur_file->IsAutoDownPriority()) dFile.nFilePrio+=10;
dFile.sFileHash = EncodeBase16(cur_file->GetFileHash(), 16);
dFile.lSourceCount = cur_file->GetSourceCount();
dFile.lNotCurrentSourceCount = cur_file->GetNotCurrentSourcesCount();
dFile.lTransferringSourceCount = cur_file->GetTransferingSrcCount();
if (theApp.IsConnected() && !theApp.IsFirewalled())
dFile.sED2kLink = theApp.CreateED2kSourceLink(cur_file);
else
dFile.sED2kLink = CreateED2kLink(cur_file);
dFile.sFileInfo = _SpecialChars(cur_file->GetInfoSummary(cur_file));
if (cat>0 && cur_file->GetCategory()!=cat) continue;
if (cat<0) {
switch (cat) {
case -1 : if (cur_file->GetCategory()!=0) continue; break;
case -2 : if (!cur_file->IsPartFile()) continue; break;
case -3 : if (cur_file->IsPartFile()) continue; break;
case -4 : if (!((cur_file->GetStatus()==PS_READY|| cur_file->GetStatus()==PS_EMPTY) && cur_file->GetTransferingSrcCount()==0)) continue; break;
case -5 : if (!((cur_file->GetStatus()==PS_READY|| cur_file->GetStatus()==PS_EMPTY) && cur_file->GetTransferingSrcCount()>0)) continue; break;
case -6 : if (cur_file->GetStatus()!=PS_ERROR) continue; break;
case -7 : if (cur_file->GetStatus()!=PS_PAUSED) continue; break;
case -8 : if (!cur_file->IsStopped()) continue; break;
case -9 : if (!cur_file->IsMovie()) continue; break;
case -10 : if (ED2KFT_AUDIO != GetED2KFileTypeID(cur_file->GetFileName())) continue; break;
case -11 : if (!cur_file->IsArchive()) continue; break;
case -12 : if (ED2KFT_CDIMAGE != GetED2KFileTypeID(cur_file->GetFileName())) continue; break;
}
}
FilesArray.Add(dFile);
if (!cur_file->IsPartFile()) completedAv=true;
}
}
// Sorting (simple bubble sort, we don't have tons of data here)
bool bSorted = true;
for(int nMax = 0;bSorted && nMax < FilesArray.GetCount()*2; nMax++)
{
bSorted = false;
for(int i = 0; i < FilesArray.GetCount() - 1; i++)
{
bool bSwap = false;
switch(pThis->m_Params.DownloadSort)
{
case DOWN_SORT_NAME:
bSwap = FilesArray[i].sFileName.CompareNoCase(FilesArray[i+1].sFileName) > 0;
break;
case DOWN_SORT_SIZE:
bSwap = FilesArray[i].lFileSize < FilesArray[i+1].lFileSize;
break;
case DOWN_SORT_TRANSFERRED:
bSwap = FilesArray[i].lFileTransferred < FilesArray[i+1].lFileTransferred;
break;
case DOWN_SORT_SPEED:
bSwap = FilesArray[i].lFileSpeed < FilesArray[i+1].lFileSpeed;
break;
case DOWN_SORT_PROGRESS:
bSwap = FilesArray[i].fCompleted < FilesArray[i+1].fCompleted ;
break;
}
if(pThis->m_Params.bDownloadSortReverse)
{
bSwap = !bSwap;
}
if(bSwap)
{
bSorted = true;
DownloadFiles TmpFile = FilesArray[i];
FilesArray[i] = FilesArray[i+1];
FilesArray[i+1] = TmpFile;
}
}
}
// Displaying
CString sDownList = _T("");
CString HTTPTemp;
for(int i = 0; i < FilesArray.GetCount(); i++)
{
CString JSfileinfo=FilesArray[i].sFileInfo;
JSfileinfo.Replace(_T("\n"),_T("\\n"));
JSfileinfo.Replace(_T("\'"),_T("\\'")); // [Thx2 Zune]
CString sActions = _T("<acronym title=\"") + FilesArray[i].sFileStatus + _T("\"><a href=\"javascript:alert(\'")+ JSfileinfo + _T("')\"><img src=\"l_info.gif\" alt=\"") + FilesArray[i].sFileStatus + _T("\"></a></acronym> ");
CString sED2kLink;
sED2kLink.Format(_T("<acronym title=\"[Ed2klink]\"><a href=\"")+ FilesArray[i].sED2kLink +_T("\"><img src=\"l_ed2klink.gif\" alt=\"[Ed2klink]\"></a></acronym> "));
sED2kLink.Replace(_T("[Ed2klink]"), _GetPlainResString(IDS_SW_LINK));
sActions += sED2kLink;
bool bCanBeDeleted = true;
switch(FilesArray[i].nFileStatus)
{
case PS_COMPLETING:
case PS_COMPLETE:
bCanBeDeleted = false;
break;
case PS_HASHING:
case PS_WAITINGFORHASH:
case PS_ERROR:
break;
case PS_PAUSED:
{
if (IsSessionAdmin(Data,sSession)) {
CString sResume=_T("");
sResume.Format(_T("<acronym title=\"[Resume]\"><a href=\"[Link]\"><img src=\"l_resume.gif\" alt=\"[Resume]\"></a></acronym> "));
sResume.Replace(_T("[Link]"), CString(_T("?ses=") + sSession + _T("&w=transfer&op=resume&file=") + FilesArray[i].sFileHash +sCat )) ;
sActions += sResume;
}
}
break;
default: // waiting or downloading
{
if (IsSessionAdmin(Data,sSession)) {
CString sPause;
sPause.Format(_T("<acronym title=\"[Pause]\"><a href=\"[Link]\"><img src=\"l_pause.gif\" alt=\"[Pause]\"></a></acronym> "));
sPause.Replace(_T("[Link]"), CString(_T("?ses=") + sSession + _T("&w=transfer&op=pause&file=") + FilesArray[i].sFileHash+sCat ));
sActions += sPause;
}
}
break;
}
if(bCanBeDeleted)
{
if (IsSessionAdmin(Data,sSession)) {
CString sCancel;
sCancel.Format(_T("<acronym title=\"[Cancel]\"><a href=\"[Link]\" onclick=\"return confirm(\'[ConfirmCancel]\')\"><img src=\"l_cancel.gif\" alt=\"[Cancel]\"></a></acronym> "));
sCancel.Replace(_T("[Link]"), CString(_T("?ses=") + sSession + _T("&w=transfer&op=cancel&file=") + FilesArray[i].sFileHash+sCat ) );
sActions += sCancel;
}
}
if (IsSessionAdmin(Data,sSession)) {
sActions.Replace(_T("[Resume]"), _GetPlainResString(IDS_DL_RESUME));
sActions.Replace(_T("[Pause]"), _GetPlainResString(IDS_DL_PAUSE));
sActions.Replace(_T("[Cancel]"), _GetPlainResString(IDS_MAIN_BTN_CANCEL));
sActions.Replace(_T("[ConfirmCancel]"), _GetPlainResStringNoQuote(IDS_Q_CANCELDL2));
if (FilesArray[i].nFileStatus!=PS_COMPLETE && FilesArray[i].nFileStatus!=PS_COMPLETING) {
sActions.Append(_T("<acronym title=\"[PriorityUp]\"><a href=\"?ses=[Session]&w=transfer&op=prioup&file=") + FilesArray[i].sFileHash+sCat+_T("\"><img src=\"l_up.gif\" alt=\"[PriorityUp]\"></a></acronym>"));
sActions.Append(_T(" <acronym title=\"[PriorityDown]\"><a href=\"?ses=[Session]&w=transfer&op=priodown&file=") + FilesArray[i].sFileHash+sCat +_T("\"><img src=\"l_down.gif\" alt=\"[PriorityDown]\"></a></acronym>"));
}
}
CString HTTPProcessData;
// if downloading, draw in other color
if(FilesArray[i].lFileSpeed > 0)
HTTPProcessData = OutE2;
else
HTTPProcessData = OutE;
if(FilesArray[i].sFileName.GetLength() > SHORT_FILENAME_LENGTH)
HTTPProcessData.Replace(_T("[ShortFileName]"), FilesArray[i].sFileName.Left(SHORT_FILENAME_LENGTH) + _T("..."));
else
HTTPProcessData.Replace(_T("[ShortFileName]"), FilesArray[i].sFileName);
HTTPProcessData.Replace(_T("[FileInfo]"), FilesArray[i].sFileInfo);
fTotalSize += FilesArray[i].lFileSize;
HTTPProcessData.Replace(_T("[2]"), CastItoXBytes(FilesArray[i].lFileSize));
if(FilesArray[i].lFileTransferred > 0)
{
fTotalTransferred += FilesArray[i].lFileTransferred;
HTTPProcessData.Replace(_T("[3]"), CastItoXBytes(FilesArray[i].lFileTransferred));
}
else
HTTPProcessData.Replace(_T("[3]"), _T("-"));
HTTPProcessData.Replace(_T("[DownloadBar]"), _GetDownloadGraph(Data,FilesArray[i].sFileHash));
if(FilesArray[i].lFileSpeed > 0.0f)
{
fTotalSpeed += FilesArray[i].lFileSpeed;
HTTPTemp.Format(_T("%8.2f %s"), FilesArray[i].lFileSpeed/1024.0 ,_GetPlainResString(IDS_KBYTESEC) );
HTTPProcessData.Replace(_T("[4]"), HTTPTemp);
}
else
HTTPProcessData.Replace(_T("[4]"), _T("-"));
if(FilesArray[i].lSourceCount > 0)
{
HTTPTemp.Format(_T("%i / %8i (%i)"),
FilesArray[i].lSourceCount-FilesArray[i].lNotCurrentSourceCount,
FilesArray[i].lSourceCount,
FilesArray[i].lTransferringSourceCount);
HTTPProcessData.Replace(_T("[5]"), HTTPTemp);
}
else
HTTPProcessData.Replace(_T("[5]"), _T("-"));
switch(FilesArray[i].nFilePrio) {
case 0: HTTPTemp=GetResString(IDS_PRIOLOW);break;
case 10: HTTPTemp=GetResString(IDS_PRIOAUTOLOW);break;
case 1: HTTPTemp=GetResString(IDS_PRIONORMAL);break;
case 11: HTTPTemp=GetResString(IDS_PRIOAUTONORMAL);break;
case 2: HTTPTemp=GetResString(IDS_PRIOHIGH);break;
case 12: HTTPTemp=GetResString(IDS_PRIOAUTOHIGH);break;
}
HTTPProcessData.Replace(_T("[PrioVal]"), HTTPTemp);
HTTPProcessData.Replace(_T("[6]"), sActions);
sDownList += HTTPProcessData;
}
Out.Replace(_T("[DownloadFilesList]"), sDownList);
Out.Replace(_T("[PriorityUp]"), _GetPlainResString(IDS_PRIORITY_UP));
Out.Replace(_T("[PriorityDown]"), _GetPlainResString(IDS_PRIORITY_DOWN));
// Elandal: cast from float to integral type always drops fractions.
// avoids implicit cast warning
Out.Replace(_T("[TotalDownSize]"), CastItoXBytes((uint64)fTotalSize));
Out.Replace(_T("[TotalDownTransferred]"), CastItoXBytes((uint64)fTotalTransferred));
Out.Replace(_T("[ClearCompletedButton]"),(completedAv && IsSessionAdmin(Data,sSession))?pThis->m_Templates.sClearCompleted :_T(""));
HTTPTemp.Format(_T("%8.2f %s"), fTotalSpeed/1024.0,_GetPlainResString(IDS_KBYTESEC));
Out.Replace(_T("[TotalDownSpeed]"), HTTPTemp);
OutE = pThis->m_Templates.sTransferUpLine;
HTTPTemp.Format(_T("%i"),pThis->m_Templates.iProgressbarWidth);
Out.Replace(_T("[PROGRESSBARWIDTHVAL]"),HTTPTemp);
fTotalSize = 0;
fTotalTransferred = 0;
fTotalSpeed = 0;
CString sUpList = _T("");
for (POSITION pos = theApp.uploadqueue->GetFirstFromUploadList();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -