diff --git a/src/view/keycacheoverlay.cpp b/src/view/keycacheoverlay.cpp index 2093f369d..69a8bedec 100644 --- a/src/view/keycacheoverlay.cpp +++ b/src/view/keycacheoverlay.cpp @@ -1,96 +1,97 @@ /* keycacheoverlay.cpp This file is part of Kleopatra, the KDE keymanager SPDX-FileCopyrightText: 2016 Bundesamt für Sicherheit in der Informationstechnik SPDX-FileContributor: Intevation GmbH SPDX-License-Identifier: GPL-2.0-or-later */ #include "keycacheoverlay.h" #include #include "kleopatra_debug.h" #include "waitwidget.h" #include #include #include using namespace Kleo; +using namespace Qt::Literals::StringLiterals; KeyCacheOverlay::KeyCacheOverlay(QWidget *baseWidget, QWidget *parent) : QWidget(parent) , mBaseWidget(baseWidget) { const auto cache = KeyCache::instance(); if (cache->initialized()) { // Cache initialized so we are not needed. deleteLater(); return; } auto vLay = new QVBoxLayout(this); auto waitWidget = new WaitWidget(this); - waitWidget->setText(i18n("Loading certificate cache...")); + waitWidget->setText("

"_L1 + i18n("Loading certificate cache...") + "

"_L1); vLay->addWidget(waitWidget); mBaseWidget->installEventFilter(this); mBaseWidget->setEnabled(false); reposition(); connect(&mTimer, &QTimer::timeout, this, [this]() { // To avoid an infinite show if we miss the keyListingDone signal // (Race potential) we use a watchdog timer, too to actively poll // the keycache every second. See bug #381910 if (KeyCache::instance()->initialized()) { qCDebug(KLEOPATRA_LOG) << "Hiding overlay from watchdog"; hideOverlay(); } }); mTimer.start(1000); connect(cache.get(), &KeyCache::keyListingDone, this, &KeyCacheOverlay::hideOverlay); } bool KeyCacheOverlay::eventFilter(QObject *object, QEvent *event) { if (object == mBaseWidget && (event->type() == QEvent::Move || event->type() == QEvent::Resize || event->type() == QEvent::Show || event->type() == QEvent::Hide)) { reposition(); } return QWidget::eventFilter(object, event); } void KeyCacheOverlay::reposition() { if (parentWidget() != mBaseWidget->window()) { setParent(mBaseWidget->window()); } if (!KeyCache::instance()->initialized()) { show(); } const QPoint topLevelPos = mBaseWidget->mapTo(window(), QPoint(0, 0)); const QPoint parentPos = parentWidget()->mapFrom(window(), topLevelPos); move(parentPos); resize(mBaseWidget->size()); } void KeyCacheOverlay::hideOverlay() { mTimer.stop(); mBaseWidget->setEnabled(true); hide(); mBaseWidget->removeEventFilter(this); deleteLater(); } #include "moc_keycacheoverlay.cpp" diff --git a/src/view/waitwidget.cpp b/src/view/waitwidget.cpp index 011bd6e35..965463ad1 100644 --- a/src/view/waitwidget.cpp +++ b/src/view/waitwidget.cpp @@ -1,49 +1,52 @@ /* SPDX-FileCopyrightText: 2017 Intevation GmbH SPDX-License-Identifier: GPL-2.0-or-later */ #include "waitwidget.h" #include #include #include using namespace Kleo; WaitWidget::WaitWidget(QWidget *parent) : QWidget(parent) { auto vLay = new QVBoxLayout(this); auto bar = new QProgressBar; mLabel = new QLabel; bar->setRange(0, 0); vLay->addStretch(1); auto subLay1 = new QVBoxLayout; auto subLay3 = new QHBoxLayout; subLay3->addStretch(1); subLay3->addWidget(mLabel); subLay3->addStretch(1); subLay1->addLayout(subLay3); subLay1->addWidget(bar); auto subLay2 = new QHBoxLayout; subLay2->addStretch(0); subLay2->addLayout(subLay1, 0); subLay2->addStretch(0); vLay->addLayout(subLay2); vLay->addStretch(1); } +WaitWidget::~WaitWidget() = default; + void WaitWidget::setText(const QString &text) { - mLabel->setText(QStringLiteral("

%1

").arg(text)); + mLabel->setText(text); } -WaitWidget::~WaitWidget() +QString WaitWidget::text() const { + return mLabel->text(); } #include "moc_waitwidget.cpp" diff --git a/src/view/waitwidget.h b/src/view/waitwidget.h index 9dc094207..0d2368838 100644 --- a/src/view/waitwidget.h +++ b/src/view/waitwidget.h @@ -1,29 +1,30 @@ /* SPDX-FileCopyrightText: 2017 Intevation GmbH SPDX-License-Identifier: GPL-2.0-or-later */ #pragma once #include class QLabel; namespace Kleo { class WaitWidget : public QWidget { Q_OBJECT public: explicit WaitWidget(QWidget *parent = nullptr); ~WaitWidget() override; void setText(const QString &text); + QString text() const; private: - QLabel *mLabel; + QLabel *mLabel = nullptr; }; } // namespace Kleo