diff --git a/src/main/AndroidManifest.xml b/src/main/AndroidManifest.xml
index ece98263e..8621f600a 100644
--- a/src/main/AndroidManifest.xml
+++ b/src/main/AndroidManifest.xml
@@ -323,42 +323,13 @@ limitations under the License.
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
+
diff --git a/src/main/java/de/dennisguse/opentracks/TrackListActivity.java b/src/main/java/de/dennisguse/opentracks/TrackListActivity.java
index 55ff54bbe..bb53613f6 100644
--- a/src/main/java/de/dennisguse/opentracks/TrackListActivity.java
+++ b/src/main/java/de/dennisguse/opentracks/TrackListActivity.java
@@ -16,7 +16,6 @@
package de.dennisguse.opentracks;
-import android.app.SearchManager;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences.OnSharedPreferenceChangeListener;
@@ -26,7 +25,6 @@ import android.location.LocationManager;
import android.os.Bundle;
import android.provider.Settings;
import android.util.Log;
-import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
@@ -34,7 +32,6 @@ import android.widget.Toast;
import androidx.annotation.Nullable;
import androidx.appcompat.content.res.AppCompatResources;
-import androidx.appcompat.widget.SearchView;
import androidx.core.content.ContextCompat;
import androidx.recyclerview.widget.LinearLayoutManager;
@@ -129,7 +126,6 @@ public class TrackListActivity extends AbstractTrackDeleteActivity implements Co
};
// Menu items
- private MenuItem searchMenuItem;
private String searchQuery;
@@ -249,6 +245,14 @@ public class TrackListActivity extends AbstractTrackDeleteActivity implements Co
@Override
protected View getRootView() {
viewBinding = TrackListBinding.inflate(getLayoutInflater());
+
+ viewBinding.trackListSearchView.getEditText().setOnEditorActionListener((v, actionId, event) -> {
+ searchQuery = viewBinding.trackListSearchView.getEditText().getText().toString();
+ viewBinding.trackListSearchView.hide();
+ loadData();
+ return true;
+ });
+
return viewBinding.getRoot();
}
@@ -256,9 +260,6 @@ public class TrackListActivity extends AbstractTrackDeleteActivity implements Co
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.track_list, menu);
- searchMenuItem = menu.findItem(R.id.track_list_search);
- ActivityUtils.configureSearchWidget(this, searchMenuItem);
-
return super.onCreateOptionsMenu(menu);
}
@@ -280,13 +281,6 @@ public class TrackListActivity extends AbstractTrackDeleteActivity implements Co
return true;
}
- if (item.getItemId() == R.id.track_list_search) {
- SearchView searchView = (SearchView) searchMenuItem.getActionView();
- searchView.setIconified(false);
- searchMenuItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
- return true;
- }
-
if (item.getItemId() == R.id.track_list_help) {
startActivity(IntentUtils.newIntent(this, HelpActivity.class));
return true;
@@ -295,42 +289,9 @@ public class TrackListActivity extends AbstractTrackDeleteActivity implements Co
return super.onOptionsItemSelected(item);
}
- @Override
- public boolean onKeyUp(int keyCode, KeyEvent event) {
- if (keyCode == KeyEvent.KEYCODE_SEARCH && searchMenuItem != null) {
- return true;
- }
- return super.onKeyUp(keyCode, event);
- }
-
- @Override
- public void onBackPressed() {
- SearchView searchView = (SearchView) searchMenuItem.getActionView();
- if (!searchView.isIconified()) {
- searchView.setIconified(true);
- }
-
- if (searchQuery != null) {
- searchQuery = null;
- loadData();
- return;
- }
-
- super.onBackPressed();
- }
-
- @Override
- protected void onNewIntent(Intent intent) {
- super.onNewIntent(intent);
-
- if (Intent.ACTION_SEARCH.equals(intent.getAction())) {
- searchQuery = intent.getStringExtra(SearchManager.QUERY);
- } else {
- searchQuery = null;
- }
- }
-
private void loadData() {
+ viewBinding.trackListToolbar.setText(searchQuery);
+
viewBinding.trackListToolbar.setTitle(Objects.requireNonNullElseGet(searchQuery, () -> getString(R.string.app_name)));
Cursor tracks = new ContentProviderUtils(this).searchTracks(searchQuery);
diff --git a/src/main/java/de/dennisguse/opentracks/TrackStoppedActivity.java b/src/main/java/de/dennisguse/opentracks/TrackStoppedActivity.java
index 7dd6d9d73..b1d94e58f 100644
--- a/src/main/java/de/dennisguse/opentracks/TrackStoppedActivity.java
+++ b/src/main/java/de/dennisguse/opentracks/TrackStoppedActivity.java
@@ -110,15 +110,6 @@ public class TrackStoppedActivity extends AbstractTrackDeleteActivity implements
contentProviderUtils);
}
- @Override
- public void onBackPressed() {
- if (isDiscarding) {
- return;
- }
- super.onBackPressed();
- resumeTrackAndFinish();
- }
-
@Override
protected View getRootView() {
viewBinding = TrackStoppedBinding.inflate(getLayoutInflater());
diff --git a/src/main/java/de/dennisguse/opentracks/ui/markers/MarkerListActivity.java b/src/main/java/de/dennisguse/opentracks/ui/markers/MarkerListActivity.java
index 72492fce4..01361c357 100644
--- a/src/main/java/de/dennisguse/opentracks/ui/markers/MarkerListActivity.java
+++ b/src/main/java/de/dennisguse/opentracks/ui/markers/MarkerListActivity.java
@@ -16,7 +16,6 @@
package de.dennisguse.opentracks.ui.markers;
-import android.app.SearchManager;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
@@ -25,7 +24,6 @@ import android.view.View;
import androidx.annotation.NonNull;
import androidx.annotation.UiThread;
-import androidx.appcompat.widget.SearchView;
import androidx.recyclerview.widget.LinearLayoutManager;
import java.util.List;
@@ -95,7 +93,6 @@ public class MarkerListActivity extends AbstractActivity implements DeleteMarker
}
};
private MenuItem insertMarkerMenuItem;
- private MenuItem searchMenuItem;
private String searchQuery;
@@ -153,6 +150,14 @@ public class MarkerListActivity extends AbstractActivity implements DeleteMarker
@Override
protected View getRootView() {
viewBinding = MarkerListBinding.inflate(getLayoutInflater());
+
+ viewBinding.markerListSearchView.getEditText().setOnEditorActionListener((v, actionId, event) -> {
+ searchQuery = viewBinding.markerListSearchView.getEditText().getText().toString();
+ viewBinding.markerListSearchView.hide();
+ loadData();
+ return true;
+ });
+
return viewBinding.getRoot();
}
@@ -162,9 +167,6 @@ public class MarkerListActivity extends AbstractActivity implements DeleteMarker
insertMarkerMenuItem = menu.findItem(R.id.marker_list_insert_marker);
- searchMenuItem = menu.findItem(R.id.marker_list_search);
- ActivityUtils.configureSearchWidget(this, searchMenuItem);
-
return super.onCreateOptionsMenu(menu);
}
@@ -236,35 +238,10 @@ public class MarkerListActivity extends AbstractActivity implements DeleteMarker
return false;
}
- @Override
- public void onBackPressed() {
- SearchView searchView = (SearchView) searchMenuItem.getActionView();
- if (!searchView.isIconified()) {
- searchView.setIconified(true);
- }
-
- if (searchQuery != null) {
- searchQuery = null;
- loadData();
- return;
- }
-
- super.onBackPressed();
- }
-
- @Override
- protected void onNewIntent(Intent intent) {
- super.onNewIntent(intent);
-
- if (Intent.ACTION_SEARCH.equals(intent.getAction())) {
- searchQuery = intent.getStringExtra(SearchManager.QUERY);
- } else {
- searchQuery = null;
- }
- }
-
@UiThread
private void loadData() {
+ viewBinding.markerListToolbar.setText(searchQuery);
+
viewBinding.markerListToolbar.setTitle(Objects.requireNonNullElseGet(searchQuery, () -> getString(R.string.menu_markers)));
List markers = contentProviderUtils.searchMarkers(trackId, searchQuery);
diff --git a/src/main/java/de/dennisguse/opentracks/ui/util/ActivityUtils.java b/src/main/java/de/dennisguse/opentracks/ui/util/ActivityUtils.java
index 5d3d90817..16f74da40 100644
--- a/src/main/java/de/dennisguse/opentracks/ui/util/ActivityUtils.java
+++ b/src/main/java/de/dennisguse/opentracks/ui/util/ActivityUtils.java
@@ -2,18 +2,13 @@ package de.dennisguse.opentracks.ui.util;
import static android.content.Context.VIBRATOR_SERVICE;
-import android.app.Activity;
-import android.app.SearchManager;
import android.content.Context;
import android.os.Build;
import android.os.VibrationEffect;
import android.os.Vibrator;
-import android.util.Log;
import android.view.Menu;
-import android.view.MenuItem;
import androidx.annotation.NonNull;
-import androidx.appcompat.widget.SearchView;
import java.time.Duration;
@@ -21,19 +16,6 @@ public class ActivityUtils {
private static final String TAG = ActivityUtils.class.getSimpleName();
- public static SearchView configureSearchWidget(Activity activity, final MenuItem menuItem) {
- final SearchView searchView = (SearchView) menuItem.getActionView();
- SearchManager searchManager = (SearchManager) activity.getSystemService(Context.SEARCH_SERVICE);
- if (searchManager != null) {
- //NOTE: Use searchManager.getSearchableInfo(new ComponentName(activity, SearchActivity.class)) if another activity should handle the search
- searchView.setSearchableInfo(searchManager.getSearchableInfo(activity.getComponentName()));
- } else {
- Log.w(TAG, "Could not retrieve SearchManager.");
- }
- searchView.setSubmitButtonEnabled(true);
- return searchView;
- }
-
public static void vibrate(@NonNull Context context, Duration duration) {
final Vibrator vibrator = (Vibrator) context.getSystemService(VIBRATOR_SERVICE);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
diff --git a/src/main/res/layout/marker_list.xml b/src/main/res/layout/marker_list.xml
index 2eecbbfaf..e9136771f 100644
--- a/src/main/res/layout/marker_list.xml
+++ b/src/main/res/layout/marker_list.xml
@@ -22,14 +22,24 @@ limitations under the License.
android:layout_width="match_parent"
android:layout_height="wrap_content">
-
+ app:layout_behavior="@string/searchbar_scrolling_view_behavior"
+ app:menu="@menu/marker_list" />
+
+
+
+
-
+
+
+
+
-
\ No newline at end of file
diff --git a/src/main/res/menu/track_list.xml b/src/main/res/menu/track_list.xml
index 2cdf3a53d..ec5a6399f 100644
--- a/src/main/res/menu/track_list.xml
+++ b/src/main/res/menu/track_list.xml
@@ -15,12 +15,6 @@ limitations under the License.
-->