#ifndef MAINWINDOW_H #define MAINWINDOW_H #include #include #include #include #include "PgsqlConn.h" class ExplainRoot; class QueryResultModel; class QueryExplainModel; class SqlHighlighter; namespace Ui { class MainWindow; } namespace Pgsql { class Connection; } class MainWindow : public QMainWindow { Q_OBJECT public: explicit MainWindow(QWidget *parent = 0); ~MainWindow(); private: std::unique_ptr ui; std::unique_ptr highlighter; std::unique_ptr connection; std::unique_ptr resultModel; std::unique_ptr explainModel; Pgsql::Canceller queryCancel; std::future queryFuture; std::future> explainFuture; struct { std::unique_ptr notifier; PostgresPollingStatusType poll_state; } connectingState; // struct { // std::unique_ptr notifierRead; // std::unique_ptr notifierWrite; // } queryState; void processNotice(const PGresult *result); private slots: void startConnect(); void performQuery(); void performExplain(); void socket_activate_connect(int socket); void query_ready(); void explain_ready(); void cancel_query(); void receiveNotice(Pgsql::ErrorDetails notice); }; #endif // MAINWINDOW_H