From: Tobias Brunner Date: Fri, 15 Apr 2016 15:36:31 +0000 (+0200) Subject: android: Switch to AppCompat/Material theme for dialogs X-Git-Tag: 5.4.1dr2~17^2~10 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=77c1c28d74060093d03c6920ebe2d8e0061baf54;p=thirdparty%2Fstrongswan.git android: Switch to AppCompat/Material theme for dialogs There is no AppCompatProgressDialog class as the use of ProgressDialog is discouraged (instead progress bars should be placed in the layout directly). To display the current ProgressDialog instances correctly on systems < 21 we modify the window background color. --- diff --git a/src/frontends/android/app/src/main/AndroidManifest.xml b/src/frontends/android/app/src/main/AndroidManifest.xml index 41f1037fd6..da465ba740 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 c381900c68..e8d12fd7e3 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 31ce5b9ffa..3d53240566 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 8e3930788d..6b8eb2ee8a 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 5f666250e4..bba61bae2e 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 24690de76f..bcc226b1f0 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 160ba951bb..f3859996bb 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 0000000000..90c58a7bb6 --- /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 0000000000..32de06b170 --- /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 8ae09ff829..aa77e54ee2 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 @@ - + +