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); }
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); }