From de03f84e27db234af905304d01632769d58a4b2d Mon Sep 17 00:00:00 2001 From: spiros Date: Mon, 24 Jun 2024 17:45:51 +0300 Subject: [PATCH] Add support for CrystalDiskInfo Anime Themes Closes #7 --- CMakeLists.txt | 6 + README.md | 9 ++ dist/theme/bad.png | 0 dist/theme/bg_dark.png | 0 dist/theme/bg_light.png | 0 dist/theme/caution.png | 0 dist/theme/good.png | 0 dist/theme/theme_resources.qrc | 10 ++ dist/theme/unknown.png | 0 src/mainwindow.cpp | 149 ++++++++++++++--- src/mainwindow.h | 5 + src/mainwindow.ui | 272 ++++++++++++++++++++------------ translations/qdiskinfo_el_GR.qm | Bin 8650 -> 8732 bytes translations/qdiskinfo_el_GR.ts | 177 +++++++++++---------- translations/qdiskinfo_es_ES.qm | Bin 10021 -> 10095 bytes translations/qdiskinfo_es_ES.ts | 177 +++++++++++---------- translations/qdiskinfo_pt_BR.ts | 177 +++++++++++---------- 17 files changed, 622 insertions(+), 360 deletions(-) create mode 100644 dist/theme/bad.png create mode 100644 dist/theme/bg_dark.png create mode 100644 dist/theme/bg_light.png create mode 100644 dist/theme/caution.png create mode 100644 dist/theme/good.png create mode 100644 dist/theme/theme_resources.qrc create mode 100644 dist/theme/unknown.png diff --git a/CMakeLists.txt b/CMakeLists.txt index 8191f49..1cf4ac7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -32,6 +32,10 @@ set(PROJECT_SOURCES src/resources.qrc ) +if (INCLUDE_OPTIONAL_RESOURCES) + set(PROJECT_SOURCES ${PROJECT_SOURCES} dist/theme/theme_resources.qrc) +endif() + add_executable(QDiskInfo ${PROJECT_SOURCES} ) @@ -39,6 +43,8 @@ add_executable(QDiskInfo target_compile_definitions(QDiskInfo PRIVATE PROJECT_VERSION_MAJOR=${QDiskInfo_VERSION_MAJOR} PROJECT_VERSION_MINOR=${QDiskInfo_VERSION_MINOR} + INCLUDE_OPTIONAL_RESOURCES=$ + CHARACTER_IS_RIGHT=$ ) target_link_libraries(QDiskInfo PRIVATE Qt${QT_VERSION_MAJOR}::Widgets) diff --git a/README.md b/README.md index 6fc8a3c..394aeb4 100644 --- a/README.md +++ b/README.md @@ -24,3 +24,12 @@ This will create a `QDiskInfo` binary on the build directory but you can also in ```sh sudo make install ``` + +## Using CrystalDiskInfo Anime Themes +The process is similar to the one above with a few changes:
+First you must download the edition of CrystalDiskInfo you want (Aoi for example) in ZIP format from [here](https://crystalmark.info/en/download/), from this archive you shall copy the light and dark backgrounds as well as the good, caution, bad, unknown icons to dist/theme with the same name as the templates there.
+Once you do that compile like above but when running CMake do this instead: +```sh +cmake .. -DCMAKE_BUILD_TYPE:STRING=MinSizeRel -DQT_VERSION_MAJOR=6 -DINCLUDE_OPTIONAL_RESOURCES=ON -DCHARACTER_IS_RIGHT=ON +``` +Regarding the `-DCHARACTER_IS_RIGHT` set it to ON for themes where the character is right (like Aoi) or OFF for most other themes. diff --git a/dist/theme/bad.png b/dist/theme/bad.png new file mode 100644 index 0000000..e69de29 diff --git a/dist/theme/bg_dark.png b/dist/theme/bg_dark.png new file mode 100644 index 0000000..e69de29 diff --git a/dist/theme/bg_light.png b/dist/theme/bg_light.png new file mode 100644 index 0000000..e69de29 diff --git a/dist/theme/caution.png b/dist/theme/caution.png new file mode 100644 index 0000000..e69de29 diff --git a/dist/theme/good.png b/dist/theme/good.png new file mode 100644 index 0000000..e69de29 diff --git a/dist/theme/theme_resources.qrc b/dist/theme/theme_resources.qrc new file mode 100644 index 0000000..82f68ef --- /dev/null +++ b/dist/theme/theme_resources.qrc @@ -0,0 +1,10 @@ + + + bg_light.png + bg_dark.png + good.png + caution.png + bad.png + unknown.png + + diff --git a/dist/theme/unknown.png b/dist/theme/unknown.png new file mode 100644 index 0000000..e69de29 diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 7aa1962..4869a42 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -24,10 +24,18 @@ MainWindow::MainWindow(QWidget *parent) horizontalLayout->setContentsMargins(0, 0, 0, 0); ui->scrollArea->setWidget(containerWidget); + verticalLayout = ui->centralwidget->findChild("verticalLayout"); + gridLayout = ui->centralwidget->findChild("gridLayout"); + diskName = qobject_cast(ui->centralwidget->findChild("diskName")); temperatureValue = qobject_cast(ui->centralwidget->findChild("temperatureValueLabel")); healthStatusValue = qobject_cast(ui->centralwidget->findChild("healthStatusValueLabel")); + temperatureLabelHorizontal = qobject_cast(ui->centralwidget->findChild("healthStatusLabelHorizozontal")); + healthStatusLabelHorizontal = qobject_cast(ui->centralwidget->findChild("temperatureLabelHorizontal")); + temperatureValueHorizontal = qobject_cast(ui->centralwidget->findChild("temperatureValueLabelHorizontal")); + healthStatusValueHorizontal = qobject_cast(ui->centralwidget->findChild("healthStatusValueLabelHorizontal")); + firmwareLineEdit = qobject_cast(ui->centralwidget->findChild("firmwareLineEdit")); serialNumberLineEdit = qobject_cast(ui->centralwidget->findChild("serialNumberLineEdit")); typeLineEdit = qobject_cast(ui->centralwidget->findChild("typeLineEdit")); @@ -76,6 +84,8 @@ MainWindow::MainWindow(QWidget *parent) badColor = QColor(Qt::red); naColor = QColor(Qt::gray); + statusLabel = new QLabel; + ui->actionIgnore_C4_Reallocation_Event_Count->setChecked(settings.value("IgnoreC4", true).toBool()); ui->actionHEX->setChecked(settings.value("HEX", true).toBool()); ui->actionUse_Fahrenheit->setChecked(settings.value("Fahrenheit", false).toBool()); @@ -101,6 +111,30 @@ MainWindow::MainWindow(QWidget *parent) } this->setFocus(); initializing = false; + + if (!INCLUDE_OPTIONAL_RESOURCES || CHARACTER_IS_RIGHT) { + QLayoutItem *leftSpacerItem = gridLayout->itemAtPosition(2, 0); + if (leftSpacerItem) { + gridLayout->removeItem(leftSpacerItem); + if (dynamic_cast(leftSpacerItem)) { + delete leftSpacerItem; + } + else if (QWidget *widget = leftSpacerItem->widget()) { + delete widget; + } else { + delete leftSpacerItem; + } + } + } + + if (INCLUDE_OPTIONAL_RESOURCES) { + transformWindow(); + } else { + delete temperatureLabelHorizontal; + delete healthStatusLabelHorizontal; + delete temperatureValueHorizontal; + delete healthStatusValueHorizontal; + } } MainWindow::~MainWindow() @@ -601,14 +635,23 @@ void MainWindow::populateWindow(const QJsonObject &localObj, const QString &heal } } - if (temperatureInt > warningTemperature) { // TODO: Let the user set an alarm temp. - temperatureValue->setStyleSheet("background-color: " + badColor.name() + ";"); - } else if ((temperatureInt < criticalTemperature) && (temperatureInt > warningTemperature)){ - temperatureValue->setStyleSheet("background-color: " + cautionColor.name() + ";"); - } else if (temperatureInt == 0) { - temperatureValue->setStyleSheet("background-color: " + naColor.name() + ";"); + QLabel *temperatureValueLabel, *healthStatusValueLabel; + if (INCLUDE_OPTIONAL_RESOURCES) { + temperatureValueLabel = temperatureValueHorizontal; + healthStatusValueLabel = healthStatusValueHorizontal; } else { - temperatureValue->setStyleSheet("background-color: " + goodColor.name() + ";"); + temperatureValueLabel = temperatureValue; + healthStatusValueLabel = healthStatusValue; + } + + if (temperatureInt > warningTemperature) { // TODO: Let the user set an alarm temp. + temperatureValueLabel->setStyleSheet("background-color: " + badColor.name() + ";"); + } else if ((temperatureInt < criticalTemperature) && (temperatureInt > warningTemperature)){ + temperatureValueLabel->setStyleSheet("background-color: " + cautionColor.name() + ";"); + } else if (temperatureInt == 0) { + temperatureValueLabel->setStyleSheet("background-color: " + naColor.name() + ";"); + } else { + temperatureValueLabel->setStyleSheet("background-color: " + goodColor.name() + ";"); } QString labelStyle = "font-size:12pt; font-weight:700; color:black"; @@ -616,32 +659,54 @@ void MainWindow::populateWindow(const QJsonObject &localObj, const QString &heal if (temperatureInt > 0) { if (ui->actionUse_Fahrenheit->isChecked()) { int fahrenheit = static_cast((temperatureInt * 9.0 / 5.0) + 32.0); - temperatureValue->setText("

" + QString::number(fahrenheit) + " °F

"); + temperatureValueLabel->setText("

" + QString::number(fahrenheit) + " °F

"); } else { - temperatureValue->setText("

" + QString::number(temperatureInt) + " °C

"); + temperatureValueLabel->setText("

" + QString::number(temperatureInt) + " °C

"); } } else { - temperatureValue->setText("

" + "-- °C" + "

"); + temperatureValueLabel->setText("

" + "-- °C" + "

"); } - temperatureValue->setAlignment(Qt::AlignCenter); + temperatureValueLabel->setAlignment(Qt::AlignCenter); if (health == tr("Bad")) { - healthStatusValue->setStyleSheet("background-color: " + badColor.name() + ";"); + healthStatusValueLabel->setStyleSheet("background-color: " + badColor.name() + ";"); } else if (health == tr("Caution")){ - healthStatusValue->setStyleSheet("background-color: " + cautionColor.name() + ";"); + healthStatusValueLabel->setStyleSheet("background-color: " + cautionColor.name() + ";"); } else if (health == tr("Good")) { - healthStatusValue->setStyleSheet("background-color: " + goodColor.name() + ";"); + healthStatusValueLabel->setStyleSheet("background-color: " + goodColor.name() + ";"); } else { - healthStatusValue->setStyleSheet("background-color: " + naColor.name() + ";"); + healthStatusValueLabel->setStyleSheet("background-color: " + naColor.name() + ";"); + } + + if (INCLUDE_OPTIONAL_RESOURCES) { + QPixmap statusAnimeBackground; + QSize labelSize(100, 30); + if (health == tr("Bad")) { + statusAnimeBackground = QPixmap(":/icons/bad.png"); + } else if (health == tr("Caution")){ + statusAnimeBackground = QPixmap(":/icons/caution.png"); + } else if (health == tr("Good")) { + statusAnimeBackground = QPixmap(":/icons/good.png"); + } else { + statusAnimeBackground = QPixmap(":/icons/unknown.png"); + } + QPixmap statusAnimeBackgroundScaled = statusAnimeBackground.scaled(labelSize, Qt::KeepAspectRatioByExpanding, Qt::SmoothTransformation); + statusLabel->setPixmap(statusAnimeBackgroundScaled); + statusLabel->setToolTip(health); } QString percentageText = ""; if (!percentage.isEmpty()) { - percentageText = "
" + percentage; + if (INCLUDE_OPTIONAL_RESOURCES) { + percentageText = " (" + percentage + ")"; // 2 spaces is not a mistake + } else { + percentageText = "
" + percentage; + } } - healthStatusValue->setText("

" + health + percentageText + "

"); - healthStatusValue->setAlignment(Qt::AlignCenter); + + healthStatusValueLabel->setText("

" + health + percentageText + "

"); + healthStatusValueLabel->setAlignment(Qt::AlignCenter); if (protocol != "NVMe") { addSmartAttributesTable(attributes); @@ -936,6 +1001,54 @@ void MainWindow::addSmartAttributesTable(const QJsonArray &attributes) tableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers); } +void MainWindow::transformWindow() { + setMaximumSize(960, 960); + resize(960, 600); + + QLayoutItem *item; + while ((item = verticalLayout->takeAt(0)) != nullptr) { + QWidget *widget = item->widget(); + if (widget) { + delete widget; + } + delete item; + } + + verticalLayout->addWidget(statusLabel); + + if (CHARACTER_IS_RIGHT) { + QSpacerItem *spacer = new QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum); + gridLayout->addItem(spacer,3,3); + setMinimumWidth(645); + } else { + setMinimumWidth(960); + } + + QHBoxLayout *infoLayout = ui->centralwidget->findChild("info"); + QSpacerItem *spacerItem = infoLayout->itemAt(1)->spacerItem(); + if (spacerItem) { + infoLayout->removeItem(spacerItem); + delete spacerItem; + } + + QPalette palette = QApplication::palette(); + QColor backgroundColor = palette.color(QPalette::Window); + int lightness = backgroundColor.lightness(); + bool darkTheme = lightness < 128; + + QPixmap animeBackground; + if (darkTheme) { + animeBackground = QPixmap(":/icons/bg_dark.png"); + } else { + animeBackground = QPixmap(":/icons/bg_light.png"); + } + + animeBackground = animeBackground.scaled(this->size(), Qt::KeepAspectRatioByExpanding, Qt::SmoothTransformation); + palette.setBrush(QPalette::Window, QBrush(animeBackground)); + ui->centralwidget->setPalette(palette); + ui->centralwidget->setAutoFillBackground(true); +} + void MainWindow::on_actionQuit_triggered() { qApp->quit(); diff --git a/src/mainwindow.h b/src/mainwindow.h index 4ddbffb..5c81b3a 100644 --- a/src/mainwindow.h +++ b/src/mainwindow.h @@ -51,12 +51,16 @@ private: utils Utils; QButtonGroup *buttonGroup; QHBoxLayout *horizontalLayout; + QVBoxLayout *verticalLayout; + QGridLayout *gridLayout; QLabel *diskName, *temperatureValue, *healthStatusValue; + QLabel *temperatureLabelHorizontal, *healthStatusLabelHorizontal, *temperatureValueHorizontal, *healthStatusValueHorizontal; QLineEdit *firmwareLineEdit, *serialNumberLineEdit, *typeLineEdit, *protocolLineEdit, *deviceNodeLineEdit; QLineEdit *totalReadsLineEdit, *totalWritesLineEdit, *rotationRateLineEdit, *powerOnCountLineEdit, *powerOnHoursLineEdit; QTableWidget *tableWidget; QPushButton *prevButton, *nextButton; QColor goodColor, cautionColor, badColor, naColor; + QLabel *statusLabel; QJsonObject deviceJson; QSpacerItem *buttonStretch; QAction *actionCyclic_Navigation; @@ -79,5 +83,6 @@ private: void populateWindow(const QJsonObject &tempObj, const QString &health, const QVector>& nvmeLogOrdered = QVector>()); void addNvmeLogTable(const QVector>& nvmeLogOrdered); void addSmartAttributesTable(const QJsonArray &attributes); + void transformWindow(); void mousePressEvent(QMouseEvent*); }; diff --git a/src/mainwindow.ui b/src/mainwindow.ui index 4a2a378..c0b7d9a 100644 --- a/src/mainwindow.ui +++ b/src/mainwindow.ui @@ -30,46 +30,7 @@ - - - - - - - 0 - 0 - - - - QFrame::Shape::NoFrame - - - Qt::ScrollBarPolicy::ScrollBarAlwaysOff - - - true - - - - - 0 - 0 - 784 - 16 - - - - - 0 - 0 - - - - - - - - + false @@ -82,64 +43,7 @@ - - - - - - - - - - - - - - - - Qt::Orientation::Horizontal - - - - 40 - 20 - - - - - - - - <html><head/><body><p align="center"><span style=" font-size:14pt; font-weight:700;">Hard Drive Name</span></p></body></html> - - - - - - - Qt::Orientation::Horizontal - - - - 40 - 20 - - - - - - - - - - - - - - - - - + @@ -303,11 +207,43 @@ + + true + true + + + + true + + + + 180 + 30 + + + + background-color: rgb(0, 255, 0); + + + <html><head/><body><p align="center"><span style=" font-size:12pt; font-weight:700; color:#000000;">Good 100 %</span></p></body></html> + + + + + + + true + + + <html><head/><body><p align="center">Health Status</p></body></html> + + + @@ -400,12 +336,150 @@ + + + + true + + + + 135 + 30 + + + + background-color: rgb(0, 255, 0); + + + <html><head/><body><p align="center"><span style=" font-size:12pt; font-weight:700; color:#000000;">23° C</span></p></body></html> + + + + + + + true + + + <html><head/><body><p align="center">Temperature</p></body></html> + + + + + + + + + + + + + + + + + + + Qt::Orientation::Horizontal + + + + 40 + 20 + + + + + + + + <html><head/><body><p align="center"><span style=" font-size:14pt; font-weight:700;">Hard Drive Name</span></p></body></html> + + + + + + + Qt::Orientation::Horizontal + + + + 40 + 20 + + + + + + + + + + + + + + + + + + + + + + + 0 + 0 + + + + QFrame::Shape::NoFrame + + + Qt::ScrollBarPolicy::ScrollBarAlwaysOff + + + true + + + + + 0 + 0 + 670 + 16 + + + + + 0 + 0 + + + + + + + + + + + Qt::Orientation::Horizontal + + + + 40 + 20 + + + + @@ -560,7 +634,7 @@ - About Qt + About &Qt diff --git a/translations/qdiskinfo_el_GR.qm b/translations/qdiskinfo_el_GR.qm index da8caddeeab36ec1c7e378aa28c77df663718e73..cd5884ac98eae2263628e1887af3b04aadb3612d 100644 GIT binary patch delta 710 zcmWkrYe-XJ7=F&#x$kVpc{$#4R-}Z=5b{SECe!Ewp?Fzgkx^)54JF%zf;j##L|Qi{ z#xOy!7*^Q?Ff*fGz!0`EF{uDxz06$B5|CoB-bLz@ z_OaJi>i}(*?dwk^!9@0rF+}f~rq=Zv8*?FeP Q>)D#^e<72r7ub_MT9IO5K*HK2qixX35{SzmMGXJ`XCcZBa#X< zW2^_m!mP;ADlNexnV=R5D)u2#QuY$4rG^mMc{=?0{m#cdzkBE4MB&ZkKofAp2Pk8Z z!XZG7K$=bmG%uv(GU6iSH`PE~DLg;30enG5hXe?HC=)cmEJnp<7ZCFdRWT5dz*KTwzlvC%HQ2vB(yHc0XW1yf=q_n%oHc};5QA?})y z{;m*r9+mTp^MNFvTxd{FamwBgebkN053h|PfY<{0Q7jEyrSfQ`6tIuTTe%cYY*i{Y zZvfJ5<&=v^>bYtakPj%GS-srbr*wNLX!~kajvb~^)LQU)4}*TRHU<*_Yo)bM-vEq| z>KGg%{j{2;o@A4)>fk&ZG1AoW>Dd6QXwqC;5(9kF@`4^Od4F$YR{}Qz;CT1 zoI?9mJ#OGKt6tVi?r)Lj)?23LxL>G`cQ|SIN}mfcklCXD%0CXcTa0i{5$E5G=Vku@ z%Tr@ppCNDCEIDzV4QHFx-vj-;iDvo+Mp#Ln*;q^zGtFV)B8{5O@g6%D-A1~jpU;qFB diff --git a/translations/qdiskinfo_el_GR.ts b/translations/qdiskinfo_el_GR.ts index 12d335c..b8c0dcc 100644 --- a/translations/qdiskinfo_el_GR.ts +++ b/translations/qdiskinfo_el_GR.ts @@ -9,355 +9,370 @@ - + <html><head/><body><p align="center"><span style=" font-size:14pt; font-weight:700;">Hard Drive Name</span></p></body></html> - + + <html><head/><body><p align="center">Health Status</p></body></html> <html><head/><body><p align="center">Κατάστ. Υγειας</p></body></html> - + <html><head/><body><p align="center"><span style=" font-size:12pt; font-weight:700; color:#000000;">Good</span></p><p align="center"><span style=" font-size:12pt; font-weight:700; color:#000000;">100 %</span></p></body></html> - + + <html><head/><body><p align="center">Temperature</p></body></html> <html><head/><body><p align="center">Θερμοκρασία</p></body></html> - + + <html><head/><body><p align="center"><span style=" font-size:12pt; font-weight:700; color:#000000;">23° C</span></p></body></html> - + Firmware Έκδοση Λογισμικού - + Serial Number Σειριακός Αριθμός - + Protocol Πρωτόκολλο - + Device Node Διαδρομή - - + + <html><head/><body><p align="center"><span style=" font-size:12pt; font-weight:700; color:#000000;">Good 100 %</span></p></body></html> + + + + + Type Τύπος - + Total Host Reads Συνολικές Αναγνώσεις - + Total Host Writes Συνολικές Εγγραφές - + Rotation Rate Ρυθμός Περιστροφής - + Power On Count Μετρητής Λειτουργίας - - + + Power On Hours Ώρες Λειτουργίας - + File &Αρχείο - + Settings &Ρυθμίσεις - + &Quit Έ&ξοδος - + &Refresh Devices &Ανανέωση Συσκευών - + &About QDiskInfo Σχετικά με το &QDiskInfo - + &Convert Raw values to HEX &Μετατροπή των τιμών σε δεκαεξαδικές - + Self Test Αυτοδιάγνωση - + Cyclic &Navigation &Κυκλική Πλοήγηση - + Use &GB instead of TB Χρήση &GB αντί για TB - - + + About &Qt + Σχετικά με το &Qt + + + About Qt Σχετικά με το Qt - + &Help &Βοήθεια - + De&vice &Συσκευή - - + + Disk &Δίσκος - + &Save JSON Αποθήκευση &JSON - + &GitHub - + &Ignore C4 (Reallocated Event Count) &Αγνόησε το C4 (Reallocated Event Count) - + &Use Fahrenheit Χρήση &Fahrenheit - - + + + Good Καλή - - + + + Caution Προσοχή - - + + + Bad Κακή - + Unknown Άγνωστη - - + + Attribute Name Ιδιότητα - - + + Raw Values Τιμή - + Current Τρέχουσα - + Worst Χειρότερη - + Threshold Όριο - + Status Κατάσταση - - + + Self Test Log &Καταγραφολόγιο Αυτοδιάγνωσης - + Start Self Test &Εκκίνηση Αυτοδιάγνωσης - + Min.) Λεπ.) - - + + Short Σύντομο - + count μονάδες - + hours ώρες - + Conveyance Μεταφορά - - + + Extended Εμπεριστατωμένο - - + + ID - + Available spare capacity has fallen below the threshold Η υγεία του δίσκου έχει πέσει κάτω από το όριο - + Temperature error (Overheat or Overcool) Σφάλμα θερμοκρασίας (Υπερθέρμανση ή Υπερψύξη) - + NVM subsystem reliability has been degraded Η αξιοπιστία του NVMe έχει μειωθεί - + Media has been placed in Read Only Mode Το μέσο έχει τεθεί αποκλειστικά σε λειτουργία ανάγνωσης - + Volatile memory backup device has Failed Η δημιουργία αρχείου επαναφοράς της μη διατηρήσιμης μνήμης απέτυχε - + Persistent memory region has become Read-Only Η διατηρήσιμη μνήμη έχει μεταβεί αποκλειστικά σε λειτουργία ανάγνωσης - + Critical Warning Σημαντική Προειδοποίηση - + Empty JSON Κενό JSON - + The JSON is empty Αυτό το JSON είναι κενό - + Save JSON Αποθήκευση JSON - + JSON (*.json);;All Files (*) JSON (*.json);;;Όλα τα αρχεία (*) - + Unable to open file for writing Δεν είναι δυνατό το άνοιγμα αυτού του αρχείου για εγγραφή - + An ATA and NVMe S.M.A.R.T. data viewer for Linux Ένας αναγνώστης S.M.A.R.T. για τα Linux - + Licensed under the GNU G.P.L. Version 3 Διατίθεται υπό την άδεια GNU G.P.L. Έκδοση 3 - + Version Έκδοση - + Made by Samantas5855 Δημιουργήθηκε από τον Samantas5855 - + About QDiskInfo Σχετικά με το QDiskInfo diff --git a/translations/qdiskinfo_es_ES.qm b/translations/qdiskinfo_es_ES.qm index 170929eedd10371b5e1501c42ff440f8bd9fa5fb..ce0f607f52aada74bf4481d4c40e745bfdae320a 100644 GIT binary patch delta 695 zcmWkrZAepL7(MrT@7?a*-R8&KcBf5k8nHrxgn|&6LH462epMzJrAE_{VB3Bqxju=| zN|*^l13^VJ$=NasLk2^`Oq5hCtbPa;L?%fpid0WOE{FGh&vTx0&*^rqIGe5hX5gp? z(3-%7+5o*B+)M`HCvabjfmj{*NEM(wg#E`p0PnD;i36B>C}u<;{w7M-TL9x0%3WPR z(lV;uG?%QP)*T?sV@jS7#zvTz3t_;#%1n)T0nHXOqs{{Stc#hoF9Fsv*87nzlI-m5 zwMrmyk?rhNXc5@A{-^ZL$6Pyj2e3`We7^7tNM||z4GG%XIm^ZzkoJhH>mamMaN8^Y z&&#|c-vOjF@P{>|Cm-i4-}jKw48E^13YdKS<2VI1NcQs4a1mhm$$x*{0I56({hHRQgMdKz1?1&e0f^@H&6Kl@wCDkF(eeO4H zGl)$gE2%i7gn?URd$&~By-9PYrK{8P#BY@*nrORDE6ul&oA^O#)lmSXR%k+5PU`Wb zCbWGYP^D{zivLjFVo>u}nx#S=a^VSju$+>szVuQ-hh)#dDCOQL`|=4{vpm9Fro6`F zi4Gm{*5%3EAdpZhPcDs-p?YmCn@Icv+UGB*m$YncG?)pfU+Kz^Tp~j`x|ZoWny=Sq zjI%V~qHhZXVTP$k-|zI0vo3w;?l=1Lb{DnzEZooDkQhr~kW~^q6f?z5pXfMW>-D7W ODhOOx62qC=4doxKM7Tr% delta 658 zcmWkrZAepL7(MrT?{;^0x9ik>s!KB=R!HD}C=@Y+J|HIPmZ&HcE?kX-ZAw3Ei$17u zebA&B`y-f$DLI_9g%QH2Fb#(#239|eOd^mXl~G|&zYg#7KIc5=InTOt$a&Wqz5yH! z0@5P5L>$nrfy-6`ava>Mi*OG7vb42Kv+@E{aOG2 z9_1bN4q(TA{*apVBsJghewcJW^N;#6fYHv6>dXkEq?*qp8-b!R{@be%z^3@z0UBWK zR5Wki0mP7^)j$X+Iz0k8*D0b^gVeuUaooxO|NoT z+yHbBl*<7vz_kf-Dorv?LY2@&iH3yKlG{fOHNs4m9GiMoh8#zcWmN}bZaT$1)w#C4 zG$^3*o%%&a7F3ahl{VQH3&*cgy&e@#6d<^}EEGND&R56&K@Vte{K$={NzD zm8%nWC!JCsm03gBv@JE9yiGwHB+r)-D(9r&_;U*8nAB5G$eN@nCP4C6q?rNoZJCs2 z>teL0QJP(OLGrblE>=&rHZ)Jtbda*&noO(;5T0q<51*(1zuNwJKk;kj%9kwh8{~MD i_(qRB<_sbq@@YA7^DAAn#S856Cnwp - + <html><head/><body><p align="center"><span style=" font-size:14pt; font-weight:700;">Hard Drive Name</span></p></body></html> <html><head/><body><p align="center"><span style=" font-size:14pt; font-weight:700;">Nombre del Disco</span></p></body></html> - + + <html><head/><body><p align="center">Health Status</p></body></html> <html><head/><body><p align="center">Estado</p></body></html> - + <html><head/><body><p align="center"><span style=" font-size:12pt; font-weight:700; color:#000000;">Good</span></p><p align="center"><span style=" font-size:12pt; font-weight:700; color:#000000;">100 %</span></p></body></html> <html><head/><body><p align="center"><span style=" font-size:12pt; font-weight:700; color:#000000;">Bueno</span></p><p align="center"><span style=" font-size:12pt; font-weight:700; color:#000000;">100 %</span></p></body></html> - + + <html><head/><body><p align="center">Temperature</p></body></html> <html><head/><body><p align="center">Temperatura</p></body></html> - + + <html><head/><body><p align="center"><span style=" font-size:12pt; font-weight:700; color:#000000;">23° C</span></p></body></html> <html><head/><body><p align="center"><span style=" font-size:12pt; font-weight:700; color:#000000;">23° C</span></p></body></html> - + Firmware - + Serial Number Número de Serie - + Protocol Protocolo - + Device Node Archivo de Dispositivo - - + + <html><head/><body><p align="center"><span style=" font-size:12pt; font-weight:700; color:#000000;">Good 100 %</span></p></body></html> + + + + + Type Tipo - + Total Host Reads Lecturas Totales - + Total Host Writes Escrituras Totales - + Rotation Rate Velocidad Rotacional - + Power On Count Veces Encendido - - + + Power On Hours Horas Encendido - + File Archivo - + Settings Ajustes - + &Help Underline in unavailable letters has been removed for simplicity Ayuda - + De&vice Dispositi&vo - - + + Disk Disco - + &Save JSON Underline in unavailable letters has been removed for simplicity Guardar Archivo JSON - + &Quit Underline in unavailable letters has been removed for simplicity Salir - + &Refresh Devices Underline in unavailable letters has been removed for simplicity Actualizar Dispositivos - + &GitHub - + &About QDiskInfo Acerca de &QDiskInfo - - + + About &Qt + Acerca de &Qt + + + About Qt Acerca de Qt - + &Ignore C4 (Reallocated Event Count) &Ignorar C4 (Reallocated Event Count) - + &Convert Raw values to HEX &Convertir valores en Bruto a HEX - + &Use Fahrenheit &Usar Fahrenheit - + Self Test Ejecutar Autotest - + Cyclic &Navigation &Navegación Cíclica - + Use &GB instead of TB Usar &GB en lugar de TB - + Start Self Test Iniciar Autotest - - + + Self Test Log Registro del Autotest - - + + + Good Bueno - - + + + Caution Precaución - - + + + Bad Malo - + Unknown Desconocido - + Status Estado - + count veces - + hours horas - - + + Short Corto - + Conveyance Transferencia - - + + Extended Extendido - + Min.) Min.) - - + + ID - - + + Attribute Name Nombre del Atributo - - + + Raw Values Valores en Bruto - + Available spare capacity has fallen below the threshold El espacio libre disponible ha caído por debajo del umbral - + Temperature error (Overheat or Overcool) Error de temperatura (Sobrecalentado o Sobre-enfriado) - + NVM subsystem reliability has been degraded La fiabilidad del subsitema NVM se ha degradado - + Media has been placed in Read Only Mode El medio se ha configurado en Modo de Solo Lectura - + Volatile memory backup device has Failed No se pudo crear el archivo de reversión de memoria no volátil - + Persistent memory region has become Read-Only Una región de memoria no volátil se ha vuelto de Solo Lectura - + Critical Warning Aviso Importante - + Current Actual - + Worst Peor - + Threshold Umbral - + Empty JSON Archivo JSON vacío - + The JSON is empty El archivo JSON está vacío - + Save JSON Guardar archivo JSON - + JSON (*.json);;All Files (*) JSON (*.json);;Todos los archivos (*) - + Unable to open file for writing No se ha podido abrir el archivo de escritura - + An ATA and NVMe S.M.A.R.T. data viewer for Linux Un visor de datos S.M.A.R.T. para ATA y NVMe - + Licensed under the GNU G.P.L. Version 3 Licenciado bajo Licencia Pública General de GNU, Versión 3 - + Made by Samantas5855 Hecho por Samantas5855 - + Version Versión - + About QDiskInfo Acerca de QDiskInfo diff --git a/translations/qdiskinfo_pt_BR.ts b/translations/qdiskinfo_pt_BR.ts index 28dbf63..44dd293 100644 --- a/translations/qdiskinfo_pt_BR.ts +++ b/translations/qdiskinfo_pt_BR.ts @@ -9,355 +9,370 @@ - + <html><head/><body><p align="center"><span style=" font-size:14pt; font-weight:700;">Hard Drive Name</span></p></body></html> <html><head/><body><p align="center"><span style=" font-size:14pt; font-weight:700;">Nome do Disco Rígido</span></p></body></html> - + + <html><head/><body><p align="center">Health Status</p></body></html> <html><head/><body><p align="center">Status de Saúde</p></body></html> - + <html><head/><body><p align="center"><span style=" font-size:12pt; font-weight:700; color:#000000;">Good</span></p><p align="center"><span style=" font-size:12pt; font-weight:700; color:#000000;">100 %</span></p></body></html> <html><head/><body><p align="center"><span style=" font-size:12pt; font-weight:700; color:#000000;">Saudável</span></p><p align="center"><span style=" font-size:12pt; font-weight:700; color:#000000;">100 %</span></p></body></html> - + + <html><head/><body><p align="center">Temperature</p></body></html> <html><head/><body><p align="center">Temperatura</p></body></html> - + + <html><head/><body><p align="center"><span style=" font-size:12pt; font-weight:700; color:#000000;">23° C</span></p></body></html> <html><head/><body><p align="center"><span style=" font-size:12pt; font-weight:700; color:#000000;">23° C</span></p></body></html> - + Firmware Firmware - + Serial Number Número Serial - + Protocol Padrão - + Device Node Nó do Dispositivo - - + + <html><head/><body><p align="center"><span style=" font-size:12pt; font-weight:700; color:#000000;">Good 100 %</span></p></body></html> + + + + + Type Tipo - + Total Host Reads Leituras Totais - + Total Host Writes Escritas Totais - + Rotation Rate Taxa de Rotação - + Power On Count Nº de Vezes Ligado - - + + Power On Hours Nº de Horas Ligado - + File Arquivo - + Settings Configurações - + &Help &Ajuda - + De&vice &Dispositivo - - + + Disk Disco - + &Save JSON &Salvar JSON - + &Quit &Sair - + &Refresh Devices &Atualizar Dispositivos - + &GitHub - + &About QDiskInfo Sobre &QDiskInfo - - + + About &Qt + Sobre o &Qt + + + About Qt Sobre o Qt - + &Ignore C4 (Reallocated Event Count) &Ignorar C4 (Nº de Eventos Realocados) - + &Convert Raw values to HEX &Converter Valores Puros para HEX - + &Use Fahrenheit &Usar Fahrenheit - + Self Test Auto Teste - + Cyclic &Navigation &Navegação Cíclica - + Use &GB instead of TB &Usar GB invés de TB - + Start Self Test Começar Auto Teste - - + + Self Test Log Log do Auto Teste - - + + + Good Saúdavel - - + + + Caution Alerta - - + + + Bad Crítico - + Unknown Indefinido - + Status Status - + count vezes - + hours horas - - + + Short Rápido - + Conveyance Médio - - + + Extended Longo - + Min.) Min.) - - + + ID - - + + Attribute Name Nome do Atributo - - + + Raw Values Valores Puros - + Available spare capacity has fallen below the threshold Capacidade restante disponível caiu abaixo do limite - + Temperature error (Overheat or Overcool) Erro de Temperatura (Muito Quente ou Frio) - + NVM subsystem reliability has been degraded Confiabilidade do subsistema NVM degradada - + Media has been placed in Read Only Mode Media em modo de apenas leitura - + Volatile memory backup device has Failed Dispositivo de backup de memória volátil falhou - + Persistent memory region has become Read-Only Região de memória persistente entrou em modo de apenas leitura - + Critical Warning Aviso Crítico - + Current Atual - + Worst Pior - + Threshold Limite - + Empty JSON JSON vazio - + The JSON is empty O JSON está vazio - + Save JSON Salvar JSON - + JSON (*.json);;All Files (*) JSON (*.json);;All Files (*) - + Unable to open file for writing Não foi possível abrir o aquivo para escrita - + An ATA and NVMe S.M.A.R.T. data viewer for Linux Um visualizador ATA e NVMe S.M.A.R.T. para Linux - + Licensed under the GNU G.P.L. Version 3 Licenciado sob a GNU G.P.L. Versão 3 - + Made by Samantas5855 Feito por Samantas5855 - + Version Versão - + About QDiskInfo Sobre QDiskInfo