Qt: Make the memory card modified state more obvious

This commit is contained in:
Stenzek
2025-11-16 01:21:25 +10:00
parent f5bd7c1b01
commit 1e57a5b94e
3 changed files with 79 additions and 14 deletions

View File

@@ -3,6 +3,7 @@
#include "memorycardeditorwindow.h" #include "memorycardeditorwindow.h"
#include "mainwindow.h" #include "mainwindow.h"
#include "qthost.h"
#include "qtutils.h" #include "qtutils.h"
#include "core/host.h" #include "core/host.h"
@@ -139,9 +140,13 @@ MemoryCardEditorWindow::MemoryCardEditorWindow() : QWidget()
m_card_a.path_cb = m_ui.cardAPath; m_card_a.path_cb = m_ui.cardAPath;
m_card_a.table = m_ui.cardA; m_card_a.table = m_ui.cardA;
m_card_a.blocks_free_label = m_ui.cardAUsage; m_card_a.blocks_free_label = m_ui.cardAUsage;
m_card_a.modified_icon_label = m_ui.cardAModifiedIcon;
m_card_a.modified_label = m_ui.cardAModified;
m_card_b.path_cb = m_ui.cardBPath; m_card_b.path_cb = m_ui.cardBPath;
m_card_b.table = m_ui.cardB; m_card_b.table = m_ui.cardB;
m_card_b.blocks_free_label = m_ui.cardBUsage; m_card_b.blocks_free_label = m_ui.cardBUsage;
m_card_b.modified_icon_label = m_ui.cardBModifiedIcon;
m_card_b.modified_label = m_ui.cardBModified;
m_file_icon_width = MEMORY_CARD_ICON_SIZE + (m_card_a.table->showGrid() ? 1 : 0); m_file_icon_width = MEMORY_CARD_ICON_SIZE + (m_card_a.table->showGrid() ? 1 : 0);
m_file_icon_height = MEMORY_CARD_ICON_SIZE + (m_card_a.table->showGrid() ? 1 : 0); m_file_icon_height = MEMORY_CARD_ICON_SIZE + (m_card_a.table->showGrid() ? 1 : 0);
@@ -155,6 +160,8 @@ MemoryCardEditorWindow::MemoryCardEditorWindow() : QWidget()
connectCardUi(&m_card_b, m_ui.buttonBoxB); connectCardUi(&m_card_b, m_ui.buttonBoxB);
populateComboBox(m_ui.cardAPath); populateComboBox(m_ui.cardAPath);
populateComboBox(m_ui.cardBPath); populateComboBox(m_ui.cardBPath);
updateCardBlocksFree(&m_card_a);
updateCardBlocksFree(&m_card_b);
updateButtonState(); updateButtonState();
const QString new_card_hover_text(tr("New Card...")); const QString new_card_hover_text(tr("New Card..."));
@@ -236,6 +243,7 @@ bool MemoryCardEditorWindow::event(QEvent* event)
void MemoryCardEditorWindow::createCardButtons(Card* card, QDialogButtonBox* buttonBox) void MemoryCardEditorWindow::createCardButtons(Card* card, QDialogButtonBox* buttonBox)
{ {
card->modified_icon_label->setPixmap(QIcon(QtHost::GetResourceQPath("images/warning.svg", true)).pixmap(16, 16));
card->format_button = buttonBox->addButton(tr("Format Card"), QDialogButtonBox::ActionRole); card->format_button = buttonBox->addButton(tr("Format Card"), QDialogButtonBox::ActionRole);
card->import_file_button = buttonBox->addButton(tr("Import File..."), QDialogButtonBox::ActionRole); card->import_file_button = buttonBox->addButton(tr("Import File..."), QDialogButtonBox::ActionRole);
card->import_button = buttonBox->addButton(tr("Import Card..."), QDialogButtonBox::ActionRole); card->import_button = buttonBox->addButton(tr("Import Card..."), QDialogButtonBox::ActionRole);
@@ -351,13 +359,12 @@ bool MemoryCardEditorWindow::loadCard(const QString& filename, Card* card)
card->table->setRowCount(0); card->table->setRowCount(0);
card->dirty = false; card->dirty = false;
card->save_button->setEnabled(false); card->save_button->setEnabled(false);
card->blocks_free_label->clear();
card->filename.clear(); card->filename.clear();
if (filename.isEmpty()) if (filename.isEmpty())
{ {
updateButtonState(); updateButtonState();
updateCardBlocksFree(card);
return false; return false;
} }
@@ -468,9 +475,19 @@ void MemoryCardEditorWindow::incrementAnimationFrame()
void MemoryCardEditorWindow::updateCardBlocksFree(Card* card) void MemoryCardEditorWindow::updateCardBlocksFree(Card* card)
{ {
card->blocks_free = MemoryCardImage::GetFreeBlockCount(card->data); if (!card->filename.empty())
card->blocks_free_label->setText( {
tr("%n block(s) free%1", "", card->blocks_free).arg(card->dirty ? QStringLiteral(" (*)") : QString())); card->blocks_free = MemoryCardImage::GetFreeBlockCount(card->data);
card->blocks_free_label->setText(tr("%n block(s) free", "", card->blocks_free));
card->modified_icon_label->setVisible(card->dirty);
card->modified_label->setVisible(card->dirty);
}
else
{
card->blocks_free_label->clear();
card->modified_icon_label->setVisible(false);
card->modified_label->setVisible(false);
}
} }
void MemoryCardEditorWindow::setCardDirty(Card* card) void MemoryCardEditorWindow::setCardDirty(Card* card)

View File

@@ -46,6 +46,8 @@ private:
QComboBox* path_cb = nullptr; QComboBox* path_cb = nullptr;
QTableWidget* table = nullptr; QTableWidget* table = nullptr;
QLabel* blocks_free_label = nullptr; QLabel* blocks_free_label = nullptr;
QLabel* modified_icon_label = nullptr;
QLabel* modified_label = nullptr;
QPushButton* save_button = nullptr; QPushButton* save_button = nullptr;
QPushButton* import_button = nullptr; QPushButton* import_button = nullptr;
QPushButton* import_file_button = nullptr; QPushButton* import_file_button = nullptr;

View File

@@ -102,11 +102,34 @@
<item row="2" column="3"> <item row="2" column="3">
<layout class="QHBoxLayout" name="horizontalLayout_3" stretch="1,0"> <layout class="QHBoxLayout" name="horizontalLayout_3" stretch="1,0">
<item> <item>
<widget class="QLabel" name="cardBUsage"> <widget class="QLabel" name="cardBUsage" />
<property name="text"> </item>
<string notr="true"/> <item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Orientation::Horizontal</enum>
</property> </property>
</widget> <property name="sizeHint" stdset="0">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
</spacer>
</item>
<item>
<layout class="QHBoxLayout" name="cardBModifiedLayout">
<item>
<widget class="QLabel" name="cardBModifiedIcon" />
</item>
<item>
<widget class="QLabel" name="cardBModified">
<property name="text">
<string>Card Modified</string>
</property>
</widget>
</item>
</layout>
</item> </item>
<item> <item>
<widget class="QDialogButtonBox" name="buttonBoxB"> <widget class="QDialogButtonBox" name="buttonBoxB">
@@ -118,13 +141,36 @@
</layout> </layout>
</item> </item>
<item row="2" column="0"> <item row="2" column="0">
<layout class="QHBoxLayout" name="horizontalLayout_4" stretch="1,0"> <layout class="QHBoxLayout" name="horizontalLayout_4">
<item> <item>
<widget class="QLabel" name="cardAUsage"> <widget class="QLabel" name="cardAUsage" />
<property name="text"> </item>
<string notr="true"/> <item>
<spacer name="horizontalSpacer_2">
<property name="orientation">
<enum>Qt::Orientation::Horizontal</enum>
</property> </property>
</widget> <property name="sizeHint" stdset="0">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
</spacer>
</item>
<item>
<layout class="QHBoxLayout" name="cardAModifiedLayout">
<item>
<widget class="QLabel" name="cardAModifiedIcon" />
</item>
<item>
<widget class="QLabel" name="cardAModified">
<property name="text">
<string>Card Modified</string>
</property>
</widget>
</item>
</layout>
</item> </item>
<item> <item>
<widget class="QDialogButtonBox" name="buttonBoxA"> <widget class="QDialogButtonBox" name="buttonBoxA">