75 lines
2.5 KiB
Java
75 lines
2.5 KiB
Java
/*
|
|
* Copyright © 2017-2019 WireGuard LLC. All Rights Reserved.
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
package com.wireguard.android.preference;
|
|
|
|
import android.content.ActivityNotFoundException;
|
|
import android.content.Context;
|
|
import android.content.Intent;
|
|
import android.net.Uri;
|
|
import android.util.AttributeSet;
|
|
|
|
import com.wireguard.android.Application;
|
|
import com.wireguard.android.BuildConfig;
|
|
import com.wireguard.android.R;
|
|
import com.wireguard.android.backend.Backend;
|
|
import com.wireguard.android.backend.GoBackend;
|
|
import com.wireguard.android.backend.WgQuickBackend;
|
|
import com.wireguard.util.NonNullForAll;
|
|
|
|
import java.util.Locale;
|
|
|
|
import androidx.annotation.Nullable;
|
|
import androidx.preference.Preference;
|
|
|
|
@NonNullForAll
|
|
public class VersionPreference extends Preference {
|
|
@Nullable private String versionSummary;
|
|
|
|
public VersionPreference(final Context context, final AttributeSet attrs) {
|
|
super(context, attrs);
|
|
|
|
Application.getBackendAsync().thenAccept(backend -> {
|
|
versionSummary = getContext().getString(R.string.version_summary_checking, getBackendPrettyName(context, backend).toLowerCase(Locale.ENGLISH));
|
|
Application.getAsyncWorker().supplyAsync(backend::getVersion).whenComplete((version, exception) -> {
|
|
versionSummary = exception == null
|
|
? getContext().getString(R.string.version_summary, getBackendPrettyName(context, backend), version)
|
|
: getContext().getString(R.string.version_summary_unknown, getBackendPrettyName(context, backend).toLowerCase(Locale.ENGLISH));
|
|
notifyChanged();
|
|
});
|
|
});
|
|
}
|
|
|
|
private static String getBackendPrettyName(final Context context, final Backend backend) {
|
|
if (backend instanceof WgQuickBackend)
|
|
return context.getString(R.string.type_name_kernel_module);
|
|
if (backend instanceof GoBackend)
|
|
return context.getString(R.string.type_name_go_userspace);
|
|
return "";
|
|
}
|
|
|
|
@Nullable
|
|
@Override
|
|
public CharSequence getSummary() {
|
|
return versionSummary;
|
|
}
|
|
|
|
@Override
|
|
public CharSequence getTitle() {
|
|
return getContext().getString(R.string.version_title, BuildConfig.VERSION_NAME);
|
|
}
|
|
|
|
@Override
|
|
protected void onClick() {
|
|
final Intent intent = new Intent(Intent.ACTION_VIEW);
|
|
intent.setData(Uri.parse("https://www.wireguard.com/"));
|
|
try {
|
|
getContext().startActivity(intent);
|
|
} catch (final ActivityNotFoundException ignored) {
|
|
}
|
|
}
|
|
|
|
}
|