Simplify TemplatesMenu class (#5155)

This commit is contained in:
Winnie
2019-08-28 22:51:54 +02:00
committed by Lukas W
parent 605aef7afc
commit e803a31a90
2 changed files with 24 additions and 32 deletions

View File

@@ -1,14 +1,15 @@
#include "TemplatesMenu.h"
#include "GuiApplication.h"
#include "ConfigManager.h"
#include "Engine.h"
#include "embed.h"
#include "MainWindow.h"
#include "Song.h"
#include "embed.h"
#include "GuiApplication.h"
#include "MainWindow.h"
TemplatesMenu::TemplatesMenu(QWidget *parent) :
QMenu(tr("New from template"), parent),
m_customTemplatesCount(0)
QMenu(tr("New from template"), parent)
{
connect( this, SIGNAL( aboutToShow() ), SLOT( fillTemplatesMenu() ) );
connect( this, SIGNAL( triggered( QAction * ) ),
@@ -18,18 +19,12 @@ TemplatesMenu::TemplatesMenu(QWidget *parent) :
void TemplatesMenu::createNewProjectFromTemplate( QAction * _idx )
void TemplatesMenu::createNewProjectFromTemplate(QAction * _action)
{
if( gui->mainWindow()->mayChangeProject(true) )
{
int indexOfTemplate = actions().indexOf( _idx );
bool isFactoryTemplate = indexOfTemplate >= m_customTemplatesCount;
QString dirBase = isFactoryTemplate ?
ConfigManager::inst()->factoryTemplatesDir() :
ConfigManager::inst()->userTemplateDir();
const QString f = dirBase + _idx->text().replace("&&", "&") + ".mpt";
Engine::getSong()->createNewProjectFromTemplate(f);
const QString& templateFilePath = _action->data().toString();
Engine::getSong()->createNewProjectFromTemplate(templateFilePath);
}
}
@@ -41,33 +36,32 @@ void TemplatesMenu::fillTemplatesMenu()
{
clear();
m_customTemplatesCount = addTemplatesFromDir(ConfigManager::inst()->userTemplateDir() );
addTemplatesFromDir( ConfigManager::inst()->factoryProjectsDir() + "templates" );
addTemplatesFromDir(ConfigManager::inst()->userTemplateDir());
addTemplatesFromDir(ConfigManager::inst()->factoryProjectsDir() + "templates");
}
int TemplatesMenu::addTemplatesFromDir( const QDir& dir ) {
QStringList templates = dir.entryList( QStringList( "*.mpt" ),
void TemplatesMenu::addTemplatesFromDir( const QDir& dir ) {
QFileInfoList templates = dir.entryInfoList( QStringList( "*.mpt" ),
QDir::Files | QDir::Readable );
if ( templates.size() && ! actions().isEmpty() )
if (!templates.empty() && !actions().isEmpty())
{
addSeparator();
}
for( QStringList::iterator it = templates.begin();
it != templates.end(); ++it )
auto projectFileIcon = embed::getIconPixmap( "project_file" );
for(const QFileInfo& templateFile : templates)
{
addAction(
embed::getIconPixmap( "project_file" ),
( *it ).left( ( *it ).length() - 4 ).replace("&", "&&") );
auto action = addAction(projectFileIcon,
templateFile.completeBaseName().replace("&", "&&"));
action->setData(templateFile.absoluteFilePath());
#ifdef LMMS_BUILD_APPLE
actions().last()->setIconVisibleInMenu(false); // QTBUG-44565 workaround
actions().last()->setIconVisibleInMenu(true);
action->setIconVisibleInMenu(false); // QTBUG-44565 workaround
action->setIconVisibleInMenu(true);
#endif
}
return templates.size();
}