Moved some button to tools tab

This commit is contained in:
pa
2025-09-22 19:54:39 +09:00
committed by Natsumi
parent ee70e61293
commit 215b988261
22 changed files with 333 additions and 189 deletions

View File

@@ -1832,7 +1832,7 @@
formatDateFilter,
getFaviconUrl
} from '../../../shared/utils';
import { getNextDialogIndex } from '../../../shared/utils/base/ui';
import { getNextDialogIndex, redirectToToolsTab } from '../../../shared/utils/base/ui';
import {
useAdvancedSettingsStore,
useAppearanceSettingsStore,
@@ -1894,7 +1894,7 @@
const { logout } = useAuthStore();
const { cachedConfig } = storeToRefs(useAuthStore());
const { applyPlayerModeration, handlePlayerModerationDelete } = useModerationStore();
const { shiftHeld, menuActiveIndex } = storeToRefs(useUiStore());
const { shiftHeld } = storeToRefs(useUiStore());
watch(
() => userDialog.value.loading,
@@ -2309,9 +2309,8 @@
} else if (command === 'Previous Instances') {
showPreviousInstancesUserDialog(D.ref);
} else if (command === 'Manage Gallery') {
// redirect to tools tab
userDialog.value.visible = false;
menuActiveIndex.value = 'tools';
redirectToToolsTab();
} else if (command === 'Invite To Group') {
showInviteGroupDialog('', D.id);
// } else if (command === 'Send Boop') {

View File

@@ -161,9 +161,6 @@
"refresh": "Obnovit",
"logout": "Odhlásit se",
"manage_gallery_inventory_icon": "Manage Photos/Icons/Emojis/Stickers",
"export_friend_list": "Exportovat seznam přátel",
"export_own_avatars": "Exportovat vlastní avatary",
"discord_names": "Discord Jména",
"export_notes": "Exportovat Poznámky "
},
"game_info": {
@@ -542,6 +539,13 @@
}
}
}
},
"tools": {
"export": {
"discord_names": "Discord Jména",
"export_friend_list": "Exportovat seznam přátel",
"export_own_avatars": "Exportovat vlastní avatary"
}
}
},
"side_panel": {

View File

@@ -257,17 +257,34 @@
"calendar": "Calendar",
"calendar_description": "Group Events Calendar"
},
"image": {
"header": "Image",
"image": {},
"user": {
"discord_names_description": "Find the Discord usernames of your VRChat friends",
"export_friend_list_description": "Export your friends list from VRChat",
"export_own_avatars_description": "Export your personal avatars from VRChat"
},
"export": {
"header": "Export",
"export_notes": "Export User Notes",
"export_notes_description": "Export VRCX user memos to VRChat notes",
"discord_names": "Discord Names",
"export_friend_list": "Export Friends List",
"export_own_avatars": "Export Own Avatars"
},
"redirect_message": "This feature is now available on this page.",
"pictures": {
"pictures": {
"vrc_photos": "VRChat Photos",
"steam_screenshots": "Steam Screenshots",
"open_folder": "Open Folder",
"vrc_photos_description": "Opens your VRChat photos folder",
"steam_screenshots_description": "Opens your Steam screenshots folder"
},
"header": "Pictures",
"screenshot": "Screenshot Management",
"screenshot_description": "Manage screenshots and view metadata",
"inventory": "VRC+ Images & Inventory Management",
"inventory_description": "Manage VRC+ Images & Inventory"
},
"user": {
"header": "User",
"export_notes": "Export User Notes",
"export_notes_description": "Export VRCX user memos to VRChat notes"
}
},
"profile": {
@@ -281,9 +298,6 @@
"refresh": "Click to refresh",
"logout": "Logout",
"manage_gallery_inventory_icon": "Manage VRC+ Images & Inventory",
"export_friend_list": "Export Friends List",
"export_own_avatars": "Export Own Avatars",
"discord_names": "Discord Names",
"export_notes": "Export Notes"
},
"game_info": {
@@ -559,9 +573,6 @@
"pictures": {
"pictures": {
"header": "Pictures",
"open_folder": "Open Folder",
"vrc_photos": "VRChat Photos",
"steam_screenshots": "Steam Screenshots",
"auto_delete_old_prints": "Auto Delete Old Prints",
"auto_delete_prints_from_vrc": "Delete Old Prints from VRC when reaching print limit"
}

View File

@@ -255,9 +255,6 @@
"refresh": "Haz clic para actualizar",
"logout": "Cerrar Sesión",
"manage_gallery_inventory_icon": "Gestionar Imágenes de VRC+",
"export_friend_list": "Exportar Lista de Amigos",
"export_own_avatars": "Exportar Avatares Propios",
"discord_names": "Nombres de Discord",
"export_notes": "Exportar Notas"
},
"game_info": {
@@ -654,6 +651,13 @@
}
}
}
},
"tools": {
"export": {
"discord_names": "Nombres de Discord",
"export_friend_list": "Exportar Lista de Amigos",
"export_own_avatars": "Exportar Avatares Propios"
}
}
},
"side_panel": {

View File

@@ -227,9 +227,6 @@
"refresh": "Cliquez pour actualiser",
"logout": "Se déconnecter",
"manage_gallery_inventory_icon": "Gérer les Photos/Icônes/Emojis",
"export_friend_list": "Exporter la liste d'amis",
"export_own_avatars": "Exporter ses propres avatars",
"discord_names": "Pseudonymes Discord",
"export_notes": "Exporter des notes"
},
"game_info": {
@@ -610,6 +607,13 @@
}
}
}
},
"tools": {
"export": {
"discord_names": "Pseudonymes Discord",
"export_friend_list": "Exporter la liste d'amis",
"export_own_avatars": "Exporter ses propres avatars"
}
}
},
"side_panel": {

View File

@@ -153,9 +153,6 @@
"refresh": "Kattints ide a frissítéshez",
"logout": "Kijelentkezés",
"manage_gallery_inventory_icon": "Képek/ikonok/emojik kezelése",
"export_friend_list": "Barátlista exportálása",
"export_own_avatars": "Saját avatarok exportálása",
"discord_names": "Discord nevek",
"export_notes": "Jegyzetek exportálása"
},
"game_info": {
@@ -520,6 +517,13 @@
}
}
}
},
"tools": {
"export": {
"discord_names": "Discord nevek",
"export_friend_list": "Barátlista exportálása",
"export_own_avatars": "Saját avatarok exportálása"
}
}
},
"side_panel": {

View File

@@ -257,17 +257,27 @@
"calendar": "カレンダー",
"calendar_description": "グループのイベントカレンダー"
},
"image": {
"image": {},
"user": {},
"export": {
"header": "エクスポート",
"export_notes": "ユーザーメモのエクスポート",
"export_notes_description": "VRCX ユーザーメモを VRChat ノートにエクスポート",
"discord_names": "Discordの名前",
"export_friend_list": "フレンドリストをエクスポート",
"export_own_avatars": "自分のアバターをエクスポート"
},
"pictures": {
"pictures": {
"vrc_photos": "VRChatの写真",
"steam_screenshots": "Steamのスクリーンショット",
"open_folder": "フォルダを開く"
},
"header": "写真",
"screenshot": "スクリーンショットの管理",
"screenshot_description": "スクリーンショットの管理、メタデータを表示",
"inventory": "VRC+ インベントリの管理",
"inventory_description": "VRC+ ギャラリーとインベントリを管理"
},
"user": {
"header": "ユーザー",
"export_notes": "ユーザーメモのエクスポート",
"export_notes_description": "VRCX ユーザーメモを VRChat ノートにエクスポート"
}
},
"profile": {
@@ -281,9 +291,6 @@
"refresh": "クリックして更新",
"logout": "ログアウト",
"manage_gallery_inventory_icon": "ギャラリー/インベントリを管理",
"export_friend_list": "フレンドリストをエクスポート",
"export_own_avatars": "自分のアバターをエクスポート",
"discord_names": "Discordの名前",
"export_notes": "ノートをエクスポート"
},
"game_info": {
@@ -559,9 +566,6 @@
"pictures": {
"pictures": {
"header": "写真",
"open_folder": "フォルダを開く",
"vrc_photos": "VRChatの写真",
"steam_screenshots": "Steamのスクリーンショット",
"auto_delete_old_prints": "古いプリントを自動削除",
"auto_delete_prints_from_vrc": "プリント上限に達したときVRCから古いプリントを削除"
}
@@ -2205,4 +2209,4 @@
}
}
}
}
}

