From 02b27615fad9c8299aaa00ed42377705142ddc0d Mon Sep 17 00:00:00 2001 From: Kevin Whitaker Date: Sat, 21 Nov 2015 16:56:07 -0500 Subject: [PATCH] Add in start of artist screen and have screens listed in drawer. Refresh state should be kept even when switching fragments. --- .../companionformagnatune/BrowseActivity.java | 26 ++++++++++++++++++- .../fragments/AlbumsFragment.java | 2 ++ .../fragments/ArtistFragment.java | 6 +++++ .../model/MagnatuneDBManager.java | 7 ++++- app/src/main/res/values/strings.xml | 3 +++ 5 files changed, 42 insertions(+), 2 deletions(-) create mode 100644 app/src/main/java/com/magnatune/eyecreate/companionformagnatune/fragments/ArtistFragment.java diff --git a/app/src/main/java/com/magnatune/eyecreate/companionformagnatune/BrowseActivity.java b/app/src/main/java/com/magnatune/eyecreate/companionformagnatune/BrowseActivity.java index f007064..8c15987 100644 --- a/app/src/main/java/com/magnatune/eyecreate/companionformagnatune/BrowseActivity.java +++ b/app/src/main/java/com/magnatune/eyecreate/companionformagnatune/BrowseActivity.java @@ -9,6 +9,7 @@ import com.heinrichreimersoftware.materialdrawer.DrawerActivity; import com.heinrichreimersoftware.materialdrawer.structure.DrawerItem; import com.heinrichreimersoftware.materialdrawer.structure.DrawerProfile; import com.magnatune.eyecreate.companionformagnatune.fragments.AlbumsFragment; +import com.magnatune.eyecreate.companionformagnatune.fragments.ArtistFragment; import com.magnatune.eyecreate.companionformagnatune.login.MagnatuneAccountManager; public class BrowseActivity extends DrawerActivity { @@ -19,10 +20,33 @@ public class BrowseActivity extends DrawerActivity { setContentView(R.layout.activity_browse); addProfile(new DrawerProfile() .setName(MagnatuneAccountManager.getMagnatuneName()) - .setDescription(MagnatuneAccountManager.isLoggedIn()?getString(R.string.click_to_logout):getString(R.string.click_to_login)) + .setDescription(MagnatuneAccountManager.isLoggedIn() ? getString(R.string.click_to_logout) : getString(R.string.click_to_login)) .setRoundedAvatar((BitmapDrawable) ContextCompat.getDrawable(this, R.drawable.ic_account_white_48dp)) .setBackground(new ColorDrawable(ContextCompat.getColor(this, R.color.primary)))); + addItem(new DrawerItem() + .setTextPrimary(getString(R.string.albums)) + .setOnItemClickListener(new DrawerItem.OnItemClickListener() { + @Override + public void onClick(DrawerItem drawerItem, long l, int i) { + getSupportFragmentManager().beginTransaction() + .replace(R.id.fragment_holder, new AlbumsFragment(), "albums") + .commit(); + closeDrawer(); + } + })); + addItem(new DrawerItem() + .setTextPrimary(getString(R.string.artists)) + .setOnItemClickListener(new DrawerItem.OnItemClickListener() { + @Override + public void onClick(DrawerItem drawerItem, long l, int i) { + getSupportFragmentManager().beginTransaction() + .replace(R.id.fragment_holder,new ArtistFragment(),"artists") + .commit(); + closeDrawer(); + } + })); + if(savedInstanceState == null) { getSupportFragmentManager().beginTransaction() .replace(R.id.fragment_holder,new AlbumsFragment(),"albums") 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 f9f28cb..04928a8 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 @@ -55,6 +55,8 @@ public class AlbumsFragment extends Fragment { if(db.where(Album.class).findAll().size()<1) { recyclerView.setRefreshing(true); triggerDBUpdate(); + } else if(!MagnatuneDBManager.isProcessingDone()) { + recyclerView.setRefreshing(true); } } }); 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 new file mode 100644 index 0000000..7072058 --- /dev/null +++ b/app/src/main/java/com/magnatune/eyecreate/companionformagnatune/fragments/ArtistFragment.java @@ -0,0 +1,6 @@ +package com.magnatune.eyecreate.companionformagnatune.fragments; + +import android.support.v4.app.Fragment; + +public class ArtistFragment extends Fragment { +} 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 ecf3cd5..4322933 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 @@ -23,6 +23,7 @@ public class MagnatuneDBManager { public static final String ACTION_DB_UPDATE_DONE = "dbupdatedone"; private static final String DB_CHECK_PREFS = "dbcheckprefs"; private static final String SP_KEY_DB_HASH = "dbhash"; + private static boolean processingDone = true; public static void updateDB() { //This method should be called on another thread @@ -53,7 +54,7 @@ public class MagnatuneDBManager { try { Response response = MagnatuneCompainionApplication.getDataApi().getAlbumList().execute(); Realm db = getAlbumDB(); - boolean processingDone = false; + processingDone = false; while(!processingDone) { db.beginTransaction(); try { @@ -78,6 +79,10 @@ public class MagnatuneDBManager { LocalBroadcastManager.getInstance(MagnatuneCompainionApplication.getApplication()).sendBroadcast(new Intent(ACTION_DB_UPDATE_DONE)); } + public static boolean isProcessingDone() { + return processingDone; + } + public static Realm getAlbumDB() { //Remember to close each instance when done. return Realm.getInstance(MagnatuneCompainionApplication.getAlbumDBConfig()); diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index c78ee4d..ccfe322 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -4,4 +4,7 @@ Click to Logout Anonymous Invalid + + Artists + Albums -- GitLab