diff --git a/src/blackmisc/aviation/airlineicaocode.cpp b/src/blackmisc/aviation/airlineicaocode.cpp index a14c8b80d..43ab9123e 100644 --- a/src/blackmisc/aviation/airlineicaocode.cpp +++ b/src/blackmisc/aviation/airlineicaocode.cpp @@ -76,7 +76,8 @@ namespace BlackMisc { if (this->m_designator.length() > 2) { - return CIcon("images/airlines/" + m_designator.toLower() + ".png", + // relative to images + return CIcon("airlines/" + m_designator.toLower() + ".png", this->convertToQString()); } else diff --git a/src/blackmisc/country.cpp b/src/blackmisc/country.cpp index 88271dbee..794b90c25 100644 --- a/src/blackmisc/country.cpp +++ b/src/blackmisc/country.cpp @@ -22,7 +22,8 @@ namespace BlackMisc { if (this->m_dbKey.length() == 2) { - return CIcon("images/flags/" + m_dbKey.toLower() + ".png", + // relative to images + return CIcon("flags/" + m_dbKey.toLower() + ".png", this->convertToQString()); } else diff --git a/src/blackmisc/icons.cpp b/src/blackmisc/icons.cpp index 2464495ee..03c374c12 100644 --- a/src/blackmisc/icons.cpp +++ b/src/blackmisc/icons.cpp @@ -8,6 +8,8 @@ */ #include "icons.h" +#include "blackmisc/project.h" +#include "blackmisc/fileutilities.h" #include #include #include @@ -1079,9 +1081,7 @@ namespace BlackMisc Q_ASSERT_X(!fileName.isEmpty(), Q_FUNC_INFO, "missing filename"); if (!getResourceFileCache().contains(fileName)) { - QString path = fileName.contains("resources") ? - QCoreApplication::applicationDirPath().append("/").append(fileName) : - QCoreApplication::applicationDirPath().append("/resources/").append(fileName); + QString path = CFileUtils::appendFilePaths(CProject::getImagesDir(), fileName); QPixmap pm; bool s = pm.load(path); if (s) diff --git a/src/blackmisc/project.cpp b/src/blackmisc/project.cpp index 02a86d29b..609872e42 100644 --- a/src/blackmisc/project.cpp +++ b/src/blackmisc/project.cpp @@ -8,6 +8,7 @@ */ #include "project.h" +#include "blackmisc/fileutilities.h" #include #include #include @@ -254,35 +255,66 @@ namespace BlackMisc return QProcessEnvironment::systemEnvironment().value(envVarPrivateSetupDir()); } - QString CProject::getApplicationDir() + QString getApplicationDir_() { QFileInfo executable(QCoreApplication::applicationFilePath()); QDir p(executable.dir()); return p.absolutePath(); } - QString CProject::getSwiftResourceDir() + const QString &CProject::getApplicationDir() { - QDir dir(getApplicationDir()); + static const QString s(getApplicationDir_()); + return s; + } + + QString getSwiftResourceDir_() + { + QDir dir(CProject::getApplicationDir()); if (dir.cdUp()) { return dir.absolutePath(); } return ""; } + const QString &CProject::getSwiftResourceDir() + { + static const QString s(getSwiftResourceDir_()); + return s; + } + QString CProject::getSwiftPrivateResourceDir() { static const QString dir(envVarPrivateSetupDirValue()); return dir; } - QString CProject::getSwiftStaticDbFilesDir() + QString getSwiftStaticDbFilesDir_() { - QString d(getSwiftResourceDir()); + QString d(CProject::getSwiftResourceDir()); if (d.isEmpty()) { return ""; } QDir dir(d); if (dir.cd("swiftDB")) { return dir.absolutePath(); } return ""; } + const QString &CProject::getSwiftStaticDbFilesDir() + { + static QString s(getSwiftResourceDir_()); + return s; + } + + QString getImagesDir_() + { + QString d(CProject::getSwiftResourceDir()); + if (d.isEmpty()) return ""; + return CFileUtils::appendFilePaths(d, "data/images"); + } + + const QString &CProject::getImagesDir() + { + static const QString s(getImagesDir_()); + return s; + } + QString CProject::getEnvironmentVariables(const QString &separator) { QString e(envDevelopmentSetup()); diff --git a/src/blackmisc/project.h b/src/blackmisc/project.h index 2d8349cc7..412bdbda8 100644 --- a/src/blackmisc/project.h +++ b/src/blackmisc/project.h @@ -100,16 +100,19 @@ namespace BlackMisc static bool isRunningInBetaOrDeveloperEnvironment(); //! Application directory where current application is located - static QString getApplicationDir(); + static const QString &getApplicationDir(); //! Where resource files (static DB files, ...) etc are located - static QString getSwiftResourceDir(); + static const QString &getSwiftResourceDir(); //! Private resource dir for developer's own resource files static QString getSwiftPrivateResourceDir(); - //! Where resource files (static DB files, ...) etc are located - static QString getSwiftStaticDbFilesDir(); + //! Where static DB files are located + static const QString &getSwiftStaticDbFilesDir(); + + //! Where images are located + static const QString &getImagesDir(); //! Dump all env.variables static QString getEnvironmentVariables(const QString &separator = QString("\n"));