X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcommon%2Fquassel.h;h=9492ec6b5892f4b8b6848f33af6a627669b688e8;hp=24459cd571f828773463b09e9deba015179a3798;hb=cd37744f0a2cd8ffe027892ddce5c7d6f4848ab0;hpb=b1c606a9d153c5b501476551af3386b993f5635a diff --git a/src/common/quassel.h b/src/common/quassel.h index 24459cd5..9492ec6b 100644 --- a/src/common/quassel.h +++ b/src/common/quassel.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-08 by the Quassel IRC Team * + * Copyright (C) 2005-09 by the Quassel Project * * devel@quassel-irc.org * * * * This program is free software; you can redistribute it and/or modify * @@ -24,7 +24,7 @@ #include #include -#include "cliparser.h" +#include "abstractcliparser.h" class Quassel { Q_DECLARE_TR_FUNCTIONS(Quassel) @@ -57,14 +57,32 @@ public: QString organizationDomain; }; - void setupBuildInfo(const QString &generated); - virtual ~Quassel(); + static void setupBuildInfo(const QString &generated); static inline const BuildInfo & buildInfo(); static inline RunMode runMode(); - static inline CliParser *cliParser(); + static QString configDirPath(); + + //! Returns a list of data directory paths + /** There are several locations for applications to install their data files in. On Unix, + * a common location is /usr/share; others include $PREFIX/share and additional directories + * specified in the env variable XDG_DATA_DIRS. + * \return A list of directory paths to look for data files in + */ + static QStringList dataDirPaths(); + + //! Searches for a data file in the possible data directories + /** Data files can reside in $DATA_DIR/apps/quassel, where $DATA_DIR is one of the directories + * returned by \sa dataDirPaths(). + * \Note With KDE integration enabled, files are searched (only) in KDE's appdata dirs. + * \return The full path to the data file if found; a null QString else + */ + static QString findDataFilePath(const QString &filename); + + static inline void setCliParser(AbstractCliParser *cliParser); + static inline AbstractCliParser *cliParser(); static inline QString optionValue(const QString &option); static inline bool isOptionSet(const QString &option); @@ -79,6 +97,8 @@ protected: virtual bool init(); inline void setRunMode(RunMode mode); + inline void setDataDirPaths(const QStringList &paths); + QStringList findDataDirPaths() const; private: void registerMetaTypes(); @@ -87,18 +107,22 @@ private: static void logBacktrace(const QString &filename); static BuildInfo _buildInfo; - static CliParser *_cliParser; + static AbstractCliParser *_cliParser; static RunMode _runMode; static bool _initialized; static QString _coreDumpFileName; + static QString _configDirPath; + static QStringList _dataDirPaths; }; const Quassel::BuildInfo & Quassel::buildInfo() { return _buildInfo; } Quassel::RunMode Quassel::runMode() { return _runMode; } void Quassel::setRunMode(Quassel::RunMode mode) { _runMode = mode; } +void Quassel::setDataDirPaths(const QStringList &paths) { _dataDirPaths = paths; } -CliParser *Quassel::cliParser() { return _cliParser; } +void Quassel::setCliParser(AbstractCliParser *parser) { _cliParser = parser; } +AbstractCliParser *Quassel::cliParser() { return _cliParser; } QString Quassel::optionValue(const QString &key) { return cliParser()->value(key); } bool Quassel::isOptionSet(const QString &key) { return cliParser()->isSet(key); }