diff options
Diffstat (limited to 'app/main.cpp')
-rw-r--r-- | app/main.cpp | 29 |
1 files changed, 21 insertions, 8 deletions
diff --git a/app/main.cpp b/app/main.cpp index f555475..319e1e7 100644 --- a/app/main.cpp +++ b/app/main.cpp @@ -27,8 +27,12 @@ #include <libhomescreen.hpp> #include <qlibwindowmanager.h> #include <stdlib.h> +#include <fcntl.h> +#include <sys/stat.h> #include "PresetDataObject.h" +#define APP_DATA_PRESETS_PATH "/app-data/radio/presets.conf" + int main(int argc, char *argv[]) { QString graphic_role = QString("radio"); @@ -47,9 +51,9 @@ int main(int argc, char *argv[]) // Read presets from configuration file // - // If HOME is set, use $HOME/app-data/radio/presets.conf, else fall back - // to the QSettings default locations with organization "AGL" and a - // file name of radio-presets.conf. See: + // If HOME is set, use $HOME/app-data/radio/presets.conf if it exists, + // else fall back to the QSettings default locations with organization + // "AGL" and a file name of radio-presets.conf. See: // // http://doc.qt.io/qt-5/qsettings.html#platform-specific-notes // @@ -57,13 +61,22 @@ int main(int argc, char *argv[]) // QSettings *pSettings = NULL; char *p = getenv("HOME"); + bool settingsFound = false; if(p) { - QString confPath = p; - confPath.append("/app-data/radio/presets.conf"); - pSettings = new QSettings(confPath, QSettings::NativeFormat); - } else { - pSettings = new QSettings("AGL", "radio-presets"); + struct stat statbuf; + std::string presets(p); + presets += APP_DATA_PRESETS_PATH; + if(stat(presets.c_str(), &statbuf) == 0) { + QString confPath = p; + confPath.append(APP_DATA_PRESETS_PATH); + pSettings = new QSettings(confPath, QSettings::NativeFormat); + settingsFound = true; + } + } + if(!settingsFound) { + pSettings = new QSettings("AGL", "radio-presets"); } + QList<QObject*> presetDataList; int size = pSettings->beginReadArray("fmPresets"); for (int i = 0; i < size; ++i) { |