Skip to content

Commit

Permalink
Only show the attachment widget's image frame for supported types by Qt
Browse files Browse the repository at this point in the history
  • Loading branch information
nirvn committed Mar 25, 2024
1 parent 42057df commit 72be176
Show file tree
Hide file tree
Showing 4 changed files with 16 additions and 6 deletions.
6 changes: 6 additions & 0 deletions src/core/utils/fileutils.cpp
Expand Up @@ -22,6 +22,7 @@
#include <QDirIterator>
#include <QFileInfo>
#include <QImage>
#include <QImageReader>
#include <QMimeDatabase>
#include <qgis.h>
#include <qgsexiftools.h>
Expand All @@ -39,6 +40,11 @@ QString FileUtils::mimeTypeName( const QString &filePath )
return mimeType.name();
}

bool FileUtils::isImageMimeTypeSupported( const QString &mimeType )
{
return QImageReader::supportedMimeTypes().contains( mimeType.toLatin1() );
}

QString FileUtils::fileName( const QString &filePath )
{
QFileInfo fileInfo( filePath );
Expand Down
2 changes: 2 additions & 0 deletions src/core/utils/fileutils.h
Expand Up @@ -35,6 +35,8 @@ class QFIELD_CORE_EXPORT FileUtils : public QObject

//! Returns the mimetype of a filepath as string
Q_INVOKABLE static QString mimeTypeName( const QString &filePath );
//! Returns TRUE if the provided mimetype is a supported image
Q_INVOKABLE static bool isImageMimeTypeSupported( const QString &mimeType );
//! Returns the filename of a filepath - if no file name exists it's empty
Q_INVOKABLE static QString fileName( const QString &filePath );
//! Returns true if the file exists (false if it's a directory)
Expand Down
7 changes: 4 additions & 3 deletions src/qml/editorwidgets/+Qt5/ExternalResource.qml
Expand Up @@ -80,9 +80,10 @@ EditorWidgetBase {
{
const isHttp = value.startsWith('http://') || value.startsWith('https://');
var fullValue = isHttp ? value : prefixToRelativePath + value
isImage = !config.UseLink && FileUtils.mimeTypeName(fullValue).startsWith("image/")
isAudio = !config.UseLink && FileUtils.mimeTypeName(fullValue).startsWith("audio/")
isVideo = !config.UseLink && FileUtils.mimeTypeName(fullValue).startsWith("video/")
var mimeType = FileUtils.mimeTypeName(fullValue)
isImage = !config.UseLink && mimeType.startsWith("image/") && FileUtils.isImageMimeTypeSupported(mimeType)
isAudio = !config.UseLink && mimeType.startsWith("audio/")
isVideo = !config.UseLink && mimeType.startsWith("video/")

image.visible = isImage
geoTagBadge.visible = isImage
Expand Down
7 changes: 4 additions & 3 deletions src/qml/editorwidgets/+Qt6/ExternalResource.qml
Expand Up @@ -79,9 +79,10 @@ EditorWidgetBase {
if (currentValue != undefined && currentValue !== '') {
const isHttp = value.startsWith('http://') || value.startsWith('https://');
var fullValue = isHttp ? value : prefixToRelativePath + value
isImage = !config.UseLink && FileUtils.mimeTypeName(fullValue).startsWith("image/")
isAudio = !config.UseLink && FileUtils.mimeTypeName(fullValue).startsWith("audio/")
isVideo = !config.UseLink && FileUtils.mimeTypeName(fullValue).startsWith("video/")
var mimeType = FileUtils.mimeTypeName(fullValue)
isImage = !config.UseLink && mimeType.startsWith("image/") && FileUtils.isImageMimeTypeSupported(mimeType)
isAudio = !config.UseLink && mimeType.startsWith("audio/")
isVideo = !config.UseLink && mimeType.startsWith("video/")

image.visible = isImage
geoTagBadge.visible = isImage
Expand Down

1 comment on commit 72be176

@qfield-fairy
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please sign in to comment.