summaryrefslogtreecommitdiffstats
path: root/src/client/clientapp/clientapp.h
blob: 063608083a8ae56b18f584ad8654dd06bc6668ea (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#include<QApplication>
#include "../toolbar/toolbar.h"
#include "../util/util.h"


/* define a macro `clientApp` that can be used anywhere in the program and returns a reference to the current ClientApp instance */
#if defined(clientApp)
#undef clientApp
#endif
#define clientApp (static_cast<ClientApp*>(QCoreApplication::instance()))

/* this class is supposed to (after complete refactoring) to encapsulate all
 * state of the application.  At the moment, the state is distributed within
 * several widgets. With this class information access will also be easier as
 * it is possible to access the current ClientApp instance from anywhere with
 * the clientApp macro (like qApp)  macro */
class ClientApp : public QApplication {

  Q_OBJECT

  public:
    enum ConnectionMode { None, Auto, Session };

  private:
    bool _examMode;
    ConnectionMode _connectionMode; /* way of automatically connection to a session on startup*/
    QString _sessionName; /* only set when _connectionMode == Session */
    Toolbar* _toolbar;
    QStringList _arguments;

    void initConfiguration();
    QStringList parseParameters();

  public:

    ClientApp(int& argc, char** argv);

    bool isExamMode() const { return _examMode; };

    virtual QStringList arguments();
};