diff --git a/app/src/main/java/org/schabi/newpipe/settings/HistorySettingsFragment.java b/app/src/main/java/org/schabi/newpipe/settings/HistorySettingsFragment.java index cf5425a50..8ff86af05 100644 --- a/app/src/main/java/org/schabi/newpipe/settings/HistorySettingsFragment.java +++ b/app/src/main/java/org/schabi/newpipe/settings/HistorySettingsFragment.java @@ -19,6 +19,7 @@ import io.reactivex.disposables.Disposable; public class HistorySettingsFragment extends BasePreferenceFragment { private String cacheWipeKey; private String viewsHistoryClearKey; + private String playbackStatesClearKey; private String searchHistoryClearKey; private HistoryRecordManager recordManager; private CompositeDisposable disposables; @@ -28,6 +29,7 @@ public class HistorySettingsFragment extends BasePreferenceFragment { super.onCreate(savedInstanceState); cacheWipeKey = getString(R.string.metadata_cache_wipe_key); viewsHistoryClearKey = getString(R.string.clear_views_history_key); + playbackStatesClearKey = getString(R.string.clear_playback_states_key); searchHistoryClearKey = getString(R.string.clear_search_history_key); recordManager = new HistoryRecordManager(getActivity()); disposables = new CompositeDisposable(); @@ -63,7 +65,7 @@ public class HistorySettingsFragment extends BasePreferenceFragment { ErrorActivity.ErrorInfo.make( UserAction.DELETE_FROM_HISTORY, "none", - "Delete view history", + "Delete playback states", R.string.general_error))); final Disposable onDelete = recordManager.deleteWholeStreamHistory() @@ -101,6 +103,33 @@ public class HistorySettingsFragment extends BasePreferenceFragment { .show(); } + if (preference.getKey().equals(playbackStatesClearKey)) { + new AlertDialog.Builder(getActivity()) + .setTitle(R.string.delete_playback_states_alert) + .setNegativeButton(R.string.cancel, ((dialog, which) -> dialog.dismiss())) + .setPositiveButton(R.string.delete, ((dialog, which) -> { + + final Disposable onDeletePlaybackStates = recordManager.deleteCompelteStreamStateHistory() + .observeOn(AndroidSchedulers.mainThread()) + .subscribe( + howManyDeleted -> Toast.makeText(getActivity(), + R.string.watch_history_states_deleted, + Toast.LENGTH_SHORT).show(), + throwable -> ErrorActivity.reportError(getContext(), + throwable, + SettingsActivity.class, null, + ErrorActivity.ErrorInfo.make( + UserAction.DELETE_FROM_HISTORY, + "none", + "Delete playback states", + R.string.general_error))); + + disposables.add(onDeletePlaybackStates); + })) + .create() + .show(); + } + if (preference.getKey().equals(searchHistoryClearKey)) { new AlertDialog.Builder(getActivity()) .setTitle(R.string.delete_search_history_alert) diff --git a/app/src/main/res/values/settings_keys.xml b/app/src/main/res/values/settings_keys.xml index 6c51fbb1c..fc7abf678 100644 --- a/app/src/main/res/values/settings_keys.xml +++ b/app/src/main/res/values/settings_keys.xml @@ -153,13 +153,14 @@ enable_playback_resume enable_playback_state_lists - import_data - export_data + import_data + export_data download_thumbnail_key cache_wipe_key clear_play_history + clear_playback_states clear_search_history downloads_storage_ask diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index fd7a440bb..1025b504b 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -171,9 +171,12 @@ Overrides your current history and subscriptions Export history, subscriptions and playlists Clear watch history - Deletes the history of played streams + Deletes the history of played streams and the playback positions Delete entire watch history? Watch history deleted. + Delete playback positions + Deletes all playback positions + Delete all playback positions? Playback positions deleted. Clear search history Deletes history of search keywords diff --git a/app/src/main/res/xml/history_settings.xml b/app/src/main/res/xml/history_settings.xml index cae2d56c0..81dc195f3 100644 --- a/app/src/main/res/xml/history_settings.xml +++ b/app/src/main/res/xml/history_settings.xml @@ -51,6 +51,12 @@ android:title="@string/clear_views_history_title" app:iconSpaceReserved="false" /> + +