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

Move custom path option from FAB to menu

parent 1cb40727
No related branches found
No related tags found
No related merge requests found
......@@ -77,6 +77,12 @@
android:id="@+id/ml_menu_equalizer"
android:icon="@drawable/ic_menu_equalizer"
android:title="@string/equalizer" />
<item
android:orderInCategory="3"
android:id="@+id/ml_menu_custom_dir"
android:title="@string/add_custom_path"
android:contentDescription="@string/add_custom_path_description"
android:visible="false"/>
<item
android:orderInCategory="3"
android:title="@string/clear_history"
......
......@@ -24,15 +24,10 @@
package org.videolan.vlc.gui.browser;
import android.arch.lifecycle.ViewModelProviders;
import android.content.Context;
import android.content.DialogInterface;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v7.app.AlertDialog;
import android.support.v7.widget.AppCompatEditText;
import android.text.InputType;
import android.text.TextUtils;
import android.view.MenuItem;
import android.view.View;
......@@ -44,7 +39,6 @@ import org.videolan.medialibrary.media.MediaWrapper;
import org.videolan.medialibrary.media.Storage;
import org.videolan.vlc.R;
import org.videolan.vlc.gui.AudioPlayerContainerActivity;
import org.videolan.vlc.gui.helpers.UiTools;
import org.videolan.vlc.media.MediaDatabase;
import org.videolan.vlc.util.AndroidDevices;
import org.videolan.vlc.util.CustomDirectories;
......@@ -55,13 +49,10 @@ import org.videolan.vlc.viewmodels.browser.BrowserModel;
import org.videolan.vlc.viewmodels.browser.BrowserModelKt;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
public class FileBrowserFragment extends BaseBrowserFragment {
private AlertDialog mAlertDialog;
@Override
protected Fragment createFragment() {
return new FileBrowserFragment();
......@@ -172,44 +163,6 @@ public class FileBrowserFragment extends BaseBrowserFragment {
});
}
@Override
public void onStop() {
super.onStop();
if (mAlertDialog != null && mAlertDialog.isShowing())
mAlertDialog.dismiss();
}
public void showAddDirectoryDialog() {
final Context context = getActivity();
AlertDialog.Builder builder = new AlertDialog.Builder(context);
final AppCompatEditText input = new AppCompatEditText(context);
input.setInputType(InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);
builder.setTitle(R.string.add_custom_path);
builder.setMessage(R.string.add_custom_path_description);
builder.setView(input);
builder.setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int which) {}
});
builder.setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
String path = input.getText().toString().trim();
File f = new File(path);
if (!f.exists() || !f.isDirectory()) {
UiTools.snacker(getView(), getString(R.string.directorynotfound, path));
return;
}
try {
CustomDirectories.addCustomDirectory(f.getCanonicalPath());
((AudioPlayerContainerActivity)getActivity()).updateLib();
} catch (IOException ignored) {}
}
});
mAlertDialog = builder.show();
}
@Override
protected boolean handleContextItemSelected(MenuItem item, int position) {
if (mRoot && item.getItemId() == R.id.directory_remove_custom_path){
......
......@@ -24,6 +24,8 @@
package org.videolan.vlc.gui.browser;
import android.arch.lifecycle.ViewModelProviders;
import android.content.Context;
import android.content.DialogInterface;
import android.databinding.DataBindingUtil;
import android.os.Bundle;
import android.support.annotation.Nullable;
......@@ -31,8 +33,12 @@ import android.support.design.widget.Snackbar;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentTransaction;
import android.support.v4.util.SimpleArrayMap;
import android.support.v7.app.AlertDialog;
import android.support.v7.widget.AppCompatEditText;
import android.text.InputType;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.CheckBox;
......@@ -44,11 +50,16 @@ import org.videolan.medialibrary.media.Storage;
import org.videolan.vlc.R;
import org.videolan.vlc.VLCApplication;
import org.videolan.vlc.databinding.BrowserItemBinding;
import org.videolan.vlc.gui.AudioPlayerContainerActivity;
import org.videolan.vlc.gui.helpers.ThreeStatesCheckbox;
import org.videolan.vlc.gui.helpers.UiTools;
import org.videolan.vlc.util.CustomDirectories;
import org.videolan.vlc.viewmodels.browser.BrowserModel;
import org.videolan.vlc.viewmodels.browser.BrowserModelKt;
import java.io.File;
import java.io.IOException;
public class StorageBrowserFragment extends FileBrowserFragment implements EntryPointsEventsCb {
public static final String KEY_IN_MEDIALIB = "key_in_medialib";
......@@ -56,6 +67,7 @@ public class StorageBrowserFragment extends FileBrowserFragment implements Entry
boolean mScannedDirectory = false;
private final SimpleArrayMap<String, CheckBox> mProcessingFolders = new SimpleArrayMap<>();
private Snackbar mSnack;
private AlertDialog mAlertDialog;
public boolean isSortEnabled() {
return false;
......@@ -90,11 +102,6 @@ public class StorageBrowserFragment extends FileBrowserFragment implements Entry
@Override
public void onStart() {
super.onStart();
if (mRoot && mFabPlay != null) {
mFabPlay.setImageResource(R.drawable.ic_fab_add);
mFabPlay.setOnClickListener(this);
setFabPlayVisibility(true);
}
VLCApplication.getMLInstance().addEntryPointsEventsCb(this);
if (mSnack != null) mSnack.show();
}
......@@ -102,12 +109,9 @@ public class StorageBrowserFragment extends FileBrowserFragment implements Entry
@Override
public void onStop() {
super.onStop();
if (mFabPlay != null) {
mFabPlay.setVisibility(View.GONE);
mFabPlay.setOnClickListener(null);
}
VLCApplication.getMLInstance().removeEntryPointsEventsCb(this);
if (mSnack != null) mSnack.dismiss();
if (mAlertDialog != null && mAlertDialog.isShowing()) mAlertDialog.dismiss();
}
@Override
......@@ -116,12 +120,21 @@ public class StorageBrowserFragment extends FileBrowserFragment implements Entry
outState.putBoolean(KEY_IN_MEDIALIB, mScannedDirectory);
}
// @Override
// public void onMediaAdded(int index, Media media) {
// if (media.getType() != Media.Type.Directory)
// return;
// super.onMediaAdded(index, media);
// }
@Override
public void onPrepareOptionsMenu(Menu menu) {
super.onPrepareOptionsMenu(menu);
menu.findItem(R.id.ml_menu_custom_dir).setVisible(true);
menu.findItem(R.id.ml_menu_equalizer).setVisible(false);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == R.id.ml_menu_custom_dir) {
showAddDirectoryDialog();
return true;
}
return super.onOptionsItemSelected(item);
}
public void browse (MediaWrapper media, int position, boolean scanned){
final FragmentTransaction ft = getActivity().getSupportFragmentManager().beginTransaction();
......@@ -137,28 +150,19 @@ public class StorageBrowserFragment extends FileBrowserFragment implements Entry
protected void setContextMenuItems(MenuInflater inflater, Menu menu, int position) {
if (mRoot) {
Storage storage = (Storage) mAdapter.getItem(position);
final Storage storage = (Storage) mAdapter.getItem(position);
boolean isCustom = CustomDirectories.contains(storage.getUri().getPath());
if (isCustom)
inflater.inflate(R.menu.directory_custom_dir, menu);
} else
super.setContextMenuItems(menu, position);
if (isCustom) inflater.inflate(R.menu.directory_custom_dir, menu);
} else super.setContextMenuItems(menu, position);
}
@Override
public void onClick(View v, int position, MediaLibraryItem item) {
MediaWrapper mw = new MediaWrapper(((Storage) item).getUri());
final MediaWrapper mw = new MediaWrapper(((Storage) item).getUri());
mw.setType(MediaWrapper.TYPE_DIR);
browse(mw, position, ((BrowserItemBinding)DataBindingUtil.findBinding(v)).browserCheckbox.getState() == ThreeStatesCheckbox.STATE_CHECKED);
}
@Override
public void onClick(View v) {
if (v.getId() == R.id.fab){
showAddDirectoryDialog();
}
}
void processEvent(CheckBox cbp, String mrl) {
cbp.setEnabled(false);
mProcessingFolders.put(mrl, cbp);
......@@ -204,8 +208,7 @@ public class StorageBrowserFragment extends FileBrowserFragment implements Entry
@Override
public void onDiscoveryCompleted(String entryPoint) {
String path = entryPoint;
if (path.endsWith("/"))
path = path.substring(0, path.length()-1);
if (path.endsWith("/")) path = path.substring(0, path.length()-1);
if (mProcessingFolders.containsKey(path)) {
final String finalPath = path;
mHandler.post(new Runnable() {
......@@ -217,4 +220,35 @@ public class StorageBrowserFragment extends FileBrowserFragment implements Entry
((StorageBrowserAdapter)mAdapter).updateMediaDirs();
}
}
private void showAddDirectoryDialog() {
final Context context = getActivity();
final AlertDialog.Builder builder = new AlertDialog.Builder(context);
final AppCompatEditText input = new AppCompatEditText(context);
input.setInputType(InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);
builder.setTitle(R.string.add_custom_path);
builder.setMessage(R.string.add_custom_path_description);
builder.setView(input);
builder.setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int which) {}
});
builder.setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
String path = input.getText().toString().trim();
File f = new File(path);
if (!f.exists() || !f.isDirectory()) {
UiTools.snacker(getView(), getString(R.string.directorynotfound, path));
return;
}
try {
CustomDirectories.addCustomDirectory(f.getCanonicalPath());
((AudioPlayerContainerActivity)getActivity()).updateLib();
} catch (IOException ignored) {}
}
});
mAlertDialog = builder.show();
}
}
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