コード例 #1
0
ファイル: executer.cpp プロジェクト: niconil/actionaz
Executer::Executer(QObject *parent) :
	QObject(parent),
	mActionFactory(new ActionTools::ActionFactory(this)),
	mActionLoadingFailed(false)
{
	connect(mActionFactory, SIGNAL(actionPackLoadError(QString)), this, SLOT(actionPackLoadError(QString)));
}
コード例 #2
0
	void ActionFactory::loadActionPack(const QString &filename, const QString &locale)
	{
		QPluginLoader pluginLoader(filename);
		QObject *actionPackObject = pluginLoader.instance();
		QString shortFilename = QFileInfo(filename).baseName();

		if(!actionPackObject)
		{
			emit actionPackLoadError(tr("%1: \"%2\"").arg(shortFilename).arg(pluginLoader.errorString()));
			return;
		}

		ActionPack *actionPack = qobject_cast<ActionPack *>(actionPackObject);
		if(!actionPack)
		{
            emit actionPackLoadError(tr("%1: invalid definition version").arg(shortFilename));
			return;
		}

        Tools::installTranslator(QString("actionpack%1").arg(actionPack->id()), locale);

		actionPack->createDefinitions();

        for(ActionDefinition *definition: actionPack->actionsDefinitions())
		{
			if(actionDefinition(definition->id()))
			{
				emit actionPackLoadError(tr("%1: <b>%2</b> already loaded").arg(shortFilename).arg(definition->id()));
				continue;
			}

			if(definition->worksUnderThisOS())
			{
				QStringList missingFeatures;
				if(!definition->requirementCheck(missingFeatures))
				{
					emit actionPackLoadError(tr("%1: <b>%2</b> cannot be loaded:<ul><li>%3</ul>")
									   .arg(shortFilename)
									   .arg(definition->id())
									   .arg(missingFeatures.join("<li>")));
					continue;
				}
			}

			mActionDefinitions << definition;
		}

		actionPack->setFilename(filename);

		mActionPacks << actionPack;
	}