diff --git a/app/src/main/java/us/shandian/giga/service/DownloadManager.java b/app/src/main/java/us/shandian/giga/service/DownloadManager.java index c2bba7396..b168ef474 100644 --- a/app/src/main/java/us/shandian/giga/service/DownloadManager.java +++ b/app/src/main/java/us/shandian/giga/service/DownloadManager.java @@ -666,9 +666,9 @@ public class DownloadManager { continue; if (mission.running) - paused = true; - else running = true; + else + paused = true; } } diff --git a/app/src/main/java/us/shandian/giga/ui/adapter/MissionAdapter.java b/app/src/main/java/us/shandian/giga/ui/adapter/MissionAdapter.java index ebc6e94c2..e53ab4f1f 100644 --- a/app/src/main/java/us/shandian/giga/ui/adapter/MissionAdapter.java +++ b/app/src/main/java/us/shandian/giga/ui/adapter/MissionAdapter.java @@ -122,14 +122,8 @@ public class MissionAdapter extends Adapter { break; } - if (mStartButton != null && mPauseButton != null) switch (msg.what) { - case DownloadManagerService.MESSAGE_DELETED: - case DownloadManagerService.MESSAGE_ERROR: - case DownloadManagerService.MESSAGE_FINISHED: - case DownloadManagerService.MESSAGE_PAUSED: - checkMasterButtonsVisibility(); - break; - } + if (mStartButton != null && mPauseButton != null) + checkMasterButtonsVisibility(); } }; @@ -163,8 +157,7 @@ public class MissionAdapter extends Adapter { mPendingDownloadsItems.remove(h); if (mPendingDownloadsItems.size() < 1) { setAutoRefresh(false); - if (mStartButton != null) mStartButton.setVisible(false); - if (mPauseButton != null) mPauseButton.setVisible(false); + checkMasterButtonsVisibility(); } } @@ -664,11 +657,11 @@ public class MissionAdapter extends Adapter { if (mEmptyMessage.getVisibility() != flag) mEmptyMessage.setVisibility(flag); } - private void checkMasterButtonsVisibility() { + public void checkMasterButtonsVisibility() { boolean[] state = mIterator.hasValidPendingMissions(); - mStartButton.setVisible(state[0]); - mPauseButton.setVisible(state[1]); + mPauseButton.setVisible(state[0]); + mStartButton.setVisible(state[1]); } public void ensurePausedMissions() { diff --git a/app/src/main/java/us/shandian/giga/ui/fragment/MissionsFragment.java b/app/src/main/java/us/shandian/giga/ui/fragment/MissionsFragment.java index f8cecbed9..2a93d20f4 100644 --- a/app/src/main/java/us/shandian/giga/ui/fragment/MissionsFragment.java +++ b/app/src/main/java/us/shandian/giga/ui/fragment/MissionsFragment.java @@ -7,6 +7,7 @@ import android.content.Context; import android.content.Intent; import android.content.ServiceConnection; import android.content.SharedPreferences; +import android.content.res.Configuration; import android.os.Bundle; import android.os.IBinder; import android.preference.PreferenceManager; @@ -138,6 +139,7 @@ public class MissionsFragment extends Fragment { * deprecated in API level 23, * but must remain to allow compatibility with api<23 */ + @SuppressWarnings("deprecation") @Override public void onAttach(Activity activity) { super.onAttach(activity); @@ -169,6 +171,15 @@ public class MissionsFragment extends Fragment { if (mAdapter != null) setAdapterButtons(); + int max = getMaxActionButtons() - 1 /* grid button */; + if (max >= 2) { + // show start/pause downloads buttons in pair to avoid confusions + mStart.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS); + mPause.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS); + + if (max > 3) mClear.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS); + } + super.onPrepareOptionsMenu(menu); } @@ -249,6 +260,23 @@ public class MissionsFragment extends Fragment { ); } + public int getMaxActionButtons() { + Configuration configuration = mContext.getResources().getConfiguration(); + int widthDp = configuration.screenWidthDp; + int heightDp = configuration.screenHeightDp; + int smallest = configuration.smallestScreenWidthDp; + + if (smallest > 600 || widthDp > 600) { + return 5; + } else if (widthDp >= 500 || widthDp > 480 && heightDp > 640) { + return 4; + } else if (widthDp >= 360) { + return 3; + } else { + return 2; + } + } + @Override public void onSaveInstanceState(@NonNull Bundle outState) { super.onSaveInstanceState(outState); @@ -273,6 +301,7 @@ public class MissionsFragment extends Fragment { } mBinder.addMissionEventListener(mAdapter.getMessenger()); + mAdapter.checkMasterButtonsVisibility(); } if (mBinder != null) mBinder.enableNotifications(false); } diff --git a/app/src/main/res/menu/download_menu.xml b/app/src/main/res/menu/download_menu.xml index 4e4549957..935399169 100644 --- a/app/src/main/res/menu/download_menu.xml +++ b/app/src/main/res/menu/download_menu.xml @@ -1,29 +1,31 @@ - + tools:ignore="AlwaysShowAction" + app:showAsAction="always" /> + app:showAsAction="never" /> + app:showAsAction="never" /> + app:showAsAction="never" />