Mailcommon

filteractionmissingidentitydialog.cpp
1 /*
2  SPDX-FileCopyrightText: 2016-2023 Laurent Montel <[email protected]>
3 
4  SPDX-License-Identifier: LGPL-2.0-or-later
5 */
6 
7 #include "filteractionmissingidentitydialog.h"
8 #include "kernel/mailkernel.h"
9 
10 #include <KConfigGroup>
11 #include <KLocalizedString>
12 #include <KSharedConfig>
13 
14 #include <KWindowConfig>
15 #include <QDialogButtonBox>
16 #include <QLabel>
17 #include <QPushButton>
18 #include <QVBoxLayout>
19 #include <QWindow>
20 
21 #include <KIdentityManagementWidgets/IdentityCombo>
22 
23 using namespace MailCommon;
24 namespace
25 {
26 static const char myFilterActionMissingIdentityDialogConfigGroupName[] = "FilterActionMissingIdentityDialog";
27 }
28 FilterActionMissingIdentityDialog::FilterActionMissingIdentityDialog(const QString &filtername, QWidget *parent)
29  : QDialog(parent)
30 {
31  setModal(true);
32  setWindowTitle(i18nc("@title:window", "Select Identity"));
33  auto mainLayout = new QVBoxLayout(this);
34 
35  auto label = new QLabel(this);
36  label->setObjectName(QStringLiteral("label"));
37  label->setText(
38  i18n("Filter identity is missing. "
39  "Please select an identity to use with filter \"%1\"",
40  filtername));
41  label->setWordWrap(true);
42  mainLayout->addWidget(label);
43  mComboBoxIdentity = new KIdentityManagementWidgets::IdentityCombo(KernelIf->identityManager(), this);
44  mComboBoxIdentity->setObjectName(QStringLiteral("comboboxidentity"));
45  mainLayout->addWidget(mComboBoxIdentity);
46 
48  buttonBox->setObjectName(QStringLiteral("buttonbox"));
49 
50  QPushButton *okButton = buttonBox->button(QDialogButtonBox::Ok);
51  okButton->setShortcut(Qt::CTRL | Qt::Key_Return);
52  connect(buttonBox, &QDialogButtonBox::accepted, this, &FilterActionMissingIdentityDialog::accept);
53  connect(buttonBox, &QDialogButtonBox::rejected, this, &FilterActionMissingIdentityDialog::reject);
54  mainLayout->addWidget(buttonBox);
55  okButton->setDefault(true);
56 
57  readConfig();
58 }
59 
60 FilterActionMissingIdentityDialog::~FilterActionMissingIdentityDialog()
61 {
62  writeConfig();
63 }
64 
65 void FilterActionMissingIdentityDialog::readConfig()
66 {
67  create(); // ensure a window is created
68  windowHandle()->resize(QSize(500, 300));
69  KConfigGroup group(KSharedConfig::openStateConfig(), myFilterActionMissingIdentityDialogConfigGroupName);
70  KWindowConfig::restoreWindowSize(windowHandle(), group);
71  resize(windowHandle()->size()); // workaround for QTBUG-40584
72 }
73 
74 void FilterActionMissingIdentityDialog::writeConfig()
75 {
76  KConfigGroup group(KSharedConfig::openStateConfig(), myFilterActionMissingIdentityDialogConfigGroupName);
77  KWindowConfig::saveWindowSize(windowHandle(), group);
78  group.sync();
79 }
80 
81 int FilterActionMissingIdentityDialog::selectedIdentity() const
82 {
83  return mComboBoxIdentity->currentIdentity();
84 }
85 
86 #include "moc_filteractionmissingidentitydialog.cpp"
void setShortcut(const QKeySequence &key)
void readConfig()
QString i18n(const char *text, const TYPE &arg...)
static KSharedConfig::Ptr openStateConfig(const QString &fileName=QString())
QAction * create(StandardGameAction id, const QObject *recvr, const char *slot, QObject *parent)
Key_Return
QString label(StandardShortcut id)
KCONFIGGUI_EXPORT void restoreWindowSize(QWindow *window, const KConfigGroup &config)
QString i18nc(const char *context, const char *text, const TYPE &arg...)
void setDefault(bool)
The filter dialog.
KCONFIGGUI_EXPORT void saveWindowSize(const QWindow *window, KConfigGroup &config, KConfigGroup::WriteConfigFlags options=KConfigGroup::Normal)
This file is part of the KDE documentation.
Documentation copyright © 1996-2023 The KDE developers.
Generated on Fri Sep 22 2023 03:58:42 by doxygen 1.8.17 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.