Use TB by default with GB option

This commit is contained in:
Spiros
2024-06-16 17:08:54 +03:00
parent c292ade8d3
commit 78341f7ad4
5 changed files with 153 additions and 102 deletions

View File

@@ -67,12 +67,11 @@ MainWindow::MainWindow(QWidget *parent)
badColor = QColor(Qt::red); badColor = QColor(Qt::red);
naColor = QColor(Qt::gray); naColor = QColor(Qt::gray);
actionCyclic_Navigation = ui->actionCyclic_Navigation;
ui->actionIgnore_C4_Reallocation_Event_Count->setChecked(settings.value("IgnoreC4", true).toBool()); ui->actionIgnore_C4_Reallocation_Event_Count->setChecked(settings.value("IgnoreC4", true).toBool());
ui->actionHEX->setChecked(settings.value("HEX", true).toBool()); ui->actionHEX->setChecked(settings.value("HEX", true).toBool());
ui->actionUse_Fahrenheit->setChecked(settings.value("Fahrenheit", false).toBool()); ui->actionUse_Fahrenheit->setChecked(settings.value("Fahrenheit", false).toBool());
actionCyclic_Navigation->setChecked(settings.value("CyclicNavigation", false).toBool()); ui->actionCyclic_Navigation->setChecked(settings.value("CyclicNavigation", false).toBool());
ui->actionUse_GB_instead_of_TB->setChecked(settings.value("UseGB", false).toBool());
QAction *toggleEchoModeAction = serialNumberLineEdit->addAction(QIcon::fromTheme(QStringLiteral("visibility")), QLineEdit::TrailingPosition); QAction *toggleEchoModeAction = serialNumberLineEdit->addAction(QIcon::fromTheme(QStringLiteral("visibility")), QLineEdit::TrailingPosition);
connect(toggleEchoModeAction, &QAction::triggered, this, [=]() { connect(toggleEchoModeAction, &QAction::triggered, this, [=]() {
@@ -113,8 +112,8 @@ void MainWindow::onPrevButtonClicked()
void MainWindow::updateNavigationButtons(int currentIndex) void MainWindow::updateNavigationButtons(int currentIndex)
{ {
prevButton->setEnabled(currentIndex > 0||actionCyclic_Navigation->isChecked()); // We can use setVisible if we want to mimic CrystalDiskInfo prevButton->setEnabled(currentIndex > 0||ui->actionCyclic_Navigation->isChecked()); // We can use setVisible if we want to mimic CrystalDiskInfo
nextButton->setEnabled(currentIndex < buttonGroup->buttons().size() - 1||actionCyclic_Navigation->isChecked()); nextButton->setEnabled(currentIndex < buttonGroup->buttons().size() - 1||ui->actionCyclic_Navigation->isChecked());
} }
QString getSmartctlPath() { QString getSmartctlPath() {
@@ -202,9 +201,17 @@ void MainWindow::updateUI()
QString health; QString health;
QColor healthColor; QColor healthColor;
float userCapacityGB = localObj.value("user_capacity").toObject().value("bytes").toDouble() / 1e9; float diskCapacityGB = localObj.value("user_capacity").toObject().value("bytes").toDouble() / 1e9;
QString gbSymbol = QLocale().formattedDataSize(1 << 30, 1, QLocale::DataSizeTraditionalFormat).split(' ')[1]; QString gbSymbol = locale.formattedDataSize(1 << 30, 1, QLocale::DataSizeTraditionalFormat).split(' ')[1];
QString userCapacityString = locale.toString(userCapacityGB, 'f', 1) + " " + gbSymbol; QString tbSymbol = locale.formattedDataSize(qint64(1) << 40, 1, QLocale::DataSizeTraditionalFormat).split(' ')[1];
QString diskCapacityString;
int diskCapacityGbInt = static_cast<int>(diskCapacityGB);
bool useGB = ui->actionUse_GB_instead_of_TB->isChecked();
if (diskCapacityGbInt < 1000 || useGB) {
diskCapacityString = locale.toString(diskCapacityGB, 'f', 1) + " " + gbSymbol;
} else {
diskCapacityString = QString::number(diskCapacityGbInt/1000) + " " + tbSymbol;
}
QString protocol = localObj["device"].toObject()["protocol"].toString(); QString protocol = localObj["device"].toObject()["protocol"].toString();
bool isNvme = (protocol == "NVMe"); bool isNvme = (protocol == "NVMe");
@@ -273,12 +280,12 @@ void MainWindow::updateUI()
} }
CustomButton *button = new CustomButton(health, temperature, deviceName, healthColor, this); CustomButton *button = new CustomButton(health, temperature, deviceName, healthColor, this);
button->setToolTip(tr("Disk") + " " + QString::number(i) + " : " + modelName + " : " + userCapacityString); button->setToolTip(tr("Disk") + " " + QString::number(i) + " : " + modelName + " : " + diskCapacityString);
buttonGroup->addButton(button); buttonGroup->addButton(button);
horizontalLayout->addWidget(button); horizontalLayout->addWidget(button);
QAction *diskAction = new QAction("(" + QString::number(i+1) + ") " + modelName + " " + userCapacityString, this); QAction *diskAction = new QAction("(" + QString::number(i+1) + ") " + modelName + " " + diskCapacityString, this);
diskAction->setCheckable(true); diskAction->setCheckable(true);
menuDisk->addAction(diskAction); menuDisk->addAction(diskAction);
disksGroup->addAction(diskAction); disksGroup->addAction(diskAction);
@@ -288,7 +295,7 @@ void MainWindow::updateUI()
int buttonIndex = buttonGroup->buttons().indexOf(button); int buttonIndex = buttonGroup->buttons().indexOf(button);
auto populateAndNavigate = [=]() { auto updateWindow = [=]() {
if (isNvme) { if (isNvme) {
populateWindow(localObj, health, nvmeSmartOrdered); populateWindow(localObj, health, nvmeSmartOrdered);
} else { } else {
@@ -298,12 +305,12 @@ void MainWindow::updateUI()
}; };
connect(button, &QPushButton::clicked, this, [=]() { connect(button, &QPushButton::clicked, this, [=]() {
populateAndNavigate(); updateWindow();
disksGroup->actions().at(buttonIndex)->setChecked(true); disksGroup->actions().at(buttonIndex)->setChecked(true);
}); });
connect(diskAction, &QAction::triggered, this, [=]() { connect(diskAction, &QAction::triggered, this, [=]() {
populateAndNavigate(); updateWindow();
}); });
if (firstTime) { if (firstTime) {
@@ -391,12 +398,22 @@ void MainWindow::populateWindow(const QJsonObject &localObj, const QString &heal
QJsonObject nvmeLog = localObj["nvme_smart_health_information_log"].toObject(); QJsonObject nvmeLog = localObj["nvme_smart_health_information_log"].toObject();
QString modelName = localObj["model_name"].toString(); QString modelName = localObj["model_name"].toString();
QString firmwareVersion = localObj["firmware_version"].toString(); QString firmwareVersion = localObj["firmware_version"].toString();
float userCapacityGB = localObj.value("user_capacity").toObject().value("bytes").toDouble() / 1e9; float diskCapacityGB = localObj.value("user_capacity").toObject().value("bytes").toDouble() / 1e9;
int diskCapacityGbInt = static_cast<int>(diskCapacityGB);
int temperatureInt = localObj["temperature"].toObject()["current"].toInt(); int temperatureInt = localObj["temperature"].toObject()["current"].toInt();
int totalWritesInt = 0; int totalWritesInt = 0;
int totalReadsInt = 0; int totalReadsInt = 0;
QString gbSymbol = QLocale().formattedDataSize(1 << 30, 1, QLocale::DataSizeTraditionalFormat).split(' ')[1]; bool useGB = ui->actionUse_GB_instead_of_TB->isChecked();
QString userCapacityString = locale.toString(userCapacityGB, 'f', 1) + " " + gbSymbol;
QString gbSymbol = locale.formattedDataSize(1 << 30, 1, QLocale::DataSizeTraditionalFormat).split(' ')[1];
QString tbSymbol = locale.formattedDataSize(qint64(1) << 40, 1, QLocale::DataSizeTraditionalFormat).split(' ')[1];
QString diskCapacityString;
if (diskCapacityGbInt < 1000 || useGB) {
diskCapacityString = locale.toString(diskCapacityGB, 'f', 1) + " " + gbSymbol;
} else {
diskCapacityString = QString::number(diskCapacityGbInt/1000) + " " + tbSymbol;
}
QString totalReads; QString totalReads;
QString totalWrites; QString totalWrites;
QString percentage = ""; QString percentage = "";
@@ -457,7 +474,7 @@ void MainWindow::populateWindow(const QJsonObject &localObj, const QString &heal
deviceJson = localObj; deviceJson = localObj;
diskName->setText("<html><head/><body><p><span style='font-size:14pt; font-weight:bold;'>" + modelName + " " + userCapacityString + "</span></p></body></html>"); diskName->setText("<html><head/><body><p><span style='font-size:14pt; font-weight:bold;'>" + modelName + " " + diskCapacityString + "</span></p></body></html>");
firmwareLineEdit->setText(firmwareVersion); firmwareLineEdit->setText(firmwareVersion);
serialNumberLineEdit->setText(serialNumber); serialNumberLineEdit->setText(serialNumber);
typeLineEdit->setText(type); typeLineEdit->setText(type);
@@ -600,13 +617,21 @@ void MainWindow::populateWindow(const QJsonObject &localObj, const QString &heal
} }
if (totalReadsInt) { if (totalReadsInt) {
totalReads = QString::number(static_cast<int>(totalReadsInt)) + " " + gbSymbol; if (totalReadsInt < 1000 || useGB) {
totalReads = QString::number(totalReadsInt) + " " + gbSymbol;
} else {
totalReads = QString::number(totalReadsInt/1000) + " " + tbSymbol;
}
} else { } else {
totalReads = "----"; totalReads = "----";
} }
if (totalWritesInt) { if (totalWritesInt) {
totalWrites = QString::number(static_cast<int>(totalWritesInt)) + " " + gbSymbol; if (totalWritesInt < 1000 || useGB) {
totalWrites = QString::number(totalWritesInt) + " " + gbSymbol;
} else {
totalWrites = QString::number(totalWritesInt/1000) + " " + tbSymbol;
}
} else { } else {
totalWrites = "----"; totalWrites = "----";
} }
@@ -1190,3 +1215,12 @@ void MainWindow::mousePressEvent(QMouseEvent *event)
onPrevButtonClicked(); onPrevButtonClicked();
} }
} }
void MainWindow::on_actionUse_GB_instead_of_TB_toggled(bool gigabytes)
{
settings.setValue("UseGB", ui->actionUse_GB_instead_of_TB->isChecked());
if (!initializing) {
clearButtonGroup();
updateUI();
}
}

View File

@@ -58,6 +58,8 @@ private slots:
void on_actionCyclic_Navigation_toggled(bool arg1); void on_actionCyclic_Navigation_toggled(bool arg1);
void on_actionUse_GB_instead_of_TB_toggled(bool arg1);
private: private:
Ui::MainWindow *ui; Ui::MainWindow *ui;
QLocale locale; QLocale locale;

View File

@@ -345,6 +345,7 @@
<addaction name="actionHEX"/> <addaction name="actionHEX"/>
<addaction name="actionUse_Fahrenheit"/> <addaction name="actionUse_Fahrenheit"/>
<addaction name="actionCyclic_Navigation"/> <addaction name="actionCyclic_Navigation"/>
<addaction name="actionUse_GB_instead_of_TB"/>
</widget> </widget>
<widget class="QMenu" name="menuHelp"> <widget class="QMenu" name="menuHelp">
<property name="title"> <property name="title">
@@ -452,7 +453,15 @@
<bool>true</bool> <bool>true</bool>
</property> </property>
<property name="text"> <property name="text">
<string>Cyclic Navigation</string> <string>Cyclic &amp;Navigation</string>
</property>
</action>
<action name="actionUse_GB_instead_of_TB">
<property name="checkable">
<bool>true</bool>
</property>
<property name="text">
<string>Use GB instead of TB</string>
</property> </property>
</action> </action>
</widget> </widget>

Binary file not shown.

View File

@@ -55,7 +55,7 @@
</message> </message>
<message> <message>
<location filename="../src/mainwindow.ui" line="225"/> <location filename="../src/mainwindow.ui" line="225"/>
<location filename="../src/mainwindow.cpp" line="421"/> <location filename="../src/mainwindow.cpp" line="440"/>
<source>Type</source> <source>Type</source>
<translation>Τύπος</translation> <translation>Τύπος</translation>
</message> </message>
@@ -81,7 +81,7 @@
</message> </message>
<message> <message>
<location filename="../src/mainwindow.ui" line="303"/> <location filename="../src/mainwindow.ui" line="303"/>
<location filename="../src/mainwindow.cpp" line="421"/> <location filename="../src/mainwindow.cpp" line="440"/>
<source>Power On Hours</source> <source>Power On Hours</source>
<translation>Ώρες Λειτουργίας</translation> <translation>Ώρες Λειτουργίας</translation>
</message> </message>
@@ -96,170 +96,176 @@
<translation>Ρυθμίσεις</translation> <translation>Ρυθμίσεις</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.ui" line="388"/> <location filename="../src/mainwindow.ui" line="389"/>
<source>&amp;Quit</source> <source>&amp;Quit</source>
<translation>Έξοδος</translation> <translation>Έξοδος</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.ui" line="399"/> <location filename="../src/mainwindow.ui" line="400"/>
<source>&amp;Refresh Devices</source> <source>&amp;Refresh Devices</source>
<translation>Ανανέωση Συσκευών</translation> <translation>Ανανέωση Συσκευών</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.ui" line="434"/> <location filename="../src/mainwindow.ui" line="435"/>
<source>&amp;Convert Raw values to HEX</source> <source>&amp;Convert Raw values to HEX</source>
<translation>Μετατροπή των τιμών σε δεκαεξαδικές</translation> <translation>Μετατροπή των τιμών σε δεκαεξαδικές</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.ui" line="447"/> <location filename="../src/mainwindow.ui" line="448"/>
<source>Self Test</source> <source>Self Test</source>
<translation>Αυτοδιάγνωση</translation> <translation>Αυτοδιάγνωση</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.ui" line="455"/> <location filename="../src/mainwindow.ui" line="456"/>
<source>Cyclic Navigation</source> <source>Cyclic &amp;Navigation</source>
<translation>Κυκλική Πλοήγηση</translation> <translation>Kυκλική Πλοήγηση</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.ui" line="351"/> <location filename="../src/mainwindow.ui" line="464"/>
<source>Use GB instead of TB</source>
<translation>Χρήση GB αντί TB</translation>
</message>
<message>
<location filename="../src/mainwindow.ui" line="352"/>
<source>&amp;Help</source> <source>&amp;Help</source>
<translation>Βοήθεια</translation> <translation>Βοήθεια</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.ui" line="359"/> <location filename="../src/mainwindow.ui" line="360"/>
<source>De&amp;vice</source> <source>De&amp;vice</source>
<translation>Συσκευή</translation> <translation>Συσκευή</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.ui" line="366"/> <location filename="../src/mainwindow.ui" line="367"/>
<location filename="../src/mainwindow.cpp" line="283"/>
<source>Disk</source> <source>Disk</source>
<translation>Δίσκος</translation> <translation>Δίσκος</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.ui" line="380"/> <location filename="../src/mainwindow.ui" line="381"/>
<source>&amp;Save JSON</source> <source>&amp;Save JSON</source>
<translation>Αποθήκευση JSON</translation> <translation>Αποθήκευση JSON</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.ui" line="407"/> <location filename="../src/mainwindow.ui" line="408"/>
<source>&amp;GitHub</source> <source>&amp;GitHub</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.ui" line="415"/> <location filename="../src/mainwindow.ui" line="416"/>
<source>&amp;About</source> <source>&amp;About</source>
<translation>Σχετικά</translation> <translation>Σχετικά</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.ui" line="426"/> <location filename="../src/mainwindow.ui" line="427"/>
<source>&amp;Ignore C4 (Reallocated Event Count)</source> <source>&amp;Ignore C4 (Reallocated Event Count)</source>
<translation>Αγνόησε το C4 (Reallocated Event Count)</translation> <translation>Αγνόησε το C4 (Reallocated Event Count)</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.ui" line="442"/> <location filename="../src/mainwindow.ui" line="443"/>
<source>&amp;Use Fahrenheit</source> <source>&amp;Use Fahrenheit</source>
<translation>Χρήση Fahrenheit</translation> <translation>Χρήση Fahrenheit</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="262"/> <location filename="../src/mainwindow.cpp" line="269"/>
<location filename="../src/mainwindow.cpp" line="647"/> <location filename="../src/mainwindow.cpp" line="709"/>
<source>Good</source> <source>Good</source>
<translation>Καλή</translation> <translation>Καλή</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="265"/> <location filename="../src/mainwindow.cpp" line="272"/>
<location filename="../src/mainwindow.cpp" line="645"/> <location filename="../src/mainwindow.cpp" line="707"/>
<source>Caution</source> <source>Caution</source>
<translation>Προσοχή</translation> <translation>Προσοχή</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="268"/> <location filename="../src/mainwindow.cpp" line="275"/>
<location filename="../src/mainwindow.cpp" line="643"/> <location filename="../src/mainwindow.cpp" line="705"/>
<source>Bad</source> <source>Bad</source>
<translation>Κακή</translation> <translation>Κακή</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="271"/> <location filename="../src/mainwindow.cpp" line="278"/>
<source>Unknown</source> <source>Unknown</source>
<translation>Άγνωστη</translation> <translation>Άγνωστη</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="745"/> <location filename="../src/mainwindow.cpp" line="813"/>
<location filename="../src/mainwindow.cpp" line="849"/> <location filename="../src/mainwindow.cpp" line="917"/>
<source>Attribute Name</source> <source>Attribute Name</source>
<translation>Ιδιότητα</translation> <translation>Ιδιότητα</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="745"/> <location filename="../src/mainwindow.cpp" line="813"/>
<location filename="../src/mainwindow.cpp" line="849"/> <location filename="../src/mainwindow.cpp" line="917"/>
<source>Raw Values</source> <source>Raw Values</source>
<translation>Τιμή</translation> <translation>Τιμή</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="849"/> <location filename="../src/mainwindow.cpp" line="917"/>
<source>Current</source> <source>Current</source>
<translation>Τρέχουσα</translation> <translation>Τρέχουσα</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="849"/> <location filename="../src/mainwindow.cpp" line="917"/>
<source>Worst</source> <source>Worst</source>
<translation>Χειρότερη</translation> <translation>Χειρότερη</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="849"/> <location filename="../src/mainwindow.cpp" line="917"/>
<source>Threshold</source> <source>Threshold</source>
<translation>Όριο</translation> <translation>Όριο</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="152"/> <location filename="../src/mainwindow.cpp" line="151"/>
<location filename="../src/mainwindow.cpp" line="337"/> <location filename="../src/mainwindow.cpp" line="344"/>
<location filename="../src/mainwindow.cpp" line="382"/> <location filename="../src/mainwindow.cpp" line="389"/>
<location filename="../src/mainwindow.cpp" line="961"/> <location filename="../src/mainwindow.cpp" line="1029"/>
<location filename="../src/mainwindow.cpp" line="1134"/> <location filename="../src/mainwindow.cpp" line="1202"/>
<location filename="../src/mainwindow.cpp" line="1138"/> <location filename="../src/mainwindow.cpp" line="1206"/>
<source>KDiskInfo Error</source> <source>KDiskInfo Error</source>
<translation>Σφάλμα KDiskInfo</translation> <translation>Σφάλμα KDiskInfo</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="152"/> <location filename="../src/mainwindow.cpp" line="151"/>
<source>smartctl was not found, please install it!</source> <source>smartctl was not found, please install it!</source>
<translation>Το smartctl δε βρέθηκε, παρακαλείσθε να το εγκαταστήσετε</translation> <translation>Το smartctl δε βρέθηκε, παρακαλείσθε να το εγκαταστήσετε</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="337"/> <location filename="../src/mainwindow.cpp" line="344"/>
<source>KDiskInfo needs root access in order to request a self-test!</source> <source>KDiskInfo needs root access in order to request a self-test!</source>
<translation>Το KDiskInfo χρειάζεται δικαιώματα υπερχρήστη για να εκτελέσει την αυτοδιάγνωση!</translation> <translation>Το KDiskInfo χρειάζεται δικαιώματα υπερχρήστη για να εκτελέσει την αυτοδιάγνωση!</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="363"/> <location filename="../src/mainwindow.cpp" line="370"/>
<source>Test Already Running</source> <source>Test Already Running</source>
<translation>Μία αυτοδιάγνωση είναι ήδη σε εκτέλεση</translation> <translation>Μία αυτοδιάγνωση είναι ήδη σε εκτέλεση</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="376"/> <location filename="../src/mainwindow.cpp" line="383"/>
<source>A self-test has been requested successfully</source> <source>A self-test has been requested successfully</source>
<translation>Η αυτοδιάγνωση ξεκίνησε επιτυχώς</translation> <translation>Η αυτοδιάγνωση ξεκίνησε επιτυχώς</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="380"/> <location filename="../src/mainwindow.cpp" line="387"/>
<location filename="../src/mainwindow.cpp" line="1136"/> <location filename="../src/mainwindow.cpp" line="1204"/>
<source>Test Requested</source> <source>Test Requested</source>
<translation>Η αυτοδιάγνωση ξεκίνησε</translation> <translation>Η αυτοδιάγνωση ξεκίνησε</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="382"/> <location filename="../src/mainwindow.cpp" line="389"/>
<location filename="../src/mainwindow.cpp" line="1138"/> <location filename="../src/mainwindow.cpp" line="1206"/>
<source>Error: Something went wrong</source> <source>Error: Something went wrong</source>
<translation>Σφάλμα: Κάτι πήγε στραβά</translation> <translation>Σφάλμα: Κάτι πήγε στραβά</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="421"/> <location filename="../src/mainwindow.cpp" line="440"/>
<source>Status</source> <source>Status</source>
<translation>Κατάσταση</translation> <translation>Κατάσταση</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="59"/> <location filename="../src/mainwindow.cpp" line="59"/>
<location filename="../src/mainwindow.cpp" line="451"/> <location filename="../src/mainwindow.cpp" line="470"/>
<source>Self Test Log</source> <source>Self Test Log</source>
<translation>Καταγραφολόγιο Αυτοδιάγνωσης</translation> <translation>Καταγραφολόγιο Αυτοδιάγνωσης</translation>
</message> </message>
@@ -269,165 +275,165 @@
<translation>Εκκίνηση Αυτοδιάγνωσης</translation> <translation>Εκκίνηση Αυτοδιάγνωσης</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="364"/> <location filename="../src/mainwindow.cpp" line="371"/>
<source>A self-test is already being performed</source> <source>A self-test is already being performed</source>
<translation>Μία αυτοδιάγνωση εκτελείτε αυτή τη στιγμή</translation> <translation>Μία αυτοδιάγνωση εκτελείτε αυτή τη στιγμή</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="364"/> <location filename="../src/mainwindow.cpp" line="371"/>
<source>You can press the Ok button in order to abort the test that is currently running</source> <source>You can press the Ok button in order to abort the test that is currently running</source>
<translation>Μπορείτε να πατήσετε το κουμπί Εντάξει για να ακυρώσετε την τρέχουσα αυτοδιάγνωση</translation> <translation>Μπορείτε να πατήσετε το κουμπί Εντάξει για να ακυρώσετε την τρέχουσα αυτοδιάγνωση</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="378"/> <location filename="../src/mainwindow.cpp" line="385"/>
<source>minutes</source> <source>minutes</source>
<translation>λεπτά</translation> <translation>λεπτά</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="684"/> <location filename="../src/mainwindow.cpp" line="746"/>
<source>Min.)</source> <source>Min.)</source>
<translation>Λεπ.)</translation> <translation>Λεπ.)</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="675"/> <location filename="../src/mainwindow.cpp" line="737"/>
<location filename="../src/mainwindow.cpp" line="716"/> <location filename="../src/mainwindow.cpp" line="784"/>
<source>Short</source> <source>Short</source>
<translation>Σύντομο</translation> <translation>Σύντομο</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="358"/> <location filename="../src/mainwindow.cpp" line="365"/>
<source>remaining</source> <source>remaining</source>
<translation>απομένει</translation> <translation>απομένει</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="359"/> <location filename="../src/mainwindow.cpp" line="366"/>
<source>completed</source> <source>completed</source>
<translation>ολοκληρώθηκε</translation> <translation>ολοκληρώθηκε</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="378"/> <location filename="../src/mainwindow.cpp" line="385"/>
<source>It will be completed after</source> <source>It will be completed after</source>
<translation>Θα τελειώσει μετά από</translation> <translation>Θα τελειώσει μετά από</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="486"/> <location filename="../src/mainwindow.cpp" line="505"/>
<source>count</source> <source>count</source>
<translation>μονάδες</translation> <translation>μονάδες</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="497"/> <location filename="../src/mainwindow.cpp" line="516"/>
<source>hours</source> <source>hours</source>
<translation>ώρες</translation> <translation>ώρες</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="677"/> <location filename="../src/mainwindow.cpp" line="739"/>
<source>Conveyance</source> <source>Conveyance</source>
<translation>Μεταφορά</translation> <translation>Μεταφορά</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="679"/> <location filename="../src/mainwindow.cpp" line="741"/>
<location filename="../src/mainwindow.cpp" line="722"/> <location filename="../src/mainwindow.cpp" line="790"/>
<source>Extended</source> <source>Extended</source>
<translation>Εμπεριστατωμένο</translation> <translation>Εμπεριστατωμένο</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="745"/> <location filename="../src/mainwindow.cpp" line="813"/>
<location filename="../src/mainwindow.cpp" line="849"/> <location filename="../src/mainwindow.cpp" line="917"/>
<source>ID</source> <source>ID</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="780"/> <location filename="../src/mainwindow.cpp" line="848"/>
<source>Available spare capacity has fallen below the threshold</source> <source>Available spare capacity has fallen below the threshold</source>
<translation>Η υγεία του δίσκου έχει πέσει κάτω από το όριο</translation> <translation>Η υγεία του δίσκου έχει πέσει κάτω από το όριο</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="782"/> <location filename="../src/mainwindow.cpp" line="850"/>
<source>Temperature error (Overheat or Overcool)</source> <source>Temperature error (Overheat or Overcool)</source>
<translation>Σφάλμα θερμοκρασίας (Υπερθέρμανση ή Υπερψύξη)</translation> <translation>Σφάλμα θερμοκρασίας (Υπερθέρμανση ή Υπερψύξη)</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="784"/> <location filename="../src/mainwindow.cpp" line="852"/>
<source>NVM subsystem reliability has been degraded</source> <source>NVM subsystem reliability has been degraded</source>
<translation>Η αξιοπιστία του NVMe έχει μειωθεί</translation> <translation>Η αξιοπιστία του NVMe έχει μειωθεί</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="786"/> <location filename="../src/mainwindow.cpp" line="854"/>
<source>Media has been placed in Read Only Mode</source> <source>Media has been placed in Read Only Mode</source>
<translation>Το μέσο έχει τεθεί αποκλειστικά σε λειτουργία ανάγνωσης</translation> <translation>Το μέσο έχει τεθεί αποκλειστικά σε λειτουργία ανάγνωσης</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="788"/> <location filename="../src/mainwindow.cpp" line="856"/>
<source>Volatile memory backup device has Failed</source> <source>Volatile memory backup device has Failed</source>
<translation>Η δημιουργία αρχείου επαναφοράς της μη διατηρήσιμης μνήμης απέτυχε</translation> <translation>Η δημιουργία αρχείου επαναφοράς της μη διατηρήσιμης μνήμης απέτυχε</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="790"/> <location filename="../src/mainwindow.cpp" line="858"/>
<source>Persistent memory region has become Read-Only</source> <source>Persistent memory region has become Read-Only</source>
<translation>Η διατηρήσιμη μνήμη έχει μεταβεί αποκλειστικά σε λειτουργία ανάγνωσης</translation> <translation>Η διατηρήσιμη μνήμη έχει μεταβεί αποκλειστικά σε λειτουργία ανάγνωσης</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="842"/> <location filename="../src/mainwindow.cpp" line="910"/>
<source>Critical Warning</source> <source>Critical Warning</source>
<translation>Σημαντική Προειδοποίηση</translation> <translation>Σημαντική Προειδοποίηση</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="961"/> <location filename="../src/mainwindow.cpp" line="1029"/>
<source>KDiskInfo needs root access in order to read S.M.A.R.T. data!</source> <source>KDiskInfo needs root access in order to read S.M.A.R.T. data!</source>
<translation>Το KDiskInfo χρειάζεται δικαιώματα υπερχρήστη για να προσπελάσει τα δεδομένα S.M.A.R.T.!</translation> <translation>Το KDiskInfo χρειάζεται δικαιώματα υπερχρήστη για να προσπελάσει τα δεδομένα S.M.A.R.T.!</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="1022"/> <location filename="../src/mainwindow.cpp" line="1090"/>
<source>Empty JSON</source> <source>Empty JSON</source>
<translation>Κενό JSON</translation> <translation>Κενό JSON</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="1023"/> <location filename="../src/mainwindow.cpp" line="1091"/>
<source>The JSON is empty</source> <source>The JSON is empty</source>
<translation>Αυτό το JSON είναι κενό</translation> <translation>Αυτό το JSON είναι κενό</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="1028"/> <location filename="../src/mainwindow.cpp" line="1096"/>
<source>Save JSON</source> <source>Save JSON</source>
<translation>Αποθήκευση JSON</translation> <translation>Αποθήκευση JSON</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="1029"/> <location filename="../src/mainwindow.cpp" line="1097"/>
<source>JSON (*.json);;All Files (*)</source> <source>JSON (*.json);;All Files (*)</source>
<translation>JSON (*.json);;;Όλα τα αρχεία (*)</translation> <translation>JSON (*.json);;;Όλα τα αρχεία (*)</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="1035"/> <location filename="../src/mainwindow.cpp" line="1103"/>
<source>Unable to open file for writing</source> <source>Unable to open file for writing</source>
<translation>Δεν είναι δυνατό το άνοιγμα αυτού του αρχείου για εγγραφή</translation> <translation>Δεν είναι δυνατό το άνοιγμα αυτού του αρχείου για εγγραφή</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="1063"/> <location filename="../src/mainwindow.cpp" line="1131"/>
<source>An ATA and NVMe S.M.A.R.T. data viewer for Linux</source> <source>An ATA and NVMe S.M.A.R.T. data viewer for Linux</source>
<translation>Ένας αναγνώστης S.M.A.R.T. για τα Linux</translation> <translation>Ένας αναγνώστης S.M.A.R.T. για τα Linux</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="1064"/> <location filename="../src/mainwindow.cpp" line="1132"/>
<source>Licensed under the GNU G.P.L. Version 3</source> <source>Licensed under the GNU G.P.L. Version 3</source>
<translation>Διατίθεται υπό την άδεια GNU G.P.L. Έκδοση 3</translation> <translation>Διατίθεται υπό την άδεια GNU G.P.L. Έκδοση 3</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="1134"/> <location filename="../src/mainwindow.cpp" line="1202"/>
<source>KDiskInfo needs root access in order to abort a self-test!</source> <source>KDiskInfo needs root access in order to abort a self-test!</source>
<translation>Το KDiskInfo χρειάζεται δικαιώματα υπερχρήστη για να ακυρώσει μία αυτοδιάγνωση!</translation> <translation>Το KDiskInfo χρειάζεται δικαιώματα υπερχρήστη για να ακυρώσει μία αυτοδιάγνωση!</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="1136"/> <location filename="../src/mainwindow.cpp" line="1204"/>
<source>The self-test has been aborted</source> <source>The self-test has been aborted</source>
<translation>Η τρέχουσα αυτοδιάγνωση ακυρώθηκε</translation> <translation>Η τρέχουσα αυτοδιάγνωση ακυρώθηκε</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="1065"/> <location filename="../src/mainwindow.cpp" line="1133"/>
<source>Made by Samantas5855</source> <source>Made by Samantas5855</source>
<translation>Δημιουργήθηκε από τον Samantas5855</translation> <translation>Δημιουργήθηκε από τον Samantas5855</translation>
</message> </message>
<message> <message>
<location filename="../src/mainwindow.cpp" line="1067"/> <location filename="../src/mainwindow.cpp" line="1135"/>
<source>About KDiskInfo</source> <source>About KDiskInfo</source>
<translation>Σχετικά με το KDiskInfo</translation> <translation>Σχετικά με το KDiskInfo</translation>
</message> </message>