mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-03-22 23:05:36 +08:00
Ref T199, added some utility functions
* tag object can be read from data directory * isNull * some renamings
This commit is contained in:
@@ -33,7 +33,7 @@ namespace BlackMisc
|
||||
names.reserve(size());
|
||||
for (const CApplicationInfo &info : *this)
|
||||
{
|
||||
names.append(info.processInfo().processName());
|
||||
names.append(info.getProcessInfo().processName());
|
||||
}
|
||||
return names;
|
||||
}
|
||||
|
||||
@@ -95,23 +95,54 @@ namespace BlackMisc
|
||||
return p;
|
||||
}
|
||||
|
||||
QFileInfoList CDirectoryUtils::applicationDataDirectories()
|
||||
const QFileInfoList &CDirectoryUtils::applicationDataDirectories()
|
||||
{
|
||||
QDir swiftAppData(CDirectoryUtils::applicationDataDirectory()); // contains 1..n subdirs
|
||||
if (!swiftAppData.isReadable()) return QFileInfoList();
|
||||
return swiftAppData.entryInfoList({}, QDir::Dirs | QDir::NoDotAndDotDot, QDir::Time);
|
||||
static const QFileInfoList fileInfoList([]
|
||||
{
|
||||
const QDir swiftAppData(CDirectoryUtils::applicationDataDirectory()); // contains 1..n subdirs
|
||||
if (!swiftAppData.isReadable()) return QFileInfoList();
|
||||
return swiftAppData.entryInfoList({}, QDir::Dirs | QDir::NoDotAndDotDot, QDir::Time);
|
||||
}());
|
||||
return fileInfoList;
|
||||
}
|
||||
|
||||
QStringList CDirectoryUtils::applicationDataDirectoryList(bool withoutCurrent, bool beautify)
|
||||
int CDirectoryUtils::applicationDataDirectoriesCount()
|
||||
{
|
||||
return CDirectoryUtils::applicationDataDirectories().size();
|
||||
}
|
||||
|
||||
QStringList CDirectoryUtils::applicationDataDirectoryList(bool withoutCurrent, bool decodedDirName)
|
||||
{
|
||||
QStringList dirs;
|
||||
const QFileInfoList directories(CDirectoryUtils::applicationDataDirectories());
|
||||
for (const QFileInfo &info : directories)
|
||||
for (const QFileInfo &info : CDirectoryUtils::applicationDataDirectories())
|
||||
{
|
||||
if (withoutCurrent && info.filePath().contains(normalizedApplicationDirectory(), Qt::CaseInsensitive)) continue;
|
||||
dirs.append(beautify ?
|
||||
CDirectoryUtils::decodeNormalizedDirectory(info.fileName()) :
|
||||
info.fileName());
|
||||
dirs.append(decodedDirName ?
|
||||
CDirectoryUtils::decodeNormalizedDirectory(info.filePath()) :
|
||||
info.filePath());
|
||||
}
|
||||
return dirs;
|
||||
}
|
||||
|
||||
QMap<QString, CApplicationInfo> CDirectoryUtils::applicationDataDirectoryMap(bool withoutCurrent)
|
||||
{
|
||||
static const CApplicationInfo nullInfo;
|
||||
QMap<QString, CApplicationInfo> dirs;
|
||||
|
||||
for (const QFileInfo &info : CDirectoryUtils::applicationDataDirectories())
|
||||
{
|
||||
if (withoutCurrent && info.filePath().contains(normalizedApplicationDirectory(), Qt::CaseInsensitive)) continue;
|
||||
const QString appInfoFile = CFileUtils::appendFilePaths(info.filePath(), CApplicationInfo::fileName());
|
||||
const QString appInfoJson = CFileUtils::readFileToString(appInfoFile);
|
||||
if (appInfoJson.isEmpty())
|
||||
{
|
||||
dirs.insert(info.filePath(), nullInfo);
|
||||
}
|
||||
else
|
||||
{
|
||||
const CApplicationInfo appInfo = CApplicationInfo::fromJson(appInfoJson);
|
||||
dirs.insert(info.filePath(), appInfo);
|
||||
}
|
||||
}
|
||||
return dirs;
|
||||
}
|
||||
|
||||
@@ -12,7 +12,9 @@
|
||||
#ifndef BLACKMISC_DIRECTORYUTILS_H
|
||||
#define BLACKMISC_DIRECTORYUTILS_H
|
||||
|
||||
#include "blackmisc/blackmiscexport.h"
|
||||
#include "applicationinfo.h"
|
||||
#include "blackmiscexport.h"
|
||||
#include <QMap>
|
||||
#include <QSet>
|
||||
#include <QString>
|
||||
#include <QFileInfoList>
|
||||
@@ -41,10 +43,16 @@ namespace BlackMisc
|
||||
static const QString &applicationDataDirectory();
|
||||
|
||||
//! swift application data sub directories
|
||||
static QFileInfoList applicationDataDirectories();
|
||||
static const QFileInfoList &applicationDataDirectories();
|
||||
|
||||
//! number of data directories (including this version)
|
||||
static int applicationDataDirectoriesCount();
|
||||
|
||||
//! swift application data sub directories
|
||||
static QStringList applicationDataDirectoryList(bool withoutCurrent = false, bool beautify = false);
|
||||
static QStringList applicationDataDirectoryList(bool withoutCurrent = false, bool decodedDirName = false);
|
||||
|
||||
//! swift application data sub directories with info if available
|
||||
static QMap<QString, CApplicationInfo> applicationDataDirectoryMap(bool withoutCurrent = false);
|
||||
|
||||
//! Is MacOS application bundle?
|
||||
//! \remark: Means the currently running executable is a MacOS bundle, but not all our executables are bundles on MacOS
|
||||
|
||||
@@ -42,6 +42,9 @@ namespace BlackMisc
|
||||
//! Get the pid.
|
||||
qint64 processId() const { return m_pid; }
|
||||
|
||||
//! Empty process info
|
||||
bool isNull() const { return m_pid == 0 && m_name.isEmpty(); }
|
||||
|
||||
//! Get the process name.
|
||||
const QString &processName() const { return m_name; }
|
||||
|
||||
|
||||
Reference in New Issue
Block a user