Page MenuHome GnuPG

No OneTemporary

diff --git a/src/conf/groupsconfigdialog.cpp b/src/conf/groupsconfigdialog.cpp
index cae15fe78..22e8b0bf3 100644
--- a/src/conf/groupsconfigdialog.cpp
+++ b/src/conf/groupsconfigdialog.cpp
@@ -1,113 +1,111 @@
/*
conf/groupsconfigdialog.h
This file is part of Kleopatra, the KDE keymanager
SPDX-FileCopyrightText: 2021 g10 Code GmbH
SPDX-FileContributor: Ingo Klöcker <dev@ingo-kloecker.de>
SPDX-License-Identifier: GPL-2.0-or-later
*/
#include <config-kleopatra.h>
#include "groupsconfigdialog.h"
#include "groupsconfigpage.h"
#include <KConfigGroup>
#include <KGuiItem>
#include <KLocalizedString>
#include <KSharedConfig>
#include <KStandardGuiItem>
#include <QDialogButtonBox>
#include <QPushButton>
class GroupsConfigDialog::Private
{
friend class ::GroupsConfigDialog;
GroupsConfigDialog *const q;
GroupsConfigPage *configPage = nullptr;
- bool changed = false;
public:
Private(GroupsConfigDialog *qq)
: q(qq)
, configPage(new GroupsConfigPage(qq))
{
restoreLayout();
}
~Private()
{
saveLayout();
}
private:
void saveLayout()
{
KConfigGroup configGroup(KSharedConfig::openStateConfig(), "GroupsConfigDialog");
configGroup.writeEntry("Size", q->size());
configGroup.sync();
}
void restoreLayout(const QSize &defaultSize = QSize())
{
const KConfigGroup configGroup(KSharedConfig::openStateConfig(), "GroupsConfigDialog");
const QSize size = configGroup.readEntry("Size", defaultSize);
if (size.isValid()) {
q->resize(size);
}
}
};
GroupsConfigDialog::GroupsConfigDialog(QWidget *parent)
: KConfigDialog(parent, GroupsConfigDialog::dialogName(), /*config=*/ nullptr)
, d(new Private(this))
{
setWindowTitle(i18nc("@title:window", "Configure Groups"));
setFaceType(KPageDialog::Plain);
addPage(d->configPage, i18n("Groups"), /*pixmapName=*/ QString(), /*header=*/ QString(), /*manage=*/ false);
// there are no defaults to restore
buttonBox()->removeButton(buttonBox()->button(QDialogButtonBox::RestoreDefaults));
QPushButton *resetButton = buttonBox()->addButton(QDialogButtonBox::Reset);
KGuiItem::assign(resetButton, KStandardGuiItem::reset());
resetButton->setEnabled(false);
connect(buttonBox()->button(QDialogButtonBox::Reset), &QAbstractButton::clicked,
this, &GroupsConfigDialog::updateWidgets);
connect(d->configPage, &GroupsConfigPage::changed, this, [this] (bool state) {
- d->changed = state;
updateButtons();
if (QPushButton *button = buttonBox()->button(QDialogButtonBox::Reset)) {
- button->setEnabled(d->changed);
+ button->setEnabled(d->configPage->hasChanged());
}
});
}
GroupsConfigDialog::~GroupsConfigDialog() = default;
QString GroupsConfigDialog::dialogName()
{
return QStringLiteral("Group Settings");
}
void GroupsConfigDialog::updateSettings()
{
d->configPage->save();
}
void GroupsConfigDialog::updateWidgets()
{
d->configPage->load();
}
bool GroupsConfigDialog::hasChanged()
{
- return d->changed;
+ return d->configPage->hasChanged();
}
diff --git a/src/conf/groupsconfigpage.cpp b/src/conf/groupsconfigpage.cpp
index af99da3b6..f92decad2 100644
--- a/src/conf/groupsconfigpage.cpp
+++ b/src/conf/groupsconfigpage.cpp
@@ -1,76 +1,90 @@
/*
conf/groupsconfigpage.cpp
This file is part of Kleopatra, the KDE keymanager
SPDX-FileCopyrightText: 2021 g10 Code GmbH
SPDX-FileContributor: Ingo Klöcker <dev@ingo-kloecker.de>
SPDX-License-Identifier: GPL-2.0-or-later
*/
#include <config-kleopatra.h>
#include "groupsconfigpage.h"
#include "groupsconfigwidget.h"
#include <Libkleo/Debug>
#include <Libkleo/KeyCache>
#include <Libkleo/KeyGroup>
#include <QVBoxLayout>
#include "kleopatra_debug.h"
using namespace Kleo;
class GroupsConfigPage::Private
{
friend class ::GroupsConfigPage;
GroupsConfigPage *const q;
Private(GroupsConfigPage *qq);
public:
~Private() = default;
+ void setChanged(bool changed);
+
private:
GroupsConfigWidget *widget = nullptr;
+ bool changed = false;
};
GroupsConfigPage::Private::Private(GroupsConfigPage *qq)
: q(qq)
{
}
+void GroupsConfigPage::Private::setChanged(bool state)
+{
+ changed = state;
+ Q_EMIT q->changed(changed);
+}
+
GroupsConfigPage::GroupsConfigPage(QWidget *parent)
: QWidget(parent)
, d(new Private(this))
{
auto layout = new QVBoxLayout(this);
layout->setContentsMargins(0, 0, 0, 0);
d->widget = new Kleo::GroupsConfigWidget(this);
if (QLayout *l = d->widget->layout()) {
l->setContentsMargins(0, 0, 0, 0);
}
layout->addWidget(d->widget);
- connect(d->widget, &GroupsConfigWidget::changed, this, [this] () { Q_EMIT changed(true); });
+ connect(d->widget, &GroupsConfigWidget::changed, this, [this] () { d->setChanged(true); });
}
GroupsConfigPage::~GroupsConfigPage() = default;
+bool GroupsConfigPage::hasChanged() const
+{
+ return d->changed;
+}
+
void GroupsConfigPage::load()
{
d->widget->setGroups(KeyCache::instance()->configurableGroups());
- Q_EMIT changed(false);
+ d->setChanged(false);
}
void GroupsConfigPage::save()
{
KeyCache::mutableInstance()->saveConfigurableGroups(d->widget->groups());
// reload after saving to ensure that the groups reflect the saved groups (e.g. in case of immutable entries)
load();
}
diff --git a/src/conf/groupsconfigpage.h b/src/conf/groupsconfigpage.h
index 26bd29e0c..4ebefd491 100644
--- a/src/conf/groupsconfigpage.h
+++ b/src/conf/groupsconfigpage.h
@@ -1,35 +1,37 @@
/*
conf/groupsconfigpage.h
This file is part of Kleopatra, the KDE keymanager
SPDX-FileCopyrightText: 2021 g10 Code GmbH
SPDX-FileContributor: Ingo Klöcker <dev@ingo-kloecker.de>
SPDX-License-Identifier: GPL-2.0-or-later
*/
#pragma once
#include <QWidget>
#include <memory>
class GroupsConfigPage : public QWidget
{
Q_OBJECT
public:
explicit GroupsConfigPage(QWidget *parent = nullptr);
~GroupsConfigPage() override;
+ bool hasChanged() const;
+
public Q_SLOTS:
void load();
void save();
Q_SIGNALS:
void changed(bool state);
private:
class Private;
const std::unique_ptr<Private> d;
};

File Metadata

Mime Type
text/x-diff
Expires
Sun, Jan 18, 10:56 PM (4 h, 39 m)
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
20/be/1c605b5f8a07b705d9014cfb5890

Event Timeline