diff --git a/src/frontends/android/app/src/main/AndroidManifest.xml b/src/frontends/android/app/src/main/AndroidManifest.xml index 41f1037fd..da465ba74 100644 --- a/src/frontends/android/app/src/main/AndroidManifest.xml +++ b/src/frontends/android/app/src/main/AndroidManifest.xml @@ -66,7 +66,7 @@ + android:theme="@style/AlertDialogTheme" > diff --git a/src/frontends/android/app/src/main/java/org/strongswan/android/ui/CertificateDeleteConfirmationDialog.java b/src/frontends/android/app/src/main/java/org/strongswan/android/ui/CertificateDeleteConfirmationDialog.java index c381900c6..e8d12fd7e 100644 --- a/src/frontends/android/app/src/main/java/org/strongswan/android/ui/CertificateDeleteConfirmationDialog.java +++ b/src/frontends/android/app/src/main/java/org/strongswan/android/ui/CertificateDeleteConfirmationDialog.java @@ -15,20 +15,20 @@ package org.strongswan.android.ui; -import org.strongswan.android.R; - import android.app.Activity; -import android.app.AlertDialog; import android.app.Dialog; -import android.app.DialogFragment; import android.content.DialogInterface; import android.os.Bundle; +import android.support.v7.app.AlertDialog; +import android.support.v7.app.AppCompatDialogFragment; + +import org.strongswan.android.R; /** * Class that displays a confirmation dialog to delete a selected local * certificate. */ -public class CertificateDeleteConfirmationDialog extends DialogFragment +public class CertificateDeleteConfirmationDialog extends AppCompatDialogFragment { public static final String ALIAS = "alias"; OnCertificateDeleteListener mListener; diff --git a/src/frontends/android/app/src/main/java/org/strongswan/android/ui/MainActivity.java b/src/frontends/android/app/src/main/java/org/strongswan/android/ui/MainActivity.java index 31ce5b9ff..3d5324056 100644 --- a/src/frontends/android/app/src/main/java/org/strongswan/android/ui/MainActivity.java +++ b/src/frontends/android/app/src/main/java/org/strongswan/android/ui/MainActivity.java @@ -17,10 +17,7 @@ package org.strongswan.android.ui; -import android.app.Activity; -import android.app.AlertDialog.Builder; import android.app.Dialog; -import android.app.DialogFragment; import android.app.Fragment; import android.app.FragmentManager; import android.app.FragmentTransaction; @@ -35,7 +32,9 @@ import android.os.AsyncTask; import android.os.Bundle; import android.os.IBinder; import android.support.v7.app.ActionBar; +import android.support.v7.app.AlertDialog; import android.support.v7.app.AppCompatActivity; +import android.support.v7.app.AppCompatDialogFragment; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuItem; @@ -237,7 +236,7 @@ public class MainActivity extends AppCompatActivity implements OnVpnProfileSelec ConfirmationDialog dialog = new ConfirmationDialog(); dialog.setArguments(profileInfo); - dialog.show(this.getFragmentManager(), DIALOG_TAG); + dialog.show(this.getSupportFragmentManager(), DIALOG_TAG); return; } startVpnProfile(profileInfo); @@ -255,7 +254,7 @@ public class MainActivity extends AppCompatActivity implements OnVpnProfileSelec { LoginDialog login = new LoginDialog(); login.setArguments(profileInfo); - login.show(getFragmentManager(), DIALOG_TAG); + login.show(getSupportFragmentManager(), DIALOG_TAG); return; } prepareVpnService(profileInfo); @@ -332,7 +331,7 @@ public class MainActivity extends AppCompatActivity implements OnVpnProfileSelec * Class that displays a confirmation dialog if a VPN profile is already connected * and then initiates the selected VPN profile if the user confirms the dialog. */ - public static class ConfirmationDialog extends DialogFragment + public static class ConfirmationDialog extends AppCompatDialogFragment { @Override public Dialog onCreateDialog(Bundle savedInstanceState) @@ -351,7 +350,7 @@ public class MainActivity extends AppCompatActivity implements OnVpnProfileSelec button = R.string.reconnect; } - return new Builder(getActivity()) + return new AlertDialog.Builder(getActivity()) .setIcon(icon) .setTitle(String.format(getString(title), profileInfo.getString(PROFILE_NAME))) .setMessage(message) @@ -379,7 +378,7 @@ public class MainActivity extends AppCompatActivity implements OnVpnProfileSelec * Class that displays a login dialog and initiates the selected VPN * profile if the user confirms the dialog. */ - public static class LoginDialog extends DialogFragment + public static class LoginDialog extends AppCompatDialogFragment { @Override public Dialog onCreateDialog(Bundle savedInstanceState) @@ -391,7 +390,7 @@ public class MainActivity extends AppCompatActivity implements OnVpnProfileSelec username.setText(profileInfo.getString(VpnProfileDataSource.KEY_USERNAME)); final EditText password = (EditText)view.findViewById(R.id.password); - Builder adb = new Builder(getActivity()); + AlertDialog.Builder adb = new AlertDialog.Builder(getActivity()); adb.setView(view); adb.setTitle(getString(R.string.login_title)); adb.setPositiveButton(R.string.login_confirm, new DialogInterface.OnClickListener() @@ -420,17 +419,17 @@ public class MainActivity extends AppCompatActivity implements OnVpnProfileSelec * Class representing an error message which is displayed if VpnService is * not supported on the current device. */ - public static class VpnNotSupportedError extends DialogFragment + public static class VpnNotSupportedError extends AppCompatDialogFragment { static final String ERROR_MESSAGE_ID = "org.strongswan.android.VpnNotSupportedError.MessageId"; - public static void showWithMessage(Activity activity, int messageId) + public static void showWithMessage(AppCompatActivity activity, int messageId) { Bundle bundle = new Bundle(); bundle.putInt(ERROR_MESSAGE_ID, messageId); VpnNotSupportedError dialog = new VpnNotSupportedError(); dialog.setArguments(bundle); - dialog.show(activity.getFragmentManager(), DIALOG_TAG); + dialog.show(activity.getSupportFragmentManager(), DIALOG_TAG); } @Override @@ -438,7 +437,7 @@ public class MainActivity extends AppCompatActivity implements OnVpnProfileSelec { final Bundle arguments = getArguments(); final int messageId = arguments.getInt(ERROR_MESSAGE_ID); - return new Builder(getActivity()) + return new AlertDialog.Builder(getActivity()) .setTitle(R.string.vpn_not_supported_title) .setMessage(messageId) .setCancelable(false) diff --git a/src/frontends/android/app/src/main/java/org/strongswan/android/ui/TrustedCertificateImportActivity.java b/src/frontends/android/app/src/main/java/org/strongswan/android/ui/TrustedCertificateImportActivity.java index 8e3930788..6b8eb2ee8 100644 --- a/src/frontends/android/app/src/main/java/org/strongswan/android/ui/TrustedCertificateImportActivity.java +++ b/src/frontends/android/app/src/main/java/org/strongswan/android/ui/TrustedCertificateImportActivity.java @@ -17,16 +17,16 @@ package org.strongswan.android.ui; import android.annotation.TargetApi; import android.app.Activity; -import android.app.AlertDialog; import android.app.Dialog; -import android.app.DialogFragment; -import android.app.FragmentTransaction; import android.content.DialogInterface; import android.content.Intent; import android.net.Uri; import android.os.Build; import android.os.Bundle; +import android.support.v4.app.FragmentTransaction; +import android.support.v7.app.AlertDialog; import android.support.v7.app.AppCompatActivity; +import android.support.v7.app.AppCompatDialogFragment; import android.widget.Toast; import org.strongswan.android.R; @@ -119,7 +119,7 @@ public class TrustedCertificateImportActivity extends AppCompatActivity Bundle args = new Bundle(); args.putSerializable(VpnProfileDataSource.KEY_CERTIFICATE, certificate); dialog.setArguments(args); - FragmentTransaction ft = getFragmentManager().beginTransaction(); + FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); ft.add(dialog, DIALOG_TAG); ft.commit(); } @@ -179,7 +179,7 @@ public class TrustedCertificateImportActivity extends AppCompatActivity * Class that displays a confirmation dialog when a certificate should get * imported. If the user confirms the import we try to store it. */ - public static class ConfirmImportDialog extends DialogFragment + public static class ConfirmImportDialog extends AppCompatDialogFragment { @Override public Dialog onCreateDialog(Bundle savedInstanceState) diff --git a/src/frontends/android/app/src/main/java/org/strongswan/android/ui/TrustedCertificatesActivity.java b/src/frontends/android/app/src/main/java/org/strongswan/android/ui/TrustedCertificatesActivity.java index 5f666250e..bba61bae2 100644 --- a/src/frontends/android/app/src/main/java/org/strongswan/android/ui/TrustedCertificatesActivity.java +++ b/src/frontends/android/app/src/main/java/org/strongswan/android/ui/TrustedCertificatesActivity.java @@ -158,7 +158,7 @@ public class TrustedCertificatesActivity extends AppCompatActivity implements Tr args.putString(CertificateDeleteConfirmationDialog.ALIAS, selected.getAlias()); CertificateDeleteConfirmationDialog dialog = new CertificateDeleteConfirmationDialog(); dialog.setArguments(args); - dialog.show(this.getFragmentManager(), DIALOG_TAG); + dialog.show(getSupportFragmentManager(), DIALOG_TAG); } } } diff --git a/src/frontends/android/app/src/main/java/org/strongswan/android/ui/VpnProfileDetailActivity.java b/src/frontends/android/app/src/main/java/org/strongswan/android/ui/VpnProfileDetailActivity.java index 24690de76..bcc226b1f 100644 --- a/src/frontends/android/app/src/main/java/org/strongswan/android/ui/VpnProfileDetailActivity.java +++ b/src/frontends/android/app/src/main/java/org/strongswan/android/ui/VpnProfileDetailActivity.java @@ -17,9 +17,7 @@ package org.strongswan.android.ui; -import android.app.AlertDialog; import android.app.Dialog; -import android.app.DialogFragment; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; @@ -28,7 +26,9 @@ import android.os.Bundle; import android.security.KeyChain; import android.security.KeyChainAliasCallback; import android.security.KeyChainException; +import android.support.v7.app.AlertDialog; import android.support.v7.app.AppCompatActivity; +import android.support.v7.app.AppCompatDialogFragment; import android.text.Html; import android.util.Log; import android.view.Menu; @@ -146,7 +146,7 @@ public class VpnProfileDetailActivity extends AppCompatActivity @Override public void onClick(View v) { - new TncNoticeDialog().show(VpnProfileDetailActivity.this.getFragmentManager(), "TncNotice"); + new TncNoticeDialog().show(VpnProfileDetailActivity.this.getSupportFragmentManager(), "TncNotice"); } }); @@ -633,7 +633,7 @@ public class VpnProfileDetailActivity extends AppCompatActivity /** * Dialog with notification message if EAP-TNC is used. */ - public static class TncNoticeDialog extends DialogFragment + public static class TncNoticeDialog extends AppCompatDialogFragment { @Override public Dialog onCreateDialog(Bundle savedInstanceState) diff --git a/src/frontends/android/app/src/main/java/org/strongswan/android/ui/VpnStateFragment.java b/src/frontends/android/app/src/main/java/org/strongswan/android/ui/VpnStateFragment.java index 160ba951b..f3859996b 100644 --- a/src/frontends/android/app/src/main/java/org/strongswan/android/ui/VpnStateFragment.java +++ b/src/frontends/android/app/src/main/java/org/strongswan/android/ui/VpnStateFragment.java @@ -17,19 +17,6 @@ package org.strongswan.android.ui; -import java.util.ArrayList; -import java.util.List; - -import org.strongswan.android.R; -import org.strongswan.android.data.VpnProfile; -import org.strongswan.android.logic.VpnStateService; -import org.strongswan.android.logic.VpnStateService.ErrorState; -import org.strongswan.android.logic.VpnStateService.State; -import org.strongswan.android.logic.VpnStateService.VpnStateListener; -import org.strongswan.android.logic.imc.ImcState; -import org.strongswan.android.logic.imc.RemediationInstruction; - -import android.app.AlertDialog; import android.app.Fragment; import android.app.ProgressDialog; import android.app.Service; @@ -40,6 +27,7 @@ import android.content.Intent; import android.content.ServiceConnection; import android.os.Bundle; import android.os.IBinder; +import android.support.v7.app.AlertDialog; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; @@ -47,6 +35,18 @@ import android.view.ViewGroup; import android.widget.Button; import android.widget.TextView; +import org.strongswan.android.R; +import org.strongswan.android.data.VpnProfile; +import org.strongswan.android.logic.VpnStateService; +import org.strongswan.android.logic.VpnStateService.ErrorState; +import org.strongswan.android.logic.VpnStateService.State; +import org.strongswan.android.logic.VpnStateService.VpnStateListener; +import org.strongswan.android.logic.imc.ImcState; +import org.strongswan.android.logic.imc.RemediationInstruction; + +import java.util.ArrayList; +import java.util.List; + public class VpnStateFragment extends Fragment implements VpnStateListener { private static final String KEY_ERROR_CONNECTION_ID = "error_connection_id"; @@ -64,7 +64,8 @@ public class VpnStateFragment extends Fragment implements VpnStateListener private long mErrorConnectionID; private long mDismissedConnectionID; private VpnStateService mService; - private final ServiceConnection mServiceConnection = new ServiceConnection() { + private final ServiceConnection mServiceConnection = new ServiceConnection() + { @Override public void onServiceDisconnected(ComponentName name) { @@ -334,18 +335,18 @@ public class VpnStateFragment extends Fragment implements VpnStateListener mConnectDialog.setIndeterminate(true); mConnectDialog.setCancelable(false); mConnectDialog.setButton(DialogInterface.BUTTON_NEGATIVE, - getString(android.R.string.cancel), - new DialogInterface.OnClickListener() - { - @Override - public void onClick(DialogInterface dialog, int which) - { - if (mService != null) - { - mService.disconnect(); - } - } - }); + getString(android.R.string.cancel), + new DialogInterface.OnClickListener() + { + @Override + public void onClick(DialogInterface dialog, int which) + { + if (mService != null) + { + mService.disconnect(); + } + } + }); mConnectDialog.show(); mProgressDialog = mConnectDialog; } @@ -374,7 +375,8 @@ public class VpnStateFragment extends Fragment implements VpnStateListener mErrorDialog = new AlertDialog.Builder(getActivity()) .setMessage(getString(R.string.error_introduction) + " " + getString(textid)) .setCancelable(false) - .setNeutralButton(text, new DialogInterface.OnClickListener() { + .setNeutralButton(text, new DialogInterface.OnClickListener() + { @Override public void onClick(DialogInterface dialog, int which) { @@ -394,7 +396,8 @@ public class VpnStateFragment extends Fragment implements VpnStateListener startActivity(intent); } }) - .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { + .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() + { @Override public void onClick(DialogInterface dialog, int id) { @@ -402,7 +405,8 @@ public class VpnStateFragment extends Fragment implements VpnStateListener dialog.dismiss(); } }).create(); - mErrorDialog.setOnDismissListener(new DialogInterface.OnDismissListener() { + mErrorDialog.setOnDismissListener(new DialogInterface.OnDismissListener() + { @Override public void onDismiss(DialogInterface dialog) { diff --git a/src/frontends/android/app/src/main/res/values-v15/styles.xml b/src/frontends/android/app/src/main/res/values-v15/styles.xml new file mode 100644 index 000000000..90c58a7bb --- /dev/null +++ b/src/frontends/android/app/src/main/res/values-v15/styles.xml @@ -0,0 +1,25 @@ + + + + + + + + + \ No newline at end of file diff --git a/src/frontends/android/app/src/main/res/values-v21/styles.xml b/src/frontends/android/app/src/main/res/values-v21/styles.xml new file mode 100644 index 000000000..32de06b17 --- /dev/null +++ b/src/frontends/android/app/src/main/res/values-v21/styles.xml @@ -0,0 +1,24 @@ + + + + + + + + + \ No newline at end of file diff --git a/src/frontends/android/app/src/main/res/values/styles.xml b/src/frontends/android/app/src/main/res/values/styles.xml index 8ae09ff82..aa77e54ee 100644 --- a/src/frontends/android/app/src/main/res/values/styles.xml +++ b/src/frontends/android/app/src/main/res/values/styles.xml @@ -1,7 +1,7 @@ - + +