swift
cachesettingsutils.cpp
1 // SPDX-FileCopyrightText: Copyright (C) 2018 swift Project Community / Contributors
2 // SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-swift-pilot-client-1
3 
5 
6 #include <QRegularExpression>
7 
8 #include "misc/datacache.h"
9 #include "misc/settingscache.h"
10 
11 namespace swift::misc
12 {
13  bool CCacheSettingsUtils::isSetting(const QString &fileName)
14  {
15  if (!fileName.contains(CSettingsCache::relativeFilePath())) { return false; }
16  return fileName.contains(binSettings(), Qt::CaseInsensitive);
17  }
18 
19  bool CCacheSettingsUtils::isCache(const QString &fileName)
20  {
21  if (!fileName.contains(CDataCache::relativeFilePath())) { return false; }
22  return fileName.contains(binData(), Qt::CaseInsensitive);
23  }
24 
26  {
27  static const QString s("bin/settings/");
28  return s;
29  }
30 
32  {
33  static const QString s("bin/data/");
34  return s;
35  }
36 
37  QString CCacheSettingsUtils::relativeSettingsPath(const QString &fileName)
38  {
39  if (!isSetting(fileName)) { return QString(); }
40  const int index = fileName.lastIndexOf(binSettings());
41  if (index < 0) { return QString(); }
42  return fileName.mid(index);
43  }
44 
45  QString CCacheSettingsUtils::relativeCachePath(const QString &fileName)
46  {
47  if (!isCache(fileName)) { return QString(); }
48  const int index = fileName.lastIndexOf(binData());
49  if (index < 0) { return QString(); }
50  return fileName.mid(index);
51  }
52 
54  const QString &mySettingFile)
55  {
56  const QString relativeMySetting = relativeSettingsPath(mySettingFile);
57  return otherVersionFileName(info, relativeMySetting);
58  }
59 
60  QString CCacheSettingsUtils::otherVersionCacheFileName(const CApplicationInfo &info, const QString &myCacheFile)
61  {
62  const QString relativeMyCache = relativeCachePath(myCacheFile);
63  return otherVersionFileName(info, relativeMyCache);
64  }
65 
66  bool CCacheSettingsUtils::hasOtherVersionSettingsFile(const CApplicationInfo &info, const QString &mySettingFile)
67  {
68  return !otherVersionSettingsFileName(info, mySettingFile).isEmpty();
69  }
70 
71  bool CCacheSettingsUtils::hasOtherVersionCacheFile(const CApplicationInfo &info, const QString &myCacheFile)
72  {
73  return !otherVersionCacheFileName(info, myCacheFile).isEmpty();
74  }
75 
76  QString CCacheSettingsUtils::otherVersionFileName(const CApplicationInfo &info, const QString &relativeFileName)
77  {
78  thread_local const QRegularExpression re("bin$");
79  if (relativeFileName.isEmpty()) { return {}; }
80  QString otherFile = info.getApplicationDataDirectory();
81  otherFile.replace(re, relativeFileName);
82  const QFileInfo fi(otherFile);
83  if (!fi.isFile()) { return {}; }
84  if (fi.exists()) { return fi.absoluteFilePath(); }
85  return {};
86  }
87 
89  const QString &mySettingFile)
90  {
91  const QString file = otherVersionSettingsFileName(info, mySettingFile);
92  if (file.isEmpty()) { return {}; }
93  const QString jsonStr = CFileUtils::readFileToString(file);
94  return jsonStr;
95  }
96 
97  QString CCacheSettingsUtils::otherVersionCacheFileContent(const CApplicationInfo &info, const QString &myCacheFile)
98  {
99  const QString file = otherVersionCacheFileName(info, myCacheFile);
100  if (file.isEmpty()) { return {}; }
101  const QString jsonStr = CFileUtils::readFileToString(file);
102  return jsonStr;
103  }
104 } // namespace swift::misc
Description of a swift application.
const QString & getApplicationDataDirectory() const
Set application data dir.
static bool hasOtherVersionSettingsFile(const swift::misc::CApplicationInfo &info, const QString &mySettingFile)
Has the settings file for the given other version?
static const QString & binSettings()
Path.
static QString otherVersionSettingsFileContent(const swift::misc::CApplicationInfo &info, const QString &mySettingFile)
Setting JSON object as string.
static QString otherVersionCacheFileContent(const swift::misc::CApplicationInfo &info, const QString &myCacheFile)
Cache JSON object as string.
static const QString & binData()
Path.
static QString otherVersionFileName(const swift::misc::CApplicationInfo &info, const QString &relativeFileName)
File name for cache/setting.
static bool isSetting(const QString &fileName)
Setting?
static bool hasOtherVersionCacheFile(const swift::misc::CApplicationInfo &info, const QString &myCacheFile)
Has the cache file for the given other version?
static bool isCache(const QString &fileName)
Cache?
static QString relativeCachePath(const QString &fileName)
Relative cache path.
static QString otherVersionSettingsFileName(const swift::misc::CApplicationInfo &info, const QString &mySettingFile)
Create other version's setting file from "my settings file".
static QString otherVersionCacheFileName(const swift::misc::CApplicationInfo &info, const QString &myCacheFile)
Create other version's cache file from "my cache file".
static QString relativeSettingsPath(const QString &fileName)
Relative setting path.
static const QString & relativeFilePath()
Relative file path in application data directory.
static QString readFileToString(const QString &fileNameAndPath)
Read file into string.
Definition: fileutils.cpp:68
static const QString & relativeFilePath()
Relative file path in application data directory.
Free functions in swift::misc.