diff --git a/res/values/cherish_arrays.xml b/res/values/cherish_arrays.xml index 02daee2..89a7d68 100644 --- a/res/values/cherish_arrays.xml +++ b/res/values/cherish_arrays.xml @@ -408,7 +408,7 @@ 3 - + @string/network_traffic_disabled @string/network_traffic_statusbar @@ -420,11 +420,11 @@ 1 2 - - + + @string/network_traffic_dynamic - @string/network_traffic_download @string/network_traffic_upload + @string/network_traffic_download @@ -432,4 +432,16 @@ 1 2 + + + @string/network_traffic_units_bits + @string/network_traffic_units_bytes + + + + 0 + 1 + 2 + 3 + diff --git a/res/values/cherish_strings.xml b/res/values/cherish_strings.xml index b18bca9..54e120e 100644 --- a/res/values/cherish_strings.xml +++ b/res/values/cherish_strings.xml @@ -508,10 +508,24 @@ Status bar QS header Refresh interval + Duration after which speed is remeasured Display mode Dynamic Download Upload Single net font size + Auto hide + Hide the traffic monitor when inactive + Kb/s + KB/s + Traffic measurement units + Bits per second (b/s) + Kilobits per second (kb/s) + Megabits per second (Mb/s) + Bytes per second (B/s) + Kilobytes per second (kB/s) + Megabytes per second (MB/s) + Hide arrows + Hide the network traffic indicator arrows diff --git a/res/xml/cherish_settings_traffic.xml b/res/xml/cherish_settings_traffic.xml index 3694861..2d62509 100644 --- a/res/xml/cherish_settings_traffic.xml +++ b/res/xml/cherish_settings_traffic.xml @@ -1,62 +1,81 @@ - - - - + + + android:defaultValue="0" /> - + + + settings:units="@string/network_traffic_autohide_kilobytes" + settings:interval="10" + android:dependency="network_traffic_autohide" /> + + - + + - + \ No newline at end of file diff --git a/src/com/cherish/settings/fragments/Traffic.java b/src/com/cherish/settings/fragments/Traffic.java new file mode 100644 index 0000000..06cc81f --- /dev/null +++ b/src/com/cherish/settings/fragments/Traffic.java @@ -0,0 +1,102 @@ +/* + * Copyright (C) 2021-2022 The PixelDust 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.content.ContentResolver; +import android.content.Context; +import android.os.Bundle; +import android.os.UserHandle; +import android.provider.Settings; + +import androidx.preference.ListPreference; +import androidx.preference.Preference; +import androidx.preference.PreferenceScreen; +import androidx.preference.Preference.OnPreferenceChangeListener; +import androidx.preference.SwitchPreference; + +import com.android.internal.logging.nano.MetricsProto.MetricsEvent; +import com.android.settings.R; +import com.android.settings.SettingsPreferenceFragment; + +import com.cherish.settings.preferences.CustomSeekBarPreference; + +public class Traffic extends SettingsPreferenceFragment implements OnPreferenceChangeListener { + + private CustomSeekBarPreference mNetTrafficSize; + private CustomSeekBarPreference mNetTrafficAutohideThreshold; + private CustomSeekBarPreference mNetTrafficRefreshInterval; + private ListPreference mNetTrafficLocation; + private ListPreference mNetTrafficMode; + private ListPreference mNetTrafficUnits; + private SwitchPreference mNetTrafficAutohide; + private SwitchPreference mNetTrafficHideArrow; + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + addPreferencesFromResource(R.xml.cherish_settings_traffic); + final ContentResolver resolver = getActivity().getContentResolver(); + + mNetTrafficSize = (CustomSeekBarPreference) + findPreference(Settings.System.NETWORK_TRAFFIC_FONT_SIZE); + mNetTrafficAutohideThreshold = (CustomSeekBarPreference) + findPreference(Settings.System.NETWORK_TRAFFIC_AUTOHIDE_THRESHOLD); + mNetTrafficRefreshInterval = (CustomSeekBarPreference) + findPreference(Settings.System.NETWORK_TRAFFIC_REFRESH_INTERVAL); + mNetTrafficLocation = (ListPreference) + findPreference(Settings.System.NETWORK_TRAFFIC_LOCATION); + mNetTrafficLocation.setOnPreferenceChangeListener(this); + mNetTrafficMode = (ListPreference) + findPreference(Settings.System.NETWORK_TRAFFIC_MODE); + mNetTrafficAutohide = (SwitchPreference) + findPreference(Settings.System.NETWORK_TRAFFIC_AUTOHIDE); + mNetTrafficUnits = (ListPreference) + findPreference(Settings.System.NETWORK_TRAFFIC_UNITS); + mNetTrafficHideArrow = (SwitchPreference) + findPreference(Settings.System.NETWORK_TRAFFIC_HIDEARROW); + + int location = Settings.System.getIntForUser(resolver, + Settings.System.NETWORK_TRAFFIC_LOCATION, 0, UserHandle.USER_CURRENT); + updateEnabledStates(location); + } + + @Override + public int getMetricsCategory() { + return MetricsEvent.CHERISH_SETTINGS; + } + + @Override + public boolean onPreferenceChange(Preference preference, Object newValue) { + if (preference == mNetTrafficLocation) { + int location = Integer.valueOf((String) newValue); + updateEnabledStates(location); + return true; + } + return false; + } + + private void updateEnabledStates(int location) { + final boolean enabled = location != 0; + mNetTrafficSize.setEnabled(enabled); + mNetTrafficMode.setEnabled(enabled); + mNetTrafficAutohide.setEnabled(enabled); + mNetTrafficAutohideThreshold.setEnabled(enabled); + mNetTrafficHideArrow.setEnabled(enabled); + mNetTrafficRefreshInterval.setEnabled(enabled); + mNetTrafficUnits.setEnabled(enabled); + } +} \ No newline at end of file diff --git a/src/com/cherish/settings/fragments/fragments/Traffic.java b/src/com/cherish/settings/fragments/fragments/Traffic.java deleted file mode 100644 index 5b57faa..0000000 --- a/src/com/cherish/settings/fragments/fragments/Traffic.java +++ /dev/null @@ -1,192 +0,0 @@ -/* - * 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; -import com.cherish.settings.preferences.SystemSettingSeekBarPreference; - -@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_LOCATION = "network_traffic_location"; - private static final String NETWORK_TRAFFIC_REFRESH_INTERVAL = "network_traffic_refresh_interval"; - private static final String NETWORK_TRAFFIC_FONT_SIZE = "network_traffic_font_size"; - - private CustomSeekBarPreference mThreshold; - private SystemSettingSeekBarPreference mInterval; - private ListPreference mNetTrafficLocation; - private CustomSeekBarPreference mNetTrafficSize; - - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - - addPreferencesFromResource(R.xml.cherish_settings_traffic); - - final ContentResolver resolver = getActivity().getContentResolver(); - final PreferenceScreen prefSet = getPreferenceScreen(); - - // Network traffic location - mNetTrafficLocation = (ListPreference) findPreference(NETWORK_TRAFFIC_LOCATION); - int location = Settings.System.getIntForUser(resolver, - Settings.System.NETWORK_TRAFFIC_LOCATION, 0, UserHandle.USER_CURRENT); - mNetTrafficLocation.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); - - int val = Settings.System.getIntForUser(resolver, - Settings.System.NETWORK_TRAFFIC_REFRESH_INTERVAL, 1, UserHandle.USER_CURRENT); - mInterval = (SystemSettingSeekBarPreference) findPreference(NETWORK_TRAFFIC_REFRESH_INTERVAL); - mInterval.setValue(val); - mInterval.setOnPreferenceChangeListener(this); - - int fontSize = Settings.System.getInt(resolver, - Settings.System.NETWORK_TRAFFIC_FONT_SIZE, 18); - mNetTrafficSize = (CustomSeekBarPreference) findPreference(NETWORK_TRAFFIC_FONT_SIZE); - mNetTrafficSize.setValue(fontSize / 1); - mNetTrafficSize.setOnPreferenceChangeListener(this); - - int netMonitorEnabled = Settings.System.getIntForUser(resolver, - Settings.System.NETWORK_TRAFFIC_STATE, 0, UserHandle.USER_CURRENT); - if (netMonitorEnabled == 1) { - mNetTrafficLocation.setValue(String.valueOf(location+1)); - updateTrafficLocation(location+1); - } else { - mNetTrafficLocation.setValue("0"); - updateTrafficLocation(0); - } - mNetTrafficLocation.setSummary(mNetTrafficLocation.getEntry()); - } - - @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 == mNetTrafficLocation) { - int location = Integer.valueOf((String) newValue); - int index = mNetTrafficLocation.findIndexOfValue((String) newValue); - mNetTrafficLocation.setSummary(mNetTrafficLocation.getEntries()[index]); - if (location > 0) { - // Convert the selected location mode from our list {0,1,2} and store it to "view location" setting: 0=sb; 1=expanded sb - Settings.System.putIntForUser(resolver, - Settings.System.NETWORK_TRAFFIC_LOCATION, location-1, UserHandle.USER_CURRENT); - // And also enable the net monitor - Settings.System.putIntForUser(resolver, - Settings.System.NETWORK_TRAFFIC_STATE, 1, UserHandle.USER_CURRENT); - } else { // Disable net monitor completely - Settings.System.putIntForUser(resolver, - Settings.System.NETWORK_TRAFFIC_STATE, 0, UserHandle.USER_CURRENT); - } - updateTrafficLocation(location); - return true; - } else if (preference == mThreshold) { - int val = (Integer) newValue; - Settings.System.putIntForUser(resolver, - Settings.System.NETWORK_TRAFFIC_AUTOHIDE_THRESHOLD, val, - UserHandle.USER_CURRENT); - return true; - } else if (preference == mInterval) { - int val = (Integer) newValue; - Settings.System.putIntForUser(resolver, - Settings.System.NETWORK_TRAFFIC_REFRESH_INTERVAL, val, - UserHandle.USER_CURRENT); - return true; - } else if (preference == mNetTrafficSize) { - int fontSize = ((Integer)objValue).intValue(); - Settings.System.putInt(getActivity().getContentResolver(), - Settings.System.NETWORK_TRAFFIC_FONT_SIZE, fontSize); - return true; - } - return false; - } - - public void updateTrafficLocation(int location) { - switch(location){ - case 0: - mThreshold.setEnabled(false); - mInterval.setEnabled(false); - mNetTrafficSize.setEnabled(false); - break; - case 1: - mThreshold.setEnabled(true); - mInterval.setEnabled(true); - mNetTrafficSize.setEnabled(true); - break; - case 2: - mThreshold.setEnabled(true); - mInterval.setEnabled(true); - mNetTrafficSize.setEnabled(false); - break; - default: - break; - } - } - - /** - * For Search. - */ - public static final BaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER = - new BaseSearchIndexProvider(R.xml.cherish_settings_traffic); -}