#pragma once #include "DataModel.h" #include "AddModel.h" #include "AddLine.h" #include #include #include #include #include class QueryWorker; class QCheckBox; namespace Ui { class Query; } class Query: public QWidget { Q_OBJECT public: explicit Query(QueryWorker* queryWorker, QWidget *parent = nullptr); ~Query(); void setTable(const QString& tableName); // get's data from specified table and shows it in the data view void setModel(); void refreshData(QVariant val, QModelIndex onThisPosition); void handleError(const QString &errorText); private: Ui::Query* m_ui; DataModel* m_model; QSortFilterProxyModel m_sortModel; QueryWorker* m_queryWorker; AddLines* m_addLines; // need access to add lines for show/hide/close..... QSet m_checkboxes; bool m_idInWhere; void setCustomQuery(); // cannot add/delete/reload void setTableQuery(); // can add/delete/reload QStringList checkedColumnsNames() const; signals: void signalShowWait(const QString &msg); void signalHideWait(); private slots: void slotExportCSV(); void onQueryDelete(); void onQueryInsert(); void onQueryUpdate(); // new architecture // Delete Line(s) signals: void signalDeleteLines(Query* caller, const QList &, DataModel*); private slots: void slotDeleteLine(); void slotDeleteLinesResult(Query* caller, int affectedRowsCount, QString errorText, const QList &affectedRowsList); // Custom Query signals: void signalCustomQuery(Query* caller, const QString &, DataModel*); private slots: void slotCustomQuery(); void slotCustomQueryResult(Query* caller, const QString &errorText); // Table Query signals: void signalTableQuery(Query* caller, DataModel*); private slots: void slotTableQuery(); void slotTableQueryResult(Query* caller, const QString &errorText); // Add Line signals: void signalAddLines(Query* caller, AddModel*); private slots: void slotStartAddLines(); void slotAddLines(AddModel*); void slotAddLinesResult(Query* caller, int affectedRows, const QString &errorText); // Set Data signals: void signalSetData(Query* caller, DataModel *model, const QModelIndex &index, const QVariant &val); private slots: void slotSetData(DataModel* model, const QModelIndex &index, const QVariant &val); void slotSetDataResult(Query* caller, const QString &errorText); };