feat: add option to clear custom fonts in Font Panel (#2541)

This commit is contained in:
Huang Xin
2025-11-25 16:19:24 +08:00
committed by GitHub
parent b98c2796c8
commit 0087ce2f19
28 changed files with 71 additions and 40 deletions
@@ -689,5 +689,6 @@
"Convert Mode": "وضع التحويل",
"Failed to auto-save book cover for lock screen: {{error}}": "فشل في الحفظ التلقائي لغلاف الكتاب لشاشة القفل: {{error}}",
"Download from Cloud": "تحميل من السحابة",
"Upload to Cloud": "رفع إلى السحابة"
"Upload to Cloud": "رفع إلى السحابة",
"Clear Custom Fonts": "مسح الخطوط المخصصة"
}
@@ -673,5 +673,6 @@
"Convert Mode": "রূপান্তর মোড",
"Failed to auto-save book cover for lock screen: {{error}}": "লক স্ক্রিনের জন্য বইয়ের মলাট স্বয়ংক্রিয়ভাবে সংরক্ষণ করতে ব্যর্থ: {{error}}",
"Download from Cloud": "ক্লাউড থেকে ডাউনলোড করুন",
"Upload to Cloud": "ক্লাউডে আপলোড করুন"
"Upload to Cloud": "ক্লাউডে আপলোড করুন",
"Clear Custom Fonts": "কাস্টম ফন্টস মুছুন"
}
@@ -669,5 +669,6 @@
"Convert Mode": "བསྒྱུར་བའི་རྣམ་པ",
"Failed to auto-save book cover for lock screen: {{error}}": "སྒྲོམ་སྒོར་དེབ་གནས་བཅས་པའི་སྤྱོད་བྱས་མ་ཐུབ།: {{error}}",
"Download from Cloud": "སྤྲིན་ནས་ཕབ་སྟེ་འབེབས་",
"Upload to Cloud": "སྤྲིན་ལ་ཡར་སྤེལ་"
"Upload to Cloud": "སྤྲིན་ལ་ཡར་སྤེལ་",
"Clear Custom Fonts": "རང་བཞིན་ཡིག་གཟུགས་སུབ་པ།"
}
@@ -673,5 +673,6 @@
"Convert Mode": "Konvertierungsmodus",
"Failed to auto-save book cover for lock screen: {{error}}": "Automatisches Speichern des Buchcovers für den Sperrbildschirm fehlgeschlagen: {{error}}",
"Download from Cloud": "Aus der Cloud herunterladen",
"Upload to Cloud": "In die Cloud hochladen"
"Upload to Cloud": "In die Cloud hochladen",
"Clear Custom Fonts": "Benutzerdefinierte Schriftarten löschen"
}
@@ -673,5 +673,6 @@
"Convert Mode": "Λειτουργία μετατροπής",
"Failed to auto-save book cover for lock screen: {{error}}": "Αποτυχία αυτόματης αποθήκευσης εξωφύλλου βιβλίου για την οθόνη κλειδώματος: {{error}}",
"Download from Cloud": "Λήψη από το Cloud",
"Upload to Cloud": "Ανέβασμα στο Cloud"
"Upload to Cloud": "Ανέβασμα στο Cloud",
"Clear Custom Fonts": "Καθαρισμός προσαρμοσμένων γραμματοσειρών"
}
@@ -677,5 +677,6 @@
"Convert Mode": "Modo de conversión",
"Failed to auto-save book cover for lock screen: {{error}}": "Error al guardar automáticamente la portada del libro para la pantalla de bloqueo: {{error}}",
"Download from Cloud": "Descargar desde la nube",
"Upload to Cloud": "Subir a la nube"
"Upload to Cloud": "Subir a la nube",
"Clear Custom Fonts": "Limpiar fuentes personalizadas"
}
@@ -673,5 +673,6 @@
"Convert Mode": "حالت تبدیل",
"Failed to auto-save book cover for lock screen: {{error}}": "ذخیره‌ی خودکار جلد کتاب برای صفحه‌ی قفل ناموفق بود: {{error}}",
"Download from Cloud": "دانلود از فضای ابری",
"Upload to Cloud": "آپلود به فضای ابری"
"Upload to Cloud": "آپلود به فضای ابری",
"Clear Custom Fonts": "پاک‌کردن فونت‌های سفارشی"
}
@@ -677,5 +677,6 @@
"Convert Mode": "Mode de conversion",
"Failed to auto-save book cover for lock screen: {{error}}": "Échec de l'enregistrement automatique de la couverture du livre pour l'écran de verrouillage : {{error}}",
"Download from Cloud": "Télécharger depuis le Cloud",
"Upload to Cloud": "Téléverser vers le Cloud"
"Upload to Cloud": "Téléverser vers le Cloud",
"Clear Custom Fonts": "Effacer les Polices Personnalisées"
}
@@ -673,5 +673,6 @@
"Convert Mode": "रूपांतरण मोड",
"Failed to auto-save book cover for lock screen: {{error}}": "लॉक स्क्रीन के लिए पुस्तक कवर स्वचालित रूप से सहेजने में विफल: {{error}}",
"Download from Cloud": "क्लाउड से डाउनलोड करें",
"Upload to Cloud": "क्लाउड पर अपलोड करें"
"Upload to Cloud": "क्लाउड पर अपलोड करें",
"Clear Custom Fonts": "कस्टम फ़ॉन्ट साफ़ करें"
}
@@ -669,5 +669,6 @@
"Convert Mode": "Mode Konversi",
"Failed to auto-save book cover for lock screen: {{error}}": "Gagal menyimpan otomatis sampul buku untuk layar kunci: {{error}}",
"Download from Cloud": "Unduh dari Cloud",
"Upload to Cloud": "Unggah ke Cloud"
"Upload to Cloud": "Unggah ke Cloud",
"Clear Custom Fonts": "Bersihkan Font Kustom"
}
@@ -677,5 +677,6 @@
"Convert Mode": "Modalità conversione",
"Failed to auto-save book cover for lock screen: {{error}}": "Impossibile salvare automaticamente la copertina del libro per la schermata di blocco: {{error}}",
"Download from Cloud": "Scarica dal Cloud",
"Upload to Cloud": "Carica sul Cloud"
"Upload to Cloud": "Carica sul Cloud",
"Clear Custom Fonts": "Pulisci Font Personalizzati"
}
@@ -669,5 +669,6 @@
"Convert Mode": "変換モード",
"Failed to auto-save book cover for lock screen: {{error}}": "ロック画面の本のカバーの自動保存に失敗しました:{{error}}",
"Download from Cloud": "クラウドからダウンロード",
"Upload to Cloud": "クラウドにアップロード"
"Upload to Cloud": "クラウドにアップロード",
"Clear Custom Fonts": "カスタムフォントをクリア"
}
@@ -669,5 +669,6 @@
"Convert Mode": "변환 모드",
"Failed to auto-save book cover for lock screen: {{error}}": "잠금 화면용 책 표지 자동 저장 실패: {{error}}",
"Download from Cloud": "클라우드에서 다운로드",
"Upload to Cloud": "클라우드에 업로드"
"Upload to Cloud": "클라우드에 업로드",
"Clear Custom Fonts": "사용자 정의 글꼴 지우기"
}
@@ -673,5 +673,6 @@
"Convert Mode": "Conversiemodus",
"Failed to auto-save book cover for lock screen: {{error}}": "Automatisch opslaan van boekomslag voor vergrendelscherm mislukt: {{error}}",
"Download from Cloud": "Downloaden van Cloud",
"Upload to Cloud": "Uploaden naar Cloud"
"Upload to Cloud": "Uploaden naar Cloud",
"Clear Custom Fonts": "Aangepaste Lettertypen Wissen"
}
@@ -681,5 +681,6 @@
"Convert Mode": "Tryb konwersji",
"Failed to auto-save book cover for lock screen: {{error}}": "Nie udało się automatycznie zapisać okładki książki dla ekranu blokady: {{error}}",
"Download from Cloud": "Pobierz z chmury",
"Upload to Cloud": "Prześlij do chmury"
"Upload to Cloud": "Prześlij do chmury",
"Clear Custom Fonts": "Wyczyść niestandardowe czcionki"
}
@@ -677,5 +677,6 @@
"Convert Mode": "Modo de conversão",
"Failed to auto-save book cover for lock screen: {{error}}": "Falha ao salvar automaticamente a capa do livro para a tela de bloqueio: {{error}}",
"Download from Cloud": "Baixar da Nuvem",
"Upload to Cloud": "Enviar para a Nuvem"
"Upload to Cloud": "Enviar para a Nuvem",
"Clear Custom Fonts": "Limpar Fontes Personalizadas"
}
@@ -681,5 +681,6 @@
"Convert Mode": "Режим преобразования",
"Failed to auto-save book cover for lock screen: {{error}}": "Не удалось автоматически сохранить обложку книги для экрана блокировки: {{error}}",
"Download from Cloud": "Скачать из облака",
"Upload to Cloud": "Загрузить в облако"
"Upload to Cloud": "Загрузить в облако",
"Clear Custom Fonts": "Очистить пользовательские шрифты"
}
@@ -673,5 +673,6 @@
"Convert Mode": "පරිවර්තන මෝඩියුලය",
"Failed to auto-save book cover for lock screen: {{error}}": "අගුළු තිරය සඳහා පොත් ආවරණය ස්වයංක්‍රීයව සුරකිීමට අසමත් විය: {{error}}",
"Download from Cloud": "කලාඬයෙන් බාගත කරන්න",
"Upload to Cloud": "කලාඬයට උඩුගත කරන්න"
"Upload to Cloud": "කලාඬයට උඩුගත කරන්න",
"Clear Custom Fonts": "අභිරුචි අකුරු පැහැදිලි කරන්න"
}
@@ -673,5 +673,6 @@
"Convert Mode": "Konverteringsläge",
"Failed to auto-save book cover for lock screen: {{error}}": "Kunde inte autospara bokomslag för låsskärm: {{error}}",
"Download from Cloud": "Ladda ner från molnet",
"Upload to Cloud": "Ladda upp till molnet"
"Upload to Cloud": "Ladda upp till molnet",
"Clear Custom Fonts": "Rensa anpassade typsnitt"
}
@@ -673,5 +673,6 @@
"Convert Mode": "மாற்ற முறை",
"Failed to auto-save book cover for lock screen: {{error}}": "பூட்டு திரைக்கான புத்தகக் கோப்பை தானாகச் சேமிக்க முடியவில்லை: {{error}}",
"Download from Cloud": "மேகத்திலிருந்து பதிவிறக்கு செய்யவும்",
"Upload to Cloud": "மேகத்திற்கு பதிவேற்றவும்"
"Upload to Cloud": "மேகத்திற்கு பதிவேற்றவும்",
"Clear Custom Fonts": "தனிப்பயன் எழுத்துருக்களை அழிக்கவும்"
}
@@ -669,5 +669,6 @@
"Convert Mode": "โหมดแปลงค่า",
"Failed to auto-save book cover for lock screen: {{error}}": "ไม่สามารถบันทึกปกหนังสือสำหรับหน้าจอล็อกโดยอัตโนมัติ: {{error}}",
"Download from Cloud": "ดาวน์โหลดจากคลาวด์",
"Upload to Cloud": "อัปโหลดไปยังคลาวด์"
"Upload to Cloud": "อัปโหลดไปยังคลาวด์",
"Clear Custom Fonts": "ล้างฟอนต์กำหนดเอง"
}
@@ -673,5 +673,6 @@
"Convert Mode": "Dönüştürme Modu",
"Failed to auto-save book cover for lock screen: {{error}}": "Kitap kapağı kilit ekranı için otomatik kaydedilemedi: {{error}}",
"Download from Cloud": "Buluttan İndir",
"Upload to Cloud": "Buluta Yükle"
"Upload to Cloud": "Buluta Yükle",
"Clear Custom Fonts": "Özel Yazı Tiplerini Temizle"
}
@@ -681,5 +681,6 @@
"Convert Mode": "Режим конвертації",
"Failed to auto-save book cover for lock screen: {{error}}": "Не вдалося автоматично зберегти обкладинку книги для екрана блокування: {{error}}",
"Download from Cloud": "Завантажити з хмари",
"Upload to Cloud": "Завантажити в хмару"
"Upload to Cloud": "Завантажити в хмару",
"Clear Custom Fonts": "Очистити користувацькі шрифти"
}
@@ -669,5 +669,6 @@
"Convert Mode": "Chế độ chuyển đổi",
"Failed to auto-save book cover for lock screen: {{error}}": "Không thể tự động lưu bìa sách cho màn hình khóa: {{error}}",
"Download from Cloud": "Tải xuống từ đám mây",
"Upload to Cloud": "Tải lên đám mây"
"Upload to Cloud": "Tải lên đám mây",
"Clear Custom Fonts": "Xóa phông chữ tùy chỉnh"
}
@@ -669,5 +669,6 @@
"Convert Mode": "转换模式",
"Failed to auto-save book cover for lock screen: {{error}}": "自动保存锁屏书籍封面失败:{{error}}",
"Download from Cloud": "从云端下载",
"Upload to Cloud": "上传到云端"
"Upload to Cloud": "上传到云端",
"Clear Custom Fonts": "清除自定义字体"
}
@@ -669,5 +669,6 @@
"Convert Mode": "轉換模式",
"Failed to auto-save book cover for lock screen: {{error}}": "自動保存鎖定螢幕書籍封面失敗:{{error}}",
"Download from Cloud": "從雲端下載",
"Upload to Cloud": "上傳到雲端"
"Upload to Cloud": "上傳到雲端",
"Clear Custom Fonts": "清除自訂字型"
}
@@ -1,8 +1,10 @@
import clsx from 'clsx';
import React from 'react';
import { MdCheck } from 'react-icons/md';
import { useEnv } from '@/context/EnvContext';
import { useSettingsStore } from '@/store/settingsStore';
import { useTranslation } from '@/hooks/useTranslation';
import { useCustomFontStore } from '@/store/customFontStore';
import { useResponsiveSize } from '@/hooks/useResponsiveSize';
import { SettingsPanelType } from './SettingsDialog';
import MenuItem from '@/components/MenuItem';
@@ -21,8 +23,10 @@ const DialogMenu: React.FC<DialogMenuProps> = ({
resetLabel,
}) => {
const _ = useTranslation();
const { envConfig, appService } = useEnv();
const iconSize = useResponsiveSize(16);
const { setFontPanelView, isSettingsGlobal, setSettingsGlobal } = useSettingsStore();
const { getAllFonts, removeFont, saveCustomFonts } = useCustomFontStore();
const handleToggleGlobal = () => {
setSettingsGlobal(!isSettingsGlobal);
@@ -39,6 +43,16 @@ const DialogMenu: React.FC<DialogMenuProps> = ({
setIsDropdownOpen?.(false);
};
const handleClearCustomFont = () => {
getAllFonts().forEach((font) => {
if (removeFont(font.id)) {
appService!.deleteFont(font);
}
});
saveCustomFonts(envConfig);
setIsDropdownOpen?.(false);
};
return (
<div
className={clsx(
@@ -55,7 +69,10 @@ const DialogMenu: React.FC<DialogMenuProps> = ({
/>
<MenuItem label={resetLabel || _('Reset Settings')} onClick={handleResetToDefaults} />
{activePanel === 'Font' && (
<MenuItem label={_('Manage Custom Fonts')} onClick={handleManageCustomFont} />
<>
<MenuItem label={_('Clear Custom Fonts')} onClick={handleClearCustomFont} />
<MenuItem label={_('Manage Custom Fonts')} onClick={handleManageCustomFont} />
</>
)}
</div>
);
@@ -91,13 +91,7 @@ const FontPanel: React.FC<SettingsPanelPanelProp> = ({ bookKey, onRegisterReset
const { envConfig, appService } = useEnv();
const { getView, getViewSettings } = useReaderStore();
const { settings, fontPanelView, setFontPanelView } = useSettingsStore();
const {
fonts: allCustomFonts,
getAllFonts,
getFontFamilies,
removeFont,
saveCustomFonts,
} = useCustomFontStore();
const { fonts: allCustomFonts, getFontFamilies } = useCustomFontStore();
const viewSettings = getViewSettings(bookKey) || settings.globalViewSettings;
const view = getView(bookKey);
const iconSize18 = useResponsiveSize(18);
@@ -164,12 +158,6 @@ const FontPanel: React.FC<SettingsPanelPanelProp> = ({ bookKey, onRegisterReset
monospaceFont: setMonospaceFont,
fontWeight: setFontWeight,
});
getAllFonts().forEach((font) => {
if (removeFont(font.id)) {
appService!.deleteFont(font);
}
});
saveCustomFonts(envConfig);
};
const handleManageCustomFonts = () => {