diff options
Diffstat (limited to 'src')
3 files changed, 36 insertions, 0 deletions
diff --git a/src/frontends/android/res/layout/vpn_state_fragment.xml b/src/frontends/android/res/layout/vpn_state_fragment.xml index 12d890a90..6353f3289 100644 --- a/src/frontends/android/res/layout/vpn_state_fragment.xml +++ b/src/frontends/android/res/layout/vpn_state_fragment.xml @@ -72,6 +72,17 @@ </TextView> </GridLayout> + <Button + android:id="@+id/action" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginBottom="10dp" + android:layout_marginLeft="20dp" + android:layout_marginRight="20dp" + android:text="@string/disconnect" + style="?android:attr/borderlessButtonStyle" > + </Button> + <View android:layout_width="match_parent" android:layout_height="2dp" diff --git a/src/frontends/android/res/values/strings.xml b/src/frontends/android/res/values/strings.xml index e631a9e34..4a719ef1c 100644 --- a/src/frontends/android/res/values/strings.xml +++ b/src/frontends/android/res/values/strings.xml @@ -53,6 +53,7 @@ <!-- VPN state fragment --> <string name="state_label">Status:</string> <string name="profile_label">Profile:</string> + <string name="disconnect">Disconnect</string> <string name="state_connecting">Connecting…</string> <string name="state_connected">Connected</string> <string name="state_disconnecting">Disconnecting…</string> diff --git a/src/frontends/android/src/org/strongswan/android/ui/VpnStateFragment.java b/src/frontends/android/src/org/strongswan/android/ui/VpnStateFragment.java index fc250f18d..94475a3c9 100644 --- a/src/frontends/android/src/org/strongswan/android/ui/VpnStateFragment.java +++ b/src/frontends/android/src/org/strongswan/android/ui/VpnStateFragment.java @@ -36,7 +36,9 @@ import android.os.Bundle; import android.os.IBinder; import android.view.LayoutInflater; import android.view.View; +import android.view.View.OnClickListener; import android.view.ViewGroup; +import android.widget.Button; import android.widget.TextView; public class VpnStateFragment extends Fragment implements VpnStateListener @@ -45,6 +47,7 @@ public class VpnStateFragment extends Fragment implements VpnStateListener private TextView mProfileView; private TextView mStateView; private int stateBaseColor; + private Button mActionButton; private ProgressDialog mProgressDialog; private State mState; private VpnStateService mService; @@ -81,6 +84,19 @@ public class VpnStateFragment extends Fragment implements VpnStateListener { View view = inflater.inflate(R.layout.vpn_state_fragment, null); + mActionButton = (Button)view.findViewById(R.id.action); + mActionButton.setOnClickListener(new OnClickListener() { + @Override + public void onClick(View v) + { + if (mService != null) + { + mService.disconnect(); + } + } + }); + enableActionButton(false); + mStateView = (TextView)view.findViewById(R.id.vpn_state); stateBaseColor = mStateView.getCurrentTextColor(); mProfileView = (TextView)view.findViewById(R.id.vpn_profile_label); @@ -144,6 +160,7 @@ public class VpnStateFragment extends Fragment implements VpnStateListener } hideProgressDialog(); + enableActionButton(false); mProfileNameView.setText(name); mState = state; @@ -162,6 +179,7 @@ public class VpnStateFragment extends Fragment implements VpnStateListener break; case CONNECTED: showProfile(true); + enableActionButton(true); mStateView.setText(R.string.state_connected); mStateView.setTextColor(Color.GREEN); break; @@ -180,6 +198,12 @@ public class VpnStateFragment extends Fragment implements VpnStateListener mProfileNameView.setVisibility(show ? View.VISIBLE : View.GONE); } + private void enableActionButton(boolean enable) + { + mActionButton.setEnabled(enable); + mActionButton.setVisibility(enable ? View.VISIBLE : View.GONE); + } + private void hideProgressDialog() { if (mProgressDialog != null) |