- public:
- enum RunMode {
- Monolithic,
- ClientOnly,
- CoreOnly
- };
-
- struct BuildInfo {
- QString version;
- QString baseVersion;
- QString generatedVersion;
- QString buildDate;
- QString buildTime;
- QString commitHash;
- uint archiveDate;
- uint protocolVersion;
- uint clientNeedsProtocol;
- uint coreNeedsProtocol;
-
- QString applicationName;
- QString coreApplicationName;
- QString clientApplicationName;
- QString organizationName;
- QString organizationDomain;
- };
-
- ~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 setupBuildInfo();
- void setupTranslations();
- void registerMetaTypes();
-
- static void handleSignal(int signal);
- static void handleCrash();
-
- static BuildInfo _buildInfo;
- static CliParser *_cliParser;
- static RunMode _runMode;
- static bool _initialized;
-};
-
-// FIXME temporary
-namespace Global {
- extern QString quasselVersion;
- extern QString quasselBaseVersion;
- extern QString quasselBuildDate;
- extern QString quasselBuildTime;
- extern QString quasselCommit;
- extern uint quasselArchiveDate;
- extern uint protocolVersion;
-
- extern uint clientNeedsProtocol; //< Minimum protocol version the client needs
- extern uint coreNeedsProtocol; //< Minimum protocol version the core needs
-
- extern QString quasselGeneratedVersion; //< This is possibly set in version.gen
-
- void setupVersion();
+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 QString translationDirPath();
+
+ //! Returns a list of directories we look for scripts in
+ /** We look for a subdirectory named "scripts" in the configdir and in all datadir paths.
+ * \return A list of directory paths containing executable scripts for /exec
+ */
+ static QStringList scriptDirPaths();
+
+ 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();
+ virtual void quit();
+
+ inline void setRunMode(RunMode mode);
+ inline void setDataDirPaths(const QStringList &paths);
+ QStringList findDataDirPaths() const;
+ inline void disableCrashhandler();
+
+private:
+ void registerMetaTypes();
+
+ static void handleSignal(int signal);
+ static void logBacktrace(const QString &filename);
+
+ static Quassel *_instance;
+ static BuildInfo _buildInfo;
+ static AbstractCliParser *_cliParser;
+ static RunMode _runMode;
+ static bool _initialized;
+ static bool _handleCrashes;
+
+ static QString _coreDumpFileName;
+ static QString _configDirPath;
+ static QStringList _dataDirPaths;
+ static QString _translationDirPath;