Added watched indicator for movies and tv shows lists (#412)
This commit is contained in:
parent
70935d5e3f
commit
d596417b04
|
@ -20,6 +20,7 @@ import android.app.Activity;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.SharedPreferences;
|
import android.content.SharedPreferences;
|
||||||
import android.content.res.Resources;
|
import android.content.res.Resources;
|
||||||
|
import android.content.res.TypedArray;
|
||||||
import android.database.Cursor;
|
import android.database.Cursor;
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import android.preference.PreferenceManager;
|
import android.preference.PreferenceManager;
|
||||||
|
@ -272,6 +273,7 @@ public class MovieListFragment extends AbstractCursorListFragment {
|
||||||
MediaContract.Movies.RUNTIME,
|
MediaContract.Movies.RUNTIME,
|
||||||
MediaContract.Movies.RATING,
|
MediaContract.Movies.RATING,
|
||||||
MediaContract.Movies.TAGLINE,
|
MediaContract.Movies.TAGLINE,
|
||||||
|
MediaContract.Movies.PLAYCOUNT,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -292,15 +294,27 @@ public class MovieListFragment extends AbstractCursorListFragment {
|
||||||
final int RUNTIME = 6;
|
final int RUNTIME = 6;
|
||||||
final int RATING = 7;
|
final int RATING = 7;
|
||||||
final int TAGLINE = 8;
|
final int TAGLINE = 8;
|
||||||
|
final int PLAYCOUNT = 9;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static class MoviesAdapter extends CursorAdapter {
|
private class MoviesAdapter extends CursorAdapter {
|
||||||
|
|
||||||
private HostManager hostManager;
|
private HostManager hostManager;
|
||||||
private int artWidth, artHeight;
|
private int artWidth, artHeight;
|
||||||
|
private int themeAccentColor;
|
||||||
|
|
||||||
public MoviesAdapter(Context context) {
|
public MoviesAdapter(Context context) {
|
||||||
super(context, null, false);
|
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);
|
this.hostManager = HostManager.getInstance(context);
|
||||||
|
|
||||||
// Get the art dimensions
|
// Get the art dimensions
|
||||||
|
@ -324,6 +338,7 @@ public class MovieListFragment extends AbstractCursorListFragment {
|
||||||
viewHolder.titleView = (TextView)view.findViewById(R.id.title);
|
viewHolder.titleView = (TextView)view.findViewById(R.id.title);
|
||||||
viewHolder.detailsView = (TextView)view.findViewById(R.id.details);
|
viewHolder.detailsView = (TextView)view.findViewById(R.id.details);
|
||||||
viewHolder.durationView = (TextView)view.findViewById(R.id.duration);
|
viewHolder.durationView = (TextView)view.findViewById(R.id.duration);
|
||||||
|
viewHolder.checkmarkView = (ImageView)view.findViewById(R.id.checkmark);
|
||||||
viewHolder.artView = (ImageView)view.findViewById(R.id.art);
|
viewHolder.artView = (ImageView)view.findViewById(R.id.art);
|
||||||
|
|
||||||
view.setTag(viewHolder);
|
view.setTag(viewHolder);
|
||||||
|
@ -366,6 +381,13 @@ public class MovieListFragment extends AbstractCursorListFragment {
|
||||||
viewHolder.dataHolder.getTitle(),
|
viewHolder.dataHolder.getTitle(),
|
||||||
viewHolder.artView, artWidth, artHeight);
|
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()) {
|
if (Utils.isLollipopOrLater()) {
|
||||||
viewHolder.artView.setTransitionName("a" + viewHolder.dataHolder.getId());
|
viewHolder.artView.setTransitionName("a" + viewHolder.dataHolder.getId());
|
||||||
}
|
}
|
||||||
|
@ -379,6 +401,7 @@ public class MovieListFragment extends AbstractCursorListFragment {
|
||||||
TextView titleView;
|
TextView titleView;
|
||||||
TextView detailsView;
|
TextView detailsView;
|
||||||
TextView durationView;
|
TextView durationView;
|
||||||
|
ImageView checkmarkView;
|
||||||
ImageView artView;
|
ImageView artView;
|
||||||
|
|
||||||
AbstractInfoFragment.DataHolder dataHolder = new AbstractInfoFragment.DataHolder(0);
|
AbstractInfoFragment.DataHolder dataHolder = new AbstractInfoFragment.DataHolder(0);
|
||||||
|
|
|
@ -20,6 +20,7 @@ import android.app.Activity;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.SharedPreferences;
|
import android.content.SharedPreferences;
|
||||||
import android.content.res.Resources;
|
import android.content.res.Resources;
|
||||||
|
import android.content.res.TypedArray;
|
||||||
import android.database.Cursor;
|
import android.database.Cursor;
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import android.preference.PreferenceManager;
|
import android.preference.PreferenceManager;
|
||||||
|
@ -292,13 +293,24 @@ public class TVShowListFragment extends AbstractCursorListFragment {
|
||||||
final int GENRES = 13;
|
final int GENRES = 13;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static class TVShowsAdapter extends CursorAdapter {
|
private class TVShowsAdapter extends CursorAdapter {
|
||||||
|
|
||||||
private HostManager hostManager;
|
private HostManager hostManager;
|
||||||
private int artWidth, artHeight;
|
private int artWidth, artHeight;
|
||||||
|
private int themeAccentColor;
|
||||||
|
|
||||||
public TVShowsAdapter(Context context) {
|
public TVShowsAdapter(Context context) {
|
||||||
super(context, null, false);
|
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);
|
this.hostManager = HostManager.getInstance(context);
|
||||||
|
|
||||||
// Get the art dimensions
|
// Get the art dimensions
|
||||||
|
@ -322,6 +334,7 @@ public class TVShowListFragment extends AbstractCursorListFragment {
|
||||||
viewHolder.titleView = (TextView)view.findViewById(R.id.title);
|
viewHolder.titleView = (TextView)view.findViewById(R.id.title);
|
||||||
viewHolder.detailsView = (TextView)view.findViewById(R.id.details);
|
viewHolder.detailsView = (TextView)view.findViewById(R.id.details);
|
||||||
viewHolder.premieredView = (TextView)view.findViewById(R.id.premiered);
|
viewHolder.premieredView = (TextView)view.findViewById(R.id.premiered);
|
||||||
|
viewHolder.checkmarkView = (ImageView)view.findViewById(R.id.checkmark);
|
||||||
viewHolder.artView = (ImageView)view.findViewById(R.id.art);
|
viewHolder.artView = (ImageView)view.findViewById(R.id.art);
|
||||||
|
|
||||||
view.setTag(viewHolder);
|
view.setTag(viewHolder);
|
||||||
|
@ -358,6 +371,13 @@ public class TVShowListFragment extends AbstractCursorListFragment {
|
||||||
viewHolder.dataHolder.getTitle(),
|
viewHolder.dataHolder.getTitle(),
|
||||||
viewHolder.artView, artWidth, artHeight);
|
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()) {
|
if (Utils.isLollipopOrLater()) {
|
||||||
viewHolder.artView.setTransitionName("a" + viewHolder.dataHolder.getId());
|
viewHolder.artView.setTransitionName("a" + viewHolder.dataHolder.getId());
|
||||||
}
|
}
|
||||||
|
@ -371,6 +391,7 @@ public class TVShowListFragment extends AbstractCursorListFragment {
|
||||||
TextView titleView;
|
TextView titleView;
|
||||||
TextView detailsView;
|
TextView detailsView;
|
||||||
TextView premieredView;
|
TextView premieredView;
|
||||||
|
ImageView checkmarkView;
|
||||||
ImageView artView;
|
ImageView artView;
|
||||||
|
|
||||||
AbstractInfoFragment.DataHolder dataHolder = new AbstractInfoFragment.DataHolder(0);
|
AbstractInfoFragment.DataHolder dataHolder = new AbstractInfoFragment.DataHolder(0);
|
||||||
|
|
|
@ -45,6 +45,7 @@
|
||||||
android:layout_toEndOf="@id/art"
|
android:layout_toEndOf="@id/art"
|
||||||
android:layout_alignTop="@id/art"
|
android:layout_alignTop="@id/art"
|
||||||
style="@style/TextAppearance.Medialist.Title"/>
|
style="@style/TextAppearance.Medialist.Title"/>
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/details"
|
android:id="@+id/details"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
|
@ -63,6 +64,16 @@
|
||||||
android:layout_below="@id/details"
|
android:layout_below="@id/details"
|
||||||
android:layout_alignParentBottom="true"
|
android:layout_alignParentBottom="true"
|
||||||
style="@style/TextAppearance.Medialist.OtherInfo"/>
|
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>
|
</RelativeLayout>
|
||||||
|
|
||||||
</android.support.v7.widget.CardView>
|
</android.support.v7.widget.CardView>
|
||||||
|
|
|
@ -44,6 +44,7 @@
|
||||||
android:layout_toEndOf="@id/art"
|
android:layout_toEndOf="@id/art"
|
||||||
android:layout_alignTop="@id/art"
|
android:layout_alignTop="@id/art"
|
||||||
style="@style/TextAppearance.Medialist.Title"/>
|
style="@style/TextAppearance.Medialist.Title"/>
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/details"
|
android:id="@+id/details"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
|
@ -62,5 +63,15 @@
|
||||||
android:layout_below="@id/details"
|
android:layout_below="@id/details"
|
||||||
android:layout_alignParentBottom="true"
|
android:layout_alignParentBottom="true"
|
||||||
style="@style/TextAppearance.Medialist.OtherInfo"/>
|
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>
|
</RelativeLayout>
|
||||||
</android.support.v7.widget.CardView>
|
</android.support.v7.widget.CardView>
|
Loading…
Reference in New Issue