diff --git a/MenuPage.js b/MenuPage.js index f37b537..4db8bef 100644 --- a/MenuPage.js +++ b/MenuPage.js @@ -7,7 +7,7 @@ import { AS } from "./storageControl"; import TrainBase from "./trainbaseview"; import HowTo from "./howto"; import Menu from "./menu"; -import Setting from "./components/settings.js"; +import Setting from "./components/Settings/settings"; import { useFavoriteStation } from "./stateBox/useFavoriteStation"; import { optionData } from "./lib/stackOption.js"; import CurrentTrainListView from "./components/CurrentTrainListView.js"; @@ -46,7 +46,15 @@ export function MenuPage() { }} children={() => } /> - + { /> )} - {currentStation && + {/* {currentStation && currentStation.map((d) => ( - ))} + ))} */} {currentStation && currentStation[0].JrHpUrl && currentStation[0].StationNumber != "M12" && ( diff --git a/components/Settings/LayoutSettings.js b/components/Settings/LayoutSettings.js new file mode 100644 index 0000000..b5e4724 --- /dev/null +++ b/components/Settings/LayoutSettings.js @@ -0,0 +1,143 @@ +import React from "react"; +import { View, Text, TouchableOpacity, ScrollView } from "react-native"; +import { SwitchArea } from "../atom/SwitchArea"; +import { CheckBox } from "react-native-elements"; + +export const LayoutSettings = ({ + navigate, + iconSetting, + setIconSetting, + mapSwitch, + setMapSwitch, + stationMenu, + setStationMenu, + usePDFView, + setUsePDFView, + trainMenu, + setTrainMenu, + trainPosition, + setTrainPosition, +}) => { + return ( + + + + navigate("settingTopPage")} + style={{ + flexDirection: "column", + flex: 1, + }} + > + + + < 設定 + + + + + + + 設定画面 + + + + + + + + + {stationMenu == "true" && ( + + )} + + {trainMenu == "true" && ( + + )} + + + + ); +}; + +const SimpleSwitch = ({ bool, setBool, str }) => ( + + setBool(bool == "true" ? "false" : "true")} + /> + + {str} + + +); diff --git a/components/Settings/SettingTopPage.js b/components/Settings/SettingTopPage.js new file mode 100644 index 0000000..3873621 --- /dev/null +++ b/components/Settings/SettingTopPage.js @@ -0,0 +1,246 @@ +import React from "react"; +import { + View, + Text, + TouchableOpacity, + ScrollView, + Linking, + Image, +} from "react-native"; +import * as Updates from "expo-updates"; +import { SwitchArea } from "../atom/SwitchArea"; +import { useWindowDimensions } from "react-native"; +import { ListItem } from "native-base"; + +export const SettingTopPage = ({ + navigate, + iconSetting, + setIconSetting, + mapSwitch, + setMapSwitch, + stationMenu, + setStationMenu, + usePDFView, + setUsePDFView, + trainMenu, + setTrainMenu, + trainPosition, + setTrainPosition, + testNFC, + updateAndReload, +}) => { + const { width } = useWindowDimensions(); + return ( + + + + navigate("menu")} + style={{ + flexDirection: "column", + flex: 1, + }} + > + + + 閉じる + + + + + + + アプリの設定画面 + + + + + + + + + + 内部バージョン: 5.0.3.1 + + + + + ReleaseChannel: {Updates.channel} + + + + + + このアプリは、四国旅客鉄道株式会社の提供する列車走行位置表示システムを利用し、HARUKIN/Xprocessにより一部の機能を拡張したものです。 + + + このアプリに関するお問い合わせは、HARUKIN/Xprocessにお願いします。くれぐれも四国旅客鉄道株式会社にはお問い合わせしないようにお願いします。 + + + + + {}}> + + お気に入り登録の管理(工事中) + + + + {">"} + + + navigate("LayoutSettings")} + > + + レイアウト設定 + + + + {">"} + + + + Linking.openURL( + "https://nexcloud.haruk.in/sites/press-harukin/JRShikokuApps/policy" + ) + } + > + + プライバシーポリシー + + + + + Linking.openURL("https://nexcloud.haruk.in/s/2WFEN5oLPGtrRqT") + } + > + + 開発情報 + + + + testNFC()}> + + testNFC + + + + + + + + + 設定を保存して再読み込み + + + + + ); +}; diff --git a/components/Settings/settings.js b/components/Settings/settings.js new file mode 100644 index 0000000..7c40ce3 --- /dev/null +++ b/components/Settings/settings.js @@ -0,0 +1,123 @@ +import React, { useState, useEffect, useLayoutEffect } from "react"; +import { + View, + Text, + TouchableOpacity, + Linking, + ScrollView, + Image, + useWindowDimensions, + ToastAndroid, +} from "react-native"; +import { createStackNavigator } from "@react-navigation/stack"; +import { TransitionPresets } from "@react-navigation/stack"; +import * as ExpoFelicaReader from "../../modules/expo-felica-reader/src"; +import * as Updates from "expo-updates"; +import StatusbarDetect from "../../StatusbarDetect"; +import { AS } from "../../storageControl"; +var Status = StatusbarDetect(); +import { Switch } from "react-native-elements"; +import AutoHeightImage from "react-native-auto-height-image"; +import { SettingTopPage } from "./SettingTopPage"; +import { LayoutSettings } from "./LayoutSettings"; + +const Stack = createStackNavigator(); +export default function Setting(props) { + const { + navigation: { navigate }, + } = props; + const [iconSetting, setIconSetting] = useState(false); + const [mapSwitch, setMapSwitch] = useState(false); + const [stationMenu, setStationMenu] = useState(false); + const [usePDFView, setUsePDFView] = useState(false); + const [trainMenu, setTrainMenu] = useState(false); + const [trainPosition, setTrainPosition] = useState(false); + useLayoutEffect(() => { + AS.getItem("iconSwitch").then(setIconSetting); + AS.getItem("mapSwitch").then(setMapSwitch); + AS.getItem("stationSwitch").then(setStationMenu); + AS.getItem("usePDFView").then(setUsePDFView); + AS.getItem("trainSwitch").then(setTrainMenu); + AS.getItem("trainPositionSwitch").then(setTrainPosition); + }, []); + const testNFC = async () => { + const result = await ExpoFelicaReader.scan(); + alert(result); + }; + const updateAndReload = () => { + Promise.all([ + AS.setItem("iconSwitch", iconSetting.toString()), + AS.setItem("mapSwitch", mapSwitch.toString()), + AS.setItem("stationSwitch", stationMenu.toString()), + AS.setItem("usePDFView", usePDFView.toString()), + AS.setItem("trainSwitch", trainMenu.toString()), + AS.setItem("trainPositionSwitch", trainPosition.toString()), + ]).then(() => Updates.reloadAsync()); + }; + return ( + + + {(props) => ( + + )} + + + {(props) => ( + + )} + + + ); +} diff --git a/components/atom/SimpleSwitch.js b/components/atom/SimpleSwitch.js new file mode 100644 index 0000000..da04c97 --- /dev/null +++ b/components/atom/SimpleSwitch.js @@ -0,0 +1,54 @@ +import { + useWindowDimensions, + View, + TouchableOpacity, + Text, + Image, +} from "react-native"; +export const SimpleSwitch = ({ + bool, + setBool, + color, + value, + image = require("../../assets/icons.png"), + subText = "", +}) => { + const { width } = useWindowDimensions(); + return ( + + setBool(value.toString())} + > + + + + {subText} + + + ); +}; diff --git a/components/atom/SwitchArea.js b/components/atom/SwitchArea.js new file mode 100644 index 0000000..0312130 --- /dev/null +++ b/components/atom/SwitchArea.js @@ -0,0 +1,45 @@ +import { View, Text, Image, TouchableOpacity } from "react-native"; +import { SimpleSwitch } from "./SimpleSwitch"; +export const SwitchArea = ({ + str, + bool, + setBool, + falseImage, + trueImage, + falseText, + trueText, +}) => { + return ( + + + {str} + + + + + + + ); +}; diff --git a/components/settings.js b/components/settings.js deleted file mode 100644 index 061c3fb..0000000 --- a/components/settings.js +++ /dev/null @@ -1,245 +0,0 @@ -import React, { useState, useEffect, useLayoutEffect } from "react"; -import { View, Text, TouchableOpacity, Linking } from "react-native"; -import * as ExpoFelicaReader from "../modules/expo-felica-reader/src"; -import * as Updates from "expo-updates"; -import StatusbarDetect from "../StatusbarDetect"; -import { AS } from "../storageControl"; -var Status = StatusbarDetect(); -import { Switch } from "react-native-elements"; - -export default function Setting() { - const [iconSetting, setIconSetting] = useState(false); - const [mapSwitch, setMapSwitch] = useState(false); - const [stationMenu, setStationMenu] = useState(false); - const [usePDFView, setUsePDFView] = useState(false); - const [trainMenu, setTrainMenu] = useState(false); - const [trainPosition, setTrainPosition] = useState(false); - useLayoutEffect(() => { - AS.getItem("iconSwitch").then(setIconSetting); - AS.getItem("mapSwitch").then(setMapSwitch); - AS.getItem("stationSwitch").then(setStationMenu); - AS.getItem("usePDFView").then(setUsePDFView); - AS.getItem("trainSwitch").then(setTrainMenu); - AS.getItem("trainPositionSwitch").then(setTrainPosition); - }, []); - const testNFC = async () => { - const resulit = await ExpoFelicaReader.scan(); - alert(resulit); - }; - const updateAndReload = () => { - Promise.all([ - AS.setItem("iconSwitch", iconSetting.toString()), - AS.setItem("mapSwitch", mapSwitch.toString()), - AS.setItem("stationSwitch", stationMenu.toString()), - AS.setItem("usePDFView", usePDFView.toString()), - AS.setItem("trainSwitch", trainMenu.toString()), - AS.setItem("trainPositionSwitch", trainPosition.toString()), - ]).then(() => { - Updates.reloadAsync(); - }); - }; - return ( - - - - - 設定画面 - - - - - - 列車アイコンを表示する - - - - - - - マップを表示する(beta) - - - - - - - 駅メニューを表示 - - - - - - - 時刻表PDFをアプリ外で表示 - - - - - - - 列車メニュー - - - - - - - →列車現在位置表示(alpha) - - - - - - - 内部バージョン: 5.0.3.1 - - - - - - releaseChannel: {Updates.channel} - - - - - Linking.openURL( - "https://nexcloud.haruk.in/sites/press-harukin/JRShikokuApps/policy" - ) - } - > - - プライバシーポリシー - - - - - - - - - 設定を保存して再読み込み - - - - - ); -} -const SimpleSwitch = ({ bool, setBool, color }) => ( - setBool(value.toString())} - /> -);