package com.openfarmanager.android.fragments; import android.os.AsyncTask; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; import com.openfarmanager.android.App; import com.openfarmanager.android.R; import com.openfarmanager.android.utils.CustomFormatter; import com.openfarmanager.android.utils.FileUtilsExt; import java.io.File; /** * author: vnamashko */ public class DirectoryDetailsView extends BasePanel { private View mRootView; private View mProgress; private File mSelectedFile; private LoadDataTask mLoadDataTask; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { mRootView = inflater.inflate(R.layout.directory_details, container, false); mProgress = mRootView.findViewById(R.id.loading); postInitialization(); return mRootView; } public void selectFile(final File file) { if (!mIsInitialized || mRootView == null || getActivity() == null || getActivity().isFinishing()) { addToPendingList(new Runnable() { @Override public void run() { selectFile(file); } }); return; } if (file == null) { return; } mRootView.findViewById(R.id.current_path).setBackgroundColor(App.sInstance.getSettings().getMainPanelColor()); mSelectedFile = file; ((TextView) mRootView.findViewById(R.id.folder_name)).setText(getSafeString(R.string.quick_view_folder, mSelectedFile != null ? mSelectedFile.getName() : "")); ((TextView) mRootView.findViewById(R.id.quick_view_folders)).setText(""); ((TextView) mRootView.findViewById(R.id.quick_view_files)).setText(""); ((TextView) mRootView.findViewById(R.id.quick_view_size)).setText(""); mRootView.findViewById(R.id.error).setVisibility(View.GONE); if (mLoadDataTask != null) { mLoadDataTask.cancel(true); mLoadDataTask = null; } // virtual directory if (!file.exists()) { ((TextView) mRootView.findViewById(R.id.folder_name)).setText(R.string.virtual_folder); return; } if (App.sInstance.getFileSystemController().getActivePanel() instanceof ArchivePanel) { ((TextView) mRootView.findViewById(R.id.folder_name)).setText(R.string.archive); return; } mLoadDataTask = new LoadDataTask(); //noinspection unchecked mLoadDataTask.execute(); } private class LoadDataTask extends AsyncTask<Void, Void, FileUtilsExt.DirectoryScanResult> { private Exception mExecutionException; @Override protected FileUtilsExt.DirectoryScanResult doInBackground(Void... params) { try { return FileUtilsExt.getDirectoryDetails(mSelectedFile); } catch (Exception e) { mExecutionException = e; } return null; } @Override protected void onPreExecute() { super.onPreExecute(); mProgress.setVisibility(View.VISIBLE); } @Override protected void onPostExecute(FileUtilsExt.DirectoryScanResult result) { mProgress.setVisibility(View.GONE); if (mExecutionException != null) { TextView error = ((TextView) mRootView.findViewById(R.id.error)); error.setText(getSafeString(R.string.error_quick_view_error_while_calculating_detailes, mExecutionException.getLocalizedMessage())); error.setVisibility(View.VISIBLE); } else { ((TextView) mRootView.findViewById(R.id.quick_view_folders)).setText(Long.toString(result.directories)); ((TextView) mRootView.findViewById(R.id.quick_view_files)).setText(Long.toString(result.files)); ((TextView) mRootView.findViewById(R.id.quick_view_size)).setText(CustomFormatter.formatBytes(result.filesSize)); } } } }