Reworking CliParser to allow building quasselcore always without KDE deps
[quassel.git] / src / common / quassel.h
index bed6eac..b490075 100644 (file)
 #include <QCoreApplication>
 #include <QString>
 
-#include "cliparser.h"
+#include "abstractcliparser.h"
 
 class Quassel {
   Q_DECLARE_TR_FUNCTIONS(Quassel)
 
-  public:
-    enum RunMode {
-      Monolithic,
-      ClientOnly,
-      CoreOnly
-    };
+public:
+  enum RunMode {
+    Monolithic,
+    ClientOnly,
+    CoreOnly
+  };
 
-    struct BuildInfo {
-      QString fancyVersionString; // clickable rev
-      QString plainVersionString; // no <a> tag
+  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 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;
-    };
+    QString applicationName;
+    QString coreApplicationName;
+    QString clientApplicationName;
+    QString organizationName;
+    QString organizationDomain;
+  };
 
-    void setupBuildInfo(const QString &generated);
+  virtual ~Quassel();
 
-    virtual ~Quassel();
+  static void setupBuildInfo(const QString &generated);
+  static inline const BuildInfo & buildInfo();
+  static inline RunMode runMode();
 
-    static inline const BuildInfo & buildInfo();
-    static inline RunMode runMode();
+  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 inline CliParser *cliParser();
-    static inline QString optionValue(const QString &option);
-    static inline bool isOptionSet(const QString &option);
+  static const QString &coreDumpFileName();
 
-    static bool DEBUG;
+  static bool DEBUG;
 
-  protected:
-    Quassel();
-    virtual bool init();
+  static void logFatalMessage(const char *msg);
 
-    inline void setRunMode(RunMode mode);
+protected:
+  Quassel();
+  virtual bool init();
 
+  inline void setRunMode(RunMode mode);
 
-  private:
-    void setupTranslations();
-    void registerMetaTypes();
+private:
+  void registerMetaTypes();
 
-    static void handleSignal(int signal);
-    static void handleCrash();
+  static void handleSignal(int signal);
+  static void logBacktrace(const QString &filename);
 
-    static BuildInfo _buildInfo;
-    static CliParser *_cliParser;
-    static RunMode _runMode;
-    static bool _initialized;
+  static BuildInfo _buildInfo;
+  static AbstractCliParser *_cliParser;
+  static RunMode _runMode;
+  static bool _initialized;
+
+  static QString _coreDumpFileName;
 };
 
 const Quassel::BuildInfo & Quassel::buildInfo() { return _buildInfo; }
 Quassel::RunMode Quassel::runMode() { return _runMode; }
 void Quassel::setRunMode(Quassel::RunMode mode) { _runMode = mode; }
 
-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); }