Files
suwayomi-material-you-webui/src/components/reader/ReaderSettingsOptions.tsx
T

133 lines
5.8 KiB
TypeScript
Raw Normal View History

/*
* Copyright (C) Contributors to the Suwayomi project
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
2023-02-06 10:06:33 +01:00
import { List, ListItem, ListItemText, Switch } from '@mui/material';
import Select from '@mui/material/Select';
import MenuItem from '@mui/material/MenuItem';
2023-03-23 13:59:32 +01:00
import { useTranslation } from 'react-i18next';
2024-01-21 13:33:13 -08:00
import { AllowedMetadataValueTypes, IReaderSettings } from '@/typings';
import { NumberSetting } from '@/components/settings/NumberSetting.tsx';
import { isFillsPageReaderType } from '@/components/reader/Page.tsx';
interface IProps extends IReaderSettings {
2024-01-21 13:33:13 -08:00
setSettingValue: (key: keyof IReaderSettings, value: AllowedMetadataValueTypes) => void;
}
2023-10-28 00:32:02 +02:00
export function ReaderSettingsOptions({
2023-02-06 10:06:33 +01:00
staticNav,
loadNextOnEnding,
readerType,
showPageNumber,
skipDupChapters,
2023-02-06 10:06:33 +01:00
setSettingValue,
fitPageToWindow,
offsetFirstPage,
2024-01-21 13:33:13 -08:00
readerWidth,
}: IProps) {
2023-03-23 13:59:32 +01:00
const { t } = useTranslation();
2024-01-21 13:33:13 -08:00
const fitPageToWindowEligible = !isFillsPageReaderType(readerType);
return (
2023-03-11 18:05:58 +01:00
<List>
<ListItem>
2023-03-23 13:59:32 +01:00
<ListItemText primary={t('reader.settings.label.static_navigation')} />
<Switch
edge="end"
checked={staticNav}
onChange={(e) => setSettingValue('staticNav', e.target.checked)}
/>
2023-03-11 18:05:58 +01:00
</ListItem>
<ListItem>
2023-03-23 13:59:32 +01:00
<ListItemText primary={t('reader.settings.label.show_page_number')} />
<Switch
edge="end"
checked={showPageNumber}
onChange={(e) => setSettingValue('showPageNumber', e.target.checked)}
/>
2023-03-11 18:05:58 +01:00
</ListItem>
<ListItem>
2023-03-23 13:59:32 +01:00
<ListItemText primary={t('reader.settings.label.load_next_chapter')} />
<Switch
edge="end"
checked={loadNextOnEnding}
onChange={(e) => setSettingValue('loadNextOnEnding', e.target.checked)}
/>
2023-03-11 18:05:58 +01:00
</ListItem>
<ListItem>
<ListItemText primary={t('reader.settings.label.skip_dup_chapters')} />
<Switch
edge="end"
checked={skipDupChapters}
onChange={(e) => setSettingValue('skipDupChapters', e.target.checked)}
/>
</ListItem>
2024-01-21 13:33:13 -08:00
{fitPageToWindowEligible && (
<ListItem>
<ListItemText primary={t('reader.settings.label.fit_page_to_window')} />
<Switch
edge="end"
checked={fitPageToWindow}
onChange={(e) => setSettingValue('fitPageToWindow', e.target.checked)}
/>
</ListItem>
2024-01-21 13:33:13 -08:00
)}
{(readerType === 'DoubleLTR' || readerType === 'DoubleRTL') && (
<ListItem>
<ListItemText primary={t('reader.settings.label.offset_first_page')} />
<Switch
edge="end"
checked={offsetFirstPage}
onChange={(e) => setSettingValue('offsetFirstPage', e.target.checked)}
/>
</ListItem>
2024-01-21 13:33:13 -08:00
)}
{fitPageToWindowEligible && !fitPageToWindow && (
<NumberSetting
settingTitle={t('reader.settings.label.reader_width')}
dialogTitle={t('reader.settings.label.reader_width')}
settingValue={`${readerWidth}%`}
value={readerWidth}
minValue={10}
maxValue={100}
defaultValue={100}
valueUnit="%"
showSlider
handleUpdate={(width: number) => setSettingValue('readerWidth', width)}
listItemTextSx={{ display: 'flex', alignItems: 'center', justifyContent: 'space-between' }}
/>
)}
2023-03-11 18:05:58 +01:00
<ListItem>
2023-03-23 13:59:32 +01:00
<ListItemText primary={t('reader.settings.label.reader_type')} />
2023-03-11 18:05:58 +01:00
<Select
variant="standard"
value={readerType}
onChange={(e) => setSettingValue('readerType', e.target.value)}
sx={{ p: 0 }}
>
2023-03-23 13:59:32 +01:00
<MenuItem value="SingleLTR">{t('reader.settings.reader_type.label.single_page_ltr')}</MenuItem>
<MenuItem value="SingleRTL">{t('reader.settings.reader_type.label.single_page_rtl')}</MenuItem>
2023-03-11 18:05:58 +01:00
{/* <MenuItem value="SingleVertical">
Vertical(WIP)
</MenuItem> */}
2023-03-23 13:59:32 +01:00
<MenuItem value="DoubleLTR">{t('reader.settings.reader_type.label.double_page_ltr')}</MenuItem>
<MenuItem value="DoubleRTL">{t('reader.settings.reader_type.label.double_page_rtl')}</MenuItem>
<MenuItem value="Webtoon">{t('reader.settings.reader_type.label.webtoon')}</MenuItem>
<MenuItem value="ContinuesVertical">
{t('reader.settings.reader_type.label.continuous_vertical')}
</MenuItem>
<MenuItem value="ContinuesHorizontalLTR">
{t('reader.settings.reader_type.label.continuous_horizontal_ltr')}
</MenuItem>
<MenuItem value="ContinuesHorizontalRTL">
{t('reader.settings.reader_type.label.continuous_horizontal_rtl')}
</MenuItem>
2023-03-11 18:05:58 +01:00
</Select>
</ListItem>
</List>
);
}