This commit is contained in:
PavelRatushny 2017-07-11 17:42:41 +03:00
parent 5651e9310c
commit e3f4917faf
3 changed files with 58 additions and 27 deletions

View file

@ -373,16 +373,18 @@ public class GPXUtilities {
}
long time = point.time;
if (time != 0) {
if (s.segment.generalSegment) {
if (point.firstPoint) {
startTimeOfSingleSegment = time;
} else if (point.lastPoint) {
endTimeOfSingleSegment = time;
}
if (startTimeOfSingleSegment != 0 && endTimeOfSingleSegment != 0) {
timeSpan += endTimeOfSingleSegment - startTimeOfSingleSegment;
startTimeOfSingleSegment = 0;
endTimeOfSingleSegment = 0;
if (s.metricEnd == 0) {
if (s.segment.generalSegment) {
if (point.firstPoint) {
startTimeOfSingleSegment = time;
} else if (point.lastPoint) {
endTimeOfSingleSegment = time;
}
if (startTimeOfSingleSegment != 0 && endTimeOfSingleSegment != 0) {
timeSpan += endTimeOfSingleSegment - startTimeOfSingleSegment;
startTimeOfSingleSegment = 0;
endTimeOfSingleSegment = 0;
}
}
}
startTime = Math.min(startTime, time);

View file

@ -302,6 +302,9 @@ public class SplitSegmentFragment extends OsmAndListFragment {
}
private List<GpxDisplayGroup> filterGroups(boolean useDisplayGroups) {
if (getMyActivity() == null) {
return null;
}
List<GpxDisplayGroup> result = getMyActivity().getGpxFile(useDisplayGroups);
List<GpxDisplayGroup> groups = new ArrayList<>();
for (GpxDisplayGroup group : result) {
@ -613,17 +616,21 @@ public class SplitSegmentFragment extends OsmAndListFragment {
}
protected void onPostExecute(Void result) {
if (mSelectedGpxFile != null) {
mSelectedGpxFile.setDisplayGroups(getDisplayGroups());
}
if (!mActivity.isFinishing()) {
mActivity.setProgressBarIndeterminateVisibility(false);
mActivity.setSupportProgressBarIndeterminateVisibility(false);
}
if (mSelectedGpxFile != null) {
List<GpxDisplayGroup> groups = getDisplayGroups();
if (groups == null) {
return;
}
mSelectedGpxFile.setDisplayGroups(groups);
}
updateContent();
}
protected void onPreExecute() {
mActivity.setProgressBarIndeterminateVisibility(true);
mActivity.setSupportProgressBarIndeterminateVisibility(true);
}
@Override

View file

@ -134,7 +134,6 @@ public class TrackSegmentFragment extends OsmAndListFragment {
private Paint paintIcon;
private Bitmap pointSmall;
private GpxDisplayItem generalDisplayItem;
private View splitIntervalView;
private ImageView imageView;
private RotatedTileBox rotatedTileBox;
@ -294,7 +293,7 @@ public class TrackSegmentFragment extends OsmAndListFragment {
});
final View splitColorView = headerView.findViewById(R.id.split_color_view);
final View divider = headerView.findViewById(R.id.divider);
splitIntervalView = headerView.findViewById(R.id.split_interval_view);
final View splitIntervalView = headerView.findViewById(R.id.split_interval_view);
final View colorView = headerView.findViewById(R.id.color_view);
final SwitchCompat vis = (SwitchCompat) headerView.findViewById(R.id.showOnMapToggle);
final ProgressBar progressBar = (ProgressBar) headerView.findViewById(R.id.mapLoadProgress);
@ -468,8 +467,12 @@ public class TrackSegmentFragment extends OsmAndListFragment {
}
public void updateSplitView() {
prepareSplitIntervalAdapterData();
updateSplitIntervalView(splitIntervalView);
SelectedGpxFile sf = app.getSelectedGpxHelper().selectGpxFile(getGpx(), ((SwitchCompat)headerView.findViewById(R.id.showOnMapToggle)).isChecked(), false);
final List<GpxDisplayGroup> groups = getDisplayGroups();
if (groups.size() > 0) {
updateSplit(groups, ((SwitchCompat)headerView.findViewById(R.id.showOnMapToggle)).isChecked() ? sf : null);
}
updateSplitIntervalView(headerView.findViewById(R.id.split_interval_view));
}
private void refreshTrackBitmap() {
@ -678,6 +681,9 @@ public class TrackSegmentFragment extends OsmAndListFragment {
}
private List<GpxDisplayGroup> filterGroups(boolean useDisplayGroups) {
if (getMyActivity() == null) {
return null;
}
List<GpxDisplayGroup> result = getMyActivity().getGpxFile(useDisplayGroups);
List<GpxDisplayGroup> groups = new ArrayList<>();
for (GpxDisplayGroup group : result) {
@ -712,6 +718,10 @@ public class TrackSegmentFragment extends OsmAndListFragment {
adapter.setNotifyOnChange(true);
adapter.notifyDataSetChanged();
updateHeader();
if (getGpx() != null && (getGpx().tracks.size() > 0 || getGpx().routes.size() > 0)) {
(headerView.findViewById(R.id.split_color_view)).setVisibility(View.VISIBLE);
(headerView.findViewById(R.id.divider)).setVisibility(View.VISIBLE);
}
}
protected List<GpxDisplayItem> flatten(List<GpxDisplayGroup> groups) {
@ -990,9 +1000,17 @@ public class TrackSegmentFragment extends OsmAndListFragment {
}
} else {
float distance = pos * dataSet.getDivX();
for (WptPt p : segment.points) {
if (p.distance >= distance) {
wpt = p;
double previousSplitDistance = 0;
for (int i = 0; i < segment.points.size(); i++) {
WptPt currentPoint = segment.points.get(i);
if (i != 0) {
WptPt previousPoint = segment.points.get(i - 1);
if (currentPoint.distance < previousPoint.distance) {
previousSplitDistance += previousPoint.distance;
}
}
if (previousSplitDistance + currentPoint.distance >= distance) {
wpt = currentPoint;
break;
}
}
@ -1496,19 +1514,23 @@ public class TrackSegmentFragment extends OsmAndListFragment {
}
protected void onPostExecute(Void result) {
if (!mActivity.isFinishing()) {
mActivity.setSupportProgressBarIndeterminateVisibility(false);
}
if (mSelectedGpxFile != null) {
mSelectedGpxFile.setDisplayGroups(getDisplayGroups());
List<GpxDisplayGroup> groups = getDisplayGroups();
if (groups == null) {
return;
}
mSelectedGpxFile.setDisplayGroups(groups);
}
if (mFragment.isVisible()) {
//mFragment.updateContent();
}
if (!mActivity.isFinishing()) {
mActivity.setProgressBarIndeterminateVisibility(false);
}
}
protected void onPreExecute() {
mActivity.setProgressBarIndeterminateVisibility(true);
mActivity.setSupportProgressBarIndeterminateVisibility(true);
}
@Override