Show database public icon on tab when visible (#11725)

* Show database public icon on tab when visible

* Remove unnecessary assert
This commit is contained in:
Jonathan White 2025-02-09 20:02:44 -05:00
parent 3083626bda
commit 3b2f54daff
No known key found for this signature in database
GPG Key ID: 440FC65F2E0C6E01
4 changed files with 24 additions and 4 deletions

View File

@ -1551,6 +1551,10 @@ Backup database located at %2</source>
<source>Database file read error.</source> <source>Database file read error.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>No file path was provided.</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>DatabaseOpenDialog</name> <name>DatabaseOpenDialog</name>

View File

@ -107,10 +107,6 @@ QUuid Database::uuid() const
*/ */
bool Database::open(QSharedPointer<const CompositeKey> key, QString* error) bool Database::open(QSharedPointer<const CompositeKey> key, QString* error)
{ {
Q_ASSERT(!m_data.filePath.isEmpty());
if (m_data.filePath.isEmpty()) {
return false;
}
return open(m_data.filePath, std::move(key), error); return open(m_data.filePath, std::move(key), error);
} }
@ -126,6 +122,13 @@ bool Database::open(QSharedPointer<const CompositeKey> key, QString* error)
*/ */
bool Database::open(const QString& filePath, QSharedPointer<const CompositeKey> key, QString* error) bool Database::open(const QString& filePath, QSharedPointer<const CompositeKey> key, QString* error)
{ {
if (filePath.isEmpty()) {
if (error) {
*error = tr("No file path was provided.");
}
return false;
}
QFile dbFile(filePath); QFile dbFile(filePath);
if (!dbFile.exists()) { if (!dbFile.exists()) {
if (error) { if (error) {

View File

@ -25,6 +25,7 @@
#include "core/Tools.h" #include "core/Tools.h"
#include "format/CsvExporter.h" #include "format/CsvExporter.h"
#include "gui/Clipboard.h" #include "gui/Clipboard.h"
#include "gui/DatabaseIcons.h"
#include "gui/DatabaseOpenDialog.h" #include "gui/DatabaseOpenDialog.h"
#include "gui/DatabaseWidget.h" #include "gui/DatabaseWidget.h"
#include "gui/DatabaseWidgetStateSync.h" #include "gui/DatabaseWidgetStateSync.h"
@ -656,6 +657,12 @@ void DatabaseTabWidget::updateTabName(int index)
index = indexOf(dbWidget); index = indexOf(dbWidget);
setTabText(index, tabName(index)); setTabText(index, tabName(index));
setTabToolTip(index, dbWidget->displayFilePath()); setTabToolTip(index, dbWidget->displayFilePath());
auto iconIndex = dbWidget->database()->publicIcon();
if (iconIndex >= 0 && iconIndex < databaseIcons()->count()) {
setTabIcon(index, databaseIcons()->icon(iconIndex));
} else {
setTabIcon(index, {});
}
emit tabNameChanged(); emit tabNameChanged();
} }

View File

@ -92,6 +92,11 @@ DatabaseWidget::DatabaseWidget(QSharedPointer<Database> db, QWidget* parent)
{ {
Q_ASSERT(m_db); Q_ASSERT(m_db);
// Read public headers if the database hasn't been opened yet
if (!m_db->isInitialized()) {
m_db->open(nullptr);
}
m_messageWidget->setHidden(true); m_messageWidget->setHidden(true);
auto mainLayout = new QVBoxLayout(); auto mainLayout = new QVBoxLayout();
@ -1929,6 +1934,7 @@ bool DatabaseWidget::lock()
switchToOpenDatabase(m_db->filePath()); switchToOpenDatabase(m_db->filePath());
auto newDb = QSharedPointer<Database>::create(m_db->filePath()); auto newDb = QSharedPointer<Database>::create(m_db->filePath());
newDb->open(nullptr);
replaceDatabase(newDb); replaceDatabase(newDb);
m_attemptingLock = false; m_attemptingLock = false;