44
55#include " compatibilitymanager.h"
66#include " constant.h"
7+ #include " global.h"
78#include < QJsonDocument>
89#include < QJsonObject>
910#include < QJsonArray>
1011
11- std::optional<CompatibilityDesktopEntry::Entry> CompatibilityDesktopEntry::group (const QString &key) const noexcept
12+ std::optional<CompatibilityDesktopEntry::Entry> CompatibilityDesktopEntry::group (const QString &key) const noexcept
1213{
1314 auto iter = m_entrys.find (key);
14- if (iter == m_entrys.end ()){
15+ if (iter == m_entrys.end ()) {
1516 return std::nullopt ;
1617 }
1718
@@ -21,15 +22,15 @@ std::optional<CompatibilityDesktopEntry::Entry> CompatibilityDesktopEntry::group
2122std::any CompatibilityDesktopEntry::value (const QString &key, const CompatibilityDesktopEntry::ValueKey &valueKey) const noexcept
2223{
2324 auto iter = m_entrys.find (key);
24- if (iter == m_entrys.end ()){
25+ if (iter == m_entrys.end ()) {
2526 return std::nullopt ;
2627 }
2728
28- if (valueKey == CompatibilityDesktopEntry::Exec){
29+ if (valueKey == CompatibilityDesktopEntry::Exec) {
2930 return get<0 >(*iter);
3031 }
3132
32- if (valueKey == CompatibilityDesktopEntry::Env){
33+ if (valueKey == CompatibilityDesktopEntry::Env) {
3334 return get<1 >(*iter);
3435 }
3536
@@ -39,36 +40,36 @@ std::any CompatibilityDesktopEntry::value(const QString &key, const Compatibilit
3940void CompatibilityDesktopEntry::insert (const QString &groupKey, const Entry &entry) noexcept
4041{
4142 auto iter = m_entrys.find (groupKey);
42- if (iter == m_entrys.end ()){
43- m_entrys.insert (groupKey,entry);
44- }else {
45- qWarning ()<< " insert : " << groupKey<< " fail" ;
43+ if (iter == m_entrys.end ()) {
44+ m_entrys.insert (groupKey, entry);
45+ } else {
46+ qWarning () << " insert : " << groupKey << " fail" ;
4647 }
4748}
4849
4950CompatibilityManager::CompatibilityManager ()
5051{
5152 connect (&m_watcher, &QFileSystemWatcher::fileChanged, this , &CompatibilityManager::loadCompatibilityConfig);
5253
53- if (!m_watcher.addPath (CompatibilityConfigFilePath)){
54- qWarning () << " add path : " << CompatibilityConfigFilePath << " to watch fail" ;
54+ if (!m_watcher.addPath (fromStaticRaw ( CompatibilityConfigFilePath))) {
55+ qWarning () << " add path : " << QStringView{ CompatibilityConfigFilePath} << " to watch fail" ;
5556 }
5657 loadCompatibilityConfig ();
5758}
5859
5960std::optional<QString> CompatibilityManager::getExec (const QString &desktopId, const QString &groupId)
6061{
6162 auto iter = m_compatibilityConfig.find (desktopId);
62- if (iter == m_compatibilityConfig.end ()){
63+ if (iter == m_compatibilityConfig.end ()) {
6364 return std::nullopt ;
6465 }
6566
6667 auto value = iter->value (groupId, CompatibilityDesktopEntry::Exec);
67- if (!value.has_value ()){
68+ if (!value.has_value ()) {
6869 return std::nullopt ;
6970 }
7071
71- if (value.type () != typeid (QString)){
72+ if (value.type () != typeid (QString)) {
7273 return std::nullopt ;
7374 }
7475
@@ -78,34 +79,36 @@ std::optional<QString> CompatibilityManager::getExec(const QString &desktopId, c
7879QStringList CompatibilityManager::getEnv (const QString &desktopId, const QString &groupId)
7980{
8081 auto iter = m_compatibilityConfig.find (desktopId);
81- if (iter == m_compatibilityConfig.end ()){
82+ if (iter == m_compatibilityConfig.end ()) {
8283 return QStringList ();
8384 }
8485
8586 auto value = iter->value (groupId, CompatibilityDesktopEntry::Env);
86- if (!value.has_value ()){
87+ if (!value.has_value ()) {
8788 return QStringList ();
8889 }
8990
90- if (value.type () != typeid (QStringList)){
91+ if (value.type () != typeid (QStringList)) {
9192 return QStringList ();
9293 }
9394
9495 return std::any_cast<QStringList>(value);
9596}
9697
97- void CompatibilityManager::loadCompatibilityConfig (){
98+ void CompatibilityManager::loadCompatibilityConfig ()
99+ {
98100 qInfo () << " loadCompatibilityConfig" ;
99101 m_compatibilityConfig.clear ();
100- QFile file{CompatibilityConfigFilePath};
102+ QFile file{fromStaticRaw ( CompatibilityConfigFilePath) };
101103
102104 auto err = parse (file);
103105 if (err != ParserError::NoError) {
104106 qWarning () << " parse file :" << file.fileName () << " , err" ;
105107 }
106108}
107109
108- ParserError CompatibilityManager::parse (QFile &file) noexcept {
110+ ParserError CompatibilityManager::parse (QFile &file) noexcept
111+ {
109112 if (!file.open (QFile::Text | QFile::ReadOnly | QFile::ExistingOnly)) {
110113 qWarning () << " open file:" << file.fileName () << " failed:" << file.errorString () << " , skip." ;
111114 return ParserError::NotFound;
@@ -119,26 +122,26 @@ ParserError CompatibilityManager::parse(QFile &file) noexcept{
119122 return ParserError::MissingInfo;
120123 }
121124 if (json.isEmpty ()) {
122- qWarning () << " file : " << file.fileName ()<< " empty" ;
125+ qWarning () << " file : " << file.fileName () << " empty" ;
123126 return ParserError::MissingInfo;
124127 }
125128
126129 auto obj = json.object ();
127130 for (auto it = obj.constBegin (); it != obj.constEnd (); ++it) {
128131 const auto &desktopId = it.key ();
129132 auto existDesktopId = m_compatibilityConfig.constFind (desktopId);
130- if (existDesktopId != m_compatibilityConfig.cend ()){
131- qWarning () << " the desktop id : " << it.key () <<" exist skip" ;
133+ if (existDesktopId != m_compatibilityConfig.cend ()) {
134+ qWarning () << " the desktop id : " << it.key () << " exist skip" ;
132135 continue ;
133136 }
134137 auto desktopEntry = obj[desktopId].toObject ();
135138
136139 // 处理 Desktop Entry
137140 CompatibilityDesktopEntry compatibilityEntry;
138- const auto & keys = desktopEntry.keys ();
139- for (const auto &entryId : std::as_const (keys)){
140- if (!entryId.startsWith (DesktopFileEntryKey) && !entryId.startsWith (DesktopFileActionKey)){
141- qWarning () << " parse entry : " << entryId<< " fail" ;
141+ const auto & keys = desktopEntry.keys ();
142+ for (const auto &entryId : std::as_const (keys)) {
143+ if (!entryId.startsWith (DesktopFileEntryKey) && !entryId.startsWith (DesktopFileActionKey)) {
144+ qWarning () << " parse entry : " << entryId << " fail" ;
142145 return ParserError::MissingInfo;
143146 }
144147
@@ -151,13 +154,13 @@ ParserError CompatibilityManager::parse(QFile &file) noexcept{
151154 env.push_back (envJson.toString ());
152155 }
153156
154- // auto tub = std::make_tuple(exec,std::move(env.join("; ") + ";"));
155- auto tub = std::make_tuple (exec,env);
156- compatibilityEntry.insert (entryId,tub);
157- qInfo ()<< " insert desktop id : " << entryId <<" , with Exec : " << exec << " and Env : " << env;
157+ // auto tub = std::make_tuple(exec,std::move(env.join("; ") + ";"));
158+ auto tub = std::make_tuple (exec, env);
159+ compatibilityEntry.insert (entryId, tub);
160+ qInfo () << " insert desktop id : " << entryId << " , with Exec : " << exec << " and Env : " << env;
158161 }
159162
160- m_compatibilityConfig.insert (desktopId,compatibilityEntry);
163+ m_compatibilityConfig.insert (desktopId, compatibilityEntry);
161164 }
162165
163166 return ParserError::NoError;
0 commit comments