diff --git a/src/Gui/KSMainWindow.h b/src/Gui/KSMainWindow.h
--- a/src/Gui/KSMainWindow.h
+++ b/src/Gui/KSMainWindow.h
@@ -52,6 +52,14 @@
};
void quit(const QuitBehavior quitBehavior = QuitBehavior::QuitImmediately);
+ enum class MessageDuration {
+ AutoHide,
+ Persistent
+ };
+ void showInlineMessage(const QString& message,
+ const KMessageWidget::MessageType messageType,
+ const MessageDuration messageDuration = MessageDuration::AutoHide);
+
private slots:
void captureScreenshot(ImageGrabber::GrabMode mode, int timeout, bool includePointer, bool includeDecorations);
diff --git a/src/Gui/KSMainWindow.cpp b/src/Gui/KSMainWindow.cpp
--- a/src/Gui/KSMainWindow.cpp
+++ b/src/Gui/KSMainWindow.cpp
@@ -328,39 +328,54 @@
// is not working quite right, see Bug #389694 which needs fixing.
}
-void KSMainWindow::showImageSharedFeedback(bool error, const QString &message)
+void KSMainWindow::showInlineMessage(const QString& message, const KMessageWidget::MessageType messageType, const MessageDuration messageDuration)
{
- if (error) {
- mMessageWidget->setMessageType(KMessageWidget::Error);
- mMessageWidget->setText(i18n("There was a problem sharing the image: %1", message));
+ mMessageWidget->setText(message);
+ mMessageWidget->setMessageType(messageType);
+
+ switch (messageType) {
+ case KMessageWidget::Error:
mMessageWidget->setIcon(QIcon::fromTheme(QStringLiteral("dialog-error")));
- } else {
- mMessageWidget->setMessageType(KMessageWidget::Positive);
- if (message.isEmpty())
- mMessageWidget->setText(i18n("Image shared"));
- else
- mMessageWidget->setText(i18n("You can find the shared image at: %1", message));
+ break;
+ case KMessageWidget::Positive:
mMessageWidget->setIcon(QIcon::fromTheme(QStringLiteral("dialog-ok-apply")));
+ break;
+ case KMessageWidget::Information:
+ mMessageWidget->setIcon(QIcon::fromTheme(QStringLiteral("dialog-information")));
+ break;
+ default:
+ ;
}
mMessageWidget->animatedShow();
- QTimer::singleShot(20000, mMessageWidget, &KMessageWidget::animatedHide);
+ if (messageDuration == MessageDuration::AutoHide) {
+ QTimer::singleShot(10000, mMessageWidget, &KMessageWidget::animatedHide);
+ }
}
-void KSMainWindow::sendToClipboard()
+void KSMainWindow::showImageSharedFeedback(bool error, const QString &message)
{
- ExportManager::instance()->doCopyToClipboard();
-
- if (SpectacleConfig::instance()->quitAfterSaveOrCopyChecked()) {
- quit();
+ if (error) {
+ showInlineMessage(i18n("There was a problem sharing the image: %1", message),
+ KMessageWidget::Error);
+ } else {
+ if (message.isEmpty()) {
+ showInlineMessage(i18n("Image shared"), KMessageWidget::Positive);
+ } else {
+ showInlineMessage(i18n("You can find the shared image at: %1", message),
+ KMessageWidget::Positive);
+ }
}
+}
- mMessageWidget->setMessageType(KMessageWidget::Information);
- mMessageWidget->setText(i18n("The screenshot has been copied to the clipboard."));
- mMessageWidget->setIcon(QIcon::fromTheme(QStringLiteral("dialog-information")));
+void KSMainWindow::sendToClipboard()
+{
+ ExportManager::instance()->doCopyToClipboard();
- mMessageWidget->animatedShow();
- QTimer::singleShot(10000, mMessageWidget, &KMessageWidget::animatedHide);
+ SpectacleConfig::instance()->quitAfterSaveOrCopyChecked()
+ ? quit()
+ : showInlineMessage(i18n("The screenshot has been copied to the clipboard."),
+ KMessageWidget::Information);
}
void KSMainWindow::showPreferencesDialog()