Ref T199, added some utility functions

* tag object can be read from data directory
* isNull
* some renamings
This commit is contained in:
Klaus Basan
2017-12-25 13:10:15 +01:00
parent 60b90d6582
commit 9ec3d69eaa
4 changed files with 56 additions and 14 deletions

View File

@@ -33,7 +33,7 @@ namespace BlackMisc
names.reserve(size()); names.reserve(size());
for (const CApplicationInfo &info : *this) for (const CApplicationInfo &info : *this)
{ {
names.append(info.processInfo().processName()); names.append(info.getProcessInfo().processName());
} }
return names; return names;
} }

View File

@@ -95,23 +95,54 @@ namespace BlackMisc
return p; return p;
} }
QFileInfoList CDirectoryUtils::applicationDataDirectories() const QFileInfoList &CDirectoryUtils::applicationDataDirectories()
{ {
QDir swiftAppData(CDirectoryUtils::applicationDataDirectory()); // contains 1..n subdirs static const QFileInfoList fileInfoList([]
if (!swiftAppData.isReadable()) return QFileInfoList(); {
return swiftAppData.entryInfoList({}, QDir::Dirs | QDir::NoDotAndDotDot, QDir::Time); 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; QStringList dirs;
const QFileInfoList directories(CDirectoryUtils::applicationDataDirectories()); for (const QFileInfo &info : CDirectoryUtils::applicationDataDirectories())
for (const QFileInfo &info : directories)
{ {
if (withoutCurrent && info.filePath().contains(normalizedApplicationDirectory(), Qt::CaseInsensitive)) continue; if (withoutCurrent && info.filePath().contains(normalizedApplicationDirectory(), Qt::CaseInsensitive)) continue;
dirs.append(beautify ? dirs.append(decodedDirName ?
CDirectoryUtils::decodeNormalizedDirectory(info.fileName()) : CDirectoryUtils::decodeNormalizedDirectory(info.filePath()) :
info.fileName()); 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; return dirs;
} }

View File

@@ -12,7 +12,9 @@
#ifndef BLACKMISC_DIRECTORYUTILS_H #ifndef BLACKMISC_DIRECTORYUTILS_H
#define BLACKMISC_DIRECTORYUTILS_H #define BLACKMISC_DIRECTORYUTILS_H
#include "blackmisc/blackmiscexport.h" #include "applicationinfo.h"
#include "blackmiscexport.h"
#include <QMap>
#include <QSet> #include <QSet>
#include <QString> #include <QString>
#include <QFileInfoList> #include <QFileInfoList>
@@ -41,10 +43,16 @@ namespace BlackMisc
static const QString &applicationDataDirectory(); static const QString &applicationDataDirectory();
//! swift application data sub directories //! 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 //! 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? //! Is MacOS application bundle?
//! \remark: Means the currently running executable is a MacOS bundle, but not all our executables are bundles on MacOS //! \remark: Means the currently running executable is a MacOS bundle, but not all our executables are bundles on MacOS

View File

@@ -42,6 +42,9 @@ namespace BlackMisc
//! Get the pid. //! Get the pid.
qint64 processId() const { return m_pid; } qint64 processId() const { return m_pid; }
//! Empty process info
bool isNull() const { return m_pid == 0 && m_name.isEmpty(); }
//! Get the process name. //! Get the process name.
const QString &processName() const { return m_name; } const QString &processName() const { return m_name; }