From b243744a03fb059852b655384cc8a82eca0d9afc Mon Sep 17 00:00:00 2001 From: Melvin Keskin Date: Mon, 23 Dec 2019 21:31:59 +0100 Subject: [PATCH] Refactor usage of images with rounded corners Signed-off-by: Linus Jahn --- src/qml/elements/Avatar.qml | 40 +++++++++----------- src/qml/elements/MediaPreviewImage.qml | 2 +- src/qml/elements/RoundImage.qml | 20 +--------- src/qml/elements/RoundedImage.qml | 52 ++++++++++++++++++++++++++ src/qml/qml.qrc | 1 + 5 files changed, 74 insertions(+), 41 deletions(-) create mode 100644 src/qml/elements/RoundedImage.qml diff --git a/src/qml/elements/Avatar.qml b/src/qml/elements/Avatar.qml index 6f36dc64..0bdd0c65 100644 --- a/src/qml/elements/Avatar.qml +++ b/src/qml/elements/Avatar.qml @@ -28,31 +28,27 @@ * along with Kaidan. If not, see . */ - import QtQuick 2.7 -import QtQuick.Layouts 1.3 -import org.kde.kirigami 2.8 as Kirigami Item { - id: avatar - property string avatarUrl - property string name + id: avatar + property string avatarUrl + property string name - RoundImage { - id: imageAvatar - visible: avatarUrl - source: avatarUrl - fillMode: Image.PreserveAspectFit - mipmap: true - height: width - anchors.fill: parent - isRound: true - } + RoundImage { + id: imageAvatar + visible: avatarUrl + source: avatarUrl + fillMode: Image.PreserveAspectFit + mipmap: true + height: width + anchors.fill: parent + } - TextAvatar { - id: textAvatar - visible: !avatarUrl - name: avatar.name - anchors.fill: parent - } + TextAvatar { + id: textAvatar + visible: !avatarUrl + name: avatar.name + anchors.fill: parent + } } diff --git a/src/qml/elements/MediaPreviewImage.qml b/src/qml/elements/MediaPreviewImage.qml index e2441ef6..b60417c6 100644 --- a/src/qml/elements/MediaPreviewImage.qml +++ b/src/qml/elements/MediaPreviewImage.qml @@ -45,7 +45,7 @@ MediaPreview { Layout.preferredWidth: Kirigami.Units.gridUnit * 32 Layout.maximumWidth: message ? messageSize : -1 - AnimatedImage { + RoundedImage { id: image fillMode: Image.PreserveAspectFit diff --git a/src/qml/elements/RoundImage.qml b/src/qml/elements/RoundImage.qml index 21777e17..6f655320 100644 --- a/src/qml/elements/RoundImage.qml +++ b/src/qml/elements/RoundImage.qml @@ -29,24 +29,8 @@ */ import QtQuick 2.7 -import QtGraphicalEffects 1.0 -Image { +RoundedImage { id: img - property bool isRound: true - - layer.enabled: isRound - layer.effect: OpacityMask { - maskSource: Item { - width: img.paintedWidth - height: img.paintedHeight - - Rectangle { - anchors.centerIn: parent - width: Math.min(img.width, img.height) - height: width - radius: Math.min(width, height) - } - } - } + radius: Math.min(width, height) } diff --git a/src/qml/elements/RoundedImage.qml b/src/qml/elements/RoundedImage.qml new file mode 100644 index 00000000..c3ae1f2d --- /dev/null +++ b/src/qml/elements/RoundedImage.qml @@ -0,0 +1,52 @@ +/* + * Kaidan - A user-friendly XMPP client for every device! + * + * Copyright (C) 2016-2019 Kaidan developers and contributors + * (see the LICENSE file for a full list of copyright authors) + * + * Kaidan is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * In addition, as a special exception, the author of Kaidan gives + * permission to link the code of its release with the OpenSSL + * project's "OpenSSL" library (or with modified versions of it that + * use the same license as the "OpenSSL" library), and distribute the + * linked executables. You must obey the GNU General Public License in + * all respects for all of the code used other than "OpenSSL". If you + * modify this file, you may extend this exception to your version of + * the file, but you are not obligated to do so. If you do not wish to + * do so, delete this exception statement from your version. + * + * Kaidan is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Kaidan. If not, see . + */ + +import QtQuick 2.6 +import QtGraphicalEffects 1.0 + +AnimatedImage { + id: img + property int radius: roundedCornersRadius + + layer.enabled: true + layer.effect: OpacityMask { + maskSource: Item { + width: img.paintedWidth + height: img.paintedHeight + + Rectangle { + anchors.centerIn: parent + width: Math.min(img.width, img.height) + height: width + radius: img.radius + } + } + } +} diff --git a/src/qml/qml.qrc b/src/qml/qml.qrc index 166938ed..18b50180 100644 --- a/src/qml/qml.qrc +++ b/src/qml/qml.qrc @@ -19,6 +19,7 @@ elements/RosterListItem.qml elements/MessageCounter.qml elements/ChatMessage.qml + elements/RoundedImage.qml elements/RoundImage.qml elements/IconButton.qml elements/FileChooser.qml -- GitLab