[graphics/krita/krita/6.0] 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 7ba37605f14c979da38bc5d43709afd74ba36bfa by Carsten Hartenfels.
Committed on 27/07/2026 at 17:19.
Pushed by hartenfels into branch 'krita/6.0'.
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/7ba37605f14c979da38bc5d43709afd74ba36bfa
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;