[graphics/krita/krita/6.0] libs/ui/animation: Handle media encoder formats without preferences
Carsten Hartenfels <[email protected]>
| Newsgroups | gmane.comp.kde.cvs |
|---|---|
| Message-ID | <[email protected]> |
Git commit d956a1c2e57a3f37f9691825465e226fd839c693 by Carsten Hartenfels.
Committed on 27/07/2026 at 17:19.
Pushed by hartenfels into branch 'krita/6.0'.
Handle media encoder formats without preferences
By letting them return a null preferences widget. This will display a
message about the format not having preferences and will show just a
close button in the dialog instead of pointless reset, OK and cancel
buttons.
M +19 -7 libs/ui/animation/KisMediaEncoderFormatPreferencesDialog.cpp
https://invent.kde.org/graphics/krita/-/commit/d956a1c2e57a3f37f9691825465e226fd839c693
diff --git a/libs/ui/animation/KisMediaEncoderFormatPreferencesDialog.cpp b/libs/ui/animation/KisMediaEncoderFormatPreferencesDialog.cpp
index ac52953ee55..9a499c4d25e 100644
--- a/libs/ui/animation/KisMediaEncoderFormatPreferencesDialog.cpp
+++ b/libs/ui/animation/KisMediaEncoderFormatPreferencesDialog.cpp
@@ -4,9 +4,12 @@
#include "KisMediaEncoderFormatPreferencesDialog.h"
#include <QDialogButtonBox>
+#include <QLabel>
#include <QPushButton>
#include <QVBoxLayout>
+#include <klocalizedstring.h>
+
#include "KisMediaEncoderWrapper.h"
KisMediaEncoderPreferencesDialog::KisMediaEncoderPreferencesDialog(KisMediaEncoderFormat *format,
@@ -18,18 +21,27 @@ KisMediaEncoderPreferencesDialog::KisMediaEncoderPreferencesDialog(KisMediaEncod
resize(400, 300);
QVBoxLayout *dlgLayout = new QVBoxLayout(this);
+ QDialogButtonBox *buttons;
m_widget = format->createPreferencesWidget(preferences);
- dlgLayout->addWidget(m_widget, 1);
+ if (m_widget) {
+ dlgLayout->addWidget(m_widget, 1);
+ buttons = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel | QDialogButtonBox::Reset);
+ } else {
+ QLabel *noPreferencesLabel = new QLabel(i18n("This format has no preferences."));
+ noPreferencesLabel->setAlignment(Qt::AlignCenter);
+ noPreferencesLabel->setWordWrap(true);
+ dlgLayout->addWidget(noPreferencesLabel);
+ buttons = new QDialogButtonBox(QDialogButtonBox::Close);
+ }
- QDialogButtonBox *buttons =
- new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel | QDialogButtonBox::Reset);
dlgLayout->addWidget(buttons);
connect(buttons, &QDialogButtonBox::accepted, this, &KisMediaEncoderPreferencesDialog::accept);
connect(buttons, &QDialogButtonBox::rejected, this, &KisMediaEncoderPreferencesDialog::reject);
- connect(buttons->button(QDialogButtonBox::Reset),
- &QPushButton::clicked,
- this,
- &KisMediaEncoderPreferencesDialog::slotReset);
+
+ QPushButton *resetButton = buttons->button(QDialogButtonBox::Reset);
+ if (resetButton) {
+ connect(resetButton, &QPushButton::clicked, this, &KisMediaEncoderPreferencesDialog::slotReset);
+ }
}
QVariant KisMediaEncoderPreferencesDialog::preferences() const