android: Add disconnect button to dialog if already connected to profile

This commit is contained in:
Tobias Brunner
2017-09-04 10:41:30 +02:00
parent 037b353d2c
commit 1926efadde
@@ -474,42 +474,65 @@ public class MainActivity extends AppCompatActivity implements OnVpnProfileSelec
button = R.string.disconnect; button = R.string.disconnect;
} }
return new AlertDialog.Builder(getActivity()) DialogInterface.OnClickListener connectListener = new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which)
{
MainActivity activity = (MainActivity)getActivity();
activity.startVpnProfile(profileInfo);
}
};
DialogInterface.OnClickListener disconnectListener = new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which)
{
MainActivity activity = (MainActivity)getActivity();
if (activity.mService != null)
{
activity.mService.disconnect();
}
}
};
DialogInterface.OnClickListener cancelListener = new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which)
{
dismiss();
if (!profileInfo.getBoolean(PROFILE_FOREGROUND))
{ /* if the app was not in the foreground before this action was triggered
* externally, we just close the activity if canceled */
getActivity().finish();
}
}
};
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity())
.setIcon(icon) .setIcon(icon)
.setTitle(String.format(getString(title), profileInfo.getString(PROFILE_NAME))) .setTitle(String.format(getString(title), profileInfo.getString(PROFILE_NAME)))
.setMessage(message) .setMessage(message);
.setPositiveButton(button, new DialogInterface.OnClickListener()
{ if (profileInfo.getBoolean(PROFILE_DISCONNECT))
@Override {
public void onClick(DialogInterface dialog, int whichButton) builder.setPositiveButton(button, disconnectListener);
{ }
MainActivity activity = (MainActivity)getActivity(); else
if (profileInfo.getBoolean(PROFILE_DISCONNECT)) {
{ builder.setPositiveButton(button, connectListener);
if (activity.mService != null) }
{
activity.mService.disconnect(); if (profileInfo.getBoolean(PROFILE_RECONNECT))
} {
} builder.setNegativeButton(R.string.disconnect, disconnectListener);
else builder.setNeutralButton(android.R.string.cancel, cancelListener);
{ }
activity.startVpnProfile(profileInfo); else
} {
} builder.setNegativeButton(android.R.string.cancel, cancelListener);
}) }
.setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() return builder.create();
{
@Override
public void onClick(DialogInterface dialog, int which)
{
dismiss();
if (!profileInfo.getBoolean(PROFILE_FOREGROUND))
{ /* if the app was not in the foreground before this action was triggered
* externally, we just close the activity if canceled */
getActivity().finish();
}
}
}).create();
} }
} }