Files
prodejna/core/context.h
T

59 lines
1.4 KiB
C++
Raw Normal View History

#ifndef CONTEXT_H
#define CONTEXT_H
#include <QList>
#include <QMap>
#include <QString>
#include <QSqlDatabase>
#include <QStringList>
#include <QSettings>
2016-02-09 10:04:17 +01:00
#include <QSharedPointer>
#include "define.h"
#include "core_global.h"
2015-11-10 16:08:06 +01:00
#include "transaction.h"
2016-02-09 10:04:17 +01:00
#include "data/core-data.h"
#include <odb/database.hxx>
2015-12-22 16:08:47 +01:00
#include <odb/session.hxx>
class IPlugin;
class CORESHARED_EXPORT Context
{
public:
2016-02-09 10:04:17 +01:00
~Context();
static Context &instance();
QList<IPlugin*> plugins();
IPlugin *plugin(const QString &pluginId);
void loadPlugins();
void openDb(const QString &path);
odb::database *db() { return m_db; }
QSettings *settings() { return m_settings; }
bool dbOpened() { return m_dbOpened; }
void destroy();
2015-12-22 16:08:47 +01:00
QStringList defaultPerms();
2016-02-09 10:04:17 +01:00
QSharedPointer<User> currentUser() const;
void setCurrentUser(const QSharedPointer<User> &currentUser);
private:
Context();
QList<IPlugin*> m_plugins;
odb::database *m_db;
QSettings *m_settings;
bool m_dbOpened;
2015-12-22 16:08:47 +01:00
odb::session m_session;
2016-02-09 10:04:17 +01:00
QSharedPointer<User> m_currentUser;
QStringList m_solved;
void checkDb(const QString &path);
void checkSchema(const QSqlDatabase &db, const QMap<QString, int> &schemaMap);
void solveDep(IPlugin *plugin, const QSqlDatabase &db, const QMap<QString, int> &schemaMap);
void createSchema(IPlugin *plugin, const QSqlDatabase &db, const QMap<QString, int> &schemaMap);
2015-12-22 16:08:47 +01:00
void checkPermissions();
};
#endif // CONTEXT_H