package com.appboy.sample;
import android.content.Context;
import android.preference.DialogPreference;
import android.util.AttributeSet;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.Spinner;
import android.widget.TextView;
import com.appboy.Constants;
import com.appboy.sample.util.SpinnerUtils;
import com.appboy.support.StringUtils;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class FileDataDialog extends DialogPreference implements AdapterView.OnItemSelectedListener {
private static final String TAG = String.format("%s.%s", Constants.APPBOY_LOG_TAG_PREFIX, FileDataDialog.class.getName());
private static final String FILES_DIR = "Files Dir";
private static final String CACHE_FILES_DIR = "Cache Files Dir";
private List mOptionList;
private View mMainView;
public FileDataDialog(Context context, AttributeSet attrs) {
super(context, attrs);
setDialogLayoutResource(R.layout.data_dialog);
setPersistent(false);
}
@Override
public View onCreateDialogView() {
mMainView = super.onCreateDialogView();
mOptionList = Arrays.asList(FILES_DIR, CACHE_FILES_DIR);
SpinnerUtils.setUpSpinnerWithList((Spinner) mMainView.findViewById(R.id.file_chooser_spinner), this, mOptionList);
return mMainView;
}
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
String selection = (String) mOptionList.get(position);
List<String> filesData = new ArrayList<String>();
if (FILES_DIR.equals(selection)) {
List<String> getFilesDirFiles = new ArrayList<String>();
getContentsOfDirectory(getContext().getFilesDir(), getFilesDirFiles);
filesData.add("getFilesDir(): " + getFilesDirFiles.size() + " items");
filesData.addAll(getFilesDirFiles);
((TextView) mMainView.findViewById(R.id.data_dialog_text_view)).setText(StringUtils.join(filesData, "\n"));
} else if (CACHE_FILES_DIR.equals(selection)) {
List<String> getCacheDirFiles = new ArrayList<String>();
getContentsOfDirectory(getContext().getCacheDir(), getCacheDirFiles);
filesData.add("getCacheDir(): " + getCacheDirFiles.size() + " items");
filesData.addAll(getCacheDirFiles);
((TextView) mMainView.findViewById(R.id.data_dialog_text_view)).setText(StringUtils.join(filesData, "\n"));
}
}
public void onNothingSelected(AdapterView<?> parent) {
// Do nothing
}
@Override
protected void onBindDialogView(View view) {
super.onBindDialogView(view);
}
public static void getContentsOfDirectory(File fileOrDirectory, List<String> inputArray) {
if (fileOrDirectory == null || !fileOrDirectory.exists()) {
return;
}
if (fileOrDirectory.isFile() && !fileOrDirectory.getName().endsWith(".cnt")) {
try {
inputArray.add(fileOrDirectory.getCanonicalPath());
} catch (IOException e) {
Log.w(TAG, "Experienced IOException while retrieving contents of directory: " + fileOrDirectory.getPath(), e);
}
return;
}
// If the file is a directory, then recursively add all of its children
if (fileOrDirectory.isDirectory()) {
for (String childFileName : fileOrDirectory.list()) {
getContentsOfDirectory(new File(fileOrDirectory, childFileName), inputArray);
}
}
}
}