Add option to remove downloaded files when clearing finished downloads

This commit is contained in:
Kamil Szczęk 2019-10-11 15:07:51 +02:00
parent 7e17bdf369
commit 707e4f7167
4 changed files with 33 additions and 3 deletions

View file

@ -19,6 +19,7 @@ import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.MimeTypeMap;
import android.widget.CheckBox;
import android.widget.ImageView;
import android.widget.PopupMenu;
import android.widget.TextView;
@ -557,7 +558,16 @@ public class MissionAdapter extends Adapter<ViewHolder> implements Handler.Callb
);
}
public void clearFinishedDownloads() {
public void clearFinishedDownloads(boolean delete) {
if (delete && mIterator.hasFinishedMissions()) {
for(int i=0; i<mIterator.getOldListSize(); i++) {
FinishedMission mission = mIterator.getItem(i).mission instanceof FinishedMission ? (FinishedMission) mIterator.getItem(i).mission : null;
if (mission != null) {
mDownloadManager.deleteMission(mission);
mContext.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, mission.storage.getUri()));
}
}
}
mDownloadManager.forgetFinishedDownloads();
applyChanges();
}

View file

@ -17,6 +17,7 @@ import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.CheckBox;
import android.widget.Toast;
import androidx.annotation.NonNull;
@ -189,9 +190,14 @@ public class MissionsFragment extends Fragment {
return true;
case R.id.clear_list:
AlertDialog.Builder prompt = new AlertDialog.Builder(mContext);
View checkBoxView = View.inflate(this.getContext(), R.layout.delete_files_checkbox, null);
prompt.setTitle(R.string.clear_finished_download);
prompt.setMessage(R.string.confirm_prompt);
prompt.setPositiveButton(android.R.string.ok, (dialog, which) -> mAdapter.clearFinishedDownloads());
prompt.setView(checkBoxView);
prompt.setPositiveButton(android.R.string.ok, (dialog, which) -> {
CheckBox checkBox = checkBoxView.findViewById(R.id.delete_files_checkbox);
mAdapter.clearFinishedDownloads(checkBox.isChecked());
});
prompt.setNegativeButton(R.string.cancel, null);
prompt.create().show();
return true;