summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/us/minak/SettingsActivity.java246
1 files changed, 57 insertions, 189 deletions
diff --git a/src/us/minak/SettingsActivity.java b/src/us/minak/SettingsActivity.java
index 30b1e7b..4d6eca8 100644
--- a/src/us/minak/SettingsActivity.java
+++ b/src/us/minak/SettingsActivity.java
@@ -16,8 +16,6 @@
package us.minak;
-import android.app.Dialog;
-import android.app.AlertDialog;
import android.app.ListActivity;
import android.os.Bundle;
import android.os.AsyncTask;
@@ -30,15 +28,12 @@ import android.view.ViewGroup;
import android.gesture.Gesture;
import android.gesture.GestureLibrary;
import android.widget.TextView;
-import android.widget.EditText;
import android.widget.AdapterView;
import android.widget.Toast;
import android.widget.ArrayAdapter;
-import android.content.DialogInterface;
import android.content.Context;
import android.content.Intent;
import android.content.res.Resources;
-import android.text.TextUtils;
import android.graphics.Bitmap;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.BitmapDrawable;
@@ -47,7 +42,6 @@ import java.util.Map;
import java.util.Collections;
import java.util.HashMap;
import java.util.Comparator;
-import java.util.Set;
public class SettingsActivity extends ListActivity {
private static final int STATUS_SUCCESS = 0;
@@ -55,15 +49,9 @@ public class SettingsActivity extends ListActivity {
private static final int STATUS_NO_STORAGE = 2;
private static final int STATUS_NOT_LOADED = 3;
- private static final int MENU_ID_RENAME = 1;
- private static final int MENU_ID_REMOVE = 2;
-
- private static final int DIALOG_RENAME_GESTURE = 1;
+ private static final int MENU_ID_REMOVE = 1;
private static final int REQUEST_NEW_GESTURE = 1;
-
- // Type: long (id)
- private static final String GESTURES_INFO_ID = "gestures.info_id";
private final Comparator<NamedGesture> mSorter = new Comparator<NamedGesture>() {
public int compare(NamedGesture object1, NamedGesture object2) {
@@ -73,11 +61,9 @@ public class SettingsActivity extends ListActivity {
private GesturesAdapter mAdapter;
private GesturesLoadTask mTask;
- private TextView mEmpty;
+ private TextView mEmptyMessageView;
- private Dialog mRenameDialog;
- private EditText mInput;
- private NamedGesture mCurrentRenameGesture;
+ // Hacky constructor to get 'this' out of scope ///////////////////////////
private SettingsActivity mThis;
public SettingsActivity() {
@@ -85,25 +71,53 @@ public class SettingsActivity extends ListActivity {
mThis = this;
}
+ ///////////////////////////////////////////////////////////////////////////
+
+ private void loadGestures() {
+ if (mTask != null && mTask.getStatus() != GesturesLoadTask.Status.FINISHED) {
+ mTask.cancel(true);
+ }
+ mTask = (GesturesLoadTask) new GesturesLoadTask().execute();
+ }
+
+ private void checkForEmpty() {
+ if (mAdapter.getCount() == 0) {
+ mEmptyMessageView.setText(R.string.gestures_empty);
+ }
+ }
+
+ // Basic life-cycle ///////////////////////////////////////////////////////
+
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
-
setContentView(R.layout.gestures_list);
+ setListAdapter(mAdapter = new GesturesAdapter(this));
- mAdapter = new GesturesAdapter(this);
- setListAdapter(mAdapter);
-
- mEmpty = (TextView) findViewById(android.R.id.empty);
+ mEmptyMessageView = (TextView) findViewById(android.R.id.empty);
loadGestures();
registerForContextMenu(getListView());
}
+ @Override
+ protected void onDestroy() {
+ super.onDestroy();
+
+ if (mTask != null && mTask.getStatus() != GesturesLoadTask.Status.FINISHED) {
+ mTask.cancel(true);
+ mTask = null;
+ }
+ }
+
+ // The buttons at the bottom //////////////////////////////////////////////
+
+ /** Called by onClick */
public void reloadGestures(View v) {
loadGestures();
}
-
+
+ /** Called by onClick */
public void addGesture(View v) {
Intent intent = new Intent(this, CreateGestureActivity.class);
startActivityForResult(intent, REQUEST_NEW_GESTURE);
@@ -112,7 +126,7 @@ public class SettingsActivity extends ListActivity {
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
-
+
if (resultCode == RESULT_OK) {
switch (requestCode) {
case REQUEST_NEW_GESTURE:
@@ -122,70 +136,15 @@ public class SettingsActivity extends ListActivity {
}
}
- private void loadGestures() {
- if (mTask != null && mTask.getStatus() != GesturesLoadTask.Status.FINISHED) {
- mTask.cancel(true);
- }
- mTask = (GesturesLoadTask) new GesturesLoadTask().execute();
- }
-
- @Override
- protected void onDestroy() {
- super.onDestroy();
-
- if (mTask != null && mTask.getStatus() != GesturesLoadTask.Status.FINISHED) {
- mTask.cancel(true);
- mTask = null;
- }
-
- cleanupRenameDialog();
- }
-
- private void checkForEmpty() {
- if (mAdapter.getCount() == 0) {
- mEmpty.setText(R.string.gestures_empty);
- }
- }
+ // Context menu ///////////////////////////////////////////////////////////
@Override
- protected void onSaveInstanceState(Bundle outState) {
- super.onSaveInstanceState(outState);
-
- if (mCurrentRenameGesture != null) {
- outState.putLong(GESTURES_INFO_ID, mCurrentRenameGesture.gesture.getID());
- }
- }
-
- @Override
- protected void onRestoreInstanceState(Bundle state) {
- super.onRestoreInstanceState(state);
-
- long id = state.getLong(GESTURES_INFO_ID, -1);
- if (id != -1) {
- final Set<String> entries = SettingsUtil.getGestureLibrary(this).getGestureEntries();
-out: for (String name : entries) {
- for (Gesture gesture : SettingsUtil.getGestureLibrary(this).getGestures(name)) {
- if (gesture.getID() == id) {
- mCurrentRenameGesture = new NamedGesture();
- mCurrentRenameGesture.name = name;
- mCurrentRenameGesture.gesture = gesture;
- break out;
- }
- }
- }
- }
- }
-
- @Override
- public void onCreateContextMenu(ContextMenu menu, View v,
- ContextMenu.ContextMenuInfo menuInfo) {
-
+ public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) menuInfo;
- menu.setHeaderTitle(((TextView) info.targetView).getText());
- menu.add(0, MENU_ID_RENAME, 0, R.string.gestures_rename);
+ menu.setHeaderTitle(((TextView) info.targetView).getText());
menu.add(0, MENU_ID_REMOVE, 0, R.string.gestures_delete);
}
@@ -196,115 +155,24 @@ out: for (String name : entries) {
final NamedGesture gesture = (NamedGesture) menuInfo.targetView.getTag();
switch (item.getItemId()) {
- case MENU_ID_RENAME:
- renameGesture(gesture);
- return true;
case MENU_ID_REMOVE:
- deleteGesture(gesture);
- return true;
- }
-
- return super.onContextItemSelected(item);
- }
-
- private void renameGesture(NamedGesture gesture) {
- mCurrentRenameGesture = gesture;
- showDialog(DIALOG_RENAME_GESTURE);
- }
-
- @Override
- protected Dialog onCreateDialog(int id) {
- if (id == DIALOG_RENAME_GESTURE) {
- return createRenameDialog();
- }
- return super.onCreateDialog(id);
- }
+ SettingsUtil.getGestureLibrary(this).removeGesture(gesture.name, gesture.gesture);
+ SettingsUtil.getGestureLibrary(this).save();
- @Override
- protected void onPrepareDialog(int id, Dialog dialog) {
- super.onPrepareDialog(id, dialog);
- if (id == DIALOG_RENAME_GESTURE) {
- mInput.setText(mCurrentRenameGesture.name);
- }
- }
-
- private Dialog createRenameDialog() {
- final View layout = View.inflate(this, R.layout.dialog_rename, null);
- mInput = (EditText) layout.findViewById(R.id.name);
- ((TextView) layout.findViewById(R.id.label)).setText(R.string.gestures_rename_label);
-
- AlertDialog.Builder builder = new AlertDialog.Builder(this);
- builder.setIcon(0);
- builder.setTitle(getString(R.string.gestures_rename_title));
- builder.setCancelable(true);
- builder.setOnCancelListener(new Dialog.OnCancelListener() {
- public void onCancel(DialogInterface dialog) {
- cleanupRenameDialog();
- }
- });
- builder.setNegativeButton(getString(R.string.cancel_action),
- new Dialog.OnClickListener() {
- public void onClick(DialogInterface dialog, int which) {
- cleanupRenameDialog();
- }
- }
- );
- builder.setPositiveButton(getString(R.string.rename_action),
- new Dialog.OnClickListener() {
- public void onClick(DialogInterface dialog, int which) {
- changeGestureName();
- }
- }
- );
- builder.setView(layout);
- return builder.create();
- }
-
- private void changeGestureName() {
- final String name = mInput.getText().toString();
- if (!TextUtils.isEmpty(name)) {
- final NamedGesture renameGesture = mCurrentRenameGesture;
- final GesturesAdapter adapter = mAdapter;
- final int count = adapter.getCount();
-
- // Simple linear search, there should not be enough items to warrant
- // a more sophisticated search
- for (int i = 0; i < count; i++) {
- final NamedGesture gesture = adapter.getItem(i);
- if (gesture.gesture.getID() == renameGesture.gesture.getID()) {
- SettingsUtil.getGestureLibrary(this).removeGesture(gesture.name, gesture.gesture);
- gesture.name = mInput.getText().toString();
- SettingsUtil.getGestureLibrary(this).addGesture(gesture.name, gesture.gesture);
- break;
- }
- }
+ mAdapter.setNotifyOnChange(false);
+ mAdapter.remove(gesture);
+ mAdapter.sort(mSorter);
+ checkForEmpty();
+ mAdapter.notifyDataSetChanged();
- adapter.notifyDataSetChanged();
+ Toast.makeText(this, R.string.gestures_delete_success, Toast.LENGTH_SHORT).show();
+ return true;
}
- mCurrentRenameGesture = null;
- }
- private void cleanupRenameDialog() {
- if (mRenameDialog != null) {
- mRenameDialog.dismiss();
- mRenameDialog = null;
- }
- mCurrentRenameGesture = null;
+ return super.onContextItemSelected(item);
}
- private void deleteGesture(NamedGesture gesture) {
- SettingsUtil.getGestureLibrary(this).removeGesture(gesture.name, gesture.gesture);
- SettingsUtil.getGestureLibrary(this).save();
-
- final GesturesAdapter adapter = mAdapter;
- adapter.setNotifyOnChange(false);
- adapter.remove(gesture);
- adapter.sort(mSorter);
- checkForEmpty();
- adapter.notifyDataSetChanged();
-
- Toast.makeText(this, R.string.gestures_delete_success, Toast.LENGTH_SHORT).show();
- }
+ ///////////////////////////////////////////////////////////////////////////
private class GesturesLoadTask extends AsyncTask<Void, NamedGesture, Integer> {
private int mThumbnailSize;
@@ -322,8 +190,8 @@ out: for (String name : entries) {
findViewById(R.id.addButton).setEnabled(false);
findViewById(R.id.reloadButton).setEnabled(false);
-
- mAdapter.setNotifyOnChange(false);
+
+ mAdapter.setNotifyOnChange(false);
mAdapter.clear();
}
@@ -379,8 +247,8 @@ out: for (String name : entries) {
if (result == STATUS_NO_STORAGE) {
getListView().setVisibility(View.GONE);
- mEmpty.setVisibility(View.VISIBLE);
- mEmpty.setText(getString(R.string.gestures_error_loading,
+ mEmptyMessageView.setVisibility(View.VISIBLE);
+ mEmptyMessageView.setText(getString(R.string.gestures_error_loading,
SettingsUtil.getGestureFile(mThis).getAbsolutePath()));
} else {
findViewById(R.id.addButton).setEnabled(true);
@@ -406,7 +274,7 @@ out: for (String name : entries) {
}
void addBitmap(Long id, Bitmap bitmap) {
- mThumbnails.put(id, new BitmapDrawable(bitmap));
+ mThumbnails.put(id, new BitmapDrawable(getResources(), bitmap));
}
@Override