import { useCallback } from 'react';
import styled from 'styled-components';
import { messages } from '../../shared/gettext';
import { useAppContext } from '../context';
import { useHistory } from '../lib/history';
import { RoutePath } from '../lib/routes';
import { useSelector } from '../redux/store';
import { AriaDescription, AriaInput, AriaInputGroup, AriaLabel } from './AriaGroup';
import * as Cell from './cell';
import { BackAction } from './KeyboardNavigation';
import { Layout, SettingsContainer } from './Layout';
import {
NavigationBar,
NavigationContainer,
NavigationItems,
NavigationScrollbars,
TitleBarItem,
} from './NavigationBar';
import SettingsHeader, { HeaderTitle } from './SettingsHeader';
const StyledContent = styled.div({
display: 'flex',
flexDirection: 'column',
flex: 1,
marginBottom: '2px',
});
const StyledCellIcon = styled(Cell.UntintedIcon)({
marginRight: '8px',
});
export default function UserInterfaceSettings() {
const { pop } = useHistory();
const unpinnedWindow = useSelector((state) => state.settings.guiSettings.unpinnedWindow);
return (
{
// TRANSLATORS: Title label in navigation bar
messages.pgettext('user-interface-settings-view', 'User interface settings')
}
{messages.pgettext('user-interface-settings-view', 'User interface settings')}
{(window.env.platform === 'win32' ||
(window.env.platform === 'darwin' && window.env.development)) && (
)}
{unpinnedWindow && (
)}
);
}
function NotificationsSetting() {
const enableSystemNotifications = useSelector(
(state) => state.settings.guiSettings.enableSystemNotifications,
);
const { setEnableSystemNotifications } = useAppContext();
return (
{messages.pgettext('user-interface-settings-view', 'Notifications')}
{messages.pgettext(
'user-interface-settings-view',
'Enable or disable system notifications. The critical notifications will always be displayed.',
)}
);
}
function MonochromaticTrayIconSetting() {
const monochromaticIcon = useSelector((state) => state.settings.guiSettings.monochromaticIcon);
const { setMonochromaticIcon } = useAppContext();
return (
{messages.pgettext('user-interface-settings-view', 'Monochromatic tray icon')}
{messages.pgettext(
'user-interface-settings-view',
'Use a monochromatic tray icon instead of a colored one.',
)}
);
}
function UnpinnedWindowSetting() {
const unpinnedWindow = useSelector((state) => state.settings.guiSettings.unpinnedWindow);
const { setUnpinnedWindow } = useAppContext();
return (
{messages.pgettext('user-interface-settings-view', 'Unpin app from taskbar')}
{messages.pgettext(
'user-interface-settings-view',
'Enable to move the app around as a free-standing window.',
)}
);
}
function StartMinimizedSetting() {
const startMinimized = useSelector((state) => state.settings.guiSettings.startMinimized);
const { setStartMinimized } = useAppContext();
return (
{messages.pgettext('user-interface-settings-view', 'Start minimized')}
{messages.pgettext(
'user-interface-settings-view',
'Show only the tray icon when the app starts.',
)}
);
}
function LanguageButton() {
const history = useHistory();
const { getPreferredLocaleDisplayName } = useAppContext();
const preferredLocale = useSelector((state) => state.settings.guiSettings.preferredLocale);
const localeDisplayName = getPreferredLocaleDisplayName(preferredLocale);
const navigate = useCallback(() => history.push(RoutePath.selectLanguage), [history]);
return (
{
// TRANSLATORS: Navigation button to the 'Language' settings view
messages.pgettext('user-interface-settings-view', 'Language')
}
{localeDisplayName}
);
}