From 3821ea2c74c5ca51c5b361ec025996f06bc5fc14 Mon Sep 17 00:00:00 2001 From: Louis-Bertrand Varin Date: Fri, 10 Feb 2017 17:06:26 -0500 Subject: [PATCH 01/27] Reorder items. --- src/gui/SettingsWidgetGeneral.ui | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/gui/SettingsWidgetGeneral.ui b/src/gui/SettingsWidgetGeneral.ui index eb9209777..9e6ea72df 100644 --- a/src/gui/SettingsWidgetGeneral.ui +++ b/src/gui/SettingsWidgetGeneral.ui @@ -103,6 +103,13 @@ + + + + Show a system tray icon + + + @@ -183,13 +190,6 @@ - - - - Show a system tray icon - - - From 145f64bdfcd2e0ca633f7d05cdf60292d9ef28c7 Mon Sep 17 00:00:00 2001 From: Louis-Bertrand Varin Date: Fri, 10 Feb 2017 20:49:53 -0500 Subject: [PATCH 02/27] Regroup minimize window. --- src/gui/SettingsWidgetGeneral.ui | 37 +++++++++++++------------------- 1 file changed, 15 insertions(+), 22 deletions(-) diff --git a/src/gui/SettingsWidgetGeneral.ui b/src/gui/SettingsWidgetGeneral.ui index 9e6ea72df..fd5dd0514 100644 --- a/src/gui/SettingsWidgetGeneral.ui +++ b/src/gui/SettingsWidgetGeneral.ui @@ -70,47 +70,54 @@ + + + Minimize window at application startup + + + + Use group icon on entry creation - + Global Auto-Type shortcut - + - + Use entry title to match windows for global auto-type - + Language - + - + Show a system tray icon - + QLayout::SetMaximumSize @@ -146,7 +153,7 @@ - + QLayout::SetMaximumSize @@ -176,20 +183,6 @@ - - - - QLayout::SetMaximumSize - - - - - Minimize window at application startup - - - - - From f1e7167c65f716dc7500ef509c61405d9f24fbf4 Mon Sep 17 00:00:00 2001 From: Louis-Bertrand Varin Date: Fri, 10 Feb 2017 21:33:36 -0500 Subject: [PATCH 03/27] Add spacers to align left. --- src/gui/SettingsWidgetGeneral.ui | 70 +++++++++++++++++++++++++++----- 1 file changed, 59 insertions(+), 11 deletions(-) diff --git a/src/gui/SettingsWidgetGeneral.ui b/src/gui/SettingsWidgetGeneral.ui index fd5dd0514..400a6ce02 100644 --- a/src/gui/SettingsWidgetGeneral.ui +++ b/src/gui/SettingsWidgetGeneral.ui @@ -84,14 +84,43 @@ - - - Global Auto-Type shortcut - - + + + + + Global Auto-Type shortcut + + + Qt::AlignLeft + + + + + + + + + + Qt::Horizontal + + + + 400 + + + + + + + + - + + + + + @@ -101,11 +130,30 @@ - - - Language - - + + + + + Language + + + + + + + Qt::Horizontal + + + + 400 + + + + + + + + From 7e8679b6c36461be33c40e540cb774b173380578 Mon Sep 17 00:00:00 2001 From: Louis-Bertrand Varin Date: Fri, 10 Feb 2017 21:59:33 -0500 Subject: [PATCH 04/27] Hiding tray settings for mac. --- src/gui/SettingsWidget.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/gui/SettingsWidget.cpp b/src/gui/SettingsWidget.cpp index 49d9a6968..5696ff121 100644 --- a/src/gui/SettingsWidget.cpp +++ b/src/gui/SettingsWidget.cpp @@ -65,6 +65,7 @@ SettingsWidget::SettingsWidget(QWidget* parent) #ifdef Q_OS_MAC // systray not useful on OS X m_generalUi->systrayShowCheckBox->setVisible(false); + m_generalUi->systrayMinimizeOnCloseCheckBox->setVisible(false); m_generalUi->systrayMinimizeToTrayCheckBox->setVisible(false); #endif From 851c7b891e5824f5e420f9a4052d335b7edf682b Mon Sep 17 00:00:00 2001 From: Janek Bevendorff Date: Tue, 21 Feb 2017 21:34:13 +0100 Subject: [PATCH 05/27] Show icons in vertical tab bar TODO: use the correct icons, move vertical tab bar into separate widget --- src/gui/EditWidget.cpp | 39 +++++++++++++++++ src/gui/EditWidget.h | 12 +++++- src/gui/EditWidget.ui | 57 ++++++++++++++++++++++++- src/gui/MainWindow.cpp | 2 +- src/gui/entry/EditEntryWidget_p.h | 69 +++++++++++++++++++++++++------ src/http/OptionDialog.ui | 2 +- 6 files changed, 162 insertions(+), 19 deletions(-) diff --git a/src/gui/EditWidget.cpp b/src/gui/EditWidget.cpp index ef29f0132..157848eb9 100644 --- a/src/gui/EditWidget.cpp +++ b/src/gui/EditWidget.cpp @@ -18,6 +18,8 @@ #include "EditWidget.h" #include "ui_EditWidget.h" +#include "core/FilePath.h" + EditWidget::EditWidget(QWidget* parent) : DialogyWidget(parent) , m_ui(new Ui::EditWidget()) @@ -37,6 +39,11 @@ EditWidget::EditWidget(QWidget* parent) connect(m_ui->buttonBox, SIGNAL(accepted()), SIGNAL(accepted())); connect(m_ui->buttonBox, SIGNAL(rejected()), SIGNAL(rejected())); + + connect(m_ui->scrollUp, SIGNAL(clicked()), SLOT(scrollCategoriesUp())); + connect(m_ui->scrollDown, SIGNAL(clicked()), SLOT(scrollCategoriesDown())); + connect(m_ui->categoryList->verticalScrollBar(), SIGNAL(valueChanged(int)), SLOT(updateCategoryScrollButtons())); + connect(m_ui->categoryList->verticalScrollBar(), SIGNAL(rangeChanged(int, int)), SLOT(updateCategoryScrollButtons())); } EditWidget::~EditWidget() @@ -46,6 +53,8 @@ EditWidget::~EditWidget() void EditWidget::add(const QString& labelText, QWidget* widget) { m_ui->categoryList->addItem(labelText); + QListWidgetItem* item = m_ui->categoryList->item(m_ui->categoryList->count() - 1); + item->setIcon(FilePath::instance()->icon("apps", "keepassxc")); m_ui->stackedWidget->addWidget(widget); } @@ -100,3 +109,33 @@ void EditWidget::hideMessage() m_ui->messageWidget->animatedHide(); } } + +void EditWidget::updateCategoryScrollButtons() +{ + m_ui->scrollUp->setEnabled(m_ui->categoryList->verticalScrollBar()->value() != 0); + m_ui->scrollDown->setEnabled(m_ui->categoryList->verticalScrollBar()->value() + != m_ui->categoryList->verticalScrollBar()->maximum()); + + m_ui->scrollUp->setVisible(m_ui->categoryList->verticalScrollBar()->maximum() > 0); + m_ui->scrollDown->setVisible(m_ui->scrollUp->isVisible()); +} + +void EditWidget::showEvent(QShowEvent* event) +{ + QWidget::showEvent(event); + updateCategoryScrollButtons(); +} + +void EditWidget::scrollCategoriesUp() +{ + m_ui->categoryList->verticalScrollBar()->setValue( + m_ui->categoryList->verticalScrollBar()->value() - m_ui->categoryList->verticalScrollBar()->pageStep() + ); +} + +void EditWidget::scrollCategoriesDown() +{ + m_ui->categoryList->verticalScrollBar()->setValue( + m_ui->categoryList->verticalScrollBar()->value() + m_ui->categoryList->verticalScrollBar()->pageStep() + ); +} diff --git a/src/gui/EditWidget.h b/src/gui/EditWidget.h index 6f2c8f2dc..398a04600 100644 --- a/src/gui/EditWidget.h +++ b/src/gui/EditWidget.h @@ -19,6 +19,8 @@ #define KEEPASSX_EDITWIDGET_H #include +#include +#include #include "gui/DialogyWidget.h" #include "gui/MessageWidget.h" @@ -45,11 +47,17 @@ public: void setReadOnly(bool readOnly); bool readOnly() const; -Q_SIGNALS: +protected: + void showEvent(QShowEvent* event) override; + +signals: void accepted(); void rejected(); -protected Q_SLOTS: +protected slots: + void updateCategoryScrollButtons(); + void scrollCategoriesDown(); + void scrollCategoriesUp(); void showMessage(const QString& text, MessageWidget::MessageType type); void hideMessage(); diff --git a/src/gui/EditWidget.ui b/src/gui/EditWidget.ui index 64baf7032..7ab9b143f 100644 --- a/src/gui/EditWidget.ui +++ b/src/gui/EditWidget.ui @@ -40,7 +40,58 @@ - + + + 0 + + + + + + 0 + 0 + + + + + 16777215 + 15 + + + + + + + Qt::UpArrow + + + + + + + + + + + 0 + 0 + + + + + 16777215 + 15 + + + + + + + Qt::DownArrow + + + + @@ -52,7 +103,7 @@ - + 5 @@ -82,6 +133,8 @@ categoryList + scrollUp + scrollDown diff --git a/src/gui/MainWindow.cpp b/src/gui/MainWindow.cpp index e9a05e5d1..7225c4c5a 100644 --- a/src/gui/MainWindow.cpp +++ b/src/gui/MainWindow.cpp @@ -62,7 +62,7 @@ class HttpPlugin: public ISettingsPage //delete m_service; } virtual QString name() { - return QObject::tr("Http"); + return QObject::tr("Browser Integration"); } virtual QWidget * createWidget() { OptionDialog * dlg = new OptionDialog(); diff --git a/src/gui/entry/EditEntryWidget_p.h b/src/gui/entry/EditEntryWidget_p.h index cdae8bd3d..34232d25e 100644 --- a/src/gui/entry/EditEntryWidget_p.h +++ b/src/gui/entry/EditEntryWidget_p.h @@ -22,34 +22,73 @@ #include #include #include +#include class CategoryListViewDelegate : public QStyledItemDelegate { public: - explicit CategoryListViewDelegate(QObject* parent) : QStyledItemDelegate(parent) {} + explicit CategoryListViewDelegate(QListView* parent = nullptr) + : QStyledItemDelegate(parent), m_size(96, 96) + {} - QSize sizeHint(const QStyleOptionViewItem& option, const QModelIndex& index) const +protected: + void paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const override { - QSize size = QStyledItemDelegate::sizeHint(option, index); - size.setHeight(qMax(size.height(), 22)); - return size; + QStyleOptionViewItem opt = option; + initStyleOption(&opt, index); + + painter->save(); + + QIcon icon = opt.icon; + QSize iconSize = opt.icon.actualSize(QSize(32, 32)); + opt.icon = QIcon(); + opt.decorationAlignment = Qt::AlignHCenter | Qt::AlignVCenter; + opt.decorationPosition = QStyleOptionViewItem::Top; + + QStyle* style = opt.widget ? opt.widget->style() : QApplication::style(); + style->drawControl(QStyle::CE_ItemViewItem, &opt, painter, opt.widget); + + QRect fontRect = painter->fontMetrics().boundingRect( + QRect(0, 0, m_size.width(), m_size.height()), Qt::AlignHCenter | Qt::AlignBottom | Qt::TextWordWrap, opt.text); + + int paddingTop = fontRect.height() < 30 ? 15 : 10; + int left = opt.rect.left() + opt.rect.width() / 2 - iconSize.width() / 2; + painter->drawPixmap(left, opt.rect.top() + paddingTop, icon.pixmap(iconSize)); + + painter->restore(); } + + QSize sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const override + { + Q_UNUSED(option); + Q_UNUSED(index); + return m_size; + } + +private: + QSize m_size; }; class CategoryListWidget : public QListWidget { public: - explicit CategoryListWidget(QWidget* parent = 0) : QListWidget(parent) + explicit CategoryListWidget(QWidget* parent = 0) + : QListWidget(parent) { - setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Expanding); + setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Expanding); setItemDelegate(new CategoryListViewDelegate(this)); + setMovement(QListView::Static); + setViewMode(QListWidget::IconMode); + setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + setWordWrap(true); } - - virtual QSize sizeHint() const +protected: + QSize sizeHint() const override { QSize sizeHint = QListWidget::sizeHint(); - int width = sizeHintForColumn(0) + frameWidth() * 2 + 5; + int width = sizeHintForColumn(0) + frameWidth() * 2; if (verticalScrollBar()->isVisible()) { width += verticalScrollBar()->width(); } @@ -57,6 +96,11 @@ public: return sizeHint; } + + QSize minimumSizeHint() const override + { + return QSize(sizeHint().width(), sizeHintForRow(0) * 2); + } }; class AttributesListView : public QListView @@ -65,14 +109,13 @@ public: explicit AttributesListView(QWidget* parent = 0) : QListView(parent) { setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Expanding); - setItemDelegate(new CategoryListViewDelegate(this)); } - virtual QSize sizeHint() const + QSize sizeHint() const override { QSize sizeHint = QListView::sizeHint(); - int width = sizeHintForColumn(0) + frameWidth() * 2 + 5; + int width = sizeHintForColumn(0) + frameWidth() * 2; if (verticalScrollBar()->isVisible()) { width += verticalScrollBar()->width(); } diff --git a/src/http/OptionDialog.ui b/src/http/OptionDialog.ui index ab8047db4..d55ceecdf 100644 --- a/src/http/OptionDialog.ui +++ b/src/http/OptionDialog.ui @@ -148,7 +148,7 @@ Only entries with the same scheme (http://, https://, ftp://, ...) are returned< color: rgb(255, 0, 0); - Activate the following only, if you know what you are doing! + Activate the following only if you know what you are doing! From cee297b218c9fd6ab1ed4560e31f3cc52ef33705 Mon Sep 17 00:00:00 2001 From: Janek Bevendorff Date: Wed, 22 Feb 2017 01:05:24 +0100 Subject: [PATCH 06/27] Move category tab widgets to separate widget and hide history category when there is no history --- src/CMakeLists.txt | 2 + src/gui/CategoryListWidget.cpp | 173 ++++++++++++++++++++++++++++++ src/gui/CategoryListWidget.h | 79 ++++++++++++++ src/gui/CategoryListWidget.ui | 116 ++++++++++++++++++++ src/gui/EditWidget.cpp | 64 ++++------- src/gui/EditWidget.h | 12 +-- src/gui/EditWidget.ui | 60 +---------- src/gui/SettingsWidget.cpp | 9 +- src/gui/entry/EditEntryWidget.cpp | 16 +-- src/gui/entry/EditEntryWidget_p.h | 84 +-------------- src/gui/group/EditGroupWidget.cpp | 9 +- 11 files changed, 412 insertions(+), 212 deletions(-) create mode 100644 src/gui/CategoryListWidget.cpp create mode 100644 src/gui/CategoryListWidget.h create mode 100644 src/gui/CategoryListWidget.ui diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index ca9be92af..0c539b50d 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -70,6 +70,7 @@ set(keepassx_SOURCES format/KeePass2XmlWriter.cpp gui/AboutDialog.cpp gui/Application.cpp + gui/CategoryListWidget.cpp gui/ChangeMasterKeyWidget.cpp gui/Clipboard.cpp gui/DatabaseOpenWidget.cpp @@ -132,6 +133,7 @@ set(keepassx_FORMS gui/ChangeMasterKeyWidget.ui gui/DatabaseOpenWidget.ui gui/DatabaseSettingsWidget.ui + gui/CategoryListWidget.ui gui/EditWidget.ui gui/EditWidgetIcons.ui gui/EditWidgetProperties.ui diff --git a/src/gui/CategoryListWidget.cpp b/src/gui/CategoryListWidget.cpp new file mode 100644 index 000000000..758709c0b --- /dev/null +++ b/src/gui/CategoryListWidget.cpp @@ -0,0 +1,173 @@ +/* + * Copyright (C) 2017 KeePassXC Team + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 or (at your option) + * version 3 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "CategoryListWidget.h" +#include "ui_CategoryListWidget.h" + +#include +#include +#include +#include +#include + +CategoryListWidget::CategoryListWidget(QWidget* parent) + : QWidget(parent), + m_ui(new Ui::CategoryListWidget()) +{ + m_ui->setupUi(this); + m_ui->categoryList->setItemDelegate(new CategoryListWidgetDelegate(this)); + + connect(m_ui->categoryList, SIGNAL(currentRowChanged(int)), SLOT(emitCategoryChanged(int))); + + connect(m_ui->scrollUp, SIGNAL(clicked()), SLOT(scrollCategoriesUp())); + connect(m_ui->scrollDown, SIGNAL(clicked()), SLOT(scrollCategoriesDown())); + connect(m_ui->categoryList->verticalScrollBar(), SIGNAL(valueChanged(int)), SLOT(updateCategoryScrollButtons())); + connect(m_ui->categoryList->verticalScrollBar(), SIGNAL(rangeChanged(int, int)), SLOT(updateCategoryScrollButtons())); +} + +CategoryListWidget::~CategoryListWidget() +{ +} + +QSize CategoryListWidget::sizeHint() const +{ + QSize sizeHint = QWidget::sizeHint(); + + int width = m_ui->categoryList->sizeHintForColumn(0) + m_ui->categoryList->frameWidth() * 2; + if (m_ui->categoryList->verticalScrollBar()->isVisible()) { + width += m_ui->categoryList->verticalScrollBar()->width(); + } + sizeHint.setWidth(width); + + return sizeHint; +} + +QSize CategoryListWidget::minimumSizeHint() const +{ + return QSize(sizeHint().width(), m_ui->categoryList->sizeHintForRow(0) * 2); +} + +int CategoryListWidget::addCategory(const QString& labelText, const QIcon& icon) +{ + QListWidgetItem* item = new QListWidgetItem(m_ui->categoryList); + item->setText(labelText); + item->setIcon(icon); + m_ui->categoryList->addItem(item); + return m_ui->categoryList->count() - 1; +} + +void CategoryListWidget::removeCategory(int index) +{ + m_ui->categoryList->removeItemWidget(m_ui->categoryList->item(index)); +} + +int CategoryListWidget::currentCategory() +{ + return m_ui->categoryList->currentRow(); +} + +void CategoryListWidget::setCurrentCategory(int index) +{ + m_ui->categoryList->setCurrentRow(index); +} + +void CategoryListWidget::setCategoryHidden(int index, bool hidden) +{ + m_ui->categoryList->item(index)->setHidden(hidden); +} + +bool CategoryListWidget::isCategoryHidden(int index) +{ + return m_ui->categoryList->item(index)->isHidden(); +} + +void CategoryListWidget::showEvent(QShowEvent* event) +{ + QWidget::showEvent(event); + updateCategoryScrollButtons(); +} + +void CategoryListWidget::updateCategoryScrollButtons() +{ + m_ui->scrollUp->setEnabled(m_ui->categoryList->verticalScrollBar()->value() != 0); + m_ui->scrollDown->setEnabled(m_ui->categoryList->verticalScrollBar()->value() + != m_ui->categoryList->verticalScrollBar()->maximum()); + + m_ui->scrollUp->setVisible(m_ui->categoryList->verticalScrollBar()->maximum() > 0); + m_ui->scrollDown->setVisible(m_ui->scrollUp->isVisible()); +} + +void CategoryListWidget::scrollCategoriesUp() +{ + m_ui->categoryList->verticalScrollBar()->setValue( + m_ui->categoryList->verticalScrollBar()->value() - m_ui->categoryList->verticalScrollBar()->pageStep() + ); +} + +void CategoryListWidget::scrollCategoriesDown() +{ + m_ui->categoryList->verticalScrollBar()->setValue( + m_ui->categoryList->verticalScrollBar()->value() + m_ui->categoryList->verticalScrollBar()->pageStep() + ); +} + +void CategoryListWidget::emitCategoryChanged(int index) +{ + emit categoryChanged(index); +} + + +/* =============================================================================================== */ + + +CategoryListWidgetDelegate::CategoryListWidgetDelegate(QWidget* parent) + : QStyledItemDelegate(parent), + m_size(96, 96) +{} + +void CategoryListWidgetDelegate::paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const +{ + QStyleOptionViewItem opt = option; + initStyleOption(&opt, index); + + painter->save(); + + QIcon icon = opt.icon; + QSize iconSize = opt.icon.actualSize(QSize(32, 32)); + opt.icon = QIcon(); + opt.decorationAlignment = Qt::AlignHCenter | Qt::AlignVCenter; + opt.decorationPosition = QStyleOptionViewItem::Top; + + QStyle* style = opt.widget ? opt.widget->style() : QApplication::style(); + style->drawControl(QStyle::CE_ItemViewItem, &opt, painter, opt.widget); + + QRect fontRect = painter->fontMetrics().boundingRect( + QRect(0, 0, m_size.width(), m_size.height()), Qt::AlignHCenter | Qt::AlignBottom | Qt::TextWordWrap, opt.text); + + int paddingTop = fontRect.height() < 30 ? 15 : 10; + int left = opt.rect.left() + opt.rect.width() / 2 - iconSize.width() / 2; + painter->drawPixmap(left, opt.rect.top() + paddingTop, icon.pixmap(iconSize)); + + painter->restore(); +} + +QSize CategoryListWidgetDelegate::sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const +{ + Q_UNUSED(option); + Q_UNUSED(index); + return m_size; +} diff --git a/src/gui/CategoryListWidget.h b/src/gui/CategoryListWidget.h new file mode 100644 index 000000000..de910fdf3 --- /dev/null +++ b/src/gui/CategoryListWidget.h @@ -0,0 +1,79 @@ +/* + * Copyright (C) 2017 KeePassXC Team + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 or (at your option) + * version 3 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include +#include + +namespace Ui { + class CategoryListWidget; +} + +class CategoryListWidget : public QWidget +{ + Q_OBJECT + +public: + CategoryListWidget(QWidget* parent = 0); + ~CategoryListWidget(); + + int currentCategory(); + void setCurrentCategory(int index); + int addCategory(const QString& labelText, const QIcon& icon); + void setCategoryHidden(int index, bool hidden); + bool isCategoryHidden(int index); + void removeCategory(int index); + +signals: + void categoryChanged(int index); + +protected: + void showEvent(QShowEvent* event) override; + QSize sizeHint() const override; + QSize minimumSizeHint() const override; + +protected slots: + void updateCategoryScrollButtons(); + void scrollCategoriesDown(); + void scrollCategoriesUp(); + void emitCategoryChanged(int index); + +private: + const QScopedPointer m_ui; + + Q_DISABLE_COPY(CategoryListWidget) +}; + + +/* =============================================================================================== */ + + +class CategoryListWidgetDelegate : public QStyledItemDelegate +{ + Q_OBJECT + +public: + explicit CategoryListWidgetDelegate(QWidget* parent = nullptr); + +protected: + void paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const override; + QSize sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const override; + +private: + QSize m_size; + + Q_DISABLE_COPY(CategoryListWidgetDelegate) +}; diff --git a/src/gui/CategoryListWidget.ui b/src/gui/CategoryListWidget.ui new file mode 100644 index 000000000..307a039b6 --- /dev/null +++ b/src/gui/CategoryListWidget.ui @@ -0,0 +1,116 @@ + + + CategoryListWidget + + + + 0 + 0 + 182 + 418 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + 0 + + + + + 16777215 + 15 + + + + + + + Qt::UpArrow + + + + + + + + 0 + 0 + + + + Qt::ScrollBarAlwaysOff + + + Qt::ScrollBarAlwaysOff + + + QListView::Static + + + QListView::TopToBottom + + + false + + + QListView::IconMode + + + true + + + true + + + + + + + + 0 + 0 + + + + + 16777215 + 15 + + + + + + + Qt::DownArrow + + + + + + + categoryList + scrollUp + scrollDown + + + + diff --git a/src/gui/EditWidget.cpp b/src/gui/EditWidget.cpp index 157848eb9..24cc64fec 100644 --- a/src/gui/EditWidget.cpp +++ b/src/gui/EditWidget.cpp @@ -34,41 +34,43 @@ EditWidget::EditWidget(QWidget* parent) headerLabelFont.setPointSize(headerLabelFont.pointSize() + 2); headlineLabel()->setFont(headerLabelFont); - connect(m_ui->categoryList, SIGNAL(currentRowChanged(int)), + connect(m_ui->categoryList, SIGNAL(categoryChanged(int)), m_ui->stackedWidget, SLOT(setCurrentIndex(int))); connect(m_ui->buttonBox, SIGNAL(accepted()), SIGNAL(accepted())); connect(m_ui->buttonBox, SIGNAL(rejected()), SIGNAL(rejected())); - - connect(m_ui->scrollUp, SIGNAL(clicked()), SLOT(scrollCategoriesUp())); - connect(m_ui->scrollDown, SIGNAL(clicked()), SLOT(scrollCategoriesDown())); - connect(m_ui->categoryList->verticalScrollBar(), SIGNAL(valueChanged(int)), SLOT(updateCategoryScrollButtons())); - connect(m_ui->categoryList->verticalScrollBar(), SIGNAL(rangeChanged(int, int)), SLOT(updateCategoryScrollButtons())); } EditWidget::~EditWidget() { } -void EditWidget::add(const QString& labelText, QWidget* widget) +void EditWidget::addPage(const QString& labelText, const QIcon& icon, QWidget* widget) { - m_ui->categoryList->addItem(labelText); - QListWidgetItem* item = m_ui->categoryList->item(m_ui->categoryList->count() - 1); - item->setIcon(FilePath::instance()->icon("apps", "keepassxc")); m_ui->stackedWidget->addWidget(widget); + m_ui->categoryList->addCategory(labelText, icon); } -void EditWidget::setRowHidden(QWidget* widget, bool hide) +void EditWidget::setPageHidden(QWidget* widget, bool hidden) { - int row = m_ui->stackedWidget->indexOf(widget); - if (row != -1) { - m_ui->categoryList->item(row)->setHidden(hide); + int index = m_ui->stackedWidget->indexOf(widget); + if (index != -1) { + m_ui->categoryList->setCategoryHidden(index, hidden); + } + + if (index == m_ui->stackedWidget->currentIndex()) { + int newIndex = m_ui->stackedWidget->currentIndex() - 1; + if (newIndex < 0) { + newIndex = m_ui->stackedWidget->count() - 1; + } + m_ui->stackedWidget->setCurrentIndex(newIndex); } } -void EditWidget::setCurrentRow(int index) +void EditWidget::setCurrentPage(int index) { - m_ui->categoryList->setCurrentRow(index); + m_ui->categoryList->setCurrentCategory(index); + m_ui->stackedWidget->setCurrentIndex(index); } void EditWidget::setHeadline(const QString& text) @@ -109,33 +111,3 @@ void EditWidget::hideMessage() m_ui->messageWidget->animatedHide(); } } - -void EditWidget::updateCategoryScrollButtons() -{ - m_ui->scrollUp->setEnabled(m_ui->categoryList->verticalScrollBar()->value() != 0); - m_ui->scrollDown->setEnabled(m_ui->categoryList->verticalScrollBar()->value() - != m_ui->categoryList->verticalScrollBar()->maximum()); - - m_ui->scrollUp->setVisible(m_ui->categoryList->verticalScrollBar()->maximum() > 0); - m_ui->scrollDown->setVisible(m_ui->scrollUp->isVisible()); -} - -void EditWidget::showEvent(QShowEvent* event) -{ - QWidget::showEvent(event); - updateCategoryScrollButtons(); -} - -void EditWidget::scrollCategoriesUp() -{ - m_ui->categoryList->verticalScrollBar()->setValue( - m_ui->categoryList->verticalScrollBar()->value() - m_ui->categoryList->verticalScrollBar()->pageStep() - ); -} - -void EditWidget::scrollCategoriesDown() -{ - m_ui->categoryList->verticalScrollBar()->setValue( - m_ui->categoryList->verticalScrollBar()->value() + m_ui->categoryList->verticalScrollBar()->pageStep() - ); -} diff --git a/src/gui/EditWidget.h b/src/gui/EditWidget.h index 398a04600..46951de41 100644 --- a/src/gui/EditWidget.h +++ b/src/gui/EditWidget.h @@ -39,25 +39,19 @@ public: explicit EditWidget(QWidget* parent = nullptr); ~EditWidget(); - void add(const QString& labelText, QWidget* widget); - void setRowHidden(QWidget* widget, bool hide); - void setCurrentRow(int index); + void addPage(const QString& labelText, const QIcon& icon, QWidget* widget); + void setPageHidden(QWidget* widget, bool hidden); + void setCurrentPage(int index); void setHeadline(const QString& text); QLabel* headlineLabel(); void setReadOnly(bool readOnly); bool readOnly() const; -protected: - void showEvent(QShowEvent* event) override; - signals: void accepted(); void rejected(); protected slots: - void updateCategoryScrollButtons(); - void scrollCategoriesDown(); - void scrollCategoriesUp(); void showMessage(const QString& text, MessageWidget::MessageType type); void hideMessage(); diff --git a/src/gui/EditWidget.ui b/src/gui/EditWidget.ui index 7ab9b143f..239c3d9f8 100644 --- a/src/gui/EditWidget.ui +++ b/src/gui/EditWidget.ui @@ -40,58 +40,7 @@ - - - 0 - - - - - - 0 - 0 - - - - - 16777215 - 15 - - - - - - - Qt::UpArrow - - - - - - - - - - - 0 - 0 - - - - - 16777215 - 15 - - - - - - - Qt::DownArrow - - - - + @@ -128,14 +77,9 @@ CategoryListWidget QListWidget -
gui/entry/EditEntryWidget_p.h
+
gui/CategoryListWidget.h
- - categoryList - scrollUp - scrollDown - diff --git a/src/gui/SettingsWidget.cpp b/src/gui/SettingsWidget.cpp index 5696ff121..ef153c123 100644 --- a/src/gui/SettingsWidget.cpp +++ b/src/gui/SettingsWidget.cpp @@ -22,6 +22,7 @@ #include "autotype/AutoType.h" #include "core/Config.h" #include "core/Translator.h" +#include "core/FilePath.h" class SettingsWidget::ExtraPage { @@ -57,8 +58,8 @@ SettingsWidget::SettingsWidget(QWidget* parent) m_secUi->setupUi(m_secWidget); m_generalUi->setupUi(m_generalWidget); - add(tr("General"), m_generalWidget); - add(tr("Security"), m_secWidget); + addPage(tr("General"), FilePath::instance()->icon("apps", "keepassxc"), m_generalWidget); + addPage(tr("Security"), FilePath::instance()->icon("apps", "keepassxc"), m_secWidget); m_generalUi->autoTypeShortcutWidget->setVisible(autoType()->isAvailable()); m_generalUi->autoTypeShortcutLabel->setVisible(autoType()->isAvailable()); @@ -92,7 +93,7 @@ void SettingsWidget::addSettingsPage(ISettingsPage *page) QWidget * widget = page->createWidget(); widget->setParent(this); m_extraPages.append(ExtraPage(page, widget)); - add(page->name(), widget); + addPage(page->name(), FilePath::instance()->icon("apps", "keepassxc"), widget); } void SettingsWidget::loadSettings() @@ -146,7 +147,7 @@ void SettingsWidget::loadSettings() Q_FOREACH (const ExtraPage& page, m_extraPages) page.loadSettings(); - setCurrentRow(0); + setCurrentPage(0); } void SettingsWidget::saveSettings() diff --git a/src/gui/entry/EditEntryWidget.cpp b/src/gui/entry/EditEntryWidget.cpp index 4acfd8765..ff75540af 100644 --- a/src/gui/entry/EditEntryWidget.cpp +++ b/src/gui/entry/EditEntryWidget.cpp @@ -90,7 +90,7 @@ EditEntryWidget::~EditEntryWidget() void EditEntryWidget::setupMain() { m_mainUi->setupUi(m_mainWidget); - add(tr("Entry"), m_mainWidget); + addPage(tr("Entry"), FilePath::instance()->icon("apps", "keepassxc"), m_mainWidget); m_mainUi->togglePasswordButton->setIcon(filePath()->onOffIcon("actions", "password-show")); m_mainUi->togglePasswordGeneratorButton->setIcon(filePath()->icon("actions", "password-generator", false)); @@ -115,7 +115,7 @@ void EditEntryWidget::setupMain() void EditEntryWidget::setupAdvanced() { m_advancedUi->setupUi(m_advancedWidget); - add(tr("Advanced"), m_advancedWidget); + addPage(tr("Advanced"), FilePath::instance()->icon("apps", "keepassxc"), m_advancedWidget); m_attachmentsModel->setEntryAttachments(m_entryAttachments); m_advancedUi->attachmentsView->setModel(m_attachmentsModel); @@ -139,13 +139,13 @@ void EditEntryWidget::setupAdvanced() void EditEntryWidget::setupIcon() { - add(tr("Icon"), m_iconsWidget); + addPage(tr("Icon"), FilePath::instance()->icon("apps", "keepassxc"), m_iconsWidget); } void EditEntryWidget::setupAutoType() { m_autoTypeUi->setupUi(m_autoTypeWidget); - add(tr("Auto-Type"), m_autoTypeWidget); + addPage(tr("Auto-Type"), FilePath::instance()->icon("apps", "keepassxc"), m_autoTypeWidget); m_autoTypeDefaultSequenceGroup->addButton(m_autoTypeUi->inheritSequenceButton); m_autoTypeDefaultSequenceGroup->addButton(m_autoTypeUi->customSequenceButton); @@ -177,13 +177,13 @@ void EditEntryWidget::setupAutoType() void EditEntryWidget::setupProperties() { - add(tr("Properties"), m_editWidgetProperties); + addPage(tr("Properties"), FilePath::instance()->icon("apps", "keepassxc"), m_editWidgetProperties); } void EditEntryWidget::setupHistory() { m_historyUi->setupUi(m_historyWidget); - add(tr("History"), m_historyWidget); + addPage(tr("History"), FilePath::instance()->icon("apps", "keepassxc"), m_historyWidget); m_sortModel->setSourceModel(m_historyModel); m_sortModel->setDynamicSortFilter(true); @@ -291,8 +291,8 @@ void EditEntryWidget::loadEntry(Entry* entry, bool create, bool history, const Q setForms(entry); setReadOnly(m_history); - setCurrentRow(0); - setRowHidden(m_historyWidget, m_history); + setCurrentPage(0); + setPageHidden(m_historyWidget, m_history || m_entry->historyItems().count() < 1); } void EditEntryWidget::setForms(const Entry* entry, bool restore) diff --git a/src/gui/entry/EditEntryWidget_p.h b/src/gui/entry/EditEntryWidget_p.h index 34232d25e..0e37c1fe8 100644 --- a/src/gui/entry/EditEntryWidget_p.h +++ b/src/gui/entry/EditEntryWidget_p.h @@ -18,90 +18,8 @@ #ifndef KEEPASSX_EDITENTRYWIDGET_P_H #define KEEPASSX_EDITENTRYWIDGET_P_H -#include +#include #include -#include -#include -#include - -class CategoryListViewDelegate : public QStyledItemDelegate -{ -public: - explicit CategoryListViewDelegate(QListView* parent = nullptr) - : QStyledItemDelegate(parent), m_size(96, 96) - {} - -protected: - void paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const override - { - QStyleOptionViewItem opt = option; - initStyleOption(&opt, index); - - painter->save(); - - QIcon icon = opt.icon; - QSize iconSize = opt.icon.actualSize(QSize(32, 32)); - opt.icon = QIcon(); - opt.decorationAlignment = Qt::AlignHCenter | Qt::AlignVCenter; - opt.decorationPosition = QStyleOptionViewItem::Top; - - QStyle* style = opt.widget ? opt.widget->style() : QApplication::style(); - style->drawControl(QStyle::CE_ItemViewItem, &opt, painter, opt.widget); - - QRect fontRect = painter->fontMetrics().boundingRect( - QRect(0, 0, m_size.width(), m_size.height()), Qt::AlignHCenter | Qt::AlignBottom | Qt::TextWordWrap, opt.text); - - int paddingTop = fontRect.height() < 30 ? 15 : 10; - int left = opt.rect.left() + opt.rect.width() / 2 - iconSize.width() / 2; - painter->drawPixmap(left, opt.rect.top() + paddingTop, icon.pixmap(iconSize)); - - painter->restore(); - } - - QSize sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const override - { - Q_UNUSED(option); - Q_UNUSED(index); - return m_size; - } - -private: - QSize m_size; -}; - -class CategoryListWidget : public QListWidget -{ -public: - explicit CategoryListWidget(QWidget* parent = 0) - : QListWidget(parent) - { - setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Expanding); - setItemDelegate(new CategoryListViewDelegate(this)); - setMovement(QListView::Static); - setViewMode(QListWidget::IconMode); - setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); - setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); - setWordWrap(true); - } -protected: - QSize sizeHint() const override - { - QSize sizeHint = QListWidget::sizeHint(); - - int width = sizeHintForColumn(0) + frameWidth() * 2; - if (verticalScrollBar()->isVisible()) { - width += verticalScrollBar()->width(); - } - sizeHint.setWidth(width); - - return sizeHint; - } - - QSize minimumSizeHint() const override - { - return QSize(sizeHint().width(), sizeHintForRow(0) * 2); - } -}; class AttributesListView : public QListView { diff --git a/src/gui/group/EditGroupWidget.cpp b/src/gui/group/EditGroupWidget.cpp index 5b9dfcbc8..23e2108b5 100644 --- a/src/gui/group/EditGroupWidget.cpp +++ b/src/gui/group/EditGroupWidget.cpp @@ -19,6 +19,7 @@ #include "ui_EditGroupWidgetMain.h" #include "core/Metadata.h" +#include "core/FilePath.h" #include "gui/EditWidgetIcons.h" #include "gui/EditWidgetProperties.h" @@ -33,9 +34,9 @@ EditGroupWidget::EditGroupWidget(QWidget* parent) { m_mainUi->setupUi(m_editGroupWidgetMain); - add(tr("Group"), m_editGroupWidgetMain); - add(tr("Icon"), m_editGroupWidgetIcons); - add(tr("Properties"), m_editWidgetProperties); + addPage(tr("Group"), FilePath::instance()->icon("apps", "keepassxc"), m_editGroupWidgetMain); + addPage(tr("Icon"), FilePath::instance()->icon("apps", "keepassxc"), m_editGroupWidgetIcons); + addPage(tr("Properties"), FilePath::instance()->icon("apps", "keepassxc"), m_editWidgetProperties); connect(m_mainUi->expireCheck, SIGNAL(toggled(bool)), m_mainUi->expireDatePicker, SLOT(setEnabled(bool))); connect(m_mainUi->autoTypeSequenceCustomRadio, SIGNAL(toggled(bool)), @@ -94,7 +95,7 @@ void EditGroupWidget::loadGroup(Group* group, bool create, Database* database) m_editWidgetProperties->setFields(group->timeInfo(), group->uuid()); - setCurrentRow(0); + setCurrentPage(0); m_mainUi->editName->setFocus(); } From 74afd8e81965c0cc692f26550086c1fddc382e86 Mon Sep 17 00:00:00 2001 From: Janek Bevendorff Date: Wed, 22 Feb 2017 03:39:13 +0100 Subject: [PATCH 07/27] Make widget scalable and set minimum width based on the widget text --- src/gui/CategoryListWidget.cpp | 66 +++++++++++++++++++++++++++++----- src/gui/CategoryListWidget.h | 13 ++++++- src/gui/CategoryListWidget.ui | 12 +++++-- src/gui/EditWidget.ui | 14 ++++++-- src/http/OptionDialog.ui | 3 -- 5 files changed, 89 insertions(+), 19 deletions(-) diff --git a/src/gui/CategoryListWidget.cpp b/src/gui/CategoryListWidget.cpp index 758709c0b..1c3c7dcce 100644 --- a/src/gui/CategoryListWidget.cpp +++ b/src/gui/CategoryListWidget.cpp @@ -26,10 +26,12 @@ CategoryListWidget::CategoryListWidget(QWidget* parent) : QWidget(parent), + m_itemDelegate(nullptr), m_ui(new Ui::CategoryListWidget()) { m_ui->setupUi(this); - m_ui->categoryList->setItemDelegate(new CategoryListWidgetDelegate(this)); + m_itemDelegate = new CategoryListWidgetDelegate(m_ui->categoryList); + m_ui->categoryList->setItemDelegate(m_itemDelegate); connect(m_ui->categoryList, SIGNAL(currentRowChanged(int)), SLOT(emitCategoryChanged(int))); @@ -47,10 +49,16 @@ QSize CategoryListWidget::sizeHint() const { QSize sizeHint = QWidget::sizeHint(); - int width = m_ui->categoryList->sizeHintForColumn(0) + m_ui->categoryList->frameWidth() * 2; + int width = m_ui->categoryList->sizeHintForColumn(0); if (m_ui->categoryList->verticalScrollBar()->isVisible()) { width += m_ui->categoryList->verticalScrollBar()->width(); } + + QSize min = minimumSizeHint(); + if (width < min.width()) { + width = min.width(); + } + width += m_ui->categoryList->frameWidth() * 2; sizeHint.setWidth(width); return sizeHint; @@ -58,7 +66,8 @@ QSize CategoryListWidget::sizeHint() const QSize CategoryListWidget::minimumSizeHint() const { - return QSize(sizeHint().width(), m_ui->categoryList->sizeHintForRow(0) * 2); + return QSize(m_ui->categoryList->sizeHintForColumn(0) + m_ui->categoryList->frameWidth() * 2, + m_ui->categoryList->sizeHintForRow(0) * 2); } int CategoryListWidget::addCategory(const QString& labelText, const QIcon& icon) @@ -101,6 +110,16 @@ void CategoryListWidget::showEvent(QShowEvent* event) updateCategoryScrollButtons(); } +void CategoryListWidget::resizeEvent(QResizeEvent* event) +{ + auto newDelegate = new CategoryListWidgetDelegate(m_ui->categoryList); + m_ui->categoryList->setItemDelegate(newDelegate); + m_itemDelegate->deleteLater(); + m_itemDelegate = newDelegate; + + QWidget::resizeEvent(event); +} + void CategoryListWidget::updateCategoryScrollButtons() { m_ui->scrollUp->setEnabled(m_ui->categoryList->verticalScrollBar()->value() != 0); @@ -134,10 +153,15 @@ void CategoryListWidget::emitCategoryChanged(int index) /* =============================================================================================== */ -CategoryListWidgetDelegate::CategoryListWidgetDelegate(QWidget* parent) +CategoryListWidgetDelegate::CategoryListWidgetDelegate(QListWidget* parent) : QStyledItemDelegate(parent), - m_size(96, 96) -{} + m_listWidget(parent), + m_size(minWidth(), 96) +{ + if (m_listWidget && m_listWidget->width() > m_size.width()) { + m_size.setWidth(m_listWidget->width()); + } +} void CategoryListWidgetDelegate::paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const { @@ -147,7 +171,7 @@ void CategoryListWidgetDelegate::paint(QPainter* painter, const QStyleOptionView painter->save(); QIcon icon = opt.icon; - QSize iconSize = opt.icon.actualSize(QSize(32, 32)); + QSize iconSize = opt.icon.actualSize(QSize(ICON_SIZE, ICON_SIZE)); opt.icon = QIcon(); opt.decorationAlignment = Qt::AlignHCenter | Qt::AlignVCenter; opt.decorationPosition = QStyleOptionViewItem::Top; @@ -156,7 +180,7 @@ void CategoryListWidgetDelegate::paint(QPainter* painter, const QStyleOptionView style->drawControl(QStyle::CE_ItemViewItem, &opt, painter, opt.widget); QRect fontRect = painter->fontMetrics().boundingRect( - QRect(0, 0, m_size.width(), m_size.height()), Qt::AlignHCenter | Qt::AlignBottom | Qt::TextWordWrap, opt.text); + QRect(0, 0, minWidth(), m_size.height()), Qt::AlignHCenter | Qt::AlignBottom | Qt::TextWordWrap, opt.text); int paddingTop = fontRect.height() < 30 ? 15 : 10; int left = opt.rect.left() + opt.rect.width() / 2 - iconSize.width() / 2; @@ -165,9 +189,33 @@ void CategoryListWidgetDelegate::paint(QPainter* painter, const QStyleOptionView painter->restore(); } +int CategoryListWidgetDelegate::minWidth() const +{ + int c = m_listWidget->count(); + int maxWidth = 0; + + for (int i = 0; i < c; ++i) { + QFontMetrics fm(m_listWidget->font()); + QRect fontRect = fm.boundingRect( + QRect(0, 0, 0, 0), Qt::TextWordWrap | Qt::ElideNone, m_listWidget->item(i)->text()); + + if (fontRect.width() > maxWidth) { + maxWidth = fontRect.width(); + } + } + + return maxWidth > m_size.height() ? maxWidth + 5 : m_size.height(); +} + QSize CategoryListWidgetDelegate::sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const { Q_UNUSED(option); Q_UNUSED(index); - return m_size; + + int w = minWidth(); + if (m_listWidget->width() > w) { + w = m_listWidget->width(); + } + + return QSize(w, m_size.height()); } diff --git a/src/gui/CategoryListWidget.h b/src/gui/CategoryListWidget.h index de910fdf3..23860f322 100644 --- a/src/gui/CategoryListWidget.h +++ b/src/gui/CategoryListWidget.h @@ -17,6 +17,10 @@ #include #include +#include + +class CategoryListWidgetDelegate; +class QListWidget; namespace Ui { class CategoryListWidget; @@ -42,6 +46,7 @@ signals: protected: void showEvent(QShowEvent* event) override; + void resizeEvent(QResizeEvent * event) override; QSize sizeHint() const override; QSize minimumSizeHint() const override; @@ -52,6 +57,7 @@ protected slots: void emitCategoryChanged(int index); private: + QPointer m_itemDelegate; const QScopedPointer m_ui; Q_DISABLE_COPY(CategoryListWidget) @@ -66,13 +72,18 @@ class CategoryListWidgetDelegate : public QStyledItemDelegate Q_OBJECT public: - explicit CategoryListWidgetDelegate(QWidget* parent = nullptr); + explicit CategoryListWidgetDelegate(QListWidget* parent = nullptr); protected: void paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const override; QSize sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const override; private: + int minWidth() const; + + const int ICON_SIZE = 32; + + QPointer m_listWidget; QSize m_size; Q_DISABLE_COPY(CategoryListWidgetDelegate) diff --git a/src/gui/CategoryListWidget.ui b/src/gui/CategoryListWidget.ui index 307a039b6..f16165cdb 100644 --- a/src/gui/CategoryListWidget.ui +++ b/src/gui/CategoryListWidget.ui @@ -10,6 +10,12 @@ 418 + + + 0 + 0 + + 0 @@ -29,7 +35,7 @@ - + 0 0 @@ -51,7 +57,7 @@ - + 0 0 @@ -85,7 +91,7 @@ - + 0 0 diff --git a/src/gui/EditWidget.ui b/src/gui/EditWidget.ui index 239c3d9f8..9be882121 100644 --- a/src/gui/EditWidget.ui +++ b/src/gui/EditWidget.ui @@ -38,9 +38,16 @@ - + - + + + + 0 + 0 + + + @@ -76,8 +83,9 @@ CategoryListWidget - QListWidget + QWidget
gui/CategoryListWidget.h
+ 1
diff --git a/src/http/OptionDialog.ui b/src/http/OptionDialog.ui index d55ceecdf..3c5714e1d 100644 --- a/src/http/OptionDialog.ui +++ b/src/http/OptionDialog.ui @@ -24,9 +24,6 @@ This is required for accessing your databases from ChromeIPass or PassIFox - - QTabWidget::Rounded - 0 From ad2ccae5db49a2c0f6ba223733aebde83a17d261 Mon Sep 17 00:00:00 2001 From: Janek Bevendorff Date: Wed, 22 Feb 2017 04:24:07 +0100 Subject: [PATCH 08/27] Fix funny resizing bug and increase min-padding --- src/gui/CategoryListWidget.cpp | 19 +++++++++---------- src/gui/CategoryListWidget.h | 2 +- src/gui/EditWidget.ui | 4 ++-- 3 files changed, 12 insertions(+), 13 deletions(-) diff --git a/src/gui/CategoryListWidget.cpp b/src/gui/CategoryListWidget.cpp index 1c3c7dcce..ddafd6949 100644 --- a/src/gui/CategoryListWidget.cpp +++ b/src/gui/CategoryListWidget.cpp @@ -49,16 +49,12 @@ QSize CategoryListWidget::sizeHint() const { QSize sizeHint = QWidget::sizeHint(); - int width = m_ui->categoryList->sizeHintForColumn(0); - if (m_ui->categoryList->verticalScrollBar()->isVisible()) { - width += m_ui->categoryList->verticalScrollBar()->width(); - } + int width = m_ui->categoryList->width(); - QSize min = minimumSizeHint(); - if (width < min.width()) { - width = min.width(); + int min = minimumSizeHint().width(); + if (width < min) { + width = min; } - width += m_ui->categoryList->frameWidth() * 2; sizeHint.setWidth(width); return sizeHint; @@ -66,7 +62,7 @@ QSize CategoryListWidget::sizeHint() const QSize CategoryListWidget::minimumSizeHint() const { - return QSize(m_ui->categoryList->sizeHintForColumn(0) + m_ui->categoryList->frameWidth() * 2, + return QSize(m_itemDelegate->minWidth() + m_ui->categoryList->frameWidth() * 2, m_ui->categoryList->sizeHintForRow(0) * 2); } @@ -204,7 +200,10 @@ int CategoryListWidgetDelegate::minWidth() const } } - return maxWidth > m_size.height() ? maxWidth + 5 : m_size.height(); + // add some padding + maxWidth += 10; + + return maxWidth < m_size.height() ? m_size.height() : maxWidth; } QSize CategoryListWidgetDelegate::sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const diff --git a/src/gui/CategoryListWidget.h b/src/gui/CategoryListWidget.h index 23860f322..3cf82fd1b 100644 --- a/src/gui/CategoryListWidget.h +++ b/src/gui/CategoryListWidget.h @@ -73,13 +73,13 @@ class CategoryListWidgetDelegate : public QStyledItemDelegate public: explicit CategoryListWidgetDelegate(QListWidget* parent = nullptr); + int minWidth() const; protected: void paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const override; QSize sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const override; private: - int minWidth() const; const int ICON_SIZE = 32; diff --git a/src/gui/EditWidget.ui b/src/gui/EditWidget.ui index 9be882121..6afce9f3e 100644 --- a/src/gui/EditWidget.ui +++ b/src/gui/EditWidget.ui @@ -38,11 +38,11 @@ - + - + 0 0 From d24c9322cc1b1bcbaf98c26916f865cad8972e56 Mon Sep 17 00:00:00 2001 From: Janek Bevendorff Date: Wed, 22 Feb 2017 14:05:59 +0100 Subject: [PATCH 09/27] Use dedicated icon for each category --- share/CMakeLists.txt | 4 +- .../32x32/actions/document-edit.png | Bin 0 -> 1859 bytes .../32x32/actions/document-properties.png | Bin 0 -> 1385 bytes .../application/32x32/actions/key-enter.png | Bin 0 -> 1095 bytes .../32x32/actions/view-history.png | Bin 0 -> 1614 bytes .../32x32/apps/internet-web-browser.png | Bin 0 -> 1568 bytes .../32x32/apps/preferences-desktop-icons.png | Bin 0 -> 2472 bytes .../32x32/categories/preferences-other.png | Bin 0 -> 2319 bytes .../32x32/status/security-high.png | Bin 0 -> 1732 bytes share/icons/svg/document-properties.svgz | Bin 0 -> 9614 bytes share/icons/svg/internet-web-browser.svgz | Bin 0 -> 206090 bytes share/icons/svg/key-enter.svgz | Bin 0 -> 9345 bytes .../icons/svg/preferences-desktop-icons.svgz | Bin 0 -> 17837 bytes share/icons/svg/preferences-other.svgz | Bin 0 -> 12294 bytes share/icons/svg/security-high.svgz | Bin 0 -> 3854 bytes share/icons/svg/view-history.svgz | Bin 0 -> 6519 bytes src/gui/MainWindow.cpp | 69 +++++++++++------- src/gui/SettingsWidget.cpp | 10 +-- src/gui/SettingsWidget.h | 1 + src/gui/entry/EditEntryWidget.cpp | 12 +-- 20 files changed, 55 insertions(+), 41 deletions(-) create mode 100644 share/icons/application/32x32/actions/document-edit.png create mode 100644 share/icons/application/32x32/actions/document-properties.png create mode 100644 share/icons/application/32x32/actions/key-enter.png create mode 100644 share/icons/application/32x32/actions/view-history.png create mode 100644 share/icons/application/32x32/apps/internet-web-browser.png create mode 100644 share/icons/application/32x32/apps/preferences-desktop-icons.png create mode 100644 share/icons/application/32x32/categories/preferences-other.png create mode 100644 share/icons/application/32x32/status/security-high.png create mode 100644 share/icons/svg/document-properties.svgz create mode 100644 share/icons/svg/internet-web-browser.svgz create mode 100644 share/icons/svg/key-enter.svgz create mode 100644 share/icons/svg/preferences-desktop-icons.svgz create mode 100644 share/icons/svg/preferences-other.svgz create mode 100644 share/icons/svg/security-high.svgz create mode 100644 share/icons/svg/view-history.svgz diff --git a/share/CMakeLists.txt b/share/CMakeLists.txt index 37e4bdd68..e57cdb3c7 100644 --- a/share/CMakeLists.txt +++ b/share/CMakeLists.txt @@ -22,10 +22,10 @@ install(FILES ${DATABASE_ICONS} DESTINATION ${DATA_INSTALL_DIR}/icons/database) if(UNIX AND NOT APPLE) install(DIRECTORY icons/application/ DESTINATION ${CMAKE_INSTALL_DATADIR}/icons/hicolor FILES_MATCHING PATTERN "keepassx*.png" PATTERN "keepassx*.svgz" - PATTERN "status" EXCLUDE PATTERN "actions" EXCLUDE) + PATTERN "status" EXCLUDE PATTERN "actions" EXCLUDE PATTERN "categories" EXCLUDE) install(DIRECTORY icons/application/ DESTINATION ${CMAKE_INSTALL_DATADIR}/icons/hicolor FILES_MATCHING PATTERN "application-x-keepassxc.png" PATTERN "application-x-keepassxc.svgz" - PATTERN "status" EXCLUDE PATTERN "actions" EXCLUDE) + PATTERN "status" EXCLUDE PATTERN "actions" EXCLUDE PATTERN "categories" EXCLUDE) install(FILES linux/keepassxc.desktop DESTINATION ${CMAKE_INSTALL_DATADIR}/applications) install(FILES linux/keepassxc.xml DESTINATION ${CMAKE_INSTALL_DATADIR}/mime/packages) endif(UNIX AND NOT APPLE) diff --git a/share/icons/application/32x32/actions/document-edit.png b/share/icons/application/32x32/actions/document-edit.png new file mode 100644 index 0000000000000000000000000000000000000000..eb327b0a10fabf9cf9d82f96aee4a1bc3522e1fa GIT binary patch literal 1859 zcmV-J2fX-+P)J8+jCYM-Gv7I%o$!&;-x!QF(X2$;NbAuSq1-gvUeBG~ZUriG=_~sT3DNpbXCy zWn@%J)}?c^kiv6rKA{>9zdaP?&HW}t;J)63dU>L!H)&ZU;HC-yM5S;wSE{Xt#2rh= z`FH{KwQ%CXRMzh51)!s&gJ+g-`KEPNxbZ&M(Z9lXDkA_WiZbZs!lip9r~k}|L_hsQ zBEc-}-7yxfK7*8yOeR_Rg9hf@E~0+F@5%@Do)xdal`1J1`=q1o4g1Aos~G3GKu^lW zf>oWEwjiI+bMLKQ9=bD5(C;h$;gGWI>6Z%~faxAH1w%li?v>5Y9)E>t+WTa3Hjh4C zAd?#`#winWtekIB8}hOH&*rA5cIHn4MZl_>f)THF;wlBF2tn7m_xO@$4~C_%d^221 zN&pnAi`FM#T+ksC{t-{@)Z2!{i-1#EgjLe;d8tTspJYOAGm7G4&8u$y@h=?!Q}5-~ zl^W4ngKY3&2K;jY3_u?mWz}17tv5jkK|XzvV0( z9$mYGxaTo^J|9EkdB6s!o`O*z%A;WF{fN#d@rUYY&wPtbyV|fU3q`=Qi{Zw}X&iM1 z=jC!#RYTJ>hQ!Tby)pa1SP;^&Fwg&jaP0&V%wq9R_fRMl09ZUb%bhp&p=eE<(x1TN z3!-Tnp-^Zz0?w!arNuW4Q2_!J&aNR`8zG*H^3c*9q|+Gy?ztt$!(UIM`p0o1yBwFV z4o%Ythr@)!VTMCLdITuD31uk(h=2GTHL5`>)yJYI_t70sA*JM&7M-8X>n9lSb0oDC z(=`cIRSAVcL?RJ99#4hVwG|;(U%QK^-zFN2GmyQ)kJp{!>?a8TZkX)w%))-gg*_Zj z%qQctjEKi#F*HpZIl!0zV-;c7x&1V{4`As1tlHkg2mkB>AQo|0zo?f9;{?azv+2^m zf~u+ngFzY^8VCl1C`#2}kDY?yhzKD_CqAa$*aHZ*z0uEswjLbEA)rb&E=|)Em3-7Y zlhdi&P*s(hni?iennWZL!R>Zmt*L7PC~v*}iB8-XR^So_yWaVfH~!dxX_~kc$+{(3 zW;7dgrl)i8(kxU}B@hS@jYg@juSW=hWm#C3g>5?(QWbB($PbPZkWBJC=+|-VP&+UF zW&p!55CT>$$aC9_0)538d)sFds8P{0jr#g}VzC%f%8{!ngg|ju7GdRMR2qSyrBO)Z zs=1q^=hGO*M*uuNr@(i=Hh^x|^7_$x@%RJyd_L;x>S%0i1R#}4Q8WysM`qy- z-9S@Q6OE0Hj2}N9MR9TA;zd$dt`GJfByh2 zO<9aW62+~8cOr>wfWKURj5}uEPAnF~>-FL|4g&)@dU|?D_9pq>gY&Q~i=LitHf-Da z+V-tmSCos74lpF%pGxxbTZfs}1oLM%;nt?oJYz0jjZMMl^WpV+ak*UBwoNXVBbUq3 z*WZs{^N)yc+}irP?VFzeJ|L?}jadVKdiOQb=@h=H*K_^M)ih0+j?3j5iH;Bg$8m5R z2ivyE7xLr=aI4*sH<uA+rLOC;SS(7zFr;ak(lkwJS(dacOWL+A9mkQ5<47r` zv~61!3I!RD$K{cuN9FNTAKH&EU)~C%{#hCuz_#rQ!BQU<9|3S2sTU2IO!diw$4{Dz xmMvTJMa0WL91l$RPsoQ%2RitIVgJ9{zX47j^9HRIUeo{p002ovPDHLkV1h-edrANR literal 0 HcmV?d00001 diff --git a/share/icons/application/32x32/actions/document-properties.png b/share/icons/application/32x32/actions/document-properties.png new file mode 100644 index 0000000000000000000000000000000000000000..a6d13863d8d9a39759b84da475167b0ac01c3419 GIT binary patch literal 1385 zcmV-v1(y1WP)P|F+xR zot-ns3%bkhbhcekPOg3?=51ASW^V+giR8~z)D==1AOCYh%C*$lhZ^Ge$l<3g`en0UxyAMZre5xDGS%k0VReU}ld3kwg+MS>H zR~(2pAwWzI({^$tdyn@sX~O+Xos^9zUV`86$K&zfa5z$$?_NOCmOzLYmrk$ZXj4DF zA`eeJ0=Kf4P#p;1^?GqSohjXax58-w0Hi5sJN_o8&v&C_-N)?d4%!Bvqo%5g;^Jal zF4w5y|HuI;C0EX@;n&t6T|p;{=lb}i{V{55t0^rlO?17TVDc87Jnq~#vRSPF%H^{k z(0b`lTCbVBx2%?vtpO%Zs-mo{EMa@f0~T@9G%-yR!!Qs+AcRO0hGF>ywHC0 z28Yh}v3|`Ajx-liF`<(3@^aj6ccSC1qVZ!~FdB`b>pG!Oh^Ve3O_QwbY+|Mi14Fg| zKWt!0PjteQ4SUFw*o<#Z*) z>ptChr16U{=h}$_s6)cLU|de$wJn?Lm;QL-(gm;A%L5+IsN%`5U>raQ!BBXJ&|ru_ zMc}shhKwtPMdFh_Gx1#*CK!2ICAfDDB~G7^bMUDstS7L&19Od5tE4a1N^2x*$8 zG)+@VDWwoXhQndm(a|B#ookZc?LQ!|Ub`w6FJJyGc7ORSp$*f;hAoOX91f&u-u1Ss zC<>?w{>n<@qq_R9cQrOH8Y^?Vcvc88BID!{&pzRRY05}cmz_Pmvgtz0(ENo9H)oQ0 r0^Blx2$*uW)Jf3~oa7!d|KH+oj}Ib`Kj*nd00000NkvXXu0mjft%i=Z literal 0 HcmV?d00001 diff --git a/share/icons/application/32x32/actions/key-enter.png b/share/icons/application/32x32/actions/key-enter.png new file mode 100644 index 0000000000000000000000000000000000000000..60d11e2f11f37bf848f81a0fbb019dd301b8af86 GIT binary patch literal 1095 zcmV-N1i1T&P)H;pD!_grN}$z*;M$l(FxZ{R`@}f1`Z%@jWKVh01-)!0k-J_yWp&lG3GxJ7!;(!81pir zN5J*oCF7D9dJD?sa%FdS_vhK!*)NGGh@wbDQ6!@%62=%AMUf<;cdl_CuvV+#@bECU z$tqcEGZhFA4i0`>$)y6Q|c8@H9|& z?0e6I{q0I65ClOS-LHYW#$F@kmZ8#6YfW0~OmO!Y_8%c>s#t5Gl*%Tcl!Dg!Rd80w zy$5^}X{z`Nq#iVUbq)ge+jhH+)6-KNA0KDN#ZW<*cE_i^bc7JNySu~w{yy^gJhr#D zQLEJe0FRH41Bqu6aPRLla993Psf6|QbzEOxV{vg2g+c+=T5N7^CJ3<2p@NVf6obIs z{Lkm}I6FH-qtQU4(ZJEs(W`MVR1gXw5Cj3b-EP8TAo;}NxkQB3)m5yltn{ho$G}hu zluD(sv9U22W6*B56KUtl?`HtF{+?^C-8VrdfoObuT!mo>B7)XBAvt?JsCW?%BEs|Y zGdi6Plv23AzyBwTz{ktW%is6*_P*_QyFnC1sm2F^4*G74L8H<5^Wx&-S9i`JR|-o@ zOS=mT3!fu-R*0Tqk+PPYtCk!BB!r-chlfvBS69CQxCIdBA{&u-Q9}bzy*2<4_QuNl zr+RCcob6QuAo5zS-Cm8{e`yLx2UIy@1{4l3uV>F~ukRA#);Qz1{0qlSe^=DucFzC+ N002ovPDHLkV1k9D@<9Lq literal 0 HcmV?d00001 diff --git a/share/icons/application/32x32/actions/view-history.png b/share/icons/application/32x32/actions/view-history.png new file mode 100644 index 0000000000000000000000000000000000000000..a67c689ac5b5d9a501907391f37ea3b6be37c350 GIT binary patch literal 1614 zcmV-U2C?~xP)zEjwjKD5ZZmaL;$n{eQpvoeTGV4C_?P73Z0z8S!`m@mL)3cmnBk z2H9*D*<3-hEfbta5P~BN1Gv5mujRq@S_py=zVD*dYN;Ryph!WHf|LqMNhqZR5j}Q) zK4U!q0R;x=_s4_~a9s~dtLEv(=rP$ zKEJnSnPyE&SsFIbXm7?C* zwXRfg*Frrk2V-Mn>0B%_AofU{@Ma@Tb~xOHoCACdct>o(0sqhZ{fGaetG7=5{3um7pPzrWduXWK_` zPgky7nTw+6{b!ze>UW8R{qD-j{IoQ?dj9y~`8S7#hCc7qucHdw)9~={jWcK7xfqM3 z;)!JPr|-WvFf=qY^p}lzZ3qAWq?7}-T78~Jm|mEfJ+o1tj*sA;Ow%lnkB@&Ei>VzE z$zA}n8}Zpt1uB(_UM`o9mrA7@$z;k&CNqaBm5TL01IXv|zd3pGWYp8s(?}*${;P+6 z@-N@_e_gFsJNE1Nh9gIgyn5=?slA-@kz%nJ+IC$0@COC=@ZrN_BO@cPe5(L^_Uzey z`t<2zhGE>cENjZP6H3>0D&>Usqn$e&`}glhrBZqJTLGw6tJ=|{M}NC@>sBKOf{#mij)<8E^Si_HZrF3op09p_iJZU27L0WMy=7)H@c zAMXC~j-TIMa*8|vmYo2mX`|&jXt~Q+ahKJ^`0e2j1}-dZDnL4&-eOy^e@@?;DXchw zRmkO(AfbhU4?pnXx-EoZK#hhYT+chg7~4TaFKrrt$;>A~c!GenR!4&p46T+2$7y0^ zWf@TvGA@J#ki{7L84>AtL?^UfY<-}R+p?f(Oiw0L%rs4;l4(k(GFm(l&nA;;7`hIj zIHE8@5P0x>7oN9T1@T-Pf} z5@w`yyJaj}_qG~qyM+J%u{z-Z2Zs>iktOCF5g@|Vow##<^8X9{2RMump_RM6#{d8T M07*qoM6N<$f-cwvnE(I) literal 0 HcmV?d00001 diff --git a/share/icons/application/32x32/apps/internet-web-browser.png b/share/icons/application/32x32/apps/internet-web-browser.png new file mode 100644 index 0000000000000000000000000000000000000000..b4106a58b3875b20d865f158524f39f3e627718e GIT binary patch literal 1568 zcmV+*2H*LKP)kl|6c9)+}|!GKqLS)IXO9Q zS=PYqOxIdp92y$htpF*67^qgOx5W6uOqr>s#eq(R)`qv6ihfZi?b|#tWpn4bbA08Y z5q#et0Hgvi#t_HxEdeO4Hdt*4ijG3Z2`j~fj1yB|i+JP2GR1nGIF2#K0H6TkIKE{7 zBfHwkueQi$T>#pHCYg+bl!7Nd16^Hx>+-HOkk99_ENffyLZQyDo_+=0wD5eJmX0Zw zo6OA@$%Yp9e|CgVeRB7@cl!G`-p6sw^78U}fcExwlu}!U|LA9brdBoFbI%ZG&n~c3 zsBv++h#%PazDr`;96PbV)6e~jCx7t;1_wH}^wL_hxVQ*_yh^l{j4^!u8_$ypQ+(vm z0J*+Sgy%A~SS1bvdiU+5DJ_fyc$miP#Q;J+Zg9l@|~Z&z{JGTwgbB^z%$RjMrSTd zsTz^WhVdY;aIrZiu(@Pbmm#UnfU*r6InXaA;kAL@%HwLiP z6g+=y49iiVB%i)_50zF-Er$Jf_i^ap0EZ3_F?qRyopNX*(UzpNR%7;3nYYg`QC9)S zj-T1o`?^!``s*_!(jpd;j*gJX2oj*F4Vg?py3OarnK|mxqK0HOP7t1hRu+k6vHzpH zu`?mh{{FRX8&CjAl5F?_o_gkG<`=6lv5X8{4gxw6q(TRw3}-GZ5~e*04UHAJm?$QZ z@`||>1ffer!rWYQL%33kBuU-{*h~vEMZCaeY%`yfqHCM zsK@L`JFF!F88{@ZE2B@00U;>XG)O^`7@{b~w%3DP&Ahe-q9|JTKsxIan*^j_zEJ0P zFP>+3s0+)n7+a`up%U@8={1T5r0*a-8{ygr+agIcwMN9H>B~s;hVUqgHm-s9YiECk zRAAGTf?7-Cx{6=_b%N319B$gjw=99RdzU=Z!^|4 zuo=LYA3nlbv4$fBooyban&!^#G-np7JTThJ7mxJu$dP_VKiq{EdPv8{^Az1#kCoLb zGS>LYWzVjzZ2`7yptB=nxIe|&a*Nhtg*L~bqo{wg@~$=-J$rOR>K< z!y6Y@(Ty0>j1bD=$boM1`RvUD3=Zz#r$6`vomPT!ZD?uUyjWm-se*4qZ>ZRtwYeiu zy!B3zwL%49zzID1M1!Y(`QWC$@6FtD3a;wm&yNyHo8SIroM4~>FB_s;nye%6lw_h% zXYz6xR~Wpsk8CvA(Ol*DpT33=Tkmsk7y#ht=k8`?ILD)p|ACpdEPDvdBA`*IOWTCW2zg+k%<$&)7!-mt?hP^nZp1(*-=Xl4L?n=}8fjrtEI3#4y| SB_x^v00006U2i=0`U7<|$+&AhJbE4r@F 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 E0K-Jt4FCWD literal 0 HcmV?d00001 diff --git a/share/icons/svg/internet-web-browser.svgz b/share/icons/svg/internet-web-browser.svgz new file mode 100644 index 0000000000000000000000000000000000000000..f48f1415c2e2f606c79e489fd157b5713cb2e385 GIT binary patch literal 206090 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¬X*SUE0pY86ORFK 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 literal 0 HcmV?d00001 diff --git a/share/icons/svg/key-enter.svgz b/share/icons/svg/key-enter.svgz new file mode 100644 index 0000000000000000000000000000000000000000..7176b5acb722936825246721ec6ca93ff0578f4e GIT binary patch literal 9345 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 v-4i%GNBJm+JfdoMCyMO!m?)>1F`PKE= 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 literal 0 HcmV?d00001 diff --git a/share/icons/svg/preferences-other.svgz b/share/icons/svg/preferences-other.svgz new file mode 100644 index 0000000000000000000000000000000000000000..4abeca3763b099d5870f723bfe41a52e1bb8b3ac GIT binary patch literal 12294 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 QN)LbiKL~y|t^ig508PrE{Qv*} literal 0 HcmV?d00001 diff --git a/share/icons/svg/view-history.svgz b/share/icons/svg/view-history.svgz new file mode 100644 index 0000000000000000000000000000000000000000..fff230f6660e7b290704c79d29bb4eb55833e466 GIT binary patch literal 6519 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 literal 0 HcmV?d00001 diff --git a/src/gui/MainWindow.cpp b/src/gui/MainWindow.cpp index 7225c4c5a..cf6ae0401 100644 --- a/src/gui/MainWindow.cpp +++ b/src/gui/MainWindow.cpp @@ -54,34 +54,47 @@ #ifdef WITH_XC_HTTP class HttpPlugin: public ISettingsPage { - public: - HttpPlugin(DatabaseTabWidget * tabWidget) { - m_service = new Service(tabWidget); - } - virtual ~HttpPlugin() { - //delete m_service; - } - virtual QString name() { - return QObject::tr("Browser Integration"); - } - virtual QWidget * createWidget() { - OptionDialog * dlg = new OptionDialog(); - QObject::connect(dlg, SIGNAL(removeSharedEncryptionKeys()), m_service, SLOT(removeSharedEncryptionKeys())); - QObject::connect(dlg, SIGNAL(removeStoredPermissions()), m_service, SLOT(removeStoredPermissions())); - return dlg; - } - virtual void loadSettings(QWidget * widget) { - qobject_cast(widget)->loadSettings(); - } - virtual void saveSettings(QWidget * widget) { - qobject_cast(widget)->saveSettings(); - if (HttpSettings::isEnabled()) - m_service->start(); - else - m_service->stop(); - } - private: - Service *m_service; +public: + HttpPlugin(DatabaseTabWidget * tabWidget) + { + m_service = new Service(tabWidget); + } + + ~HttpPlugin() = default; + + QString name() override + { + return QObject::tr("Browser Integration"); + } + + QIcon icon() override + { + return FilePath::instance()->icon("apps", "internet-web-browser"); + } + + QWidget * createWidget() override + { + OptionDialog * dlg = new OptionDialog(); + QObject::connect(dlg, SIGNAL(removeSharedEncryptionKeys()), m_service, SLOT(removeSharedEncryptionKeys())); + QObject::connect(dlg, SIGNAL(removeStoredPermissions()), m_service, SLOT(removeStoredPermissions())); + return dlg; + } + + void loadSettings(QWidget * widget) override + { + qobject_cast(widget)->loadSettings(); + } + + void saveSettings(QWidget * widget) override + { + qobject_cast(widget)->saveSettings(); + if (HttpSettings::isEnabled()) + m_service->start(); + else + m_service->stop(); + } +private: + Service *m_service; }; #endif diff --git a/src/gui/SettingsWidget.cpp b/src/gui/SettingsWidget.cpp index ef153c123..660d5a864 100644 --- a/src/gui/SettingsWidget.cpp +++ b/src/gui/SettingsWidget.cpp @@ -58,8 +58,8 @@ SettingsWidget::SettingsWidget(QWidget* parent) m_secUi->setupUi(m_secWidget); m_generalUi->setupUi(m_generalWidget); - addPage(tr("General"), FilePath::instance()->icon("apps", "keepassxc"), m_generalWidget); - addPage(tr("Security"), FilePath::instance()->icon("apps", "keepassxc"), m_secWidget); + addPage(tr("General"), FilePath::instance()->icon("categories", "preferences-other"), m_generalWidget); + addPage(tr("Security"), FilePath::instance()->icon("status", "security-high"), m_secWidget); m_generalUi->autoTypeShortcutWidget->setVisible(autoType()->isAvailable()); m_generalUi->autoTypeShortcutLabel->setVisible(autoType()->isAvailable()); @@ -88,12 +88,12 @@ SettingsWidget::~SettingsWidget() { } -void SettingsWidget::addSettingsPage(ISettingsPage *page) +void SettingsWidget::addSettingsPage(ISettingsPage* page) { - QWidget * widget = page->createWidget(); + QWidget* widget = page->createWidget(); widget->setParent(this); m_extraPages.append(ExtraPage(page, widget)); - addPage(page->name(), FilePath::instance()->icon("apps", "keepassxc"), widget); + addPage(page->name(), page->icon(), widget); } void SettingsWidget::loadSettings() diff --git a/src/gui/SettingsWidget.h b/src/gui/SettingsWidget.h index 236206299..e94f48767 100644 --- a/src/gui/SettingsWidget.h +++ b/src/gui/SettingsWidget.h @@ -29,6 +29,7 @@ class ISettingsPage { public: virtual ~ISettingsPage() {} virtual QString name() = 0; + virtual QIcon icon() = 0; virtual QWidget * createWidget() = 0; virtual void loadSettings(QWidget * widget) = 0; virtual void saveSettings(QWidget * widget) = 0; diff --git a/src/gui/entry/EditEntryWidget.cpp b/src/gui/entry/EditEntryWidget.cpp index ff75540af..51e0bb735 100644 --- a/src/gui/entry/EditEntryWidget.cpp +++ b/src/gui/entry/EditEntryWidget.cpp @@ -90,7 +90,7 @@ EditEntryWidget::~EditEntryWidget() void EditEntryWidget::setupMain() { m_mainUi->setupUi(m_mainWidget); - addPage(tr("Entry"), FilePath::instance()->icon("apps", "keepassxc"), m_mainWidget); + addPage(tr("Entry"), FilePath::instance()->icon("actions", "document-edit"), m_mainWidget); m_mainUi->togglePasswordButton->setIcon(filePath()->onOffIcon("actions", "password-show")); m_mainUi->togglePasswordGeneratorButton->setIcon(filePath()->icon("actions", "password-generator", false)); @@ -115,7 +115,7 @@ void EditEntryWidget::setupMain() void EditEntryWidget::setupAdvanced() { m_advancedUi->setupUi(m_advancedWidget); - addPage(tr("Advanced"), FilePath::instance()->icon("apps", "keepassxc"), m_advancedWidget); + addPage(tr("Advanced"), FilePath::instance()->icon("categories", "preferences-other"), m_advancedWidget); m_attachmentsModel->setEntryAttachments(m_entryAttachments); m_advancedUi->attachmentsView->setModel(m_attachmentsModel); @@ -139,13 +139,13 @@ void EditEntryWidget::setupAdvanced() void EditEntryWidget::setupIcon() { - addPage(tr("Icon"), FilePath::instance()->icon("apps", "keepassxc"), m_iconsWidget); + addPage(tr("Icon"), FilePath::instance()->icon("apps", "preferences-desktop-icons"), m_iconsWidget); } void EditEntryWidget::setupAutoType() { m_autoTypeUi->setupUi(m_autoTypeWidget); - addPage(tr("Auto-Type"), FilePath::instance()->icon("apps", "keepassxc"), m_autoTypeWidget); + addPage(tr("Auto-Type"), FilePath::instance()->icon("actions", "key-enter"), m_autoTypeWidget); m_autoTypeDefaultSequenceGroup->addButton(m_autoTypeUi->inheritSequenceButton); m_autoTypeDefaultSequenceGroup->addButton(m_autoTypeUi->customSequenceButton); @@ -177,13 +177,13 @@ void EditEntryWidget::setupAutoType() void EditEntryWidget::setupProperties() { - addPage(tr("Properties"), FilePath::instance()->icon("apps", "keepassxc"), m_editWidgetProperties); + addPage(tr("Properties"), FilePath::instance()->icon("actions", "document-properties"), m_editWidgetProperties); } void EditEntryWidget::setupHistory() { m_historyUi->setupUi(m_historyWidget); - addPage(tr("History"), FilePath::instance()->icon("apps", "keepassxc"), m_historyWidget); + addPage(tr("History"), FilePath::instance()->icon("actions", "view-history"), m_historyWidget); m_sortModel->setSourceModel(m_historyModel); m_sortModel->setDynamicSortFilter(true); From 7abebabf4fa1155601d517aa85b9edfa8354b36e Mon Sep 17 00:00:00 2001 From: Janek Bevendorff Date: Wed, 22 Feb 2017 15:30:27 +0100 Subject: [PATCH 10/27] Rework general settings page --- src/gui/DatabaseWidget.cpp | 2 +- src/gui/SettingsWidget.cpp | 12 +- src/gui/SettingsWidgetGeneral.ui | 562 ++++++++++++++++++------------- 3 files changed, 343 insertions(+), 233 deletions(-) diff --git a/src/gui/DatabaseWidget.cpp b/src/gui/DatabaseWidget.cpp index a67646ef1..dffbe69d0 100644 --- a/src/gui/DatabaseWidget.cpp +++ b/src/gui/DatabaseWidget.cpp @@ -287,7 +287,7 @@ void DatabaseWidget::createEntry() void DatabaseWidget::setIconFromParent() { - if (!config()->get("UseGroupIconOnEntryCreation").toBool()) { + if (!config()->get("UseGroupIconOnEntryCreation", true).toBool()) { return; } diff --git a/src/gui/SettingsWidget.cpp b/src/gui/SettingsWidget.cpp index 660d5a864..d8f50a3b0 100644 --- a/src/gui/SettingsWidget.cpp +++ b/src/gui/SettingsWidget.cpp @@ -61,13 +61,13 @@ SettingsWidget::SettingsWidget(QWidget* parent) addPage(tr("General"), FilePath::instance()->icon("categories", "preferences-other"), m_generalWidget); addPage(tr("Security"), FilePath::instance()->icon("status", "security-high"), m_secWidget); - m_generalUi->autoTypeShortcutWidget->setVisible(autoType()->isAvailable()); - m_generalUi->autoTypeShortcutLabel->setVisible(autoType()->isAvailable()); + if (!autoType()->isAvailable()) { + m_generalUi->generalSettingsTabWidget->removeTab(1); + } + #ifdef Q_OS_MAC // systray not useful on OS X - m_generalUi->systrayShowCheckBox->setVisible(false); - m_generalUi->systrayMinimizeOnCloseCheckBox->setVisible(false); - m_generalUi->systrayMinimizeToTrayCheckBox->setVisible(false); + m_generalUi->systraySettings->setVisible(false); #endif connect(this, SIGNAL(accepted()), SLOT(saveSettings())); @@ -106,7 +106,7 @@ void SettingsWidget::loadSettings() m_generalUi->autoSaveOnExitCheckBox->setChecked(config()->get("AutoSaveOnExit").toBool()); m_generalUi->autoReloadOnChangeCheckBox->setChecked(config()->get("AutoReloadOnChange").toBool()); m_generalUi->minimizeOnCopyCheckBox->setChecked(config()->get("MinimizeOnCopy").toBool()); - m_generalUi->useGroupIconOnEntryCreationCheckBox->setChecked(config()->get("UseGroupIconOnEntryCreation").toBool()); + m_generalUi->useGroupIconOnEntryCreationCheckBox->setChecked(config()->get("UseGroupIconOnEntryCreation", true).toBool()); m_generalUi->autoTypeEntryTitleMatchCheckBox->setChecked(config()->get("AutoTypeEntryTitleMatch").toBool()); m_generalUi->languageComboBox->clear(); diff --git a/src/gui/SettingsWidgetGeneral.ui b/src/gui/SettingsWidgetGeneral.ui index 400a6ce02..b58f31e80 100644 --- a/src/gui/SettingsWidgetGeneral.ui +++ b/src/gui/SettingsWidgetGeneral.ui @@ -7,230 +7,349 @@ 0 0 684 - 452 + 732 - - - QFormLayout::AllNonFixedFieldsGrow + + + 0 - - - - Remember last databases + + 0 + + + 0 + + + 0 + + + + + 0 - - true - - - - - - - Remember last key files - - - true - - - - - - - Load previous databases on startup - - - - - - - Automatically save on exit - - - - - - - Automatically save after every change - - - - - - - Automatically reload the database when modified externally - - - - - - - Minimize when copying to clipboard - - - - - - - Minimize window at application startup - - - - - - - Use group icon on entry creation - - - - - - - - - Global Auto-Type shortcut - - - Qt::AlignLeft - - - - - - - - - - Qt::Horizontal - - - - 400 - - - - - - - - - - - - - - + + + Basic Settings + + + + + + Remember last databases + + + true + + + + + + + Remember last key files and security dongles + + + true + + + + + + + Load previous databases on startup + + + + + + + Automatically save on exit + + + + + + + Automatically save after every change + + + + + + + Automatically reload the database when modified externally + + + + + + + Minimize when copying to clipboard + + + + + + + Minimize window at application startup + + + + + + + Use group icon on entry creation + + + true + + + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + Qt::Vertical + + + QSizePolicy::Fixed + + + + 20 + 30 + + + + + + + + Show a system tray icon + + + + + + + 0 + + + QLayout::SetMaximumSize + + + + + Qt::Horizontal + + + QSizePolicy::Fixed + + + + 40 + 20 + + + + + + + + false + + + + 0 + 0 + + + + Hide window to system tray when minimized + + + + + + + + + 0 + + + QLayout::SetMaximumSize + + + + + Qt::Horizontal + + + QSizePolicy::Fixed + + + + 40 + 20 + + + + + + + + false + + + Hide window to system tray instead of app exit + + + + + + + + + + + + Qt::Vertical + + + QSizePolicy::Fixed + + + + 20 + 30 + + + + + + + + 15 + + + + + + 0 + 0 + + + + Language + + + + + + + + 0 + 0 + + + + + + + + + + Qt::Vertical + + + QSizePolicy::Expanding + + + + 20 + 40 + + + + + + + + + Auto-Type + + + + + + Use entry title to match windows for global Auto-Type + + + + + + + 15 + + + + + + 0 + 0 + + + + Global Auto-Type shortcut + + + Qt::AlignLeading + + + + + + + + 0 + 0 + + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + - - - - - Use entry title to match windows for global auto-type - - - - - - - Language - - - - - - - Qt::Horizontal - - - - 400 - - - - - - - - - - - - - - - - Show a system tray icon - - - - - - - QLayout::SetMaximumSize - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - false - - - - 0 - 0 - - - - Hide window to system tray when minimized - - - - - - - - - QLayout::SetMaximumSize - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - false - - - Hide window to system tray instead of app exit - - - - - @@ -240,15 +359,6 @@
autotype/ShortcutWidget.h
- - rememberLastDatabasesCheckBox - rememberLastKeyFilesCheckBox - openPreviousDatabasesOnStartupCheckBox - autoSaveOnExitCheckBox - autoSaveAfterEveryChangeCheckBox - minimizeOnCopyCheckBox - autoTypeShortcutWidget - From 9715ba0c8a0833b488b3955bb3645da690e07b2c Mon Sep 17 00:00:00 2001 From: Janek Bevendorff Date: Wed, 22 Feb 2017 16:08:06 +0100 Subject: [PATCH 11/27] Rework security settings, set sane default timeout value --- src/core/Config.cpp | 3 +- src/gui/SettingsWidget.cpp | 8 +- src/gui/SettingsWidgetGeneral.ui | 10 ++ src/gui/SettingsWidgetSecurity.ui | 195 +++++++++++++++++++----------- 4 files changed, 140 insertions(+), 76 deletions(-) diff --git a/src/core/Config.cpp b/src/core/Config.cpp index d5365d7c1..28b17536f 100644 --- a/src/core/Config.cpp +++ b/src/core/Config.cpp @@ -102,10 +102,11 @@ void Config::init(const QString& fileName) m_defaults.insert("MinimizeOnCopy", false); m_defaults.insert("UseGroupIconOnEntryCreation", false); m_defaults.insert("AutoTypeEntryTitleMatch", true); + m_defaults.insert("UseGroupIconOnEntryCreation", true); m_defaults.insert("security/clearclipboard", true); m_defaults.insert("security/clearclipboardtimeout", 10); m_defaults.insert("security/lockdatabaseidle", false); - m_defaults.insert("security/lockdatabaseidlesec", 10); + m_defaults.insert("security/lockdatabaseidlesec", 240); m_defaults.insert("security/lockdatabaseminimize", false); m_defaults.insert("security/passwordsrepeat", false); m_defaults.insert("security/passwordscleartext", false); diff --git a/src/gui/SettingsWidget.cpp b/src/gui/SettingsWidget.cpp index d8f50a3b0..3ec9674fe 100644 --- a/src/gui/SettingsWidget.cpp +++ b/src/gui/SettingsWidget.cpp @@ -106,7 +106,7 @@ void SettingsWidget::loadSettings() m_generalUi->autoSaveOnExitCheckBox->setChecked(config()->get("AutoSaveOnExit").toBool()); m_generalUi->autoReloadOnChangeCheckBox->setChecked(config()->get("AutoReloadOnChange").toBool()); m_generalUi->minimizeOnCopyCheckBox->setChecked(config()->get("MinimizeOnCopy").toBool()); - m_generalUi->useGroupIconOnEntryCreationCheckBox->setChecked(config()->get("UseGroupIconOnEntryCreation", true).toBool()); + m_generalUi->useGroupIconOnEntryCreationCheckBox->setChecked(config()->get("UseGroupIconOnEntryCreation").toBool()); m_generalUi->autoTypeEntryTitleMatchCheckBox->setChecked(config()->get("AutoTypeEntryTitleMatch").toBool()); m_generalUi->languageComboBox->clear(); @@ -123,6 +123,7 @@ void SettingsWidget::loadSettings() m_generalUi->systrayMinimizeToTrayCheckBox->setChecked(config()->get("GUI/MinimizeToTray").toBool()); m_generalUi->systrayMinimizeOnCloseCheckBox->setChecked(config()->get("GUI/MinimizeOnClose").toBool()); m_generalUi->systrayMinimizeOnStartup->setChecked(config()->get("GUI/MinimizeOnStartup").toBool()); + m_generalUi->autoTypeAskCheckBox->setChecked(config()->get("security/autotypeask").toBool()); if (autoType()->isAvailable()) { m_globalAutoTypeKey = static_cast(config()->get("GlobalAutoTypeKey").toInt()); @@ -142,7 +143,6 @@ void SettingsWidget::loadSettings() m_secUi->passwordCleartextCheckBox->setChecked(config()->get("security/passwordscleartext").toBool()); m_secUi->passwordRepeatCheckBox->setChecked(config()->get("security/passwordsrepeat").toBool()); - m_secUi->autoTypeAskCheckBox->setChecked(config()->get("security/autotypeask").toBool()); Q_FOREACH (const ExtraPage& page, m_extraPages) page.loadSettings(); @@ -173,6 +173,8 @@ void SettingsWidget::saveSettings() config()->set("GUI/MinimizeOnClose", m_generalUi->systrayMinimizeOnCloseCheckBox->isChecked()); config()->set("GUI/MinimizeOnStartup", m_generalUi->systrayMinimizeOnStartup->isChecked()); + config()->set("security/autotypeask", m_generalUi->autoTypeAskCheckBox->isChecked()); + if (autoType()->isAvailable()) { config()->set("GlobalAutoTypeKey", m_generalUi->autoTypeShortcutWidget->key()); config()->set("GlobalAutoTypeModifiers", @@ -188,8 +190,6 @@ void SettingsWidget::saveSettings() config()->set("security/passwordscleartext", m_secUi->passwordCleartextCheckBox->isChecked()); config()->set("security/passwordsrepeat", m_secUi->passwordRepeatCheckBox->isChecked()); - config()->set("security/autotypeask", m_secUi->autoTypeAskCheckBox->isChecked()); - Q_FOREACH (const ExtraPage& page, m_extraPages) page.saveSettings(); diff --git a/src/gui/SettingsWidgetGeneral.ui b/src/gui/SettingsWidgetGeneral.ui index b58f31e80..88d7cad45 100644 --- a/src/gui/SettingsWidgetGeneral.ui +++ b/src/gui/SettingsWidgetGeneral.ui @@ -300,6 +300,16 @@
+ + + + Always ask before performing Auto-Type + + + true + + + diff --git a/src/gui/SettingsWidgetSecurity.ui b/src/gui/SettingsWidgetSecurity.ui index d664736ae..08fa6f4ea 100644 --- a/src/gui/SettingsWidgetSecurity.ui +++ b/src/gui/SettingsWidgetSecurity.ui @@ -6,91 +6,144 @@ 0 0 - 374 - 303 + 595 + 443 - - - - - Clear clipboard after + + + 0 + + + 0 + + + 0 + + + 0 + + + + + Timeouts + + + + + false + + + + 0 + 0 + + + + sec + + + 1 + + + 999 + + + 10 + + + + + + + false + + + + 0 + 0 + + + + sec + + + 10 + + + 9999 + + + 240 + + + + + + + Clear clipboard after + + + + + + + Lock databases after inactivity of + + + + - - - - false - - - sec - - - 1 - - - 999 + + + + Convenience + + + + + Don't require password repeat when it is visible + + + + + + + Show passwords in cleartext by default + + + + + + + Lock databases after minimizing the window + + + + - - - - Lock databases after inactivity of + + + + Qt::Vertical - - - - - - false + + QSizePolicy::Expanding - - sec + + + 20 + 30 + - - 10 - - - 9999 - - - - - - - Lock databases after minimizing the window - - - - - - - Show passwords in cleartext by default - - - - - - - Don't require password repeat when it is visible - - - - - - - Always ask before performing auto-type - - + - - clearClipboardCheckBox - clearClipboardSpinBox - From d98249814d99ea1429972e03f44ac64975adbc82 Mon Sep 17 00:00:00 2001 From: Janek Bevendorff Date: Wed, 22 Feb 2017 17:46:41 +0100 Subject: [PATCH 12/27] Rework HTTP settings --- src/http/HttpPasswordGeneratorWidget.cpp | 3 - src/http/HttpPasswordGeneratorWidget.h | 2 +- src/http/HttpPasswordGeneratorWidget.ui | 51 +++------ src/http/OptionDialog.cpp | 81 +++++++-------- src/http/OptionDialog.h | 2 +- src/http/OptionDialog.ui | 126 ++++++++++++----------- 6 files changed, 118 insertions(+), 147 deletions(-) diff --git a/src/http/HttpPasswordGeneratorWidget.cpp b/src/http/HttpPasswordGeneratorWidget.cpp index 30e4f71e7..031ff30ad 100644 --- a/src/http/HttpPasswordGeneratorWidget.cpp +++ b/src/http/HttpPasswordGeneratorWidget.cpp @@ -32,13 +32,10 @@ HttpPasswordGeneratorWidget::HttpPasswordGeneratorWidget(QWidget* parent) { m_ui->setupUi(this); - connect(m_ui->buttonApply, SIGNAL(clicked()), SLOT(saveSettings())); - connect(m_ui->sliderLength, SIGNAL(valueChanged(int)), SLOT(sliderMoved())); connect(m_ui->spinBoxLength, SIGNAL(valueChanged(int)), SLOT(spinBoxChanged())); connect(m_ui->optionButtons, SIGNAL(buttonClicked(int)), SLOT(updateGenerator())); - m_ui->buttonApply->setEnabled(true); loadSettings(); reset(); diff --git a/src/http/HttpPasswordGeneratorWidget.h b/src/http/HttpPasswordGeneratorWidget.h index 2b2ace39b..f8e35c232 100644 --- a/src/http/HttpPasswordGeneratorWidget.h +++ b/src/http/HttpPasswordGeneratorWidget.h @@ -35,10 +35,10 @@ public: explicit HttpPasswordGeneratorWidget(QWidget* parent = nullptr); ~HttpPasswordGeneratorWidget(); void loadSettings(); + void saveSettings(); void reset(); private Q_SLOTS: - void saveSettings(); void sliderMoved(); void spinBoxChanged(); diff --git a/src/http/HttpPasswordGeneratorWidget.ui b/src/http/HttpPasswordGeneratorWidget.ui index 29399bcd6..066b9c512 100644 --- a/src/http/HttpPasswordGeneratorWidget.ui +++ b/src/http/HttpPasswordGeneratorWidget.ui @@ -6,14 +6,26 @@ 0 0 - 434 - 250 + 500 + 181
+ + 0 + + + 0 + + + 0 + + + 0 + @@ -168,42 +180,8 @@
- - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - false - - - Accept - - - - -
- - - PasswordComboBox - QComboBox -
gui/PasswordComboBox.h
-
-
sliderLength spinBoxLength @@ -213,7 +191,6 @@ checkBoxSpecialChars checkBoxExcludeAlike checkBoxEnsureEvery - buttonApply diff --git a/src/http/OptionDialog.cpp b/src/http/OptionDialog.cpp index 5245d333b..a82e2c77e 100644 --- a/src/http/OptionDialog.cpp +++ b/src/http/OptionDialog.cpp @@ -15,15 +15,21 @@ #include "ui_OptionDialog.h" #include "HttpSettings.h" +#include "core/FilePath.h" + #include OptionDialog::OptionDialog(QWidget *parent) : QWidget(parent), - ui(new Ui::OptionDialog()) + m_ui(new Ui::OptionDialog()) { - ui->setupUi(this); - connect(ui->removeSharedEncryptionKeys, SIGNAL(clicked()), this, SIGNAL(removeSharedEncryptionKeys())); - connect(ui->removeStoredPermissions, SIGNAL(clicked()), this, SIGNAL(removeStoredPermissions())); + m_ui->setupUi(this); + connect(m_ui->removeSharedEncryptionKeys, SIGNAL(clicked()), this, SIGNAL(removeSharedEncryptionKeys())); + connect(m_ui->removeStoredPermissions, SIGNAL(clicked()), this, SIGNAL(removeStoredPermissions())); + + m_ui->warningWidget->showMessage(tr("The following options can be dangerous!\nChange them only if you know what you are doing."), MessageWidget::Warning); + m_ui->warningWidget->setIcon(FilePath::instance()->icon("status", "dialog-warning")); + m_ui->warningWidget->setCloseButtonVisible(false); } OptionDialog::~OptionDialog() @@ -33,65 +39,48 @@ OptionDialog::~OptionDialog() void OptionDialog::loadSettings() { HttpSettings settings; - ui->enableHttpServer->setChecked(settings.isEnabled()); + m_ui->enableHttpServer->setChecked(settings.isEnabled()); - ui->showNotification->setChecked(settings.showNotification()); - ui->bestMatchOnly->setChecked(settings.bestMatchOnly()); - ui->unlockDatabase->setChecked(settings.unlockDatabase()); - ui->matchUrlScheme->setChecked(settings.matchUrlScheme()); + m_ui->showNotification->setChecked(settings.showNotification()); + m_ui->bestMatchOnly->setChecked(settings.bestMatchOnly()); + m_ui->unlockDatabase->setChecked(settings.unlockDatabase()); + m_ui->matchUrlScheme->setChecked(settings.matchUrlScheme()); if (settings.sortByUsername()) - ui->sortByUsername->setChecked(true); + m_ui->sortByUsername->setChecked(true); else - ui->sortByTitle->setChecked(true); - ui->httpPort->setText(QString::number(settings.httpPort())); + m_ui->sortByTitle->setChecked(true); + m_ui->httpPort->setText(QString::number(settings.httpPort())); -/* - ui->checkBoxLower->setChecked(settings.passwordUseLowercase()); - ui->checkBoxNumbers->setChecked(settings.passwordUseNumbers()); - ui->checkBoxUpper->setChecked(settings.passwordUseUppercase()); - ui->checkBoxSpecialChars->setChecked(settings.passwordUseSpecial()); - ui->checkBoxEnsureEvery->setChecked(settings.passwordEveryGroup()); - ui->checkBoxExcludeAlike->setChecked(settings.passwordExcludeAlike()); - ui->spinBoxLength->setValue(settings.passwordLength()); -*/ + m_ui->alwaysAllowAccess->setChecked(settings.alwaysAllowAccess()); + m_ui->alwaysAllowUpdate->setChecked(settings.alwaysAllowUpdate()); + m_ui->searchInAllDatabases->setChecked(settings.searchInAllDatabases()); + m_ui->supportKphFields->setChecked(settings.supportKphFields()); - ui->alwaysAllowAccess->setChecked(settings.alwaysAllowAccess()); - ui->alwaysAllowUpdate->setChecked(settings.alwaysAllowUpdate()); - ui->searchInAllDatabases->setChecked(settings.searchInAllDatabases()); - ui->supportKphFields->setChecked(settings.supportKphFields()); + m_ui->passwordGenerator->loadSettings(); } void OptionDialog::saveSettings() { HttpSettings settings; - settings.setEnabled(ui->enableHttpServer->isChecked()); + settings.setEnabled(m_ui->enableHttpServer->isChecked()); - settings.setShowNotification(ui->showNotification->isChecked()); - settings.setBestMatchOnly(ui->bestMatchOnly->isChecked()); - settings.setUnlockDatabase(ui->unlockDatabase->isChecked()); - settings.setMatchUrlScheme(ui->matchUrlScheme->isChecked()); - settings.setSortByUsername(ui->sortByUsername->isChecked()); + settings.setShowNotification(m_ui->showNotification->isChecked()); + settings.setBestMatchOnly(m_ui->bestMatchOnly->isChecked()); + settings.setUnlockDatabase(m_ui->unlockDatabase->isChecked()); + settings.setMatchUrlScheme(m_ui->matchUrlScheme->isChecked()); + settings.setSortByUsername(m_ui->sortByUsername->isChecked()); - int port = ui->httpPort->text().toInt(); + int port = m_ui->httpPort->text().toInt(); if (port < 1024) { QMessageBox::warning(this, tr("Cannot bind to privileged ports"), tr("Cannot bind to privileged ports below 1024!\nUsing default port 19455.")); port = 19455; } settings.setHttpPort(port); + settings.setAlwaysAllowAccess(m_ui->alwaysAllowAccess->isChecked()); + settings.setAlwaysAllowUpdate(m_ui->alwaysAllowUpdate->isChecked()); + settings.setSearchInAllDatabases(m_ui->searchInAllDatabases->isChecked()); + settings.setSupportKphFields(m_ui->supportKphFields->isChecked()); -/* - settings.setPasswordUseLowercase(ui->checkBoxLower->isChecked()); - settings.setPasswordUseNumbers(ui->checkBoxNumbers->isChecked()); - settings.setPasswordUseUppercase(ui->checkBoxUpper->isChecked()); - settings.setPasswordUseSpecial(ui->checkBoxSpecialChars->isChecked()); - settings.setPasswordEveryGroup(ui->checkBoxEnsureEvery->isChecked()); - settings.setPasswordExcludeAlike(ui->checkBoxExcludeAlike->isChecked()); - settings.setPasswordLength(ui->spinBoxLength->value()); -*/ - - settings.setAlwaysAllowAccess(ui->alwaysAllowAccess->isChecked()); - settings.setAlwaysAllowUpdate(ui->alwaysAllowUpdate->isChecked()); - settings.setSearchInAllDatabases(ui->searchInAllDatabases->isChecked()); - settings.setSupportKphFields(ui->supportKphFields->isChecked()); + m_ui->passwordGenerator->saveSettings(); } diff --git a/src/http/OptionDialog.h b/src/http/OptionDialog.h index adec9f695..1b1819159 100644 --- a/src/http/OptionDialog.h +++ b/src/http/OptionDialog.h @@ -38,7 +38,7 @@ Q_SIGNALS: void removeStoredPermissions(); private: - QScopedPointer ui; + QScopedPointer m_ui; }; #endif // OPTIONDIALOG_H diff --git a/src/http/OptionDialog.ui b/src/http/OptionDialog.ui index 9bb168ee8..f3171733b 100644 --- a/src/http/OptionDialog.ui +++ b/src/http/OptionDialog.ui @@ -6,14 +6,26 @@ 0 0 - 605 - 429 + 577 + 404 Dialog + + 0 + + + 0 + + + 0 + + + 0 + @@ -37,13 +49,18 @@ This is required for accessing your databases from ChromeIPass or PassIFox Sh&ow a notification when credentials are requested + + true + + + Only returns the best matches for a specific URL instead of all entries for the whole domain. + - &Return only best matching entries for a URL instead -of all entries for the whole domain + &Return only best matching entries @@ -52,13 +69,18 @@ of all entries for the whole domain Re&quest to unlock the database if it is locked + + true +
+ + Only entries with the same scheme (http://, https://, ftp://, ...) are returned. + - &Match URL schemes -Only entries with the same scheme (http://, https://, ftp://, ...) are returned + &Match URL schemes @@ -107,7 +129,7 @@ Only entries with the same scheme (http://, https://, ftp://, ...) are returned< - Password generator + Password Generator @@ -132,20 +154,14 @@ Only entries with the same scheme (http://, https://, ftp://, ...) are returned< Advanced - + - - - - 75 - true - - - - color: rgb(255, 0, 0); - - - The following options can be dangerous. Change them only if you know what you are doing. + + + + 0 + 0 + @@ -165,35 +181,21 @@ Only entries with the same scheme (http://, https://, ftp://, ...) are returned< + + Only the selected database has to be connected with a client. + Searc&h in all opened databases for matching entries - - - - Only the selected database has to be connected with a client! - - - 30 - - - - - &Return advanced string fields which start with "KPH: " - - - - - - + Automatically creating or updating string fields is not supported. - - 30 + + &Return advanced string fields which start with "KPH: " @@ -214,25 +216,8 @@ Only entries with the same scheme (http://, https://, ftp://, ...) are returned<
- - - - - d0000 - - - Default port: 19455 - - - - - - - KeePassXC will listen to this port on 127.0.0.1 - - - - + + @@ -248,6 +233,23 @@ Only entries with the same scheme (http://, https://, ftp://, ...) are returned< + + + + d0000 + + + Default port: 19455 + + + + + + + KeePassXC will listen to this port on 127.0.0.1 + + + @@ -276,6 +278,12 @@ Only entries with the same scheme (http://, https://, ftp://, ...) are returned<
http/HttpPasswordGeneratorWidget.h
1 + + MessageWidget + QWidget +
gui/MessageWidget.h
+ 1 +
From 08e50ac72bc6e5ee6a06fdef0f505e92f382ee63 Mon Sep 17 00:00:00 2001 From: Janek Bevendorff Date: Wed, 22 Feb 2017 18:02:44 +0100 Subject: [PATCH 13/27] Use correct icons for group edit --- src/gui/group/EditGroupWidget.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/gui/group/EditGroupWidget.cpp b/src/gui/group/EditGroupWidget.cpp index 23e2108b5..ac4e4ce99 100644 --- a/src/gui/group/EditGroupWidget.cpp +++ b/src/gui/group/EditGroupWidget.cpp @@ -34,9 +34,9 @@ EditGroupWidget::EditGroupWidget(QWidget* parent) { m_mainUi->setupUi(m_editGroupWidgetMain); - addPage(tr("Group"), FilePath::instance()->icon("apps", "keepassxc"), m_editGroupWidgetMain); - addPage(tr("Icon"), FilePath::instance()->icon("apps", "keepassxc"), m_editGroupWidgetIcons); - addPage(tr("Properties"), FilePath::instance()->icon("apps", "keepassxc"), m_editWidgetProperties); + addPage(tr("Group"), FilePath::instance()->icon("actions", "document-edit"), m_editGroupWidgetMain); + addPage(tr("Icon"), FilePath::instance()->icon("apps", "preferences-desktop-icons"), m_editGroupWidgetIcons); + addPage(tr("Properties"), FilePath::instance()->icon("actions", "document-properties"), m_editWidgetProperties); connect(m_mainUi->expireCheck, SIGNAL(toggled(bool)), m_mainUi->expireDatePicker, SLOT(setEnabled(bool))); connect(m_mainUi->autoTypeSequenceCustomRadio, SIGNAL(toggled(bool)), From 852d194b39776943b3b2eb701de280a1baa1e6bc Mon Sep 17 00:00:00 2001 From: Janek Bevendorff Date: Wed, 22 Feb 2017 18:29:15 +0100 Subject: [PATCH 14/27] Adjust message widget color to look less dirty --- src/gui/KMessageWidget.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/KMessageWidget.cpp b/src/gui/KMessageWidget.cpp index f2c48c253..e2c22574c 100644 --- a/src/gui/KMessageWidget.cpp +++ b/src/gui/KMessageWidget.cpp @@ -277,7 +277,7 @@ void KMessageWidget::setMessageType(KMessageWidget::MessageType type) bg1 = palette().highlight().color(); break; case Warning: - bg1.setRgb(176, 128, 0); // values taken from kcolorscheme.cpp (Neutral) + bg1.setRgb(181, 102, 0); // values taken from kcolorscheme.cpp (Neutral) break; case Error: bg1.setRgb(191, 3, 3); // values taken from kcolorscheme.cpp (Negative) From fcadee550ef026fdc6a2c5a6fa307802f87408b4 Mon Sep 17 00:00:00 2001 From: Janek Bevendorff Date: Wed, 22 Feb 2017 18:36:30 +0100 Subject: [PATCH 15/27] Fix layout of group edit widget --- src/gui/group/EditGroupWidgetMain.ui | 223 +++++++++++++++------------ 1 file changed, 127 insertions(+), 96 deletions(-) diff --git a/src/gui/group/EditGroupWidgetMain.ui b/src/gui/group/EditGroupWidgetMain.ui index b8abf762c..0e1b08a44 100644 --- a/src/gui/group/EditGroupWidgetMain.ui +++ b/src/gui/group/EditGroupWidgetMain.ui @@ -6,116 +6,147 @@ 0 0 - 676 - 356 + 579 + 407 - - - - - QFormLayout::ExpandingFieldsGrow + + + 10 + + + 0 + + + 0 + + + 0 + + + + + Name - - - - Name + + + + + + + + + Notes + + + + + + + + 0 + 0 + + + + + 16777215 + 120 + + + + + + + + Expires + + + + + + + + + + false + + + true + + + + + + + Search + + + + + + + + + + Auto-Type + + + + + + + &Use default auto-type sequence of parent group + + + + + + + Set default Auto-Type se&quence + + + + + + + + + Qt::Horizontal - - - - - - - - - Notes + + QSizePolicy::Fixed - - - - - - - - - Expires + + + 13 + 1 + - + - - + + false - - true - - - - - Search - - - - - - - - - - Auto-type - - - - - - - - - - Use default auto-type sequence of parent group - - - - - - - Set default auto-type sequence - - - - - - - - - Qt::Horizontal - - - QSizePolicy::Fixed - - - - 20 - 1 - - - - - - - - false - - - - - + + + + Qt::Vertical + + + + 20 + 40 + + + + From 79ab7a1062d93f1cb7d454d50cd48692fe330d82 Mon Sep 17 00:00:00 2001 From: Janek Bevendorff Date: Wed, 22 Feb 2017 19:10:13 +0100 Subject: [PATCH 16/27] Use better default row width for history view and enable alternating row colors --- src/gui/entry/EditEntryWidgetHistory.ui | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/gui/entry/EditEntryWidgetHistory.ui b/src/gui/entry/EditEntryWidgetHistory.ui index 2ee8e08f3..8390f22fa 100644 --- a/src/gui/entry/EditEntryWidgetHistory.ui +++ b/src/gui/entry/EditEntryWidgetHistory.ui @@ -25,9 +25,15 @@ + + true + true + + 160 + From a58700c78f099a889c63b635b071f517bdf65e87 Mon Sep 17 00:00:00 2001 From: Janek Bevendorff Date: Wed, 22 Feb 2017 23:23:14 +0100 Subject: [PATCH 17/27] Fix selection background on Windows --- src/gui/CategoryListWidget.cpp | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/src/gui/CategoryListWidget.cpp b/src/gui/CategoryListWidget.cpp index ddafd6949..c93ac46e7 100644 --- a/src/gui/CategoryListWidget.cpp +++ b/src/gui/CategoryListWidget.cpp @@ -159,6 +159,33 @@ CategoryListWidgetDelegate::CategoryListWidgetDelegate(QListWidget* parent) } } +#ifdef Q_OS_WIN +#include +class WindowsCorrectedStyle : public QProxyStyle +{ +public: + void drawPrimitive(PrimitiveElement element, const QStyleOption* option, QPainter* painter, const QWidget* widget) const override + { + painter->save(); + + if (PE_PanelItemViewItem == element) { + // Qt on Windows draws selection backgrounds only for the actual text/icon + // bounding box, not over the full width of a list item. + // We therefore need to translate and stretch the painter before we can + // tell Qt to draw its native styles. + // Since we are scaling horizontally, we also need to move the right and left + // edge pixels outside the drawing area to avoid thick border lines. + QRect itemRect = subElementRect(QStyle::SE_ItemViewItemFocusRect, option, widget).adjusted(1, 0, 1, 0); + painter->scale(static_cast(option->rect.width()) / itemRect.width(), 1.0); + painter->translate(option->rect.left() - itemRect.left() + 1, 0); + } + QProxyStyle::drawPrimitive(element, option, painter, widget); + + painter->restore(); + } +}; +#endif + void CategoryListWidgetDelegate::paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const { QStyleOptionViewItem opt = option; @@ -172,7 +199,12 @@ void CategoryListWidgetDelegate::paint(QPainter* painter, const QStyleOptionView opt.decorationAlignment = Qt::AlignHCenter | Qt::AlignVCenter; opt.decorationPosition = QStyleOptionViewItem::Top; +#ifdef Q_OS_WIN + QScopedPointer style(new WindowsCorrectedStyle()); +#else QStyle* style = opt.widget ? opt.widget->style() : QApplication::style(); +#endif + style->drawControl(QStyle::CE_ItemViewItem, &opt, painter, opt.widget); QRect fontRect = painter->fontMetrics().boundingRect( From 1d79d342c0af7436255d56e845def02ec8854ba0 Mon Sep 17 00:00:00 2001 From: Janek Bevendorff Date: Thu, 23 Feb 2017 00:45:57 +0100 Subject: [PATCH 18/27] Rework About dialog --- src/gui/AboutDialog.cpp | 50 +++++++--- src/gui/AboutDialog.h | 3 + src/gui/AboutDialog.ui | 198 ++++++++++++++++++++++++++-------------- 3 files changed, 169 insertions(+), 82 deletions(-) diff --git a/src/gui/AboutDialog.cpp b/src/gui/AboutDialog.cpp index a4f180b05..1f4cda9a5 100644 --- a/src/gui/AboutDialog.cpp +++ b/src/gui/AboutDialog.cpp @@ -23,15 +23,17 @@ #include "core/FilePath.h" #include "crypto/Crypto.h" +#include +#include + AboutDialog::AboutDialog(QWidget* parent) - : QDialog(parent) - , m_ui(new Ui::AboutDialog()) + : QDialog(parent), + m_ui(new Ui::AboutDialog()) { m_ui->setupUi(this); m_ui->nameLabel->setText(m_ui->nameLabel->text() + " " + KEEPASSX_VERSION); QFont nameLabelFont = m_ui->nameLabel->font(); - nameLabelFont.setBold(true); nameLabelFont.setPointSize(nameLabelFont.pointSize() + 4); m_ui->nameLabel->setFont(nameLabelFont); @@ -45,37 +47,55 @@ AboutDialog::AboutDialog(QWidget* parent) commitHash = DIST_HASH; } + QString debugInfo = "KeePassXC - "; + debugInfo.append(tr("Version %1\n").arg(KEEPASSX_VERSION)); if (!commitHash.isEmpty()) { - QString labelText = tr("Revision").append(": ").append(commitHash); - m_ui->label_git->setText(labelText); + debugInfo.append(tr("Revision: %1").arg(commitHash).append("\n\n")); } - QString libs = QString("%1\n- Qt %2\n- %3") - .arg(m_ui->label_libs->text()) - .arg(QString::fromLocal8Bit(qVersion())) - .arg(Crypto::backendVersion()); - m_ui->label_libs->setText(libs); + debugInfo.append(QString("%1\n- Qt %2\n- %3\n\n") + .arg(tr("Libraries:")) + .arg(QString::fromLocal8Bit(qVersion())) + .arg(Crypto::backendVersion())); + + debugInfo.append(tr("Operating system: %1 (version: %2)\nCPU architecture: %3\nKernel: %4 %5") + .arg(QSysInfo::prettyProductName()) + .arg(QSysInfo::productVersion()) + .arg(QSysInfo::currentCpuArchitecture()) + .arg(QSysInfo::kernelType()) + .arg(QSysInfo::kernelVersion())); + + debugInfo.append("\n\n"); QString extensions; #ifdef WITH_XC_HTTP - extensions += "- KeePassHTTP\n"; + extensions += "\n- KeePassHTTP"; #endif #ifdef WITH_XC_AUTOTYPE - extensions += "- Autotype\n"; + extensions += "\n- Auto-Type"; #endif #ifdef WITH_XC_YUBIKEY - extensions += "- Yubikey\n"; + extensions += "\n- YubiKey"; #endif if (extensions.isEmpty()) - extensions = "None"; + extensions = " None"; - m_ui->label_features->setText(m_ui->label_features->text() + extensions); + debugInfo.append(tr("Enabled extensions:").append(extensions)); + + m_ui->debugInfo->setPlainText(debugInfo); setAttribute(Qt::WA_DeleteOnClose); connect(m_ui->buttonBox, SIGNAL(rejected()), SLOT(close())); + connect(m_ui->copyToClipboard, SIGNAL(clicked()), SLOT(copyToClipboard())); } AboutDialog::~AboutDialog() { } + +void AboutDialog::copyToClipboard() +{ + QClipboard* clipboard = QApplication::clipboard(); + clipboard->setText(m_ui->debugInfo->toPlainText()); +} diff --git a/src/gui/AboutDialog.h b/src/gui/AboutDialog.h index 08db6c887..b69a14dbb 100644 --- a/src/gui/AboutDialog.h +++ b/src/gui/AboutDialog.h @@ -33,6 +33,9 @@ public: explicit AboutDialog(QWidget* parent = nullptr); ~AboutDialog(); +protected slots: + void copyToClipboard(); + private: QScopedPointer m_ui; }; diff --git a/src/gui/AboutDialog.ui b/src/gui/AboutDialog.ui index 28f4dd0c4..baabb52e3 100644 --- a/src/gui/AboutDialog.ui +++ b/src/gui/AboutDialog.ui @@ -6,20 +6,23 @@ 0 0 - 455 - 266 + 479 + 488 About KeePassXC - - - QLayout::SetFixedSize - + - + + 15 + + + 20 + + @@ -27,9 +30,21 @@ 0 + + + 48 + 48 + + + + + 48 + 48 + + - + @@ -37,6 +52,12 @@ 0 + + + 75 + true + + KeePassXC @@ -45,66 +66,109 @@ - - - - 0 - 0 - - - - <a href="https://keepassxc.org/">https://keepassxc.org/</a> - - - true - - - - - - - - 0 - 0 - - - - KeePassXC is distributed under the terms of the GNU General Public License (GPL) version 2 or (at your option) version 3. - - - true - - - - - - - - - - Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse - - - - - - - Using: - - - Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse - - - - - - - Extensions: - - - - Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse + + + 0 + + + About + + + + + + <html><head/><body><p>Website: <a href="https://keepassxc.org/"><span style=" text-decoration: underline; color:#007af4;">https://keepassxc.org/</span></a></p></body> +Report bugs at: <a href="https://github.com/keepassxreboot/keepassxc/issues">https://github.com/</a></html> + + + true + + + + + + + KeePassXC is distributed under the terms of the GNU General Public License (GPL) version 2 or (at your option) version 3. + + + true + + + + + + + Qt::Vertical + + + QSizePolicy::Fixed + + + + 0 + 10 + + + + + + + + <html><head/><body><div>Main contributors: +<ul> +<li>debfx (KeePassX)</li> +<li>droidmonkey</li> +<li>louib</li> +<li>phoerious<li> +<li>thezero</li> +</div></body></html> + + + + + + + Qt::Vertical + + + + 0 + 0 + + + + + + + + + Debug Info + + + + + + Include the following information whenever you report a bug: + + + + + + + true + + + + + + + Copy to clipboard + + + + + From 1cef08e92b43dcbc2b1726ba7e033fadebb992d0 Mon Sep 17 00:00:00 2001 From: Janek Bevendorff Date: Thu, 23 Feb 2017 01:08:26 +0100 Subject: [PATCH 19/27] Only query operating system stats on Qt >= 5.4 --- src/gui/AboutDialog.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/gui/AboutDialog.cpp b/src/gui/AboutDialog.cpp index 1f4cda9a5..5c459c8d4 100644 --- a/src/gui/AboutDialog.cpp +++ b/src/gui/AboutDialog.cpp @@ -58,6 +58,7 @@ AboutDialog::AboutDialog(QWidget* parent) .arg(QString::fromLocal8Bit(qVersion())) .arg(Crypto::backendVersion())); +#if QT_VERSION >= QT_VERSION_CHECK(5, 4, 0) debugInfo.append(tr("Operating system: %1 (version: %2)\nCPU architecture: %3\nKernel: %4 %5") .arg(QSysInfo::prettyProductName()) .arg(QSysInfo::productVersion()) @@ -66,6 +67,7 @@ AboutDialog::AboutDialog(QWidget* parent) .arg(QSysInfo::kernelVersion())); debugInfo.append("\n\n"); +#endif QString extensions; #ifdef WITH_XC_HTTP From 8a75acb985481a78a316976ae0077cfeffc58479 Mon Sep 17 00:00:00 2001 From: Janek Bevendorff Date: Thu, 23 Feb 2017 01:16:56 +0100 Subject: [PATCH 20/27] Remove productVersion() which is included in prettyProductName() --- src/gui/AboutDialog.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/gui/AboutDialog.cpp b/src/gui/AboutDialog.cpp index 5c459c8d4..ebb18d2a8 100644 --- a/src/gui/AboutDialog.cpp +++ b/src/gui/AboutDialog.cpp @@ -59,9 +59,8 @@ AboutDialog::AboutDialog(QWidget* parent) .arg(Crypto::backendVersion())); #if QT_VERSION >= QT_VERSION_CHECK(5, 4, 0) - debugInfo.append(tr("Operating system: %1 (version: %2)\nCPU architecture: %3\nKernel: %4 %5") + debugInfo.append(tr("Operating system: %1\nCPU architecture: %2\nKernel: %3 %4") .arg(QSysInfo::prettyProductName()) - .arg(QSysInfo::productVersion()) .arg(QSysInfo::currentCpuArchitecture()) .arg(QSysInfo::kernelType()) .arg(QSysInfo::kernelVersion())); From 0f8c12aaf4108263ae91947983dcc750d1de6620 Mon Sep 17 00:00:00 2001 From: Janek Bevendorff Date: Thu, 23 Feb 2017 01:58:29 +0100 Subject: [PATCH 21/27] Fix Qt Designer HTML lapses --- src/gui/AboutDialog.ui | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/gui/AboutDialog.ui b/src/gui/AboutDialog.ui index baabb52e3..4eb9ee56b 100644 --- a/src/gui/AboutDialog.ui +++ b/src/gui/AboutDialog.ui @@ -78,8 +78,8 @@ - <html><head/><body><p>Website: <a href="https://keepassxc.org/"><span style=" text-decoration: underline; color:#007af4;">https://keepassxc.org/</span></a></p></body> -Report bugs at: <a href="https://github.com/keepassxreboot/keepassxc/issues">https://github.com/</a></html> + <p>Website: <a href="https://keepassxc.org/">https://keepassxc.org/</a></p> +<p>Report bugs at: <a href="https://github.com/keepassxreboot/keepassxc/issues">https://github.com/</a></p> true @@ -115,14 +115,15 @@ Report bugs at: <a href="https://github.com/keepassxreboot/keepassxc/iss - <html><head/><body><div>Main contributors: + <div>Main contributors: <ul> <li>debfx (KeePassX)</li> <li>droidmonkey</li> <li>louib</li> <li>phoerious<li> <li>thezero</li> -</div></body></html> +</ul> +</div> From 5e664e3a06cf99ce7180abe5655fecd40f6cdcba Mon Sep 17 00:00:00 2001 From: Janek Bevendorff Date: Thu, 23 Feb 2017 02:11:48 +0100 Subject: [PATCH 22/27] Use consistent terminology --- src/gui/group/EditGroupWidgetMain.ui | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/group/EditGroupWidgetMain.ui b/src/gui/group/EditGroupWidgetMain.ui index 0e1b08a44..20ce2f414 100644 --- a/src/gui/group/EditGroupWidgetMain.ui +++ b/src/gui/group/EditGroupWidgetMain.ui @@ -96,7 +96,7 @@ - &Use default auto-type sequence of parent group + &Use default Auto-Type sequence of parent group From 492e32062878ad1ab05e049b7e952f42487d3f39 Mon Sep 17 00:00:00 2001 From: Janek Bevendorff Date: Fri, 24 Feb 2017 16:22:40 +0100 Subject: [PATCH 23/27] Shorten KeePassHTTP checkbox description and only enable settings when it's checked --- src/http/OptionDialog.cpp | 3 +++ src/http/OptionDialog.ui | 6 ++++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/http/OptionDialog.cpp b/src/http/OptionDialog.cpp index a82e2c77e..fd30f8745 100644 --- a/src/http/OptionDialog.cpp +++ b/src/http/OptionDialog.cpp @@ -30,6 +30,9 @@ OptionDialog::OptionDialog(QWidget *parent) : m_ui->warningWidget->showMessage(tr("The following options can be dangerous!\nChange them only if you know what you are doing."), MessageWidget::Warning); m_ui->warningWidget->setIcon(FilePath::instance()->icon("status", "dialog-warning")); m_ui->warningWidget->setCloseButtonVisible(false); + + m_ui->tabWidget->setEnabled(m_ui->enableHttpServer->isChecked()); + connect(m_ui->enableHttpServer, SIGNAL(toggled(bool)), m_ui->tabWidget, SLOT(setEnabled(bool))); } OptionDialog::~OptionDialog() diff --git a/src/http/OptionDialog.ui b/src/http/OptionDialog.ui index f3171733b..e78199c00 100644 --- a/src/http/OptionDialog.ui +++ b/src/http/OptionDialog.ui @@ -28,9 +28,11 @@ + + This is required for accessing your databases from ChromeIPass or PassIFox + - Enable KeepassXC HTTP protocol -This is required for accessing your databases from ChromeIPass or PassIFox + Enable KeePassHTTP server From ed085776c7cad991cc0446c9c7d3231770df374f Mon Sep 17 00:00:00 2001 From: Janek Bevendorff Date: Fri, 24 Feb 2017 16:27:21 +0100 Subject: [PATCH 24/27] Make HTTP port input field smaller --- src/http/OptionDialog.ui | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/http/OptionDialog.ui b/src/http/OptionDialog.ui index e78199c00..abe994772 100644 --- a/src/http/OptionDialog.ui +++ b/src/http/OptionDialog.ui @@ -237,6 +237,12 @@ + + + 0 + 0 + + d0000 From f25ad83a02bd0d22bff605ac18c16d194672ed17 Mon Sep 17 00:00:00 2001 From: Jonathan White Date: Fri, 24 Feb 2017 16:59:16 -0500 Subject: [PATCH 25/27] Removed header from autotype window listview; replaced with groupbox --- src/gui/entry/EditEntryWidgetAutoType.ui | 338 ++++++++++++----------- 1 file changed, 177 insertions(+), 161 deletions(-) diff --git a/src/gui/entry/EditEntryWidgetAutoType.ui b/src/gui/entry/EditEntryWidgetAutoType.ui index c1f243680..21e102bfe 100644 --- a/src/gui/entry/EditEntryWidgetAutoType.ui +++ b/src/gui/entry/EditEntryWidgetAutoType.ui @@ -88,167 +88,183 @@ - - - - - - - false - - - true - - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - false - - - - 0 - 0 - - - - - 0 - 25 - - - - + - - - - - - - false - - - - 0 - 0 - - - - - 0 - 25 - - - - - - - - - - - - - - - - - - Window title: - - - - - - - - - - Qt::Vertical - - - QSizePolicy::Fixed - - - - 1 - 10 - - - - - - - - Use default se&quence - - - - - - - Set custo&m sequence: - - - - - - - - - Qt::Horizontal - - - QSizePolicy::Fixed - - - - 20 - 1 - - - - - - - - false - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - + + + Window Associations + + + + + + + + false + + + true + + + false + + + false + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + false + + + + 0 + 0 + + + + + 0 + 25 + + + + + + + + + + + + false + + + + 0 + 0 + + + + + 0 + 25 + + + + - + + + + + + + + + + + + + Window title: + + + + + + + + + + Qt::Vertical + + + QSizePolicy::Fixed + + + + 1 + 10 + + + + + + + + Use default se&quence + + + + + + + Set custo&m sequence: + + + + + + + + + Qt::Horizontal + + + QSizePolicy::Fixed + + + + 20 + 1 + + + + + + + + false + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + + + + +
From 204bf81dd1111fc1c89b7bb60b6838a00a00a4b3 Mon Sep 17 00:00:00 2001 From: Janek Bevendorff Date: Sat, 25 Feb 2017 00:27:51 +0100 Subject: [PATCH 26/27] Resize About dialog to minimum size, even out layout spacings and open it as a dialog --- src/gui/AboutDialog.cpp | 3 ++ src/gui/AboutDialog.ui | 65 ++++++++++++++++++++++++++++++++++++----- src/gui/MainWindow.cpp | 2 +- 3 files changed, 62 insertions(+), 8 deletions(-) diff --git a/src/gui/AboutDialog.cpp b/src/gui/AboutDialog.cpp index ebb18d2a8..cbafb745b 100644 --- a/src/gui/AboutDialog.cpp +++ b/src/gui/AboutDialog.cpp @@ -32,6 +32,9 @@ AboutDialog::AboutDialog(QWidget* parent) { m_ui->setupUi(this); + resize(minimumSize()); + setWindowFlags(Qt::Sheet); + m_ui->nameLabel->setText(m_ui->nameLabel->text() + " " + KEEPASSX_VERSION); QFont nameLabelFont = m_ui->nameLabel->font(); nameLabelFont.setPointSize(nameLabelFont.pointSize() + 4); diff --git a/src/gui/AboutDialog.ui b/src/gui/AboutDialog.ui index 4eb9ee56b..e1e706808 100644 --- a/src/gui/AboutDialog.ui +++ b/src/gui/AboutDialog.ui @@ -7,7 +7,7 @@ 0 0 479 - 488 + 478 @@ -77,17 +77,51 @@ + + + 0 + 0 + + - <p>Website: <a href="https://keepassxc.org/">https://keepassxc.org/</a></p> -<p>Report bugs at: <a href="https://github.com/keepassxreboot/keepassxc/issues">https://github.com/</a></p> + <p>Website: <a href="https://keepassxc.org/">https://keepassxc.org/</a></p> true + + + + <p>Report bugs at: <a href="https://github.com/keepassxreboot/keepassxc/issues">https://github.com/</a></p> + + + + + + + Qt::Vertical + + + QSizePolicy::Fixed + + + + 20 + 5 + + + + + + + 0 + 0 + + KeePassXC is distributed under the terms of the GNU General Public License (GPL) version 2 or (at your option) version 3. @@ -107,23 +141,28 @@ 0 - 10 + 5 + + + 0 + 0 + + - <div>Main contributors: + <p>Main contributors:</p> <ul> <li>debfx (KeePassX)</li> <li>droidmonkey</li> <li>louib</li> <li>phoerious<li> <li>thezero</li> -</ul> -</div> +</ul> @@ -149,6 +188,12 @@ + + + 0 + 0 + + Include the following information whenever you report a bug: @@ -156,6 +201,12 @@ + + + 0 + 0 + + true diff --git a/src/gui/MainWindow.cpp b/src/gui/MainWindow.cpp index cf6ae0401..36e66c127 100644 --- a/src/gui/MainWindow.cpp +++ b/src/gui/MainWindow.cpp @@ -523,7 +523,7 @@ void MainWindow::updateWindowTitle() void MainWindow::showAboutDialog() { AboutDialog* aboutDialog = new AboutDialog(this); - aboutDialog->show(); + aboutDialog->open(); } void MainWindow::switchToDatabases() From c248944dc13fbcf0e260324abfc1e8d75d16cb63 Mon Sep 17 00:00:00 2001 From: Janek Bevendorff Date: Sat, 25 Feb 2017 00:52:51 +0100 Subject: [PATCH 27/27] Remove window title bar context help button --- src/gui/AboutDialog.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/gui/AboutDialog.cpp b/src/gui/AboutDialog.cpp index cbafb745b..636b284f9 100644 --- a/src/gui/AboutDialog.cpp +++ b/src/gui/AboutDialog.cpp @@ -34,6 +34,7 @@ AboutDialog::AboutDialog(QWidget* parent) resize(minimumSize()); setWindowFlags(Qt::Sheet); + setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint); m_ui->nameLabel->setText(m_ui->nameLabel->text() + " " + KEEPASSX_VERSION); QFont nameLabelFont = m_ui->nameLabel->font();