/* * Nextcloud Android client application * * @author Tobias Kaminsky * Copyright (C) 2019 Tobias Kaminsky * Copyright (C) 2019 Nextcloud GmbH * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ package com.owncloud.android.ui.asynctasks; import android.os.AsyncTask; import com.owncloud.android.utils.FileStorageUtils; import java.io.File; /** * Asynchronous task checking if there is space enough to copy all the files chosen to upload into the ownCloud local * folder. Maybe an AsyncTask is not strictly necessary, but who really knows. */ public class CheckAvailableSpaceTask extends AsyncTask { private String[] paths; private CheckAvailableSpaceListener callback; public CheckAvailableSpaceTask(CheckAvailableSpaceListener callback, String[] paths) { this.paths = paths; this.callback = callback; } /** * Updates the UI before trying the movement. */ @Override protected void onPreExecute() { callback.onCheckAvailableSpaceStart(); } /** * Checks the available space. * * @param params boolean flag if storage calculation should be done. * @return 'True' if there is space enough or doesn't have to be calculated */ @Override protected Boolean doInBackground(Boolean... params) { long total = 0; for (int i = 0; paths != null && i < paths.length; i++) { String localPath = paths[i]; File localFile = new File(localPath); total += localFile.length(); } return FileStorageUtils.getUsableSpace() >= total; } @Override protected void onPostExecute(Boolean result) { callback.onCheckAvailableSpaceFinish(result, paths); } public interface CheckAvailableSpaceListener { void onCheckAvailableSpaceStart(); void onCheckAvailableSpaceFinish(boolean hasEnoughSpaceAvailable, String[] filesToUpload); } }