diff --git a/app/src/main/java/com/magnatune/eyecreate/companionformagnatune/adapters/AlbumsAdapter.java b/app/src/main/java/com/magnatune/eyecreate/companionformagnatune/adapters/AlbumsAdapter.java index e456fb139c1f8e25c9fa87d9d02f8b509c782511..b0ebbd51c6a141848c39503b56e64eaa6215defe 100644 --- a/app/src/main/java/com/magnatune/eyecreate/companionformagnatune/adapters/AlbumsAdapter.java +++ b/app/src/main/java/com/magnatune/eyecreate/companionformagnatune/adapters/AlbumsAdapter.java @@ -31,7 +31,7 @@ public class AlbumsAdapter extends RealmBasedRecyclerViewAdapter { + + public ArtistsAdapter(Context context, RealmResults realmResults, boolean automaticUpdate, boolean animateResults, boolean addSectionHeaders, String headerColumnName) { + super(context, realmResults, automaticUpdate, animateResults, addSectionHeaders, headerColumnName); + } + + @Override + public ArtistViewHolder onCreateRealmViewHolder(ViewGroup viewGroup, int i) { + View v = inflater.inflate(R.layout.listitem_artist,viewGroup,false); + ArtistViewHolder holder = new ArtistViewHolder(v); + return holder; + } + + @Override + public void onBindRealmViewHolder(ArtistViewHolder artistViewHolder, int i) { + artistViewHolder.artistName.setText(realmResults.get(i).getArtistname()); + } +} diff --git a/app/src/main/java/com/magnatune/eyecreate/companionformagnatune/fragments/AlbumsFragment.java b/app/src/main/java/com/magnatune/eyecreate/companionformagnatune/fragments/AlbumsFragment.java index 92adf231b70eebc513e58168183e4d90663dfbd5..bba4a3fae57e75edd2b772094d421b1f513ad6a6 100644 --- a/app/src/main/java/com/magnatune/eyecreate/companionformagnatune/fragments/AlbumsFragment.java +++ b/app/src/main/java/com/magnatune/eyecreate/companionformagnatune/fragments/AlbumsFragment.java @@ -49,17 +49,9 @@ public class AlbumsFragment extends Fragment { } }); recyclerView.setAdapter(new AlbumsAdapter(getActivity(), db.where(Album.class).findAllSorted("albumname"), true, true, null)); - recyclerView.post(new Runnable() { - @Override - public void run() { - if(db.where(Album.class).findAll().size()<1) { - recyclerView.setRefreshing(true); - triggerDBUpdate(); - } else if(!MagnatuneDBManager.isProcessingDone()) { - recyclerView.setRefreshing(true); - } - } - }); + if (db.where(Album.class).findAll().size() < 1) { + triggerDBUpdate(); + } return recyclerView; } @@ -82,6 +74,12 @@ public class AlbumsFragment extends Fragment { @Override public void onResume() { super.onResume(); + recyclerView.post(new Runnable() { + @Override + public void run() { + recyclerView.setRefreshing(!MagnatuneDBManager.isProcessingDone()); + } + }); LocalBroadcastManager.getInstance(getActivity()).registerReceiver(refreshDone,new IntentFilter(MagnatuneDBManager.ACTION_DB_UPDATE_DONE)); } diff --git a/app/src/main/java/com/magnatune/eyecreate/companionformagnatune/fragments/ArtistFragment.java b/app/src/main/java/com/magnatune/eyecreate/companionformagnatune/fragments/ArtistFragment.java index 4e7ef9241f8708168df5d4e22bde5a5d1c6a0d1c..610ba0d13f57fd7d91fe2915c026667e20e3d5ed 100644 --- a/app/src/main/java/com/magnatune/eyecreate/companionformagnatune/fragments/ArtistFragment.java +++ b/app/src/main/java/com/magnatune/eyecreate/companionformagnatune/fragments/ArtistFragment.java @@ -1,19 +1,91 @@ package com.magnatune.eyecreate.companionformagnatune.fragments; +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; +import android.content.IntentFilter; +import android.os.AsyncTask; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; +import android.support.v4.content.LocalBroadcastManager; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import com.magnatune.eyecreate.companionformagnatune.R; +import com.magnatune.eyecreate.companionformagnatune.adapters.ArtistsAdapter; +import com.magnatune.eyecreate.companionformagnatune.model.Artist; +import com.magnatune.eyecreate.companionformagnatune.model.MagnatuneDBManager; + +import co.moonmonkeylabs.realmrecyclerview.RealmRecyclerView; +import io.realm.Realm; public class ArtistFragment extends Fragment { + + Realm db; + RealmRecyclerView recyclerView; + BroadcastReceiver refreshDone = new BroadcastReceiver() { + @Override + public void onReceive(Context context, Intent intent) { + recyclerView.setRefreshing(false); + } + }; + @Nullable @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - View v = inflater.inflate(R.layout.fragment_artists,container,false); - return v; + recyclerView = (RealmRecyclerView) inflater.inflate(R.layout.fragment_artists,container,false); + recyclerView.setOnRefreshListener(new RealmRecyclerView.OnRefreshListener() { + @Override + public void onRefresh() { + triggerDBUpdate(); + } + }); + recyclerView.setAdapter(new ArtistsAdapter(getActivity(), db.where(Artist.class).findAllSorted("artistname"), true, true,true,"artistname")); + if (db.where(Artist.class).findAll().size() < 1) { + triggerDBUpdate(); + } + return recyclerView; + } + + private void triggerDBUpdate() { + new AsyncTask() { + @Override + protected Void doInBackground(Void... voids) { + MagnatuneDBManager.updateDB(); + return null; + } + }.execute(); + } + + @Override + public void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + db = MagnatuneDBManager.getAlbumDB(); + } + + @Override + public void onDestroy() { + super.onDestroy(); + db.close(); + } + + @Override + public void onResume() { + super.onResume(); + recyclerView.post(new Runnable() { + @Override + public void run() { + recyclerView.setRefreshing(!MagnatuneDBManager.isProcessingDone()); + } + }); + LocalBroadcastManager.getInstance(getActivity()).registerReceiver(refreshDone, new IntentFilter(MagnatuneDBManager.ACTION_DB_UPDATE_DONE)); + } + + @Override + public void onPause() { + super.onPause(); + LocalBroadcastManager.getInstance(getActivity()).unregisterReceiver(refreshDone); } } diff --git a/app/src/main/java/com/magnatune/eyecreate/companionformagnatune/model/Album.java b/app/src/main/java/com/magnatune/eyecreate/companionformagnatune/model/Album.java index 33c54f950593be41228f21bc41c3eb45d6ae829b..fea93f6f6590956911e6130e0ec90185a4610afa 100644 --- a/app/src/main/java/com/magnatune/eyecreate/companionformagnatune/model/Album.java +++ b/app/src/main/java/com/magnatune/eyecreate/companionformagnatune/model/Album.java @@ -11,11 +11,9 @@ public class Album extends RealmObject { @PrimaryKey private String albumsku; private String albumname; - private String artist; - private String artistdesc; + private Artist artist; private String cover_small; private String cover_large; - private String artistphoto; private int year; private String album_notes; private String homepage; @@ -40,22 +38,14 @@ public class Album extends RealmObject { this.albumname = albumname; } - public String getArtist() { + public Artist getArtist() { return artist; } - public void setArtist(String artist) { + public void setArtist(Artist artist) { this.artist = artist; } - public String getArtistdesc() { - return artistdesc; - } - - public void setArtistdesc(String artistdesc) { - this.artistdesc = artistdesc; - } - public String getCover_small() { return cover_small; } @@ -72,14 +62,6 @@ public class Album extends RealmObject { this.cover_large = cover_large; } - public String getArtistphoto() { - return artistphoto; - } - - public void setArtistphoto(String artistphoto) { - this.artistphoto = artistphoto; - } - public int getYear() { return year; } diff --git a/app/src/main/java/com/magnatune/eyecreate/companionformagnatune/model/Artist.java b/app/src/main/java/com/magnatune/eyecreate/companionformagnatune/model/Artist.java new file mode 100644 index 0000000000000000000000000000000000000000..ce6a53abb18f0e0914fe79d207aa1417dc78f955 --- /dev/null +++ b/app/src/main/java/com/magnatune/eyecreate/companionformagnatune/model/Artist.java @@ -0,0 +1,35 @@ +package com.magnatune.eyecreate.companionformagnatune.model; + +import io.realm.RealmObject; +import io.realm.annotations.PrimaryKey; + +public class Artist extends RealmObject { + @PrimaryKey + private String artistname; + private String artistdesc; + private String artistphoto; + + public String getArtistname() { + return artistname; + } + + public void setArtistname(String artistname) { + this.artistname = artistname; + } + + public String getArtistdesc() { + return artistdesc; + } + + public void setArtistdesc(String artistdesc) { + this.artistdesc = artistdesc; + } + + public String getArtistphoto() { + return artistphoto; + } + + public void setArtistphoto(String artistphoto) { + this.artistphoto = artistphoto; + } +} diff --git a/app/src/main/java/com/magnatune/eyecreate/companionformagnatune/model/MagnatuneDBManager.java b/app/src/main/java/com/magnatune/eyecreate/companionformagnatune/model/MagnatuneDBManager.java index 9277b2cb382700bb63b206765e2f648958c0d5f1..373d782d94f6b40981a0488f431bf2677f9a2473 100644 --- a/app/src/main/java/com/magnatune/eyecreate/companionformagnatune/model/MagnatuneDBManager.java +++ b/app/src/main/java/com/magnatune/eyecreate/companionformagnatune/model/MagnatuneDBManager.java @@ -100,15 +100,17 @@ public class MagnatuneDBManager { } public static Album xmlAlbumToDBAlbum(com.magnatune.eyecreate.companionformagnatune.model.xml.Album album) { + Artist artist = new Artist(); + artist.setArtistname(album.artist); + artist.setArtistdesc(album.artistdesc); + artist.setArtistphoto(album.artistphoto); Album entry = new Album(); entry.setAlbumsku(album.albumsku); entry.setAlbumname(album.albumname); - entry.setArtist(album.artist); - entry.setArtistdesc(album.artistdesc); + entry.setArtist(artist); entry.setAlbum_notes(album.album_notes); entry.setCover_small(album.cover_small); entry.setCover_large(album.cover_small.replace("200", "800")); - entry.setArtistphoto(album.artistphoto); entry.setYear(album.year); entry.setHomepage(album.home); entry.setMp3genre(album.mp3genre); diff --git a/app/src/main/java/com/magnatune/eyecreate/companionformagnatune/viewholders/ArtistViewHolder.java b/app/src/main/java/com/magnatune/eyecreate/companionformagnatune/viewholders/ArtistViewHolder.java new file mode 100644 index 0000000000000000000000000000000000000000..27e7a95d346cfe09eb79fea8d5f7faf99d341aec --- /dev/null +++ b/app/src/main/java/com/magnatune/eyecreate/companionformagnatune/viewholders/ArtistViewHolder.java @@ -0,0 +1,18 @@ +package com.magnatune.eyecreate.companionformagnatune.viewholders; + +import android.view.View; +import android.widget.TextView; + +import com.magnatune.eyecreate.companionformagnatune.R; + +import io.realm.RealmViewHolder; + +public class ArtistViewHolder extends RealmViewHolder { + + public TextView artistName; + + public ArtistViewHolder(View itemView) { + super(itemView); + artistName = (TextView) itemView.findViewById(R.id.artist_name); + } +} diff --git a/app/src/main/res/layout/fragment_artists.xml b/app/src/main/res/layout/fragment_artists.xml index f6680ba8af9c78cc1c3737dac960223a684d0f02..68369833f8eb3c9a74152cb3035f9d713cd1e203 100644 --- a/app/src/main/res/layout/fragment_artists.xml +++ b/app/src/main/res/layout/fragment_artists.xml @@ -4,6 +4,6 @@ android:layout_height="match_parent" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/artist_list" - app:rrvLayoutType="LinearLayout" + app:rrvLayoutType="LinearLayoutWithHeaders" app:rrvIsRefreshable="true" xmlns:android="http://schemas.android.com/apk/res/android" /> \ No newline at end of file diff --git a/app/src/main/res/layout/listitem_artist.xml b/app/src/main/res/layout/listitem_artist.xml new file mode 100644 index 0000000000000000000000000000000000000000..837227b532c0e433f1614f1a05f82924a4fad5e5 --- /dev/null +++ b/app/src/main/res/layout/listitem_artist.xml @@ -0,0 +1,13 @@ + + + + \ No newline at end of file