mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-12 23:35:33 +08:00
XSwiftBus install dialog (for local environment)
* can also be called from menu * improved file check * renamed some functions
This commit is contained in:
@@ -300,7 +300,7 @@ namespace BlackMisc
|
||||
return result;
|
||||
}
|
||||
|
||||
QFileInfo CFileUtils::findNewestFile(const QDir &dir, bool recursive, const QStringList &nameFilters, const QStringList &excludeDirectories)
|
||||
QFileInfo CFileUtils::findLastModified(const QDir &dir, bool recursive, const QStringList &nameFilters, const QStringList &excludeDirectories)
|
||||
{
|
||||
if (isExcludedDirectory(dir, excludeDirectories)) { return QString(); }
|
||||
const QFileInfoList files = enumerateFiles(dir, recursive, nameFilters, excludeDirectories);
|
||||
@@ -313,6 +313,19 @@ namespace BlackMisc
|
||||
return *it;
|
||||
}
|
||||
|
||||
QFileInfo CFileUtils::findLastCreated(const QDir &dir, bool recursive, const QStringList &nameFilters, const QStringList &excludeDirectories)
|
||||
{
|
||||
if (isExcludedDirectory(dir, excludeDirectories)) { return QString(); }
|
||||
const QFileInfoList files = enumerateFiles(dir, recursive, nameFilters, excludeDirectories);
|
||||
if (files.isEmpty()) { return {}; }
|
||||
|
||||
auto it = std::max_element(files.cbegin(), files.cend(), [](const QFileInfo & a, const QFileInfo & b)
|
||||
{
|
||||
return a.created() < b.created();
|
||||
});
|
||||
return *it;
|
||||
}
|
||||
|
||||
const QStringList &CFileUtils::getSwiftExecutables()
|
||||
{
|
||||
static const QStringList executables(
|
||||
|
||||
@@ -125,8 +125,11 @@ namespace BlackMisc
|
||||
//! Returns list of all files in dir, optionally matching a wildcard and predicate.
|
||||
static QFileInfoList enumerateFiles(const QDir &dir, bool recursive, const QStringList &nameFilters = {}, const QStringList &excludeDirectories = {}, std::function<bool(const QFileInfo &)> predicate = {});
|
||||
|
||||
//! Returns path to the newest file in dir, optionally matching a wildcard, or empty string.
|
||||
static QFileInfo findNewestFile(const QDir &dir, bool recursive, const QStringList &nameFilters = {}, const QStringList &excludeDirectories = {});
|
||||
//! Returns path to the last modifed file in dir, optionally matching a wildcard, or empty string.
|
||||
static QFileInfo findLastModified(const QDir &dir, bool recursive, const QStringList &nameFilters = {}, const QStringList &excludeDirectories = {});
|
||||
|
||||
//! Returns path to the last created file in dir, optionally matching a wildcard, or empty string.
|
||||
static QFileInfo findLastCreated(const QDir &dir, bool recursive, const QStringList &nameFilters = {}, const QStringList &excludeDirectories = {});
|
||||
|
||||
//! Get all swift executables
|
||||
static const QStringList &getSwiftExecutables();
|
||||
|
||||
@@ -205,6 +205,13 @@ namespace BlackMisc
|
||||
return {};
|
||||
}
|
||||
|
||||
bool CXPlaneUtil::hasXSwiftBusBuildAndPluginDir(const QString &xplaneRootDir)
|
||||
{
|
||||
if (CDirectoryUtils::getXSwiftBusBuildDirectory().isEmpty()) { return false; }
|
||||
const QString xswiftBusPluginDir = CXPlaneUtil::xswiftbusPluginDir(xplaneRootDir);
|
||||
return (!xswiftBusPluginDir.isEmpty());
|
||||
}
|
||||
|
||||
QStringList CXPlaneUtil::findConflictingPlugins(const QString &pluginDir)
|
||||
{
|
||||
const QStringList files = findAllXplFiles(pluginDir);
|
||||
@@ -246,10 +253,10 @@ namespace BlackMisc
|
||||
const QString xswiftBusPluginDir = CXPlaneUtil::xswiftbusPluginDir(xplaneRootDir);
|
||||
if (xswiftBusPluginDir.isEmpty()) { return false; }
|
||||
|
||||
const QFileInfo fiLatestBuild = CFileUtils::findNewestFile(CDirectoryUtils::getXSwiftBusBuildDirectory(), true, xplFileFilter());
|
||||
const QFileInfo fiLatestBuild = CFileUtils::findLastModified(CDirectoryUtils::getXSwiftBusBuildDirectory(), true, xplFileFilter());
|
||||
if (!fiLatestBuild.lastModified().isValid()) { return false; }
|
||||
|
||||
const QFileInfo fiLatestDeployed = CFileUtils::findNewestFile(xswiftBusPluginDir, true, xplFileFilter());
|
||||
const QFileInfo fiLatestDeployed = CFileUtils::findLastModified(xswiftBusPluginDir, true, xplFileFilter());
|
||||
if (!fiLatestDeployed.lastModified().isValid()) { return true; } // not yet existing
|
||||
|
||||
// newer?
|
||||
|
||||
@@ -74,6 +74,9 @@ namespace BlackMisc
|
||||
//! XSwiftBus legacy directory
|
||||
static QString xswiftbusLegacyDir(const QString &xplaneRootDir = CXPlaneUtil::xplaneRootDir());
|
||||
|
||||
//! Both directories, plugin and
|
||||
static bool hasXSwiftBusBuildAndPluginDir(const QString &xplaneRootDir);
|
||||
|
||||
//! Finds conflicting plugins
|
||||
//! \remark uses CXPlaneUtil::xplanePluginPath as default
|
||||
static QStringList findConflictingPlugins(const QString &pluginDir = {});
|
||||
|
||||
Reference in New Issue
Block a user