mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-09-19 04:05:36 +00:00
add second to custom finish time (same as change finish time)
This commit is contained in:
@@ -124,14 +124,27 @@
|
||||
android:scaleX="@integer/picker_scale"
|
||||
android:scaleY="@integer/picker_scale">
|
||||
|
||||
<include
|
||||
android:id="@+id/time_picker"
|
||||
layout="@layout/time_picker"
|
||||
<LinearLayout
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_centerInParent="true" />
|
||||
</RelativeLayout>
|
||||
android:layout_centerInParent="true"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<include
|
||||
android:id="@+id/time_picker"
|
||||
layout="@layout/time_picker"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content" />
|
||||
|
||||
<NumberPicker
|
||||
android:id="@+id/second_picker"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:descendantFocusability="blocksDescendants"
|
||||
android:visibility="visible" />
|
||||
</LinearLayout>
|
||||
</RelativeLayout>
|
||||
</RelativeLayout>
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
@@ -43,21 +43,12 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_vertical"/>
|
||||
|
||||
<TextView
|
||||
android:text=":"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:paddingRight="15dp"/>
|
||||
|
||||
<NumberPicker
|
||||
android:id="@+id/second_picker"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:descendantFocusability="blocksDescendants"
|
||||
android:visibility="gone"
|
||||
tools:visibility="visible"/>
|
||||
android:descendantFocusability="blocksDescendants"/>
|
||||
</LinearLayout>
|
||||
</FrameLayout>
|
||||
|
||||
|
||||
@@ -28,21 +28,12 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_vertical"/>
|
||||
|
||||
<TextView
|
||||
android:text=":"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:paddingRight="15dp"/>
|
||||
|
||||
<NumberPicker
|
||||
android:id="@+id/second_picker"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:descendantFocusability="blocksDescendants"
|
||||
android:visibility="gone"
|
||||
tools:visibility="visible"/>
|
||||
android:descendantFocusability="blocksDescendants"/>
|
||||
</LinearLayout>
|
||||
|
||||
<Button
|
||||
|
||||
+7
-15
@@ -9,6 +9,7 @@ import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.ListView;
|
||||
import android.widget.NumberPicker;
|
||||
import android.widget.TextView;
|
||||
import android.widget.TimePicker;
|
||||
import android.widget.Toast;
|
||||
@@ -24,7 +25,6 @@ import com.sap.sailing.racecommittee.app.ui.adapters.MoreFlagsAdapter;
|
||||
import com.sap.sailing.racecommittee.app.ui.adapters.MoreFlagsAdapter.MoreFlag;
|
||||
import com.sap.sailing.racecommittee.app.ui.adapters.MoreFlagsAdapter.MoreFlagItemClick;
|
||||
import com.sap.sailing.racecommittee.app.ui.utils.FlagsResources;
|
||||
import com.sap.sailing.racecommittee.app.utils.ThemeHelper;
|
||||
import com.sap.sailing.racecommittee.app.utils.TimeUtils;
|
||||
import com.sap.sse.common.TimePoint;
|
||||
import com.sap.sse.common.impl.MillisecondsTimePoint;
|
||||
@@ -93,6 +93,7 @@ public class MoreFlagsFragment extends BaseFragment implements MoreFlagItemClick
|
||||
|
||||
private SimpleDateFormat mDateFormat;
|
||||
private TimePicker mTimePicker;
|
||||
private NumberPicker mSecondPicker;
|
||||
private TextView mCurrentTime;
|
||||
|
||||
public FinishTimeFragment() {
|
||||
@@ -113,15 +114,10 @@ public class MoreFlagsFragment extends BaseFragment implements MoreFlagItemClick
|
||||
|
||||
mDateFormat = new SimpleDateFormat("HH:mm:ss", getResources().getConfiguration().locale);
|
||||
|
||||
final Calendar calendar = Calendar.getInstance();
|
||||
mTimePicker = ViewHelper.get(layout, R.id.time_picker);
|
||||
if (mTimePicker != null) {
|
||||
Calendar calendar = Calendar.getInstance();
|
||||
ViewHelper.disableSave(mTimePicker);
|
||||
ThemeHelper.setPickerColor(getActivity(), mTimePicker, ThemeHelper.getColor(getActivity(), R.attr.white), ThemeHelper
|
||||
.getColor(getActivity(), R.attr.sap_yellow_1));
|
||||
mTimePicker.setIs24HourView(true);
|
||||
mTimePicker.setCurrentHour(calendar.get(Calendar.HOUR_OF_DAY));
|
||||
}
|
||||
mSecondPicker = ViewHelper.get(layout, R.id.second_picker);
|
||||
TimeUtils.initTimePickerWithSeconds(getActivity(), calendar, mTimePicker, mSecondPicker);
|
||||
|
||||
mCurrentTime = ViewHelper.get(layout, R.id.current_time);
|
||||
|
||||
@@ -201,11 +197,11 @@ public class MoreFlagsFragment extends BaseFragment implements MoreFlagItemClick
|
||||
public void onClick(View view) {
|
||||
switch (view.getId()) {
|
||||
case R.id.finish_current:
|
||||
setFinishTime();
|
||||
setFinishTime(MillisecondsTimePoint.now());
|
||||
break;
|
||||
|
||||
case R.id.finish_custom:
|
||||
setFinishTime(TimeUtils.getTime(mTimePicker));
|
||||
setFinishTime(TimeUtils.getTime(mTimePicker, mSecondPicker));
|
||||
break;
|
||||
|
||||
default:
|
||||
@@ -225,10 +221,6 @@ public class MoreFlagsFragment extends BaseFragment implements MoreFlagItemClick
|
||||
}
|
||||
}
|
||||
|
||||
private void setFinishTime() {
|
||||
setFinishTime(MillisecondsTimePoint.now());
|
||||
}
|
||||
|
||||
private void setFinishTime(TimePoint finishTime) {
|
||||
Result result = new Result();
|
||||
switch (getArguments().getInt(START_MODE, 0)) {
|
||||
|
||||
+4
-46
@@ -3,7 +3,6 @@ package com.sap.sailing.racecommittee.app.ui.fragments.raceinfo;
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
import java.util.Calendar;
|
||||
import java.util.Locale;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
@@ -96,7 +95,7 @@ public class RaceTimeChangeFragment extends BaseFragment implements View.OnClick
|
||||
}
|
||||
}
|
||||
|
||||
mDatePicker = (NumberPicker) layout.findViewById(R.id.date_picker);
|
||||
mDatePicker = ViewHelper.get(layout, R.id.date_picker);
|
||||
if (mDatePicker != null) {
|
||||
Calendar start = (Calendar) calendar.clone();
|
||||
Calendar finishing = (Calendar) calendar.clone();
|
||||
@@ -133,50 +132,9 @@ public class RaceTimeChangeFragment extends BaseFragment implements View.OnClick
|
||||
}
|
||||
}
|
||||
|
||||
mTimePicker = (TimePicker) layout.findViewById(R.id.time_picker);
|
||||
if (mTimePicker != null) {
|
||||
ViewHelper.disableSave(mTimePicker);
|
||||
ThemeHelper.setPickerColor(getActivity(), mTimePicker, ThemeHelper.getColor(getActivity(), R.attr.white), ThemeHelper
|
||||
.getColor(getActivity(), R.attr.sap_yellow_1));
|
||||
mTimePicker.setIs24HourView(true);
|
||||
mTimePicker.setCurrentHour(calendar.get(Calendar.HOUR_OF_DAY));
|
||||
mTimePicker.setCurrentMinute(calendar.get(Calendar.MINUTE));
|
||||
}
|
||||
|
||||
mSecondPicker = (NumberPicker) layout.findViewById(R.id.second_picker);
|
||||
if (mSecondPicker != null) {
|
||||
ViewHelper.disableSave(mSecondPicker);
|
||||
ThemeHelper.setPickerColor(getActivity(), mSecondPicker, ThemeHelper.getColor(getActivity(), R.attr.white), ThemeHelper
|
||||
.getColor(getActivity(), R.attr.sap_yellow_1));
|
||||
mSecondPicker.setVisibility(View.VISIBLE);
|
||||
mSecondPicker.setMinValue(0);
|
||||
mSecondPicker.setMaxValue(59);
|
||||
mSecondPicker.setValue(calendar.get(Calendar.SECOND));
|
||||
mSecondPicker.setFormatter(new NumberPicker.Formatter() {
|
||||
@Override
|
||||
public String format(int i) {
|
||||
return String.format(Locale.US, "%02d", i);
|
||||
}
|
||||
});
|
||||
mSecondPicker.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() {
|
||||
@Override
|
||||
public void onValueChange(NumberPicker picker, int oldVal, int newVal) {
|
||||
if (mTimePicker != null) {
|
||||
Calendar pickerTime = (Calendar) calendar.clone();
|
||||
pickerTime.set(Calendar.HOUR_OF_DAY, mTimePicker.getCurrentHour());
|
||||
pickerTime.set(Calendar.MINUTE, mTimePicker.getCurrentMinute());
|
||||
if (oldVal == 0 && newVal == 59) {
|
||||
pickerTime.add(Calendar.MINUTE, -1);
|
||||
}
|
||||
if (oldVal == 59 && newVal == 0) {
|
||||
pickerTime.add(Calendar.MINUTE, 1);
|
||||
}
|
||||
mTimePicker.setCurrentHour(pickerTime.get(Calendar.HOUR_OF_DAY));
|
||||
mTimePicker.setCurrentMinute(pickerTime.get(Calendar.MINUTE));
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
mTimePicker = ViewHelper.get(layout, R.id.time_picker);
|
||||
mSecondPicker = ViewHelper.get(layout, R.id.second_picker);
|
||||
TimeUtils.initTimePickerWithSeconds(getActivity(), calendar, mTimePicker, mSecondPicker);
|
||||
|
||||
View setTime = layout.findViewById(R.id.set_date_time);
|
||||
if (setTime != null) {
|
||||
|
||||
+49
-1
@@ -8,12 +8,14 @@ import java.util.TimeZone;
|
||||
|
||||
import android.content.Context;
|
||||
import android.os.Build;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.text.format.DateFormat;
|
||||
import android.view.View;
|
||||
import android.widget.NumberPicker;
|
||||
import android.widget.TextView;
|
||||
import android.widget.TimePicker;
|
||||
|
||||
import com.sap.sailing.android.shared.util.ViewHelper;
|
||||
import com.sap.sailing.racecommittee.app.R;
|
||||
import com.sap.sse.common.TimePoint;
|
||||
import com.sap.sse.common.impl.MillisecondsTimePoint;
|
||||
@@ -199,6 +201,48 @@ public class TimeUtils {
|
||||
}
|
||||
}
|
||||
|
||||
public static void initTimePickerWithSeconds(Context context, final Calendar time, @Nullable final TimePicker timePicker, @Nullable NumberPicker secondPicker) {
|
||||
int textColor = ThemeHelper.getColor(context, R.attr.white);
|
||||
int dividerColor = ThemeHelper.getColor(context, R.attr.sap_yellow_1);
|
||||
if (timePicker != null) {
|
||||
ViewHelper.disableSave(timePicker);
|
||||
ThemeHelper.setPickerColor(context, timePicker, textColor, dividerColor);
|
||||
timePicker.setIs24HourView(true);
|
||||
timePicker.setCurrentHour(time.get(Calendar.HOUR_OF_DAY));
|
||||
}
|
||||
if (secondPicker != null) {
|
||||
ViewHelper.disableSave(secondPicker);
|
||||
ThemeHelper.setPickerColor(context, secondPicker, textColor, dividerColor);
|
||||
secondPicker.setMinValue(0);
|
||||
secondPicker.setMaxValue(59);
|
||||
secondPicker.setFormatter(new NumberPicker.Formatter() {
|
||||
@Override
|
||||
public String format(int value) {
|
||||
return String.format(Locale.US, "%02d", value);
|
||||
}
|
||||
});
|
||||
secondPicker.setValue(time.get(Calendar.SECOND));
|
||||
secondPicker.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() {
|
||||
@Override
|
||||
public void onValueChange(NumberPicker picker, int oldVal, int newVal) {
|
||||
if (timePicker != null) {
|
||||
Calendar pickerTime = (Calendar) time.clone();
|
||||
pickerTime.set(Calendar.HOUR_OF_DAY, timePicker.getCurrentHour());
|
||||
pickerTime.set(Calendar.MINUTE, timePicker.getCurrentMinute());
|
||||
if (oldVal == 0 && newVal == 59) {
|
||||
pickerTime.add(Calendar.MINUTE, -1);
|
||||
}
|
||||
if (oldVal == 59 && newVal == 0) {
|
||||
pickerTime.add(Calendar.MINUTE, 1);
|
||||
}
|
||||
timePicker.setCurrentHour(pickerTime.get(Calendar.HOUR_OF_DAY));
|
||||
timePicker.setCurrentMinute(pickerTime.get(Calendar.MINUTE));
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
public static ArrayList<String> getDates(Context context, TimePoint start, TimePoint end) {
|
||||
ArrayList<String> dates = new ArrayList<>();
|
||||
SimpleDateFormat simpleFormat = new SimpleDateFormat(context.getString(R.string.date_short), Locale.US);
|
||||
@@ -215,10 +259,14 @@ public class TimeUtils {
|
||||
}
|
||||
|
||||
public static TimePoint getTime(TimePicker timePicker) {
|
||||
return getTime(timePicker, null);
|
||||
}
|
||||
|
||||
public static TimePoint getTime(TimePicker timePicker, @Nullable NumberPicker secondPicker) {
|
||||
Calendar time = Calendar.getInstance();
|
||||
time.set(Calendar.HOUR_OF_DAY, timePicker.getCurrentHour());
|
||||
time.set(Calendar.MINUTE, timePicker.getCurrentMinute());
|
||||
time.set(Calendar.SECOND, 0);
|
||||
time.set(Calendar.SECOND, secondPicker == null ? 0 : secondPicker.getValue());
|
||||
time.set(Calendar.MILLISECOND, 0);
|
||||
return new MillisecondsTimePoint(time.getTime());
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user