[SailfishDevel] XDG paths in QT

Nicolas Cisco ncis20 at gmail.com
Sun May 10 20:14:55 UTC 2015


Hi,
i have some questions about what are the correct config and data paths for
an application.
The harbour faq [ https://harbour.jolla.com/faq#2.4.0 ] says that for these
paths a subfolder during run time named <HARBOUR_APP_NAME> inside a folder
defined by the XDG Base Directory Specification should be used. My question
is how to get these values using QT.
I though of using the QStandardPaths [
http://doc.qt.io/qt-5/qstandardpaths.html ] or the QProcessEnvironment [
http://doc.qt.io/qt-5/qprocessenvironment.html ] modules, but i don't know
if i am getting the correct values.

Using the QStandardPaths module I get this output:

> [D] main:66 - QStandardPaths::DataLocation:
> "/home/nemo/.local/share/harbour-batzap/harbour-batzap"
> [D] main:67 - QStandardPaths::GenericDataLocation:
> "/home/nemo/.local/share"
> [D] main:68 - QStandardPaths::CacheLocation:
> "/home/nemo/.cache/harbour-batzap/harbour-batzap"
> [D] main:69 - QStandardPaths::GenericCacheLocation: "/home/nemo/.cache"
> [D] main:70 - QStandardPaths::TempLocation: "/tmp"
> [D] main:71 - QStandardPaths::ConfigLocation: "/home/nemo/.config"
> [D] main:72 - QStandardPaths::GenericConfigLocation: "/home/nemo/.config"

(i'm returning these values using: *qDebug() <<
"QStandardPaths::<enum-name>: " <<
QStandardPaths::writableLocation(QStandardPaths::<enum-name>);*

According to the harbour faq, for application data the
$XDG_DATA_HOME/<harbour-name> folder should be used, ( freedesktop.org says
that a possible value for $XDG_DATA_HOME is "$HOME/.local/share/", so i'll
assume that value, and assuming <harbour-name> is "harbour-batsap") should
the correct application data folder be
"/home/new/.local/share/harbour-batzap"
insted "/home/new/.local/share/harbour-batzap/harbour-batzap" as qt returns
for QStandardPaths::DataLocation?

Note: the qt docs suggest that *QStandardPaths::AppDataLocation* should be
used while *QStandardPaths::DataLocation* is a deprecated value. But i'm
getting errors (*AppDataLocation *is not a member of *QStandardPaths*)
using *QStandardPaths::AppDataLocation* (it was introduced in Qt 5.4, i
really don't remember what Qt5 version jolla ships)

If i try to get the values of the XDG variables using the
QProcessEnvironment module, i'm always getting blank values:

> [D] main:75 -
> QProcessEnvironment::systemEnvironment().value("$XDG_DATA_HOME"): ""
> [D] main:76 -
> QProcessEnvironment::systemEnvironment().value("XDG_DATA_HOME"): ""
> [D] main:77 -
> QProcessEnvironment::systemEnvironment().value("$XDG_CACHE_HOME"): ""
> [D] main:78 -
> QProcessEnvironment::systemEnvironment().value("XDG_CACHE_HOME"): ""
> [D] main:79 -
> QProcessEnvironment::systemEnvironment().value("$XDG_CONFIG_HOME"): ""
> [D] main:80 -
> QProcessEnvironment::systemEnvironment().value("XDG_CONFIG_HOME"): ""

(i'm returning these values using: *qDebug() <<
"QProcessEnvironment::systemEnvironment().value(<variable>, "");*

Using qDebug() << "getenv(<variable>): " << *getenv(<variable>);* also
returns me an empty value:

> [D] main:81 - getenv("XDG_DATA_HOME"):
> [D] main:82 - getenv("$XDG_DATA_HOME"):
> [D] main:83 - getenv("XDG_CACHE_HOME"):
> [D] main:84 - getenv("$XDG_CACHE_HOME"):
> [D] main:85 - getenv("XDG_CONFIG_HOME"):
> [D] main:86 - getenv("$XDG_CONFIG_HOME"):


I'm executing the app thought qtcreator in my jolla device (deploying it as
an RPM package).

What are the correct path values? and how should I get them throught qt?.

Thanks!
-- 
Nicolas Cisco
www.nckweb.com.ar
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.sailfishos.org/pipermail/devel/attachments/20150510/a8cd74fa/attachment.html>


More information about the Devel mailing list