Remove no longer needed compat methods

This commit is contained in:
TacoTheDank 2021-12-12 14:56:31 -05:00
parent d4769620b7
commit ca7f2d2d3d
16 changed files with 31 additions and 90 deletions

View File

@ -27,7 +27,6 @@ import androidx.appcompat.app.ActionBarDrawerToggle;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.widget.Toolbar;
import androidx.core.content.ContextCompat;
import androidx.core.view.ViewCompat;
import androidx.drawerlayout.widget.DrawerLayout;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
@ -153,14 +152,14 @@ public class MainActivity extends CastEnabledActivity {
}
/**
* ViewCompat.generateViewId stores the current ID in a static variable.
* View.generateViewId stores the current ID in a static variable.
* When the process is killed, the variable gets reset.
* This makes sure that we do not get ID collisions
* and therefore errors when trying to restore state from another view.
*/
@SuppressWarnings("StatementWithEmptyBody")
private void ensureGeneratedViewIdGreaterThan(int minimum) {
while (ViewCompat.generateViewId() <= minimum) {
while (View.generateViewId() <= minimum) {
// Generate new IDs
}
}
@ -168,7 +167,7 @@ public class MainActivity extends CastEnabledActivity {
@Override
protected void onSaveInstanceState(@NonNull Bundle outState) {
super.onSaveInstanceState(outState);
outState.putInt(KEY_GENERATED_VIEW_ID, ViewCompat.generateViewId());
outState.putInt(KEY_GENERATED_VIEW_ID, View.generateViewId());
}
private final BottomSheetBehavior.BottomSheetCallback bottomSheetCallback =

View File

@ -9,7 +9,6 @@ import android.widget.ProgressBar;
import android.widget.RadioButton;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.core.content.ContextCompat;
import androidx.core.util.Consumer;
import androidx.recyclerview.widget.RecyclerView;
import de.danoeh.antennapod.R;
@ -74,7 +73,7 @@ public class DataFolderAdapter extends RecyclerView.Adapter<DataFolderAdapter.Vi
}
private List<StoragePath> getStorageEntries(Context context) {
File[] mediaDirs = ContextCompat.getExternalFilesDirs(context, null);
File[] mediaDirs = context.getExternalFilesDirs(null);
final List<StoragePath> entries = new ArrayList<>(mediaDirs.length);
for (File dir : mediaDirs) {
if (!isWritable(dir)) {

View File

@ -7,7 +7,6 @@ import android.view.MenuInflater;
import android.view.MotionEvent;
import android.view.View;
import androidx.core.view.ViewCompat;
import de.danoeh.antennapod.R;
import de.danoeh.antennapod.activity.MainActivity;
import de.danoeh.antennapod.core.preferences.UserPreferences;
@ -53,7 +52,7 @@ public class QueueRecyclerAdapter extends EpisodeItemListAdapter {
});
holder.coverHolder.setOnTouchListener((v1, event) -> {
if (event.getActionMasked() == MotionEvent.ACTION_DOWN) {
boolean isLtr = ViewCompat.getLayoutDirection(holder.itemView) == ViewCompat.LAYOUT_DIRECTION_LTR;
boolean isLtr = holder.itemView.getLayoutDirection() == View.LAYOUT_DIRECTION_LTR;
float factor = isLtr ? 1 : -1;
if (factor * event.getX() < factor * 0.5 * v1.getWidth()) {
Log.d(TAG, "startDrag()");

View File

@ -4,6 +4,7 @@ import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Rect;
import android.graphics.drawable.Drawable;
import android.text.TextUtils;
import android.view.ContextMenu;
import android.view.LayoutInflater;
import android.view.MenuInflater;
@ -18,8 +19,6 @@ import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.appcompat.content.res.AppCompatResources;
import androidx.core.text.TextUtilsCompat;
import androidx.core.view.ViewCompat;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.RecyclerView;
@ -222,8 +221,7 @@ public class SubscriptionsRecyclerAdapter extends SelectableAdapter<Subscription
feedTitle.setText(drawerItem.getTitle());
imageView.setContentDescription(drawerItem.getTitle());
feedTitle.setVisibility(View.VISIBLE);
if (TextUtilsCompat.getLayoutDirectionFromLocale(Locale.getDefault())
== ViewCompat.LAYOUT_DIRECTION_RTL) {
if (TextUtils.getLayoutDirectionFromLocale(Locale.getDefault()) == View.LAYOUT_DIRECTION_RTL) {
count.setCorner(TriangleLabelView.Corner.TOP_LEFT);
}

View File

@ -24,7 +24,7 @@ import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.RequiresApi;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.widget.AppCompatDrawableManager;
import androidx.appcompat.content.res.AppCompatResources;
import androidx.appcompat.widget.Toolbar;
import androidx.documentfile.provider.DocumentFile;
import androidx.fragment.app.Fragment;
@ -124,9 +124,9 @@ public class FeedInfoFragment extends Fragment implements Toolbar.OnMenuItemClic
@Override
protected void doTint(Context themedContext) {
toolbar.getMenu().findItem(R.id.visit_website_item)
.setIcon(AppCompatDrawableManager.get().getDrawable(themedContext, R.drawable.ic_web));
.setIcon(AppCompatResources.getDrawable(themedContext, R.drawable.ic_web));
toolbar.getMenu().findItem(R.id.share_parent)
.setIcon(AppCompatDrawableManager.get().getDrawable(themedContext, R.drawable.ic_share));
.setIcon(AppCompatResources.getDrawable(themedContext, R.drawable.ic_share));
}
};
iconTintManager.updateTint();

View File

@ -22,7 +22,7 @@ import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.widget.AppCompatDrawableManager;
import androidx.appcompat.content.res.AppCompatResources;
import androidx.appcompat.widget.Toolbar;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.RecyclerView;
@ -187,13 +187,13 @@ public class FeedItemlistFragment extends Fragment implements AdapterView.OnItem
@Override
protected void doTint(Context themedContext) {
toolbar.getMenu().findItem(R.id.sort_items)
.setIcon(AppCompatDrawableManager.get().getDrawable(themedContext, R.drawable.ic_sort));
.setIcon(AppCompatResources.getDrawable(themedContext, R.drawable.ic_sort));
toolbar.getMenu().findItem(R.id.filter_items)
.setIcon(AppCompatDrawableManager.get().getDrawable(themedContext, R.drawable.ic_filter));
.setIcon(AppCompatResources.getDrawable(themedContext, R.drawable.ic_filter));
toolbar.getMenu().findItem(R.id.refresh_item)
.setIcon(AppCompatDrawableManager.get().getDrawable(themedContext, R.drawable.ic_refresh));
.setIcon(AppCompatResources.getDrawable(themedContext, R.drawable.ic_refresh));
toolbar.getMenu().findItem(R.id.action_search)
.setIcon(AppCompatDrawableManager.get().getDrawable(themedContext, R.drawable.ic_search));
.setIcon(AppCompatResources.getDrawable(themedContext, R.drawable.ic_search));
}
};
iconTintManager.updateTint();

View File

@ -15,9 +15,6 @@ import android.widget.ImageView;
import android.widget.ProgressBar;
import android.widget.TextView;
import androidx.annotation.Nullable;
import androidx.core.text.TextUtilsCompat;
import androidx.core.util.ObjectsCompat;
import androidx.core.view.ViewCompat;
import androidx.fragment.app.Fragment;
import com.bumptech.glide.Glide;
import com.bumptech.glide.load.resource.bitmap.FitCenter;
@ -71,6 +68,7 @@ import org.greenrobot.eventbus.ThreadMode;
import java.util.List;
import java.util.Locale;
import java.util.Objects;
/**
* Displays information about a FeedItem and actions.
@ -148,7 +146,7 @@ public class ItemFragment extends Fragment {
webvDescription = layout.findViewById(R.id.webvDescription);
webvDescription.setTimecodeSelectedListener(time -> {
if (controller != null && item.getMedia() != null && controller.getMedia() != null
&& ObjectsCompat.equals(item.getMedia().getIdentifier(), controller.getMedia().getIdentifier())) {
&& Objects.equals(item.getMedia().getIdentifier(), controller.getMedia().getIdentifier())) {
controller.seekTo(time);
} else {
((MainActivity) getActivity()).showSnackbarAbovePlayer(R.string.play_this_to_seek_position,
@ -189,8 +187,8 @@ public class ItemFragment extends Fragment {
}
private void showOnDemandConfigBalloon(boolean offerStreaming) {
boolean isLocaleRtl = TextUtilsCompat.getLayoutDirectionFromLocale(Locale.getDefault())
== ViewCompat.LAYOUT_DIRECTION_RTL;
boolean isLocaleRtl = TextUtils.getLayoutDirectionFromLocale(Locale.getDefault())
== View.LAYOUT_DIRECTION_RTL;
Balloon balloon = new Balloon.Builder(getContext())
.setArrowOrientation(ArrowOrientation.TOP)
.setArrowPosition(0.25f + ((isLocaleRtl ^ offerStreaming) ? 0f : 0.5f))

View File

@ -9,7 +9,6 @@ import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.widget.Toolbar;
import androidx.core.view.ViewCompat;
import androidx.fragment.app.Fragment;
import androidx.viewpager2.adapter.FragmentStateAdapter;
import androidx.viewpager2.widget.ViewPager2;
@ -78,7 +77,7 @@ public class ItemPagerFragment extends Fragment implements Toolbar.OnMenuItemCli
// > When using FragmentStatePagerAdapter the host ViewPager must have a valid ID set.
// When opening multiple ItemPagerFragments by clicking "item" -> "visit podcast" -> "item" -> etc,
// the ID is no longer unique and FragmentStatePagerAdapter does not display any pages.
int newId = ViewCompat.generateViewId();
int newId = View.generateViewId();
if (savedInstanceState != null && savedInstanceState.getInt(KEY_PAGER_ID, 0) != 0) {
// Restore state by using the same ID as before. ID collisions are prevented in MainActivity.
newId = savedInstanceState.getInt(KEY_PAGER_ID, 0);

View File

@ -17,7 +17,6 @@ import de.danoeh.antennapod.R;
import de.danoeh.antennapod.adapter.DownloadStatisticsListAdapter;
import de.danoeh.antennapod.core.storage.DBReader;
import de.danoeh.antennapod.core.storage.StatisticsItem;
import de.danoeh.antennapod.core.util.comparator.CompareCompat;
import io.reactivex.Observable;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable;
@ -75,7 +74,7 @@ public class DownloadStatisticsFragment extends Fragment {
Observable.fromCallable(() -> {
List<StatisticsItem> statisticsData = DBReader.getStatistics();
Collections.sort(statisticsData, (item1, item2) ->
CompareCompat.compareLong(item1.totalDownloadSize, item2.totalDownloadSize));
Long.compare(item2.totalDownloadSize, item1.totalDownloadSize));
return statisticsData;
})
.subscribeOn(Schedulers.io())

View File

@ -8,9 +8,7 @@ import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
import androidx.activity.result.ActivityResult;
@ -42,7 +40,6 @@ import io.reactivex.disposables.Disposable;
import io.reactivex.schedulers.Schedulers;
import java.io.File;
import java.io.FileOutputStream;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
@ -169,21 +166,7 @@ public class ImportExportPreferencesFragment extends PreferenceFragmentCompat {
}
private void exportDatabase() {
if (Build.VERSION.SDK_INT >= 19) {
backupDatabaseLauncher.launch(dateStampFilename(DATABASE_EXPORT_FILENAME));
} else {
File sd = Environment.getExternalStorageDirectory();
File backupDB = new File(sd, dateStampFilename(DATABASE_EXPORT_FILENAME));
progressDialog.show();
disposable = Completable.fromAction(() ->
DatabaseExporter.exportToStream(new FileOutputStream(backupDB), getContext()))
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(() -> {
Snackbar.make(getView(), R.string.export_success_title, Snackbar.LENGTH_LONG).show();
progressDialog.dismiss();
}, this::showExportErrorDialog);
}
backupDatabaseLauncher.launch(dateStampFilename(DATABASE_EXPORT_FILENAME));
}
private void importDatabase() {

View File

@ -28,7 +28,6 @@ import de.danoeh.antennapod.core.preferences.UserPreferences;
import de.danoeh.antennapod.core.storage.DBReader;
import de.danoeh.antennapod.core.storage.DBWriter;
import de.danoeh.antennapod.core.storage.StatisticsItem;
import de.danoeh.antennapod.core.util.comparator.CompareCompat;
import io.reactivex.Completable;
import io.reactivex.Observable;
import io.reactivex.android.schedulers.AndroidSchedulers;
@ -188,10 +187,10 @@ public class PlaybackStatisticsFragment extends Fragment {
List<StatisticsItem> statisticsData = DBReader.getStatistics();
if (countAll) {
Collections.sort(statisticsData, (item1, item2) ->
CompareCompat.compareLong(item1.timePlayedCountAll, item2.timePlayedCountAll));
Long.compare(item2.timePlayedCountAll, item1.timePlayedCountAll));
} else {
Collections.sort(statisticsData, (item1, item2) ->
CompareCompat.compareLong(item1.timePlayed, item2.timePlayed));
Long.compare(item2.timePlayed, item1.timePlayed));
}
return statisticsData;
}

View File

@ -6,7 +6,6 @@ import android.graphics.PorterDuffColorFilter;
import android.graphics.drawable.Drawable;
import android.view.ContextThemeWrapper;
import androidx.appcompat.widget.Toolbar;
import androidx.core.view.ViewCompat;
import com.google.android.material.appbar.AppBarLayout;
import com.google.android.material.appbar.CollapsingToolbarLayout;
import de.danoeh.antennapod.R;
@ -25,7 +24,7 @@ public abstract class ToolbarIconTintManager implements AppBarLayout.OnOffsetCha
@Override
public void onOffsetChanged(AppBarLayout appBarLayout, int offset) {
boolean tint = (collapsingToolbar.getHeight() + offset) > (2 * ViewCompat.getMinimumHeight(collapsingToolbar));
boolean tint = (collapsingToolbar.getHeight() + offset) > (2 * collapsingToolbar.getMinimumHeight());
if (isTinted != tint) {
isTinted = tint;
updateTint();

View File

@ -8,7 +8,6 @@ import android.net.NetworkInfo;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.os.Build;
import androidx.core.net.ConnectivityManagerCompat;
import android.text.TextUtils;
import android.util.Log;
@ -97,7 +96,7 @@ public class NetworkUtils {
private static boolean isNetworkMetered() {
ConnectivityManager connManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
return ConnectivityManagerCompat.isActiveNetworkMetered(connManager);
return connManager.isActiveNetworkMetered();
}
private static boolean isNetworkCellular() {

View File

@ -1,29 +0,0 @@
package de.danoeh.antennapod.core.util.comparator;
/**
* Some compare() methods are not available before API 19.
* This class provides fallbacks
*/
public class CompareCompat {
private CompareCompat() {
// Must not be instantiated
}
/**
* Compares two {@code long} values. Long.compare() is not available before API 19
*
* @return 0 if long1 = long2, less than 0 if long1 &lt; long2,
* and greater than 0 if long1 &gt; long2.
*/
public static int compareLong(long long1, long long2) {
//noinspection UseCompareMethod
if (long1 > long2) {
return -1;
} else if (long1 < long2) {
return 1;
} else {
return 0;
}
}
}

View File

@ -5,5 +5,4 @@ dependencies {
implementation project(':model')
annotationProcessor "androidx.annotation:annotation:$annotationVersion"
implementation "androidx.appcompat:appcompat:$appcompatVersion"
}

View File

@ -4,7 +4,6 @@ import android.text.TextUtils;
import android.util.Log;
import androidx.annotation.NonNull;
import androidx.core.util.ObjectsCompat;
import org.json.JSONException;
import org.json.JSONObject;
@ -13,6 +12,7 @@ import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
import java.util.Objects;
import java.util.TimeZone;
import de.danoeh.antennapod.model.feed.FeedItem;
@ -159,10 +159,10 @@ public class EpisodeAction {
&& position == that.position
&& total == that.total
&& action != that.action
&& ObjectsCompat.equals(podcast, that.podcast)
&& ObjectsCompat.equals(episode, that.episode)
&& ObjectsCompat.equals(timestamp, that.timestamp)
&& ObjectsCompat.equals(guid, that.guid);
&& Objects.equals(podcast, that.podcast)
&& Objects.equals(episode, that.episode)
&& Objects.equals(timestamp, that.timestamp)
&& Objects.equals(guid, that.guid);
}
@Override