[graphics/krita] libs/ui/animation: Hide audio checkbox for image animation formats
Carsten Hartenfels <[email protected]>
| Newsgroups | gmane.comp.kde.cvs |
|---|---|
| Message-ID | <[email protected]> |
Git commit d0bd4452aefb56c38c4208e61bfff39bfd963d87 by Carsten Hartenfels.
Committed on 27/07/2026 at 16:06.
Pushed by hartenfels into branch 'master'.
Hide audio checkbox for image animation formats
Because they don't support audio, hence it makes no sense to prompt the
user if they want to include it.
M +5 -0 libs/ui/animation/KisAndroidMediaEncoderRunnable.cpp
M +19 -0 libs/ui/animation/KisDlgAnimationRenderer.cpp
M +2 -0 libs/ui/animation/KisDlgAnimationRenderer.h
M +5 -0 libs/ui/animation/KisLibavMediaEncoderRunnable.cpp
M +1 -0 libs/ui/animation/KisMediaEncoderWrapper.h
https://invent.kde.org/graphics/krita/-/commit/d0bd4452aefb56c38c4208e61bfff39bfd963d87
diff --git a/libs/ui/animation/KisAndroidMediaEncoderRunnable.cpp b/libs/ui/animation/KisAndroidMediaEncoderRunnable.cpp
index 9bea0460824..7175f5d7acb 100644
--- a/libs/ui/animation/KisAndroidMediaEncoderRunnable.cpp
+++ b/libs/ui/animation/KisAndroidMediaEncoderRunnable.cpp
@@ -96,6 +96,11 @@ public:
return extensionForFormatId(m_formatId);
}
+ bool supportsAudio() const override
+ {
+ return true;
+ }
+
QWidget *createPreferencesWidget(const QVariantMap &preferences) const override
{
KisAndroidMediaEncoderPreferencesWidget *pw = new KisAndroidMediaEncoderPreferencesWidget;
diff --git a/libs/ui/animation/KisDlgAnimationRenderer.cpp b/libs/ui/animation/KisDlgAnimationRenderer.cpp
index b113ec203b3..366ceaf53b9 100644
--- a/libs/ui/animation/KisDlgAnimationRenderer.cpp
+++ b/libs/ui/animation/KisDlgAnimationRenderer.cpp
@@ -144,6 +144,7 @@ KisDlgAnimationRenderer::KisDlgAnimationRenderer(KisDocument *doc, QWidget *pare
connect(m_page->shouldExportOnlyImageSequence, SIGNAL(toggled(bool)), this, SLOT(slotExportTypeChanged()));
connect(m_page->shouldExportOnlyVideo, SIGNAL(toggled(bool)), this, SLOT(slotExportTypeChanged()));
+ connect(m_page->cmbRenderType, SIGNAL(currentIndexChanged(int)), SLOT(slotRenderTypeChanged()));
connect(m_page->intFramesPerSecond, SIGNAL(valueChanged(int)), SLOT(slotCheckWarnings()));
connect(m_page->intWidth, SIGNAL(valueChanged(int)), SLOT(slotCheckWarnings()));
@@ -337,6 +338,7 @@ void KisDlgAnimationRenderer::initializeRenderSettings(const KisDocument &doc, c
bool hasAudioLoaded = doc.getAudioTracks().count() > 0;
m_page->chkIncludeAudio->setChecked(hasAudioLoaded);
+ slotRenderTypeChanged();
}
#ifndef Q_OS_ANDROID
@@ -493,6 +495,16 @@ bool KisDlgAnimationRenderer::looksLikeGif(const QString &videoType)
#endif
}
+bool KisDlgAnimationRenderer::supportsAudio(const QString &videoType)
+{
+#ifdef Q_OS_ANDROID
+ KisMediaEncoderFormat *format = KisMediaEncoderWrapper::getFormatByKey(videoType);
+ return format && format->supportsAudio();
+#else
+ return !videoType.startsWith(QStringLiteral("image/"));
+#endif
+}
+
#ifndef Q_OS_ANDROID
void KisDlgAnimationRenderer::setFFmpegPath(const QString& path) {
// Let's START with the assumption that user-specified ffmpeg path is invalid
@@ -962,6 +974,13 @@ void KisDlgAnimationRenderer::slotExportTypeChanged()
slotCheckWarnings();
}
+void KisDlgAnimationRenderer::slotRenderTypeChanged()
+{
+ m_page->chkIncludeAudio->setVisible(m_page->cmbRenderType->count() != 0
+ && supportsAudio(m_page->cmbRenderType->currentData().toString()));
+ m_page->adjustSize();
+}
+
void KisDlgAnimationRenderer::slotLockAspectRatioDimensionsWidth(int width)
{
Q_UNUSED(width);
diff --git a/libs/ui/animation/KisDlgAnimationRenderer.h b/libs/ui/animation/KisDlgAnimationRenderer.h
index 85e2e9e2275..ce397e77a33 100644
--- a/libs/ui/animation/KisDlgAnimationRenderer.h
+++ b/libs/ui/animation/KisDlgAnimationRenderer.h
@@ -65,6 +65,7 @@ private Q_SLOTS:
void slotLockAspectRatioDimensionsHeight(int height);
void slotExportTypeChanged();
+ void slotRenderTypeChanged();
#ifndef Q_OS_ANDROID
void setFFmpegPath(const QString& path);
#endif
@@ -119,6 +120,7 @@ private:
static void saveLastUsedConfiguration(QString configurationID, KisPropertiesConfigurationSP config);
static bool looksLikeGif(const QString &videoType);
+ static bool supportsAudio(const QString &videoType);
private:
KisImageSP m_image;
diff --git a/libs/ui/animation/KisLibavMediaEncoderRunnable.cpp b/libs/ui/animation/KisLibavMediaEncoderRunnable.cpp
index eee0053c7ff..715884825d6 100644
--- a/libs/ui/animation/KisLibavMediaEncoderRunnable.cpp
+++ b/libs/ui/animation/KisLibavMediaEncoderRunnable.cpp
@@ -81,6 +81,11 @@ public:
return extensionForFormatId(m_formatId);
}
+ bool supportsAudio() const override
+ {
+ return false;
+ }
+
QString formatName() const
{
switch (m_formatId) {
diff --git a/libs/ui/animation/KisMediaEncoderWrapper.h b/libs/ui/animation/KisMediaEncoderWrapper.h
index 1c7a481271d..30e4a22b0ec 100644
--- a/libs/ui/animation/KisMediaEncoderWrapper.h
+++ b/libs/ui/animation/KisMediaEncoderWrapper.h
@@ -33,6 +33,7 @@ public:
virtual QString key() const = 0;
virtual QString title() const = 0;
virtual QString extension() const = 0;
+ virtual bool supportsAudio() const = 0;
virtual QWidget *createPreferencesWidget(const QVariantMap &preferences) const = 0;
virtual void resetPreferencesWidget(QWidget *widget) const = 0;