summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnushek Prasal <anushekprasal@gmail.com>2021-08-01 15:38:58 +0530
committerAnushek Prasal <anushekprasal@gmail.com>2021-08-01 15:57:23 +0530
commit296ff9d192a68ed213029f3416ef692111b1af1f (patch)
tree4a829b7aea5e5d4a5f013f7a8bb12a56e1e35405
parent600c75b261a123b7b53fffd31036f4d5fe73b0a8 (diff)
SoftAPManager: Use MasterSwitchHEADr11.1
Signed-off-by: Anushek Prasal <anushekprasal@gmail.com>
-rw-r--r--java/com/android/softap/ClientInfoActivity.java72
-rw-r--r--res/color/master_setting_switch_bar_bg.xml20
-rw-r--r--res/drawable/master_setting_switchbar_background.xml20
-rw-r--r--res/layout/master_setting_switch.xml28
-rw-r--r--res/layout/master_setting_switch_bar.xml49
-rw-r--r--res/values-night/colors.xml20
-rw-r--r--res/values/colors.xml20
-rw-r--r--res/values/strings.xml4
-rw-r--r--res/values/styles.xml13
-rw-r--r--res/xml/client_info_prefs.xml5
10 files changed, 230 insertions, 21 deletions
diff --git a/java/com/android/softap/ClientInfoActivity.java b/java/com/android/softap/ClientInfoActivity.java
index 9aafc14..b5bdb8b 100644
--- a/java/com/android/softap/ClientInfoActivity.java
+++ b/java/com/android/softap/ClientInfoActivity.java
@@ -9,7 +9,13 @@ import android.os.Bundle;
import android.os.IBinder;
import android.os.UserHandle;
import android.text.TextUtils;
+import android.view.LayoutInflater;
import android.view.MenuItem;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.CompoundButton;
+import android.widget.Switch;
+import android.widget.TextView;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentActivity;
@@ -128,14 +134,18 @@ public class ClientInfoActivity extends FragmentActivity implements SoftApManage
}
- public static class ClientInfoFragment extends PreferenceFragmentCompat implements Preference.OnPreferenceChangeListener {
+ public static class ClientInfoFragment extends PreferenceFragmentCompat implements
+ CompoundButton.OnCheckedChangeListener {
private IClientManager mClientManager;
private Preference prefName;
private Preference prefMAC;
private Preference prefIP;
private Preference prefManufacturer;
- private SwitchPreference prefBlocked;
+ private boolean mAllowed = true;
+
+ private TextView mTextView;
+ private View mSwitchBar;
@Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
@@ -144,32 +154,62 @@ public class ClientInfoActivity extends FragmentActivity implements SoftApManage
prefIP = findPreference("ip_address");
prefMAC = findPreference("mac_address");
prefManufacturer = findPreference("manufacturer");
- prefBlocked = findPreference("blocked");
- prefBlocked.setOnPreferenceChangeListener(this);
+ }
+
+ @Override
+ public View onCreateView(LayoutInflater inflater,
+ ViewGroup container, Bundle savedInstanceState) {
+ final View view = LayoutInflater.from(getContext()).inflate(R.layout.master_setting_switch, container, false);
+ ((ViewGroup) view).addView(super.onCreateView(inflater, container, savedInstanceState));
+ return view;
+ }
+
+ @Override
+ public void onViewCreated(View view, Bundle savedInstanceState) {
+ super.onViewCreated(view, savedInstanceState);
+
+ mTextView = view.findViewById(R.id.switch_text);
+ mTextView.setText(getString(mAllowed ?
+ R.string.switch_on_text : R.string.switch_off_text));
+
+ mSwitchBar = view.findViewById(R.id.switch_bar);
+ Switch switchWidget = mSwitchBar.findViewById(android.R.id.switch_widget);
+ switchWidget.setChecked(mAllowed);
+ switchWidget.setOnCheckedChangeListener(this);
+ mSwitchBar.setActivated(mAllowed);
+ mSwitchBar.setOnClickListener(v -> {
+ switchWidget.setChecked(!switchWidget.isChecked());
+ mSwitchBar.setActivated(switchWidget.isChecked());
+ });
+ }
+
+ @Override
+ public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) {
+ if (mClientManager != null) {
+ mClientManager.block(!isChecked);
+ }
+ mTextView.setText(getString(isChecked ? R.string.switch_on_text : R.string.switch_off_text));
+ mSwitchBar.setActivated(isChecked);
}
public void setClientManager(IClientManager manager) {
mClientManager = manager;
}
+ private void refreshSwitch() {
+ Switch switchWidget = mSwitchBar.findViewById(android.R.id.switch_widget);
+ switchWidget.setChecked(mAllowed);
+ mSwitchBar.setActivated(mAllowed);
+ }
+
public void updateClientInfo(ClientInfo info) {
if (info == null) return;
prefName.setSummary(info.getName());
prefMAC.setSummary(info.getMACAddress());
prefIP.setSummary(String.join("\n", info.getIPAddressArray()));
prefManufacturer.setSummary(info.getManufacturer());
- prefBlocked.setChecked(info.isBlocked());
- }
-
- @Override
- public boolean onPreferenceChange(Preference preference, Object newValue) {
- if (preference == prefBlocked) {
- Boolean val = (Boolean) newValue;
- if (mClientManager != null) {
- return mClientManager.block(val);
- }
- }
- return false;
+ mAllowed = !info.isBlocked();
+ refreshSwitch();
}
}
diff --git a/res/color/master_setting_switch_bar_bg.xml b/res/color/master_setting_switch_bar_bg.xml
new file mode 100644
index 0000000..30df87f
--- /dev/null
+++ b/res/color/master_setting_switch_bar_bg.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2019 The LineageOS Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+ <item android:color="#ff757575" android:state_activated="false" />
+ <item android:color="?android:attr/colorAccent" android:state_activated="true" />
+</selector>
diff --git a/res/drawable/master_setting_switchbar_background.xml b/res/drawable/master_setting_switchbar_background.xml
new file mode 100644
index 0000000..afecfe0
--- /dev/null
+++ b/res/drawable/master_setting_switchbar_background.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2019 The LineageOS Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+ android:shape="rectangle">
+ <solid android:color="@color/master_setting_switch_bar_bg" />
+</shape>
diff --git a/res/layout/master_setting_switch.xml b/res/layout/master_setting_switch.xml
new file mode 100644
index 0000000..dbb4a9c
--- /dev/null
+++ b/res/layout/master_setting_switch.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:orientation="vertical"
+ android:layout_height="match_parent"
+ android:layout_width="match_parent">
+
+ <include layout="@layout/master_setting_switch_bar" />
+
+</LinearLayout>
+
diff --git a/res/layout/master_setting_switch_bar.xml b/res/layout/master_setting_switch_bar.xml
new file mode 100644
index 0000000..987ea00
--- /dev/null
+++ b/res/layout/master_setting_switch_bar.xml
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2016 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:id="@+id/switch_bar"
+ android:layout_width="match_parent"
+ android:layout_height="?android:attr/actionBarSize"
+ android:background="@drawable/master_setting_switchbar_background"
+ android:paddingStart="16dp"
+ android:paddingEnd="16dp"
+ android:clickable="true"
+ android:gravity="center"
+ android:translationZ="1dp">
+
+ <TextView android:id="@+id/switch_text"
+ android:layout_height="wrap_content"
+ android:layout_width="0dp"
+ android:layout_weight="1"
+ android:layout_gravity="center_vertical"
+ android:paddingStart="56dp"
+ android:maxLines="2"
+ android:ellipsize="end"
+ android:textAppearance="@style/TextAppearance.Switch"
+ android:textColor="?android:attr/textColorPrimaryInverse"
+ android:textSize="18sp"
+ android:textAlignment="viewStart" />
+
+ <Switch
+ android:id="@android:id/switch_widget"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center_vertical"
+ android:background="@null"
+ android:theme="@style/Theme.Main.SwitchBar.Switch" />
+
+</LinearLayout>
diff --git a/res/values-night/colors.xml b/res/values-night/colors.xml
new file mode 100644
index 0000000..5aa9c8e
--- /dev/null
+++ b/res/values-night/colors.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2020 The LineageOS Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<resources>
+ <color name="switchbar_switch_track_tint">#82000000</color>
+ <color name="switchbar_switch_thumb_tint">@android:color/black</color>
+</resources>
diff --git a/res/values/colors.xml b/res/values/colors.xml
new file mode 100644
index 0000000..dc679c8
--- /dev/null
+++ b/res/values/colors.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2020 The LineageOS Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<resources>
+ <color name="switchbar_switch_track_tint">#BFFFFFFF</color>
+ <color name="switchbar_switch_thumb_tint">@android:color/white</color>
+</resources>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 2f0ccaf..66012c0 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -11,6 +11,10 @@
<string name="title_manufacturer">Manufacturer</string>
<string name="title_blocked">Blocked</string>
+ <!-- Switch On/Off -->
+ <string name="switch_on_text">Allowed</string>
+ <string name="switch_off_text">Blocked</string>
+
<!-- Footer -->
<string name="footer_text">No clients are currently available. Connected and blocked clients will be listed here when avaialable.</string>
diff --git a/res/values/styles.xml b/res/values/styles.xml
index 1911271..c4f3ba8 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -35,4 +35,17 @@
<item name="android:letterSpacing">0.072727273</item>
<item name="android:textColor">?android:attr/textColorSecondary</item>
</style>
+
+ <style name="TextAppearance.Switch"
+ parent="@android:style/TextAppearance.DeviceDefault.Widget.ActionBar.Title">
+ <item name="android:textSize">16sp</item>
+ </style>
+
+ <style name="Theme.Main.SwitchBar" parent="@android:style/ThemeOverlay.Material.ActionBar">
+ </style>
+
+ <style name="Theme.Main.SwitchBar.Switch">
+ <item name="android:trackTint">@color/switchbar_switch_track_tint</item>
+ <item name="android:thumbTint">@color/switchbar_switch_thumb_tint</item>
+ </style>
</resources>
diff --git a/res/xml/client_info_prefs.xml b/res/xml/client_info_prefs.xml
index 567d2f3..5e22d57 100644
--- a/res/xml/client_info_prefs.xml
+++ b/res/xml/client_info_prefs.xml
@@ -16,9 +16,4 @@
<Preference
android:key="manufacturer"
android:title="@string/title_manufacturer" />
-
- <SwitchPreference
- android:defaultValue="false"
- android:key="blocked"
- android:title="@string/title_blocked" />
</PreferenceScreen>