Fix buttons

This commit is contained in:
Spiros
2024-06-02 17:41:08 +03:00
parent 8949f90a3b
commit 037f4311fe
2 changed files with 41 additions and 2 deletions

View File

@@ -27,9 +27,18 @@ MainWindow::MainWindow(QWidget *parent)
powerOnCountLineEdit = qobject_cast<QLineEdit *>(ui->centralwidget->findChild<QLineEdit*>("powerOnCountLineEdit"));
powerOnHoursLineEdit = qobject_cast<QLineEdit *>(ui->centralwidget->findChild<QLineEdit*>("powerOnHoursLineEdit"));
tableWidget = qobject_cast<QTableWidget *>(ui->centralwidget->findChild<QTableWidget*>("dataTable"));;
tableWidget = qobject_cast<QTableWidget *>(ui->centralwidget->findChild<QTableWidget*>("dataTable"));
serialNumberLineEdit->setEchoMode(QLineEdit::Password);
nextButton = ui->centralwidget->findChild<QPushButton*>("nextButton");
prevButton = ui->centralwidget->findChild<QPushButton*>("previousButton");
connect(nextButton, &QPushButton::clicked, this, &MainWindow::onNextButtonClicked);
connect(prevButton, &QPushButton::clicked, this, &MainWindow::onPrevButtonClicked);
nextButton->setFocusPolicy(Qt::NoFocus);
prevButton->setFocusPolicy(Qt::NoFocus);
QAction *toggleEchoModeAction = serialNumberLineEdit->addAction(QIcon::fromTheme(QStringLiteral("visibility")), QLineEdit::TrailingPosition);
connect(toggleEchoModeAction, &QAction::triggered, this, [=]() {
if (serialNumberLineEdit->echoMode() == QLineEdit::Password) {
@@ -42,6 +51,8 @@ MainWindow::MainWindow(QWidget *parent)
});
scanDevices();
this->setFocus();
}
MainWindow::~MainWindow()
@@ -49,6 +60,28 @@ MainWindow::~MainWindow()
delete ui;
}
void MainWindow::onNextButtonClicked()
{
int currentIndex = buttonGroup->buttons().indexOf(buttonGroup->checkedButton());
int nextIndex = (currentIndex + 1) % buttonGroup->buttons().size();
buttonGroup->buttons().at(nextIndex)->click();
updateNavigationButtons(nextIndex);
}
void MainWindow::onPrevButtonClicked()
{
int currentIndex = buttonGroup->buttons().indexOf(buttonGroup->checkedButton());
int prevIndex = (currentIndex - 1 + buttonGroup->buttons().size()) % buttonGroup->buttons().size();
buttonGroup->buttons().at(prevIndex)->click();
updateNavigationButtons(prevIndex);
}
void MainWindow::updateNavigationButtons(int currentIndex)
{
prevButton->setVisible(currentIndex > 0);
nextButton->setVisible(currentIndex < buttonGroup->buttons().size() - 1);
}
void MainWindow::scanDevices()
{
QString output = getSmartctlOutput({"--scan", "--json"}, false);
@@ -61,7 +94,6 @@ void MainWindow::scanDevices()
bool firstTime = true;
bool globalIsNvme = false;
for (const QJsonValue &value : devices) {
QJsonObject device = value.toObject();
QString deviceName = device["name"].toString();
@@ -155,6 +187,7 @@ void MainWindow::scanDevices()
} else {
populateWindow(localObj, health);
}
updateNavigationButtons(buttonGroup->buttons().indexOf(button));
});
if (firstTime) {
@@ -175,6 +208,8 @@ void MainWindow::scanDevices()
} else {
populateWindow(globalObj, globalHealth);
}
updateNavigationButtons(buttonGroup->buttons().indexOf(buttonGroup->checkedButton()));
}
void MainWindow::populateWindow(const QJsonObject &localObj, const QString &health, const QVector<QPair<QString, int>>& nvmeLogOrdered)