diff options
author | ByteHamster <ByteHamster@users.noreply.github.com> | 2021-02-13 13:33:26 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-02-13 13:33:26 +0100 |
commit | 1a803fcbf811489522d286a12e6b4d833f8eb7f3 (patch) | |
tree | 3c34bd6af92ba87a794e2f4eb1e6a5b15a8a8ee2 /app/src | |
parent | 87b149b7647d61f52a57f67a2519e248bf1e7880 (diff) | |
parent | 010ed376cd4b8935736dec6a3be052f93ed18b20 (diff) | |
download | AntennaPod-1a803fcbf811489522d286a12e6b4d833f8eb7f3.zip |
Merge pull request #4926 from ByteHamster/move-basic-views
Move basic views to new module
Diffstat (limited to 'app/src')
27 files changed, 34 insertions, 400 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. diff --git a/app/src/main/res/layout/audioplayer_fragment.xml b/app/src/main/res/layout/audioplayer_fragment.xml index c7eb624de..62e0a5e3a 100644 --- a/app/src/main/res/layout/audioplayer_fragment.xml +++ b/app/src/main/res/layout/audioplayer_fragment.xml @@ -156,7 +156,7 @@ android:scaleType="fitCenter" tools:srcCompat="@drawable/ic_av_play_white_24dp"/> - <de.danoeh.antennapod.view.CircularProgressBar + <de.danoeh.antennapod.ui.common.CircularProgressBar android:layout_width="@dimen/audioplayer_playercontrols_length_big" android:layout_height="@dimen/audioplayer_playercontrols_length_big" android:layout_marginLeft="16dp" @@ -164,7 +164,8 @@ android:layout_marginRight="16dp" android:layout_marginEnd="16dp" android:layout_centerHorizontal="true" - android:layout_centerVertical="true"/> + android:layout_centerVertical="true" + app:foregroundColor="?attr/action_icon_color"/> <ProgressBar style="?android:attr/progressBarStyle" @@ -205,7 +206,7 @@ android:textColor="?android:attr/textColorSecondary" android:clickable="false"/> - <de.danoeh.antennapod.view.PlaybackSpeedIndicatorView + <de.danoeh.antennapod.ui.common.PlaybackSpeedIndicatorView android:id="@+id/butPlaybackSpeed" android:layout_width="@dimen/audioplayer_playercontrols_length" android:layout_height="@dimen/audioplayer_playercontrols_length" @@ -214,7 +215,8 @@ android:layout_centerVertical="true" android:background="?attr/selectableItemBackgroundBorderless" android:contentDescription="@string/playback_speed" - tools:srcCompat="@drawable/ic_playback_speed_white"/> + tools:srcCompat="@drawable/ic_playback_speed_white" + app:foregroundColor="?attr/action_icon_color"/> <TextView android:id="@+id/txtvPlaybackSpeed" diff --git a/app/src/main/res/layout/cover_fragment.xml b/app/src/main/res/layout/cover_fragment.xml index 5460d0609..0ec46cbcd 100644 --- a/app/src/main/res/layout/cover_fragment.xml +++ b/app/src/main/res/layout/cover_fragment.xml @@ -10,7 +10,7 @@ android:padding="8dp" android:gravity="center"> - <de.danoeh.antennapod.view.SquareImageView + <de.danoeh.antennapod.ui.common.SquareImageView android:id="@+id/imgvCover" android:layout_width="0dp" android:layout_height="200dp" diff --git a/app/src/main/res/layout/filter_dialog_row.xml b/app/src/main/res/layout/filter_dialog_row.xml index 5011812d9..914525387 100644 --- a/app/src/main/res/layout/filter_dialog_row.xml +++ b/app/src/main/res/layout/filter_dialog_row.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<de.danoeh.antennapod.view.RecursiveRadioGroup +<de.danoeh.antennapod.ui.common.RecursiveRadioGroup xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" @@ -58,4 +58,4 @@ android:layout_gravity="center_vertical" android:checked="true" /> -</de.danoeh.antennapod.view.RecursiveRadioGroup> +</de.danoeh.antennapod.ui.common.RecursiveRadioGroup> diff --git a/app/src/main/res/layout/quick_feed_discovery.xml b/app/src/main/res/layout/quick_feed_discovery.xml index dd720afed..9ef3db180 100644 --- a/app/src/main/res/layout/quick_feed_discovery.xml +++ b/app/src/main/res/layout/quick_feed_discovery.xml @@ -34,7 +34,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content"> - <de.danoeh.antennapod.view.WrappingGridView + <de.danoeh.antennapod.ui.common.WrappingGridView android:id="@+id/discover_grid" android:layout_width="match_parent" android:layout_height="wrap_content" diff --git a/app/src/main/res/layout/quick_feed_discovery_item.xml b/app/src/main/res/layout/quick_feed_discovery_item.xml index e1c91f9d8..cb03b6677 100644 --- a/app/src/main/res/layout/quick_feed_discovery_item.xml +++ b/app/src/main/res/layout/quick_feed_discovery_item.xml @@ -7,7 +7,7 @@ android:padding="4dp" android:clipToPadding="false"> - <de.danoeh.antennapod.view.SquareImageView + <de.danoeh.antennapod.ui.common.SquareImageView android:id="@+id/discovery_cover" android:layout_width="match_parent" android:layout_height="match_parent" diff --git a/app/src/main/res/layout/searchlist_item_feed.xml b/app/src/main/res/layout/searchlist_item_feed.xml index 607a3197f..c16911f99 100644 --- a/app/src/main/res/layout/searchlist_item_feed.xml +++ b/app/src/main/res/layout/searchlist_item_feed.xml @@ -7,7 +7,7 @@ android:padding="4dp" android:clipToPadding="false"> - <de.danoeh.antennapod.view.SquareImageView + <de.danoeh.antennapod.ui.common.SquareImageView android:id="@+id/discovery_cover" android:layout_width="match_parent" android:layout_height="96dp" diff --git a/app/src/main/res/layout/secondary_action.xml b/app/src/main/res/layout/secondary_action.xml index 73ca174a6..e5bff480e 100644 --- a/app/src/main/res/layout/secondary_action.xml +++ b/app/src/main/res/layout/secondary_action.xml @@ -1,6 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" + xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="48dp" android:layout_height="48dp" android:layout_marginRight="12dp" @@ -19,9 +20,10 @@ tools:ignore="ContentDescription" tools:src="@sample/secondaryaction"/> - <de.danoeh.antennapod.view.CircularProgressBar + <de.danoeh.antennapod.ui.common.CircularProgressBar android:id="@+id/secondaryActionProgress" android:layout_width="40dp" android:layout_gravity="center" - android:layout_height="40dp"/> + android:layout_height="40dp" + app:foregroundColor="?attr/action_icon_color"/> </FrameLayout> diff --git a/app/src/main/res/layout/subscription_item.xml b/app/src/main/res/layout/subscription_item.xml index e0c821868..7fa738f12 100644 --- a/app/src/main/res/layout/subscription_item.xml +++ b/app/src/main/res/layout/subscription_item.xml @@ -8,7 +8,7 @@ android:layout_height="match_parent" android:foreground="?attr/selectableItemBackground"> - <de.danoeh.antennapod.view.SquareImageView + <de.danoeh.antennapod.ui.common.SquareImageView android:id="@+id/imgvCover" android:layout_width="fill_parent" android:layout_height="fill_parent" |