New WiFi setup views, not functional yet
This commit is contained in:
parent
90ae6df6de
commit
fee67e04aa
|
@ -0,0 +1,103 @@
|
||||||
|
import React from "react";
|
||||||
|
import {
|
||||||
|
StyleSheet,
|
||||||
|
View,
|
||||||
|
StatusBar,
|
||||||
|
ImageBackground,
|
||||||
|
Text,
|
||||||
|
TouchableOpacity,
|
||||||
|
} from "react-native";
|
||||||
|
import EntypoIcon from "react-native-vector-icons/Entypo";
|
||||||
|
|
||||||
|
|
||||||
|
function AdditionalOptionsBottomBar(props) {
|
||||||
|
return (
|
||||||
|
<View style={bottomBarStyles.container}>
|
||||||
|
{ props.leftText ?
|
||||||
|
<TouchableOpacity onPress={props.onLeftPress}>
|
||||||
|
<Text style={bottomBarStyles.text}>{props.leftText} </Text>
|
||||||
|
</TouchableOpacity> : <View></View>
|
||||||
|
}
|
||||||
|
{props.rightText &&
|
||||||
|
<TouchableOpacity onPress={props.onRightPress}>
|
||||||
|
<Text style={bottomBarStyles.text}>{props.rightText}</Text>
|
||||||
|
</TouchableOpacity>
|
||||||
|
}
|
||||||
|
</View>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
const bottomBarStyles = StyleSheet.create({
|
||||||
|
container: {
|
||||||
|
flexDirection: "row",
|
||||||
|
justifyContent: "space-between",
|
||||||
|
paddingBottom: 30,
|
||||||
|
},
|
||||||
|
text: {
|
||||||
|
color: "rgba(255,255,255,0.5)",
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
// ---------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
function SetupView(props) {
|
||||||
|
|
||||||
|
return (
|
||||||
|
<View style={{ flex: 1 }}>
|
||||||
|
|
||||||
|
<StatusBar barStyle="light-content" backgroundColor="rgba(0,0,0,0.4)" translucent={true} />
|
||||||
|
<ImageBackground
|
||||||
|
source={require("../assets/pool_sky_background_blurred.jpg")}
|
||||||
|
resizeMode="cover"
|
||||||
|
style={{ flex: 1 }}
|
||||||
|
>
|
||||||
|
<View style={setupViewStyles.container}>
|
||||||
|
<View style={{ flexDirection: "row", alignItems: "center" }}>
|
||||||
|
{props.backButton &&
|
||||||
|
<TouchableOpacity onPress={props.navigation.goBack}>
|
||||||
|
<EntypoIcon name="chevron-left" style={setupViewStyles.backButton}></EntypoIcon>
|
||||||
|
</TouchableOpacity>
|
||||||
|
}
|
||||||
|
<Text style={setupViewStyles.headerText}>
|
||||||
|
{props.headerText}
|
||||||
|
</Text>
|
||||||
|
</View>
|
||||||
|
{props.children}
|
||||||
|
<AdditionalOptionsBottomBar leftText={props.lowerLeftButtonText}
|
||||||
|
onLeftPress={props.onLowerLeftButtonPress}
|
||||||
|
rightText={props.lowerRightButtonText}
|
||||||
|
onRightPress={props.onLowerRightButtonPress}>
|
||||||
|
</AdditionalOptionsBottomBar>
|
||||||
|
</View>
|
||||||
|
</ImageBackground>
|
||||||
|
</View>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
const setupViewStyles = StyleSheet.create({
|
||||||
|
container: {
|
||||||
|
flex: 1,
|
||||||
|
justifyContent: "space-between",
|
||||||
|
width: "80%",
|
||||||
|
marginLeft: 40,
|
||||||
|
marginTop: 60,
|
||||||
|
},
|
||||||
|
headerText: {
|
||||||
|
color: "rgba(255,255,255,1)",
|
||||||
|
fontSize: 25,
|
||||||
|
},
|
||||||
|
subtext: {
|
||||||
|
color: "rgba(255,255,255,1)",
|
||||||
|
textAlign: "left",
|
||||||
|
fontSize: 18,
|
||||||
|
lineHeight: 25,
|
||||||
|
width: "80%",
|
||||||
|
},
|
||||||
|
backButton: {
|
||||||
|
color: "rgba(255,255,255,1)",
|
||||||
|
fontSize: 40
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
export default SetupView;
|
|
@ -0,0 +1,37 @@
|
||||||
|
import React from "react";
|
||||||
|
import {
|
||||||
|
StyleSheet,
|
||||||
|
Text,
|
||||||
|
ActivityIndicator,
|
||||||
|
} from "react-native";
|
||||||
|
import SetupView from '../components/SetupView';
|
||||||
|
|
||||||
|
|
||||||
|
function ConnectingView(props) {
|
||||||
|
|
||||||
|
return (
|
||||||
|
<SetupView
|
||||||
|
headerText="Connecting..."
|
||||||
|
lowerLeftButtonText="Advanced Setup"
|
||||||
|
lowerRightButtonText="Need help?"
|
||||||
|
>
|
||||||
|
<ActivityIndicator size="large" color="#ffffff" />
|
||||||
|
<Text style={styles.subtext}>
|
||||||
|
Please connect your phone to the WiFi of your SwimTracker
|
||||||
|
</Text>
|
||||||
|
|
||||||
|
</SetupView>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
const styles = StyleSheet.create({
|
||||||
|
subtext: {
|
||||||
|
color: "rgba(255,255,255,1)",
|
||||||
|
textAlign: "left",
|
||||||
|
fontSize: 18,
|
||||||
|
lineHeight: 25,
|
||||||
|
width: "80%",
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
export default ConnectingView;
|
|
@ -0,0 +1,135 @@
|
||||||
|
import React from "react";
|
||||||
|
import {
|
||||||
|
StyleSheet,
|
||||||
|
Text,
|
||||||
|
View,
|
||||||
|
TouchableOpacity,
|
||||||
|
TextInput,
|
||||||
|
} from "react-native";
|
||||||
|
import SetupView from '../components/SetupView';
|
||||||
|
import EvilIcon from "react-native-vector-icons/EvilIcons";
|
||||||
|
import MaterialIcon from "react-native-vector-icons/MaterialCommunityIcons";
|
||||||
|
import themeColors from '../components/themeColors';
|
||||||
|
|
||||||
|
|
||||||
|
function WifiPasswordView(props) {
|
||||||
|
|
||||||
|
let iconName = "wifi-strength-" + props.strength;
|
||||||
|
if (props.lock) {
|
||||||
|
iconName += "-lock";
|
||||||
|
}
|
||||||
|
|
||||||
|
return (
|
||||||
|
<SetupView
|
||||||
|
headerText="WiFi Password"
|
||||||
|
lowerRightButtonText="Need help?"
|
||||||
|
>
|
||||||
|
<Text style={styles.subtext}>
|
||||||
|
{props.subText}
|
||||||
|
</Text>
|
||||||
|
|
||||||
|
<View style={styles.formContainer}>
|
||||||
|
<View style={[styles.row, { backgroundColor: "rgba(155,155,155,0.8)" }]}>
|
||||||
|
<MaterialIcon style={styles.ssidIcon} name={iconName}></MaterialIcon>
|
||||||
|
<Text style={styles.ssidLabel} >{props.ssid}</Text>
|
||||||
|
</View>
|
||||||
|
|
||||||
|
<View style={styles.row}>
|
||||||
|
<EvilIcon name="lock" style={styles.ssidIcon}></EvilIcon>
|
||||||
|
<TextInput style={styles.passwordInput}
|
||||||
|
autoCompleteType="password"
|
||||||
|
placeholder="Password"
|
||||||
|
placeholderTextColor="rgba(255,255,255,0.5)"
|
||||||
|
secureTextEntry={true}
|
||||||
|
></TextInput>
|
||||||
|
</View>
|
||||||
|
|
||||||
|
{props.confirmPwInput &&
|
||||||
|
< View style={styles.row}>
|
||||||
|
<EvilIcon name="lock" style={styles.ssidIcon}></EvilIcon>
|
||||||
|
<TextInput style={styles.passwordInput}
|
||||||
|
autoCompleteType="password"
|
||||||
|
placeholder="Repeat Password"
|
||||||
|
placeholderTextColor="rgba(255,255,255,0.5)"
|
||||||
|
secureTextEntry={true}
|
||||||
|
></TextInput>
|
||||||
|
</View>
|
||||||
|
}
|
||||||
|
|
||||||
|
<TouchableOpacity style={[styles.row, styles.button]}>
|
||||||
|
<Text style={[styles.ssidLabel, { alignSelf: "center", textAlign: "center" }]}>{props.buttonText}</Text>
|
||||||
|
</TouchableOpacity>
|
||||||
|
|
||||||
|
</View>
|
||||||
|
|
||||||
|
</SetupView >
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
WifiPasswordView.defaultProps = {
|
||||||
|
lock: true,
|
||||||
|
strength: 2,
|
||||||
|
ssid: "TheWLANName",
|
||||||
|
confirmPwInput: false,
|
||||||
|
buttonText: "Set Password",
|
||||||
|
subText: "Please enter password for your home WiFi"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
WifiPasswordView.defaultProps = {
|
||||||
|
lock: true,
|
||||||
|
strength: 3,
|
||||||
|
ssid: "swimtracker-E2842S",
|
||||||
|
subText: "Use this option only if you're home WiFi doesn't reach the SwimTracker. The SwimTracker creates its own WiFi with the password you set here.",
|
||||||
|
confirmPwInput: true,
|
||||||
|
buttonText: "Set Password",
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
const styles = StyleSheet.create({
|
||||||
|
subtext: {
|
||||||
|
color: "rgba(255,255,255,1)",
|
||||||
|
textAlign: "left",
|
||||||
|
fontSize: 18,
|
||||||
|
lineHeight: 25,
|
||||||
|
width: "80%",
|
||||||
|
},
|
||||||
|
formContainer: {
|
||||||
|
},
|
||||||
|
row: {
|
||||||
|
backgroundColor: "rgba(255,255,255,0.4)",
|
||||||
|
borderRadius: 5,
|
||||||
|
width: "100%",
|
||||||
|
height: 50,
|
||||||
|
flexDirection: "row",
|
||||||
|
alignItems: "center",
|
||||||
|
marginTop: 5,
|
||||||
|
marginBottom: 5,
|
||||||
|
},
|
||||||
|
ssidLabel: {
|
||||||
|
color: "rgba(255,255,255,1)",
|
||||||
|
fontSize: 18,
|
||||||
|
width: "100%"
|
||||||
|
},
|
||||||
|
button: {
|
||||||
|
marginTop: 20,
|
||||||
|
backgroundColor: themeColors["GREEN SEA"],
|
||||||
|
justifyContent: "center"
|
||||||
|
},
|
||||||
|
ssidIcon: {
|
||||||
|
fontSize: 25,
|
||||||
|
color: "rgba(255,255,255,1)",
|
||||||
|
marginLeft: 15,
|
||||||
|
marginRight: 15,
|
||||||
|
},
|
||||||
|
passwordInput: {
|
||||||
|
height: 30,
|
||||||
|
color: "rgba(255,255,255,1)",
|
||||||
|
width: "100%",
|
||||||
|
fontSize: 18,
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
export default WifiPasswordView;
|
|
@ -0,0 +1,87 @@
|
||||||
|
import React from "react";
|
||||||
|
import {
|
||||||
|
StyleSheet,
|
||||||
|
Text,
|
||||||
|
View,
|
||||||
|
TouchableOpacity,
|
||||||
|
ScrollView,
|
||||||
|
} from "react-native";
|
||||||
|
import SetupView from '../components/SetupView';
|
||||||
|
import MaterialIcon from "react-native-vector-icons/MaterialCommunityIcons";
|
||||||
|
|
||||||
|
|
||||||
|
function WifiListElement(props) {
|
||||||
|
let iconName = "wifi-strength-" + props.strength;
|
||||||
|
if(props.lock) {
|
||||||
|
iconName += "-lock";
|
||||||
|
}
|
||||||
|
|
||||||
|
return (
|
||||||
|
<TouchableOpacity>
|
||||||
|
<View style={wifiListElementStyles.container}>
|
||||||
|
<MaterialIcon style={wifiListElementStyles.icon} name={iconName}></MaterialIcon>
|
||||||
|
<Text style={wifiListElementStyles.text} >{props.text}</Text>
|
||||||
|
</View>
|
||||||
|
</TouchableOpacity>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
const wifiListElementStyles = {
|
||||||
|
container: {
|
||||||
|
backgroundColor: "rgba(255,255,255,0.4)",
|
||||||
|
borderRadius: 5,
|
||||||
|
width: "100%",
|
||||||
|
height: 50,
|
||||||
|
flexDirection: "row",
|
||||||
|
alignItems: "center",
|
||||||
|
marginTop: 8,
|
||||||
|
marginBottom: 8,
|
||||||
|
},
|
||||||
|
icon: {
|
||||||
|
fontSize: 25,
|
||||||
|
color: "rgba(255,255,255,1)",
|
||||||
|
marginLeft: 15,
|
||||||
|
marginRight: 15,
|
||||||
|
},
|
||||||
|
text: {
|
||||||
|
color: "rgba(255,255,255,1)",
|
||||||
|
fontSize: 18,
|
||||||
|
width: "100%"
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// ---------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
function WifiSelectionView(props) {
|
||||||
|
|
||||||
|
return (
|
||||||
|
<SetupView
|
||||||
|
headerText="WiFi Connection"
|
||||||
|
lowerLeftButtonText="My WiFi wasn't found"
|
||||||
|
lowerRightButtonText="Need help?"
|
||||||
|
>
|
||||||
|
<View style={styles.listContainer}>
|
||||||
|
<ScrollView>
|
||||||
|
<WifiListElement text="WLAN" strength="4" lock={true}></WifiListElement>
|
||||||
|
<WifiListElement text="GastWLAN" strength="2" lock={false}></WifiListElement>
|
||||||
|
|
||||||
|
<WifiListElement text="WLAN" strength="4"></WifiListElement>
|
||||||
|
<WifiListElement text="GastWLAN" strength="2"></WifiListElement>
|
||||||
|
|
||||||
|
<WifiListElement text="WLAN" strength="4"></WifiListElement>
|
||||||
|
<WifiListElement text="GastWLAN" strength="2"></WifiListElement>
|
||||||
|
</ScrollView>
|
||||||
|
|
||||||
|
</View>
|
||||||
|
</SetupView>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
const styles = StyleSheet.create({
|
||||||
|
listContainer: {
|
||||||
|
height: "75%",
|
||||||
|
//backgroundColor: "red",
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
export default WifiSelectionView;
|
Loading…
Reference in New Issue