#ifndef CELLSMONITORPAGE_H #define CELLSMONITORPAGE_H #include #include #include #include "bmsinterface.h" namespace Ui { class CellsMonitorPage; } struct CellInfo { public: CellInfo() : voltage(0), balancing(false) {} CellInfo(double v, bool b) :voltage(v), balancing(b) {} double voltage; bool balancing; }; class CellsMonitorPage : public QFrame { Q_OBJECT public: explicit CellsMonitorPage(QWidget *parent = nullptr); ~CellsMonitorPage(); enum TablesNumber { TwoTables = 2, ThreeTables = 3 }; enum TableIndex { FirstSubTable = 0, SecondSubTable = 1, ThirdSubTable = 2 }; enum ColumnsInSubTables { ColNumber = 0, ColVoltage, //Столбец с делегатом ColBalancing //Столбец с делегатом }; int MODEL_ROWS_IN_ONE_TABLE = 13; //Количество строк модели одной из таблиц static constexpr int MODEL_COLUMN_IN_ONE_TABLE = 3; //Количество столбцов модели одной из таблиц (№,Напр,Баланс) static constexpr int MAX_ROWS_ALL_TABLES = 26; //Количество строк для всех трёх таблиц BMSInterface *bms() const; void setDieBieMS(BMSInterface *dieBieMS); private slots: void on_editCols_textChanged(const QString &arg1); void on_editCells_textChanged(const QString &arg1); void on_pbTestOne_clicked(); void on_pbTestTwo_clicked(); private: Ui::CellsMonitorPage *ui; void hideTestUi(); BMSInterface *mDieBieMS; int m_tablesNumber; int m_cellsNumber; QVector mCellVoltageArray; void createUI(); void clearTables(); void initTableHeader(); // this one is for the real usage void initTableView(QTableView* tableView, bool doInitForCellVoltagArray = true); void initTableView(int tablesNum = TwoTables, bool doInitForCellVoltagArray = true); // this one is just for test //void initTableView(int cellsNum = 0, int tablesNum = TwoTables, bool doInitForCellVoltagArray = true); // public slots: ///void onLoadParams(); private slots: //void timerSlot(); //void valuesReceived(BMS_VALUES values); void cellsReceived(int cellCount, QVector cellVoltageArray); /* QVector mSeconds; double mSecondCounter; qint64 mLastUpdateTime; bool mUpdateValPlot; QTimer* mTimer; */ ///void initForCharts(); void appendDoubleAndTrunc(QVector *vec, double num, int maxSize); ///void clearControlls(); }; #endif // CELLSMONITORPAGE_H