Add "Clear Recent files list" item (#22638)

* Add "Clear Recent files" item

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Chris Hennes <chennes@pioneerlibrarysystem.org>
This commit is contained in:
xtemp09
2025-07-23 11:11:48 +07:00
committed by GitHub
parent 163a4a4a2d
commit 2d12f2d9d8
3 changed files with 51 additions and 0 deletions

View File

@@ -858,6 +858,32 @@ RecentFilesAction::RecentFilesAction ( Command* pcCmd, QObject * parent )
{
_pimpl = std::make_unique<Private>(this, "User parameter:BaseApp/Preferences/RecentFiles");
restore();
sep.setSeparator(true);
sep.setToolTip({});
this->groupAction()->addAction(&sep);
//: Empties the list of recent files
clearRecentFilesListAction.setText(tr("Clear Recent Files"));
clearRecentFilesListAction.setToolTip({});
this->groupAction()->addAction(&clearRecentFilesListAction);
auto clearFun = [this, hGrp = _pimpl->handle](){
const size_t recentFilesListSize = hGrp->GetASCIIs("MRU").size();
for (size_t i = 0; i < recentFilesListSize; i++)
{
const QByteArray key = QStringLiteral("MRU%1").arg(i).toLocal8Bit();
hGrp->SetASCII(key.data(), "");
}
restore();
clearRecentFilesListAction.setEnabled(false);
};
connect(&clearRecentFilesListAction, &QAction::triggered,
this, clearFun);
connect(&clearRecentFilesListAction, &QAction::triggered,
this, &RecentFilesAction::recentFilesListModified);
}
RecentFilesAction::~RecentFilesAction()
@@ -878,6 +904,10 @@ void RecentFilesAction::appendFile(const QString& filename)
save();
_pimpl->trySaveUserParameter();
clearRecentFilesListAction.setEnabled(true);
Q_EMIT recentFilesListModified();
}
static QString numberToLabel(int number) {
@@ -921,6 +951,9 @@ void RecentFilesAction::setFiles(const QStringList& files)
// if less file names than actions
numRecentFiles = std::min<int>(numRecentFiles, this->visibleItems);
for (int index = numRecentFiles; index < recentFiles.count(); index++) {
if (recentFiles[index] == &sep || recentFiles[index] == &clearRecentFilesListAction) {
continue;
}
recentFiles[index]->setVisible(false);
recentFiles[index]->setText(QString());
recentFiles[index]->setToolTip(QString());