]> git.ipfire.org Git - thirdparty/strongswan.git/commitdiff
android: Migrate from support libraries to AndroidX
authorTobias Brunner <tobias@strongswan.org>
Tue, 13 Aug 2019 13:01:31 +0000 (15:01 +0200)
committerTobias Brunner <tobias@strongswan.org>
Mon, 26 Aug 2019 09:20:48 +0000 (11:20 +0200)
The support libraries will not be developed further.

34 files changed:
src/frontends/android/app/build.gradle
src/frontends/android/app/src/main/java/org/strongswan/android/logic/CharonVpnService.java
src/frontends/android/app/src/main/java/org/strongswan/android/logic/SimpleFetcher.java
src/frontends/android/app/src/main/java/org/strongswan/android/logic/VpnStateService.java
src/frontends/android/app/src/main/java/org/strongswan/android/ui/CertificateDeleteConfirmationDialog.java
src/frontends/android/app/src/main/java/org/strongswan/android/ui/ImcStateFragment.java
src/frontends/android/app/src/main/java/org/strongswan/android/ui/LogActivity.java
src/frontends/android/app/src/main/java/org/strongswan/android/ui/LogFragment.java
src/frontends/android/app/src/main/java/org/strongswan/android/ui/MainActivity.java
src/frontends/android/app/src/main/java/org/strongswan/android/ui/RemediationInstructionFragment.java
src/frontends/android/app/src/main/java/org/strongswan/android/ui/RemediationInstructionsActivity.java
src/frontends/android/app/src/main/java/org/strongswan/android/ui/RemediationInstructionsFragment.java
src/frontends/android/app/src/main/java/org/strongswan/android/ui/SelectedApplicationsActivity.java
src/frontends/android/app/src/main/java/org/strongswan/android/ui/SelectedApplicationsListFragment.java
src/frontends/android/app/src/main/java/org/strongswan/android/ui/SettingsActivity.java
src/frontends/android/app/src/main/java/org/strongswan/android/ui/SettingsFragment.java
src/frontends/android/app/src/main/java/org/strongswan/android/ui/TrustedCertificateImportActivity.java
src/frontends/android/app/src/main/java/org/strongswan/android/ui/TrustedCertificateListFragment.java
src/frontends/android/app/src/main/java/org/strongswan/android/ui/TrustedCertificatesActivity.java
src/frontends/android/app/src/main/java/org/strongswan/android/ui/VpnProfileControlActivity.java
src/frontends/android/app/src/main/java/org/strongswan/android/ui/VpnProfileDetailActivity.java
src/frontends/android/app/src/main/java/org/strongswan/android/ui/VpnProfileImportActivity.java
src/frontends/android/app/src/main/java/org/strongswan/android/ui/VpnProfileListFragment.java
src/frontends/android/app/src/main/java/org/strongswan/android/ui/VpnProfileSelectActivity.java
src/frontends/android/app/src/main/java/org/strongswan/android/ui/VpnStateFragment.java
src/frontends/android/app/src/main/java/org/strongswan/android/ui/adapter/SelectedApplicationEntry.java
src/frontends/android/app/src/main/java/org/strongswan/android/ui/widget/CheckableLinearLayout.java
src/frontends/android/app/src/main/java/org/strongswan/android/ui/widget/TextInputLayoutHelper.java
src/frontends/android/app/src/main/java/org/strongswan/android/utils/IPRange.java
src/frontends/android/app/src/main/res/layout/login_dialog.xml
src/frontends/android/app/src/main/res/layout/profile_detail_view.xml
src/frontends/android/app/src/main/res/layout/profile_import_view.xml
src/frontends/android/app/src/main/res/layout/trusted_certificates_activity.xml
src/frontends/android/gradle.properties [new file with mode: 0644]

index 3ac62d937a4d097bb8ec1e57d08bef73b2697571..b2d8c0b9582c76318f2edbabef108d1687525908 100644 (file)
@@ -46,9 +46,9 @@ android {
 }
 
 dependencies {
-    implementation 'com.android.support:appcompat-v7:28.0.0'
-    implementation 'com.android.support:design:28.0.0'
-    implementation 'com.android.support:preference-v7:28.0.0'
-    implementation 'com.android.support:support-v4:28.0.0'
+    implementation 'androidx.appcompat:appcompat:1.0.0'
+    implementation 'androidx.preference:preference:1.0.0'
+    implementation 'androidx.legacy:legacy-support-v4:1.0.0'
+    implementation 'com.google.android.material:material:1.0.0'
     testImplementation 'junit:junit:4.12'
 }
