aboutsummaryrefslogtreecommitdiffstats
path: root/apps/files
diff options
context:
space:
mode:
authorLouis Chemineau <louis@chmn.me>2023-11-08 15:43:57 +0100
committerLouis Chemineau <louis@chmn.me>2023-11-09 22:39:52 +0100
commitb180ca9d47176bf487bc0ae26ffcba688a2cbd55 (patch)
tree491107bf4c31f45ac0b488079f1475a25c9ce9fe /apps/files
parent1c84139fa6d2803d7b555dbedfda8bba8067a5ed (diff)
downloadnextcloud-server-b180ca9d47176bf487bc0ae26ffcba688a2cbd55.tar.gz
nextcloud-server-b180ca9d47176bf487bc0ae26ffcba688a2cbd55.zip
Display play icon over live photos' previews
Signed-off-by: Louis Chemineau <louis@chmn.me>
Diffstat (limited to 'apps/files')
-rw-r--r--apps/files/src/components/FileEntry/FileEntryPreview.vue14
-rw-r--r--apps/files/src/components/FilesListVirtual.vue16
-rw-r--r--apps/files/src/services/LivePhotos.ts2
3 files changed, 29 insertions, 3 deletions
diff --git a/apps/files/src/components/FileEntry/FileEntryPreview.vue b/apps/files/src/components/FileEntry/FileEntryPreview.vue
index cb7cee7054b..147b25e1c9a 100644
--- a/apps/files/src/components/FileEntry/FileEntryPreview.vue
+++ b/apps/files/src/components/FileEntry/FileEntryPreview.vue
@@ -50,6 +50,10 @@
:aria-label="t('files', 'Favorite')">
<FavoriteIcon v-once />
</span>
+
+ <OverlayIcon :is="fileOverlay"
+ v-if="fileOverlay"
+ class="files-list__row-icon-overlay" />
</span>
</template>
@@ -71,9 +75,11 @@ import KeyIcon from 'vue-material-design-icons/Key.vue'
import LinkIcon from 'vue-material-design-icons/Link.vue'
import NetworkIcon from 'vue-material-design-icons/Network.vue'
import TagIcon from 'vue-material-design-icons/Tag.vue'
+import PlayCircleIcon from 'vue-material-design-icons/PlayCircle.vue'
import { useUserConfigStore } from '../../store/userconfig.ts'
import FavoriteIcon from './FavoriteIcon.vue'
+import { isLivePhoto } from '../../services/LivePhotos'
export default Vue.extend({
name: 'FileEntryPreview',
@@ -163,6 +169,14 @@ export default Vue.extend({
}
},
+ fileOverlay() {
+ if (isLivePhoto(this.source)) {
+ return PlayCircleIcon
+ }
+
+ return null
+ },
+
folderOverlay() {
if (this.source.type !== FileType.Folder) {
return null
diff --git a/apps/files/src/components/FilesListVirtual.vue b/apps/files/src/components/FilesListVirtual.vue
index 7ada3e705ee..010e55a87e7 100644
--- a/apps/files/src/components/FilesListVirtual.vue
+++ b/apps/files/src/components/FilesListVirtual.vue
@@ -510,14 +510,26 @@ export default Vue.extend({
right: -10px;
}
- // Folder overlay
+ // File and folder overlay
&-overlay {
position: absolute;
max-height: calc(var(--icon-preview-size) * 0.5);
max-width: calc(var(--icon-preview-size) * 0.5);
- color: var(--color-main-background);
+ color: var(--color-main-text);
// better alignment with the folder icon
margin-top: 2px;
+
+ svg {
+ border-radius: 100%;
+
+ // Sow a border around the icon for better contrast
+ path {
+ stroke: var(--color-main-background);
+ stroke-width: 8px;
+ stroke-linejoin: round;
+ paint-order: stroke;
+ }
+ }
}
}
diff --git a/apps/files/src/services/LivePhotos.ts b/apps/files/src/services/LivePhotos.ts
index df6c9decd4a..ce333f31b0a 100644
--- a/apps/files/src/services/LivePhotos.ts
+++ b/apps/files/src/services/LivePhotos.ts
@@ -29,5 +29,5 @@ export function initLivePhotos(): void {
* @param {Node} node - The node
*/
export function isLivePhoto(node: Node): boolean {
- return node.attributes['metadata-files-live-photo'] !== null
+ return node.attributes['metadata-files-live-photo'] !== undefined
}