View File

@@ -153,9 +153,6 @@
"refresh": "새로고침",
"logout": "로그아웃",
"manage_gallery_inventory_icon": "Manage Photos/Icons/Emojis",
"export_friend_list": "친구 목록 내보내기",
"export_own_avatars": "내 아바타 목록 내보내기",
"discord_names": "디스코드 아이디",
"export_notes": "메모 내보내기"
},
"game_info": {
@@ -520,6 +517,13 @@
}
}
}
},
"tools": {
"export": {
"discord_names": "디스코드 아이디",
"export_friend_list": "친구 목록 내보내기",
"export_own_avatars": "내 아바타 목록 내보내기"
}
}
},
"side_panel": {

View File

@@ -153,9 +153,6 @@
"refresh": "Kliknij, aby odświeżyć",
"logout": "Wyloguj się",
"manage_gallery_inventory_icon": "Zarządzaj obrazkami/ikonami/emoji",
"export_friend_list": "Eksportuj listę znajomych",
"export_own_avatars": "Eksportuj własne awatary",
"discord_names": "Nazwy Discord",
"export_notes": "Eksportuj notatki"
},
"game_info": {
@@ -520,6 +517,13 @@
}
}
}
},
"tools": {
"export": {
"discord_names": "Nazwy Discord",
"export_friend_list": "Eksportuj listę znajomych",
"export_own_avatars": "Eksportuj własne awatary"
}
}
},
"side_panel": {

View File

@@ -153,9 +153,6 @@
"refresh": "Clique para atualizar",
"logout": "Encerrar Sessão",
"manage_gallery_inventory_icon": "Gerenciar Fotos/Icones/Emojis",
"export_friend_list": "Exportar Lista de Amigos",
"export_own_avatars": "Exportar os Próprios Avatares",
"discord_names": "Nomes do Discord",
"export_notes": "Exportar Notas"
},
"game_info": {
@@ -520,6 +517,13 @@
}
}
}
},
"tools": {
"export": {
"discord_names": "Nomes do Discord",
"export_friend_list": "Exportar Lista de Amigos",
"export_own_avatars": "Exportar os Próprios Avatares"
}
}
},
"side_panel": {

View File

@@ -258,9 +258,6 @@
"refresh": "Нажмите, чтобы обновить",
"logout": "Выйти",
"manage_gallery_inventory_icon": "Управление Фото/Иконки/Эмодзи",
"export_friend_list": "Экспорт списка друзей",
"export_own_avatars": "Экспортировать свои аватары",
"discord_names": "Имена Discord",
"export_notes": "Экспорт заметок"
},
"game_info": {
@@ -657,6 +654,13 @@
}
}
}
},
"tools": {
"export": {
"discord_names": "Имена Discord",
"export_friend_list": "Экспорт списка друзей",
"export_own_avatars": "Экспортировать свои аватары"
}
}
},
"side_panel": {

View File

@@ -258,9 +258,6 @@
"refresh": "คลิกเพื่อรีเฟรช",
"logout": "ออกจากระบบ",
"manage_gallery_inventory_icon": "จัดการรูปภาพและไอเทม VRC+",
"export_friend_list": "ส่งออกรายชื่อเพื่อน",
"export_own_avatars": "ส่งออกอวาตาร์ของตัวเอง",
"discord_names": "ชื่อ Discord",
"export_notes": "ส่งออกโน้ต"
},
"game_info": {
@@ -521,9 +518,6 @@
"pictures": {
"pictures": {
"header": "รูปภาพ",
"open_folder": "เปิดโฟลเดอร์",
"vrc_photos": "รูปภาพ VRChat",
"steam_screenshots": "สกรีนช็อตของ Steam",
"auto_delete_old_prints": "ลบ Prints เก่าอัตโนมัติ",
"auto_delete_prints_from_vrc": "ลบ Prints เก่าจาก VRC เมื่อถึงขีดจำกัด"
}
@@ -674,6 +668,20 @@
}
}
}
},
"tools": {
"export": {
"discord_names": "ชื่อ Discord",
"export_friend_list": "ส่งออกรายชื่อเพื่อน",
"export_own_avatars": "ส่งออกอวาตาร์ของตัวเอง"
},
"pictures": {
"pictures": {
"vrc_photos": "รูปภาพ VRChat",
"steam_screenshots": "สกรีนช็อตของ Steam",
"open_folder": "เปิดโฟลเดอร์"
}
}
}
},
"side_panel": {
@@ -2116,4 +2124,4 @@
}
}
}
}
}

