Long press to start/stop router (prevents accidental presses)

This commit is contained in:
str4d
2014-04-08 01:12:52 +00:00
parent 030fc60445
commit a414b10ce8
5 changed files with 41 additions and 9 deletions

3
TODO
View File

@ -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

View File

@ -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"

View File

@ -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>

View File

@ -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;
}
});

View File

@ -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();
}
}