void ShellDeleteMsg(const wchar_t *Name,int Wipe,int Percent) { string strProgress; size_t Width=52; if (Percent!=-1) { size_t Length=Width-5; // -5 под проценты wchar_t *Progress=strProgress.GetBuffer(Length); if (Progress) { size_t CurPos=Min(Percent,100)*Length/100; wmemset(Progress,BoxSymbols[BS_X_DB],CurPos); wmemset(Progress+(CurPos),BoxSymbols[BS_X_B0],Length-CurPos); strProgress.ReleaseBuffer(Length); FormatString strTmp; strTmp<<L" "<<fmt::Width(3)<<Percent<<L"%"; strProgress+=strTmp; DeleteTitle->Set(L"{%d%%} %s",Percent,MSG(Wipe?MDeleteWipeTitle:MDeleteTitle)); } TBC.SetProgressValue(Percent,100); } string strOutFileName(Name); TruncPathStr(strOutFileName,static_cast<int>(Width)); CenterStr(strOutFileName,strOutFileName,static_cast<int>(Width)); Message(0,0,MSG(Wipe?MDeleteWipeTitle:MDeleteTitle),(Percent>=0||!Opt.DelOpt.DelShowTotal)?MSG(Wipe?MDeletingWiping:MDeleting):MSG(MScanningFolder),strOutFileName,strProgress.IsEmpty()?nullptr:strProgress.CPtr()); PreRedrawItem preRedrawItem=PreRedraw.Peek(); preRedrawItem.Param.Param1=static_cast<void*>(const_cast<wchar_t*>(Name)); preRedrawItem.Param.Param4=(void *)(INT_PTR)Wipe; preRedrawItem.Param.Param5=(__int64)Percent; PreRedraw.SetParam(preRedrawItem.Param); }
static void ShellDeleteMsg(const string& Name, DEL_MODE Mode, int Percent, int WipePercent, ConsoleTitle* DeleteTitle) { FormatString strProgress, strWipeProgress; size_t Width=ScrX/2; size_t Length=Width-5; // -5 под проценты if(Mode==DEL_WIPEPROCESS || Mode==DEL_WIPE) { strWipeProgress.resize(Length); size_t CurPos=std::min(WipePercent,100)*Length/100; std::fill(strWipeProgress.begin(), strWipeProgress.begin() + CurPos, BoxSymbols[BS_X_DB]); std::fill(strWipeProgress.begin() + CurPos, strWipeProgress.end(), BoxSymbols[BS_X_B0]); strWipeProgress<<L" "<<fmt::MinWidth(3)<<WipePercent<<L"%"; if(Percent==-1) { Global->TBC->SetProgressValue(WipePercent, 100); } } if (Mode!=DEL_SCAN && Percent!=-1) { strProgress.resize(Length); size_t CurPos=std::min(Percent,100)*Length/100; std::fill(strProgress.begin(), strProgress.begin() + CurPos, BoxSymbols[BS_X_DB]); std::fill(strProgress.begin() + CurPos, strProgress.end(), BoxSymbols[BS_X_B0]); strProgress<<L" "<<fmt::MinWidth(3)<<Percent<<L"%"; *DeleteTitle << L"{" << Percent << L"%} " << MSG((Mode==DEL_WIPE || Mode==DEL_WIPEPROCESS)?MDeleteWipeTitle:MDeleteTitle) << fmt::Flush(); Global->TBC->SetProgressValue(Percent,100); } string strOutFileName(Name); TruncPathStr(strOutFileName,static_cast<int>(Width)); CenterStr(strOutFileName,strOutFileName,static_cast<int>(Width)); const wchar_t* Progress1 = nullptr; const wchar_t* Progress2 = nullptr; if(!strWipeProgress.empty()) { Progress1 = strWipeProgress.data(); Progress2 = strProgress.empty()? nullptr : strProgress.data(); } else { Progress1 = strProgress.empty()? nullptr : strProgress.data(); } Message(0,0, MSG((Mode==DEL_WIPE || Mode==DEL_WIPEPROCESS)?MDeleteWipeTitle:MDeleteTitle), Mode==DEL_SCAN? MSG(MScanningFolder) : MSG((Mode==DEL_WIPE || Mode==DEL_WIPEPROCESS)?MDeletingWiping:MDeleting), strOutFileName.data(), Progress1, Progress2); if (!Global->PreRedraw->empty()) { auto item = dynamic_cast<DelPreRedrawItem*>(Global->PreRedraw->top()); item->name = Name; item->Title = DeleteTitle; item->Mode = Mode; item->Percent = Percent; item->WipePercent = WipePercent; } }
static void ShellDeleteMsg(const string& Name, DEL_MODE Mode, int Percent, int WipePercent, ConsoleTitle* DeleteTitle) { string strProgress, strWipeProgress; size_t Width=ScrX/2; if(Mode==DEL_WIPEPROCESS || Mode==DEL_WIPE) { strWipeProgress = make_progressbar(Width, WipePercent, true, Percent == -1); } if (Mode!=DEL_SCAN && Percent!=-1) { strProgress = make_progressbar(Width, Percent, true, true); *DeleteTitle << L"{" << Percent << L"%} " << MSG((Mode==DEL_WIPE || Mode==DEL_WIPEPROCESS)?MDeleteWipeTitle:MDeleteTitle) << fmt::Flush(); } string strOutFileName(Name); TruncPathStr(strOutFileName,static_cast<int>(Width)); CenterStr(strOutFileName,strOutFileName,static_cast<int>(Width)); const wchar_t* Progress1 = nullptr; const wchar_t* Progress2 = nullptr; if(!strWipeProgress.empty()) { Progress1 = strWipeProgress.data(); Progress2 = strProgress.empty()? nullptr : strProgress.data(); } else { Progress1 = strProgress.empty()? nullptr : strProgress.data(); } Message(0,0, MSG((Mode==DEL_WIPE || Mode==DEL_WIPEPROCESS)?MDeleteWipeTitle:MDeleteTitle), Mode==DEL_SCAN? MSG(MScanningFolder) : MSG((Mode==DEL_WIPE || Mode==DEL_WIPEPROCESS)?MDeletingWiping:MDeleting), strOutFileName.data(), Progress1, Progress2); if (!PreRedrawStack().empty()) { auto item = dynamic_cast<DelPreRedrawItem*>(PreRedrawStack().top()); item->name = Name; item->Title = DeleteTitle; item->Mode = Mode; item->Percent = Percent; item->WipePercent = WipePercent; } }
void ShellDeleteMsg(const wchar_t *Name, DEL_MODE Mode, int Percent, int WipePercent) { FormatString strProgress, strWipeProgress; size_t Width=52; size_t Length=Width-5; // -5 под проценты if(Mode==DEL_WIPEPROCESS || Mode==DEL_WIPE) { wchar_t *WipeProgress=strWipeProgress.GetBuffer(Length); if (WipeProgress) { size_t CurPos=Min(WipePercent,100)*Length/100; wmemset(WipeProgress,BoxSymbols[BS_X_DB],CurPos); wmemset(WipeProgress+(CurPos),BoxSymbols[BS_X_B0],Length-CurPos); strWipeProgress.ReleaseBuffer(Length); strWipeProgress<<L" "<<fmt::MinWidth(3)<<WipePercent<<L"%"; } if(Percent==-1) { TBC.SetProgressValue(WipePercent, 100); } } if (Mode!=DEL_SCAN && Percent!=-1) { wchar_t *Progress=strProgress.GetBuffer(Length); if (Progress) { size_t CurPos=Min(Percent,100)*Length/100; wmemset(Progress,BoxSymbols[BS_X_DB],CurPos); wmemset(Progress+(CurPos),BoxSymbols[BS_X_B0],Length-CurPos); strProgress.ReleaseBuffer(Length); strProgress<<L" "<<fmt::MinWidth(3)<<Percent<<L"%"; *DeleteTitle << L"{" << Percent << L"%} " << MSG((Mode==DEL_WIPE || Mode==DEL_WIPEPROCESS)?MDeleteWipeTitle:MDeleteTitle) << fmt::Flush(); } TBC.SetProgressValue(Percent,100); } string strOutFileName(Name); TruncPathStr(strOutFileName,static_cast<int>(Width)); CenterStr(strOutFileName,strOutFileName,static_cast<int>(Width)); const wchar_t* Progress1 = nullptr; const wchar_t* Progress2 = nullptr; if(!strWipeProgress.IsEmpty()) { Progress1 = strWipeProgress.CPtr(); Progress2 = strProgress.IsEmpty()? nullptr : strProgress.CPtr(); } else { Progress1 = strProgress.IsEmpty()? nullptr : strProgress.CPtr(); } Message(0,0, MSG((Mode==DEL_WIPE || Mode==DEL_WIPEPROCESS)?MDeleteWipeTitle:MDeleteTitle), Mode==DEL_SCAN? MSG(MScanningFolder) : MSG((Mode==DEL_WIPE || Mode==DEL_WIPEPROCESS)?MDeletingWiping:MDeleting), strOutFileName, Progress1, Progress2); PreRedrawItem preRedrawItem=PreRedraw.Peek(); preRedrawItem.Param.Param1=static_cast<void*>(const_cast<wchar_t*>(Name)); preRedrawItem.Param.Param4=ToPtr(Mode); LARGE_INTEGER i = {(DWORD)Percent, (LONG)WipePercent}; preRedrawItem.Param.Param5=i.QuadPart; PreRedraw.SetParam(preRedrawItem.Param); }