add second to custom finish time (same as change finish time)

This commit is contained in:
Peter Siegmund
2016-11-29 11:23:15 +01:00
parent fc9b6c9874
commit ef806a0a48
6 changed files with 80 additions and 87 deletions
@@ -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
@@ -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)) {
@@ -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) {
@@ -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());
}