xref: /MusicFree/src/pages/home/components/drawer/index.tsx (revision 4060c00a75883036bbd315fb25c90065209312b3)
1bf6e62f2S猫头猫import React from 'react';
2*4060c00aS猫头猫import {BackHandler, StyleSheet, View} from 'react-native';
3bf6e62f2S猫头猫import rpx from '@/utils/rpx';
4bf6e62f2S猫头猫import {DrawerContentScrollView} from '@react-navigation/drawer';
5bf6e62f2S猫头猫import {Button, Card, IconButton} from 'react-native-paper';
6242960d3S猫头猫import MusicQueue from '@/core/musicQueue';
719dc08ecS猫头猫import ListItem from '@/components/base/listItem';
8bf6e62f2S猫头猫import {useNavigation} from '@react-navigation/native';
9bf6e62f2S猫头猫import {ROUTE_PATH} from '@/entry/router';
1019dc08ecS猫头猫import ThemeText from '@/components/base/themeText';
1119dc08ecS猫头猫import PageBackground from '@/components/base/pageBackground';
12c7676810S猫头猫import DeviceInfo from 'react-native-device-info';
13bf6e62f2S猫头猫
14*4060c00aS猫头猫export default function HomeDrawer(props: any) {
15bf6e62f2S猫头猫    const navigation = useNavigation<any>();
16bf6e62f2S猫头猫    function navigateToSetting(settingType: string) {
17bf6e62f2S猫头猫        navigation.navigate(ROUTE_PATH.SETTING, {
18bf6e62f2S猫头猫            type: settingType,
19bf6e62f2S猫头猫        });
20bf6e62f2S猫头猫    }
213ee62d1bS猫头猫
223ee62d1bS猫头猫    const basicSetting = [
233ee62d1bS猫头猫        {
243ee62d1bS猫头猫            icon: 'cog-outline',
253ee62d1bS猫头猫            title: '基本设置',
263ee62d1bS猫头猫            onPress: () => {
273ee62d1bS猫头猫                navigateToSetting('basic');
283ee62d1bS猫头猫            },
293ee62d1bS猫头猫        },
303ee62d1bS猫头猫        {
313ee62d1bS猫头猫            icon: 'language-javascript',
323ee62d1bS猫头猫            title: '插件设置',
333ee62d1bS猫头猫            onPress: () => {
343ee62d1bS猫头猫                navigateToSetting('plugin');
353ee62d1bS猫头猫            },
363ee62d1bS猫头猫        },
373ee62d1bS猫头猫        {
383ee62d1bS猫头猫            icon: 'tshirt-v-outline',
393ee62d1bS猫头猫            title: '主题设置',
403ee62d1bS猫头猫            onPress: () => {
413ee62d1bS猫头猫                navigateToSetting('theme');
423ee62d1bS猫头猫            },
433ee62d1bS猫头猫        },
443ee62d1bS猫头猫        {
453ee62d1bS猫头猫            icon: 'backup-restore',
463ee62d1bS猫头猫            title: '备份与恢复',
47dec7a5f8S猫头猫            onPress: () => {
48dec7a5f8S猫头猫                navigateToSetting('backup');
49dec7a5f8S猫头猫            },
503ee62d1bS猫头猫        },
513ee62d1bS猫头猫    ] as const;
523ee62d1bS猫头猫
53bf6e62f2S猫头猫    return (
5465fc5a50S猫头猫        <>
55*4060c00aS猫头猫            <PageBackground />
56*4060c00aS猫头猫            <DrawerContentScrollView {...[props]} style={style.scrollWrapper}>
57bf6e62f2S猫头猫                <View style={style.header}>
58dec7a5f8S猫头猫                    <ThemeText fontSize="appbar" fontWeight="bold">
59dec7a5f8S猫头猫                        {DeviceInfo.getApplicationName()}
60dec7a5f8S猫头猫                    </ThemeText>
61*4060c00aS猫头猫                    <IconButton icon={'qrcode-scan'} size={rpx(36)} />
62bf6e62f2S猫头猫                </View>
63bf6e62f2S猫头猫                <Card style={style.card}>
64bf6e62f2S猫头猫                    <Card.Title
658b51f01aS猫头猫                        title={
66dec7a5f8S猫头猫                            <ThemeText fontSize="description">设置</ThemeText>
67*4060c00aS猫头猫                        }
68*4060c00aS猫头猫                    />
69dec7a5f8S猫头猫                    <Card.Content style={style.cardContent}>
703ee62d1bS猫头猫                        {basicSetting.map(item => (
71bf6e62f2S猫头猫                            <ListItem
72dec7a5f8S猫头猫                                itemHeight={rpx(110)}
733ee62d1bS猫头猫                                key={item.title}
743ee62d1bS猫头猫                                left={{
753ee62d1bS猫头猫                                    icon: {
763ee62d1bS猫头猫                                        name: item.icon,
773ee62d1bS猫头猫                                        size: 'normal',
783ee62d1bS猫头猫                                        fontColor: 'normal',
793ee62d1bS猫头猫                                    },
803ee62d1bS猫头猫                                    width: rpx(48),
813ee62d1bS猫头猫                                }}
823ee62d1bS猫头猫                                title={item.title}
83*4060c00aS猫头猫                                onPress={item.onPress}
84*4060c00aS猫头猫                            />
853ee62d1bS猫头猫                        ))}
86bf6e62f2S猫头猫                    </Card.Content>
87bf6e62f2S猫头猫                </Card>
88bf6e62f2S猫头猫                <View style={style.bottom}>
89bf6e62f2S猫头猫                    <Button
90bf6e62f2S猫头猫                        onPress={() => {
91bf6e62f2S猫头猫                            MusicQueue.stop();
92bf6e62f2S猫头猫                            BackHandler.exitApp();
93bf6e62f2S猫头猫                        }}>
94bf6e62f2S猫头猫                        退出
95bf6e62f2S猫头猫                    </Button>
96bf6e62f2S猫头猫                </View>
97bf6e62f2S猫头猫            </DrawerContentScrollView>
9865fc5a50S猫头猫        </>
99bf6e62f2S猫头猫    );
100bf6e62f2S猫头猫}
101bf6e62f2S猫头猫
102bf6e62f2S猫头猫const style = StyleSheet.create({
103bf6e62f2S猫头猫    wrapper: {
104bf6e62f2S猫头猫        flex: 1,
105bf6e62f2S猫头猫        backgroundColor: '#999999',
106bf6e62f2S猫头猫    },
107bf6e62f2S猫头猫    scrollWrapper: {
108bf6e62f2S猫头猫        paddingHorizontal: rpx(24),
109bf6e62f2S猫头猫        paddingTop: rpx(12),
110bf6e62f2S猫头猫    },
111bf6e62f2S猫头猫
112bf6e62f2S猫头猫    header: {
113bf6e62f2S猫头猫        height: rpx(100),
114bf6e62f2S猫头猫        width: '100%',
115bf6e62f2S猫头猫        flexDirection: 'row',
116bf6e62f2S猫头猫        justifyContent: 'space-between',
117bf6e62f2S猫头猫        alignItems: 'center',
118bf6e62f2S猫头猫    },
119bf6e62f2S猫头猫    card: {
120bf6e62f2S猫头猫        backgroundColor: '#eeeeee22',
121bf6e62f2S猫头猫    },
122dec7a5f8S猫头猫    cardContent: {
123*4060c00aS猫头猫        paddingHorizontal: 0,
124dec7a5f8S猫头猫    },
125bf6e62f2S猫头猫    bottom: {
126bf6e62f2S猫头猫        height: rpx(100),
127bf6e62f2S猫头猫        flexDirection: 'row',
128bf6e62f2S猫头猫        alignItems: 'center',
129bf6e62f2S猫头猫        justifyContent: 'flex-end',
130bf6e62f2S猫头猫    },
131bf6e62f2S猫头猫});
132