From bc63f10c90fc07f7305f187a4557ec52a9d15101 Mon Sep 17 00:00:00 2001 From: Jon Haus Date: Wed, 17 Nov 2021 17:27:23 +0530 Subject: [PATCH] Cherish: Network Traffic [2/2] MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Hưng Phan --- res/values/cherish_strings.xml | 6 + res/xml/cherish_settings_statusbar.xml | 6 + res/xml/cherish_settings_traffic.xml | 35 +++++ .../settings/fragments/fragments/Traffic.java | 123 ++++++++++++++++++ 4 files changed, 170 insertions(+) create mode 100644 res/xml/cherish_settings_traffic.xml create mode 100644 src/com/cherish/settings/fragments/fragments/Traffic.java diff --git a/res/values/cherish_strings.xml b/res/values/cherish_strings.xml index 89e36c8..06fdee1 100644 --- a/res/values/cherish_strings.xml +++ b/res/values/cherish_strings.xml @@ -498,5 +498,11 @@ Circle Dotted сircle Text + + + Traffic indicators + Customize the traffic indicators + Show network traffic + Auto-hide threshold diff --git a/res/xml/cherish_settings_statusbar.xml b/res/xml/cherish_settings_statusbar.xml index 87b30d6..61d95e7 100644 --- a/res/xml/cherish_settings_statusbar.xml +++ b/res/xml/cherish_settings_statusbar.xml @@ -35,6 +35,12 @@ android:summary="@string/status_bar_clock_date_summary" android:fragment="com.cherish.settings.fragments.ClockDateSettings" /> + + + + + + + + + + diff --git a/src/com/cherish/settings/fragments/fragments/Traffic.java b/src/com/cherish/settings/fragments/fragments/Traffic.java new file mode 100644 index 0000000..1eeae27 --- /dev/null +++ b/src/com/cherish/settings/fragments/fragments/Traffic.java @@ -0,0 +1,123 @@ +/* + * Copyright (C) 2020-2022 The CherishOS 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. + */ + +package com.cherish.settings.fragments; + +import android.app.ActivityManagerNative; +import android.content.ContentResolver; +import android.content.Context; +import android.content.pm.PackageManager.NameNotFoundException; +import android.content.res.Resources; +import android.os.Bundle; +import android.os.RemoteException; +import android.os.ServiceManager; +import android.os.UserHandle; +import android.provider.Settings; +import android.text.TextUtils; +import android.util.Log; +import android.view.IWindowManager; +import android.view.View; +import android.view.WindowManagerGlobal; + +import androidx.preference.ListPreference; +import androidx.preference.Preference.OnPreferenceChangeListener; +import androidx.preference.Preference; +import androidx.preference.PreferenceCategory; +import androidx.preference.PreferenceScreen; + +import com.android.internal.logging.nano.MetricsProto.MetricsEvent; +import com.android.settings.R; +import com.android.settings.SettingsPreferenceFragment; +import com.android.settings.Utils; +import com.android.settings.search.BaseSearchIndexProvider; +import com.android.settingslib.search.SearchIndexable; + +import java.util.Locale; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import com.cherish.settings.preferences.CustomSeekBarPreference; +import com.cherish.settings.preferences.SystemSettingSwitchPreference; + +@SearchIndexable(forTarget = SearchIndexable.ALL & ~SearchIndexable.ARC) +public class Traffic extends SettingsPreferenceFragment implements OnPreferenceChangeListener { + + private static final String NETWORK_TRAFFIC_AUTOHIDE_THRESHOLD = "network_traffic_autohide_threshold"; + private static final String NETWORK_TRAFFIC_STATE = "network_traffic_state"; + + private SystemSettingSwitchPreference mNetMonitor; + private CustomSeekBarPreference mThreshold; + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + addPreferencesFromResource(R.xml.cherish_settings_traffic); + + final ContentResolver resolver = getActivity().getContentResolver(); + final PreferenceScreen prefSet = getPreferenceScreen(); + + boolean isNetMonitorEnabled = Settings.System.getIntForUser(resolver, + Settings.System.NETWORK_TRAFFIC_STATE, 0, UserHandle.USER_CURRENT) == 1; + mNetMonitor = (SystemSettingSwitchPreference) findPreference(NETWORK_TRAFFIC_STATE); + mNetMonitor.setChecked(isNetMonitorEnabled); + mNetMonitor.setOnPreferenceChangeListener(this); + + int value = Settings.System.getIntForUser(resolver, + Settings.System.NETWORK_TRAFFIC_AUTOHIDE_THRESHOLD, 1, UserHandle.USER_CURRENT); + mThreshold = (CustomSeekBarPreference) findPreference(NETWORK_TRAFFIC_AUTOHIDE_THRESHOLD); + mThreshold.setValue(value); + mThreshold.setOnPreferenceChangeListener(this); + mThreshold.setEnabled(isNetMonitorEnabled); + } + + @Override + public int getMetricsCategory() { + return MetricsEvent.CHERISH_SETTINGS; + } + + @Override + public void onResume() { + super.onResume(); + } + + @Override + public boolean onPreferenceChange(Preference preference, Object newValue) { + final ContentResolver resolver = getActivity().getContentResolver(); + if (preference == mNetMonitor) { + boolean value = (Boolean) newValue; + Settings.System.putIntForUser(resolver, + Settings.System.NETWORK_TRAFFIC_STATE, value ? 1 : 0, + UserHandle.USER_CURRENT); + mNetMonitor.setChecked(value); + mThreshold.setEnabled(value); + return true; + } else if (preference == mThreshold) { + int val = (Integer) newValue; + Settings.System.putIntForUser(getContentResolver(), + Settings.System.NETWORK_TRAFFIC_AUTOHIDE_THRESHOLD, val, + UserHandle.USER_CURRENT); + return true; + } + return false; + } + + /** + * For Search. + */ + public static final BaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER = + new BaseSearchIndexProvider(R.xml.cherish_settings_traffic); +}