mirror of
https://github.com/KDE/kdeconnect-android
synced 2025-08-29 13:17:43 +00:00
refactor: migrate TrustedNetworksActivity
to Kotlin
This commit is contained in:
parent
29c4fe3f8d
commit
9a196543ff
@ -1,151 +0,0 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2019 Juan David Vega <jdvr.93@hotmail.com>
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
|
||||
*/
|
||||
|
||||
|
||||
package org.kde.kdeconnect.UserInterface;
|
||||
|
||||
import android.Manifest;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.os.Bundle;
|
||||
import android.view.View;
|
||||
import android.widget.ArrayAdapter;
|
||||
import android.widget.Button;
|
||||
import android.widget.CheckBox;
|
||||
import android.widget.ListView;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.appcompat.app.AlertDialog;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
|
||||
import com.android.internal.util.ArrayUtils;
|
||||
|
||||
import org.kde.kdeconnect.Helpers.TrustedNetworkHelper;
|
||||
import org.kde.kdeconnect_tp.R;
|
||||
import org.kde.kdeconnect_tp.databinding.TrustedNetworkListBinding;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
public class TrustedNetworksActivity extends AppCompatActivity {
|
||||
private TrustedNetworkListBinding binding;
|
||||
private List<String> trustedNetworks;
|
||||
|
||||
private ListView trustedNetworksView;
|
||||
private CheckBox allowAllCheckBox;
|
||||
private TrustedNetworkHelper trustedNetworkHelper;
|
||||
|
||||
@Override
|
||||
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
|
||||
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
|
||||
if (ArrayUtils.contains(grantResults, PackageManager.PERMISSION_GRANTED)) {
|
||||
allowAllCheckBox.setChecked(false);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
binding = TrustedNetworkListBinding.inflate(getLayoutInflater());
|
||||
setContentView(binding.getRoot());
|
||||
trustedNetworksView = binding.list;
|
||||
|
||||
setSupportActionBar(binding.toolbarLayout.toolbar);
|
||||
Objects.requireNonNull(getSupportActionBar()).setDisplayHomeAsUpEnabled(true);
|
||||
getSupportActionBar().setDisplayShowHomeEnabled(true);
|
||||
|
||||
trustedNetworkHelper = new TrustedNetworkHelper(getApplicationContext());
|
||||
trustedNetworks = new ArrayList<>();
|
||||
Collections.addAll(trustedNetworks, trustedNetworkHelper.read());
|
||||
|
||||
allowAllCheckBox = binding.trustAllNetworksCheckBox;
|
||||
allowAllCheckBox.setOnCheckedChangeListener((v, isChecked) -> {
|
||||
if (trustedNetworkHelper.hasPermissions()) {
|
||||
trustedNetworkHelper.allAllowed(isChecked);
|
||||
updateTrustedNetworkListView();
|
||||
addNetworkButton();
|
||||
} else {
|
||||
allowAllCheckBox.setChecked(true); // Disable unchecking it
|
||||
new PermissionsAlertDialogFragment.Builder()
|
||||
.setTitle(R.string.location_permission_needed_title)
|
||||
.setMessage(R.string.location_permission_needed_desc)
|
||||
.setPermissions(new String[]{Manifest.permission.ACCESS_FINE_LOCATION})
|
||||
.setRequestCode(0)
|
||||
.create().show(getSupportFragmentManager(), null);
|
||||
}
|
||||
});
|
||||
allowAllCheckBox.setChecked(trustedNetworkHelper.allAllowed());
|
||||
|
||||
updateTrustedNetworkListView();
|
||||
}
|
||||
|
||||
private void updateEmptyListMessage() {
|
||||
boolean isVisible = trustedNetworks.isEmpty() && !trustedNetworkHelper.allAllowed();
|
||||
binding.trustedNetworkListEmpty.setVisibility(isVisible ? View.VISIBLE : View.GONE );
|
||||
}
|
||||
|
||||
private void updateTrustedNetworkListView() {
|
||||
boolean allAllowed = trustedNetworkHelper.allAllowed();
|
||||
updateEmptyListMessage();
|
||||
trustedNetworksView.setVisibility(allAllowed ? View.GONE : View.VISIBLE);
|
||||
if (allAllowed){
|
||||
return;
|
||||
}
|
||||
trustedNetworksView.setAdapter(new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, trustedNetworks));
|
||||
trustedNetworksView.setOnItemClickListener((parent, view, position, id) -> {
|
||||
String targetItem = trustedNetworks.get(position);
|
||||
new AlertDialog.Builder(TrustedNetworksActivity.this)
|
||||
.setMessage("Delete " + targetItem + " ?")
|
||||
.setPositiveButton("Yes", (dialog, which) -> {
|
||||
trustedNetworks.remove(position);
|
||||
trustedNetworkHelper.update(trustedNetworks);
|
||||
((ArrayAdapter) trustedNetworksView.getAdapter()).notifyDataSetChanged();
|
||||
addNetworkButton();
|
||||
updateEmptyListMessage();
|
||||
})
|
||||
.setNegativeButton("No", null)
|
||||
.show();
|
||||
|
||||
});
|
||||
addNetworkButton();
|
||||
}
|
||||
|
||||
private void addNetworkButton() {
|
||||
Button addButton = binding.button1;
|
||||
if (trustedNetworkHelper.allAllowed()) {
|
||||
addButton.setVisibility(View.GONE);
|
||||
return;
|
||||
}
|
||||
final String currentSSID = trustedNetworkHelper.currentSSID();
|
||||
if (!currentSSID.isEmpty() && !trustedNetworks.contains(currentSSID)) {
|
||||
String buttonText = getString(R.string.add_trusted_network, currentSSID);
|
||||
addButton.setText(buttonText);
|
||||
addButton.setOnClickListener(v -> {
|
||||
if (trustedNetworks.contains(currentSSID)){
|
||||
return;
|
||||
}
|
||||
trustedNetworks.add(currentSSID);
|
||||
trustedNetworkHelper.update(trustedNetworks);
|
||||
((ArrayAdapter) trustedNetworksView.getAdapter()).notifyDataSetChanged();
|
||||
v.setVisibility(View.GONE);
|
||||
updateEmptyListMessage();
|
||||
});
|
||||
addButton.setVisibility(View.VISIBLE);
|
||||
} else {
|
||||
addButton.setVisibility(View.GONE);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onSupportNavigateUp() {
|
||||
super.onBackPressed();
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
135
src/org/kde/kdeconnect/UserInterface/TrustedNetworksActivity.kt
Normal file
135
src/org/kde/kdeconnect/UserInterface/TrustedNetworksActivity.kt
Normal file
@ -0,0 +1,135 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2019 Juan David Vega <jdvr.93@hotmail.com>
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
|
||||
*/
|
||||
package org.kde.kdeconnect.UserInterface
|
||||
|
||||
import android.Manifest
|
||||
import android.content.DialogInterface
|
||||
import android.content.pm.PackageManager
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import android.widget.*
|
||||
import android.widget.AdapterView.OnItemClickListener
|
||||
import androidx.appcompat.app.AlertDialog
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import org.kde.kdeconnect.Helpers.TrustedNetworkHelper
|
||||
import org.kde.kdeconnect_tp.R
|
||||
import org.kde.kdeconnect_tp.databinding.TrustedNetworkListBinding
|
||||
|
||||
class TrustedNetworksActivity : AppCompatActivity() {
|
||||
lateinit var binding: TrustedNetworkListBinding
|
||||
private val trustedNetworks: MutableList<String> = mutableListOf()
|
||||
|
||||
private val trustedNetworksView: ListView
|
||||
get() = binding.list
|
||||
private val allowAllCheckBox: CheckBox
|
||||
get() = binding.trustAllNetworksCheckBox
|
||||
private val trustedNetworkHelper: TrustedNetworkHelper by lazy {
|
||||
TrustedNetworkHelper(applicationContext) // Lazy to avoid creating it before onCreate, because it needs the context
|
||||
}
|
||||
|
||||
override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<String>, grantResults: IntArray) {
|
||||
super.onRequestPermissionsResult(requestCode, permissions, grantResults)
|
||||
if (PackageManager.PERMISSION_GRANTED in grantResults) {
|
||||
allowAllCheckBox.isChecked = false
|
||||
}
|
||||
}
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
|
||||
binding = TrustedNetworkListBinding.inflate(layoutInflater)
|
||||
setContentView(binding.root)
|
||||
|
||||
setSupportActionBar(binding.toolbarLayout.toolbar)
|
||||
supportActionBar!!.apply {
|
||||
setDisplayHomeAsUpEnabled(true)
|
||||
setDisplayShowHomeEnabled(true)
|
||||
}
|
||||
|
||||
trustedNetworks.addAll(trustedNetworkHelper.read())
|
||||
|
||||
allowAllCheckBox.setOnCheckedChangeListener { _, isChecked ->
|
||||
if (trustedNetworkHelper.hasPermissions()) {
|
||||
trustedNetworkHelper.allAllowed(isChecked)
|
||||
updateTrustedNetworkListView()
|
||||
addNetworkButton()
|
||||
} else {
|
||||
allowAllCheckBox.isChecked = true // Disable unchecking it
|
||||
PermissionsAlertDialogFragment.Builder()
|
||||
.setTitle(R.string.location_permission_needed_title)
|
||||
.setMessage(R.string.location_permission_needed_desc)
|
||||
.setPermissions(arrayOf(Manifest.permission.ACCESS_FINE_LOCATION))
|
||||
.setRequestCode(0)
|
||||
.create().show(supportFragmentManager, null)
|
||||
}
|
||||
}
|
||||
allowAllCheckBox.isChecked = trustedNetworkHelper.allAllowed()
|
||||
|
||||
updateTrustedNetworkListView()
|
||||
}
|
||||
|
||||
private fun updateEmptyListMessage() {
|
||||
val isVisible = trustedNetworks.isEmpty() && !trustedNetworkHelper.allAllowed()
|
||||
binding.trustedNetworkListEmpty.visibility = if (isVisible) View.VISIBLE else View.GONE
|
||||
}
|
||||
|
||||
private fun updateTrustedNetworkListView() {
|
||||
val allAllowed = trustedNetworkHelper.allAllowed()
|
||||
updateEmptyListMessage()
|
||||
trustedNetworksView.visibility = if (allAllowed) View.GONE else View.VISIBLE
|
||||
if (allAllowed) {
|
||||
return
|
||||
}
|
||||
trustedNetworksView.adapter = ArrayAdapter(this, android.R.layout.simple_list_item_1, trustedNetworks)
|
||||
trustedNetworksView.onItemClickListener =
|
||||
OnItemClickListener { _, _, position, _ ->
|
||||
val targetItem = trustedNetworks[position]
|
||||
AlertDialog.Builder(this@TrustedNetworksActivity)
|
||||
.setMessage("Delete $targetItem ?")
|
||||
.setPositiveButton("Yes") { _, _ ->
|
||||
trustedNetworks.removeAt(position)
|
||||
trustedNetworkHelper.update(trustedNetworks)
|
||||
(trustedNetworksView.adapter as ArrayAdapter<*>).notifyDataSetChanged()
|
||||
addNetworkButton()
|
||||
updateEmptyListMessage()
|
||||
}
|
||||
.setNegativeButton("No", null)
|
||||
.show()
|
||||
}
|
||||
addNetworkButton()
|
||||
}
|
||||
|
||||
private fun addNetworkButton() {
|
||||
val addButton = binding.button1
|
||||
if (trustedNetworkHelper.allAllowed()) {
|
||||
addButton.visibility = View.GONE
|
||||
return
|
||||
}
|
||||
val currentSSID = trustedNetworkHelper.currentSSID()
|
||||
if (currentSSID.isNotEmpty() && !trustedNetworks.contains(currentSSID)) {
|
||||
val buttonText = getString(R.string.add_trusted_network, currentSSID)
|
||||
addButton.text = buttonText
|
||||
addButton.setOnClickListener { v ->
|
||||
if (trustedNetworks.contains(currentSSID)) {
|
||||
return@setOnClickListener
|
||||
}
|
||||
trustedNetworks.add(currentSSID)
|
||||
trustedNetworkHelper.update(trustedNetworks)
|
||||
(trustedNetworksView.adapter as ArrayAdapter<*>).notifyDataSetChanged()
|
||||
v.visibility = View.GONE
|
||||
updateEmptyListMessage()
|
||||
}
|
||||
addButton.visibility = View.VISIBLE
|
||||
} else {
|
||||
addButton.visibility = View.GONE
|
||||
}
|
||||
}
|
||||
|
||||
override fun onSupportNavigateUp(): Boolean {
|
||||
this.onBackPressedDispatcher.onBackPressed()
|
||||
return true
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user