From d596417b0462c5ef9f909a206bc42c9de6f8fd69 Mon Sep 17 00:00:00 2001 From: tomerf Date: Fri, 23 Jun 2017 20:36:31 +0300 Subject: [PATCH] Added watched indicator for movies and tv shows lists (#412) --- .../ui/sections/video/MovieListFragment.java | 25 ++++++++++++++++++- .../ui/sections/video/TVShowListFragment.java | 23 ++++++++++++++++- app/src/main/res/layout/grid_item_movie.xml | 11 ++++++++ app/src/main/res/layout/grid_item_tvshow.xml | 11 ++++++++ 4 files changed, 68 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/org/xbmc/kore/ui/sections/video/MovieListFragment.java b/app/src/main/java/org/xbmc/kore/ui/sections/video/MovieListFragment.java index 4a132e7..63f8f63 100644 --- a/app/src/main/java/org/xbmc/kore/ui/sections/video/MovieListFragment.java +++ b/app/src/main/java/org/xbmc/kore/ui/sections/video/MovieListFragment.java @@ -20,6 +20,7 @@ import android.app.Activity; import android.content.Context; import android.content.SharedPreferences; import android.content.res.Resources; +import android.content.res.TypedArray; import android.database.Cursor; import android.net.Uri; import android.preference.PreferenceManager; @@ -272,6 +273,7 @@ public class MovieListFragment extends AbstractCursorListFragment { MediaContract.Movies.RUNTIME, MediaContract.Movies.RATING, MediaContract.Movies.TAGLINE, + MediaContract.Movies.PLAYCOUNT, }; @@ -292,15 +294,27 @@ public class MovieListFragment extends AbstractCursorListFragment { final int RUNTIME = 6; final int RATING = 7; final int TAGLINE = 8; + final int PLAYCOUNT = 9; } - private static class MoviesAdapter extends CursorAdapter { + private class MoviesAdapter extends CursorAdapter { private HostManager hostManager; private int artWidth, artHeight; + private int themeAccentColor; public MoviesAdapter(Context context) { super(context, null, false); + + // Get the default accent color + Resources.Theme theme = context.getTheme(); + TypedArray styledAttributes = theme.obtainStyledAttributes(new int[] { + R.attr.colorAccent + }); + + themeAccentColor = styledAttributes.getColor(styledAttributes.getIndex(0), getResources().getColor(R.color.accent_default)); + styledAttributes.recycle(); + this.hostManager = HostManager.getInstance(context); // Get the art dimensions @@ -324,6 +338,7 @@ public class MovieListFragment extends AbstractCursorListFragment { viewHolder.titleView = (TextView)view.findViewById(R.id.title); viewHolder.detailsView = (TextView)view.findViewById(R.id.details); viewHolder.durationView = (TextView)view.findViewById(R.id.duration); + viewHolder.checkmarkView = (ImageView)view.findViewById(R.id.checkmark); viewHolder.artView = (ImageView)view.findViewById(R.id.art); view.setTag(viewHolder); @@ -366,6 +381,13 @@ public class MovieListFragment extends AbstractCursorListFragment { viewHolder.dataHolder.getTitle(), viewHolder.artView, artWidth, artHeight); + if (cursor.getInt(MovieListQuery.PLAYCOUNT) > 0) { + viewHolder.checkmarkView.setVisibility(View.VISIBLE); + viewHolder.checkmarkView.setColorFilter(themeAccentColor); + } else { + viewHolder.checkmarkView.setVisibility(View.INVISIBLE); + } + if (Utils.isLollipopOrLater()) { viewHolder.artView.setTransitionName("a" + viewHolder.dataHolder.getId()); } @@ -379,6 +401,7 @@ public class MovieListFragment extends AbstractCursorListFragment { TextView titleView; TextView detailsView; TextView durationView; + ImageView checkmarkView; ImageView artView; AbstractInfoFragment.DataHolder dataHolder = new AbstractInfoFragment.DataHolder(0); diff --git a/app/src/main/java/org/xbmc/kore/ui/sections/video/TVShowListFragment.java b/app/src/main/java/org/xbmc/kore/ui/sections/video/TVShowListFragment.java index f5c0bff..eff2a3d 100644 --- a/app/src/main/java/org/xbmc/kore/ui/sections/video/TVShowListFragment.java +++ b/app/src/main/java/org/xbmc/kore/ui/sections/video/TVShowListFragment.java @@ -20,6 +20,7 @@ import android.app.Activity; import android.content.Context; import android.content.SharedPreferences; import android.content.res.Resources; +import android.content.res.TypedArray; import android.database.Cursor; import android.net.Uri; import android.preference.PreferenceManager; @@ -292,13 +293,24 @@ public class TVShowListFragment extends AbstractCursorListFragment { final int GENRES = 13; } - private static class TVShowsAdapter extends CursorAdapter { + private class TVShowsAdapter extends CursorAdapter { private HostManager hostManager; private int artWidth, artHeight; + private int themeAccentColor; public TVShowsAdapter(Context context) { super(context, null, false); + + // Get the default accent color + Resources.Theme theme = context.getTheme(); + TypedArray styledAttributes = theme.obtainStyledAttributes(new int[] { + R.attr.colorAccent + }); + + themeAccentColor = styledAttributes.getColor(styledAttributes.getIndex(0), getResources().getColor(R.color.accent_default)); + styledAttributes.recycle(); + this.hostManager = HostManager.getInstance(context); // Get the art dimensions @@ -322,6 +334,7 @@ public class TVShowListFragment extends AbstractCursorListFragment { viewHolder.titleView = (TextView)view.findViewById(R.id.title); viewHolder.detailsView = (TextView)view.findViewById(R.id.details); viewHolder.premieredView = (TextView)view.findViewById(R.id.premiered); + viewHolder.checkmarkView = (ImageView)view.findViewById(R.id.checkmark); viewHolder.artView = (ImageView)view.findViewById(R.id.art); view.setTag(viewHolder); @@ -358,6 +371,13 @@ public class TVShowListFragment extends AbstractCursorListFragment { viewHolder.dataHolder.getTitle(), viewHolder.artView, artWidth, artHeight); + if (episode - watchedEpisodes == 0) { + viewHolder.checkmarkView.setVisibility(View.VISIBLE); + viewHolder.checkmarkView.setColorFilter(themeAccentColor); + } else { + viewHolder.checkmarkView.setVisibility(View.INVISIBLE); + } + if (Utils.isLollipopOrLater()) { viewHolder.artView.setTransitionName("a" + viewHolder.dataHolder.getId()); } @@ -371,6 +391,7 @@ public class TVShowListFragment extends AbstractCursorListFragment { TextView titleView; TextView detailsView; TextView premieredView; + ImageView checkmarkView; ImageView artView; AbstractInfoFragment.DataHolder dataHolder = new AbstractInfoFragment.DataHolder(0); diff --git a/app/src/main/res/layout/grid_item_movie.xml b/app/src/main/res/layout/grid_item_movie.xml index b40e847..3da7be1 100644 --- a/app/src/main/res/layout/grid_item_movie.xml +++ b/app/src/main/res/layout/grid_item_movie.xml @@ -45,6 +45,7 @@ android:layout_toEndOf="@id/art" android:layout_alignTop="@id/art" style="@style/TextAppearance.Medialist.Title"/> + + + diff --git a/app/src/main/res/layout/grid_item_tvshow.xml b/app/src/main/res/layout/grid_item_tvshow.xml index 34c4847..8b3f5e5 100644 --- a/app/src/main/res/layout/grid_item_tvshow.xml +++ b/app/src/main/res/layout/grid_item_tvshow.xml @@ -44,6 +44,7 @@ android:layout_toEndOf="@id/art" android:layout_alignTop="@id/art" style="@style/TextAppearance.Medialist.Title"/> + + + \ No newline at end of file