mirror of https://github.com/qt/qtdoc.git
37 lines
1.0 KiB
C++
37 lines
1.0 KiB
C++
// Copyright (C) 2023 The Qt Company Ltd.
|
|
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
|
|
|
|
#include "recentfilemenu.h"
|
|
#include "recentfiles.h"
|
|
|
|
#include <QAction>
|
|
|
|
RecentFileMenu::RecentFileMenu(QWidget *parent, RecentFiles *recent) :
|
|
QMenu(parent), m_recentFiles(recent)
|
|
{
|
|
Q_ASSERT(recent);
|
|
connect(m_recentFiles, &RecentFiles::changed, this, &RecentFileMenu::updateList);
|
|
connect(m_recentFiles, &QObject::destroyed, this, &QObject::deleteLater);
|
|
updateList();
|
|
}
|
|
|
|
void RecentFileMenu::updateList()
|
|
{
|
|
QList<QAction *> acts = actions();
|
|
qDeleteAll(acts);
|
|
|
|
if (m_recentFiles->isEmpty()) {
|
|
addAction(tr("<no recent files>"));
|
|
return;
|
|
}
|
|
|
|
for (const QString &fileName : m_recentFiles->recentFiles()) {
|
|
QAction *action = addAction(fileName);
|
|
connect(action, &QAction::triggered, this, [&](){
|
|
QAction *action = qobject_cast<QAction *>(sender());
|
|
Q_ASSERT(action);
|
|
emit fileOpened(action->text());
|
|
});
|
|
}
|
|
}
|