From 41abda5031cbd7984cc2e263c3ce08ee29548584 Mon Sep 17 00:00:00 2001 From: danijoo Date: Sun, 1 Nov 2015 13:09:05 +0100 Subject: [PATCH] favoritelist --- app/build.gradle | 14 +++ app/src/main/AndroidManifest.xml | 5 ++ .../udacityproject1/MainActivity.java | 1 + .../udacityproject1/MovieDetailsFragment.java | 23 +++++ .../favorites/FavoriteColumns.java | 21 +++++ .../favorites/FavoriteDatabase.java | 12 +++ .../favorites/FavoriteProvider.java | 24 +++++ .../favorites/FavoriteProviderHelper.java | 54 ++++++++++++ .../AbstractMovieListAdapter.java} | 28 +++--- .../movielist/CursorMovieListAdapter.java | 82 ++++++++++++++++++ .../movielist/MovieListAdapter.java | 30 +++++++ .../{ => movielist}/MovieListFragment.java | 37 ++++++-- .../udacityproject1/tmdbapi/Movie.java | 14 +++ .../res/drawable-hdpi/ic_action_star_0.png | Bin 0 -> 765 bytes .../res/drawable-hdpi/ic_action_star_10.png | Bin 0 -> 539 bytes .../res/drawable-ldpi/ic_action_star_0.png | Bin 0 -> 381 bytes .../res/drawable-ldpi/ic_action_star_10.png | Bin 0 -> 301 bytes .../res/drawable-mdpi/ic_action_star_0.png | Bin 0 -> 497 bytes .../res/drawable-mdpi/ic_action_star_10.png | Bin 0 -> 385 bytes .../res/drawable-tvdpi/ic_action_star_0.png | Bin 0 -> 1134 bytes .../res/drawable-tvdpi/ic_action_star_10.png | Bin 0 -> 932 bytes .../res/drawable-xhdpi/ic_action_star_0.png | Bin 0 -> 1083 bytes .../res/drawable-xhdpi/ic_action_star_10.png | Bin 0 -> 737 bytes .../res/drawable-xxhdpi/ic_action_star_0.png | Bin 0 -> 1652 bytes .../res/drawable-xxhdpi/ic_action_star_10.png | Bin 0 -> 1114 bytes .../res/drawable-xxxhdpi/ic_action_star_0.png | Bin 0 -> 4731 bytes .../drawable-xxxhdpi/ic_action_star_10.png | Bin 0 -> 3181 bytes app/src/main/res/menu/movie_details_menu.xml | 1 + app/src/main/res/menu/movie_list_menu.xml | 5 +- 29 files changed, 327 insertions(+), 24 deletions(-) create mode 100644 app/src/main/java/net/headlezz/udacityproject1/favorites/FavoriteColumns.java create mode 100644 app/src/main/java/net/headlezz/udacityproject1/favorites/FavoriteDatabase.java create mode 100644 app/src/main/java/net/headlezz/udacityproject1/favorites/FavoriteProvider.java create mode 100644 app/src/main/java/net/headlezz/udacityproject1/favorites/FavoriteProviderHelper.java rename app/src/main/java/net/headlezz/udacityproject1/{MovieListAdapter.java => movielist/AbstractMovieListAdapter.java} (69%) create mode 100644 app/src/main/java/net/headlezz/udacityproject1/movielist/CursorMovieListAdapter.java create mode 100644 app/src/main/java/net/headlezz/udacityproject1/movielist/MovieListAdapter.java rename app/src/main/java/net/headlezz/udacityproject1/{ => movielist}/MovieListFragment.java (80%) create mode 100644 app/src/main/res/drawable-hdpi/ic_action_star_0.png create mode 100644 app/src/main/res/drawable-hdpi/ic_action_star_10.png create mode 100644 app/src/main/res/drawable-ldpi/ic_action_star_0.png create mode 100644 app/src/main/res/drawable-ldpi/ic_action_star_10.png create mode 100644 app/src/main/res/drawable-mdpi/ic_action_star_0.png create mode 100644 app/src/main/res/drawable-mdpi/ic_action_star_10.png create mode 100644 app/src/main/res/drawable-tvdpi/ic_action_star_0.png create mode 100644 app/src/main/res/drawable-tvdpi/ic_action_star_10.png create mode 100644 app/src/main/res/drawable-xhdpi/ic_action_star_0.png create mode 100644 app/src/main/res/drawable-xhdpi/ic_action_star_10.png create mode 100644 app/src/main/res/drawable-xxhdpi/ic_action_star_0.png create mode 100644 app/src/main/res/drawable-xxhdpi/ic_action_star_10.png create mode 100644 app/src/main/res/drawable-xxxhdpi/ic_action_star_0.png create mode 100644 app/src/main/res/drawable-xxxhdpi/ic_action_star_10.png diff --git a/app/build.gradle b/app/build.gradle index b30c442..e0234bd 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,5 +1,16 @@ apply plugin: 'com.android.application' +apply plugin: 'android-apt' +buildscript { + repositories { + mavenCentral() + } + + dependencies { + classpath 'com.android.tools.build:gradle:1.3.0' + classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8' + } +} android { compileSdkVersion 23 buildToolsVersion "23.0.1" @@ -39,4 +50,7 @@ dependencies { compile 'com.squareup.retrofit:converter-gson:2.0.0-beta2' compile 'com.jakewharton:butterknife:7.0.1' + + apt 'net.simonvt.schematic:schematic-compiler:0.6.3' + compile 'net.simonvt.schematic:schematic:0.6.3' } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index df57679..827d45a 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -20,6 +20,11 @@ + + diff --git a/app/src/main/java/net/headlezz/udacityproject1/MainActivity.java b/app/src/main/java/net/headlezz/udacityproject1/MainActivity.java index 726c58d..988e6cf 100644 --- a/app/src/main/java/net/headlezz/udacityproject1/MainActivity.java +++ b/app/src/main/java/net/headlezz/udacityproject1/MainActivity.java @@ -5,6 +5,7 @@ import android.support.v4.app.FragmentManager; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; +import net.headlezz.udacityproject1.movielist.MovieListFragment; import net.headlezz.udacityproject1.tmdbapi.Movie; /** diff --git a/app/src/main/java/net/headlezz/udacityproject1/MovieDetailsFragment.java b/app/src/main/java/net/headlezz/udacityproject1/MovieDetailsFragment.java index 9e18515..f9514a2 100644 --- a/app/src/main/java/net/headlezz/udacityproject1/MovieDetailsFragment.java +++ b/app/src/main/java/net/headlezz/udacityproject1/MovieDetailsFragment.java @@ -19,6 +19,7 @@ import android.widget.ImageView; import android.widget.TextView; import android.widget.Toast; +import net.headlezz.udacityproject1.favorites.FavoriteProviderHelper; import net.headlezz.udacityproject1.tmdbapi.Movie; import net.headlezz.udacityproject1.tmdbapi.TMDBApi; import net.headlezz.udacityproject1.tmdbapi.Video; @@ -51,6 +52,9 @@ public class MovieDetailsFragment extends Fragment implements Callback 0) + return true; + return false; + } + + public void addFavorite(Movie movie) { + ContentValues values = new ContentValues(); + values.put(FavoriteColumns._ID, movie.getId()); + values.put(FavoriteColumns.TITLE, movie.getTitle()); + values.put(FavoriteColumns.OVERVIEW, movie.getOverview()); + values.put(FavoriteColumns.POSTERPATH, movie.getPosterPath()); + values.put(FavoriteColumns.AVRATING, movie.getAvRating()); + values.put(FavoriteColumns.RELEASEDATE, movie.getReleaseDate().getTime()); + mResolver.insert(FavoriteProvider.Favorites.FAVORITES_URI, values); + } + + public void removeFavorite(Movie movie) { + mResolver.delete(FavoriteProvider.Favorites.FAVORITES_URI, FavoriteColumns._ID + "=?", new String[]{String.valueOf(movie.getId())}); + } + +} diff --git a/app/src/main/java/net/headlezz/udacityproject1/MovieListAdapter.java b/app/src/main/java/net/headlezz/udacityproject1/movielist/AbstractMovieListAdapter.java similarity index 69% rename from app/src/main/java/net/headlezz/udacityproject1/MovieListAdapter.java rename to app/src/main/java/net/headlezz/udacityproject1/movielist/AbstractMovieListAdapter.java index e0bd2e7..1527882 100644 --- a/app/src/main/java/net/headlezz/udacityproject1/MovieListAdapter.java +++ b/app/src/main/java/net/headlezz/udacityproject1/movielist/AbstractMovieListAdapter.java @@ -1,4 +1,4 @@ -package net.headlezz.udacityproject1; +package net.headlezz.udacityproject1.movielist; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; @@ -6,20 +6,20 @@ import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; +import net.headlezz.udacityproject1.MovieNavigation; +import net.headlezz.udacityproject1.R; import net.headlezz.udacityproject1.tmdbapi.Movie; -import net.headlezz.udacityproject1.tmdbapi.MovieList; import net.headlezz.udacityproject1.tmdbapi.TMDBApi; -import java.util.List; - -public class MovieListAdapter extends RecyclerView.Adapter{ +/** + * Abstract class for shwoing a list of movie posters + */ +public abstract class AbstractMovieListAdapter extends RecyclerView.Adapter { MovieNavigation mMovieNavigation; - List mMovies; - public MovieListAdapter(MovieNavigation mn, MovieList movieList) { + public AbstractMovieListAdapter(MovieNavigation mn) { mMovieNavigation = mn; - mMovies = movieList.getList(); } @Override @@ -30,13 +30,14 @@ public class MovieListAdapter extends RecyclerView.Adapter mMovies; + + public MovieListAdapter(MovieNavigation mn, MovieList movieList) { + super(mn); + mMovies = movieList.getList(); + } + + @Override + public int getItemCount() { + return mMovies.size(); + } + + @Override + protected Movie getMovieForPosition(int position) { + return mMovies.get(position); + } +} diff --git a/app/src/main/java/net/headlezz/udacityproject1/MovieListFragment.java b/app/src/main/java/net/headlezz/udacityproject1/movielist/MovieListFragment.java similarity index 80% rename from app/src/main/java/net/headlezz/udacityproject1/MovieListFragment.java rename to app/src/main/java/net/headlezz/udacityproject1/movielist/MovieListFragment.java index 1e242c7..5ddc32c 100644 --- a/app/src/main/java/net/headlezz/udacityproject1/MovieListFragment.java +++ b/app/src/main/java/net/headlezz/udacityproject1/movielist/MovieListFragment.java @@ -1,7 +1,8 @@ -package net.headlezz.udacityproject1; +package net.headlezz.udacityproject1.movielist; import android.content.Context; import android.content.res.Configuration; +import android.database.Cursor; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v7.widget.GridLayoutManager; @@ -16,6 +17,9 @@ import android.view.ViewGroup; import android.widget.ProgressBar; import android.widget.Toast; +import net.headlezz.udacityproject1.MovieNavigation; +import net.headlezz.udacityproject1.R; +import net.headlezz.udacityproject1.favorites.FavoriteProviderHelper; import net.headlezz.udacityproject1.tmdbapi.MovieList; import net.headlezz.udacityproject1.tmdbapi.TMDBApi; @@ -42,7 +46,11 @@ public class MovieListFragment extends Fragment implements Callback { * The currently selected sorting order of the list * @see TMDBApi */ - private int mSortingOrder = TMDBApi.SORT_ORDER_MOST_POPULAR; + private int mSortingOrder = SORT_ORDER_MOST_POPULAR; + + public static final int SORT_ORDER_MOST_POPULAR = TMDBApi.SORT_ORDER_MOST_POPULAR; + public static final int SORT_ORDER_HIGHEST_RATED = TMDBApi.SORT_ORDER_HIGHEST_RATED; + public static final int SORT_ORDER_FAVORITES = 3; private MovieList mMovieList; @@ -120,11 +128,15 @@ public class MovieListFragment extends Fragment implements Callback { public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.action_sort_popularity: - mSortingOrder = TMDBApi.SORT_ORDER_MOST_POPULAR; + mSortingOrder = SORT_ORDER_MOST_POPULAR; loadMovieList(); return true; case R.id.action_sort_rating: - mSortingOrder = TMDBApi.SORT_ORDER_HIGHEST_RATED; + mSortingOrder = SORT_ORDER_HIGHEST_RATED; + loadMovieList(); + return true; + case R.id.action_sort_favorites: + mSortingOrder = SORT_ORDER_FAVORITES; loadMovieList(); return true; default: @@ -138,9 +150,18 @@ public class MovieListFragment extends Fragment implements Callback { */ private void loadMovieList() { stopLoadingMovies(); // stop any running query before starting a new one - mProgressBar.setVisibility(View.VISIBLE); - mMovieListCall = TMDBApi.discoverMovies(mSortingOrder, getString(R.string.api_key)); - mMovieListCall.enqueue(this); + if(mSortingOrder != SORT_ORDER_FAVORITES) { + mProgressBar.setVisibility(View.VISIBLE); + mMovieListCall = TMDBApi.discoverMovies(mSortingOrder, getString(R.string.api_key)); + mMovieListCall.enqueue(this); + } else + loadMovieListFromFavorites(); + } + + private void loadMovieListFromFavorites() { + // TODO async? + Cursor cursor = new FavoriteProviderHelper(getContext().getContentResolver()).getAllFavorites(); + mMovieGridView.setAdapter(new CursorMovieListAdapter(cursor,(MovieNavigation) getActivity())); } @Override @@ -190,7 +211,7 @@ public class MovieListFragment extends Fragment implements Callback { @Override public void onSaveInstanceState(Bundle outState) { outState.putInt("sort_order", mSortingOrder); - if(mMovieList != null) + if(mMovieList != null && mSortingOrder != SORT_ORDER_FAVORITES) outState.putParcelable("movielist", mMovieList); super.onSaveInstanceState(outState); } diff --git a/app/src/main/java/net/headlezz/udacityproject1/tmdbapi/Movie.java b/app/src/main/java/net/headlezz/udacityproject1/tmdbapi/Movie.java index 32f4ea6..b18d49a 100644 --- a/app/src/main/java/net/headlezz/udacityproject1/tmdbapi/Movie.java +++ b/app/src/main/java/net/headlezz/udacityproject1/tmdbapi/Movie.java @@ -1,10 +1,13 @@ package net.headlezz.udacityproject1.tmdbapi; +import android.database.Cursor; import android.os.Parcel; import android.os.Parcelable; import com.google.gson.annotations.SerializedName; +import net.headlezz.udacityproject1.favorites.FavoriteColumns; + import java.util.Date; /** @@ -55,6 +58,17 @@ public class Movie implements Parcelable { return id; } + public static Movie fromCurrentCursorPosition(Cursor cursor) { + Movie movie = new Movie(); + movie.id = cursor.getLong(cursor.getColumnIndex(FavoriteColumns._ID)); + movie.title = cursor.getString(cursor.getColumnIndex(FavoriteColumns.TITLE)); + movie.posterPath = cursor.getString(cursor.getColumnIndex(FavoriteColumns.POSTERPATH)); + movie.overview = cursor.getString(cursor.getColumnIndex(FavoriteColumns.OVERVIEW)); + movie.releaseDate = new Date(cursor.getLong(cursor.getColumnIndex(FavoriteColumns.RELEASEDATE))); + movie.avRating = cursor.getDouble(cursor.getColumnIndex(FavoriteColumns.AVRATING)); + return movie; + } + /**** Parcelable stuff *****/ @Override diff --git a/app/src/main/res/drawable-hdpi/ic_action_star_0.png b/app/src/main/res/drawable-hdpi/ic_action_star_0.png new file mode 100644 index 0000000000000000000000000000000000000000..77674833ec8ea8be06e74cae282b9b7aca4c5829 GIT binary patch literal 765 zcmV(12V{4%(xMA?p`a)fGn>AHUuih3o9ynHJtMR5c{sZ}v%k;WXHG;25iyyF6|e$U zzzWQ2fl`oavcO$%#8iPbV)A-ss=zt%?BL#! zF*Cjj=Eos;S*wrujq@{|^t_f%FUS0#f-hh#{|1NSIgBQ;bOhV!ssMto03+ZB*s5zD zsAg$>1;svsuV>$q>!h{1C$i1pJBQM!hxAuillQ>#ux8>-4B~=^w1eFAEDCceafkxt z9@4fkZDyDP?F?e6hqU{cc2AfBufS7}X)`I%5|+SJ02iluF5C7gu-he%A{&#Kl$!8o)yW>&3)Yh zqCvRiir6tdB)u}eKVdjylQ$RiU?BPMKm!tRBN}DAGuZEQ9!cg5Yktbi4;0^0ctO#7pvx6jx900000NkvXXu0mjfxYA|G literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-hdpi/ic_action_star_10.png b/app/src/main/res/drawable-hdpi/ic_action_star_10.png new file mode 100644 index 0000000000000000000000000000000000000000..d44cddbc9e23c0d58f9b20d034605f4f6510d71d GIT binary patch literal 539 zcmV+$0_6RPP)(R7qf${EkUg1ZqkAxCCw$1VSWnw57X% z2RtPa*i3hUF_Jt!KzX_fWPlT59`hmvazPoW0nMNXjDRT+1gjtdj=&AE7PO>ZfPJt9 z!t7hqYz6y3E2sk%zzZ_%2u!dgmmOE2+U^Q;nrup^;{X(=x(8@ozm|~vI{OK8*~F#b zP+;JttL(Ze&g1og9RL9~E3K_aKD!NnUxFD2vPG0wO>(E=TY1fJO~Ez82#60l|% z|8Dmco5#CnggxZid3ryO`Ho+t0KL!Ng5DJS2wkxm@B-#U3FNT~7hj~Ga&LQqIy(s&@)8N?J87D0_R9#|+ISO^wrLQ*J-l_>=kMDP=cVBrCR zri+~yC<Uc54?h;m`!G#N{b&1JG1)?@4UO~xUTEi@tYHg#xWflVy-JkA6S`_RpCLS=ui7(E3!gDu#lx3m_wBVF zvbv#&70sHwoKMKKi&UAeH1jWL^3$es$Z6(}5cdUIFeR;;(5x9j3H>GkJ@Vc0Dq~Rhb#?xK b`d+>OxQ^)p-e?Xd00000NkvXXu0mjf1Pr3d literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-ldpi/ic_action_star_10.png b/app/src/main/res/drawable-ldpi/ic_action_star_10.png new file mode 100644 index 0000000000000000000000000000000000000000..237d66c243ea793cd86342abb88f79f1dad9929d GIT binary patch literal 301 zcmV+|0n+}7P)Va3N(;OSq1PV)l zbQHmZVd?T1&G~E@5;Yv0`bnA{+ zp;&iJt&pcy2dKrF=6fa%l$Nkb_d};{pxR{s663 z2H3`wJm?aQy7MYnwLwW*hPtn8B-(cfy;^j n8M>|4D5q>l(SJtK0KfVK#^6aK$$3B900000NkvXXu0mjfyJp+L literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-mdpi/ic_action_star_10.png b/app/src/main/res/drawable-mdpi/ic_action_star_10.png new file mode 100644 index 0000000000000000000000000000000000000000..dc6455cfeecb8ddc36b1e337b98e3a457f487523 GIT binary patch literal 385 zcmV-{0e=38P)AAdO3gvh@WC{z$RKcKmdqUf!Gp=tNvpLe}Omzh|Pdl35fa0bwEB4 z?*rn?K>Qpnu1N(Ty)U5I^&k-Y65{}NAYSsHx&Rb9rKCnd9hEHq0>lC2rh!Nx{!W4A zpu}oKX(9wAyq9EHeh!GGsg(;9fcOdtmTv@NZfchU9V9p)nid7oaS|Lbi`ow00^(mJ zIN%1g9pH>7i~YeNCqYdIG-9z}9T3X^u>laDz#<<;O$Y2pGWb3a`=H5#s^WAYeut!P zDzzNI2E^Z>X`lm|9&o7@1L8$c2V9|+1FV7g5D;sVkYgO66_5xu93TwDjAYdHppfGm f?HP?afDi@%IbXr96~RH100000NkvXXu0mjf0T`3~ literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-tvdpi/ic_action_star_0.png b/app/src/main/res/drawable-tvdpi/ic_action_star_0.png new file mode 100644 index 0000000000000000000000000000000000000000..85f7bee5115639a4952d4473ceb14cf939ac4968 GIT binary patch literal 1134 zcmV-!1d;oRP)I(`XJr`B}ybHA|4=kA%eG{qCrqu z)PM(K9wLe&sGw%OPZTlwqJKc}_l1fKd63y;SLR^{K4zw;tLp3O>gwuANl9MGD|vbI z3I>B6fcHs8qtS(+r>Dt=LZPmWjg56+8$`3c>PG@n-pqsGDTsan zKOwyw@|j-qW-7!+K=27Tt~;c!K|bg;Z{|R3I|Sc=@n9`@1^FTdk>(|D_J`PYa2|96 zA@CaVM->uYA({c9auEZ?JnOv^&-=g~1~HmGKCdjI1CXlc&TGgA{5((4^mAX&dsd>o z)jYKZpHh%w&X6twcq|N|hhP)Wxh*n0_oMA1ILC8e`esPRA@4VxKGXl#W=zwG;s6FZ zIIb`uT9ho$Tr#sNLjBin}o#*+W1k41JOxJMJ-5Xn7!r^eB zzP{e?imXT?G#%j`7&rpXf(W<;9)RcI1Ndlo0rnu%&1pa$L&qq-T~-JJ^)pRzEmw=V% ztOD1-FYuPOwN@vjx?Lb?7Gu@sfh#B}U}|#YaYMQz=2HI=)q?1Pf~7XSS9u>xdwP2+Bgxt#oQ=-MT8P+~#(Ue#LsP0nwZO>UL+O;Z zDn*yVp(8rxp{oJh;C-THg!ZQ?rYReRWwrnsFjTB!F3GgwaS@7mgURVay^iFsX=P6|D*QIxA?3UDM#8#)1D0~R10XKDHl76 z4OLk;!Lx){{yGC$p`rL3r|niHor)LQia?$1WbbY79?7>HBb>$iW(|_IAu;bjF%r$i z*ctE&8*m3~jb2Ko%p_N&2ZAbeku(1V|*3?tf|A{ZWo;YwBU zO5n8ZlBcvif{r{-wu7F^yoi2Gkc;!R2*FtmI+5r00xQvKF;;6{RAH=IG|xGmR@i9a z&9`z+iT;9!bHAIgIJNj(fuV2UhY>D^Odl00|ELu*=`+YGG1aBNH9*=5UDcg!n0DpQ z!x(wTeZLa7>P;;amz7w+D*8*7HCDwvPOS)5dfB4=-ljRG^G(ZHN_kk-7}%)6$DJr= z8J`ul{y6AsK9i|_i2HV$i2d2~|51}y@`~a514suDWCUl&*8l(j07*qoM6N<$f?kav A;s5{u literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-tvdpi/ic_action_star_10.png b/app/src/main/res/drawable-tvdpi/ic_action_star_10.png new file mode 100644 index 0000000000000000000000000000000000000000..ff55be8380c14fe9c17fb54e523b47d530c1436c GIT binary patch literal 932 zcmV;V16%xwP)9L6zqBK`QMQ)-^k4;2G(5j#yiGrlZF03{Z zBrSxHXyK-s9%S^eqAATDWLmy?|2 z#Geuhg-U?`NycKaZD5YC$%ez>+3|S%HaG&&QonjLh$m|u$9W6UCy=i6t2bvt@B&2p zK@X&NLcZ8<-pq$s4FvCl5ikhpR>+6^=FRDfO9=Kkza#;=Aise{6!^)T3n11iPdb03 zAM#BK3BM36f=~m*UYRGyWEk9G5la~p@XH}O38`<+-_pywy^NXWwYNsM)(}t%Qp_0& zMF5Yjgixm)qVX~SE;42wV~aE=X@1aj22B5Nn;C5`m`oz#-Bu+Z3#;3arqx}@_4xD3u>Qwv%oZ>M|1EYn2LZQJ()4A}u08Fy$h zm4xXSHl2f}{~09rSe=lc?g1%a!h9wl1aBN~MZ}*&ax-?z(0?_y%2e` z6C1VI%Dz0*L_1VVHCw3;JXVXb+E3WbBV&twOrcL z(vlaAMwK&HW8ivGkpX7E44^Cr7~hmyxL_L3IuW#6uOT9~3%C}vC*V-Hvnt+e)-XDiaG zJG0n!K99s;o3CG0m?5SFQHk?RuQbGZ<16cZlCLYUr$=%DDg1^@)yp zuwRRJohZFbzzW--3;ITTGSv^RU#DK&&%XbTnvz0i_dfQRP7Z0000$sNy literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/ic_action_star_0.png b/app/src/main/res/drawable-xhdpi/ic_action_star_0.png new file mode 100644 index 0000000000000000000000000000000000000000..fd4a180f574a1b187a0395cdde51179b3c7c4ace GIT binary patch literal 1083 zcmV-B1jPG^P)j|}fdxfcWCZpi2r*K^3WVr`k@T_$rUZSkAdRTZvZBC<`k*Y8y+347 z1VvKW!z@ySo}xk7i;^BDNl$Y+m;OViA)Q^D-Mu?=FZ{rrJKjC#KXdOn=iUv`G%du* zgeU=&07?KQfD%9npaf6?1c)Re)X4%|A?7$$fOze9yWms-_CkOTBGzdFgcB{=pSH_s z0<6&fZf}V`P7e5H)2q*2p|@>{=_I^Dv?HH z5^ISagd3@@Xd6w&auKg_?{#7yQ9!IF77(+MNQvSp${zv~Pt#|{(hDDo)28k8^Bk_c&AueJ*izm6# zi}j)qQQ;&O%{t6cl7>`v4CZVvKg?TEH4Y;Zh!kQTv7Y$K z>?`rq7H?PbTJ|MwKRIkh98nLOeqy@%Y!M8{8lbmJSO5d%yqM$fU`tzf_7}Um>hEMC zhy`e50G!W6xD@RrG11>)P*ii@VL&rNpucL0t?U8RVND1~9*|7DhaqBTC*8-+_eEsT zn+SXT0-Xqn!lsdh!8{*1FQQB}b6!-GJ!MIS2N0D$j1XgyTj8rs=`syEjf|0WQPHZJqR|5|5cP%`9Yg;M{Ov zC;$5#_br!I02e#=OEvTjA&wjN2lpUn5W7vcSf41avQYK$F^;0YOjZFBS*{+zO4l62 zuR(6ZX=90-jWa{NRU1x=vvB>XtODf2z#4o`Fg)27h|yIAH<%(Of z;5>{g#f}l*E$7 z4SVvU4%lQ-EfCAzF1+k0w@8L07?KQfD%9npal32egUbnDaYE15S0J`002ovPDHLkV1kGM B<$nMG literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/ic_action_star_10.png b/app/src/main/res/drawable-xhdpi/ic_action_star_10.png new file mode 100644 index 0000000000000000000000000000000000000000..c9f8032cbb747ea7b54883b45cdbf5b232a782e6 GIT binary patch literal 737 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxxhdpi/ic_action_star_0.png b/app/src/main/res/drawable-xxxhdpi/ic_action_star_0.png new file mode 100644 index 0000000000000000000000000000000000000000..12252d267ae05bd17aaf4d913ababe46265fd78a GIT binary patch literal 4731 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 wfiB;fAiO-MLH9gf2%1G4z0N9Z2W&i*H literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxxhdpi/ic_action_star_10.png b/app/src/main/res/drawable-xxxhdpi/ic_action_star_10.png new file mode 100644 index 0000000000000000000000000000000000000000..3c987bac8a79d278a4635668dc6504c8578b5a71 GIT binary patch literal 3181 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 N_wJhN)#)PR{sSo;4qpHO literal 0 HcmV?d00001 diff --git a/app/src/main/res/menu/movie_details_menu.xml b/app/src/main/res/menu/movie_details_menu.xml index 44c027e..979805a 100644 --- a/app/src/main/res/menu/movie_details_menu.xml +++ b/app/src/main/res/menu/movie_details_menu.xml @@ -2,4 +2,5 @@ + \ No newline at end of file diff --git a/app/src/main/res/menu/movie_list_menu.xml b/app/src/main/res/menu/movie_list_menu.xml index f3d4645..5fbf231 100644 --- a/app/src/main/res/menu/movie_list_menu.xml +++ b/app/src/main/res/menu/movie_list_menu.xml @@ -1,6 +1,7 @@ - - + + +