diff options
Diffstat (limited to 'app/src/main/java/com/wireguard/android/preference/ModuleDownloaderPreference.java')
-rw-r--r-- | app/src/main/java/com/wireguard/android/preference/ModuleDownloaderPreference.java | 92 |
1 files changed, 0 insertions, 92 deletions
diff --git a/app/src/main/java/com/wireguard/android/preference/ModuleDownloaderPreference.java b/app/src/main/java/com/wireguard/android/preference/ModuleDownloaderPreference.java deleted file mode 100644 index aac649dd..00000000 --- a/app/src/main/java/com/wireguard/android/preference/ModuleDownloaderPreference.java +++ /dev/null @@ -1,92 +0,0 @@ -/* - * Copyright © 2019 WireGuard LLC. All Rights Reserved. - * SPDX-License-Identifier: Apache-2.0 - */ - -package com.wireguard.android.preference; - -import android.content.Context; -import android.content.Intent; -import android.system.OsConstants; -import android.util.AttributeSet; -import android.widget.Toast; - -import com.wireguard.android.Application; -import com.wireguard.android.R; -import com.wireguard.android.util.ErrorMessages; -import com.wireguard.android.util.ModuleLoader; -import com.wireguard.android.util.ToolsInstaller; - -import androidx.annotation.Nullable; -import androidx.preference.Preference; - -public class ModuleDownloaderPreference extends Preference { - private State state = State.INITIAL; - - public ModuleDownloaderPreference(final Context context, final AttributeSet attrs) { - super(context, attrs); - } - - @Override - public CharSequence getSummary() { - return getContext().getString(state.messageResourceId); - } - - @Override - public CharSequence getTitle() { - return getContext().getString(R.string.module_installer_title); - } - - @Override - protected void onClick() { - setState(State.WORKING); - Application.getAsyncWorker().supplyAsync(Application.getModuleLoader()::download).whenComplete(this::onDownloadResult); - } - - private void onDownloadResult(final Integer result, @Nullable final Throwable throwable) { - if (throwable != null) { - setState(State.FAILURE); - Toast.makeText(getContext(), ErrorMessages.get(throwable), Toast.LENGTH_LONG).show(); - } else if (result == OsConstants.ENOENT) - setState(State.NOTFOUND); - else if (result == OsConstants.EXIT_SUCCESS) { - setState(State.SUCCESS); - Application.getAsyncWorker().runAsync(() -> { - Thread.sleep(1000 * 5); - Intent i = getContext().getPackageManager().getLaunchIntentForPackage(getContext().getPackageName()); - if (i == null) - return; - i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); - i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - Application.get().startActivity(i); - System.exit(0); - }); - } else - setState(State.FAILURE); - } - - private void setState(final State state) { - if (this.state == state) - return; - this.state = state; - if (isEnabled() != state.shouldEnableView) - setEnabled(state.shouldEnableView); - notifyChanged(); - } - - private enum State { - INITIAL(R.string.module_installer_initial, true), - FAILURE(R.string.module_installer_error, true), - WORKING(R.string.module_installer_working, false), - SUCCESS(R.string.module_installer_success, false), - NOTFOUND(R.string.module_installer_not_found, false); - - private final int messageResourceId; - private final boolean shouldEnableView; - - State(final int messageResourceId, final boolean shouldEnableView) { - this.messageResourceId = messageResourceId; - this.shouldEnableView = shouldEnableView; - } - } -} |