Merge pull request #5581 from TacoTheDank/remove-old-compat
Remove no longer needed compat methods
This commit is contained in:
commit
20e8b3ed6c
@ -27,7 +27,6 @@ import androidx.appcompat.app.ActionBarDrawerToggle;
|
|||||||
import androidx.appcompat.app.AlertDialog;
|
import androidx.appcompat.app.AlertDialog;
|
||||||
import androidx.appcompat.widget.Toolbar;
|
import androidx.appcompat.widget.Toolbar;
|
||||||
import androidx.core.content.ContextCompat;
|
import androidx.core.content.ContextCompat;
|
||||||
import androidx.core.view.ViewCompat;
|
|
||||||
import androidx.drawerlayout.widget.DrawerLayout;
|
import androidx.drawerlayout.widget.DrawerLayout;
|
||||||
import androidx.fragment.app.Fragment;
|
import androidx.fragment.app.Fragment;
|
||||||
import androidx.fragment.app.FragmentManager;
|
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.
|
* When the process is killed, the variable gets reset.
|
||||||
* This makes sure that we do not get ID collisions
|
* This makes sure that we do not get ID collisions
|
||||||
* and therefore errors when trying to restore state from another view.
|
* and therefore errors when trying to restore state from another view.
|
||||||
*/
|
*/
|
||||||
@SuppressWarnings("StatementWithEmptyBody")
|
@SuppressWarnings("StatementWithEmptyBody")
|
||||||
private void ensureGeneratedViewIdGreaterThan(int minimum) {
|
private void ensureGeneratedViewIdGreaterThan(int minimum) {
|
||||||
while (ViewCompat.generateViewId() <= minimum) {
|
while (View.generateViewId() <= minimum) {
|
||||||
// Generate new IDs
|
// Generate new IDs
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -168,7 +167,7 @@ public class MainActivity extends CastEnabledActivity {
|
|||||||
@Override
|
@Override
|
||||||
protected void onSaveInstanceState(@NonNull Bundle outState) {
|
protected void onSaveInstanceState(@NonNull Bundle outState) {
|
||||||
super.onSaveInstanceState(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 =
|
private final BottomSheetBehavior.BottomSheetCallback bottomSheetCallback =
|
||||||
|
@ -9,7 +9,6 @@ import android.widget.ProgressBar;
|
|||||||
import android.widget.RadioButton;
|
import android.widget.RadioButton;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.core.content.ContextCompat;
|
|
||||||
import androidx.core.util.Consumer;
|
import androidx.core.util.Consumer;
|
||||||
import androidx.recyclerview.widget.RecyclerView;
|
import androidx.recyclerview.widget.RecyclerView;
|
||||||
import de.danoeh.antennapod.R;
|
import de.danoeh.antennapod.R;
|
||||||
@ -74,7 +73,7 @@ public class DataFolderAdapter extends RecyclerView.Adapter<DataFolderAdapter.Vi
|
|||||||
}
|
}
|
||||||
|
|
||||||
private List<StoragePath> getStorageEntries(Context context) {
|
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);
|
final List<StoragePath> entries = new ArrayList<>(mediaDirs.length);
|
||||||
for (File dir : mediaDirs) {
|
for (File dir : mediaDirs) {
|
||||||
if (!isWritable(dir)) {
|
if (!isWritable(dir)) {
|
||||||
|
@ -7,7 +7,6 @@ import android.view.MenuInflater;
|
|||||||
import android.view.MotionEvent;
|
import android.view.MotionEvent;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
|
|
||||||
import androidx.core.view.ViewCompat;
|
|
||||||
import de.danoeh.antennapod.R;
|
import de.danoeh.antennapod.R;
|
||||||
import de.danoeh.antennapod.activity.MainActivity;
|
import de.danoeh.antennapod.activity.MainActivity;
|
||||||
import de.danoeh.antennapod.core.preferences.UserPreferences;
|
import de.danoeh.antennapod.core.preferences.UserPreferences;
|
||||||
@ -53,7 +52,7 @@ public class QueueRecyclerAdapter extends EpisodeItemListAdapter {
|
|||||||
});
|
});
|
||||||
holder.coverHolder.setOnTouchListener((v1, event) -> {
|
holder.coverHolder.setOnTouchListener((v1, event) -> {
|
||||||
if (event.getActionMasked() == MotionEvent.ACTION_DOWN) {
|
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;
|
float factor = isLtr ? 1 : -1;
|
||||||
if (factor * event.getX() < factor * 0.5 * v1.getWidth()) {
|
if (factor * event.getX() < factor * 0.5 * v1.getWidth()) {
|
||||||
Log.d(TAG, "startDrag()");
|
Log.d(TAG, "startDrag()");
|
||||||
|
@ -4,6 +4,7 @@ import android.content.Context;
|
|||||||
import android.graphics.Canvas;
|
import android.graphics.Canvas;
|
||||||
import android.graphics.Rect;
|
import android.graphics.Rect;
|
||||||
import android.graphics.drawable.Drawable;
|
import android.graphics.drawable.Drawable;
|
||||||
|
import android.text.TextUtils;
|
||||||
import android.view.ContextMenu;
|
import android.view.ContextMenu;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.MenuInflater;
|
import android.view.MenuInflater;
|
||||||
@ -18,8 +19,6 @@ import android.widget.TextView;
|
|||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.appcompat.content.res.AppCompatResources;
|
import androidx.appcompat.content.res.AppCompatResources;
|
||||||
import androidx.core.text.TextUtilsCompat;
|
|
||||||
import androidx.core.view.ViewCompat;
|
|
||||||
import androidx.fragment.app.Fragment;
|
import androidx.fragment.app.Fragment;
|
||||||
import androidx.recyclerview.widget.RecyclerView;
|
import androidx.recyclerview.widget.RecyclerView;
|
||||||
|
|
||||||
@ -222,8 +221,7 @@ public class SubscriptionsRecyclerAdapter extends SelectableAdapter<Subscription
|
|||||||
feedTitle.setText(drawerItem.getTitle());
|
feedTitle.setText(drawerItem.getTitle());
|
||||||
imageView.setContentDescription(drawerItem.getTitle());
|
imageView.setContentDescription(drawerItem.getTitle());
|
||||||
feedTitle.setVisibility(View.VISIBLE);
|
feedTitle.setVisibility(View.VISIBLE);
|
||||||
if (TextUtilsCompat.getLayoutDirectionFromLocale(Locale.getDefault())
|
if (TextUtils.getLayoutDirectionFromLocale(Locale.getDefault()) == View.LAYOUT_DIRECTION_RTL) {
|
||||||
== ViewCompat.LAYOUT_DIRECTION_RTL) {
|
|
||||||
count.setCorner(TriangleLabelView.Corner.TOP_LEFT);
|
count.setCorner(TriangleLabelView.Corner.TOP_LEFT);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -24,7 +24,7 @@ import androidx.annotation.NonNull;
|
|||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
import androidx.annotation.RequiresApi;
|
import androidx.annotation.RequiresApi;
|
||||||
import androidx.appcompat.app.AlertDialog;
|
import androidx.appcompat.app.AlertDialog;
|
||||||
import androidx.appcompat.widget.AppCompatDrawableManager;
|
import androidx.appcompat.content.res.AppCompatResources;
|
||||||
import androidx.appcompat.widget.Toolbar;
|
import androidx.appcompat.widget.Toolbar;
|
||||||
import androidx.documentfile.provider.DocumentFile;
|
import androidx.documentfile.provider.DocumentFile;
|
||||||
import androidx.fragment.app.Fragment;
|
import androidx.fragment.app.Fragment;
|
||||||
@ -124,9 +124,9 @@ public class FeedInfoFragment extends Fragment implements Toolbar.OnMenuItemClic
|
|||||||
@Override
|
@Override
|
||||||
protected void doTint(Context themedContext) {
|
protected void doTint(Context themedContext) {
|
||||||
toolbar.getMenu().findItem(R.id.visit_website_item)
|
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)
|
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();
|
iconTintManager.updateTint();
|
||||||
|
@ -22,7 +22,7 @@ import android.widget.Toast;
|
|||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
import androidx.appcompat.widget.AppCompatDrawableManager;
|
import androidx.appcompat.content.res.AppCompatResources;
|
||||||
import androidx.appcompat.widget.Toolbar;
|
import androidx.appcompat.widget.Toolbar;
|
||||||
import androidx.fragment.app.Fragment;
|
import androidx.fragment.app.Fragment;
|
||||||
import androidx.recyclerview.widget.RecyclerView;
|
import androidx.recyclerview.widget.RecyclerView;
|
||||||
@ -187,13 +187,13 @@ public class FeedItemlistFragment extends Fragment implements AdapterView.OnItem
|
|||||||
@Override
|
@Override
|
||||||
protected void doTint(Context themedContext) {
|
protected void doTint(Context themedContext) {
|
||||||
toolbar.getMenu().findItem(R.id.sort_items)
|
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)
|
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)
|
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)
|
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();
|
iconTintManager.updateTint();
|
||||||
|
@ -15,9 +15,6 @@ import android.widget.ImageView;
|
|||||||
import android.widget.ProgressBar;
|
import android.widget.ProgressBar;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
import androidx.annotation.Nullable;
|
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 androidx.fragment.app.Fragment;
|
||||||
import com.bumptech.glide.Glide;
|
import com.bumptech.glide.Glide;
|
||||||
import com.bumptech.glide.load.resource.bitmap.FitCenter;
|
import com.bumptech.glide.load.resource.bitmap.FitCenter;
|
||||||
@ -71,6 +68,7 @@ import org.greenrobot.eventbus.ThreadMode;
|
|||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Displays information about a FeedItem and actions.
|
* Displays information about a FeedItem and actions.
|
||||||
@ -148,7 +146,7 @@ public class ItemFragment extends Fragment {
|
|||||||
webvDescription = layout.findViewById(R.id.webvDescription);
|
webvDescription = layout.findViewById(R.id.webvDescription);
|
||||||
webvDescription.setTimecodeSelectedListener(time -> {
|
webvDescription.setTimecodeSelectedListener(time -> {
|
||||||
if (controller != null && item.getMedia() != null && controller.getMedia() != null
|
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);
|
controller.seekTo(time);
|
||||||
} else {
|
} else {
|
||||||
((MainActivity) getActivity()).showSnackbarAbovePlayer(R.string.play_this_to_seek_position,
|
((MainActivity) getActivity()).showSnackbarAbovePlayer(R.string.play_this_to_seek_position,
|
||||||
@ -189,8 +187,8 @@ public class ItemFragment extends Fragment {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void showOnDemandConfigBalloon(boolean offerStreaming) {
|
private void showOnDemandConfigBalloon(boolean offerStreaming) {
|
||||||
boolean isLocaleRtl = TextUtilsCompat.getLayoutDirectionFromLocale(Locale.getDefault())
|
boolean isLocaleRtl = TextUtils.getLayoutDirectionFromLocale(Locale.getDefault())
|
||||||
== ViewCompat.LAYOUT_DIRECTION_RTL;
|
== View.LAYOUT_DIRECTION_RTL;
|
||||||
Balloon balloon = new Balloon.Builder(getContext())
|
Balloon balloon = new Balloon.Builder(getContext())
|
||||||
.setArrowOrientation(ArrowOrientation.TOP)
|
.setArrowOrientation(ArrowOrientation.TOP)
|
||||||
.setArrowPosition(0.25f + ((isLocaleRtl ^ offerStreaming) ? 0f : 0.5f))
|
.setArrowPosition(0.25f + ((isLocaleRtl ^ offerStreaming) ? 0f : 0.5f))
|
||||||
|
@ -9,7 +9,6 @@ import android.view.ViewGroup;
|
|||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
import androidx.appcompat.widget.Toolbar;
|
import androidx.appcompat.widget.Toolbar;
|
||||||
import androidx.core.view.ViewCompat;
|
|
||||||
import androidx.fragment.app.Fragment;
|
import androidx.fragment.app.Fragment;
|
||||||
import androidx.viewpager2.adapter.FragmentStateAdapter;
|
import androidx.viewpager2.adapter.FragmentStateAdapter;
|
||||||
import androidx.viewpager2.widget.ViewPager2;
|
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 using FragmentStatePagerAdapter the host ViewPager must have a valid ID set.
|
||||||
// When opening multiple ItemPagerFragments by clicking "item" -> "visit podcast" -> "item" -> etc,
|
// When opening multiple ItemPagerFragments by clicking "item" -> "visit podcast" -> "item" -> etc,
|
||||||
// the ID is no longer unique and FragmentStatePagerAdapter does not display any pages.
|
// 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) {
|
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.
|
// Restore state by using the same ID as before. ID collisions are prevented in MainActivity.
|
||||||
newId = savedInstanceState.getInt(KEY_PAGER_ID, 0);
|
newId = savedInstanceState.getInt(KEY_PAGER_ID, 0);
|
||||||
|
@ -17,7 +17,6 @@ import de.danoeh.antennapod.R;
|
|||||||
import de.danoeh.antennapod.adapter.DownloadStatisticsListAdapter;
|
import de.danoeh.antennapod.adapter.DownloadStatisticsListAdapter;
|
||||||
import de.danoeh.antennapod.core.storage.DBReader;
|
import de.danoeh.antennapod.core.storage.DBReader;
|
||||||
import de.danoeh.antennapod.core.storage.StatisticsItem;
|
import de.danoeh.antennapod.core.storage.StatisticsItem;
|
||||||
import de.danoeh.antennapod.core.util.comparator.CompareCompat;
|
|
||||||
import io.reactivex.Observable;
|
import io.reactivex.Observable;
|
||||||
import io.reactivex.android.schedulers.AndroidSchedulers;
|
import io.reactivex.android.schedulers.AndroidSchedulers;
|
||||||
import io.reactivex.disposables.Disposable;
|
import io.reactivex.disposables.Disposable;
|
||||||
@ -75,7 +74,7 @@ public class DownloadStatisticsFragment extends Fragment {
|
|||||||
Observable.fromCallable(() -> {
|
Observable.fromCallable(() -> {
|
||||||
List<StatisticsItem> statisticsData = DBReader.getStatistics();
|
List<StatisticsItem> statisticsData = DBReader.getStatistics();
|
||||||
Collections.sort(statisticsData, (item1, item2) ->
|
Collections.sort(statisticsData, (item1, item2) ->
|
||||||
CompareCompat.compareLong(item1.totalDownloadSize, item2.totalDownloadSize));
|
Long.compare(item2.totalDownloadSize, item1.totalDownloadSize));
|
||||||
return statisticsData;
|
return statisticsData;
|
||||||
})
|
})
|
||||||
.subscribeOn(Schedulers.io())
|
.subscribeOn(Schedulers.io())
|
||||||
|
@ -8,9 +8,7 @@ import android.content.Intent;
|
|||||||
import android.content.pm.PackageManager;
|
import android.content.pm.PackageManager;
|
||||||
import android.content.pm.ResolveInfo;
|
import android.content.pm.ResolveInfo;
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import android.os.Build;
|
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.os.Environment;
|
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
import androidx.activity.result.ActivityResult;
|
import androidx.activity.result.ActivityResult;
|
||||||
@ -42,7 +40,6 @@ import io.reactivex.disposables.Disposable;
|
|||||||
import io.reactivex.schedulers.Schedulers;
|
import io.reactivex.schedulers.Schedulers;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.FileOutputStream;
|
|
||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -169,21 +166,7 @@ public class ImportExportPreferencesFragment extends PreferenceFragmentCompat {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void exportDatabase() {
|
private void exportDatabase() {
|
||||||
if (Build.VERSION.SDK_INT >= 19) {
|
backupDatabaseLauncher.launch(dateStampFilename(DATABASE_EXPORT_FILENAME));
|
||||||
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);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void importDatabase() {
|
private void importDatabase() {
|
||||||
|
@ -28,7 +28,6 @@ import de.danoeh.antennapod.core.preferences.UserPreferences;
|
|||||||
import de.danoeh.antennapod.core.storage.DBReader;
|
import de.danoeh.antennapod.core.storage.DBReader;
|
||||||
import de.danoeh.antennapod.core.storage.DBWriter;
|
import de.danoeh.antennapod.core.storage.DBWriter;
|
||||||
import de.danoeh.antennapod.core.storage.StatisticsItem;
|
import de.danoeh.antennapod.core.storage.StatisticsItem;
|
||||||
import de.danoeh.antennapod.core.util.comparator.CompareCompat;
|
|
||||||
import io.reactivex.Completable;
|
import io.reactivex.Completable;
|
||||||
import io.reactivex.Observable;
|
import io.reactivex.Observable;
|
||||||
import io.reactivex.android.schedulers.AndroidSchedulers;
|
import io.reactivex.android.schedulers.AndroidSchedulers;
|
||||||
@ -188,10 +187,10 @@ public class PlaybackStatisticsFragment extends Fragment {
|
|||||||
List<StatisticsItem> statisticsData = DBReader.getStatistics();
|
List<StatisticsItem> statisticsData = DBReader.getStatistics();
|
||||||
if (countAll) {
|
if (countAll) {
|
||||||
Collections.sort(statisticsData, (item1, item2) ->
|
Collections.sort(statisticsData, (item1, item2) ->
|
||||||
CompareCompat.compareLong(item1.timePlayedCountAll, item2.timePlayedCountAll));
|
Long.compare(item2.timePlayedCountAll, item1.timePlayedCountAll));
|
||||||
} else {
|
} else {
|
||||||
Collections.sort(statisticsData, (item1, item2) ->
|
Collections.sort(statisticsData, (item1, item2) ->
|
||||||
CompareCompat.compareLong(item1.timePlayed, item2.timePlayed));
|
Long.compare(item2.timePlayed, item1.timePlayed));
|
||||||
}
|
}
|
||||||
return statisticsData;
|
return statisticsData;
|
||||||
}
|
}
|
||||||
|
@ -6,7 +6,6 @@ import android.graphics.PorterDuffColorFilter;
|
|||||||
import android.graphics.drawable.Drawable;
|
import android.graphics.drawable.Drawable;
|
||||||
import android.view.ContextThemeWrapper;
|
import android.view.ContextThemeWrapper;
|
||||||
import androidx.appcompat.widget.Toolbar;
|
import androidx.appcompat.widget.Toolbar;
|
||||||
import androidx.core.view.ViewCompat;
|
|
||||||
import com.google.android.material.appbar.AppBarLayout;
|
import com.google.android.material.appbar.AppBarLayout;
|
||||||
import com.google.android.material.appbar.CollapsingToolbarLayout;
|
import com.google.android.material.appbar.CollapsingToolbarLayout;
|
||||||
import de.danoeh.antennapod.R;
|
import de.danoeh.antennapod.R;
|
||||||
@ -25,7 +24,7 @@ public abstract class ToolbarIconTintManager implements AppBarLayout.OnOffsetCha
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onOffsetChanged(AppBarLayout appBarLayout, int offset) {
|
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) {
|
if (isTinted != tint) {
|
||||||
isTinted = tint;
|
isTinted = tint;
|
||||||
updateTint();
|
updateTint();
|
||||||
|
@ -8,7 +8,6 @@ import android.net.NetworkInfo;
|
|||||||
import android.net.wifi.WifiInfo;
|
import android.net.wifi.WifiInfo;
|
||||||
import android.net.wifi.WifiManager;
|
import android.net.wifi.WifiManager;
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
import androidx.core.net.ConnectivityManagerCompat;
|
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
@ -97,7 +96,7 @@ public class NetworkUtils {
|
|||||||
|
|
||||||
private static boolean isNetworkMetered() {
|
private static boolean isNetworkMetered() {
|
||||||
ConnectivityManager connManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
|
ConnectivityManager connManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
|
||||||
return ConnectivityManagerCompat.isActiveNetworkMetered(connManager);
|
return connManager.isActiveNetworkMetered();
|
||||||
}
|
}
|
||||||
|
|
||||||
private static boolean isNetworkCellular() {
|
private static boolean isNetworkCellular() {
|
||||||
|
@ -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 < long2,
|
|
||||||
* and greater than 0 if long1 > 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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -5,5 +5,4 @@ dependencies {
|
|||||||
implementation project(':model')
|
implementation project(':model')
|
||||||
|
|
||||||
annotationProcessor "androidx.annotation:annotation:$annotationVersion"
|
annotationProcessor "androidx.annotation:annotation:$annotationVersion"
|
||||||
implementation "androidx.appcompat:appcompat:$appcompatVersion"
|
|
||||||
}
|
}
|
||||||
|
@ -4,7 +4,6 @@ import android.text.TextUtils;
|
|||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.core.util.ObjectsCompat;
|
|
||||||
|
|
||||||
import org.json.JSONException;
|
import org.json.JSONException;
|
||||||
import org.json.JSONObject;
|
import org.json.JSONObject;
|
||||||
@ -13,6 +12,7 @@ import java.text.ParseException;
|
|||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
|
import java.util.Objects;
|
||||||
import java.util.TimeZone;
|
import java.util.TimeZone;
|
||||||
|
|
||||||
import de.danoeh.antennapod.model.feed.FeedItem;
|
import de.danoeh.antennapod.model.feed.FeedItem;
|
||||||
@ -159,10 +159,10 @@ public class EpisodeAction {
|
|||||||
&& position == that.position
|
&& position == that.position
|
||||||
&& total == that.total
|
&& total == that.total
|
||||||
&& action != that.action
|
&& action != that.action
|
||||||
&& ObjectsCompat.equals(podcast, that.podcast)
|
&& Objects.equals(podcast, that.podcast)
|
||||||
&& ObjectsCompat.equals(episode, that.episode)
|
&& Objects.equals(episode, that.episode)
|
||||||
&& ObjectsCompat.equals(timestamp, that.timestamp)
|
&& Objects.equals(timestamp, that.timestamp)
|
||||||
&& ObjectsCompat.equals(guid, that.guid);
|
&& Objects.equals(guid, that.guid);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
Loading…
x
Reference in New Issue
Block a user