Add title to file picker

This commit is contained in:
Weiyi Wang 2019-07-28 18:19:09 -04:00 committed by xperia64
parent 1e071d3c9f
commit 9e789b3bc5
6 changed files with 78 additions and 7 deletions

View File

@ -1,5 +1,6 @@
package org.citra.citra_android.activities;
import android.content.Intent;
import android.os.Environment;
import android.support.annotation.Nullable;
@ -11,16 +12,22 @@ import org.citra.citra_android.fragments.CustomFilePickerFragment;
import java.io.File;
public class CustomFilePickerActivity extends FilePickerActivity {
public static final String EXTRA_TITLE = "filepicker.intent.TITLE";
@Override
protected AbstractFilePickerFragment<File> getFragment(
@Nullable final String startPath, final int mode, final boolean allowMultiple,
final boolean allowCreateDir, final boolean allowExistingFile,
final boolean singleClick) {
AbstractFilePickerFragment<File> fragment = new CustomFilePickerFragment();
CustomFilePickerFragment fragment = new CustomFilePickerFragment();
// startPath is allowed to be null. In that case, default folder should be SD-card and not "/"
fragment.setArgs(
startPath != null ? startPath : Environment.getExternalStorageDirectory().getPath(),
mode, allowMultiple, allowCreateDir, allowExistingFile, singleClick);
Intent intent = getIntent();
String title = intent == null ? null : intent.getStringExtra(EXTRA_TITLE);
fragment.setTitle(title);
return fragment;
}
}

View File

@ -3,12 +3,21 @@ package org.citra.citra_android.fragments;
import android.net.Uri;
import android.support.annotation.NonNull;
import android.support.v4.content.FileProvider;
import android.support.v7.widget.Toolbar;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import com.nononsenseapps.filepicker.FilePickerFragment;
import org.citra.citra_android.R;
import java.io.File;
public class CustomFilePickerFragment extends FilePickerFragment {
private String mTitle;
@NonNull
@Override
public Uri toUri(@NonNull final File file) {
@ -17,4 +26,24 @@ public class CustomFilePickerFragment extends FilePickerFragment {
getContext().getApplicationContext().getPackageName() + ".filesprovider",
file);
}
@Override
protected View inflateRootView(LayoutInflater inflater, ViewGroup container) {
View view = super.inflateRootView(inflater, container);
if (mTitle != null) {
Toolbar toolbar = view.findViewById(com.nononsenseapps.filepicker.R.id.nnf_picker_toolbar);
ViewGroup parent = (ViewGroup) toolbar.getParent();
int index = parent.indexOfChild(toolbar);
View newToolbar = inflater.inflate(R.layout.filepicker_toolbar, toolbar, false);
TextView title = newToolbar.findViewById(R.id.filepicker_title);
title.setText(mTitle);
parent.removeView(toolbar);
parent.addView(newToolbar, index);
}
return view;
}
public void setTitle(String title) {
mTitle = title;
}
}

View File

@ -114,7 +114,8 @@ public final class MainActivity extends AppCompatActivity implements MainView {
@Override
public void launchFileListActivity() {
FileBrowserHelper.openDirectoryPicker(this);
FileBrowserHelper.openDirectoryPicker(this, MainPresenter.REQUEST_ADD_DIRECTORY,
"Select game folder");
}
@Override

View File

@ -118,7 +118,8 @@ public final class TvMainActivity extends FragmentActivity implements MainView {
@Override
public void launchFileListActivity() {
FileBrowserHelper.openDirectoryPicker(this);
FileBrowserHelper.openDirectoryPicker(this, MainPresenter.REQUEST_ADD_DIRECTORY,
"Select game folder");
}
@Override

View File

@ -10,13 +10,12 @@ import com.nononsenseapps.filepicker.FilePickerActivity;
import com.nononsenseapps.filepicker.Utils;
import org.citra.citra_android.activities.CustomFilePickerActivity;
import org.citra.citra_android.ui.main.MainPresenter;
import java.io.File;
import java.util.List;
public final class FileBrowserHelper {
public static void openDirectoryPicker(FragmentActivity activity) {
public static void openDirectoryPicker(FragmentActivity activity, int requestCode, String title) {
Intent i = new Intent(activity, CustomFilePickerActivity.class);
i.putExtra(FilePickerActivity.EXTRA_ALLOW_MULTIPLE, false);
@ -24,11 +23,12 @@ public final class FileBrowserHelper {
i.putExtra(FilePickerActivity.EXTRA_MODE, FilePickerActivity.MODE_DIR);
i.putExtra(FilePickerActivity.EXTRA_START_PATH,
Environment.getExternalStorageDirectory().getPath());
i.putExtra(CustomFilePickerActivity.EXTRA_TITLE, title);
activity.startActivityForResult(i, MainPresenter.REQUEST_ADD_DIRECTORY);
activity.startActivityForResult(i, requestCode);
}
public static void openFilePicker(FragmentActivity activity, int requestCode) {
public static void openFilePicker(FragmentActivity activity, int requestCode, String title) {
Intent i = new Intent(activity, CustomFilePickerActivity.class);
i.putExtra(FilePickerActivity.EXTRA_ALLOW_MULTIPLE, false);
@ -36,6 +36,7 @@ public final class FileBrowserHelper {
i.putExtra(FilePickerActivity.EXTRA_MODE, FilePickerActivity.MODE_FILE);
i.putExtra(FilePickerActivity.EXTRA_START_PATH,
Environment.getExternalStorageDirectory().getPath());
i.putExtra(CustomFilePickerActivity.EXTRA_TITLE, title);
activity.startActivityForResult(i, requestCode);
}

View File

@ -0,0 +1,32 @@
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/nnf_picker_toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:background="?attr/colorPrimary"
android:minHeight="?attr/actionBarSize"
android:theme="?nnf_toolbarTheme">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/filepicker_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ellipsize="start"
android:singleLine="true"
android:textAppearance="@style/TextAppearance.AppCompat.Widget.ActionBar.Title" />
<TextView
android:id="@+id/nnf_current_dir"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ellipsize="start"
android:singleLine="true"
android:textAppearance="@style/TextAppearance.AppCompat.Widget.ActionBar.Subtitle" />
</LinearLayout>
</android.support.v7.widget.Toolbar>