Skip to content

Commit

Permalink
feat: 自定义quickpick
Browse files Browse the repository at this point in the history
  • Loading branch information
oeyoews committed Oct 26, 2024
1 parent 958eeb9 commit f135e18
Show file tree
Hide file tree
Showing 5 changed files with 54 additions and 17 deletions.
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"publisher": "oeyoews",
"name": "usewiki2",
"displayName": "usewiki2",
"version": "2.1.0",
"version": "2.2.0",
"private": true,
"packageManager": "[email protected]",
"description": "",
Expand Down
3 changes: 1 addition & 2 deletions packages/react/src/App.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,6 @@ function App() {
// language

messenger.on('changeLanguage', ({ text }) => {
console.log('change language', text);
changeLanguage(text);
// 由于切换lang的情况过多, 暂时不支持用户自定义placeholder
setPlaceholder(t('placeholder'));
Expand All @@ -113,7 +112,7 @@ function App() {
UseWiki2{' '}
<span
className="i-lucide-languages size-4"
onClick={showVsCodeLanguageInputBox}></span>{' '}
onClick={showVsCodeLanguageInputBox}></span>
</h1>
<ContextMenu>
<ContextMenuTrigger className="i-lucide-more-horizontal hidden"></ContextMenuTrigger>
Expand Down
2 changes: 1 addition & 1 deletion src/generated/meta.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
// Meta info
export const publisher = "oeyoews"
export const name = "usewiki2"
export const version = "2.1.0"
export const version = "2.2.0"
export const displayName = "usewiki2"
export const description = undefined
export const extensionId = `${publisher}.${name}`
Expand Down
15 changes: 2 additions & 13 deletions src/webviews/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import * as openWikiCmd from '../commands/openWikiCmd';
import { WebviewMessenger } from '../utils/extensionMessenger';
import { config, enableSendSound, getLang } from '../config';
import { ILanguage } from '../../packages/react/src/i18n';
import { showLanguagePicker } from './showLangPicker';

interface ILanguageOptions extends vscode.QuickPickItem {
value: ILanguage;
Expand Down Expand Up @@ -66,19 +67,7 @@ export class usewikiViewProvider implements vscode.WebviewViewProvider {
// console.log('current lang is', getLang());
messenger.send('changeLanguage', { text: getLang() });
messenger.on('showVsCodeLanguageInputBox', async () => {
// 选择不同的语言 en, zhCN 下拉框
const langItem = await vscode.window.showQuickPick(langOptions, {
title: 'Setup Usewiki2 Language',
placeHolder: 'Select Language',
canPickMany: false,
matchOnDetail: true,
onDidSelectItem: (item) => {
// TODO: 如何实时预览切换, 并且在取消时恢复, 是否回多次触发输入时
},
});
if (!langItem) return;
messenger.send('changeLanguage', { text: langItem.value });
config().update('lang', langItem.value, true);
showLanguagePicker(messenger);
});

messenger.on('openLink', (data) => {
Expand Down
49 changes: 49 additions & 0 deletions src/webviews/showLangPicker.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
import * as vscode from 'vscode';
import { config, getLang } from '../config';

import { WebviewMessenger } from '../utils/extensionMessenger';

export async function showLanguagePicker(messenger: WebviewMessenger) {
const langOptions: vscode.QuickPickItem[] = [
{ label: 'English', description: 'en' },
{ label: '中文', description: 'zhCN' },
];

// 存储原始语言设置,用于恢复
const originalLanguage = getLang(); // 自定义函数,假设获取当前语言
const activeItemIndex = langOptions.findIndex(
(opt) => opt.description === originalLanguage
);

// 创建自定义 QuickPick
const quickPick = vscode.window.createQuickPick();
quickPick.items = langOptions;
quickPick.title = 'Setup Usewiki2 Language';
quickPick.placeholder = 'Select Language';
quickPick.activeItems = [langOptions[activeItemIndex]];

// TODO: selection 不起作用, 用active 的话accept 的时候也会触发active 事件
// 当选择变化时实时预览
// quickPick.onDidChangeSelection((selectedItems) => {
// console.log(selectedItems[0].description, 'active');
// if (selectedItems.length > 0) {
// const selectedLanguage = selectedItems[0].description;
// messenger.send('changeLanguage', { text: selectedLanguage });
// }
// });

// 监听取消操作,恢复原始语言设置
// quickPick.onDidHide((item) => {
// messenger.send('changeLanguage', { text: originalLanguage });
// quickPick.dispose();
// });

// 确认选择并应用
quickPick.onDidAccept(() => {
const selectedLanguage = quickPick.selectedItems[0].description;
config().update('lang', selectedLanguage, true);
quickPick.dispose();
});

quickPick.show();
}

0 comments on commit f135e18

Please sign in to comment.