X-Git-Url: https://vaikene.ee/gitweb/gitweb.cgi?a=blobdiff_plain;f=src%2Flibs%2FCommon%2Fiapp.h;h=31390e371c35e3565eab991b21f12f750b3b6e82;hb=77854ea7bd165f8d9afd2cba1490335a67001ab7;hp=4c7caed14cd80dfdf2c605a50eab663eb012e0c8;hpb=4d81227da330c21c7aa0badc88bd5ad4467067fb;p=evaf diff --git a/src/libs/Common/iapp.h b/src/libs/Common/iapp.h index 4c7caed..31390e3 100644 --- a/src/libs/Common/iapp.h +++ b/src/libs/Common/iapp.h @@ -32,9 +32,18 @@ namespace Common { * eVaf application interface * @code#include @endcode * - * The iApp interface provides information about current eVaf application. + * The iApp interface provides information about current eVaf application. Functions in this interface return + * the name of the application, names of directories where different recources are located etc. Modules should + * always use the iApp interface for directory names and locations. + * + * For example, all the configuration files should be located in the eVaf::Common::iApp::instance()->etcDir() directory. + * + * Directory names returned by functions in this interface are UNIX path names and they are quaranteed to + * end with the '/' character. * * All the resources returned by this interface have default values, that should work in most of the cases. + * Fox example, the binary directory is set to the same directory where the application's main executable is found. + * The root directory is the parent of the binary directory etc. * * Default values can be overwritten with environment variables and command line arguments. If both are used, * then command line arguments have higher priorities. @@ -120,6 +129,15 @@ public: */ virtual QString const xmlFileName() const = 0; + /** + * Enters the main event loop of the Qt application. + * @return Value returned by the Qt application + * + * This function enters the event loop of the Qt application. Use this function to start event handling + * instead of calling QCoreApplication::exec() or QApplication::exec() functions directly. + */ + virtual int exec() = 0; + /** * Requests the eVaf application to restart. * @@ -141,6 +159,88 @@ public: */ virtual bool isReady() const = 0; + /** + * Returns the name of the eVaf root directory + * + * The root directory is the base directory where the eVaf application is installed. The default root + * directory is the parent of the binary directory. + * + * Write access to the root directory is not required to run the application. + * + * This directory can be changed with the EVAF_ROOT_DIR environment variable or with the -root[dir]=<directory> + * command line argument. + */ + virtual QString const rootDir() const = 0; + + /** + * Returns the name of the eVaf data directory. + * + * The data root directory is the base directory for all the directories that require write access. + * + * The default data directory on Windows is \%APPDATA\%/\%EVAF_APP_NAME\%. The default data directory + * on Linux is ${HOME}/.${EVAF_APP_NAME}. + * + * This directory can be changed with the EVAF_DATA_ROOT_DIR environment variable or with the + * -dataroot[dir]=<directory> command line argument. + */ + virtual QString const dataRootDir() const = 0; + + /** + * Returns the name of the binary files directory. + * + * The binary directory is the directory where all the application's binary files (main executable and + * modules) are located. The default binary directory is where the main executable is located. + * + * NB! Changing the application's root directory does not change the location of the binary directory. + */ + virtual QString const binDir() const = 0; + + /** + * Returns the configuration files directory. + * + * This is the directory where all the application's configuration files are located. The default + * configuration files directory is 'etc' in the data root directory. + * + * This directory can be changed with the EVAF_ETC_DIR environment variable or with the -etc[dir]=<directory> + * command line argument. + */ + virtual QString const etcDir() const = 0; + + /** + * Returns the log files directory. + * + * This is the directory where the application outputs all the log files. The default log files + * directory is 'log' in the data root directory. + * + * This directory can be changed with the EVAF_LOG_DIR environment variable or with the + * -log[dir]=<directory> command line argument. + */ + virtual QString const logDir() const = 0; + + /** + * Returns the documentation directory. + * + * This is the directory where all the documentation and help files are located. The default + * documentation directory is 'doc' in the root directory. + * + * This directory can be changed with the EVAF_DOC_DIR environment variable or with the + * -doc[dir]=<directory> command line argument. + */ + virtual QString const docDir() const = 0; + + /** + * Returns the Qt plugins directory. + * + * The Qt plugins directory is where additional Qt plugins are located. These Qt plugins + * are loaded manually by the application and specified in the application's XML file. + * + * Changing this directory does not affect the way how Qt itself loads its plugins. + * + * This directory can be changed with the EVAF_QT_PLUGINS_DIR environment variable or with the + * -qtplugins[dir]=<directory> command line argument. + */ + virtual QString const qtPluginsDir() const = 0; + signals: