diff --git a/src/core/Database.cpp b/src/core/Database.cpp index 14adc642..cd7883b9 100644 --- a/src/core/Database.cpp +++ b/src/core/Database.cpp @@ -37,7 +37,7 @@ Database::Database() { m_data.cipher = KeePass2::CIPHER_AES; m_data.compressionAlgo = CompressionGZip; - m_data.transformRounds = 50000; + m_data.transformRounds = 100000; m_data.hasKey = false; setRootGroup(new Group()); diff --git a/src/core/Group.cpp b/src/core/Group.cpp index ada9e972..4c04b484 100644 --- a/src/core/Group.cpp +++ b/src/core/Group.cpp @@ -616,7 +616,17 @@ QList Group::search(const QString& searchTerm, Qt::CaseSensitivity caseS bool resolveInherit) { QList searchResult; - if (includeInSearch(resolveInherit)) { + bool search; + if (resolveInherit) { + search = resolveSearchingEnabled(); + } + else if (searchingEnabled() == Disable) { + search = false; + } + else { + search = true; + } + if (search) { Q_FOREACH (Entry* entry, m_entries) { if (entry->match(searchTerm, caseSensitivity)) { searchResult.append(entry); @@ -629,7 +639,7 @@ QList Group::search(const QString& searchTerm, Qt::CaseSensitivity caseS return searchResult; } -bool Group::includeInSearch(bool resolveInherit) +bool Group::resolveSearchingEnabled() const { switch (m_data.searchingEnabled) { case Inherit: @@ -637,12 +647,27 @@ bool Group::includeInSearch(bool resolveInherit) return true; } else { - if (resolveInherit) { - return m_parent->includeInSearch(true); - } - else { - return true; - } + return m_parent->resolveSearchingEnabled(); + } + case Enable: + return true; + case Disable: + return false; + default: + Q_ASSERT(false); + return false; + } +} + +bool Group::resolveAutoTypeEnabled() const +{ + switch (m_data.autoTypeEnabled) { + case Inherit: + if (!m_parent) { + return true; + } + else { + return m_parent->resolveAutoTypeEnabled(); } case Enable: return true; diff --git a/src/core/Group.h b/src/core/Group.h index 558bebcc..4e08f5b3 100644 --- a/src/core/Group.h +++ b/src/core/Group.h @@ -65,6 +65,8 @@ public: QString defaultAutoTypeSequence() const; Group::TriState autoTypeEnabled() const; Group::TriState searchingEnabled() const; + bool resolveSearchingEnabled() const; + bool resolveAutoTypeEnabled() const; Entry* lastTopVisibleEntry() const; bool isExpired() const; @@ -147,7 +149,6 @@ private: void cleanupParent(); void recCreateDelObjects(); void updateTimeinfo(); - bool includeInSearch(bool resolveInherit); QPointer m_db; Uuid m_uuid; diff --git a/src/gui/group/EditGroupWidget.cpp b/src/gui/group/EditGroupWidget.cpp index c24afb98..b26fe4c9 100644 --- a/src/gui/group/EditGroupWidget.cpp +++ b/src/gui/group/EditGroupWidget.cpp @@ -37,9 +37,6 @@ EditGroupWidget::EditGroupWidget(QWidget* parent) add(tr("Icon"), m_editGroupWidgetIcons); add(tr("Properties"), m_editWidgetProperties); - addTriStateItems(m_mainUi->searchComboBox); - addTriStateItems(m_mainUi->autotypeComboBox); - connect(m_mainUi->expireCheck, SIGNAL(toggled(bool)), m_mainUi->expireDatePicker, SLOT(setEnabled(bool))); connect(this, SIGNAL(accepted()), SLOT(save())); @@ -62,6 +59,15 @@ void EditGroupWidget::loadGroup(Group* group, bool create, Database* database) setHeadline(tr("Edit group")); } + if (m_group->parentGroup()) { + addTriStateItems(m_mainUi->searchComboBox, m_group->parentGroup()->resolveSearchingEnabled()); + addTriStateItems(m_mainUi->autotypeComboBox, m_group->parentGroup()->resolveAutoTypeEnabled()); + } + else { + addTriStateItems(m_mainUi->searchComboBox, true); + addTriStateItems(m_mainUi->autotypeComboBox, true); + } + m_mainUi->editName->setText(m_group->name()); m_mainUi->editNotes->setPlainText(m_group->notes()); m_mainUi->expireCheck->setChecked(group->timeInfo().expires()); @@ -120,9 +126,18 @@ void EditGroupWidget::cancel() Q_EMIT editFinished(false); } -void EditGroupWidget::addTriStateItems(QComboBox* comboBox) +void EditGroupWidget::addTriStateItems(QComboBox* comboBox, bool inheritDefault) { - comboBox->addItem(tr("Inherit")); + QString inheritDefaultString; + if (inheritDefault) { + inheritDefaultString = tr("Enable"); + } + else { + inheritDefaultString = tr("Disable"); + } + + comboBox->clear(); + comboBox->addItem(tr("Inherit from parent group (%1)").arg(inheritDefaultString)); comboBox->addItem(tr("Enable")); comboBox->addItem(tr("Disable")); } diff --git a/src/gui/group/EditGroupWidget.h b/src/gui/group/EditGroupWidget.h index de075be8..971b6de2 100644 --- a/src/gui/group/EditGroupWidget.h +++ b/src/gui/group/EditGroupWidget.h @@ -50,7 +50,7 @@ private Q_SLOTS: void cancel(); private: - void addTriStateItems(QComboBox* comboBox); + void addTriStateItems(QComboBox* comboBox, bool inheritValue); int indexFromTriState(Group::TriState triState); Group::TriState triStateFromIndex(int index); diff --git a/src/gui/group/EditGroupWidgetMain.ui b/src/gui/group/EditGroupWidgetMain.ui index c528c18a..fdbf054d 100644 --- a/src/gui/group/EditGroupWidgetMain.ui +++ b/src/gui/group/EditGroupWidgetMain.ui @@ -66,7 +66,7 @@ - Autotype + Auto-type