/**
 * Sample React Native App
 * https://github.com/facebook/react-native
 *
 * @format
 * @flow
 */

import React, { Component } from 'react';
import {
	Platform,
	StyleSheet,
	Text,
	View,
	Image,
	TouchableOpacity,
	ImageBackground,
	TextInput,
	Keyboard,
	Button,
	StatusBar,
	Modal,
	TouchableHighlight,
	DeviceEventEmitter
} from 'react-native';
import ModalView from '../utils/ModalUtil';

type Props = {};
export default class PersonalInfoDialog extends Component<Props> {
	state = {
		modalVisible: false,
		title: 'title',
		placeholder: '',
		touchcolor: 'white',
		touchtextcolor: '#58A8FA',
		touch_cancel_color: 'white',
		touch_cancel_textcolor: '#58A8FA',
		input_text: '',
		updateType: 0, //1修改昵称,2修改学校名称,
		keyBoardHeight: 0
	};

	setModalVisible(visible, type) {
		this.setState({
			modalVisible: visible,
			updateType: type,
			input_text: ''
		});
	}
	setInfo(mytitle, holder) {
		this.setState({
			title: mytitle,
			placeholder: holder
		});
	}

	touchDown() {
		this.setState({
			touchcolor: '#58A8FA',
			touchtextcolor: 'white'
		});
	}
	touchUp() {
		this.setState({
			touchcolor: 'white',
			touchtextcolor: '#58A8FA'
		});
	}
	touchCancelDown() {
		this.setState({
			touch_cancel_color: '#58A8FA',
			touch_cancel_textcolor: 'white'
		});
	}
	touchCancelUp() {
		this.setState({
			touch_cancel_color: 'white',
			touch_cancel_textcolor: '#58A8FA'
		});
	}
	setParentState() {
		this.props.updateParentState(this.state.input_text, this.state.updateType);
		this.setModalVisible(false);
	}
	componentWillMount() {
		this.keyboardDidShowListener = Keyboard.addListener('keyboardDidShow', this._keyboardDidShow);
		this.keyboardDidHideListener = Keyboard.addListener('keyboardDidHide', this._keyboardDidHide);
	}

	componentWillUnmount() {
		this.keyboardDidShowListener.remove();
		this.keyboardDidHideListener.remove();
	}

	_keyboardDidShow = (e) => {
		this.setState({
			keyBoardHeight: 0
		});
	};
	_keyboardDidHide = () => {
		this.setState({
			keyBoardHeight: 0
		});
	};
	render() {
		return (
			<ModalView
				close={() => {
					this.setState({ modalVisible: false });
				}}
				visible={this.state.modalVisible}
				customerlayout={{ flex: 1, justifyContent: 'flex-end' }}
				contentView={this.getView}
			/>
		);
	}

	getView = () => {
		return (
			<Modal
				animationType="slide"
				transparent={true}
				visible={this.state.modalVisible}
				onRequestClose={() => {
					this.setState({ modalVisible: false });
				}}
			>
				<View
					style={{
						flex: 1,
						width: '100%',
						height: '100%',
						flexDirection: 'column',
						justifyContent: 'flex-end'
					}}
				>
					<View
						style={{
							width: '100%',
							height: 150,
							backgroundColor: 'white',
							bottom: this.state.keyBoardHeight
						}}
					>
						<View
							style={{
								height: '100%',
								width: '100%',
								backgroundColor: 'white'
							}}
						>
							<View
								style={{
									flex: 1,
									alignItems: 'center',
									justifyContent: 'center'
								}}
							>
								<Text
									style={{
										flex: 1,
										textAlignVertical: 'center',
										fontSize: 16,
										color: 'black'
									}}
								>
									{this.state.title}
								</Text>
							</View>
							<View
								style={{
									flex: 1,
									alignItems: 'center',
									justifyContent: 'center'
								}}
							>
								<TextInput
									placeholder={this.state.placeholder}
									editable={true} //是否可编辑
									autoFocus={true}
									style={{
										width: '90%',
										height: '90%',
										borderColor: 'black',
										borderWidth: 0,
										marginLeft: 5,
										fontSize: 16
									}}
									onChangeText={(text) =>
										this.setState({
											input_text: text
										})}
								/>
							</View>
							<View
								style={{
									flex: 0.8,
									flexDirection: 'row',
									alignItems: 'center'
								}}
							>
								<View
									style={{
										flex: 5
									}}
								/>
								<View
									style={{
										flex: 2,
										height: '100%',
										borderRadius: 30,
										backgroundColor: this.state.touchcolor,
										alignItems: 'center'
									}}
								>
									<TouchableOpacity
										activeOpacity={1}
										onPressIn={() => this.touchDown()}
										onPressOut={() => this.touchUp()}
										onPress={() => {
											this.setParentState();
										}}
									>
										<Text
											style={{
												height: '100%',
												width: '100%',
												textAlignVertical: 'center',
												textAlign: 'center',
												fontSize: 18,
												borderRadius: 30,
												color: this.state.touchtextcolor
											}}
										>
											确定
										</Text>
									</TouchableOpacity>
								</View>
								<View style={{ flex: 0.5 }} />
								<View
									style={{
										flex: 2,
										height: '100%',
										backgroundColor: this.state.touch_cancel_color,
										alignItems: 'center',
										borderRadius: 30
									}}
								>
									<TouchableOpacity
										activeOpacity={1}
										onPressIn={() => this.touchCancelDown()}
										onPressOut={() => this.touchCancelUp()}
										onPress={() => this.setModalVisible(false)}
									>
										<Text
											style={{
												textAlignVertical: 'center',
												textAlign: 'center',
												height: '100%',
												width: '100%',
												fontSize: 18,
												color: this.state.touch_cancel_textcolor
											}}
										>
											取消
										</Text>
									</TouchableOpacity>
								</View>
								<View style={{ flex: 0.5 }} />
							</View>
							<View style={{ flex: 0.2 }} />
						</View>
					</View>
				</View>
			</Modal>
		);
	};
}