summaryrefslogtreecommitdiff
path: root/app/src/main/java/de/danoeh
diff options
context:
space:
mode:
authorByteHamster <info@bytehamster.com>2021-02-12 21:00:39 +0100
committerByteHamster <info@bytehamster.com>2021-02-12 21:00:39 +0100
commit010ed376cd4b8935736dec6a3be052f93ed18b20 (patch)
tree3c34bd6af92ba87a794e2f4eb1e6a5b15a8a8ee2 /app/src/main/java/de/danoeh
parent87b149b7647d61f52a57f67a2519e248bf1e7880 (diff)
downloadAntennaPod-010ed376cd4b8935736dec6a3be052f93ed18b20.zip
Move basic views to new module
Diffstat (limited to 'app/src/main/java/de/danoeh')
-rw-r--r--app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java2
-rw-r--r--app/src/main/java/de/danoeh/antennapod/adapter/ChaptersListAdapter.java4
-rw-r--r--app/src/main/java/de/danoeh/antennapod/adapter/DownloadLogAdapter.java2
-rw-r--r--app/src/main/java/de/danoeh/antennapod/adapter/DownloadlistAdapter.java4
-rw-r--r--app/src/main/java/de/danoeh/antennapod/adapter/FeedSearchResultAdapter.java2
-rw-r--r--app/src/main/java/de/danoeh/antennapod/dialog/EpisodesApplyActionFragment.java2
-rw-r--r--app/src/main/java/de/danoeh/antennapod/dialog/FilterDialog.java2
-rw-r--r--app/src/main/java/de/danoeh/antennapod/dialog/SubscriptionsFilterDialog.java2
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/AudioPlayerFragment.java2
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/FeedInfoFragment.java2
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/FeedItemlistFragment.java2
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/ItemFragment.java2
-rw-r--r--app/src/main/java/de/danoeh/antennapod/menuhandler/MenuItemUtils.java2
-rw-r--r--app/src/main/java/de/danoeh/antennapod/view/CircularProgressBar.java93
-rw-r--r--app/src/main/java/de/danoeh/antennapod/view/PlaybackSpeedIndicatorView.java113
-rw-r--r--app/src/main/java/de/danoeh/antennapod/view/RecursiveRadioGroup.java67
-rw-r--r--app/src/main/java/de/danoeh/antennapod/view/SquareImageView.java62
-rw-r--r--app/src/main/java/de/danoeh/antennapod/view/WrappingGridView.java35
-rw-r--r--app/src/main/java/de/danoeh/antennapod/view/viewholder/EpisodeItemViewHolder.java4
19 files changed, 17 insertions, 387 deletions
diff --git a/app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java b/app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java
index 147700e77..69f5fb264 100644
--- a/app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java
+++ b/app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java
@@ -41,7 +41,7 @@ import de.danoeh.antennapod.core.preferences.UserPreferences;
import de.danoeh.antennapod.core.receiver.MediaButtonReceiver;
import de.danoeh.antennapod.core.service.playback.PlaybackService;
import de.danoeh.antennapod.core.util.StorageUtils;
-import de.danoeh.antennapod.core.util.ThemeUtils;
+import de.danoeh.antennapod.ui.common.ThemeUtils;
import de.danoeh.antennapod.core.util.download.AutoUpdateManager;
import de.danoeh.antennapod.dialog.RatingDialog;
import de.danoeh.antennapod.fragment.AddFeedFragment;
diff --git a/app/src/main/java/de/danoeh/antennapod/adapter/ChaptersListAdapter.java b/app/src/main/java/de/danoeh/antennapod/adapter/ChaptersListAdapter.java
index 4fa8acc43..a267938d3 100644
--- a/app/src/main/java/de/danoeh/antennapod/adapter/ChaptersListAdapter.java
+++ b/app/src/main/java/de/danoeh/antennapod/adapter/ChaptersListAdapter.java
@@ -20,9 +20,9 @@ import de.danoeh.antennapod.core.glide.ApGlideSettings;
import de.danoeh.antennapod.core.util.Converter;
import de.danoeh.antennapod.core.util.EmbeddedChapterImage;
import de.danoeh.antennapod.core.util.IntentUtils;
-import de.danoeh.antennapod.core.util.ThemeUtils;
+import de.danoeh.antennapod.ui.common.ThemeUtils;
import de.danoeh.antennapod.core.util.playback.Playable;
-import de.danoeh.antennapod.view.CircularProgressBar;
+import de.danoeh.antennapod.ui.common.CircularProgressBar;
public class ChaptersListAdapter extends RecyclerView.Adapter<ChaptersListAdapter.ChapterHolder> {
private Playable media;
diff --git a/app/src/main/java/de/danoeh/antennapod/adapter/DownloadLogAdapter.java b/app/src/main/java/de/danoeh/antennapod/adapter/DownloadLogAdapter.java
index 0c4aaf6ed..d6801e1b5 100644
--- a/app/src/main/java/de/danoeh/antennapod/adapter/DownloadLogAdapter.java
+++ b/app/src/main/java/de/danoeh/antennapod/adapter/DownloadLogAdapter.java
@@ -20,7 +20,7 @@ import de.danoeh.antennapod.core.storage.DBReader;
import de.danoeh.antennapod.core.storage.DBTasks;
import de.danoeh.antennapod.core.storage.DownloadRequestException;
import de.danoeh.antennapod.core.storage.DownloadRequester;
-import de.danoeh.antennapod.core.util.ThemeUtils;
+import de.danoeh.antennapod.ui.common.ThemeUtils;
import de.danoeh.antennapod.view.viewholder.DownloadItemViewHolder;
/**
diff --git a/app/src/main/java/de/danoeh/antennapod/adapter/DownloadlistAdapter.java b/app/src/main/java/de/danoeh/antennapod/adapter/DownloadlistAdapter.java
index 268a21409..9d63d8ad7 100644
--- a/app/src/main/java/de/danoeh/antennapod/adapter/DownloadlistAdapter.java
+++ b/app/src/main/java/de/danoeh/antennapod/adapter/DownloadlistAdapter.java
@@ -15,8 +15,8 @@ import de.danoeh.antennapod.core.feed.FeedMedia;
import de.danoeh.antennapod.core.service.download.DownloadRequest;
import de.danoeh.antennapod.core.service.download.DownloadStatus;
import de.danoeh.antennapod.core.service.download.Downloader;
-import de.danoeh.antennapod.core.util.ThemeUtils;
-import de.danoeh.antennapod.view.CircularProgressBar;
+import de.danoeh.antennapod.ui.common.ThemeUtils;
+import de.danoeh.antennapod.ui.common.CircularProgressBar;
public class DownloadlistAdapter extends BaseAdapter {
diff --git a/app/src/main/java/de/danoeh/antennapod/adapter/FeedSearchResultAdapter.java b/app/src/main/java/de/danoeh/antennapod/adapter/FeedSearchResultAdapter.java
index 2e5ba31c9..dbb9ce0d0 100644
--- a/app/src/main/java/de/danoeh/antennapod/adapter/FeedSearchResultAdapter.java
+++ b/app/src/main/java/de/danoeh/antennapod/adapter/FeedSearchResultAdapter.java
@@ -10,7 +10,7 @@ import de.danoeh.antennapod.R;
import de.danoeh.antennapod.activity.MainActivity;
import de.danoeh.antennapod.core.feed.Feed;
import de.danoeh.antennapod.fragment.FeedItemlistFragment;
-import de.danoeh.antennapod.view.SquareImageView;
+import de.danoeh.antennapod.ui.common.SquareImageView;
import java.lang.ref.WeakReference;
import java.util.ArrayList;
diff --git a/app/src/main/java/de/danoeh/antennapod/dialog/EpisodesApplyActionFragment.java b/app/src/main/java/de/danoeh/antennapod/dialog/EpisodesApplyActionFragment.java
index efaff1da3..e1e8f1c2e 100644
--- a/app/src/main/java/de/danoeh/antennapod/dialog/EpisodesApplyActionFragment.java
+++ b/app/src/main/java/de/danoeh/antennapod/dialog/EpisodesApplyActionFragment.java
@@ -28,7 +28,7 @@ import de.danoeh.antennapod.core.storage.DownloadRequester;
import de.danoeh.antennapod.core.util.FeedItemPermutors;
import de.danoeh.antennapod.core.util.LongList;
import de.danoeh.antennapod.core.util.SortOrder;
-import de.danoeh.antennapod.core.util.ThemeUtils;
+import de.danoeh.antennapod.ui.common.ThemeUtils;
import java.util.ArrayList;
import java.util.Arrays;
diff --git a/app/src/main/java/de/danoeh/antennapod/dialog/FilterDialog.java b/app/src/main/java/de/danoeh/antennapod/dialog/FilterDialog.java
index 80df87891..779248e2f 100644
--- a/app/src/main/java/de/danoeh/antennapod/dialog/FilterDialog.java
+++ b/app/src/main/java/de/danoeh/antennapod/dialog/FilterDialog.java
@@ -16,7 +16,7 @@ import java.util.Set;
import de.danoeh.antennapod.R;
import de.danoeh.antennapod.core.feed.FeedItemFilter;
import de.danoeh.antennapod.core.feed.FeedItemFilterGroup;
-import de.danoeh.antennapod.view.RecursiveRadioGroup;
+import de.danoeh.antennapod.ui.common.RecursiveRadioGroup;
public abstract class FilterDialog {
diff --git a/app/src/main/java/de/danoeh/antennapod/dialog/SubscriptionsFilterDialog.java b/app/src/main/java/de/danoeh/antennapod/dialog/SubscriptionsFilterDialog.java
index 8a87fef25..29172bb5e 100644
--- a/app/src/main/java/de/danoeh/antennapod/dialog/SubscriptionsFilterDialog.java
+++ b/app/src/main/java/de/danoeh/antennapod/dialog/SubscriptionsFilterDialog.java
@@ -20,7 +20,7 @@ import de.danoeh.antennapod.core.event.UnreadItemsUpdateEvent;
import de.danoeh.antennapod.core.feed.SubscriptionsFilter;
import de.danoeh.antennapod.core.feed.SubscriptionsFilterGroup;
import de.danoeh.antennapod.core.preferences.UserPreferences;
-import de.danoeh.antennapod.view.RecursiveRadioGroup;
+import de.danoeh.antennapod.ui.common.RecursiveRadioGroup;
public class SubscriptionsFilterDialog {
public static void showDialog(Context context) {
diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/AudioPlayerFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/AudioPlayerFragment.java
index d70f3756e..671184625 100644
--- a/app/src/main/java/de/danoeh/antennapod/fragment/AudioPlayerFragment.java
+++ b/app/src/main/java/de/danoeh/antennapod/fragment/AudioPlayerFragment.java
@@ -47,7 +47,7 @@ import de.danoeh.antennapod.dialog.SkipPreferenceDialog;
import de.danoeh.antennapod.dialog.SleepTimerDialog;
import de.danoeh.antennapod.dialog.VariableSpeedDialog;
import de.danoeh.antennapod.menuhandler.FeedItemMenuHandler;
-import de.danoeh.antennapod.view.PlaybackSpeedIndicatorView;
+import de.danoeh.antennapod.ui.common.PlaybackSpeedIndicatorView;
import io.reactivex.Maybe;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable;
diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/FeedInfoFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/FeedInfoFragment.java
index ddfcd06ad..dd8a02893 100644
--- a/app/src/main/java/de/danoeh/antennapod/fragment/FeedInfoFragment.java
+++ b/app/src/main/java/de/danoeh/antennapod/fragment/FeedInfoFragment.java
@@ -45,7 +45,7 @@ import de.danoeh.antennapod.core.storage.DownloadRequestException;
import de.danoeh.antennapod.core.storage.StatisticsItem;
import de.danoeh.antennapod.core.util.Converter;
import de.danoeh.antennapod.core.util.IntentUtils;
-import de.danoeh.antennapod.core.util.ThemeUtils;
+import de.danoeh.antennapod.ui.common.ThemeUtils;
import de.danoeh.antennapod.core.util.syndication.HtmlToPlainText;
import de.danoeh.antennapod.fragment.preferences.StatisticsFragment;
import de.danoeh.antennapod.menuhandler.FeedMenuHandler;
diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/FeedItemlistFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/FeedItemlistFragment.java
index 8e14214d2..5293f7ddd 100644
--- a/app/src/main/java/de/danoeh/antennapod/fragment/FeedItemlistFragment.java
+++ b/app/src/main/java/de/danoeh/antennapod/fragment/FeedItemlistFragment.java
@@ -58,7 +58,7 @@ import de.danoeh.antennapod.core.storage.DownloadRequester;
import de.danoeh.antennapod.core.util.FeedItemPermutors;
import de.danoeh.antennapod.core.util.FeedItemUtil;
import de.danoeh.antennapod.core.util.Optional;
-import de.danoeh.antennapod.core.util.ThemeUtils;
+import de.danoeh.antennapod.ui.common.ThemeUtils;
import de.danoeh.antennapod.core.util.gui.MoreContentListFooterUtil;
import de.danoeh.antennapod.dialog.EpisodesApplyActionFragment;
import de.danoeh.antennapod.dialog.FilterDialog;
diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/ItemFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/ItemFragment.java
index e50425566..2fc3d4f0e 100644
--- a/app/src/main/java/de/danoeh/antennapod/fragment/ItemFragment.java
+++ b/app/src/main/java/de/danoeh/antennapod/fragment/ItemFragment.java
@@ -57,7 +57,7 @@ import de.danoeh.antennapod.core.storage.DBReader;
import de.danoeh.antennapod.core.storage.DownloadRequester;
import de.danoeh.antennapod.core.util.Converter;
import de.danoeh.antennapod.core.util.DateUtils;
-import de.danoeh.antennapod.core.util.ThemeUtils;
+import de.danoeh.antennapod.ui.common.ThemeUtils;
import de.danoeh.antennapod.core.util.playback.PlaybackController;
import de.danoeh.antennapod.core.util.playback.Timeline;
import de.danoeh.antennapod.view.ShownotesWebView;
diff --git a/app/src/main/java/de/danoeh/antennapod/menuhandler/MenuItemUtils.java b/app/src/main/java/de/danoeh/antennapod/menuhandler/MenuItemUtils.java
index 9c54a529b..fbfdf537f 100644
--- a/app/src/main/java/de/danoeh/antennapod/menuhandler/MenuItemUtils.java
+++ b/app/src/main/java/de/danoeh/antennapod/menuhandler/MenuItemUtils.java
@@ -9,7 +9,7 @@ import androidx.appcompat.widget.SearchView;
import de.danoeh.antennapod.R;
import de.danoeh.antennapod.activity.MainActivity;
import de.danoeh.antennapod.core.preferences.UserPreferences;
-import de.danoeh.antennapod.core.util.ThemeUtils;
+import de.danoeh.antennapod.ui.common.ThemeUtils;
import de.danoeh.antennapod.fragment.SearchFragment;
import java.util.HashMap;
diff --git a/app/src/main/java/de/danoeh/antennapod/view/CircularProgressBar.java b/app/src/main/java/de/danoeh/antennapod/view/CircularProgressBar.java
deleted file mode 100644
index 2fd570ece..000000000
--- a/app/src/main/java/de/danoeh/antennapod/view/CircularProgressBar.java
+++ /dev/null
@@ -1,93 +0,0 @@
-package de.danoeh.antennapod.view;
-
-import android.content.Context;
-import android.graphics.Canvas;
-import android.graphics.Paint;
-import android.graphics.RectF;
-import android.util.AttributeSet;
-import android.view.View;
-import androidx.annotation.Nullable;
-import de.danoeh.antennapod.R;
-import de.danoeh.antennapod.core.util.ThemeUtils;
-
-public class CircularProgressBar extends View {
- public static final float MINIMUM_PERCENTAGE = 0.005f;
- public static final float MAXIMUM_PERCENTAGE = 1 - MINIMUM_PERCENTAGE;
-
- private final Paint paintBackground = new Paint();
- private final Paint paintProgress = new Paint();
- private float percentage = 0;
- private float targetPercentage = 0;
- private Object tag = null;
- private final RectF bounds = new RectF();
-
- public CircularProgressBar(Context context) {
- super(context);
- setup();
- }
-
- public CircularProgressBar(Context context, @Nullable AttributeSet attrs) {
- super(context, attrs);
- setup();
- }
-
- public CircularProgressBar(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
- super(context, attrs, defStyleAttr);
- setup();
- }
-
- private void setup() {
- paintBackground.setAntiAlias(true);
- paintBackground.setStyle(Paint.Style.STROKE);
-
- paintProgress.setAntiAlias(true);
- paintProgress.setStyle(Paint.Style.STROKE);
- paintProgress.setStrokeCap(Paint.Cap.ROUND);
-
- int color = ThemeUtils.getColorFromAttr(getContext(), R.attr.action_icon_color);
- paintProgress.setColor(color);
- paintBackground.setColor(color);
- }
-
- /**
- * Sets the percentage to be displayed.
- * @param percentage Number from 0 to 1
- * @param tag When the tag is the same as last time calling setPercentage, the update is animated
- */
- public void setPercentage(float percentage, Object tag) {
- targetPercentage = percentage;
-
- if (tag == null || !tag.equals(this.tag)) {
- // Do not animate
- this.percentage = percentage;
- this.tag = tag;
- }
- invalidate();
- }
-
- @Override
- protected void onDraw(Canvas canvas) {
- super.onDraw(canvas);
-
- float padding = getHeight() * 0.07f;
- paintBackground.setStrokeWidth(getHeight() * 0.02f);
- paintProgress.setStrokeWidth(padding);
- bounds.set(padding, padding, getWidth() - padding, getHeight() - padding);
- canvas.drawArc(bounds, 0, 360, false, paintBackground);
-
- if (MINIMUM_PERCENTAGE <= percentage && percentage <= MAXIMUM_PERCENTAGE) {
- canvas.drawArc(bounds, -90, percentage * 360, false, paintProgress);
- }
-
- if (Math.abs(percentage - targetPercentage) > MINIMUM_PERCENTAGE) {
- float speed = 0.02f;
- if (Math.abs(targetPercentage - percentage) < 0.1 && targetPercentage > percentage) {
- speed = 0.006f;
- }
- float delta = Math.min(speed, Math.abs(targetPercentage - percentage));
- float direction = ((targetPercentage - percentage) > 0 ? 1f : -1f);
- percentage += delta * direction;
- invalidate();
- }
- }
-}
diff --git a/app/src/main/java/de/danoeh/antennapod/view/PlaybackSpeedIndicatorView.java b/app/src/main/java/de/danoeh/antennapod/view/PlaybackSpeedIndicatorView.java
deleted file mode 100644
index d7f1eac1d..000000000
--- a/app/src/main/java/de/danoeh/antennapod/view/PlaybackSpeedIndicatorView.java
+++ /dev/null
@@ -1,113 +0,0 @@
-package de.danoeh.antennapod.view;
-
-import android.content.Context;
-import android.content.res.TypedArray;
-import android.graphics.Canvas;
-import android.graphics.Paint;
-import android.graphics.Path;
-import android.graphics.RectF;
-import android.util.AttributeSet;
-import android.view.View;
-import androidx.annotation.Nullable;
-import de.danoeh.antennapod.R;
-
-public class PlaybackSpeedIndicatorView extends View {
- private static final float DEG_2_RAD = (float) (Math.PI / 180);
- private static final float PADDING_ANGLE = 30;
- private static final float VALUE_UNSET = -4242;
-
- private final Paint arcPaint = new Paint();
- private final Paint indicatorPaint = new Paint();
- private final Path trianglePath = new Path();
- private float angle = VALUE_UNSET;
- private float targetAngle = VALUE_UNSET;
- private float degreePerFrame = 2;
- private float paddingArc = 20;
- private float paddingIndicator = 10;
- private RectF arcBounds = new RectF();
-
- public PlaybackSpeedIndicatorView(Context context) {
- super(context);
- setup();
- }
-
- public PlaybackSpeedIndicatorView(Context context, @Nullable AttributeSet attrs) {
- super(context, attrs);
- setup();
- }
-
- public PlaybackSpeedIndicatorView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
- super(context, attrs, defStyleAttr);
- setup();
- }
-
- private void setup() {
- setSpeed(1.0f); // Set default angle to 1.0
- targetAngle = VALUE_UNSET; // Do not move to first value that is set externally
-
- int[] colorAttrs = new int[] {R.attr.action_icon_color };
- TypedArray a = getContext().obtainStyledAttributes(colorAttrs);
- arcPaint.setColor(a.getColor(0, 0xffffffff));
- indicatorPaint.setColor(a.getColor(0, 0xffffffff));
- a.recycle();
-
- arcPaint.setAntiAlias(true);
- arcPaint.setStyle(Paint.Style.STROKE);
- arcPaint.setStrokeCap(Paint.Cap.ROUND);
-
- indicatorPaint.setAntiAlias(true);
- indicatorPaint.setStyle(Paint.Style.FILL);
-
- trianglePath.setFillType(Path.FillType.EVEN_ODD);
- }
-
- public void setSpeed(float value) {
- float maxAnglePerDirection = 90 + 45 - 2 * paddingArc;
- // Speed values above 3 are probably not too common. Cap at 3 for better differentiation
- float normalizedValue = Math.min(2.5f, value - 0.5f) / 2.5f; // Linear between 0 and 1
- float target = -maxAnglePerDirection + 2 * maxAnglePerDirection * normalizedValue;
- if (targetAngle == VALUE_UNSET) {
- angle = target;
- }
- targetAngle = target;
- degreePerFrame = Math.abs(targetAngle - angle) / 20;
- invalidate();
- }
-
- @Override
- protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
- super.onMeasure(widthMeasureSpec, heightMeasureSpec);
-
- paddingArc = getMeasuredHeight() / 4.5f;
- paddingIndicator = getMeasuredHeight() / 6f;
- }
-
- @Override
- protected void onDraw(Canvas canvas) {
- super.onDraw(canvas);
-
- float radiusInnerCircle = getWidth() / 10f;
- canvas.drawCircle(getWidth() / 2f, getHeight() / 2f, radiusInnerCircle, indicatorPaint);
-
- trianglePath.rewind();
- float bigRadius = getHeight() / 2f - paddingIndicator;
- trianglePath.moveTo(getWidth() / 2f + (float) (bigRadius * Math.sin((-angle + 180) * DEG_2_RAD)),
- getHeight() / 2f + (float) (bigRadius * Math.cos((-angle + 180) * DEG_2_RAD)));
- trianglePath.lineTo(getWidth() / 2f + (float) (radiusInnerCircle * Math.sin((-angle + 180 - 90) * DEG_2_RAD)),
- getHeight() / 2f + (float) (radiusInnerCircle * Math.cos((-angle + 180 - 90) * DEG_2_RAD)));
- trianglePath.lineTo(getWidth() / 2f + (float) (radiusInnerCircle * Math.sin((-angle + 180 + 90) * DEG_2_RAD)),
- getHeight() / 2f + (float) (radiusInnerCircle * Math.cos((-angle + 180 + 90) * DEG_2_RAD)));
- trianglePath.close();
- canvas.drawPath(trianglePath, indicatorPaint);
-
- arcPaint.setStrokeWidth(getHeight() / 15f);
- arcBounds.set(paddingArc, paddingArc, getWidth() - paddingArc, getHeight() - paddingArc);
- canvas.drawArc(arcBounds, -180 - 45, 90 + 45 + angle - PADDING_ANGLE, false, arcPaint);
- canvas.drawArc(arcBounds, -90 + PADDING_ANGLE + angle, 90 + 45 - PADDING_ANGLE - angle, false, arcPaint);
-
- if (Math.abs(angle - targetAngle) > 0.5 && targetAngle != VALUE_UNSET) {
- angle += Math.signum(targetAngle - angle) * Math.min(degreePerFrame, Math.abs(targetAngle - angle));
- invalidate();
- }
- }
-}
diff --git a/app/src/main/java/de/danoeh/antennapod/view/RecursiveRadioGroup.java b/app/src/main/java/de/danoeh/antennapod/view/RecursiveRadioGroup.java
deleted file mode 100644
index ee5e7c51d..000000000
--- a/app/src/main/java/de/danoeh/antennapod/view/RecursiveRadioGroup.java
+++ /dev/null
@@ -1,67 +0,0 @@
-package de.danoeh.antennapod.view;
-
-import android.content.Context;
-import android.util.AttributeSet;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.LinearLayout;
-import android.widget.RadioButton;
-import java.util.ArrayList;
-
-/**
- * An alternative to {@link android.widget.RadioGroup} that allows to nest children.
- * Basend on https://stackoverflow.com/a/14309274.
- */
-public class RecursiveRadioGroup extends LinearLayout {
- private final ArrayList<RadioButton> radioButtons = new ArrayList<>();
- private RadioButton checkedButton = null;
-
- public RecursiveRadioGroup(Context context) {
- super(context);
- }
-
- public RecursiveRadioGroup(Context context, AttributeSet attrs) {
- this(context, attrs, 0);
- }
-
- public RecursiveRadioGroup(Context context, AttributeSet attrs, int defStyle) {
- super(context, attrs, defStyle);
- }
-
- @Override
- public void addView(View child, int index, ViewGroup.LayoutParams params) {
- super.addView(child, index, params);
- parseChild(child);
- }
-
- public void parseChild(final View child) {
- if (child instanceof RadioButton) {
- RadioButton button = (RadioButton) child;
- radioButtons.add(button);
- button.setOnCheckedChangeListener((buttonView, isChecked) -> {
- if (!isChecked) {
- return;
- }
- checkedButton = (RadioButton) buttonView;
-
- for (RadioButton view : radioButtons) {
- if (view != buttonView) {
- view.setChecked(false);
- }
- }
- });
- } else if (child instanceof ViewGroup) {
- parseChildren((ViewGroup) child);
- }
- }
-
- public void parseChildren(final ViewGroup child) {
- for (int i = 0; i < child.getChildCount(); i++) {
- parseChild(child.getChildAt(i));
- }
- }
-
- public RadioButton getCheckedButton() {
- return checkedButton;
- }
-}
diff --git a/app/src/main/java/de/danoeh/antennapod/view/SquareImageView.java b/app/src/main/java/de/danoeh/antennapod/view/SquareImageView.java
deleted file mode 100644
index c256ede9e..000000000
--- a/app/src/main/java/de/danoeh/antennapod/view/SquareImageView.java
+++ /dev/null
@@ -1,62 +0,0 @@
-package de.danoeh.antennapod.view;
-
-import android.content.Context;
-import android.content.res.TypedArray;
-import androidx.appcompat.widget.AppCompatImageView;
-import android.util.AttributeSet;
-import de.danoeh.antennapod.core.R;
-
-/**
- * From http://stackoverflow.com/a/19449488/6839
- */
-public class SquareImageView extends AppCompatImageView {
- public static final int DIRECTION_WIDTH = 0;
- public static final int DIRECTION_HEIGHT = 1;
- public static final int DIRECTION_MINIMUM = 2;
-
- private int direction = DIRECTION_WIDTH;
-
- public SquareImageView(Context context) {
- super(context);
- }
-
- public SquareImageView(Context context, AttributeSet attrs) {
- super(context, attrs);
- loadAttrs(context, attrs);
- }
-
- public SquareImageView(Context context, AttributeSet attrs, int defStyle) {
- super(context, attrs, defStyle);
- loadAttrs(context, attrs);
- }
-
- private void loadAttrs(Context context, AttributeSet attrs) {
- TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.SquareImageView);
- direction = a.getInt(R.styleable.SquareImageView_direction, DIRECTION_WIDTH);
- a.recycle();
- }
-
- public void setDirection(int direction) {
- this.direction = direction;
- requestLayout();
- }
-
- @Override
- protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
- super.onMeasure(widthMeasureSpec, heightMeasureSpec);
-
- switch (direction) {
- case DIRECTION_MINIMUM:
- int size = Math.min(getMeasuredWidth(), getMeasuredHeight());
- setMeasuredDimension(size, size);
- break;
- case DIRECTION_HEIGHT:
- setMeasuredDimension(getMeasuredHeight(), getMeasuredHeight());
- break;
- default:
- setMeasuredDimension(getMeasuredWidth(), getMeasuredWidth());
- break;
- }
- }
-
-} \ No newline at end of file
diff --git a/app/src/main/java/de/danoeh/antennapod/view/WrappingGridView.java b/app/src/main/java/de/danoeh/antennapod/view/WrappingGridView.java
deleted file mode 100644
index 37792b4d1..000000000
--- a/app/src/main/java/de/danoeh/antennapod/view/WrappingGridView.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package de.danoeh.antennapod.view;
-
-import android.content.Context;
-import android.util.AttributeSet;
-import android.widget.GridView;
-
-/**
- * Source: https://stackoverflow.com/a/46350213/
- */
-public class WrappingGridView extends GridView {
-
- public WrappingGridView(Context context) {
- super(context);
- }
-
- public WrappingGridView(Context context, AttributeSet attrs) {
- super(context, attrs);
- }
-
- public WrappingGridView(Context context, AttributeSet attrs, int defStyle) {
- super(context, attrs, defStyle);
- }
-
- @Override
- protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
- int heightSpec = heightMeasureSpec;
- if (getLayoutParams().height == LayoutParams.WRAP_CONTENT) {
- // The great Android "hackatlon", the love, the magic.
- // The two leftmost bits in the height measure spec have
- // a special meaning, hence we can't use them to describe height.
- heightSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST);
- }
- super.onMeasure(widthMeasureSpec, heightSpec);
- }
-}
diff --git a/app/src/main/java/de/danoeh/antennapod/view/viewholder/EpisodeItemViewHolder.java b/app/src/main/java/de/danoeh/antennapod/view/viewholder/EpisodeItemViewHolder.java
index 35744227f..5e49783d9 100644
--- a/app/src/main/java/de/danoeh/antennapod/view/viewholder/EpisodeItemViewHolder.java
+++ b/app/src/main/java/de/danoeh/antennapod/view/viewholder/EpisodeItemViewHolder.java
@@ -30,8 +30,8 @@ import de.danoeh.antennapod.core.storage.DownloadRequester;
import de.danoeh.antennapod.core.util.Converter;
import de.danoeh.antennapod.core.util.DateUtils;
import de.danoeh.antennapod.core.util.NetworkUtils;
-import de.danoeh.antennapod.core.util.ThemeUtils;
-import de.danoeh.antennapod.view.CircularProgressBar;
+import de.danoeh.antennapod.ui.common.ThemeUtils;
+import de.danoeh.antennapod.ui.common.CircularProgressBar;
/**
* Holds the view which shows FeedItems.