forked from upstream-mirrors/OpenTracks
MarkerDetail page shows name in title.
This commit is contained in:
@@ -28,13 +28,11 @@ import androidx.fragment.app.FragmentActivity;
|
||||
import androidx.viewpager2.adapter.FragmentStateAdapter;
|
||||
import androidx.viewpager2.widget.ViewPager2;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import de.dennisguse.opentracks.AbstractActivity;
|
||||
import de.dennisguse.opentracks.R;
|
||||
import de.dennisguse.opentracks.data.ContentProviderUtils;
|
||||
import de.dennisguse.opentracks.data.models.Marker;
|
||||
import de.dennisguse.opentracks.data.tables.MarkerColumns;
|
||||
import de.dennisguse.opentracks.databinding.MarkerDetailActivityBinding;
|
||||
import de.dennisguse.opentracks.ui.markers.DeleteMarkerDialogFragment.DeleteMarkerCaller;
|
||||
|
||||
@@ -53,7 +51,7 @@ public class MarkerDetailActivity extends AbstractActivity implements DeleteMark
|
||||
|
||||
private MarkerDetailActivityBinding viewBinding;
|
||||
|
||||
private List<Marker.Id> markerIds;
|
||||
private Cursor cursor;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle bundle) {
|
||||
@@ -69,24 +67,23 @@ public class MarkerDetailActivity extends AbstractActivity implements DeleteMark
|
||||
ContentProviderUtils contentProviderUtils = new ContentProviderUtils(this);
|
||||
Marker marker = contentProviderUtils.getMarker(markerId);
|
||||
|
||||
markerIds = new ArrayList<>();
|
||||
//TODO only load used data: ID + name
|
||||
cursor = contentProviderUtils.getMarkerCursor(marker.getTrackId(), null, -1);
|
||||
if (cursor == null) {
|
||||
finish();
|
||||
}
|
||||
|
||||
int markerIndex = -1;
|
||||
|
||||
//TODO Load only markerIds, not the whole marker
|
||||
try (Cursor cursor = contentProviderUtils.getMarkerCursor(marker.getTrackId(), null, -1)) {
|
||||
if (cursor != null && cursor.moveToFirst()) {
|
||||
for (int i = 0; i < cursor.getCount(); i++) {
|
||||
Marker currentMarker = contentProviderUtils.createMarker(cursor);
|
||||
markerIds.add(currentMarker.getId());
|
||||
if (markerId.equals(currentMarker.getId())) {
|
||||
markerIndex = markerIds.size() - 1;
|
||||
}
|
||||
|
||||
cursor.moveToNext();
|
||||
if (cursor != null && cursor.moveToFirst()) {
|
||||
while (markerIndex == -1 && cursor.moveToNext()) {
|
||||
Marker.Id currentId = new Marker.Id(cursor.getLong(cursor.getColumnIndexOrThrow(MarkerColumns._ID)));
|
||||
if (markerId.equals(currentId)) {
|
||||
markerIndex = cursor.getPosition();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
final MarkerDetailPagerAdapter markerAdapter = new MarkerDetailPagerAdapter(this);
|
||||
viewBinding.makerDetailActivityViewPager.setAdapter(markerAdapter);
|
||||
viewBinding.makerDetailActivityViewPager.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() {
|
||||
@@ -111,7 +108,9 @@ public class MarkerDetailActivity extends AbstractActivity implements DeleteMark
|
||||
protected void onDestroy() {
|
||||
super.onDestroy();
|
||||
viewBinding = null;
|
||||
markerIds = null;
|
||||
|
||||
if (cursor != null) cursor.close();
|
||||
cursor = null;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -128,17 +127,19 @@ public class MarkerDetailActivity extends AbstractActivity implements DeleteMark
|
||||
@Override
|
||||
@NonNull
|
||||
public Fragment createFragment(int position) {
|
||||
return MarkerDetailFragment.newInstance(markerIds.get(position));
|
||||
cursor.moveToPosition(position);
|
||||
return MarkerDetailFragment.newInstance(new Marker.Id(cursor.getLong(cursor.getColumnIndexOrThrow(MarkerColumns._ID))));
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getItemCount() {
|
||||
return markerIds.size();
|
||||
return cursor.getCount();
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public CharSequence getPageTitle(int position) {
|
||||
return getString(R.string.marker_title, position + 1, getItemCount());
|
||||
cursor.moveToPosition(position);
|
||||
return getString(R.string.marker_detail_title, position + 1, getItemCount(), cursor.getString(cursor.getColumnIndexOrThrow(MarkerColumns.NAME)));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -34,6 +34,7 @@ import androidx.annotation.NonNull;
|
||||
import androidx.core.view.MenuProvider;
|
||||
import androidx.fragment.app.Fragment;
|
||||
import androidx.fragment.app.FragmentActivity;
|
||||
import androidx.lifecycle.Lifecycle;
|
||||
|
||||
import java.time.Duration;
|
||||
|
||||
@@ -135,7 +136,7 @@ public class MarkerDetailFragment extends Fragment {
|
||||
public void onCreateMenu(@NonNull Menu menu, @NonNull MenuInflater menuInflater) {
|
||||
menuInflater.inflate(R.menu.marker_detail, menu);
|
||||
shareMarkerImageMenuItem = menu.findItem(R.id.marker_detail_share);
|
||||
updateMarker(false);
|
||||
updateMarker();
|
||||
updateMenuItems();
|
||||
}
|
||||
|
||||
@@ -171,7 +172,7 @@ public class MarkerDetailFragment extends Fragment {
|
||||
|
||||
return false;
|
||||
}
|
||||
}, getViewLifecycleOwner());
|
||||
}, getViewLifecycleOwner(), Lifecycle.State.RESUMED);
|
||||
|
||||
return viewBinding.getRoot();
|
||||
}
|
||||
@@ -182,7 +183,7 @@ public class MarkerDetailFragment extends Fragment {
|
||||
super.onResume();
|
||||
|
||||
// Need to update the marker in case returning after an edit
|
||||
updateMarker(true);
|
||||
updateMarker();
|
||||
updateUi();
|
||||
updateMenuItems();
|
||||
}
|
||||
@@ -221,17 +222,16 @@ public class MarkerDetailFragment extends Fragment {
|
||||
}
|
||||
|
||||
private void updateMenuItems() {
|
||||
if (shareMarkerImageMenuItem != null)
|
||||
shareMarkerImageMenuItem.setVisible(marker.hasPhoto());
|
||||
if (shareMarkerImageMenuItem != null) { // MenuProvider might not yet been initialized.
|
||||
// shareMarkerImageMenuItem.setEnabled(marker.hasPhoto());
|
||||
}
|
||||
}
|
||||
|
||||
private void updateMarker(boolean refresh) {
|
||||
if (refresh || marker == null) {
|
||||
marker = contentProviderUtils.getMarker(markerId);
|
||||
if (marker == null) {
|
||||
Log.d(TAG, "marker is null");
|
||||
getParentFragmentManager().popBackStack();
|
||||
}
|
||||
private void updateMarker() {
|
||||
marker = contentProviderUtils.getMarker(markerId);
|
||||
if (marker == null) {
|
||||
Log.d(TAG, "marker is null");
|
||||
getParentFragmentManager().popBackStack();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -245,9 +245,6 @@ public class MarkerDetailFragment extends Fragment {
|
||||
viewBinding.markerDetailMarkerPhoto.setImageDrawable(MarkerUtils.getDefaultPhoto(getContext()));
|
||||
}
|
||||
|
||||
ListItemUtils.setTextView(getActivity(), viewBinding.markerDetailMarkerName, marker.getName(), hasPhoto);
|
||||
|
||||
|
||||
ListItemUtils.setTextView(getActivity(), viewBinding.markerDetailMarkerCategory, StringUtils.getCategory(marker.getCategory()), hasPhoto);
|
||||
|
||||
ListItemUtils.setTextView(getActivity(), viewBinding.markerDetailMarkerDescription, marker.getDescription(), hasPhoto);
|
||||
|
||||
Reference in New Issue
Block a user