diff options
Diffstat (limited to 'app')
37 files changed, 377 insertions, 415 deletions
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index d888d8d99..9cce60469 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -131,10 +131,14 @@ <activity android:name=".activity.PreferenceActivity" android:configChanges="keyboardHidden|orientation|screenSize" + android:exported="false" android:label="@string/settings_label"> <meta-data android:name="android.support.PARENT_ACTIVITY" android:value="de.danoeh.antennapod.activity.MainActivity"/> + <intent-filter> + <action android:name="android.intent.action.APPLICATION_PREFERENCES" /> + </intent-filter> </activity> <activity diff --git a/app/src/main/java/de/danoeh/antennapod/PodcastApp.java b/app/src/main/java/de/danoeh/antennapod/PodcastApp.java index 66ce4adc6..7cbe32e11 100644 --- a/app/src/main/java/de/danoeh/antennapod/PodcastApp.java +++ b/app/src/main/java/de/danoeh/antennapod/PodcastApp.java @@ -5,6 +5,7 @@ import android.content.Intent; import android.os.StrictMode; import androidx.multidex.MultiDexApplication; +import com.google.android.material.color.DynamicColors; import com.joanzapata.iconify.Iconify; import com.joanzapata.iconify.fonts.FontAwesomeModule; import com.joanzapata.iconify.fonts.MaterialModule; @@ -64,6 +65,8 @@ public class PodcastApp extends MultiDexApplication { .logNoSubscriberMessages(false) .sendNoSubscriberEvent(false) .installDefaultEventBus(); + + DynamicColors.applyToActivitiesIfAvailable(this); } public static void forceRestart() { diff --git a/app/src/main/java/de/danoeh/antennapod/activity/SplashActivity.java b/app/src/main/java/de/danoeh/antennapod/activity/SplashActivity.java index 271bdd7f6..4e300ef25 100644 --- a/app/src/main/java/de/danoeh/antennapod/activity/SplashActivity.java +++ b/app/src/main/java/de/danoeh/antennapod/activity/SplashActivity.java @@ -3,12 +3,9 @@ package de.danoeh.antennapod.activity; import android.content.Intent; import android.graphics.PorterDuff; import android.graphics.PorterDuffColorFilter; -import android.graphics.drawable.Drawable; -import android.os.Build; import android.os.Bundle; import android.widget.Toast; import androidx.annotation.Nullable; -import androidx.core.graphics.drawable.DrawableCompat; import androidx.appcompat.app.AppCompatActivity; import android.widget.ProgressBar; @@ -29,14 +26,8 @@ public class SplashActivity extends AppCompatActivity { setContentView(R.layout.splash); ProgressBar progressBar = findViewById(R.id.progressBar); - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) { - Drawable wrapDrawable = DrawableCompat.wrap(progressBar.getIndeterminateDrawable()); - DrawableCompat.setTint(wrapDrawable, 0xffffffff); - progressBar.setIndeterminateDrawable(DrawableCompat.unwrap(wrapDrawable)); - } else { - progressBar.getIndeterminateDrawable().setColorFilter( - new PorterDuffColorFilter(0xffffffff, PorterDuff.Mode.SRC_IN)); - } + progressBar.getIndeterminateDrawable().setColorFilter( + new PorterDuffColorFilter(0xffffffff, PorterDuff.Mode.SRC_IN)); Completable.create(subscriber -> { // Trigger schema updates 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 2b11c5ff9..31e6efc5a 100644 --- a/app/src/main/java/de/danoeh/antennapod/adapter/ChaptersListAdapter.java +++ b/app/src/main/java/de/danoeh/antennapod/adapter/ChaptersListAdapter.java @@ -14,12 +14,12 @@ import com.bumptech.glide.Glide; import com.bumptech.glide.load.resource.bitmap.FitCenter; import com.bumptech.glide.load.resource.bitmap.RoundedCorners; import com.bumptech.glide.request.RequestOptions; +import com.google.android.material.elevation.SurfaceColors; import de.danoeh.antennapod.R; import de.danoeh.antennapod.model.feed.Chapter; import de.danoeh.antennapod.core.util.Converter; import de.danoeh.antennapod.model.feed.EmbeddedChapterImage; import de.danoeh.antennapod.core.util.IntentUtils; -import de.danoeh.antennapod.ui.common.ThemeUtils; import de.danoeh.antennapod.model.playback.Playable; import de.danoeh.antennapod.ui.common.CircularProgressBar; @@ -85,8 +85,8 @@ public class ChaptersListAdapter extends RecyclerView.Adapter<ChaptersListAdapte }); if (position == currentChapterIndex) { - int playingBackGroundColor = ThemeUtils.getColorFromAttr(context, R.attr.currently_playing_background); - holder.itemView.setBackgroundColor(playingBackGroundColor); + float density = context.getResources().getDisplayMetrics().density; + holder.itemView.setBackgroundColor(SurfaceColors.getColorForElevation(context, 8 * density)); float progress = ((float) (currentChapterPosition - sc.getStart())) / duration; progress = Math.max(progress, CircularProgressBar.MINIMUM_PERCENTAGE); progress = Math.min(progress, CircularProgressBar.MAXIMUM_PERCENTAGE); 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 a0d86d5c0..8df3e3968 100644 --- a/app/src/main/java/de/danoeh/antennapod/adapter/DownloadLogAdapter.java +++ b/app/src/main/java/de/danoeh/antennapod/adapter/DownloadLogAdapter.java @@ -8,7 +8,6 @@ import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.Toast; -import androidx.core.content.ContextCompat; import de.danoeh.antennapod.R; import de.danoeh.antennapod.activity.MainActivity; import de.danoeh.antennapod.net.download.serviceinterface.DownloadRequest; @@ -93,7 +92,7 @@ public class DownloadLogAdapter extends BaseAdapter { } if (status.isSuccessful()) { - holder.icon.setTextColor(ContextCompat.getColor(context, R.color.download_success_green)); + holder.icon.setTextColor(ThemeUtils.getColorFromAttr(context, R.attr.icon_green)); holder.icon.setText("{fa-check-circle}"); holder.icon.setContentDescription(context.getString(R.string.download_successful)); holder.secondaryActionButton.setVisibility(View.INVISIBLE); @@ -101,10 +100,10 @@ public class DownloadLogAdapter extends BaseAdapter { holder.tapForDetails.setVisibility(View.GONE); } else { if (status.getReason() == DownloadError.ERROR_PARSER_EXCEPTION_DUPLICATE) { - holder.icon.setTextColor(ContextCompat.getColor(context, R.color.download_warning_yellow)); + holder.icon.setTextColor(ThemeUtils.getColorFromAttr(context, R.attr.icon_yellow)); holder.icon.setText("{fa-exclamation-circle}"); } else { - holder.icon.setTextColor(ContextCompat.getColor(context, R.color.download_failed_red)); + holder.icon.setTextColor(ThemeUtils.getColorFromAttr(context, R.attr.icon_red)); holder.icon.setText("{fa-times-circle}"); } holder.icon.setContentDescription(context.getString(R.string.error_label)); diff --git a/app/src/main/java/de/danoeh/antennapod/adapter/EpisodeItemListAdapter.java b/app/src/main/java/de/danoeh/antennapod/adapter/EpisodeItemListAdapter.java index 21aa1b3fa..cc32261da 100644 --- a/app/src/main/java/de/danoeh/antennapod/adapter/EpisodeItemListAdapter.java +++ b/app/src/main/java/de/danoeh/antennapod/adapter/EpisodeItemListAdapter.java @@ -1,6 +1,7 @@ package de.danoeh.antennapod.adapter; import android.app.Activity; +import android.content.Context; import android.os.Build; import android.view.ContextMenu; import android.view.InputDevice; @@ -14,6 +15,7 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.recyclerview.widget.RecyclerView; +import com.google.android.material.elevation.SurfaceColors; import org.apache.commons.lang3.ArrayUtils; import java.lang.ref.WeakReference; @@ -116,12 +118,14 @@ public class EpisodeItemListAdapter extends SelectableAdapter<EpisodeItemViewHol }); if (inActionMode()) { - holder.secondaryActionButton.setVisibility(View.GONE); - holder.selectCheckBox.setOnClickListener(v -> toggleSelection(holder.getBindingAdapterPosition())); - holder.selectCheckBox.setChecked(isSelected(pos)); - holder.selectCheckBox.setVisibility(View.VISIBLE); - } else { - holder.selectCheckBox.setVisibility(View.GONE); + holder.secondaryActionButton.setOnClickListener(null); + if (isSelected(pos)) { + Context context = mainActivityRef.get(); + float density = context.getResources().getDisplayMetrics().density; + holder.itemView.setBackgroundColor(SurfaceColors.getColorForElevation(context, 8 * density)); + } else { + holder.itemView.setBackgroundResource(android.R.color.transparent); + } } afterBindViewHolder(holder, pos); diff --git a/app/src/main/java/de/danoeh/antennapod/adapter/QueueRecyclerAdapter.java b/app/src/main/java/de/danoeh/antennapod/adapter/QueueRecyclerAdapter.java index 90b5be4fa..1f4cfd0cf 100644 --- a/app/src/main/java/de/danoeh/antennapod/adapter/QueueRecyclerAdapter.java +++ b/app/src/main/java/de/danoeh/antennapod/adapter/QueueRecyclerAdapter.java @@ -37,7 +37,7 @@ public class QueueRecyclerAdapter extends EpisodeItemListAdapter { @Override @SuppressLint("ClickableViewAccessibility") protected void afterBindViewHolder(EpisodeItemViewHolder holder, int pos) { - if (!dragDropEnabled || inActionMode()) { + if (!dragDropEnabled) { holder.dragHandle.setVisibility(View.GONE); holder.dragHandle.setOnTouchListener(null); holder.coverHolder.setOnTouchListener(null); @@ -64,6 +64,10 @@ public class QueueRecyclerAdapter extends EpisodeItemListAdapter { return false; }); } + if (inActionMode()) { + holder.dragHandle.setOnTouchListener(null); + holder.coverHolder.setOnTouchListener(null); + } holder.isInQueue.setVisibility(View.GONE); } diff --git a/app/src/main/java/de/danoeh/antennapod/dialog/ProxyDialog.java b/app/src/main/java/de/danoeh/antennapod/dialog/ProxyDialog.java index 68dd60372..4d9c526c0 100644 --- a/app/src/main/java/de/danoeh/antennapod/dialog/ProxyDialog.java +++ b/app/src/main/java/de/danoeh/antennapod/dialog/ProxyDialog.java @@ -6,7 +6,6 @@ import android.content.res.TypedArray; import android.os.Build; import androidx.appcompat.app.AlertDialog; import com.google.android.material.dialog.MaterialAlertDialogBuilder; -import androidx.core.content.ContextCompat; import android.text.Editable; import android.text.TextUtils; import android.text.TextWatcher; @@ -31,6 +30,7 @@ import de.danoeh.antennapod.R; import de.danoeh.antennapod.storage.preferences.UserPreferences; import de.danoeh.antennapod.core.service.download.AntennapodHttpClient; import de.danoeh.antennapod.model.download.ProxyConfig; +import de.danoeh.antennapod.ui.common.ThemeUtils; import io.reactivex.Completable; import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.disposables.Disposable; @@ -299,7 +299,7 @@ public class ProxyDialog { .observeOn(AndroidSchedulers.mainThread()) .subscribe( () -> { - txtvMessage.setTextColor(ContextCompat.getColor(context, R.color.download_success_green)); + txtvMessage.setTextColor(ThemeUtils.getColorFromAttr(context, R.attr.icon_green)); String message = String.format("%s %s", "{fa-check}", context.getString(R.string.proxy_test_successful)); txtvMessage.setText(message); @@ -307,7 +307,7 @@ public class ProxyDialog { }, error -> { error.printStackTrace(); - txtvMessage.setTextColor(ContextCompat.getColor(context, R.color.download_failed_red)); + txtvMessage.setTextColor(ThemeUtils.getColorFromAttr(context, R.attr.icon_red)); String message = String.format("%s %s: %s", "{fa-close}", context.getString(R.string.proxy_test_failed), error.getMessage()); txtvMessage.setText(message); diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/AddFeedFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/AddFeedFragment.java index 4b6beac13..864e23d7d 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/AddFeedFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/AddFeedFragment.java @@ -6,7 +6,6 @@ import android.content.ClipboardManager; import android.content.Context; import android.content.Intent; import android.net.Uri; -import android.os.Build; import android.os.Bundle; import android.util.Log; import android.view.LayoutInflater; @@ -19,7 +18,6 @@ import androidx.activity.result.contract.ActivityResultContracts; import androidx.activity.result.contract.ActivityResultContracts.GetContent; import androidx.annotation.NonNull; import androidx.annotation.Nullable; -import androidx.annotation.RequiresApi; import com.google.android.material.dialog.MaterialAlertDialogBuilder; import androidx.documentfile.provider.DocumentFile; import androidx.fragment.app.Fragment; @@ -105,9 +103,6 @@ public class AddFeedFragment extends Fragment { }); viewBinding.addLocalFolderButton.setOnClickListener(v -> { - if (Build.VERSION.SDK_INT < 21) { - return; - } try { addLocalFolderLauncher.launch(null); } catch (ActivityNotFoundException e) { @@ -116,10 +111,6 @@ public class AddFeedFragment extends Fragment { .showSnackbarAbovePlayer(R.string.unable_to_start_system_file_manager, Snackbar.LENGTH_LONG); } }); - if (Build.VERSION.SDK_INT < 21) { - viewBinding.addLocalFolderButton.setVisibility(View.GONE); - } - viewBinding.searchButton.setOnClickListener(view -> performSearch()); return viewBinding.getRoot(); @@ -205,9 +196,6 @@ public class AddFeedFragment extends Fragment { } private Feed addLocalFolder(Uri uri) { - if (Build.VERSION.SDK_INT < 21) { - return null; - } getActivity().getContentResolver() .takePersistableUriPermission(uri, Intent.FLAG_GRANT_READ_URI_PERMISSION); DocumentFile documentFile = DocumentFile.fromTreeUri(getContext(), uri); @@ -227,7 +215,6 @@ public class AddFeedFragment extends Fragment { } private static class AddLocalFolder extends ActivityResultContracts.OpenDocumentTree { - @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) @NonNull @Override public Intent createIntent(@NonNull final Context context, @Nullable final Uri input) { 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 1539ebecf..530d87e7f 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/AudioPlayerFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/AudioPlayerFragment.java @@ -121,7 +121,8 @@ public class AudioPlayerFragment extends Fragment implements getChildFragmentManager().beginTransaction() .replace(R.id.playerFragment, externalPlayerFragment, ExternalPlayerFragment.TAG) .commit(); - root.findViewById(R.id.playerFragment).setBackgroundColor(SurfaceColors.getColorForElevation(getContext(), 8)); + root.findViewById(R.id.playerFragment).setBackgroundColor( + SurfaceColors.getColorForElevation(getContext(), 8 * getResources().getDisplayMetrics().density)); butPlaybackSpeed = root.findViewById(R.id.butPlaybackSpeed); txtvPlaybackSpeed = root.findViewById(R.id.txtvPlaybackSpeed); diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/DownloadLogFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/DownloadLogFragment.java index 26533f50f..c27d8c058 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/DownloadLogFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/DownloadLogFragment.java @@ -1,6 +1,5 @@ package de.danoeh.antennapod.fragment; -import android.os.Build; import android.os.Bundle; import android.util.Log; import android.view.LayoutInflater; @@ -80,9 +79,7 @@ public class DownloadLogFragment extends BottomSheetDialogFragment adapter = new DownloadLogAdapter(getActivity()); viewBinding.list.setAdapter(adapter); viewBinding.list.setOnItemClickListener(this); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { - viewBinding.list.setNestedScrollingEnabled(true); - } + viewBinding.list.setNestedScrollingEnabled(true); EventBus.getDefault().register(this); return viewBinding.getRoot(); } 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 4fe2f0386..32ab5d9e5 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/FeedInfoFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/FeedInfoFragment.java @@ -7,7 +7,6 @@ import android.content.Intent; import android.content.res.Configuration; import android.graphics.LightingColorFilter; import android.net.Uri; -import android.os.Build; import android.os.Bundle; import android.text.TextUtils; import android.util.Log; @@ -22,7 +21,6 @@ import androidx.activity.result.ActivityResultLauncher; import androidx.activity.result.contract.ActivityResultContracts; import androidx.annotation.NonNull; import androidx.annotation.Nullable; -import androidx.annotation.RequiresApi; import com.google.android.material.dialog.MaterialAlertDialogBuilder; import androidx.appcompat.content.res.AppCompatResources; import com.google.android.material.appbar.MaterialToolbar; @@ -290,7 +288,7 @@ public class FeedInfoFragment extends Fragment implements MaterialToolbar.OnMenu } boolean handled = FeedMenuHandler.onOptionsItemClicked(getContext(), item, feed); - if (item.getItemId() == R.id.reconnect_local_folder && Build.VERSION.SDK_INT >= 21) { + if (item.getItemId() == R.id.reconnect_local_folder) { MaterialAlertDialogBuilder alert = new MaterialAlertDialogBuilder(getContext()); alert.setMessage(R.string.reconnect_local_folder_warning); alert.setPositiveButton(android.R.string.ok, (dialog, which) -> { @@ -329,7 +327,7 @@ public class FeedInfoFragment extends Fragment implements MaterialToolbar.OnMenu } private void reconnectLocalFolder(Uri uri) { - if (Build.VERSION.SDK_INT < 21 || feed == null) { + if (feed == null) { return; } @@ -353,7 +351,6 @@ public class FeedInfoFragment extends Fragment implements MaterialToolbar.OnMenu } private static class AddLocalFolder extends ActivityResultContracts.OpenDocumentTree { - @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) @NonNull @Override public Intent createIntent(@NonNull final Context context, @Nullable final Uri input) { diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/preferences/UserInterfacePreferencesFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/preferences/UserInterfacePreferencesFragment.java index 59c2c4a8e..caf555964 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/preferences/UserInterfacePreferencesFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/preferences/UserInterfacePreferencesFragment.java @@ -44,6 +44,16 @@ public class UserInterfacePreferencesFragment extends PreferenceFragmentCompat { return true; }); + if (Build.VERSION.SDK_INT < 31) { + findPreference(UserPreferences.PREF_TINTED_COLORS).setVisible(false); + } + findPreference(UserPreferences.PREF_TINTED_COLORS) + .setOnPreferenceChangeListener( + (preference, newValue) -> { + ActivityCompat.recreate(getActivity()); + return true; + }); + findPreference(UserPreferences.PREF_SHOW_TIME_LEFT) .setOnPreferenceChangeListener( (preference, newValue) -> { diff --git a/app/src/main/java/de/danoeh/antennapod/preferences/MasterSwitchPreference.java b/app/src/main/java/de/danoeh/antennapod/preferences/MasterSwitchPreference.java index 94e60ef61..ef527967a 100644 --- a/app/src/main/java/de/danoeh/antennapod/preferences/MasterSwitchPreference.java +++ b/app/src/main/java/de/danoeh/antennapod/preferences/MasterSwitchPreference.java @@ -1,16 +1,14 @@ package de.danoeh.antennapod.preferences; -import android.annotation.TargetApi; import android.content.Context; import android.graphics.Typeface; -import android.os.Build; import androidx.preference.SwitchPreferenceCompat; import androidx.preference.PreferenceViewHolder; import android.util.AttributeSet; -import android.util.TypedValue; import android.widget.TextView; import de.danoeh.antennapod.R; +import de.danoeh.antennapod.ui.common.ThemeUtils; public class MasterSwitchPreference extends SwitchPreferenceCompat { @@ -18,7 +16,6 @@ public class MasterSwitchPreference extends SwitchPreferenceCompat { super(context, attrs, defStyleAttr); } - @TargetApi(Build.VERSION_CODES.LOLLIPOP) public MasterSwitchPreference(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { super(context, attrs, defStyleAttr, defStyleRes); } @@ -36,10 +33,7 @@ public class MasterSwitchPreference extends SwitchPreferenceCompat { public void onBindViewHolder(PreferenceViewHolder holder) { super.onBindViewHolder(holder); - TypedValue typedValue = new TypedValue(); - getContext().getTheme().resolveAttribute(R.attr.master_switch_background, typedValue, true); - holder.itemView.setBackgroundColor(typedValue.data); - + holder.itemView.setBackgroundColor(ThemeUtils.getColorFromAttr(getContext(), R.attr.colorSurfaceVariant)); TextView title = (TextView) holder.findViewById(android.R.id.title); if (title != null) { title.setTypeface(title.getTypeface(), Typeface.BOLD); diff --git a/app/src/main/java/de/danoeh/antennapod/view/ChapterSeekBar.java b/app/src/main/java/de/danoeh/antennapod/view/ChapterSeekBar.java index 7c6b64e2c..d35206647 100644 --- a/app/src/main/java/de/danoeh/antennapod/view/ChapterSeekBar.java +++ b/app/src/main/java/de/danoeh/antennapod/view/ChapterSeekBar.java @@ -6,6 +6,7 @@ import android.graphics.Paint; import android.os.Handler; import android.os.Looper; import android.util.AttributeSet; +import de.danoeh.antennapod.R; import de.danoeh.antennapod.ui.common.ThemeUtils; public class ChapterSeekBar extends androidx.appcompat.widget.AppCompatSeekBar { @@ -42,11 +43,9 @@ public class ChapterSeekBar extends androidx.appcompat.widget.AppCompatSeekBar { dividerPos = null; density = context.getResources().getDisplayMetrics().density; - paintBackground.setColor(ThemeUtils.getColorFromAttr(getContext(), - de.danoeh.antennapod.core.R.attr.currently_playing_background)); + paintBackground.setColor(ThemeUtils.getColorFromAttr(getContext(), R.attr.colorSurfaceVariant)); paintBackground.setAlpha(128); - paintProgressPrimary.setColor(ThemeUtils.getColorFromAttr(getContext(), - de.danoeh.antennapod.core.R.attr.colorPrimary)); + paintProgressPrimary.setColor(ThemeUtils.getColorFromAttr(getContext(), R.attr.colorPrimary)); } /** diff --git a/app/src/main/java/de/danoeh/antennapod/view/NestedScrollableHost.java b/app/src/main/java/de/danoeh/antennapod/view/NestedScrollableHost.java index ff52df71f..660aa1ea9 100644 --- a/app/src/main/java/de/danoeh/antennapod/view/NestedScrollableHost.java +++ b/app/src/main/java/de/danoeh/antennapod/view/NestedScrollableHost.java @@ -21,7 +21,6 @@ package de.danoeh.antennapod.view; import android.content.Context; import android.content.res.TypedArray; -import android.os.Build; import android.util.AttributeSet; import android.view.MotionEvent; import android.view.View; @@ -31,7 +30,6 @@ import android.widget.FrameLayout; import androidx.annotation.NonNull; import androidx.annotation.Nullable; -import androidx.annotation.RequiresApi; import androidx.viewpager2.widget.ViewPager2; import de.danoeh.antennapod.R; @@ -75,7 +73,6 @@ public class NestedScrollableHost extends FrameLayout { setAttributes(context, attrs); } - @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) public NestedScrollableHost(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr, int defStyleRes) { super(context, attrs, defStyleAttr, defStyleRes); diff --git a/app/src/main/java/de/danoeh/antennapod/view/ShownotesWebView.java b/app/src/main/java/de/danoeh/antennapod/view/ShownotesWebView.java index 9dc4a76c6..b284aa2d6 100644 --- a/app/src/main/java/de/danoeh/antennapod/view/ShownotesWebView.java +++ b/app/src/main/java/de/danoeh/antennapod/view/ShownotesWebView.java @@ -6,7 +6,6 @@ import android.content.Context; import android.content.Intent; import android.graphics.Color; import android.net.Uri; -import android.os.Build; import android.util.AttributeSet; import android.util.Log; import android.view.ContextMenu; @@ -63,9 +62,7 @@ public class ShownotesWebView extends WebView implements View.OnLongClickListene getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK); // Use cached resources, even if they have expired } - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { - getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW); - } + getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW); getSettings().setUseWideViewPort(false); getSettings().setLoadWithOverviewMode(true); setOnLongClickListener(this); 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 72ad46373..cdf688502 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 @@ -7,7 +7,6 @@ import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; -import android.widget.CheckBox; import android.widget.ImageView; import android.widget.ProgressBar; import android.widget.TextView; @@ -15,6 +14,7 @@ import android.widget.TextView; import androidx.cardview.widget.CardView; import androidx.recyclerview.widget.RecyclerView; +import com.google.android.material.elevation.SurfaceColors; import com.joanzapata.iconify.Iconify; import de.danoeh.antennapod.R; @@ -64,7 +64,6 @@ public class EpisodeItemViewHolder extends RecyclerView.ViewHolder { private final TextView separatorIcons; private final View leftPadding; public final CardView coverHolder; - public final CheckBox selectCheckBox; private final MainActivity activity; private FeedItem item; @@ -96,7 +95,6 @@ public class EpisodeItemViewHolder extends RecyclerView.ViewHolder { coverHolder = itemView.findViewById(R.id.coverHolder); leftPadding = itemView.findViewById(R.id.left_padding); itemView.setTag(this); - selectCheckBox = itemView.findViewById(R.id.selectCheckBox); } public void bind(FeedItem item) { @@ -141,7 +139,8 @@ public class EpisodeItemViewHolder extends RecyclerView.ViewHolder { duration.setVisibility(media.getDuration() > 0 ? View.VISIBLE : View.GONE); if (PlaybackStatus.isCurrentlyPlaying(media)) { - itemView.setBackgroundColor(ThemeUtils.getColorFromAttr(activity, R.attr.currently_playing_background)); + float density = activity.getResources().getDisplayMetrics().density; + itemView.setBackgroundColor(SurfaceColors.getColorForElevation(activity, 8 * density)); } else { itemView.setBackgroundResource(ThemeUtils.getDrawableFromAttr(activity, R.attr.selectableItemBackground)); } diff --git a/app/src/main/java/de/danoeh/antennapod/view/viewholder/HorizontalItemViewHolder.java b/app/src/main/java/de/danoeh/antennapod/view/viewholder/HorizontalItemViewHolder.java index 83d589518..05240b371 100644 --- a/app/src/main/java/de/danoeh/antennapod/view/viewholder/HorizontalItemViewHolder.java +++ b/app/src/main/java/de/danoeh/antennapod/view/viewholder/HorizontalItemViewHolder.java @@ -8,6 +8,7 @@ import android.widget.ProgressBar; import android.widget.TextView; import androidx.cardview.widget.CardView; import androidx.recyclerview.widget.RecyclerView; +import com.google.android.material.elevation.SurfaceColors; import de.danoeh.antennapod.R; import de.danoeh.antennapod.activity.MainActivity; import de.danoeh.antennapod.adapter.CoverLoader; @@ -56,6 +57,8 @@ public class HorizontalItemViewHolder extends RecyclerView.ViewHolder { this.item = item; card.setAlpha(1.0f); + float density = activity.getResources().getDisplayMetrics().density; + card.setCardBackgroundColor(SurfaceColors.getColorForElevation(activity, 1 * density)); new CoverLoader(activity) .withUri(ImageResourceUtils.getEpisodeListImageLocation(item)) .withFallbackUri(item.getFeed().getImageUrl()) @@ -73,9 +76,7 @@ public class HorizontalItemViewHolder extends RecyclerView.ViewHolder { setProgressBar(false, 0); } else { if (PlaybackStatus.isCurrentlyPlaying(media)) { - card.setCardBackgroundColor(ThemeUtils.getColorFromAttr(activity, R.attr.card_background_playing)); - } else { - card.setCardBackgroundColor(ThemeUtils.getColorFromAttr(activity, R.attr.card_background)); + card.setCardBackgroundColor(ThemeUtils.getColorFromAttr(activity, R.attr.colorSurfaceVariant)); } if (item.getMedia().getDuration() > 0 && item.getMedia().getPosition() > 0) { diff --git a/app/src/main/res/drawable-v21/grey_border.xml b/app/src/main/res/drawable-v21/grey_border.xml deleted file mode 100644 index beccf9e85..000000000 --- a/app/src/main/res/drawable-v21/grey_border.xml +++ /dev/null @@ -1,29 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<ripple xmlns:android="http://schemas.android.com/apk/res/android" -android:color="?attr/colorControlHighlight"> - <item android:id="@android:id/mask"> - <shape - android:shape="rectangle"> - <corners - android:radius="8dp" - android:topRightRadius="8dp" - android:bottomRightRadius="8dp" - android:bottomLeftRadius="8dp" /> - <solid android:color="@android:color/white"/> - </shape> - </item> - <item> - <shape - android:shape="rectangle"> - <corners - android:radius="8dp" - android:topRightRadius="8dp" - android:bottomRightRadius="8dp" - android:bottomLeftRadius="8dp" /> - <stroke - android:width="1dp" - android:color="?android:attr/textColorSecondary" /> - <solid android:color="@android:color/transparent"/> - </shape> - </item> -</ripple> diff --git a/app/src/main/res/drawable/grey_border.xml b/app/src/main/res/drawable/grey_border.xml index 4362f05b6..beccf9e85 100644 --- a/app/src/main/res/drawable/grey_border.xml +++ b/app/src/main/res/drawable/grey_border.xml @@ -1,21 +1,29 @@ <?xml version="1.0" encoding="utf-8"?> -<selector> - - <item> - - <shape xmlns:android="http://schemas.android.com/apk/res/android" - android:shape="rectangle"> - <corners - android:radius="8dp" - android:topRightRadius="8dp" - android:bottomRightRadius="8dp" - android:bottomLeftRadius="8dp" /> - <stroke - android:width="1dp" - android:color="@android:color/darker_gray" /> - <solid android:color="@android:color/transparent"/> - </shape> - - </item> - -</selector>
\ No newline at end of file +<ripple xmlns:android="http://schemas.android.com/apk/res/android" +android:color="?attr/colorControlHighlight"> + <item android:id="@android:id/mask"> + <shape + android:shape="rectangle"> + <corners + android:radius="8dp" + android:topRightRadius="8dp" + android:bottomRightRadius="8dp" + android:bottomLeftRadius="8dp" /> + <solid android:color="@android:color/white"/> + </shape> + </item> + <item> + <shape + android:shape="rectangle"> + <corners + android:radius="8dp" + android:topRightRadius="8dp" + android:bottomRightRadius="8dp" + android:bottomLeftRadius="8dp" /> + <stroke + android:width="1dp" + android:color="?android:attr/textColorSecondary" /> + <solid android:color="@android:color/transparent"/> + </shape> + </item> +</ripple> diff --git a/app/src/main/res/layout/audioplayer_fragment.xml b/app/src/main/res/layout/audioplayer_fragment.xml index 9b1650a76..a9964089c 100644 --- a/app/src/main/res/layout/audioplayer_fragment.xml +++ b/app/src/main/res/layout/audioplayer_fragment.xml @@ -11,7 +11,6 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="top" - android:background="?attr/background_elevated" android:elevation="8dp" tools:layout_height="@dimen/external_player_height" /> diff --git a/app/src/main/res/layout/downloadlog_item.xml b/app/src/main/res/layout/downloadlog_item.xml index f55e0f25e..9ca19b531 100644 --- a/app/src/main/res/layout/downloadlog_item.xml +++ b/app/src/main/res/layout/downloadlog_item.xml @@ -1,78 +1,80 @@ <?xml version="1.0" encoding="utf-8"?> <LinearLayout - xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:tools="http://schemas.android.com/tools" - android:id="@+id/container" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:orientation="horizontal" - android:gravity="center_vertical" - android:baselineAligned="false" - android:descendantFocusability="blocksDescendants"> + xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:tools="http://schemas.android.com/tools" + android:id="@+id/container" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal" + android:gravity="center_vertical" + android:baselineAligned="false" + android:descendantFocusability="blocksDescendants"> <LinearLayout - android:layout_width="0dp" - android:layout_height="wrap_content" - android:layout_marginBottom="@dimen/listitem_threeline_verticalpadding" - android:layout_marginRight="@dimen/listitem_threeline_textrightpadding" - android:layout_marginEnd="@dimen/listitem_threeline_textrightpadding" - android:layout_marginTop="@dimen/listitem_threeline_verticalpadding" - android:layout_marginLeft="16dp" - android:layout_marginStart="16dp" - android:layout_weight="1" - android:orientation="vertical"> + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginBottom="@dimen/listitem_threeline_verticalpadding" + android:layout_marginRight="@dimen/listitem_threeline_textrightpadding" + android:layout_marginEnd="@dimen/listitem_threeline_textrightpadding" + android:layout_marginTop="@dimen/listitem_threeline_verticalpadding" + android:layout_marginLeft="16dp" + android:layout_marginStart="16dp" + android:layout_weight="1" + android:orientation="vertical"> <LinearLayout - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:orientation="horizontal" - android:gravity="center_vertical"> + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal" + android:gravity="center_vertical"> <com.joanzapata.iconify.widget.IconTextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginEnd="4dp" - android:padding="2dp" - android:id="@+id/txtvIcon" - android:textSize="18sp" - android:gravity="center"/> + android:id="@+id/txtvIcon" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginEnd="4dp" + android:padding="2dp" + android:textSize="18sp" + android:gravity="center" /> <TextView - android:id="@+id/txtvTitle" - style="@style/AntennaPod.TextView.ListItemPrimaryTitle" - android:layout_width="match_parent" - android:layout_height="wrap_content" - tools:text="@sample/episodes.json/data/title" - android:maxLines="1" - android:ellipsize="end" - tools:background="@android:color/holo_blue_light"/> + android:id="@+id/txtvTitle" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:maxLines="1" + android:ellipsize="end" + style="@style/AntennaPod.TextView.ListItemPrimaryTitle" + tools:text="@sample/episodes.json/data/title" + tools:background="@android:color/holo_blue_light" /> </LinearLayout> <TextView - android:id="@+id/status" - style="@style/AntennaPod.TextView.ListItemSecondaryTitle" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - tools:text="Media file - 01/01/1970"/> + android:id="@+id/status" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + style="@style/AntennaPod.TextView.ListItemSecondaryTitle" + tools:text="Media file - 01/01/1970" /> <TextView - android:id="@+id/txtvReason" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:textSize="14sp" - android:textColor="@color/download_failed_red" - tools:text="@string/design_time_downloaded_log_failure_reason"/> + android:id="@+id/txtvReason" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:textSize="14sp" + android:textColor="?attr/icon_red" + tools:text="@string/design_time_downloaded_log_failure_reason" /> <TextView - android:id="@+id/txtvTapForDetails" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:textSize="14sp" - android:textColor="?android:attr/textColorSecondary" - android:text="@string/download_error_tap_for_details"/> + android:id="@+id/txtvTapForDetails" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:textSize="14sp" + android:textColor="?android:attr/textColorSecondary" + android:text="@string/download_error_tap_for_details" /> </LinearLayout> - <include layout="@layout/secondary_action"/> + <include + layout="@layout/secondary_action" /> + </LinearLayout> diff --git a/app/src/main/res/layout/external_player_fragment.xml b/app/src/main/res/layout/external_player_fragment.xml index fa881e622..4969215d9 100644 --- a/app/src/main/res/layout/external_player_fragment.xml +++ b/app/src/main/res/layout/external_player_fragment.xml @@ -1,81 +1,80 @@ <?xml version="1.0" encoding="utf-8"?> <LinearLayout - 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:id="@+id/fragmentLayout" - android:layout_width="match_parent" - android:layout_height="@dimen/external_player_height" - android:background="?attr/selectableItemBackground" - android:orientation="vertical"> + 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:id="@+id/fragmentLayout" + android:layout_width="match_parent" + android:layout_height="@dimen/external_player_height" + android:background="?attr/selectableItemBackground" + android:orientation="vertical"> <LinearLayout - android:layout_width="match_parent" - android:layout_height="0dp" - android:gravity="center_vertical" - android:layout_weight="1"> + android:layout_width="match_parent" + android:layout_height="0dp" + android:gravity="center_vertical" + android:layout_weight="1"> <ImageView - android:id="@+id/imgvCover" - android:contentDescription="@string/media_player" - android:layout_width="wrap_content" - android:layout_height="match_parent" - android:adjustViewBounds="true" - android:cropToPadding="true" - android:maxWidth="96dp" - android:scaleType="fitCenter" - android:background="@color/non_square_icon_background" - tools:src="@tools:sample/avatars"/> - + android:id="@+id/imgvCover" + android:layout_width="wrap_content" + android:layout_height="match_parent" + android:contentDescription="@string/media_player" + android:adjustViewBounds="true" + android:cropToPadding="true" + android:maxWidth="96dp" + android:scaleType="fitCenter" + android:background="@color/non_square_icon_background" + tools:src="@tools:sample/avatars" /> <LinearLayout - android:layout_width="0dp" - android:layout_height="wrap_content" - android:layout_weight="1" - android:orientation="vertical" - android:layout_marginLeft="16dp" - android:layout_marginStart="16dp"> + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="1" + android:orientation="vertical" + android:layout_marginLeft="16dp" + android:layout_marginStart="16dp"> <TextView - android:id="@+id/txtvTitle" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - style="@style/Base.TextAppearance.AppCompat.Body1" - android:ellipsize="end" - android:maxLines="1" - tools:text="Episode title that is too long and will cause the text to wrap"/> + android:id="@+id/txtvTitle" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:ellipsize="end" + android:maxLines="1" + style="@style/Base.TextAppearance.AppCompat.Body1" + tools:text="Episode title that is too long and will cause the text to wrap" /> <TextView - android:id="@+id/txtvAuthor" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - style="@style/TextAppearance.AppCompat.Body1" - android:textColor="?android:attr/textColorSecondary" - android:ellipsize="end" - android:maxLines="1" - tools:text="Episode author that is too long and will cause the text to wrap"/> - </LinearLayout> + android:id="@+id/txtvAuthor" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:textColor="?android:attr/textColorSecondary" + android:ellipsize="end" + android:maxLines="1" + style="@style/TextAppearance.AppCompat.Body1" + tools:text="Episode author that is too long and will cause the text to wrap" /> + </LinearLayout> <de.danoeh.antennapod.view.PlayButton - android:id="@+id/butPlay" - android:layout_width="52dp" - android:layout_height="match_parent" - android:contentDescription="@string/pause_label" - android:background="?attr/selectableItemBackground" - app:srcCompat="@drawable/ic_play_48dp" - android:scaleType="fitCenter" - android:padding="8dp" - tools:src="@drawable/ic_play_48dp"/> + android:id="@+id/butPlay" + android:layout_width="52dp" + android:layout_height="match_parent" + android:contentDescription="@string/pause_label" + android:background="?attr/selectableItemBackground" + android:scaleType="fitCenter" + android:padding="8dp" + app:srcCompat="@drawable/ic_play_48dp" + tools:src="@drawable/ic_play_48dp" /> </LinearLayout> <ProgressBar - android:id="@+id/episodeProgress" - android:layout_width="match_parent" - android:layout_height="4dp" - style="?attr/progressBarTheme" - android:indeterminate="false" - tools:progress="100"/> + android:id="@+id/episodeProgress" + android:layout_width="match_parent" + android:layout_height="4dp" + android:indeterminate="false" + style="?android:attr/progressBarStyleHorizontal" + tools:progress="100" /> </LinearLayout> diff --git a/app/src/main/res/layout/feed_item_list_fragment.xml b/app/src/main/res/layout/feed_item_list_fragment.xml index 2c19836c2..a4288ef2d 100644 --- a/app/src/main/res/layout/feed_item_list_fragment.xml +++ b/app/src/main/res/layout/feed_item_list_fragment.xml @@ -23,7 +23,7 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/image_readability_tint" - style="@style/BigBlurryBackground" + android:scaleType="centerCrop" app:layout_collapseMode="parallax" app:layout_collapseParallaxMultiplier="0.6" /> diff --git a/app/src/main/res/layout/feedinfo.xml b/app/src/main/res/layout/feedinfo.xml index af4aa2570..9771bd7fc 100644 --- a/app/src/main/res/layout/feedinfo.xml +++ b/app/src/main/res/layout/feedinfo.xml @@ -26,7 +26,7 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/image_readability_tint" - style="@style/BigBlurryBackground" + android:scaleType="centerCrop" app:layout_collapseMode="parallax" app:layout_collapseParallaxMultiplier="0.6" /> diff --git a/app/src/main/res/layout/feeditemlist_header.xml b/app/src/main/res/layout/feeditemlist_header.xml index 6bd31ed9d..ba8b4fcd8 100644 --- a/app/src/main/res/layout/feeditemlist_header.xml +++ b/app/src/main/res/layout/feeditemlist_header.xml @@ -145,7 +145,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="2dp" - android:background="@color/download_failed_red" + android:background="?attr/icon_red" android:gravity="center" android:textColor="@color/white" android:visibility="gone" diff --git a/app/src/main/res/layout/feeditemlist_item.xml b/app/src/main/res/layout/feeditemlist_item.xml index f730c1c2b..a5246265a 100644 --- a/app/src/main/res/layout/feeditemlist_item.xml +++ b/app/src/main/res/layout/feeditemlist_item.xml @@ -44,13 +44,6 @@ tools:src="@drawable/ic_drag_darktheme" tools:background="@android:color/holo_green_dark" /> - <!-- Needs to have the same width as the action button. Otherwise, the screen jumps around. --> - <CheckBox - android:id="@+id/selectCheckBox" - android:layout_width="60dp" - android:layout_height="match_parent" - android:visibility="gone" /> - </LinearLayout> <androidx.cardview.widget.CardView @@ -116,8 +109,7 @@ android:layout_width="14sp" android:layout_height="14sp" android:contentDescription="@string/is_inbox_label" - app:srcCompat="@drawable/ic_inbox" - app:tint="?attr/colorAccent" /> + app:srcCompat="@drawable/ic_inbox" /> <ImageView android:id="@+id/ivIsVideo" @@ -221,7 +213,7 @@ android:layout_weight="1" android:max="100" android:layout_margin="4dp" - style="?attr/progressBarTheme" + style="?android:attr/progressBarStyleHorizontal" tools:background="@android:color/holo_blue_light" /> <TextView diff --git a/app/src/main/res/layout/gpodnetauth_credentials.xml b/app/src/main/res/layout/gpodnetauth_credentials.xml index 91224744b..e318f11d9 100644 --- a/app/src/main/res/layout/gpodnetauth_credentials.xml +++ b/app/src/main/res/layout/gpodnetauth_credentials.xml @@ -58,7 +58,7 @@ android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" - android:textColor="@color/download_failed_red" + android:textColor="?attr/icon_red" android:textSize="@dimen/text_size_small" android:maxLines="2" android:ellipsize="end" diff --git a/app/src/main/res/layout/gpodnetauth_device.xml b/app/src/main/res/layout/gpodnetauth_device.xml index 656ba0889..cb133f684 100644 --- a/app/src/main/res/layout/gpodnetauth_device.xml +++ b/app/src/main/res/layout/gpodnetauth_device.xml @@ -1,45 +1,45 @@ <?xml version="1.0" encoding="utf-8"?> <LinearLayout - xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:tools="http://schemas.android.com/tools" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:orientation="vertical"> + xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:tools="http://schemas.android.com/tools" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical"> <com.google.android.material.textfield.TextInputLayout - style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox" - android:layout_width="match_parent" - android:layout_height="wrap_content"> + android:layout_width="match_parent" + android:layout_height="wrap_content" + style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"> <com.google.android.material.textfield.TextInputEditText - android:id="@+id/deviceName" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:hint="@string/gpodnetauth_device_name" - android:lines="1" - android:imeOptions="actionNext|flagNoFullscreen"/> + android:id="@+id/deviceName" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:hint="@string/gpodnetauth_device_name" + android:lines="1" + android:imeOptions="actionNext|flagNoFullscreen" /> </com.google.android.material.textfield.TextInputLayout> <Button - android:id="@+id/createDeviceButton" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_gravity="right|end" - android:text="@string/gpodnetauth_create_device"/> + android:id="@+id/createDeviceButton" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="right|end" + android:text="@string/gpodnetauth_create_device" /> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" - style="@style/AntennaPod.TextView.Heading" android:layout_marginTop="16dp" - android:text="@string/gpodnetauth_existing_devices"/> + android:text="@string/gpodnetauth_existing_devices" + style="@style/AntennaPod.TextView.Heading" /> <TextView android:id="@+id/deviceSelectError" android:layout_width="match_parent" android:layout_height="wrap_content" - android:textColor="@color/download_failed_red" + android:textColor="?attr/icon_red" android:textSize="@dimen/text_size_small" android:visibility="gone" tools:text="Error message" @@ -55,7 +55,7 @@ android:id="@+id/progbarCreateDevice" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:textColor="@color/download_failed_red" + android:textColor="?attr/icon_red" android:visibility="gone" /> -</LinearLayout>
\ No newline at end of file +</LinearLayout> diff --git a/app/src/main/res/layout/home_fragment.xml b/app/src/main/res/layout/home_fragment.xml index fca9406a8..3ef602334 100644 --- a/app/src/main/res/layout/home_fragment.xml +++ b/app/src/main/res/layout/home_fragment.xml @@ -34,7 +34,7 @@ android:layout_height="80dp" android:layout_marginBottom="8dp" android:layout_gravity="start" - android:src="@drawable/ic_curved_arrow" /> + app:srcCompat="@drawable/ic_curved_arrow" /> <ImageView android:id="@+id/icon" @@ -42,7 +42,7 @@ android:layout_height="64dp" android:layout_gravity="center_horizontal" android:layout_marginBottom="16dp" - android:src="@mipmap/ic_launcher" /> + app:srcCompat="@mipmap/ic_launcher" /> <TextView android:layout_width="match_parent" diff --git a/app/src/main/res/layout/nav_listitem.xml b/app/src/main/res/layout/nav_listitem.xml index 0aca5eb7d..e0a7f9ed0 100644 --- a/app/src/main/res/layout/nav_listitem.xml +++ b/app/src/main/res/layout/nav_listitem.xml @@ -58,8 +58,7 @@ android:layout_toLeftOf="@id/txtvCount" android:visibility="gone" app:srcCompat="@drawable/ic_error" - app:tint="@color/download_failed_red" - tools:background="@android:color/holo_green_dark" + app:tint="?attr/icon_red" tools:text="!" /> <TextView diff --git a/app/src/main/res/layout/nextcloud_auth_dialog.xml b/app/src/main/res/layout/nextcloud_auth_dialog.xml index 345eec88b..08cf05ef9 100644 --- a/app/src/main/res/layout/nextcloud_auth_dialog.xml +++ b/app/src/main/res/layout/nextcloud_auth_dialog.xml @@ -51,7 +51,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:visibility="gone" - android:textColor="@color/download_failed_red" + android:textColor="?attr/icon_red" android:layout_marginBottom="16dp" /> <Button diff --git a/app/src/main/res/layout/onlinefeedview_activity.xml b/app/src/main/res/layout/onlinefeedview_activity.xml index f1297baf4..9e89e8a0f 100644 --- a/app/src/main/res/layout/onlinefeedview_activity.xml +++ b/app/src/main/res/layout/onlinefeedview_activity.xml @@ -1,168 +1,171 @@ <?xml version="1.0" encoding="utf-8"?> <LinearLayout - xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:app="http://schemas.android.com/apk/res-auto" - xmlns:tools="http://schemas.android.com/tools" + xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:tools="http://schemas.android.com/tools" + android:id="@+id/transparentBackground" + android:layout_width="match_parent" + android:layout_height="match_parent"> + + <androidx.cardview.widget.CardView + android:id="@+id/card" android:layout_width="match_parent" android:layout_height="match_parent" - android:id="@+id/transparentBackground"> + android:layout_margin="32dp" + android:elevation="16dp" + app:cardCornerRadius="4dp"> - <androidx.cardview.widget.CardView + <FrameLayout android:layout_width="match_parent" android:layout_height="match_parent" - app:cardCornerRadius="4dp" - android:layout_margin="32dp" - android:elevation="16dp" - android:id="@+id/card"> - - <FrameLayout - android:orientation="vertical" - android:layout_width="match_parent" - android:layout_height="match_parent"> + android:orientation="vertical"> <ProgressBar - style="?android:attr/progressBarStyle" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/progressBar" - android:layout_gravity="center"/> + android:id="@+id/progressBar" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="center" + style="?android:attr/progressBarStyle" /> <LinearLayout - android:id="@+id/feed_display_container" - android:layout_width="match_parent" - android:layout_height="match_parent" - android:orientation="vertical"> + android:id="@+id/feed_display_container" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:orientation="vertical"> <RelativeLayout - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:background="@color/feed_image_bg"> + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:background="@color/feed_image_bg"> <ImageView - android:id="@+id/backgroundImage" - style="@style/BigBlurryBackground" - android:layout_width="match_parent" - android:layout_height="@dimen/feeditemlist_header_height"/> + android:id="@+id/backgroundImage" + android:layout_width="match_parent" + android:layout_height="@dimen/feeditemlist_header_height" + android:scaleType="centerCrop" /> <ImageView - android:id="@+id/coverImage" - android:layout_width="@dimen/thumbnail_length_onlinefeedview" - android:layout_height="@dimen/thumbnail_length_onlinefeedview" - android:layout_alignParentLeft="true" - android:layout_alignParentStart="true" - android:layout_alignParentTop="true" - android:layout_centerVertical="true" - android:layout_marginBottom="16dp" - android:layout_marginLeft="16dp" - android:layout_marginStart="16dp" - android:layout_marginTop="16dp" - android:importantForAccessibility="no" - tools:src="@tools:sample/avatars"/> + android:id="@+id/coverImage" + android:layout_width="@dimen/thumbnail_length_onlinefeedview" + android:layout_height="@dimen/thumbnail_length_onlinefeedview" + android:layout_alignParentLeft="true" + android:layout_alignParentStart="true" + android:layout_alignParentTop="true" + android:layout_centerVertical="true" + android:layout_marginBottom="16dp" + android:layout_marginLeft="16dp" + android:layout_marginStart="16dp" + android:layout_marginTop="16dp" + android:importantForAccessibility="no" + tools:src="@tools:sample/avatars" /> <TextView - android:id="@+id/titleLabel" - style="@style/AntennaPod.TextView.Heading" - android:layout_width="0dp" - android:layout_height="wrap_content" - android:layout_alignParentTop="true" - android:layout_marginBottom="16dp" - android:layout_marginLeft="16dp" - android:layout_marginStart="16dp" - android:layout_marginTop="16dp" - android:layout_marginRight="16dp" - android:layout_marginEnd="16dp" - android:layout_alignParentEnd="true" - android:layout_alignParentRight="true" - android:layout_toRightOf="@id/coverImage" - android:layout_toEndOf="@id/coverImage" - android:ellipsize="end" - android:maxLines="2" - android:shadowColor="@color/black" - android:shadowRadius="3" - android:textColor="@color/white" - tools:text="Podcast title"/> + android:id="@+id/titleLabel" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_alignParentTop="true" + android:layout_marginBottom="16dp" + android:layout_marginLeft="16dp" + android:layout_marginStart="16dp" + android:layout_marginTop="16dp" + android:layout_marginRight="16dp" + android:layout_marginEnd="16dp" + android:layout_alignParentEnd="true" + android:layout_alignParentRight="true" + android:layout_toRightOf="@id/coverImage" + android:layout_toEndOf="@id/coverImage" + android:ellipsize="end" + android:maxLines="2" + android:shadowColor="@color/black" + android:shadowRadius="3" + android:textColor="@color/white" + style="@style/AntennaPod.TextView.Heading" + tools:text="Podcast title" /> <TextView - android:id="@+id/author_label" - android:layout_width="0dip" - android:layout_height="wrap_content" - android:layout_below="@id/titleLabel" - android:layout_marginBottom="16dp" - android:layout_marginLeft="16dp" - android:layout_marginStart="16dp" - android:layout_marginRight="16dp" - android:layout_marginEnd="16dp" - android:layout_alignParentEnd="true" - android:layout_alignParentRight="true" - android:layout_toRightOf="@id/coverImage" - android:layout_toEndOf="@id/coverImage" - android:ellipsize="end" - android:lines="1" - android:shadowColor="@color/black" - android:shadowRadius="3" - android:textColor="@color/white" - android:textSize="@dimen/text_size_small" - tools:text="Podcast author"/> + android:id="@+id/author_label" + android:layout_width="0dip" + android:layout_height="wrap_content" + android:layout_below="@id/titleLabel" + android:layout_marginBottom="16dp" + android:layout_marginLeft="16dp" + android:layout_marginStart="16dp" + android:layout_marginRight="16dp" + android:layout_marginEnd="16dp" + android:layout_alignParentEnd="true" + android:layout_alignParentRight="true" + android:layout_toRightOf="@id/coverImage" + android:layout_toEndOf="@id/coverImage" + android:ellipsize="end" + android:lines="1" + android:shadowColor="@color/black" + android:shadowRadius="3" + android:textColor="@color/white" + android:textSize="@dimen/text_size_small" + tools:text="Podcast author" /> + </RelativeLayout> <LinearLayout - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_marginStart="8dp" - android:layout_marginEnd="8dp" - android:layout_marginBottom="16dp" - android:orientation="vertical"> + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginStart="8dp" + android:layout_marginEnd="8dp" + android:layout_marginBottom="16dp" + android:orientation="vertical"> <Spinner - android:id="@+id/alternate_urls_spinner" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_marginTop="8dp" - android:dropDownWidth="match_parent" - android:padding="8dp" - android:textColor="?android:attr/textColorPrimary" - android:textSize="@dimen/text_size_micro" /> + android:id="@+id/alternate_urls_spinner" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="8dp" + android:dropDownWidth="match_parent" + android:padding="8dp" + android:textColor="?android:attr/textColorPrimary" + android:textSize="@dimen/text_size_micro" /> <Button - android:id="@+id/subscribeButton" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_marginStart="8dp" - android:layout_marginTop="16dp" - android:layout_marginEnd="8dp" - android:focusable="false" - android:text="@string/subscribe_label" /> + android:id="@+id/subscribeButton" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginStart="8dp" + android:layout_marginTop="16dp" + android:layout_marginEnd="8dp" + android:focusable="false" + android:text="@string/subscribe_label" /> <CheckBox - android:id="@+id/autoDownloadCheckBox" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_gravity="left" - android:focusable="false" - android:checked="true" - android:text="@string/auto_download_label" - android:visibility="gone" - tools:visibility="visible" /> + android:id="@+id/autoDownloadCheckBox" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_gravity="left" + android:focusable="false" + android:checked="true" + android:text="@string/auto_download_label" + android:visibility="gone" + tools:visibility="visible" /> <Button - android:id="@+id/stopPreviewButton" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_margin="8dp" - android:focusable="false" - android:text="@string/stop_preview" - android:visibility="gone" - tools:visibility="visible" /> + android:id="@+id/stopPreviewButton" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_margin="8dp" + android:focusable="false" + android:text="@string/stop_preview" + android:visibility="gone" + tools:visibility="visible" /> </LinearLayout> <ListView - android:id="@+id/listView" - android:layout_width="match_parent" - android:layout_height="match_parent"/> + android:id="@+id/listView" + android:layout_width="match_parent" + android:layout_height="match_parent" /> </LinearLayout> </FrameLayout> + </androidx.cardview.widget.CardView> -</LinearLayout>
\ No newline at end of file + +</LinearLayout> diff --git a/app/src/main/res/layout/select_country_dialog.xml b/app/src/main/res/layout/select_country_dialog.xml index e442a8023..70f93bb77 100644 --- a/app/src/main/res/layout/select_country_dialog.xml +++ b/app/src/main/res/layout/select_country_dialog.xml @@ -11,7 +11,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="20dp" - android:hint="@string/country" + android:hint="@string/select_country" app:endIconMode="none" style="@style/Widget.MaterialComponents.TextInputLayout.FilledBox.ExposedDropdownMenu"> diff --git a/app/src/main/res/menu/countries_menu.xml b/app/src/main/res/menu/countries_menu.xml index 7e31b7467..e0bd7dafe 100644 --- a/app/src/main/res/menu/countries_menu.xml +++ b/app/src/main/res/menu/countries_menu.xml @@ -12,6 +12,6 @@ <item android:id="@+id/discover_countries_item" android:enabled="true" - android:title="@string/country" + android:title="@string/select_country" android:visible="true" /> </menu>
\ No newline at end of file diff --git a/app/src/main/res/xml/preferences_user_interface.xml b/app/src/main/res/xml/preferences_user_interface.xml index 0ad44fdc5..f11b89be7 100644 --- a/app/src/main/res/xml/preferences_user_interface.xml +++ b/app/src/main/res/xml/preferences_user_interface.xml @@ -11,6 +11,11 @@ android:key="prefTheme" android:summary="@string/pref_set_theme_sum" android:defaultValue="system"/> + <SwitchPreferenceCompat + android:title="@string/pref_tinted_theme_title" + android:key="prefTintedColors" + android:summary="@string/pref_tinted_theme_message" + android:defaultValue="false" /> <Preference android:key="prefHiddenDrawerItems" android:summary="@string/pref_nav_drawer_items_sum" |