From a414b10ce81f1294267b59025f726b835b31b41d Mon Sep 17 00:00:00 2001 From: str4d <str4d@mail.i2p> Date: Tue, 8 Apr 2014 01:12:52 +0000 Subject: [PATCH] Long press to start/stop router (prevents accidental presses) --- TODO | 3 -- res/layout/fragment_main.xml | 2 +- res/values/strings.xml | 4 +-- src/net/i2p/android/router/MainFragment.java | 8 +++-- .../android/router/util/LongToggleButton.java | 33 +++++++++++++++++++ 5 files changed, 41 insertions(+), 9 deletions(-) create mode 100644 src/net/i2p/android/router/util/LongToggleButton.java diff --git a/TODO b/TODO index a8ea00557..65fd88ebb 100644 --- a/TODO +++ b/TODO @@ -1,8 +1,5 @@ # Required for release -- Prevent accidental shutdown - - Add pop-up confirming router shutdown - - OR: make router button long-press - Display release notes directly on new router version - Text content - Move help content from release notes to help page diff --git a/res/layout/fragment_main.xml b/res/layout/fragment_main.xml index 6b796e107..8d5bc80bc 100644 --- a/res/layout/fragment_main.xml +++ b/res/layout/fragment_main.xml @@ -12,7 +12,7 @@ android:scaleType="centerInside" android:src="@drawable/routerlogo_0" /> - <ToggleButton + <net.i2p.android.router.util.LongToggleButton android:id="@+id/router_onoff_button" android:layout_width="match_parent" android:layout_height="68dp" diff --git a/res/values/strings.xml b/res/values/strings.xml index 5a9b718e5..fe07e4b2c 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -26,8 +26,8 @@ <string name="label_browse">Browse</string> <string name="label_graphs">Graphs</string> - <string name="button_router_off">Press to start I2P</string> - <string name="button_router_on">I2P is running (press to stop)</string> + <string name="button_router_off">Long press to start I2P</string> + <string name="button_router_on">I2P is running (long press to stop)</string> <string name="first_start_title">Congratulations on getting I2P installed!</string> <string name="first_start_welcome"><b>Welcome to I2P!</b> Please <b>have patience</b> as I2P boots up and finds peers.</string> diff --git a/src/net/i2p/android/router/MainFragment.java b/src/net/i2p/android/router/MainFragment.java index fc115569e..a1e450568 100644 --- a/src/net/i2p/android/router/MainFragment.java +++ b/src/net/i2p/android/router/MainFragment.java @@ -26,6 +26,7 @@ import java.util.List; import net.i2p.android.router.R; import net.i2p.android.router.dialog.FirstStartDialog; import net.i2p.android.router.dialog.VersionDialog; +import net.i2p.android.router.util.LongToggleButton; import net.i2p.android.router.util.Util; import net.i2p.data.DataHelper; import net.i2p.data.Destination; @@ -101,10 +102,10 @@ public class MainFragment extends I2PFragmentBase { final ImageView lightImage = (ImageView) v.findViewById(R.id.main_lights); lightImage.setImageResource(R.drawable.routerlogo_0); - ToggleButton b = (ToggleButton) v.findViewById(R.id.router_onoff_button); - b.setOnClickListener(new View.OnClickListener() { + LongToggleButton b = (LongToggleButton) v.findViewById(R.id.router_onoff_button); + b.setOnLongClickListener(new View.OnLongClickListener() { - public void onClick(View view) { + public boolean onLongClick(View view) { boolean on = ((ToggleButton) view).isChecked(); if (on) { _startPressed = true; @@ -116,6 +117,7 @@ public class MainFragment extends I2PFragmentBase { updateOneShot(); } } + return true; } }); diff --git a/src/net/i2p/android/router/util/LongToggleButton.java b/src/net/i2p/android/router/util/LongToggleButton.java new file mode 100644 index 000000000..2db7af2dc --- /dev/null +++ b/src/net/i2p/android/router/util/LongToggleButton.java @@ -0,0 +1,33 @@ +package net.i2p.android.router.util; + +import android.content.Context; +import android.util.AttributeSet; +import android.widget.ToggleButton; + +public class LongToggleButton extends ToggleButton { + public LongToggleButton(Context context) { + super(context); + } + + public LongToggleButton(Context context, AttributeSet attrs) { + super(context, attrs); + } + + public LongToggleButton(Context context, AttributeSet attrs, int defStyle) { + super(context, attrs, defStyle); + } + + @Override + public boolean performClick() { + /* Cancel out toggle */ + toggle(); + return super.performClick(); + } + + @Override + public boolean performLongClick() { + /* When clicked, toggle the state */ + toggle(); + return super.performLongClick(); + } +} -- GitLab