Simplify TemplatesMenu class (#5155)
This commit is contained in:
@@ -12,12 +12,10 @@ public:
|
||||
virtual ~TemplatesMenu() = default;
|
||||
|
||||
private slots:
|
||||
void createNewProjectFromTemplate( QAction * _idx );
|
||||
static void createNewProjectFromTemplate(QAction * _action);
|
||||
void fillTemplatesMenu();
|
||||
int addTemplatesFromDir( const QDir& dir );
|
||||
void addTemplatesFromDir( const QDir& dir );
|
||||
|
||||
private:
|
||||
int m_customTemplatesCount;
|
||||
};
|
||||
|
||||
#endif // TEMPLATESMENU_H
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user