#ifndef MAINWINDOW_H #define MAINWINDOW_H #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "statusdot.h" #include "custombutton.h" #include "jsonparser.h" #include "./ui_mainwindow.h" QT_BEGIN_NAMESPACE namespace Ui { class MainWindow; } QT_END_NAMESPACE class MainWindow : public QMainWindow { Q_OBJECT bool initializing; public: MainWindow(QWidget *parent = nullptr); ~MainWindow(); private slots: void on_actionExit_triggered(); void on_actionSave_JSON_triggered(); void on_actionGitHub_triggered(); void on_actionRescan_Refresh_triggered(); void on_actionAbout_triggered(); void on_actionIgnore_C4_Reallocation_Event_Count_toggled(bool enabled); void on_actionHEX_toggled(bool enabled); void on_actionUse_Fahrenheit_toggled(bool enabled); private: Ui::MainWindow *ui; QButtonGroup *buttonGroup; QHBoxLayout *horizontalLayout; QLabel *diskName, *temperatureValue, *healthStatusValue; QLineEdit *firmwareLineEdit, *serialNumberLineEdit, *typeLineEdit, *protocolLineEdit, *deviceNodeLineEdit; QLineEdit *totalReadsLineEdit, *totalWritesLineEdit, *rotationRateLineEdit, *powerOnCountLineEdit, *powerOnHoursLineEdit; QTableWidget *tableWidget; QPushButton *prevButton, *nextButton; QColor goodColor, cautionColor, badColor, naColor; QJsonObject deviceJson; QSpacerItem *buttonStretch; QSettings settings; QJsonArray devices; QStringList deviceOutputs; QJsonObject globalObj; QString globalHealth; bool globalIsNvme; QVector> globalNvmeSmartOrdered; void onNextButtonClicked(); void onPrevButtonClicked(); void updateNavigationButtons(int currentIndex); void scanDevices(); void updateUI(); void populateWindow(const QJsonObject &tempObj, const QString &health, const QVector>& nvmeLogOrdered = QVector>()); void addNvmeLogTable(const QVector>& nvmeLogOrdered); void addSmartAttributesTable(const QJsonArray &attributes); QString getSmartctlOutput(const QStringList &arguments, bool root); QString toTitleCase(const QString& sentence); void clearButtonGroup(); }; #endif