]> vaikene.ee Git - evaf/blobdiff - src/libs/Common/iapp.h
Merged the Common::iEnv interface into Common::iApp
[evaf] / src / libs / Common / iapp.h
index 4c7caed14cd80dfdf2c605a50eab663eb012e0c8..098abafde39410119d5b86f61af2cb7ea74876d7 100644 (file)
@@ -32,9 +32,18 @@ namespace Common {
  * eVaf application interface
  * @code#include <Common/iApp>@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.
@@ -141,6 +150,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]=&lt;directory&gt;
+     * 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]=&lt;directory&gt; 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]=&lt;directory&gt;
+     * 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]=&lt;directory&gt; 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]=&lt;directory&gt; 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]=&lt;directory&gt; command line argument.
+     */
+    virtual QString const qtPluginsDir() const = 0;
+
 
 signals: