package greendrm.editor; import java.util.ArrayList; import android.app.Activity; import android.app.AlertDialog; import android.content.DialogInterface; import android.content.Intent; import android.content.SharedPreferences; import android.os.Bundle; import android.preference.PreferenceManager; import android.util.Log; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemLongClickListener; import android.widget.ArrayAdapter; import android.widget.ListView; import android.widget.AdapterView.OnItemClickListener; import android.widget.TextView; import android.widget.Toast; public class EditorActivity extends Activity { private static final boolean DEBUG = true; private static final String TAG = "Editor"; private ListView list; private ArrayList<String> items; private ArrayAdapter<String> adapter; private String mSaveMethod = "sdcard"; private final String mDirName = "김도집"; private String mTmpPath = null; private IEditorFile mFile = null; private EditorFileSD mFileSD = null; private EditorFileDatabase mDatabase = null; private TextView eMode1; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { if (DEBUG) Log.d(TAG, "onCreate"); super.onCreate(savedInstanceState); setContentView(R.layout.main); mFileSD = new EditorFileSD(mDirName); mDatabase = new EditorFileDatabase(this, "editor_db", 1); items = new ArrayList<String>(); if (mSaveMethod.equals("db")) mFile = mFileSD; else mFile = mDatabase; eMode1 = (TextView)findViewById(R.id.textViewMode1); list = (ListView)findViewById(R.id.listView1); items = mFile.retreiveFiles(items); adapter = new ArrayAdapter<String>(this, R.layout.listrow, items); list.setAdapter(adapter); // register the listener of list list.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { String str; str = mFile.parseFileName(items.get(position).toString()); Intent intent = new Intent(getBaseContext(), EditorContentsActivity.class); intent.putExtra("FILE_NAME", str); startActivityForResult(intent, 0); } }); list.setOnItemLongClickListener(new OnItemLongClickListener() { @Override public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) { mTmpPath = items.get(position); DialogInterface.OnClickListener deleteListener = new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { mFile.deleteFile(mFile.parseFileName(mTmpPath)); items = mFile.retreiveFiles(items); adapter.notifyDataSetChanged(); } }; DialogInterface.OnClickListener cancelListener = new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); mTmpPath = null; } }; new AlertDialog.Builder(EditorActivity.this) .setTitle("Delete?") .setNeutralButton("Delete", deleteListener) .setNegativeButton("Cancle", cancelListener) .show(); return false; } }); } @Override protected void onDestroy() { EditorFileSD.setBaseDir(null); super.onDestroy(); } @Override public boolean onCreateOptionsMenu(Menu menu) { MenuItem itemSetting = menu.add(0, 0, Menu.NONE, "Preferences"); MenuItem itemRem = menu.add(0, 1, Menu.NONE, "Exit"); itemSetting.setIcon(android.R.drawable.ic_menu_preferences); itemRem.setIcon(android.R.drawable.ic_menu_close_clear_cancel); return super.onCreateOptionsMenu(menu); } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case 0: startActivity(new Intent(this, PreferencesActivity.class)); break; case 1: finish(); return true; } return super.onOptionsItemSelected(item); } public void onClickAddFile(View v) { Intent intent = new Intent(getBaseContext(), EditorContentsActivity.class); startActivityForResult(intent, 0); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { Log.d(TAG, "onActivityResult(): reqCode " + requestCode + " resCode " + resultCode + "(" + Activity.RESULT_OK + ")"); if (requestCode == 0) { if (resultCode == Activity.RESULT_OK) { items = mFile.retreiveFiles(items); adapter.notifyDataSetChanged(); } } super.onActivityResult(requestCode, resultCode, data); } @Override protected void onResume() { if (DEBUG) Log.d(TAG, "onResume"); super.onResume(); retrivePreferences(); if (mSaveMethod.equals("db")) { mFile = mDatabase; } else if (mSaveMethod.equals("sdcard")) { mFile = mFileSD; } else { mSaveMethod = "sdcard"; Log.w(TAG, mSaveMethod + " : Not yet supported"); mFile = mFileSD; } items = mFile.retreiveFiles(items); adapter.notifyDataSetChanged(); if (DEBUG) Log.d(TAG, "onResume: " + mSaveMethod ); eMode1.setText(mSaveMethod); } private void retrivePreferences() { SharedPreferences prefs = PreferenceManager. getDefaultSharedPreferences(getApplicationContext()); mSaveMethod = prefs.getString("saveMethod", "sdcard"); if (DEBUG) Log.d(TAG, "save method: " + mSaveMethod); } }