/**
 * 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";

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 (
      <Modal
        animationType="fade"
        transparent={true}
        visible={this.state.modalVisible}
        onRequestClose={() => {
          this.setState({ modalVisible: false });
        }}
      >
        <View
          style={{
            flex: 1,
            width: "100%",
            height: "100%",
            backgroundColor: "rgba(0, 0, 0, 0.3)",
            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>
    );
  }
}