@@ -450,7 +450,7 @@ void Application::updateRecentProjects(const FilePath& projectSettingsFilePath)
|
||||
}
|
||||
|
||||
recentProjects.insert(recentProjects.begin(), projectSettingsFilePath);
|
||||
while (static_cast<int>(recentProjects.size()) > appSettings->getMaxRecentProjectsCount())
|
||||
while (recentProjects.size() > appSettings->getMaxRecentProjectsCount())
|
||||
{
|
||||
recentProjects.pop_back();
|
||||
}
|
||||
|
||||
@@ -138,7 +138,7 @@ bool ApplicationSettings::operator==(const ApplicationSettings& other) const
|
||||
utility::isPermutation<FilePath>(getFrameworkSearchPaths(), other.getFrameworkSearchPaths());
|
||||
}
|
||||
|
||||
int ApplicationSettings::getMaxRecentProjectsCount() const
|
||||
size_t ApplicationSettings::getMaxRecentProjectsCount() const
|
||||
{
|
||||
return 7;
|
||||
}
|
||||
|
||||
@@ -22,7 +22,7 @@ public:
|
||||
|
||||
bool operator==(const ApplicationSettings& other) const;
|
||||
|
||||
int getMaxRecentProjectsCount() const;
|
||||
size_t getMaxRecentProjectsCount() const;
|
||||
|
||||
// application
|
||||
std::string getFontName() const;
|
||||
|
||||
@@ -138,7 +138,7 @@ void QtMainView::activateWindow()
|
||||
|
||||
void QtMainView::updateRecentProjectMenu()
|
||||
{
|
||||
m_onQtThread([=]() { m_window->updateRecentProjectMenu(); });
|
||||
m_onQtThread([=]() { m_window->updateRecentProjectsMenu(); });
|
||||
}
|
||||
|
||||
void QtMainView::updateHistoryMenu(std::shared_ptr<MessageBase> message)
|
||||
|
||||
@@ -137,9 +137,6 @@ QtMainWindow::QtMainWindow()
|
||||
.c_str());
|
||||
}
|
||||
|
||||
m_recentProjectAction =
|
||||
new QAction*[ApplicationSettings::getInstance()->getMaxRecentProjectsCount()];
|
||||
|
||||
setupProjectMenu();
|
||||
setupEditMenu();
|
||||
setupViewMenu();
|
||||
@@ -154,11 +151,6 @@ QtMainWindow::QtMainWindow()
|
||||
|
||||
QtMainWindow::~QtMainWindow()
|
||||
{
|
||||
if (m_recentProjectAction)
|
||||
{
|
||||
delete[] m_recentProjectAction;
|
||||
}
|
||||
|
||||
for (DockWidget& dockWidget: m_dockWidgets)
|
||||
{
|
||||
dockWidget.toggle->clear();
|
||||
@@ -762,21 +754,23 @@ void QtMainWindow::openRecentProject()
|
||||
}
|
||||
}
|
||||
|
||||
void QtMainWindow::updateRecentProjectMenu()
|
||||
void QtMainWindow::updateRecentProjectsMenu()
|
||||
{
|
||||
std::vector<FilePath> recentProjects = ApplicationSettings::getInstance()->getRecentProjects();
|
||||
for (int i = 0; i < ApplicationSettings::getInstance()->getMaxRecentProjectsCount(); i++)
|
||||
m_recentProjectsMenu->clear();
|
||||
|
||||
const std::vector<FilePath> recentProjects = ApplicationSettings::getInstance()->getRecentProjects();
|
||||
const size_t recentProjectsCount = ApplicationSettings::getInstance()->getMaxRecentProjectsCount();
|
||||
|
||||
for (size_t i = 0; i < recentProjects.size() && i < recentProjectsCount; ++i)
|
||||
{
|
||||
if ((size_t)i < recentProjects.size() && recentProjects[i].exists())
|
||||
const FilePath& project = recentProjects[i];
|
||||
if (project.exists())
|
||||
{
|
||||
FilePath project = recentProjects[i];
|
||||
m_recentProjectAction[i]->setVisible(true);
|
||||
m_recentProjectAction[i]->setText(QString::fromStdWString(project.fileName()));
|
||||
m_recentProjectAction[i]->setData(QString::fromStdWString(project.wstr()));
|
||||
}
|
||||
else
|
||||
{
|
||||
m_recentProjectAction[i]->setVisible(false);
|
||||
QAction* recentProject = new QAction(this);
|
||||
recentProject->setText(QString::fromStdWString(project.fileName()));
|
||||
recentProject->setData(QString::fromStdWString(project.wstr()));
|
||||
connect(recentProject, &QAction::triggered, this, &QtMainWindow::openRecentProject);
|
||||
m_recentProjectsMenu->addAction(recentProject);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -840,20 +834,9 @@ void QtMainWindow::setupProjectMenu()
|
||||
menu->addAction(tr("&New Project..."), this, &QtMainWindow::newProject, QKeySequence::New);
|
||||
menu->addAction(tr("&Open Project..."), this, &QtMainWindow::openProject, QKeySequence::Open);
|
||||
|
||||
QMenu* recentProjectMenu = new QMenu(tr("Recent Projects"));
|
||||
menu->addMenu(recentProjectMenu);
|
||||
|
||||
for (int i = 0; i < ApplicationSettings::getInstance()->getMaxRecentProjectsCount(); ++i)
|
||||
{
|
||||
m_recentProjectAction[i] = new QAction(this);
|
||||
m_recentProjectAction[i]->setVisible(false);
|
||||
connect(
|
||||
m_recentProjectAction[i], &QAction::triggered, this, &QtMainWindow::openRecentProject);
|
||||
recentProjectMenu->addAction(m_recentProjectAction[i]);
|
||||
}
|
||||
updateRecentProjectMenu();
|
||||
|
||||
menu->addMenu(recentProjectMenu);
|
||||
m_recentProjectsMenu = new QMenu(tr("Recent Projects"));
|
||||
menu->addMenu(m_recentProjectsMenu);
|
||||
updateRecentProjectsMenu();
|
||||
|
||||
menu->addSeparator();
|
||||
|
||||
|
||||
@@ -147,7 +147,7 @@ public slots:
|
||||
void resetWindowLayout();
|
||||
|
||||
void openRecentProject();
|
||||
void updateRecentProjectMenu();
|
||||
void updateRecentProjectsMenu();
|
||||
|
||||
void toggleView(View* view, bool fromMenu);
|
||||
|
||||
@@ -194,7 +194,8 @@ private:
|
||||
QMenu* m_bookmarksMenu;
|
||||
std::vector<std::shared_ptr<Bookmark>> m_bookmarks;
|
||||
|
||||
QAction** m_recentProjectAction;
|
||||
QMenu* m_recentProjectsMenu;
|
||||
|
||||
QAction* m_showTitleBarsAction;
|
||||
|
||||
bool m_showDockWidgetTitleBars;
|
||||
|
||||
@@ -64,9 +64,7 @@ void QtRecentProjectButton::handleButtonClick()
|
||||
{
|
||||
std::vector<FilePath> recentProjects =
|
||||
ApplicationSettings::getInstance()->getRecentProjects();
|
||||
const int maxRecentProjectsCount =
|
||||
ApplicationSettings::getInstance()->getMaxRecentProjectsCount();
|
||||
for (int i = 0; i < maxRecentProjectsCount; i++)
|
||||
for (size_t i = 0; i < recentProjects.size(); ++i)
|
||||
{
|
||||
if (recentProjects[i].wstr() == m_projectFilePath.wstr())
|
||||
{
|
||||
@@ -269,7 +267,7 @@ void QtStartScreen::setupStartScreen()
|
||||
|
||||
col->addSpacing(20);
|
||||
|
||||
for (int i = 0; i < ApplicationSettings::getInstance()->getMaxRecentProjectsCount(); i++)
|
||||
for (size_t i = 0; i < ApplicationSettings::getInstance()->getMaxRecentProjectsCount(); ++i)
|
||||
{
|
||||
QtRecentProjectButton* button = new QtRecentProjectButton(this);
|
||||
button->setAttribute(Qt::WA_LayoutUsesWidgetRect); // fixes layouting on Mac
|
||||
|
||||
Reference in New Issue
Block a user