示例#1
0
	void Core::AddPlugin (QObject *pluginObj)
	{
		auto ip2 = qobject_cast<IPlugin2*> (pluginObj);
		auto ilmpPlug = qobject_cast<ILMPPlugin*> (pluginObj);

		if (!ilmpPlug)
		{
			qWarning () << Q_FUNC_INFO
					<< pluginObj
					<< "doesn't implement ILMPPlugin";
			return;
		}

		ilmpPlug->SetLMPProxy (ILMPProxy_Ptr (new LMPProxy ()));

		const auto& classes = ip2->GetPluginClasses ();
		if (classes.contains ("org.LeechCraft.LMP.CollectionSync") &&
			qobject_cast<ISyncPlugin*> (pluginObj))
			SyncPlugins_ << pluginObj;

		if (classes.contains ("org.LeechCraft.LMP.CloudStorage") &&
			qobject_cast<ICloudStoragePlugin*> (pluginObj))
		{
			CloudPlugins_ << pluginObj;
			emit cloudStoragePluginsChanged ();
		}

		if (classes.contains ("org.LeechCraft.LMP.PlaylistProvider") &&
			qobject_cast<IPlaylistProvider*> (pluginObj))
			PLManager_->AddProvider (pluginObj);
	}
示例#2
0
	void NewTabMenuManager::InsertAction (QAction *act)
	{
		auto pObj = act->property ("PluginObj").value<QObject*> ();

		auto ip2 = qobject_cast<IPlugin2*> (pObj);
		if (!ip2)
		{
			InsertActionWParent (act, pObj, false);
			return;
		}

		const auto pm = Core::Instance ().GetPluginManager ();
		for (auto plugin : pm->GetFirstLevels (ip2->GetPluginClasses ()))
			InsertActionWParent (act, plugin, true);
	}