Browse Source

locale wip

master
Henning Hall 7 years ago
parent
commit
2261adc1ff
6 changed files with 72 additions and 15 deletions
  1. +1
    -1
      android/src/main/java/com/henninghall/date_picker/DatePickerManager.java
  2. +0
    -1
      android/src/main/java/com/henninghall/date_picker/wheels/DayWheel.java
  3. +2
    -2
      android/src/main/java/com/henninghall/date_picker/wheels/HourWheel.java
  4. +15
    -4
      android/src/main/java/com/henninghall/date_picker/wheels/Wheel.java
  5. +51
    -4
      example/App.js
  6. +3
    -3
      example/yarn.lock

+ 1
- 1
android/src/main/java/com/henninghall/date_picker/DatePickerManager.java View File

@ -38,7 +38,7 @@ public class DatePickerManager extends SimpleViewManager {
@ReactProp(name = "locale")
public void setLocale(PickerView view, @Nullable String locale) {
view.setLocale(LocaleUtils.toLocale(locale));
view.setLocale(LocaleUtils.toLocale(locale.replace('-','_')));
}
public Map getExportedCustomBubblingEventTypeConstants() {

+ 0
- 1
android/src/main/java/com/henninghall/date_picker/wheels/DayWheel.java View File

@ -24,7 +24,6 @@ public class DayWheel extends Wheel {
Calendar cal = Calendar.getInstance();
cal.add(Calendar.DAY_OF_MONTH, -5000);
for(int i=0; i<=(max-min); i++){
values.add(format.format(cal.getTime()));
cal.add(Calendar.DAY_OF_MONTH, 1);

+ 2
- 2
android/src/main/java/com/henninghall/date_picker/wheels/HourWheel.java View File

@ -18,14 +18,14 @@ public class HourWheel extends Wheel {
void init() {
int numberOfHours = Utils.usesAmPm(locale) ? 12 : 24;
for(int i=0; i<numberOfHours; i++) {
values.add(format.format(cal.getTime()));
cal.add(Calendar.HOUR_OF_DAY, 1);
}
picker.setDisplayedValues(values.toArray(new String[0]));
picker.setDisplayedValues(values.toArray(new String[0]),true);
picker.setMinValue(0);
picker.setMaxValue(numberOfHours - 1);
}
@Override

+ 15
- 4
android/src/main/java/com/henninghall/date_picker/wheels/Wheel.java View File

@ -1,6 +1,8 @@
package com.henninghall.date_picker.wheels;
import android.view.ViewGroup;
import android.view.ViewManager;
import android.view.ViewParent;
import com.henninghall.date_picker.WheelChangeListener;
@ -15,6 +17,8 @@ import cn.carbswang.android.numberpickerview.library.NumberPickerView;
public abstract class Wheel {
private final ViewGroup parent;
abstract void init();
abstract boolean visible();
abstract String getFormatTemplate();
@ -29,8 +33,7 @@ public abstract class Wheel {
Wheel(NumberPickerView picker, final WheelChangeListener listener, Locale locale){
this.locale = locale;
this.picker = picker;
this.values = new ArrayList<>();
this.format = new SimpleDateFormat(getFormatTemplate(), locale);
this.parent = (ViewGroup) picker.getParent();
refresh();
picker.setOnValueChangedListener(new NumberPickerView.OnValueChangeListener() {
@ -52,18 +55,26 @@ public abstract class Wheel {
}
public void setLocale(Locale locale) {
this.locale =locale;
this.locale = locale;
refresh();
}
private void refresh() {
this.format = new SimpleDateFormat(getFormatTemplate(), locale);
if (visible()) init();
this.values = new ArrayList<>();
if (visible()) {
add();
init();
}
else remove();
}
private void remove() {
((ViewManager) picker.getParent()).removeView(picker);
}
private void add() {
parent.addView(picker);
}
}

+ 51
- 4
example/App.js View File

@ -1,25 +1,55 @@
import React, { Component } from 'react';
import { View, StyleSheet} from 'react-native';
import { View, StyleSheet, ScrollView, Text, TouchableOpacity } from 'react-native';
import SearchInput, { createFilter } from 'react-native-search-filter';
import DeviceInfo from 'react-native-device-info';
import DatePicker from 'react-native-date-picker-x';
import locales from './locales';
export default class App extends Component {
state = { chosenDate: new Date() }
searchUpdated(term) {
this.setState({ searchTerm: term })
}
state = {
chosenDate: new Date(),
searchTerm: '',
locale: DeviceInfo.getDeviceLocale(),
}
setDate = (newDate) => this.setState({ chosenDate: newDate })
render() {
const result = locales.filter(createFilter(this.state.searchTerm)).slice(0, 5);
console.log({result});
return (
<View style={styles.container}>
<DatePicker
date={this.state.chosenDate}
onDateChange={this.setDate}
locale={this.state.locale}
style={{ width: 300, height: 170 }}
/>
<Text>Current locale: {this.state.locale}</Text>
<SearchInput
onChangeText={(term) => { this.searchUpdated(term) }}
style={styles.searchInput}
placeholder="Change locale"
/>
<ScrollView>
{result.map(locale => (
<TouchableOpacity onPress={() => this.setState({locale})} key={locale} style={styles.item}>
<Text>{locale}</Text>
</TouchableOpacity>
))
}
</ScrollView>
</View>
);
}
}
const styles = StyleSheet.create({
@ -29,4 +59,21 @@ const styles = StyleSheet.create({
justifyContent: 'center',
backgroundColor: 'white',
},
})
item: {
borderWidth: 1,
marginTop: -1,
borderColor: 'rgba(0,0,0,1)',
padding: 3,
width: 100,
alignItems: 'center',
},
emailSubject: {
color: 'rgba(0,0,0,0.5)'
},
searchInput: {
padding: 5,
borderColor: '#CCC',
borderWidth: 1,
width: 100,
}
})

+ 3
- 3
example/yarn.lock View File

@ -4297,9 +4297,9 @@ react-is@^16.3.1:
version "16.3.1"
resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.3.1.tgz#ee66e6d8283224a83b3030e110056798488359ba"
react-native-date-picker-x@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/react-native-date-picker-x/-/react-native-date-picker-x-1.0.2.tgz#1fd82670a663d8ac4d12d1697991cef34fdc3ddb"
react-native-date-picker-x@^1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/react-native-date-picker-x/-/react-native-date-picker-x-1.0.3.tgz#f98b60da64651de8573ca7ae3a67f58d4bd03c40"
react-native-device-info@^0.21.5:
version "0.21.5"

Loading…
Cancel
Save