Setting.js 4.36 KB
'use strict';

import React from 'react';
import ReactNative from 'react-native';

const {
    View,
    Text,
    Image,
    Alert,
    TextInput,
    TouchableOpacity,
    StyleSheet,
    Platform,
    Dimensions,
} = ReactNative;

export default class Setting extends React.Component {

    static propTypes = {

    }

    constructor(props) {
        super(props);

        this.nameLength = 0;
        this.signLength = 0;
    }

    _renderSeparator() {
        return (
            <View style={styles.separator}/>
        );
    }

    render() {
        let {setting} = this.props;
        let nickName = setting.nickName;
        let sign = setting.signature;

        return (
            <View style={styles.container}>

                <Text style={styles.tag}>昵称</Text>

                <View style={styles.nameContainer}>
                    <TextInput
                        style={styles.name}
                        placeholder={'昵称'}
                        value={nickName}
                        autoFocus={true}
                        autoCapitalize={'none'}
                        autoCorrect={false}
                        maxLength={20}
                        onChangeText={(text) => {
                            this.nameLength = text.length;
                            this.props.nickNameEdited(text);
                        }}
                        onKeyPress={(event) => {
                            if (this.nameLength >= 20) {
                                Alert.alert('抱歉','超出20字符最长限制');
                            }
                        }}
                    />

                    <TouchableOpacity
                        onPress={() => {
                            this.props.nickNameEdited('');
                        }}
                        style={{
                            width: 41,
                            height: 44,
                            justifyContent: 'center',
                            alignItems: 'center',
                        }}
                    >
                        <Image
                            source={require('../../images/delete.png')}
                        />
                    </TouchableOpacity>

                </View>

                {this._renderSeparator()}

                <Text style={styles.tag}>签名</Text>

                <TextInput
                    ref={(c) => this.signText = c}
                    style={styles.sign}
                    placeholder={'请输入个性签名'}
                    multiline={true}
                    value={sign}
                    autoCapitalize={'none'}
                    autoCorrect={false}
                    maxLength={50}
                    onChangeText={(text) => {
                        this.signLength = text.length;
                        this.props.signEdited(text);
                    }}
                    onKeyPress={(event) => {
                        if (this.signLength >= 50) {
                            Alert.alert('抱歉','超出40字符最长限制');
                        }
                    }}
                />

                {this._renderSeparator()}

                <Text style={[styles.tips, {marginTop: 25,}]}>TIPS:</Text>
                <Text style={styles.tips}>1.社区专属昵称,仅在社区显示</Text>
                <Text style={styles.tips}>2.个性签名最多40字,请控制字数</Text>
            </View>


        );
    }
}



let {width, height} = Dimensions.get('window');
let navbarHeight = (Platform.OS === 'android') ? 50 : 64;

let styles = StyleSheet.create({
    container: {
        backgroundColor: 'white',
    },

    nameContainer: {

        flexDirection: 'row',
        justifyContent: 'space-between',
        alignItems: 'center',
    },

    name: {
        fontFamily: 'Helvetica Light',
        fontSize: 15,
        marginLeft: 15,
        width: width - 55,
        height: 44,
    },

    sign: {
        fontFamily: 'Helvetica Light',
        fontSize: 15,
        margin: 15,
        height: 150,
    },

    separator: {
        height: 0.5,
        backgroundColor: '#e0e0e0',
    },

    tag: {
        fontFamily: 'Helvetica Light',
        fontSize: 15,
        margin: 15,
        marginBottom: 0,
    },

    tips: {
        fontFamily: 'Helvetica Light',
        fontSize: 13,
        margin: 6,
        marginLeft: 15,
        color: '#b0b0b0',
    }
});