xref: /MusicFree/src/pages/home/components/drawer/index.tsx (revision 9cd1998be58aed0294a04c622a9e6d2b9c4fd1bd)
1bf6e62f2S猫头猫import React from 'react';
2e2257bd6S猫头猫import {StyleSheet, View} from 'react-native';
3bf6e62f2S猫头猫import rpx from '@/utils/rpx';
4bf6e62f2S猫头猫import {DrawerContentScrollView} from '@react-navigation/drawer';
5b882a19dS猫头猫import {Button, Card} from 'react-native-paper';
619dc08ecS猫头猫import ListItem from '@/components/base/listItem';
7bf6e62f2S猫头猫import {useNavigation} from '@react-navigation/native';
8bf6e62f2S猫头猫import {ROUTE_PATH} from '@/entry/router';
919dc08ecS猫头猫import ThemeText from '@/components/base/themeText';
1019dc08ecS猫头猫import PageBackground from '@/components/base/pageBackground';
11c7676810S猫头猫import DeviceInfo from 'react-native-device-info';
12*9cd1998bS猫头猫import NativeUtils from '@/native/utils';
13e2257bd6S猫头猫import MusicQueue from '@/core/musicQueue';
14bf6e62f2S猫头猫
154060c00aS猫头猫export default function HomeDrawer(props: any) {
16bf6e62f2S猫头猫    const navigation = useNavigation<any>();
17bf6e62f2S猫头猫    function navigateToSetting(settingType: string) {
18bf6e62f2S猫头猫        navigation.navigate(ROUTE_PATH.SETTING, {
19bf6e62f2S猫头猫            type: settingType,
20bf6e62f2S猫头猫        });
21bf6e62f2S猫头猫    }
223ee62d1bS猫头猫
233ee62d1bS猫头猫    const basicSetting = [
243ee62d1bS猫头猫        {
253ee62d1bS猫头猫            icon: 'cog-outline',
263ee62d1bS猫头猫            title: '基本设置',
273ee62d1bS猫头猫            onPress: () => {
283ee62d1bS猫头猫                navigateToSetting('basic');
293ee62d1bS猫头猫            },
303ee62d1bS猫头猫        },
313ee62d1bS猫头猫        {
323ee62d1bS猫头猫            icon: 'language-javascript',
333ee62d1bS猫头猫            title: '插件设置',
343ee62d1bS猫头猫            onPress: () => {
353ee62d1bS猫头猫                navigateToSetting('plugin');
363ee62d1bS猫头猫            },
373ee62d1bS猫头猫        },
383ee62d1bS猫头猫        {
393ee62d1bS猫头猫            icon: 'tshirt-v-outline',
403ee62d1bS猫头猫            title: '主题设置',
413ee62d1bS猫头猫            onPress: () => {
423ee62d1bS猫头猫                navigateToSetting('theme');
433ee62d1bS猫头猫            },
443ee62d1bS猫头猫        },
453ee62d1bS猫头猫        {
463ee62d1bS猫头猫            icon: 'backup-restore',
473ee62d1bS猫头猫            title: '备份与恢复',
48dec7a5f8S猫头猫            onPress: () => {
49dec7a5f8S猫头猫                navigateToSetting('backup');
50dec7a5f8S猫头猫            },
513ee62d1bS猫头猫        },
520cffb46aS猫头猫        {
530cffb46aS猫头猫            icon: 'information-outline',
540cffb46aS猫头猫            title: '关于',
550cffb46aS猫头猫            onPress: () => {
560cffb46aS猫头猫                navigateToSetting('about');
570cffb46aS猫头猫            },
580cffb46aS猫头猫        },
593ee62d1bS猫头猫    ] as const;
603ee62d1bS猫头猫
61bf6e62f2S猫头猫    return (
6265fc5a50S猫头猫        <>
634060c00aS猫头猫            <PageBackground />
644060c00aS猫头猫            <DrawerContentScrollView {...[props]} style={style.scrollWrapper}>
65bf6e62f2S猫头猫                <View style={style.header}>
66dec7a5f8S猫头猫                    <ThemeText fontSize="appbar" fontWeight="bold">
67dec7a5f8S猫头猫                        {DeviceInfo.getApplicationName()}
68dec7a5f8S猫头猫                    </ThemeText>
69b882a19dS猫头猫                    {/* <IconButton icon={'qrcode-scan'} size={rpx(36)} /> */}
70bf6e62f2S猫头猫                </View>
71bf6e62f2S猫头猫                <Card style={style.card}>
72bf6e62f2S猫头猫                    <Card.Title
738b51f01aS猫头猫                        title={
74dec7a5f8S猫头猫                            <ThemeText fontSize="description">设置</ThemeText>
754060c00aS猫头猫                        }
764060c00aS猫头猫                    />
77dec7a5f8S猫头猫                    <Card.Content style={style.cardContent}>
783ee62d1bS猫头猫                        {basicSetting.map(item => (
79bf6e62f2S猫头猫                            <ListItem
80dec7a5f8S猫头猫                                itemHeight={rpx(110)}
813ee62d1bS猫头猫                                key={item.title}
823ee62d1bS猫头猫                                left={{
833ee62d1bS猫头猫                                    icon: {
843ee62d1bS猫头猫                                        name: item.icon,
853ee62d1bS猫头猫                                        size: 'normal',
863ee62d1bS猫头猫                                        fontColor: 'normal',
873ee62d1bS猫头猫                                    },
883ee62d1bS猫头猫                                    width: rpx(48),
893ee62d1bS猫头猫                                }}
903ee62d1bS猫头猫                                title={item.title}
914060c00aS猫头猫                                onPress={item.onPress}
924060c00aS猫头猫                            />
933ee62d1bS猫头猫                        ))}
94bf6e62f2S猫头猫                    </Card.Content>
95bf6e62f2S猫头猫                </Card>
96bf6e62f2S猫头猫                <View style={style.bottom}>
97bf6e62f2S猫头猫                    <Button
98e2257bd6S猫头猫                        onPress={async () => {
99e2257bd6S猫头猫                            await MusicQueue.reset();
100e2257bd6S猫头猫                            NativeUtils.exitApp();
101bf6e62f2S猫头猫                        }}>
102e2257bd6S猫头猫                        <ThemeText>退出</ThemeText>
103bf6e62f2S猫头猫                    </Button>
104bf6e62f2S猫头猫                </View>
105bf6e62f2S猫头猫            </DrawerContentScrollView>
10665fc5a50S猫头猫        </>
107bf6e62f2S猫头猫    );
108bf6e62f2S猫头猫}
109bf6e62f2S猫头猫
110bf6e62f2S猫头猫const style = StyleSheet.create({
111bf6e62f2S猫头猫    wrapper: {
112bf6e62f2S猫头猫        flex: 1,
113bf6e62f2S猫头猫        backgroundColor: '#999999',
114bf6e62f2S猫头猫    },
115bf6e62f2S猫头猫    scrollWrapper: {
116bf6e62f2S猫头猫        paddingHorizontal: rpx(24),
117bf6e62f2S猫头猫        paddingTop: rpx(12),
118bf6e62f2S猫头猫    },
119bf6e62f2S猫头猫
120bf6e62f2S猫头猫    header: {
121bf6e62f2S猫头猫        height: rpx(100),
122bf6e62f2S猫头猫        width: '100%',
123bf6e62f2S猫头猫        flexDirection: 'row',
124bf6e62f2S猫头猫        justifyContent: 'space-between',
125bf6e62f2S猫头猫        alignItems: 'center',
126bf6e62f2S猫头猫    },
127bf6e62f2S猫头猫    card: {
128bf6e62f2S猫头猫        backgroundColor: '#eeeeee22',
129bf6e62f2S猫头猫    },
130dec7a5f8S猫头猫    cardContent: {
1314060c00aS猫头猫        paddingHorizontal: 0,
132dec7a5f8S猫头猫    },
133bf6e62f2S猫头猫    bottom: {
134bf6e62f2S猫头猫        height: rpx(100),
135bf6e62f2S猫头猫        flexDirection: 'row',
136bf6e62f2S猫头猫        alignItems: 'center',
137bf6e62f2S猫头猫        justifyContent: 'flex-end',
138bf6e62f2S猫头猫    },
139bf6e62f2S猫头猫});
140