From a0cfd2a40832e2cb65bc78e2deea3c0e6ebd204b Mon Sep 17 00:00:00 2001 From: Kuingsmile <96409857+Kuingsmile@users.noreply.github.com> Date: Sat, 9 Aug 2025 23:26:00 +0800 Subject: [PATCH] :construction: WIP(custom): rewrite manage page --- .../components/ImageProcessSetting.vue | 2 +- src/renderer/components/VirtualScroller.vue | 59 +- src/renderer/i18n/locales/en.json | 79 +- src/renderer/i18n/locales/zh-CN.json | 150 +- src/renderer/i18n/locales/zh-TW.json | 79 +- .../manage/components/CustomSwitch.vue | 226 + src/renderer/manage/pages/BucketPage.vue | 4278 +++++++---------- src/renderer/manage/pages/EmptyPage.vue | 57 +- src/renderer/manage/pages/ManageMain.vue | 717 ++- src/renderer/manage/pages/ManageSetting.vue | 530 +- src/renderer/manage/pages/css/BucketPage.css | 1272 +++++ src/renderer/manage/pages/css/ManageMain.css | 647 +++ .../manage/pages/css/ManageSetting.css | 515 ++ src/renderer/pages/css/PicgoSetting.css | 2 +- 14 files changed, 5300 insertions(+), 3313 deletions(-) create mode 100644 src/renderer/manage/components/CustomSwitch.vue create mode 100644 src/renderer/manage/pages/css/BucketPage.css create mode 100644 src/renderer/manage/pages/css/ManageMain.css create mode 100644 src/renderer/manage/pages/css/ManageSetting.css diff --git a/src/renderer/components/ImageProcessSetting.vue b/src/renderer/components/ImageProcessSetting.vue index 229c733e..5dd5415e 100644 --- a/src/renderer/components/ImageProcessSetting.vue +++ b/src/renderer/components/ImageProcessSetting.vue @@ -1185,7 +1185,7 @@ small { /* Dark mode adjustments */ :root.dark .image-process-settings, :root.auto.dark .image-process-settings { - background: var(--color-background-primary); + background: var(--color-background-secondary); } :root.dark .settings-header, diff --git a/src/renderer/components/VirtualScroller.vue b/src/renderer/components/VirtualScroller.vue index a6a9013f..bdf47877 100644 --- a/src/renderer/components/VirtualScroller.vue +++ b/src/renderer/components/VirtualScroller.vue @@ -63,6 +63,7 @@ const props = withDefaults(defineProps<{ const containerRef = ref(null) const containerHeight = ref(props.pageMode ? 0 : props.height) const containerWidth = ref(0) +const parentScrollListeners = ref([]) const itemsRef = ref(props.items) watch(() => props.items, v => { itemsRef.value = v }) @@ -124,7 +125,7 @@ const viewportStyle = computed(() => { const itemStyle = computed(() => isGridMode.value ? {} - : { height: `${props.itemHeight}px`, padding: `${props.itemPadding}px` } + : { height: `${props.itemHeight}px` } ) function handleScroll () { @@ -133,7 +134,34 @@ function handleScroll () { updateScrollTop(c.scrollTop) } +function handlePageScroll () { + if (!props.pageMode) return + // Throttle the scroll handler for better performance + const now = Date.now() + if (now - lastScrollTime.value < 16) return // ~60fps + lastScrollTime.value = now + + updateContainerMetrics() + // When in page mode, recalculate visible items based on viewport intersection + const el = containerRef.value + if (!el) return + + const rect = el.getBoundingClientRect() + const viewportHeight = window.innerHeight + + // Calculate the intersection with the viewport + const intersectionTop = Math.max(0, -rect.top) + const intersectionBottom = Math.min(rect.height, viewportHeight - rect.top) + const intersectionHeight = Math.max(0, intersectionBottom - intersectionTop) + + if (intersectionHeight > 0) { + // Update the virtual scroll position based on the intersection + updateScrollTop(intersectionTop) + } +} + let ro: ResizeObserver | null = null +const lastScrollTime = ref(0) function updateContainerMetrics () { const el = containerRef.value @@ -152,7 +180,20 @@ onMounted(() => { if (!el) return ro = new ResizeObserver(updateContainerMetrics) ro.observe(el) - if (props.pageMode) ro.observe(document.documentElement) + if (props.pageMode) { + ro.observe(document.documentElement) + // Listen to scroll events on the window for page mode + window.addEventListener('scroll', handlePageScroll, { passive: true }) + // Also listen to scroll events on potential scroll containers + let parent = el.parentElement + while (parent) { + if (parent.scrollHeight > parent.clientHeight) { + parent.addEventListener('scroll', handlePageScroll, { passive: true }) + parentScrollListeners.value.push(parent) + } + parent = parent.parentElement + } + } updateContainerMetrics() if (props.pageMode) { window.addEventListener('resize', updateContainerMetrics, { passive: true }) @@ -162,6 +203,14 @@ onMounted(() => { onBeforeUnmount(() => { if (ro) ro.disconnect() window.removeEventListener('resize', updateContainerMetrics) + if (props.pageMode) { + window.removeEventListener('scroll', handlePageScroll) + // Clean up parent scroll listeners + parentScrollListeners.value.forEach(parent => { + parent.removeEventListener('scroll', handlePageScroll) + }) + parentScrollListeners.value = [] + } }) function scrollTo (index: number) { scrollToItem(index) } @@ -178,6 +227,10 @@ function refresh () { if (containerRef.value) { updateScrollTop(containerRef.value.scrollTop) } + // Also trigger page scroll calculation in page mode + if (props.pageMode) { + handlePageScroll() + } } defineExpose({ scrollTo, scrollToTop, scrollToBottom, setViewMode, toggleViewMode, refresh }) @@ -203,9 +256,11 @@ defineExpose({ scrollTo, scrollToTop, scrollToBottom, setViewMode, toggleViewMod inset: 0 auto auto 0; will-change: transform; backface-visibility: hidden; + width: 100%; } .virtual-scroller-viewport.is-grid { + width: 100%; display: grid; grid-template-columns: repeat(var(--items-per-row, 1), minmax(0, 1fr)); grid-auto-rows: var(--row-height, 1px); diff --git a/src/renderer/i18n/locales/en.json b/src/renderer/i18n/locales/en.json index e0bef991..999b80ad 100644 --- a/src/renderer/i18n/locales/en.json +++ b/src/renderer/i18n/locales/en.json @@ -1,7 +1,14 @@ { "app": { "title": "PicList" }, "titleBar": { "alwaysOnTop": "Always On Top", "close": "Close", "minimize": "Minimize", "miniWindow": "Mini Window" }, - "common": { "confirm": "Confirm", "cancel": "Cancel", "close": "Close", "reset": "Reset", "import": "Import" }, + "common": { + "confirm": "Confirm", + "cancel": "Cancel", + "close": "Close", + "reset": "Reset", + "import": "Import", + "submit": "Submit" + }, "navigation": { "upload": "Upload", "manage": "Manage", @@ -695,74 +702,6 @@ } } }, - "MANAGE_SETTING_TITLE": "Manage Setting", - "MANAGE_SETTING_ISAUTOREFRESH_TITLE": "Auto refresh file list when entering new directory", - "MANAGE_SETTING_ISAUTOREFRESH_TIPS": "Only applies to non-paginated mode, data is cached to indexdb to speed up loading speed", - "MANAGE_SETTING_CLEAR_CACHE_TITLE": "Clear file list cache database, currently in use:", - "MANAGE_SETTING_CLEAR_CACHE_FREE_TITLE": "Available:", - "MANAGE_SETTING_CLEAR_CACHE_TIPS": "After clearing, the file list will be reloaded when entering a new directory next time", - "MANAGE_SETTING_CLEAR_CACHE_PROMPT": "Are you sure you want to clear the file list cache database?", - "MANAGE_SETTING_CLEAR_CACHE_BUTTON": "Clear", - "MANAGE_SETTING_ISSHOWTHUMBNAIL_TITLE": "Display the original image instead of format icon (requires public access permissions)", - "MANAGE_SETTING_ISUSEPRESIGNEDURL_TITLE": "Use presigned URL for image display", - "MANAGE_SETTING_ISSHOWLIST_TITLE": "Default display mode for the file list", - "MANAGE_SETTING_ISSHOWLIST_ON": "List", - "MANAGE_SETTING_ISSHOWLIST_OFF": "Card", - "MANAGE_SETTING_ISFORCECUSTOMURLHTTPS_TITLE": "Force custom URL to use HTTPS", - "MANAGE_SETTING_ISFORCECUSTOMURLHTTPS_TIPS": "After enabling, all operations will automatically add the https prefix to custom domains", - "MANAGE_SETTING_ISUPLOADKEEPDIRSTRUCTURE_TITLE": "Preserve directory structure when uploading", - "MANAGE_SETTING_ISUPLOADKEEPDIRSTRUCTURE_TIPS": "After disabling, all files will be expanded to the specified directory", - "MANAGE_SETTING_ISDOWNLOADFILEKEEPDIRSTRUCTURE_TITLE_A": "Download", - "MANAGE_SETTING_ISDOWNLOADFILEKEEPDIRSTRUCTURE_TITLE_B": " File ", - "MANAGE_SETTING_ISDOWNLOADFILEKEEPDIRSTRUCTURE_TITLE_C": "will preserve the directory structure", - "MANAGE_SETTING_ISDOWNLOADFOLDERKEEPDIRSTRUCTURE_TITLE_D": " Folder ", - "MANAGE_SETTING_ISDOWNLOADFILEKEEPDIRSTRUCTURE_TIPS": "After enabling, the original directory structure will be preserved", - "MANAGE_SETTING_MAX_DOWNLOAD_FILE_SIZE_TITLE": "Maximum number of files to download simultaneously (1-9999)", - "MANAGE_SETTING_MAX_DOWNLOAD_FILE_SIZE_TIPS": "Not work on Tencent", - "MANAGE_SETTING_MAX_DOWNLOAD_FILE_SIZE_INPUT_TIPS": "Please enter the maximum number of files to download simultaneously", - "MANAGE_SETTING_ISIGNORECASE_TITLE": "Should file search be case-insensitive", - "MANAGE_SETTING_ISIGNORECASE_TIPS": "After enabling, the search will be case-insensitive", - "MANAGE_SETTING_TIMESTAMPRENAME_TITLE": "Rename uploaded files with timestamp - (highest priority)", - "MANAGE_SETTING_TIMESTAMPRENAME_TIPS": "After enabling, the uploaded file will be renamed with the timestamp", - "MANAGE_SETTING_RANDOMSTRINGRENAME_TITLE": "Rename uploaded files with random strings - (medium priority)", - "MANAGE_SETTING_RANDOMSTRINGRENAME_TIPS": "Random string length is 20", - "MANAGE_SETTING_CUSTOMRENAME_TITLE": "Rename uploaded files with custom names - (lowest priority)", - "MANAGE_SETTING_CUSTOMRENAME_TIPS": "After enabling, the uploaded file will be renamed with the custom pattern", - "MANAGE_SETTING_CUSTOM_PATTERN_TITLE": "Custom rename format, placeholders can be freely combined, please refer to the table below", - "MANAGE_SETTING_CUSTOM_PATTERN_TIPS": "Please enter the custom rename format", - "MANAGE_SETTING_CUSTOM_PATTERN_TABLE_TITLE": "Placeholder", - "MANAGE_SETTING_CUSTOM_PATTERN_TABLE_TIPS": "Description", - "MANAGE_SETTING_PRESIGNED_URL_EXPIRE_TITLE": "Presigned URL expiration time (seconds)", - "MANAGE_SETTING_PRESIGNED_URL_EXPIRE_TIPS": "Please enter the presigned URL expiration time", - "MANAGE_SETTING_CHOOSE_COPY_FORMAT_TITLE": "Select default link format for copying", - "MANAGE_SETTING_CHOOSE_COPY_FORMAT_MARKDOWN": "Markdown", - "MANAGE_SETTING_CHOOSE_COPY_FORMAT_MARKDOWN_WITH_LINK": "Markdown with link", - "MANAGE_SETTING_CHOOSE_COPY_FORMAT_RAWURL": "Raw URL", - "MANAGE_SETTING_CHOOSE_COPY_FORMAT_HTML": "HTML", - "MANAGE_SETTING_CHOOSE_COPY_FORMAT_BBCODE": "BBCode", - "MANAGE_SETTING_CHOOSE_COPY_FORMAT_CUSTOM": "Custom", - "MANAGE_SETTING_CUSTOM_COPY_FORMAT_TITLE": "Custom link format($url -> raw url, $fileName -> raw fileName)", - "MANAGE_SETTING_CUSTOM_COPY_FORMAT_TIPS": "Please enter the custom link format", - "MANAGE_SETTING_CHOOSE_DOWNLOAD_FOLDER_TITLE": "Choose default download folder", - "MANAGE_SETTING_CHOOSE_DOWNLOAD_FOLDER_TIPS": "System default download directory", - "MANAGE_SETTING_CHOOSE_DOWNLOAD_FOLDER_BUTTON": "Choose folder", - "MANAGE_SETTING_COPY_MESSAGE": "Copied", - "MANAGE_SETTING_CLEAR_CACHE_SUCCESS": "Cleared successfully", - "MANAGE_SETTING_CLEAR_CACHE_FAILED": "Clear failed", - "MANAGE_SETTING_ISENCODEURL_TITLE": "Encode URL when copy", - "MANAGE_SETTING_ISENCODEURL_TIPS": "After enabling, the URL will be encoded when copying", - "MANAGE_NO_DATA": "No data", - "MANAGE_MAIN_PAGE_NEW_BUCKET": "New Bucket", - "MANAGE_MAIN_PAGE_BACK_TO_HOME": "Home", - "MANAGE_MAIN_PAGE_SWITCH_PICBED": "Switch", - "MANAGE_MAIN_PAGE_SETTING": "Setting", - "MANAGE_MAIN_PAGE_SUBMIT": "Submit", - "MANAGE_MAIN_PAGE_TIPS": "Tips", - "MANAGE_MAIN_PAGE_TIPS_SUCCESS": "Created successfully", - "MANAGE_MAIN_PAGE_TIPS_FAILED": "Create failed", - "MANAGE_MAIN_PAGE_BUCKET": "Bucket", - "MANAGE_MAIN_PAGE_GALLERY": "Album", - "MANAGE_MAIN_PAGE_REPOSITORY": "Repo", "MANAGE_BUCKET_PAGE_LOADING_TEXT": "Loading...", "MANAGE_BUCKET_PAGE_CUSTOM_URL_SELECT_PLACEHOLDER": "Please select a custom domain", "MANAGE_BUCKET_PAGE_CUSTOM_URL_INPUT_PLACEHOLDER": "Please enter a custom domain", @@ -774,6 +713,8 @@ "MANAGE_BUCKET_PAGE_BATCH_COPY_URL_TOOLTIP": "Batch copy URL", "MANAGE_BUCKET_PAGE_COPY_FILE_INFO_TOOLTIP": "Copy file information", "MANAGE_BUCKET_PAGE_FORCE_REFRESH_TOOLTIP": "Force refresh file list", + "MANAGE_BUCKET_PAGE_FULLSCREEN_TOOLTIP": "Enter fullscreen mode (F11)", + "MANAGE_BUCKET_PAGE_EXIT_FULLSCREEN_TOOLTIP": "Exit fullscreen mode (F11)", "MANAGE_BUCKET_PAGE_SEARCH_PLACEHOLDER": "Search files", "MANAGE_BUCKET_PAGE_ROOT_FOLDER": "Root folder", "MANAGE_BUCKET_PAGE_FILE_NUMBER": "Number of files: ", diff --git a/src/renderer/i18n/locales/zh-CN.json b/src/renderer/i18n/locales/zh-CN.json index 558ab817..d1c62f6e 100644 --- a/src/renderer/i18n/locales/zh-CN.json +++ b/src/renderer/i18n/locales/zh-CN.json @@ -1,7 +1,14 @@ { "app": { "title": "PicList" }, "titleBar": { "alwaysOnTop": "置顶", "close": "关闭", "minimize": "最小化", "miniWindow": "迷你窗口" }, - "common": { "confirm": "确认", "cancel": "取消", "close": "关闭", "reset": "重置", "import": "导入" }, + "common": { + "confirm": "确认", + "cancel": "取消", + "close": "关闭", + "reset": "重置", + "import": "导入", + "submit": "提交" + }, "navigation": { "upload": "上传", "manage": "管理", @@ -481,6 +488,77 @@ "copySuccess": "复制成功" }, "manage": { + "main": { + "openPicBedUrl": "打开图床官网", + "newBucket": "新建存储桶", + "loading": "加载中...", + "backToHome": "首页", + "switchPicBed": "切换", + "settings": "设置", + "bucket": "存储桶", + "gallery": "相册", + "repo": "仓库", + "createSuccess": "创建成功", + "createFailed": "创建失败" + }, + "empty": { + "noData": "暂无数据", + "noDataDesc": "请先创建存储桶或上传图片" + }, + "setting": { + "clearCache": "清空文件列表缓存数据库,已使用 {size} 可用 {percent}%", + "clearCacheMsg": "确定要清空缓存吗?", + "isAutoRefreshTitle": "每次进入新目录时,是否自动刷新文件列表", + "isAutoRefreshTips": "仅对不分页模式有效,默认在加载过一次后自动缓存到数据库来加快下次加载速度", + "isShowThumbnailTitle": "图片显示为原图而非默认文件格式图标(需要存储桶可公开访问)", + "isUsePreSignedUrlTitle": "是否使用预签名URL预览图片", + "isForceCustomUrlHttpsTitle": "为自定义域名开启强制HTTPS", + "isForceCustomUrlHttpsTips": "开启后, 复制链接等操作将会自动为自定义域名添加https前缀", + "isEncodeUrlTitle": "复制链接时进行URL编码", + "isEncodeUrlTips": "根据平台选择是否开启", + "isUploadKeepDirStructureTitle": "上传时保持目录结构", + "isUploadKeepDirStructureTips": "关闭后会将所有文件展开到指定目录下", + "isIgnoreCaseTitle": "文件搜索时,是否忽略大小写", + "isIgnoreCaseTips": "建议开启", + "timestampRenameTitle": "上传文件时间戳重命名(最高优先级)", + "timestampRenameTips": "开启后,上传的文件将自动重命名为时间戳", + "randomStringRenameTitle": "上传文件随机字符串重命名(中优先级)", + "randomStringRenameTips": "20位随机字符", + "customRenameTitle": "上传文件自定义重命名(低优先级)", + "customRenameTips": "开启后填写命名格式", + "customRenameTableTitle": "自定义重命名格式参考表", + "customRenameTablePlaceholder": "请输入自定义重命名格式", + "placeholder": "占位符", + "description": "描述", + "copySuccess": "已复制 {name}", + "download": "下载", + "file": "文件", + "folder": "文件夹", + "keepDirStructure": "保持目录结构", + "keepDirStructureDesc": "开启后,下载时会保持原始目录结构", + "clearSuccess": "清空缓存成功", + "clearFailed": "清空缓存失败", + "notice": "通知", + "maxDownLoadFileLimit": "最大并行下载文件数", + "maxDownLoadFileLimitDesc": "建议根据网络情况调整", + "preSignedUrlExpire": "预签名URL过期时间(单位: 秒)", + "preSignedUrlExpireDesc": "建议根据实际需求调整", + "copyFormat": { + "title": "复制格式", + "markdown": "Markdown", + "rawurl": "原始URL", + "markdown-with-link": "Markdown(带链接)", + "html": "HTML格式", + "bbcode": "BBCode格式", + "custom": "自定义格式", + "customTitle": "自定义链接格式($url为链接,$fileName为文件名)", + "customTips": "请根据实际需求填写自定义格式" + }, + "selectDownloadFolderTitle": "选择下载文件夹", + "selectDownloadFolderTips": "选择下载目录", + "defaultDownloadFolder": "系统默认下载文件夹", + "browse": "浏览" + }, "login": { "title": "图床管理", "savedConfigs": "已保存配置", @@ -690,74 +768,6 @@ } } }, - "MANAGE_SETTING_TITLE": "管理页面设置", - "MANAGE_SETTING_ISAUTOREFRESH_TITLE": "每次进入新目录时,是否自动刷新文件列表", - "MANAGE_SETTING_ISAUTOREFRESH_TIPS": "仅对不分页模式有效,默认在加载过一次后自动缓存到数据库来加快下次加载速度", - "MANAGE_SETTING_CLEAR_CACHE_TITLE": "清空文件列表缓存数据库 已占用:", - "MANAGE_SETTING_CLEAR_CACHE_FREE_TITLE": "剩余可用:", - "MANAGE_SETTING_CLEAR_CACHE_TIPS": "清空后下次进入新目录时将会重新加载文件列表", - "MANAGE_SETTING_CLEAR_CACHE_PROMPT": "确定要清空文件列表缓存数据库吗?", - "MANAGE_SETTING_CLEAR_CACHE_BUTTON": "清空", - "MANAGE_SETTING_ISSHOWTHUMBNAIL_TITLE": "图片显示为原图而非默认文件格式图标(需要存储桶可公开访问)", - "MANAGE_SETTING_ISUSEPRESIGNEDURL_TITLE": "使用预签名URL预览图片", - "MANAGE_SETTING_ISSHOWLIST_TITLE": "文件列表默认显示方式", - "MANAGE_SETTING_ISSHOWLIST_ON": "列表", - "MANAGE_SETTING_ISSHOWLIST_OFF": "卡片", - "MANAGE_SETTING_ISFORCECUSTOMURLHTTPS_TITLE": "为自定义域名开启强制HTTPS", - "MANAGE_SETTING_ISFORCECUSTOMURLHTTPS_TIPS": "开启后, 复制链接等操作将会自动为自定义域名添加https前缀", - "MANAGE_SETTING_ISUPLOADKEEPDIRSTRUCTURE_TITLE": "上传时保留目录结构", - "MANAGE_SETTING_ISUPLOADKEEPDIRSTRUCTURE_TIPS": "关闭后会将所有文件展开到指定目录下", - "MANAGE_SETTING_ISDOWNLOADFILEKEEPDIRSTRUCTURE_TITLE_A": "下载", - "MANAGE_SETTING_ISDOWNLOADFILEKEEPDIRSTRUCTURE_TITLE_B": "文件", - "MANAGE_SETTING_ISDOWNLOADFILEKEEPDIRSTRUCTURE_TITLE_C": "时保留目录结构", - "MANAGE_SETTING_ISDOWNLOADFOLDERKEEPDIRSTRUCTURE_TITLE_D": "文件夹", - "MANAGE_SETTING_ISDOWNLOADFILEKEEPDIRSTRUCTURE_TIPS": "开启后,下载时会保留原始目录结构", - "MANAGE_SETTING_MAX_DOWNLOAD_FILE_SIZE_TITLE": "最大同时下载文件数(1-9999)", - "MANAGE_SETTING_MAX_DOWNLOAD_FILE_SIZE_TIPS": "腾讯云由于后端实现不同,该设置不生效", - "MANAGE_SETTING_MAX_DOWNLOAD_FILE_SIZE_INPUT_TIPS": "请输入最大同时下载文件数", - "MANAGE_SETTING_ISIGNORECASE_TITLE": "文件搜索时,是否忽略大小写", - "MANAGE_SETTING_ISIGNORECASE_TIPS": "开启后,搜索时会忽略大小写", - "MANAGE_SETTING_TIMESTAMPRENAME_TITLE": "上传文件时间戳重命名--(优先级最高)", - "MANAGE_SETTING_TIMESTAMPRENAME_TIPS": "开启后,上传文件时会自动重命名为时间戳", - "MANAGE_SETTING_RANDOMSTRINGRENAME_TITLE": "上传文件随机字符串重命名--(优先级中)", - "MANAGE_SETTING_RANDOMSTRINGRENAME_TIPS": "随机字符串长度为20", - "MANAGE_SETTING_CUSTOMRENAME_TITLE": "上传文件自定义重命名--(优先级最低)", - "MANAGE_SETTING_CUSTOMRENAME_TIPS": "请填写自定义重命名格式", - "MANAGE_SETTING_CUSTOM_PATTERN_TITLE": "自定义重命名格式,占位符请参考下表,可自由组合", - "MANAGE_SETTING_CUSTOM_PATTERN_TIPS": "请填写自定义重命名格式", - "MANAGE_SETTING_CUSTOM_PATTERN_TABLE_TITLE": "占位符", - "MANAGE_SETTING_CUSTOM_PATTERN_TABLE_TIPS": "描述", - "MANAGE_SETTING_PRESIGNED_URL_EXPIRE_TITLE": "预签名URL过期时间(单位:秒)", - "MANAGE_SETTING_PRESIGNED_URL_EXPIRE_TIPS": "请填写预签名URL过期时间", - "MANAGE_SETTING_CHOOSE_COPY_FORMAT_TITLE": "选择默认复制的链接格式", - "MANAGE_SETTING_CHOOSE_COPY_FORMAT_MARKDOWN": "Markdown", - "MANAGE_SETTING_CHOOSE_COPY_FORMAT_MARKDOWN_WITH_LINK": "Markdown(带链接)", - "MANAGE_SETTING_CHOOSE_COPY_FORMAT_RAWURL": "原始链接", - "MANAGE_SETTING_CHOOSE_COPY_FORMAT_HTML": "HTML格式", - "MANAGE_SETTING_CHOOSE_COPY_FORMAT_BBCODE": "BBCode格式", - "MANAGE_SETTING_CHOOSE_COPY_FORMAT_CUSTOM": "自定义格式", - "MANAGE_SETTING_CUSTOM_COPY_FORMAT_TITLE": "自定义链接格式($url为链接,$fileName为文件名)", - "MANAGE_SETTING_CUSTOM_COPY_FORMAT_TIPS": "请填写自定义链接格式", - "MANAGE_SETTING_CHOOSE_DOWNLOAD_FOLDER_TITLE": "选择下载目录", - "MANAGE_SETTING_CHOOSE_DOWNLOAD_FOLDER_TIPS": "系统默认下载目录", - "MANAGE_SETTING_CHOOSE_DOWNLOAD_FOLDER_BUTTON": "选择目录", - "MANAGE_SETTING_COPY_MESSAGE": "已复制", - "MANAGE_SETTING_CLEAR_CACHE_SUCCESS": "清除成功", - "MANAGE_SETTING_CLEAR_CACHE_FAILED": "清除失败", - "MANAGE_SETTING_ISENCODEURL_TITLE": "复制链接时进行URL编码", - "MANAGE_SETTING_ISENCODEURL_TIPS": "根据平台选择是否开启", - "MANAGE_NO_DATA": "暂无数据", - "MANAGE_MAIN_PAGE_NEW_BUCKET": "新建存储桶", - "MANAGE_MAIN_PAGE_BACK_TO_HOME": "返回首页", - "MANAGE_MAIN_PAGE_SWITCH_PICBED": "切换图床", - "MANAGE_MAIN_PAGE_SETTING": "设置", - "MANAGE_MAIN_PAGE_SUBMIT": "提交", - "MANAGE_MAIN_PAGE_TIPS": "提示", - "MANAGE_MAIN_PAGE_TIPS_SUCCESS": "创建成功", - "MANAGE_MAIN_PAGE_TIPS_FAILED": "创建失败", - "MANAGE_MAIN_PAGE_BUCKET": "存储桶", - "MANAGE_MAIN_PAGE_GALLERY": "相册", - "MANAGE_MAIN_PAGE_REPOSITORY": "仓库", "MANAGE_BUCKET_PAGE_LOADING_TEXT": "加载文件中...", "MANAGE_BUCKET_PAGE_CUSTOM_URL_SELECT_PLACEHOLDER": "请选择自定义域名", "MANAGE_BUCKET_PAGE_CUSTOM_URL_INPUT_PLACEHOLDER": "请输入自定义域名", @@ -769,6 +779,8 @@ "MANAGE_BUCKET_PAGE_BATCH_COPY_URL_TOOLTIP": "批量复制URL", "MANAGE_BUCKET_PAGE_COPY_FILE_INFO_TOOLTIP": "复制文件信息", "MANAGE_BUCKET_PAGE_FORCE_REFRESH_TOOLTIP": "强制刷新文件列表", + "MANAGE_BUCKET_PAGE_FULLSCREEN_TOOLTIP": "进入全屏模式 (F11)", + "MANAGE_BUCKET_PAGE_EXIT_FULLSCREEN_TOOLTIP": "退出全屏模式 (F11)", "MANAGE_BUCKET_PAGE_SEARCH_PLACEHOLDER": "搜索文件", "MANAGE_BUCKET_PAGE_ROOT_FOLDER": "根目录", "MANAGE_BUCKET_PAGE_FILE_NUMBER": "文件数: ", diff --git a/src/renderer/i18n/locales/zh-TW.json b/src/renderer/i18n/locales/zh-TW.json index 9f93a821..7860e5e1 100644 --- a/src/renderer/i18n/locales/zh-TW.json +++ b/src/renderer/i18n/locales/zh-TW.json @@ -1,7 +1,14 @@ { "app": { "title": "PicList" }, "titleBar": { "alwaysOnTop": "置頂", "close": "關閉", "minimize": "最小化", "miniWindow": "迷你視窗" }, - "common": { "confirm": "確認", "cancel": "取消", "close": "關閉", "reset": "重置", "import": "匯入" }, + "common": { + "confirm": "確認", + "cancel": "取消", + "close": "關閉", + "reset": "重置", + "import": "匯入", + "submit": "提交" + }, "navigation": { "upload": "上傳", "manage": "管理", @@ -690,74 +697,6 @@ } } }, - "MANAGE_SETTING_TITLE": "管理設定", - "MANAGE_SETTING_ISAUTOREFRESH_TITLE": "每次進入新目錄時,是否自動重新整理檔案列表", - "MANAGE_SETTING_ISAUTOREFRESH_TIPS": "僅對不分頁模式有效,預設會在載入後自動快取至資料庫以提升下次載入速度", - "MANAGE_SETTING_CLEAR_CACHE_TITLE": "清空檔案列表快取資料庫 已佔用:", - "MANAGE_SETTING_CLEAR_CACHE_FREE_TITLE": "剩餘可用:", - "MANAGE_SETTING_CLEAR_CACHE_TIPS": "清空後下次進入新目錄時將會重新載入檔案列表", - "MANAGE_SETTING_CLEAR_CACHE_PROMPT": "確定要清空檔案列表快取資料庫嗎?", - "MANAGE_SETTING_CLEAR_CACHE_BUTTON": "清空", - "MANAGE_SETTING_ISSHOWTHUMBNAIL_TITLE": "顯示圖片的原始圖像而非預設的檔案格式圖示(需要存儲桶公開訪問權限)", - "MANAGE_SETTING_ISUSEPRESIGNEDURL_TITLE": "使用預簽名URL预览圖片", - "MANAGE_SETTING_ISSHOWLIST_TITLE": "檔案列表預設顯示方式", - "MANAGE_SETTING_ISSHOWLIST_ON": "列表", - "MANAGE_SETTING_ISSHOWLIST_OFF": "卡片", - "MANAGE_SETTING_ISFORCECUSTOMURLHTTPS_TITLE": "自定義域名啟用強制 HTTPS", - "MANAGE_SETTING_ISFORCECUSTOMURLHTTPS_TIPS": "開啟後,複製鏈結等操作將會自動為自定義域名添加 HTTPS 前綴", - "MANAGE_SETTING_ISUPLOADKEEPDIRSTRUCTURE_TITLE": "保留上傳時的目錄結構", - "MANAGE_SETTING_ISUPLOADKEEPDIRSTRUCTURE_TIPS": "停用後,所有文件將會展開到指定目錄下", - "MANAGE_SETTING_ISDOWNLOADFILEKEEPDIRSTRUCTURE_TITLE_A": "下載", - "MANAGE_SETTING_ISDOWNLOADFILEKEEPDIRSTRUCTURE_TITLE_B": "文件", - "MANAGE_SETTING_ISDOWNLOADFILEKEEPDIRSTRUCTURE_TITLE_C": "時保留目錄結構", - "MANAGE_SETTING_ISDOWNLOADFOLDERKEEPDIRSTRUCTURE_TITLE_D": "目錄", - "MANAGE_SETTING_ISDOWNLOADFILEKEEPDIRSTRUCTURE_TIPS": "啟用後,下載時會保留原始目錄結構", - "MANAGE_SETTING_MAX_DOWNLOAD_FILE_SIZE_TITLE": "最大同時下載檔案數量(1-9999)", - "MANAGE_SETTING_MAX_DOWNLOAD_FILE_SIZE_TIPS": "由於後端實現方式不同,此設定在腾讯云上不生效", - "MANAGE_SETTING_MAX_DOWNLOAD_FILE_SIZE_INPUT_TIPS": "請輸入最大同時下載檔案數量", - "MANAGE_SETTING_ISIGNORECASE_TITLE": "搜尋檔案時,是否忽略大小寫", - "MANAGE_SETTING_ISIGNORECASE_TIPS": "啟用後,搜尋時將會忽略大小寫", - "MANAGE_SETTING_TIMESTAMPRENAME_TITLE": "上傳檔案時間戳重新命名--(最高優先級)", - "MANAGE_SETTING_TIMESTAMPRENAME_TIPS": "啟用後,上傳檔案時將會使用時間戳重新命名", - "MANAGE_SETTING_RANDOMSTRINGRENAME_TITLE": "上傳檔案隨機字符串重新命名--(中優先級)", - "MANAGE_SETTING_RANDOMSTRINGRENAME_TIPS": "隨機字符串長度為20", - "MANAGE_SETTING_CUSTOMRENAME_TITLE": "上傳檔案自定義重新命名--(最低優先級)", - "MANAGE_SETTING_CUSTOMRENAME_TIPS": "啟用後,上傳檔案時將會使用自定義重新命名", - "MANAGE_SETTING_CUSTOM_PATTERN_TITLE": "自訂重新命名格式,占位符請參考下表,可自由組合", - "MANAGE_SETTING_CUSTOM_PATTERN_TIPS": "請輸入自訂重新命名格式", - "MANAGE_SETTING_CUSTOM_PATTERN_TABLE_TITLE": "占位符", - "MANAGE_SETTING_CUSTOM_PATTERN_TABLE_TIPS": "說明", - "MANAGE_SETTING_PRESIGNED_URL_EXPIRE_TITLE": "預設下載鏈結有效期(秒)", - "MANAGE_SETTING_PRESIGNED_URL_EXPIRE_TIPS": "請輸入下載鏈結有效期", - "MANAGE_SETTING_CHOOSE_COPY_FORMAT_TITLE": "選擇預設複製的連結格式", - "MANAGE_SETTING_CHOOSE_COPY_FORMAT_MARKDOWN": "Markdown", - "MANAGE_SETTING_CHOOSE_COPY_FORMAT_MARKDOWN_WITH_LINK": "Markdown(帶連結)", - "MANAGE_SETTING_CHOOSE_COPY_FORMAT_RAWURL": "原始鏈結", - "MANAGE_SETTING_CHOOSE_COPY_FORMAT_HTML": "HTML格式", - "MANAGE_SETTING_CHOOSE_COPY_FORMAT_BBCODE": "BBCode格式", - "MANAGE_SETTING_CHOOSE_COPY_FORMAT_CUSTOM": "自定義格式", - "MANAGE_SETTING_CUSTOM_COPY_FORMAT_TITLE": "自定義鏈結格式($url為原始鏈結,$fileName為檔案名稱)", - "MANAGE_SETTING_CUSTOM_COPY_FORMAT_TIPS": "請輸入自定義鏈結格式", - "MANAGE_SETTING_CHOOSE_DOWNLOAD_FOLDER_TITLE": "選擇下載目錄", - "MANAGE_SETTING_CHOOSE_DOWNLOAD_FOLDER_TIPS": "系統預設下載目錄", - "MANAGE_SETTING_CHOOSE_DOWNLOAD_FOLDER_BUTTON": "選擇目錄", - "MANAGE_SETTING_COPY_MESSAGE": "已複製", - "MANAGE_SETTING_CLEAR_CACHE_SUCCESS": "清除成功", - "MANAGE_SETTING_CLEAR_CACHE_FAILED": "清除失敗", - "MANAGE_SETTING_ISENCODEURL_TITLE": "複製鏈結時編碼", - "MANAGE_SETTING_ISENCODEURL_TIPS": "啟用後,複製鏈結時將會編碼", - "MANAGE_NO_DATA": "暫無數據", - "MANAGE_MAIN_PAGE_NEW_BUCKET": "新建存儲桶", - "MANAGE_MAIN_PAGE_BACK_TO_HOME": "返回首頁", - "MANAGE_MAIN_PAGE_SWITCH_PICBED": "切換圖床", - "MANAGE_MAIN_PAGE_SETTING": "設定", - "MANAGE_MAIN_PAGE_SUBMIT": "提交", - "MANAGE_MAIN_PAGE_TIPS": "提示", - "MANAGE_MAIN_PAGE_TIPS_SUCCESS": "創建成功", - "MANAGE_MAIN_PAGE_TIPS_FAILED": "創建失敗", - "MANAGE_MAIN_PAGE_BUCKET": "存儲桶", - "MANAGE_MAIN_PAGE_GALLERY": "圖庫", - "MANAGE_MAIN_PAGE_REPOSITORY": "倉庫", "MANAGE_BUCKET_PAGE_LOADING_TEXT": "載入檔案中...", "MANAGE_BUCKET_PAGE_CUSTOM_URL_SELECT_PLACEHOLDER": "請選擇自訂域名", "MANAGE_BUCKET_PAGE_CUSTOM_URL_INPUT_PLACEHOLDER": "請輸入自訂域名", @@ -769,6 +708,8 @@ "MANAGE_BUCKET_PAGE_BATCH_COPY_URL_TOOLTIP": "批次複製 URL", "MANAGE_BUCKET_PAGE_COPY_FILE_INFO_TOOLTIP": "複製檔案資訊", "MANAGE_BUCKET_PAGE_FORCE_REFRESH_TOOLTIP": "強制重新整理檔案列表", + "MANAGE_BUCKET_PAGE_FULLSCREEN_TOOLTIP": "進入全螢幕模式 (F11)", + "MANAGE_BUCKET_PAGE_EXIT_FULLSCREEN_TOOLTIP": "退出全螢幕模式 (F11)", "MANAGE_BUCKET_PAGE_SEARCH_PLACEHOLDER": "搜尋檔案", "MANAGE_BUCKET_PAGE_ROOT_FOLDER": "根目錄", "MANAGE_BUCKET_PAGE_FILE_NUMBER": "檔案數:", diff --git a/src/renderer/manage/components/CustomSwitch.vue b/src/renderer/manage/components/CustomSwitch.vue new file mode 100644 index 00000000..8080bae9 --- /dev/null +++ b/src/renderer/manage/components/CustomSwitch.vue @@ -0,0 +1,226 @@ + + + + + diff --git a/src/renderer/manage/pages/BucketPage.vue b/src/renderer/manage/pages/BucketPage.vue index 15b72294..905d704c 100644 --- a/src/renderer/manage/pages/BucketPage.vue +++ b/src/renderer/manage/pages/BucketPage.vue @@ -1,1566 +1,1527 @@ -/* *UI布局和部分样式代码参考了https://github.com/willnewii/qiniuClient *感谢作者@willnewii */