#ifndef MAINWINDOW_H #define MAINWINDOW_H #include "ASyncDBConnection.h" #include "ConnectionConfig.h" #include "OpenDatabase.h" #include "plugin_support/LMainWindow.h" #include #include #include #include #include "Pgsql_Connection.h" #include "ControllableTask.h" #include #include #include #include #include #include #include namespace Pgsql { class Connection; } class MasterController; class QCloseEvent; class OpenDatabase; class PgClass; class QTabWidget; /** This is the class for windows that handle tasks for a specific database/catalog * */ class DatabaseWindow : public LMainWindow { Q_OBJECT public: DatabaseWindow(MasterController *master, QWidget *parent); ~DatabaseWindow(); void setConfig(const ConnectionConfig &config); std::shared_ptr getDatabase() { return m_database; } void newCodeGenPage(QString query, std::shared_ptr dbres); private: ConnectionConfig m_config; std::shared_ptr m_database; MasterController *m_masterController; class LoadCatalog: public ControllableTask { public: LoadCatalog(ConnectionConfig config) : m_config(config) {} OpenDatabase::OpenDatabaseSPtr run(TaskControl& ) override { auto res = OpenDatabase::createOpenDatabase(m_config); return res.get(); } private: ConnectionConfig m_config; }; QFutureWatcher loadWatcher; void closeEvent(QCloseEvent *event); void showEvent(QShowEvent *event); void newCreateTablePage(); private slots: void catalogLoaded(); void on_actionAbout_triggered(); void on_actionShow_connection_manager_triggered(); void on_actionCopy_triggered(); }; #endif // MAINWINDOW_H