/***************************************************************************
- * 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 *
#define QUASSEL_H_
#include <QCoreApplication>
+#include <QLocale>
#include <QString>
-#include "cliparser.h"
+#include "abstractcliparser.h"
class Quassel {
Q_DECLARE_TR_FUNCTIONS(Quassel)
- public:
- enum RunMode {
- Monolithic,
- ClientOnly,
- CoreOnly
- };
-
- struct BuildInfo {
- QString fancyVersionString; // clickable rev
- QString plainVersionString; // no <a> tag
-
- QString baseVersion;
- QString generatedVersion;
- QString commitHash;
- uint commitDate;
- QString buildDate;
- bool isSourceDirty;
- uint protocolVersion;
- uint clientNeedsProtocol;
- uint coreNeedsProtocol;
-
- QString applicationName;
- QString coreApplicationName;
- QString clientApplicationName;
- QString organizationName;
- QString organizationDomain;
- };
-
- void setupBuildInfo(const QString &generated);
-
- virtual ~Quassel();
-
- static inline const BuildInfo & buildInfo();
- static inline RunMode runMode();
-
- static inline CliParser *cliParser();
- static inline QString optionValue(const QString &option);
- static inline bool isOptionSet(const QString &option);
-
- static bool DEBUG;
-
- protected:
- Quassel();
- virtual bool init();
-
- inline void setRunMode(RunMode mode);
-
-
- private:
- void setupTranslations();
- void registerMetaTypes();
-
- static void handleSignal(int signal);
- static void handleCrash();
-
- static BuildInfo _buildInfo;
- static CliParser *_cliParser;
- static RunMode _runMode;
- static bool _initialized;
+public:
+ enum RunMode {
+ Monolithic,
+ ClientOnly,
+ CoreOnly
+ };
+
+ struct BuildInfo {
+ QString fancyVersionString; // clickable rev
+ QString plainVersionString; // no <a> tag
+
+ QString baseVersion;
+ QString generatedVersion;
+ QString commitHash;
+ uint commitDate;
+ QString buildDate;
+ bool isSourceDirty;
+ uint protocolVersion;
+ uint clientNeedsProtocol;
+ uint coreNeedsProtocol;
+
+ QString applicationName;
+ QString coreApplicationName;
+ QString clientApplicationName;
+ QString organizationName;
+ QString organizationDomain;
+ };
+
+ virtual ~Quassel();
+
+ static void setupBuildInfo(const QString &generated);
+ static inline const BuildInfo & buildInfo();
+ static inline RunMode runMode();
+
+ 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 void loadTranslation(const QLocale &locale);
+
+ static inline void setCliParser(AbstractCliParser *cliParser);
+ static inline AbstractCliParser *cliParser();
+ static inline QString optionValue(const QString &option);
+ static inline bool isOptionSet(const QString &option);
+
+ static const QString &coreDumpFileName();
+
+ static bool DEBUG;
+
+ static void logFatalMessage(const char *msg);
+
+protected:
+ Quassel();
+ virtual bool init();
+
+ inline void setRunMode(RunMode mode);
+ inline void setDataDirPaths(const QStringList &paths);
+ QStringList findDataDirPaths() const;
+
+private:
+ void registerMetaTypes();
+
+ static void handleSignal(int signal);
+ static void logBacktrace(const QString &filename);
+
+ static BuildInfo _buildInfo;
+ static AbstractCliParser *_cliParser;
+ static RunMode _runMode;
+ static bool _initialized;
+
+ static QString _coreDumpFileName;
+ static QString _configDirPath;
+ static QStringList _dataDirPaths;
+ static QString _translationDirPath;
};
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); }