Changeset View
Changeset View
Standalone View
Standalone View
src/org/kde/kdeconnect/UserInterface/TrustedNetworksActivity.java
- This file was added.
1 | package org.kde.kdeconnect.UserInterface; | ||||
---|---|---|---|---|---|
2 | | ||||
3 | import static android.view.View.GONE; | ||||
4 | import static android.view.View.VISIBLE; | ||||
5 | | ||||
6 | import java.util.ArrayList; | ||||
7 | import java.util.List; | ||||
8 | | ||||
9 | import org.kde.kdeconnect.BackgroundService; | ||||
10 | import org.kde.kdeconnect.Helpers.TrustedNetworkHelper; | ||||
11 | import org.kde.kdeconnect_tp.R; | ||||
12 | | ||||
13 | import android.app.AlertDialog; | ||||
14 | import android.content.DialogInterface; | ||||
15 | import android.os.Build; | ||||
16 | import android.os.Bundle; | ||||
17 | import android.view.View; | ||||
18 | import android.widget.*; | ||||
19 | | ||||
20 | import androidx.annotation.NonNull; | ||||
21 | import androidx.appcompat.app.AppCompatActivity; | ||||
22 | | ||||
23 | public class TrustedNetworksActivity extends AppCompatActivity { | ||||
24 | | ||||
25 | private ListView trustedNetworksView; | ||||
26 | private List<String> trustedNetworks; | ||||
27 | | ||||
28 | private boolean dialogAlreadyShown = false; | ||||
29 | | ||||
30 | | ||||
31 | @Override | ||||
32 | protected void onCreate(Bundle savedInstanceState) { | ||||
33 | TrustedNetworkHelper trustedNetworkHelper = new TrustedNetworkHelper(getApplicationContext()); | ||||
34 | super.onCreate(savedInstanceState); | ||||
35 | trustedNetworks = new ArrayList<>(trustedNetworkHelper.read()); | ||||
36 | ThemeUtil.setUserPreferredTheme(this); | ||||
37 | setContentView(R.layout.trusted_network_list); | ||||
38 | trustedNetworksView = (ListView) findViewById(android.R.id.list); | ||||
39 | emptyListMessage(trustedNetworkHelper); | ||||
40 | | ||||
41 | trustedNetworkListView(trustedNetworkHelper); | ||||
42 | | ||||
43 | CheckBox allowAllCheckBox = (CheckBox) findViewById(R.id.trust_all_networks_checkBox); | ||||
44 | allowAllCheckBox.setChecked(trustedNetworkHelper.allAllowed()); | ||||
45 | allowAllCheckBox.setOnCheckedChangeListener((v, isChecked) -> { | ||||
46 | trustedNetworkHelper.allAllowed(isChecked); | ||||
47 | trustedNetworkListView(trustedNetworkHelper); | ||||
48 | }); | ||||
49 | | ||||
50 | } | ||||
51 | | ||||
52 | private void emptyListMessage(TrustedNetworkHelper trustedNetworkHelper) { | ||||
53 | boolean isVisible = trustedNetworks.isEmpty() && !trustedNetworkHelper.allAllowed(); | ||||
54 | findViewById(R.id.trusted_network_list_empty) | ||||
55 | .setVisibility(isVisible ? VISIBLE : GONE ); | ||||
56 | } | ||||
57 | | ||||
58 | private void trustedNetworkListView(TrustedNetworkHelper trustedNetworkHelper) { | ||||
59 | Boolean allAllowed = trustedNetworkHelper.allAllowed(); | ||||
60 | emptyListMessage(trustedNetworkHelper); | ||||
61 | // trustedNetworksView.setVisibility(allAllowed ? GONE : VISIBLE); | ||||
62 | trustedNetworksView.setVisibility(allAllowed ? VISIBLE : VISIBLE); | ||||
63 | // if (allAllowed){ | ||||
64 | // return; | ||||
65 | // } | ||||
66 | trustedNetworksView.setAdapter(new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, trustedNetworks)); | ||||
67 | trustedNetworksView.setOnItemClickListener(onItemClickGenerator(trustedNetworkHelper)); | ||||
68 | addNetworkButton(trustedNetworkHelper); | ||||
69 | } | ||||
70 | | ||||
71 | @NonNull | ||||
72 | private AdapterView.OnItemClickListener onItemClickGenerator(TrustedNetworkHelper trustedNetworkHelper) { | ||||
73 | return (parent, view, position, id) -> { | ||||
74 | if (dialogAlreadyShown) { | ||||
75 | return; | ||||
76 | } | ||||
77 | String targetItem = trustedNetworks.get(position); | ||||
78 | | ||||
79 | // remove touched item after confirmation | ||||
80 | DialogInterface.OnClickListener confirmationListener = (dialog, which) -> { | ||||
81 | switch (which) { | ||||
82 | case DialogInterface.BUTTON_POSITIVE: | ||||
83 | trustedNetworks.remove(position); | ||||
84 | trustedNetworkHelper.update(trustedNetworks); | ||||
85 | ((ArrayAdapter) trustedNetworksView.getAdapter()).notifyDataSetChanged(); | ||||
86 | addNetworkButton(trustedNetworkHelper); | ||||
87 | emptyListMessage(trustedNetworkHelper); | ||||
88 | break; | ||||
89 | case DialogInterface.BUTTON_NEGATIVE: | ||||
90 | break; | ||||
91 | } | ||||
92 | }; | ||||
93 | | ||||
94 | AlertDialog.Builder builder = new AlertDialog.Builder(TrustedNetworksActivity.this); | ||||
95 | builder.setMessage("Delete " + targetItem + " ?"); | ||||
96 | builder.setPositiveButton("Yes", confirmationListener); | ||||
97 | builder.setNegativeButton("No", confirmationListener); | ||||
98 | | ||||
99 | if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) { //DismissListener | ||||
100 | dialogAlreadyShown = true; | ||||
101 | builder.setOnDismissListener(dialog -> dialogAlreadyShown = false); | ||||
102 | } | ||||
103 | | ||||
104 | builder.show(); | ||||
105 | }; | ||||
106 | } | ||||
107 | | ||||
108 | private void addNetworkButton(TrustedNetworkHelper trustedNetworkHelper) { | ||||
109 | String currentSSID = trustedNetworkHelper.currentSSID(); | ||||
110 | if (!currentSSID.isEmpty() && trustedNetworks.indexOf(currentSSID) == -1) { | ||||
111 | Button addButton = (Button) findViewById(android.R.id.button1); | ||||
112 | String buttonText = getString(R.string.add_trusted_network, currentSSID); | ||||
113 | addButton.setText(buttonText); | ||||
114 | addButton.setOnClickListener(saveCurrentSSIDAsTrustedNetwork(currentSSID, trustedNetworkHelper)); | ||||
115 | addButton.setVisibility(VISIBLE); | ||||
116 | } | ||||
117 | } | ||||
118 | | ||||
119 | | ||||
120 | @NonNull | ||||
121 | private View.OnClickListener saveCurrentSSIDAsTrustedNetwork(String ssid, TrustedNetworkHelper trustedNetworkHelper) { | ||||
122 | return v -> { | ||||
123 | if (trustedNetworks.indexOf(ssid) != -1){ | ||||
124 | return; | ||||
125 | } | ||||
126 | trustedNetworks.add(ssid); | ||||
127 | trustedNetworkHelper.update(trustedNetworks); | ||||
128 | ((ArrayAdapter) trustedNetworksView.getAdapter()).notifyDataSetChanged(); | ||||
129 | v.setVisibility(GONE); | ||||
130 | }; | ||||
131 | } | ||||
132 | | ||||
133 | | ||||
134 | | ||||
135 | @Override | ||||
136 | protected void onStart() { | ||||
137 | super.onStart(); | ||||
138 | BackgroundService.addGuiInUseCounter(this); | ||||
139 | } | ||||
140 | | ||||
141 | @Override | ||||
142 | protected void onStop() { | ||||
143 | super.onStop(); | ||||
144 | BackgroundService.removeGuiInUseCounter(this); | ||||
145 | } | ||||
146 | | ||||
147 | } |