Files
kiss-translator/src/views/Options/InputSetting.js

179 lines
4.6 KiB
JavaScript
Raw Normal View History

2023-09-13 15:53:40 +08:00
import Box from "@mui/material/Box";
import Stack from "@mui/material/Stack";
import TextField from "@mui/material/TextField";
import MenuItem from "@mui/material/MenuItem";
import { useI18n } from "../../hooks/I18n";
2023-09-14 14:45:22 +08:00
import {
OPT_TRANS_ALL,
OPT_LANGS_FROM,
OPT_LANGS_TO,
OPT_INPUT_TRANS_SIGNS,
} from "../../config";
2023-09-13 15:53:40 +08:00
import ShortcutInput from "./ShortcutInput";
import FormControlLabel from "@mui/material/FormControlLabel";
import Switch from "@mui/material/Switch";
import { useInputRule } from "../../hooks/InputRule";
import { useCallback } from "react";
2023-09-13 23:24:55 +08:00
import Grid from "@mui/material/Grid";
2023-09-15 20:44:01 +08:00
import { limitNumber } from "../../libs/utils";
2023-09-13 15:53:40 +08:00
export default function InputSetting() {
const i18n = useI18n();
const { inputRule, updateInputRule } = useInputRule();
const handleChange = (e) => {
e.preventDefault();
let { name, value } = e.target;
2023-09-15 20:44:01 +08:00
switch (name) {
case "triggerTime":
value = limitNumber(value, 10, 1000);
break;
default:
}
2023-09-13 15:53:40 +08:00
updateInputRule({
[name]: value,
});
};
const handleShortcutInput = useCallback(
(val) => {
updateInputRule({ triggerShortcut: val });
},
[updateInputRule]
);
const {
transOpen,
translator,
fromLang,
toLang,
triggerShortcut,
triggerCount,
2023-09-15 20:44:01 +08:00
triggerTime,
2023-09-14 14:45:22 +08:00
transSign,
2023-09-13 15:53:40 +08:00
} = inputRule;
return (
<Box>
<Stack spacing={3}>
<FormControlLabel
control={
<Switch
size="small"
name="transOpen"
checked={transOpen}
onChange={() => {
updateInputRule({ transOpen: !transOpen });
}}
/>
}
2023-10-26 13:18:02 +08:00
label={i18n("use_input_box_translation")}
2023-09-13 15:53:40 +08:00
/>
<TextField
select
size="small"
name="translator"
value={translator}
label={i18n("translate_service")}
onChange={handleChange}
>
{OPT_TRANS_ALL.map((item) => (
<MenuItem key={item} value={item}>
{item}
</MenuItem>
))}
</TextField>
<TextField
select
size="small"
name="fromLang"
value={fromLang}
label={i18n("from_lang")}
onChange={handleChange}
>
{OPT_LANGS_FROM.map(([lang, name]) => (
<MenuItem key={lang} value={lang}>
{name}
</MenuItem>
))}
</TextField>
<TextField
select
size="small"
name="toLang"
value={toLang}
label={i18n("to_lang")}
onChange={handleChange}
>
{OPT_LANGS_TO.map(([lang, name]) => (
<MenuItem key={lang} value={lang}>
{name}
</MenuItem>
))}
</TextField>
2023-09-14 14:45:22 +08:00
<TextField
select
size="small"
name="transSign"
value={transSign}
label={i18n("input_trans_start_sign")}
onChange={handleChange}
helperText={i18n("input_trans_start_sign_help")}
>
<MenuItem value={""}>{i18n("style_none")}</MenuItem>
{OPT_INPUT_TRANS_SIGNS.map((item) => (
<MenuItem key={item} value={item}>
{item}
</MenuItem>
))}
</TextField>
2023-09-13 23:24:55 +08:00
<Box>
2023-09-15 20:44:01 +08:00
<Grid container spacing={2} columns={12}>
<Grid item xs={12} sm={12} md={4} lg={4}>
2023-09-13 23:24:55 +08:00
<ShortcutInput
value={triggerShortcut}
onChange={handleShortcutInput}
label={i18n("trigger_trans_shortcut")}
2023-09-14 10:59:50 +08:00
helperText={i18n("trigger_trans_shortcut_help")}
2023-09-13 23:24:55 +08:00
/>
</Grid>
2023-09-15 20:44:01 +08:00
<Grid item xs={12} sm={12} md={4} lg={4}>
2023-09-13 23:24:55 +08:00
<TextField
select
fullWidth
2023-09-15 20:44:01 +08:00
size="small"
2023-09-13 23:24:55 +08:00
name="triggerCount"
value={triggerCount}
label={i18n("shortcut_press_count")}
onChange={handleChange}
>
{[1, 2, 3, 4, 5].map((val) => (
<MenuItem key={val} value={val}>
{val}
</MenuItem>
))}
</TextField>
</Grid>
2023-09-15 20:44:01 +08:00
<Grid item xs={12} sm={12} md={4} lg={4}>
<TextField
fullWidth
size="small"
label={i18n("combo_timeout")}
type="number"
name="triggerTime"
defaultValue={triggerTime}
onChange={handleChange}
/>
</Grid>
2023-09-13 23:24:55 +08:00
</Grid>
</Box>
2023-09-13 15:53:40 +08:00
</Stack>
</Box>
);
}