From 1eb7d389f2c31d35b4105a07a7962b1f43cdd7d9 Mon Sep 17 00:00:00 2001 From: Peter Serwylo Date: Wed, 30 Nov 2016 22:18:43 +1100 Subject: [PATCH] Refactor setProgress code for the header view. Each call site of the `getHeaderView()` method needed to do a null check and then it would call `setProgress()`. This has been replaced with two methods `setProgress()` and `clearProgress()` to make it a bit less repetative and harder to accidentally get a NPE in the future by invoking `getHeaderView()` incorrectly. --- .../java/org/fdroid/fdroid/AppDetails2.java | 38 +++++-------------- .../views/AppDetailsRecyclerViewAdapter.java | 10 ++++- 2 files changed, 18 insertions(+), 30 deletions(-) diff --git a/app/src/main/java/org/fdroid/fdroid/AppDetails2.java b/app/src/main/java/org/fdroid/fdroid/AppDetails2.java index f6fbae4a6..a335ac250 100644 --- a/app/src/main/java/org/fdroid/fdroid/AppDetails2.java +++ b/app/src/main/java/org/fdroid/fdroid/AppDetails2.java @@ -303,15 +303,11 @@ public class AppDetails2 extends AppCompatActivity implements ShareChooserDialog public void onReceive(Context context, Intent intent) { switch (intent.getAction()) { case Downloader.ACTION_STARTED: - if (mAdapter.getHeaderView() != null) { - mAdapter.getHeaderView().setProgress(-1, -1, R.string.download_pending); - } + mAdapter.setProgress(-1, -1, R.string.download_pending); break; case Downloader.ACTION_PROGRESS: - if (mAdapter.getHeaderView() != null) { - mAdapter.getHeaderView().setProgress(intent.getIntExtra(Downloader.EXTRA_BYTES_READ, -1), - intent.getIntExtra(Downloader.EXTRA_TOTAL_BYTES, -1), 0); - } + mAdapter.setProgress(intent.getIntExtra(Downloader.EXTRA_BYTES_READ, -1), + intent.getIntExtra(Downloader.EXTRA_TOTAL_BYTES, -1), 0); break; case Downloader.ACTION_COMPLETE: // Starts the install process once the download is complete. @@ -341,21 +337,15 @@ public class AppDetails2 extends AppCompatActivity implements ShareChooserDialog public void onReceive(Context context, Intent intent) { switch (intent.getAction()) { case Installer.ACTION_INSTALL_STARTED: - if (mAdapter.getHeaderView() != null) { - mAdapter.getHeaderView().setProgress(-1, -1, R.string.installing); - } + mAdapter.setProgress(-1, -1, R.string.installing); break; case Installer.ACTION_INSTALL_COMPLETE: - if (mAdapter.getHeaderView() != null) { - mAdapter.getHeaderView().setProgress(0, 0, 0); // Remove - } + mAdapter.clearProgress(); unregisterInstallReceiver(); onAppChanged(); break; case Installer.ACTION_INSTALL_INTERRUPTED: - if (mAdapter.getHeaderView() != null) { - mAdapter.getHeaderView().setProgress(0, 0, 0); // Remove - } + mAdapter.clearProgress(); onAppChanged(); String errorMessage = @@ -398,21 +388,15 @@ public class AppDetails2 extends AppCompatActivity implements ShareChooserDialog public void onReceive(Context context, Intent intent) { switch (intent.getAction()) { case Installer.ACTION_UNINSTALL_STARTED: - if (mAdapter.getHeaderView() != null) { - mAdapter.getHeaderView().setProgress(-1, -1, R.string.uninstalling); - } + mAdapter.setProgress(-1, -1, R.string.uninstalling); break; case Installer.ACTION_UNINSTALL_COMPLETE: - if (mAdapter.getHeaderView() != null) { - mAdapter.getHeaderView().setProgress(0, 0, 0); // Remove - } + mAdapter.clearProgress(); onAppChanged(); unregisterUninstallReceiver(); break; case Installer.ACTION_UNINSTALL_INTERRUPTED: - if (mAdapter.getHeaderView() != null) { - mAdapter.getHeaderView().setProgress(0, 0, 0); // Remove - } + mAdapter.clearProgress(); String errorMessage = intent.getStringExtra(Installer.EXTRA_ERROR_MESSAGE); @@ -477,9 +461,7 @@ public class AppDetails2 extends AppCompatActivity implements ShareChooserDialog */ private void cleanUpFinishedDownload() { mActiveDownloadUrlString = null; - if (mAdapter.getHeaderView() != null) { - mAdapter.getHeaderView().setProgress(0, 0, 0); // Remove - } + mAdapter.clearProgress(); unregisterDownloaderReceiver(); } diff --git a/app/src/main/java/org/fdroid/fdroid/views/AppDetailsRecyclerViewAdapter.java b/app/src/main/java/org/fdroid/fdroid/views/AppDetailsRecyclerViewAdapter.java index a3a4b282e..53c69d76c 100644 --- a/app/src/main/java/org/fdroid/fdroid/views/AppDetailsRecyclerViewAdapter.java +++ b/app/src/main/java/org/fdroid/fdroid/views/AppDetailsRecyclerViewAdapter.java @@ -160,8 +160,14 @@ public class AppDetailsRecyclerViewAdapter uriIsSetAndCanBeOpened(mApp.flattrID); } - public HeaderViewHolder getHeaderView() { - return mHeaderView; + public void clearProgress() { + setProgress(0, 0, 0); + } + + public void setProgress(int bytesDownloaded, int totalBytes, int resIdString) { + if (mHeaderView != null) { + mHeaderView.setProgress(bytesDownloaded, totalBytes, resIdString); + } } @Override