Introducing an explicit delete mode: clear vs. backspace
Also, fixing bug: 3360891
Change-Id: I5faa0553d549d7e931c655f3920b82bb91563678
diff --git a/src/com/android/calculator2/Calculator.java b/src/com/android/calculator2/Calculator.java
index e6993a2..56744c7 100644
--- a/src/com/android/calculator2/Calculator.java
+++ b/src/com/android/calculator2/Calculator.java
@@ -24,15 +24,16 @@
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
-import android.widget.Button;
-public class Calculator extends Activity implements PanelSwitcher.Listener {
+public class Calculator extends Activity implements PanelSwitcher.Listener, Logic.Listener {
EventListener mListener = new EventListener();
private CalculatorDisplay mDisplay;
private Persist mPersist;
private History mHistory;
private Logic mLogic;
private PanelSwitcher mPanelSwitcher;
+ private View mClearButton;
+ private View mBackspaceButton;
private static final int CMD_CLEAR_HISTORY = 1;
private static final int CMD_BASIC_PANEL = 2;
@@ -53,11 +54,25 @@
setContentView(R.layout.main);
mPersist = new Persist(this);
+ mPersist.load();
+
mHistory = mPersist.history;
mDisplay = (CalculatorDisplay) findViewById(R.id.display);
- mLogic = new Logic(this, mHistory, mDisplay, (Button) findViewById(R.id.equal));
+ mClearButton = findViewById(R.id.clear);
+ mClearButton.setOnClickListener(mListener);
+ mClearButton.setOnLongClickListener(mListener);
+
+ mBackspaceButton = findViewById(R.id.del);
+ mBackspaceButton.setOnClickListener(mListener);
+ mBackspaceButton.setOnLongClickListener(mListener);
+
+ mLogic = new Logic(this, mHistory, mDisplay);
+ mLogic.setListener(this);
+
+ mLogic.setDeleteMode(mPersist.getDeleteMode());
+
HistoryAdapter historyAdapter = new HistoryAdapter(this, mHistory, mLogic);
mHistory.setObserver(historyAdapter);
@@ -101,10 +116,16 @@
setOnClickListener(R.id.factorial);
setOnClickListener(R.id.sqrt);
- View view;
- if ((view = findViewById(R.id.del)) != null) {
- view.setOnClickListener(mListener);
- view.setOnLongClickListener(mListener);
+ updateDeleteMode();
+ }
+
+ private void updateDeleteMode() {
+ if (mLogic.getDeleteMode() == Logic.DELETE_MODE_BACKSPACE) {
+ mClearButton.setVisibility(View.GONE);
+ mBackspaceButton.setVisibility(View.VISIBLE);
+ } else {
+ mClearButton.setVisibility(View.VISIBLE);
+ mBackspaceButton.setVisibility(View.GONE);
}
}
@@ -180,6 +201,7 @@
public void onPause() {
super.onPause();
mLogic.updateHistory();
+ mPersist.setDeleteMode(mLogic.getDeleteMode());
mPersist.save();
}
@@ -204,4 +226,9 @@
public void onChange() {
invalidateOptionsMenu();
}
+
+ @Override
+ public void onDeleteModeChange() {
+ updateDeleteMode();
+ }
}