From 2bf7915456937ef01e63e82f04f5113b7568f00a Mon Sep 17 00:00:00 2001
From: am0ebe <am0ebe@gmx.de>
Date: Wed, 22 May 2024 17:26:33 +0200
Subject: [PATCH]  search for file ending with json/xml in appdir and use as
 default if no settings/config is specified as arg

---
 src/cmd/main.cpp |  4 ++++
 src/utils.cpp    | 38 +++++++++++++++++++-------------------
 src/utils.h      |  4 +++-
 3 files changed, 26 insertions(+), 20 deletions(-)

diff --git a/src/cmd/main.cpp b/src/cmd/main.cpp
index 6024854..8dac28d 100644
--- a/src/cmd/main.cpp
+++ b/src/cmd/main.cpp
@@ -5,6 +5,7 @@
 #include "../utils.h"
 #include "../cam.h"
 
+#include "qdebug.h"
 #include "qobjectdefs.h"
 #include <QCoreApplication>
 #include <QTimer>
@@ -16,6 +17,9 @@ int main(int argc, char *argv[])
 	QCoreApplication::setApplicationVersion(utils::getVersion());
 	QCoreApplication::setApplicationName("recorder");
 
+	qDebug() << utils::getFirstFileInAppDirEndingWith("json");
+	qDebug() << utils::getFirstFileInAppDirEndingWith("xml");
+
 	//parse args
 	QStringList arguments = a.arguments();
 	for (int i = 1; i < arguments.size(); ++i)
diff --git a/src/utils.cpp b/src/utils.cpp
index 1945ba9..b4450d6 100644
--- a/src/utils.cpp
+++ b/src/utils.cpp
@@ -157,17 +157,19 @@ QString configFile(QString filename)
 {
 	static QString _configFile;
 	if( _configFile.isEmpty() )
-	{
-		if(filename.isEmpty())
-		{
-			_configFile = QCoreApplication::applicationDirPath() + "/config.json" ; //default
-		}
-		else
-		{
-			_configFile = filename;
-		}
-	}
-	return _configFile;
+		_configFile = filename;
+
+	return _configFile.isEmpty() ? utils::getFirstFileInAppDirEndingWith("json") : _configFile;
+}
+
+QString getFirstFileInAppDirEndingWith( QString const& suffix )
+{
+	QDir dir(QCoreApplication::applicationDirPath());
+	QStringList files = dir.entryList(QStringList() << "*."+suffix, QDir::Files);
+	// QStringList const folders = source.entryList(QDir::NoDot | QDir::NoDotDot | QDir::Dirs);
+	// auto file =  QCoreApplication::applicationDirPath()+QDir::separator()+files.first();
+	auto file =  files.first();
+	return files.isEmpty() || suffix.isEmpty() ? QString() : file;
 }
 
 // optional - only set cam settings when they changed
@@ -175,13 +177,11 @@ QString settingsFile(QString filename)
 {
 	static QString _settingsFile;
 	if( _settingsFile.isEmpty() )
-	{
-		if(filename.isEmpty())
-			_settingsFile = QCoreApplication::applicationDirPath() + "/settings.xml" ; //default
-		else
-			_settingsFile = filename;
-	}
-	return _settingsFile;
-}
+		_settingsFile = filename;
 
+	return _settingsFile.isEmpty() ? utils::getFirstFileInAppDirEndingWith("xml") : _settingsFile;
 }
+
+
+
+} // namespace utils
diff --git a/src/utils.h b/src/utils.h
index dec1dbd..b5b1afc 100644
--- a/src/utils.h
+++ b/src/utils.h
@@ -13,9 +13,11 @@ class QDir;
 namespace utils
 {
 
-bool parseConfig(QList<QPair<QString,QString>>& parsedCameras);
+bool parseConfig(QList<QPair<QString,QString>>&);
 QString configFile(QString filename="");
 QString settingsFile(QString filename="");
+QString getFirstFileInAppDirEndingWith( QString const&);
+
 
 const QStringList getVersions();
 const QString getVersion();
-- 
GitLab