diff --git a/src/asciiview.cpp b/src/asciiview.cpp new file mode 100644 index 0000000..d8747b9 --- /dev/null +++ b/src/asciiview.cpp @@ -0,0 +1,81 @@ +#include "asciiview.h" + +#include +#include +#include +#include + +QVector AsciiView::readSMARTData(const QString& device_path) { + int fd; + unsigned char smart_read_cmd[SMART_READ_CMD_LEN] = {0xa1, 0x0c, 0x0e, 0xd0, 1, 0, 0x4f, 0xc2, 0, 0xb0, 0, 0}; + unsigned char inquiry_cmd[INQUIRY_CMD_LEN] = {0x12, 0, 0, 0, INQUIRY_RESP_LEN, 0}; + unsigned char smart_read_resp[SMART_READ_RESP_LEN]; + unsigned char inquiry_resp[INQUIRY_RESP_LEN]; + unsigned char sense_buffer[SENSE_BUFFER_LEN]; + sg_io_hdr_t io_hdr; + QVector result; + fd = open(device_path.toStdString().c_str(), O_RDONLY); + memset(&io_hdr, 0, sizeof(sg_io_hdr_t)); + io_hdr.interface_id = 'S'; + io_hdr.cmd_len = SMART_READ_CMD_LEN; + io_hdr.mx_sb_len = SENSE_BUFFER_LEN; + io_hdr.dxfer_direction = SG_DXFER_FROM_DEV; + io_hdr.dxfer_len = SMART_READ_RESP_LEN; + io_hdr.dxferp = smart_read_resp; + io_hdr.cmdp = smart_read_cmd; + io_hdr.sbp = sense_buffer; + io_hdr.timeout = 20000; + + if (ioctl(fd, SG_IO, &io_hdr) < 0) { + close(fd); + } + + result.append(QArrayDataPointer::fromRawData(smart_read_resp, SMART_READ_RESP_LEN)); + + memset(&io_hdr, 0, sizeof(sg_io_hdr_t)); + io_hdr.interface_id = 'S'; + io_hdr.cmd_len = INQUIRY_CMD_LEN; + io_hdr.mx_sb_len = SENSE_BUFFER_LEN; + io_hdr.dxfer_direction = SG_DXFER_FROM_DEV; + io_hdr.dxfer_len = INQUIRY_RESP_LEN; + io_hdr.dxferp = inquiry_resp; + io_hdr.cmdp = inquiry_cmd; + io_hdr.sbp = sense_buffer; + io_hdr.timeout = 20000; + + if (ioctl(fd, SG_IO, &io_hdr) < 0) { + close(fd); + } + + result.append(QArrayDataPointer::fromRawData(inquiry_resp, INQUIRY_RESP_LEN)); + close(fd); + return result; +} + +QString AsciiView::hexDump(const QVector &data) { + QString result; + qsizetype dataSize = data.size(); + int offset = 0; + + for (qsizetype i = 0; i < dataSize; i += 16) { + QString line; + line += QString("%1 ").arg(offset, 8, 16, QChar('0')).toUpper(); + offset += 16; + for (int j = 0; j < 16; ++j) { + if (i + j < dataSize) { + line += QString("%1 ").arg(static_cast(data[i + j]), 2, 16, QChar('0')).toUpper(); + } else { + line += " "; + } + if (j == 7) line += " "; + } + + line += " "; + for (int j = 0; j < 16 && i + j < dataSize; ++j) { + unsigned char c = data[i + j]; + line += (c >= 32 && c <= 126) ? QChar::fromLatin1(static_cast(c)) : QChar('.'); + } + result += line + "\n"; + } + return result; +} diff --git a/src/asciiview.h b/src/asciiview.h new file mode 100644 index 0000000..002c69b --- /dev/null +++ b/src/asciiview.h @@ -0,0 +1,19 @@ +#pragma once + +#include +#include + +#define SMART_READ_CMD_LEN 12 +#define INQUIRY_CMD_LEN 6 +#define SMART_READ_RESP_LEN 512 +#define INQUIRY_RESP_LEN 96 +#define SENSE_BUFFER_LEN 32 + +class AsciiView +{ +public: + AsciiView() = default; + + QVector readSMARTData(const QString& device_path); + QString hexDump(const QVector &data); +}; diff --git a/src/main.cpp b/src/main.cpp index e217ffc..b9a9b30 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,11 +1,44 @@ #include "mainwindow.h" +#include "asciiview.h" #include #include #include +#include +#include +#include int main(int argc, char *argv[]) { + bool isHeadless = false; + QString devicePath; + + for (int i = 1; i < argc; ++i) { + if (QString(argv[i]) == "--ascii-view") { + isHeadless = true; + if (i + 1 < argc) { + devicePath = argv[i + 1]; + } else { + std::cerr << "Error: Missing device path after --ascii-view" << std::endl; + return 1; + } + break; + } + } + + if (isHeadless) { + if (geteuid() == 0) { + AsciiView asciiview; + QVector driveData = asciiview.readSMARTData(devicePath); + std::cout.write(reinterpret_cast(driveData.data()), driveData.size()); + std::cout.flush(); + } else { + std::cerr << "Error: This action requires root privileges!" << std::endl; + return 1; + } + return 0; + } + QApplication a(argc, argv); QTranslator translator; diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 3c7c2f9..d1fea10 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -1,10 +1,15 @@ #include "mainwindow.h" +#include "asciiview.h" +#include "statusdot.h" +#include "custombutton.h" +#include "jsonparser.h" #include #include #include #include #include +#include MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) @@ -756,6 +761,7 @@ void MainWindow::populateWindow(const QJsonObject &localObj, const QString &heal if (protocol == "ATA") { addSmartAttributesTable(attributes); selfTestMenu->clear(); + ui->actionASCII_View->setEnabled(true); if (keys.isEmpty()) { selfTestMenu->setDisabled(true); @@ -803,13 +809,14 @@ void MainWindow::populateWindow(const QJsonObject &localObj, const QString &heal } } else if (protocol == "SCSI") { selfTestMenu->clear(); + ui->actionASCII_View->setEnabled(true); selfTestMenu->setDisabled(true); selfTestLogAction->setDisabled(true); addSCSIErrorCounterLogTable(scsiErrorCounterLog); } else { addNvmeLogTable(nvmeLogOrdered); - selfTestMenu->clear(); + ui->actionASCII_View->setDisabled(true); // TODO: Implement this for NVMe drives too if (nvmeHasSelfTest) { selfTestMenu->setEnabled(true); @@ -1201,7 +1208,7 @@ void MainWindow::on_actionSave_JSON_triggered() else { QFile file(fileName); if (!file.open(QIODevice::WriteOnly)) { - QMessageBox::information(this, tr("Unable to open file for writing"), + QMessageBox::critical(this, tr("Unable to open file for writing"), file.errorString()); return; } @@ -1331,3 +1338,57 @@ void MainWindow::on_actionClear_Settings_triggered() } } +void MainWindow::on_actionASCII_View_triggered() +{ + QString deviceNodePath = deviceNodeLineEdit->text(); + + QProcess *process = new QProcess(this); + process->start("pkexec", {QCoreApplication::applicationFilePath(), "--ascii-view", deviceNodePath}); + + if (!process->waitForFinished()) { + return; + } + + QByteArray binaryData = process->readAllStandardOutput(); + QByteArray errorData = process->readAllStandardError(); + + if (!errorData.isEmpty()) { + QMessageBox::critical(this, tr("QDiskInfo Error"), tr("QDiskInfo needs root access in order to read S.M.A.R.T. data!")); + return; + } + + AsciiView asciiview; + QString hexDumpOutput = asciiview.hexDump(QVector(binaryData.begin(), binaryData.end())); + + QDialog *asciiViewDialog = new QDialog(this); + asciiViewDialog->setWindowTitle(tr("ASCII View")); + + QTextEdit *textView = new QTextEdit(asciiViewDialog); + textView->setText(hexDumpOutput); + textView->setReadOnly(true); + + QDialogButtonBox *buttonBox = new QDialogButtonBox(QDialogButtonBox::Save | QDialogButtonBox::Close, asciiViewDialog); + connect(buttonBox, &QDialogButtonBox::rejected, asciiViewDialog, &QDialog::close); + connect(buttonBox->button(QDialogButtonBox::Save), &QPushButton::clicked, [binaryData, this, deviceNodePath]() { + QString filePath = QFileDialog::getSaveFileName(this, tr("Save Binary Data"), deviceNodePath.section('/', -1) + ".bin", tr("Binary Files (*.bin);;All Files (*)")); + if (!filePath.isEmpty()) { + QFile file(filePath); + if (file.open(QIODevice::WriteOnly)) { + file.write(binaryData); + file.close(); + QMessageBox::information(this, tr("Success"), tr("Binary data saved successfully.")); + } else { + QMessageBox::critical(this, tr("Unable to open file for writing"), file.errorString()); + } + } + }); + + QVBoxLayout *layout = new QVBoxLayout(asciiViewDialog); + layout->addWidget(textView); + layout->addWidget(buttonBox); + + asciiViewDialog->setLayout(layout); + asciiViewDialog->resize(550, 500); + asciiViewDialog->exec(); +} + diff --git a/src/mainwindow.h b/src/mainwindow.h index fb69a60..202148d 100644 --- a/src/mainwindow.h +++ b/src/mainwindow.h @@ -8,11 +8,9 @@ #include #include #include +#include #include -#include "statusdot.h" -#include "custombutton.h" -#include "jsonparser.h" #include "utils.h" #include "./ui_mainwindow.h" @@ -45,6 +43,8 @@ private slots: void on_actionClear_Settings_triggered(); + void on_actionASCII_View_triggered(); + private: Ui::MainWindow *ui; QSettings settings; diff --git a/src/mainwindow.ui b/src/mainwindow.ui index 3407406..d7c18f3 100644 --- a/src/mainwindow.ui +++ b/src/mainwindow.ui @@ -527,6 +527,8 @@ + + @@ -641,7 +643,12 @@ - Clear Settings + Clear &Settings + + + + + ASCII View diff --git a/translations/qdiskinfo_af_ZA.ts b/translations/qdiskinfo_af_ZA.ts index 7102fc7..38938d1 100644 --- a/translations/qdiskinfo_af_ZA.ts +++ b/translations/qdiskinfo_af_ZA.ts @@ -304,7 +304,35 @@ About Qt - Clear Settings + Clear &Settings + + + + ASCII View + + + + QDiskInfo Error + QDiskInfo Error + + + QDiskInfo needs root access in order to read S.M.A.R.T. data! + QDiskInfo needs root access in order to read S.M.A.R.T. data! + + + Save Binary Data + + + + Binary Files (*.bin);;All Files (*) + + + + Success + + + + Binary data saved successfully. diff --git a/translations/qdiskinfo_ar_SA.ts b/translations/qdiskinfo_ar_SA.ts index 5cdb7df..5ff2ed6 100644 --- a/translations/qdiskinfo_ar_SA.ts +++ b/translations/qdiskinfo_ar_SA.ts @@ -304,7 +304,35 @@ About Qt - Clear Settings + Clear &Settings + + + + ASCII View + + + + QDiskInfo Error + QDiskInfo Error + + + QDiskInfo needs root access in order to read S.M.A.R.T. data! + QDiskInfo needs root access in order to read S.M.A.R.T. data! + + + Save Binary Data + + + + Binary Files (*.bin);;All Files (*) + + + + Success + + + + Binary data saved successfully. diff --git a/translations/qdiskinfo_ca_ES.ts b/translations/qdiskinfo_ca_ES.ts index 3e9df00..e130abc 100644 --- a/translations/qdiskinfo_ca_ES.ts +++ b/translations/qdiskinfo_ca_ES.ts @@ -304,7 +304,35 @@ About Qt - Clear Settings + Clear &Settings + + + + ASCII View + + + + QDiskInfo Error + QDiskInfo Error + + + QDiskInfo needs root access in order to read S.M.A.R.T. data! + QDiskInfo needs root access in order to read S.M.A.R.T. data! + + + Save Binary Data + + + + Binary Files (*.bin);;All Files (*) + + + + Success + + + + Binary data saved successfully. diff --git a/translations/qdiskinfo_cs_CZ.ts b/translations/qdiskinfo_cs_CZ.ts index bc16775..2377526 100644 --- a/translations/qdiskinfo_cs_CZ.ts +++ b/translations/qdiskinfo_cs_CZ.ts @@ -304,7 +304,35 @@ About Qt - Clear Settings + Clear &Settings + + + + ASCII View + + + + QDiskInfo Error + QDiskInfo Error + + + QDiskInfo needs root access in order to read S.M.A.R.T. data! + QDiskInfo needs root access in order to read S.M.A.R.T. data! + + + Save Binary Data + + + + Binary Files (*.bin);;All Files (*) + + + + Success + + + + Binary data saved successfully. diff --git a/translations/qdiskinfo_da_DK.ts b/translations/qdiskinfo_da_DK.ts index 97b6b25..e1a9020 100644 --- a/translations/qdiskinfo_da_DK.ts +++ b/translations/qdiskinfo_da_DK.ts @@ -304,7 +304,35 @@ About Qt - Clear Settings + Clear &Settings + + + + ASCII View + + + + QDiskInfo Error + QDiskInfo Error + + + QDiskInfo needs root access in order to read S.M.A.R.T. data! + QDiskInfo needs root access in order to read S.M.A.R.T. data! + + + Save Binary Data + + + + Binary Files (*.bin);;All Files (*) + + + + Success + + + + Binary data saved successfully. diff --git a/translations/qdiskinfo_de_DE.ts b/translations/qdiskinfo_de_DE.ts index fe8b9d8..f863455 100644 --- a/translations/qdiskinfo_de_DE.ts +++ b/translations/qdiskinfo_de_DE.ts @@ -304,7 +304,35 @@ Über Qt - Clear Settings + Clear &Settings + + + + ASCII View + + + + QDiskInfo Error + QDiskInfo Fehler + + + QDiskInfo needs root access in order to read S.M.A.R.T. data! + QDiskInfo benötigt Rootzugriff um S.M.A.R.T. Daten zu lesen! + + + Save Binary Data + + + + Binary Files (*.bin);;All Files (*) + + + + Success + + + + Binary data saved successfully. diff --git a/translations/qdiskinfo_el_GR.ts b/translations/qdiskinfo_el_GR.ts index d69f60e..e1152cc 100644 --- a/translations/qdiskinfo_el_GR.ts +++ b/translations/qdiskinfo_el_GR.ts @@ -304,7 +304,35 @@ Σχετικά με το Qt - Clear Settings + Clear &Settings + + + + ASCII View + + + + QDiskInfo Error + Σφάλμα QDiskInfo + + + QDiskInfo needs root access in order to read S.M.A.R.T. data! + Το QDiskInfo χρειάζεται δικαιώματα υπερχρήστη για να προσπελάσει τα δεδομένα S.M.A.R.T.! + + + Save Binary Data + + + + Binary Files (*.bin);;All Files (*) + + + + Success + + + + Binary data saved successfully. diff --git a/translations/qdiskinfo_en_US.ts b/translations/qdiskinfo_en_US.ts index 39974ca..18a991c 100644 --- a/translations/qdiskinfo_en_US.ts +++ b/translations/qdiskinfo_en_US.ts @@ -304,7 +304,35 @@ - Clear Settings + Clear &Settings + + + + ASCII View + + + + QDiskInfo Error + + + + QDiskInfo needs root access in order to read S.M.A.R.T. data! + + + + Save Binary Data + + + + Binary Files (*.bin);;All Files (*) + + + + Success + + + + Binary data saved successfully. diff --git a/translations/qdiskinfo_es_ES.ts b/translations/qdiskinfo_es_ES.ts index 61d97b5..b301c3e 100644 --- a/translations/qdiskinfo_es_ES.ts +++ b/translations/qdiskinfo_es_ES.ts @@ -304,7 +304,35 @@ Acerca de Qt - Clear Settings + Clear &Settings + + + + ASCII View + + + + QDiskInfo Error + Error de QDiskInfo + + + QDiskInfo needs root access in order to read S.M.A.R.T. data! + ¡QDiskInfo necesita acceso root para poder leer información S.M.A.R.T! + + + Save Binary Data + + + + Binary Files (*.bin);;All Files (*) + + + + Success + + + + Binary data saved successfully. diff --git a/translations/qdiskinfo_fi_FI.ts b/translations/qdiskinfo_fi_FI.ts index cfca670..51c12c6 100644 --- a/translations/qdiskinfo_fi_FI.ts +++ b/translations/qdiskinfo_fi_FI.ts @@ -304,7 +304,35 @@ About Qt - Clear Settings + Clear &Settings + + + + ASCII View + + + + QDiskInfo Error + QDiskInfo Error + + + QDiskInfo needs root access in order to read S.M.A.R.T. data! + QDiskInfo needs root access in order to read S.M.A.R.T. data! + + + Save Binary Data + + + + Binary Files (*.bin);;All Files (*) + + + + Success + + + + Binary data saved successfully. diff --git a/translations/qdiskinfo_fr_FR.ts b/translations/qdiskinfo_fr_FR.ts index c658c46..94758bc 100644 --- a/translations/qdiskinfo_fr_FR.ts +++ b/translations/qdiskinfo_fr_FR.ts @@ -304,7 +304,35 @@ About Qt - Clear Settings + Clear &Settings + + + + ASCII View + + + + QDiskInfo Error + QDiskInfo Error + + + QDiskInfo needs root access in order to read S.M.A.R.T. data! + QDiskInfo needs root access in order to read S.M.A.R.T. data! + + + Save Binary Data + + + + Binary Files (*.bin);;All Files (*) + + + + Success + + + + Binary data saved successfully. diff --git a/translations/qdiskinfo_he_IL.ts b/translations/qdiskinfo_he_IL.ts index 9c4655c..6f33268 100644 --- a/translations/qdiskinfo_he_IL.ts +++ b/translations/qdiskinfo_he_IL.ts @@ -304,7 +304,35 @@ About Qt - Clear Settings + Clear &Settings + + + + ASCII View + + + + QDiskInfo Error + QDiskInfo Error + + + QDiskInfo needs root access in order to read S.M.A.R.T. data! + QDiskInfo needs root access in order to read S.M.A.R.T. data! + + + Save Binary Data + + + + Binary Files (*.bin);;All Files (*) + + + + Success + + + + Binary data saved successfully. diff --git a/translations/qdiskinfo_hu_HU.ts b/translations/qdiskinfo_hu_HU.ts index 6a4afe1..d33867a 100644 --- a/translations/qdiskinfo_hu_HU.ts +++ b/translations/qdiskinfo_hu_HU.ts @@ -304,7 +304,35 @@ About Qt - Clear Settings + Clear &Settings + + + + ASCII View + + + + QDiskInfo Error + QDiskInfo Error + + + QDiskInfo needs root access in order to read S.M.A.R.T. data! + QDiskInfo needs root access in order to read S.M.A.R.T. data! + + + Save Binary Data + + + + Binary Files (*.bin);;All Files (*) + + + + Success + + + + Binary data saved successfully. diff --git a/translations/qdiskinfo_it_IT.ts b/translations/qdiskinfo_it_IT.ts index 33cd1f2..b94bd46 100644 --- a/translations/qdiskinfo_it_IT.ts +++ b/translations/qdiskinfo_it_IT.ts @@ -304,7 +304,35 @@ Info su Qt - Clear Settings + Clear &Settings + + + + ASCII View + + + + QDiskInfo Error + Errore QDiskInfo + + + QDiskInfo needs root access in order to read S.M.A.R.T. data! + QDiskInfo ha bisogno di accesso root per leggere i dati S.M.A.R.T! + + + Save Binary Data + + + + Binary Files (*.bin);;All Files (*) + + + + Success + + + + Binary data saved successfully. diff --git a/translations/qdiskinfo_ja_JP.ts b/translations/qdiskinfo_ja_JP.ts index 52461df..fda5b11 100644 --- a/translations/qdiskinfo_ja_JP.ts +++ b/translations/qdiskinfo_ja_JP.ts @@ -304,7 +304,35 @@ About Qt - Clear Settings + Clear &Settings + + + + ASCII View + + + + QDiskInfo Error + QDiskInfo Error + + + QDiskInfo needs root access in order to read S.M.A.R.T. data! + QDiskInfo needs root access in order to read S.M.A.R.T. data! + + + Save Binary Data + + + + Binary Files (*.bin);;All Files (*) + + + + Success + + + + Binary data saved successfully. diff --git a/translations/qdiskinfo_ko_KR.ts b/translations/qdiskinfo_ko_KR.ts index 63a745c..00a30bf 100644 --- a/translations/qdiskinfo_ko_KR.ts +++ b/translations/qdiskinfo_ko_KR.ts @@ -304,7 +304,35 @@ About Qt - Clear Settings + Clear &Settings + + + + ASCII View + + + + QDiskInfo Error + QDiskInfo Error + + + QDiskInfo needs root access in order to read S.M.A.R.T. data! + QDiskInfo needs root access in order to read S.M.A.R.T. data! + + + Save Binary Data + + + + Binary Files (*.bin);;All Files (*) + + + + Success + + + + Binary data saved successfully. diff --git a/translations/qdiskinfo_nl_NL.ts b/translations/qdiskinfo_nl_NL.ts index ddd0dff..fac7138 100644 --- a/translations/qdiskinfo_nl_NL.ts +++ b/translations/qdiskinfo_nl_NL.ts @@ -304,7 +304,35 @@ About Qt - Clear Settings + Clear &Settings + + + + ASCII View + + + + QDiskInfo Error + QDiskInfo Error + + + QDiskInfo needs root access in order to read S.M.A.R.T. data! + QDiskInfo needs root access in order to read S.M.A.R.T. data! + + + Save Binary Data + + + + Binary Files (*.bin);;All Files (*) + + + + Success + + + + Binary data saved successfully. diff --git a/translations/qdiskinfo_no_NO.ts b/translations/qdiskinfo_no_NO.ts index 8b121eb..b8c20d9 100644 --- a/translations/qdiskinfo_no_NO.ts +++ b/translations/qdiskinfo_no_NO.ts @@ -304,7 +304,35 @@ About Qt - Clear Settings + Clear &Settings + + + + ASCII View + + + + QDiskInfo Error + QDiskInfo Error + + + QDiskInfo needs root access in order to read S.M.A.R.T. data! + QDiskInfo needs root access in order to read S.M.A.R.T. data! + + + Save Binary Data + + + + Binary Files (*.bin);;All Files (*) + + + + Success + + + + Binary data saved successfully. diff --git a/translations/qdiskinfo_pl_PL.ts b/translations/qdiskinfo_pl_PL.ts index 2b5b75f..b56376b 100644 --- a/translations/qdiskinfo_pl_PL.ts +++ b/translations/qdiskinfo_pl_PL.ts @@ -304,7 +304,35 @@ About Qt - Clear Settings + Clear &Settings + + + + ASCII View + + + + QDiskInfo Error + QDiskInfo Error + + + QDiskInfo needs root access in order to read S.M.A.R.T. data! + QDiskInfo needs root access in order to read S.M.A.R.T. data! + + + Save Binary Data + + + + Binary Files (*.bin);;All Files (*) + + + + Success + + + + Binary data saved successfully. diff --git a/translations/qdiskinfo_pt_BR.ts b/translations/qdiskinfo_pt_BR.ts index 8f3db75..a214a5d 100644 --- a/translations/qdiskinfo_pt_BR.ts +++ b/translations/qdiskinfo_pt_BR.ts @@ -304,7 +304,35 @@ Sobre o Qt - Clear Settings + Clear &Settings + + + + ASCII View + + + + QDiskInfo Error + QDiskInfo Erro + + + QDiskInfo needs root access in order to read S.M.A.R.T. data! + QDiskInfo precisa de acesso root para leitura dos dados S.M.A.R.T.! + + + Save Binary Data + + + + Binary Files (*.bin);;All Files (*) + + + + Success + + + + Binary data saved successfully. diff --git a/translations/qdiskinfo_pt_PT.ts b/translations/qdiskinfo_pt_PT.ts index 9d0b472..88f38ef 100644 --- a/translations/qdiskinfo_pt_PT.ts +++ b/translations/qdiskinfo_pt_PT.ts @@ -304,7 +304,35 @@ About Qt - Clear Settings + Clear &Settings + + + + ASCII View + + + + QDiskInfo Error + QDiskInfo Error + + + QDiskInfo needs root access in order to read S.M.A.R.T. data! + QDiskInfo needs root access in order to read S.M.A.R.T. data! + + + Save Binary Data + + + + Binary Files (*.bin);;All Files (*) + + + + Success + + + + Binary data saved successfully. diff --git a/translations/qdiskinfo_ro_RO.ts b/translations/qdiskinfo_ro_RO.ts index e16a813..8d61749 100644 --- a/translations/qdiskinfo_ro_RO.ts +++ b/translations/qdiskinfo_ro_RO.ts @@ -304,7 +304,35 @@ About Qt - Clear Settings + Clear &Settings + + + + ASCII View + + + + QDiskInfo Error + QDiskInfo Error + + + QDiskInfo needs root access in order to read S.M.A.R.T. data! + QDiskInfo needs root access in order to read S.M.A.R.T. data! + + + Save Binary Data + + + + Binary Files (*.bin);;All Files (*) + + + + Success + + + + Binary data saved successfully. diff --git a/translations/qdiskinfo_ru_RU.ts b/translations/qdiskinfo_ru_RU.ts index ee3ec37..5653dc8 100644 --- a/translations/qdiskinfo_ru_RU.ts +++ b/translations/qdiskinfo_ru_RU.ts @@ -304,7 +304,35 @@ О Qt - Clear Settings + Clear &Settings + + + + ASCII View + + + + QDiskInfo Error + Ошибка QDiskInfo + + + QDiskInfo needs root access in order to read S.M.A.R.T. data! + QDiskInfo нужен root доступ, чтобы прочитать данные S.M.A.R.T. + + + Save Binary Data + + + + Binary Files (*.bin);;All Files (*) + + + + Success + + + + Binary data saved successfully. diff --git a/translations/qdiskinfo_sr_SP.ts b/translations/qdiskinfo_sr_SP.ts index f3a75bd..2617b6c 100644 --- a/translations/qdiskinfo_sr_SP.ts +++ b/translations/qdiskinfo_sr_SP.ts @@ -304,7 +304,35 @@ About Qt - Clear Settings + Clear &Settings + + + + ASCII View + + + + QDiskInfo Error + QDiskInfo Error + + + QDiskInfo needs root access in order to read S.M.A.R.T. data! + QDiskInfo needs root access in order to read S.M.A.R.T. data! + + + Save Binary Data + + + + Binary Files (*.bin);;All Files (*) + + + + Success + + + + Binary data saved successfully. diff --git a/translations/qdiskinfo_sv_SE.ts b/translations/qdiskinfo_sv_SE.ts index ac4bda7..6ef18d1 100644 --- a/translations/qdiskinfo_sv_SE.ts +++ b/translations/qdiskinfo_sv_SE.ts @@ -304,7 +304,35 @@ About Qt - Clear Settings + Clear &Settings + + + + ASCII View + + + + QDiskInfo Error + QDiskInfo Error + + + QDiskInfo needs root access in order to read S.M.A.R.T. data! + QDiskInfo needs root access in order to read S.M.A.R.T. data! + + + Save Binary Data + + + + Binary Files (*.bin);;All Files (*) + + + + Success + + + + Binary data saved successfully. diff --git a/translations/qdiskinfo_th_TH.ts b/translations/qdiskinfo_th_TH.ts index 411f510..9d3d648 100644 --- a/translations/qdiskinfo_th_TH.ts +++ b/translations/qdiskinfo_th_TH.ts @@ -304,7 +304,35 @@ About Qt - Clear Settings + Clear &Settings + + + + ASCII View + + + + QDiskInfo Error + QDiskInfo Error + + + QDiskInfo needs root access in order to read S.M.A.R.T. data! + QDiskInfo needs root access in order to read S.M.A.R.T. data! + + + Save Binary Data + + + + Binary Files (*.bin);;All Files (*) + + + + Success + + + + Binary data saved successfully. diff --git a/translations/qdiskinfo_tr_TR.ts b/translations/qdiskinfo_tr_TR.ts index 7c1fa78..cd1abe3 100644 --- a/translations/qdiskinfo_tr_TR.ts +++ b/translations/qdiskinfo_tr_TR.ts @@ -304,7 +304,35 @@ About Qt - Clear Settings + Clear &Settings + + + + ASCII View + + + + QDiskInfo Error + QDiskInfo Error + + + QDiskInfo needs root access in order to read S.M.A.R.T. data! + QDiskInfo needs root access in order to read S.M.A.R.T. data! + + + Save Binary Data + + + + Binary Files (*.bin);;All Files (*) + + + + Success + + + + Binary data saved successfully. diff --git a/translations/qdiskinfo_uk_UA.ts b/translations/qdiskinfo_uk_UA.ts index 33f14d4..292c39e 100644 --- a/translations/qdiskinfo_uk_UA.ts +++ b/translations/qdiskinfo_uk_UA.ts @@ -304,7 +304,35 @@ Про Qt - Clear Settings + Clear &Settings + + + + ASCII View + + + + QDiskInfo Error + Помилка QDiskInfo + + + QDiskInfo needs root access in order to read S.M.A.R.T. data! + QDiskInfo потрібен root-доступ для читання даних S.M.A.R.T. + + + Save Binary Data + + + + Binary Files (*.bin);;All Files (*) + + + + Success + + + + Binary data saved successfully. diff --git a/translations/qdiskinfo_vi_VN.ts b/translations/qdiskinfo_vi_VN.ts index 6ba96d4..69e84d4 100644 --- a/translations/qdiskinfo_vi_VN.ts +++ b/translations/qdiskinfo_vi_VN.ts @@ -304,7 +304,35 @@ About Qt - Clear Settings + Clear &Settings + + + + ASCII View + + + + QDiskInfo Error + QDiskInfo Error + + + QDiskInfo needs root access in order to read S.M.A.R.T. data! + QDiskInfo needs root access in order to read S.M.A.R.T. data! + + + Save Binary Data + + + + Binary Files (*.bin);;All Files (*) + + + + Success + + + + Binary data saved successfully. diff --git a/translations/qdiskinfo_zh_CN.ts b/translations/qdiskinfo_zh_CN.ts index 552145b..1505151 100644 --- a/translations/qdiskinfo_zh_CN.ts +++ b/translations/qdiskinfo_zh_CN.ts @@ -304,7 +304,35 @@ 关于 Qt - Clear Settings + Clear &Settings + + + + ASCII View + + + + QDiskInfo Error + QDiskInfo 错误 + + + QDiskInfo needs root access in order to read S.M.A.R.T. data! + QDiskInfo 需要 root 权限才能读取 S.M.A.R.T. 数据! + + + Save Binary Data + + + + Binary Files (*.bin);;All Files (*) + + + + Success + + + + Binary data saved successfully. diff --git a/translations/qdiskinfo_zh_TW.ts b/translations/qdiskinfo_zh_TW.ts index 7045439..5f830c9 100644 --- a/translations/qdiskinfo_zh_TW.ts +++ b/translations/qdiskinfo_zh_TW.ts @@ -304,7 +304,35 @@ 關於 Qt - Clear Settings + Clear &Settings + + + + ASCII View + + + + QDiskInfo Error + QDiskInfo 錯誤 + + + QDiskInfo needs root access in order to read S.M.A.R.T. data! + QDiskInfo 需要 root 權限才能讀取 S.M.A.R.T. 數據! + + + Save Binary Data + + + + Binary Files (*.bin);;All Files (*) + + + + Success + + + + Binary data saved successfully.