From 7d9cb2f62b12453c592d949974c131f5bf1ca7c1 Mon Sep 17 00:00:00 2001 From: Arne Schwabe Date: Sun, 17 Nov 2019 11:18:51 +0100 Subject: Convert OpenSSLSpeed,bugfixes for library conversion --- .../de/blinkt/openvpn/activities/LogWindow.java | 2 +- .../de/blinkt/openvpn/activities/OpenSSLSpeed.java | 192 --------------------- .../de/blinkt/openvpn/activities/OpenSSLSpeed.kt | 178 +++++++++++++++++++ .../de/blinkt/openvpn/fragments/LogFragment.java | 27 ++- main/src/ui/res/values-night-v21/refs.xml | 9 - main/src/ui/res/values-v21/refs.xml | 27 --- 6 files changed, 190 insertions(+), 245 deletions(-) delete mode 100644 main/src/ui/java/de/blinkt/openvpn/activities/OpenSSLSpeed.java create mode 100644 main/src/ui/java/de/blinkt/openvpn/activities/OpenSSLSpeed.kt delete mode 100644 main/src/ui/res/values-night-v21/refs.xml delete mode 100644 main/src/ui/res/values-v21/refs.xml (limited to 'main/src/ui') diff --git a/main/src/ui/java/de/blinkt/openvpn/activities/LogWindow.java b/main/src/ui/java/de/blinkt/openvpn/activities/LogWindow.java index fa0106a9..5277a25d 100644 --- a/main/src/ui/java/de/blinkt/openvpn/activities/LogWindow.java +++ b/main/src/ui/java/de/blinkt/openvpn/activities/LogWindow.java @@ -20,7 +20,7 @@ public class LogWindow extends BaseActivity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.log_window); - getActionBar().setDisplayHomeAsUpEnabled(true); + getSupportActionBar().setDisplayHomeAsUpEnabled(true); if (savedInstanceState == null) { getSupportFragmentManager().beginTransaction() diff --git a/main/src/ui/java/de/blinkt/openvpn/activities/OpenSSLSpeed.java b/main/src/ui/java/de/blinkt/openvpn/activities/OpenSSLSpeed.java deleted file mode 100644 index eb0fe9cd..00000000 --- a/main/src/ui/java/de/blinkt/openvpn/activities/OpenSSLSpeed.java +++ /dev/null @@ -1,192 +0,0 @@ -/* - * Copyright (c) 2012-2017 Arne Schwabe - * Distributed under the GNU GPL v2 with additional terms. For full terms see the file doc/LICENSE.txt - */ - -package de.blinkt.openvpn.activities; - -import android.content.Context; -import android.os.AsyncTask; -import android.os.Bundle; -import android.app.Activity; -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ArrayAdapter; -import android.widget.EditText; -import android.widget.ListView; -import android.widget.TextView; - -import java.util.Locale; -import java.util.Vector; - -import de.blinkt.openvpn.R; -import de.blinkt.openvpn.core.NativeUtils; -import de.blinkt.openvpn.core.OpenVPNService; - -public class OpenSSLSpeed extends Activity { - - private static SpeeedTest runTestAlgorithms; - private EditText mCipher; - private SpeedArrayAdapter mAdapter; - private ListView mListView; - - - static class SpeedArrayAdapter extends ArrayAdapter { - - private final Context mContext; - private final LayoutInflater mInflater; - - public SpeedArrayAdapter(@NonNull Context context) { - super(context, 0); - mContext = context; - mInflater = LayoutInflater.from(context); - - } - - class ViewHolder { - TextView ciphername; - TextView blocksize; - TextView blocksInTime; - TextView speed; - } - - @NonNull - @Override - public View getView(int position, @Nullable View view, @NonNull ViewGroup parent) { - SpeedResult res = getItem(position); - if (view == null) { - view = mInflater.inflate(R.layout.speedviewitem, parent, false); - ViewHolder holder = new ViewHolder(); - holder.ciphername = view.findViewById(R.id.ciphername); - holder.speed = view.findViewById(R.id.speed); - holder.blocksize = view.findViewById(R.id.blocksize); - holder.blocksInTime = view.findViewById(R.id.blocksintime); - view.setTag(holder); - } - - ViewHolder holder = (ViewHolder) view.getTag(); - - double total = res.count * res.length; - String size = OpenVPNService.humanReadableByteCount((long) res.length, false, mContext.getResources()); - - holder.blocksize.setText(size); - holder.ciphername.setText(res.algorithm); - - if (res.failed) { - holder.blocksInTime.setText(R.string.openssl_error); - holder.speed.setText("-"); - } else if (res.running) { - holder.blocksInTime.setText(R.string.running_test); - holder.speed.setText("-"); - } else { - String totalBytes = OpenVPNService.humanReadableByteCount((long) total, false, mContext.getResources()); - // TODO: Fix localisation here - String blockPerSec = OpenVPNService.humanReadableByteCount((long) (total / res.time), false, mContext.getResources()) + "/s"; - holder.speed.setText(blockPerSec); - holder.blocksInTime.setText(String.format(Locale.ENGLISH, "%d blocks (%s) in %2.1fs", (long) res.count, totalBytes, res.time)); - } - - return view; - - } - } - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.openssl_speed); - getActionBar().setDisplayHomeAsUpEnabled(true); - - findViewById(R.id.testSpecific).setOnClickListener((view) -> { - runAlgorithms(mCipher.getText().toString()); - }); - mCipher = (EditText) findViewById(R.id.ciphername); - - mListView = findViewById(R.id.results); - - mAdapter = new SpeedArrayAdapter(this); - mListView.setAdapter(mAdapter); - - } - - private void runAlgorithms(String algorithms) { - if (runTestAlgorithms != null) - runTestAlgorithms.cancel(true); - runTestAlgorithms = new SpeeedTest(); - runTestAlgorithms.execute(algorithms.split(" ")); - } - - - static class SpeedResult { - String algorithm; - boolean failed = false; - - double count; - double time; - int length; - public boolean running=true; - - SpeedResult(String algorithm) { - this.algorithm = algorithm; - } - } - - - private class SpeeedTest extends AsyncTask { - - - private boolean mCancel = false; - - @Override - protected SpeedResult[] doInBackground(String... strings) { - Vector mResult = new Vector<>(); - - for (String algorithm : strings) { - - // Skip 16b and 16k as they are not relevevant for VPN - for (int i = 1; i < NativeUtils.openSSLlengths.length -1 && !mCancel; i++) { - SpeedResult result = new SpeedResult(algorithm); - result.length = NativeUtils.openSSLlengths[i]; - mResult.add(result); - publishProgress(result); - double[] resi = NativeUtils.getOpenSSLSpeed(algorithm, i); - if (resi == null) { - result.failed = true; - } else { - result.count = resi[1]; - result.time = resi[2]; - } - result.running = false; - publishProgress(result); - } - } - - return mResult.toArray(new SpeedResult[mResult.size()]); - - } - - @Override - protected void onProgressUpdate(SpeedResult... values) { - for (SpeedResult r : values) { - if (r.running) - mAdapter.add(r); - mAdapter.notifyDataSetChanged(); - } - } - - @Override - protected void onPostExecute(SpeedResult[] speedResult) { - - } - - @Override - protected void onCancelled(SpeedResult[] speedResults) { - mCancel = true; - } - } - - -} diff --git a/main/src/ui/java/de/blinkt/openvpn/activities/OpenSSLSpeed.kt b/main/src/ui/java/de/blinkt/openvpn/activities/OpenSSLSpeed.kt new file mode 100644 index 00000000..429d5aa4 --- /dev/null +++ b/main/src/ui/java/de/blinkt/openvpn/activities/OpenSSLSpeed.kt @@ -0,0 +1,178 @@ +/* + * Copyright (c) 2012-2017 Arne Schwabe + * Distributed under the GNU GPL v2 with additional terms. For full terms see the file doc/LICENSE.txt + */ + +package de.blinkt.openvpn.activities + +import android.content.Context +import android.os.AsyncTask +import android.os.Bundle +import android.app.Activity +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ArrayAdapter +import android.widget.EditText +import android.widget.ListView +import android.widget.TextView + +import java.util.Locale +import java.util.Vector + +import de.blinkt.openvpn.R +import de.blinkt.openvpn.core.NativeUtils +import de.blinkt.openvpn.core.OpenVPNService + +class OpenSSLSpeed : BaseActivity() { + private lateinit var mCipher: EditText + private lateinit var mAdapter: SpeedArrayAdapter + private lateinit var mListView: ListView + + + internal class SpeedArrayAdapter(private val mContext: Context) : ArrayAdapter(mContext, 0) { + private val mInflater: LayoutInflater + + init { + mInflater = LayoutInflater.from(mContext) + + } + + internal data class ViewHolder( + var ciphername: TextView, + var speed: TextView, + var blocksize: TextView, + var blocksInTime: TextView + ) + + override fun getView(position: Int, v: View?, parent: ViewGroup): View { + var view = v + val res = getItem(position) + if (view == null) { + view = mInflater.inflate(R.layout.speedviewitem, parent, false)!! + val holder = ViewHolder( + view.findViewById(R.id.ciphername), + view.findViewById(R.id.speed), + view.findViewById(R.id.blocksize), + view.findViewById(R.id.blocksintime)) + view.tag = holder + } + + val holder = view.tag as ViewHolder + + val total = res!!.count * res.length + val size = OpenVPNService.humanReadableByteCount(res.length.toLong(), false, mContext.resources) + + holder.blocksize.text = size + holder.ciphername.text = res.algorithm + + if (res.failed) { + holder.blocksInTime.setText(R.string.openssl_error) + holder.speed.text = "-" + } else if (res.running) { + holder.blocksInTime.setText(R.string.running_test) + holder.speed.text = "-" + } else { + val totalBytes = OpenVPNService.humanReadableByteCount(total.toLong(), false, mContext.resources) + // TODO: Fix localisation here + val blockPerSec = OpenVPNService.humanReadableByteCount((total / res.time).toLong(), false, mContext.resources) + "/s" + holder.speed.text = blockPerSec + holder.blocksInTime.text = String.format(Locale.ENGLISH, "%d blocks (%s) in %2.1fs", res.count.toLong(), totalBytes, res.time) + } + + return view + + } + } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.openssl_speed) + supportActionBar!!.setDisplayHomeAsUpEnabled(true) + + findViewById(R.id.testSpecific).setOnClickListener { _ -> runAlgorithms(mCipher.text.toString()) } + mCipher = findViewById(R.id.ciphername) as EditText + + mListView = findViewById(R.id.results) + + mAdapter = SpeedArrayAdapter(this) + mListView.adapter = mAdapter + + } + + private fun runAlgorithms(algorithms: String) { + if (runTestAlgorithms != null) + runTestAlgorithms!!.cancel(true) + runTestAlgorithms = SpeeedTest() + runTestAlgorithms!!.execute(*algorithms.split(" ".toRegex()).dropLastWhile { it.isEmpty() }.toTypedArray()) + } + + + internal class SpeedResult(var algorithm: String) { + var failed = false + + var count: Double = 0.toDouble() + var time: Double = 0.toDouble() + var length: Int = 0 + var running = true + } + + + private inner class SpeeedTest : AsyncTask>() { + + + private var mCancel = false + + override fun doInBackground(vararg strings: String): Array { + val mResult = Vector() + + for (algorithm in strings) { + + // Skip 16b and 16k as they are not relevevant for VPN + var i = 1 + while (i < NativeUtils.openSSLlengths.size - 1 && !mCancel) { + val result = SpeedResult(algorithm) + result.length = NativeUtils.openSSLlengths[i] + mResult.add(result) + publishProgress(result) + val resi = NativeUtils.getOpenSSLSpeed(algorithm, i) + if (resi == null) { + result.failed = true + } else { + result.count = resi[1] + result.time = resi[2] + } + result.running = false + publishProgress(result) + i++ + } + } + + return mResult.toTypedArray() + + } + + override fun onProgressUpdate(vararg values: SpeedResult) { + for (r in values) { + if (r.running) + mAdapter.add(r) + mAdapter.notifyDataSetChanged() + } + } + + override fun onPostExecute(speedResult: Array) { + + } + + override fun onCancelled(speedResults: Array) { + mCancel = true + } + } + + companion object { + + private var runTestAlgorithms: SpeeedTest? = null + } + + +} diff --git a/main/src/ui/java/de/blinkt/openvpn/fragments/LogFragment.java b/main/src/ui/java/de/blinkt/openvpn/fragments/LogFragment.java index be2007e5..994d6e95 100644 --- a/main/src/ui/java/de/blinkt/openvpn/fragments/LogFragment.java +++ b/main/src/ui/java/de/blinkt/openvpn/fragments/LogFragment.java @@ -22,6 +22,8 @@ import android.os.Handler; import android.os.Handler.Callback; import android.os.Message; import android.preference.PreferenceManager; + +import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.appcompat.app.AlertDialog; import androidx.fragment.app.ListFragment; @@ -549,7 +551,7 @@ public class LogFragment extends ListFragment implements StateListener, SeekBar. VpnStatus.removeStateListener(this); VpnStatus.removeByteCountListener(this); - getActivity().getPreferences(0).edit().putInt(LOGTIMEFORMAT, ladapter.mTimeFormat) + requireActivity().getPreferences(0).edit().putInt(LOGTIMEFORMAT, ladapter.mTimeFormat) .putInt(VERBOSITYLEVEL, ladapter.mLogLevel).apply(); } @@ -562,7 +564,7 @@ public class LogFragment extends ListFragment implements StateListener, SeekBar. lv.setOnItemLongClickListener((parent, view, position, id) -> { ClipboardManager clipboard = (ClipboardManager) - getActivity().getSystemService(Context.CLIPBOARD_SERVICE); + requireActivity().getSystemService(Context.CLIPBOARD_SERVICE); ClipData clip = ClipData.newPlainText("Log Entry", ((TextView) view).getText()); clipboard.setPrimaryClip(clip); Toast.makeText(getActivity(), R.string.copied_entry, Toast.LENGTH_SHORT).show(); @@ -632,7 +634,7 @@ public class LogFragment extends ListFragment implements StateListener, SeekBar. } @Override - public void onAttach(Context activity) { + public void onAttach(@NonNull Context activity) { super.onAttach(activity); if (getResources().getBoolean(R.bool.logSildersAlwaysVisible)) { mShowOptionsLayout = true; @@ -644,9 +646,6 @@ public class LogFragment extends ListFragment implements StateListener, SeekBar. @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - - //getActionBar().setDisplayHomeAsUpEnabled(true); - } @@ -655,17 +654,13 @@ public class LogFragment extends ListFragment implements StateListener, SeekBar. if (isAdded()) { final String cleanLogMessage = VpnStatus.getLastCleanLogMessage(getActivity()); - getActivity().runOnUiThread(new Runnable() { - - @Override - public void run() { - if (isAdded()) { - if (mSpeedView != null) { - mSpeedView.setText(cleanLogMessage); - } - if (mConnectStatus != null) - mConnectStatus.setText(cleanLogMessage); + requireActivity().runOnUiThread(() -> { + if (isAdded()) { + if (mSpeedView != null) { + mSpeedView.setText(cleanLogMessage); } + if (mConnectStatus != null) + mConnectStatus.setText(cleanLogMessage); } }); } diff --git a/main/src/ui/res/values-night-v21/refs.xml b/main/src/ui/res/values-night-v21/refs.xml deleted file mode 100644 index bc498d41..00000000 --- a/main/src/ui/res/values-night-v21/refs.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - @drawable/ic_edit_white_24dp - \ No newline at end of file diff --git a/main/src/ui/res/values-v21/refs.xml b/main/src/ui/res/values-v21/refs.xml deleted file mode 100644 index ae9be13f..00000000 --- a/main/src/ui/res/values-v21/refs.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - @drawable/ic_close_white_24dp - @drawable/ic_play_arrow_white_24dp - @drawable/ic_pause_white_24dp - @drawable/ic_share_white_24dp - @drawable/ic_check_white_24dp - @drawable/ic_filter_list_white_24dp - @drawable/ic_delete_white_24dp - @drawable/ic_content_copy_white_24dp - @drawable/ic_delete_grey600_24dp - - @drawable/ic_edit_white_24dp - @drawable/ic_archive_white_24dp - @drawable/ic_edit_grey600_24dp - @drawable/ic_add_circle_outline_white_24dp - @drawable/ic_warning_black_36dp - @drawable/ic_add_circle_outline_grey600_24dp - @drawable/ic_archive_grey600_24dp - @drawable/ic_receipt_white_24dp - @drawable/ic_sort_white_24dp - \ No newline at end of file -- cgit v1.2.3