/*
* Copyright 2016 Gleb Godonoga.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.andrada.sitracker.ui;
import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.provider.Settings;
import android.support.annotation.NonNull;
import com.afollestad.materialdialogs.DialogAction;
import com.afollestad.materialdialogs.MaterialDialog;
import com.andrada.sitracker.R;
import com.andrada.sitracker.ui.fragment.DirectoryChooserFragment;
import com.andrada.sitracker.util.permission.Permissions;
import com.andrada.sitracker.util.permission.RuntimePermissionsInteraction;
import com.andrada.sitracker.util.permission.RuntimePermissionsUtils;
public class DirectoryChooserController implements DirectoryChooserFragment.OnFragmentInteractionListener {
public static final int RESULT_CODE_DIR_SELECTED = 1;
public static final String TAG = "DirectoryChooserFrag";
private DirectoryChooserFragment mDialog;
private Activity mActivity;
private DirectoryChooserResultListener mListener;
private RuntimePermissionsUtils permissionsUtils;
public DirectoryChooserController(Activity activity, String initialDir, boolean isDirectoryChooser) {
this.mActivity = activity;
mDialog = (DirectoryChooserFragment) mActivity.getFragmentManager().findFragmentByTag(TAG);
if (mDialog == null) {
mDialog = DirectoryChooserFragment
.newInstance(initialDir, isDirectoryChooser, this);
}
mDialog.setListener(this);
permissionsUtils = new RuntimePermissionsUtils();
}
public void setListener(DirectoryChooserResultListener listener) {
this.mListener = listener;
}
public void showDialog(DirectoryChooserResultListener listener) {
this.mListener = listener;
if (!this.mActivity.isFinishing()) {
mDialog.show(mActivity.getFragmentManager(), TAG);
}
}
@Override
public void onSelectDirectory(String path) {
mDialog.dismiss();
if (mListener != null) {
mListener.onDirectoryChooserResult(RESULT_CODE_DIR_SELECTED, path);
}
}
@Override
public void onCancelChooser() {
mDialog.dismiss();
if (mListener != null) {
mListener.onDirectoryChooserResult(Activity.RESULT_CANCELED, null);
}
}
public interface DirectoryChooserResultListener {
void onDirectoryChooserResult(int resultCode, String dirOrFileChosen);
}
}