From 78155e9c3640b5ada6f2c5982db01fb0ea7e768b Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Tue, 6 May 2025 12:13:14 +0300 Subject: switch to material3 theme, switch some headline imageviews to material buttons, theme cleanup --- .../main/java/org/fox/ttrss/HeadlinesFragment.java | 37 ++++++---- .../ttrss/offline/OfflineHeadlinesFragment.java | 25 ++++--- .../src/main/res/layout/headlines_row.xml | 26 ++++--- .../src/main/res/layout/headlines_row_compact.xml | 8 ++- .../res/layout/headlines_row_selected_compact.xml | 9 +-- .../headlines_row_selected_unread_compact.xml | 9 +-- .../src/main/res/layout/headlines_row_unread.xml | 26 ++++--- org.fox.ttrss/src/main/res/layout/toolbar.xml | 4 +- .../src/main/res/values-night-v21/style.xml | 12 ---- org.fox.ttrss/src/main/res/values-v21/style.xml | 20 ------ org.fox.ttrss/src/main/res/values/style.xml | 79 +--------------------- 11 files changed, 87 insertions(+), 168 deletions(-) delete mode 100644 org.fox.ttrss/src/main/res/values-night-v21/style.xml delete mode 100755 org.fox.ttrss/src/main/res/values-v21/style.xml (limited to 'org.fox.ttrss') diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/HeadlinesFragment.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/HeadlinesFragment.java index d45ff934..c6d4f902 100755 --- a/org.fox.ttrss/src/main/java/org/fox/ttrss/HeadlinesFragment.java +++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/HeadlinesFragment.java @@ -9,6 +9,7 @@ import android.content.DialogInterface; import android.content.Intent; import android.content.SharedPreferences; import android.content.pm.ApplicationInfo; +import android.content.res.ColorStateList; import android.content.res.Resources.Theme; import android.graphics.Paint; import android.graphics.Point; @@ -42,6 +43,7 @@ import android.view.ViewGroup; import android.view.ViewTreeObserver; import android.view.WindowManager; import android.widget.AdapterView.AdapterContextMenuInfo; +import android.widget.Button; import android.widget.CheckBox; import android.widget.EditText; import android.widget.ImageView; @@ -70,6 +72,7 @@ import com.bumptech.glide.request.RequestListener; import com.bumptech.glide.request.target.GlideDrawableImageViewTarget; import com.bumptech.glide.request.target.Target; import com.evernote.android.state.State; +import com.google.android.material.button.MaterialButton; import com.google.android.material.snackbar.Snackbar; import com.google.gson.JsonElement; @@ -702,16 +705,16 @@ public class HeadlinesFragment extends StateSavedFragment { public TextView titleView; public TextView feedTitleView; - public ImageView markedView; - public ImageView scoreView; - public ImageView publishedView; + public MaterialButton markedView; + public MaterialButton scoreView; + public MaterialButton publishedView; public TextView excerptView; public ImageView flavorImageView; public ImageView flavorVideoKindView; public TextView authorView; public TextView dateView; public CheckBox selectionBoxView; - public ImageView menuButtonView; + public MaterialButton menuButtonView; public ViewGroup flavorImageHolder; public ProgressBar flavorImageLoadingBar; public View headlineFooter; @@ -720,7 +723,7 @@ public class HeadlinesFragment extends StateSavedFragment { public View headlineHeader; public View flavorImageOverflow; public TextureView flavorVideoView; - public ImageView attachmentsView; + public MaterialButton attachmentsView; //public int position; public boolean flavorImageEmbedded; public ProgressTarget flavorProgressTarget; @@ -1002,16 +1005,20 @@ public class HeadlinesFragment extends StateSavedFragment { TypedValue tvAccent = new TypedValue(); m_activity.getTheme().resolveAttribute(R.attr.colorAccent, tvAccent, true); + TypedValue tvPrimary = new TypedValue(); + m_activity.getTheme().resolveAttribute(R.attr.colorPrimary, tvPrimary, true); + if (holder.markedView != null) { TypedValue tv = new TypedValue(); m_activity.getTheme().resolveAttribute(article.marked ? R.attr.ic_star : R.attr.ic_star_outline, tv, true); - holder.markedView.setImageResource(tv.resourceId); + holder.markedView.setIconResource(tv.resourceId); + if (article.marked) - holder.markedView.setColorFilter(tvAccent.data); + holder.markedView.setIconTint(ColorStateList.valueOf(tvAccent.data)); else - holder.markedView.setColorFilter(null); + holder.markedView.setIconTint(ColorStateList.valueOf(tvPrimary.data)); holder.markedView.setOnClickListener(new OnClickListener() { @@ -1037,12 +1044,12 @@ public class HeadlinesFragment extends StateSavedFragment { m_activity.getTheme().resolveAttribute(scoreAttr, tv, true); - holder.scoreView.setImageResource(tv.resourceId); + holder.scoreView.setIconResource(tv.resourceId); if (article.score > Article.SCORE_HIGH) - holder.scoreView.setColorFilter(titleHighScoreUnreadColor); + holder.scoreView.setIconTint(ColorStateList.valueOf(tvAccent.data)); else - holder.scoreView.setColorFilter(null); + holder.scoreView.setIconTint(ColorStateList.valueOf(tvPrimary.data)); if (m_activity.getApiLevel() >= 16) { holder.scoreView.setOnClickListener(new OnClickListener() { @@ -1095,14 +1102,14 @@ public class HeadlinesFragment extends StateSavedFragment { if (holder.publishedView != null) { TypedValue tv = new TypedValue(); - m_activity.getTheme().resolveAttribute(article.published ? R.attr.ic_checkbox_marked : R.attr.ic_rss_box, tv, true); + m_activity.getTheme().resolveAttribute(R.attr.ic_rss_box, tv, true); - holder.publishedView.setImageResource(tv.resourceId); + holder.publishedView.setIconResource(tv.resourceId); if (article.published) - holder.publishedView.setColorFilter(tvAccent.data); + holder.publishedView.setIconTint(ColorStateList.valueOf(tvAccent.data)); else - holder.publishedView.setColorFilter(null); + holder.publishedView.setIconTint(ColorStateList.valueOf(tvPrimary.data)); holder.publishedView.setOnClickListener(new OnClickListener() { diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineHeadlinesFragment.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineHeadlinesFragment.java index 669e4115..386af632 100755 --- a/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineHeadlinesFragment.java +++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineHeadlinesFragment.java @@ -7,6 +7,7 @@ import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.content.SharedPreferences; +import android.content.res.ColorStateList; import android.content.res.Resources.Theme; import android.database.Cursor; import android.database.sqlite.SQLiteStatement; @@ -50,6 +51,7 @@ import com.bumptech.glide.load.engine.DiskCacheStrategy; import com.bumptech.glide.load.resource.drawable.GlideDrawable; import com.bumptech.glide.request.RequestListener; import com.bumptech.glide.request.target.Target; +import com.google.android.material.button.MaterialButton; import org.fox.ttrss.Application; import org.fox.ttrss.CommonActivity; @@ -487,14 +489,14 @@ public class OfflineHeadlinesFragment extends Fragment implements OnItemClickLis public TextView titleView; public TextView feedTitleView; - public ImageView markedView; - public ImageView publishedView; + public MaterialButton markedView; + public MaterialButton publishedView; public TextView excerptView; public ImageView flavorImageView; public TextView authorView; public TextView dateView; public CheckBox selectionBoxView; - public ImageView menuButtonView; + public MaterialButton menuButtonView; public ViewGroup flavorImageHolder; public ProgressBar flavorImageLoadingBar; public View headlineFooter; @@ -504,7 +506,7 @@ public class OfflineHeadlinesFragment extends Fragment implements OnItemClickLis public View flavorImageOverflow; public View headlineHeader; public ImageView attachmentsView; - public ImageView scoreView; + public MaterialButton scoreView; public ArticleViewHolder(View v) { @@ -791,6 +793,9 @@ public class OfflineHeadlinesFragment extends Fragment implements OnItemClickLis TypedValue tvAccent = new TypedValue(); m_activity.getTheme().resolveAttribute(R.attr.colorAccent, tvAccent, true); + TypedValue tvPrimary = new TypedValue(); + m_activity.getTheme().resolveAttribute(R.attr.colorPrimary, tvPrimary, true); + if (holder.attachmentsView != null) { holder.attachmentsView.setVisibility(View.GONE); } @@ -806,12 +811,12 @@ public class OfflineHeadlinesFragment extends Fragment implements OnItemClickLis m_activity.getTheme().resolveAttribute(marked ? R.attr.ic_star : R.attr.ic_star_outline, tv, true); - holder.markedView.setImageResource(tv.resourceId); + holder.markedView.setIconResource(tv.resourceId); if (marked) - holder.markedView.setColorFilter(tvAccent.data); + holder.markedView.setIconTint(ColorStateList.valueOf(tvAccent.data)); else - holder.markedView.setColorFilter(null); + holder.markedView.setIconTint(ColorStateList.valueOf(tvPrimary.data)); holder.markedView.setOnClickListener(new OnClickListener() { @@ -837,12 +842,12 @@ public class OfflineHeadlinesFragment extends Fragment implements OnItemClickLis m_activity.getTheme().resolveAttribute(published ? R.attr.ic_checkbox_marked : R.attr.ic_rss_box, tv, true); - holder.publishedView.setImageResource(tv.resourceId); + holder.publishedView.setIconResource(tv.resourceId); if (published) - holder.publishedView.setColorFilter(tvAccent.data); + holder.publishedView.setIconTint(ColorStateList.valueOf(tvAccent.data)); else - holder.publishedView.setColorFilter(null); + holder.publishedView.setIconTint(ColorStateList.valueOf(tvPrimary.data)); holder.publishedView.setOnClickListener(new OnClickListener() { diff --git a/org.fox.ttrss/src/main/res/layout/headlines_row.xml b/org.fox.ttrss/src/main/res/layout/headlines_row.xml index 2e997e2c..f2057b8f 100755 --- a/org.fox.ttrss/src/main/res/layout/headlines_row.xml +++ b/org.fox.ttrss/src/main/res/layout/headlines_row.xml @@ -1,6 +1,7 @@ @@ -226,7 +227,8 @@ android:textSize="12sp" android:textStyle="italic" /> - + app:icon="?ic_action_trending_flat" /> - + app:icon="?ic_attachment" /> - + app:icon="?ic_star_outline" /> - + app:icon="?ic_rss_box" /> - + app:icon="?ic_dots_vertical" /> diff --git a/org.fox.ttrss/src/main/res/layout/headlines_row_compact.xml b/org.fox.ttrss/src/main/res/layout/headlines_row_compact.xml index d139313e..6375b574 100755 --- a/org.fox.ttrss/src/main/res/layout/headlines_row_compact.xml +++ b/org.fox.ttrss/src/main/res/layout/headlines_row_compact.xml @@ -2,6 +2,7 @@ - + app:icon="?ic_star_outline" /> diff --git a/org.fox.ttrss/src/main/res/layout/headlines_row_selected_compact.xml b/org.fox.ttrss/src/main/res/layout/headlines_row_selected_compact.xml index 2e449dbb..da2401eb 100755 --- a/org.fox.ttrss/src/main/res/layout/headlines_row_selected_compact.xml +++ b/org.fox.ttrss/src/main/res/layout/headlines_row_selected_compact.xml @@ -2,6 +2,7 @@ - + app:icon="?ic_star_outline" /> diff --git a/org.fox.ttrss/src/main/res/layout/headlines_row_selected_unread_compact.xml b/org.fox.ttrss/src/main/res/layout/headlines_row_selected_unread_compact.xml index 024eb7cf..3b6436fe 100755 --- a/org.fox.ttrss/src/main/res/layout/headlines_row_selected_unread_compact.xml +++ b/org.fox.ttrss/src/main/res/layout/headlines_row_selected_unread_compact.xml @@ -2,6 +2,7 @@ - + app:icon="?ic_star_outline" /> diff --git a/org.fox.ttrss/src/main/res/layout/headlines_row_unread.xml b/org.fox.ttrss/src/main/res/layout/headlines_row_unread.xml index ba70bb89..aafad9a8 100755 --- a/org.fox.ttrss/src/main/res/layout/headlines_row_unread.xml +++ b/org.fox.ttrss/src/main/res/layout/headlines_row_unread.xml @@ -1,6 +1,7 @@ - + app:icon="?ic_action_trending_flat" /> - + app:icon="?ic_attachment" /> - + app:icon="?ic_star_outline" /> - + app:icon="?ic_rss_box" /> - + app:icon="?ic_dots_vertical" /> diff --git a/org.fox.ttrss/src/main/res/layout/toolbar.xml b/org.fox.ttrss/src/main/res/layout/toolbar.xml index f5fb7654..94aa1eec 100755 --- a/org.fox.ttrss/src/main/res/layout/toolbar.xml +++ b/org.fox.ttrss/src/main/res/layout/toolbar.xml @@ -5,8 +5,8 @@ android:id="@+id/toolbar" android:elevation="4dp" app:layout_scrollFlags="scroll|enterAlways" - android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" - app:popupTheme="@style/ThemeOverlay.AppCompat.Light" + android:theme="@style/ThemeOverlay.Material3.Dark.ActionBar" + app:popupTheme="@style/ThemeOverlay.Material3.Light" android:layout_height="wrap_content" android:layout_width="match_parent" android:minHeight="?attr/actionBarSize" diff --git a/org.fox.ttrss/src/main/res/values-night-v21/style.xml b/org.fox.ttrss/src/main/res/values-night-v21/style.xml deleted file mode 100644 index c154ed8a..00000000 --- a/org.fox.ttrss/src/main/res/values-night-v21/style.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/org.fox.ttrss/src/main/res/values-v21/style.xml b/org.fox.ttrss/src/main/res/values-v21/style.xml deleted file mode 100755 index 3e26f96f..00000000 --- a/org.fox.ttrss/src/main/res/values-v21/style.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/org.fox.ttrss/src/main/res/values/style.xml b/org.fox.ttrss/src/main/res/values/style.xml index 033a9492..41b0a3ae 100755 --- a/org.fox.ttrss/src/main/res/values/style.xml +++ b/org.fox.ttrss/src/main/res/values/style.xml @@ -1,6 +1,6 @@ - - - - - - - - \ No newline at end of file -- cgit v1.2.3-54-g00ecf