Skip to content
Snippets Groups Projects
Commit ac391752 authored by Geoffrey Métais's avatar Geoffrey Métais
Browse files

Disable checkbox while operation is ongoing

parent 35fcc361
No related branches found
No related tags found
No related merge requests found
......@@ -7,7 +7,4 @@ public interface DevicesDiscoveryCb {
void onParsingStatsUpdated(int percent);
void onReloadStarted(String entryPoint);
void onReloadCompleted(String entryPoint);
// void onEntryPointBanned(String entryPoint, boolean success);
// void onEntryPointUnbanned(String entryPoint, boolean success);
// void onEntryPointRemoved(String entryPoint, boolean success);
}
\ No newline at end of file
package org.videolan.medialibrary.interfaces;
public interface EntryPointsEventsCb {
void onEntryPointBanned(String entryPoint, boolean success);
void onEntryPointUnbanned(String entryPoint, boolean success);
void onEntryPointRemoved(String entryPoint, boolean success);
void onDiscoveryStarted(String entryPoint);
void onDiscoveryProgress(String entryPoint);
void onDiscoveryCompleted(String entryPoint);
}
......@@ -177,9 +177,8 @@ public class BaseBrowserAdapter extends BaseAdapter<BaseBrowserAdapter.ViewHolde
}
public void onCheckBoxClick(View v){
if (getItem(getAdapterPosition()).getItemType() == TYPE_STORAGE) {
if (getItem(getAdapterPosition()).getItemType() == TYPE_STORAGE)
checkBoxAction(v, ((Storage) getItem(getAdapterPosition())).getUri().getPath());
}
}
@Override
......
......@@ -23,21 +23,17 @@
package org.videolan.vlc.gui.browser;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.CheckBox;
import org.videolan.medialibrary.Medialibrary;
import org.videolan.medialibrary.media.MediaLibraryItem;
import org.videolan.medialibrary.media.MediaWrapper;
import org.videolan.medialibrary.media.Storage;
import org.videolan.vlc.R;
import org.videolan.vlc.VLCApplication;
import org.videolan.vlc.util.CustomDirectories;
import org.videolan.vlc.util.FileUtils;
import org.videolan.vlc.util.Util;
import java.util.ArrayList;
import java.util.Arrays;
......@@ -48,7 +44,7 @@ public class StorageBrowserAdapter extends BaseBrowserAdapter {
private static ArrayList<String> mMediaDirsLocation;
private static ArrayList<String> mCustomDirsLocation;
public StorageBrowserAdapter(BaseBrowserFragment fragment) {
StorageBrowserAdapter(BaseBrowserFragment fragment) {
super(fragment);
if (mMediaDirsLocation == null && mCustomDirsLocation == null)
updateMediaDirs();
......@@ -91,47 +87,13 @@ public class StorageBrowserAdapter extends BaseBrowserAdapter {
VLCApplication.runBackground(new Runnable() {
@Override
public void run() {
//if media dir list was empty, we add all others
if (mMediaDirsLocation.isEmpty()) {
Storage storage;
String pathString;
for (Object item : mMediaList) {
storage = (Storage) item;
if (!TextUtils.equals(path, storage.getUri().getPath())) {
pathString = storage.getUri().getPath();
VLCApplication.getMLInstance().discover(pathString);
}
}
} else {
VLCApplication.getMLInstance().removeFolder(path);
}
updateMediaDirs();
if (isRoot && mMediaDirsLocation.isEmpty() && getItemCount() > 1)
refreshFragment();
VLCApplication.getMLInstance().removeFolder(path);
}
});
}
private void addDir(final String path) {
VLCApplication.runBackground(new Runnable() {
@Override
public void run() {
Medialibrary ml = VLCApplication.getMLInstance();
ml.discover(path);
//No need to check for parents for now
String parentPath = FileUtils.getParent(path);
while (parentPath != null && !TextUtils.equals(parentPath, "/")) {
ml.removeFolder(parentPath);
parentPath = FileUtils.getParent(parentPath);
}
//Remove subfolders, it would be redundant
for (String customDirPath : mMediaDirsLocation) {
if (customDirPath.startsWith(path + "/"))
ml.removeFolder(customDirPath);
}
updateMediaDirs();
}
});
VLCApplication.getMLInstance().discover(path);
}
void updateMediaDirs() {
......@@ -145,16 +107,6 @@ public class StorageBrowserAdapter extends BaseBrowserAdapter {
mCustomDirsLocation = new ArrayList<>(Arrays.asList(CustomDirectories.getCustomDirectories()));
}
void refreshFragment(){
fragment.getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
if (Util.isListEmpty(mMediaDirsLocation))
fragment.refresh();
}
});
}
protected void openMediaFromView(MediaViewHolder holder, View v) {
MediaWrapper mw = new MediaWrapper(((Storage) getItem(holder.getAdapterPosition())).getUri());
mw.setType(MediaWrapper.TYPE_DIR);
......@@ -167,5 +119,6 @@ public class StorageBrowserAdapter extends BaseBrowserAdapter {
addDir(path);
else
removeDir(path);
((StorageBrowserFragment)fragment).processEvent((CheckBox) v, path);
}
}
......@@ -28,12 +28,15 @@ import android.net.Uri;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentTransaction;
import android.support.v4.util.SimpleArrayMap;
import android.text.TextUtils;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.View;
import android.widget.CheckBox;
import org.videolan.libvlc.Media;
import org.videolan.medialibrary.interfaces.EntryPointsEventsCb;
import org.videolan.medialibrary.media.MediaLibraryItem;
import org.videolan.medialibrary.media.MediaWrapper;
import org.videolan.medialibrary.media.Storage;
......@@ -46,11 +49,12 @@ import org.videolan.vlc.util.CustomDirectories;
import java.io.File;
import java.util.ArrayList;
public class StorageBrowserFragment extends FileBrowserFragment {
public class StorageBrowserFragment extends FileBrowserFragment implements EntryPointsEventsCb {
public static final String KEY_IN_MEDIALIB = "key_in_medialib";
boolean mScannedDirectory = false;
SimpleArrayMap<String, CheckBox> mProcessingFolders = new SimpleArrayMap<>();
public StorageBrowserFragment(){
mHandler = new BrowserFragmentHandler(this);
......@@ -80,6 +84,7 @@ public class StorageBrowserFragment extends FileBrowserFragment {
mFabPlay.setImageResource(R.drawable.ic_fab_add);
mFabPlay.setOnClickListener(this);
}
VLCApplication.getMLInstance().addEntryPointsEventsCb(this);
}
@Override
......@@ -89,6 +94,7 @@ public class StorageBrowserFragment extends FileBrowserFragment {
mFabPlay.setVisibility(View.GONE);
mFabPlay.setOnClickListener(null);
}
VLCApplication.getMLInstance().removeEntryPointsEventsCb(this);
}
@Override
......@@ -180,8 +186,61 @@ public class StorageBrowserFragment extends FileBrowserFragment {
}
}
void processEvent(CheckBox cbp, String path) {
cbp.setEnabled(false);
mProcessingFolders.put(path, cbp);
}
@Override
protected String getCategoryTitle() {
return getString(R.string.directories_summary);
}
@Override
public void onEntryPointBanned(String entryPoint, boolean success) {}
@Override
public void onEntryPointUnbanned(String entryPoint, boolean success) {}
@Override
public void onEntryPointRemoved(String entryPoint, final boolean success) {
String path = Uri.parse(entryPoint).getPath();
if (path.endsWith("/"))
path = path.substring(0, path.length()-1);
if (mProcessingFolders.containsKey(path)) {
final String finalPath = path;
mHandler.post(new Runnable() {
@Override
public void run() {
mProcessingFolders.get(finalPath).setEnabled(true);
if (!success)
mProcessingFolders.get(finalPath).setChecked(false);
}
});
((StorageBrowserAdapter)mAdapter).updateMediaDirs();
}
}
@Override
public void onDiscoveryStarted(String entryPoint) {}
@Override
public void onDiscoveryProgress(String entryPoint) {}
@Override
public void onDiscoveryCompleted(String entryPoint) {
String path = Uri.parse(entryPoint).getPath();
if (path.endsWith("/"))
path = path.substring(0, path.length()-1);
if (mProcessingFolders.containsKey(path)) {
final String finalPath = path;
mHandler.post(new Runnable() {
@Override
public void run() {
mProcessingFolders.get(finalPath).setEnabled(true);
}
});
((StorageBrowserAdapter)mAdapter).updateMediaDirs();
}
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment