Added watched indicator for movies and tv shows lists (#412)

This commit is contained in:
tomerf 2017-06-23 20:36:31 +03:00 committed by Synced Synapse
parent 70935d5e3f
commit d596417b04
4 changed files with 68 additions and 2 deletions

View File

@ -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);

View File

@ -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);

View File

@ -45,6 +45,7 @@
android:layout_toEndOf="@id/art"
android:layout_alignTop="@id/art"
style="@style/TextAppearance.Medialist.Title"/>
<TextView
android:id="@+id/details"
android:layout_width="match_parent"
@ -63,6 +64,16 @@
android:layout_below="@id/details"
android:layout_alignParentBottom="true"
style="@style/TextAppearance.Medialist.OtherInfo"/>
<ImageView
android:id="@+id/checkmark"
android:layout_width="@dimen/default_icon_size"
android:layout_height="@dimen/default_icon_size"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:padding="@dimen/default_icon_padding"
android:src="?attr/iconSeen"
android:contentDescription="@string/seen"/>
</RelativeLayout>
</android.support.v7.widget.CardView>

View File

@ -44,6 +44,7 @@
android:layout_toEndOf="@id/art"
android:layout_alignTop="@id/art"
style="@style/TextAppearance.Medialist.Title"/>
<TextView
android:id="@+id/details"
android:layout_width="match_parent"
@ -62,5 +63,15 @@
android:layout_below="@id/details"
android:layout_alignParentBottom="true"
style="@style/TextAppearance.Medialist.OtherInfo"/>
<ImageView
android:id="@+id/checkmark"
android:layout_width="@dimen/default_icon_size"
android:layout_height="@dimen/default_icon_size"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:padding="@dimen/default_icon_padding"
android:src="?attr/iconSeen"
android:contentDescription="@string/seen"/>
</RelativeLayout>
</android.support.v7.widget.CardView>