package net.momodalo.app.vimtouch; import android.app.AlertDialog; import android.content.DialogInterface; import android.content.Intent; import android.net.Uri; import android.os.Environment; import android.support.v4.app.Fragment; import android.view.MenuItem; import android.widget.Toast; import com.ipaulpro.afilechooser.FileChoosedListener; import com.ipaulpro.afilechooser.FileListFragment; import com.ipaulpro.afilechooser.utils.FileInfo; import net.momodalo.app.vimtouch.R; public class FileListMenu implements VimTouch.SlidingMenuInterface, FileChoosedListener { private VimTouch mVim = null; private String mLastDir = null; FileListMenu(VimTouch vim) { mVim = vim; } public Fragment getFragment() { mLastDir = Environment.getExternalStorageDirectory().getAbsolutePath(); FileListFragment explorerFragment = FileListFragment.newInstance(mLastDir, true); explorerFragment.setFileChoosedListener(this); return (Fragment) explorerFragment; } public void onOpen() { showDirectory(mLastDir); } public void onClose() { } public boolean onOptionsItemSelected(MenuItem item) { int id = item.getItemId(); if (id == R.id.menu_save) { if (Exec.isInsertMode()) { mVim.write(27); } mVim.write(":w " + mLastDir + "/"); return true; } else if (id == R.id.menu_toggle_soft_keyboard) { Exec.doCommand("cd " + mLastDir); Toast.makeText(mVim, ":cd " + mLastDir, Toast.LENGTH_SHORT).show(); return true; } else if (id == R.id.menu_ESC) { return true; } return false; } public boolean onNavigationItemSelected(int pos, long id) { showDirectory(mVim.getTabAdapter().getItem(pos).toString()); return true; } private void showDirectory(String path) { FileListFragment explorerFragment = FileListFragment.newInstance(path, true); explorerFragment.setFileChoosedListener(this); mVim.setSlidingMenuFragment((Fragment) explorerFragment); } public void onFileSelected(FileInfo file) { if (file != null) { String path = file.getFile().getAbsolutePath(); String ext = path.substring(file.getFile().getName().lastIndexOf('.') + 1); if (file.getFile().isDirectory()) { showDirectory(path); } else if (ext.equals("vrz")) { mLastDir = path; AlertDialog.Builder builder = new AlertDialog.Builder(mVim); builder.setMessage(R.string.restore_message) .setTitle(R.string.restore_title) .setPositiveButton("Ok", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { Intent intent = new Intent(mVim.getApplicationContext(), InstallProgress.class); intent.setData(Uri.parse("file://" + mLastDir)); mVim.startActivityForResult(intent, VimTouch.REQUEST_VRZ); } }); AlertDialog dialog = builder.create(); dialog.show(); } else { mVim.openNewFile(path); } } else { Toast.makeText(mVim, R.string.error_selecting_file, Toast.LENGTH_SHORT).show(); } } }