Merge branch 'dev' into pr2335
This commit is contained in:
commit
6ead95b5d2
423 changed files with 3413 additions and 4301 deletions
|
|
@ -50,7 +50,7 @@ public class AppearanceSettingsFragment extends BasePreferenceFragment {
|
|||
|
||||
@Override
|
||||
public boolean onPreferenceTreeClick(final Preference preference) {
|
||||
if (preference.getKey().equals(getString(R.string.caption_settings_key))) {
|
||||
if (getString(R.string.caption_settings_key).equals(preference.getKey())) {
|
||||
try {
|
||||
startActivity(new Intent(Settings.ACTION_CAPTIONING_SETTINGS));
|
||||
} catch (final ActivityNotFoundException e) {
|
||||
|
|
|
|||
|
|
@ -185,7 +185,7 @@ public class DownloadSettingsFragment extends BasePreferenceFragment {
|
|||
}
|
||||
|
||||
@Override
|
||||
public boolean onPreferenceTreeClick(final Preference preference) {
|
||||
public boolean onPreferenceTreeClick(@NonNull final Preference preference) {
|
||||
if (DEBUG) {
|
||||
Log.d(TAG, "onPreferenceTreeClick() called with: "
|
||||
+ "preference = [" + preference + "]");
|
||||
|
|
|
|||
|
|
@ -7,10 +7,9 @@ import android.view.MenuItem;
|
|||
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import org.schabi.newpipe.App;
|
||||
import org.schabi.newpipe.CheckForNewAppVersion;
|
||||
import org.schabi.newpipe.MainActivity;
|
||||
import org.schabi.newpipe.R;
|
||||
import org.schabi.newpipe.util.ReleaseVersionUtil;
|
||||
|
||||
public class MainSettingsFragment extends BasePreferenceFragment {
|
||||
public static final boolean DEBUG = MainActivity.DEBUG;
|
||||
|
|
@ -24,7 +23,7 @@ public class MainSettingsFragment extends BasePreferenceFragment {
|
|||
setHasOptionsMenu(true); // Otherwise onCreateOptionsMenu is not called
|
||||
|
||||
// Check if the app is updatable
|
||||
if (!CheckForNewAppVersion.isReleaseApk(App.getApp())) {
|
||||
if (!ReleaseVersionUtil.isReleaseApk()) {
|
||||
getPreferenceScreen().removePreference(
|
||||
findPreference(getString(R.string.update_pref_screen_key)));
|
||||
|
||||
|
|
|
|||
|
|
@ -21,7 +21,6 @@ import android.widget.Toast;
|
|||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.appcompat.app.AlertDialog;
|
||||
import androidx.appcompat.content.res.AppCompatResources;
|
||||
import androidx.appcompat.widget.AppCompatImageView;
|
||||
import androidx.fragment.app.Fragment;
|
||||
import androidx.preference.PreferenceManager;
|
||||
|
|
@ -51,8 +50,6 @@ import io.reactivex.rxjava3.disposables.Disposable;
|
|||
import io.reactivex.rxjava3.schedulers.Schedulers;
|
||||
|
||||
public class PeertubeInstanceListFragment extends Fragment {
|
||||
private static final int MENU_ITEM_RESTORE_ID = 123456;
|
||||
|
||||
private final List<PeertubeInstance> instanceList = new ArrayList<>();
|
||||
private PeertubeInstance selectedInstance;
|
||||
private String savedInstanceListKey;
|
||||
|
|
@ -142,17 +139,12 @@ public class PeertubeInstanceListFragment extends Fragment {
|
|||
public void onCreateOptionsMenu(@NonNull final Menu menu,
|
||||
@NonNull final MenuInflater inflater) {
|
||||
super.onCreateOptionsMenu(menu, inflater);
|
||||
|
||||
final MenuItem restoreItem = menu
|
||||
.add(Menu.NONE, MENU_ITEM_RESTORE_ID, Menu.NONE, R.string.restore_defaults);
|
||||
restoreItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
|
||||
restoreItem.setIcon(AppCompatResources.getDrawable(requireContext(),
|
||||
R.drawable.ic_settings_backup_restore));
|
||||
inflater.inflate(R.menu.menu_chooser_fragment, menu);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onOptionsItemSelected(final MenuItem item) {
|
||||
if (item.getItemId() == MENU_ITEM_RESTORE_ID) {
|
||||
if (item.getItemId() == R.id.menu_item_restore_default) {
|
||||
restoreDefaults();
|
||||
return true;
|
||||
}
|
||||
|
|
@ -191,7 +183,7 @@ public class PeertubeInstanceListFragment extends Fragment {
|
|||
.setTitle(R.string.restore_defaults)
|
||||
.setMessage(R.string.restore_defaults_confirmation)
|
||||
.setNegativeButton(R.string.cancel, null)
|
||||
.setPositiveButton(R.string.yes, (dialog, which) -> {
|
||||
.setPositiveButton(R.string.ok, (dialog, which) -> {
|
||||
sharedPreferences.edit().remove(savedInstanceListKey).apply();
|
||||
selectInstance(PeertubeInstance.defaultInstance);
|
||||
updateInstanceList();
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ import android.os.Bundle;
|
|||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.ProgressBar;
|
||||
import android.widget.TextView;
|
||||
|
||||
|
|
@ -24,7 +25,6 @@ import org.schabi.newpipe.util.ThemeHelper;
|
|||
import java.util.List;
|
||||
import java.util.Vector;
|
||||
|
||||
import de.hdodenhof.circleimageview.CircleImageView;
|
||||
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers;
|
||||
import io.reactivex.rxjava3.core.Observer;
|
||||
import io.reactivex.rxjava3.disposables.Disposable;
|
||||
|
|
@ -200,7 +200,7 @@ public class SelectChannelFragment extends DialogFragment {
|
|||
|
||||
public class SelectChannelItemHolder extends RecyclerView.ViewHolder {
|
||||
public final View view;
|
||||
final CircleImageView thumbnailView;
|
||||
final ImageView thumbnailView;
|
||||
final TextView titleView;
|
||||
SelectChannelItemHolder(final View v) {
|
||||
super(v);
|
||||
|
|
|
|||
|
|
@ -23,8 +23,6 @@ import androidx.preference.PreferenceFragmentCompat;
|
|||
|
||||
import com.jakewharton.rxbinding4.widget.RxTextView;
|
||||
|
||||
import org.schabi.newpipe.App;
|
||||
import org.schabi.newpipe.CheckForNewAppVersion;
|
||||
import org.schabi.newpipe.MainActivity;
|
||||
import org.schabi.newpipe.R;
|
||||
import org.schabi.newpipe.databinding.SettingsLayoutBinding;
|
||||
|
|
@ -37,6 +35,7 @@ import org.schabi.newpipe.settings.preferencesearch.PreferenceSearchResultListen
|
|||
import org.schabi.newpipe.settings.preferencesearch.PreferenceSearcher;
|
||||
import org.schabi.newpipe.util.DeviceUtils;
|
||||
import org.schabi.newpipe.util.KeyboardUtil;
|
||||
import org.schabi.newpipe.util.ReleaseVersionUtil;
|
||||
import org.schabi.newpipe.util.ThemeHelper;
|
||||
import org.schabi.newpipe.views.FocusOverlayView;
|
||||
|
||||
|
|
@ -170,7 +169,7 @@ public class SettingsActivity extends AppCompatActivity implements
|
|||
}
|
||||
|
||||
@Override
|
||||
public boolean onPreferenceStartFragment(final PreferenceFragmentCompat caller,
|
||||
public boolean onPreferenceStartFragment(@NonNull final PreferenceFragmentCompat caller,
|
||||
final Preference preference) {
|
||||
showSettingsFragment(instantiateFragment(preference.getFragment()));
|
||||
return true;
|
||||
|
|
@ -267,7 +266,7 @@ public class SettingsActivity extends AppCompatActivity implements
|
|||
*/
|
||||
private void ensureSearchRepresentsApplicationState() {
|
||||
// Check if the update settings are available
|
||||
if (!CheckForNewAppVersion.isReleaseApk(App.getApp())) {
|
||||
if (!ReleaseVersionUtil.isReleaseApk()) {
|
||||
SettingsResourceRegistry.getInstance()
|
||||
.getEntryByPreferencesResId(R.xml.update_settings)
|
||||
.setSearchable(false);
|
||||
|
|
|
|||
|
|
@ -116,6 +116,7 @@ public final class SettingsResourceRegistry {
|
|||
return this;
|
||||
}
|
||||
|
||||
@NonNull
|
||||
public Class<? extends Fragment> getFragmentClass() {
|
||||
return fragmentClass;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,12 +1,11 @@
|
|||
package org.schabi.newpipe.settings;
|
||||
|
||||
import static org.schabi.newpipe.CheckForNewAppVersion.startNewVersionCheckService;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.widget.Toast;
|
||||
|
||||
import androidx.preference.Preference;
|
||||
|
||||
import org.schabi.newpipe.NewVersionWorker;
|
||||
import org.schabi.newpipe.R;
|
||||
|
||||
public class UpdateSettingsFragment extends BasePreferenceFragment {
|
||||
|
|
@ -33,7 +32,7 @@ public class UpdateSettingsFragment extends BasePreferenceFragment {
|
|||
// Reset the expire time. This is necessary to check for an update immediately.
|
||||
defaultPreferences.edit()
|
||||
.putLong(getString(R.string.update_expiry_key), 0).apply();
|
||||
startNewVersionCheckService();
|
||||
NewVersionWorker.enqueueNewVersionCheckingWork(getContext());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -14,10 +14,10 @@ import org.schabi.newpipe.util.Localization
|
|||
* If the entry values array have anything other than numbers in it, an exception will be raised.
|
||||
*/
|
||||
class DurationListPreference : ListPreference {
|
||||
constructor(context: Context?, attrs: AttributeSet?, defStyleAttr: Int, defStyleRes: Int) : super(context, attrs, defStyleAttr, defStyleRes)
|
||||
constructor(context: Context?, attrs: AttributeSet?, defStyleAttr: Int) : super(context, attrs, defStyleAttr)
|
||||
constructor(context: Context?, attrs: AttributeSet?) : super(context, attrs)
|
||||
constructor(context: Context?) : super(context)
|
||||
constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int, defStyleRes: Int) : super(context, attrs, defStyleAttr, defStyleRes)
|
||||
constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int) : super(context, attrs, defStyleAttr)
|
||||
constructor(context: Context, attrs: AttributeSet?) : super(context, attrs)
|
||||
constructor(context: Context) : super(context)
|
||||
|
||||
override fun onAttached() {
|
||||
super.onAttached()
|
||||
|
|
|
|||
|
|
@ -50,7 +50,7 @@ public class NotificationActionsPreference extends Preference {
|
|||
////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
@Override
|
||||
public void onBindViewHolder(final PreferenceViewHolder holder) {
|
||||
public void onBindViewHolder(@NonNull final PreferenceViewHolder holder) {
|
||||
super.onBindViewHolder(holder);
|
||||
|
||||
holder.itemView.setClickable(false);
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ import androidx.preference.PreferenceCategory;
|
|||
import androidx.preference.PreferenceScreen;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.stream.Stream;
|
||||
|
|
@ -11,7 +12,7 @@ import java.util.stream.Stream;
|
|||
public class PreferenceSearchConfiguration {
|
||||
private PreferenceSearchFunction searcher = new PreferenceFuzzySearchFunction();
|
||||
|
||||
private final List<String> parserIgnoreElements = Arrays.asList(
|
||||
private final List<String> parserIgnoreElements = Collections.singletonList(
|
||||
PreferenceCategory.class.getSimpleName());
|
||||
private final List<String> parserContainerElements = Arrays.asList(
|
||||
PreferenceCategory.class.getSimpleName(),
|
||||
|
|
|
|||
|
|
@ -58,22 +58,27 @@ public class PreferenceSearchItem {
|
|||
this.searchIndexItemResId = searchIndexItemResId;
|
||||
}
|
||||
|
||||
@NonNull
|
||||
public String getKey() {
|
||||
return key;
|
||||
}
|
||||
|
||||
@NonNull
|
||||
public String getTitle() {
|
||||
return title;
|
||||
}
|
||||
|
||||
@NonNull
|
||||
public String getSummary() {
|
||||
return summary;
|
||||
}
|
||||
|
||||
@NonNull
|
||||
public String getEntries() {
|
||||
return entries;
|
||||
}
|
||||
|
||||
@NonNull
|
||||
public String getBreadcrumbs() {
|
||||
return breadcrumbs;
|
||||
}
|
||||
|
|
@ -94,7 +99,7 @@ public class PreferenceSearchItem {
|
|||
getBreadcrumbs());
|
||||
}
|
||||
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public String toString() {
|
||||
return "PreferenceItem: " + title + " " + summary + " " + key;
|
||||
|
|
|
|||
|
|
@ -7,7 +7,6 @@ import android.os.Bundle;
|
|||
import android.view.LayoutInflater;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuInflater;
|
||||
import android.view.MenuItem;
|
||||
import android.view.MotionEvent;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
|
@ -17,7 +16,6 @@ import android.widget.TextView;
|
|||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.appcompat.app.AlertDialog;
|
||||
import androidx.appcompat.content.res.AppCompatResources;
|
||||
import androidx.appcompat.widget.AppCompatImageView;
|
||||
import androidx.fragment.app.Fragment;
|
||||
import androidx.recyclerview.widget.ItemTouchHelper;
|
||||
|
|
@ -107,12 +105,8 @@ public class ChooseTabsFragment extends Fragment {
|
|||
public void onCreateOptionsMenu(@NonNull final Menu menu,
|
||||
@NonNull final MenuInflater inflater) {
|
||||
super.onCreateOptionsMenu(menu, inflater);
|
||||
|
||||
final MenuItem restoreItem = menu.add(R.string.restore_defaults);
|
||||
restoreItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
|
||||
restoreItem.setIcon(AppCompatResources.getDrawable(requireContext(),
|
||||
R.drawable.ic_settings_backup_restore));
|
||||
restoreItem.setOnMenuItemClickListener(ev -> {
|
||||
inflater.inflate(R.menu.menu_chooser_fragment, menu);
|
||||
menu.findItem(R.id.menu_item_restore_default).setOnMenuItemClickListener(item -> {
|
||||
restoreDefaults();
|
||||
return true;
|
||||
});
|
||||
|
|
@ -136,7 +130,7 @@ public class ChooseTabsFragment extends Fragment {
|
|||
.setTitle(R.string.restore_defaults)
|
||||
.setMessage(R.string.restore_defaults_confirmation)
|
||||
.setNegativeButton(R.string.cancel, null)
|
||||
.setPositiveButton(R.string.yes, (dialog, which) -> {
|
||||
.setPositiveButton(R.string.ok, (dialog, which) -> {
|
||||
tabsManager.resetTabs();
|
||||
updateTabList();
|
||||
selectedTabsAdapter.notifyDataSetChanged();
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ import androidx.annotation.Nullable;
|
|||
import androidx.fragment.app.Fragment;
|
||||
|
||||
import com.grack.nanojson.JsonObject;
|
||||
import com.grack.nanojson.JsonSink;
|
||||
import com.grack.nanojson.JsonStringWriter;
|
||||
|
||||
import org.schabi.newpipe.R;
|
||||
import org.schabi.newpipe.database.LocalItem.LocalItemType;
|
||||
|
|
@ -132,7 +132,7 @@ public abstract class Tab {
|
|||
// JSON Handling
|
||||
//////////////////////////////////////////////////////////////////////////*/
|
||||
|
||||
public void writeJsonOn(final JsonSink jsonSink) {
|
||||
public void writeJsonOn(final JsonStringWriter jsonSink) {
|
||||
jsonSink.object();
|
||||
|
||||
jsonSink.value(JSON_TAB_ID_KEY, getTabId());
|
||||
|
|
@ -141,7 +141,7 @@ public abstract class Tab {
|
|||
jsonSink.end();
|
||||
}
|
||||
|
||||
protected void writeDataToJson(final JsonSink writerSink) {
|
||||
protected void writeDataToJson(final JsonStringWriter writerSink) {
|
||||
// No-op
|
||||
}
|
||||
|
||||
|
|
@ -340,7 +340,7 @@ public abstract class Tab {
|
|||
@DrawableRes
|
||||
@Override
|
||||
public int getTabIconRes(final Context context) {
|
||||
final int kioskIcon = KioskTranslator.getKioskIcon(kioskId, context);
|
||||
final int kioskIcon = KioskTranslator.getKioskIcon(kioskId);
|
||||
|
||||
if (kioskIcon <= 0) {
|
||||
throw new IllegalStateException("Kiosk ID is not valid: \"" + kioskId + "\"");
|
||||
|
|
@ -355,7 +355,7 @@ public abstract class Tab {
|
|||
}
|
||||
|
||||
@Override
|
||||
protected void writeDataToJson(final JsonSink writerSink) {
|
||||
protected void writeDataToJson(final JsonStringWriter writerSink) {
|
||||
writerSink.value(JSON_KIOSK_SERVICE_ID_KEY, kioskServiceId)
|
||||
.value(JSON_KIOSK_ID_KEY, kioskId);
|
||||
}
|
||||
|
|
@ -437,7 +437,7 @@ public abstract class Tab {
|
|||
}
|
||||
|
||||
@Override
|
||||
protected void writeDataToJson(final JsonSink writerSink) {
|
||||
protected void writeDataToJson(final JsonStringWriter writerSink) {
|
||||
writerSink.value(JSON_CHANNEL_SERVICE_ID_KEY, channelServiceId)
|
||||
.value(JSON_CHANNEL_URL_KEY, channelUrl)
|
||||
.value(JSON_CHANNEL_NAME_KEY, channelName);
|
||||
|
|
@ -496,7 +496,7 @@ public abstract class Tab {
|
|||
@DrawableRes
|
||||
@Override
|
||||
public int getTabIconRes(final Context context) {
|
||||
return KioskTranslator.getKioskIcon(getDefaultKioskId(context), context);
|
||||
return KioskTranslator.getKioskIcon(getDefaultKioskId(context));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -584,7 +584,7 @@ public abstract class Tab {
|
|||
}
|
||||
|
||||
@Override
|
||||
protected void writeDataToJson(final JsonSink writerSink) {
|
||||
protected void writeDataToJson(final JsonStringWriter writerSink) {
|
||||
writerSink.value(JSON_PLAYLIST_SERVICE_ID_KEY, playlistServiceId)
|
||||
.value(JSON_PLAYLIST_URL_KEY, playlistUrl)
|
||||
.value(JSON_PLAYLIST_NAME_KEY, playlistName)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue