diff options
author | Louis Chemineau <louis@chmn.me> | 2023-11-08 15:43:57 +0100 |
---|---|---|
committer | Louis Chemineau <louis@chmn.me> | 2023-11-09 22:39:52 +0100 |
commit | b180ca9d47176bf487bc0ae26ffcba688a2cbd55 (patch) | |
tree | 491107bf4c31f45ac0b488079f1475a25c9ce9fe /apps/files | |
parent | 1c84139fa6d2803d7b555dbedfda8bba8067a5ed (diff) | |
download | nextcloud-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.vue | 14 | ||||
-rw-r--r-- | apps/files/src/components/FilesListVirtual.vue | 16 | ||||
-rw-r--r-- | apps/files/src/services/LivePhotos.ts | 2 |
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 } |