Implement ViewDragHelper to pull down history.
Bug: 31623549
Change-Id: Ie5c9bc0afef59f0922bd87bee709d04d294f24b9
diff --git a/src/com/android/calculator2/Calculator.java b/src/com/android/calculator2/Calculator.java
index 53232a5..7f1661f 100644
--- a/src/com/android/calculator2/Calculator.java
+++ b/src/com/android/calculator2/Calculator.java
@@ -33,6 +33,7 @@
import android.animation.PropertyValuesHolder;
import android.app.ActionBar;
import android.app.Activity;
+import android.app.FragmentTransaction;
import android.content.ClipData;
import android.content.DialogInterface;
import android.content.Intent;
@@ -180,6 +181,7 @@
private CalculatorText mFormulaText;
private CalculatorResult mResultText;
private HorizontalScrollView mFormulaContainer;
+ private DragLayout mDragLayout;
private ViewPager mPadViewPager;
private View mDeleteButton;
@@ -206,10 +208,12 @@
// Whether the display is one line.
private boolean mOneLine;
+ private HistoryFragment mHistoryFragment = new HistoryFragment();
+
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_calculator);
+ setContentView(R.layout.activity_calculator_main);
setActionBar((Toolbar) findViewById(R.id.toolbar));
// Hide all default options in the ActionBar.
@@ -263,6 +267,19 @@
mResultText.setEvaluator(mEvaluator);
KeyMaps.setActivity(this);
+ mDragLayout = (DragLayout) findViewById(R.id.drag_layout);
+ mDragLayout.setOnDragCallback(new DragLayout.OnDragCallback() {
+ @Override
+ public void onStartDragging() {
+ showHistoryFragment(FragmentTransaction.TRANSIT_NONE);
+ }
+
+ @Override
+ public void onDragToClose() {
+ getFragmentManager().popBackStack();
+ }
+ });
+
if (savedInstanceState != null) {
setState(CalculatorState.values()[
savedInstanceState.getInt(KEY_DISPLAY_STATE,
@@ -436,6 +453,12 @@
@Override
public void onBackPressed() {
if (!stopActionModeOrContextMenu()) {
+ if (mDragLayout.isOpen()) {
+ // Close the layout and remove the fragment.
+ mDragLayout.setClosed();
+ getFragmentManager().popBackStack();
+ return;
+ }
if (mPadViewPager != null && mPadViewPager.getCurrentItem() != 0) {
// Select the previous pad.
mPadViewPager.setCurrentItem(mPadViewPager.getCurrentItem() - 1);
@@ -1045,11 +1068,8 @@
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_history:
- getFragmentManager().beginTransaction()
- .replace(android.R.id.content, new HistoryFragment(), HistoryFragment.TAG)
- .addToBackStack(HistoryFragment.TAG)
- .commit();
-
+ showHistoryFragment(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
+ mDragLayout.setOpen();
return true;
case R.id.menu_leading:
displayFull();
@@ -1065,6 +1085,14 @@
}
}
+ private void showHistoryFragment(int transit) {
+ getFragmentManager().beginTransaction()
+ .replace(R.id.history_frame, mHistoryFragment, HistoryFragment.TAG)
+ .setTransition(transit)
+ .addToBackStack(HistoryFragment.TAG)
+ .commit();
+ }
+
private void displayMessage(String s) {
AlertDialogFragment.showMessageDialog(this, s, null);
}