void KateBuildView::slotPluginViewCreated (const QString &name, QObject *pluginView) { // add view if (name == QLatin1String("kateprojectplugin")) { m_projectPluginView = pluginView; slotProjectMapChanged (); connect (pluginView, SIGNAL(projectMapChanged()), this, SLOT(slotProjectMapChanged())); } }
bool KateProject::reload (bool force) { /** * open the file for reading, bail out on error! */ QFile file (m_fileName); if (!file.open (QFile::ReadOnly)) return false; /** * parse the whole file, bail out again on error! */ bool ok = true; QJson::Parser parser; QVariant project = parser.parse (&file, &ok); if (!ok) return false; /** * now: get global group */ QVariantMap globalProject = project.toMap (); /** * no name, bad => bail out */ if (globalProject["name"].toString().isEmpty()) return false; /** * support out-of-source project files */ if (!globalProject["directory"].toString().isEmpty()) m_baseDir = QFileInfo (globalProject["directory"].toString()).canonicalFilePath (); /** * anything changed? * else be done without forced reload! */ if (!force && (m_projectMap == globalProject)) return true; /** * setup global attributes in this object */ m_projectMap = globalProject; /** * emit that we changed stuff */ emit projectMapChanged (); /** * trigger worker to REALLY load the project model and stuff */ QMetaObject::invokeMethod (m_worker, "loadProject", Qt::QueuedConnection, Q_ARG(QString, m_baseDir), Q_ARG(QVariantMap, m_projectMap)); /** * done ok ;) */ return true; }