mirror of
https://github.com/BTMuli/TeyvatGuide.git
synced 2025-12-12 09:18:14 +08:00
@@ -31,6 +31,7 @@
|
|||||||
"core:window:allow-set-focus",
|
"core:window:allow-set-focus",
|
||||||
"core:window:allow-set-fullscreen",
|
"core:window:allow-set-fullscreen",
|
||||||
"core:window:allow-show",
|
"core:window:allow-show",
|
||||||
|
"core:window:allow-set-always-on-top",
|
||||||
"core:window:default",
|
"core:window:default",
|
||||||
{
|
{
|
||||||
"identifier": "fs:allow-exists",
|
"identifier": "fs:allow-exists",
|
||||||
|
|||||||
@@ -102,6 +102,7 @@
|
|||||||
"core:window:allow-set-focus",
|
"core:window:allow-set-focus",
|
||||||
"core:window:allow-set-fullscreen",
|
"core:window:allow-set-fullscreen",
|
||||||
"core:window:allow-show",
|
"core:window:allow-show",
|
||||||
|
"core:window:allow-set-always-on-top",
|
||||||
"core:window:default",
|
"core:window:default",
|
||||||
{ "identifier": "fs:allow-exists", "allow": [{ "path": "**" }] },
|
{ "identifier": "fs:allow-exists", "allow": [{ "path": "**" }] },
|
||||||
{ "identifier": "fs:allow-mkdir", "allow": [{ "path": "**" }] },
|
{ "identifier": "fs:allow-mkdir", "allow": [{ "path": "**" }] },
|
||||||
|
|||||||
54
src/components/app/t-pinWin.vue
Normal file
54
src/components/app/t-pinWin.vue
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
<template>
|
||||||
|
<div class="tpw-box" data-html2canvas-ignore>
|
||||||
|
<div class="tpw-btn" @click="switchPin()" :title="isPined ? '取消置顶' : '窗口置顶'">
|
||||||
|
<v-icon :color="isPined ? 'yellow' : 'inherit'">
|
||||||
|
{{ isPined ? "mdi-pin-off" : "mdi-pin" }}
|
||||||
|
</v-icon>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<script lang="ts" setup>
|
||||||
|
import { getCurrentWindow } from "@tauri-apps/api/window";
|
||||||
|
import { onMounted, ref } from "vue";
|
||||||
|
|
||||||
|
import showSnackbar from "../func/snackbar.js";
|
||||||
|
|
||||||
|
const isPined = ref<boolean>(false);
|
||||||
|
|
||||||
|
onMounted(async () => {
|
||||||
|
// 因为无法获取窗口是否置顶,这边手动取消置顶
|
||||||
|
// 详见:https://github.com/tauri-apps/tauri/issues/11078
|
||||||
|
await getCurrentWindow().setAlwaysOnTop(false);
|
||||||
|
});
|
||||||
|
|
||||||
|
async function switchPin(): Promise<void> {
|
||||||
|
isPined.value = !isPined.value;
|
||||||
|
await getCurrentWindow().setAlwaysOnTop(isPined.value);
|
||||||
|
const text = isPined.value ? "已将窗口置顶!" : "已经取消窗口置顶!";
|
||||||
|
showSnackbar({ text: text, color: "success" });
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<style lang="css" scoped>
|
||||||
|
.tpw-box {
|
||||||
|
position: fixed;
|
||||||
|
top: 70px;
|
||||||
|
left: 20px;
|
||||||
|
border: 2px solid var(--common-shadow-8);
|
||||||
|
border-radius: 50%;
|
||||||
|
cursor: pointer;
|
||||||
|
|
||||||
|
:hover {
|
||||||
|
opacity: 0.8;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.tpw-btn {
|
||||||
|
display: flex;
|
||||||
|
width: 24px;
|
||||||
|
height: 24px;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
margin: 5px;
|
||||||
|
rotate: 30deg;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -63,7 +63,7 @@ async function shareContent(): Promise<void> {
|
|||||||
height: 24px;
|
height: 24px;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
padding-right: 2px;
|
padding-right: 3px;
|
||||||
margin: 5px;
|
margin: 5px;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="tbc-box" data-html2canvas-ignore>
|
<div class="tbc-box" data-html2canvas-ignore>
|
||||||
<div class="tbc-btn" @click="switchCollect()" :title="isCollected ? '取消收藏' : '收藏'">
|
<div class="tbc-btn" @click="switchCollect()" :title="isCollected ? '取消收藏' : '收藏'">
|
||||||
<v-icon size="large" :color="isCollected ? 'yellow' : 'inherit'">
|
<v-icon :color="isCollected ? 'yellow' : 'inherit'">
|
||||||
{{ isCollected ? "mdi-star" : "mdi-star-outline" }}
|
{{ isCollected ? "mdi-star" : "mdi-star-outline" }}
|
||||||
</v-icon>
|
</v-icon>
|
||||||
</div>
|
</div>
|
||||||
@@ -57,7 +57,7 @@ watch(
|
|||||||
() => props.data,
|
() => props.data,
|
||||||
async (val) => {
|
async (val) => {
|
||||||
if (val === undefined) return;
|
if (val === undefined) return;
|
||||||
if (isCollected.value === false) return;
|
if (!isCollected.value) return;
|
||||||
const res = await TSUserCollection.updatePostInfo(props.modelValue.toString(), val);
|
const res = await TSUserCollection.updatePostInfo(props.modelValue.toString(), val);
|
||||||
await event.emit("refreshCollect");
|
await event.emit("refreshCollect");
|
||||||
if (!res) {
|
if (!res) {
|
||||||
@@ -76,7 +76,7 @@ watch(
|
|||||||
);
|
);
|
||||||
|
|
||||||
async function switchCollect(): Promise<void> {
|
async function switchCollect(): Promise<void> {
|
||||||
if (isCollected.value === false) {
|
if (!isCollected.value) {
|
||||||
if (props.data === undefined) {
|
if (props.data === undefined) {
|
||||||
showSnackbar({
|
showSnackbar({
|
||||||
text: "未获取到帖子信息",
|
text: "未获取到帖子信息",
|
||||||
@@ -119,10 +119,10 @@ async function switchCollect(): Promise<void> {
|
|||||||
border: 2px solid var(--common-shadow-8);
|
border: 2px solid var(--common-shadow-8);
|
||||||
border-radius: 50%;
|
border-radius: 50%;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
|
||||||
|
|
||||||
.tbc-box:hover {
|
:hover {
|
||||||
opacity: 0.8;
|
opacity: 0.8;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.tbc-btn {
|
.tbc-btn {
|
||||||
@@ -131,7 +131,6 @@ async function switchCollect(): Promise<void> {
|
|||||||
height: 24px;
|
height: 24px;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
padding-right: 2px;
|
|
||||||
margin: 5px;
|
margin: 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<TSwitchTheme />
|
<TSwitchTheme />
|
||||||
|
<TPinWin />
|
||||||
<TShareBtn
|
<TShareBtn
|
||||||
v-show="!loadingEmpty"
|
v-show="!loadingEmpty"
|
||||||
v-model="annoRef"
|
v-model="annoRef"
|
||||||
@@ -26,8 +27,9 @@ import { ref, onMounted, watch, onUnmounted } from "vue";
|
|||||||
import { useRoute } from "vue-router";
|
import { useRoute } from "vue-router";
|
||||||
|
|
||||||
import TaParser from "../components/anno/ta-parser.vue";
|
import TaParser from "../components/anno/ta-parser.vue";
|
||||||
|
import TPinWin from "../components/app/t-pinWin.vue";
|
||||||
|
import TShareBtn from "../components/app/t-shareBtn.vue";
|
||||||
import TSwitchTheme from "../components/app/t-switchTheme.vue";
|
import TSwitchTheme from "../components/app/t-switchTheme.vue";
|
||||||
import TShareBtn from "../components/main/t-shareBtn.vue";
|
|
||||||
import ToLoading from "../components/overlay/to-loading.vue";
|
import ToLoading from "../components/overlay/to-loading.vue";
|
||||||
import { useAppStore } from "../store/modules/app.js";
|
import { useAppStore } from "../store/modules/app.js";
|
||||||
import TGLogger from "../utils/TGLogger.js";
|
import TGLogger from "../utils/TGLogger.js";
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<TSwitchTheme />
|
<TSwitchTheme />
|
||||||
|
<TPinWin />
|
||||||
<TbCollect :model-value="postId" :data="postData" />
|
<TbCollect :model-value="postId" :data="postData" />
|
||||||
<TShareBtn
|
<TShareBtn
|
||||||
v-show="!loadingEmpty"
|
v-show="!loadingEmpty"
|
||||||
@@ -88,8 +89,9 @@ import { webviewWindow } from "@tauri-apps/api";
|
|||||||
import { nextTick, onMounted, onUnmounted, ref, watch } from "vue";
|
import { nextTick, onMounted, onUnmounted, ref, watch } from "vue";
|
||||||
import { useRoute } from "vue-router";
|
import { useRoute } from "vue-router";
|
||||||
|
|
||||||
|
import TPinWin from "../components/app/t-pinWin.vue";
|
||||||
|
import TShareBtn from "../components/app/t-shareBtn.vue";
|
||||||
import TSwitchTheme from "../components/app/t-switchTheme.vue";
|
import TSwitchTheme from "../components/app/t-switchTheme.vue";
|
||||||
import TShareBtn from "../components/main/t-shareBtn.vue";
|
|
||||||
import ToLoading from "../components/overlay/to-loading.vue";
|
import ToLoading from "../components/overlay/to-loading.vue";
|
||||||
import TbCollect from "../components/post/tb-collect.vue";
|
import TbCollect from "../components/post/tb-collect.vue";
|
||||||
import TpAvatar from "../components/post/tp-avatar.vue";
|
import TpAvatar from "../components/post/tp-avatar.vue";
|
||||||
|
|||||||
Reference in New Issue
Block a user