View File

@@ -153,9 +153,6 @@
"refresh": "Bấm để làm mới",
"logout": "Đăng xuất",
"manage_gallery_inventory_icon": "Quản lý Ảnh/Icons/Emojis",
"export_friend_list": "Xuất dữ liệu danh sách bạn bè",
"export_own_avatars": "Xuất dữ liệu avatar cá nhân",
"discord_names": "Tên Discord",
"export_notes": "Xuất dữ liệu ghi chú"
},
"game_info": {
@@ -520,6 +517,13 @@
}
}
}
},
"tools": {
"export": {
"discord_names": "Tên Discord",
"export_friend_list": "Xuất dữ liệu danh sách bạn bè",
"export_own_avatars": "Xuất dữ liệu avatar cá nhân"
}
}
},
"side_panel": {

View File

@@ -252,22 +252,33 @@
},
"tools": {
"header": "工具",
"redirect_message": "",
"group": {
"header": "组织",
"calendar": "日历",
"calendar_description": "组织活动日历"
},
"image": {
"image": {},
"user": {},
"export": {
"header": "导出",
"export_notes": "导出备注",
"export_notes_description": "导出好友备注到文本文件",
"discord_names": "查看好友的 Discord 名称",
"export_friend_list": "导出好友列表",
"export_own_avatars": "导出自己创建的模型 ID 列表"
},
"pictures": {
"pictures": {
"vrc_photos": "VRChat 截图",
"steam_screenshots": "Steam 截图",
"open_folder": "打开文件夹"
},
"header": "相册",
"screenshot": "截屏管理",
"screenshot_description": "管理截图或查看截图元数据",
"inventory": "拍立得 & 库存管理",
"inventory_description": "管理拍立得 & 库存"
},
"user": {
"header": "用户",
"export_notes": "导出备注",
"export_notes_description": "导出好友备注到文本文件"
}
},
"profile": {
@@ -281,9 +292,6 @@
"refresh": "点击以刷新",
"logout": "退出登录",
"manage_gallery_inventory_icon": "管理相册与库存",
"export_friend_list": "导出好友列表",
"export_own_avatars": "导出自己创建的模型 ID 列表",
"discord_names": "查看好友的 Discord 名称",
"export_notes": "导出备注"
},
"game_info": {
@@ -559,9 +567,6 @@
"pictures": {
"pictures": {
"header": "截图管理",
"open_folder": "打开文件夹",
"vrc_photos": "VRChat 截图",
"steam_screenshots": "Steam 截图",
"auto_delete_old_prints": "自动清理最旧的“拍立得”",
"auto_delete_prints_from_vrc": "当达到存储上限时自动删除最旧的“拍立得”照片"
}

View File

@@ -261,9 +261,6 @@
"refresh": "點擊以重新整理",
"logout": "登出",
"manage_gallery_inventory_icon": "管理相簿 / 圖示 / 表情符號",
"export_friend_list": "匯出好友列表",
"export_own_avatars": "匯出私有角色",
"discord_names": "Discord 名稱",
"export_notes": "匯出備註"
},
"game_info": {
@@ -535,9 +532,6 @@
"pictures": {
"pictures": {
"header": "照片",
"open_folder": "開啟資料夾",
"vrc_photos": "VRChat 照片",
"steam_screenshots": "Steam 截圖",
"auto_delete_old_prints": "自動刪除舊拍立得",
"auto_delete_prints_from_vrc": "達到拍立得上限時,從 VRC 刪除舊拍立得"
}
@@ -695,6 +689,20 @@
}
}
}
},
"tools": {
"export": {
"discord_names": "Discord 名稱",
"export_friend_list": "匯出好友列表",
"export_own_avatars": "匯出私有角色"
},
"pictures": {
"pictures": {
"vrc_photos": "VRChat 照片",
"steam_screenshots": "Steam 截圖",
"open_folder": "開啟資料夾"
}
}
}
},
"side_panel": {

View File

@@ -1,6 +1,8 @@
import { storeToRefs } from 'pinia';
import { useAppearanceSettingsStore } from '../../../stores';
import { useAppearanceSettingsStore, useUiStore } from '../../../stores';
import { THEME_CONFIG } from '../../constants';
import { ElMessage } from 'element-plus';
import { i18n } from '../../../plugin/i18n';
/**
*
@@ -267,6 +269,16 @@ async function getThemeMode(configRepository) {
return { initThemeMode, isDarkMode };
}
function redirectToToolsTab() {
const uiStore = useUiStore();
uiStore.menuActiveIndex = 'tools';
ElMessage({
message: i18n.global.t('view.tools.redirect_message'),
type: 'primary',
duration: 3000
});
}
export {
systemIsDarkMode,
changeAppDarkStyle,
@@ -279,5 +291,6 @@ export {
getNextDialogIndex,
changeHtmlLangAttribute,
setLoginContainerStyle,
getThemeMode
getThemeMode,
redirectToToolsTab
};

View File

@@ -49,29 +49,29 @@
size="small"
:icon="Picture"
style="margin-left: 0; margin-right: 5px; margin-top: 10px"
@click="showGalleryDialog()"
@click="redirectToToolsTab"
>{{ t('view.profile.profile.manage_gallery_inventory_icon') }}</el-button
>
<el-button
size="small"
:icon="ChatDotRound"
style="margin-left: 0; margin-right: 5px; margin-top: 10px"
@click="showDiscordNamesDialog()"
>{{ t('view.profile.profile.discord_names') }}</el-button
@click="redirectToToolsTab"
>{{ t('view.tools.export.discord_names') }}</el-button
>
<el-button
size="small"
:icon="Printer"
style="margin-left: 0; margin-right: 5px; margin-top: 10px"
@click="showExportFriendsListDialog()"
>{{ t('view.profile.profile.export_friend_list') }}</el-button
@click="redirectToToolsTab"
>{{ t('view.tools.export.export_friend_list') }}</el-button
>
<el-button
size="small"
:icon="User"
style="margin-left: 0; margin-right: 5px; margin-top: 10px"
@click="showExportAvatarsListDialog()"
>{{ t('view.profile.profile.export_own_avatars') }}</el-button
@click="redirectToToolsTab"
>{{ t('view.tools.export.export_own_avatars') }}</el-button
>
</div>
</div>
@@ -481,11 +481,6 @@
</template>
</el-tree>
</div>
<DiscordNamesDialog v-model:discordNamesDialogVisible="discordNamesDialogVisible" :friends="friends" />
<ExportFriendsListDialog
v-model:isExportFriendsListDialogVisible="isExportFriendsListDialogVisible"
:friends="friends" />
<ExportAvatarsListDialog v-model:isExportAvatarsListDialogVisible="isExportAvatarsListDialogVisible" />
</div>
</template>
@@ -506,20 +501,11 @@
parseUserUrl,
formatDateFilter
} from '../../shared/utils';
import { redirectToToolsTab } from '../../shared/utils/base/ui';
import { useAuthStore } from '../../stores';
import DiscordNamesDialog from './dialogs/DiscordNamesDialog.vue';
import ExportFriendsListDialog from './dialogs/ExportFriendsListDialog.vue';
import ExportAvatarsListDialog from './dialogs/ExportAvatarsListDialog.vue';
import {
useSearchStore,
useFriendStore,
useUserStore,
useAvatarStore,
useInviteStore,
useUiStore
} from '../../stores';
const { friends } = storeToRefs(useFriendStore());
import { useSearchStore, useUserStore, useAvatarStore, useInviteStore, useUiStore } from '../../stores';
const { pastDisplayNameTable, currentUser } = storeToRefs(useUserStore());
const { showUserDialog, lookupUser, getCurrentUser } = useUserStore();
const { showAvatarDialog } = useAvatarStore();
@@ -542,17 +528,8 @@
const currentUserTreeData = ref([]);
const currentUserFeedbackData = ref([]);
const discordNamesDialogVisible = ref(false);
const isExportFriendsListDialogVisible = ref(false);
const isExportAvatarsListDialogVisible = ref(false);
const visits = ref(0);
// redirect to tools tab
function showGalleryDialog() {
menuActiveIndex.value = 'tools';
}
function getVisits() {
miscRequest.getVisits().then((args) => {
visits.value = args.json;
@@ -563,17 +540,6 @@
miscRequest.getVRChatCredits().then((args) => (vrchatCredit.value = args.json?.balance));
}
function showDiscordNamesDialog() {
discordNamesDialogVisible.value = true;
}
function showExportFriendsListDialog() {
isExportFriendsListDialogVisible.value = true;
}
function showExportAvatarsListDialog() {
isExportAvatarsListDialogVisible.value = true;
}
function promptUsernameDialog() {
ElMessageBox.prompt(t('prompt.direct_access_username.description'), t('prompt.direct_access_username.header'), {
distinguishCancelAndClose: true,

View File

@@ -637,7 +637,7 @@
size="small"
:icon="DocumentCopy"
style="margin-top: 5px"
@click="showNoteExportDialog"
@click="redirectToToolsTab"
>{{ t('view.settings.appearance.user_dialog.export_notes') }}</el-button
>
</div>
@@ -1270,7 +1270,7 @@
<span class="header">{{ t('view.settings.category.pictures') }}</span>
<div class="options-container-item" style="margin-top: 15px">
<el-button-group
><el-button size="small" :icon="Picture" @click="showScreenshotMetadataDialog()">{{
><el-button size="small" :icon="Picture" @click="redirectToToolsTab">{{
t('view.settings.advanced.advanced.screenshot_metadata')
}}</el-button>
</el-button-group>
@@ -1279,14 +1279,14 @@
<!-- redirect to tools tab end -->
<div class="options-container">
<span class="header">{{ t('view.settings.pictures.pictures.open_folder') }}</span>
<span class="header">{{ t('view.tools.pictures.pictures.open_folder') }}</span>
<div class="options-container-item" style="margin-top: 15px">
<el-button-group>
<el-button size="small" :icon="Folder" @click="openVrcPhotosFolder()">{{
t('view.settings.pictures.pictures.vrc_photos')
<el-button size="small" :icon="Folder" @click="redirectToToolsTab">{{
t('view.tools.pictures.pictures.vrc_photos')
}}</el-button>
<el-button size="small" :icon="Folder" @click="openVrcScreenshotsFolder()">{{
t('view.settings.pictures.pictures.steam_screenshots')
<el-button size="small" :icon="Folder" @click="redirectToToolsTab">{{
t('view.tools.pictures.pictures.steam_screenshots')
}}</el-button>
</el-button-group>
</div>
@@ -1488,7 +1488,7 @@
" />
<!--//- Sentry Error Reporting (Nightly Only)-->
<div v-if="isNightlyBuild">
<div v-if="branch === 'Nightly'">
<span class="sub-header">Anonymous Error Reporting (Nightly Only)</span>
<simple-switch
label="Help improve VRCX by sending anonymous error reports. Only collects crash and error information, no personal data or VRChat information is collected."
@@ -1932,6 +1932,7 @@
import FeedFiltersDialog from './dialogs/FeedFiltersDialog.vue';
import AvatarProviderDialog from './dialogs/AvatarProviderDialog.vue';
import { openExternalLink } from '../../shared/utils';
import { redirectToToolsTab } from '../../shared/utils/base/ui';
import { THEME_CONFIG } from '../../shared/constants';
const OpenSourceSoftwareNoticeDialog = defineAsyncComponent(
@@ -2003,6 +2004,7 @@
const { saveOpenVROption, updateVRLastLocation, updateOpenVR, updateVRConfigVars } = useVrStore();
const { clearVRCXCache, showRegistryBackupDialog } = useVrcxStore();
const { setLocalFavoriteFriendsGroups } = useGeneralSettingsStore();
const { branch } = storeToRefs(useVRCXUpdaterStore());
const {
isStartAtWindowsStartup,
@@ -2176,8 +2178,7 @@
notificationOpacity,
autoDeleteOldPrints,
saveInstanceEmoji,
sentryErrorReporting,
isNightlyBuild
sentryErrorReporting
} = storeToRefs(advancedSettingsStore);
const {
@@ -2274,20 +2275,10 @@
feedFiltersDialogMode.value = 'wrist';
}
// redirect to tools tab
function showNoteExportDialog() {
menuActiveIndex.value = 'tools';
}
function showNotificationPositionDialog() {
isNotificationPositionDialogVisible.value = true;
}
// redirect to tools tab
function showScreenshotMetadataDialog() {
menuActiveIndex.value = 'tools';
}
function openVrcxAppDataFolder() {
AppApi.OpenVrcxAppDataFolder().then((result) => {
if (result) {
@@ -2320,38 +2311,6 @@
});
}
function openVrcPhotosFolder() {
AppApi.OpenVrcPhotosFolder().then((result) => {
if (result) {
ElMessage({
message: 'Folder opened',
type: 'success'
});
} else {
ElMessage({
message: "Folder dosn't exist",
type: 'error'
});
}
});
}
function openVrcScreenshotsFolder() {
AppApi.OpenVrcScreenshotsFolder().then((result) => {
if (result) {
ElMessage({
message: 'Folder opened',
type: 'success'
});
} else {
ElMessage({
message: "Folder dosn't exist",
type: 'error'
});
}
});
}
function openCrashVrcCrashDumps() {
AppApi.OpenCrashVrcCrashDumps().then((result) => {
if (result) {

View File

@@ -31,7 +31,7 @@
<el-icon class="rotation-transition" :class="{ 'is-rotated': !categoryCollapsed['image'] }"
><ArrowRight
/></el-icon>
<span class="category-title">{{ t('view.tools.image.header') }}</span>
<span class="category-title">{{ t('view.tools.pictures.header') }}</span>
</div>
<div class="tools-grid" v-show="!categoryCollapsed['image']">
<el-card :body-style="{ padding: '0px' }" class="tool-card">
@@ -40,8 +40,10 @@
<i class="ri-screenshot-2-line"></i>
</div>
<div class="tool-info">
<div class="tool-name">{{ t('view.tools.image.screenshot') }}</div>
<div class="tool-description">{{ t('view.tools.image.screenshot_description') }}</div>
<div class="tool-name">{{ t('view.tools.pictures.screenshot') }}</div>
<div class="tool-description">
{{ t('view.tools.pictures.screenshot_description') }}
</div>
</div>
</div>
</el-card>
@@ -51,8 +53,38 @@
<i class="ri-multi-image-line"></i>
</div>
<div class="tool-info">
<div class="tool-name">{{ t('view.tools.image.inventory') }}</div>
<div class="tool-description">{{ t('view.tools.image.inventory_description') }}</div>
<div class="tool-name">{{ t('view.tools.pictures.inventory') }}</div>
<div class="tool-description">
{{ t('view.tools.pictures.inventory_description') }}
</div>
</div>
</div>
</el-card>
<el-card :body-style="{ padding: '0px' }" class="tool-card">
<div class="tool-content" @click="openVrcPhotosFolder">
<div class="tool-icon">
<i class="ri-folder-image-line"></i>
</div>
<div class="tool-info">
<div class="tool-name">{{ t('view.tools.pictures.pictures.vrc_photos') }}</div>
<div class="tool-description">
{{ t('view.tools.pictures.pictures.vrc_photos_description') }}
</div>
</div>
</div>
</el-card>
<el-card :body-style="{ padding: '0px' }" class="tool-card">
<div class="tool-content" @click="openVrcScreenshotsFolder">
<div class="tool-icon">
<i class="ri-folder-image-line"></i>
</div>
<div class="tool-info">
<div class="tool-name">
{{ t('view.tools.pictures.pictures.steam_screenshots') }}
</div>
<div class="tool-description">
{{ t('view.tools.pictures.pictures.steam_screenshots_description') }}
</div>
</div>
</div>
</el-card>
@@ -64,17 +96,60 @@
<el-icon class="rotation-transition" :class="{ 'is-rotated': !categoryCollapsed['user'] }"
><ArrowRight
/></el-icon>
<span class="category-title">{{ t('view.tools.user.header') }}</span>
<span class="category-title">{{ t('view.tools.export.header') }}</span>
</div>
<div class="tools-grid" v-show="!categoryCollapsed['user']">
<el-card :body-style="{ padding: '0px' }" class="tool-card">
<div class="tool-content" @click="showExportDiscordNamesDialog">
<div class="tool-icon">
<i class="ri-discord-line"></i>
</div>
<div class="tool-info">
<div class="tool-name">{{ t('view.tools.export.discord_names') }}</div>
<div class="tool-description">
{{ t('view.tools.user.discord_names_description') }}
</div>
</div>
</div>
</el-card>
<el-card :body-style="{ padding: '0px' }" class="tool-card">
<div class="tool-content" @click="showNoteExportDialog">
<div class="tool-icon">
<i class="ri-user-shared-line"></i>
</div>
<div class="tool-info">
<div class="tool-name">{{ t('view.tools.user.export_notes') }}</div>
<div class="tool-description">{{ t('view.tools.user.export_notes_description') }}</div>
<div class="tool-name">{{ t('view.tools.export.export_notes') }}</div>
<div class="tool-description">
{{ t('view.tools.export.export_notes_description') }}
</div>
</div>
</div>
</el-card>
<el-card :body-style="{ padding: '0px' }" class="tool-card">
<div class="tool-content" @click="showExportFriendsListDialog">
<div class="tool-icon">
<i class="ri-user-shared-line"></i>
</div>
<div class="tool-info">
<div class="tool-name">{{ t('view.tools.export.export_friend_list') }}</div>
<div class="tool-description">
{{ t('view.tools.user.export_friend_list_description') }}
</div>
</div>
</div>
</el-card>
<el-card :body-style="{ padding: '0px' }" class="tool-card">
<div class="tool-content" @click="showExportAvatarsListDialog">
<div class="tool-icon">
<i class="ri-user-shared-line"></i>
</div>
<div class="tool-info">
<div class="tool-name">{{ t('view.tools.export.export_own_avatars') }}</div>
<div class="tool-description">
{{ t('view.tools.user.export_own_avatars_description') }}
</div>
</div>
</div>
</el-card>
@@ -93,27 +168,40 @@
:isNoteExportDialogVisible="isNoteExportDialogVisible"
@close="isNoteExportDialogVisible = false" />
<GalleryDialog />
<ExportDiscordNamesDialog
v-model:discordNamesDialogVisible="isExportDiscordNamesDialogVisible"
:friends="friends" />
<ExportFriendsListDialog
v-model:isExportFriendsListDialogVisible="isExportFriendsListDialogVisible"
:friends="friends" />
<ExportAvatarsListDialog v-model:isExportAvatarsListDialogVisible="isExportAvatarsListDialogVisible" />
</template>
</div>
</template>
<script setup>
import { ArrowRight } from '@element-plus/icons-vue';
import { ElMessage } from 'element-plus';
import { ref, defineAsyncComponent, computed } from 'vue';
import { useI18n } from 'vue-i18n';
import { storeToRefs } from 'pinia';
import { useUiStore, useGalleryStore } from '../../stores';
import { useUiStore, useGalleryStore, useFriendStore } from '../../stores';
const GroupCalendarDialog = defineAsyncComponent(() => import('./dialogs/GroupCalendarDialog.vue'));
const ScreenshotMetadataDialog = defineAsyncComponent(() => import('./dialogs/ScreenshotMetadataDialog.vue'));
const NoteExportDialog = defineAsyncComponent(() => import('./dialogs/NoteExportDialog.vue'));
const GalleryDialog = defineAsyncComponent(() => import('./dialogs/GalleryDialog.vue'));
const ExportDiscordNamesDialog = defineAsyncComponent(() => import('./dialogs/ExportDiscordNamesDialog.vue'));
const ExportFriendsListDialog = defineAsyncComponent(() => import('./dialogs/ExportFriendsListDialog.vue'));
const ExportAvatarsListDialog = defineAsyncComponent(() => import('./dialogs/ExportAvatarsListDialog.vue'));
const { t } = useI18n();
const uiStore = useUiStore();
const { showGalleryDialog } = useGalleryStore();
const { menuActiveIndex } = storeToRefs(uiStore);
const { friends } = storeToRefs(useFriendStore());
const categoryCollapsed = ref({
group: false,
@@ -124,6 +212,9 @@
const isGroupCalendarDialogVisible = ref(false);
const isScreenshotMetadataDialogVisible = ref(false);
const isNoteExportDialogVisible = ref(false);
const isExportDiscordNamesDialogVisible = ref(false);
const isExportFriendsListDialogVisible = ref(false);
const isExportAvatarsListDialogVisible = ref(false);
const isShowToolsTab = computed(() => menuActiveIndex.value === 'tools');
@@ -142,6 +233,50 @@
const toggleCategory = (category) => {
categoryCollapsed.value[category] = !categoryCollapsed.value[category];
};
function showExportDiscordNamesDialog() {
isExportDiscordNamesDialogVisible.value = true;
}
function showExportFriendsListDialog() {
isExportFriendsListDialogVisible.value = true;
}
function showExportAvatarsListDialog() {
isExportAvatarsListDialogVisible.value = true;
}
function openVrcPhotosFolder() {
AppApi.OpenVrcPhotosFolder().then((result) => {
if (result) {
ElMessage({
message: 'Folder opened',
type: 'success'
});
} else {
ElMessage({
message: "Folder dosn't exist",
type: 'error'
});
}
});
}
function openVrcScreenshotsFolder() {
AppApi.OpenVrcScreenshotsFolder().then((result) => {
if (result) {
ElMessage({
message: 'Folder opened',
type: 'success'
});
} else {
ElMessage({
message: "Folder dosn't exist",
type: 'error'
});
}
});
}
</script>
<style lang="scss" scoped>