index 3672480397d37821aaa69bfe794c87563707f61f..3e4305845b4356b05e40503082c0bed47d6be112 100644 (file)
@@ -38,8 +38,6 @@ import android.os.ParcelFileDescriptor;
 import android.preference.PreferenceManager;
 import android.security.KeyChain;
 import android.security.KeyChainException;
-import android.support.v4.app.NotificationCompat;
-import android.support.v4.content.ContextCompat;
 import android.system.OsConstants;
 import android.util.Log;
 
@@ -77,6 +75,9 @@ import java.util.List;
 import java.util.Locale;
 import java.util.SortedSet;
 
+import androidx.core.app.NotificationCompat;
+import androidx.core.content.ContextCompat;
+
 public class CharonVpnService extends VpnService implements Runnable, VpnStateService.VpnStateListener
 {
        private static final String TAG = CharonVpnService.class.getSimpleName();
index 6eaccc4d8d8ef3314d40f07aec47a394a9bdb3ae..de0ae97fe45cc1064a22e2f50bedfe4083628ef3 100644 (file)
@@ -15,8 +15,6 @@
 
 package org.strongswan.android.logic;
 
-import android.support.annotation.Keep;
-
 import java.io.BufferedOutputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
@@ -34,6 +32,8 @@ import java.util.concurrent.Future;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.TimeoutException;
 
+import androidx.annotation.Keep;
+
 @Keep
 public class SimpleFetcher
 {
index 5889293616e65481d52a0e7f16ba2cbd7411ddc2..551aff60bf6c12ac18af17b24337741ca0cb8931 100644 (file)
@@ -24,7 +24,6 @@ import android.os.Handler;
 import android.os.IBinder;
 import android.os.Message;
 import android.os.SystemClock;
-import android.support.v4.content.ContextCompat;
 
 import org.strongswan.android.R;
 import org.strongswan.android.data.VpnProfile;
@@ -41,6 +40,8 @@ import java.util.LinkedList;
 import java.util.List;
 import java.util.concurrent.Callable;
 
+import androidx.core.content.ContextCompat;
+
 public class VpnStateService extends Service
 {
        private final HashSet<VpnStateListener> mListeners = new HashSet<VpnStateListener>();
index 5e36b11ffae822b3e10fe7aac930b4834465b132..e1a087277ba7bd04278c7a9333e88e7cd19b4a0d 100644 (file)
@@ -19,11 +19,12 @@ import android.app.Dialog;
 import android.content.Context;
 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;
 
+import androidx.appcompat.app.AlertDialog;
+import androidx.appcompat.app.AppCompatDialogFragment;
+
 /**
  * Class that displays a confirmation dialog to delete a selected local
  * certificate.
index a3cb245e8cffce4394d0ddf3d9d5aaf6e1bdc014..fe8e770db626601e024e332e0dbd53260f10c0d4 100644 (file)
@@ -22,10 +22,6 @@ import android.content.Intent;
 import android.content.ServiceConnection;
 import android.os.Bundle;
 import android.os.IBinder;
-import android.support.v4.app.Fragment;
-import android.support.v4.app.FragmentManager;
-import android.support.v4.app.FragmentTransaction;
-import android.support.v4.content.ContextCompat;
 import android.view.GestureDetector;
 import android.view.LayoutInflater;
 import android.view.MotionEvent;
@@ -45,6 +41,11 @@ import org.strongswan.android.logic.imc.RemediationInstruction;
 
 import java.util.ArrayList;
 
+import androidx.core.content.ContextCompat;
+import androidx.fragment.app.Fragment;
+import androidx.fragment.app.FragmentManager;
+import androidx.fragment.app.FragmentTransaction;
+
 public class ImcStateFragment extends Fragment implements VpnStateListener
 {
        private int mColorIsolate;
index c67017bb2d949588f058f748bb105b044f77be33..adcd83228dd78ec1ad5d6b1e57ee8ca34cc2187a 100644 (file)
@@ -18,7 +18,6 @@ package org.strongswan.android.ui;
 import android.content.Intent;
 import android.content.pm.PackageManager.NameNotFoundException;
 import android.os.Bundle;
-import android.support.v7.app.AppCompatActivity;
 import android.view.Menu;
 import android.view.MenuItem;
 import android.widget.Toast;
@@ -29,6 +28,8 @@ import org.strongswan.android.logic.CharonVpnService;
 
 import java.io.File;
 
+import androidx.appcompat.app.AppCompatActivity;
+
 public class LogActivity extends AppCompatActivity
 {
        @Override
index 625940fd4f19419d97bb48193121a9abecaf5952..2882740d52ab149c50125f13896018c41d38de69 100644 (file)
@@ -19,8 +19,6 @@ import android.content.Context;
 import android.os.Bundle;
 import android.os.FileObserver;
 import android.os.Handler;
-import android.support.annotation.NonNull;
-import android.support.v4.app.Fragment;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
@@ -37,6 +35,9 @@ import java.io.FileReader;
 import java.io.StringReader;
 import java.util.ArrayList;
 
+import androidx.annotation.NonNull;
+import androidx.fragment.app.Fragment;
+
 public class LogFragment extends Fragment
 {
        private static String SCROLL_POSITION = "SCROLL_POSITION";
index bfef8e98caf21f216ee68e9532c81aa61229ca59..b00f3b20587ac62f07b5683665ef81d41731f9b0 100644 (file)
@@ -23,13 +23,6 @@ import android.content.Intent;
 import android.os.AsyncTask;
 import android.os.Build;
 import android.os.Bundle;
-import android.support.v4.app.Fragment;
-import android.support.v4.app.FragmentManager;
-import android.support.v4.app.FragmentTransaction;
-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.text.format.Formatter;
 import android.view.Menu;
 import android.view.MenuItem;
@@ -44,6 +37,14 @@ import java.io.File;
 import java.util.ArrayList;
 import java.util.List;
 
+import androidx.appcompat.app.ActionBar;
+import androidx.appcompat.app.AlertDialog;
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.appcompat.app.AppCompatDialogFragment;
+import androidx.fragment.app.Fragment;
+import androidx.fragment.app.FragmentManager;
+import androidx.fragment.app.FragmentTransaction;
+
 public class MainActivity extends AppCompatActivity implements OnVpnProfileSelectedListener
 {
        public static final String CONTACT_EMAIL = "android@strongswan.org";
index d5d901b145706c67c4558ea204f904047c1567ac..aa1f4729aba0b88aca9f9a68cba1fddba5386d85 100644 (file)
@@ -16,7 +16,6 @@
 package org.strongswan.android.ui;
 
 import android.os.Bundle;
-import android.support.v4.app.ListFragment;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
@@ -27,6 +26,8 @@ import android.widget.TextView;
 import org.strongswan.android.R;
 import org.strongswan.android.logic.imc.RemediationInstruction;
 
+import androidx.fragment.app.ListFragment;
+
 public class RemediationInstructionFragment extends ListFragment
 {
        public static final String ARG_REMEDIATION_INSTRUCTION = "instruction";
index 7f55427450fb2fe9ce20d9a38c9d83026aa0d41a..66ea9e580f3a314d6dff70e02ded76f28dfe8298 100644 (file)
@@ -16,7 +16,7 @@
 package org.strongswan.android.ui;
 
 import android.os.Bundle;
-import android.support.v7.app.AppCompatActivity;
+import androidx.appcompat.app.AppCompatActivity;
 import android.view.MenuItem;
 
 import org.strongswan.android.R;
index 32605e99c68874f9a24103c643811500c66c61cd..d00f561e0a740b7013655cc14dcecba6047fe83a 100644 (file)
@@ -17,7 +17,6 @@ package org.strongswan.android.ui;
 
 import android.content.Context;
 import android.os.Bundle;
-import android.support.v4.app.ListFragment;
 import android.view.View;
 import android.widget.ListView;
 
@@ -27,6 +26,8 @@ import org.strongswan.android.ui.adapter.RemediationInstructionAdapter;
 
 import java.util.ArrayList;
 
+import androidx.fragment.app.ListFragment;
+
 public class RemediationInstructionsFragment extends ListFragment
 {
        public static final String EXTRA_REMEDIATION_INSTRUCTIONS = "instructions";
index db2e56655c8698a7944fbc5e583cc7eb39ea55c4..6e9a95767ff983520dbc383785aab504d5aafb92 100644 (file)
@@ -17,14 +17,15 @@ package org.strongswan.android.ui;
 
 import android.content.Intent;
 import android.os.Bundle;
-import android.support.annotation.Nullable;
-import android.support.v4.app.FragmentManager;
-import android.support.v7.app.ActionBar;
-import android.support.v7.app.AppCompatActivity;
 import android.view.MenuItem;
 
 import org.strongswan.android.data.VpnProfileDataSource;
 
+import androidx.annotation.Nullable;
+import androidx.appcompat.app.ActionBar;
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.fragment.app.FragmentManager;
+
 public class SelectedApplicationsActivity extends AppCompatActivity
 {
        private static final String LIST_TAG = "ApplicationList";
index 1f0b693e42a71d6b2a3e6c597dd7ff0a96cf8a8a..2b041efa78d6e7ca725c25771105fbd9e1f098c4 100644 (file)
@@ -20,12 +20,6 @@ import android.content.Context;
 import android.content.pm.ApplicationInfo;
 import android.content.pm.PackageManager;
 import android.os.Bundle;
-import android.support.annotation.Nullable;
-import android.support.v4.app.ListFragment;
-import android.support.v4.app.LoaderManager;
-import android.support.v4.content.AsyncTaskLoader;
-import android.support.v4.content.Loader;
-import android.support.v7.widget.SearchView;
 import android.text.TextUtils;
 import android.util.Pair;
 import android.view.Menu;
@@ -46,6 +40,13 @@ import java.util.List;
 import java.util.SortedSet;
 import java.util.TreeSet;
 
+import androidx.annotation.Nullable;
+import androidx.appcompat.widget.SearchView;
+import androidx.fragment.app.ListFragment;
+import androidx.loader.app.LoaderManager;
+import androidx.loader.content.AsyncTaskLoader;
+import androidx.loader.content.Loader;
+
 public class SelectedApplicationsListFragment extends ListFragment implements LoaderManager.LoaderCallbacks<Pair<List<SelectedApplicationEntry>, List<String>>>, SearchView.OnQueryTextListener
 {
        private SelectedApplicationsAdapter mAdapter;
index ad28529f8ea6611a1abeaa46e478e5aeefa222ea..f70d46151ddef83f54c19c9c33291ed06fba1caf 100644 (file)
 package org.strongswan.android.ui;
 
 import android.os.Bundle;
-import android.support.v7.app.AppCompatActivity;
 import android.view.MenuItem;
 
+import androidx.appcompat.app.AppCompatActivity;
+
 public class SettingsActivity extends AppCompatActivity
 {
 
index b710c828c622c8c644cf686ecffaa462042e0f5f..654f57485274bb0d0aac1f7ad4aaa91afb8fdbc1 100644 (file)
@@ -18,10 +18,6 @@ package org.strongswan.android.ui;
 import android.content.SharedPreferences;
 import android.os.Build;
 import android.os.Bundle;
-import android.support.v7.preference.ListPreference;
-import android.support.v7.preference.Preference;
-import android.support.v7.preference.PreferenceFragmentCompat;
-import android.support.v7.preference.PreferenceManager;
 
 import org.strongswan.android.R;
 import org.strongswan.android.data.VpnProfile;
@@ -32,6 +28,11 @@ import java.util.Collections;
 import java.util.Comparator;
 import java.util.List;
 
+import androidx.preference.ListPreference;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceFragmentCompat;
+import androidx.preference.PreferenceManager;
+
 import static org.strongswan.android.utils.Constants.PREF_DEFAULT_VPN_PROFILE;
 import static org.strongswan.android.utils.Constants.PREF_DEFAULT_VPN_PROFILE_MRU;
 
index 9cfecf34850121e7a27af58ec1a13e3b69ff9532..4581d44274a4731461b644742646db19b4785e06 100644 (file)
@@ -24,10 +24,6 @@ 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;
@@ -41,6 +37,11 @@ import java.security.cert.CertificateException;
 import java.security.cert.CertificateFactory;
 import java.security.cert.X509Certificate;
 
+import androidx.appcompat.app.AlertDialog;
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.appcompat.app.AppCompatDialogFragment;
+import androidx.fragment.app.FragmentTransaction;
+
 public class TrustedCertificateImportActivity extends AppCompatActivity
 {
        private static final int OPEN_DOCUMENT = 0;
index 4d4beafa85f62b7ccc78f4bbeb95ccbbb5e396a0..b89386a86d1244d4470e6e8e856ed6f69a32ed99 100644 (file)
@@ -17,11 +17,6 @@ package org.strongswan.android.ui;
 
 import android.content.Context;
 import android.os.Bundle;
-import android.support.v4.app.ListFragment;
-import android.support.v4.app.LoaderManager;
-import android.support.v4.app.LoaderManager.LoaderCallbacks;
-import android.support.v4.content.AsyncTaskLoader;
-import android.support.v4.content.Loader;
 import android.text.TextUtils;
 import android.view.Menu;
 import android.view.MenuInflater;
@@ -46,6 +41,12 @@ import java.util.Map.Entry;
 import java.util.Observable;
 import java.util.Observer;
 
+import androidx.fragment.app.ListFragment;
+import androidx.loader.app.LoaderManager;
+import androidx.loader.app.LoaderManager.LoaderCallbacks;
+import androidx.loader.content.AsyncTaskLoader;
+import androidx.loader.content.Loader;
+
 public class TrustedCertificateListFragment extends ListFragment implements LoaderCallbacks<List<TrustedCertificateEntry>>, OnQueryTextListener
 {
        public static final String EXTRA_CERTIFICATE_SOURCE = "certificate_source";
index 0110b63c8baff51b3c175e698e0a664b58382110..2953790230db54ada5ac3399c38193861ea06c66 100644 (file)
@@ -20,16 +20,11 @@ import android.content.Context;
 import android.content.Intent;
 import android.os.Build;
 import android.os.Bundle;
-import android.support.design.widget.TabLayout;
-import android.support.v4.app.Fragment;
-import android.support.v4.app.FragmentManager;
-import android.support.v4.app.FragmentPagerAdapter;
-import android.support.v4.view.ViewPager;
-import android.support.v7.app.ActionBar;
-import android.support.v7.app.AppCompatActivity;
 import android.view.Menu;
 import android.view.MenuItem;
 
+import com.google.android.material.tabs.TabLayout;
+
 import org.strongswan.android.R;
 import org.strongswan.android.data.VpnProfileDataSource;
 import org.strongswan.android.logic.TrustedCertificateManager;
@@ -39,6 +34,13 @@ import org.strongswan.android.ui.CertificateDeleteConfirmationDialog.OnCertifica
 
 import java.security.KeyStore;
 
+import androidx.appcompat.app.ActionBar;
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.fragment.app.Fragment;
+import androidx.fragment.app.FragmentManager;
+import androidx.fragment.app.FragmentPagerAdapter;
+import androidx.viewpager.widget.ViewPager;
+
 public class TrustedCertificatesActivity extends AppCompatActivity implements TrustedCertificateListFragment.OnTrustedCertificateSelectedListener, OnCertificateDeleteListener
 {
        public static final String SELECT_CERTIFICATE = "org.strongswan.android.action.SELECT_CERTIFICATE";
index 78cbebfae4fe7a8936725e9f58b6a3517f4ba4b7..813afbb94195ad0cdba7d4b365df6a814117e7f3 100644 (file)
@@ -25,12 +25,6 @@ import android.content.ServiceConnection;
 import android.net.VpnService;
 import android.os.Bundle;
 import android.os.IBinder;
-import android.support.v4.app.Fragment;
-import android.support.v4.app.FragmentManager;
-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.view.LayoutInflater;
 import android.view.View;
 import android.widget.EditText;
@@ -43,6 +37,13 @@ import org.strongswan.android.data.VpnType.VpnTypeFeature;
 import org.strongswan.android.logic.VpnStateService;
 import org.strongswan.android.logic.VpnStateService.State;
 
+import androidx.appcompat.app.AlertDialog;
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.appcompat.app.AppCompatDialogFragment;
+import androidx.fragment.app.Fragment;
+import androidx.fragment.app.FragmentManager;
+import androidx.fragment.app.FragmentTransaction;
+
 public class VpnProfileControlActivity extends AppCompatActivity
 {
        public static final String START_PROFILE = "org.strongswan.android.action.START_PROFILE";
index e0965873c7bc25ebbb9c094ed140fbac175cc3f7..03adc1ce591bab01e5ad986eea45f45f51aeef4a 100644 (file)
@@ -27,10 +27,6 @@ import android.os.Bundle;
 import android.security.KeyChain;
 import android.security.KeyChainAliasCallback;
 import android.security.KeyChainException;
-import android.support.v4.content.LocalBroadcastManager;
-import android.support.v7.app.AlertDialog;
-import android.support.v7.app.AppCompatActivity;
-import android.support.v7.app.AppCompatDialogFragment;
 import android.text.Editable;
 import android.text.Html;
 import android.text.SpannableString;
@@ -79,6 +75,11 @@ import java.util.SortedSet;
 import java.util.TreeSet;
 import java.util.UUID;
 
+import androidx.appcompat.app.AlertDialog;
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.appcompat.app.AppCompatDialogFragment;
+import androidx.localbroadcastmanager.content.LocalBroadcastManager;
+
 public class VpnProfileDetailActivity extends AppCompatActivity
 {
        private static final int SELECT_TRUSTED_CERTIFICATE = 0;
index eda51a006e9c53391a7351f709feb581ea8286f4..eae76837825edd4211b14c540174852812088aae 100644 (file)
@@ -26,11 +26,6 @@ import android.os.Bundle;
 import android.security.KeyChain;
 import android.security.KeyChainAliasCallback;
 import android.security.KeyChainException;
-import android.support.v4.app.LoaderManager;
-import android.support.v4.content.AsyncTaskLoader;
-import android.support.v4.content.Loader;
-import android.support.v4.content.LocalBroadcastManager;
-import android.support.v7.app.AppCompatActivity;
 import android.text.TextUtils;
 import android.util.Base64;
 import android.view.Menu;
@@ -79,6 +74,12 @@ import java.util.UUID;
 
 import javax.net.ssl.SSLHandshakeException;
 
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.loader.app.LoaderManager;
+import androidx.loader.content.AsyncTaskLoader;
+import androidx.loader.content.Loader;
+import androidx.localbroadcastmanager.content.LocalBroadcastManager;
+
 public class VpnProfileImportActivity extends AppCompatActivity
 {
        private static final String PKCS12_INSTALLED = "PKCS12_INSTALLED";
@@ -95,7 +96,7 @@ public class VpnProfileImportActivity extends AppCompatActivity
        private TrustedCertificateEntry mUserCertEntry;
        private String mUserCertLoading;
        private boolean mHideImport;
-       private android.support.v4.widget.ContentLoadingProgressBar mProgressBar;
+       private androidx.core.widget.ContentLoadingProgressBar mProgressBar;
        private TextView mExistsWarning;
        private ViewGroup mBasicDataGroup;
        private TextView mName;
index 904b4341c1dee8dcaee9402b71b71a2ed5b6a6be..c6d430f369831fea993a45abe6084171f72e0af3 100644 (file)
@@ -23,8 +23,6 @@ import android.content.Intent;
 import android.content.IntentFilter;
 import android.content.res.TypedArray;
 import android.os.Bundle;
-import android.support.v4.app.Fragment;
-import android.support.v4.content.LocalBroadcastManager;
 import android.util.AttributeSet;
 import android.view.ActionMode;
 import android.view.LayoutInflater;
@@ -51,6 +49,9 @@ import java.util.Iterator;
 import java.util.List;
 import java.util.UUID;
 
+import androidx.fragment.app.Fragment;
+import androidx.localbroadcastmanager.content.LocalBroadcastManager;
+
 public class VpnProfileListFragment extends Fragment
 {
        private static final String SELECTED_KEY = "SELECTED";
index fe3d01322a661b622e429b655e6a48c2cae51808..0b1e61187d2c93a8179119a6cf321c4e40651cb9 100644 (file)
@@ -17,15 +17,16 @@ package org.strongswan.android.ui;
 
 import android.content.Intent;
 import android.os.Bundle;
-import android.support.v4.content.pm.ShortcutInfoCompat;
-import android.support.v4.content.pm.ShortcutManagerCompat;
-import android.support.v4.graphics.drawable.IconCompat;
-import android.support.v7.app.AppCompatActivity;
 
 import org.strongswan.android.R;
 import org.strongswan.android.data.VpnProfile;
 import org.strongswan.android.ui.VpnProfileListFragment.OnVpnProfileSelectedListener;
 
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.core.content.pm.ShortcutInfoCompat;
+import androidx.core.content.pm.ShortcutManagerCompat;
+import androidx.core.graphics.drawable.IconCompat;
+
 public class VpnProfileSelectActivity extends AppCompatActivity implements OnVpnProfileSelectedListener
 {
        @Override
index edc70fa9642ac45f7c34676a2e18a75f061f9860..1214b1247418abd2fd13c2468275a326ea8334c5 100644 (file)
@@ -24,8 +24,6 @@ import android.content.Intent;
 import android.content.ServiceConnection;
 import android.os.Bundle;
 import android.os.IBinder;
-import android.support.v4.app.Fragment;
-import android.support.v4.content.ContextCompat;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
@@ -41,6 +39,9 @@ import org.strongswan.android.logic.VpnStateService.ErrorState;
 import org.strongswan.android.logic.VpnStateService.State;
 import org.strongswan.android.logic.VpnStateService.VpnStateListener;
 
+import androidx.core.content.ContextCompat;
+import androidx.fragment.app.Fragment;
+
 public class VpnStateFragment extends Fragment implements VpnStateListener
 {
        private boolean mVisible;
index 0bfbbcfa502b997be9723c6b1c3accc925d20e14..df6753db5b1a27300e5c77a4b97521a032638926 100644 (file)
@@ -18,10 +18,11 @@ package org.strongswan.android.ui.adapter;
 import android.content.pm.ApplicationInfo;
 import android.content.pm.PackageManager;
 import android.graphics.drawable.Drawable;
-import android.support.annotation.NonNull;
 
 import java.text.Collator;
 
+import androidx.annotation.NonNull;
+
 public class SelectedApplicationEntry implements Comparable<SelectedApplicationEntry>
 {
        private final ApplicationInfo mInfo;
index fb5e85b0d7badc936013c9c3b23265a5123e3f14..48e942ff85cf774553f4b4a6f12d03a5b1009444 100644 (file)
 package org.strongswan.android.ui.widget;
 
 import android.content.Context;
-import android.support.annotation.Nullable;
 import android.util.AttributeSet;
 import android.widget.Checkable;
 import android.widget.LinearLayout;
 
+import androidx.annotation.Nullable;
+
 public class CheckableLinearLayout extends LinearLayout implements Checkable
 {
        private static final int[] CHECKED_STATE_SET = {android.R.attr.state_checked};
index 45b0ae592c37f483de6e48b1f90dbac619d28c1f..4897933d90ed7cea6c49c02c482a37513a72e0cf 100644 (file)
@@ -17,10 +17,6 @@ package org.strongswan.android.ui.widget;
 
 import android.content.Context;
 import android.content.res.TypedArray;
-import android.support.annotation.Nullable;
-import android.support.design.widget.TextInputLayout;
-import android.support.v4.view.ViewCompat;
-import android.support.v4.view.ViewPropertyAnimatorListenerAdapter;
 import android.text.Editable;
 import android.text.TextWatcher;
 import android.util.AttributeSet;
@@ -31,10 +27,16 @@ import android.widget.EditText;
 import android.widget.LinearLayout;
 import android.widget.TextView;
 
+import com.google.android.material.textfield.TextInputLayout;
+
 import org.strongswan.android.R;
 
+import androidx.annotation.Nullable;
+import androidx.core.view.ViewCompat;
+import androidx.core.view.ViewPropertyAnimatorListenerAdapter;
+
 /**
- * Layout that extends {@link android.support.design.widget.TextInputLayout} with a helper text
+ * Layout that extends {@link TextInputLayout} with a helper text
  * displayed below the text field when it receives the focus. Also, any error message shown with
  * {@link #setError(CharSequence)} is hidden when the text field is changed (this mirrors the
  * behavior of {@link android.widget.EditText}).
index e8397707a0873abaffc77d813861674395806a96..64e0bab234bb52e5d55c4db9fdb32107c93a2c09 100644 (file)
@@ -15,8 +15,6 @@
 
 package org.strongswan.android.utils;
 
-import android.support.annotation.NonNull;
-
 import java.net.InetAddress;
 import java.net.UnknownHostException;
 import java.util.ArrayList;
@@ -24,6 +22,8 @@ import java.util.Arrays;
 import java.util.Collections;
 import java.util.List;
 
+import androidx.annotation.NonNull;
+
 /**
  * Class that represents a range of IP addresses. This range could be a proper subnet, but that's
  * not necessarily the case (see {@code getPrefix} and {@code toSubnets}).
index 32892da16ce39f445e1cc8af3a1fdcce58b61e1b..0f69378469c6d7b247c0a3d2cdd432ddd62629b2 100644 (file)
     android:orientation="vertical"
     android:padding="10dp" >
 
-    <android.support.design.widget.TextInputLayout
+    <com.google.android.material.textfield.TextInputLayout
         android:id="@+id/username_wrap"
         android:layout_width="match_parent"
         android:layout_height="wrap_content" >
 
-        <android.support.design.widget.TextInputEditText
+        <com.google.android.material.textfield.TextInputEditText
             android:id="@+id/username"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:inputType="none"
             android:hint="@string/login_username" />
 
-    </android.support.design.widget.TextInputLayout>
+    </com.google.android.material.textfield.TextInputLayout>
 
-    <android.support.design.widget.TextInputLayout
+    <com.google.android.material.textfield.TextInputLayout
         android:id="@+id/password_wrap"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:layout_marginTop="4dp" >
 
-        <android.support.design.widget.TextInputEditText
+        <com.google.android.material.textfield.TextInputEditText
             android:id="@+id/password"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
@@ -50,6 +50,6 @@
             android:inputType="textPassword|textNoSuggestions"
             android:hint="@string/login_password" />
 
-    </android.support.design.widget.TextInputLayout>
+    </com.google.android.material.textfield.TextInputLayout>
 
 </LinearLayout>
index 671c58d67d000661eea9cb8b3cfac312a01e44f0..0bdbc1d687ee9037527c3abdc85df0c82af772fc 100644 (file)
@@ -35,7 +35,7 @@
             android:hint="@string/profile_gateway_label"
             app:helper_text="@string/profile_gateway_hint" >
 
-            <android.support.design.widget.TextInputEditText
+            <com.google.android.material.textfield.TextInputEditText
                 android:id="@+id/gateway"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
@@ -75,7 +75,7 @@
                 android:layout_height="wrap_content"
                 android:hint="@string/profile_username_label" >
 
-                <android.support.design.widget.TextInputEditText
+                <com.google.android.material.textfield.TextInputEditText
                     android:id="@+id/username"
                     android:layout_width="match_parent"
                     android:layout_height="wrap_content"
@@ -92,7 +92,7 @@
                 android:hint="@string/profile_password_label"
                 app:helper_text="@string/profile_password_hint" >
 
-                <android.support.design.widget.TextInputEditText
+                <com.google.android.material.textfield.TextInputEditText
                     android:id="@+id/password"
                     android:layout_width="match_parent"
                     android:layout_height="wrap_content"
                 android:hint="@string/profile_mtu_label"
                 app:helper_text="@string/profile_mtu_hint" >
 
-                <android.support.design.widget.TextInputEditText
+                <com.google.android.material.textfield.TextInputEditText
                     android:id="@+id/mtu"
                     android:layout_width="match_parent"
                     android:layout_height="wrap_content"
                 android:hint="@string/profile_port_label"
                 app:helper_text="@string/profile_port_hint" >
 
-                <android.support.design.widget.TextInputEditText
+                <com.google.android.material.textfield.TextInputEditText
                     android:id="@+id/port"
                     android:layout_width="match_parent"
                     android:layout_height="wrap_content"
                 android:hint="@string/profile_nat_keepalive_label"
                 app:helper_text="@string/profile_nat_keepalive_hint" >
 
-                <android.support.design.widget.TextInputEditText
+                <com.google.android.material.textfield.TextInputEditText
                     android:id="@+id/nat_keepalive"
                     android:layout_width="match_parent"
                     android:layout_height="wrap_content"
                 android:hint="@string/profile_included_subnets_label"
                 app:helper_text="@string/profile_included_subnets_hint" >
 
-                <android.support.design.widget.TextInputEditText
+                <com.google.android.material.textfield.TextInputEditText
                     android:id="@+id/included_subnets"
                     android:layout_width="match_parent"
                     android:layout_height="wrap_content"
                 android:hint="@string/profile_excluded_subnets_label"
                 app:helper_text="@string/profile_excluded_subnets_hint" >
 
-                <android.support.design.widget.TextInputEditText
+                <com.google.android.material.textfield.TextInputEditText
                     android:id="@+id/excluded_subnets"
                     android:layout_width="match_parent"
                     android:layout_height="wrap_content"
                 android:hint="@string/profile_proposals_ike_label"
                 app:helper_text="@string/profile_proposals_ike_hint" >
 
-                <android.support.design.widget.TextInputEditText
+                <com.google.android.material.textfield.TextInputEditText
                     android:id="@+id/ike_proposal"
                     android:layout_width="match_parent"
                     android:layout_height="wrap_content"
                 android:hint="@string/profile_proposals_esp_label"
                 app:helper_text="@string/profile_proposals_esp_hint" >
 
-                <android.support.design.widget.TextInputEditText
+                <com.google.android.material.textfield.TextInputEditText
                     android:id="@+id/esp_proposal"
                     android:layout_width="match_parent"
                     android:layout_height="wrap_content"
index 8fba69f3ff67903245cf11fe016b9aff0857ea26..3b130da1faea0d9279f894a9a641b1121adce8ac 100644 (file)
@@ -25,7 +25,7 @@
         android:padding="10dp"
         android:animateLayoutChanges="true" >
 
-        <android.support.v4.widget.ContentLoadingProgressBar
+        <androidx.core.widget.ContentLoadingProgressBar
             style="@style/Widget.AppCompat.ProgressBar.Horizontal"
             android:id="@+id/progress_bar"
             android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:hint="@string/profile_username_label" >
 
-                <android.support.design.widget.TextInputEditText
+                <com.google.android.material.textfield.TextInputEditText
                     android:id="@+id/username"
                     android:layout_width="match_parent"
                     android:layout_height="wrap_content"
                 android:hint="@string/profile_password_label"
                 app:helper_text="@string/profile_password_hint" >
 
-                <android.support.design.widget.TextInputEditText
+                <com.google.android.material.textfield.TextInputEditText
                     android:id="@+id/password"
                     android:layout_width="match_parent"
                     android:layout_height="wrap_content"
index 20d1cc0172676ceb120393bc3d1f191e76682f76..44b45e6288dc55fddc44d45a4200175e1ce4a350 100644 (file)
               android:layout_height="match_parent"
               android:orientation="vertical">
 
-    <android.support.design.widget.TabLayout
+    <com.google.android.material.tabs.TabLayout
         android:id="@+id/tabs"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         app:tabGravity="fill"
         app:tabMode="fixed"/>
 
-    <android.support.v4.view.ViewPager
+    <androidx.viewpager.widget.ViewPager
         android:id="@+id/viewpager"
         android:layout_width="match_parent"
         android:layout_height="0dp"
diff --git a/src/frontends/android/gradle.properties b/src/frontends/android/gradle.properties
new file mode 100644 (file)
index 0000000..5465fec
--- /dev/null
@@ -0,0 +1,2 @@
+android.enableJetifier=true
+android.useAndroidX=true
\ No newline at end of file