Skip to content

Commit

Permalink
Improved interface and cleanup
Browse files Browse the repository at this point in the history
  • Loading branch information
droidmonkey committed Jun 2, 2024
1 parent 26574cb commit 3f9aba1
Show file tree
Hide file tree
Showing 8 changed files with 165 additions and 102 deletions.
31 changes: 15 additions & 16 deletions src/core/Database.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1041,7 +1041,6 @@ void Database::stopModifiedTimer()

QUuid Database::publicUuid()
{

if (!publicCustomData().contains("KPXC_PUBLIC_UUID")) {
publicCustomData().insert("KPXC_PUBLIC_UUID", QUuid::createUuid().toRfc4122());
markAsModified();
Expand All @@ -1050,32 +1049,32 @@ QUuid Database::publicUuid()
return QUuid::fromRfc4122(publicCustomData()["KPXC_PUBLIC_UUID"].toByteArray());
}

QString Database::publicSummary()
QString Database::publicName()
{
if (!publicCustomData().contains("KPXC_PUBLIC_SUMMARY")) {
return QString();
}

return publicCustomData()["KPXC_PUBLIC_SUMMARY"].toString();
return publicCustomData().value("KPXC_PUBLIC_NAME").toString();
}

void Database::setPublicSummary(const QString& newSummary)
void Database::setPublicName(const QString& name)
{
publicCustomData().insert("KPXC_PUBLIC_SUMMARY", newSummary);
if (name.isEmpty()) {
publicCustomData().remove("KPXC_PUBLIC_NAME");
} else {
publicCustomData().insert("KPXC_PUBLIC_NAME", name);
}
markAsModified();
}

QString Database::publicColor()
{
if (!publicCustomData().contains("KPXC_PUBLIC_COLOR")) {
return QString();
}

return publicCustomData()["KPXC_PUBLIC_COLOR"].toString();
return publicCustomData().value("KPXC_PUBLIC_COLOR").toString();
}

void Database::setPublicColor(const QString& newSummary)
void Database::setPublicColor(const QString& color)
{
publicCustomData().insert("KPXC_PUBLIC_COLOR", newSummary);
if (color.isEmpty()) {
publicCustomData().remove("KPXC_PUBLIC_COLOR");
} else {
publicCustomData().insert("KPXC_PUBLIC_COLOR", color);
}
markAsModified();
}
6 changes: 3 additions & 3 deletions src/core/Database.h
Original file line number Diff line number Diff line change
Expand Up @@ -108,10 +108,10 @@ class Database : public ModifiableObject
QString canonicalFilePath() const;
void setFilePath(const QString& filePath);

QString publicSummary();
void setPublicSummary(const QString& newSummary);
QString publicName();
void setPublicName(const QString& name);
QString publicColor();
void setPublicColor(const QString& newSummary);
void setPublicColor(const QString& color);

Metadata* metadata();
const Metadata* metadata() const;
Expand Down
30 changes: 9 additions & 21 deletions src/gui/DatabaseOpenWidget.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -72,9 +72,6 @@ DatabaseOpenWidget::DatabaseOpenWidget(QWidget* parent)
font.setPointSize(font.pointSize() + 4);
font.setBold(true);
m_ui->labelHeadline->setFont(font);
m_ui->labelHeadline->setText(tr("Unlock KeePassXC Database"));

m_ui->publicSummaryLabel->setVisible(false);

m_ui->quickUnlockButton->setFont(font);
m_ui->quickUnlockButton->setIcon(
Expand Down Expand Up @@ -228,27 +225,18 @@ void DatabaseOpenWidget::load(const QString& filename)

m_ui->fileNameLabel->setRawText(m_filename);

if (!m_db->publicSummary().isEmpty()) {
m_ui->publicSummaryLabel->setVisible(true);
m_ui->publicSummaryLabel->setText(m_db->publicSummary());
auto label = tr("Unlock KeePassXC Database");
if (!m_db->publicName().isEmpty()) {
label.append(QString(": %1").arg(m_db->publicName()));
}
m_ui->labelHeadline->setText(label);

m_ui->publicSummaryLabel->setStyleSheet("");

if (!m_db->publicColor().isEmpty()) {
QColor userColor = QColor(m_db->publicColor());
auto color = m_db->publicColor();
m_ui->displayColorLabel->setVisible(!color.isEmpty());
m_ui->displayColorLabel->setStyleSheet(
QString("background: %1; border: 1px solid palette(dark); border-radius: 4px").arg(color));

if (userColor.isValid()) {
float luminance = (0.299 * userColor.redF() + 0.587 * userColor.greenF() + 0.114 * userColor.blueF());

QColor textColor = Qt::white;
if (luminance > 0.5) {
textColor = Qt::black;
}

m_ui->publicSummaryLabel->setStyleSheet(QString("background-color:%1;color:%2;border-color:%1;").arg(userColor.name(), textColor.name()));
}
}
// m_ui->centralStack->setStyleSheet(QString("QStackedWidget {border: 4px solid %1}").arg(color));

Check notice

Code scanning / CodeQL

Commented-out code Note

This comment appears to contain commented-out code.

if (config()->get(Config::RememberLastKeyFiles).toBool()) {
auto lastKeyFiles = config()->get(Config::LastKeyFiles).toHash();
Expand Down
68 changes: 45 additions & 23 deletions src/gui/DatabaseOpenWidget.ui
Original file line number Diff line number Diff line change
Expand Up @@ -55,15 +55,52 @@
</spacer>
</item>
<item>
<widget class="QLabel" name="labelHeadline">
<property name="font">
<font>
<pointsize>12</pointsize>
<bold>true</bold>
</font>
<layout class="QHBoxLayout" name="horizontalLayout">
<property name="spacing">
<number>9</number>
</property>
<item>
<widget class="QLabel" name="labelHeadline">
<property name="font">
<font>
<pointsize>12</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Unlock KeePassXC Database</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
<item>
<widget class="QLabel" name="displayColorLabel">
<property name="maximumSize">
<size>
<width>16777215</width>
<height>8</height>
</size>
</property>
<property name="styleSheet">
<string notr="true">background:cyan; border: 1px solid black; border-radius: 4px</string>
</property>
<property name="text">
<string>Unlock KeePassXC Database</string>
<string/>
</property>
</widget>
</item>
Expand All @@ -90,22 +127,6 @@
</property>
</spacer>
</item>
<item>
<widget class="QLabel" name="publicSummaryLabel">
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="text">
<string>publicSummary</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<property name="margin">
<number>10</number>
</property>
</widget>
</item>
<item>
<widget class="QStackedWidget" name="centralStack">
<property name="minimumSize">
Expand Down Expand Up @@ -527,6 +548,7 @@
<property name="font">
<font>
<pointsize>10</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
Expand Down
13 changes: 10 additions & 3 deletions src/gui/dbsettings/DatabaseSettingsDialog.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -79,12 +79,19 @@ DatabaseSettingsDialog::DatabaseSettingsDialog(QWidget* parent)
connect(m_ui->buttonBox, SIGNAL(rejected()), SLOT(reject()));

m_ui->categoryList->addCategory(tr("General"), icons()->icon("preferences-other"));
m_ui->categoryList->addCategory(tr("Security"), icons()->icon("security-high"));
m_ui->stackedWidget->addWidget(m_generalWidget);
auto* scrollArea = new QScrollArea(this);
scrollArea->setFrameShape(QFrame::NoFrame);
scrollArea->setFrameShadow(QFrame::Plain);
scrollArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
scrollArea->setSizeAdjustPolicy(QScrollArea::AdjustToContents);
scrollArea->setWidgetResizable(true);
scrollArea->setWidget(m_generalWidget);
m_ui->stackedWidget->addWidget(scrollArea);

m_ui->categoryList->addCategory(tr("Security"), icons()->icon("security-high"));
m_ui->stackedWidget->addWidget(m_securityTabWidget);

auto* scrollArea = new QScrollArea(parent);
scrollArea = new QScrollArea(parent);
scrollArea->setFrameShape(QFrame::NoFrame);
scrollArea->setFrameShadow(QFrame::Plain);
scrollArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
Expand Down
29 changes: 21 additions & 8 deletions src/gui/dbsettings/DatabaseSettingsWidgetGeneral.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,8 @@ DatabaseSettingsWidgetGeneral::DatabaseSettingsWidgetGeneral(QWidget* parent)
{
m_ui->setupUi(this);

connect(m_ui->dbPublicColorChooseButton, SIGNAL(clicked()), SLOT(pickColor()));
connect(m_ui->dbPublicColorButton, &QPushButton::clicked, this, &DatabaseSettingsWidgetGeneral::pickColor);
connect(m_ui->dbPublicColorClearButton, &QPushButton::clicked, this, [this] { setupColorButton({}); });

connect(m_ui->historyMaxItemsCheckBox, SIGNAL(toggled(bool)), m_ui->historyMaxItemsSpinBox, SLOT(setEnabled(bool)));
connect(m_ui->historyMaxSizeCheckBox, SIGNAL(toggled(bool)), m_ui->historyMaxSizeSpinBox, SLOT(setEnabled(bool)));
Expand All @@ -50,8 +51,8 @@ void DatabaseSettingsWidgetGeneral::initialize()
m_ui->defaultUsernameEdit->setText(meta->defaultUserName());
m_ui->compressionCheckbox->setChecked(m_db->compressionAlgorithm() != Database::CompressionNone);

m_ui->dbPublicSummary->setText(m_db->publicSummary());
m_ui->dbPublicColor->setText(m_db->publicColor());
m_ui->dbPublicName->setText(m_db->publicName());
setupColorButton(m_db->publicColor());

if (meta->historyMaxItems() > -1) {
m_ui->historyMaxItemsSpinBox->setValue(meta->historyMaxItems());
Expand Down Expand Up @@ -123,8 +124,8 @@ bool DatabaseSettingsWidgetGeneral::save()
meta->setRecycleBinEnabled(m_ui->recycleBinEnabledCheckBox->isChecked());
meta->setSettingsChanged(Clock::currentDateTimeUtc());

m_db->setPublicSummary(m_ui->dbPublicSummary->text());
m_db->setPublicColor(m_ui->dbPublicColor->text());
m_db->setPublicName(m_ui->dbPublicName->text());
m_db->setPublicColor(m_ui->dbPublicColorButton->property("color").toString());

bool truncate = false;

Expand Down Expand Up @@ -168,7 +169,19 @@ bool DatabaseSettingsWidgetGeneral::save()

void DatabaseSettingsWidgetGeneral::pickColor()
{
QColor oldColor = QColor(m_ui->dbPublicColor->text());
QColor newColor = QColorDialog::getColor(oldColor);
m_ui->dbPublicColor->setText(newColor.name());
auto oldColor = QColor(m_ui->dbPublicColorButton->property("color").toString());
setupColorButton(QColorDialog::getColor(oldColor));
}

void DatabaseSettingsWidgetGeneral::setupColorButton(const QColor& color)
{
m_ui->dbPublicColorClearButton->setVisible(color.isValid());
auto button = m_ui->dbPublicColorButton;
if (color.isValid()) {
button->setStyleSheet(QString("background-color:%1").arg(color.name()));
button->setProperty("color", color.name());
} else {
button->setStyleSheet("");
button->setProperty("color", {});
}
}
10 changes: 7 additions & 3 deletions src/gui/dbsettings/DatabaseSettingsWidgetGeneral.h
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@

#include "DatabaseSettingsWidget.h"

#include <QColor>

class Database;
namespace Ui
{
Expand All @@ -40,12 +42,14 @@ public slots:
void uninitialize() override;
bool save() override;

private slots:
void pickColor();

protected:
void showEvent(QShowEvent* event) override;

private slots:
void pickColor();
void setupColorButton(const QColor& color);

private:
const QScopedPointer<Ui::DatabaseSettingsWidgetGeneral> m_ui;
};

Expand Down
Loading

0 comments on commit 3f9aba1

Please sign in to comment.